bananajour を Ubuntu hardy 上で動作させる
bananajour は乱立しがちな git レポジトリを集中管理しよう、というプログラムです.
まず、gemcutter というホスティングサービスを使っているので、これを利用するように gem の設定ファイルを書き換える必要があります.
$ gem source -a http://gemcutter.org
その上で、gem 経由で bananajour をインストールします.
$ gem install bananajour
ここまでは良いのですが、 bananajour の利用しているパッケージのうちの1つ、 dnssd が Ubuntu hardy 上でコンパイルが通りませんでした. 原因は以下通りです.
http://groups.google.com/group/bananajour/browse_thread/thread/5f0153ca765d0e03
結局、dns_sd.h を含んでいるパッケージ libavahi-compat-libdnssd-dev をインストールする必要があります.
aptitude install libavahi-compat-libdnssd-dev
$ gem install bananajour
あとは、bananajourのgithubにある指示通りに操作を進めれば、無事動作させることができます.
Pragger用Wikiが誕生
ドキュメントを整備したい!
http://d.hatena.ne.jp/big-eyed-hamster/20090919/1253320767
という声が届いたのか、PraggerのWikiが誕生しました.
http://ikejima.org/wiki/pragger/
時間があるときに書いていこうと思います.
RSS::Maker.make に失敗する =>設定ミスと判明
2009/09/20 追記
完全に設定ミスでした><
失礼しました.
なんぞこれ>< 何か設定を忘れているのかな??
config.yaml - module: Feed::mixi::get_echo_list config: id: xxxxxxx - module: RSS::save config: filename: output.rdf title: mixi echo
$ ./pragger.yaml /usr/local/ruby/lib/ruby/1.8/rss/maker/1.0.rb:56:in `setup_items': required variables of maker are not set: items (RSS::NotSetError) from /usr/local/ruby/lib/ruby/1.8/rss/maker/1.0.rb:38:in `to_feed' from /usr/local/ruby/lib/ruby/1.8/rss/maker/base.rb:215:in `_set_default_values' from /usr/local/ruby/lib/ruby/1.8/rss/maker/base.rb:351:in `_set_default_values' from /usr/local/ruby/lib/ruby/1.8/rss/maker/base.rb:208:in `set_default_values' from /usr/local/ruby/lib/ruby/1.8/rss/maker/1.0.rb:30:in `to_feed' from /usr/local/ruby/lib/ruby/1.8/rss/maker/base.rb:370:in `setup_channel' from /usr/local/ruby/lib/ruby/1.8/rss/maker/1.0.rb:21:in `setup_elements' from /usr/local/ruby/lib/ruby/1.8/rss/maker/base.rb:406:in `to_feed' from /usr/local/ruby/lib/ruby/1.8/rss/maker/base.rb:397:in `make' from /usr/local/ruby/lib/ruby/1.8/rss/maker/base.rb:361:in `make' from /usr/local/ruby/lib/ruby/1.8/rss/maker.rb:11:in `make' from plugin/RSS/save.rb:20:in `save' from pragger.rb:27:in `send' from pragger.rb:27:in `eval_pragger_find_pragger_backup' from pragger.rb:13:in `inject' from pragger.rb:26:in `each' from pragger.rb:26:in `inject' from pragger.rb:26:in `eval_pragger_find_pragger_backup' from (eval):9:in `eval_pragger_loggnizer_backup' from (eval):9:in `eval_pragger' from pragger.rb:4
mixiボイス用のPraggerプラグインを作ってみた
追記:「本家統合希望」と書いておくと、マージされるらしいので、統合希望にしておきますw
twitterからmixiボイスにマルチポストするRubyスクリプト書いた
それ、Praggerでできるよ!ってなわけで、Praggerのmixiエコーのソースを元にmixiボイスに対応させてみました.
## config.yaml sample ## - module: const_list ## config: ## - test_dayo ## - module: Publish::mixi::voice ## ## regist.yaml sample ## mixi: ## username: hogehoge@hugahuga.aaa ## password: xxxxxx begin require 'kconv' require 'rubygems' require 'mechanize' require 'logger' rescue LoadError end def voice( config, data ) username = $reg['mixi']['username'] password = $reg['mixi']['password'] # login. agent = WWW::Mechanize.new page = agent.get( 'http://mixi.jp/' ) form = page.forms[0] form.fields.find { |f| f.name == 'email' }.value = username form.fields.find { |f| f.name == 'password' }.value = password form.fields.find { |f| f.name == 'next_url' }.value = "/home.pl" page = agent.submit( form, form.buttons.first ) # move to mixi echo page, and... page = agent.get( 'http://mixi.jp/recent_echo.pl' ) form = page.forms[1] form.fields.last.value = data.to_s.toutf8 # post it! agent.submit( form,form.buttons.first ) end
get_echoとget_echo_listも試してみたかったのですが、RSS::Maker がエラーをはかれたのでちょっと放置. 一番苦労したのは regist.yaml の使い方を調べたことだったりするw ドキュメントを整備したい!
カーネルのコンパイルなしにカーネルモジュールをコンパイルする環境を作る
Linuxカーネル用のモジュールをコンパイルする際には、通常 /lib/modules/`uname -r`/build をカーネルのソースディレクトリとして指定し、それを make コマンドに引数として渡す必要があります. カーネルモジュールは、カーネル側の保持しているシンボルテーブルを知っている必要があるからです. シンボルテーブルは linux-src/Modules.symver に保持されています. また、このファイルの他にも、いくつかカーネルモジュール用に必要なファイルが存在します.
ところが、kernel.orgから直接ソースコードを落としてくる場合、上記のカーネルモジュールのコンパイルに必要なファイルが存在しません. これらはコンパイル時に動的に決定するからです. かといって、毎回ソースからカーネル本体をコンパイルするのも時間がかかってしょうがないです. こういったときには、以下のようなコマンドを使用します:
$ cd kernel-src $ make modules_prepare
make modules_prepare は、先述の「カーネルモジュールをコンパイルに必要なファイル」のみを吐き出すことができます. このあと、kernel-src へのパスをカーネルモジュール側の Makefile に渡すことで、カーネルをコンパイルすることなく、カーネルモジュールをコンパイルすることができます.
Writing kernel modules in Haskell
LWN.netで、大変頭のおかしいプロジェクトが紹介されていました(いい意味で). Writing kernel modules in Haskellというもので、カーネルモジュールのインターフェースとGHCを合わせることで、Haskellを用いてカーネルモジュールを書くことができるんだとか. つまり、これってカーネル上でガベッジコレクタが走り、メモリ管理を行ってくれるということですよね... 先述の記事には、型安全なカーネルモジュールをかけるぜ、なんてことも書いてあります. 私はCで十分ですが、もし試したい方がいたら試してみると良いかもしれません. 導入方法は、こちらのページに書いてあります.
Praggerのレポジトリ、復活
某停電で死んだと思われる Ruby 実装の Plagger こと Pragger のレポジトリですが、 復活したみたいです!
http://dev.ikejima.org/src/svn/pragger/
わーい!