前回に続きhosts

前回ブログサーバーにアクセスするとき、自宅LAN内か外にいるかでhostsを書き換えることでブログを見ることができるという記事を書いたが、あまりにも面倒くさい。

自宅デスクなら持ち運ぶこともないので、一回hostsを書き換えれば良い話だが、ノートPCだとそうもいかない。家にいるときにはhostsにサーバーのローカルIPを書いて、外にいるときにはその行をコメントアウトしなければならない。。。
ブログは思い立った時にすぐ書きたい!
と言っても最近はあまり書けていないんですが、ネタはあるんだけどね。。。

ってことでhostsを自動的に書き換えるバッチファイルを作成することにした。
調べてみるとWindows8にはPowershellっていうシェル(?)があってせっかくだし、PowerShellで書こうと思ったけどPowerShellのファイルを作って実際に実行しようとクリックしてみるも、PowerShellが実行されずメモ帳で開かれる。。。なぜだ。。。
調べてみると
Windows PowerShell スクリプトを実行する
うーん、セキュリティポリシーを変更したあとにパスも変えなければならないのか、、、普通にバッチファイル作ったほうが早そう。。。

ってことでバッチファイルを作りました。初めて作ったからよくわからんけど一応できてるからおk。

以下バッチファイルソース

cd C:WindowsSystem32Driversetc
Netsh wlan show interfaces  > tmp
find "4CE6763E57E4" tmp > NUL
if errorlevel 1 (echo #192.168.10.1 kotashin.dontexist.com > hosts) else (echo 192.168.10.1 kotashin.dontexist.com > hosts)
del tmp
exit

簡単に説明すると1行目でhostsファイルのあるフォルダに移動して、
2行目で現在アクティブになっているネットワークをtmpファイルにリダイレクトする。
3行目で自宅のSSIDと一致したらNULにエラーを入れる(ここが少しややこしい、自宅にいたらNULにそのままSSIDを書き込んでエラー結果と見せかけている)。
4行目でNULに何かが書き込まれていた時にhostsに#192.168.10.1 kotashin.dontexist.comを書き込み、そうでない場合、192.168.10.1 kotashin.dontexist.comを書き込む。
最後にtmpファイルを削除して終わり。

tmpファイルを作ってHDDガリガリやってダメなプログラムな気もするけど、何回変数に入れてやろうとしても出来なかったから仕方がない。動いてるからおk。

で、このプログラムをブラウザ起動に同時起動させることにした。そのためにまたバッチファイルを作成した。

start "" "C:WindowsSystem32Driversetchost.bat"
start "" "C:Program Files (x86)GoogleChromeApplicationchrome.exe"


でこのバッチファイルのショートカットをデスクトップに作成してアイコンをクロームにすれば完璧。
ブラウザ起動時に自動的にhostsを書き換えて自分のこのブログにアクセスできるようになった。めでたしめでたし。

と思ったら、なんか変なエラーが出てる。
このコマンドを実行するための十分な記憶域がありません
ありゃりゃ。スリープ入れれば治りそうな気もするけどちゃんどコマンドを通ってるし、まぁいいか。

参考URL
nodchipの日記 hostsファイルの自動書き換え

LAN内からブログサーバーにアクセスできないあれ。hostsファイルの威力に感動。

以前のエントリーでブログサーバーにローカルからアクセスできないといった記事を書いたが、この問題が解決できた。

hostsファイルを書きなおせばよいだけだった。
hostsファイルとは、IPアドレスとホスト名の対応を記述したテキストファイルのこと。
例えば、hostファイルに

192.168.10.1 kotashin.dontexist.com

と記述したとすると、ブラウザのアドレスバーのkotashin.dontexist.comのドメイン名の部分が内部的に(OSレベルで)192.168.10.1というローカルIPに置き換えられる。
ドメイン名は基本的にグローバルIPにひも付けされているため、サーバーと同じLAN内ではブログサーバーにアクセスすることはできなかったが、hostsファイルに書き込むことでローカルIPに置き換えてアクセスすることができるようになった。

そんで hostsファイルの場所は
Windowsなら「C:WINDOWSsystem32driversetc」
Macなら「/private/etc」
Linuxなら「/etc」

にあるので、管理者権限でファイルを開き
上述したように


内部的に書き換えたいIPアドレス ドメイン名

と追記すれば、ブラウザでそのドメイン名にアクセスした場合に自動で設定したIPアドレスに飛んでくれる。

以上、問題解決。

クラウドサービスについて

授業で行ったクラウドサービスについてのメモ。
研究の題材としてすごい面白い。

●ハウジング
自社内にサーバーを貸し出す。
●レンタルサーバー
レンタルサーバーを提供する会社はサーバーを用意し、
顧客はそのサーバーに遠隔から操作する。
●IaaS
VMのような技術を用い、スパコンのリソースの一部をサーバーとして提供する。
サーバー自体の性能を提供するスケールアップは可能だが、スケールアウトは自分で設計が必要。
OSは自分で用意。パブリッククラウドとも呼ばれる。AmazonEC2
●PaaS
スケールアウトまで提供。ハードウェアからOS・ミドルウェアをセットでクラウド上で提供し、複数台のサーバーで負荷分散することでユーザー数の増加に対応。Google App Engine, Windows Azure
●BaaS
アプリだけ開発する。スマートフォンに特化しているとも言われる。サーバーはその昨日だけ提供する。
例えば、LINEやCOMMにサーバー側の処理はほとんど同じだと言える。つまりチャットや無料通話の機能まで提供し、ディベロッパーはスマフォのアプリ開発だけ行えば良い。アプリの(インターフェイス)側だけつくっていると解釈できる。フェイスブックはこのBaaSの有名な会社Parseを買収し、ファイスブックアプリ開発のフレームワークの一部をしてディベロッパーに提供することを発表した。
●SaaS
アプリまで提供する。ディベロッパー、プログラマの入る余地はない。

考えてみると世の中のほぼすべてのサービスはクラウドという技術を利用している。
そのクラウドサービスの上述した分類分けでそれらが技術的にどのような違いがあるのかを理解している人はそれほどいない気がする。(講義してくれている教授ですらあやふやだった。。。)

技術とサービスを結びつけるMOTにおいて、クラウドサービスのサービスの提供の形ごとにどれだけ効率的に収益をあげることができ、どのような一長一短があるのかを比較、評価することは価値ある研究なのでは?と思った。

参考文献
BaaSとはappires
http://www.appiaries.com/jp/baas/index.html
ハウジング・ホスティング・レンタル・VPS・クラウド違い
http://d.hatena.ne.jp/fz6/touch/20111227/1324977607
スマートデバイス向け新クラウド!BaaSとは
http://j-net21.smrj.go.jp/develop/digital/entry/001-20121128-01.html
モバイル向けBaaSベンダの「Parse」、Facebookが買収
http://www.publickey1.jp/blog/13/baasparsefacebook.html