2009年12月8日火曜日

Ubuntuにpylibmcをインストールする手順

1. apt-getでlibeventをインストール
wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar xzvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure
make
sudo make install


2. apt-getでmemcachedをインストール
wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
tar xzvf memcached-1.4.4.tar.gz
cd memcached-1.4.4
./configure
make
sudo make install


3. apt-getでlibmemcachedをインストール
wget http://download.tangent.org/libmemcached-0.35.tar.gz
tar xzvf libmemcached-0.35.tar.gz
cd libmemcached-0.35
./configure
make
sudo make install


4. setup.pyでpylibmcをインストール
wget http://pypi.python.org/packages/source/p/pylibmc/pylibmc-0.9.2.tar.gz
tar xzvf pylibmc-0.9.2.tar.gz
cd pylibmc-0.9.2
python setup.py build
sudo python setup.py install

2009年10月23日金曜日

kindleのストラップを自作してみた


Amazon kindleを買った。本を見つけてから2クリックで購入でき、その場ですぐに読み始めることができるのがすばらしい。kindleは筐体がA5くらいのサイズで画面サイズはなかなかよい。しかし、この形状は座って読むのにはいいが、電車などで片手で読むには持ちづらくて落としてしまいそうだ。一緒にカバーを買えばよかったのかもしれないが、種類も少ないし別途購入すると送料が高くつく。そこで、片手でも持ちやすいようにkindleストラップを自作してみた。

作り方
材料は、クリップ1つと適当な長さのひもだけである。
LION バインダークリップ No.105を使った。
ひもの長さは20cmもあれば十分。
1.クリップの金具を取り外す。
2.取り外した金具をkindleの左側面にカバー取り付け用の2つの穴に取り付ける。
3.金具にひもを通して結ぶ。

たったこれだけで簡単に作れる。
ストラップなしでは左手の親指の付け根でしっかりと本体を支える必要があるが、ストラップをつけると軽く背面を支えるだけで安定する。
ひもだけでkindleを引っ張ったりするとクリップの金具が外れる可能性があるので注意してください(壊れても責任は取れないのであしからず)

2009年10月10日土曜日

エディタとインデント

Notepad++を5.5.1に更新した。ファイルの種類ごとにタブの文字数とスペース置換が選べるようになった。PythonやHaskellのようなインデント言語と非インデント言語での使い分けができるので便利。たまに更新してみるものだなぁ。

2009年9月27日日曜日

Scalaを書くのに使うエディタ比較

最近Scalaを始めた。まだ慣れないし、どのエディタを使うか悩んでいる。しかも仕事で使うWindowsに限る。

以下3つのエディタ(IDEも含む)でそれぞれサンプルコードを書いてみた感想。
・Eclipse 3.4
一応対応しているが、ちゃんと補完できない。コードハイライトのみなら使えなくはない。

・NetBeans 6.7.1
対応状況はよい。Eclipseに比べるとかなりいい線までいってる。コードハイライトも補完もそこそこ使える。その他のリファクタリングはまだまだ。

・Notepad++ 5.3.1
Notepad++ v5.3.1では残念ながら標準では対応していない。しかし、以下の方法でscalaのハイライトが可能になる。ただしWindowsのみ。
  1. http://lampsvn.epfl.ch/trac/scala/browser/scala-tool-support/trunk/src/notepad-plus/userDefineLang.xml をダウンロードしてくる。
  2. %APPDATA%\Nodepad++\ にxmlをコピーする。ちなみに %APPDATA% は C:\Documents and Settings\(ユーザー名)\Application Data\Notepad++ のこと。(WindowsインストールドライブがC以外の人はそのドライブ)
結論
Notepad++がいいね。やっぱりIDEは重いから、コード書くだけのテキストエディタに限る。NetBeansがもうちょっとがんばってくれたら乗り換えるかも。せめてscalatestのプラグインが出てくれれば・・・

2009年9月26日土曜日

Pylonsで自動的に管理ページを作成できるformalchemy

Pylonsでmodel/__init__.pyにモデル定義を記述するだけでCRUDを実行できます。
激しく便利。DjangoやRailsにはデフォルトでついているらしい。

easy_install formalchemy
で簡単にインストールできる。

2009年8月12日水曜日

WiMAX人柱

UQコミュニケーションズのTry WiMAXキャンペーンでゲートウェイつきのモデルを借りてみた。
ゲートウェイつきのは、自宅で有線LAN、無線LANを使って複数のPCをつなぐのに便利なモデルだ。
外ではノートPC、自宅ではデスクトップPCでWiMAXが使える。

早速自宅と会社で通信速度を測ってみた。
測定にはspeed.rbbtoday.comを使わせていただきました。
都内本郷三丁目付近での実測値
・会社(某ビル7F)
SPEED 2.5 (speed.rbbtoday.com)
計測日時 : 2009年8月11日火曜日 22時
下り(ISP→PC): 8.25Mbps
上り(PC→ISP): 864kbps
・自宅(某マンション2F)
SPEED 2.5 (speed.rbbtoday.com)
計測日時 : 2009年8月12日水曜日 02時
下り(ISP→PC): 4.53Mbps
上り(PC→ISP): 1.38Mbps

会社の方が測定位置が窓に近く、遮蔽物もないために(下りが)速いのかもしれない。
上りはそれほど差が出なかった。
最大負荷のユースケースとして、YouTubeとニコニコ動画とGyaoを同時に再生したが、途中で途切れることは無かった。
ADSLと比較すると、ページや動画の起動が体感速度で若干(1,2秒)遅い気がする。
まあ、それほど不都合な程度ではない。
自宅のADSLと電話回線を解約して、乗り換えることも検討している。
あとは数日間の安定性を試してみるだけ。

2009年7月8日水曜日

PylonsによるFlashのためのshift-jisエンコード

いまだに携帯向けWebサイトを作るにはshift-jisでエンコードしなければならない。
Flashからshift-jisでエンコード+URLエンコードされたクエリーを受け取って、さらにFlashにshift-jisでエンコード+URLエンコードしたクエリーを返すときに必要なこと。

・controllerとtemplateの先頭に# -*- coding: utf-8 -*-をつけること(shift-jisとは関係ないけど必須)
・environment.pyのconfig['pylons.app_globals'].mako_lookup = TemplateLookupにinput_encoding='shift-jis', output_encoding='shift-jis',を追加する
・controllerのメソッドにrequest.charset = 'shift-jis'とresponse.charset = 'shift-jis'をつける

エンコード関連は結構はまりやすいので注意。

2009年6月23日火曜日

smart.fmにだけ言及するのはやめることにしよう

これまではiKnow!マッシュアップアプリの開発日記という体裁を取っていた。
しかし、APIが変更されて機能が使えなくなったこともあるし、ネタもなくなってきたので、
smart.fmにだけ言及するのはやめることにする、と宣言してみる。
これからは、一般にソフトウェア開発について書いていければいいかなぁと。

2009年3月6日金曜日

現在サイトの機能が使えなくなっています

iKnow!がsmart fmに名前を変更したことで、APIのBASE URLも変更されたようです。このAPIの仕様変更に対応するまでの間ご不便をおかけしますが、ご理解いただけますようお願い申し上げます。

2009年2月10日火曜日

iknowlyrics.comが賢くなりました

昨日から本日にかけて機能を2つ追加した。
  1. 歌詞から単語を抽出する機能の翻訳を賢くした。以前は単語単体での対訳をiKnowから取得していたが、現在は文もクエリーとして送信しているので、品詞の推定がまともにできるようになった。以前は、just=馬上槍試合大会など、めったに使わないような対訳も出現していた・・・。
  2. ユーザーの作成したリストを20件ごとにページで区切った。「もっと見る」ボタンまたはユーザー名をクリックするとユーザーの作成したリストの一覧を見ることができる機能が以前から実装されていた。しかし、ユーザーの増加によって件数が増えて見づらくなってしまったので、ページで区切るようにした。
以前より便利になっているはずなので、ぜひご利用ください。

2009年2月9日月曜日

プログラミングコンテストの発表会の感想

第2回iKnowデベロッパーカンファレンス&第1回APIコンテスト発表会が2/2(月)渋谷のアゴスジャパンを会場にして催された。参加者の人数はスタッフを含めて40人くらい。第1回のカンファレンスと同様にピザやビールが用意されていてとても自由な感じ。iKnowのスタッフは多くが外国人でとても気さくな方ばかり。笑いが絶えない楽しいカンファレンスだった。

まず、iKnowのスタッフから新しい機能の紹介と研究内容などの発表。iKnowをただの英語の学習サイトから知識を集約させる情報の中心となる(例えばWikipediaのような)サイトへと進化させていきたいらしい。社内の開発者が自然言語解析だけでなくsemanticsなどの研究も進めているようだ。

次に、開発者によるAPIを使ったアプリの紹介。私もiknowlyrics.comを発表した。DSのアプリをマジコンで開発して、実演していた開発者もいた。こういう独創的な開発者と会えるからデベロッパーカンファレンスは楽しい。

最後に、発表会では3位から順に発表され、賞状をいただいた。大きなコンテストではなかったけれども、表彰していただけるのはやっぱりうれしい。

その後は、近くの飲み屋で懇親会が行われた。飲むこと自体が好きなので、イベントの内容に限らず飲む機会があればできるだけ参加するようにしている。開発者の方と飲みに行くのは非常に楽しい。特に外国の開発者から日本ではまだあまり知られていないWebサイトを教えてもらったりするのがものすごく貴重な機会となっている。

2009年2月5日木曜日

CNETに記事が載りました

セレゴ・ジャパン、「iKnow! API」を利用したアプリケーション開発コンテストの結果を発表

http://japan.cnet.com/news/media/story/0,2000056023,20387628,00.htm

3位に入賞することができました。サイトを使ってくれたみなさんのおかげです。ありがとうございました。

追記:技術評論社のサイトにも乗りました。
http://gihyo.jp/news/report/2009/02/0501

カンファレンスや発表会の様子については、また今度書きます。

2009年2月1日日曜日

開発の苦労話その1~単語リストの取得に時間がかかりすぎる

iknowlyrics.comには「単語リスト作成」という機能がある。
これは、歌詞で使われている単語を取得した後に、その単語がiKnow!に登録されているかどうかをチェックするというものだ。
開発当初は手続き的にiKnow!にクエリーを送信していたが、遅すぎて現実的に使えなかった。
理由は、100個近くある単語すべてに対して"search items"をリクエストしているから。
問題を解決するために、マルチスレッドにして分散して呼び出すようにした。
しかし、実際に動かしてみると、取得できる単語数が少ない上に、取得する度に単語数が変化していた。
どうやら同時リクエスト数がiKnow!側で制限されているような気がする。
そこで、1秒間に呼び出すスレッドの数を制限することで調整した。
というわけで、これ以上この機能を早くするのは、iKnow! APIの仕様が変わらないと難しいかもしれない。

2009年1月29日木曜日

プログラミングコンテスト表彰式の期日決定

2/2(月)に第2回iKnowデベロッパーコンテストとAPIプログラミングコンテストの表彰式が行われます。結果はどうなっているんだろう。入賞してるといいな。

2009年1月23日金曜日

審査中

iKnow!のコンテストにも応募して、数十人のユーザーに使っていただいているようです。いくつかご要望や不具合報告をいただいていますが、iKnow!の審査が終わるまでは公開サーバーを更新できない状態です。ローカルでは開発を続けていますので、ご意見お待ちしております。

2009年1月15日木曜日

不具合修正しました

iKnow! APIへのアクセスに時間がかかるアイテム追加などでエラーが出ていた部分のコードを修正した。どうやら遅すぎてwebfactionのゲートウェイでタイムアウトにされていたっぽい。マルチスレッドにしたら以前よりは早くなった。ついでに歌詞や動画が存在しない場合にもエラーで落ちないようにした。

2009年1月8日木曜日

なぜサイトに歌詞を直接表示させないのか

iknowlyrics.com は歌詞を使って英語を勉強するサイトなのに、現状では直接歌詞を表示していない。当初の計画では、歌詞と対訳をサイトに表示する仕組みを検討していた。しかし、無料でサービスを提供したいのにも関わらず、金を支払わないと(合法的に)歌詞を表示できないことがわかった。
以下の3つが原因である。

1. 歌詞の公的なデータベースがないこと
歌詞のデータを取得するには音楽出版社または歌詞のデータベースサービスを行っている業者と契約する必要がある。おそらく有料。そして、受信側のプリンタで印刷することができないストリーム形式でなければ、外国曲の歌詞を掲載してはいけない。

2. 著作権の問題
日本で外国曲の取り扱いをする場合でも、JASRACの管轄になるという協定が結ばれているらしい。外国曲の歌詞をホームページなどに掲載するには使用料をJASRACに支払う必要がある。無料で運営するのに、歌詞を掲載するだけ(しかもストリーム形式)でお金を取られるのは馬鹿げている。

3. 翻訳の権利
著作権法の27条で「著作者は、その著作物を翻訳し、編曲し、若しくは変形し、又は脚色し、映画化し、その他翻案する権利を専有する。」と定められている。つまり、翻訳文をサイトに掲載するには著作者(音楽出版社)の許可を取る必要がある。個人が楽曲ごとの出版社を調べて許可を取るのは容易ではない。

以上のことから、歌詞を自分のサイトに表示せずに、他の歌詞サービス(Lyrics.com)へリンクを貼る方式で運営して行く予定である。
もちろん、Lyrics.comへリンクを貼ることに対する許可はすでに取っている。