メイン | 2006年07月 »

2006年06月30日

Shibuya.JS Technical Talk 2

先ほどShibuya.JSTechnical Talk #2に行ってまいりました。

前半はラーメンを食べて来たのでちょっと見れませんでしたが、簡単に感想なんかを

Inside LDR(1)

やはり一番面白かったのはma.laさんのInside LDR (1)かなと。
いわゆるESB的な開発に対してフロントはJSでぐりぐりやるってのも、ここまで徹底して世に出してるのが、やはりLivedoor凄いなぁと思いました。

それとFunctionオブジェクトの拡張が結構面白くて、Arrayのフラット化ってのは最近流行りなんですかね。 引数の型にあわせる為に処理中でそれに沿った変数を作るってのも思えば確かにバカらしいのかもしれません。w

cometの実装

割り込み処理ってのがいわゆるWebアプリで出来るのは確かに面白いなぁと。
とは言え、sleepで待ち続けるのもiframe内でscript要素を吐き続けるのも、 動的なプロセス数の上限にはかなり制約がありそうだし、実現性って点は少し…。

その他

継続渡しってのによる経路探索はちょっと興味があります。もう少し詳しく聞きたかったなぁと思いました。

MochiKitも少し興味出ました。Dojoと共に勉強してみたいですね。

それとうちの会社からid:amachangcho45さんがTalkerしてきました。
二人ともお疲れ様です。

2006年06月29日

開発合宿に行ってきました

百式田口さん、サイドフィード赤松さん、ウノウ石原さんと共に開発合宿に水上まで行ってきました。

折角なので色々とそのときの内容なんかを書いてみます。

田口さん

今回、最も悩ましげだったのは田口さんだったんじゃないでしょうか?w

今回はいろいろ考えていったつもりなのですが、やっぱり画面の一枚ぐらいは作っていかないとだめですね・・・。最初に思いついたアイディアはいいかな、と思ったのですが、シンプルに考えすぎていてセキュリティとか考慮するともちょっと複雑になることが判明。そうなると「自分が本当に使うだろうか?」がなんとなく疑問に・・・。

なんて感じでご本人も仰るとおりですな。

赤松さん

やはり赤松さんはスピード感が凄かったです。
いわゆる流行物とかにも当然敏感でありつつも、サービス志向な空気を出しつつ、 抑えるべき点は抑えて最も自分が開発しやすいスタイルで開発しているなと感じました。

そして実際作っていた物を色々と見せて貰いましたが、アイデアがやはりとても良いなぁと思いました。
とってもインスパイアされました。

石原さん

開発しようとした内容が被り気味だったり、石原さんがRoRなのに対して、僕はCatalystと言う、何とも終始似たような感じでした。
しかも勤務地も実は近かったり。w

最終的なシステムとしての完成度は僕の方が遥かに低く、まだまだリリースには遠いです。
頑張って来月中にβでもリリースしたいなぁ。うむ。

2006年06月25日

rakeコマンド

rakeコマンドなる物が存在するとRakefileを使ってパッケージングが出来るそうな。

と言うかrubyforge.orgなんてあるんですな。w

余談ですがprototype.jsのレポジトリを追いかける際に恐らく必要になるでしょう。

2006年06月22日

Yet Another C Compiler

Cコンパイラに普通はgccを使う訳ですが、ApacheやらMySQLやらって高速化したいのが本当の所です。

以前、友人からiccと言う存在を聞きましたが、pgccなるオープンソースなC Compilerも存在するようです。

とは言ってもどの程度まともにコンパイル出来るかとか、どの程度高速化が期待出来るかってのは、実際にベンチマークとって見ないとって所ですね。
MySQLのconfigureオプションのドキュメントによれば、

コンパイラ 推奨オプション
gcc 2.7.2.1 CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
egcs 1.0.3a CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"
gcc 2.95.2 CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti"
pgcc 2.90.29 以降 CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"

とあるようにpgccでもコンパイル出来そうなので、試しにMySQL 5.0でもビルドしてみて、ベンチとってみようかなとか思ってます。

2006年06月21日

NEXTモジュールの検証中で

ついついみんなハマった件について。

package B; use base qw/A/; use NEXT; sub foo { print __PACKAGE__; shift->NEXT::foo; }

こんなコード書いた訳ですが、@B::ISAにExporterが入ってるので謎…とか思った訳ですよ。
何事か色々考えてた訳ですが…

2006年06月20日

hide from PAUSE

どうもpackage宣言を下記のように書くとPAUSEにupしたときにクロール(!?)されないようだ。

(via DBIx::Class::Componentised)

package # hide from PAUSE DBIx::Class::Componentised;

2006年06月19日

MeCabのインストール

MeCab 0.91をインストールしてみましたので、そのメモです。

mecab-0.91.tar.gzをダウンロードをした後に、

# tar xvfz mecab-0.91.tar.gz # cd mecab-0.91 # ./configure --enable-utf8-only --with-charset=utf8 | tee configure_log # make | tee configure_log # make check | tee configure_log # make install | tee configure_log

あっさりインストール完了(w
これ実はCygwinでもインストール出来ちゃったんですが、 どうしてもCygwinではMeCab.pmだけインストールできませんでした。

後はipc辞書も--with-charset=utf8をつけてビルド。
一応先の課題としてはText::MeCabを使ってみたりするとか、 ユーザー辞書の追加とかですかね。

SEE ALSO

iso-2022-jpのBエンコーディング

そういえばBase64 Bエンコーディングをダイレクトにやるモジュールって今まで見たこと無かったけど、たまたま見つけました。

Lingua::JA::Mailってのがあるみたいです。
メール送信って毎回やるはずなのに、今までこういうモジュールって何で無かったんだろう。w

と思ったらnipotanさんが書いてくれた通りJcodeで普通に出来た罠。(死
ちょっと恥ずかしいですな。

libcのバージョン確認

Tipsってよりただのメモ。
/usr/libかと思ったら/libだったってオチ。w

# ls /lib/libc-* /lib/libc-2.2.5.so

こんな風にして確認しる。

ついでに言えばkernelのバージョンはuname -aで確認。
これは常識でしたね。

csshoverを使ったWeb StandardなCSSコーディング

IEのせいで、:hoverとか:activeとか使いたいが為に無理やりanchorを使うマークアップを良く見かけますが、 これを極力Web Standardに近づける為の方法にcsshover2.htcってのがあるのでご紹介。

使い方はサイトにも書いてあるけども、

body { behavior:url("csshover.htc"); }

みたいに読み込むだけです。
ただIEだけに適用すべきなんで条件付コメント(Conditional Comments)とか使うと良いと思います。

実際にTokyo Graffitiって言うSNSでも使ってます。

AUTO_INCREMENTを使わずにシーケンスをエミュレートする

冗長化を考えるとAUTO_INCREMENTなカラムってちょっと使いにくかったり…。 あるいはトランザクションセーフな処理を考えて見ても、AUTO_INCREMENTを使うと、 INSERTしてからlast_insert_idで取得って流れになってしまい、やっぱり使いにくいなぁなんて。

余り知られていないかもしれないが、公式ドキュメントでも紹介しているシーケンスのエミュレート方法についてメモって見ます。

どのようにやるかと言えばシーケンスをエミュレートするテーブルを作り、 その中でシーケンスの値を保持する唯一つのレコードがあればOKです。

CREATE TABLE Sequences ( member_seq bigint not null default 1, friend_seq bigint not null default 0 ) TYPE = InnoDB; INSERT INTO Sequences(member_seq, friend_seq) VALUES(0, 0);

このテーブルと一つ追加したレコードに対して、次のように遊んでみる。

mysql> UPDATE Sequences SET member_seq = last_insert_id(member_seq) + 1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT @next_member_seq := last_insert_id(member_seq) FROM Sequences; +------------------------------------------------+ | @next_member_seq := last_insert_id(member_seq) | +------------------------------------------------+ | 1 | +------------------------------------------------+ 1 row in set (0.00 sec)

こうすれば@next_member_seqで同一トランザクション内で上手くシーケンスを使えそうだなと。 これSELECT-INSERTを使うとユーザー変数使わないでも出来ます。