本を読む

読書やコンピュータなどに関するメモ

どう書く?org:仲間はずれの判定

 sedで。

s/^\(.\)\1*$/homo \1/
t
s/^\(.\)\1*\(.\)\1*$/quasi-homo \1 \2/
t
s/^\(.\)\(.\)\2*$/quasi-homo \2 \1/
t
c hetero

 実行例

$ echo '111111' | sed -f nakama.sed 
homo 1
$ echo '111211' | sed -f nakama.sed 
quasi-homo 1 2
$ echo '211111' | sed -f nakama.sed 
quasi-homo 1 2
$ echo '211411' | sed -f nakama.sed 
hetero
$ echo '' | sed -f nakama.sed 
hetero

追記2008-08-19:
いまさらながら、どう書く.orgに投稿しました。

Ubuntuのpyton-clearsilverがwarningになる

 メモ。

 テンプレートエンジンClearSilverをPythonで使ってみようと思い、Ubuntu Linux 7.04でclearsilverとpython-clearsilverをインストールした。python-clearsilverのバージョンは0.10.3-4.1。

 使ってみたら、このとおりwarning。Pythonとライブラリとで、APIのバージョンが合わないらしい。

$ python hoge.py > /dev/null
hoge.py:3: RuntimeWarning: Python C API version mismatch for module neo_util: This Python has API version 1013, module neo_util has version 1012.
  import neo_cgi
hoge.py:3: RuntimeWarning: Python C API version mismatch for module neo_cs: This Python has API version 1013, module neo_cs has version 1012.
  import neo_cgi
hoge.py:3: RuntimeWarning: Python C API version mismatch for module neo_cgi: This Python has API version 1013, module neo_cgi has version 1012.
  import neo_cgi

 apt-get sourceしてビルドしなおせば直りそうだけど、試すだけなのでスルー。

「リクルートのDNA」

 リクルートの歴史とやりかたを、創業者の江副氏が語る本。リクルート事件についての直接の話は書かれてないけど。

 行動を早くするために、参入はボトムアップで、撤退はトップダウンで決断する、というのが面白かった。思い入れがあると撤退できない、というのも合わせて。ただ、PC制で事業部門ごとに判断を任せるのは、大きな会社では縦割りにつながりかねないとも思った。

 という本題はともかく、実はいちばん印象に残ったのは、新聞社と広告ビジネスで競合したときのエピソードだ。新聞社の社長が言う。

僕らは長年新聞記者をやってきて、人に頭を下げることを教わらなかった。

 これが本当なら、新聞社って特殊な世界だ。

リクルートのDNA―起業家精神とは何か
江副 浩正
角川書店 (2007/03)
売り上げランキング: 716

「論文捏造」

 高温超電導の研究でノーベル賞目前と言われた科学者が、実はすべての論文を捏造していた、という事件があった。本書は、この事件を追跡してたドキュメンタリーだ(元はNHKのドキュメンタリー番組)。スリリングかつ緻密な取材で読ませる。

 一連の論文が捏造であることが、なかなか見破られなかった事情を、取材班は追っていく。

  • チームリーダーの名声と権威
  • 複数の素材を用いた(と発表した)ことにより、両分野に通じた研究者がなかった
  • 追試がうまくいかない理由を研究者たちが自分のやりかたが悪いと思ってしまった
  • 「サイエンス」誌や「ネイチャー」誌では内容をチェックしておらず、互いの競争により競って文を掲載した。レフェリーが疑念を出しても対応はなかった
  • ベル研が経営危機で派手な成果を演出した
  • 米国とドイツで実験をした(と発表した)ことで、誰も実験の様子を見ていなかった

 著者の視点は、捏造した本人より、その周囲に批判的な目を向けている。本人への取材の難しさもあったのかもしれないが。

 本書でも触れられているように、追試にかけてキャリアをふいにした若い研究者などは、捏造を怨んでるだろうなと思う。

論文捏造 (中公新書ラクレ)
村松 秀
中央公論新社 (2006/09)
売り上げランキング: 76591

「日本語は天才である」

 奇才翻訳家の柳瀬尚紀氏が日本語について語るエッセイ。

 昔、氏が「フィネガンズ・ウェイク」を訳すと書いているのを読んだときには「なるほど」と思ったものだ。が、本書によると、それまでの翻訳は「フィネガンズ・ウェイク」のための練習だったとか。

 本書でもそんな言葉遊び好きな著者ならではのネタがいっぱい。「"You are full-moon"を"You are fool, moon"と聞き違えて怒ったお月さんの話」をいかに日本語に訳すか、に始まり、ひらがなと漢字、罵倒語、「!」と「?」、「おビール」のような敬語の是非、ルビ、根室なまり、いろは歌など。日本語や英語に関するさまざまな話題を、遊び心たっぷりに語ってくれて楽しい。「EVILを逆に読んでLIVE」とか。

 決して堅苦しくはなく、たとえば敬語の乱れを憂う人自身の言葉の乱れを皮肉ってみたりと、ユーモアにあふれている。

 好き嫌いはあると思うが、柳瀬尚紀氏の翻訳に感心したことのある人ならおすすめ。

日本語は天才である
日本語は天才である
posted with amazlet on 07.08.26
柳瀬 尚紀
新潮社 (2007/02/24)
売り上げランキング: 45947

「英語屋さん」

 ソニーで井深大氏の通訳兼「かばん持ち」をつとめた人の追想録。本人が「黄門様とうっかり八兵衛」とたとえるように、VIPの世界のエピソードを、軽妙に語ってくれる。もっとも、読む限りでは非常に優秀な人だと思う。

 マンガか小説の世界のような浮世離れしたエピソードが読めるので、実用性はともかく楽しい。

  • VIPのビジネスレターの作法(レターヘッドとか)
  • 対談やパーティーなどでの「かばん持ち」の居場所
  • 出張先での待機
  • 大量に届く手紙への対応
  • 要人の送迎方法
  • タイの王女の歓迎
  • 重役にいる皇族関係の方
  • スウェーデン国王の歓迎

 教訓としては、付く人や相手について、著書や過去の発言などを事前に徹底的に知っておくことが通訳に重要、というのがうなずける。ただし、井深氏が東洋医学や幼児教育に凝っていたときの通訳の苦労話は、笑えた。

英語屋さん―ソニー創業者・井深大に仕えた四年半 (集英社新書)
浦出 善文
集英社 (2000/02)
売り上げランキング: 227759

Hello, world! PDF版

Hello, world!シリーズの続編です。「Hello, world!」となるべく大きく書かれた1ページのPDFを出力してください。

 PDFも言語ということにして手書きしてみた。「手書きPDF入門」を参考に、最低限だけ記述。出力結果はUbuntu Linux上のAcrobat Reader 7.0とEvinceで確認した。。

%PDF-1.4

1 0 obj
<<
 /Type /Page
 /Parent 5 0 R
 /Resources 3 0 R
 /Contents 2 0 R
>>
endobj

2 0 obj
<< /Length 53 >>
stream
BT
/F1 90 Tf
1 0 0 1 10 600 Tm
(Hello, World!) Tj
ET
endstream
endobj

3 0 obj
<<
 /ProcSet [ /PDF /Text ]
 /Font << /F1 4 0 R >>
>>
endobj

4 0 obj
<<
 /Type /Font
 /Subtype /Type1
 /Name /Helv
 /BaseFont /Helvetica
>>
endobj

5 0 obj
<<
 /Type /Pages
 /Kids [ 1 0 R ]
 /Count 1
 /MediaBox [ 0 0 595 842 ]
>>
endobj

6 0 obj
<<
 /Type /Catalog
 /Pages 5 0 R
>>
endobj

trailer
<< /Root 6 0 R >>

%%EOF

追記2007-9-11:
 仲間うちの集まりで発表したので、資料をSlideShareに上げてみた。元がIPAフォントなので文字がヘンなのはご愛嬌。

追記2008-8-19:
遅ればせながら、どう書く?.orgに投稿しました。

スプログにありがちな2つのパターン

 ブログ検索は便利です。が、メジャーな単語だと、スプログ(スパムのブログ)がけっこう混じってくるのが厄介です。特に、検索結果をフィードとかでチェックしている人は、スプログがわずらわしくてたまらないはず。

 ここでは、スプログにありがちな2つのパターンをメモしてみます。

1. エントリーが1つしかないブログ

 それなりにデザインを工夫してあって、人間がちゃんと書いたらしいブログ。でも、よく見るとエントリーが1つしかない。

 そんなブログは、スプログかもしれません。

 機械的に調べるには、こんなコード(Perlの例)になるかと思います。

use XML::Feed;

sub single_entry_feed {
    my ($uri) = @_;
    my $feed_uri = (XML::Feed->find_feeds($uri))[0] or return;
    my $feed = eval { XML::Feed->parse(URI->new($feed_uri)) };
    $feed->entries == 1;
}

 スプログじゃなくて、ちゃんと書いた最初のエントリーだったらごめんなさい。

2. JavaScriptでリダイレクトするブログ

 アクセスしてみると普通のブログらしい。だが、検索したキーワードはないし、よく見るとアドレスバーのURLも変わっている。

 そんなブログは、スプログかもしれません。

 元のブログにwgetなどでアクセスしてみます。おや、HTMLの先頭がこうなっています。

<script src=http://example.com/examplejp.js></script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 DOCTYPEの前に外部のJavaScriptを呼び出していますね。このJavaScriptをwgetなどでアクセスしてみます。

location='http://hoge.example.jp/?eid='+Math.ceil(Math.random()*10);

 JavaScriptでリダイレクトしています。そのため、検索サイトのクローラーには元のブログが、Webブラウザーにはリダイレクト先のブログが、それぞれ見えるわけです。

 機械的に調べるには、こんなコード(Perlの例)になるかと思います。実用で使うにはLWP::Agentを使うと思いますが。

use LWP::Simple;

sub js_redirect_feed {
    my ($uri) = @_;
    my $c = get($uri);
    scalar($c =~ /\A[^\n]*\<script /);
}

まとめ

 ここで紹介した2つのパターンは、Plaggerでフィルタリングしたりして使えそうです。ただし、公開したらスプログ側で新しいパターンに変更してしまいそうですが。

第79回カーネル読書会(Linux Fault Injection)に参加

 Linuxカーネルの勉強会「カーネル読書会」に参加した。お題は、「Linux Fault Injection」で、開発者(美田晃伸さん)本人が解説。人為的にメモリアロケーションなどのエラーを発生させて、Linuxカーネルがちゃんとエラーに対応できているかを確認する仕組み、らしい(←ちゃんと理解できてません)。

 Linux Foundation Symposiumのときと同じ話ではあるが、改めて受講メモ。会場からいろいろツッコミがあって勉強になった。

  • エラーをわざと起こしてエラーリカバリーコードが正常に動作するかテストする
  • Fault InjectionはWikipediaにもエントリーのある用語
  • Linuxカーネルで実装
  • エラーを意図的に発生させたい箇所にshould_fail()をしかける
  • エラーを発生させる確率やタイミングなどをdebugfsでコントロール
  • あらかじめ埋め込んだところ
    • スラブ・アロケータ
    • メモリ・アロケータ
    • I/O・アロケータ
  • スラブ・アロケータの場合
    • kmalloc()などのコアである_cache_alloc_node()にshould_fail()を埋め込む
    • should_fail()がTRUEなら失敗させる
  • もっと多数の場所に埋め込んだほうがいいという意見もある
    • が、これだけでもかなり有用
    • kmalloc()の呼び出し元や、さらに呼び出し元などにも影響を起こせる
  • mainlineのカーネルでmake menuconfigでオンにすれば使える
    • CONFIG_FAULT_INJECTION
  • debugfsで設定
    • probability:確率
    • interval:間隔
    • times:最大回数(-1で無制限)
    • require-start、require-end:特定のアドレス範囲のみエラーを発生
    • process-filter:/proc/make-it-failを設定したプロセスのみエラー
    • ignore-grp-wait:GFP_ATOMICだけ失敗させる(起こりやすいケース)
    • min-order:指定したサイズ以上のアロケーションのみ失敗させる(起こりやすいケース)
  • Q:probabilityとintervalの両方があるのは?
    • A:1%以下を設定するにはintervalで設定する
    • failmallocのやりかたをまねた
    • Q:エラーリカバリの制御などにも使える?
    • A:そこまでは考えてなかった
  • 例1:モジュールのロード/アンロード中のスタブアロケーションを5%の確率で失敗させる
    • modprobeとmodprobe -rを繰り返す
    • e100ドライバーでKernal BUGが発生
    • list corruption
    • sysfsの追加のときにメモリアロケーションのエラーを処理してない
    • e100ドライバー固有ではなくsysfsまわりの共通の問題
  • 例2:あるモジュールからのページアロケーションを1000回ごとに失敗させる
    • Fault Injectionを設定してモジュールに負荷をかける
  • 例3:CPU hotplugのエラー処理をテストする
    • いくつかバグが見付かった
    • 次のマージウィンドウで反映?
  • Fault Injectionで見つけられるのは、あくまでもエラー処理のバグだけ
    • 異常系のテストを徹底的にやる
  • Q:なぜ毎回エラーではいけない?
    • 条件の組み合わせが、高確率だとわかりづらい
    • うまくいっちゃう場合の裏をかく
  • 奥地さんのfailmallocに触発されて開発
  • アドバイスをくれた人
    • Andrew Morton
      • I/OリクエストのFaultに対応
      • 発生を動的にコントロール
    • Andi Kleen
      • 指定したプロセスやアドレス範囲のみエラー
    • Don Mills
      • スタックトレースをダンプ
      • ドキュメンテーション
  • よくある(あった)エラー処理の間違い
    • エラーチェック抜け
      • 直接のエラーチェック抜けは少ないが、関数の戻り値のチェックが抜けている場合がある
    • IS_ERR()でチェックすべきところを誤ってNULLチェックにしている
    • 返り値の間違い
      • モジュールの初期化関数で、エラーしたのに間違って成功値を返してしまっている
      • そのときはエラーにならず、モジュールのアンロードでエラーが起きる
    • ロールバックしわすれ
      • 失敗したときに、その直前に割り当てたリソースを開放していない
  • 美田さんが見つけたバグの数
    • 50個強ぐらい
    • 単純なものがけっこうある
  • Q:場所を確認するログは?
    • A:コールトレースをdmesgなどで確認
  • Q:失敗が起こるパターンとかの設定とかもあると面白いか
    • 初期と中期で確率を変える、など
    • エラーの組み合わせを定義する、など(コールバックを定義?)
    • でも、複雑にしないほうがいいのでは?
    • systemtapなら動的にフックできる(が、設定するのは大変。適材適所)

追記2007.8.31:タイトル修正。「第59回」→「第79回」

「Q.E.D.」27巻

 本格推理小説は、本格であるほど、探偵が「神の視点」を持つことになる。そして、読者はその神の視点から物語を見ることになる。が、実際の事件に直面した個人はそんな神の視点など持つはずもない。

 ということで、本格推理マンガである「Q.E.D.」では、裁判員制度を取り上げた異色作「立証責任」という力作をものにした。

 物語は、裁判員制度の模擬裁判を学校で開くことになったという設定。で、裁判員は弁護側と検察側の主張にそれぞれ揺さぶられる。なおかつ、制度や、そこで裁判員に求められることを具体的に描いている。裁判員に求められる緊張感が、いままででいちばんよくわかった。

 となると主人公の塔馬君の推理力がこの作品の主題と合わない危険性がある。が、ネタバレは避けるが、あくまでも塔馬君は検察の不備を証明するだけで、事件の真相そのものは推測の域にとどめている。

 ふだん主人公の論理で押している「Q.E.D.」だからこそ、こういう異色作が作れたのだと思う。

 あと、もう1編の「鏡像」は、人情もの路線の作品。伏線とかは弱めだが、老捜査官の家庭の話をまじえて、人情話として読ませる。

「国のない男」

 故カート・ヴォネガットの遺作となったエッセイ集。オビで訳者が書いているように「まさにヴォネガット」な1冊だ。

 ネタは、ユーモアについて、小説について、文明批判、米国批判など。中でも、物語の構造について語った章がすごく面白かった。アラバホ族の物語からシェイクスピアに至る話の流れは、やられたという感じだ。

 「ばかな年寄りがいる。わしらが経験したような大きな災難を経験しないうちは、人は大人になれない、なんてのたまうやつらだ」という言葉も、普遍的な話ではあるが、82才の著者から出たと思うとよけいに感慨深い。

 ヴォネガットのファンなら迷わず読もう。

国のない男
国のない男
posted with amazlet on 07.08.16
カート・ヴォネガット 金原 瑞人
日本放送出版協会 (2007/07)
売り上げランキング: 5692

「モバゲータウンがすごい理由」

 ディー・エヌ・エーの「モバゲータウン」を中心にして、いまどきのケータイ向けサービスの特徴を解説する本。PC向けサービスと違うと頭でわかったつもりでいても、こうしてまとめられていると目からうろこが落ちる。また、モバゲータウンなどのケータイ向けサービスを実際に体験して語っているのも参考になる。

 本書で語られている主なポイントを、私なりにまとめてみると、以下のとおり。

  • 3G(高速化)、パケット定額、MNP、検索の普及
    • Eコマースやアフィリエイト、オークション、広告の収入が大きくなる
    • 公式サイト(課金代行)至上主義からの脱却
    • いっぽう、キャリアと提携した超公式サイト(例:Yahoo!)も登場
  • ディ・エヌ・エーの強み
    • 超公式サイトと勝手サイトのそれぞれに合わせたコンテンツを提供
    • モバオクのスタートがちょうどパケット定額開始の時期だった
  • モバゲータウンの強み
    • モバG(仮想貨幣)
    • はじめからアバターありき
    • ほかのSNSよりユーザ間が親密かつ仮想的にわりきり
    • スピード感
    • ケータイ専用なのでPCユーザーとのギャップがない
    • 広告効果が圧倒的に高い
モバゲータウンがすごい理由 ~オジサンにはわからない、ケータイ・コンテンツ成功の秘けつ~
石野 純也
毎日コミュニケーションズ (2007/06/19)
売り上げランキング: 125

「レバレッジ・リーディング」

 読書習慣のない人に「ビジネス書をたくさん読もう」と呼びかける自己啓発書。それだけでは活字中毒ぎみの私には参考にならないのだけど、「本を読むのが目的ではなく、実践に生かすのが目的」というのが実際のテーマになっていて、参考になった。下手に本を好きだと、読み流してしまうきらいがあるなと反省。

 というわけで、メモを書いてみる。賛成する部分も、そうでない部分もふくめて、刺激になった言葉。

  • 本はとにかく大量に読んで、ひとつの視点に固定されないようにせよ
  • 自分の金で買い、傍線やメモなど書き込みまくれ
  • 一冊全部読む必要はない
  • メモを残せ
レバレッジ・リーディング
本田 直之
東洋経済新報社 (2006/12/01)
売り上げランキング: 42

 …ふと、すでに「知的生産の技術」ですべて語られているような気がしてきた。

知的生産の技術 (岩波新書)
梅棹 忠夫
岩波書店 (1969/07)
売り上げランキング: 1803

Webメールサーバー「Scalix」を試しにインストール

 前から試してみたいと思っていた「Scalix」というWebメールサーバーソフトをインストールして試してみた。以下メモ。

Scalix

Scalixってなに?

 Ajaxでローカルのメールソフト(MUA)のように使えるWebメールサーバーソフト。操作性は、3/4ペインのメールソフトそっくり。メニュー操作や、メールをドラッグ&ドロップしてフォルダに移すといった操作もできる。

 商用製品だが、サポートなしのCommunity版は無償で使える。

 全機能は、Microsoft Exchange+Outlook相当のグループウェア&メールシステム。だが、とりあえずWebメールサーバーとしての面を前面に出しているらしい。実は出自はHP社のOpenMail。

参考:

対応ディストリビューション

  • RHEL 4.0、5.0
  • SUSES 9、10
  • FC5
  • OpenSUSE 10.1
  • Debian(サポート対象外。Xandros対応の準備?)

OSを用意

  • 試した環境はCentOS 5のXなし環境
  • 固定IPでホスト名必要(インストーラーのチェックが入る)
  • DNSへの登録必要(インストーラーのチェックが入る)。とりあえずbindとcaching-nameserverのパッケージを入れてキャッシュサーバーを立てた
  • IMAP4サーバーは落としておく(Scalixが持っているのとぶつかる)
  • SELinuxはdisabled(サードパーティーアプリだから当然)
  • iptablesで80番ポートを開けておく

 あと、/etc/redhat-releaseを以下のように変更してRHEL5のふりをする(インストーラーのチェックが入る)。

Red Hat Enterprise Linux Server release 5 (Tikanga)

ダウンロード

  • https://www.scalix.co.jp/download.htmlにアクセス
  • RHEL5用のバイナリサーバパッケージをダウンロード
  • 日本語リソースパッケージ(日本語化パッチ)もダウンロード
  • ドキュメントのPDFもいっぱいあるので、必要に応じて

追記2007.8.14:ダウンロードのときに入力項目を埋めてみたら、営業さんから連絡をいただいてしまいました。

必要なCentOSパッケージ(ドキュメントより)

glibc、bash、ncurses、libstdc++、coreutils、grep、diffutils、gawk、sed、util-linux、tcl、tk、cyrus-sasl-md5、cyrus-sasl-plain、sendmail、sendmail-cf、python、openssl、which、compat-libstdc++(compat-libstdc++-296とcompat-libstdc++-33があるので念のため両方入れる)、procps、elinks、krb5-libs、httpd、libxml2、posgresql-server、postgresql-libs、postgresql

インストール

 インストールは、標準ではGUI(X)だが、コマンドラインでもできる。

参考:

tar zxvf scalix-11.1.0-GA-core-rhel5-intel.tgz
cd scalix-11.1.0-GA
sudo ./scalix-installer --cli

 聞かれることに答えながらインストール。warningは気にしないで強行。

 インストールが終わったら日本語パッチをあてる。

cd ..
mkdir jpatch
cd jpatch
tar xvf ../11.1.0-jpatch-2.tar
sudo ./scalix-lang-japan.sh

動かす

 まずApacheを再起動。

/sbin/service httpd restart

 クライアントマシンからhttp://<サーバーのIPアドレス>/sac/で管理画面にアクセスしてユーザー追加など設定。

 http://<サーバーのIPアドレス>/webmail/にアクセスして、ユーザーとしてログインすると、Webメールを使える。

感想

 なにより、ブラウザベースでここまでローカルアプリそのままの操作を実現していることに驚いた。Gmailとは異なるアプローチだと思う。

 自宅で使うには設定などでヘビーな感じもあるが(DNS立てなくちゃならないとか)、ActiveDirectoryやLDAPへの対応とか、Exchangeとの連係とかの機能があって、会社だったら面白いんじゃなかろうか。グループウェア使ってないからよくわからないけど。

UbuntuからのCIFSマウントでちょっとだけハマる

 久しぶりにWindowsの共有ディレクトリをUbuntu Linuxからマウントする。

$ sudo mount -t cifs -o username=ore,uid=ore,gid=ore //192.168.0.1/myfolder /mnt
mount: ブロックデバイス //192.168.0.1/myfolder は書き込み禁止です、読込み専用でマウントします
mount: ブロックデバイス //192.168.0.1/myfolder を読込み専用でマウントできません

 ありゃ。LANG=Cだとこんな感じ。

$ LANG=C sudo mount -t cifs -o username=ore,uid=ore,gid=ore //192.168.0.1/myfolder /mnt
mount: block device //192.168.0.1/myfolder is write-protected, mounting read-only
mount: cannot mount block device //192.168.0.1/myfolder read-only

 オプションを変えてもダメ。ふと思って mount.cifsを直接呼んでみる。

$ mount.cifs
The program 'mount.cifs' is currently not installed.  You can install it by typing:
sudo apt-get install smbfs
bash: mount.cifs: command not found

 あっ、smbfsパッケージが入っていないのか。

$ sudo apt-get install smbfs
$ sudo mount -t cifs -o username=ore,uid=ore,gid=ore //192.168.0.1/myfolder /mnt
Password: 
$ 

 一件落着。command_not_found_handleえらい。

「キリン」21~33巻

 ある種のバイク乗りに絶大に支持される漫画、東本昌平氏の「キリン」。第3部「Run the Hazard」になってからあまり読んでなくて、20巻までしか手元になかったので、最新刊まで大人買いしてみた。

 バイクですっ飛ばすシーンとか、バイク乗りにぐっとくるセリフは1・2部よりは少なくて、バイクチームの抗争の話が中心。でも、まとめて読んでみると案外面白かった。ガルーダという大規模なバイクチームが徐々に崩壊してく様子が、いかにも1990年代ぐらいにありそうな感じ。新メンバーが増えて収拾がつかなくなったり、周囲から狙われて抗争の的になったり、隠れて薬とかの犯罪に手を出すのがいたり、名前を借りて見栄を張るのがいたり、仲間割れが起きたり、対立を煽るのがいたり。このへんは技術系コミュニティとかにも共通するかも。

 あと、たまに入る過去の挿話がちょっと悲しい。

 ここから北海道の話に収束させるには、キリンのバイクや、寺崎のバイクと性格が変わっているのを、どいういうエピソードで見せるかが気になる。というのも、33巻でマスターが北海道の話をするシーンがフラグ立ってる感じで…

 とりあえずこの先も、キリンの走るシーンに期待。

キリン 21 (21)
キリン 21 (21)
posted with amazlet on 07.08.08
東本 昌平
少年画報社 (2001/03)


キリン 22 (22)
キリン 22 (22)
posted with amazlet on 07.08.08
東本 昌平
少年画報社 (2001/07)


キリン 23 (23) (ヤングキングコミックス)
東本 昌平
少年画報社 (2002/04/03)


キリン 24 (24) (ヤングキングコミックス)
東本 昌平
少年画報社 (2002/11/29)


キリン 25 (25)
キリン 25 (25)
posted with amazlet on 07.08.08
東本 昌平
少年画報社 (2003/04/03)


キリン 26 (26) (ヤングキングコミックス)
東本 昌平
少年画報社 (2003/12/01)


キリン 27 (27) (ヤングキングコミックス)
東本 昌平
少年画報社 (2004/05)


キリン 28 (28)
キリン 28 (28)
posted with amazlet on 07.08.08
東本 昌平
少年画報社 (2004/09/27)


キリン 29 (29) (ヤングキングコミックス)
東本 昌平
少年画報社 (2005/04/25)


キリン 30 (30) (ヤングキングコミックス)
東本 昌平
少年画報社 (2005/08/10)


キリン 31 (31) (ヤングキングコミックス)
東本 昌平
少年画報社 (2006/04/26)


キリン 32 (32)
キリン 32 (32)
posted with amazlet on 07.08.08
東本 昌平
少年画報社 (2006/10/26)


キリン 33 (33)
キリン 33 (33)
posted with amazlet on 07.08.08
東本 昌平
少年画報社 (2007/06/25)

Ubuntuのパッケージを本家バージョンでアップデートする

の続き。やはり個人的作業メモ。

 必然性はないが、Text::Baseを最新版にアップデートしてみる。Ubuntu(やDebian)では、uupdateを使うと、Ubuntuの古いパッケージのソースと、本家の新しいソースを合わせて、新しいソースから.debをビルドするための用意をしてくれる。

Spiffy(標準パッケージの場合)

 まず、Test::Base 0.54がSpiffy 3.30に依存しているので、先にアップデートする。

 最初に本家アーカイブをCPANからダウンロードする。そして、apt-get sourceでソースを入手して、uupdateで本家アーカイブと合わせる。そのうえで、dpkg-buildpackageで.debパッケージをビルドする。

$ wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/Spiffy-0.30.tar.gz
$ apt-get source libspiffy-perl
$ cd libspiffy-perl-0.29
$ uupdate ../Spiffy-0.30.tar.gz
$ cd ../libspiffy-perl-0.30
$ dpkg-buildpackage -uc -us -rfakeroot
$ cd ..
$ sudo dpkg -i libspiffy-perl_0.30-1_all.deb

Test::Base(Debianから借りたパッケージの場合)

 Spiffyがアップデートできたら、Test::Baseをアップデートする。

 こちらもCPANから本家アーカイブをダウンロードする。apt-get sourceを使えないので、Debianのサイトから*.orig.tar.gz、*.diff.gz、*.dscをwgetで入手し、dpkg-sourceで展開する。続いて、同じようにuupdateとdpkg-buildpackageで.debパッケージをビルドする。

$ wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/Test-Base-0.54.tar.gz
$ apt-get source http://ftp.debian.org/debian/pool/main/libt/libtest-base-perl/libtest-base-perl_0.47.orig.tar.gz
$ wget http://ftp.debian.org/debian/pool/main/libt/libtest-base-perl/libtest-base-perl_0.47-1.diff.gz
$ wget http://ftp.debian.org/debian/pool/main/libt/libtest-base-perl/libtest-base-perl_0.47-1.dsc
$ dpkg-source -x libtest-base-perl_0.47-1.dsc
$ cd libtest-base-perl-0.47
$ uupdate ../Test-Base-0.54.tar.gz
$ cd ../libtest-base-perl-0.54
$ dpkg-buidpackage -uc -us -fakeroot
$ cd ..
$ sudo dpkg -i libtest-base-perl_0.54-1_all.deb

UbuntuのOpenOffice.orgで入力中の行が上下に揺れる

 Ubuntu Linux 7.04日本語ローカライズ版でOpenOffice.org Writer(ワープロ)に文字入力すると、入力している行が上下に揺れて見づらいことがある。

 観察してみると、日本語の文字が並んだ行にアルファベットを入力すると、行間が広くなるようだ。ローマ字入力中のアルファベットでも起こるため、ローマ字で入力したりかなに変換されたりするたびに行が上下するわけだ。

 ふと、メニューの [書式]-[文字] でフォント設定を見てみた。すると、「日本語用フォント」のサイズが10.5ポイントになっているのに対して、「英数字用フォント」のサイズが12ポイントになっていた。そりゃ行送りが大きくなるわけだ。

 そこで、英数字用フォントも10.5に変えたところ、「文字が上下に揺れる」現象がなくなった。

 全体のデフォルトを変更するには、オプションで「既定のフォント」を変更すればいいのかな(未確認)。

もしかして絶望した

 LL魂というイベントにて、MatzさんがRubyの新機能として、「もしかして」機能というジョークを言っていた。ので、今朝、洗濯しながら試作してみた。

irb(main):001:0> require 'method_moshikashite'
=> true
irb(main):002:0> "abc".upcade
undefined method String#upcade
もしかして: upcase [Y/n] y
=> "ABC"

 作ってから、Matzさん本人がすでに日記でGuessMethodを紹介していることがわかった。というか元ネタだ。絶望した。

 まぁ、レーベンシュタイン距離ってネタを知ったからいいや。しかし、これをPHPは標準装備してるのかぁ。

追記(2007.8.6):ほとぼりが冷めたと思うのでこっそり公開。

#!/usr/bin/ruby -Ku
require 'text/levenshtein'
require 'readline'

module MethodMoshikashite
  def y_or_n_p(prompt, default_val = true)
    s = Readline.readline(prompt)
    (s == 'y' || s == 'Y') ?  true :
    (s == 'n' || s == 'N') ?  false :
    default_val
  end

  def method_moshikashite(word, candidates)
    candidates.sort_by {|x| Text::Levenshtein::distance(x, word)}.each do |s|
      if y_or_n_p("もしかして: #{s} [Y/n] ")
        return :"#{s}"
      end
    end
    nil
  end
end

class Object
  include MethodMoshikashite

  def method_missing_moshikashite(m, *args, &block)
    STDERR.puts "undefined method #{self.class}##{m}"
    if m2 = method_moshikashite(m.to_s, self.methods)
      self.send(m2, *args, &block)
    else
      raise NoMethodError.new(
        "undefined method `#{m}' for #{inspect}:#{self.class}")
    end
  end

  alias_method :method_missing_orig, :method_missing
  alias_method :method_missing, :method_missing_moshikashite
end

Ubuntu LinuxでPerlのTest::Base

 激しく自分メモ。

 Perlでテストケースを書きまくるには、Test::Baseが便利、というかいまや必須だ。が、Ubuntu Linux 7.04ではパッケージが用意されていない。

 CPANシェルからインストールするのも負けた気がするので、Debian GNU/Linuxからパッケージを借りてくる。

まずDebianで

$ apt-cache show libtest-base-perl

(ここで依存関係を確認)

で、Ubuntu

$ sudo apt-get install libspiffy-perl libalgorithm-diff-perl libtext-diff-perl libtest-simple-perl
$ wget http://ftp.jp.debian.org/debian/pool/main/libt/libtest-base-perl/libtest-base-perl_0.47-1_all.deb
$ sudo dpkg -i libtest-base-perl_0.47-1_all.deb

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly