サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPad Air
cheesy.dip.jp
TAKESAKOさんにお誘い頂き、shibuya.pmでLux IOについて話してきました。 Perlとはほとんど関係無いですが、NoSQL特集ということで呼んで頂きました。 以前のKey-Value Store 勉強会よりも少しだけ設計方針などを交えましたが、 あんまり変わらない資料で恐縮です。一応、以下に載せておきます。 Lux IO - Shibuyapm View more documents from mogwaing. NoSQL vs NoKVS みたいなのもテーマとしてあったらしく、発表の後半の奥一穂さんなどは、NoSQLではなくて、やっぱりリレーショナルモデルでACID性があって安定していてそこそこ高速なオープンソースのRDBMSをスケールさせて使いたいとのことで、InclineとPacificという新しいプロダクトの紹介をされていました。 KVSの基盤となるD
技術評論社から声を掛けて頂き、gihyo.jpにて「検索エンジンはいかにして動くのか?」というタイトルで連載を行うことになりました。 検索エンジンをシステムとしての観点から解説していきます。 非常にやさしく書いてほしいとのことなので、初回数回の内容は非常に簡単だと思います。 ただ、後半にいくつにつれて少しだけ高度な話題や最近の話題にも触れる予定なので、基本的なことがわかっている方は、7,8回目ぐらいから読んで頂けると多少はためになると思います。 連載は非常にスローなペースでやらせてもらう予定で回数も特に決まっていないので、 「この話題に触れてほしい」ということがありましたら是非ご連絡ください。 また、「ここがわかりずらい」「ここが間違っている」なども大歓迎です。このブログなどで、補足・修正できればと思います。 You’re currently reading “ 連載のお知らせ
2008年上期の未踏IT人材発掘・育成事業において、「スーパークリエータ」に認定されました。 http://www.ipa.go.jp/about/press/20090518.html 今までこのような賞を頂いたことはないので、非常にうれしく思います。それもこれも、石川PMや管理組織のメルコホールディングスの方々、また、会社の方々、あとは妻の支えがあってのことです。みなさまには本当に感謝しております。 石川PMに至っては、2週間に1回のペースで顔を合わせて進捗報告ミーティングを行い、方向性や技術的なアドバイスをたくさん頂きました。こんなに頻繁にミーティングを行ったプロジェクトは他に無いんじゃないでしょうか。石川PMのもとでやってこれて本当に良かったと思います。 ただ、自分が「スーパー」でないことは自分が一番よくわかっています。 これからがんばったら「スーパー」になれるかもよ、というこ
年度が変わったので?、近況報告です。 3月の上旬で未踏が終わりました。 7ヶ月半という短いような長いような期間でしたが、かなり得たものは大きかったように思います。 できた成果物は、今まで通りLuxのページに公開しています。大きいところは未踏で開発させてもらい結構良い結果を出せましたが、まだまだ機能的に足りないところや不安定な部分があり、やるべきことは山積みです。 もちろん、興味がある人には使ってもらえる状態ですが、使用例をたくさん書くなり、ドキュメントを整備するなりしないとですね。結構作りっぱなしにしがちな性格なので、この辺は直していこうと思っています。 どんなオープンソースソフトウェアでもそうですが、ちゃんと改良、メンテナンスしていくことが、本当に大事であり、かつ、大変であると既に感じています。割ける時間はこれまでよりも少なくなってしまいますが、今まで通り地道にやっていって、徐々
Key-Value Store 勉強会でLux IOについて話してきました。 Lux IOの特徴や使い道について簡単に紹介してみました。 About Lux IO View more presentations from mogwaing. 他の登壇者がすごすぎて、本当に恐縮しちゃいましたが、何事もなく普通に終わってよかったです。 勉強会自体は本当に濃い内容で、聞くのでいっぱいで一切メモをとってないので、全体の内容についてはこっちの完璧なメモ(Key-Value Store勉強会に行ってきました )を参照ください。 企画や当日の司会をしてくれたPFI太田さん、会場や食べ物を手配してくれた一井さん、お疲れ様でした&ありがとうございました。
Lux IOという高速なデータベースマネージャ(DBM)を公開しました。 元々は、keyに対して長く拡張していくvalueを保持できるように、Luxの内部ストレージエンジンとして開発を始めましたが、一般的なDBMのような使い方においても、非常に高速に動作します。(詳しくは、sourceforgeのページのベンチマークを参照ください。) 一般的なDBMでは、ハッシュをサポートしていますが、Lux IOではB+-treeを配列のインデックスのみをサポートしています。 ドキュメントは全く書けていなく恐縮ですが、ソースコードのtestディレクトリにたくさんのテストプログラムがあるので、それを参考にしてみてください。 ぜひ、使ってみて、感想、バグ報告を頂ければと思います。 You’re currently reading “ Lux IO - Yet Another Fast Databas
たつをさんが主催するIIR輪講の第7回に参加してきました。 (今回が初参加。誘って頂きありがとうございます!) 最初に、恒例(らしい)のnaoyaさんからの前回の復習がありました。 「転置インデックスの圧縮は、Termを保存する辞書と、Termの出現位置を保存するPostingの両方が圧縮対象で、それぞれ・・・(省略)などの方法があります」という話で、すごいわかりやすい説明だったので、これだけでもとてもためになりました。拙作のLuxではインデックスの圧縮はまだ実装していないので、5章を見ていろいろやってみようと思います。postingsに関しては、variable byte encodedが圧縮率や実装のしやすさの面でよさそうな感じがしました。 その後、本題の6章の「Scoring, term weighting and the vector space model」について担当の能登
ゴールデンウィークに少し時間があったので、共有メモリを扱うlibmapというC++のテンプレートライブラリを作りました。 今のところ、値が固定長の永続的な配列を構築する部分(LibMap::Array - 配列を扱うDBMみたいなもの)しかできていません。LibMap::Arrayは書き込むindexに応じて領域が自動的に拡張されるので、前もってサイズを指定する必要はありません。 使い方はソースと下のサンプルコードを見てください。結構適当に作ってあまりテストしてないのでバグがあると思われます。 libmap.h (ライセンスはLGPL) サンプルコード 以下ソースコードを参照ください。 put.cpp #include "libmap.h" #include int main(int argc, char *argv[]) { if (argc != 3) { std::cerr a
本日、全文検索エンジンLuxを公開しました。 昨年の3月ぐらいから、土日の空いた時間を使ってだらだら作っていたのですが、完璧にしてから公開しようとすると、いつまで経っても公開できないので、晒すことにしました。なので、機能的に足りない部分がたくさんあります。 特徴としては、以下のような感じです。 C++で記述されている シンプル 高速に動作 そこそこ拡張性が高い シンプルな転置インデックス形式の検索エンジンです。今のところ形態素でしかインデックスを作れませんが、N-Gramはすぐに対応しようと思います。また、APIが若干おかしかったり、手抜き部分が沢山あるので、今後にご期待ください。(version 1.0 ぐらいから自信をもって薦められるかも) ドキュメントが全くないので、これからちょこちょこ書いていこうかと思いますが、マニアックな方はぜひ使ってみて、ご意見・ご感想を頂ければと思います。ダ
動画検索SAGURIとAWS(Amazon Web Services)を使ったマッシュアップサイト 「MUSIC DIRECTORY」 を作ってみた。 やってることは単純で、 バンド名をクリックすると、バンド名をSAGURIで検索した結果と、Amazonで検索した結果を表示してるだけです。 特徴としては、すべてJavascriptで動いていて、サーバーサイドのコードはいっさいありません。 「人気動画」と「新着動画」はSAGURIの検索結果RSS feedをGoogle Ajax Feed APIで処理し、Amazonはバンド名をAWSで検索して取得したXMLをXSLTでJSONに変換し、ページのcallback関数を呼ぶようなコードもJSONに入れておき、データをjsで受け取ります。 (この手法はma.laさんのAmazon最速検索を参考にして、簡略化したものです。なのでamazo
背景 最近、前職の友達や後輩、またその後輩の会社の方々などで「Linuxカーネル勉強会」なるものをはじめました。勉強会といっても読書会に近く、「Linuxカーネル解読室」という本を使っての勉強会で、この前早速第1回があり、第1章の「プロセススケジューリング」について行いました。 みんなで議論などをして、書かれてることは大体理解できましたが、やはり前提知識がたくさん必要などの理由から不明な所が何点かあったので、その一つについて調べてみました。 (以降の説明はlinux kernel 2.6.15(x86)を元にしています。) わからなかった事 そのわからなかった事について説明します。 以下は、Linuxカーネルが行うコンテキススイッチの部分の核となるswitch_to というマクロです。 include/asm-i386/system.h #define switch_to(prev,n
友達はほとんどいなかったが、Twitterオフ会に行ってきた。 アイコン写真で作ったカードをもらっちゃいました。 友達がmooのminicardsを配っててうらやましかったので、返ってきてすぐオーダーした。 色んな人とお話できて楽しかった。次回も行こうかな。disney movie sexgay movies hotmovies mature sexmovies hypnoporn movies indianmovie nudityadult free moviesfree cumshots movies Map You’re currently reading “ Twitterオフ会に行ってきた ,” an entry on no hacking, no life Published: 6.16.07 / 12am Category: Uncategorize
mod_perlのアプリケーションを作る時に、Configモジュールか何かにハッシュとかを書いて、モジュール自体をアプリの設定ファイル代わりにしていたが、やっぱり設定ファイルは別管理にしたいと思っていたので、ちょっと考えてみた。 startup.plはapacheの親プロセス起動時に一回だけ実行され、そこでuseされるモジュールのBEGINブロックはそのタイミングで実行されるので、そこでLoad処理をしてあげれば、apache起動時にしか設定ファイル読み込みのオーバーヘッドがかからず、読み込んだ内容を子プロセス間で共有できていいと思った。 つまり、以下のようなパッケージをstartup.plでuseするようにして、アプリケーションではパッケージ変数$confを参照するようします。 package Hoge::Config; use strict; use warnings; use YAM
Flex 2 SDKでYouTubeプレイヤーを作る - インストール 〜 設定 〜 簡単なアプリケーションの開発 May 16, 2007 Posted by butcher in : Flex, ActionScript , trackback 最近熱いFlex 2を始めてみたので、入門してみたログをまとめてみました。 そもそもflex 2とはflash作成のためのフレームワークです。 adobeのサイトでは Adobe® Flex™ 2は、Adobe Flash®をベースにしたリッチインターネットアプリケーションのためのフレームワークです。Flex 2を利用すれば、あらゆるプラットフォームのユーザに対応できる、見ばえの良いスケーラブルなアプリケーションが効率良く開発できます。 と説明されています。 Flexでの開発方法は今までのFlashコンテンツのそれとは異なっています。
Cで書かれたライブラリでは、内部でmallocしてヒープに領域を確保してそのポインタを返すというようなAPIも存在する。もちろんそういう場合はライブラリの使用者が領域を解放する責任があるが、それだとメモリリークにつながりやすいコードを生み出してしまう。 (追記 : 下にも書いたが、ライブラリ内で解放してくれるのが一番いいが、そうでない場合も結構あるので、そういう場合の話です。) C からそういうライブラリを使う時は、APIをラップしてboostのスマートポインタshared_ptrを使うようにすれば、メモリリークのデバッグに費やす時間を減らせる。 shared_ptrでは独自の後始末関数(custom deleter)を指定できるので、それを使ってmallocした領域をfreeしようということです。(scoped_ptrやauto_ptrではcustom deleterを指定できないので
Google AJAX Feed API が出たので試してみた。 Google AJAX Feed APIとは、googleから提供されている、RSS/Atomフィードを取得するAPI(javascriptライブラリ)です。 導入方法も含め詳しくはここやこの辺を見てください。要するに、XMLHttpRequestのクロスドメイン制約で今まで出来なかった外部ドメインとのやり取りがこれを使うと(RSS/Atomに限るが)できてしまうということ。(Googleがプロキシとなって結果を取得してくれる) これを使って、自分のブログ(no hacking, no lifeとtutorialog)の中で、はてぶで多くブックマークされてる人気エントリの上位をサイドバーに出してみた。 取得するRSSはこれです。 http://b.hatena.ne.jp/entrylist?url=http://chees
非同期のメッセージングができるソフトウェアを探してたら、PerlでPOE::Component::MessageQueueというモジュールにあったので使ってみた。検索してもcpan以外のドキュメントが見当たらなかったので、ソース読んだりで使い方を調べてみたので簡単に紹介します。間違ってたり、もっと正しい使い方があったらコメント頂けると助かります。 概要 POE::Component::MessageQueueは、メッセージキューをPOE上に構築して非同期メッセージングを実現したperlモジュールであり、キューへの入出力はメッセージングに特化した(TCP上の)STOMPというプロトコルで行います。詳しくはcpanを参照してください。STOMPについては、この辺に書いてあります。 インストール インストールはこれだけ。 sudo perl -MCPAN -e 'install POE::Com
仮想デバイスドライバを利用したプロセス間通信について September 11, 2006 Posted by butcher in : C, Operating System , trackback 仮想デバイスドライバを利用したプロセス間通信について説明します。といってもよくわからないと思うので、ちゃんと説明します。 Unixでプロセス間通信というと、ソケットを使ったもの、パイプを使ったもの、共有メモリを使ったもの等がありますが、それぞれ長所・短所があると思います。 ものすごく簡単に言うと、 ソケットでは、 複数マシン間での通信が可能 通信処理のオーバーヘッドが大きい(コネクション開始・終了処理も含め) パイプでは、 ソケットより通信処理のオーバーヘッドが少ない 親子関係のプロセスに限定される 共有メモリでは、 シンプルで高速 書き込み・読み取りの同期をとるのが難しい 等が
Firefoxの2.0系はSQLiteを内臓してるらしいというのを偶然発見し、XPCOMを使ってローカルのSQLiteデータベースから画像データなどのバイナリをとってきてブラウザに表示したら面白いかもと思ったのでやってみた。 ちなみにXPCOM とは、mozillaのソフトウェアなどに実装されている実装言語やプラットフォームに依存しない、共通インターフェースを持つライブラリです。 例えば、firefoxのaddonを作る上で、プラットフォームの機能を利用する際に使います。OSが管理するローカルリソースにアクセスしたりとほとんど何でもできてしまいます。XPCOM自体はC で書かれていますが、JavaScriptバインディングもあるので、addonを作る際は、見た目はXULで作り、処理はJavaScriptとXPCOM(JavaScript経由)で書くのが一般的です。 この仕組みの概念図とし
動的クラスロードによる簡易プラグインアーキテクチャーについて January 5, 2007 Posted by butcher in : Uncategorized, C, C++ , trackback 最近のソフトウェアではプラグインアーキテクチャーが広く普及しています。 今回は、プラグインアーキテクチャーをC++によって実現する方法について説明します。 そもそもプラグインアーキテクチャーとは、ApacheやEclipse、Firefox等のように、プラグイン(モジュール)によって機能の拡張を(比較的簡単に)行える仕組みのことを言います。一般的には、本体のコードを修正せずに機能の拡張が行えるので、それによりソフトウェアの拡張性が高くすることができます。 ここでは、ApacheのようにDSOを追加することによって機能を拡張する仕組みをC++で作ろうと思います。 実際に作るもの
Catalyst - 簡単なアプリケーションの開発 April 30, 2006 Posted by butcher in : Perl , trackback PerlのMVCフレームワークCatalystについて紹介します。 Catalystについてはこちらを参照ください。 今回は、インストールから、簡単なDBアプリケーションの開発、mod_perl上での実行の手順を紹介します。 開発環境は、FedoraCore4, perl v5.8.6, Apache 2.0.55, mod_perl 2.0.2, mysq l 4.1.18 です。 まずはインストール。 インストールは非常に簡単で、”Task::Catalyst”モジュールを入れるだけです。(依存関係のある他のモジュールもインストールされます。) $ perl -MCPAN -e 'install Task::Cat
pukiwiki2trac 会社でプロジェクト管理ソフトとしてtracを使い出した。そこで今までのpukiwikiドキュメントをtracのwikiに移行しなきゃということで、pukiwikiのsyntaxをtrac用に変更するスクリプトを書いてみた。5分ぐらいで書いた割にはちゃんと動いていて使えそう。(変換してくれるのは極一部だけだけど。。) pukiwiki2trac.plarrington adrian michiganmotorola ringtone free code 120edownload ringtone kyocera 2235sanyo 5300 polyphonic free ringtoneringtones alias free930 samsung create 29 seconds ringtonesringtones v265 motorola allte
[DBIx::Class] update failed in resultset iteration loop. SQLiteをDBIx::Classから使って、検索のリザルトセットを繰り返し取得してるループの中でそのテーブルに対してupdateを行うと、 DBD::SQLite::st execute failed: database table is locked(1) at dbdimp.c と言われてしまう。 例えばこんなコード。 while ( my $result = $rs->next ) { $result->property("new_property"); $result->update; } 同じ問題に遭遇した人に対して、DBIx::Classの作者のmattさんがこのように説明してるけど、この答えってなんか中途半端な気がする。SQLiteは他のクライアント/サー
Setting busy_timeout in SQLite SQLiteは書き込み、読み込みの際にデータベース全体をロックするので、read/writeが競合するときは、あとからアクセスした方がロックの解除を待つ必要がある。 デフォルトではbusy_timeoutというパラメータに最大30秒待つように設定してあるが、30秒だとインデックスが効かないようなselectクエリを実行すると超えてしまい、次に書き込もうとしてるプロセスがSQLITE_BUSYを受け取って終了してしまう。 Perlから設定する場合は、DBD::SQLiteのAPIでbusy_timeoutを変更できる。DBIx::Classを使う場合は、 # 最大500秒待つように設定 $schema->storage->dbh->func(500000, 'busy_timeout'); のようにしたらうまくいく。 (DB
Tracのwikiに書き込むときに、vimで一回書いてからそれをテキストエリアにコピペする、ということを最近まで繰り返してきたが、もうちょっと効率的にできると思って探してみたらこんなのがありました。 ViewSourceWith テキストエリア等での編集を外部エディタでできちゃうFirefox extensionです。もちろん、保存の度に同期をとってテキストエリアに変更を反映してくれます。これで、使用する外部エディタをvimにすれば相当快適になる さらにVimでTrac wikiのsyntax highlightingを試してみた。 Syntax highlighting for editing MoinMoin contents with vim 上のはMoinMoin wikiでの話だが、Trac wikiもsyntaxが同じで使えるらしいので使ってみた。Windowsでvimが入って
会社でプロジェクト管理ソフトとしてtracを使い出した。そこで今までのpukiwikiドキュメントをtracのwikiに移行しなきゃということで、pukiwikiのsyntaxをtrac用に変更するスクリプトを書いてみた。5分ぐらいで書いた割にはちゃんと動いていて使えそう。(変換してくれるのは極一部だけだけど。。) pukiwiki2trac.plarrington adrian michiganmotorola ringtone free code 120edownload ringtone kyocera 2235sanyo 5300 polyphonic free ringtoneringtones alias free930 samsung create 29 seconds ringtonesringtones v265 motorola alltel foraudiovox a
Catalyst - フレームワークのオーバーヘッドを測る May 21, 2006 Posted by butcher in : Perl , trackback 前回紹介したPerlのフレームワークCatalystのオーバーヘッドを測ってみたいと思います。 一般的に、フレームワークを使うと、主に機能のロジック部分を作ればよく、その他の連携部分等は内部で色々やってくれるので、その分フレームワークのオーバーヘッドが余分にかかってしまいます。そこで、前回作ったTinyURLと同じ機能を持つアプリケーションをmod_perlで作り、前回のものと比較することにより、Catalystのオーバーヘッドを測定をしようと思います。 環境は前回と全く同じなので、詳しくはこちらを参照ください。 まずは画面です。前回と同様に、URLを入力する画面と、入力したURLのショートURLを表示する画面の2画面
Posted by butcher in : Flex, ActionScript , 1 comment so far 最近熱いFlex 2を始めてみたので、入門してみたログをまとめてみました。 そもそもflex 2とはflash作成のためのフレームワークです。 adobeのサイトでは Adobe® Flex™ 2は、Adobe Flash®をベースにしたリッチインターネットアプリケーションのためのフレームワークです。Flex 2を利用すれば、あらゆるプラットフォームのユーザに対応できる、見ばえの良いスケーラブルなアプリケーションが効率良く開発できます。 と説明されています。 Flexでの開発方法は今までのFlashコンテンツのそれとは異なっています。 タイムライン上にグラフィックを描画しアニメーションを作るというデザイナ向けの方法とは違い、レイアウトをXML(mxml)で、動作
次のページ
このページを最初にブックマークしてみませんか?
『http://cheesy.dip.jp/』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く