2008年12月31日水曜日

「福岡で働くWEBの人々」サイトリニューアル!

福岡には「福岡で働くWEBの人々」というコミュニティがあります。
このコミュニティは主にWEB軸に活動している人が集っており、デザイナー・プログラマー・ディレクターなど、様々な人たちが所属しています。

今回、このコミュニティのリニューアル作業を行う事になり、codecheck.inとして僕もお手伝いしてきました!
そして出来たサイトはこちらです。

福岡で働くWebの人々 | 福岡のWeb制作現場で頑張っている皆さんを応援するコミュニティ

今回のプロジェクト管理にはBacklogを使わせてもらったのですが、バーンダウンチャートが激しく面白かったです。

年末ギリギリまで皆さん頑張って、本当にお疲れ様でした。

今回僕が担当した部分はFWWサイトのブログで記事を書くかもしれません、お楽しみにー。

2008年12月22日月曜日

HHK Lite2 MacからApple Wireless Keyboardへ

ずっとHHK Lite2 Macを使ってきたのですが、日本語配列モデルはドライバCDが無いとまともに使えません(キー配列がバラバラになっている)。
この大事なCDをどうやらなくしてしまったようで、これを気にキーボードを新しくすることに。

買ってきたのは、前々から気になっていたApple純正のワイヤレスキーボードです(僕が買ったのはJIS配列)。



初期設定が終わると、システム環境設定のBluetooth欄にこのキーボードが表れます。



使い心地は非常によろしい。
キータッチはMacBookとそっくりです。
そして非常に軽く、重量は電池含んでもHHK Lite2 Macの半分くらい。
そして薄く、小さいです。

Firefox + VimperatorやMPlayerがあればキーボードだけで操作が可能なので、少し画面から離れて、適当にネットサーフィンや動画を楽しむことも可能。これが予想以上にいい感じでした。

気になる電池の寿命なんですが、店員さん曰く、大体3ヶ月くらいみたいです。
うちにはストロボ用に買った単三電池がたくさん余っているので、当分心配なさそう。

キーボード用のケースまで欲しくなってしまうくらい、綺麗です。

2008年12月14日日曜日

「オープンソースカンファレンス 2008 福岡」に参加してきました!

福岡大学で開催されたオープンソースカンファレンス 2008 福岡に参加してきました。

僕は当日は早朝までcodecheck.inのHackathonに参加、お昼は家族サービス、ということで、「勉強会勉強会」という2コマ連続のセッションと懇親会に参加してきました。

とてもわかりやすいまとめ記事:
mochikoAsTech [other]勉強会勉強会@OSC 2008 Fukuokaに行ってきた
セッションの様子もUstreamで録画されたものが見れます。
http://www.ustream.tv/channel/aipcafe-streaming

このセッションは、福岡のコミュニティ主催者たちのライトニングトークとパネルディスカッションで構成されたセッションです。今回僕もcodecheck.inをやっている人としてライトニングトーク、そしてパネラーとして参加してきました。

資料はいつも通り、codecheck.inに置いてます。
codecheck.inの紹介

非常に楽しく有意義な時間でした。
福岡のコミュニティはみんなアルコールで成りたっていることもよくわかりました(笑)

今回の出たお話の中で非常に興味深いものがありました。
それは、「うまくいくコミュニティの運営者本人も、何故うまくいっているのかちゃんと理解しておらず、上手な運営・運用する事のノウハウがどこにも蓄積しない。蓄積はしてもそれは個人に蓄積され、リファレンスとして参照できない」というものです。

また、仮に運用ノウハウが溜まっても、それぞれコミュニティの性質が違う為、一つの運用ノウハウを全てのコミュニティに適用すれば上手くいくというわけでもなさそうです。

立ち上げだけは勢いがあればなんとかなりますが、やはり続けることは難しい。
いろいろと考えるきっかけの出来た良い「勉強会勉強会」でした。

OSCの関係者、参加者の皆様。
本当におつかれさまでした。

2008年11月24日月曜日

Shibuya Perl Mongers テクニカルトーク#10 パブリックビューイング 福岡サテライトも同時開催!

11/27に「Shibuya Perl Mongers テクニカルトーク#10」が開催されます。

発表者の一人であるYappoさんのShibuya.PM tech talk #10 の申し込み間に合わなかった人への提案とust時代の勉強会の関わり方というエントリをきっかけに、ここ福岡でも同日パブリックビューイングが開催されることになりました!

Fukuoka Perl Mongerlにて今回のパブリックビューイングが告知されています!
(上記案内ページから申込へ進めます)

今回の提案、そして会議室を快く提供してくれた株式会社Fusicさん、本当にありがとうございました。

codecheck.inのプチミーティングも隅っこで同時開催です。
一粒で二度おいしくなるといいなー。

2008年11月13日木曜日

svkでコンフリクト発生時にオルタネイトタイピングしなくて済む方法

僕はバージョン管理にsvkを使っているのですが、smergeや、pullすると稀にコンフリクトする時があります。
コンフリクトすると、
Conflict found on file xxx:
e)dit, d)iff, m)erge, s)kip, t)heirs, y)ours, h)elp? [e]

こんな感じでコンフリクトしたファイルをどうやって解決するか、いくつか選択肢が表示されるわけですね。

大抵は僕が悪いので、theirsを選択するのがほとんどです。
コンフリクトしているファイルがせいぜい2つ、3つくらいだとじっくり調査できるのですが、
たまにこれがハンパない回数聞かれるときがあります。
pullするの忘れてpushばっかりしてハッと思いだしてpullした時とか。

その度にtキー, エンターキー, tキー, エンターキー, ...と繰り返しタイプするのも大変です。
決まったリズムでキー叩くので仕事してるフリにも使えません。
ああ、こいつあきらかに一個一個消してんな、ってのがバレバレです。

CPAN ShellからCatalystやPlaggerインストール時にyes連打するのと似た感覚ですね。
ちなみにこれはちゃんと解決策あります。
参考 : CatalystやPlaggerのインストールでyes連打をしたくない - bokut.in

きっとsvkにもあるはず!と思って調べていたら、案の定ありました。

export SVKRESOLVE="t"

これで、以後コンフリクト時にはtheirsを自動選択してくれます。

これ、どうやら、
svk help environment

に書いてあったようです。

参考 : [svk-devel] svk resolver: obscure error, and obscure documentation

ちなみに、オルタネイトタイピングとは、tキーとエンターキーを交互にタイプすることから思いついた、オレオレスラングです。
参考 : オルタネイト

VMware Fusionで動いているマシンのネットワーク設定を動的に切り換える方法

レアなケースだと思うのですが、NAT(VMを起動しているホストPCのみネットワークアクセスが可能な状態)とブリッジ(ホストPCが接続しているネットワーク上の他のマシンからもアクセス可能な状態)を使い分ける必要がある場合において、VM上のOSを再起動することなく、ネットワーク範囲を動的に切り替える方法がわかったのでメモします。

今回は僕がよく起動しているUbuntuでやってみます。


設定ボタンからネットワークを開き、、、


ブリッジ or NATに切り替えて、接続のチェックをオフ/オンする。

これだけで切り替えが可能です。
今まで再起動しないと反映されないと思いこんでいたorz

教えてくれた id:k1LoW ありがとう!

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でもオフ会でも)

2008年8月22日金曜日

cakephp.vimについて、CakePHPの中の人からメールが来た!!

codecheck.inのIRCにも来てくれて衝撃が走りました。
cakephp.vimはこれから進化していく予感です。
もちろん僕もお手伝いする予定。

ただ、英語力の無さを痛感しまくったので、これからマジで勉強しようと思います。
通訳してくれたみんな++

2008年8月17日日曜日

帰省ラッシュ情報をiPhoneで見て高速を降りるという選択肢がバクチではなくなった件

今回のお盆、長男の成長っぷりを披露するという事で帰省してきたんですが、帰りの高速が渋滞でちっとも進まない!

大抵ここで高速を降りて一般道を走ってみるという選択肢を誰もが思い浮かべると思うのですが、それって実はかなりリスキーなんです。

ラジオから流れてくる道路交通情報はいつ流れてくるかわからない。
しかも大抵高速道路のみの情報であり、一般道は通行止めや規制等の情報ばっかり。

え、でもAM1620(高速道路の道路交通情報専用周波数)っていうのがあるじゃんか、と思うけど、それって高速道路上の特定の区間のみ。
しかもそこで聞ける情報は高速道路の事だけ。

一般道に対する情報を高速道路上から取得する事は難しい。

たったこれだけの情報をたよりに、
「かなりこんでるみたいだから一般道に降りてみるか」
とはなりません。

「イチかバチか、さあどうする!?」
「高速がこんだけ混んでるんだ。一般道はもっとこんでいるに違いない」

と車内会議が始まるわけです(そして膀胱リミッターの崩壊へ着々と進行)

今回はとっさに妻にiPhoneを渡し、道路交通情報を調べてもらったところ、一般道の方が空いているという事がわかり、すぐに次のインターを降りたところ、大正解だったというわけです。
スイスイ進んで無事帰宅出来ますた。

これら一連の流れって別にiPhoneじゃなくても出来る事なんですが、
今まで僕が体験した事のなかった感覚でした。

車を運転しているドライバーな立場から言うと、基本外からの情報を受信出来るアイテムはラジオかカーナビ(ワンセグチューナー付きでTVもそうですね)のみ。
今回これが出来たのは妻が常時iPhoneで情報を調べてくれていたからなわけで、この辺が車自身ともっとシンクロしてくれると面白そうですね。もともとカーナビとかはそういうコンセプトなんでしょうか。たまに見聞きするVICSとかってそんな感じなんですかね?うちの車にはカーナビをつけてないのでよくわからないんだけども。

とりあえず今回は、片道通常3800円かかる高速料金が、早めにインターで降りた&通勤割の適用もあって800円で済んでしまいました。

今その場におかれている状態から次の状態へ移る時の最も良い選択肢を見つける事が出来る可能性がモバイルにある事を痛感したお盆休みでした。

2008年7月21日月曜日

codecheck.in Hackathon 0x0 無事終了!

2008/07/19、codecheck.in Hackathonが開催されました。
全然スーパーハカーじゃない僕ですが、刺激をもらいに行ってきました!



基本的には参加者それぞれがやりたい事をやるという感じだったのですが、最初にとりあえず今日やる事をホワイトボードに書き出しました。



俺ほんとに3つも出来んのか!?
という感じですねwww





こんな感じで終始和気あいあいとした感じで進みつつも、みんながそれぞれコーディング中に疑問に思った事などのその場で話すと誰かがレスをしてくれるという心地よい連帯感を感じました。

結局、今回僕はサーバー構築にえらく手間取ってしまい、Objective-CもiPhoneいじりも出来ませんでしたorz
iPhoneのカメラ機能を使ってこれらの写真を撮ったくらいw

今回快く場所を提供して下さった株式会社Fusic様、本当にありがとうございました。
参加された皆様、本当にお疲れさまでした。

これからもcodecheck.inを盛り上げていきたいですね。

2008年7月20日日曜日

Permission deniedが出まくるときにはSELinuxの設定を確認する

SELinuxってのがある事を知らなかった。
TracをインストールしていてFastCGIがうんともすんとも起動しない原因はSELinuxだった。

このキーワードが発見出来なかったら延々起動出来なかったかもorz

2008年7月14日月曜日

au携帯のアドレス帳をiPhoneへコピーする

今回iPhoneをゲットしたわけですが、現在契約中のauからMNPするか悩んだ末、結局「auは最低料金プランで維持&iPhone(Softbank)を新規契約」という事で落ち着きました。

で、au携帯(W61CA)の中に入っているアドレス帳をiPhoneへどうやって持っていこうかなーと考えていたのですが、


  1. microSDにアドレス帳をバックアップ(microSDを選択すると「バックアップ」というメニューがあったので選択」

  2. microSDを携帯から抜き出し、カードリーダーにぶっさしてMacに接続

  3. バックアップデータからMacのAddress Book.appへ転送(バックアップデータはvcard形式になっていたのでダブルクリックするだけでコピー完了)

  4. iTunesでiPhoneへ連絡先を転送



という感じでauの連絡先をごっそりコピー出来ました!
ひとまずこれでOK!!
iPhoneの連絡先が華やかになりました。
SDカードが刺さっているau携帯であれば使えそうな気がします。
僕の使っているW61CAだけの機能だったらスンマセン。。。

ただ、Address Book.appのメモ欄に認識出来ないっぽいデータが入っています。
そのままでも支障はなさそうだけど、ちょっと気持ち悪いので、vcardのデータをごにょごにょした方が幸せになりそうです。ちょっと方法考えてみます。

2008年7月11日金曜日

iPhone 16G ホワイト ゲット!

iPhone 16G ホワイトゲット出来ました。
早速保護フィルム欲しくなってきた。

2008年7月10日木曜日

iPhone入手後、役目を終えるiPod Touchの使い道を考えてみた

iPhone購入予定なのですが、今持っているiPod Touchはどうやって活用しようか悩んだ末、



小さくてわかりにくいですが、Twitter専用ビューワにしてしまいました!
仕組みは簡単、TwitterをIM(Google Talk)にも通知するように設定して、それをiPod TouchのSafariからGoogle Talkを利用するだけという超お手軽なものです。Jabber使ってますから、他のライトなメッセージサービスにも対応してます。

こんな感じでデスクトップのアクセサリーに変身します。



作業していて、ログに目をやる時はPCから視線が外れるので、なんだか新鮮です。

垂れ流し用ガジェットなんてちょっと贅沢な使い方かもしれませんが、
iPod Touch君の第二の人生になりそうです。

Feed垂れ流し系でもいいな。

バッテリー急速放電にもよさそうですね。

2008年7月9日水曜日

codecheck.in Hackathon 0x0 開催決定!

2008/07/19にcodecheck.in Hackathon 0x0が開催されます。
詳しくはこちら

※Hackathonとは

コミッターであるid:k1LoWが指揮をとってくれ開催が決定しました。
開催場所は彼の所属している&僕自身大変お世話になっている株式会社Fusicさんです。
僕は全然スーパーハッカーじゃないんですが、参加させて頂く事になりました。恐縮です。

きっと当日はみんな適当に好き勝手コード書いたりしゃべったりって感じだと思います。
近くにお住まいの皆さんはこの機会に是非参加して下さい。
好きな事に没頭できる充実した一日を共に過ごしましょう。

ゆとりLLオンリープログラマーの僕は、当日はC言語とObjective-Cのお勉強をする予定です。

2008年7月1日火曜日

本当はTerminal.app上でvimを使いたいけどモッサリ感が気に食わないのでわざわざGVimを起動していた件

前から思っていたのですが、ある程度まとまったのでメモです。
何か他にいいアイデアあったら教えてください><

ここ半年くらいエディタにvimを愛用するようになりましたが、Terminal.app上に起動したvimではなく、ここのcocoaなGVimを使っています。

通常お仕事での開発や、色々お遊びするときにも大抵シェルは触っているので、本来はTerminal.appの中でvimを起動し、色々やりたいわけですが、


  • Terminalの中でvimを動かした時に全体的にもっさり感じる

  • 特にカーソル移動の際の重たい感じが耐えられない



これらはデフォルトのTerminal.appのウインドウサイズ(80x24)ではほとんど問題にならないのですが、大きくすればするほど、どんどん動きが重たくなっていきます。
僕のVimのウインドウは大抵左側にカレントディレクトリのツリー表示があり(元TextMateユーザーだからか!?)、編集部分も上下二つに分かれています。
3ぺインのメールソフトのような感じなわけです。
こんな環境なので、ウインドウサイズは必然的に大きくなりがちです(160x50くらいあると快適)。

このくらいのウインドウサイズになったときにどうもvimの動作、特にカーソル移動にもっさり感を感じるため、CocoaなGVimを起動していました。
これはサクサク動いてくれるので、多少不便だけどもサクサク感を優先していました。
ただ、やはりシェルに戻るときなどはQuickSilver経由でTerminalにフォーカス移したり、Command+Tabで切替えたりしていたわけです。
サクサクだけど真のサクサクではないというかw

で、今日この問題をようやく解決できそうなひとつのソリューションを発見。

「X11 + rxvt-unicode + screen + kinput2 + canna な環境でvimを使う」
です。Macに付属のX11上でurxvtを起動し、その中でvimる。というわけ。

X11を起動したときにいきなり起動するxtermは日本語は表示できないものの、異常にサクサクな感じなのが気になっていました。
じゃあこれに日本語が通りそうなTerminalアプリケーションを入れてその中でvimを起動したら速いのではないか?と思ったわけです。
で色々ぐぐってみたところ、rxvt-unicodeとkinput2とcannaでなんか出来そうだぞ。というわけ。
Terminal.appも広大なウインドウサイズでscreenするともっさりしてましたがurxvtはサクサクです。これならタブの代用になってくれます。

全部MacPortsからインストール出来るので構築は簡単でした。
各種設定も下記ページが非常に参考になりました。
Beginning OS X 10.5/インフラ整備編

これらな環境で実際今日一日作業してみているのですが、CocoaなGVimよりもサクサク。いまのところ不満無しです。
1280x1024のディスプレイいっぱいurxvtのウインドウにしてvimを起動しても全くサクサク感が失われません。screenによるシェル移動もすいすいいけます。
僕はもともとTerminal.appもGVimもアンチエイリアスをオフにして作業していたので、文字の綺麗さとかそのへんもあまり気になりません。
気になり出しても設定でなんとかなりそうなところだし、大丈夫でしょう。

日本語入力だけはcannaとkinput2に慣れる必要はありますが、
このサクサク感の為なら全然問題ありません。

しばらくこの環境でいってみることにします。
本当は、Terminal.appがモッサリしなけりゃフォントも綺麗だし最強なんですけどね。。

このエントリを書いていて、ふと他のvim使いやEmacs使いはどうやっているのか気になりました。
みんなもっさりを耐えながらやっているのだろうか、それともcom.apple.Terminal.plistとかに爆速の設定があるのだろうか。
もっといいターミナルエミュレータがあるのだろうか。
みんなどうやってるんだろう?

2008年6月25日水曜日

TheSchwartzを使って重たい処理を非同期に行い、手元はサクサクに

昨日id:rytich経由でGearmanやTheSchwartzというキーワードを知りました。
調べてみるとこれがなんだかとても面白そうで、実装に必要なCPANモジュールも完備されてるので何かやってみようと思い、出来たのはWWW::YourFileHostを使った非同期なダウンローダーです。

codecheck.inに置いてます

これを使うと、こんな感じになります。


  • URLを指定してキューを追加して終了。軽くてサクサク(client.pl)

  • キューに登録されたURLを元にコンテンツをゲット。重たいけどきっちりこなす(worker.pl)



これの何がうれしいかというと、コンテンツをゲットする部分を待たずに、
どんどんゲットしたいURLを投げつける事が出来る事にあります。

通常はコンテンツをゲットする時にリクエストを投げた後、対象のゲットが完了するまで待つ必要があるわけですが、
こうやる事でリクエストを投げる部分においてはそのリクエストをさばいてくれるworkerに投げっぱなしでよいのです。
シェルもすぐ帰ってくるし、次々リクエストだけ先行して行えるわけです。

これは、回線があまり速くない僕のようなユーザーにはありがたい。
バンバン追加して寝て起きたら終わっているみたいな。
今ゲットしてる最中だから終わるまで待っていようとか新しくシェル起動しようとか、そういうのも不要になります。

このclient.pl部分をBookmarklet化して今見ているものをDLキューに登録する。
とか、なかなか便利になりそうな気がしますです(少なくとも僕はw)。

ブクマ登録やreblog等一見処理は単純だけど相手先の状況で処理時間が大幅に変動する。
みたいな場面に置いて、手元の自由がすぐ効くようになるのはとっても便利。

今回、以下のリンクが大変参考になりました。



多分よいこはまねしないほうがいいですヨ

2008年6月22日日曜日

Vimキーバインド強制plugin"鬼軍曹.vim"をコミットした

Via: Emacsキーバインド強制elisp"鬼軍曹.el"をcommitした

Emacsのキーバインドに慣れるため、強制的にカーソルキー他の機能を無効化してしまう鬼軍曹.elファイルがリリースされています。

これの作者のid:k1LoWからvim版作ってちょ、と言われていたので、単にmap設定をpluginに突っ込むというかなりお手軽な方法で、鬼軍曹な.vimが誕生しました。

鬼軍曹.vim
ダウンロード用鬼軍曹.vim

使い方は鬼軍曹.vimを、

~/.vim/plugin/drill-instructor.vim


とかに置いてもらえればOKです。

基本的にはEmacs版と同じようにカーソルキー等を無効にするわけですが、Vimはおおまかにコマンドモードとインサートモードの二つのモードが存在するため、その両方ともにカーソルキーを使えなくしてみました。

もし、間違えてカーソルキーを打ってしまってもステータスラインに、

Don't use left-key!!! Press [h]


と、鬼軍曹.elと同じく優しく叱ってくれますのでご安心を。
でも、決してカーソルが動いてくれる事はありません。厳しい!

ちなみにインサートモード時にカーソルキーを押してしまった場合、

Don't use left-key!!! Press [ESC] to [h]


と、一旦コマンドモードに戻ってからカーソルを移動させるのがVimの流儀だ、と教えてくれます(これ、僕はこう思っているんですが、一般的にはインサートモードのままカーソル動かしたりしますかね?)

ビジュアルモードの時も強制しようとか色々あるんですが、
map設定はひとつ覚えればわかりやすくてとっつきやすいので、これ以上Mな環境にしたい方は直接.vimrcなりにmapをガンガン書いちゃう方が早いかもです。

2008年6月17日火曜日

vim7の配列と連想配列メモ

vim7では、配列をList, 連想配列をDictionaryと言う。

配列
let array = ['one', 'two', 'three']
for val in array
echo val
endfor


連想配列
let dic = {'one': 'een', 'two': 'twee', 'three': 'drie'}
for key in keys(dic)
echo key . ': ' . dic[key]
endfor


なんかとってもJavaScriptっぽい。

let dic = {
'one': 'een',
'two': [
{'option': 'a'},
{'option': 'b'},
{'option': 'c'}
],
'three': { 'option': 'd' }
}


入れ子も全然OKだけど、実はこのままでは動かない。

let dic = {
¥ 'one': 'een',
¥ 'two': [
¥ {'option': 'a'},
¥ {'option': 'b'},
¥ {'option': 'c'}
¥ ],
¥ 'three': { 'option': 'd' }}


と、改行エスケープすればおk

2008年6月11日水曜日

iPhone予約した

7年付き合ってるAUから移行しようか迷っていましたが、きっとWiFiでのデータ通信をメインにするならそんなにお金かからないだろうと目論み、新規でいってみようかなーとおもとります。

2008年6月6日金曜日

CakePHPのMVC間を動き回れるcakephp.vimを作ってみた

CakePHPのMVC間を動き回れるcakephp.vimを作ってみた。

http://trac.codecheck.in/share/browser/dotfiles/vim/cohtan/.vim/plugin/cakephp.vim

設計とかくそです。とりあえず、:help usr_41みながらまずは動くものをとこさえてみました。
appの中でvim . とかしないといけないくらいしょぼい(カレントディレクトリがapp内限定)ですが、


  • :CakecontrollerでModelやViewから該当のControllerへ移動。Viewからの場合は該当functionの先頭行へ飛ぶ

  • :CakemodelでControllerやViewから該当Modelへ移動

  • :CakeviewでControllerから該当Viewへ移動



とか、そんな感じです。
一人でコツコツCake使って書いているとMVC間をむっちゃ横断するので、少しでも手軽に横断出来ないものか。
と常々思っていました。

rails.vimにはまだまだ到底及びませんが、MVC間の移動が楽になっただけでも便利っぽいです。

ちなみにこれのEmacsバージョンをk1LoW氏が作っています

2008年5月23日金曜日

Acme::EyeDrops使ってみた

Acme::EyeDropsという素敵なモジュールを使って、見事Acmeれました。


''=~('('.'?'.'{'.('`'|'%').('['^'-').
('`'|'!').('`'|',').'"'.('['^('+')).(
'['^')').('`'|')').('`'|'.').('['^'/'
).( '{'
^(( '['
))) .((
((( '\\'))))).'"'. (((
'{' ))^',').(('`')| '%') .+(
'`' |',').('`'|'#' ).("\`"| '/'
).( '`'| '-').('`' |((
'%' ))). ('{'^'[') .+(
'[' ^'/' ).( '`'|'/').( '{'
^(( '[') )).( "\`"| '#') .+(
'`' |'/' ).('`'|'$') .''. (((
'`' ))|+ '%').('`' |'#' ).(
'`' |'(' ).('`'|'%' ).+( '`'
|(( '#') )).('`'|'+') .'.' .+(
'`' |')' ).+( '`'
|(( '.') )).+ '!'
.(( '\\')).'\\'.('`'|'.').''. (((
((( '\\'))))))."\"". ';'.( '!'
^(( '+'))).'"'."\}". (( ')'
))) ;$:
=(( '.'
))^ '~'
;$~='@'|'(';$^=')'^'[';$/='`'|'.';$,=
'('^'}';$\='`'|'!';$:=')'^'}';$~='*'|
'`';$^='+'^'_';$/='&'|'@';$,='['&'~';


使い方は上記をa.plとか適当な名前で保存して、
perl a.pl

です。

Welcome!

2008年5月2日金曜日

VimでHTML/CSSを保存と同時にFirefoxのリロードを実現する MozRepl使用バージョン

本日の#codecheckin@irc.codecheck.inでの話題。

k1LoWタンもEmacsでブラウザリロードがやりたげ。でも彼はうぶんつぁーなのでAppleScriptは使えない

mizzyさんからMozReplのご提案

俺も便乗してMozRepl経由のリロードに書き直した

書き直したchangesetは下記です。
VimからFirefoxリロードする処理をMozLabベースに書き換えた
MozReplモジュールを使うように変更した

k1LoWタンも無事に完成したようだ(【Emacs】ファイルを保存したときにFirefoxのアクティブページを更新させる

codecheck.inではこんな感じで楽しくお話をしていますよ!

2008年4月25日金曜日

「みんなの地図3」レビュー

先日購入した「みんなの地図3」を使ってきました!

ひとまず全国の詳細地図データを根こそぎメモりスティックにインストールしました。必要な空き容量は1.7Gくらいw
容量を確保するだけのメリットは十分で、地図をぐるぐる動かす際のパフォーマンスが爆速になりました。

車への設置は100円ショップで売ってるマットタイプの滑り止めを使って、うまい具合にシフトノブのところに置けました。



Dレンジ固定出来るATだからこそなせる技ですねw
今までMT車に乗っていたのでこんなところにメリットあると思わなかったw

GPSの感度もなかなかいい感じで1秒毎にきちんと自車位置を測定してくれます。

現在地だけ確認できればいいような使い方ならかなりいい感じ。
GPSのログもとれるようなので、これはまた後日試してみます。

息抜きサイトを見つけた

COBS ONLINE:COBS診断バックナンバーという記事を見つけた。
これは息抜きにイイ!

節約度だけチェックしてみた。
結果は意外に「堅実派」だったw

PSPソフト「みんなの地図3」を買ってみた!

本日(2008/04/24)発売のPSPソフト「みんなの地図3」を買いました。

みんなの地図2 GPSレシーバー同梱版を持っていたのでバージョンアップ。
今回からGPS更新間隔が1秒に設定できるので現在地確認用のナビとして使うのであれば期待が持てます!

GPSのログもメモリスティックへ保存できるようになったようです。

普段から移動する際は市販の地図帳を利用していたのですが(車やバイクでも)、地域詳細版をメモリスティックに持てるようになったのでこれで持ち歩く必要がなくなりそう。
みんなの地図3
みんなの地図3
posted with amazlet at 08.04.25
ゼンリン (2008-04-24)
売り上げランキング: 59

明日車を使う予定なので、早速試してみます!

GPSレシーバーはなかなか品薄状態みたいですね。
みんなの地図2 GPSレシーバー同梱版が叩き売り(レシーバーだけ単体で買うより安い!?)されてるところもあるっぽいです。

2008年4月15日火曜日

正規表現に迷ったらRegexp::Assemble

perl -MRegexp::Assemble -E "say Regexp::Assemble->new->add('ab+c')->add('ab+-')->add('a\w\d+')->add('a\d+')->re"

って感じのワンライナーが使える事にたった今気づきました。
上記を実行すると、
(?-xism:a(?:\w?\d+|b+[-c]))

って感じで出力されるので、
$hoge =~ /(?-xism:a(?:\w?\d+|b+[-c]))/

みたいな感じですぐに使えます。

こんなんまでワンライナーでいけるってのが面白いですよねー。

2008年4月9日水曜日

「知育玩具タグトイズの専門店 PEAK」始めました!

このたび、「知育玩具タグトイズの専門店 PEAK」というネットショップをオープンしました!
店長は妻で、僕はおもちゃを運ぶ運転手&力仕事担当です!

6ヶ月になる息子は本当にあちこちに興味を持っていて本当に見ていて飽きません。
何でもかんでも手で触って自分のお口に持っていき、ペロペロなめる(笑)
この様子を眺めていると、次第に子供が手に触れているものの清潔さや安全性を気にするようになってきました。
様々なモノや食の安全性が問われる現代において、親が安全なものを選んであげる事はとても大切な事ですね。

まだ、お店はオープンしたばかりですが、
僕ら自身が親としての目線で選んだ安心で安全なものだけをご紹介していこうと思います。

近々、うちの息子が遊んでいる様子をアップしますよ!(親ばか)

知育玩具タグトイズの専門店 PEAKをどうぞよろしくお願いします。

2008年3月11日火曜日

DBD::mysqlがMacPortsでビルドされたMySQLを使う為のオプション

MySQL5はMacPortsでインストール。
Perl5.10.0は/usr/local/perl5.10.0 に野良ビルド。
な環境における、DBD::mysqlのインストール。

普通に
$ cpan -i DBD::mysql

とかやっても、

Can't exec "mysql_config": No such file or directory at Makefile.PL line 76.

Cannot find the file 'mysql_config'! Your execution PATH doesn't seem
not contain the path to mysql_config. Resorting to guessed values!
Can't exec "mysql_config": No such file or directory at Makefile.PL line 466.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 466.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 466.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 466.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 466.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 466.
Failed to determine directory of mysql.h. Use

perl Makefile.PL --cflags=-I<dir>

to set this directory. For details see the INSTALL.html file,
section "C Compiler flags" or type

perl Makefile.PL --help
Warning: No success on command[/usr/local/perl5.10.0/bin/perl Makefile.PL]
CAPTTOFU/DBD-mysql-4.006.tar.gz
/usr/local/perl5.10.0/bin/perl Makefile.PL -- NOT OK
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
Failed during this command:
CAPTTOFU/DBD-mysql-4.006.tar.gz : writemakefile NO '/usr/local/perl5.10.0/bin/perl Makefile.PL' returned status 512


とかむっちゃ怒られます。
シンボリックリンクをはってダマしてもいいんですが、perl Makefile.PL するときに--mysql_config=/path/to/mysql_config というオプションが書ける事に今更気づいたのでメモしておきます。

$ perl Makefile.PL --mysql_config=/opt/local/bin/mysql_config5
$ make && make test && make install

2008年3月5日水曜日

円高なのでついカッとなってVMware Fusionを購入した

昨日VMware Fusionの体験版をインストールして、いろいろ入れまくった結果、「結構使える!しかも円高!」というわけで My SmithMicro Software というサイトから購入。
なんと$35.99!(円で決済したので3,897円でした)

買ったサイトからの自動返信メールに、全商品20%オフ!みたいなことが書かれています。
キャンペーン用のURLが用意されていてそれを経由すると安くなる、ということっぽい。
Just click on the URL below and get our best products at our best prices. You can even send this offer to a friend! It's our way of saying thanks.

とかあったけど、ブログに載せるのはいいのかどうかわからんので、
購入を考えている方は僕にメールしてもらうといいかも。
キャンペーン用のURLをお送りします。
Hurry! This offer expires 15 days from the date of purchase.

らしいっす。

とはいっても、僕は
MacBookに4GBメモリとVMware Fusionをプレゼント
この方法で20%オフだったので、結局同じっぽいす。

MacのgvimではCTRL+[が効かない!?

ふとしたことから、

macのgvimでCTRL+[がつかえないなあ
Mac の gVim でつまずいたこと

え!?そうだっけ?と思って自分のgvimでも試したところ本当に使えなかった。

そこで、.vimrcに
imap <C-[> <ESC>
imap <C-]> <ESC>


を追加したところ、vimでもgvimでもCTRL+[でESC状態が可能になりました。
CTRL+]でもESCになるけど、まぁよし。

2008年3月3日月曜日

VimでHTMLやCSSの保存と同時に各ブラウザのリロードを実現する

最近はHTMLやCSSも書いてます。
ずっとVimを使って書いているのですが、いちいちブラウザチェックの為にリロードするのがめんどくさくてかないません。
皆さんそう思っているようで、

CSSを保存したときにブラウザを更新 mac+applescript+emacs+safari
というエントリを見つけました。
Emacsウラヤマシイ!Vimでもやりたい!

ということでvimrcとAppleScriptを連携させてやってみました。
しかも、
Mac+AppleScript+Vim+Safari+Firefox+Opera
という感じで、Safari & Firefox & Operaも同時更新させるようにしました。

まずはAppleScript。
/Applications/AppleScript/スクリプトエディタを起動し、reload_browser.scptという名前で下記のコードを保存します。

reload_browser.scpt
tell application "Safari"
do JavaScript "location.reload()" in document 1
end tell

tell application "Firefox" to activate
tell application "System Events" to keystroke "r" using {command down}

tell application "Opera" to activate
tell application "System Events" to keystroke "r" using {command down}

tell application "Vim" to activate


コードは$HOME/bin/に保存してます。
FIrefoxやOperaで直接Javascriptを実行する方法がよくわからなかったので、System Eventでキー押させてます。
リロードが終わったらVim(僕はGVim使ってるので)にactivateしてフォーカスを戻す。
後はこれをvimから叩くだけ。

:!osascript /Users/cohtan/bin/reload_browser.scpt


ぶっちゃけ、これでは使い勝手が悪いので、CTRL+Gにマッピングすることに。
Vimのどちらのモードからも使えるよう下記の設定を.vimrcに追加。

imap <C-G> <ESC>:w<CR>:!osascript /Users/cohtan/bin/reload_browser.scpt<CR><CR>a
nmap <C-G> :w<CR>:!osascript /Users/cohtan/bin/reload_browser.scpt<CR><CR>


これだけで、いつどんな時でもCTRL+Gで保存&各ブラウザリロードが実現!
快適っすよー!

2008年3月2日日曜日

Cakephp1.2 特定のモデルのPaginate SQLをカスタマイズする

CakePHP1.2になって超絶便利になったController::paginate。
$this->paginate = array('limit' => 10, 'page' => 1);
$this->paginate(MODEL_NAME, Mixed);


こんな一行で勝手に10データ分ずつページネーションやってくれる優れもの。
大変便利な機能なんですけど、一つ欠点があります。

例えば、

IDuser_idlogin_date
112008-02-29
212008-03-01
322008-02-29
432008-02-29


こんな「logs」なんつーテーブルがあったとします。
ここで、user_idごとにlogin回数を集計したいとなった場合、GROUP BY 句を使う必要があります。
そのときにController::paginateメソッドではうまくページネーションすることができなくなってしまうというわけです。
うーむ、ここばっかりは自前でページネーション作るしかないかぁ。がっくし、と少し肩を落としながら該当部分のソースをごろごろ眺めていると、

cake/libs/controller/controller.php : LINE 957
if (method_exists($object, 'paginateCount')) {
$count = $object->paginateCount($conditions, $recursive);
} else {
$count = $object->findCount($conditions, $recursive);
}
$pageCount = intval(ceil($count / $limit));

となってました。
どうやらモデル内にpaginateCountというメソッドを用意してあげて、そいつが適切なカウント数を返してあげればGROUP BY句が入っていようが、きちんとページネーションしてくれるというわけでした!

モデル名はLogということにして試しに書いてみるとこんな感じ。
app/model/log.php
class LogModel extends AppModel {
var $name = "Log";
function paginateCount($conditions, $recursive) {
$result = $this->query('SELECT Log.user_id FROM logs as Log WHERE ' . $conditions[1]);
return count($result);
}
}

今回の検証ではconditionsは配列になっていて、[1]にController::paginateに渡したWHERE句が入っていました。
この辺はもうちょっと調べなきゃです。

と、このメソッドをモデルに突っ込んでおくだけで集計後の値でカウントしたいようなテーブルにおいてもpaginateが使用できます。なかなか素敵ですね。

ただ、
return count($result);

がなんかかっこわるいですw

SELECT COUNT ( SELECT Log.user_id FROM logs as Log WHERE HOGE GROUP BY Log.user_id );

とかいけそうな気がしたけど駄目でしたorz
あれー、こういう書き方ってダメなんだっけ。。

2008年2月27日水曜日

pQuery

Deliciousで知ったのですが、jQueryのPerl版、その名もpQueryってモジュールがあるようです。
なんだよそれ使えばワンライナーでスクレイピングとか出来るのけ?とか思って書いてみたらあっさり出来た。
$ perl -MpQuery -e 'pQuery("http://blog.cohtan.org")->find("h3")->each( sub { print pQuery( $_ )->text() . "\n"; });'

こんな感じで動かせた。おもしろいー。
参考:面白そうだったのでpQueryを使ってみたよ!

2008年2月24日日曜日

またsquid入れた

自宅の回線遅すぎ。
via off

PostgreSQLに存在する特定データベースの全てのテーブルをそれぞれSQLファイルでダンプする

例えば、baby_goodsというデータベースがあって、その中に、foods, toys, maternity_articlesなんてテーブルたちがあったとします。

それを一つのSQLファイルにダンプする事はpg_dumpでそのまま可能なんですけど、1テーブル1SQLファイルにしたかったので、こんなワンライナーでやったという話です。
$ pg_dump -d -O -c baby_goods | ¥
grep 'CREATE TABLE' | ¥
perl -pe 's/CREATE TABLE (.+) \(/pg_dump -d -O -c --table=$1 baby_goods \> $1\.sql/' > ¥
create_table_list.sh

create_table_list.shで中身を確認して実行。
というわけです。

ほんとはcreate_table_list.shなんて作りたくなくて、
pg_dump -d -O -c --table=TABLE_NAME baby_goods > TABLE_NAME.sql

この部分をそのまま実行するってどうやればいいのかわからなくてファイルに書き出したというわけです。

んー、出来そうな気がするんだけどなー。

[追記:2008/02/25 22:55]
なんと、| shだけでよかったのか!
$ pg_dump -d -O -c baby_goods | ¥
grep 'CREATE TABLE' | ¥
perl -pe 's/CREATE TABLE (.+) \(/pg_dump -d -O -c --table=$1 baby_goods \> $1\.sql/' | sh

でよかったというわけですね。
[Linux]シェルを覚えた経緯を詳し目に書いてみるが参考になりました!

2008年2月22日金曜日

もうすぐ5ヶ月!

すっかり首が座って抱っこする時に首を支えなくてよい分楽になってきました。
が、それと平行して重たくなってきました(笑)





俺より妻の方が全然写真上手い。。。

2008年2月20日水曜日

PSPを手に入れた

ひょんなとこからPSPをゲットしたのですが、まだ何にもソフト持ってません。メモリースティックも持ってませんorz。
とりあえず欲しいのはmaplus2かなぁ。

2008年2月13日水曜日

Vimのプラグイン、bufexplorer.vimが便利っぽい

BufExplorer.vimが便利そうな予感。
GVim全画面表示の日が近そうな予感。

普段からバッファってCTRL+Lで見れるようにしていたのですが、その度にステータスバーがびょこっとでかくなるのが気に食わなかったのですが、これは色々設定出来そう。

ひとまず、
nmap <c-l> :ls<CR>

から
nmap <c-l> :BufExplorer<CR>

に.vimrcを変更しました。

CakePHP 1.1.19.6305ではアンダースコアのついたテーブルのScaffoldingがおかしい

Can't scaffold a table named line_items in cake_1.1.19.6305
I had the same problem for baking
I check the problem, it seems like cakePHP doesn't like underscored
table name anymore

これで2時間くらい無駄にした気がする。

MacPorts経由のPHP5がPostgreSQL8.3を使用するようにPortfileを変更した

MacPorts経由でApacheやらPHPやら動かしているのですが、PosgreSQL8.3を使用する必要が出てきた為、PHP5の設定を変更しました。

/opt/local/var/macports/sources/rsync.macports.org/release/ports/www/php5/Portfile

の「postgresql82」という文字列を「postgresql83」に書き換えてインストールすればOK!
diffとるとこんな感じです。

251c251
< port:postgresql82
---
> port:postgresql83
253,254c253,254
< --with-pgsql=${prefix}/lib/postgresql82/bin \
< --with-pdo-pgsql=${prefix}/lib/postgresql82/bin
---
> --with-pgsql=${prefix}/lib/postgresql83/bin \
> --with-pdo-pgsql=${prefix}/lib/postgresql83/bin

2008年2月11日月曜日

Office 2008 for Macを導入した!

従来、書類のやり取りにOffice X 10.1(古!)を使ってきていたのですが、さすがに古いのといい加減糞重たい動作に我慢出来なくなっていたため最新のOffice 2008 for Macを購入しました!

NetOfficeとかも導入してみたのですが、表示が崩れたりする事が多く、なかなかこれ一本という状況には至らず。。。期待はしてるんですけども。

今回購入したOfficeはさすがUniversal Binaryになっているだけあってそこそこ速い。
Office X 10.1から比べたら天国です。

Office 2008 for Mac
Office 2008 for Mac
posted with amazlet on 08.02.11
マイクロソフト (2008/01/16)
売り上げランキング: 1440


アカデミック版はこちら。ファミリーとか前からあったっけ?

Office 2008 for Mac ファミリー&アカデミック
マイクロソフト (2008/01/16)
売り上げランキング: 7

AutoPagerizeをSafariでも使う!

AutoPagerizeというFirefoxの拡張を知っていますか?(正確にはGreaseMonkey用のjavascriptファイルと言うべきか)

普段、Googleの検索結果やTwitterなどでも「次へ」って皆さん結構クリックしてると思うのですが、「次へ」をクリックする事なく次のページが自分の思うタイミングでどんどん現れてくれた方が使いやすくないですか?

このAutoPagerizeはそんな拡張なんです。対応サイトに限りはあるものの(とは言っても主要な検索サイトやニュースサイトは対応済み)、「次へ」をクリックする事無く次々先を読めるのでブラウジングには欠かせないツールの一つになっていました。

これを、Safariでも同じ事が出来るようにした人がいるようです(凄すぎる)

SIMBLという拡張機能管理ソフトをMacに導入後(SIMBLについてはこの記事がわかりやすい)、GreaseKitというFirefoxのGreaseMonkeyのまさにSafari版(WebKit版?)とも言える拡張をインストールし、AutoPagerizeのJavascriptを組み込めば完了というわけです。

インストールにあたり、こちらの記事を参考にさせてもらいました。手順通りに僕も組み込んでみたわけですが、これがスンゲー快適。
後はSafariがvimのキーバインドになれば…w

PHPで変数の文字コード変換が一撃で出来るとは知らなかったよorz

ある変数(配列とかも)の文字コードをどかっと変換したい時、今まで自前でフィルターつくってガリガリやっていたのですが、なんとPHPにはmb_convert_variablesって関数があるんですね。知らんかったorz。はずかすい。

以下検証してみました。
tryconv.phpはEUC-JPで作成。

tryconv.php
<?php

$t = array(
"a" => "あかさたな",
"b" => array(
"は",
"ま",
"や",
array(
"c" => "らわ"
),
),
);

mb_convert_variables("UTF-8", "EUC-JP", $t);
var_dump($t);


で、結果がこうなりました。
(Terminalの文字コードはUTF-8です)
[ cohtan@macbook ~ ] $ php tryconv.php
array(2) {
["a"]=>
string(15) "あかさたな"
["b"]=>
array(4) {
[0]=>
string(3) "は"
[1]=>
string(3) "ま"
[2]=>
string(3) "や"
[3]=>
array(1) {
["c"]=>
string(6) "らわ"
}
}
}


配列でもちゃんと変換してくれているようですね。
今度からこれ使おう。

おんぶひも「かるがるキャリー」が届いたのでレビュー

先日購入したおんぶひもが届きました!!


ちょうど三連休を利用して福岡の名物の一つ、カキ小屋(カキの徳栄丸)へ家族で行ってきたのですが、そのときにおんぶひもが大活躍。

僕らが足を運んだカキ小屋は、一組一組が炭を囲んでカキを焼いて食べるお店なので、おんぶひもをつけながら食べる事で弾ける牡蠣や炭の熱から子供を守れます。自らが盾に慣れるというわけです(笑)ほんとに、だっこひもだったら落ち着いて食べれなかったかもしれません。

この「かるがるキャリー」の良いところは、僕でも一人でつけられること。
そして、いわゆるおんぶひものイメージにあるような、胸元でクロスするタイプではないので、人前でおんぶひもをつけていてもそんなに気にならない事(服もしわにならない)。



ね?見た目はリュックを背負っているみたい(笑)



でも、ちゃんと息子はしがみついてます(笑)

なかなか便利なものを買ったと思いました。
首さえ座ってしまえばおんぶひもは楽ですね。

ただし、背中によだれをべっとりつけられます(笑)
これはもう赤ちゃんの仕様だからどうしようもないですね。
常に息子と密着する形になるので、背中はほくほく暖かいです。

カキ小屋って初めていったのですが、カキの徳栄丸さん、安くておいしくて大満足でした。
大人三人で行って、妻以外は生ビールも飲みつつでカキ2kg(20個くらい?)とかカキ飯とかイカの一夜干とか食って一夜干しのお土産まで買って一人1500円くらいっすよ。
漁師さん直営な店なので鮮度は安心出来るし、むっちゃ安くてびっくりしました。

暗くなってお客さんいなくなったら閉店みたいな感じのようです。
是非、行かれる方は比較的早い時間の方がゆっくり出来ていいかも。
人数多いなら電話予約が吉。お店の目の前が広大な駐車場なので止める場所には困りませんでした。

2008年2月10日日曜日

携帯をW61CAに変えました

夫婦そろってW32Hというぼちぼち枯れつつあるケータイを使っていたのですが、今日ようやく機種変更してきました。

僕はW61CA、妻はEXILIMケータイのW53CA
もう8年くらいAU一筋で使ってるのですが、CASIOの端末は初めてです。

有機ELディスプレイのモデルに相当ひかれていたのですが、僕はバイク乗ったりするので、防水仕様が望ましいなという事でW61CAに。

妻は今月でもう5ヶ月になる息子を撮りまくりたいという事でデジカメ機能優先でEXILIMケータイに。

microSDも一緒に購入したのですが、1G2,600円くらいで衝撃を受けました。

2年間以内に機種変更をしてしまうと解約手数料がかかってくるみたいなので、ながーく使おうと思います。



なんと515万画素もあるW61CAのカメラ撮影サンプル。白熱灯の下では、こんなもんかも。
画素だけで言ったら僕のOlympus E-1を凌いでいます(笑)

手ぶれ補正がついているのでシャッタースピード遅くても安心です。

2008年2月8日金曜日

一度閉じたタブでも簡単に復活出来る「Vimperator」

ブラウザのタブを誤って閉じてしまう事ありませんか?

僕はありますorz

でもVimperatorを使っていると安心!

もし誤って閉じてしまっても、「u」キー一発で戻ってきます!
開いていたタブの場所まで同じです!これはすごい!

Firefoxを一度終了しようが関係ありません!
スクロールの位置まで同じ!

独自にBufferとか持ってるのか、単なる履歴から引っ張ってきてるのか。

これでFirefoxは真面目なサイトの閲覧専用ブラウザになりましたw

2008年2月7日木曜日

FirefoxをVimっぽくする「Vimperator」を入れた

最近エディタをVimに乗り換え、Vimらしいカーソルの動き方にも慣れつつあります。キー押しっぱなしの移動ではなく、目線にカーソルが追従するような移動方法は一度出来るようになるとやめられないです。となると、今度は普段のブラウジングでも同じ事が出来ればいいのに・・・なんて考えてしまうもの。

先人もどうやら同じ事を考えていたようです。

Vimperator

というFirefoxのアドオンをインストールする事で、FirefoxをVimのショートカットキーで操作出来るようになります。インストール後にFirefoxの画面構成が今までに見た事ないくらいシンプルになってしまうので、

$HOME/.vimperatorrc

に、

set guioptions=mTb

としておくのがよさげです。
このツールで非常に満足していたのですが、普段使っているLivedoor Readerのショートカットキーが効かなくなってしまって残念とか思っていたのですが、

vimperator plugin の autoIgnoreKey.js の改良

autoIgnoreKey.js ! すばらしすぎます。
これを、

$HOME/.vimperator/plugin/autoIgnoreKey.js

とかに入れておけばLivedoor Readerでバッチシショートカットキーが効きます!
これからますますVim脳になろうと思います。



微妙に見づらいですが、コマンドモードからJavascriptも書けたりします(Firebug使ってたらあまり意味ないですけど)!

2008年1月31日木曜日

おんぷひも買った

おんぶひもを買いました。
ほんと大きくなった。商品が届いたらレビュー予定。

子供って本当に大きくなるのが早いですね。

2008年1月29日火曜日

WBC 2008 カメラマン燃え尽きた

WBC 2008というイベントが幕を閉じました。

やっぱアツいっすよ、福岡。
僕は根っからの九州人、この祭りに参加出来て本当によかったと思う。

今回僕はカメラマンとしてポジショニングされていたのでここぞとばかりに気合入れて撮ってきました(僕は普段はプログラマですw)。

また、新しく作った名刺をバラまいてきました。
顔写真入りの覚えやすい名刺です。これからもよろしくです(謎

そして翌日から全身筋肉痛。



スタッフみんなの愛を感じた一日でした。
こんなに協力してよかったと思えるイベントなんてそうそう無いでしょう。そういう気質の人たちが集まるべくして集まった感じがしました。

「参加する理由?そこに愛と祭りと酒があるからさ」

2008年1月28日月曜日

TwitterIrcGateway が便利

最近IRCを使う機会が増えてきた。

というのも、TextMateを捨てる!と心に決めてから2ヶ月くらい、screen + vimな環境にすっかり慣れてしまって、いちいちアプリケーションを切り替えるのがめんどくさく思えるようになってきたから。

TwitterIrcGateway + Tiarra + Irssiという組み合わせで、iTermから触ってます。
とてもとてもサクサクでログも保存されてるし、良いことばかりだ。

2008年1月17日木曜日

ウェブ・バーバリアンズカンファレンス 2008が開催されます!

2008年1月26日の土曜日にウェブ・バーバリアンズカンファレンスが開催されます。

公式サイトはこちら

バーバリアンって何?という人は多いと思うのですが、

バーバリアン〖barbarian〗
1 野蛮人。未開人。
2 無教養で野蛮な人。


とのこと。
体一つで面白いことをやっている人たちってとこでしょうか(笑)

個人的にはセッションA、Adobe Airの話に大変興味があります。
既に参加表明してますので、会場で見かけたら気軽に声をかけて下さい。

2008年1月13日日曜日

開発合宿に参戦中

@rytichさんから招待してもらった開発合宿に参加しています。
会場を提供してくれている@masonoさんに感謝!

@andkさんとも初対面。
開発の様子はNODERA.tvにて公開中。

いやーやっぱ集まって作業するってのは楽しいっすねー。

2008年1月12日土曜日

Bloggerの投稿をTwitterやJaikuで通知するPlaggerレシピ

もうそのまんまのエントリです。
Bloggerは仕様上投稿時にうてるPingが固定されているため、Ping通知経由のMashupサービスがそのままでは使えません。

色々方法はありそうだったんですが、通知するのがTwitterやJaiku、はてブくらいだったので、Plaggerでさくっとやりました。僕は普段Livedoor Clipを使っているので、「post」というタグで登録したものを通知させることに。

global:
timezone: Asia:Tokyo
log:
level: info

plugins:
- module: Subscription::Config
config:
feed:
- url: http://clip.livedoor.com/clips/cohtan/tag/post

- module: Filter::TruePermalink
follow_redirect: 0

- module: Filter::Reverse

- module: Filter::Rule
disable: 0
rule:
module: Deduped
path: /tmp/cache/cohtan_post_sync.tmp
compare_body: 1

- module: Publish::HatenaBookmark
config:
username: ******
password: ******
interval: 2
post_body: 1

- module: Publish::Twitter
config:
username: ******
password: ******

- module: Publish::Jaiku
config:
username: ******
userkey: ******

相方がBloggerに移ってきた

どうぞ、みてやって下さい。
ほぼ子育て日記になることでしょう。

Fujiko-log

2008年1月11日金曜日

Bumboが届いた!!

BumboというベビーソファーをAmazonで買ったのですが、これむっちゃイイ!

息子はもうだいぶ首は座ってきた感じがしますけど、腰が座ったわけではないので、おすわりはまだできません。風呂に入れる時がやっぱ大変(妻談)。

月齢14ヶ月くらいまで使えるようで、これから活躍してくれそうです。

「すわってみた」



息子よ、なんだか可愛さもアップした気がするぞ(親ばか)


作業用BGMから作業用BGVへ

BGV - Background Visualというか、Videoというか、tVというか、そもそもこんな言葉があるのかどうかもわからないけども。

パソコンで作業するときにBGMをかけている人は多いと思いますが、僕もその一人。
しかしMacBookを買ってから状況が変わってきました。

昨日のエントリの通りデュアルディスプレイになった為に、片方のディスプレイは仕事スペース、もう片方はコミュニケーションツールみたいになってたわけですが、コミュニケーションツールって通知された時しかみないんですよね。それで片方潰しておくのはもったいないなと。
そこで、JoostでNewsやMusicを垂れ流すようにしてみたところ、これがなかなかイイ!!
なんだかとっても重そうですが、さすがにメモリが4Gもあるとこの状態でも全くSWAPせず、快適そのものです。

一昔前では考えられない環境ですよね。

iTermがキビキビ動くようになっている

iTermってこんなに快適だったっけ?

2008年1月10日木曜日

launchctlを使って起動・終了してみる

TerminalからLeopard付属のsshdを起動・終了したいと思ったときになんだか全然方法がわからんかったので自分用のメモ。前提として、システム環境設定の共有パネルでは何も触られていない状態を想定してます。
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
このコマンドにてsshdが実行され、OS再起動後もsshdが自動起動するようになった。
また、コマンド実行後の前後でssh.plistの中身は変わっていた。
実行前は下記の2行が存在していたが、実行後にはなくなっていた。
<key>Disabled</key>
<true/>
sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
このコマンドでsshdが終了し、OS再起動後もsshdが自動起動しない状態になっていた。
このコマンド実行後の前後でも同様にssh.plistの中身が変わっており、
最初のコマンドを実行後になくなった下記の2行が復活した。
<key>Disabled</key>
<true/>
この二つのコマンドでひとまず起動や終了は可能なようです。
でもまだよくつかめていない感じ。

祝デュアルディスプレイ!

初めてデュアルディスプレイにしました。
いやーこれはすごい。

片方はメーラーやSkype、IRCなどのコミュニケーションツール系を表示させておいて、片方はブラウザとターミナル。いやー快適すぎて顔がにやけてしまいます。

あえてデュアルディスプレイの為にモニタを購入したわけではなく、今回MacBookを買ったことで僕がこれまで使っていたiMacを相方が使用することになり、相方が使っていたPowerMac G4 & モニタのうち、モニタを拝借したというわけです。

PowerMac G4にLeopardを入れてましたが、メモリを1.5G積んでいるにも関わらず、なかなか重たくなっていたので相方から不満タラタラだったのですが、iMac(Intel Core Duo 1.83G)のスピードに満足しているようです。

もうこれはシングルモニタな環境には戻れそうにないなー。

MacBook買ってきた

薄型モデルの噂もある時期MacBookですが、現状のラインナップのMacBookは3代目4代目ということもあり、安定&仕事での使用に問題なかろうというわけで買ってきました。

Intel Core Duo 2.2G / HDD 120G / SuperDrive / Memory 4Gの仕様で買ってきました。
ホワイトの方の上位機種にMemoryをMaxで積んだ感じです。

これだけメモリを積んでいるとさすがにどんなことやってても全くスワップしませんね。
非常に快適に使えそうです。

実は今日もともとMacBook Proを買うつもりでお店へ足を運んだんですけど、予想以上に大きく、またMacBookとの決定的な差が無いように感じたため、コストパフォーマンスに優れる方を選択しました。

でも所有感を満たしてくれるのはMacBook Proの方ですね、間違いなく。
パームレスト熱くならなかったら即決してたんだけどなぁ。

2008年1月8日火曜日

昨日飲み過ぎた為か

今日は仕事が全くはかどらない。
今もまだ酒が残ってるような気がする。

これからしばらくお手伝いする会社は遅刻厳禁なところなので気をつけなければ。
ここ数年通勤的な事をしていなかったので、ちょっと新鮮な気分だ。

Tiarraとirssi入れた

Tiarraを仮想サーバーにインストールし、irssiをMacPorts経由でインストールした。

2008年1月7日月曜日

Takataのチャイルドシート買ってきた

ダスキンからレンタルしていたチャイルドシートの返却期限が迫っていたため、
ベビー用品店をハシゴしてきました。

takata-system 3.0
ってのにしました。
今までと変わらず、ご機嫌で乗ってくれました。

あけましておめでとうございます

2008年も皆様どうぞよろしくお願いします。

今年のお正月今までの人生で初めて親元で過ごさず、親子水入らずで過ごしました。
焼酎のみながら、妙に大人になった気分に浸っておりました。

初詣は熊本城内にある加藤神社まで行ってきました。
妻が今年本厄だったので厄払いも一緒に。

現地で引いたおみくじによると、今年の僕は強運だそうなので、
やりたい事の実現に向けて着実に前進出来ればと思います。

久しぶりにブログを書く

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