2008年11月12日水曜日

Proxyサーバーの変更をJavaScriptで自動化する

接続するホスト毎にProxyサーバーを変更したいケースがあります。

例えば、
localhostはProxyサーバーを通さないけど、他は通す。
とか、
特定のホストはProxyサーバーを通す。
とか、
平日はProxyサーバー通すけど土日は通さない。
とかとか。

実は今まで毎回Macのシステム環境設定から手動で切り替えていたのですが、さすがにめんどくささに耐えられなくなり検索したところ、なんとJavaScriptで動的に切り替えることが可能だったようです。

参考 : JavaScript または JScript を使った自動プロキシ ファイルの例

一言でいうと、JavaScriptで書いた設定ファイルをpacという拡張子で保存し、ブラウザやシステム環境設定から読み込む。というだけ。

早速やってみました。
まずは、proxy.pacというファイルを用意。


function FindProxyForURL(url, host) {
if (isPlainHostName(host))
return "DIRECT";
else if (shExpMatch(host, "blog.cohtan.org"))
return "DIRECT";
else
return "PROXY localhost-dolipo:3128"
}


この例では、localhostとblog.cohtan.org以外のアクセスはdolipoというローカルのキャッシュサーバーをProxyサーバーとして経由する設定にしました。

このファイルを、proxy.pacというファイル名で保存し、システム環境設定のネットワーク設定から指定します。


こんな感じです。

たったこれだけで動的にProxyサーバーを変更することが可能になりました。
まさかこういうやり方があるとは、知りませんでした。

2008年11月6日木曜日

MacBookの特定のキーがやたらカチカチうるさいので修理してきた

旧白MacBookから新アルミMacBookに乗りかえて満足していたのですが、
「H」キーだけタイプ時にやたらカチカチうるさかったので、Apple Store 天神のGenius Barに行ってきました。

裏側の調整だけで済むかもしれません。
といわれ、店の奥に持っていかれて待つこと15分、
すっかり「H」キーが静かになったMacBookが戻ってきました。

どうやらパンタグラフを交換してくれたようです。
お代もなし。ありがたやありがたや。
なかなか良いサービスですね。

近くに直営店があるのはメリットだなーと感じたのでした。

2008年10月1日水曜日

[tab2space]タブ文字をスペースに変換するとき、どうしてる?

SKK諦めて予測入力の出来るPrime使いはじめたcohtanです。

僕はコード書いているときに誰が見ても同じ見た目になることから、タブ文字をスペース4つ分に変換しています。
もちろんスペースキーを4回叩いているわけではなく、タブを押したら勝手にスペース4つ入るように設定しているだけです。

で、ここから本題。

ここにはいない他人が書いたコードにタブコードが入っている時にそれらをスペース4つに置き換えたい。
という状況が発生しました。
しかもここにはいない他人が書いているコードはたくさんあり、数百ファイルあります。

さぁどうするかと。
単純に、1つのタブコードに対して4つのスペースで置換したのでは見た目が変わってしまいます。
というのも、タブコードは文字列の頭を揃えるために使われる事があるので、4スペースの時もあれば、3スペースのときも、2スペースのときも、1スペースのときもあるのです。
なので、エディタにタブコードをスペースに変換する機能が備わっていれば、まず間違いなく文字列の頭を揃えてくれます。

ようは、これを自動で複数のファイルに対して実行したいと。
エディタ側に複数ファイルを一気にに編集する機能がついていれば可能っぽいですが、僕の愛用エディタであるvimではどうやっていいのかわかりません。

そこで、色々調べたところ、どうやらvimにはexモードという機能が存在し、コマンドのみを実行する事が出来るようです。
これをワンライナーで複数ファイルに噛ましてしまえば、エディタ上でタブコードをスペースに変換した時の美しい文字列の頭揃えが出来るはずです。

というわけで、出来たワンライナーがこれ。

find . -name "*.php" -exec ex -c 'ret' -c 'wq' {} \;


この例では、拡張子がPHPのファイルに対して実行しています。
-exec 以降が肝で、


  • ex - vim -e と同様。Exモードっというらしく、指定ファイルにコマンドを発行出来る。

  • -c はコマンドを引数で指定するオプション。+でもいいみたいだけど、findに+を渡すと怒られてしまった。



ようするに、:retして、:wqしてるだけなんです。
これを、カレントディレクトリ以下の*.phpに対してやってるだけ。

自前で文字列カウントしながらスペース変換やろうとすると結構めんどくさい気がするので、これはなかなか便利そう。
これでvimのコマンド部分だけを使って複数ファイルをごにょごにょする、なんてことも難しくないですね。

ひとつ悔しいのは、この機能を生粋のEmacserである、id:k1LoW氏から教えてもらったことです。
k1LoW++!

id:teramakoさんのエントリーが大変参考になりました。
ex(vim -e)コマンドを使おう

2008年9月29日月曜日

MacUIMすごい

AnthyやSKKや予測変換のPrimeなど、オープンな日本語入力環境を手軽に構築でき、爆速vim環境なX11上のurxvtの中でも同様に動いてくれる素晴しいソフトです。

今まで、よくわからないままにX11上では、kinput2+cannaな環境でしのいでいたのですが、これからはMacUIMのSKKで全部統一できたのでしばらくこの環境で使ってみます!

参考 :
MacUIM – Trac
ことえりからの脱却「MacUIM」
最近の MacUIM には uim-xim が含まれていたのか……

2008年9月25日木曜日

CakePHP1.2 モデル内から別のモデルクラスを使用する方法

CakePHP1.2になって色々とかゆいところに手が届くようになってきましたね。
The Cookbook :: 1.2 Collection :: マニュアル :: CakePHPによる開発 :: 環境設定 :: App クラス

これを読むと、どうやらモデル内から別のモデルも使用出来そう。
実際に試してみたところ、

App::import('Model', 'ModelClassName');
$model_class_name = new ModelClassName();
$model_class_name->find(...);


と、こんな感じでモデルの中からやる事ができました。
これで非アソシエーションな複数のモデルに対しても同じタイミングで処理を行うことが出来そうですね。

2008年9月23日火曜日

iPhoneのマイソフトバンクIDを忘れたら

iPhoneで料金案内などを見る場合、マイソフトバンクページというユーザー向けのページにログインする必要があるのですが、
登録したIDを忘れてしまいました。

パスワードは覚えていたんですけど、「パスワードを忘れた方は」をクリックしてみると、
「ユーザーIDをお忘れになった場合は、お手数ですが、再度ユーザー登録をお願いします。」

と書いてあったので新規登録を行おうとすると、既に同じ携帯電話番号が登録されていますと言われてしまい、登録出来ず。

こりゃどうしたもんかとSoftbankのお店に行ってみたのですが、
どうやら店頭ではわからないようで、ショップの携帯から直接僕が157に電話しましたw

結局郵送にてIDが送られてくるそうです。
1週間くらいかかるそう。

というわけでiPhoneユーザーの皆様、
マイソフトバンクIDを忘れてしまったら157に電話です。

2008年9月8日月曜日

codecheck.inの紹介動画がNHKスペシャル デジタルネイティブに掲載されました!

先日、codecheck.inのオフ会を開催したんですが、日頃お世話になっているar916さんからお誘いを受け、せっかくだからcodecheck.inの紹介動画を撮ってみないか?という話に。

撮影場所は、全国的に見ても非常に珍しい地域コミュニティの活動の場として有名なAIPカフェです。
ちょっと紹介文を引用しますね。

AIP caféはITおよびその他業種の人材交流と、勉強会・セミナーを中心とした教育活動を行う拠点的役割を担う場として設立された、多目的交流スペースです。


電源や無線LANも備えているので、我々コード書いてご飯食べている人にとってはこの上ない素敵な場所です。
この日も飲み物食べ物持込でみんなでノートパソコン開きながらワイワイ飲んでました。
この日は福岡のメンバーだけで無く、東京からmizzyさんも遊びに来てくれました。

このときの動画がNHKスペシャル デジタルネイティブというコンテンツに掲載されたようですので、今日はその紹介です。

動画への直リンクはこちら(エンジニア系コミュニティcodecheck.inの紹介)

酔っぱらっているし、ちょっとこっ恥ずかしいですがorz
飲み会しかしてないコミュニティと思われないように努力します!

ご興味が湧いたら、是非遊びに来て下さいね!(IRCでもオフ会でも)

久しぶりにブログを書く

最初ログインできなくて焦った。 いや、ログインはできたのだが、ログイン後に自分のブログの管理画面に遷移できず、新しいブログを作成する画面になってしまったからビビッてしまった。 どうやら、Google+(現在はサービス終了)に紐づいたプロフィールを設定しているとこのような状況に陥る...