ブログを半移転(?)しました!

このブログで、株式会社wktkという会社を作るエントリを書きました。今のところペーパーカンパニーまっしぐらです。何か活動しなきゃいけないなー、と考え、とりあえずブログを作ってみました。 グニャラくんのwktk運営日記 はてなのほうが適してい…

ftraceとtrace-cmdを使って、Linux Kernelのイベントログを簡単に取得する

Linuxには、ftraceというトレーサがあります。 カーネル内の全関数タイムスタンプつき呼び出し履歴などを、それなりに高速に取得できます。 詳しくは、@ITにある以下の記事をどうぞ。 http://www.atmarkit.co.jp/flinux/rensai/watch2008/watch10a.html http…

インターネットを活用した、ひきこもりのための株式会社の創り方

この度、株式会社wktk(ワクテカ)という法人を設立いたしました。 30歳の誕生日に何か面白いコトをやろう!と思い立って、2週間くらいで法人設立にこぎつけました。あ、会社勤めは辞めてないし、辞めるつもりもないですよ、念のため。僕の勤め先は、そう…

どーしてもFTPサーバを立てなければいけない時に使う、使い捨てFTPサーバ

「最近ブログ書かないんですか?」と客先で聞かれることがあったので、生存確認の意味でブログを書いてみたいと思います。 FTPといえば、最近着目を浴びたプロトコルですね。FTPは、そもそもセキュアではないプロトコルです。追い撃ちをかけるように、FTPク…

はてなのようなキーワードリンクをRubyで付与する実例

hrjn: はてなとかニコニコ大百科のキーワードリンクってどうやってんのかなぁ。正規表現だと死んでしまうので、専用のパーサ作ったりしてんのかな。 http://twitter.com/hrjn/status/2926407314 ニコニコ大百科では、キーワードリンク専用のRubyモジュールを…

Web+DB press Vol.50にkey-valueストアの記事を書きました!

いまさらながら告知ですが、WEB+DB press Vol.50にて、key-valueストア入門という記事を執筆させていただきました。やっほーい!皆さんも、Software Design 2009年5月号が売り切れたくらいのイキオイで、100冊くらい買うといいと思います。WEB+DB PRESS Vol.…

ニコニコ大百科アラートでのメッセージキュー設計について。

お風呂でメモ。 要件 ニコニコ大百科で起こったイベントのうち、 ユーザが指定したものだけを通知するクライアントアプリケーションを作成したい。なお、すべてのイベントは漏れなくユーザに伝わることとし、 すべてのユーザに送られる情報は同一とする。 イ…

Windows@i386でのatomic 64bit store

Windows@i386でのatomic 64bit store。_InterlockedCompareExchange64を使ったほうがいいのかな?だいたい、ちゃんと動作してるのかしら…ツッコミ求む。 #include <windows.h> #include <stdio.h> #define int32_t INT32 #define uint32_t UINT32 #define int64_t INT64 #define </stdio.h></windows.h>…

【指令】Brianを捕獲せよ

ほぼ私信のようなエントリです。 やっと以下のバグが直って、個人的にはほっとしているところのlibmemcachedです。 http://lists.tangent.org/pipermail/libmemcached/2009-February/000621.html http://lists.tangent.org/pipermail/libmemcached/2009-Apri…

ニコニコ大百科のアーキテクチャ

Twitter mongrelP: @tasukuchan グニャラくーん、ニコ百の鯖がEeePCという話が持ち上がってますがただの監視用ですよね(しんぱいそうなめでみている) http://twitter.com/mongrelP/status/1524183917 ニコニコ大百科のアーキテクチャについてメモしておき…

groongaデータベースAPIについて概説

groongaにおいて、データベースを扱うためのAPI群について概説します。 groongaは、RDBMSでいうところのテーブル・カラムを扱うAPIを提供します。 テーブルは、内部的にハッシュテーブルもしくはパトリシアトライが基となっています。 それぞれの要素につい…

全文検索エンジンgroongaをテストリリースしました。

全文検索エンジンのgroongaをテストリリースしました。 groonga 本日開催された、key-value store勉強会で発表させていただきました。 今まで、Sennaには Tritonn経由で使った場合、MySQL側のインデックスとの併用が難しく、Senna本来のパフォーマンスが発揮…

ニコニコ動画データ解析発表会でニコニコ大百科の宣伝を行いました(発表資料もあるよ!)

昨日2009年1月25日に、GLOCOMで行われたニコニコ動画データ分析研究発表会で発表を行いました。 ニコニコ動画データ分析研究発表会 USTREAM経由を含め、聴講してくださった方ありがとうございました! 解析の妥当性などのツメが甘いのでジョーク枠とさせてい…

Skypeの会議通話をニコニコ生放送する方式を考える

Skypeの会議通話を、ニコニコ生放送(やその他インターネット配信)で配信する方法を手探りしているメモです。Windows/Mac両方での方法をメモしたいです。 Windowsではステレオミキサーを使う方法、 Macでは、Soundflowerというソフトを使う方法がよく紹介さ…

ThinkIT 「徹底比較!検索エンジン」についてツッコミ

Sennaの場合には、文書数を166,512より多くしようとすると、メモリ確保の失敗が原因のsen_memory_exhaustedというエラーが発生し、インデックスに文書を追加できなくなりました。 http://thinkit.jp/article/744/1/ しっかりと反応しておきます。 対象文書サ…

SennaでWAVE DASH(〜)とFULLWIDTH TILDE(〜)を同一視する

Sennaでは、UTF-8の文字列を正規化しています。 たとえば、「?」は「ミリバール」に、「AbRACADAbra」は「abracadabra」に、「ハラヘッタZO」は「ハラヘッタZO」に変換されます。 これで、文字のゆれに対応した検索ができるわけです。 さて、某サービスでWAVE D…

libxml-rubyでメモリリークしている気がする

libxml-rubyでメモリ使用量がじわじわと増えていく。 以下のようなコード。使い方の間違いとかについてツッコミ求む。 require 'xml/libxml' doc = XML::Document.new() doc.root = XML::Node.new('root') root = doc.root root << child = XML::Node.new('c…

memcachedを時刻巻き戻りに強くしてみる

昨日のダサい失敗エントリが注目を集めているようで恥ずかしいお… 今後ダサい失敗で困らないために、memcachedのパッチを書いてみようと思った。 時間が巻き戻った瞬間に障害が出るのはしょうがないけど、 巻き戻ったあとにその影響が残り続けるのは嬉しくな…

memcachedを愚弄する1つの方法

某サービスでセッション情報を保持するために利用している memcached(repcached)に障害が起こった。 ちゃんと追えていないけど、おそらく以下のような原因。他の人がハマらないように。 障害発生まで memcached(repcached)の中には揮発したらそれなりにマズ…

Subversionクライアントだけをソースからインストールする(清貧な感じで)

複数台へのデプロイをするときに、 各マシンでsvn updateをして、 最新版のファイルをSubversionのリポジトリから入手する手法があります。 でも、これって各マシンにSubversionを入れないといけないんだよね。 portsも入れていない(わざとだけど)FreeBSD…

グッドデザイン賞を受賞しました。

未来検索ブラジルが検索エンジン開発において(!)グッドデザイン賞を受賞したようです。 http://www.g-mark.org/search/Detail?id=34960&sheet=outline&lang=ja みんなも、オープンソース開発をしてグッドデザイン賞をもらおう! あ、あとブラジルはIT技術者…

Rubyでeventmachineを使って高速にメールを送る

またまた某サービスで、今度はメールを送るという要件が発生。 しかも、ユーザごとに異なった内容を送るというもの。 テンプレートはErubisを使うとして、 メール送信はどのライブラリを使おう。tmailかなぁ? とGoogle検索すると、eventmachineってものがあ…

Senna 2.0の展望と、Tritonnで問題が発生している人向け情報

Senna 2.0βのリリースが見えてきました。 去年の夏に出すと言っていましたが、紆余曲折あっての現状です。 ライバルのTokyo Cabinet/Tokyo Dystopiaについては、 ストレージと全文検索インデックスを分割する方向性です。 mixi engineer blog 今までのSenna…

ニコニコ大百科開発ブログはじめました。

ニコニコ大百科の開発関連についてはブログ分けました! ニコニコ大百科開発日記 EeePCをサーバとして使い倒す方法や、 libeventのevhttpとvarnishの組み合わせ、 repcachedを使う上でlibmemcachedに当てなければいけないパッチ、 Rubyのlibmemcached bindin…

[xml][libxml2][c]XMLをHTTPSで取得して、XPathで指定された中身をC言語で取り出す方法

某サービスのAPI呼び出しについて、 API呼び出しをSSL化する UserAgentに特定の文字列を入れる という新しい要件が発生した。 というわけで、 [xml][libxml2][c]XMLをHTTPで取得して、XPathで指定された中身をC言語で取り出す方法 - グニャラくんのグニャグ…

MIDIファイルをはてなのメロディ記法やピコカキコに変換する(mid2flmml)

ニコニコ大百科でMMLで音楽を投稿できるサービスを始めたはいいが、 MMLって難しいですよねー。 というわけで、MIDIからMMLへの変換をするソフトを作ってみた。 mid2mmlというソフトウェアがあるが、やはりFlMMLとは文法がちょっと違う。 あずねっと mid2mml…

ピコカキコ機能リリース。

ニコニコ大百科でMMLでメロディを書き込める「ピコカキコ」機能をリリースしました。 JASRACと音楽著作物利用許諾についての契約を結んでいるので、 JASRAC管理楽曲についても投稿可能です。 はてなのMML記法(メロディ再生記法)と互換性があるので、 今まで…

SennaのTracが公開されております。

そういえば(安定剤)、lighttpのTracサイトで思い出しましたが、 SennaのTracが稼動し始めました。 まだ情報が少ないですが、Ticketを切って開発を進めていこうと思っています。 宜しくお願いいたします。 SennaのTrac ちなみに、 以前から公開しているニコ…

lighttpdでモジュールを書く際に気をつけること

lighttpdのモジュールを書くことを覚えてしまったせいで、 ついついlighttpdのモジュールで仕事を進めてしまうクセがつきました。 「なんでもおもっど」状態です。 全パスに対するアクセス数をTokyoCabinetに記録したり、 特定のパスに対してはmemcachedから…

検索エンジンの歴史的意義と未来

弊社森(オラの上司)が大阪市立大学で発表をしてきました。 発表資料は以下からどぞー。 検索エンジンの歴史的意義と未来 発表の前半は、コミュニケーション技術の歴史を踏まえ、 多対1のコミュニケーション技術として検索エンジンを捉える試みです。 発表…