Ruby言語やLinuxのネタが多いです。
October 03, 2005 [おもひで]
■ [Ruby] rcairo on Win32
ちょっと時間があったのでRuby-GNOME2をWin32(MSVCR71)+GTK+-2.8, Cairo-1.0.0でコンパイルしてみようと思い立った。
結果としてはなんとかなったんだけど...。rcairoはちょっと面倒くさかった。今後のために一応メモっておくこととする。
まず、GTK+-2.8.0のWin32バイナリをここから持ってきて今までのdll等を上書き(オレの場合はC:\GTK以下を強引に置き換えした)。
後で気づいたんだけど、libpng13.dllが無いよと言われるので、こちらは、DLL-files.comから頂いてきて、これもC:\GTK\bin\配下にコピーしてみた。
んでもって、rcairoはCVS版を取得してコンパイル....、しようとするが、extconf.rbが貧弱なのでそのままではうまくコンパイルできない。
今回の目標はとりあえず動くことを確認するだけなので、Ruby/GdkPixbufのextconf.rbをコピって来て使った。やっぱりpkg-config使ってたりするとmkmf-gnome2.rbを呼び出しちゃうのが楽だ。
■ その後、Ruby-GNOME2側をコンパイル。Ruby/GLibで一カ所リンクできないシンボルが。g_listenvが無いって言われたんだっけかな。とりあえず、その呼び出しはコメントアウト(^^;)。そんなこんなで他のはだいたいうまくいったんだけど、Ruby/GTKをコンパイルするとrcairoのリンクに失敗する。これは、cairo.defがきちんと定義されて無いからっぽい。Ruby/GTK側から参照するシンボルを定義して、Makefileを直接編集してcairo.defを読むようにしてコンパイル。あ、そうそう、ヘッダファイルで__declspec(dllexport), __declspec(dllimport)を見分けるのも忘れないようにしないと、ということでRuby/Pangoあたりからコピペ。
あとは、add_depend_package("cairo", ...)をRuby/GTKのextconf.rbに追加したりしたけど、どうもcairo.libを読めない。なので、とりあえず、Makefileで直接cairo.libの在処を記述したらうまくリンクできた。
これで、Ruby/GTKの新しいサンプルsample/misc/rgtk+cairo.rbも無事動いた。
■ しかし、これを全部直していくのは結構たいへんだなぁ。がんばれkouさん!(人任せ(^^;))
■ あ、そうそう、そういや、rcairoのsetup.rbも動かなかった。こっちは深くは追わなかったけど....、なんだったんだろう。
■ [Ruby-GNOME2] NihongoBenkyoの翻訳
NihongoBenkyoが次のバージョンをそろそろリリースするということで翻訳依頼が来た。しかし、これが難しい...。
「On readings」うーん。読み中?なんて訳せば...
「Kun readings」お、こ、これは訓読み?ってことは前のやつは音読みか!?
October 10, 2005 [おもひで]
■ [Ruby-GNOME2] Ruby/PanelAppletがコンパイルできない!
コンパイル時に以下のようなエラーメッセージが大量に出るようになってしまった。
In file included from /usr/include/panel-2.0/panel-applet.h:37,
from rbpanel-applet.c:15:
/usr/include/panel-2.0/GNOME_Panel.h:40: error: syntax error before ‘struct’
ググってみたところ、このバグが原因らしいことがわかった。 ここのコメントに従い、ORBit2のバージョンを2.12.1から2.12.4に上げたらうまく動作するようになった。
October 15, 2005 [おもひで]
■ [Ruby] rcairo-1.0.0 by すとうさん
rcairoがリリースされました。rcairoはcairoのRubyバインディングです。
■ cairoは描画系のライブラリとしては現在もっとも注目されているものの一つです。強力で簡潔なAPIを持っています。そのRuby版ですから、さらに簡単に描画系のアプリケーションを作ることができることと思います。
こっち系に興味がある方は是非試してみてください。
■ すでにGTK+-2.8(GDK) やPango-1.10はcairoを使っているため、次にリリースされるディストリビューションには必ず含まれるようになるでしょう。そういった意味でも有望なライブラリですね。
また、Win32でも動作します。これまたうれしいところです。
■ ちなみに、次のRuby-GNOME2ではcairo & rcairoをサポートします。お楽しみに。
#もちろんrcairoが無くても動作するようにしていますのでその点もご安心を。
October 16, 2005 [おもひで]
■ [Ruby-GNOME2] Ruby-GNOME2-0.14.0 released
出ました。今回も大変だったー。完全に丸2日かかるね。オレの工数でこれだけの作業やったら....。確かに金出してもらってたら割合わない仕事だ(苦笑)。
■ 今回はrcairoのサポート、Ruby/GtkMozEmbedの統合、GTK+-2.8, GNOME-2.12始め各ライブラリの最新APIをサポート、とかなり盛りだくさんなバージョンアップとなりました。もちろん、バグも色々とつぶしてますよー。
チェキラッ!
■ [Ruby-GNOME2] スクリーンショット
rcairo, Ruby/GtkMozEmbed, Ruby/GtkSourceViewの機能を使ったサンプルのスクリーンショットを作ってみました。画像をクリックすれば大きなサイズになります。
■ [Ruby-GNOME2] Win32バイナリ
あ、肝心なこと書き忘れた。今回のWin32バイナリ、rcairoも入ってます。
rcairo自体のWin32バイナリは今のところこれしか無いはず。
さー、みんなでダウンロードだ!
それから、GTK+の方もgladewin32の2.8.6版が必要なので古いバージョンを使ってる人はこちらもアップデートが必要です。お手数かけます。
■ [Misc] Re:コンサルって怪しいですか?
まぁ、よく言われることではありますが、そのコンサルにだって言い分はあります。ってか、まぁ、コンサルといってもいろいろなコンサルがいますが、私もその一人な訳で。
■ 私が関わってきた開発ベンダにはあきらかに私より技術力がなくて最新技術動向に疎いしょぼーいプログラマーたちが結構いました。だから、私から言わせれば、SEやプログラマも十分怪しい...と言わざるを得ません。あ、もちろん、全部が全部そうとは言ってません。でも結構な割合で...5:5くらいかな...。
メール送信をプログラムで実装させようとしたとき、「それはとても工数がかかります。」とか。ライブラリ使えよ、って言ったら、なんですかそれ?みたいな。そこはコンサルは知らなくったっていいところだけど、作る側は一般教養として知っててよ、って感じです。
ホント、こちらが実装方法(の指針)まで示さないとベラボーな工数をすぐにふっかけるんですよねぇ。まったく。
■ ってか、デバッグぐらい一通りしてくれ。ボタンクリックするだけでNullPointerException出すようなプログラムを納品すんじゃねー。工数は十分あったろー。それからドキュメントを書くのがコンサルの仕事だと思ってたら大間違いだぞ。詳細設計書くらいはまともに書くもんだぞ、納品物なんだから。ぷんぷん。
■ ちょっと愚痴が入っちゃったけど、つまり、お互いプロ意識持とうぜ、歩み寄りも必要だし自分のことを棚に上げる前にやることあるでしょ、ということが言いたいわけです。もちろん、私自身、直すべきことだってたくさんあります。
■ このエントリ読んで、そんな会社ありえない!自分の会社ならもっとしっかりやってるって胸を張って言える方、ぜひとも個人的に連絡ください。今度一緒に仕事しましょう。
■ P.S. 上記の実体験っぽい部分はフィクションです。フィクションと言うことにしておいてください....。
October 18, 2005 [おもひで]
■ [Ruby] Dir.globとHikiとSELinuxとApache
SELinuxなApache上でHikiを構築しようとしてみたところ、pluginディレクトリを読み込めないという事象にぶつかった。
よくよく調べてみると、Dir.globがうまく動作していない(要素0の配列[]を返す)。厳密に言うと、cgi-bin/配下がまるまるNGのようだ。
#!/usr/bin/ruby
print "Content-type:text/html\n\n"
puts "
<html><head><title>Hello, Ruby world!</title></head>
<body>
<h1>Hello, Ruby world!</h1>
<hr>
#{Dir.glob("/home/mutoh/WWW/cgi-bin/*").inspect}
<hr>
</body></html>
"
いろいろ調べた結果、cgi-bin配下のアクセス権であるsystem_u:object_r:httpd_sys_script_exec_tが問題で、system_u:object_r:httpd_sys_content_tに変更したらアクセスできるようになった(アクセス権限はls -Zで調べれる)。
#ただ、このアクセス権だと今度はCGIが動かないのでcgi-bin/hiki/plugin配下のみ設定を変更する必要がある。
静的ドキュメントとしてapacheから読み込めるようにするためにはhttpd_sys_content_tを、CGIとして動作させるためにはhttpd_sys_script_exec_t権限が必要。だけどhttpd_sys_script_execに対してはファイルアクセス系が制限される(調べてないけど)っぽい。
まとめると以下のように設定する必要がある。(/home/mutoh/WWW 配下がDocumentRoot)
$ cd /home/mutoh/ (WWW配下はすべてapacheからアクセスできるようにしておく) $ chcon system_u:object_r:httpd_sys_content_t WWW $ cd WWW $ chcon system_u:object_r:httpd_sys_script_exec_t cgi-bin $ chcon system_u:object_r:httpd_sys_content_t cgi-bin/hiki/plugin
オレの場合、dataディレクトリはcgi-bin配下に置いていないので問題なかった(もともとhttpd_sys_content_t権限を与えていた)が、Hikiの標準的なフォルダ構成のまま使う場合はdata配下等もhttpd_sys_content_t権限に変えなければ動かないかもしれない。
■ SELinux、おもしろいけど難しいなぁ。きちんと勉強した方が良さそうだな。
October 19, 2005 [おもひで]
■ [Misc] Understanding and Customizing the Apache HTTP SELinux Policy (Beta Document)
昨日の続きでちょっと調べてみたところ、Fedoraのサイトに上記のナイスなドキュメントを見つけた。
Using Other Types To Lock Down CGI Scriptsを読んで試したところ、昨日のDir.globの件は、httpd_sys_script_exec_tの代わりにhttpd_sys_script_ro_tと設定しても良いことがわかった。なるほど。
■ [Misc] SELinux上のApacheをPort 8088でListenさせたい
httpd.confにListen 8088を追加するだけではダメなのね....。httpdが起動しやしない(-_-;)。
■ /etc/selinux/targeted/src/policy/net_contextsというファイルを編集して、「portcon tcp 8088 system_u:object_r:http_port_t」という行を追加、そのディレクトリ内でmake loadとしてhttpdを再起動したらようやくアクセスできるようになった。これで良いのかな?
$ su - Password: # cd /etc/selinux/targeted/src/policy/ # vi net_contexts (編集) # make load # /etc/init.d/httpd restart
■ 一つのターゲットを設定する際に、SELinuxの設定とApacheの設定をそれぞれ別々にしなければいけないってのは結構苦痛だな....。
それがセキュア、ってことなのかな。
■ [Ruby-GNOME2] GnomeFiles
GnomeFilesのRuby-GNOME2エントリがアップデートされました。voteよろしく!もちろんratingは10で!
■ [Ruby] open-uri, Easy-to-Use and Extensible Virtual File System
方々で話題になっている田中哲さんのRubyConf2005プレゼン資料。とても感銘を受けた。
この文章を今のRuby-GetText-Packageに当てはめて考えるといろいろと考えることも多そうだ。特に、毎回include GetTextするのってどうよ、とか。いっそ、Kernelレベルにメソッド追加しちゃおうかな。そっちの方が圧倒的に使い勝手良いしね。
でも、一方で短すぎる名前は良くない、とも。よく使われてるなら良いよ、ということなら、GetTextのメソッド名はRuby以外でも使われているという意味では「よく使われてる」って言っちゃっても良いかな。
うーん、悩ましいなぁ。
October 22, 2005 [おもひで]
■ [Ruby-GNOME2] RubyZilla - デモムービー
デモムービーがはやっているみたいなので、Ruby-GNOME2とGlade2を使ったデモムービーを作ってみました。全体で10分くらいのムービーでGeckoエンジンを使ったWWWブラウザを作ってしまおう、というものです。
まぁ、実際にWWWブラウザを作るにはこれから先が大変なわけですが、まぁ、それはそれということで(苦笑)。
October 25, 2005 [おもひで]
■ [話] あいかわらず提案活動中なわけですが
この前のMS PowerPointで作った資料の補足資料としてMS Wordでドキュメントを作成中。今回もこの前のパワーポッター氏がドキュメントをまとめてくれているのだけど、その鮮やかなWordさばきに「ワード・プロフェッサー」略して「ワープロ」というあだ名がついた。
....ってか、もういいよ、提案活動なんて....(T_T)。
October 31, 2005 [おもひで]
■ [Ruby-GNOME2] RubyGFE
A Game File Extractor for UT200xだそうです。Ruby/GTK2を使って頂いています。使い方はよくわからないのですが...(苦笑)。
■ [Ruby-GNOME2] JSON library for Ruby
こちらもよくわかっていないのですが、JSONというテキスト形式でデータ構造を表す仕様の実装とのことです。XMLやYAMLの対抗馬、と言う感じでしょうか。
JSONのデータ構造を編集できるGUIツールにRuby/GTK2を使って頂いています。


▲ kou [setup.rbは3.4.0を使っているんですが,もしかしたら古いバージョンだと動くのかもしれません. でも,ここを..]
▲ むとう [うーん、なんででしょう。]