komagataです。 mongrelを入れるときに一緒に入るdaemonsというライブラリが気になったので調べてみました。 daemonsは大まかに、サーバープログラムをstart/stop/restartなどのおなじみのやり方で操作できるようにするラッパーの機能とプログラム中で使って自分のプロセスをデーモンにする機能があるそうです。 引数を出力し続けるプログラムをデーモンにしてみたいと思います。 puts_arg.rb: #!/usr/bin/env ruby loop do puts ARGV.inspect sleep(1) end 実行結果。 $ ruby puts_arg.rb a b c ["a", "b", "c"] ["a", "b", "c"] ["a", "b", "c"] (略) これにdaemonsを使ってラッパーを用意します。 puts_arg_co...
komagataです。 最近社内ではiTunes専用のPCを用意して社内BGMを流しています。 「コマンドラインから曲のリクエストを出せないかな」と思って、勉強がてらRubyを使ってジュークボックスサーバ、ジュークボックスクライアントを作ってみました。 必要な機能は、 簡単に曲のリクエストを出せるクライアント 複数のクライアントから曲のリクエストを受付け、保持し、順次再生するサーバ クライアントが自動的にサーバを見つけるためのネームサーバ などで、考えてみるとかなり面倒臭そうです。iTunesはDAAP(Digital Audio Access Protocol)というプロトコルで音楽をやり取りしたり、mDNS(Multicast Domain Name Service)というネームサービスを使ってサーバを見つけたりしているそうです。 今回は、dRubyを使って曲をやり取りし、...
komagataです。 先日、社内の勉強会でWebアプリケーションの国際化について話したので資料を公開します。 資料内で出てくるソースは下記でダウンロードできます。 hello_gettext.tar.bz2 rails_gettext.tar.bz2 関連: ブラウザ上で翻訳ファイルが編集できるソフト「Pootle」...
komagataです。 アプリケーションを国際化する場合は大体gettextを使ってPOファイルを作って、MOファイルを作ってという感じですが、エンジニアでない人に使ってもらったり、複数の人と共同で翻訳作業をしたい場合に敷居の高さを感じてしまいます。 もっと手軽に翻訳作業が出来るソフトが無いかと思って探したところ、Pootleというソフトを知りました。 Pootleの特徴: ブラウザ上でPOファイルの編集。 CVS, Subversion, darcsといったバージョン管理ソフトとの連系。(updateやcommitができる) 複数プロジェクトの管理。 ブラウザ上でユーザー管理。 プロジェクト毎にユーザー単位の細かい権限管理。 単数系・複数系への対応。 Fuzzyへの対応。 Python製。 BitTorrentやFirefox, GNOME, KDE, OpenOffice.orgの一...
komagataです。 本日、TilePlexという新しいサイトをオープン(β版)しました。 TilePlexはある商品と関連する商品をひたすらつなげていく不思議なサービスです。ユーザー登録不要で追加していけますので是非試してみてください。 また、Web APIも同時に公開されていますので面白いアイデアを思いついて何か作ってしまった方は100%見に行くのでトラックバック等いただければ幸いです。 (トップページのFlashもこのAPIのみを使って作られています。) TilePlex: http://tileplex.jp TilePlex API: http://tileplex.jp/top/api...
komagataです。 Webアプリケーションのパフォーマンスの大半はデータベース、特にインデックスの使われ方にかかっている気がします。 仕事でもMySQLをよく使いますが、MySQLでは1テーブルに付き1インデックスしか使われません。PostgreSQLなどと比べてそのことが気になってMySQLでのパフォーマンスチューニングに全く自信が持てませんでした。 オライリーの実践ハイパフォーマンスMySQLには下記のように書かれています。 実際、UNIONを除き、MySQLでは、1つのクエリを実行するとき、1つのテーブルに付き1つのインデックスしか使用できない。この事実は、繰り返し述べるに値するほど重要である。「MySQLでは、1つのクエリを実行するとき、1つのテーブルにつき1つのインデックスしか使用できないのである。」 また、その制約を考えたクエリの書き方として下記の様に書いてあります。 my...
rack-logo posted by (C)komagata komagataです。 仕事でも使う必要が出てきたのでRubyの勉強をしています。WebアプリケーションでRubyを使おうとしていきなり躓いたのがApache、WEBrick、Mongrel等、実行環境毎の設定やAPIの違いです。 Rubyを普段使っている人には常識過ぎるのか情報が少なく、FastCGIで単に「Hello, World」を表示させるのにも一苦労でした。(Railsでは簡単に動くのが悔しい) そんな実行環境毎のAPIの差を吸収してくれるRackというライブラリを知ったので試してみました。...
komagataです。 先日社内の勉強会でRDFとFOAFについて話しましたので資料を公開します。 セマンティックウェブの小難しいイメージが少しでもやわらげば幸いです。 ...
はじめまして。先月からアルバイトとして働いているmatsumotoです。 今月初め(3月2日~4日)に実施した開発合宿のお話をさせていただきます。 これから開発合宿を検討されている方の参考になれば幸いです。 まず、参加したのはアルバイトを含む13人。合宿の舞台は晴海グランドホテル。 初めにブレストを行い何を作るか確認する。ということをしました。不肖ながら私が司会進行をつめさせていただきました。 作ろうとしている物の発表をし、皆でアイデアを出し合い色々発展させていきました。それを通してその人はどういう人なのかを改めて再認識させられる事もしばしば・・・ さらに普段の会議などにはない気軽な雰囲気も助け皆口々に意見が飛び交います。集団の中で意見を言う大事さを実感しました。 また司会をさせていただくことによって会議を進めていくということの難しさ。というのも知ることが出来ました。 普段の会議で話を聞く...
komagataです。 最近、個人でWebサービスを作る人が増えています。 僕も個人(2人)で※Plnetというしがないサービスを作っています。Plnetを作るにあたって、もう一人の作者t-kawaduと目標に掲げたのが、 「とにかくオープンすること。」 なんて低い目標だと驚かれるかもしれませんが、仕事で作るのとは違って個人でWebサービスを作る上で一番大変だったのは“やる気を継続させること”でした。やる気を継続させるためにやったことを紹介したいと思います。 (普通こういうことは成功しているサービスの作者が言うものですが・・・) 寝る前にドメインを取る よく飲みながらこれこれこういうサービスを作ったら便利なんじゃないか、なんて話をしますが実際に作ったためしがありませんでした。自分の口ばっかり具合にうんざりしていたので、寝て気が変わる前にドメインを取りました。 寝る前にレンタルサーバを借りる...
komagataです。 社内の勉強会でWebDAVについて発表したので資料を公開します。 (この資料は少し言い過ぎなので2割増しで聞いといて下さい) [<< Prev Next >>] WebDAV.pdf(741KB) var slideWebDAV = { img: function () { return document.getElementById('slide_webdav'); }, first: function () { var cube = new Animation.Cube('slide_webdav', 'http://labs.unoh.net/webdav/WebDAV1.png'); cube.clockWise = false; cube.rotateSeconds = 1.000; ...
komagataです。 Javascriptで何か書こうと思ったときにどのライブラリをベースにして作るかで非常に悩みます。一端特定のライブラリに依存してしまうと途中で変更するのが難しそうですし、コアオブジェクトを汚染しているものは混ぜると動かなくなる組み合わせもあります。 別に「Mochikitにしよう!」とか宣言して決めてしまえばいいじゃないかという意見もありますが、妙にそんなところが気にかかってなかなかプログラムを書き始められないことが多いです。 そこで、「どうしても使いたい関数はインライン化すればいいんじゃないか?」と思ったので試してみました。 どういうことかというと、例えばprototype.jsのObject.extendを使って以下のように書きたいところを・・・ var dst = {'foo':1, 'bar':2}; var src = {'foo':100}; var r...
naoya です。 今回は、前回からかなり間が空いてしまいましたが、フォト蔵のリニューアルを通して学んだことの後編についてエントリします。 第三章:リニューアル直前 いよいよ、フォト蔵リニューアルまで、後一ヶ月となったところで、かなり厳しい状況になってきました。 そんな状況のため、フォト蔵チームで相談して、細かいバグフィックスは重要なものに絞って、チーム全員でリニューアルを仕上げることに方針を変更しました。 あわせて、harukさんとkomagataさんが入社されたことも、当時はとても大きかったです。 これで、リニューアル直前(2006年10月頃)は、次のような人員体制に変更になりました。 ・リーダー:1人 ・デザイナー:1人 ・エンジニア:5人(フォト蔵チームのエンジニア全員) 人員が増えたことにより、今まで僕が1人でやっていたロジックとビュー部分のコード変更をエンジニア5人で分業するこ...
komagataです。 最近、色々なソースを読んでJavascriptの勉強をしているんですが、その中で比較的ソースが短く、シンプルなものが多いのでJSANのライブラリを参考にさせてもらっています。出来てから1年以上経ってるのにイマイチ使われていないような気がしますが、勉強ついでに以前作ったpprompt.jsというライブラリをJSAN用に変更してアップしてみました。 jsan logo posted from フォト蔵 そもそもJSANとはJavaScript Archive Networkの略で、要はTeXのCTAN、PerlのCPAN、PHPのPEARみたいなライブラリをアップしたりできるところだそうです。(アップに際して厳密な投票プロセスなどは無いのでPEARとは少し違うかもしれません) JSANライブラリの使い方は長くなるので下記等を参照していただいて、早速アップするモジュール作...
最近オイルヒーター,ガスファンヒーター,石油ファンヒーターのどれを買おうか悩みつつPHPのフレームワークはSymfonyにかなり転がりそうなjokagiです. 私が遅いので気を遣ってkomagataさんが先に書いてくださいました. ナイスフォローありがとうございます. さて今回は,先日参加した開発合宿をはじめ最近何度かLinux環境を用意する必要性が連続したので,その辺りの作業を手短にする手順を紹介します. 慣れれば最低限の環境は10分程度,全部で30分あれば十分ウェブ開発に必要な環境を用意できるようになります. とりあえずLinuxはCentOSでバージョン4.4用にServerCDというのがあるので,それとVMware Serverを使います. まずVMware ServerのインストールとCentOSのisoイメージを下記リンクあたりからダウンロードしてください. VMware S...
komagataです。 前回このブログに投稿してからデフォルト派を勝手に自称していますが、デフォルト以外にインストールしているソフトについて紹介します。 インストールしているソフト: Firefox Firebugが便利過ぎてどうしてもアンインストールができません。IEの意味不明なjavascriptエラーが憎いです。 憎いエラー posted from フォト蔵 Putty Windows標準のtelnet.exeではどうしてもssh接続ができません。泣く泣くインストールするほかありません。(ちなみにパティと読むらしいです) telnet.exe posted from フォト蔵 gvim メモ帳とワードパットはそれぞれ、LFが使えない、UTF-8が使えないという問題でどうしても他のエディタを入れるしかありません。お前等なんで力を合わせないんだ。 coLinux 開発者には便利過ぎます。...
先週ウノウに入社しましたkomagataです。 入社したてなのでPCのセットアップなどをやっていました。便利なフリーソフトでも紹介できればよいのですが、僕はWindowsには「なるべく余計なソフトを入れずに済ませたい」というデフォルト派なのでデフォルトでWindowsを便利に使うためのTipsを少し紹介できればと思います。 Windowsキーを積極的に使う 軟弱なキーと思われがちなWindowsキーですがWindowsをデフォルトで使うには欠かせません。ショートカットキーを表記する場合はEmacs等のC-sのようにWindowsキー+eはW-eと表記します。(本当か?) W-e --- エクスプローラ起動 W-d --- デスクトップの表示/非表示 W-w --- ウインドウを閉じる(=M-F4) W-l --- コンピュータのロック W-m --- 開いている全てのウインドウを最小化 W...