2011年03月04日

CAcert.orgとトレーニング

CAcert.orgの保証(assurance)および日本初の公式トレーニング(ATE)が、明日3月5日にオープンソースカンファレンス2011 Tokyo/Springの枠内で開催されます。

CAcert.orgは、SSLなどで使われる「証明書」を、個人間の信用をもとに自由に作ることができるようにするというプロジェクトです。Verisignのような証明機関と考えればよいですが、まだCAcert.orgのルート証明書はほとんどどのWebブラウザにも標準登録されていないので、オレオレ認証局とそれほど変わりがないように見えます。しかし、オレオレ認証局が場当たり的に作って「あれ、この証明書ってどこでどう作ったんだっけ?」となることが多いのに対して、CAcert.orgでは鍵送付→署名返送→更新時期に通知といった機構が自動で用意されており、管理を一元化できるというメリットがあります。さらに、ルート証明書をブラウザに登録しさえすれば、Verisignなどの商業機関の証明書となんら遜色ありません。

信用といっても、友達かそうでないかで決めるというわけではなく、そのアカウントの持ち主が間違いなく本人(あるいは法人)であると政府発行の書類を使って確証を得た、という事務的な認証に基いています。

認証は、CAcert.org参加者のうち、認証者(Assurer)の資格を得た人によって行われます。Assurerは実際に対面の上で本人確認をしたら、だいたい10〜35ポイントの範囲でポイントを提供します。だいたい50ポイントを越えたら(2人〜3人の認証を受ける)、かなり実用的なサービスを使えるようになります。今回はAssurerが集まりますので、0からこの機会での100ポイント越えも可能です。

  • 0: Certificates with no Name, under Class 1 Root. Limited to 6 months expiry.
  • 1-49: Certificates with no Name under Member SubRoot. Limited to 6 months expiry.
  • 50-99: Certificates with Verified Name for S/MIME, web servers, "digital signing." Expiry after 24 months is available.
  • 100++: Can create Code-signing certificates.

100ポイント以上になったら、今度は自身もAssurerになることができます。Assurerになるには、100ポイントのポイントを受けるほかに、Assurer Testを受ける必要があります。といってもこのテストは何回でもやり直せるので、ドキュメントも参照しながらじっくり進めれば必ず合格できるでしょう。

Assurerになって何が嬉しいか、というと実のところあまりありません(笑)。assurance作業はかなり注意深く行う責任があり、大変な割に報われるというものでもないのですが、強いて言えば、CAcertの輪を広げるという使命感と、いろいろな人とassuranceを通して知り合いになることができるというところでしょうか。海外の方のほうが熱心なので、会って英語で話して、というのもいいトレーニングになるでしょう。

ということで、明日の参加をご検討されている方は、次のものを用意してご参加ください。単に「認証を受けたい」というときには、午前中の(および夕方にも一度開催する)「CAcertサインパーティ」がその場となります(「トレーニング」はAssurerおよびAssurer予備軍向けです)。

  • CAcert.orgで作成したアカウント。メールアドレスは(一時的なものなどではなく)必ず主に使っているアドレスにしてください。
  • 顔写真・ローマ字の氏名(アカウントに載っている名前と合致できるもの)・誕生年月日が記載された政府機関発行の書類。パスポートが最も適しています。次点は国際免許証ですが、これがあるならパスポートがありますよね…。日本の運転免許証の場合は、申請用紙の裏側に漢字名、西暦の誕生日も記載いただくことになります。保険証・社員証・学生証などは真偽確認が難しいです。申請用紙は当日会場で用意していますが、CAcert.orgアカウントのページのCAP formから自分の名前が入ったものを3〜4枚ほど印刷しておくとベターです(持参時に署名はまだしないでください)。
  • CAcert Community Agreementへの同意。

2010年12月20日

LaTeX2EPUB

奥村先生から「LaTeX2EPUBはできないのですか?」というお話を以前からいただいていたのだけど、ReVIEW用に限らず汎用的に使えるようにと作っていたEPUBライブラリのほうがだいたい実用的になったのを機に、LaTeXからの変換にもチャレンジすることにした。

Github https://github.com/kmuto/latex2epub にlatex2epubプロジェクトを昨日作成。

EPUB化するにはLaTeXからなんとかしてXHTMLに持っていく必要があるが、現時点で実用的になりそうなものはlatex2htmllatexml

latex2htmlは高機能なのだがHTMLだけなのでXHTML化するにはかなり手を入れなければならないのと、昔日本語化を実装したときにもモノリシックなコードが読みにくくて参ったので、できれば避けたいと考えた。

一方のlatexmlは今回初めて使ってみたのだが、一度中間XMLにしてそこからXSLTでXHTML化しているので、見通しは良いとは言えないものの国際化などの切り替えはしやすそう。日本語もUTF-8ならおおむねそのままいけそうなので、これを使うことにした。Debianにも「latexml」パッケージとして存在する。latex2epub.rbやEPUBライブラリはRuby、latexmlはPerl、変換エンジンはXSLとたいへん気持ち悪い構成になるのは仕方がないか。latexmlの本体コードに手を入れるのを避けるために、PERL5LIBで呼び出しパスを変えるといったつぎはぎで進めてみる。

「UTF-8」と書いたとおり、TeX環境側もUTF-8対応にしておく必要がある。Debianの標準のptexは古いままなので、香田さんの作られているpTeXLiveパッケージをセットアップして使った。ほかにgsとdvipsも動くようにして、また冒頭のReVIEWの中にあるepubmaker.rbとuuid.rbをRubyパスの通ったところか、$HOME/review/libに置く。

変換は、LaTeXソースと各種情報を記載したYAMLファイルを用意して、「latex2epub.rb LaTeXソース YAMLファイル」を実行する。gitの構成物の中にsample.texとsample.yamlを入れているので、これを参考にしてほしい。

とりあえず実装してみたレベルなので、問題は多数ある。業務とはリンクしないし、Perlソースは読みづらいし、TeXもXSLも難しいので、積極的な開発は多分できない。forkなりコミッタ権付与なりでどなたかが開発を継続していただけると嬉しい。latexmlは開発が活発ではなさそうだけど、直接upstreamとやりとりすればもっと良くなりそうな気はする。

  • 数式内に日本語を含めるとエラーになる。
  • 目次に「〜 in 〜」とどうしても入ってしまう。
  • 対応TeXクラスがまだ少ない(特に日本語系のはjsbookをコピーして入れただけ)。
  • 数式部分をSVG化できるようにしたい。
  • 画像はまだ実験していない。
  • もうちょっといいCSSが必要。

サンプルsample.texをEPUB化したものはこちら

サンプル

2010年10月12日

iPhoneとiPadが壊れた〜修理/交換

使い始めて1年ちょっとになるiPhone 3GSだが、旅行直前にHOMEボタンの調子が悪くなってきていた。接触不良系で、強くあるいは斜めに押すとなんとか反応するという感じ。 4Gにする気は今のところないし、せっかくのJB環境なので交換するのも躊躇われる(おまけに保証期間ちょうど切れたかな)。 ということで、iPhone Repair storeに修理を依頼してみた。修理は早かったし料金も正規交換よりずっと安く済んで、自分は満足してる。

  • 9/27 19:14 修理依頼をWebフォームから投稿。
  • 9/27 20:53 ショップから見積り結果の連絡メール。
  • 9/28 9/29午前着指定で受取払いで送付。iPhone外箱を紙に包んで、見積りIDと返送先を添えて送った。
  • 10/1 18:14 ショップから受領連絡メール、即修理に入るので何か連絡事項があればご連絡を、とのこと。
  • 10/1 18:17 修理完了の連絡メール。見積りどおり、ホームボタン交換9,800円。
  • 10/1 18:18 発送の連絡メール。今はキャンペーン中なので代引手数料や送料は無料。
  • 10/2 午後に用事があったので間に合うか不安だったのだけど、無事に午前中に佐川が来訪。代引き分を支払い、正常動作を確認。

9/29、9/30の空白がちょっと謎ではあるけど、3日〜5日くらいとあったので、まぁこんなものでしょう。修理期間中はN1を使ってた。これはこれで悪くないね。iTunesに入れている英語Podcastと同期できないのが問題だけど。

iPhoneが帰ってきてよかったよかったと思ってたところ、今度は10/2にiPadのHOMEボタンが動作不良。こちらはまったく効かなくなってる。iPadのほうは失うものは何もないので普通にAppleのサポートを受けることにした。Apple自体にはやっぱりイラっとくるが、Apple Genius Barの修理担当者はがんばってくれた。

  • 10/2 夜 Apple Genius Barの時間をWebから予約。故障品受付のわりにはずいぶんと偉そうなページでイラッとくる。渋谷の空き時間はいまいちだが、しょうがないので10/4 16:45に。
  • 10/4 16:35 渋谷Apple Storeに着いた。人たくさん。
  • 10/4 16:43くらい?に呼ばれた。が、まだ待てらしい。隣でKeynoteの説明に必死なApple営業員トークを聞きながらニヤニヤしておく。なんか検索したらすごく同じような説明文面のブログがヒットしたのだが、同一人物だろうか…。
  • 10/4 17:00直前くらい? けっこう待たされた。ようやく修理担当の手が空いたようで呼ばれる。
  • 10/4 17:00〜 検証。押しても確かに効かないことを確認。ものすごく強く押すと動く……けどこれじゃ困るよね、ということで保証期間内の無料交換に。貼ってあるフィルタについては現状復帰できないんですよーと言われて、まぁそれはしょうがないよねと了承。と、担当者自身でできる限りやってみます、と驚くことを言い出した。
  • 10/4 17:30 修理担当者が四苦八苦しながらも、最初に自分が貼ったときと同程度に綺麗な形で完成。動作確認をして受取書に署名。有償期間だと25,000くらいかかるんだねぇ。交換品は特に傷やドット欠けもなく、違和感はなし。

2010年08月31日

Rubykaigi 2010に参加してきた

たくさん考え、たくさん笑い、最後はちょっとしんみりしながら(あの場面で見送るスタッフたちは反則)、初参加のRubykaigi 2010が終了。

各講演の映像はRubykaigiスタッフのご尽力で素早く公開済みで、優れた報告・記事・日記も多数出稿されているようなので、中身についてはそちらをご参照。

感謝。公私両面でRuby関係者には、翻訳・執筆・監修・レビューア・そしてもちろんプログラミング言語やライブラリ、とお世話になっているので、上司にかけあって株式会社トップスタジオがゴールドスポンサーのうちの1社に。苦労しながら持ってきたパンフは内容が来場者とミスマッチなのでほとんど掃けなかったけど、それでもお持ちになられた方々には深く御礼。

『My Job Went to India』『情熱プログラマー』著者のChad Fowlerさんと『情熱プログラマー』合同サイン会。直前にちょっとしか話せなくて残念(akrさんの「Unix修正主義」講演がおもしろくて見ていたらギリギリになってしまった)。『情熱プログラマー』サイン会は多数の方々にお越しいただいて感激。またこういう良い本を作りたいなと強く思う。

Conflicts & Resolutions。

内省。素晴しいスピーカーはたくさんいらっしゃったけれども、印象深いのはやはり角谷さん。出力トラブルで一向に始められなくてアワアワしている間も皆が笑顔で見守っている、というのは角谷さんキャラならでは。講演内容は映像をご覧いただくとして、ビート感にあふれるトークと座禅を組んでいるかのような張り詰めた静寂という動静のコントラストが、聴衆に情熱と哲学、鼓舞と熟考を与える。角谷さんとビジョンを共有しているという感覚(角谷さんが悪徳霊媒師とかじゃなくて本当に良かった!)。あまり書くと卜部さんの言われるとおりになってしまうのでこのくらいで。

出会い。Matzさんや修吾さん、かずひこさん、今井さんといった旧交のある方々だけでなく、nari3さん、hsbtさん、たださん、レオさん、松田さん、高井さん、もろさん、Rockyさん、……ごめん、名前を挙げきれないたくさんの人々とお会いして短いながらもお話。誰もが素敵な個性と情熱を持ち、最近ちょっとテンション低めだった私に大きな大きな元気玉。

分解と再構築。今回のRubykaigiに参加してみて、1998年〜2000年頃のLinuxコミュニティで見られたパッション、若手とベテランのほど良い混合、という既視感を今のRubyのコミュニティに感じる。残念ながら、そういったLinuxコミュニティのほとんどは世代の新陳代謝の失敗や、目的の不明瞭化、つまらない内紛といった形でもう残っていない。

Rubyコミュニティがそういう残念な結末を迎えなければよいが、と秘かに憂いていたら、クロージングにおいて高橋さんから、現状の体制のRubykaigiを来年で一旦終えてみる——皆が何をできるかを考えてみる機会を作る、という宣言。継続して喝采を受けてきたことを終わりにするというのは(仮に煽りだとしてもそれが公式発表であるという面で)非常な勇気のいる決断だったと思う。Linux World/ExpoやLinux Conferenceとは背景やしがらみも異なるので同一視はできないだろうが、継続せんがための継続に縛られて誰かが燃え尽きていったり、誰のためであるかがわからなくなったりするのは、「楽しむ」ことがテーゼのLinuxあるいはRubyの世界において本質を見失うこと。

とはいえ、今のRubyコミュニティにはさほど悲観することはないだろう。Rubyは楽しい気分でドライブできるプログラミング言語であり、(柴田さんの述べたように)開発とユーザの世界的なコミュニティのつながりを支援するツールとしてGitHubが存在し、開発者の多数が日本語を解するから「英語が苦手で…」などとつまらないエクスキューズをする必要もない。新たな形での日本RubyKaigi Next Generationをやろうという人もきっと出てくる(それは自分かもしれないし、あなたかもしれない)。

一番のへたくそ。正直に言えば、Rubyの深層を味わい批評する方々の会話を拝見するにつけ新米Rubyユーザとしてはアウェイ感を覚えないことはないんだけれども、それはきっと今が「一番のへたくそでいろ」(『情熱プログラマー』)ということなんだろう。グループで自分が一番のへたくそだ、という感覚は、成長の糧。一番のへたくそからメンターへの成長を目指し、また別の分野でへたくそとして活動。Rubyには「一番のへたくそ」を温かく歓迎する雰囲気があると信じている。

気付き。国内外の方々を迎えるための趣向。ホワイトボード、付箋、フリードリンク、IRC経由の通訳。モニタ上に次々と打ち出されるIRCとTwitterのストリームタイムラインは、井上さんの所属する会社New Bambooが作ったPusherによるもの、すごい。非日本語圏の人々は日本語で主な開発話が進んでいくことにとまどいを感じ、私たちはほかのFLOSSプロダクトでは逆の立場。興味深い。レオさんの「新しい言語を1つ覚えれば視野が倍に広がる。なぜそれを覚えたいかや文化に興味を持たない限りは、習得に苦労する」(自然言語についての発言だけれども、人工言語にも適用可能)。

ヒット。宿は前泊後泊込みで会場隣のオークラエポカル。ネットワークがwiredなのはちょっと不便だったけど、静かでセミダブルのベッドは寝やすかったし、それほど値段高くなかったし、何よりちょっと荷物を置きにいったり身づくろいをしたりが簡単なのが最高だった。食事等については初日の夜に探すのに途方に暮れて「つくばってマジ怖い!」と思っていたものの、実は隣のDAYSTOWNで22:00までは開いていたらしいのでちゃんとiPhoneで探せばよいだけだった(ただ、SBの電波は会場に限らず周辺地域でかなり入りにくかった)。日曜日の夜はちょうどつくば夏祭りが開催されていたので、屋台も堪能(都心ではあまり見かけないヤンキーさんやテキヤさんもいっぱい…)。

決意。来年のRubykaigiもスポンサー(は景気次第だけど(笑))および行動的参加者となろう。高橋さんと一緒にReVIEWの開発とドキュメント化もがんばる。『Rubyレシピブック第3版』の編集組版もがんばった(著者はもっとがんばったけど)のでぜひ見てね。Happy Hacking.

2009年09月03日

TeXユーザの集い2009 参加報告(2)

前半に引き続き。 土曜日ということもあって昼食をとれるようなまともな場所が近辺にないので、事前受け付けで有料のお弁当が提供された。町野さんを見つけて少しお話。その後、「Debian System」制作などでお世話になった三美印刷の本田さんにもお会いして、奥村先生交じえて雑談。今年は美文書の改訂サイクルとのことで期待大。オーム社の森田さんや、旧アスキー/Linux Japanの風穴さん(TwitterではTLで見ていても、実際にお会いするのはすごく久しぶり、Linux Conference以来?)にもお会いする。

午後最初は、「BIBTeXのスタイルファイルをカスタマイズするツールの開発について」大阪大学の萩平さん。 医学系論文執筆に際して大量の参考文献参照にBIBTeXを活用しているが、投稿規定のフォーマットに合わせるのに苦労したため、awkやシェルスクリプトを使って分解再構築を行うツールを作成した(10年前くらいだけど)。BIBTeXの管理機構自体あまりドキュメントがないので試行錯誤しながら解析し、その機能(author書式など)や制約(拡張変数が6つまでしか利用できない、すぐにバッファがオーバーするなど)がわかってきた。完成したツールでは、表記順序や、author数に応じた表現(et al.やカンマなど)を、パラメータで設定できる。
質疑では日本語対応について。日本語BIBTeXでは漢字英字処理や読みなどの日本語用の関数が増えているが、英日混じった状態でauthor名などの処理がうまくいくかは不明。isKanjiスイッチで分ける方法もありそうだけれども、スイッチが肥大化するとBIBTeXのバッファから溢れる恐れがある。

「Geometry 5.0 A more Flexible Interface to Page Dimensions」梅木さん。 geometryパッケージはページレイアウトを簡単に調整できるマクロで、TeXの黒魔術で面倒なマージンやボディサイズなどを、簡易(指定以外のところを補完して、適当に良きにはからってくれる)にも冗長(最大130くらいのオプション)にも設定できる。
2002年に「LaTeX Companion」に収録された際に、F.Mittlbachにいろいろと改良と美感覚(上下あるいは左右のマージンの基本ポリシーなど)の押し付けを受け、改良したものがバージョン3.0。以降、世界的に有名なパッケージとして質問や提案を多数受けることになるが個別対応はしていたものの、リリースとしては放置。2008年に腰を上げてドライバを改良してバージョン4.0をリリース、そして今回のTeXユーザの集いに合わせてさらに改良を重ねており、9月にはバージョン5.0をリリース予定。
Geometryバージョン5.0では、文書の途中でのページレイアウトの変更、ISO B4とJIS B4のサイズ違いの対応、奇数偶数でのページレイアウトの変更、印刷用紙とレイアウトの区別(トンボを打って大きい紙に出せる)、枠表示出力の改良といった機能向上が加わるとのこと。縦書き対応については微妙。新書サイズも入れていないが、寸法で指定すれば使えるだろう。

「koTeX and Korean TEX Society Past. Present, and Future」、特別ゲストのJin-Hwan Choさん。KTS(Korean TeX Society)メンバ。ハングルのTeXでの使用と、韓国国内におけるTeXグループの活動について説明(英語のみ)。
当初、韓国における主要TeXサイトの一方であるChoF's TEX Archiveを開設・保守。ユーザへのTeX(HLaTeX)導入手引きやオンライン議論・情報共有を目的としていた。もう一方にはKangsoo Kimの「LaTeX for Social Scientists」。こちらはその名のとおりの上級ユーザ向け。2001年に統合してKTUG(Korean TeX User Group)を結成。無料でメンバシップはなし。質問板、ニュース、Tips、FTP、CVSなどを提供。その後2007から有料のオフラインコミュニティを構成。現在100人超。定期ミーティングとカンファレンス、年2回のワークショップを開催。CD、DVD、USBメモリでTeXコレクションを配布。「The Asian Journal of TEX」というアジアの言語のTeX処理に関するジャーナルを、香港などのユーザとともに発行。
世界で最大のTeXコミュニティであるドイツのDante e.V.に比べると規模が小さい。Danteは高額な有料会員制度にもかかわらず2000人が参加。カンファレンスも韓国では100人程度だが、Danteは年2回開催で、500人を動員。メンバシップ料金についても悩ましい。若い参加者も入ってこない(40のChoさんが最年少)。ジャーナルの発行もペースを守っていけるか不安。
日本にpTeXがあるように、ハングル向けにはko.TeXがある。ko.TeX以前はKAISTのKorean TeX typesetting systemがあり、ハングルと漢字コードをプリプロセスする。ただMacintoshのPostscriptフォントを使うというグレーというよりも黒っぽい利用方法。1995年からhLaTeXp、1994年から2007年までHLaTeXの時代。英語版TeXには手を入れず、基本的なハングルタイプセッティング機能をサポートする。現在はdhucsというUTF-8サポートのTeXがhLaTeXとセットで使われている。フォントにはUn TrueTypeフォントを使用。
今後はLuaTeXへの期待が大きい。誰が作業できるか。フォントについてはOpenTypeがほしいが、ハングルのフリーで高品質のものがない(政府にも期待できない)。
(韓国でTeXを扱える出版社や印刷所の数を聞こうと思っていたのだけれども、懇親会に出なかったなどの理由で機会を持てなかった。またいずれ機会があれば。)

「化学分野の論文投稿・書籍出版とXΥMTEX」湘南情報数理化学研究所の藤田さん。化学式表現はなかなたいへんで、最初は定規とペンで描いた手書きの図を糊付けして印刷していたというありさま。構造式表現のためにXΥMTEXを開発した。
XΥM ML記法(数学のMathMLに近いもの。CMLは筋がよくないので採用しなかった)で記述することで、TeX EPSやJavaアプレットに変換できる。EPS部分はPSTricksを採用。XΥMの新しいバージョンではクサビ表現もできるようになり、品質が向上している。ステロイドの化学式のようなものも描画可能。
国内外の化学系論文審査システムではオンライン投稿を受け付けており、それに合わせて自身の作業スタイルを確立している。投稿時にはXΥMTeXを埋め込んだ状態で直接PDFを生成し、審査レビューを受けて入稿用にソースからXΥMTeX部分を切り出してEPS画像化し、ソースからインクルードするように手動で変換している。

「dvibrowser〜ピュアJava実装のDVIプレビューア」産業技術大学院の長尾さん。 DVIファイルを監視して更新に追従するTeXプレビューアというのはすでにあるけれども、Java Swingで機種依存性のないビューアを開発した。機能としては、タブ対応、日本語(横組のみ)サポート、非同期ページ読み込み、余白調整、自動リサイズ、簡易ファイラ、自動再読み込み、2400DPIで出力イメージを持っておいてのダウンサンプリング表示(より綺麗に見える)といったもの。Sourceforge上で開発されており、BSDライセンスを適用。EPS対応はまだ部分的。1.0.0を12月にリリース予定。
環境依存にしないように、更新については小さなhttpdを裏で動かしておいて更新メッセージのやり取りを行っている。機能はレイヤー化しているので、サーバでの運用も可能。Google Talkの中でTeXを使うデモ画面(回線の都合でキャプチャのみ)も披露された。今後はビルド支援機能の追加や、付箋やページ間リンク、ハイパーリンクといった目標がある。

「プレゼンテーション資料作成作業へのRule of Three適用支援」物質・材料研究機構光材料センターの轟さん。 プレゼン手法の1つであるRule of Three(重要な事項を3回繰り返して提示する)を作成者に強制化するための提案。マクロで定数を定義しておき、それを呼び出すことで繰り返しの入力のわずらわしさを防ぎ、またわかりやすくする。実装クラスにはseminar.clsとprosper.clsを使い、Rubyのスクリプトでmakeファイルやテンプレートの配備を行う。
Rule of Threeを実践することでプレゼン全体の見通しがよくなり、短い表現で記述する必要に迫られることで翻訳なども容易になる。配布資料もわかりやすくなる。東京理科大学の学生に教えているが、彼らが賞を取ってくるなどの実利的な効果もあった。
(プレゼン手法提案としてはよかったのかもしれないけれども、TeXの講演が並ぶ中での話としては少々退屈だったかな。)

「ptexliveの開発状況と今後」関西学院大学の土村さん。 LinuxのディストリビューションとTeXのディストリビューションというのは、コア+各種周辺があって収録配布方針がそれぞれ異なっていて全体が調和するよう努力が払われていて、使う=ディストリビューションを選ぶ、という観点で同じような感じだよね、というお話からスタート。 そして面倒を避けるためには、(ライセンスを明確にするなどして)ディストリビューションに採用されることが重要、と。
そして日本語TeXディストリビューションptexliveの説明。pTeTeX3の後継に相当。pTeX、mendex、makejvf、新しいドキュメントクラス、UTF/OTF向けのVFファイル、pdvips、pxdvi、文字エンコーディング変換のptexencライブラリなどを収録。和文フォント設定はdvipdfmx由来のupdmapで集中管理する。 ptexencの文字エンコーディング判定は、内部でフィルタ(デフォルトはnkf)を呼び出している。SJIS、EUC、JIS、UTF-8といった文字エンコーディングを使用可能。全面的にUTF-8を採用してスタイルファイルからJISを一掃した。ファイル名の文字コードは守備範囲外だが、UTF-8決め打ちでよいのでは?という意見も。
短期目標としては自力で日本語TeX環境を簡単にmakeできるようにする。中期目標は日本語TeXパッケージ製作者の作業を楽にする。長期目標はpTeX依存のパッチを上流に取り込んでもらい、最終的にptexliveを不要にする。そのためのロードマップとして、ptexliveをtexlive 2009に対応し、ptexencライブラリをCTAN登録、texliveにpTeX+ptexencの採用を働きかけていく。じつはtexliveのw32texは角藤さんがバイナリ作成しているので、ptexliveが引き取られればptex.exeもtexliveにあっさり入っちゃったりして、という妄想もある。
ダウンロードはされているようだが、動作報告がほとんどないのでちゃんと動いているのか少し不安。Wikiに動作報告を寄せてほしい。
(その後土村さんと少しお話した。Debianの日本語TeXの状況については土村さんのところにも要望がきており、ちょっと気にされているらしい。メンテナのmhattaさんとしてはptexencにアレゲパッチ風味が感じられるのと、tetexにパッチを当てる必要があるという点を懸念。ただ個人的にはptexencはUTF-8対応OSを謳うなら入れざるを得ないだろうし、tetexについてはNorbertとはお好み焼き食った仲だしJAISTの客員教授で日本にいるので日本語TeXに必要なんだからなんとか入れてくれと頼むことはできると思う。Squeezeのフリーズ近いのでどうするか早く決めたほうがいいね。)

「FinkにおけるTeXの状況の紹介」東大Finkチームの岡山さん。 東大の全キャンパスを結ぶ計算機システム(ECCS)はユーザ3万人を抱え、主に情報教育の講義用に使用されている。OSは2000〜2001年がNetBSD、2002〜2003年がDebian GNU/Linux。そして2004年からMacOS Xが約1500台採用されている。 MacOS X移行に際して一番の問題となったのは、既存の日本語対応ツール(pTeX、Ghostscript、Emacs、a2ps、……)などがMacOS Xの標準環境に不足しており、日本語環境整備、特にUTF-8エンコーディングへの対応が必要とされた。 Mac OS X向けの追加のパッケージシステムとしてはFink、MacPorts、pkgsrc、easypackages、MacOS X workshopといったものがあるが、ソースとバイナリの両方を利用できかつ国際的に開発されているFinkを選出した。
Finkによる配備のために相談員(mhattaさんや小林さんや郷田さんのいたところ?)による学生有志で東大Finkチームを結成。ECCSで使える品質、Unicodeで利用可能にするためにFinkのソフトウェアの改良やアップロードを行い、Fink本家にも還流した。Fink開発者の1割(10人ほど)が東大Finkチーム。ユーザが何も設定せずに日本語環境を使えるuser-jaパッケージを作成した。
FinkのTeXの状況。GhostscriptにはESP 7.07にOTFヒラギノ対応、縦書き、CJK、フォント埋め込み回避、ps2jpdfなどの拡張を行った。GS 8.xに上げるかとかX11不要版も作るかとかチーム的に悩む部分はあるのだが、そもそも要望がこないのでどうするかはわからない。
pTeXはXのあり/なし版を用意。土村さんのptetexベース。apt-get install ptexで環境を構築できる。UTF-8をデフォルトとしている。texlive2008もテスト中。
現在の問題としては、ドキュメントを書く人が少ないことと、ユーザからのフィードバックが少ないこと。 質疑では学生の卒業サイクルでのFinkチームやTeXの衰えを懸念する質問が。希望者が多いとは言えないが、年に何人かは現れるので廻ってはいるとのこと。また、MacOS Xを導入したものの次のリプレースで辞めている大学も多い中で東大はどうするのか?という質問には、偉い人に聞いてください(笑)だそうで。

「Vine Linux 5.0における日本語TeX環境の特徴」Project Vine/ウルスの山本さん(IRC:munepi)。 先ごろリリースされたVine LinuxのTeX部分の紹介。「Vine LinuxはTeX専用ディストリビューションではないです!」という叫び。apt-get install task-tetexを実行するだけで日本語TeX環境が揃う。
システムのUTF-8移行に伴い、ptexencによる文字エンコーディング自動認識を導入。 OpenTypeフォント用のVF、prosper/powerdot/beamerのプレゼンテーションクラス、奥村さんの最新クラスファイル集、吉永さんのリストマクロ、picture環境のdict2eなどを追加/更新。 和文フォントマップを管理するupdmapのために、OpenType版モリサワ/ヒラギノ/小塚のフォントも使えるようにするハックを追加している。
三美印刷の本田さんの投稿を受けて、fmex9.pfbの左括弧グリフがAcrobatバージョンによって脱落するという問題を解析。修正したtetex-tt2001-fmex789とtetex-bakoma-cmex789を生成し直した。
VineのTeXで目指すもの。開発者、利用者、現場の情報共有。Ubuntuくさい絵だけれども、Vineラヴ。でもウルス社内ではVine使ってない…。
(後で山本さんと少しお話。Debianのパッケージングにも興味があるということで、リクルートしてみた。)

「upTeX/upLaTeXの開発と今後」田中さん。 pTeX/pLaTeXのUnicode化した処理系。競合としては入出力だけUnicodeするinputencパッケージや、Unicodeの多機能を実装するXeTeXなどがあるが、欧文との親和性を保ちつつ、CJKだけUnicode化するような折衷案をとった。アラビア文字、インド系文字、タイ文字といったものを考えるとupTeXで世界制覇は「無理」。
各国語固有の問題への対処。和文の内部コードが16ビットでは不足していたために29ビットに拡張。和文欧文切り替えをできるようにしたことで、pTeXが部分的に阻害していた欧文処理を綺麗にこなせるようになった。ハングルは改行をスペース扱いにする必要があるため、切り替え部分を拡張。ギリシャ文字やキリル文字でいわゆる半角/全角幅が区別されない(ラテン文字は別のコードポイントが割り当てられている)が、マークアップでこれを指定できるようにしている。dvipdfmx、dvips、xdvi、dvi2ttyについてはパッチで対応。dvioutに不具合が少しある。mendexはEUC依存の部分があって難航。 文字が16ビット範囲をはみ出してしまうのでDVI命令set3を利用してU+2xxxx領域の漢字にも対応した。当時から大量の文字を扱うことを想定していたのかと思うとKnuth先生はすごい。
upTeXと競合のΩ、XeTeXなどとの比較。後方互換性、CJK対応、完成度の面で強み。認知度が低いのでがんばる。 自称pTeXの後継者として、今後はptexliveベースにし、関連ソフトウェアのupTeX対応も進めていく。 ChoさんからLuaTeXでがんばればjvmも読めるんじゃ?という提案もあったらしい。

「upLaTeXを用いた多言語文献目録の組版」京都大学の守岡さん。 upLaTeXで「東洋學文献類目」を組版するにあたっての事例。文献類目は1981年から電算化を開始しており、いろいろな言語で発表される文献、甲骨文字などの特殊な言語の固有名詞の登場に対応していかなければならない。 なお、upLaTeXでもタイ文字はパッケージを追加することで(少し呪文を書いて)サポートできている。
XEmacs CHISE拡張で多言語を文字表現できるようにしている。ないフォントについては専門の事務員が外字エディタでTrueTypeフォントを作成。入力できないものはSGMLの外部エンティティ的に表記してXEmacsにそれを内部処理させている。
電子化においては、当初はEBCDIC+JEF+独自外字を用いたLaTeXベースから始まった。2001年からUTF-8+外字とすることで、外字部分については大きく削減できた。処理系はΩ/CHISEで、フィルタを使えて柔軟ではあったものの、処理が遅く、また類目の一部だけを作業ということができなかった。 2002〜2004年はpLaTeX+OTF+CHISE。キリル文字の扱いで苦労する。2005年からupLaTeX+OTF。 Unicodeにない文字が年に数個現れてくる(二度と使われないものもある)。甲骨文字、学説の固まっていないもの、新しい資料。そういうものをタイトルに入れるのは勘弁してほしい。
(守岡さんとは京都のLinux Conference以来かな? 少しお話。XEmacsからGNU Emacsに移行するのも悪くはなさそうだけど、GNU Emacsの中の見通しが悪いのと、XEmacs CHISEで蓄積したものがあるのがねぇ、とのこと。)

「TeXを用いたWeb上での稀覯書の電子復刻」福岡大学の永田さん。 人文研究においては、厳密なテクスト批評に基づく文献研究では稀覯本の参照が不可欠だが、たいていの場合には商用に乗らずに復刻しないという問題がある(そもそも出ないから稀覯書になるともいえる)。
そこで、稀覯書のオリジナルをテキストデータベース化し、TeXのマークアップを埋め込んで、検索や自動組版などの多様なサービス提供を図る。 ドイツ旧字体で書かれた稀覯書「グリム兄弟による子供と家庭のメルヒェン集」が例。 オリジナルは稀覯書室で保存液に漬けた特別な管理下にあり、スキャナを通すと崩壊してしまうので、撮影して、人間によるテキスト化をまず行った。 TeXのマークアップは最小限だが、TeXコメント内に原書ページ番号などのメタ情報を埋め込んでおくことで、後でNamazuによる検索で有用になるよう配慮した。
旧字体にはFraktur書体が使われており、イタリックの概念がなく強調するには文字間を広げる、ウムラウトの代わりに小さなeが使われるなど、特殊なものが多い。khmというドイツ旧字体処理パッケージがある。
レイアウトや書体などを設定して内部でpdfTeXを呼び出し、組版されたPDFを返すというWebサービスを構築した。
質疑ではTEIを使わずにTeXを採用した理由。TeXのほうが美しい組版結果をすぐに得られるという点が大きなメリットという。

閉会の辞は、大会委員長であり、dvioutの作者でもある東大の大島先生。5分のはずが15分くらいお話になられていたような…(笑)。dvioutの開発の歴史にはじまり、今回の発表で見た若手開発者への喜ばしい驚き、そして大会運営スタッフや発表者への感謝にてクローズ。

このあとは懇親会だったけれども、私は夕食の準備のために皆さまにご挨拶して(森田さんのおかげで、編集を担当した「LaTeX2e辞典」著者の吉永さんともご挨拶できた!)帰路へ。 全17講演とあわただしいカンファレンスながらも、内容は充実しており、また時間も各セッションチェアがうまくコントロールして、短すぎず長すぎず飽きのこない楽しい1日を過ごすことができた。運営スタッフ、発表者、参加者には感謝の意を表したい。

なお、会場は大スクリーン、折り畳み式の机、電源、有線(無線も本来は利用できるはずなのだが、日曜日の停電に備えてシャットダウン済みだった模様)を完備し、階段状に構成されていることで後ろの席でも見やすいという非常に優れた場所だった。ほかのイベントでも可能なら使ってみたいものである。参加者は事前登録で70人。
ディストリビューションに関わる者としては、ptexlive、Fink、Vineのお話が一番興味深かった。 今回のアカデミックな雰囲気を踏襲しつつも、次回機会があれば印刷所の立場からのお話も伺ってみたい。

2009年08月31日

TeXユーザの集い2009 参加報告(1)

本日8月29日に、東京大学生産研究所コンベンションホールにて、TeXのコアユーザ/開発者によるカンファレンス「TeXユーザの集い2009」が開催された。重鎮によるディープな話、現在最前線で日本語TeXコアの開発を進めている方たちの報告、新進気鋭の技術やテクニックの発表、と駆け足ながらも極めて密度の濃いイベントとなり、喝采で幕を閉じた。自身のメモも断片化ぎみでまとめにくい。近日に論文資料集が発表されるようなので、詳細についてはそちらを参照のこと。

休日ということで正門しか開いていないという事前情報を基に、最寄り駅である東北沢を使ってみた。本当に何もない駅…。しかも微妙に地図を読み違えて代々木上原まで歩いてしまう羽目に。トホホ。EZナビもわかりにくくて逆ギレしてみる。やっぱiPhoneで大きくGoogle Maps出したいです、という気運が高まってきた。9時に着くつもりだったけれども、会場入りは結局9時15分くらい。時計台が渋い。

本カンファレンスの実行委員長であり、国内のTeXユーザなら誰もがお世話になっている奥村先生から開会のご挨拶。生で拝見できて感激極まる、ありがたやありがたや。後でミーハーに名刺交換もさせていただいた。日本においてのTeXのイベントは久々であり、去年の韓国で開催されたイベントに刺激を受けて今回日本で開催の運びに。可能なら各年で開催し、ジャーナルも出していきたいとのこと。

トップバッターの発表は、「TeX挿図用CASパッケージKETpicの開発と今後」東邦大学の高遠さん。 MapleやMathematica、ScilabといったCASソフトウェアで生成したプロットデータからTeXのドロー描画のTpicに変換するというもの。EPSよりも小さくて修正も容易。
高遠先生はもともと高専の教師をされており、教科書作成の過程でWinTpic、Maple+emathPといったマクロを使ってきたものの、前者はグラフが描画できない、後者は破線処理やハッチングのバグなどいろいろ問題があって、結局Tpicのコードを直接出力するためのKETpicの開発に着手。 CAS対応はMapleに始まって、Mathematica、Maximaと続き、Scilab、MATLABときて現在に至る。
比較的簡単なコマンドでTpicを生成することができ、閉じた自由曲線を描いたり、空間曲線では自動で奥行きに基づく隠れ線処理をしてくれたりする(このあたりはCASがやってくれる)。曲線は滑らか。 挿図による表現があることで、学習者はそれを観察して発見する、というアプローチを採ることができる。

「TeX描画のためのCASマクロパッケージKETpic用GUIの開発」名古屋大学の中村さん。 先のKETpicを全面的なテキスト指定ではなく、もう少しマウスなども併用してポチポチとグラフィカルに操作したり、プレビューしたりとできるようなツールを、MapleのMapletパッケージのGUIコンポーネントを使って実装した。 若干説明が拙かったのと、デモで不手際などがあり、不完全燃焼な発表に終わってしまった感。 MapleのGUIのはOS非依存で動く「はず」だけども、今のところはMac上でしか検証していないらしい。

「独自数式入力システムの開発とTeXのWebアプリケーション化」東京大学の町野さん。 じつは町野さんにはひょんなことから過去に一度弊社でプレゼンを見せてもらってお話などしたりして、発表を見るのは2回目。 講演は堂々としていて聴衆の反応も良く、前回よりずっとうまくできていたと思う。
数式をWebブラウザ上でもっと簡単に書くというテーマを考えている(家庭教師の教え子と写メールで解法のやり取りとかどうなのヨ、という例など)。 Wikipediaでの数式はTeXで一見綺麗だが単なるドットの集合体=画像化されており、数式としての意味がなく、検索もできない。 Suim(Sushiki Input Method)というブラウザ向けフレームワークを作成してみた。TeXコードあるいは辞書で決められた簡易名(sin、sekibunなど)を記入することで、JavaScriptがMathMLに変換し、Firefox上で(テキスト文字として扱える)数式を表現できる。入力してスペースキーを押すことでFEP風に変換するという手段や、入力途中で候補補完表示を行うといった機能も作成している。 とはいえ、MathMLをネイティブにサポートしているのがFirefoxだけという現状が厳しい。 現在はこれらの実装はクライアントサイドのJavaScriptで実装しているが、将来的には辞書部分をサーバーサイドに持たせることを検討中。
また、TeXのセットアップが難しく、人によっても環境が異なるという問題点を挙げて、TeXをWebアプリケーション経由で利用し、ブラウザで記入した内容からPDFを返すという提案も行われた(これについてはほかの発表者ですでに実装した例などもいくつかあった)。

「高校教科書のオープンソース化 (TeXとウェブという視点から)」コンテンツアンドシステムズ、FTEXTの吉江さん。 オープンソースというかCCで出しています、だけど。 中学〜大学・予備校の教師や、プログラマー、大学生・高校生といった幅広い層で形成される「FTEXT」という教材開発プロジェクトで、学習教材制作にあたっている。 高校数学の教科書や、センター試験の解説速報(CCライセンスで提供)、演習問題データベースといったものをTeXベースで制作してきた。 コアメンバが執筆、サイトで意見収集、フィードバックを受けて修正というイテレーション。 フィードバックは現在Acrobatの注釈機能を使用しているが、TeXへの手戻しが悩ましい点。 FTEXTの教科書プロジェクトを推進していく上では、リーダーシップ、数学教育、リテラシーの3面を考える必要があるが、リーダーシップと数学教育の点では韓国の学生の協力を得て英語翻訳が進んでいる。リテラシーについてはできるだけTeX自体を知らなくても使えるような仕組みを構築。
質疑応答では著作権について。入試問題の著作権があいまいでグレー状態であり、本当は入試問題自体をCCライセンスにしてくれるとありがたい。数学以外では物理でやってみている人がいる。英語や国語は著作権がややこしい。歴史は歴史解釈を巡って別のややこしいことになる。数学はWebで見せるのが面倒な以外は、著作権についてはわりと軽めだそうだ。

「TEXとDITA」ネクストソリューションの中野さん。pTeX開発者。うぉー。
歴史をひもとき、国内においては1987年の日本語MicroTeX発売以来の流れを紹介。1990年に東京書籍印刷のpTeXst発売、縦組対応のpTeX 2.99 j1.6p1.0.9リリースとあってTeXによる商業出版の幕が開けた。1992年にpTeX 2.99 j1.7 p1.0.9Fリリース、インプレスが設立されてアスキーのTeX開発メンバがごっそりそっちに行ってしまったよ、という逸話。
日本語TeXの開発・保守においては、TeX最新版への対応を目標にしつつ、とにかく安定性を旨とした。昔の日本語TeXはたくさんのチェンジファイルとパッチの集合。 TeX2.99→TeX3.14での変化が大きかったため、pTeXで拡張していた部分を抽出して1つずつ3.14のチェンジファイルに埋め込んでいった。JIS/SJISなどはバリエーションとして対応。 チェンジファイルが複数あるのは文芸的プログラミングから外れるのでよろしくないが、tieコマンドが登場したことで複数のチェンジファイル+ウェブファイルを1つにまとめることができ、またチェンジファイルの集合も1つのチェンジファイルにできるようになった。
pTeXができたことで、pLaTeX2eや周辺ツールの整備も進んだ。 pLaTeX2eは当初6ヶ月おきのリリースとして積極的に日本語機能拡張を進めていった。 LaTeX2eも当初は開発が活発だったが2000年から鈍化。2000年12月が最後となっている。 2002年にpTeX 3.0をBSDライセンスでリリースし、2003年はpTeXやteTeXがバグフィクスリリースを次々と出すはめになってだいぶ混乱した。 サポートについてはユーザ/ディストリビュータの自主的なパッケージングやサポート、奥村さんのサイトやMLでの質問吸収のおかげでアスキーがわずらわされなくて済んでいる。感謝。
最近の興味方向としてDITA(Darwin Information Typing Architecture)を紹介。 IBMが開発、現在はOASISのトピックベースの文書アーキテクチャで、断片化されたひとかたまりの情報XML文書(トピック)を用途に応じて選択・組み合わせ(マップ)、HTML・PDF・ヘルプファイルなどを生成する。 トッピックは基本トピック(単純で書きやすい文書構造だが要素が不足して検索しづらい)、コンセプトトピック、タスクトピック、リファレンストピック、グロサリートピックという基本構造のほか、独自のカスタマイズトピック、たとえば「学習の進め方」や「シラバス」といったものも作ることができる。タグの名前が違っていても同じ意味を継承するといったことができる。 EWB(!)でDITA的なものを作る例を紹介。体裁、トピック文書、マップファイル、スタイルファイルやトリガという構成から、ドキュメントを生成する。 ちなみにewblibの中にascpsboxとwakuboxというパッケージがあり、これを使うとpLaTeX2eネイティブでページをまたぐ枠を作れる。
質疑では今後の開発についていろいろと。中野さん自身はTeXにはあまりもうリソースを割けず、土村さんや角藤さんらの活躍に期待という模様。

ここでお昼タイムへ。後半に続く。

2009年05月09日

「Subject: Amazon アソシエイト Web サービスの名称変更および署名認証についてのお知らせ」のツール側対応作業

表題SubjectのメールがAmazonからきてるんだけど(いくつかのサービスで利用してるので)、名称変更はどうでもいいとして、8月15日以降はリクエストアクセスの電子署名を付けないといけなくなるようだ。一般ユーザにはほぼ関係のないことではあるが、Amazonにアクセスして何かサービスに転換する(たとえばブログ記事に貼り込ませる機能を提供する)のが必要な人にはいろいろ頭が痛いことになりそう。 ガイドはあるものの、とても……面倒です。署名には、開発鍵を作ったときに一緒に作成された秘密鍵を使うことになる。開発鍵だけを受け取って運用してたようなサービスでは対応が大変そうだなぁ。以下RESTful版のガイドを適当に訳。

ItemLookupするのに「http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=00000000000000000000&Operation=ItemLookup&ItemId=0679722769&ResponseGroup=ItemAttributes,Offers,Images,Reviews&Version=2009-01-06」としてるとする。

  1. アクセス時間を示すタイムスタンプ属性をまず追加(とりあえずGMTで「2009-01-01T12:00:00Z」)。「http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=00000000000000000000&Operation=ItemLookup&ItemId=0679722769&ResponseGroup=ItemAttributes,Offers,Images,Reviews&Version=2009-01-06&Timestamp=2009-01-01T12:00:00Z」
  2. リクエストのコンマやコロンをURLエンコード(%〜)化。「http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=00000000000000000000&Operation=ItemLookup&ItemId=0679722769&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Version=2009-01-06&Timestamp=2009-01-01T12%3A00%3A00Z」
  3. &で区切られているパラメータ=値 のペアに内部的に分割(&は取る)。
    Service=AWSECommerceService
    AWSAccessKeyId=00000000000000000000
    Operation=ItemLookup
    ItemId=0679722769
    ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews
    Version=2009-01-06
    Timestamp=2009-01-01T12%3A00%3A00Z
  4. パラメータを辞書順に並べ変える。
    AWSAccessKeyId=00000000000000000000
    ItemId=0679722769
    Operation=ItemLookup
    ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews
    Service=AWSECommerceService
    Timestamp=2009-01-01T12%3A00%3A00Z
    Version=2009-01-06
  5. &でつなげ直す。これで署名可能な文字列になった。「AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06」
  6. 次のような文字列(改行付き)を作成する。
    "GET
    webservices.amazon.com
    onca/xml
    AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06"
  7. RFC2104のHMAC-SHA256アルゴリズムと秘密鍵で、上記の文字列の署名ハッシュを作成する。「pwqYQRc3RepIrf7m+VMRy/jFXx/ZBSPsaSFFexIUoSI=」(秘密鍵が1234567890だった場合)
  8. +、=、/などをURLエンコードする。「pwqYQRc3RepIrf7m%2BVMRy%2FjFXx%2FZBSPsaSFFexIUoSI%3D」
  9. 上記のエンコード済み署名をリクエストにSignatureパラメータで付加する。「http://webservices.amazon.com/onca/xml?AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06&Signature=pwqYQRc3RepIrf7m%2BVMRy%2FjFXx%2FZBSPsaSFFexIUoSI%3D」

blosxom Kitのawsxsomを直すのだるいな…。あと社内でも独自のサービス作ってるんだが、これも直さないといけないようだ(こっちはRubyだしわりと楽めではあるが)。

2009年02月09日

Vaio TypeZ + Intel X25-M Mainstream SATA SSD + Debian Lenny

先月購入したVAIO TypeZに導入するIntelの160G SSD(X25-M Mainstream SATA SSD SSDSA2MH160G1C5)が届いたので、分解してHDDと交換した。 分解交換手順は「ソニーが基本的に好き。」サイトの こちらこちらに詳しい。左前面と左前側側面のロックが固くなってて苦労したが、なんとか開けることができた(記事にあるように、精密ドライバ、園芸用のラベルを活用した。なお、ネジの一部はマグネット付きのドライバじゃないと取れない)。確かにHDDに比べると少々厚みがあるために、ディスクロックのアルミが若干浮く感じ。

F2キーでBIOSメニューに入り、無事に160Gのディスクとして認識されているのを確認した。事前に作成しておいたVAIOリカバリーDVDで、リカバリマネージャ領域(sda1)とWindows領域(C:、sda2)、空のドライブ(D:、sda3)を作成。その後、Vistaのディスク管理ユーテリティでD:ドライブを削除した。

さて、VistaはBIOSアップデートツール以外の用事はないので、Debianのインストールである。ただ、Debian Lennyにおいても、そのインストーラで採用されているLinuxカーネル2.6.26ではtypeZのEthernetを認識できない。ということで、2.6.28カーネルを使ったカスタムインストーラ(amd64版のみ)を作成して、hd-mediaイメージをUSBに書き込み、その中にisoファイルを入れるという手順で用意した。カーネルがまだunstableにもexperimentalにもないDebian kernelチームの非公式debファイルである以外はほぼそのままLennyのインストーラだ。なお、公開バージョンと自分で使ったバージョンが違ってるので、記憶が若干怪しいのだけど、自分で使った古いバージョンだとlinux-image-2.6メタパッケージが2.6.26を指していて標準debconf優先度だと一旦エラーになる。この場合はexpertモードでインストールして、カーネルを選択するところで「2.6」じゃなくて「2.6.28」のカーネルを明示的に選択するようにしていただきたい。空き領域を選択、1つのパーティションに、を選んで、結果的にパーティション構成は次のようにした。160GあるとVista入りでもそれほど苦心しなくていいのがありがたい。

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1178     9454592   27  Unknown
/dev/sda2            1178        7098    47554559+   7  HPFS/NTFS
/dev/sda3   *        7099       18949    95193157+  83  Linux
/dev/sda4           18950       19457     4080510    5  Extended
/dev/sda5           18950       19457     4080478+  82  Linux swap / Solaris

Windows領域用のGRUBの設定もちゃんと行われて、再起動すればDebian Lennyが普通に起動する。デフォルトどおりデスクトップ環境をタスクで選んでおけば、GNOMEのログインマネージャが画面に表示される。少しカスタマイズ。

  • 最初はvesaドライバで動いていて横長の解像度になっているので、/etc/X11/xorg.confのDeviceセクションに「Driver "intel"」を加えてintelドライバを使うようにする。これで本来の1600x900になる。
  • 無線のファームウェアがないので、iwlwifiのサイトからiwlwifi-5000-ucodeアーカイブを取得し、展開してできるiwlwifi-5000-1.ucodeファイルを/lib/firmwareに配置する。rebootするかiwlagnモジュールをrmmod/modprobeすれば、wlan0として見える。GNOMEならあとはNetworkManagerで設定できる。
  • スワップはハイバネート用に使うだけにするのでマウントはOFF、通常ファイルシステムにはrelatimeを付けて書き込みを減らす。/tmpをtmpfsにする。
    #                
    proc            /proc           proc    defaults        0       0
    /dev/sda3       /               ext3    errors=remount-ro,relatime 0       0
    #/dev/sda5       none            swap    sw              0       0
    /dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
    tmpfs           /tmp            tmpfs   defaults        0       0
    

Debianで標準バッテリ+Intelビデオモード+無線ON+Bluetooth OFF+powertopで可能な範囲の動的調整 をした状態で、バッテリ動作時間は4時間程度という見積りになった。多分無駄に割り込みや電力の供給がされているnVIDIAや指紋認証を切ることができればもっと向上しそうなのだが。

本機はIntelとnVIDIAのデュアルビデオ構成になっていて、HDMI端子のほうはnVIDIAじゃないと出せない。試しにnvidia-kernelドライバ(experimental)を突っ込んでBus IDの明示もしてみたが、モジュールは登録されるものの、/dev/nvidia0にアクセスできないというエラーでX.orgの起動には至らなかった。おまけにnvidia-glxが入るとIntelのGLが動かなくなるので、Debianで2ビデオを共存させるのはかなり困難そうだ。

ぴゅう太みたいなキーボードにはだいぶ慣れてきた。ホットキーはまだボリューム調整しか動かないようだ。輝度調整はホットキーではできないが、ACPIでの操作はできるので、GNOME画面設定やGNOMEアプレットなどで設定できる。サスペンド/ハイバネートはhal+pm-utilsだとどうも怪しい(エラーになったりウィンドウ領域が1024x768風になったりする)ので、uswsuspのs2ram -f/s2diskを使うことで現在対処している。指紋認証と輝度ホットキーは使えるようになってほしいところ。

LooxのSSD換装のときも体感がかなり良くなったが、Intel SSDの効果はすばらしい(これで安ければなぁ…)。元々HDDでも速かったものの、音も熱もなく、新規に起動するアプリケーションがメモリキャッシュに乗っているかのような速度で上がってくる。OpenOffice.org、GIMP、Iceweaselあたりの重量アプリケーションもおそろしく速く起動する。HDD環境のときもベンチ取っていないので数値ではわからないし、あくまでも体感なんだけど。hdparm -tTはこんな感じ。

/dev/sda:
 Timing cached reads:   13590 MB in  1.99 seconds = 6821.51 MB/sec
 Timing buffered disk reads:  744 MB in  3.00 seconds = 247.72 MB/sec

ということで、保有しているうちで最速、最大メモリのマシンができた。ビルドなどにも活躍してもらおう。

2009年01月22日

Seagateディスクショック

Seagateから発表されているように、昨年Seagate社から発売されたディスクにファームウェアのバグがあり、起動時に二度と認識されなくなるという問題が発覚したようだ。火曜日くらいには問題あるシリアルの確認Webページと、いずれファームウェアアップデートが出るとのこと(どうやってアップデートするのだ?USBメモリにでも書いて起動?)。

……Seagateいっぱいあるよ…。

smartmontoolsパッケージのsmartctl -aで確認。

kmuto.jp
[/dev/sda]

Device Model:     ST3500320NS
Firmware Version: SN05

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   079   066   044    Pre-fail  Always       -       89507539
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   075   060   030    Pre-fail  Always       -       36301286
195 Hardware_ECC_Recovered  0x001a   037   036   000    Old_age   Always       -       89507539

[/dev/sdb]

Device Model:     ST3500320NS
Firmware Version: SN05

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   081   063   044    Pre-fail  Always       -       142634583
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   075   060   030    Pre-fail  Always       -       4331567912
195 Hardware_ECC_Recovered  0x001a   033   019   000    Old_age   Always       -       142634583
……終わっとる。ECCで必死に直してる状況。次のrebootで生きられないかもしれん。
debianミラーサーバのシステムディスク
[/dev/sda]

Device Model:     GB0250C8045
Firmware Version: HPG2
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   075   064   044    Pre-fail  Always       -       38355918
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   067   060   030    Pre-fail  Always       -       5654043
195 Hardware_ECC_Recovered  0x001a   040   035   000    Old_age   Always       -       38355918
……HPのDL120G5に塔載されていた玉なんだが、HPモデルのIDが付いているものの、状況証拠的に中身はSeagateのOEMくさい。最近のHPのデスクトップ/ラックマウントのSATAディスクはSeagate製なのだろうか? DL115のRAIDはMaxtorだった。
買っておいてまだつなげてないサーバ用RAID
12月に買ったST31500341AS×2なわけですが。終わった……。まだserialなどはチェックしておらず。

シリアルチェッカー待ちだけど、ほかの訳にあるような「〜12月に出荷したもの」じゃなくて「12月中に出荷」と訳すとすると、今回のに影響するのは最後に買ってまだ使っていない玉だけなんだよなぁ。いずれにせよ、だいぶ嫌な数字が出ているのが気になる…(長く使ってるWDのディスクではこういう数値出ていないので)。

[2009.1.19] 「12月以前」で正しいらしい。チェッカーで3つとも見事に当たり(affected)。泣。サーバ用RAIDは大丈夫だった。ファームウェア更新待ち。iLO経由でも入れられるイメージも公開されるといいなぁ。HPのはいっぱい塔載しちゃってるんだろうし。

[2009.1.22] SN05はヒットでSN06のファームがメールで取り寄せられるようだ。しかしNOCにあるやつだし、そう簡単に作業できんよ…。SMARTがおかしいのはSeagateの伝統らしいし、バックアップはこれまでどおりdailyで取って、いずれWDあたりとのRAIDにしたほうがいいかもしれない。CFD等代理店経由で購入したのは大丈夫、というアナウンスが回っているらしい噂。ただ何が大丈夫なのかハッキリしない感じ。NOCのユーザグループで使っているRAID1 x 2、つまり4台もSeagateのヒット作だった。さらに家でDTP作業用に使ってる外付けディスクも中身がSeagateだった…。代替セクタが出たのはユーザグループのうちの1台だけで、かなり前なのにそれも広がっているわけではないな。

2008年09月17日

Debianパッケージ作成入門の入門

ずいぶん前から続いてるなぁと思ってたYLUGカーネル読書会だけど、今回Debian JPのHenrichくんがパッケージ入門を発表するとのお知らせがHenrichくんジキジキにspamされていた。Debian中級なので行かないといけないな。YLUG自体10年くらい前にgotomかukaiさんに誘われて行ったとき以来だけど。

会場は新橋にあるミラクルリナックス社のセミナールームで、銀座線から適当に勘で向かったところ途中で微妙に迷った。ビバEZナビウォーク。ずいぶん立派なビルで、セミナールームもちゃんとした机と椅子が置かれてる。電源とネットは希望すれば利用可能。金曜日の告知だったにもかかわらず、30名超の盛況。これもHenrichくんの人徳と言わざるを得まい。

18:30に開場し、19:00のお題開始の前に「何か言いたいこと発表」として小園井さん@LFによるLinux Foundationの活動紹介。来年10月に東京でカーネルサミットが開催され、よ。氏もカーネル読書会第100回をBOFの1枠としてTorvalds氏を交じえて開くんだそうな。それからひとしきり参加者の自己紹介。なにぶん小心者なので控え目に目立たないようにしておく。

19:00よりHenrichくんの表題発表。未承諾広告2つほどの後、パッケージを作成する理由として、「既存パッケージの修正/更新」「パッケージングされていないソフトウェアのパッケージ化」の2つに分け、前半/後半で説明。

既存パッケージの修正/更新では、helloパッケージ、vl-gothicパッケージ、jdパッケージを例に、プレイン環境の構築、apt-get source、build-dep、dch、uupdate、uscanといった手順の紹介。aptitude build-depってヘルプに出てこないね。update-alternatives --config editorでエディタ(editorコマンド)を変更する手法が紹介されていた。私はEDITOR環境変数にgnuclientを指定しているのだけど、changelog書くときにはEmacsだと不便(バックアップファイルとか邪魔だし)なので、EDITOR=vi dchを使ってる。watchファイル/uscanはいろいろ深いので、興味のある方はmanやwatchファイルサンプルなどを参照。

前半が終わったところですでに予定の20:00になってる気がするが、後半の新規パッケージ作成講座。まずはRPMパッケージがある場合には、alienを使うという手法。しかしalienで変換したものはいろいろ不具合が出たりすることもある罠。
変換でなく新規に作成する例は、sl(古いソフトウェアでビルドできりゃいい的なMakefileのslを例にした時点ですでに負け気配が漂う)。アーカイブの展開、dh-make、debian/ファイルの編集、debuild。pbuilderによるクリーンビルド、pipartsによるインストール/アンインストールテスト。slは提供されているMakefileにビルドルールしかなく、cleanやインストールがないので、かなり面倒くさい。準備不足ということもあり、あちこちで問題発生。それでもなんとかこぎつけたけど、パッケージ作りが難しいイメージをちょっと持たれたかもしれない。時間を30分ほど押して終了。

なお、現在、Debianではdh_make -sで作るrulesをちまちまいじるよりも、cdbsビルド支援ツールを使うのが主流になっている。slのような自前Makefile系のソフトウェアにはあまり向いていないけど、よくあるconfigure→make→make install系のautoconfソフトウェアであれば、Debianのビルドプロセスを定義するdebian/rulesファイルがほんの2、3行ほどになる。カスタマイズも容易。ので、私としては次回はcdbsによるビルド手順の紹介を期待したい。よく書かれているんだけど英文のcdbsマニュアルについては、noritadaくんががんばる(by iwamatsu)らしい。

ピザとビールで懇親会およびHenrich反省会。本物よりもスリムになった偽wakatonoが参上。しゃるとかnsaitoさんとかものすごく久しぶりに話した。22:00で切りのよさそうなところで中座して帰宅。新橋の夜は赤提灯が並んでいて、自分が外国人旅行者だったら「おぉすげーおもしろそー」となりそう。

2008年08月23日

『東京Ruby会議01』に参加してきた (後編)

東京Ruby会議01報告の続き(前編)。1人持ち時間5分の、Lightning Talkの開始。


最初は、森田尚氏の「DocDiff:Rubyで書かれたテキスト比較ユーティリティ」。Docdiffは行指向ではなく文字指向で差分を検出する日本語に対応した差分表示ツールで、Debianでは私がメンテナを務めている。デモで手間取りはしたものの、見事時間内にテキストの差分表示に成功していた。


二番手は松田明氏「Asakusa.rb設立のお知らせ」。RubyKaigiで角谷氏・ささだ氏・松田氏が超ご近所という衝撃の事実が判明というところから始まったこのグループ。「『飲みながらハック』というゆるふわな集まり」をテーゼとして、Ruby1.9をいじってみたり、「日本でRubyを作ってる人たちはRailsなんか使ってない」 vs 「Railsの人はRubyに興味も理解も愛情もない人が多すぎる」という超えられない壁で断絶している両ユーザーの交流を図るらしい。


続いての河野誠氏は、やはり同様に地域コミュニティ報告の「Tokyu.rb活動報告」。東急線沿線であればよし、沿線でなくても参加可能ならそれもよしというゆるいグループで、ADD(アルコールドリブン開発)によって成り立っているらしい。中規模活動目標としては、「ruby-trunkとedge-railsで飲み会の人数調整をする」が挙げられた。


最後は高井直人氏の「地域.rbのご提案 - Akasaka.rbの軌跡」。「笑いをとれるかという路線とは一線を画す」と述べつつ、淡々と話す中になぜか会場から笑いが漏れる。*.rbという場を作ることで、通常の宴席ではとても望めない技術話だとか、文献の輪読だとかもできるという主張には笑いつつもうなずけるものがある。


小休止を挟んで、バンカク社の柳澤康弘氏「Rails Outliner」。アウトラインエディタをRailsで記述して、サーバーにデータを持たせ、複数人で同時に編集することができる。編集結果はサーバーに送られ、わずかなタイムラグのみの「ほぼリアルタイム」で各接続クライアント画面に反映される。現時点ではアウトラインエディタの機能としてはそれほど高くなく、文字の入力、タブによるインデント変更、履歴、といった程度となっており、Emacs的な折り畳み機能などはない。パフォーマンス向上やEmacsライクショートカット、マインドマップ等形式の入出力などがTODOとして挙げられており、今後に期待したい。


荻野淳也氏の「あなたがMacでRubyを使うべき10の理由」。各所に笑いのツボを入れ、軽妙な語り口で聴衆を引き付けていた。RubyConfに行くと、皆Macユーザーだそうである。実際、今回の会場でもアンケートを取るとMacユーザーが大半を占めるという結果。言語の開発を主として務めるまつもと氏とささだ氏はMacユーザーではないが、「使う人はMac、作る人は別のOSでも」なのでいいらしい。MacとRubyを使うべき10の理由として荻野氏は、Unix(安定・簡素)、Preinstalled(デフォルトで用意されているのでおばあちゃんの環境にアプリケーションを構築するのも簡単!)、TextMate(すごく使いやすいコードエディタ)、RubyCocoa(Mac用のGUIアプリを簡単に作れる)、MacRuby(MacネイティブなRubyだから、ほかの環境じゃ使えない!)、Growl & ZenTest(イベント通知機能)、Gitjour(gitリポジトリをBonjourマルチキャスト)、Beauty(Rails Webサービスをリリースしてる37signalsによる紹介)、iPhone(RubyによるiPhone向けSDK)、Enthusiasm(I LOVE RUBY!)を挙げた。


クリアコード社の須藤功平氏による「Rabbit 2008」。彼はGoogle SoC 2005でSubversionのRuby bindingを作成したが、その絡みで/.jのAnonymous cowardに「スーパーハッカー」と呼んでもらったことがあり御礼が言いたいそうなので、自分がそうだという方は氏までご連絡されたい。講演の中心は、氏のライフワークとなっている著作ソフトウェアRabbitの紹介とプレゼン手法。Rabbitはプレゼンテーションツールで、一見して目立つのは画面下部にいるウサギと亀だろう。亀は時間、ウサギがスライドの経過枚数を表しており、亀にウサギが大きく遅れるのは不吉のサインというわけだ。Rabbitの基本ポリシーは、大きな文字と抽象化の2点。氏は、プレゼンに大きな文字を使うことで書きすぎて汚くなることを防ぎ、大事なことだけを、短くわかりやすい(わかった気にさせる)ことができると説く。Rabbitは入力、出力、外部インターフェイスの各所で抽象化を行っており、その例としてGL版の表示でページや文字を回したり、Webブラウザに表示したりといったデモを行って聴衆をどよめかせた。今後も、積極的に生きるためのRabbitのメンテナンスを続けるとのことだ。


最後の講演は、YuguiことRuby1.9リリースマネージャ園田裕貴氏による「Ruby1.9.1リリースに向けて」。1.9系初の安定版となる1.9.1は、今年の12月クリスマス前にリリースが予定されている(バグが直らなければ延期の可能性もある)。1.9.1は文法改善(ブロック引数やλ式など)、ライブラリの整頓(SOAP4R out、RubyGems inなど)、多言語化(StringやIOへのEncoding情報渡しサポート、エンコーディング変換)、バイトコードサポート(高速化・難読化、Pythonバイトコード変換など。現時点では日々変わっていて不定)といった特徴が挙げられる。安定へ向けては課題が多い。coverageの向上、RubySpecによる仕様構成、Redmineプロジェクト管理ツールを導入しようとしてるが人手が足りないし面倒くさい、各OSのサポートレベルでばらつきがある(supported/best effort/perhaps/not supportedという区分けを行い、今のところsupportedはDebian GNU/Linux 4.0 x86版のみ。OpenVMS、WinCE、OS/2、bcc32、Classic MacOSはメンテナの名乗りがないと危うい。djgppやhuman68k(!)は捨てることになりそう。BeOS、cygwin、GNU/Linux x86-64、FreeBSDはメンテナがいればbest effortになる)、ドキュメント活動は青木峰郎氏に期待しているがなかなか見通しが見えない、標準化はまだ端緒、などなど。プラットフォームメンテナ、Redmineの協力者、問題を次々と報告してくれる「クレーマー」、紹介するライター、お金を出してくれるパトロン、1.9を利用して不具合に自らぶち当たる人柱、人柱、人柱を求人中とのことだ。

最後に再び角谷氏が、地域Ruby会議として今後、札幌、九州、島根などで開催が計画されていること、本家たるRubyKaigiが来年東京近辺で開催予定であることを発表した。東京Ruby会議も第2回を開催するべく宣言され、東京Ruby会議01は拍手でその幕を閉じた。

さて、時間は夜の10時近い。公式な懇親会はないしRuby界隈の知人はあまりいないので、帰宅途中に1人で食べていこうと思ったものの、めぼしいところはどこも閉まっている…。結局スーパーの残り物惣菜でお茶を濁すことに…。しょぼーん。

なお、ニフティミーティングルームでは、後半になってから電源をお借りできたので助かった。無線LANについてはゲスト用キーパスフレーズが漏れ聞こえてはきたのだが、スタッフや講演者のご迷惑になってはいけないと思い、EMobile接続で済ませた(電波の入りは問題なし)。座ったポジションが悪くて撮影には不向き(講師の代わりに森田氏と須藤氏を激写しすぎ)だったが、机や椅子も2時間半の長丁場で座り詰めでも疲れることなく、会場提供のニフティ社には感謝する。マイクのコードが短くて、ちょっと苦労してたみたい。あれだと講師はうろうろできないし。
ライトニングトークでの大半を占めたとおり、最近のRubyコミュニティは地域グループ化しては、技術指向コミュニティあり、飲み会ドリブンコミュニティあり、と次々と設立されていて、昔のLUGみたいに分散衰退してしまわないかと不安に思えてしまうのだが、松田氏の言うように、主要開発メンバが日本に在住していて顔合わせも容易、母国語でそのまま通じ合える、世界的に使われている開発言語というのはRubyのほかになく、その特性を生かして各コミュニティも発展するものと信じたい。
何はともあれ、知り合いのそう多くない環境ではあるものの、けっこう楽しい時間を過ごすことができた。来年のRubyKaigiへの参加も検討しよう。

『東京Ruby会議01』に参加してきた (前編)

8月21日夜にニフティ株式会社で行われた東京Ruby会議01に参加した。交通機関が崩れまくってたり、雷雨だったり(危険時間帯はちょうどセミナータイムで問題なかったけど)とあったけど、無事に開催。 角谷さんにもようやくご挨拶できた。


上述したように、会場は大森ベルポートにあるニフティ株式会社のセミナールーム。ベルポートの吹き抜けが無駄に高級ですごい。18時開場に合わせて入ったときにはまだスタッフだけだったが、18時45分の開始時間にはかなりの人入りとなっていた。


発起人の角谷信太郎氏の挨拶のあと、トップバッターを務めるのはタワーズ・クエスト社の和田卓人氏。「それ Ruby でもやりたい - ライブラリ移植と機能拡張のためのパターンランゲージ」と題して、フレームワークで抽象化されたSQL命令よりももっと手書きっぽい複雑なSQLを書くために、Java+SeasarフレームワークのS2DaoというソフトウェアをRubyに移植した経緯を語った。具体的にはSQL文字列内に/* */コメントを入れ、この中でctx[:job]のようにして値を埋め込んだり、IF文やBEGIN/END文で条件判定したりできる。移植にあたっての手順やアドバイスとしては、まずは本当に代替案がないかを探す、対象コードのテストがありまた利用したい機能が切り分け可能かを確認する、まずは綺麗な設計とか考えずにとりあえず動くようにする、一度に多の目的を達しようとせず1つひとつ順に実装する、実装内部を改善するためにブラックボックステストを使う、といった手法が挙げられた。


続いて、吉見圭司氏が「Sexy development with ClassX」というタイトルで、彼が実装したClassXライブラリを説明した。これはクラスのアクセッサ機能を拡張して、属性値の名前、書き込み権限、オプション化、デフォルト値、バリデーション、オブジェクトクラスなどを定義できるもの。多数の引数を持つ初期化メソッドでは通常、渡されたローカル変数をオブジェクトのグローバル変数に渡すといった手続きが必要になるが、ClassXを使うことでこのような処理は不要になる。また、設定ファイルなどでは値形式の制限やデフォルト値を設定でき、有用だ。コマンドラインアプリケーションではコマンドパラメータの複雑な解釈もできる。デメリットとしては、標準の処理に比べて遅すぎるというのが挙げられ、現在のところ100倍→35倍程度までは改善されたものの、さらなる最適化が必要という課題があることが述べられた。


3人目の発表者は、アイ・プライド社のこしばとしあき氏「オフィスで踏み出すRubyの世界」。Excelをこよなく愛する氏は、Javaのテストケースを作成するためにExcelファイルをRubyのWin32OLE機能を使って処理したという事例を示した。氏によればExcelは誰でも使っているほどに親しみやすいながらも、Excel APIはわりと使いやすく、ブック/シート/セルの階層構造を持っていて上位にアクセスすることもできるなど、能力が高い。これに「アプリケーションサーバーいらずのJSP」ことERBと、Visual Basicよりも容易に(Rubyなら基本型/オブジェクトの意識が不要で、ブロック渡しもできる)扱えるWin32OLEとを組み合わせてできたのが、氏のXLSモジュールだ。XLSモジュールでは、Excelのシートのデータが多次元のハッシュに変換される。実装したテストケース作成ツールは社内で評判よく、Rubyへの興味が高まったという話である。Excel活用をダシにしてRubyを勧めようと氏は述べ、「Happy Exceling!」と締めた。

(後編に続く)

2008年06月17日

青少年ネット規制法にOSSとして何ができるか(2) 〜プロキシフィルタリング

前回に引き続き。

前回書いたように、規制の主な対象はWebブラウザで照会するWebページだと思われる。現時点で、OSSなWebブラウザ側で比較的簡単にできそうな実装としてはページコンテンツに含まれているPICSの判定だろうか。とはいえ、コンテンツ作成者自身がPICSを記述することは、わりと厳格そうなUSで少々見かけるくらいで、日本のコンテンツ内ではほぼ皆無。 指定サーバからPICSを拾うといったあまり高機能なものをがんばろうとするとブラウザが肥大化するので、特にテキストブラウザみたいなものでは現実的でないと思う。

こうなると、やはり「ブラウザで外に出るときにはフィルタリングするプロキシを経由させる」というのが現実的な路線になりそうだ。

まずは、ITmediaのマイクロソフト楠氏記事で言及されている 財団法人インターネット協会レイティング/フィルタリング連絡協議会研究会で提供する Safety OnlineのSFSという無償のプロキシソフトウェアを試してみた。ここで配布されているシステムは、プロキシソフトウェアSFSと、PICS準拠ラベルビューロ(ホワイト/ブラックリストの格納)LBから成る。SFSはLBのデータベースを参照するが、独自にLBを立ち上げずにニューメディア開発協会が提供するLBデータベースを参照することもできる(でも今は死んでるように見える)。

2005年作成というせいもあるのか、正直に申し上げて「これはひどい」状態だった。著作権者は財団法人ニューメディア開発協会とIPA。実際の開発をどこがやったかは知らないけど、システム的には大がかり。「設定やインストールが容易な市販ソフトウェアやサービスをご検討ください」と説明に書いているのが作成者の良心か。 SFS/LB両方ともシステムはスタンダロン動作のJigsawサーバ。 使用許諾条件によると、コア部分はバイナリclassファイルのみ、リバースエンジニアリングも禁止、LBの復号化禁止、改変禁止再配布禁止、英語ドキュメントなし、Jigsawのディストリビュートディレクトリと独自部分を混在させてるのでREADMEやCOPYINGなどが変なことに。というか使用許諾条件がWebにしかなくて、アーカイブのreadme.txtには同一文書がない。 ちなみに改変禁止とは言いつつ、実行するには設定ファイルを修正しなければならない。

Debianで使うのはcontribインストーラにするのさえうんざりしそうな感じだが、LBについてはLANG=Cにしてなんとかメッセージが化けずに動いたものの、SFSは結局未だに日本語表示がうまくいかず(ロケール処理がダメ?)、ブラウザ上で文字化けしっぱなし。英語モードっぽいものもないし、直しようがない。プロファイルをうまく読めないのか、プロキシとしても利用できていない。


OSSでは何かないだろうかと探してみたところ、「dansguardian」というパッケージがDebianに収録されていた。これはプロキシと連携してコンテンツフィルタリングを行うもので、別途Squidなどのプロキシを必要とする(デフォルト設定はSquidとの連携向けになっている)。clamavとも連携してウイルススキャニングも行うようになっている。なかなか良さそうな雰囲気だ。とりあえず手っ取り早く試してみるべく、apt-get install squid dansguardianしてから次のように設定をしてみた。

/etc/dansguardian/dansguardian.conf
  • 「UNCONFIGURED - Please remove this line after configuration」の行頭に#を入れてコメントアウトする
  • languageを'japanese'にする
/etc/dansguardian/dansguardian1.conf
  • enablepicsをonにする

/etc/init.d/dansguardian startを実行して開始し、dansguardianが提供するプロキシ「http://localhost:8080/」をブラウザ側に設定して(実際の運用ではtransparent proxyを使うほうがいいと思うけど)、キーワード検索を試してみる。

  1. Googleで「ポルノ」と入れてみる。
  2. フレーズが不適切情報ということでアクセス拒否された。ここで質問先がshonbori.comになっているんだけど、テンプレート(/etc/dansguardian/languages/japanese)の翻訳はともかく、キーワードもここの方が管理されているんだろうか?
  3. ポルノグラフィティだと大丈夫。もちろん、リンク先で不適切キーワードがあれば拒否される。

フィルタリングとしては設定したPICSのほか、/etc/dansguardian/listsにあるフレーズやURLなどのいろいろなマッチングパターンで行われる。現時点ではデータ量やパラメータ調整などの面で商用クオリティにはだいぶ劣る感じ。「女性」だけでも蹴られる、Googleイメージ画像などで出てくるものには対処できない、等々。とはいえ、この辺りはSFSみたいな代物に無駄金を使わずにリソースを投入すれば、すぐにも改善できそうなものだ。

2008年06月16日

青少年ネット規制法にOSSとして何ができるか(1) 〜該当領域

「青少年が安全に安心してインターネットを利用できる環境の整備等に関する法律案」(青少年ネット規制法)は参院全会一致で通ってしまったわけだが、フィルタリング義務に際しては、罰則なし・フィルタリングソフトについてはプリインストール義務ではなくインストール利用措置を講じると一応緩めにされてはいる。とはいえ、こういう緩めなのは行政指導などに進めてしまえばいかようにも強化できるわけで、楽観視はできないし、これが大衆の総意ということなのだろう。ちなみに、投票総数234で、自民、公明、民主、共産、社民が全部賛成、反対は川田龍平議員の1だけという結果だったようだ。

反対ばかり騒ぐのも建設的ではないし、需要はあることはわかっているので、OSS界ではどう対処したらよいかということについて考える必要があるだろう。

法案概要を見るに、 「『青少年有害情報』とはインターネットを利用して公衆の閲覧に供されている情報」なので、対象は今のところWebページのことであろうと思われる。

メールの場合、ポルノspamメールの文面や添付画像などをもって公衆の閲覧に供されているとは言い難いし、spamメールとポルノは切っても切れない縁ということもあり、こちらのほうのメールフィルタリングについてはOSSでもかなり対処、発達が進んでいると思う。P2Pで流れるデータは、公衆閲覧に供されていると言えると言えなくもないけど、利用者数は少ないし(OSSで使えるBittorrentあたりとWinnyとを国内で比較したら前者など無視できる数だろう)、携帯世界とは関係ないのでこちらも特に何かアクションが起きることはなさそうだ(Winny規制の口実にされる可能性はあるけど)。

さて、Webページという観点で見た場合、有害情報コンテンツ配布者については本人以外心配することではないし、不幸にしてその配布にかかわりかねない立場のISPでもないとして、関係する可能性のある立場としては、

  • 有害情報にアクセスすることも可能なWebブラウザを配布するディストリビュータ
  • 有害情報のアクセスの遮断を希望する未成年本人またはその親

ということになるだろうか。OSSのWebブラウザでDebianのデフォルト/準デフォルトなインストール物としては、Firefox(Debianでは互換のIceweasel)、Epiphany(GNOMEのブラウザ)、Konqueror(KDEのブラウザ)、w3m(テキストブラウザ)がある。

Firefoxで該当用途に合ったレーティング/フィルタリングできそうなものを探してみたのだが、日本語対応されたものは見当たらない。adblockはフィルタリング用途にできなくもないだろうが、リストがあるわけでもないので難しい。英語で探すとGlubble Family Editionというのがあるけれども、これはペアレンタルコントロールでURLフィルタリングではないように見える。Epiphanyはまだ調べていないけれど、Konquerorについてはadblockくらいしかないようだ。w3mは制限機能はない。

ということで今後の登場に期待が持てそうなのはFirefoxくらいで、ほかはちょっと不安な体制に思える。

対処の1つとしては、ブラウザのコンテンツの出入りにフィルタリングプロキシを使う方法がある。http_proxy環境変数を設定するくらいでよければわりと簡単にインストーラやパッケージで実装できそうだ(回避することもできるけど、回避されないようにする努力義務というのは特に定義されていない感じだし、回避を調べてがんばるような青少年なら見込みがあろう)。ということで、プロキシでのフィルタリングについては次の記事で書いてみる予定。

2008年03月26日

覚え書き: SVNリポジトリから不都合なファイルを削除

SVNリポジトリに入れていると過去を追えるのはいいんだけど、公開するつもりではなかったものを削除したい場合、svn rmしても削除マークでワーキングディレクトリに出てこなくなるだけで、ファイル自体および履歴はリポジトリに残ってしまう。これだとちょっと知識があれば追跡できてしまうので、リポジトリから完全に消去したい。

こういうときにはsvnadminとsvndumpfilterを使えばいいようだ。

$ svnadmin dump リポジトリ | svndumpfilter exclude 消したいパス > ダンプファイル
$ mv リポジトリ リポジトリ.old
$ svnadmin create リポジトリ
$ svnadmin load リポジトリ < ダンプファイル

「消したいパス」にはたとえば「trunk/secret-file」のように消したいもののパスを指定する。svndumpfilterにはincludeも指定できる。

2008年02月07日

awsxomのAmazon ECS4対応

3月末でECS3.0形式のサービスを打ち切るぞコラというメールがAmazonから来てしまったので、渋々ととりあえずは日記のところの対応を始めることに。ベースはblosxom starter kitのawsxomで、少し中身をいじったりしてた。既存のページをいじるのはダルイので、互換性優先。

-       my $url = "http://xml.amazon.co.jp/onca/xml3?t=$asoid&dev-t=$devkey&AsinSearch=$asin&type=lite&f=xml&locale=jp";        my $outfile = "$cachedir/$asin.h
tml";
+       my $url = "http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=$devkey&Version=2007-01-07&AssociateTag=$asoid&ResponseGroup=Medium&Operation=ItemLookup&ItemId=$asin";
+       my $outfile = "$cachedir/$asin.html";

 …

-       $detail{"Asin"} = $1 if ($buf =~ /<Asin>([^<]*)<\/Asin>/);
-       $detail{"ProductName"} = $1 if ($buf =~ /<ProductName>([^<]*)<\/ProductName>/);
-       $detail{"Catalog"} = $1 if ($buf =~ /<Catalog>([^<]*)<\/Catalog>/);
-       $detail{"ReleaseDate"} = $1 if ($buf =~ /<ReleaseDate>([^<]*)<\/ReleaseDate>/);
-       $detail{"Manufacturer"} = $1 if ($buf =~ /<Manufacturer>([^<]*)<\/Manufacturer>/);
-       $detail{"ImageUrlSmall"} = $1 if ($buf =~ /<ImageUrlSmall>([^<]*)<\/ImageUrlSmall>/);
-       $detail{"ImageUrlMedium"} = $1 if ($buf =~ /<ImageUrlMedium>([^<]*)<\/ImageUrlMedium>/);
-       $detail{"ImageUrlLarge"} = $1 if ($buf =~ /<ImageUrlLarge>([^<]*)<\/ImageUrlLarge>/);
-       $detail{"Availability"} = $1 if ($buf =~ /<Availability>([^<]*)<\/Availability>/);
-       $detail{"ListPrice"} = $1 if ($buf =~ /<ListPrice>([^<]*)<\/ListPrice>/);
-       $detail{"OurPrice"} = $1 if ($buf =~ /<OurPrice>([^<]*)<\/OurPrice>/);
-       $detail{"UsedPrice"} = $1 if ($buf =~ /<UsedPrice>([^<]*)<\/UsedPrice>/);
+       $detail{"Asin"} = $1 if ($buf =~ /<ASIN>([^<]*)<\/ASIN>/);
+       $detail{"ProductName"} = $1 if ($buf =~ /<Title>([^<]*)<\/Title>/);
+       $detail{"Catalog"} = $1 if ($buf =~ /<ProductGroup>([^<]*)<\/ProductGroup>/);
+       $detail{"ReleaseDate"} = $1 if ($buf =~ /<PublicationDate>([^<]*)<\/PublicationDate>/);
+       $detail{"Manufacturer"} = $1 if ($buf =~ /<Publisher>([^<]*)<\/Publisher>/);
+       $detail{"ImageUrlSmall"} = $1 if ($buf =~ /<SmallImage><URL>([^<]*)<\/URL>/);
+       $detail{"ImageUrlMedium"} = $1 if ($buf =~ /<MediumImage><URL>([^<]*)<\/URL>/);
+       $detail{"ImageUrlLarge"} = $1 if ($buf =~ /<LargeImage><URL>([^<]*)<\/URL>/);
+       $detail{"Availability"} = $1 if ($buf =~ /<Availability>([^<]*)<\/Availability>/); # FIXME
+       $detail{"ListPrice"} = $1 if ($buf =~ /<ListPrice>.*?<FormattedPrice>([^<]*)<\/FormattedPrice>/);
+       $detail{"ListPrice"} = $1 if ($detail{"ListPrice"} eq "" && $buf =~ /<LowestNewPrice>.*?<FormattedPrice>([^<]*)<\/FormattedPrice>/);
+       $detail{"OurPrice"} = $1 if ($buf =~ /<OurPrice>.*?<FormattedPrice>([^<]
+       $detail{"ImageUrlLarge"} = $1 if ($buf =~ /<LargeImage><URL>([^<]*)<\/URL>/);
+       $detail{"Availability"} = $1 if ($buf =~ /<Availability>([^<]*)<\/Availability>/); # FIXME
+       $detail{"ListPrice"} = $1 if ($buf =~ /<ListPrice>.*?<FormattedPrice>([^<]*)<\/FormattedPrice>/);
+       $detail{"ListPrice"} = $1 if ($detail{"ListPrice"} eq "" && $buf =~ /<LowestNewPrice>.*?<FormattedPrice>([^<]*)<\/FormattedPrice>/);
+       $detail{"OurPrice"} = $1 if ($buf =~ /<OurPrice>.*?<FormattedPrice>([^<]*)<\/FormattedPrice>/);
+       $detail{"UsedPrice"} = $1 if ($buf =~ /<UsedPrice>.*?<FormattedPrice>([^<]*)<\/FormattedPrice>/);

        # 著者部分の解析
-       $detail{"Author"} = parseAuthor($buf, "Authors", "Author");
+       #$detail{"Author"} = parseAuthor($buf, "Authors", "Author");
+       $detail{"Author"} = $1 if ($buf =~ /<Author>([^<]*)<\/Author>/);
+       my (@creator);
+       push(@creator, $1) while ($buf =~ /<Creator [^>]*>([^<]*)<\/Creator>/g);
+       $detail{"Author"} = join(", ", @creator) if (@creator > 0);

もともとがXML解析じゃなくて単なる正規表現一致をかけているコードなので、いろいろ無理矢理なところはある。

2007年11月16日

技術書を執筆される方々にお願いしたい10の項目

(話半分なので、これで青筋立てられないようにお願いします……)

1. 締切はできるだけお守りください。
耳の痛い方も多いとは思いますが、出版側(およびその下請け)も著者の承諾を基に年度や期の計画を立てており、予備期間を含めた見込み以上にズレ込むと、いろいろなところに問題が出ます。執筆続行に支障が発生したら、できるだけ早くヘルプ要請やキャンセルを出してください。一番困るのが、途中まで編集・組版まで進めてしまったけれどもそこで中断という状況で、コストを回収できないまま宙ぶらりんになってしまいます。
2. 執筆したものを読み直してください。
一見してすぐ気付く誤字脱字があったり、内情を箇条書きにしたまま放置していたり、類似の内容をコピペしたままにしていたり、といった一度読み直してみるとわかるもののままの原稿に出会すことがあります。傾向としてはWordで執筆される方、あるいはWikiで執筆される方になぜか多く見られる気がします。これらのツールでは全体を読み直しにくくさせる何かがあるのでしょうか。脱稿宣言前にピアレビュー(ユーザー会であれば仲間のメンバーなどによる査読)を受けたほうがよいかもしれません。締切を守るのはありがたいのですが、速ければ内容確認はしなくてもよいというのは困ります。
3. 画像は原図を添付してください。
Wordへの埋め込みやPDF出力があったとしても、画像は個別のファイル(わかりやすいファイル名で)として渡してください。Wordからの切り出しはコストと時間のロスになりますし、PDFは印刷精度に耐えるものにするのは難しいことが多いです。原図があれば、グレイスケール化や印刷精度を落とさないままの縮小などが組版側でできます。画像には、TIFF、bmp、png、jpeg(写真系。スクリーンキャプチャには不向き)あたりのフォーマットをご利用ください。画像の上に矢印などを引いた説明図を使いたい場合には、原図と、作成した説明図の両方をお渡しください。
4. アスキーアートよりも手書きのほうが望ましいです。
説明図を作成する際、アスキーアートは不向きです。編集や組版で簡単に解釈できるものであればなんとかしますが、それよりは手書きのものをスキャンあるいはFAXいただくほうが望ましいです。ドロー系ツールで作成いただくのももちろん良いですが、結局デザイナーによって起こし直すので、あまり凝ったものにする必要はありません。
5. 執筆スタイルを統一してください。
ムックのようなものならまだばらつきが許されるのですが、単行本で文体、技術語句、章の中の構成が全然違うのは、統一感を作るのが編集の仕事の1つとはいえ、ちょっと困ります。特に共著の場合にはこういったことが起こりやすいので、執筆前に入念に意思確認したり、ピアレビューを行ったりしてください。
6. 画像や表には基本的にキャプションを付けてください。
通常の書籍では、画像や表には1行キャプションを付けます。本文からも「〜(図1.2)」のように参照するようにして、みなし子のものがないようにしてください。
7. ジョークや時事ネタ、アスキーキャラクタの使用には注意してください。
技術書でユーモア感を出そうとして入れたものが、後で読んでみたら浮いて痛々しくなってしまうことがあります。単行本の場合は雑誌よりも長い制作期間がかかり、また長く書店に置かれて読者の目に触れるので、時事ネタや当時流行だったアスキーキャラクタを入れるのは避けたほうがよいです(そういう本であればかまいませんが)。また、書籍はプロポーショナルな文字詰め(Windowsのプロポーショナルフォントとは概念的には似ていますが表現はだいぶ違いがあります)を行うので、アスキーキャラクタは意図しないものになりがちです。
8. 章のバランスを考慮してください。
通常、出版社に執筆を持ちかけたり、あるいはオファーされたりするときには、「目次案」を要求されることが多いはずです。出版社はこれを見てページ(と価格)を算出しますが、構成する際には章のページ見積りのバランスを考えるようにしてください。ある1章が3ページしかなくて、別の1章は150ページ、というのは明らかに問題です(表現技法として必要であれば良いと思いますが、単に書きやすいネタの大小によるものでは困ります)。章・節・項の使い分けにも注意してください。節から項に入る前には1つ以上の段落を入れるのが通常、望ましいです。
9. 丸写しは避けてください。
APIの説明などは面倒なのでコピーしたくなる気持ちもわかるのですが、調べた内容は、解釈した上で自身の言葉で言い換えるようにお願いします。デッドコピーしたものは、ほかの文体と浮いていたり検索で調べるとそのまま出てきたりするので、すぐわかります。なお、コピーと引用は違います。引用の場合には出典を文中で示して、引用箇所もはっきりわかるようにレイアウトしてください。
10. 読み手の気持ちになって読んでみてください。
想定読者の気持ちになって原稿を見返してみてください。前提知識に対して説明が不足していたり、重複する内容が出てくるわりに肝心のことが抜けていたり、図表がぜんぜんなくて退屈に思えたり、ということに気付くことがあります。ピアレビューも有効ですし、初心者向けならあなたの家族が読んでもわかるかどうかを想像してみるとよいでしょう。

なお、個人的にはこのほかに、「Wordは、編集諸々すべて面倒なので、プレインテキストのほうが嬉しい」(Wordで日常編集している人もいるのでこれは個人の嗜好ですね)、「表はアスキーアートでがんばるよりはタブ区切りにしてくれたほうが嬉しい」(編集や組版時にはアスキーアートは邪魔になるだけなので…)、「相互参照はページではなく章や節に向けてほしい」(ページの確定は進行の終盤なのでミスが怖い。組版ソフトには実は相互参照を自動化するまともな機能がない)といったこともあります。

2007年11月13日

CSS解除とコーデック集の取り扱いの謎

FLOSSなOSでDVDや各種動画メディアを再生するのに、CSSを解除するライブラリであるとか、コーデック集であるとかを「拾ってきて」(あるいは内部的にダウンロードするなりして)使うことは多いと思うのだけど、日本ではこれらの使用や配布って法的取り扱いはどうなっているんだろう。軽く調べただけではよくわからない。

「出版物で紹介されているから安全」ということはまったく信頼がなくて、あれは言論の自由を盾にして関わるのが面倒そうにさせているだけで、個人が同じように教唆責任を追及されたらとても勝ち目がない。ちなみに某雑誌で記事を書いた折には、犯罪加担の可能性が少しでもあるものは掲載しない、なっちゃったら著者責任ということであった(まぁ企業的コンプライアンスがありますからな)。

CSSやコーデックの権利者に聞くのが一番なんだろうけど、なんとなく今のところはお目こぼしを受けているだけで、薮蛇になるような気がする。このように対処している、という事例はないですかねぇ(だからフリーの(略 という意見についてはKY)。

2007年11月07日

現状の出願済みLinux特許に対する一考察 (日本編)

OpenTechPressに、「現状の出願済みLinux特許に対する一考察」という記事が掲載されているが、日本ではどんなもんかなとお昼休みを使って調べてみることにした。

特許電子図書館で「Linux」「Linux」を調査すると、特許52件、実用新案1件。ということで、適当に中身を見た感想。私は特許にまったく詳しくないし、技術もわかっていないことが多いので、見当外れのものも多いかとは思うがご容赦のほどを。

特許公開2007−226809 非ポストスクリプトプリンタ記述ファイル生成ツール
リコー。非PostScript向けに既存PPDから自動生成したカスタムデータを出力させるということなのだけど、これは既存のCUPSなんかのPPD+gutenprintの構造と変わらんような気がするが…。
特許公開2006−276962 コンピュータを利用する設計開発方法、コンピュータ利用方法及びシステム
NEC。仮想化の話?
特許公開2006−244009 ダウンロードシステム、サーバ装置およびドライバ提供方法
エプソン。(もともとは多分プリンタ向けの)もので、モジュールプールからクライアント環境に合わせたドライバパッケージを自動生成するということか。
特許公開2006−244008 サーバ装置およびデータ構造
エプソン。上の関連っぽい。ディストリビューションごとに適切なドライバを簡単に用意する、とか。
特許公開2006−209718 SMS統合ミドルウェア(IntegratedShortMessageServiceMiddleware)
個人。Linuxは単にOS非依存という話の中で出てくるだけ。なんでもショートメッセージングで携帯に送るよというソフト?発明家のアイデアレベルっぽいように見える。
特許公開2006−179011 データ処理装置、通信端末機器、および、データ処理装置を用いたデータ処理方法
ドイツのインフォネオン。LinuxはOSの中の1つとして出てくるだけ。
特許公開2006−107249 Linuxプログラム起動システム
ビクター。組み込みの冗長構成下でのユーザーランド切り替え。セーフモードやファームウェアアップデートみたいな話だろうか?
特許公開2006−107248 Linuxプログラム起動システム
ビクター。上と関連。
特許公開2006−085292 演算処理装置
松下。マルチプロセッサでのキャッシュ局所性によるミス率を減らすための技術、かな。
特許公開2006−051047 画像入力装置
コニカミノルタ。ネットワークカメラの話っぽく、請求項3に「電源OFF時にLinux OSをシャットダウン動作することを特徴とする画像入力装置」とあるね。
特許公開2006−012170 ユーザ・モード・プロセスが特権実行モードで動作することを可能にする方法
天下のIBM。内容はその名のとおりなんだけど、説明がよくわかんない…。
特許公開2005−323343 ロックされたマルチメディアデータを再生可能なコンピュータシステム及びその方法
英特維數位科技股▲ふん▼有限公司。台湾? システムリソース消耗の大小異なるOSを用意しておいて、スイッチングするということかな。
特許公開2005−284925 コンピュータシステムおよびプログラム更新方法
沖電気。Livepatchみたいな動的な動作中プログラム内容書き換え。
特許公開2005−267636 マルチメディア再生システム実行のコンピュータシステム及びその方法
英特維數位科技股▲ふん▼有限公司。2つ前のものの関連で、スイッチング部分の詳細かな。
特許公開2005−260955 遠端ビデオ情報を保存するコンピュータシステム及び方法
英特維數位科技股▲ふん▼有限公司。で、これがその実装と。
特許公開2005−032259 共有ライブラリーシステム及び前記システム構築方法
韓国の三星。uCLinuxが具体的にクレーム項として挙げられているようだ。普通の共有ライブラリの構造との違いがよくわかんない…。
特許公開2004−289561 ネットワーク接続の管理方法および電子機器
ソニー。LANケーブルの物理的接続をハードウェア的割り込みにすることでOS関与を減らすということか。内容的にはプレステかレコーダなのかなぁ。
特許公開2004−280137 パソコンを利用した映像監視システム
九州エレクトロニクスシステム。これは画像目視システムをLinuxで作りましたというものか。斜めにおもしろくて読みふけってしまった。しかしLinuxだから安全ということはないと思うのだが…。
特許公開2004−272499 デバイス管理方法およびデバイス管理システム
ソニー。まさにhotplugの説明が。どのへんが普通のhotplugと違うのかがよくわからない。
特許公開2004−133650 制御用ロジックのシミュレーション検証方法及びシミュレーション検証用パソコン
三菱重工。プラント制御をLinuxでシミュレートしますという話かな。
特許公開2004−070953 複数のオペレーティングシステムをサポートする方法
HP。ブートローダ?
特許公開2003−280704 パソコン・バイオ・ナノ・IT機器装脱着施術設置など々、の生活ナレッジナノクローンシステム携帯電話機ロボット(以下ロボットと記す)
個人。アイデア系。なんか詳細やクレーム項がすごくてクラクラする。ちなみにLinuxは「RobotLinux」というワードで登場。
特許公開2003−162450 データ消去方法、データ消去プログラム配布システムおよび記録媒体
ソニー。dd if=/dev/random of=/dev/hda conv=sync ということだろうか。
特許公開2003−085025 記憶装置の属性制御方式
セイコー。ディスクスイッチ系かなぁ。
特許公開2003−022245 周辺装置用のアプリケーション・ソフトを提供するシステムおよび方法
HP。デバイス側にソフトウェアを入れておき、OS上でそれを起動できるということかなぁ。なんとなく類似のことは実現されているような気がするのだが。
特許公開2003−006104 データ管理のための方法とシステム
フィンランドのソリッドインフォメーションテクノロジーオイ。「移動インターネット内のアプリケーションの動的に変更可能な大きな組を管理することができる方法を提示する」らしいのだがいまいちよくわからない。Linuxもあまり関係はしてないげ。
特許公開2002−208982 ソフトウェアをハードウェアに置き換えることによって通信プロトコルを高速処理する装置
イーツリーズジャパン。LinuxについてはTCP/IPを使ってますという話の一環で出てきてるだけ。
特許公開2002−041950 自動広告配信システム及び自動広告配信方法
日本テクノラボ。ダイヤルアップ接続サービスに有効な広告配信を組み合わせました、と時代を感じさせる。サーバにはLinuxやFreeBSDらしい。
特許公開2002−041173 プログラムファイル認証方法
台湾の網安國際股▲ふん▼有限公司。実行しようとするプログラムのハッシュか何かをサーバに送って安全かどうかを見るというものかな。サーバにWindowsかLinuxあるいはNotesを使うというところで出てきてた。
特許公表2007−529917 分散型ネットワークセキュリティシステム及びそのためのハードウエアプロセッサ
米バンドヤアシシュエイ。上層ネットワークレイヤを作るんかな。Linuxはあまり関係ない。
特許公表2007−525771 データ操作のためのシステム及び方法
米ティギコーポレイション。低プロフィールってもしかしてロープロファイルのことか?Linuxを使うらしいけどよくわからない。
特許公表2007−524148 トラステッド・コンピュータ・システム
米デジタルネットガヴァーンメントソリューションズエルエルシー。「Linux(登録商標)互換性を提供し、現時代のハードウェア速度をサポートするトラステッド・コンピュータ・システム。それは、開発することが容易であり、多種多様な最新の開発ツールの使用が可能であるように、Linux(登録商標)上で動作する共通アプリケーションの移植を必要としないように設計される。」とか宣伝文句っぽいのがおもしろい。この機械翻訳調を審査するのもたいへんだ。
特許公表2007−523697 医療用インジェクタおよび画像診断用装置を操作するための方法システムおよび機器
米EZEM。制御コンソールの話。Linuxは対象OSの1つとして出されているだけ。
特許公表2007−520096 アイソクロナスオーディオネットワークソフトウェアインターフェース
米ハーマンインターナショナルインダストリーズ。通信プロトコルの話かな。これもLinuxは対象の1つとして出されているだけ。
特許公表2007−509387 オペレーティングシステム
フランスのジャルナエスアー。ずいぶん大胆なタイトルだ。Xenに近いように見える。
特許公表2007−507779 オペレーティングシステム
上の関連。
特許公表2006−524872 分散型検索方法、アーキテクチャ、システム、およびソフトウェア
米トムソン。Linuxサーバを使って、オンライン検索の際に複数の検索エンジン候補の中からチョイスを行うという話かな。
特許公表2006−522971 オペレーティングシステム
2つ上のものの関連。
特許公表2005−508538 読み取り専用の記憶装置に保持されたソフトウェアのアップグレード
オランダのコーニンクレッカフィリップス。バイナリ差分みたいな感じだろうか。
特許公表2002−539562 コンピュータデータを出力機器へ伝送するための方法、コンピュータプログラム製品、およびシステム
ドイツのオーセプリンティングシステムズ。ドキュメント要素を分割して定型印刷の作業軽減をはかる話かなぁ。「Windowsライクなシステム環境(Linux、マッキントッシュ)」とはヒドイ(笑)。
特許公表2002−539554 コンピュータデータを出力機器に伝送するための方法、コンピュータプログラム製品、およびシステム
上の関連。
登録実用新案第3047264号 インターネット専用端末
ニシデン。「Linux OSと、Xwindowsと、Netscape Navigator同等品とが動作可能に構成されたことを特徴とする請求項1または請求項2に記載のインターネット専用端末。」だって。「操作部と本体装置とが、接続ケーブルを伴うことなく、光学的に接続されてなるインターネット専用端末」というのはタブレットPCっぽいものだろうか。
特許公開2006−171987 コンピュータの快速ブート方法及び装置
台湾の技嘉科技股▲ふん▼有限公司。Knoppixかと思ったら違った。BIOSからのブート時の読み方を工夫して速くする、みたい。
特許公開2006−033706 通信装置及びその制御方法
キヤノン。FreeBSDやLinuxでのネットワーク実装でデフォルトルータとの通信を保持する手法なのかな。
特許公開2005−260937 リモートサーバのメディアデータをコンピュータシステムでダウンロード及び再生する方法
英特維數位科技股▲ふん▼有限公司。前述の関連かな。
特許公開2005−228335 コンピュータシステムの電源管理のアーキテクチャおよび方法
同上。
特許公開2005−078678 データ処理装置及びプログラム
ケンウッド。組み込みLinux系。コンテンツの並行エンコード/再生の効率化かな。
特許公開2003−316554 ジョブアカウントシステム、ジョブアカウント方法、ジョブアカウントプログラムおよび記憶媒体
キヤノン。プリンタジョブにXMLを使って異種混在環境でもOKという話か?
特許公開2003−036178 ホスト・オペレーティング・システムとゲスト・オペレーティング・システムとの間でアクセス装置の使用を割り振る方法および装置
IBM。仮想マシンへのリソース配分の判定方法?LinuxはOSの1つとして。
特許公開2002−101134 プロトコル変換装置
ピクセラ。PIAFSとIEEE802.11のプロトコル変換をLinuxでガンバルという話。
特許公表2006−512667 実行可能コードの悪意性を検知するために実行可能コードをエミュレートする方法
イスラエルのアラジンノゥリッジ。エミュレータですかね。Linuxはターゲットのコンパイル済みコードの1つとして出てきてるだけ。
特許公表2005−507197 ショートレンジ無線信号を用いて、管理された無線ネットワークを提供するためのシステム、デバイス、コンピュータによる読み取り可能なメディア
米IXIモバイル。信号を受けたらアクセスにいく、というように見えるが…。Bluetoothが具体的に挙げられている。
特許公表2005−501354 単一IPアドレスを介して複数のウェブ・ドメインによりウェブ・サービスを提供する方法およびシステム
米スフェラコーポレーション。Namedバーチャルホストのほかに、ユーザー名で区別するということだろうか。

ということで、53件をざっと見てみた。OSの1つとしてLinuxを挙げているものがほとんどだけど、具体的にLinux技術を挙げているものもいくつか出ているという感じだね。Linuxを含んでいなくても、ハードウェアやネットワークなどの分野ではいろいろ関連するものは出てきそうではある。ちなみにWindows/Windowsでは283件だそうな。

(追記 夜にちょっと時間あったのでレイアウトし直してみた)

2007年10月18日

MIAUについて

すでにmhattaさんを始めとしていくつか事前告知はあったが、本日正式に設立の発表されたMIAU。Movements for the Internet Active Users(インターネット先進ユーザーの会)の略で、ミャウと呼ぶんだっけ。ちなみに私は「Mhatta Is Aggressive, Ugh!」と覚えることに成功した。

それはさておき、著作権利(代行・管理含む)団体がそのロビー力と法曹・官僚の無知につけこんで幅を効かせるにもほどがある中、このような対抗団体が組織化されたことはまずは喜ばしい。
こういう絡みで何かを決める政府委員会って官僚側での選出段階で偏ってて、権利側はずらりと業界団体が並ぶのに対し、使用者代表が場違いな人だったり頼りにならない「知識人」だったりということが多いんだけど、それは多分「官僚はまったくバカだ」で終わらせちゃだめな話で(それこそ権利側の思う壷で)、「使用者代表かつ権威として、とりあえずここに声はかけるだろう」という団体がなかったということも理由なんだと思う。MIAU設立趣旨にもそのような内容が書かれてるね。

この団体と運動が成功するかどうかは、どこまで裾野と支持を広げられるかが鍵になりそうだ。
団体名こそはネットユーザーがターゲットとうたっているんだけど、ネットユーザーというのは「敵に回すと怖いけれども味方としてはいささか頼りない」存在なので(まぁ確かに、権利側と裁判するので|CM打つので金を出してくださいとか言われても普通は困るよなぁ…)、ミュージシャン、画家、漫画家、作家、等々のアーティストの支持を勝ち取れるかにかかっていると思う。正直、発起人の構成ではIT系メディアならともかく大手マスメディアには鼻にもかけられないだろう(そもそも彼らの多くの基本的スタンスは「ネットユーザー」なるものを敵視しているので、好意的報道はあまり期待できない)。このあたりは津田氏が根回し活動されているのかな?
あとは業界団体と違って一枚岩になりにくいのが難点か。ある目的の下に背景も政治思想も大いに違う人が集まったらいつのまにか妙な政治方向になって内部崩壊、というのは枚挙にいとまがないし(共産党や陸軍風味な肩書付けたりとか…)。広く受け入れつつも理念のぶれない組織運営が要求されそうだ。かといって、圧力ロビーをするためにはある程度、地方議員・国会議員も取り込まないといけないので、そのへんのドロドロをいかにうまく合法の範囲で行うかの手腕も問われる。
残る心配はお金面だけど……手弁当で集まるとなるとマンション反対運動並みに大変そう。前身のロージナ茶会系の方々ならまぁそれほど困らないのかもしれませんが。米国のEFFなんかではどうやって捻出しているんだろう。MIAUは社団法人化も検討しているということなんだけど、これって2008年から始まるという一般社団法人のことかな。

全部に同意はできないからと斜に構えるより、その主張に共感するところがあれば応援する、という人が増えてくるといいね。今の権利側の動きはこういう団体が必要なほどなまでに危険な状況になっているということでもある。マルチン・ニーメラー牧師ではないけど、「そして、やつらが私に襲いかかったとき、私のために声をあげてくれる人はもう誰もいなかった。」という未来はあり得ない話ではない。

サイトのページについては、FSIJのような参加を拒絶する感じもなく(というか実際FSIJは事務処理能力が不足してて参加者が増えても困るという話を聞いたが)、アーティスト系らしいポップなデザインで親しみやすそうではある。ロゴ絵(これもCCだよね?)はそのときの運動に合わせて「No! JASRAC」とか入れてバナーや携帯待受画像を用意すると面白いかも。

気になった点としては、ほかの人の執筆文章であるにもかかわらず「著作者」が事務担当の人っぽいののままで表記されてるものがある、11人の発起人ということだけど詳細が見つからない(連絡先もメールアドレスしかない)、どのような形で参加できるのかがわからない、といったあたりか。もちろんこれらはこれから準備するということだろう。今が熱いうちなので早めに出てくるといいんだけど。あと、当面目標が否定の否定みたいな感じでどうにも読みにくいので、もうちょっとなんとかならないかなぁというところではある。

ともかく、今後に期待し、またもう少し情報の出たところで参加を積極的に考えたい。さまざまな著作物の恩恵を影に日向に受けながら、自らも物を作る著作者の1人として。

2007年10月08日

IPA+MRI+TurboでやってるHelpPCプロジェクトの中身を見てみた

要はlshw -xmlで出力した結果をhttp://helppc.wizpy.jp/tool/に送っているだけだった。Wizpyや配布CDじゃなくてもこういう感じでできるみたい。

# aptitude install lshw curl
# lshw -xml > lshw.xml
$ curl -F "xmlfile=@lshw.xml" http://helppc.wizpy.jp/tool/ > result.html
$ iceweasel result.html

やっぱそんなところなのね、と軽くがっかりしておく(携ってる人たちからして予想の範囲内ではあるが)。コンテンツも現時点では日本語特化。サーバ側の解析コードおよびデータベースは非公開。

2007年08月30日

とある編集者の5つの職業病

  1. ポスター、広告、パンフを何げなく見ていると、誤字脱字を異様に素早く発見してしまう。
  2. ポスター、広告、パンフを何げなく見ていると、「ツメ」とか「4ブアキ」とか「1行アケ」とかモヤモヤしてしまう。
  3. アンケートなどで手書きの記入欄に記入しているとき、「、」や「。」の上に「∧」を付けたり、打ち消し線を入れたあと「トルツメ」とか「モトイキ」とか書き込んでしまう。
  4. 新しい本を買って最初に開くページは奥付。
  5. クソ本だとかクソ訳だとか世間で言われているのを聞くと、それぞれの裏事情がある程度推測できるだけにいたたまれない気持ちになる。

2007年07月16日

オーディオセットを考える

tnhさんがタイムドメインのを買ったりしてるのを見て、そういえばスピーカー考えてたんだよなぁというのを思い出し、オーディオセットに思念が及んでムラムラしてきた。

現在の構成は、iBookに接続したYAMAHA DP-50 USB音源から、ONKYO INTEC A905にアナログ接続し、スピーカはKENWOODのROXY DG1(80W)×2。音源はiTunesに入れたmp3とかネットラジオ程度(この時点で通の方には「それで音うんぬんってあほか?」と呆れられそうである)。

ソファにゆったり座って観賞…というわけではなく、リビングおよび接続してる仕事スペースでのBGM用なので、指向性があるよりは広がったほうがいい。音量は小さめに絞ることが多いので、小さくしても聞こえるものじゃないと困る。セットはカラーボックスに載せてるというひどい状況だけど、まぁこれは変えることもやぶさかではない。ただスピーカは2、3くらいが限度か。

現在の構成はDP-50がけっこう良い音を出すこともあって悪くないんだけど、定位置から離れると聞こえにくく、音量を上げるとそれはそれでうるさいという問題がある。DP-U50はせっかく光を出せるし、これを入力にしたアンプに変えるというのも1つ。A905には歴史的事情でAM/FMチューナーやMDレコーダも付けたんだけど、これらはもう全然使っていない(J-WAVEは腐ってしまったし、MDはiPod入手によって譲渡しちゃった)ので、本当に光が入って良い音でスピーカーに出せればいいんだよなぁという感じ。アンプは重いほうがよいのだろうけど、あまり重いのはちょっと…という気がするし、要求仕様に対してオーバースペックではないかと思う。うーむ、さてはて。

2007年07月12日

Subject: [cups.announce] CUPS Purchased by Apple Inc.

へぇ。

(2007年2月に)AppleはCUPSソースコードの所有権を得て、作者のMichael Sweetを雇用。CUPSはGPL2/LGPL2でリリースされ続け、MichaelはAppleでCUPSの開発とサポートに引き続き携る。所有権の変更についてはFAQを参照。

もともとCUPSにはApple向けのいろいろ除外条項があり、2月以来特にMichaelの行動にも変化はないので、ユーザーレベルで何かあるということはないとは思われる。開発者レベルではもしかするといくつか良いことや悪いこともあるかも。

2007年03月25日

spam除け手順をまとめてみる

グレイリストまでかけてもまだまだ漏れてくるのがあるので困ったものだが、現在のところ私の管理サーバ群に実装させているspam除けの手法をメモ程度にまとめてみた。メールサーバにはいずれもpostfixを使っており、設定の容易さからpostfix-pcreも入れている。間違いはいっぱいありそうなので、ご指摘歓迎。

ポート25のルータフィルタリング (iptablesなど)
これは誤操作が怖いのと、公私共に国外とのやり取りが発生しているのでほとんど行わず、DoS対策程度。コンソールが目の前にある家サーバで送信者が国内限定なら、特定地域ブロックごとはたき落とすというのはまぁありか。
HELOの強制
postfixでsmtpd_helo_requiredをyesにしている。昔はそれなりに効果あったようだけど、今どきのspam発信はだいたいHELOも出すのであまり意味はないかもしれない。
送信ホストアドレスでの拒否
postfixのsmtpd_client_restrictionsにcheck_client_access pcre:/etc/postfix/pcre_client_tableのような設定を加えておく。pcre_client_tableはPCRE書式で書いたリストファイルで、たとえばこんな感じ。
/219\.147\.232\.\*/     DISCARD
 …
単一のホスト名やIPであれば//形式じゃなくてもいい。2列目はOK(通し)、REJECT(拒否して返却)、DISCARD(拒否して破棄)といったものが指定できる。spammer相手にREJECTしてもろくなことにならない(また戻ってきたり)のでDISCARDしよう。ポート25フィルタリングに近いけど、こちらはpostfixだけでできるので、設定に失敗してもログインできなくなるなんてことはない。PCREファイルは書いた時点で反映されるので、postmapなどで変換する必要はない。
送信者アドレスでの拒否 (リストによる拒否)
SMTP FROM(メールのFrom:アドレスとは違う。メールヘッダのReturn-Path:に書かれているようなアドレス)で判定を行うようにもする。smtpd_sender_restrictionsにcheck_sender_access pcre:/etc/postfix/pcre_sender_table のように加え、同様にリストファイルを作成する。たとえば
/^shima_tani_h@infoseek/        DISCARD
/^.*@wildclubs.*\.info/         DISCARD
 …
送信者アドレスでの拒否 (DNSによる拒否)
これも最近は効果がなくなってきた手法だけど。SMTP FROMに書かれた多種多様な送信者アドレスのドメイン=spammerのドメインを提供するDNSサーバを調べると、実はspammerが管理するごく少数のDNSサーバに行き着くというのがあった。そこで、smtpd_sender_restrictionsにcheck_sender_ns_access pcre:/etc/postfix/reject_ns のように加えて、DNSサーバのIPを列挙する。
ns1.is-name.net  DISCARD
 …(「postfix check_sender_ns_access」で探すといろいろ見つかるはず)
宛先名での拒否
ローカルにユーザがいないならそもそもREJECTするといえばそれまでなんだけど、うざったいピンポンが起きることもある。smtpd_recipient_restrictionsにcheck_recipient_access pcre:/etc/postfix/pcre_rcpt_table、で存在しないのにやたらと届く宛先に来たら捨てるとか。
/^\d+@/  DISCARD
 …
グレイリストでの拒否
昨日書いたpostgrey。smtpd_recipient_restrictionsにcheck_policy_service inet:127.0.0.1:60000 を加える。ホワイトリストのメンテナンスも忘れずに。
amavisd-new+clamavによるコンテンツフィルタリング
amavisd-newではspamassassinの呼び出しもできるけど、spamassassinはアグレッシブすぎることがあるので、基本的にはclamavと合わせたウイルススキャンを主としている。clamavはvolatileのものを使っている。/etc/amavis/amavisd.confを設定(特に$mydomain、$inet_socket_port、$forward_method、$banned_filename_re)し、たとえばポート10024で動かしておく。postfixのmain.cfでは「content_filter = smtp-amavis:[127.0.0.1]:10024」、master.cfでは「127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes」のようにして、ポート25で受けたメールをポート10024のamavisに通し、amavisは結果をポート10025のフィルタリングはもうしないpostfixに吐くというように流している。
全体procmailによるコンテンツフィルタリング
postfixでmailbox_commandにprocmail -a "$EXTENSION"としてあるので、ローカルメールボックスへの最終配送はprocmailを使っている。よって、/etc/procmailrcで全体の統制ができる(とはいえ、あまり複雑なことはしないほうがよさそう)。たとえば最近Received: うちのサーバ名 (unknown [spammerの中国ボットIPアドレス]) などというのがよく来てるので、こういうわかりやすそうなのは捨てる。
SHELL=/bin/sh
PATH=/bin:/usr/bin
SENDMAIL=/usr/sbin/sendmail

:0 Hf
* ^Received: from kmuto\.jp \(unknown
| formail -b -f -a"X-global-spam-check: fake" (←メールヘッダを加えている)

 …

:0
* ^X-global-spam-check: (←先ほど付けたメールヘッダを発見)
/dev/null
まぁ実際にはいきなり/dev/nullというのもアグレッシブすぎるので、junkフォルダに転送するようにしている。
各個procmailによるコンテンツフィルタリング
これ以上は誤認で廃棄してしまう恐れがあるので、ユーザごとでの設定としている。基本になるのはprocmailで、各ユーザの~/.forwardに「| /usr/bin/procmail」とでもしておく(IFS=' 'とかexit 75とかってpostfixでも必要なんかな?)。~/.procmailrcはこんな感じから。
SHELL=/bin/sh
PATH=/bin:/usr/bin
SENDMAIL=/usr/sbin/sendmail
LOGFILE=/home/kmuto/procmail.log (←デバッグ用)

(ここに以降の設定を入れていく)

:0
$DEFAULT
spamassassinでのフィルタリング
spamassassin、spamc、razorを入れておく。razorは共同構築型のフィルタリングネットワーク、らしい。今のところRBLのようなひどい誤認などはない模様。入れておけばspamassassinが勝手に拾って使ってくれるようだ。spamdをデーモン化させるのは危険もあるのだが、毎度起動しているとOOMが働いてもっとひどいことに…ということがあるのでデーモン起動で(/etc/default/spamassassinでENABLED=1)。/etc/spamassassin/local.cfは次のようにしている。
ok_languages    ja
required_hits   10

body KI         /\033\$[B@]/ (←$が誤認されるので日本語開始コードのスコアを下げる)
score KI        -2.394

header SJISFROM From =~ /=\?shift\-jis\?/ (SJISのFromはspam)
score SJISFROM  3
 …
あとは、spamcを通すよう~/.procmailrcに書いておく。
:0fw
| spamc

:0
* ^X-Spam-Status: Yes
/dev/null
:0
* ^X-Spam-Flag: Yes
/dev/null
ベイジアンフィルタによるフィルタリング
一世を風靡したベイジアンフィルタだけど、spammer側の対策もすっかり済んでしまった感じ…。一応まだ使っているけど、「重いだけ」になっているかもしれない。bogofilterとbsfilterを利用。
:0fw
| bogofilter -u -e -p
:0
* ^X-Bogosity: Spam
/dev/null

:0fw
| bsfilter -a --pipe --insert-flag --insert-probability
:0
* ^X-Spam-Flag: Yes
/dev/null
初期データのhamとspamは手持ちのものから適当に。その後のspam認識追加については、漏れたものを学習用IMAPフォルダに入れて、それを「formail -s bogofilter -s < spam」(bogofilter用)「bsfilter -s < spam」(bsfilter用)「formail -s sa-learn --spam < spam」(spamassassin用)という処理をするcronで更新させるようにしている。ただ、あまりやりすぎると今度は誤認のほうが多くなるので、それほど期待しないほうがよいと思う。
procmailでの個別撃破
残りはかなり地道で、ヘッダやボディを見て特徴的なものを/etc/procmailrcあるいは~/.procmailrcに書いていく。
:0 Hf
* ^From: .*@.*(shopjapan|bls|vip|aviss|dtmail\.idg|ogilvy)\.co\.jp (正規表現で指定)
| formail -b -f -a"X-procmail-spam-check: jp"

:0 Hf
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo "$MATCH" | nkf --utf8 | egrep '未承諾広告|援助します' (日本語Subjectを分解して処理)
| formail -b -f -a"X-procmail-spam-check: jp"

:0
* ^X-procmail-spam-check:
/dev/null
MUAでの拒否
現在メールソフトに使っているWanderlustでもいくつかのフィルタリングはできるようだし、WindowsのアンチウイルスソフトであればMUAの前に取り付いてフィルタリングもやってくれるようなのだが、ここまででだいたい落ちているので今のところは目視フィルタで収まってはいる。が、確実を期すならMUAでのフィルタリングを考えてもよいだろう。Icedove/Thunderbirdではspam登録を簡単にできるので、それを使うのもよい。

RBL系は負荷や信頼性の面で使わないことにしている(blogコメントspamのほうはniku.2ch.netのRBLを利用)。spamprobeは昔使ってたのだけど、データベースが異常に肥大化して使いものにならなくなってしまい、やめてしまった。



/

Postfix 2.1までの情報を網羅。現時点でPostfixのガイドの最高峰に位置する。でも2.4版もほしいなぁ。



/

ちょっと古いんだけど、procmailについては実際のところこれくらいしかない(あとは『Debian辞典』にこれを参照して少し書いたくらい)。

2007年03月16日

あなたがDebian GNU/Linuxを使わない108の理由

タイトルだけ考えたが、続かなそうなのでやめておく。

2007年03月05日

CWE Dictionary

yendotより。現在のドラフト。用語が統一されるのは利点が多い。

2007年03月04日

Japan Linux Conference 2007開催概要の発表&論文募集の開始

Japan Linux Conference 2007の開催概要が発表された。今年は9月13日(木)、14日(金)の2日間となり、場所は産総研の臨海副都心センター(ゆりかもめテレコムセンター駅)。名前はLinux ConferenceからJapan Linux Conferenceに変わり、“主催者として主に用いる名称は「Japan Linux Conference」ですが、「Japan GNU/Linux Conference」という名称も正式名称として認めます。”という誰が主張したのか想像が簡単につきそうな文言も入った。

論文募集も発表され、こちらの締切は7月9日。ただし、ここ数年のLinux Conferenceが論文に偏重しすぎていまいち広がりがなくなった反省か、新規論文に依らない一般の発表・チュートリアルも応募できるようになっているので、これまで敬遠していた人々を呼び込めるか、注目されるところだ。

あいかわらず露出が少ないというか、本気で広告して人を呼び込む気があるのか実行に当たっての戦略はあるのかとどうも不安になってくるここ数年来のJLAなのだが、このままだとknokさんが重荷背負いまくりそうなので宣伝してみる。しかし現時点ではてブ1か…。えんどっとは180。プログラム委員からはmhattaさんが少し宣伝してたのしか見てないような?

2007年02月07日

VMwareのスクリーンキャプチャをもうちょっと楽にする

VMwareは非常に便利かつ高機能な仮想マシン環境であり、仕事上外せないツールの1つである。業務の中ではスクリーンキャプチャを撮影することがよくあるのだが、VMwareのゲスト内からだと、Ctrl+Altでゲストから抜け→VMメニューからCapture Screenを選び→パスとファイル名を指定して→上書きしようとすると確認ダイアログが出て→保存→ゲストにマウスを戻してクリック という手順を毎回踏まないといけないのが不満であった。

当然ながらホストはDebianなのでリモートログインできるし、コマンドで何か指令与えられるんじゃないかと思っていたのだがどうやら存在しないようだ。

単純にGNOMEスクリーンショットなどでホストからキャプチャしようとした場合はマウスカーソルを取得できないためにエラーになってしまい、撮れるのはルートウィンドウだけなのだが、実は対象ウィンドウを名前で直接指定できるようなツールであれば、マウスカーソルに関係なく「VMware Workstation」(Playerだと名前違うのかな)という名前を探してキャプチャすることができる。

ということで、ImageMagickパッケージのimportコマンドでVMwareのウィンドウごとキャプチャを行い、同パッケージのidentifyコマンドでサイズを取得したあとにconvertでクロッピングを行うというスクリプトをshの習作に書いてみた(dashだと動かないかも)。capture-vmware.gz

Debian環境ではimagemagickパッケージをインストールして、capture-vmwareをパスの通ったところに置き、リモートシェルから「capture-vmware vmware.bmp」のようにすればよい。フォーマットはImageMagickに従うので、たとえばvmware.epsだとかvmware.jpgだとかvmware.tiffだとかもできる。クロッピングに使うマージンサイズは環境依存だと思われるので、~/.capture-vmwarercを用意して適当に変数を調整のこと。

2006年12月16日

Binary 2.0 カンファレンス2006

前年同様、IIJの同じ会議室にて。神保町なので会社から近い。忘年会以来に会うという人も多い。何人かから『Binary Hacks』にサインをもらっておく。

定時になって主催の高林くんの司会で開始。会場は定員よりやや少なめか。高林くんのテンションがちょっと低く、あまり盛り上がらない。去年に比べてダレそうな予感をこのときに感じる。

トップバッターは佐藤さんの「Hello, binary world」。GCC拡張でmainを蹂躙しまくっていておもしろい。掲示板ネタはちょっとくどいように感じた(過ぎたるは及ばざるがごとし)。文字ポイント数や色調については、離れたところから見てどう感じるかを事前に考えてほしかったと思う。

続いて金田さんの「X日で作る仮想マシンモニタ(に向けて)」。AMD64の仮想化支援機構を使って仮想マシンモニタをどう作るか、コンテキストスイッチの仕組みなど。実装はSimNowというamd64シミュレータで行ったようだ。とりあえずHello Worldまではできたけど、I/O周りとかはまだまだという話。これは開発は続くのかな?プレゼン資料は凝っていた。デモは前の席でもまったく見えない…。

休憩明けに、田中さんの「getcontextの怪」。IA64でのRubyの挙動が奇妙(謎なところでSEGV)で、追っていったらgetcontext/setcontextとレジスタ周辺で問題があった、という。ほぼ同じようなsetjmp/longjmpでは問題が出ない。結局、類似のケースのSPARCの対処をもとにGCCにworkaroundな実装を入れてもらって、解決はしたらしい。実はsetjmp/longjmpではコンパイラにもともとworkaroundが入っていたというのがオチ?田中さん曰く「アセンブラが一番ポータブル」。マイクの入りが悪かったかスイッチが入っていないようだけど、後ろのほうや中継にはちゃんと聞こえていたんだろうか。

中村さんの「マルチコア時代の並列プログラミング」。マルチコアになるとスレッドをタイムスライスするより各コアがスレッドを保有することになり、mutexやspinなどではうまく対処できなくなるのではないか、そこでlock-free synchronizationはどうかという話。画面の棒読みが気になったけど、内容はなかなかおもしろかった。ただ、現在は理論の論文とテスト実装程度しかなく、採用の負担は大きいので、汎用ライブラリの実装がもっと進んでいくと興味深いかも。

休憩のあと、IIJからの人買いアナウンスがあって、LT(Lightning Talk)へ。トップバッターは八重樫さん。「tty hacks for PS3 Linux」といいつつ、Mesaライブラリによる3DぐるぐるとWiiリモコンを駆使したプレゼン。リモコンを振ると右に左に上に下にぐるぐると回転。これはやられた! Wiiリモコンでプレゼンはおもしろいなぁと、ちょっとだけBluetooth CardBusかUSBがほしくなった(Pythonのライブラリがあって、けっこう簡単にいじれるらしい)。あまりBinaryではないけどたいへんおもしろいプレゼンであった。プレゼンが6枚しかないというのはそういう意味か。

続いてサイボウズ竹迫さんの「Web 2.0時代のAjax Binary Hacks」。Ajaxのいろいろなクロスドメイン通信を取り上げつつ、これが究極だ¡と選んだのは…GIF画像のヘッダを使って通信しちゃえというテクニック。使えなさそうだがおもしろい。聞かせるテクニックでも今回のスピーカーで一番巧みだった。

鴨志田さんの「携帯Flashでバイナリ処理」。時間がちょっと足りなかったかな。ActionScriptの機能制約の中、データ構造と圧縮でやりくりしてというのは『珠玉のプログラミング』的な感じ。

新部さんの「GNU on Binary 10.0」。0か1かと言われたら「自由」であると。GPLv3とかRMS FUDとか危険なワードがプレゼン資料にあったがそれはまったく関係なく。GNU USBという単語が浮かんで、それから実装を開始したというファームウェアのお話。まだLEDがピコピコする程度だけど、「ここまでできればあとは簡単」らしいよ(本当か?)。今年はEと11をかけることに情熱を注がれるらしい。

野首さんの「ASCII 1.0」。2分30秒くらいはおもしろかったけど、GRAPHキー文字のデモはお腹いっぱい。時間をまったく無視なのでLT職人失格だろう。裏で行っていた福地さんのMSXサウンドエフェクトは、漏れ聞いた限りではPSG(Programmable Sound Generator)に適当にデータを流し込むプログラムを作って、そこにマイクから狙いすましたアナログデータを放り込むという、興味深いものだったのだが、紹介もなんもなかったので会場にはわからなかったと思う。もったいない。

前年同様、解散後のフォローは何もなさそうなので、町野さんと連れだって靖国通り交差点のイタメシ屋にて。案の定ほかの人々は路頭に彷徨っていたようだ。

――全体の感想としては、昨年に比べるとダレているというか、がっかり感が残るイベントになってしまっていた。1つひとつの技術はおもしろいのだけど、<自分を棚に上げるが>相手に聞かせようという配慮のステップまで至っていない話者が多かった。これはウケとかネタとかそういう問題ではなくて、とりあえずプレゼンを作ったけどどう話すかを考えていないとか、抑揚のない一本調子だとか、聴衆にどう見えるかをテストしてないとか、時間決めてリハーサルしてないとか、そういったことを改善するだけでだいぶよくなるんじゃないかと思う。



/

2006年12月11日

ARM、死んだり生きたり

家に置いてあるDebian Project向けARMマシンでまたdpkgがsegmentation faultしまくるという障害が発生。現象的に気持ち悪いのだが、ログやstraceしてもまったく原因不明だし、chroot内のみならず親のstable環境でも壊れてる。その前のbuilddでクリティカルなところをヒットしてMPUのバグを誘発した、というのが原因か。前にも同じことがあった。

Debian Projectでのd-iビルドや各種builddの役割を担っているので、これが死んでるとあちこちから「どうなった?」と連絡を受けるはめになる。ということでどうにもなりそうもないし、前回同様再起動。

しかし、リモートログインができるようになったかと思うとすぐに通信が断絶してしまうという奇妙な現象。仕方ないので面倒だけどシリアルにコンソールつないで検証。確かにeth1でLANと通信できない。DHCPするとちゃんと取れる…が数秒後に駄目になる。iptablesを空にしても変わらない。

見てみるとハブにリンクアップ信号がきてない。ケーブル?ということで交換したが駄目。ハードリセットしても駄目だし、こりゃeth1のネットワークカードDEC21140が死んだっぽい。若干不安定で遅いので敬遠していたのだけど、あきらめてeth0のネットワークカードRTL8139のほうに接続。やれやれ、こちらはちゃんと動いた。

各種デーモンを復帰させて完了。深夜になってしまった。

2006年12月04日

HP DL320G5セットアップ

先日注文したHP DL320G5が会社に届いたので、セットアップを行いました。Etchのインストーラをtftp経由で起動し、まったくの無問題でインストール完了。起動時のファンがものすごい音でびっくりします。ビープもそれなりにやかましいです。普通のオフィスには明らかに向きません。

ラックマウントは想像以上に場所を食うので、エージングするような置き場所がありません(そもそもうるさいし…)。最低限必要な設定、SSHサーバ、管理メンバーのアカウント作成とauthorized_keysコピーをしてひとまず完了。再梱包しちゃいました。sugi/tachさんから連絡あり次第、発送します。

PCI情報はこんな感じです。USBキーボードを取り付けた状態だとGRUB後なぜか起動でササりました。

2006年11月28日

HP DL320G5

Debian JPサーバの強化のため、事務局として購入手続きを行いました。来週には会社に届きそうです。セットアップ後、iDCへ搬送します。

2006年11月21日

第5回インターナショナルGPLv3カンファレンス

今日から開始。詳細。時間的に参加は無理なので、ogg映像をtotemで、内容をIRCで拝見中。あとでレポートが出てくることを期待。

2006年10月22日

GnuPG署名方針について、兼吉田さんへの私信 :)

現在、私のGPG署名の方針はDebian流儀に則り、

  • 実際に対面している
  • 本人からの手渡しあるいは宣言により、fingerprintが本人のものであることを確認できている
  • 公的な身分証明書で本人同一性を確認できている
  • 署名対象となるメールアドレスを同時に提供されている

の条件がすべて満たされている場合に、「対象のメールアドレス」のみへの署名を行っています。…ということで、吉田さんへの署名をしようとしたのですが、fingerprintは確認できているものの、頂いた名刺にあるアドレスが公開鍵サーバーに入っていないので、署名できない状況です。公開鍵サーバーの鍵を更新したらお知らせください :)

2006年09月25日

エラーメッセージ一考

この前購入した『みんなのPython』を読みながら(書評は後ほど)ふと思った。

少なくともコンパイルエラーと標準ランタイムエラーくらいまではメッセージがカタログ化されていて翻訳可能で、かつ日本語翻訳リソースが提供されているプログラミング言語(あるいはコンパイラ、仮想マシン)はどの程度あるのだろうか。

企業によって作成・保守されているような言語環境、たとえばVC++、VB、C#、Javaは提供している。OSS系だとgcc-3.3はjaファイルを保持しているようだ。

2006年08月23日

HP ML110G3

会社の新サーバが到着した。Arさんから推薦を受けた、HP社の小規模オフィス向けサーバML110G3。24時間365日運用向けではないけど、まぁゴテゴテしたデスクトップマシンや配線の汚なくなりがちな自作サーバよりはいいだろう。筐体はコンパクトで、ミニタワーよりひと回り小さい。Celeron 2.53GHzで、1GB塔載に増設済み。NICはtg3。ビデオはATIのしょぼいの(インストール時以外使わないが)。キーボードはいいのだが、マウスがレガシーな物理コロコロ形式でちょっと驚く(いらないけど)。音はかなり静かで、自宅サーバにもよさげ。

オプションのAdaptecの6ポートS-ATA RAID(AACRAID 2610SA)を追加して、SATAディスク250GB x 2台をRAID1構成にしてある。ホットスワップは未対応なので、交換は電源を落とさないといけない。実のところケースは普通のmini ATXファクタサイズなので、ディスクの交換はあまり容易とは言えないので(横開けて前開けてカバー外してとやらないと交換できない。これを動作させながらやるのはだいぶ危険だ)、ホットスワップにしてもあまり意味がない。ディスクへの電源にはレガシーなでかくて扱いづらい4ピンコネクタを使っていた。これはちょっとガッカリ。SATAケーブルが途中でひねってあって、ケース内では上がHDD2、下がHDD1なので注意だな。

Sargeの標準インストーラ(2.6.8)ではAACRAIDコントローラとディスクが正しく見えない。カスタム2.6.15版で普通にSCSIドライブとして見えた。CDは/dev/hda。

scsi0 : aacraid
  Vendor: Adaptec   Model: 2610SA Mirror     Rev: V1.0
  Type:   Direct-Access                      ANSI SCSI revision: 02
libata version 1.20 loaded.
ata_piix 0000:00:1f.2: version 1.05
ACPI: PCI Interrupt 0000:00:1f.2[B] -> GSI 19 (level, low) -> IRQ 217
PCI: Setting latency timer of device 0000:00:1f.2 to 64
ata1: SATA max UDMA/133 cmd 0xD480 ctl 0xD402 bmdma 0xCC00 irq 217
ata2: SATA max UDMA/133 cmd 0xD080 ctl 0xD002 bmdma 0xCC08 irq 217
ICH7: IDE controller at PCI slot 0000:00:1f.1
ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 225
ICH7: chipset revision 1
ICH7: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
SCSI device sda: 488279040 512-byte hdwr sectors (249999 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: got wrong page
sda: assuming drive cache: write through
SCSI device sda: 488279040 512-byte hdwr sectors (249999 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: got wrong page
sda: assuming drive cache: write through
 sda: sda1 sda2 sda3 sda4
sd 0:0:0:0: Attached scsi removable disk sda
ATA: abnormal status 0x7F on port 0xD487
ata1: disabling port
scsi1 : ata_piix
ATA: abnormal status 0x7F on port 0xD087
ata2: disabling port
scsi2 : ata_piix

実際のRAID障害は何度か試してみないとよくわからないところあり。recovery部分はAdaptec BIOSでいろいろやる必要があるということかな。RAID作成方法。ストレージはStorManというツールで確認できるっぽい。のだが、rpmをalienしただけでは動かないな。Javaの設定はとりあえずできていてデーモンもGUIも動いているんだけど、ログインに失敗する。PAMを使っていると書いてあるわりにはPAMへのアクセス記録もない…。うーん。

chrootなCentOSでテスト。パスワードについてはまだよくわかってないけど、パスワード空の状態ではrootでログインできるみたい。とはいえ、そもそも「No controllers were found in this system」で、これはカーネルのaacraidドライバではダメというオチらしい。Adaptecにパッチがあるのだけど、US外からは輸出規制で取得できない。SuSEカーネル2.6.15用パッチも入っているっぽいのだが…いや、ちゃうな。さっきはサーバが変だったのか。で見たのだけど、これは2.6.17にマージされてるし、入れてもJavaや/procで見えたりするものでもないようだ…。むー。

[更新] 結局StorManについては、ドライバはあんまり関係なくて、FC4からlibstdc++-2-libc6.1-1-2.9.0.soを含むRPMを取得して/usr/libに置き、libstdc++-libc6.1-1.so.2とすればよいようだ。Debianにはこれは存在しないし無理やりsymlinkするとクラッシュする。

2006年06月27日

ホワイトボードを設置

最近は複数の業務を走らせることが常態化してしまっているため、スケジューリングをしくじるとひどい苦労をする羽目になる。業務進行管理に良いツール、たとえばissue trackerやtodo trackerのソフトを探していろいろチャレンジしてみてはいたのだけど、結局あまりピンとくるものがなかった。日々使うものとしてはwikiでさえ更新の作業負荷が大きい。

これまでのところは卓上カレンダーを主に使っていたのだけど、月をまたぐような中期観点で把握できないこと、書くスペースがあまりなくてまた書き損じが許されないことから、不便なことに変わりはなかった。

ということで、ホワイトボード(ドンキで購入)をラックの横に設置し、これで自分の業務のスケジューリングを行うことにする。2次元空間における自由度としてはやはりホワイトボード最強。細いペンがないので数本そのうち買ってこよう。引き継ぎ資料や電子的な業務まとめとしてはwikiを使い、画像多数がある場合にはHTMLやその他の電子フォーマットで、と使い分けていく予定。

ホワイトボード並みの大きさ、軽さ、自由度を持つタブレットPCがあるといいのに。

2006年06月15日

あのプロジェクトは今

ということで、未踏プロジェクト関連やOSS支援関連の、その後の継続開発や公開予定の約束についてはどうなったのだろうかと。

期待していた3D tcpdumpがなにやら闇に葬られた状態なのを見て、ふと気になった。 ほかにもいろいろあるよね。深追い禁止だろうか。

2006年06月07日

Added gs8-cjk patch

ム、gs-espにパッチマージがきましたか。

Author: toshi
Date: 2006-06-06 05:59:04 -0400 (Tue, 06 Jun 2006)
New Revision: 165
Log:
Added gs8-cjk patch

Added:
   trunk/lib/cjkv/
   trunk/lib/cjkv/baseutil.ps
   trunk/lib/cjkv/cjkcidcm.ps
   trunk/lib/cjkv/cjkfnmap.ps
   trunk/lib/cjkv/cjkvinit.ps
   trunk/lib/cjkv/cjkvttcf.ps
   trunk/lib/cjkv/tt11util.ps
   trunk/lib/cjkv/tt42util.ps
Modified:
   trunk/CHANGES
   trunk/lib/gs_ttf.ps
   trunk/src/gdevpdtc.c
   trunk/src/gdevpdtt.c
   trunk/src/gstype42.c
   trunk/src/gxfont42.h
   trunk/src/unixinst.mak
   trunk/src/zcfont.c
   trunk/src/zchar1.c
   trunk/src/zchar42.c
   trunk/src/zfcid1.c

Modified: trunk/CHANGES
===================================================================
--- trunk/CHANGES	2006-05-23 21:56:25 UTC (rev 164)
+++ trunk/CHANGES	2006-06-06 09:59:04 UTC (rev 165)
@@ -3,6 +3,7 @@
 
 CHANGES IN post-8.15.2 SVN
 
+	- Added gs8 CJKV patch
 	- Fix compilation on systems that don't have gtk (but still want
 	  the x11 driver)
 	- The omni driver doesn't use glib -- update configure.ac

しかしmhattaさんの作業時間はあるんだろうか。結局cmapからは逃げられないのかな。