<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>hisashim</title>
  <link href="http://hisashim.org/journal.xml" rel="self"/>
  <link href="http://hisashim.org/"/>
  <updated>2010-07-24T06:35:14+00:00</updated>
  <id>http://hisashim.org/</id>
  <author>
    <name>Hisashi Morita</name>
  </author>

  
  <entry>
    <title>とちぎテストの会議</title>
    <link href="http://hisashim.org/2010/07/17/toteka.html"/>
    <updated>2010-07-17T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/07/17/toteka</id>
    <content type="html">&lt;p&gt;とちぎテストの会議に参加してきました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;とちぎテストの会議&lt;br/&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/tochigitestnokaigi/&quot;&gt;http://d.hatena.ne.jp/tochigitestnokaigi/&lt;/a&gt;

&lt;blockquote&gt;&lt;p&gt;開催日時 7月17日、13:00〜17:30&lt;br/&gt;
開催場所 西那須野公民館&lt;/p&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;ソフトウェアテストの識者が何人も参加されている、類のないミーティングだっ
たようです。&lt;/p&gt;

&lt;h3&gt;雑感&lt;/h3&gt;

&lt;p&gt;最初にパネリストのポジショントークがあったおかげで、テストに関してどうい
う立場があってどういう問題意識があるのかがようやく分かった気がします。テ
ストという言葉は幅が広いので、誰が何のために行うテストの話をしたいのか言
わないと、誤解やすれ違いが起きそう。今回は議論の前にすり合わせが必要で、
ディスカッション本編は時間が足りなかった感があるので、次回があるといいな
と思います。&lt;/p&gt;

&lt;p&gt;今回は、アマチュアプログラマとしての興味もありましたが、人間向けソフトウェ
アの開発を支援する人間、つまり編集者としても強い興味があったので、次のこ
とを実践者から直接聞けただけでも収穫でした。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ソフトウェアテストも手間暇がかかる。開発者向けユニットテストは自動化
されていて数秒で済むかもしれないが、手動でのテストも多いし、大掛かり
なテストは計画から含めて数ヶ月かかるものもある。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ソフトウェアテストも実環境でテストができるとは限らない．例えば組み込
みソフトウェア。そういった場合はテストをしやすくするためのお膳立てが
大事。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;分かってみれば当たり前ですが、コンピュータソフトウェアのテストにも手間暇
や規模やプラットフォームの問題があるようです。であればそれに対する解決策
は、出版物にも応用できるかもしれません。&lt;/p&gt;

&lt;h3&gt;懇親会&lt;/h3&gt;

&lt;p&gt;懇親会で教えてもらった、一人ではできないか、あまり意味がないプラクティス：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ペアプログラミング&lt;/li&gt;
&lt;li&gt;コードレビュー&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;確かに。&lt;/p&gt;

&lt;p&gt;特に、ペアプログラミングをしたいときって、どうすればいいんでしょうね。二
人以上が同じ時間に同じ場所で同じ課題に取り組む必要があるので、たぶん仕事
場が最適なんでしょうが、そういう職場ってなかなか少ないような。&lt;/p&gt;

&lt;h2&gt;Lightning Talk&lt;/h2&gt;

&lt;p&gt;せっかくなのでライトニングトークに応募して、発表させていただきました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;testing-of-books.html&quot;&gt;
本のテスト（あるいは人間向けソフトウェアのテストについて）
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;「本もソフトウェアであり、コンピュータソフトウェア開発の知見を応用できる
ことが多い」といういつもの考えに沿って、出版におけるテストへの取り組みを
報告するという内容です。&lt;/p&gt;

&lt;p&gt;試行錯誤中なので整理されていませんが、これまでの試みを振り返るいい機会で
した。いただいたフィードバックのおかげで、一人で考えていたときよりも考え
が進んだと思います。&lt;/p&gt;

&lt;p&gt;いずれにせよ、やれることはたくさんあるので、できるところから実践していこ
うと思います。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>本のテスト（あるいは人間向けソフトウェアのテストについて）</title>
    <link href="http://hisashim.org/2010/07/17/testing-of-books.html"/>
    <updated>2010-07-17T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/07/17/testing-of-books</id>
    <content type="html">&lt;p&gt;（以下はとちぎテストの会議でのライトニングトークの資料です。当日使ったものに若干変更を加えています。）&lt;/p&gt;

&lt;div class=&quot;presentation&quot;&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;本のテスト（あるいは人間向けソフトウェアのテストについて）&lt;/h1&gt;
&lt;h3&gt;森田尚&lt;/h3&gt;
&lt;h4&gt;hisashim at workbook.org&lt;/h4&gt;
&lt;h4&gt;株式会社オーム社開発部（hmorita at ohmsha.co.jp）&lt;/h4&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;発表者について&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;編集者&lt;/li&gt;
  &lt;li&gt;コンピュータは素人&lt;/li&gt;
  &lt;li&gt;この発表は個人的な考えを非公式に述べるもので、雇用者とは無関係&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;理工書の出版社に勤務しており、書籍を企画編集しています。&lt;/p&gt;
&lt;p&gt;出版物もソフトウェアの一種であり、理想に近づけるための方法として、読み直しをはじめとする「テスト」が存在します。今回は、本のテストに対する私と周囲の取り組みを報告します。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;本もソフトウェアである&lt;/h1&gt;
&lt;p&gt;コンピュータソフトウェアと同様に、本は人間向けのソフトウェアといえる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;共通点：ソフトウェアである&lt;/li&gt;
&lt;li&gt;相違点：実行するのがコンピュータか人間か&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;技術を応用できる&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;バージョン管理・問題追跡・CI&lt;/li&gt;
  &lt;li&gt;反復型開発・レビュー・リファクタリング・ふりかえり&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;しかしテストについては、技術をそのまま応用するのが難しい&lt;/p&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;コンピュータソフトウェアと同様に、本もソフトウェアの一種です。&lt;/p&gt;
&lt;p&gt;コンピュータソフトウェア開発の技術には、本づくりに応用できるものがあります。ですがテストはそのまま応用できない場合がままあります。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;本作りにおけるテスト&lt;/h1&gt;
&lt;p&gt;本作りでテストに相当するのは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;読み直すこと&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;しかし本作りに特有の問題点がある&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;時間がかかる&lt;/li&gt;
&lt;li&gt;目が慣れてしまう&lt;/li&gt;
&lt;li&gt;読む人を増やしにくい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;いずれも人の目で読むために生じる問題&lt;/p&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;本作りにおけるテストは、人の目で読み直すことが中心になります。&lt;/p&gt;
&lt;p&gt;ですが、人間はコンピュータのように速く読めません。またコンピュータのような単純な正確さや再現性を求めるのは無茶です。読んでくれる人の人数を増やすと、とりまとめが大変です。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;工夫&lt;/h1&gt;
&lt;p&gt;読み直しを量・質ともに充実させる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;いつでも最新の原稿がレイアウトされた状態で読めるように&lt;/li&gt;
&lt;li&gt;識者によるレビューを行う&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記を実現・支援するための道具&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自動組版ツール（XML、LaTeXなど）&lt;/li&gt;
&lt;li&gt;協働支援ツール（ML、トラッカー、バージョン管理システムなど）&lt;/li&gt;
&lt;li&gt;校正支援ツール（aspell（欧文）、JustRight!やWord（和文）など）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;そこでこういった工夫をしました。テスト自体を機械に肩代わりしてもらうのは難しいので、主にテストをしやすくするための工夫です。&lt;/p&gt;
&lt;p&gt;最終的な仕上がりに近いものを読めば、より実際に即した改善案が浮かびます。&lt;/p&gt;
&lt;p&gt;内容に詳しい人に目を通してもらえば、より良い改善案をもらえます。&lt;/p&gt;
&lt;p&gt;たくさんの目で、または時間をおいて読むことは、視点の固定や思い込みを減らします。&lt;/p&gt;
&lt;p&gt;多人数からフィードバックをもらう際のとりまとめは、メーリングリストやトラッカーやバージョン管理ツールを使えば、効率化できます。&lt;/p&gt;
&lt;p&gt;校正支援ツールは、本来は誤記を見つけるための道具ですが、内容上の問題点もまま見つかります。&lt;/p&gt;
&lt;p&gt;（※注意：ツールはあくまで人間を支援する手段で、何をどう使うかはケースバイケースです。）&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;考察など&lt;/h1&gt;
&lt;p&gt;良いところ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本の質が上がった（発行後に見つかる問題点が数分の一に減少）&lt;/li&gt;
&lt;li&gt;効率化できた（数十時間の作業が数時間に）&lt;/li&gt;
&lt;li&gt;著者をはじめ関係者には好評&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;いまいちなところ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根本的な解決はまだ遠い&lt;/li&gt;
&lt;li&gt;もっとやりようがあるのでは？&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;効果は測定していませんが実感しています。発行後に見つかる不具合は明らかに減りました。効率についても、例えば数十時間かかっていた校正作業が、数時間でかつ高い精度でできるようになっています。著者や訳者からも、読者からも、おおむね良い評価をいただいています。&lt;/p&gt;
&lt;p&gt;ただし、読むのが大変なことに変わりはありません。また支援ツールもすべてが自動化できているわけではなく、忙しいと適用が滞りがちです。&lt;/p&gt;
&lt;p&gt;今後の課題は、うまくいった工夫の実行コストを下げることと、効果がありそうな方法を試していくことかと考えています。&lt;/p&gt;
&lt;p&gt;なおTDDの可能性は今のところ不明です。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;参考資料&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;『プログラミングClojure』の編集制作におけるLisp/Scheme&lt;br/&gt;
&lt;a href=&quot;http://hisashim.org/2010/03/20/shcloj-ja-prod.html&quot;&gt;http://hisashim.org/2010/03/20/shcloj-ja-prod.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Refactoring the Publishing Process (Steve Loughran, Erik Hatcher, 2006)&lt;br/&gt;
&lt;a href=&quot;http://people.apache.org/~stevel/papers/refactoring_publishing.pdf&quot;&gt;http://people.apache.org/~stevel/papers/refactoring_publishing.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The Emerging Art of Agile Publishing (Michael Fitzgerald, 2006 )&lt;br/&gt;
&lt;a href=&quot;http://www.xml.com/pub/a/2006/03/08/agile-publishing.html&quot;&gt;http://www.xml.com/pub/a/2006/03/08/agile-publishing.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;!-- 
&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;[slide title]&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;[point one]&lt;/li&gt;
&lt;li&gt;[point two]&lt;/li&gt;
&lt;li&gt;[point three]&lt;/li&gt;
&lt;li&gt;[point four]&lt;/li&gt;
&lt;li&gt;[point five]&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
[any material that should appear in print but not on the slide]
&lt;/div&gt;
&lt;/div&gt;
 --&gt;

&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>オブジェクト倶楽部2010夏イベント</title>
    <link href="http://hisashim.org/2010/07/16/objectclub.html"/>
    <updated>2010-07-16T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/07/16/objectclub</id>
    <content type="html">&lt;p&gt;毎年恒例のオブジェクト倶楽部の夏イベントにお邪魔してきました。&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;オブジェクト倶楽部2010夏イベント&lt;br/&gt;
&lt;a href=&quot;http://objectclub.jp/event/2010summer/&quot;&gt;http://objectclub.jp/event/2010summer/&lt;/a&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;まず感じたのは、発表者に若い方が多かったことです。バトンタッチがうまくで
きているのがいいなあと思いました。組織も新陳代謝が大事。&lt;/p&gt;

&lt;p&gt;午前中は関さんの話を聞けました。いつもどおり、当たり前のことしか言わない。
「仕事中は理想の職業人として振る舞おうよ。だって仕事でしょ」とか。
当たり前のことを、自分がいかに疎かにしているかに気づかされます。&lt;/p&gt;

&lt;p&gt;今回は少ししかいられなかったのですが、この種のイベントを質を保って続ける
のは、簡単なことではないと思います。開催に尽力されたみなさん、ありがとう
ございました。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>『プログラミングRuby 1.9』近日発行</title>
    <link href="http://hisashim.org/2010/05/17/ruby19ja.html"/>
    <updated>2010-05-17T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/05/17/ruby19ja</id>
    <content type="html">&lt;p&gt;&quot;Programming Ruby 1.9&quot;の日本語版が5/25に発行されます。
遅くなりましたがもうすぐお届けできそうです。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;プログラミングRuby 1.9 言語編&lt;br/&gt;
Dave Thomas with Chad Fowler and Andy Hunt著
まつもとゆきひろ監訳 田和勝訳&lt;br/&gt;
&lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06809-6&quot;&gt;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06809-6&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/4274068099/&quot;&gt;http://www.amazon.co.jp/dp/4274068099/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;プログラミングRuby 1.9 ライブラリ編&lt;br/&gt;
Dave Thomas with Chad Fowler and Andy Hunt著
まつもとゆきひろ監訳 田和勝訳&lt;br/&gt;
&lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06810-2&quot;&gt;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06810-2&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/4274068102/&quot;&gt;http://www.amazon.co.jp/dp/4274068102/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;田和さんに訳していただいたうえでまつもとさんに監訳していただき、Leoさん、
卜部さん、角谷さん、笹田さん、関さん、Yuguiさん、成瀬さん、西山さん、前田
さん、やまださんにレビューしていただきました。編集作業ではトップスタジオ
の武藤さんに助けていただきました。装丁は同じくトップスタジオデザイン室の
轟木さんと阿保さんにお願いしました。ありがとうございます。&lt;/p&gt;

&lt;p&gt;5/25に卸に搬入される予定なので、5/26か5/27くらいから書店の棚に並び始める
んじゃないかと思います。&lt;/p&gt;

&lt;p&gt;ふりかえりは後ほど。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>TOC 2010の資料を読んで</title>
    <link href="http://hisashim.org/2010/04/11/toccon-memo.html"/>
    <updated>2010-04-11T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/04/11/toccon-memo</id>
    <content type="html">&lt;p&gt;TOC 2010の資料の感想を発掘したので貼ってみる。&lt;/p&gt;

&lt;h2&gt;前置き&lt;/h2&gt;

&lt;p&gt;事前に興味を引いたセッション：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TOC 2010の面白そうなトーク&lt;br/&gt;
&lt;a href=&quot;http://hisashim.org/2010/02/16/toccon.html&quot;&gt;http://hisashim.org/2010/02/16/toccon.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;それぞれの概要&lt;/h2&gt;

&lt;h3&gt;Subversionによるデジタルアセット管理&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Using Open Source Tools for DAM and Production Workflow Management&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/11229&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/11229&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Subversionを使ってDAM（デジタル資産の管理）しましょうという話。出版社に
DAMを導入しようとした時の注意点が挙がっている。&lt;/p&gt;

&lt;p&gt;まとめはこう：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Subversionが自分たちの役に立ちそうか判断する&lt;/li&gt;
&lt;li&gt;編集者を説得する&lt;/li&gt;
&lt;li&gt;パイロット版企画を3つ選ぶ&lt;/li&gt;
&lt;li&gt;オーナーを見つける&lt;/li&gt;
&lt;li&gt;必要に応じて解説書を読む&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Beanstalkのようなサービスを試すのも手だと書かれている。たしかにリポジト
リを用意する手間が導入を阻む一要因なので、いいアドバイスだと思う。&lt;/p&gt;

&lt;p&gt;（あと会社が推進しているというところが重要。）&lt;/p&gt;

&lt;p&gt;日本でDAMを導入するときは、道具だけじゃなくて、コンテントの権利に関する
約束を書面で交わすという文化も一緒に導入する必要がありそう。USだと契約文
化が定着してるせいか、出版契約は当然ながら執筆前に交わすし、第三者による
図版等のコンテントは転載許諾の書面が原稿一式と一緒に保存されてたりする。
このへんも大事。&lt;/p&gt;

&lt;h3&gt;ebookの出版契約&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ebook Contracts:
Critical Terms and Lessons Learned from Both Sides of the Table&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/11227&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/11227&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;出版社と流通との間で交わす契約の話。実務に携わっている人向け。
例えばこんな細かくて具体的な話が：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;標準価格のn%なのか、売価のn%なのか&lt;/li&gt;
&lt;li&gt;条件が対象とするメディアを明示すること&lt;/li&gt;
&lt;li&gt;価格がメディア間で矛盾しないように&lt;/li&gt;
&lt;li&gt;著者との契約と矛盾しないように&lt;/li&gt;
&lt;li&gt;refresh/update（マイナーアップデート）の提供を義務にするのか
しないのか、対価を取るのか取らないのか&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;OPDS：オープンな出版物流通システム&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open Publication Distribution System&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/10806&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/10806&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;OPDSの紹介。ebookを利用するにあたって、デバイスもフォーマットも入手先も
いろいろあるので、探して手に入れるだけでも大変。OPDSは、読み手が目当ての
ものを楽に探して手に入れられるようにするための、オープンな標準に準拠した
仕組み。技術的にはAtomベースでいくらしい。&lt;/p&gt;

&lt;p&gt;BookServerはアーキテクチャを指しており、OPDSはそれを実現する基盤となる、
具体的な技術仕様ということらしい。&lt;/p&gt;

&lt;h3&gt;ebookリーダーの現状&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Networked, Mobile, &amp;amp; Landlocked: Current Ereaders&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/10612&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/10612&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;いわく、デバイスやフォーマットが増えて、目当ての本がどのデバイスでどう読めるのか
皆目分からない混乱状態に陥りつつある。フォーマットが同じでも、プラット
フォーム独自のDRMが使われてて、買った本が手持ちの他のデバイスで読めな
いってこともあり得る。この混乱状態では、お客は他のもっと手間のかからない
娯楽に逃げてしまうよ。せっかくネットワークがあるので、読者が欲しいものを
簡単に探して手に入れられるようにしなきゃ。エコシステムとして考えなきゃ。
ブラウザベースのリーダーやBookServerが救いになるかもしれない……。という感
じの話。&lt;/p&gt;

&lt;h3&gt;本が迎える未来：BookServer&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A Future for Books: BookServer&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/13233&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/13233&lt;/a&gt;&lt;br/&gt;
Brewster Kahle (Internet Archive)&lt;br/&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;BookServerのBrewster Kahleさんの話。&lt;/p&gt;

&lt;p&gt;Internet Archiveが推進しているBookServerのコンセプト。ebookを流通させる
共通基盤を作る。貸し借りと売買の両方。著者も読者も出版社も図書館も書店も
卸も、みんな得する仕組み。&lt;/p&gt;

&lt;h3&gt;アジャイルな出版モデル&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Agile Publishing Model&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/13329&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/13329&lt;/a&gt;&lt;br/&gt;
Dave Thomas, Andrew Hunt (Pragmatic Programmers, LLC)&lt;br/&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;ソフトウェア開発におけるAgileな手法を出版に応用した、Pragmatic Bookshelf
によるAgile Publishing Modelの紹介。&lt;/p&gt;

&lt;p&gt;資料がないので参加した人の報告を：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://booksquare.com/tools-change/&quot;&gt;http://booksquare.com/tools-change/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://indesignsecrets.com/tools-of-change-round-up-day-3.php&quot;&gt;http://indesignsecrets.com/tools-of-change-round-up-day-3.php&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;自動化されたワークフローのデモが印象的だったらしい。ここまでの自動化はUS
の出版業界でも珍しいみたい。&lt;/p&gt;

&lt;p&gt;効率化できているのは、分野を技術書、著者をXMLとsvnを扱える人に限っている
からだという指摘はそのとおり。もちろん、みんなが同じようにする必要はなく
て、自分たちに合ったワークフローとツールを考えて用意すればいい。&lt;/p&gt;

&lt;p&gt;彼らに関しては自動化が目を引きがちだけど、個人的には、読者と直接関係を保
ちたいから独占的なプラットフォームを通さないのだという発言のほうが印象に
残る。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://pragprog.com/magazines/2010-05/choice-bits&quot;&gt;http://pragprog.com/magazines/2010-05/choice-bits&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Some publishers need Amazon &amp;amp; Apple because publishers have no
relationship with their readers. But...&lt;/p&gt;

&lt;p&gt;...Amazon and Apple are &lt;em&gt;why&lt;/em&gt; some publishers have no relationship
with their readers. Chicken, meet egg.&lt;/p&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;私の傷跡を見よ：ebook 7つの失敗と教訓&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check Out My Scars: Seven Lessons from the Failure of Ebooks
in 2000, and What They Mean to the Future of Electronic Publishing&lt;br/&gt;
Michael Mace&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/10777&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/10777&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;講演者の実体験に基づく話とのこと。参考になるかどうかは立場次第かも。以下
偏った要約：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;鶏が先か卵が先かに注意。&lt;br/&gt;
コンテントが充実していなければデバイスは普及しない。SonyやAppleは宣
伝や値引きに先行投資して普及させようとしている。しかし読書市場はまだ
うまく回るには至っていない（2も参照）。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ebookのお客は安値。&lt;br/&gt;
ebookのお客は紙版より安い値段を期待している。同時に、ebookに飛びつく
類の熱心な読者は紙版より早い時期に読みたがっている。ハードカバーより
早くペーパーバックの値段で手に入れたい。だから専用デバイスに高い初期
投資をするのをためらってしまう。スマートフォンなど他のデバイスに期待
か（3に注意）。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;モバイルユーザの利用パターンに従来の出版物は合わない。&lt;br/&gt;
モバイルユーザのパターンは従来とは違う。外出先の細切れ時間で利用する。
従来の読書が食事だとすればおやつのつまみ食い。利用パターンに合った短
い内容かどうか考えよう。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;定期刊行物は期待できる。&lt;br/&gt;
雑誌は短い情報を早く安価に伝えるという性質がebook向き。ただし直接記
事へ飛べるため広告は無視されやすいという問題点がある。広告収入の減少
をどう埋め合わせるかが課題。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;どうやったら紙版より優れたエクスペリエンスを提供できるか。&lt;br/&gt;
ebookが顧客にとって何がうれしいのか正しく認識しよう：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NG: 本をたくさん持ち運べる&lt;br/&gt;
&lt;/li&gt;
&lt;li&gt;OK: すぐダウンロードして手に入れられる&lt;/li&gt;
&lt;li&gt;OK: 絶版タイトルが手に入る（これが大きい）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;分岐点に注意。&lt;br/&gt;
従来のままの契約条件では、著者自身が出版した方が利益が大きくなりうる。
出版社が関与したほうが利益が大きくなる分岐点がどこにあるか計算して、
著者に条件を提案しよう。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;予期しない将来に注意。&lt;br/&gt;
小売価格は市場の圧力で低くなる一方。価値を認めてもらう工夫を、あるい
は従来とは別の収益モデルを考えよう。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;雑感&lt;/h2&gt;

&lt;p&gt;個人的にはOPDS / BooksServerのように公益性が高いプロジェクトの発展に期待
かなあ。インディの力になるような仕組みは、結果的に健全な競争を通して分野
全体を活性化するだろうから。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Shibuya.lisp TechTalk &#35;5</title>
    <link href="http://hisashim.org/2010/03/20/shibuya-lisp.html"/>
    <updated>2010-03-20T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/03/20/shibuya-lisp</id>
    <content type="html">&lt;p&gt;Shibuya.lisp TT#5に参加してきました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shibuya.lisp テクニカルトーク#5&lt;br/&gt;
&lt;a href=&quot;http://shibuya.lisp-users.org/2010/03/02/sltt-5/&quot;&gt;http://shibuya.lisp-users.org/2010/03/02/sltt-5/&lt;/a&gt;

&lt;blockquote&gt;&lt;p&gt;日時 - 2010年3月20日(土) 14:40-20:30 (14:10 開場)&lt;br/&gt;
会場 - 渋谷ファーストプレイス8F 株式会社ECナビ セミナールーム&lt;/p&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;今回は勤務先の立場で書籍の販売をさせていただきました。好評だったようで、
なによりです。お客さんとお話しできたのもよかったです。
主催者と参加者のみなさん、ありがとうございました。&lt;/p&gt;

&lt;p&gt;あと個人としてLTに参加しました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shibuya.lisp TT#5 ライトニングトークの発表内容決定!&lt;br/&gt;
&lt;a href=&quot;http://shibuya.lisp-users.org/2010/03/13/sltt5-lter/&quot;&gt;http://shibuya.lisp-users.org/2010/03/13/sltt5-lter/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;資料を転記しておきます。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;shcloj-ja-prod.html&quot;&gt;
『プログラミングClojure』の編集制作におけるLisp/Scheme
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;（『プログラミングClojure』のバッククォートが判別しにくい件は、目下の仕事
が一段落したら、原因を突き止めて再発防止の対策をします。すみません。）&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>『プログラミングClojure』の編集制作におけるLisp/Scheme</title>
    <link href="http://hisashim.org/2010/03/20/shcloj-ja-prod.html"/>
    <updated>2010-03-20T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/03/20/shcloj-ja-prod</id>
    <content type="html">&lt;p&gt;（以下はShibuya.lisp TT #5でのLTの資料です。）&lt;/p&gt;

&lt;div class=&quot;presentation&quot;&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;『プログラミングClojure』の&lt;br/&gt;編集制作におけるLisp/Scheme&lt;/h1&gt;
&lt;h3&gt;森田尚&lt;/h3&gt;
&lt;h4&gt;hisashim at workbook.org&lt;/h4&gt;
&lt;h4&gt;株式会社オーム社開発部（hmorita at ohmsha.co.jp）&lt;/h4&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;前口上&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;発表者について
    &lt;ul&gt;
      &lt;li&gt;職業編集者&lt;/li&gt;
      &lt;li&gt;アマチュアプログラマ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;p&gt;※この発表は発表者の個人的な考えを非公式に述べるものであり、雇用者が関知するものではありません。&lt;/p&gt;
&lt;li&gt;Lisp/Schemeと題しているが、主にGaucheの話（Elisp, xyzzy Lispも若干）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;質問歓迎です。いつでもご質問ください。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;関係した本（抜粋）&lt;/h1&gt;
&lt;p&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06405-0&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06405-0.gif&quot; alt=&quot;コンピュータグラフィックス 理論と実践&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06406-9&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06406-9.gif&quot; alt=&quot;UNIXという考え方&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06437-9&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06437-9.gif&quot; alt=&quot;Linkers &amp;amp; Loaders&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06473-5&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06473-5.gif&quot; alt=&quot;CVSによるオープンソース開発&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06518-9&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06518-9.gif&quot; alt=&quot;入門Meadow/Emacs&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06576-6&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06576-6.gif&quot; alt=&quot;Postfix詳解&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06597-9&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06597-9.gif&quot; alt=&quot;ハッカーと画家 コンピュータ時代の創造者たち&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06600-2&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06600-2.gif&quot; alt=&quot;入門xyzzy&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06656-8&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/4-274-06656-8.gif&quot; alt=&quot;Ship It!&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06637-5&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06637-5.gif&quot; alt=&quot;On Lisp&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06680-1&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06680-1.gif&quot; alt=&quot;Subversion実践入門 第2版&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06721-1&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06721-1.gif&quot; alt=&quot;実践Common Lisp&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06733-4&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06733-4.gif&quot; alt=&quot;+GAINER&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06714-3&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06714-3.gif&quot; alt=&quot;プログラミングErlang&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06729-7&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06729-7.gif&quot; alt=&quot;Manage It!&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06749-5&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06749-5.gif&quot; alt=&quot;Release It!&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06755-6&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06755-6.gif&quot; alt=&quot;プログラマのための論理パズル&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06750-1&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06750-1.gif&quot; alt=&quot;WiiRemoteプログラミング&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06767-9&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06767-9.gif&quot; alt=&quot;入門git&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06776-1&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06776-1.gif&quot; alt=&quot;入門GTK+&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06785-3&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06785-3.gif&quot; alt=&quot;RailsによるアジャイルWebアプリケーション開発 第3版&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06789-1&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06789-1.gif&quot; alt=&quot;プログラミングClojure&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06793-8&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06793-8.gif&quot; alt=&quot;情熱プログラマー&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;こういった本を世に出すお手伝いをしてきました。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;『プログラミングClojure』（2010-01）&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06789-1&quot;&gt;&lt;img width=&quot;100px&quot; src=&quot;http://ssl.ohmsha.co.jp/imgm/978-4-274-06789-1.gif&quot; alt=&quot;プログラミングClojure&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stuart Halloway著  川合史朗訳&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;今日はこの本の編集制作を例に、ワークフローとツールを紹介します。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

 &lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;ゴール&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;かかわる人たち（著者・訳者・レビュア等）に最大限に力を発揮してもらう&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;ツール類はあくまで手段です。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;ワークフロー&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;原稿を執筆・翻訳・編集してcommitする&lt;/li&gt;
&lt;li&gt;最新のPDFがサーバ上に自動生成される&lt;/li&gt;
&lt;li&gt;みなで読んでトラッカーやMLでフィードバックする&lt;/li&gt;
&lt;li&gt;1へ戻る&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以上を繰り返して完成度を高めていく。&lt;/p&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;コンピュータソフトウェア開発と同様に、繰り返しにより漸進的に改善します。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;道具立て（概要）&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;構造化されたテキスト原稿&lt;/li&gt;
&lt;li&gt;自動組版システム&lt;/li&gt;
&lt;li&gt;バージョン管理システム&lt;/li&gt;
&lt;li&gt;トラッカー（問題追跡システム）&lt;/li&gt;
&lt;li&gt;ビルドサーバ&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;実現するための道具立てです。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;道具立て&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;構造化されたテキスト原稿（XML/XHTML/LaTeXなど）
  &lt;ul&gt;
    &lt;li&gt;XMLベースの独自形式&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;自動組版システム（内製ツールやLaTeX）
  &lt;ul&gt;
    &lt;li&gt;IdeoType+独自拡張&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;バージョン管理システム（Subversionなど）
  &lt;ul&gt;
    &lt;li&gt;中央がSubversion、各人の手元ではsvnやgit&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;トラッカー（問題追跡システム）
  &lt;ul&gt;
    &lt;li&gt;Trac&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ビルドサーバ（Hudson、CruiseControl.rbなど）
  &lt;ul&gt;
    &lt;li&gt;Hudson&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;今回はこれらを使いました。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;実際の手順&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Trac: レビュアがチケットを起こす&lt;/li&gt;
&lt;li&gt;Subversion: 訳者が判断して原稿を編集する&lt;/li&gt;
&lt;li&gt;Hudson: PDFを生成してダウンロード可能にする&lt;/li&gt;
&lt;li&gt;変更点を確認&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;（実際にどういう様子だったか、スクリーンショットを使って手順を紹介）&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;IdeoType&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;XML→（LaTeXやXSL-FO）→PDFと変換を行うスクリプト&lt;/li&gt;
&lt;li&gt;v0.1はIPA未踏ソフトウェア創造事業の支援を受けて開発（2006-2007、美馬PM）&lt;/li&gt;
&lt;li&gt;v0.2はその発展版で、pure Gaucheで実装（SXMLライブラリを利用）&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ideotype.org&quot;&gt;http://ideotype.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;今回利用したIdeoType v0.2はGaucheで書かれています。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;変換の各段階&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;XML（原稿）
&lt;pre&gt;
  &amp;lt;h lang=&quot;en&quot;&amp;gt;Preface&amp;lt;/h&amp;gt;
  &amp;lt;h lang=&quot;ja&quot;&amp;gt;まえがき&amp;lt;/h&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;TeXML（中間形式）
&lt;pre&gt;
  &amp;lt;cmd name=&quot;chapter&quot;&amp;gt;
    &amp;lt;parm&amp;gt;まえがき&amp;lt;/parm&amp;gt;
  &amp;lt;/cmd&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;LaTeX（中間形式）
&lt;pre&gt;
  \chapter{まえがき}
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;PDF（最終出力）
&lt;pre&gt;
  まえがき
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;XMLから中間形式を経てPDFが生成されます。LaTeXをバックエンドとして利用しています。&lt;/p&gt;
&lt;p&gt;（&lt;a href=&quot;http://getfo.org/texml/spec.html&quot;&gt;TeXML&lt;/a&gt;はTeXのXML表現で、これによりTeXへのシリアライズにまつわる処理を分離・隠蔽しています。）&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;変換の各段階（右側は内部表現）&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;XML（原稿）
&lt;pre&gt;
  &amp;lt;h lang=&quot;en&quot;&amp;gt;Preface&amp;lt;/h&amp;gt;   (h (@ (lang &quot;en&quot;)) &quot;Preface&quot;)
  &amp;lt;h lang=&quot;ja&quot;&amp;gt;まえがき&amp;lt;/h&amp;gt;  (h (@ (lang &quot;ja&quot;)) &quot;まえがき&quot;)
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;TeXML（中間形式）
&lt;pre&gt;
  &amp;lt;cmd name=&quot;chapter&quot;&amp;gt;       (cmd (@ (name &quot;chapter&quot;))
    &amp;lt;parm&amp;gt;まえがき&amp;lt;/parm&amp;gt;      (parm &quot;まえがき&quot;))
  &amp;lt;/cmd&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;LaTeX（中間形式）
&lt;pre&gt;
  \chapter{まえがき}
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;PDF（最終出力）
&lt;pre&gt;
  まえがき
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;IdeoType内部では、原稿はSXML（XMLのS式表現）になっており、自由に操作できます。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;変換ルールの例&lt;/h1&gt;
&lt;pre&gt;
;; 出現要素にマッチさせるパターン
(define pattern-h1
  (sxpath &quot;h1&quot;))

;; マッチしたノードを処理するハンドラ
(define (h1-&gt;texml-chapter node root vars)
  `((cmd (@ (name &quot;chapter&quot;))
         (parm ,@(apply-templates node root vars)))))
&lt;/pre&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;変換ルールはパターンとハンドラとして定義されており、自由にカスタマイズ可能です。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;ふりかえって&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;技術的には普通（ユーザコンピューティングの一例）&lt;/li&gt;
&lt;li&gt;経験した方からは肯定的な評価&lt;/li&gt;
&lt;li&gt;発展途上で、改善の余地は大きい&lt;/li&gt;
&lt;li&gt;引き続き改善していきたい&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;技術的にはごく当たり前のものですが、この方法を経験された方には良い評価をいただいています。&lt;/p&gt;
&lt;p&gt;まだ発展途上ですが、改善していきたいと考えています。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;参考資料&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Island Life - 『プログラミングClojure』のできるまで (訳者サイド)&lt;br/&gt;
&lt;a href=&quot;http://blog.practical-scheme.net/shiro/20100125-making-programming-clojure&quot;&gt;http://blog.practical-scheme.net/shiro/20100125-making-programming-clojure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;『プログラミングClojure』のできるまで（編集者サイド）&lt;br/&gt;
&lt;a href=&quot;http://hisashim.org/2010/01/25/shcloj-ja.html&quot;&gt;http://hisashim.org/2010/01/25/shcloj-ja.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;高品質な書籍を簡単に制作するための出版支援ソフトウェア：ブックコンパイラIdeoType&lt;br/&gt;
コンピュータソフトウェア Vol.26 No.4 Nov. 2009 日本ソフトウェア科学会&lt;br/&gt;
&lt;a href=&quot;http://www.jstage.jst.go.jp/browse/jssst/26/4/_contents/-char/ja/&quot;&gt;http://www.jstage.jst.go.jp/browse/jssst/26/4/_contents/-char/ja/&lt;/a&gt;&lt;br/&gt;
（v0.1の紹介記事）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
&lt;p&gt;ありがとうございました。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;!-- 
&lt;div class=&quot;slide&quot;&gt;
&lt;h1&gt;[slide title]&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;[point one]&lt;/li&gt;
&lt;li&gt;[point two]&lt;/li&gt;
&lt;li&gt;[point three]&lt;/li&gt;
&lt;li&gt;[point four]&lt;/li&gt;
&lt;li&gt;[point five]&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;handout&quot;&gt;
[any material that should appear in print but not on the slide]
&lt;/div&gt;
&lt;/div&gt;
 --&gt;

&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>git over ssh with options</title>
    <link href="http://hisashim.org/2010/02/23/git-ssh-options.html"/>
    <updated>2010-02-23T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/02/23/git-ssh-options</id>
    <content type="html">&lt;p&gt;gitにsshのオプションを渡すには、sshをラップしたスクリプトを用意して
GIT_SSHで指定してやればいいらしい。&lt;/p&gt;

&lt;p&gt;例えば、johndがjdoeというユーザ名でid_rsa_jdoeという鍵を使って
loginしたい場合の準備：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% man ssh

% $EDITOR git_ssh_jdoe.sh

% cat git_ssh_jdoe.sh
#!/bin/sh
# git_ssh_jdoe.sh
exec ssh -o User=jdoe -o IdentityFile=/home/johnd/.ssh/id_rsa_jdoe &quot;$@&quot;
% 

% chmod +x git_ssh_jdoe.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;使うときはGIT_SSHを指定してgitを実行する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% GIT_SSH=git_ssh_jdoe.sh git fetch
Enter passphrase for key '/home/johnd/.ssh/id_rsa_jdoe':
...
% 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;参考：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitTips - Git SCM Wiki&lt;br/&gt;
How to pass ssh options in git?&lt;br/&gt;
&lt;a href=&quot;http://git.wiki.kernel.org/index.php/GitTips#How_to_pass_ssh_options_in_git.3F&quot;&gt;http://git.wiki.kernel.org/index.php/GitTips#How_to_pass_ssh_options_in_git.3F&lt;/a&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>TOC 2010の面白そうなトーク</title>
    <link href="http://hisashim.org/2010/02/16/toccon.html"/>
    <updated>2010-02-16T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/02/16/toccon</id>
    <content type="html">&lt;p&gt;O'Reilly Media主催の出版関係者向けカンファレンス&quot;Tools of Change for
Publishing Conference 2010&quot;（TOC2010）が2/22にNYで始まる。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;O'Reilly Tools of Change for Publishing Conference 2010&lt;br/&gt;
February 22 - 24, 2010, New York, NY&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010&quot;&gt;http://www.toccon.com/toc2010&lt;/a&gt;&lt;br/&gt;
  Be Part of the Publishing Evolution&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;出版も変化の時期なので、考え方や技術など、使える道具について議論しようと
いう趣旨の会議。主に商業出版関係者向けで、話題は非常に技術寄り。2007年か
ら数えてもう4年目になる。&lt;/p&gt;

&lt;p&gt;お金と時間の都合で今年も参加できないけど、資料やリポートを読むだけでも、
自分と興味を同じくする人たちの様子を垣間見られるので、楽しみ。&lt;/p&gt;

&lt;p&gt;個人的に注目している人や組織はこのあたり：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Pragmatic Bookshelf&lt;br/&gt;
&lt;a href=&quot;http://www.pragmaticbookshelf.com/&quot;&gt;http://www.pragmaticbookshelf.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Threepress Consulting, Inc.&lt;br/&gt;
&lt;a href=&quot;http://threepress.org/&quot;&gt;http://threepress.org/&lt;/a&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;li&gt;BookServer / Internet Archive&lt;br/&gt;
&lt;a href=&quot;http://www.archive.org/bookserver&quot;&gt;http://www.archive.org/bookserver&lt;/a&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Pragmatic Bookshelfは、Pragmatic Programmer（達人プログラマー）として知ら
れるDaveさんとAndyさんによる、ソフトウェア開発者コミュニティのための出版
社。Agileな価値観と技術力で先進的な試みをいち早く実践に移していて、自分が
お手本にしている先達のひとつ。（一応情報開示：勤務先と取引関係あり。ちょっ
と見方が偏ってしまうかも。）&lt;/p&gt;

&lt;p&gt;Threepressは出版関連の技術協力を提供しているコンサルティングファーム。
BookServer ProjectにもIbis Readerの開発元として参加している。ebookに興味
がある人、とりわけオープンな規格や実装に興味のある人なら、代表のLizaさん
のBlogやtweetは追いかける価値ありだと思う。&lt;/p&gt;

&lt;p&gt;BookServerは、Wayback Machineで知られるInternet Archiveが推進する、誰でも
使える中立な流通網（になる可能性があるプロジェクト）。インターネットが中
立でも、その上にオーバレイされる流通ネットワーク・出版プラットフォームが
中立であるとは限らないし、実際そうじゃないものが多いから、このプロジェク
トは個人として将来がとても楽しみ。マガジン航の紹介記事とインタビューを併
せて見ておくとよいかも：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.dotbook.jp/magazine-k/2009/10/26/bookserver_by_internet_archive/&quot;&gt;http://www.dotbook.jp/magazine-k/2009/10/26/bookserver_by_internet_archive/&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.dotbook.jp/magazine-k/2009/12/09/no-apple-no-amazon-no-google/&quot;&gt;http://www.dotbook.jp/magazine-k/2009/12/09/no-apple-no-amazon-no-google/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;気になったコマ&lt;/h3&gt;

&lt;p&gt;気になったものを手短に挙げてみる。資料が公開されたらまた感想を書くつもり。&lt;/p&gt;

&lt;p&gt;O'Reillyの人たちがオープンソースなツールを使ったアセット管理と制作ワーク
フローについて話す：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Using Open Source Tools for DAM and Production Workflow Management&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/11229&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/11229&lt;/a&gt;&lt;br/&gt;
Adam Witwer (O'Reilly Media, Inc.), Keith Fahlgren (Threepress
Consulting Inc.)&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;ebook以後の出版契約の話。O'Reillyの法務部長の人らしい：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Ebook Contracts:
Critical Terms and Lessons Learned from Both Sides of the Table&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/11227&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/11227&lt;/a&gt;&lt;br/&gt;
Cali Bush (O'Reilly Media, Inc.)&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Threepressの人がebookの流通システムOPDSについて語る：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Open Publication Distribution System&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/10806&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/10806&lt;/a&gt;&lt;br/&gt;
Hadrien Gardeur (Feedbooks), Keith Fahlgren (Threepress Consulting
Inc.), Liza Daly (Threepress Consulting Inc.)&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;このへんまでワークショップ。&lt;/p&gt;

&lt;p&gt;Threepressの人がebookリーダーについて語る：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Networked, Mobile, &amp;amp; Landlocked: Current Ereaders&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/10612&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/10612&lt;/a&gt;&lt;br/&gt;
Liza Daly (Threepress Consulting Inc.), Keith Fahlgren (Threepress
Consulting Inc.)&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;BookServerのBrewster Kahleさんの話：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;A Future for Books: BookServer&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/13233&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/13233&lt;/a&gt;&lt;br/&gt;
Brewster Kahle (Internet Archive)&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Pragmatic Bookshelfの二人：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Agile Publishing Model&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2010/public/schedule/detail/13329&quot;&gt;http://www.toccon.com/toc2010/public/schedule/detail/13329&lt;/a&gt;&lt;br/&gt;
Dave Thomas, Andrew Hunt (Pragmatic Programmers, LLC)&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;ほかにも迷うくらいたくさんセッションがあるので、興味がある人は覗いてみて、
面白そうなのがあったら教えてもらえるとうれしい。&lt;/p&gt;

&lt;h3&gt;過去の感想&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;TOC2009の資料&lt;br/&gt;
&lt;a href=&quot;http://hisashim.org/2009/02/10/toc.html&quot;&gt;http://hisashim.org/2009/02/10/toc.html&lt;/a&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;li&gt;Tools of Change for Publishing Conference 2008&lt;br/&gt;
&lt;a href=&quot;http://hisashim.livejournal.com/401881.html&quot;&gt;http://hisashim.livejournal.com/401881.html&lt;/a&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;li&gt;O'Reilly Tools of Change Conference presentations&lt;br/&gt;
&lt;a href=&quot;http://hisashim.livejournal.com/353074.html&quot;&gt;http://hisashim.livejournal.com/353074.html&lt;/a&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>WebDAVサーバの読み書き（クライアント側）</title>
    <link href="http://hisashim.org/2010/02/13/webdav-client.html"/>
    <updated>2010-02-13T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/02/13/webdav-client</id>
    <content type="html">&lt;h2&gt;WebDAVサーバの読み書き&lt;/h2&gt;

&lt;p&gt;ファイル共有の方法をFTPからWebDAV/SSLに切り替えることにした。
とりあえずサーバ側は既存の資源を使うことにして、クライアント側の話。&lt;/p&gt;

&lt;p&gt;WebDAVサーバ領域を読み書きできるツールはいろいろある。知っている範囲で例
を挙げる。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;読み出し（ダウンロード）&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Webブラウザ（Firefox、IEなど）&lt;/li&gt;
&lt;li&gt;Explorer (Windows)&lt;/li&gt;
&lt;li&gt;Finder (Mac OS X)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;書き込み（アップロード）&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explorer (Windows)&lt;/li&gt;
&lt;li&gt;Finder (Mac OS X)&lt;/li&gt;
&lt;li&gt;curl&lt;/li&gt;
&lt;li&gt;cadaver&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Explorer&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;「マイ ネットワーク」で
「ネットワークタスク &gt; ネットワーク プレースを追加する」
を選ぶ&lt;/li&gt;
&lt;li&gt;ウィザードの指示に従ってURLを入力する&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;Finder&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Finderのメニューで「移動&gt;サーバへ接続」を選ぶ&lt;/li&gt;
&lt;li&gt;「サーバアドレス欄」にURLを入力する&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;curl&lt;/h3&gt;

&lt;p&gt;コマンドラインツールでアップロードする場合はcurlが便利。&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;$ curl --upload somefile https://example.com/foo/
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;パスワードをファイルに保管しておきたいので、こんな感じ。&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;$ touch upload_url.private
$ chmod 600 upload_url.private
$ vi upload_url.private
https://user:password@example.com/foo/
$

$ curl --upload somefile `cat upload_url.private`
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;--verboseオプションを付けると分かりやすい。&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;$ curl --verbose --upload somefile `cat upload_url.private`
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;サーバのSSLの認証局がマイナーで証明書がブラウザに標準搭載されていない場合
は、証明書を--cacertオプションで指定する。例えばDebianでcacert.orgを使う
場合は、ca-certificatesパッケージをインストールしてcacert.org.crtを指定す
ればよい。&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;$ curl --verbose \
       --cacert /usr/share/ca-certificates/cacert.org/cacert.org.crt \
       --upload somefile `cat upload_url.private`
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;SSLのエラーを無視する--insecureオプションもデバグには役立つ。実運用に使う
のはまずいけど。&lt;/p&gt;

&lt;h3&gt;cadaver&lt;/h3&gt;

&lt;p&gt;コマンドラインから使えるWebDAVクライアントとしては、curl以外にcadaverもあ
る。でも~/.netrcファイル経由でしか認証情報を渡せないようなので、ちょっと
不便。（.netrcを書き換えるスクリプトを用意すれば一応動く。ただし排他制御
が必要。）&lt;/p&gt;

&lt;h2&gt;資料&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;curl&lt;br/&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://curl.haxx.se/docs/&quot;&gt;http://curl.haxx.se/docs/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;$ man curl
$ curl --help
$ w3m /usr/share/doc/curl/
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cadaver&lt;br/&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webdav.org/cadaver/&quot;&gt;http://www.webdav.org/cadaver/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;$ man cadaver
$ cadaver --help
$ w3m /usr/share/doc/cadaver/
$ man netrc
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>『プログラミングClojure』のできるまで（編集者サイド）</title>
    <link href="http://hisashim.org/2010/01/25/shcloj-ja.html"/>
    <updated>2010-01-25T00:00:00+00:00</updated>
    <id>http://hisashim.org/2010/01/25/shcloj-ja</id>
    <content type="html">&lt;p&gt;訳者のShiroさんが経緯を書かれているので、編集者の視点から振り返ってみます。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;プログラミングClojure&lt;br/&gt;
&lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06789-1&quot;&gt;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06789-1&lt;/a&gt;&lt;br/&gt;
Stuart Halloway 著  川合史朗 訳&lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;Island Life - 『プログラミングClojure』のできるまで (訳者サイド)&lt;br/&gt;
&lt;a href=&quot;http://blog.practical-scheme.net/shiro/20100125-making-programming-clojure&quot;&gt;http://blog.practical-scheme.net/shiro/20100125-making-programming-clojure&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;企画のきっかけは、Lisp50での評判を読んだことでした。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://hisashim.livejournal.com/431911.html&quot;&gt;http://hisashim.livejournal.com/431911.html&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;その後はShiroさんの記事のとおり。&lt;/p&gt;

&lt;p&gt;翻訳編集は、LispやJVMをはじめとする各種技術に詳しい方たちに原稿をレビュー
していただき、それを随時反映する形で進めました。お忙しいなか協力していた
だいて、ただただ感謝です。編集面ではT社の共同編集者Kさんにも助けていただ
きました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://twitter.com/bizenn&quot;&gt;http://twitter.com/bizenn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://twitter.com/kazooya/status/7454797148&quot;&gt;http://twitter.com/kazooya/status/7454797148&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://twitter.com/koichiroo&quot;&gt;http://twitter.com/koichiroo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://twitter.com/snmsts&quot;&gt;http://twitter.com/snmsts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cadr.g.hatena.ne.jp/g000001/&quot;&gt;http://cadr.g.hatena.ne.jp/g000001/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://d.hatena.ne.jp/leque/20100121/p1&quot;&gt;http://d.hatena.ne.jp/leque/20100121/p1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cadr.g.hatena.ne.jp/ytakenaka/20100122/p1&quot;&gt;http://cadr.g.hatena.ne.jp/ytakenaka/20100122/p1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://twitter.com/kmizu/status/7989136405&quot;&gt;http://twitter.com/kmizu/status/7989136405&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://read-eval-print.blogspot.com/&quot;&gt;http://read-eval-print.blogspot.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;協働支援ツールとしてはいつものようにQuickML, Subversion, Trac, Hudsonと、
あとpure Gauche版のIdeoType 0.2を若干拡張したものを使いました。最終的な原
稿のリビジョンは778、切られたチケットは約450 件。至らないところはたくさん
あったものの、大過はなくサポートできたかなと思います。&lt;/p&gt;

&lt;p&gt;今回はShiroさんに受けてもらえて本当に幸運でした。質の高さと早さはもちろん
のこと、レビューを打診した方にみな二つ返事で快諾いただけたのも、発行後に
たくさんの人に読んでもらえているのも、Shiroさんの人望と信頼があってこそで
しょう。うれしい限りです。&lt;/p&gt;

&lt;p&gt;ただ一方で、これだけ面白い言語や本が、Shiroさんがかかわらなかったら見過ご
されてしまったかもしれないと考えると、手放しでは喜べない感もあります。出
版を業にしている人間として、送り出すものに責任を持ち、読者に意識的に選ん
でもらえるよう関係を築くこと。送り手と受け手の距離が縮まり、区別さえ曖昧
になりつつある今、それが目下の課題だと感じています。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>2009年のふりかえり</title>
    <link href="http://hisashim.org/2009/12/31/retrospective-2009.html"/>
    <updated>2009-12-31T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/12/31/retrospective-2009</id>
    <content type="html">&lt;p&gt;おかげさまで2009年も無事に過ごせました。&lt;/p&gt;

&lt;h3&gt;仕事&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;書籍の企画編集&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Release It! 本番用ソフトウェア製品の設計とデプロイのために&lt;br/&gt;
Michael T. Nygard著 でびあんぐる監訳&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/4274067491/&quot;&gt;http://www.amazon.co.jp/dp/4274067491/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;プログラマのための論理パズル 難題を突破する論理思考トレーニング&lt;br/&gt;
Dennis E. Shasha著  吉平健治訳&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/4274067556/&quot;&gt;http://www.amazon.co.jp/dp/4274067556/&lt;/a&gt;  &lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WiiRemoteプログラミング&lt;br/&gt;
白井暁彦・小坂崇之・くるくる研究室・木村秀敬 共著&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/4274067505/&quot;&gt;http://www.amazon.co.jp/dp/4274067505/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;入門git&lt;br/&gt;
Travis Swicegood著  でびあんぐる監訳&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/427406767X/&quot;&gt;http://www.amazon.co.jp/dp/427406767X/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;入門GTK+&lt;br/&gt;
菅谷保之著&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/4274067769/&quot;&gt;http://www.amazon.co.jp/dp/4274067769/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RailsによるアジャイルWebアプリケーション開発&lt;br/&gt;
Sam Ruby, David Heinemeier Hansson, Dave Thomas著  前田修吾監訳&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/4274067858/&quot;&gt;http://www.amazon.co.jp/dp/4274067858/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;その他&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;編集制作の技術支援&lt;br/&gt;


&lt;ul&gt;
&lt;li&gt;メーリングリスト&lt;/li&gt;
&lt;li&gt;ファイル共有&lt;/li&gt;
&lt;li&gt;バージョン管理リポジトリ&lt;/li&gt;
&lt;li&gt;トラッカー（ITS）&lt;/li&gt;
&lt;li&gt;ビルドサーバ（CI）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ツール整備

&lt;ul&gt;
&lt;li&gt;IdeoType 0.2&lt;/li&gt;
&lt;li&gt;courier-extra&lt;/li&gt;
&lt;li&gt;その他（翻訳メモリ生成スクリプトなど）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;ふりかえり&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;続けたいこと&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;仕組みを改善する&lt;/li&gt;
&lt;li&gt;無理はしない&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;問題点&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;執筆活動を十分に支援できていない&lt;/li&gt;
&lt;li&gt;外に見える成果の割合が少ない&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;挑戦したいこと&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;編集制作に加えて、執筆をうまく支援する&lt;/li&gt;
&lt;li&gt;アウトプットを増やす&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;2009年は、将来への種まきの年だったように思います。まいた種をうまく育てて、
成果を見てもらえるようにしたいですね。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>varioref.styを日本語の文書で使う</title>
    <link href="http://hisashim.org/2009/12/27/varioref.html"/>
    <updated>2009-12-27T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/12/27/varioref</id>
    <content type="html">&lt;p&gt;varioref.styが提供する\vrefや\vpagerefは、参照先の位置によって出力を適当
に変えてくれるので、参照先が分かりやすくなる。&lt;/p&gt;

&lt;p&gt;\vref：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;参照先が同じページにあれば&quot;figure x.y&quot;とだけ出力&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;参照先が同じページになければ、加えてページ番号を表す文字列を出力&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1ページ前にあれば&quot;on the previous page&quot;&lt;/li&gt;
&lt;li&gt;2ページ以上離れていれば&quot;on page XX&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;\vpageref：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ページ番号を表す追加部分だけを出力&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;出力文字列はカスタマイズできるようになっていて、設定すれば日本語の文書で
も使える（詳しくはvarioref.pdf参照）。&lt;/p&gt;

&lt;p&gt;まずpreambleでパッケージをロードする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\usepackage{varioref}
%% \vrefwarning% ページをまたいだときのloop errorを無視したければ有効に
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;englishオプション選択時のデフォルト設定：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\DeclareOption{english}
  {\vref@addto\extrasenglish{\relax%
    \def\reftextfaceafter {on the \reftextvario{facing}{next} page}%
    \def\reftextfacebefore{on the \reftextvario{facing}{preceding}
                           page}%
    \def\reftextafter     {on the \reftextvario{following}{next} page}%
    \def\reftextbefore    {on the \reftextvario{preceding}{previous} page}%
    \def\reftextcurrent   {on \reftextvario{this}{the current} page}%
    \def\reftextfaraway#1 {on page~\pageref{#1}}%
    \def\reftextpagerange#1#2{on pages~\pageref{#1}--\pageref{#2}}%
    \def\reftextlabelrange#1#2{\ref{#1} to~\ref{#2}}%
  }\relax}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これを参考に、適当に設定する：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\def\reftextfaceafter {（次ページ）}% 見開き対抗
\def\reftextfacebefore{（前ページ）}% 見開き対抗
\def\reftextafter     {（次ページ）}
\def\reftextbefore    {（前ページ）}
\def\reftextcurrent   {}
\def\reftextfaraway#1{\relax{（p.~\pageref{#1}）}
\def\reftextpagerange#1#2{（pp.~\pageref{#1}--\pageref{#2}）}
\def\reftextlabelrange#1#2{（\ref{#1}--\ref{#2}）}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;または：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\def\reftextfaceafter {\relax{\scriptsize\inhibitglue（\reftextvario{次}{次}ページ）\inhibitglue}}
\def\reftextfacebefore{\relax{\scriptsize\inhibitglue（\reftextvario{前}{前}ページ）\inhibitglue}}
\def\reftextafter     {\relax{\scriptsize\inhibitglue（\reftextvario{次}{次}ページ）\inhibitglue}}
\def\reftextbefore    {\relax{\scriptsize\inhibitglue（\reftextvario{前}{前}ページ）\inhibitglue}}
\def\reftextcurrent   {}
\def\reftextfaraway#1{\relax{\scriptsize\inhibitglue（p.~\pageref{#1}）\inhibitglue}}
\def\reftextpagerange#1#2{\relax{\scriptsize\inhibitglue（pp.~\pageref{#1}--\pageref{#2}）\inhibitglue}}
\def\reftextlabelrange#1#2{\relax{\scriptsize\inhibitglue（\ref{#1}--\ref{#2}）\inhibitglue}}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;本文はこんな感じで：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;図\vref{foo}&lt;br/&gt;
図\vref{bar}&lt;br/&gt;
図\vref{baz}&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;出力はこんな感じになるはず（図1.2があるページに書いた場合）：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;図1.1（前ページ）&lt;br/&gt;
図1.2&lt;br/&gt;
図9.1（p.99）&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;（「図1.1『地図A』」のように参照先の番号に加えてタイトルやキャプションも
出力したい場合は、hyperref.styの\nameref
&lt;a href=&quot;http://www.tex.ac.uk/cgi-bin/texfaq2html?label=nameref&quot;&gt;http://www.tex.ac.uk/cgi-bin/texfaq2html?label=nameref&lt;/a&gt;
を使うという手があるらしい。）&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Thumb Index with LaTeX (smell of NIH)</title>
    <link href="http://hisashim.org/2009/12/13/thumbindex.html"/>
    <updated>2009-12-13T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/12/13/thumbindex</id>
    <content type="html">&lt;p&gt;foo.tex:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\documentclass{...}
...
\usepackage{thumbindex}
\pagestyle{thumbindex}
...
\begin{document}
...
\mainmatter
\chapter{...}
...
\end{document}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;thumbindex.sty:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;%% Simple page style with thumb indices
%% usage:
%% \usepackage{thumbindex}
%% \pagestyle{thumbindex}

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{thumbindex}

\def\ps@thumbindex{ %
  \let\@oddfoot\@empty
  \let\@evenfoot\@empty
  \def\@evenhead{ %
    \if@mparswitch \hss \fi
    \underline{\hbox to \fullwidth{\autoxspacing
        \textbf{\thepage}\hfil\leftmark}}%
    \if@mparswitch\else \hss \fi}%
  \def\@oddhead{ %
    \underline{ %
      \hbox to \fullwidth{ %
        \autoxspacing
        {\if@twoside\rightmark\else\leftmark\fi}\hfil\textbf{\thepage}%
      }%
    }\hss
    % draw thumb index
    \if@mainmatter
    \@drawthumbindex{\c@chapter}{10truemm}{0.25}{0}
    \fi
    % end draw thumb index
  }%
  \let\@mkboth\markboth
  \def\chaptermark##1{\markboth{ %
    \ifnum \c@secnumdepth &amp;gt;\m@ne
      \if@mainmatter
        \@chapapp\thechapter\@chappos\hskip1zw
      \fi
    \fi
    ##1}{}}%
  \def\sectionmark##1{\markright{ %
    \ifnum \c@secnumdepth &amp;gt;\z@ \thesection \hskip1zw\fi
    ##1}}}%

% draw thumb index
% usage: \@drawthumbindex{COUNTER}{VADVANCE}{HOFFSET}{VOFFSET}
% e.g. \@drawthumbindex{\c@chapter}{10truemm}{0.25}{0}
\newcommand{\@drawthumbindex}[4]{ %
  \setlength\unitlength{#2}%
  \begin{picture}(0,#4)%
    \put(#3,-#1){ %
      \makebox(0,0)[tl]{ %
        \rule{10truemm}{1truemm}%
      }%
    }%
    \put(#3,-#1){ %
      \makebox(0,-.3)[tl]{ %
        \hb@xt@ 8truemm{\hfil\the#1\hfil}%
      }%
    }%
  \end{picture}%
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(Remove space in &quot;{ %&quot; to restore correct code. There seems no way to
escape Liquid markups yet: &lt;a href=&quot;http://github.com/tobi/liquid/issues#issue/6&quot;&gt;http://github.com/tobi/liquid/issues#issue/6&lt;/a&gt;.)&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>IPA fontをLaTeXで使う</title>
    <link href="http://hisashim.org/2009/11/30/ipafont-latex.html"/>
    <updated>2009-11-30T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/11/30/ipafont-latex</id>
    <content type="html">&lt;p&gt;IPA fontは高品質でオープンソースなので、ウェイトのバリエーションはないも
のの、個人の気軽なlaptop publishingにはうってつけに思える。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;IPAフォントのダウンロード&lt;br/&gt;
&lt;a href=&quot;http://ossipedia.ipa.go.jp/ipafont/&quot;&gt;http://ossipedia.ipa.go.jp/ipafont/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;以下、Debian上のLaTeX（platex + dvipdfmx）から使うためのメモ。&lt;/p&gt;

&lt;h2&gt;使い方&lt;/h2&gt;

&lt;p&gt;フォントをインストールする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get instsll ttf-ipafont
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;dvipdfmxからkpathsea経由でフォントが見えるようにリンクを張る。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo ln -s /usr/share/fonts/truetype/ipafont \
             /usr/share/texmf/fonts/truetype/ipafont
% sudo ln -s /usr/share/fonts/truetype/ipafont \
             /usr/share/texmf-texlive/fonts/truetype/ipafont
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;キャッシュを更新。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo mktexlsr
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;kpathseaから見えているか確認。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% kpsewhich -format 'opentype fonts' ipam
% kpsewhich -format 'truetype fonts' ipam
/usr/share/texmf-texlive/fonts/truetype/ipafont/ipam.ttf
% kpsewhich ipam
% kpsewhich ipam.otf
% kpsewhich ipam.ttf
/usr/share/texmf-texlive/fonts/truetype/ipafont/ipam.ttf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;dvipdfmx用のフォントマップを用意する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% head -n 80 *.map
==&amp;gt; ipafont.map &amp;lt;==
%%% IPA fonts (http://ossipedia.ipa.go.jp/ipafont/)
% rml  H  ipam
% gbm  H  ipag
% rmlv V  ipam
% gbmv V  ipag
%% ptex-jisfonts
rml-jis H ipam
gbm-jis H ipag
==&amp;gt; ipafontx.map &amp;lt;==
%%% IPA fonts (http://ossipedia.ipa.go.jp/ipafont/)
otf-ujmr-h    UniJIS-UTF16-H  ipam
otf-ujmr-v    UniJIS-UTF16-V  ipam
otf-cjmr-h    Identity-H      ipam
otf-cjmr-v    Identity-V      ipam
hminr-h       H               ipam
hminr-v       V               ipam
otf-ujgr-h    UniJIS-UTF16-H  ipag
otf-ujgr-v    UniJIS-UTF16-V  ipag
otf-cjgr-h    Identity-H      ipag
otf-cjgr-v    Identity-V      ipag
hgothr-h      H               ipag
hgothr-v      V               ipag
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;OTFパッケージを使ったLaTeX文書を用意。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% cat foo.tex
\documentclass{jsbook}
...
\usepackage[deluxe]{otf}
...
\begin{document}
...
\end{document}
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;コンパイルして変換する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% platex foo.tex
% dvipdfmx -f jis-cjk -f ipafontx foo.dvi
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;うまくいかなかったら、vfdata-otf-ptexをインストールすると、dvipdfmx周辺の
設定をしてくれるので、動くようになるかもしれない。&lt;/p&gt;

&lt;h2&gt;現状の問題点&lt;/h2&gt;

&lt;p&gt;TrueType版ではなくOpenType版だとエラーが発生する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install otf-ipafont
...
% sudo ln -s /usr/share/fonts/opentype/ipafont \
             /usr/share/texmf/fonts/opentype/ipafont
% sudo mktexlsr
% kpsewhich -format &quot;opentype fonts&quot; ipam
/usr/share/texmf/fonts/opentype/ipafont/ipam.otf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ipamは見えている。でも、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% dvipdfmx -f jis-cjk -f ipafontx foo.dvi
...
** WARNING ** Could not locate a virtual/physical font for TFM
&quot;hminr-h&quot;.
** WARNING ** &amp;gt;&amp;gt; This font is mapped to a physical font &quot;ipam&quot;.
** WARNING ** &amp;gt;&amp;gt; Please check if kpathsea library can find this
font: ipam
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;dvipdfmxはエラーを出す。&lt;/p&gt;

&lt;p&gt;うまくいっているときとの比較（一部抜粋）：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;fontmap: hminr-h -&amp;gt; HiraMinPro-W3(H)
pdf_font&amp;gt;&amp;gt; The -m &amp;lt;00&amp;gt; option will be assumed for &quot;HiraMinPro-W3&quot;.
(CID:HiraMinPro-W3)
pdf_font&amp;gt;&amp;gt; Type0 font &quot;HiraMinPro-W3&quot; cmap_id=&amp;lt;H,2&amp;gt; opened at
font_id=&amp;lt;hminr-h,0&amp;gt;.

fontmap: hminr-h -&amp;gt; ipam(H)
pdf_font&amp;gt;&amp;gt; The -m &amp;lt;00&amp;gt; option will be assumed for &quot;ipam&quot;.
** WARNING ** Could not locate a virtual/physical font for TFM &quot;hminr-h&quot;.
** WARNING ** &amp;gt;&amp;gt; This font is mapped to a physical font &quot;ipam&quot;.
** WARNING ** &amp;gt;&amp;gt; Please check if kpathsea library can find this font: ipam
** ERROR ** Cannot proceed without .vf or &quot;physical&quot; font for PDF
output...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Gentooでも同じ問題が。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;ptex-3.1.10_p20090610 で日本語 - 落穂拾い&lt;br/&gt;
&lt;a href=&quot;http://blog.goo.ne.jp/gleaning/e/f37d9f3eecf9234e2261897e039cd785&quot;&gt;http://blog.goo.ne.jp/gleaning/e/f37d9f3eecf9234e2261897e039cd785&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;OpenType版IPA fontがPostScriptベースではなくTrueTypeベースであることが
原因みたい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;IPAフォントインストール || OSS iPedia&lt;br/&gt;
&lt;a href=&quot;http://ossipedia.ipa.go.jp/ipafont/fontinstall.html&quot;&gt;http://ossipedia.ipa.go.jp/ipafont/fontinstall.html&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;フォントファイルの拡張子を .otfから .ttf に変更してください。&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;

&lt;p&gt;LaTeXで使うケースではないけれど、MacOSXでも問題が生じている。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;実験る〜む IPAフォントはSnow Leopardにインストールできない？ その2&lt;br/&gt;
&lt;a href=&quot;http://dslabo.blog4.fc2.com/blog-entry-1624.html&quot;&gt;http://dslabo.blog4.fc2.com/blog-entry-1624.html&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;とりあえずTrueType版を使いながら様子見。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>vfdata-courier-extra</title>
    <link href="http://hisashim.org/2009/11/06/vfdata-courier-extra.html"/>
    <updated>2009-11-06T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/11/06/vfdata-courier-extra</id>
    <content type="html">&lt;p&gt;LaTeXで使えるCourier bold condensedフォントをでっちあげた。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vfdata-courier-extra&lt;br/&gt;
&lt;a href=&quot;http://sourceforge.net/projects/ideotype/files/vfdata-courier-extra/&quot;&gt;http://sourceforge.net/projects/ideotype/files/vfdata-courier-extra/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;まだ動作が怪しい。&lt;/p&gt;

&lt;!-- 

## 動機

Courierは幅が広いので、版型が小さい本でソースコードを載せたい
ときには狭い幅のバリエーション（condensed, narrow）が欲しくなる。
medium weightのcondensedならこう書けば使える。

    {\usefont{T1}{pcr}{m}{n}}% load pcr
    \DeclareFontShape{T1}{pcr}{mc}{n}{&lt;-&gt; pcrr8tn}{}

ただしLaTeX（に標準で含まれるpslatex）が用意してくれているのはmedium
condensed だけで、boldやsmall capsやoblique（slant）はない。mediumに加え
てboldだけでもあれば、ソースコードを構文強調するのに便利。

## TeXのフォントの仕組み

今回関係する部分を要約すると、

  * .afmから.vfと.tfmを作って、TeX的にパスが通ったところに配置
  * スタイル中で\DeclareFontShapeで登録
  * 文書中で\usefont等で使う

とすればいいらしい。本当はもっといろいろあるんだけど、深追い禁止。

## 作り方

詳しくは末尾の参考資料を参照のこと。

1. まずfontinstに与える指示をTeX文書の形式で記述する。

   courier-extra-driver.tex:

    \input fontinst.sty
    \needsfontinstversion{1.926}

    %% make courier condensed by 0.85
    \def\makecouriercondensed#1{\%
      \transformfont{pcr#18rn}{\%
        \xscalefont{850}{\%
          \reencodefont{8r}{\fromafm{pcr#18a}}}}}

    \makecouriercondensed{r}  % regular
    \makecouriercondensed{b}  % bold

    \installfonts
    \installfont{pcrr7tn}{pcrr8rn,psyr,latin}{OT1tt}{OT1}{pcr}{c}{n}{}
    \installfont{pcrr8tn}{pcrr8rn,psyr,latin}{T1}{T1}{pcr}{c}{n}{}
    \installfont{pcrb7tn}{pcrb8rn,psyr,latin}{OT1tt}{OT1}{pcr}{b}{n}{}
    \installfont{pcrb8tn}{pcrb8rn,psyr,latin}{T1}{T1}{pcr}{b}{n}{}
    \endinstallfonts

    \bye

2. これをtexで処理すると.vplや.plができる。

     $ tex courier-extra-driver.tex

3. それらをvptovfやpltotfで処理して.vfや.tfmを生成する。

     $ for f in *.vpl ; vptovf $f
     $ for f in *.pl ; pltotf $f

4. 出来上がった.vf, .tfmを適切な場所に配置する。具体的には

     $ kpsepath -n platex vf

   などとして出力されるパス。

   ~/.texmf//などに置くと環境に依存してしまうので、カレントディレクトリに
   置くか、パッケージ化してシステムにインストールするのがよさそう。

## 使い方

courier-extra.sty:

    \NeedsTeXFormat{LaTeX2e}
    \ProvidesPackage{courier-extra}[2009/11/03]
    \RequirePackage[T1]{fontenc}
    \RequirePackage{textcomp}
    \RequirePackage{courier}
    {\usefont{T1}{pcr}{m}{n}}% load pcr
    ...
    \DeclareFontShape{T1}{pcr}{mc}{n}{&lt;-&gt; pcrr8tn}{}
    \DeclareFontShape{T1}{pcr}{bc}{n}{&lt;-&gt; pcrb8tn}{}

foo.tex:

    \documentclass{article}
    \usepackage{courier-extra}
    \newcommand{\qbf}{The quick brown fox jumps over the lazy dog.}
    \begin{document}
    \begin{alltt}
    \usefont{T1}{pcr}{mc}{n}\qbf
    \usefont{T1}{pcr}{bc}{n}\qbf
    \end{alltt}
    \end{document}

courier-extra.map:

    pcrr8rn 8r ucrr8a -e .85
    pcrb8rn 8r ucrb8a -e .85

上記3つを用意して、コンパイルと変換をすればよい。

    $ latex foo.tex
    $ dvipdfmx -f courier-extra.map -o foo.pdf foo.dvi

## 注意点と落とし穴：

  * フォントファイルの命名規則（Berry則）を理解する必要がある。
    例えばpcrr8tnはこういう意味らしい：
      - p:  supplier (Adobe)
      - cr: typeface name (Courier)
      - r:  weight (medium)
      - 8t: encoding (T1)
      - n:  width (narrow)

  * \recordtransformsで生成した.mapではうまくPDFを生成でき
    なかったので、.mapはdvipdfmx.mapを参考に手書き。

  * boldとsmall capsはフォントも生成できるしdvipdfmxを使った
    出力もうまくいく。ただobliqueはvfやtfmは生成されるものの、
    出力がうまくいかない（moを指定してもmと同じになる）。
    仕方がないのでとりあえずboldだけ作ることに。

  * kpathseaが$TEXINPUTS環境変数を解釈していないように見える。

  * mdwfontsでは、pcr*8tnをmcではなくmに割り当てている（標準をnarrowにし
    ている）ように見える。同一の文書内でmediumとnarrowを使い分けたい人は
    要注意かも。

 --&gt;


&lt;h2&gt;参考資料&lt;/h2&gt;

&lt;h3&gt;日本語の説明やチュートリアル&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Type 1 フォント&lt;br/&gt;
&lt;a href=&quot;http://glc.l.u-tokyo.ac.jp/pukiwiki/index.php?TeX%2FFont%2FType1&quot;&gt;http://glc.l.u-tokyo.ac.jp/pukiwiki/index.php?TeX%2FFont%2FType1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fontinst パッケージ&lt;br/&gt;
&lt;a href=&quot;http://glc.l.u-tokyo.ac.jp/pukiwiki/index.php?TeX%2FFont%2FFontInst&quot;&gt;http://glc.l.u-tokyo.ac.jp/pukiwiki/index.php?TeX%2FFont%2FFontInst&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;フォント名&lt;br/&gt;
&lt;a href=&quot;http://glc.l.u-tokyo.ac.jp/pukiwiki/index.php?TeX%2FFont%2FFontName&quot;&gt;http://glc.l.u-tokyo.ac.jp/pukiwiki/index.php?TeX%2FFont%2FFontName&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kpathsea&lt;br/&gt;
&lt;a href=&quot;http://www.tex.ac.uk/cgi-bin/texfaq2html?label=privinst&quot;&gt;http://www.tex.ac.uk/cgi-bin/texfaq2html?label=privinst&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://ascii.asciimw.jp/pb/ptex/base/kpathsea.html&quot;&gt;http://ascii.asciimw.jp/pb/ptex/base/kpathsea.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;関連パッケージ&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fontinst&lt;br/&gt;
&lt;a href=&quot;http://www.ctan.org/tex-archive/fonts/utilities/fontinst/&quot;&gt;http://www.ctan.org/tex-archive/fonts/utilities/fontinst/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PSLaTeX&lt;br/&gt;
&lt;a href=&quot;http://ctan.org/tex-archive/help/Catalogue/entries/pslatex.html&quot;&gt;http://ctan.org/tex-archive/help/Catalogue/entries/pslatex.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MDWFonts&lt;br/&gt;
&lt;a href=&quot;http://www.ctan.org/tex-archive/macros/latex/contrib/mdwfonts/&quot;&gt;http://www.ctan.org/tex-archive/macros/latex/contrib/mdwfonts/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>ブックコンパイラIdeoType（『コンピュータソフトウェア』Vol.26, No.4）</title>
    <link href="http://hisashim.org/2009/10/27/jssst-ideotype.html"/>
    <updated>2009-10-27T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/10/27/jssst-ideotype</id>
    <content type="html">&lt;p&gt;『コンピュータソフトウェア』誌の11月号に、IdeoTypeの紹介記事を掲載してい
ただくことに。一般の人にも分かるように説明した、6ページほどの短い文章。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;JSSST Journal: Computer Software&lt;br/&gt;
学会誌『コンピュータソフトウェア』&lt;br/&gt;
&lt;a href=&quot;http://www.jssst.or.jp/prod/computersoftware.html&quot;&gt;http://www.jssst.or.jp/prod/computersoftware.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;高品質な書籍を簡単に制作するための出版支援ソフトウェア：
ブックコンパイラIdeoType&lt;br/&gt;
コンピュータソフトウェア Vol.26 No.4 Nov. 2009 日本ソフトウェア科学会&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;IdeoTypeというのは、人間が比較的読み書きしやすい原稿（XHTMLに軽く拡張を加
えた形式）から、商業印刷に使えるようなデータ（PDFの一種）を生成するソフト
ウェア。オープンソースソフトウェアで、開発も公開の場で行っている。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;IdeoType: A Book Compiler&lt;br/&gt;
&lt;a href=&quot;http://ideotype.org/&quot;&gt;http://ideotype.org/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;これを作った動機は、出版社で編集者としてしばらく働いてみて、既存の編集制
作方法には改善の余地があると感じたこと。改善すれば、もっと簡単にいい本を
作れるはず。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;まず前提：&lt;/p&gt;

&lt;p&gt;良い文章を書くには、見直して書き直すことが有効。著者が仕上がりを見な
がら何度も原稿を書き直せれば、品質が良くなる。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;そして問題点：&lt;/p&gt;

&lt;p&gt;でも、既存の編集制作プロセスでは、レイアウト作業にいわゆるDTPソフトを
使って人手で処理している。DTPソフトは、取っつきやすい反面、人手で操作
するのでやり直しのコストが高い。いったんレイアウトされてしまってから
は、大幅な書き直しは御法度となる。&lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;一方、既存の自動組版システム（LaTeXやXSL-FOプロセッサなど）の多くは、
何度でもやり直せるけれど、普通のDTPソフトと比べて習得するのが大変。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;私たちがとった解決策：&lt;/p&gt;

&lt;p&gt;であれば、扱いやすいけれども書き直しに向かないDTPソフトと、書き直しに
向くけれども扱いが大変な自動組版システムのギャップを埋める、それなり
に扱いやすくて自動で組版してくれるツールがあればいいんじゃなかろうか。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;それがIdeoTypeを作った動機。&lt;/p&gt;

&lt;p&gt;ちょど未踏を終えた後（2008-05..2008-11ごろ）に書いた記事だけれど、問題意
識は今も変わらないので、興味がある人には読んでもらえたらいいなと思う。&lt;/p&gt;

&lt;p&gt;紙版は岩波ブックセンターほかで手に入る。
電子版は、数ヶ月したらこのあたりで読めるはず。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;JSSST : コンピュータソフトウェア&lt;br/&gt;
&lt;a href=&quot;http://www.jstage.jst.go.jp/browse/jssst/_vols/-char/ja&quot;&gt;http://www.jstage.jst.go.jp/browse/jssst/_vols/-char/ja&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CiNii - コンピュータソフトウェア&lt;br/&gt;
&lt;a href=&quot;http://ci.nii.ac.jp/vol_issue/nels/AN10075819_en.html&quot;&gt;http://ci.nii.ac.jp/vol_issue/nels/AN10075819_en.html&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;周りがちゃんとした論文なので場違いっぽいけど、エンドユーザコンピューティ
ングの一例と捉えてもらえれば幸い。&lt;/p&gt;

&lt;p&gt;文中で「次期バージョン」として触れているIdeoType 0.2は今年の半ばに完成し
て、今ちょうど仕事で使っているところ。年明けには成果である書籍が書店に並
ぶ予定。そのうちPDFだけでなくePubやMobiも出力できるようにしたいなと思って
いる。&lt;/p&gt;

&lt;p&gt;執筆の機会を与えていただき、担当編集者として丁寧に指導してくださった伊知
地先生に、そしてアドバイスをくださった美馬先生に感謝。良い編集者のありが
たさが身にしみて分かったのも、今回の大きな収穫でした。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>『入門GTK+』</title>
    <link href="http://hisashim.org/2009/10/14/gtkplus.html"/>
    <updated>2009-10-14T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/10/14/gtkplus</id>
    <content type="html">&lt;p&gt;無事に発売。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;『入門GTK+』&lt;br/&gt;
&lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06776-1&quot;&gt;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06776-1&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;内容については、今回レビュアになってくださった須藤さんが代表を務める、ク
リアコード社のBlogが詳しいのでそちらを。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;入門GTK+ - ククログ(2009-10-14)&lt;br/&gt;
&lt;a href=&quot;http://www.clear-code.com/blog/2009/10/14.html&quot;&gt;http://www.clear-code.com/blog/2009/10/14.html&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;GTK+の知識がそれほどない方でも読み進めていきながら徐々に理解を深めら
れる流れになっています。&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;

&lt;p&gt;打てば響く優秀な人たちとご一緒できて、楽しい仕事でした。&lt;/p&gt;

&lt;p&gt;ここでは編集制作の技術的な面についてメモ。&lt;/p&gt;

&lt;h2&gt;要件&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;著者が継続してメンテナンスでき、かつ増刷・改訂時に困らないように&lt;/li&gt;
&lt;li&gt;フォーマットは生のLaTeX&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;支援ツール&lt;/h2&gt;

&lt;p&gt;用意したもの&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;メーリングリスト3つ（QuickML）

&lt;ul&gt;
&lt;li&gt;本文関連&lt;/li&gt;
&lt;li&gt;サーバからの自動通知配信&lt;/li&gt;
&lt;li&gt;装丁関連&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;リポジトリ（Subversion）&lt;/li&gt;
&lt;li&gt;ITS（Trac）&lt;/li&gt;
&lt;li&gt;CI（CruiseControl.rb）&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;注&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;道具は普及していてハマりにくいものを使う。&lt;/li&gt;
&lt;li&gt;メーリングリストは山場では流量が増える（100+/日）ので、自動配信の類を
別のリストにしておくと、議論を見失いにくい。&lt;/li&gt;
&lt;li&gt;ITSやCIまで用意するのはおっくうだけど、みなが楽できるので、1冊終わる
ころには割に合う。&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;紙版を作るにあたっての課題&lt;/h2&gt;

&lt;h3&gt;スクリーン版と紙版の作り分け&lt;/h3&gt;

&lt;p&gt;Makefileをオリジナルのとは別に用意して、そちらで対処することに。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;本文中の切り替えが必要な部分を、新規に定義したマクロでくくる。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;媒体によってマクロを適切に再定義する。版面やフォントを変えたり、各種
カラーに適当な濃度のグレーを割り当てたり。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;原稿にもかなり手を入れてしまったけれど、オリジナルのMakefileでもまだ一応
ビルドできる。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LaTeXマクロは再定義より新規作成が安全&lt;br/&gt;
既存のマクロを再定義すると、他のマクロとの不整合が生じる可能性がある
ので、なるべくなら新規に定義した自前の環境で包んで、その中の振る舞い
を変えたほうが安全。&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;カラー&lt;/h3&gt;

&lt;p&gt;紙版は墨1色刷なので、RGBカラーではなくグレースケールが必要。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;文字や罫線&lt;br/&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;媒体別に再定義して、紙媒体向けには適当な濃度のグレーを割り当てる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;画像&lt;br/&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ImageMagickのconvert（内部でGSを利用）では劣化する画像などがあった
ので、Illustratorを使って手動で変換・管理。（できればソースからRGB
カラー（スクリーン向け）とグレー（紙向け）の画像をmake時に生成する
ほうが望ましい。）&lt;/li&gt;
&lt;li&gt;使う画像を媒体によって切り替える方法も、basenameを区別するのは手間
がかかるうえに間違えそうだったので、同じ構造のツリーを2つ用意して、
\graphicspathで画像のサーチパスを切り替えて対処。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;フォント&lt;/h3&gt;

&lt;p&gt;任意のフォントではなくHiraginoを使うように変更。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hiraginoの実体がない環境でもビルドできるように、RyuminやGothicBBBをい
い加減に割り当てたfake.mapを用意。&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;ビルド環境&lt;/h3&gt;

&lt;p&gt;LaTeX環境を揃えるのは、DebianやUbuntuでもちょっと手間。以下対症療法：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CIサーバを立てて、commitすればビルドできるようにする（ただし手元で試
行錯誤できないし、ビルドが頻繁に壊れる）&lt;/li&gt;
&lt;li&gt;ビルド環境をVMのイメージとして用意して、関係者に提供&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;まとめ&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keep&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;優先順位の高い順にtodoをこなし、ほぼ目論見どおりのものを時間どおりに
リリースできた&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Problem&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;画像を手作業で変換して目視で確認しているのは危うい。媒体に応じた画像
をソースから生成すべき&lt;/li&gt;
&lt;li&gt;リリース管理が一時期軌道から外れた&lt;/li&gt;
&lt;li&gt;主にシステム管理やマクロ周りで、手離れが悪く自分がボトルネックになっ
ている仕事が多い&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Try&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;複数の出力媒体・複数の出力フォーマットを考慮した制作方法を確立する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;この本に限らないtodo:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;CIやITSを改善する

&lt;ul&gt;
&lt;li&gt;設定管理を他の人でもできるように&lt;/li&gt;
&lt;li&gt;負荷分散（主にCI）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;アカウント管理全体を改善する

&lt;ul&gt;
&lt;li&gt;SSH公開鍵に対応&lt;/li&gt;
&lt;li&gt;一元化&lt;/li&gt;
&lt;li&gt;参加するメンバー自身が設定できるように&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;システム管理仕事の大半は自動化できる類のことなので、手をかけずに回る仕組
みを早くつくりたい。編集制作以外にも執筆の支援など、やれるのにやれていな
いことが多い。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Setting up Hudson on Debian</title>
    <link href="http://hisashim.org/2009/10/05/debian-hudson.html"/>
    <updated>2009-10-05T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/10/05/debian-hudson</id>
    <content type="html">&lt;h2&gt;Installation&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;% wget http://hudson-ci.org/debian/binary/hudson_1.320_all.deb
% sudo dpkg --install hudson_1.320_all.deb
% sudo apt-get update
% sudo apt-get install -f

% sudo /etc/init.d/hudson restart

% w3m http://example.com:8080/
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Manage Hudson &gt; Manage Users &gt; Create User&lt;br/&gt;
jdoe, mmajor, ...&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manage Hudson &gt; Configure System&lt;br/&gt;
[v] Enable security&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security Realm:&lt;br/&gt;
  (*) Hudson's own user database

&lt;pre&gt;&lt;code&gt;[_] Allow users to sign up
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Authorization:&lt;br/&gt;
  (*) Matrix-based security

&lt;ul&gt;
&lt;li&gt;Anonymous: -&lt;/li&gt;
&lt;li&gt;jdoe: Overall: Read&lt;/li&gt;
&lt;li&gt;mmajor: Overall: Administer, Read, ...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Known Problems&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Security Realm: LDAP&lt;br/&gt;
=&gt; Seems not working for me&lt;/li&gt;
&lt;li&gt;Security Realm: Unix user/group database&lt;br/&gt;
=&gt; SEGV&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Project Configuration&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;New Job&lt;br/&gt;


&lt;ul&gt;
&lt;li&gt;Job name: Foo&lt;br/&gt;
(*) Build a free-style software project
...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>2009-10</title>
    <link href="http://hisashim.org/2009/10/01/diary.html"/>
    <updated>2009-10-01T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/10/01/diary</id>
    <content type="html">&lt;h3&gt;2009-10-31&lt;/h3&gt;

&lt;h4&gt;日記終了&lt;/h4&gt;

&lt;h3&gt;2009-10-24&lt;/h3&gt;

&lt;h4&gt;とちぎRuby会議02&lt;/h4&gt;

&lt;p&gt;秘密に少しだけ近づいた気がする。
言葉にすると大部分が消えてしまうんだけど、自分の解釈をメモ。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;フェアな評価が信頼を生む&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;他人を助けることが自分のためにもなる仕組みの上では、自然と協力が生
まれる&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;評価の基準がメッセージとなっている&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;互助が習慣となり、文化として根づくと、疑問に思わなくなる&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;信頼による互助のメリット&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;個人がバッファ（貯金）を溜め込まずにみなのために使うので、バッファ
が細切れで死蔵されず全体で生かされる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;余裕がある&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;組織が安定していて、細かいことで汲々とする必要がない&lt;/li&gt;
&lt;li&gt;人材の流動性がある

&lt;ul&gt;
&lt;li&gt;合わない人は自然と離れていき、合う人が集まっている&lt;/li&gt;
&lt;li&gt;合わなくても異動で済む。致命傷になりにくい&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;傘となる人の存在&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;花を真似るのではなく、土壌を真似る必要がある。&lt;/p&gt;

&lt;h3&gt;2009-10-23&lt;/h3&gt;

&lt;h4&gt;本の印税&lt;/h4&gt;

&lt;p&gt;本の印税について興味深い記事が公開されている。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pragmatic Bookshelf (2009):&lt;br/&gt;
&lt;a href=&quot;http://pragdave.blogs.pragprog.com/pragdave/2009/10/pragmatic-bookshelf-royalty-rates.html&quot;&gt;http://pragdave.blogs.pragprog.com/pragdave/2009/10/pragmatic-bookshelf-royalty-rates.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apress (1) (2009):&lt;br/&gt;
&lt;a href=&quot;http://beginningruby.org/what-ive-earned-and-learned/&quot;&gt;http://beginningruby.org/what-ive-earned-and-learned/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apress (2) (2007):&lt;br/&gt;
&lt;a href=&quot;http://ejohn.org/blog/programming-book-profits/&quot;&gt;http://ejohn.org/blog/programming-book-profits/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;まとめるとこんな感じ。&lt;/p&gt;

&lt;p&gt;  a) 50% of profit (e.g. Prags)
  b) 10-20% of sales (i.e. Apress)
  c) 8-1X% of suggested retail price (i.e. most jp publishers)&lt;/p&gt;

&lt;p&gt;aは利益を折半している。ただし純利ではなく粗利（gross profitないし
operational profitといったところ？）。要するに著者と出版社は利益だけでな
くコストの一部（編集費の類）も折半する。&lt;/p&gt;

&lt;p&gt;bは売上の一部を支払っている。あとこのApressという出版社独自の話だけど、著
者にadvance （前払金）を支払っている。プロや学生にとってはありがたいだろ
うと思う。&lt;/p&gt;

&lt;p&gt;cは小売価格の一部を支払っている。日本の出版社はこれが多いみたい。&lt;/p&gt;

&lt;p&gt;個人的には、steakholderと苦楽を共にするやり方がいいかなあ。&lt;/p&gt;

&lt;h3&gt;2009-10-20&lt;/h3&gt;

&lt;p&gt;やっぱりこの形式での日記は無理があるなあ。&lt;/p&gt;

&lt;h3&gt;2009-10-19&lt;/h3&gt;

&lt;h4&gt;義憤&lt;/h4&gt;

&lt;p&gt;義憤を感じたら要注意。独り善がりな思い込みかもしれない。&lt;/p&gt;

&lt;h3&gt;2009-10-18&lt;/h3&gt;

&lt;h4&gt;Generative books&lt;/h4&gt;

&lt;p&gt;本の内容の一部を手続きで生成するというのは、記述を抽象化できるので、基本
的に良い考え。ただし事前に静的に生成しておくのではなく、ビルド時に動的に
生成する場合は、意図どおりに生成されているかをチェックする仕組みが必要。&lt;/p&gt;

&lt;p&gt;例えば、本文中のサンプルコードの実行結果を埋め込む場合や、索引の読みを動
的に生成する場合、ツールや辞書のバージョンによって結果が変わりかねない。
（枯れたツールや寿命が短い本は例外。）&lt;/p&gt;

&lt;p&gt;増刷や改訂に備えたビルド環境の保全も考えなきゃいけない。&lt;/p&gt;

&lt;h3&gt;2009-10-17&lt;/h3&gt;

&lt;h4&gt;人間向けソフトウェア&lt;/h4&gt;

&lt;p&gt;コンピュータソフトウェアもテクストも、解釈に使われるプラットフォームが違
うだけでどっちもソフトウェアで、支援ツールやノウハウを共有できる。&lt;/p&gt;

&lt;h4&gt;Literacy&lt;/h4&gt;

&lt;p&gt;リテラシーと言えば文字の読み書きだけど、そのうちプログラミングもリテラシー
に含まれるようになるだろうなと思う。今でも表計算ソフトの関数とかはみな普
通に使っているわけで。&lt;/p&gt;

&lt;h4&gt;IdeoType 0.2&lt;/h4&gt;

&lt;p&gt;IdeoType 0.2で追加したGauche版の変換器を使ってみている。それなりに使えそ
うな気はしていたけれど、思った以上に実用的。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;0.1（XSLT版のみ）&lt;br/&gt;
中身はXHTML-&gt;LaTeXのスタイルシート。UIなどはRubyで記述。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pros

&lt;ul&gt;
&lt;li&gt;高速&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons

&lt;ul&gt;
&lt;li&gt;本ごとの柔軟な対応が難しい（XSLTが汎用言語ではないため）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;0.2（Scheme（Gauche）版が追加）&lt;br/&gt;
XSLTプロセッサの劣化サブセット（xsl:apply-templatesとxsl:document相当）
に、XHTML-&gt;TeXMLとTeXML-&gt;LaTeXのスタイルシートをバンドルしたもの。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pros

&lt;ul&gt;
&lt;li&gt;強力で柔軟（頑張れば何でもできる）&lt;/li&gt;
&lt;li&gt;トラブルシュートが楽（中間形式にTeXMLを採用したおかげ）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons

&lt;ul&gt;
&lt;li&gt;遅い（非効率な書き方の問題）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;0.1に比べるとだいぶまし。ただし自分以外の人に使ってもらうという点では、ま
だ全然。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;todo&lt;br/&gt;


&lt;ul&gt;
&lt;li&gt;動的なカスタマイズを容易に&lt;/li&gt;
&lt;li&gt;パフォーマンスを改善する&lt;/li&gt;
&lt;li&gt;Ruby版（libxsl-rubyで、テンプレートをXSLTではなくRubyで記述できるよ
うになったら試す。パフォーマンスととっつきやすさの両方を満たせそう）&lt;/li&gt;
&lt;li&gt;XSLT版を削除する（0.3で）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;運動&lt;/h4&gt;

&lt;p&gt;走って泳いで心地良く疲れた。&lt;/p&gt;

&lt;h3&gt;2009-10-16&lt;/h3&gt;

&lt;h4&gt;編集文献学&lt;/h4&gt;

&lt;p&gt;編集文献学という学問分野を初めて知った。テクストの執筆から解釈や派生にい
たるまで、その編集過程が研究の対象らしい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;A First Step Toward Developing an Editing System for Humanities Research Based on German Scholarly Editing Theory : The Structuring and Implementation of Information from Kafka's Text&lt;br/&gt;
&lt;a href=&quot;http://ci.nii.ac.jp/naid/110006291451/&quot;&gt;http://ci.nii.ac.jp/naid/110006291451/&lt;/a&gt;&lt;br/&gt;
編集文献学に基づく人文科学資料エディティング・システム構築の試み : 第一段階としてのカフカ・テクスト情報の構造化と実装  [in Japanese]&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;ちょっと聞くと、分散バージョン管理システム（DVCS）でかなりの部分を解決で
きそうにも感じるけれど、そう簡単ではなさそう。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;文字だけでなく図の変遷も扱う必要がある。&lt;/li&gt;
&lt;li&gt;「削除」「追加」だけでなく、「移動」「コピー」「入れ替え」も扱いたい。&lt;/li&gt;
&lt;li&gt;過去の作品だとテキスト部分のソースが原本の写真だったりする。&lt;/li&gt;
&lt;li&gt;コミットメッセージ以外にもメタなデータをいろいろ扱う必要がある。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;あと、XMLにマップすると単一の切り口によるツリーとしてしか表現できず、その
ことが問題になりうるというのは、言われて初めて気がついた。（例えば部分Aと
部分Bが、節は異なるが同じ見開きに載っている場合、両方を要素で表現すると入
れ子が崩れる。）&lt;/p&gt;

&lt;h4&gt;Markdown&lt;/h4&gt;

&lt;p&gt;Markdownにアンカーを表現する記法が見当たらない。でも生のHTMLで@idを書くの
はぞっとしない。こういう複数のトピックを1ファイルに詰め込んでだらだら書く
には向かないかも。でも楽をしたいから簡易マークアップを使っているのだよな
あ。&lt;/p&gt;

&lt;h4&gt;本の原稿をWikiで書けるか&lt;/h4&gt;

&lt;p&gt;厳密には、コンピュータ系の専門書の原稿を簡易マークアップで記述できるかと
いう問い。5、6年前から人にも聞かれるし自分でも考えている。&lt;/p&gt;

&lt;p&gt;短い答え：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;ケースバイケース&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;長い答え：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;紙向けに出力しなければいけないとなると、結構大変。紙向けの最終原稿（カ
メラレディ原稿を機械的に生成できるソースという程度の意味）を表現するに
は、少なくとも索引と改ページ位置の制御をサポートした記法が必要。（実際
にはそれ以外にも柱などいろいろある。）&lt;/p&gt;

&lt;p&gt;あとユーザが楽に機能拡張できないと本の多様性に対応できない。囲み記事が
5種類あるとか、普通の索引に加えて関数索引を付けたいとかいうときに対応で
きるか。&lt;/p&gt;

&lt;p&gt;最終原稿じゃなくてドラフトまででいいなら、またはそもそも紙向けに出力し
なくていいなら、比較的楽。でも最終原稿まで記述できないと旨味が半減する
のも事実。何事もトレードオフだし、何をもって「*で書く」と呼ぶかという解
釈にもよる。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;だから結局、拡張可能な「原稿記述言語」が必要になるんだろうな。ただし強力
なだけに濫用されたときにひどいことが起きがち。解決策として、機能と原稿を
別の言語で記述させるというAntのアプローチは良さそう。個人的には
microformatでどこまでしのげるか行ってみるつもり。&lt;/p&gt;

&lt;h4&gt;Micro-project management&lt;/h4&gt;

&lt;p&gt;数人の小さなチームが数ヶ月だけ一緒に働く小さなプロジェクトを、一人で同時
に数十件、うまく進める方法を知りたい。建築や製造業でのPMのノウハウはいろ
いろ聞くのだけど、出版業は規模があまりに小さくて応用しにくい。&lt;/p&gt;

&lt;p&gt;今のところ有力なアドバイス：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;メンバーの大半が毎回異なると蓄積が生かされないので、うまくいったらメ
ンバーをころころ変えるな&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;話が長い&lt;/h4&gt;

&lt;p&gt;自分用のメモにしては長くなってきた。どうせ自分は読めば思い出すから、キー
ワードだけでいいか。誤字もな幼い。&lt;/p&gt;

&lt;h3&gt;2009-10-15&lt;/h3&gt;

&lt;h4&gt;acquisitions editor（原稿入手担当編集者）&lt;/h4&gt;

&lt;p&gt;planning/developmental editorだけじゃなく、acquisitions editorも必要ね。
トピックに詳しい必要はなくて、要領が良くて気配りできる人が向いてる。
自分でacquisitionやってたら4-8冊/年くらいのところが、有能なaeが他にいてく
れれば8-12冊/年くらいいける気がする。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Editing&lt;br/&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Editing&quot;&gt;http://en.wikipedia.org/wiki/Editing&lt;/a&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;公開の場で書く際の個人的なルール&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;他人のことは原則として書かない&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;2009-10-14&lt;/h3&gt;

&lt;p&gt;朝方生活で成果を出している方の話を傾聴。憧れる。&lt;/p&gt;

&lt;h3&gt;2009-10-11&lt;/h3&gt;

&lt;p&gt;羊羹が買えなかったショックのあまり、パンを買ってしまった。&lt;/p&gt;

&lt;h3&gt;2009-10-10&lt;/h3&gt;

&lt;p&gt;オーダーメイドとDIYについて考えている。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-service, Prorated Super Computing Fun!&lt;br/&gt;
&lt;a href=&quot;http://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/&quot;&gt;http://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;2009-10-09&lt;/h3&gt;

&lt;p&gt;給付型の奨学金が増えるといいなあ。&lt;/p&gt;

&lt;h3&gt;2009-10-08&lt;/h3&gt;

&lt;p&gt;メールばかり書いていて、エディタに触れる暇がなかった。&lt;/p&gt;

&lt;h3&gt;2009-10-07&lt;/h3&gt;

&lt;p&gt;ファーニッシュトな賃貸住宅がもっと増えてほしい。&lt;/p&gt;

&lt;h3&gt;2009-10-06&lt;/h3&gt;

&lt;p&gt;URL難読化サービスは苦手。&lt;/p&gt;

&lt;h3&gt;2009-10-05&lt;/h3&gt;

&lt;blockquote&gt;&lt;p&gt;blogger が使えない&lt;br/&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/ku-ma-me/20091004/p2&quot;&gt;http://d.hatena.ne.jp/ku-ma-me/20091004/p2&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;はてなダイアリーって思ってたよりいいものなんですね。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;jwz - Livejournal Deathwatch&lt;br/&gt;
&lt;a href=&quot;http://jwz.livejournal.com/1099745.html&quot;&gt;http://jwz.livejournal.com/1099745.html&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;I've started divesting myself of reliance on them.&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;

&lt;h3&gt;2009-10-02&lt;/h3&gt;

&lt;p&gt;MS Moneyでも買うかと思ったらディスコンしてた。&lt;/p&gt;

&lt;h3&gt;2009-10-01&lt;/h3&gt;

&lt;p&gt;日記をつけてみる。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Configuring local Postfix with smarthost</title>
    <link href="http://hisashim.org/2009/09/27/postfix-with-smarthost.html"/>
    <updated>2009-09-27T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/09/27/postfix-with-smarthost</id>
    <content type="html">&lt;p&gt;SMTP AUTH is a bit tricky for an amateur to configure, as it is not a
requirement and not enabled by default in MTAs yet.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MTA: Postfix

&lt;ul&gt;
&lt;li&gt;remote: preconfigured as MX (example.org)&lt;/li&gt;
&lt;li&gt;local: yet to configure&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SMTP AUTH: SASL (Cyrus SASL)

&lt;ul&gt;
&lt;li&gt;remote: saslauthd&lt;/li&gt;
&lt;li&gt;local: hash db (/etc/postfix/sasl_passwd)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;No TLS, no submission port, just plain port 25 (lame)&lt;/li&gt;
&lt;li&gt;Todo: TLS&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Configuration (local)&lt;/h2&gt;

&lt;h3&gt;Configure Postfix SMTP server and client&lt;/h3&gt;

&lt;p&gt;Tweak myorigin, etc. on the server. Enable SASL on the client.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo vi /etc/postfix/main.cf
...
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Check the configuration.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo postconf -n
...
append_at_myorigin = yes
append_dot_mydomain = no
...
mydestination = foo, localhost.localdomain, localhost, local.example.org
myhostname = foo
...
myorigin = local.example.org
...
relayhost = [example.org]
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_tls_security_level = may
...
%
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Prepare SASL db&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;% sudo cp /dev/null /etc/postfix/sasl_passwd
% sudo chmod 700 /etc/postfix/sasl_passwd
% sudo vi /etc/postfix/sasl_passwd
...
% sudo cat /etc/postfix/sasl_passwd
[mail.example.org]            johnd:opensesame
[mail.example.org]:submission johnd:opensesame
% sudo postmap /etc/postfix/sasl_passwd
% sudo ls /etc/postfix/sasl_passwd.db
/etc/postfix/sasl_passwd
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Don't forget to postmap.&lt;/p&gt;

&lt;h2&gt;Testing&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;% sudo /etc/init.d/postfix restart
% echo test | mail jdoe@example.org
% sudo tail -f /var/log/mail.log
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Troubleshooting&lt;/h2&gt;

&lt;h3&gt;Invalid envelope from&lt;/h3&gt;

&lt;p&gt;Remote smtpd may reject connections with invalid FQDN in
envelope from.&lt;/p&gt;

&lt;p&gt;Quick-and-dirty workaround:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;[ubuntu] Postfix, smarthost and local mail&lt;br/&gt;
&lt;a href=&quot;http://ubuntuforums.org/showpost.php?p=6348383&amp;amp;postcount=3&quot;&gt;http://ubuntuforums.org/showpost.php?p=6348383&amp;amp;postcount=3&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;myorigin = local.myvaliddomain.com
append_at_myorigin = yes
mydestination = ..., local.myvaliddomain.com
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Set bogus FQDN to myorigin, so that envelope from may look
like FQDN.&lt;/li&gt;
&lt;li&gt;Enable append_at_myorigin to add the bogus FQDN to messages
to local users (e.g. root -&gt; root@bogusFQDN)&lt;/li&gt;
&lt;li&gt;Include the bogus FQDN in mydestination, so that messages to
bogus FQDN be handled locally.&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;SASL authentication mechanism&lt;/h3&gt;

&lt;p&gt;If you are using plain text and find something like this
in the log,&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;... (SASL authentication failed; cannot authenticate to
server ...: no mechanism available)&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;read the document carefully.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Postfix SASL Howto&lt;br/&gt;
&lt;a href=&quot;http://www.postfix.org/SASL_README.html#client_sasl&quot;&gt;http://www.postfix.org/SASL_README.html#client_sasl&lt;/a&gt;&lt;br/&gt;
By default, the Postfix SMTP client does not use
authentication methods that send plaintext passwords,
and defers delivery with the following error message:
&quot;Authentication failed: cannot SASL authenticate to server&quot;.
To enable plaintext authentication specify, for example:&lt;/p&gt;

&lt;p&gt;  /etc/postfix/main.cf:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;smtp_sasl_security_options = noanonymous
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;This disables noplaintext by explicitly setting only noanonymous.
(Not recommended though.)&lt;/p&gt;

&lt;h2&gt;Reference&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postfix.org/SASL_README.html&quot;&gt;http://www.postfix.org/SASL_README.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postfix-jp.info/trans-2.3/jhtml/SASL_README.html&quot;&gt;http://www.postfix-jp.info/trans-2.3/jhtml/SASL_README.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.debian.org/doc/manuals/debian-reference/ch06.ja.html#_the_configuration_of_postfix_with_sasl&quot;&gt;http://www.debian.org/doc/manuals/debian-reference/ch06.ja.html#_the_configuration_of_postfix_with_sasl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=450787&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=450787&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ubuntuforums.org/showpost.php?p=6348383&amp;amp;postcount=3&quot;&gt;http://ubuntuforums.org/showpost.php?p=6348383&amp;amp;postcount=3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4274065766/arakinotes-22&quot;&gt;http://www.amazon.co.jp/exec/obidos/ASIN/4274065766/arakinotes-22&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>my-revert-all-file-buffers</title>
    <link href="http://hisashim.org/2009/09/21/my-revert-all-file-buffers.html"/>
    <updated>2009-09-21T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/09/21/my-revert-all-file-buffers</id>
    <content type="html">&lt;p&gt;Emacsで全バッファを読み直すコマンドmy-revert-all-file-buffers.&lt;/p&gt;

&lt;p&gt;バージョン管理システムを使っていて、エディタの外部からファイルを更新した
ときに、いちいち全バッファを読み直すのは面倒。探したけどすぐには見つから
なかったので書いてみた。&lt;/p&gt;

&lt;p&gt;ファイルに関連付けられたバッファだけが対象。
C-uで前置引数を付けると問い合わせなしに実行する。&lt;/p&gt;

&lt;p&gt;シェルで&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ svn update
$ git-checkuot foobranch
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;とかした後にEmacsで&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;C-u M-x my-revert-all-file-buffers
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;とするのが典型的な使い方。&lt;/p&gt;

&lt;p&gt;一応xyzzyでも動く。そもそもxyzzyは（Windows FSのおかげで）ファイルが更新
されたことを自動で認識するらしいので不要だけど。&lt;/p&gt;

&lt;p&gt;（あと、xyzzyの場合はバッファが変更されているとmessage-boxで問い合わせて
くるのであまり便利ではない。xyzzyのrevert-bufferは問い合わせをしないオプ
ションがないのかな。問い合わせを出しているのは、buffer.lの
revert-buffer-normalで使われているread-fileあたりらしい。）&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;;; uncomment these on xyzzy
;; (defun emacs-version ()
;;   (concat (software-type) &quot; &quot; (software-version)))
;; (defun buffer-file-name (&amp;amp;optional buf)
;;   (get-buffer-file-name (or buf (selected-buffer))))

;; my-revert-all-file-buffers
(defun my-revert-all-file-buffers (P)
  &quot;Revert all visited buffers.
With prefix argument, it will not ask for confirmation.&quot;
  (interactive &quot;P&quot;)
  (if (or P (y-or-n-p &quot;Revert all file buffers?&quot;))
      (dolist (buf (buffer-list))
        (if (not (buffer-file-name buf))
            (message (concat (buffer-name buf) &quot; skipped.&quot;))
          (save-excursion
            (set-buffer buf)
            (cond ((string-match &quot;Emacs&quot; (emacs-version))
                   (revert-buffer t t))
                  ((string-match &quot;xyzzy&quot; (emacs-version))
                   (revert-buffer))
                  (else (error (emacs-version))))
            (message (concat (buffer-name buf) &quot; reverted.&quot;)))))
    (message &quot;Aborted.&quot;))
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  
  <entry>
    <title>TeXユーザの集い2009（TeX Conference 2009）</title>
    <link href="http://hisashim.org/2009/08/29/texconf09.html"/>
    <updated>2009-08-29T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/08/29/texconf09</id>
    <content type="html">&lt;p&gt;TeXユーザの集い2009に行ってきた。枯れたテーマとは裏腹に、未来への話や若い
方の発表が予想以上に多かったのが印象的。運営の方々をはじめ、カンファレン
スの実現に寄与したみなさんに感謝。&lt;/p&gt;

&lt;h3&gt;概要とまとめ&lt;/h3&gt;

&lt;blockquote&gt;&lt;p&gt;TeXユーザの集い 2009&lt;br/&gt;
&lt;a href=&quot;http://oku.edu.mie-u.ac.jp/texconf09/&quot;&gt;http://oku.edu.mie-u.ac.jp/texconf09/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;どういう趣旨のイベントなのかは、吉永さんの記事を。一般向けでわかりやすい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;「TeXユーザの集い 2009」8月29日開催！ 直前レポート&lt;br/&gt;
&lt;a href=&quot;http://gihyo.jp/news/report/2009/08/2001&quot;&gt;http://gihyo.jp/news/report/2009/08/2001&lt;/a&gt;&lt;br/&gt;
2009年8月20日 吉永徹美&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;内容については、武藤さんの日記の詳細なリポートを。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;KeN's GNU/Linux Diary | TeXユーザの集い2009 参加報告(1)(2)&lt;br/&gt;
&lt;a href=&quot;http://kmuto.jp/d/index.cgi/computer/texconf09-1.htm&quot;&gt;http://kmuto.jp/d/index.cgi/computer/texconf09-1.htm&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://kmuto.jp/d/index.cgi/computer/texconf09-2.htm&quot;&gt;http://kmuto.jp/d/index.cgi/computer/texconf09-2.htm&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;発表を聴いての雑感&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.kisarazu.ac.jp/~masa/math/&quot;&gt;KETpic&lt;/a&gt;. ベクタ画像はいずれ図形
記述言語で描けるようにしたい。エディタも重要。ソースと描画結果を2-wayで
編集できると理想的。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.ipa.go.jp/jinzai/mitou/2009/2009_1/youth/gaiyou/kk-1.html&quot;&gt;Suim&lt;/a&gt;.
数式の入力が簡単になると、TeXが得意でない人と一緒に仕事をしやすくなる
ので、大変助かる。期待大。Firefox以外のブラウザでもMathMLが標準でサポー
トされるといいな。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.ftext.org/&quot;&gt;FTEXT&lt;/a&gt;. 教材の共有・公有は重要。ライセンスは緩
いとありがたい。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://creativecommons.org/&quot;&gt;CC&lt;/a&gt;の商用と非商用って、どういう基準で
区別されるんだろう。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://ascii.asciimw.jp/ascii/EWB/&quot;&gt;EWB&lt;/a&gt;のようにTeXにプリプロセッサを
組み合わせるアプローチはかなり有効。ただプリプロセッサでは「今何ページ
め」といった実行時の情報を得ることはできないので、そのあたりは
&lt;a href=&quot;http://www.luatex.org/&quot;&gt;LuaTeX&lt;/a&gt;に期待。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ewblibのwakuboxも脚注には非対応らしい。脚注を出したければ、
multicolやlongtable を参考に\outputを再定義するのが筋なのか？&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TeXUnitが欲しい。テストの支援があれば、プログラムを書いてメンテナン
スするのが飛躍的にやりやすくなる。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.med.osaka-u.ac.jp/pub/anes/www/latex/latex.html&quot;&gt;mkbib&lt;/a&gt;.
BibTeXに限らず、undocumented featureが多いソフトウェアには泣かされる。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.ctan.org/tex-archive/macros/latex/contrib/geometry/&quot;&gt;geometry&lt;/a&gt;
は使ってみたい。「memoirにはならない」でにやり。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://project.ktug.or.kr/ko.TeX/&quot;&gt;ko.TeX&lt;/a&gt;で組んだジャーナルの組版がき
れい。pdftex由来のmicro-typesetting（文字を微小単位でscaleする機能）が
効いているらしい。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.ch.ic.ac.uk/rzepa/cml/&quot;&gt;CML&lt;/a&gt;の例を見て、
&lt;a href=&quot;http://www.jstage.jst.go.jp/article/cicsj/22/6/22_110/&quot;&gt;XyMML&lt;/a&gt;が作られ
た理由を理解した。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.jstage.jst.go.jp/article/cicsj/22/6/22_110/&quot;&gt;dvibrowser&lt;/a&gt;は
UIの気が利いていて素敵。Adviのように使えるといいな。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;最近のLaTeXプレゼンテーションはLaTeX Beamerかpowertdotらしい。
時間ができたらXHTML+MathML-&gt;LaTeX Beamer, powerdotなコンバータを書きたい。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://tutimura.ath.cx/ptexlive/&quot;&gt;ptexlive&lt;/a&gt;は、ptexenc周りがきれいに整
理されて、Debianでも使えるようになるといいな。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DebianのpTeX関連パッケージは実は存続の危機らしい。八田さんが時間を
割くのが難しいようなら、
&lt;a href=&quot;http://www1.pm.tokushima-u.ac.jp/~kohda/Tex.html&quot;&gt;香田さん&lt;/a&gt;にご協
力いただけないものか。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://fink.sodan.ecc.u-tokyo.ac.jp/&quot;&gt;東大Fink Team&lt;/a&gt;にも期待。編集制作
関係の仮想パッケージを作ろうと思っているのだけど、MacBook+Finkならヒラ
ギノ込みのフル機能laptop publisherを実現できるはず。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.vinelinux.org/&quot;&gt;Vine Linux&lt;/a&gt;. 出版現場の事情が分かる開発者っ
て貴重だなあ。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://homepage3.nifty.com/ttk/comp/tex/uptex.html&quot;&gt;upTeX&lt;/a&gt;は予想以上だっ
た。&lt;a href=&quot;http://www.kanji.zinbun.kyoto-u.ac.jp/projects/chise/&quot;&gt;CHISE&lt;/a&gt;で扱
うような内容も表現できるとは。
&lt;a href=&quot;http://sourceforge.jp/projects/eptex/wiki/&quot;&gt;e-upTeX&lt;/a&gt;の事情も知りたい。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;振り返って&lt;/h3&gt;

&lt;p&gt;LaTeXを最近使い始めた一ユーザとして、武藤さんと
&lt;a href=&quot;http://friendfeed.com/naoyat&quot;&gt;naoya_t&lt;/a&gt;さんくらいしか知っている人がいない
状態で参加したけれど、発表はもちろんそれ以外でも実りがあった。&lt;/p&gt;

&lt;p&gt;まず、普段は会えないような人と会うことができた。いつもお世話になっている
ツール群の開発者の、&lt;a href=&quot;http://ascii.asciimw.jp/pb/ptex/&quot;&gt;pTeX&lt;/a&gt;の中野さん・
&lt;a href=&quot;http://oku.edu.mie-u.ac.jp/~okumura/jsclasses/&quot;&gt;jsclasses&lt;/a&gt;の奥村先生・
&lt;a href=&quot;http://project.ktug.or.kr/dvipdfmx/&quot;&gt;DVIPDFMx&lt;/a&gt;のCho先生にお礼を言えた。
これだけでも懇親会に行った甲斐があった。そのほかにも、名前を挙げきれない
くらいたくさんの人と話ができた。&lt;/p&gt;

&lt;p&gt;そして、TeXに対する認識が少し改まった。TeXというと枯れて結晶化した分野と
いう印象があったのだけど、外野が思うよりも変化が続いている。Unicode対応
や新しいTeXエンジンへの移行の必要性は共通認識として感じられたし、実際に
手を動かしている人もいる。ゆっくり見守る必要はあるけど、今後が楽しみ。&lt;/p&gt;

&lt;p&gt;同時に、自分がTeXに求めるものも分かってきた。自分では手が届かない基盤部分
が整備されてほしいらしい。そうなれば自分で解決できる範囲が広がる。&lt;/p&gt;

&lt;p&gt;どなたかが、「この場にいるのはみなユーザである。ユーザの自助努力とその共
有によってTeXは発展してきた」という趣旨のことを言われたように覚えている。
たしかにユーザがボトムアップに拡張できる設計になっているのは大きな強みだ
と思う。&lt;a href=&quot;http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/preface.html&quot;&gt;&quot;On Lisp&quot;の序文&lt;/a&gt;
にもあるとおり。&lt;/p&gt;

&lt;p&gt;ただ、TeXマクロでの拡張はそろそろきつくなってきた。自分はともかく他人に
覚えてくれと言いにくい。歴史的経緯を考えると仕方がない面もあるのだろうけ
ど。たぶんそれはみな分かっていて、だから次世代のエンジンとしてスクリプ
ティング可能なLuaTeXが期待されているんだろうと思う。しばらくはupTeXで現
実に対処しつつ、ゆくゆくはLuaTeXなどでpTeXと同等以上のことが楽にできるよ
うになるといいな。&lt;/p&gt;

&lt;p&gt;また、個人ユーザでできることには限りがある。ソフトウェアは、有力なユーザ
企業がいる時期に大きく発展するように思う。仕事で使われることで現実世界の
ニーズが明らかになるし、問題を解決するためにリソースが投じられるから。日
本語TeXでいうなら、アスキーやNTTがそうだったんだろうと思う。今はそのあた
りどうなんだろう。そういう存在が現れれば、予想外の進展があるかもしれない
と思う。もちろんそのためには、関連する産業が、十分な利益を生み出し人材を
引きつける魅力的なものでなければならない。&lt;/p&gt;

&lt;p&gt;いずれにせよ、次回も開催されるなら参加したい。できれば何か見せられるもの
を持って。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>LDAPを使ったユーザ認証</title>
    <link href="http://hisashim.org/2009/08/28/pam-ldap.html"/>
    <updated>2009-08-28T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/08/28/pam-ldap</id>
    <content type="html">&lt;p&gt;Debian boxのユーザ認証をLDAPで一元化してみた。&lt;/p&gt;

&lt;p&gt;注意：無保証。自分用のメモで誤りや抜けが多いし、あくまで隔離されたネット
ワークでの実験で、公開されたネットワークでの運用に耐える設定ではない。&lt;/p&gt;

&lt;h2&gt;条件等&lt;/h2&gt;

&lt;p&gt;前提：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ドメインはexample.com&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;既にLDAPサーバが立っている（xxx.xxx.xxx.xxx）&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ベースはdc=example,dc=com&lt;/li&gt;
&lt;li&gt;管理者はcn=admin,dc=example,dc=com
（cn=manager,dc=example,dc=comのほうがよかったかもしれない）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;次のいずれかを満たすユーザにloginを許す：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LDAPデータベース上にアカウント情報がある&lt;/li&gt;
&lt;li&gt;そのマシンにローカルなUnixアカウントがある（管理用のアカウントなど）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;大まかにいって、次の設定をすればよいらしい。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;パッケージ&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;libnss-ldap&lt;/li&gt;
&lt;li&gt;libpam-ldap&lt;/li&gt;
&lt;li&gt;nscd（パフォーマンス向上のため）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;/etc/nsswitch.conf&lt;/p&gt;

&lt;p&gt;passwd, group, shadowの各エントリにcompatに加えてldapを指定&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;/etc/libnss-ldap.conf&lt;/p&gt;

&lt;p&gt;base, uri, ldap_version, rootbinddnなどを設定&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;/etc/pam_ldap.conf&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LDAPサーバのURIを設定する&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;  今回は別のホストでLDAPサーバが動いており、またSSLはまだ使っていない
  ので、スキームはldapiではなくldapとする。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;照会時にLDAPにアクセスするアカウントを指定する
（cn=manager,dc=example,dc=com）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;/etc/pam.d/common-*&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pam_ldap.soをsufficientとして追加&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;  LDAPで認証できるようにする。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pam_unix.soをrequiredからsufficientに変更&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;  Unixアカウントを必須ではなく任意にする。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;サービスアプリケーションごとの設定&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;さしあたってsshdとSamba&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;OSのセットアップ&lt;/h2&gt;

&lt;p&gt;libnss-ldapをインストールするとReccomends:にあるlibpam-ldapとnscdもインス
トールされる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install libnss-ldap
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;設定を直したければ、いつでもdpkg-reconfigure libnss-ldapで再設定できる。&lt;/p&gt;

&lt;h3&gt;libnss-ldapのインストール&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;LDAP server URI:
-ldapi:///
+ldap://xxx.xxx.xxx.xxx/

Distinguished name of the search base
-dc=example,dc=net
-dc=example,dc=com

LDAP version to use:
 3

LDAP database require login?
 No

Special LDAP privileges for root?
 Yes

Make the configuration file readable/writable by its owner only?
-No
+Yes

LDAP account for root:
-cn=manager,dc=example,dc=net
+cn=admin,dc=example,dc=com

LDAP root account password
 xxx
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;libpam-ldapのインストール&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;LDAP server URI:
-ldapi:///
+ldap://xxx.xxx.xxx.xxx/

Distinguished name of the search base:
-dc=example,dc=net
+dc=example,dc=com

LDAP version to use:
 3

Make local root Database admin?
 Yes

LDAP database require login?
 No

LDAP account for root:
-cn=manager,dc=example,dc=net
+cn=admin,dc=example,dc=com

LDAP root account password
 xxx

Local crypt to use when changing passwords
 crypt
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;/etc/nsswitch.conf&lt;/h3&gt;

&lt;p&gt;/etc/nsswitch.confを編集し、passwd, group, shadowの各エントリにldapを追加
する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;--- a/nsswitch.conf
+++ b/nsswitch.conf
@@ -4,9 +4,9 @@
 # If you have the `glibc-doc-reference' and `info' packages installed, try:
 # `info libc &quot;Name Service Switch&quot;' for information about this file.

-passwd:         compat
-group:          compat
-shadow:         compat
+passwd:         compat ldap
+group:          compat ldap
+shadow:         compat ldap

 hosts:          files dns
 networks:       files
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;/etc/pam.d/common-*&lt;/h3&gt;

&lt;p&gt;/etc/pam.d/common-*を書き換える。順序に注意。
login時に~がない場合は作成するよう、sessionでpam_mkhomedir.soを指定。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;--- a/pam.d/common-account
+++ b/pam.d/common-account
@@ -6,4 +6,5 @@
 # the central access policy for use on the system.  The default is to
 # only deny service to users whose accounts are expired in /etc/shadow.
 #
+account   sufficient  pam_ldap.so
 account   required    pam_unix.so

--- a/pam.d/common-auth
+++ b/pam.d/common-auth
@@ -7,4 +7,5 @@
 # (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
 # traditional Unix authentication mechanisms.
 #
-auth      required    pam_unix.so nullok_secure
+auth      sufficient  pam_ldap.so use_first_pass
+auth      sufficient  pam_unix.so nullok_secure

--- a/pam.d/common-password
+++ b/pam.d/common-password
@@ -21,7 +21,8 @@
 #
 # See the pam_unix manpage for other options.
+password  sufficient  pam_ldap.so
 password  required    pam_unix.so nullok obscure md5

 # Alternate strength checking for password. Note that this
 # requires the libpam-cracklib package to be installed.

--- a/pam.d/common-session
+++ b/pam.d/common-session
@@ -6,4 +6,6 @@
 # at the start and end of sessions of *any* kind (both interactive and
 # non-interactive).  The default is pam_unix.
 #
+session   required    pam_mkhomedir.so skel=/etc/skel/ umask=0022
+session   sufficient  pam_ldap.so
 session   required    pam_unix.so
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;設定をチェック&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;% grep -v '^#\|^$' /etc/pam_ldap.conf
base dc=example,dc=com
uri ldap://xxx.xxx.xxx.xxx/
ldap_version 3
rootbinddn cn=admin,dc=example,dc=com
pam_password crypt

% grep -v '^#\|^$' /etc/libnss-ldap.conf
base dc=example,dc=com
uri ldap://xxx.xxx.xxx.xxx/
ldap_version 3
rootbinddn cn=admin,dc=example,dc=com

% sudo cat /etc/libnss-ldap.secret
xxx

% sudo cat /etc/pam_ldap.secret
xxx

% (cd /etc/pam.d; grep -v '^#\|^$' common-*; cd -)
common-account: account   sufficient  pam_ldap.so
common-account: account   required    pam_unix.so
common-auth:    auth      sufficient  pam_ldap.so use_first_pass
common-auth:    auth      sufficient  pam_unix.so nullok_secure
common-password:password  sufficient  pam_ldap.so
common-password:password  required    pam_unix.so nullok obscure md5
common-session: session   required    pam_mkhomedir.so skel=/etc/skel/ umask=0022
common-session: session   sufficient  pam_ldap.so
common-session: session   required    pam_unix.so
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;テスト&lt;/h3&gt;

&lt;p&gt;うまくいかない場合（ホームディレクトリやシェルがない）：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;hostname% login: jdoe
password: 
No directory, logging in with HOME=/
Cannot execute /usr/bin/zsh: No such file or directory
hostname% login: 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;うまくいった場合：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;hostname% login: jdoe
password: 
hostname%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;注意点：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ユーザが使うシェルなどはあらかじめ用意しておくこと。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PAMの設定ファイルの記述は順序に注意。例えばpam_mkhomedir.soは
pam_ldap.so やpam_unix.soに先立って書いておかないと、HOMEがないまま
login することになる。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;うまくいかないときは&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo tail /var/log/auth.log
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;して確認。&lt;/p&gt;

&lt;h3&gt;資料&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PAM (Pluggable Authentication Modules)&lt;br/&gt;
&lt;a href=&quot;http://www.linux.or.jp/JF/JFdocs/User-Authentication-HOWTO/pam.html&quot;&gt;http://www.linux.or.jp/JF/JFdocs/User-Authentication-HOWTO/pam.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;日本語でPAMの概要を把握するときに。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Linux-PAM System Administrators' Guide&lt;br/&gt;
&lt;a href=&quot;http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html&quot;&gt;http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;本家。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LDAP/PAM - Debian Wiki&lt;br/&gt;
&lt;a href=&quot;http://wiki.debian.org/LDAP/PAM&quot;&gt;http://wiki.debian.org/LDAP/PAM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Debianでの設定ファイルの配置などが参考になる。&lt;/p&gt;

&lt;h2&gt;OpenSSHのLDAP認証&lt;/h2&gt;

&lt;p&gt;注意：UsePAMを有効にすればPAMを使うようになるのだけど、PAMを使うというこ
とはそれが抜け道にもなりかねないので、要注意。（せっかくパスワード認証を
殺していても、PAMの参照先が緩ければ意味がない。）&lt;/p&gt;

&lt;p&gt;公開鍵認証をするにはパッチを当てる必要があるらしいので、とりあえずパスワー
ド認証で実験。安全なネットワークでない限りやってはいけない。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo vi /etc/ssh/sshd.conf
...
% sudo cat /etc/ssh/sshd.conf
...
PermitEmptyPassword no
...
ChallengeResponseAuthentication yes
...
PasswordAuthentication yes
...
UsePAM yes
...
% 

% sudo /etc/init.d/ssh restart
...
% 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;注意点：&lt;/p&gt;

&lt;p&gt;気づきにくい落とし穴がある。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ChallengeResponseAuthentication yes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PermitEmptyPassword no&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;参考：&lt;/p&gt;

&lt;p&gt;  openssh-server: Problem with pam_setcred() call&lt;br/&gt;
  &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=315040#10&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=315040#10&lt;/a&gt;
  &gt;    Problem with &quot;pam_setcred(): Permission denied&quot; error message and normal
  &gt;    login fixed by switching
  &gt;
  &gt;    PermitEmptyPassword yes
  &gt;
  &gt;    in /etc/ssh/sshd_config to
  &gt;
  &gt;    PermitEmptyPassword no&lt;/p&gt;

&lt;h2&gt;SambaのLDAP認証&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Debian lenny&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OpenLDAP server (slapd)とSamba server (smbd) は既にセットアップされて
正しく動いているものとする。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;事前の準備&lt;/h3&gt;

&lt;p&gt;必要なパッケージをインストールする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install samba-doc smbldap-tools
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;説明を読む。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% lv /usr/share/doc/smbldap-tools/README.Debian.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;OpenLDAP server (slapd)の設定&lt;/h3&gt;

&lt;p&gt;samba-docに付属するLDAPスキーマをシステムにコピーする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz \
          /etc/ldap/schema/
% sudo gunzip /etc/ldap/schema/samba.schema.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;slapdの設定ファイルにsamba-ldap向けの設定を追加する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo vi /etc/ldap/slapd.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;diffふうに書くとこんな感じ。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;+ include       /etc/ldap/schema/samba.schema

-access to attrs=userPassword,shadowLastChange
+access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword
         by dn=&quot;cn=admin,dc=ohmsha,dc=co,dc=jp&quot; write
         by anonymous auth
         by self write
         by * none
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;README.Debianにはindexの設定もお好みで書いてよしとあるが、indexは後で書く。
先に書いてしまうと接続できなくなる。index対象の要素がまだDBにないせいだろ
う。&lt;/p&gt;

&lt;p&gt;後でSambaの認証をLDAPに向けたうえでsmbpasswdを使えば適当な値が書き込まれ
るので、心配ない。&lt;/p&gt;

&lt;p&gt;再起動して設定を反映。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo /etc/init.d/slapd restart
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;クライアント側のSambaの設定&lt;/h3&gt;

&lt;p&gt;LDAPを参照するように設定ファイルを編集。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo vi /etc/samba/smb.conf

-passdb backend = tdbsam
+passdb backend = ldapsam:ldap://xxx.xxx.xxx.xxx/
 ...
-obey pam restrictions = yes
+obey pam restrictions = no

+ldap admin dn = cn=admin,dc=example,dc=com
+ldap suffix = dc=example,dc=com
+ldap group suffix = ou=Groups
+ldap user suffix = ou=Users
+ldap machine suffix = ou=Computers
+ldap idmap suffix = ou=Users
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;あとパスワード変更をsmbldap-toolsに任せる設定。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;+ldap passwd sync = No
 unix password sync = Yes
 ...
-passwd program = /usr/bin/passwd %u
+passwd program = /usr/sbin/smbldap-passwd -u %u
-passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\s*new\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
+passwd chat = *New\s*\spassword* %n\n *Retype\snew\s*\spassword* %n\n *all*authentication*token*updated*
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Windowsから操作するための設定はREADME.Debian参照。&lt;/p&gt;

&lt;p&gt;LDAPサーバにアクセスするためにadminのパスワードを登録する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo smbpasswd -W
Setting stored password for &quot;cn=admin,dc=example,dc=com&quot; in secrets.tdb
New SMB password:
Retype new SMB password:
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;再起動する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo /etc/init.d/samba restart
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;smbldap-toolsの設定&lt;/h3&gt;

&lt;p&gt;クライアント側でsmbldap-toolsの設定をする。&lt;/p&gt;

&lt;p&gt;標準のpasswdを使うところをsmbldap-passwdに変えたりしているので、
これをやらないと動かない。&lt;/p&gt;

&lt;p&gt;まず設定ファイルの雛形をシステムにコピーする。
中にパスワードを平文で書くので権限に注意。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo cp /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz \
          /etc/smbldap-tools/
% sudo gunzip /etc/smbldap-tools/smbldap.conf.gz
% sudo cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf \
          /etc/smbldap-tools/
% sudo chmod 0644 /etc/smbldap-tools/smbldap.conf
% sudo chmod 0600 /etc/smbldap-tools/smbldap_bind.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;DomainではなくWorkgroup構成なら、どれでもいいので統一の
基準となるSambaサーバを決めて、そのSIDを調べておく。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo net getlocalsid
SID for domain xxx is: S-1-5-21-yyyyyyyyy-yyyyyyyyyy-yyyyyyyyy
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これを全Sambaサーバで共通のSIDとして使う（Windows Domain
を設けるときは話が別）。&lt;/p&gt;

&lt;p&gt;ローカルのSID設定はコメントアウトして、net getlocalsid
経由でLDAPに問い合わせるように設定。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;-SID=&quot;S-1-5-21-xxxxxxxxx-xxxxxxxxxx-xxxxxxxxx&quot;
+# SID=&quot;S-1-5-21-xxxxxxxxx-xxxxxxxxxx-xxxxxxxxx&quot;

-sambaDomain=&quot;DOMSMB&quot;
+#sambaDomain=&quot;DOMSMB&quot;
 ...
-masterLDAP=&quot;127.0.0.1&quot;
+masterLDAP=&quot;xxx.xxx.xxx.xxx&quot;
 ...
-suffix=&quot;dc=company,dc=com&quot;
+suffix=&quot;dc=example,dc=com&quot;

smbldap_bind.confを編集。

% sudo vi /etc/smbldap-tools/smbldap_bind.conf

-slaveDN=&quot;cn=Manager,dc=company,dc=com&quot;
+slaveDN=&quot;cn=admin,dc=example,dc=com&quot;
-slavePw=&quot;secret&quot;
+slavePw=&quot;xxx&quot;
-masterDN=&quot;cn=Manager,dc=company,dc=com&quot;
+masterDN=&quot;cn=admin,dc=example,dc=com&quot;
-masterPw=&quot;secret&quot;
+masterPw=&quot;xxx&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;LDAP DB側の用意&lt;/h3&gt;

&lt;p&gt;smbpasswdでユーザを追加する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo smbpasswd -a jdoe
New SMB password: 
Retype new SMB password:
Added user jdoe.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;こんなエントリになる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dn: uid=jdoe,ou=People,dc=example,dc=com
objectClass: account
objectClass: posixAccount
objectClass: sambaSamAccount
objectClass: shadowAccount
objectClass: top
cn: John Doe
gidNumber: 2001
homeDirectory: /home/jdoe
sambaSID: S-1-5-21-yyyyyyyyy-yyyyyyyyyy-yyyyyyyyy-5002
uid: hmorita
uidNumber: 2001
displayName: John Doe,,,
gecos: John Doe,,,
loginShell: /usr/bin/zsh
sambaAcctFlags: [U          ]
sambaNTPassword: ...
sambaPasswordHistory: ...
sambaPwdLastSet: 1251358905
shadowLastChange: 11418
shadowMax: 99999
shadowWarning: 7
userPassword:: ...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;試行錯誤の過程でsmbldap-populateしていろいろなエントリを登録
してしまったけれど、必須ではないと思われる。&lt;/p&gt;

&lt;p&gt;そしてpopulateでいろいろ登録。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo smbldap-populate -a admin
...
% 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;LDAP DBにSambaサーバを登録する。次はfile1.example.comという
Sambaサーバがある場合のLDIFエントリ。他のサーバも同様に登録する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dn: sambaDomainName=FILE1,dc=example,dc=com
objectClass: sambaDomain
sambaDomainName: FILE1
sambaSID: S-1-5-21-yyyyyyyyy-yyyyyyyyyy-yyyyyyyyy
sambaAlgorithmicRidBase: 1000
sambaForceLogoff: -1
sambaLockoutDuration: 30
sambaLockoutObservationWindow: 30
sambaLockoutThreshold: 0
sambaLogonToChgPwd: 0
sambaMaxPwdAge: -1
sambaMinPwdAge: 0
sambaMinPwdLength: 5
sambaNextUserRid: 1000
sambaPwdHistoryLength: 0
sambaRefuseMachinePwdChange: 0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これでどのSambaサーバにも同じアカウントでlogonできるはず。&lt;/p&gt;

&lt;p&gt;確認：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;file1% sudo pdbedit -d 3 -L
lp_load_ex: refreshing parameters
Initialising global parameters
params.c:pm_process() - Processing configuration file &quot;/etc/samba/smb.conf&quot;
Processing section &quot;[global]&quot;
smbldap_search_domain_info: Searching for:[(&amp;amp;(objectClass=sambaDomain)(sambaDomainName=FILE1))]
smbldap_open_connection: connection opened
ldap_connect_system: successful connection to the LDAP server
smbldap_search_domain_info: Searching for:[(&amp;amp;(objectClass=sambaDomain)(sambaDomainName=FILE1))]
smbldap_open_connection: connection opened
ldap_connect_system: successful connection to the LDAP server
smbldap_search_paged: base =&amp;gt; [dc=example,dc=com], filter =&amp;gt; [(&amp;amp;(uid=*)(objectclass=sambaSamAccount))],scope =&amp;gt; [2], pagesize =&amp;gt; [1024]
smbldap_search_paged: search was successfull
init_sam_from_ldap: Entry found for user: jdoe
jdoe:2001:John Doe,,,
...
file1%
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;トラブルシューティング&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;共有の競合&lt;/p&gt;

&lt;p&gt;複数のユーザ名で同時に同じリソースにアクセスしようとするとWindowsが
エラーを返す場合がある。
そういうときは&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;net use
net use \\server\share /delete
&lt;/code&gt;&lt;/pre&gt;

で接続状況を表示させたり、適宜切断したりすればよい。&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ネットワークパスが見つからない&lt;/p&gt;

&lt;p&gt;「ネットワークパスが見つからない」と言われたら、そのユーザのホームディ
レクトリが存在するか確認してみるとよい。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ls /home
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SambaのSID&lt;/p&gt;

&lt;p&gt;SIDはLDAPのDBに格納するもので、ローカルのsecrets.tdbに格納するもので
はない。また、SambaがLDAPを参照するように設定されている場合、net
getlocalsidはLDAPを見に行く。net setlocalsidなどとしても変更できない
ので注意。&lt;/p&gt;

&lt;p&gt;はまっている人の例（S-1-5-21-yyyを設定できない）：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo net getlocalsid
SID for domain FILE1 is: S-1-5-21-xxx
% sudo net setlocalsid S-1-5-21-yyy
% sudo net getlocalsid
SID for domain FILE1 is: S-1-5-21-xxx
&lt;/code&gt;&lt;/pre&gt;

こうなったらLDAPのほうを見ましょう。&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;雑感&lt;/h2&gt;

&lt;p&gt;それにしてもLDAP周りは手間がかかる。今までの振り返り：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;OpenLDAPサーバ&lt;br/&gt;
仕組みや独特の概念を理解するのに時間がかかる。OSやディストリビューショ
ンごとに細かく違うのも足を引っ張る。第一の関門。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PAMとNSS&lt;br/&gt;
資料が散らばっていて理解に時間がかかる。OSやディストリビューションご
とに細かく違ううえ、順序に依存しているのがつらい。第二の関門。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OpenSSHサーバ&lt;br/&gt;
UsePAM = yesだけなので、手間はかからない。ただし
ChallengeResponseAuthenticationに注意。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sambaサーバ&lt;br/&gt;
1台なら簡単。ただし2台以上だと、SID周りでつまずくと遠回りしかねない。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;試行錯誤に費やした時間を考えると、LDAPの本とSamba+LDAPの本を1冊ずつ手元に
用意しておいて損はなさそう。&lt;/p&gt;

&lt;h2&gt;資料&lt;/h2&gt;

&lt;p&gt;LDAP全般：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UNIX USER 2002/1: LDAP特集 (draft)&lt;br/&gt;
&lt;a href=&quot;http://ukai.jp/Articles/2002/uu-ldap/&quot;&gt;http://ukai.jp/Articles/2002/uu-ldap/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;LDAPに関する鵜飼さんの包括的な記事。知りたいことはたいてい載っている。
古くなった部分はドキュメントを読んでアップデートすればよい。&lt;/p&gt;

&lt;p&gt;uidを調整する際の参考に：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debian Policy Manual - The Operating System&lt;br/&gt;
9.2.2 UID and GID classes&lt;br/&gt;
&lt;a href=&quot;http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.2.2&quot;&gt;http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.2.2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Samba+LDAPはこれで十分：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;smbldap-tools for Debian&lt;br/&gt;
/usr/share/doc/smbldap-tools/README.Debian.gz&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ちょっとしたテストと覚え書き - SHIMI.INFO&lt;br/&gt;
DebianでOpenLDAP + Samba環境を作るメモ&lt;br/&gt;
&lt;a href=&quot;http://shimi.info/pukiwiki/?Samba%2FDebian%2BLDAP&quot;&gt;http://shimi.info/pukiwiki/?Samba%2FDebian%2BLDAP&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;SIDの話：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;【FreeBSD 5.3】Samba 3.x + OpenLDAP による PDC の設定&lt;br/&gt;
4.1 SID とドメインの話&lt;br/&gt;
&lt;a href=&quot;http://www.abk.nu/~nabe/document/samba3.htm#4.1&quot;&gt;http://www.abk.nu/~nabe/document/samba3.htm#4.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>「骨」展</title>
    <link href="http://hisashim.org/2009/08/23/bones.html"/>
    <updated>2009-08-23T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/08/23/bones</id>
    <content type="html">&lt;p&gt;「骨」展が終わりそうなので見てきた。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;21_21 DESIGN SIGHT-「骨」展 Bones&lt;br/&gt;
&lt;a href=&quot;http://www.2121designsight.jp/bones/&quot;&gt;http://www.2121designsight.jp/bones/&lt;/a&gt;
  会期：2009年5月29日（金）- 8月30日（日）&lt;br/&gt;
  時間：11:00 - 20:00（入場は19:30まで）&lt;br/&gt;
  休日：火曜日&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;骨をテーマにした展覧会。山中俊治さんのディレクションで、自然の生物の骨
や、工業製品の骨や、アーティストが骨をテーマに創造した作品が展示されている。&lt;/p&gt;

&lt;p&gt;Blogに詳細や背景の話が載っていて面白い。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;山中俊治の「デザインの骨格」&lt;br/&gt;
&lt;a href=&quot;http://lleedd.com/blog/&quot;&gt;http://lleedd.com/blog/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;個人的な見所は、虫型ロボットのPhasma。はしっこい昆虫のように走り回り、動
きだけで生き生きとした表情を見せてくれる。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;takram design engineering「Phasma」&lt;br/&gt;
&lt;a href=&quot;http://www.2121designsight.jp/bones/work_11.html&quot;&gt;http://www.2121designsight.jp/bones/work_11.html&lt;/a&gt;&lt;br/&gt;
  生き物の形状ではなく、走りの力学的原理をまねした六足走行ロボット。
  「Phasma」とは魂や息を意味するラテン語。&lt;/p&gt;

&lt;p&gt;クリエイターズトーク2「生き物をまねする」&lt;br/&gt;
&lt;a href=&quot;http://www.2121designsight.jp/bones/event_0620.html&quot;&gt;http://www.2121designsight.jp/bones/event_0620.html&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;動いている様子が上映されており、台に固定された実物をボタンで駆動させて見
ることもできる。&lt;/p&gt;

&lt;p&gt;作者インタビューが面白い。作品説明にあるとおり、生物の機能を実現するため
には、形を似せればいいとは限らず、その原理を見つけることが大事だという。&lt;/p&gt;

&lt;p&gt;Phasmaも昆虫のような複雑な脚を持っているわけではなく、ピストンのような脚
しか持っていない。前後に向きを変えることと地面を突くことしかできない。で
も動き出すと、生きている虫そのもの。そして虫と同じく3点で支持しているの
で安定している。&lt;/p&gt;

&lt;p&gt;形ではなく原理を追究せよ、というのは他の分野にも通じるかも。&lt;/p&gt;

&lt;p&gt;エンディングトークもちょっと聞いてきた。パラリンピックで活躍しているアス
リートやイラストレータさんを迎えての義肢に関する話。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;エンディング・スペシャルトーク「未来の骨」&lt;br/&gt;
&lt;a href=&quot;http://www.2121designsight.jp/bones/event_0823.html&quot;&gt;http://www.2121designsight.jp/bones/event_0823.html&lt;/a&gt;&lt;br/&gt;
  本展ディレクター山中俊治とスポーツ義足製作の第一人者として
  活躍する臼井二美男による、身体の延長としての義肢のデザインを
  通した「未来の骨」についてのトークイベント。臼井氏製作の義足を
  装着し様々な分野で活躍する3名を招き、義足アスリートによる
  走行実演も行います。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;運動のための機能はかなり発達してきて、次は社会とのかかわりが改善の焦点に
なってきているらしい。ミニスカートとブーツといったファッションを楽しめる
膝小僧のある義肢を作ってもらったという話があった。&lt;/p&gt;

&lt;p&gt;知らないことについて実際の話を聞けたのはよかった。改善の余地があって、か
つ社会的に意義があるという話は、聞いていて刺激を受ける。&lt;/p&gt;

&lt;p&gt;また、基本的な機能が足りたら次は品質というのは、どの分野にも通じるかもし
れない。&lt;/p&gt;

&lt;p&gt;山中さんの作品や展示は、いつも目的を持った設計が中心にあるので面白いなあ
と思う。規模は大きくないけれど、粒ぞろいなので、この手のが好きな人にはお
すすめ。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>『入門git』（Pragmatic Version Control Using Git）</title>
    <link href="http://hisashim.org/2009/08/12/tsgit.html"/>
    <updated>2009-08-12T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/08/12/tsgit</id>
    <content type="html">&lt;p&gt;担当していた本が出ました。日本語で読める&lt;a href=&quot;http://www.git-scm.org/&quot;&gt;git&lt;/a&gt;の本としては最初の1冊じゃない
かと思います。これを書いている時点でまだ数日しかたっていませんが、売れ行
きも好調なようで、うれしいです。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;『入門git』&lt;br/&gt;
Travis Swicegood著 でびあんぐる監訳&lt;br/&gt;
&lt;a href=&quot;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06767-9&quot;&gt;http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06767-9&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.amazon.co.jp/dp/427406767X&quot;&gt;http://www.amazon.co.jp/dp/427406767X&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;原書：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Pragmatic Version Control Using Git&lt;br/&gt;
by Travis Swicegood&lt;br/&gt;
&lt;a href=&quot;http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git&quot;&gt;http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;一言で言うと、コンパクトなgitの入門書です。著者が知っていることが際限なく
書かれているのではなく、よく吟味して簡潔に書かれています。gitの入門者が最
初の一歩を踏み出すときに必要な知識、そしてgitを手元で日常的に使うために必
要な知識が、十分にまとまっていると思います。また入門とは言いつつも、1章分
を&lt;a href=&quot;http://eagain.net/gitweb/?p=gitosis.git&quot;&gt;Gitosis&lt;/a&gt;のために割いていたりするので、これ一冊で結構な範囲をカバーで
きるんじゃないでしょうか。&lt;/p&gt;

&lt;p&gt;丁寧なレビューと監訳のおかげで、技術的な正確さと読みやすさが両立した文章
になっているほか、日本語版独自の内容としては、原書になかった図版（主にコ
ミットの関係を示すグラフ図）が追加されたり、日本語環境での注意が加わった
りしています。&lt;a href=&quot;http://code.google.com/p/tortoisegit/&quot;&gt;TortoiseGit&lt;/a&gt;も少しだけ紹介されてますね。&lt;/p&gt;

&lt;p&gt;でびあんぐる名義で今回監訳していただいたのは、&lt;a href=&quot;http://kmuto.jp/&quot;&gt;武藤健志&lt;/a&gt;さん、
&lt;a href=&quot;http://ukai.jp/&quot;&gt;鵜飼文敏&lt;/a&gt;さん、&lt;a href=&quot;http://www.keshi.org/&quot;&gt;八重樫剛史&lt;/a&gt;さん、&lt;a href=&quot;http://www.gotom.jp/~gotom/&quot;&gt;後藤正徳&lt;/a&gt;さん。
レビュアは&lt;a href=&quot;http://arika.org/&quot;&gt;やまだあきら&lt;/a&gt;さん、&lt;a href=&quot;http://kakutani.com/&quot;&gt;角谷信太郎&lt;/a&gt;さん、
&lt;a href=&quot;http://t.l15n.com/&quot;&gt;Leonard Chin&lt;/a&gt;（レオ）さん、そして名前は出ていないけれども
&lt;a href=&quot;http://blog.dio.jp/&quot;&gt;松田明&lt;/a&gt;さんにもご協力いただきました。ありがとうございます。&lt;/p&gt;

&lt;p&gt;監訳陣の仕事ぶりを思い出してみると、鵜飼さんと後藤さんは安定した調子で端
から仕上げていき、八重樫さんと武藤さんは問題が生じている箇所を見て回り対
処するという感じだったように思います。レビュアからいただいた指摘や提案は
武藤さんが交通整理をして監訳陣で消化し、武藤さんがDebConfに発った後は八重
樫さんがバトンを引き取ってアンカーを務める、というような進行でした。いつ
もながら、それぞれの仕事が確実で、役割分担が見事でした。&lt;/p&gt;

&lt;p&gt;レビュア内でも役割分担が自然発生して、やまださんはDebian / Rubyのベテラン
として、角谷さんはご本人曰く「git厨」代表として、レオさんはRuby / Rails方
面に通じたマルチリンガルな技術者として、強みを発揮したレビューをしていた
だきました。&lt;/p&gt;

&lt;p&gt;装丁はトップスタジオデザイン室の轟木亜紀子さんにお願いしました。実は今回
の写真は金属の光沢が安っぽくならないか心配で、私自身は同じモチーフで光沢
のない写真を推していたんですが、カバーの表面加工をマットにしたらいい感じ
になったので、無理に推さなくてよかった。見返しとタイトル文字の色を合わせ
たのも良かったですね。&lt;/p&gt;

&lt;p&gt;版元側の担当者は、T様、Sさん、そして私でした（偉い順）。私は主に企画と人
選で意見を出したくらいで、あとはほぼお任せ。たまに小舅っぽく口出しして嫌
がられる係といったところ。&lt;/p&gt;

&lt;p&gt;技術面では、いつものようにSubversion, xml2tex, Trac, &lt;a href=&quot;http://cruisecontrolrb.thoughtworks.com/&quot;&gt;CC.rb&lt;/a&gt;, QuickMLなどを
使って、レビューと編集を短いサイクルで繰り返して漸進的に完成度を高めていく、
反復型の編集制作をサポートしました。なお中央リポジトリはSubversionでした
が、関係者の多くは手元でgitなどのDVCSを使っていたのではないでしょうか。&lt;/p&gt;

&lt;p&gt;大きなトラブルなしに済んだので面白エピソードの類はないのですが、トラブル
がなかったことは素直に喜びたいし、それこそが今まで信頼できる人たちと協働
し道具や方法を改善してきた成果なのかなと思います。&lt;/p&gt;

&lt;p&gt;簡単な振り返り：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keep:&lt;br/&gt;
良いメンバー、良いチーム、良い道具立てで仕事をする。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Problem:&lt;br/&gt;
トラッカーをレビュアからのフィードバックにも活用してもらおう。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Try:&lt;br/&gt;
次回以降も、今回の安定度をベースラインにしたい。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;というわけで、気に入ってもらえたら、裏方の一人としてうれしいです。&lt;/p&gt;

&lt;p&gt;今後も翻訳・書き下ろしともに、意義あるタイトルを適切な人選でお届けすべく、
いろいろな方にご協力いただきながら準備しています。この『入門git』と同様に、
たくさんの人に読んでいただけるといいなと思います。&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;内容や位置づけについては鵜飼さんのレビューが的確。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;ukai's blog: 入門git&lt;br/&gt;
&lt;a href=&quot;http://blogger.ukai.org/2009/08/git.html&quot;&gt;http://blogger.ukai.org/2009/08/git.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  advancedな内容はあまり書かれてませんが、入門として読むのには最適では
  ないかと。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;そのとおりだと思います。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>WikiBana#7</title>
    <link href="http://hisashim.org/2009/08/08/wikibana7.html"/>
    <updated>2009-08-08T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/08/08/wikibana7</id>
    <content type="html">&lt;p&gt;WikiBana#7に参加してきた。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;第七回Wikiばな　〜 Wikiの起源へ&lt;br/&gt;
&lt;a href=&quot;http://wikibana.socoda.net/wiki.cgi?WikiBana/VOL.7&quot;&gt;http://wikibana.socoda.net/wiki.cgi?WikiBana/VOL.7&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;とてもよかった。「いいものを作るにはどうしたらいいか」という、いつも考え
ている問いへのヒントをもらった気がする。声をかけてくれたshinoさんに感謝。&lt;/p&gt;

&lt;p&gt;ただ、消化するにはしばらくかかりそう。自分で考えても、人と話しても、整理
がつかない。&lt;/p&gt;

&lt;p&gt;みなさんに感謝しつつとりあえずメモ（うろ覚えにつき注意）。&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;本&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;これだけの内容を江渡さんから引き出したのは（本人と周りの）素晴らしい
功績だと思う。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;パターンはユーザが自分で見つけられると教えられたのが、個人的には最大
の収穫かもしれない。振り返るときにパターンを見つけるとよいのかも。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;発表&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;稲尾さんの「レビューパターン」が面白かった。&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;関係者（著者・レビュア・編集者）がみな、原稿と議論を共有（「契約
書以外すべて」）。&lt;/li&gt;
&lt;li&gt;対面でのミーティングの結果は報告するよう心がけた。&lt;/li&gt;
&lt;li&gt;著者の受け入れる能力が求められる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

プロセスパターンのひとつ？ 自分の経験とも一致する。出版業でもこういう
ふうにパターンを見つけて共有するのっていいな。&lt;/li&gt;
&lt;li&gt;&lt;p&gt;中埜さんが熱かった。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;対話&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;レイアウトの微調整はどうしているかと稲尾さんに聞かれて、あまりやらな
い旨答えたんだけど、説明がまずかったので補足。理由は2つあって：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;最初からさほど問題なく仕上がっているので、人手で調整する必要が少
ない&lt;/li&gt;
&lt;li&gt;優先して対処すべき他の作業が多い&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;後者の例を一つ。レビューしてもらうと、内容に関する要改善箇所がたくさ
ん見つかる。読者にとって何が大事か考えると、同じ時間を使うなら、手が
回っていなかった改善提案に対処するほうが優先になる。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;無名の質と言ったときに、何をもって良しとするかは、コミュニティによっ
て異なっているのが自然なように思う。坪井さんに言われて意識できた。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;yomoyomoさんと初めて話した。忙しいらしくてちょっと残念。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;田中さんに声をかけそびれた。名札あったほうがいいなあ。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;田中哲さん：「（セルフビルドは高層建築には適用できないのではないかと
いう疑問について）各フロアに地面を用意すればその上でセルフビルド可能。
ただそういうことを実現できるところまでまだ技術が進歩していない」&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;classboxが欲しい。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;現時点での考え&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DIY&lt;/p&gt;

&lt;p&gt;道具は使う人自身が作るのが理想。それが無理でも、なるべく両者が近くに
いて、密にやりとりしながら作り、使いながら直していけるとよい。道具を
作る環境は、使い手による変更を支援する方向へ進化してほしい。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;QWAN&lt;/p&gt;

&lt;p&gt;「無名の質」（QWAN）は「時の洗練を経た質」と言い換えられるのではない
か。その「時の洗練」を擬似的・人為的に引き起こすのが、プロトタイピン
グであり、パイロット版であり、シミュレーションであり、レビューであり、
テストであり、設計から製造までシームレスにつながるパイプラインであり、
うまくいったパターンの採取と利用である。かもしれない。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;todo&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;関さんを呼ぶ&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>RubyKaigi2009</title>
    <link href="http://hisashim.org/2009/07/19/rubykaigi2009.html"/>
    <updated>2009-07-19T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/07/19/rubykaigi2009</id>
    <content type="html">&lt;p&gt;RubyKaigi2009に参加した。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  日本Ruby会議2009&lt;br/&gt;
  &lt;a href=&quot;http://rubykaigi.org/2009/&quot;&gt;http://rubykaigi.org/2009/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;普段なかなか会えない方とお話しできてよかった。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NIIはラウンジがあって参加者同士で交流しやすいのがいいなあ。&lt;/li&gt;
&lt;li&gt;もちろん発表もよかった。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;みなさんありがとうございました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ずっといられなかったのが残念。&lt;/li&gt;
&lt;li&gt;その間にも仕事を粛々と進めてくれていた仕事仲間に感謝。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>編集制作の自動化に伴う変化への適応</title>
    <link href="http://hisashim.org/2009/07/13/automation.html"/>
    <updated>2009-07-13T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/07/13/automation</id>
    <content type="html">&lt;p&gt;編集制作の方法が変化した結果、負荷のバランスが変わり、仕事の仕方を見直す
必要が出てきた。&lt;/p&gt;

&lt;h2&gt;背景&lt;/h2&gt;

&lt;p&gt;出版社内で編集制作の自動化を進めたところ、以前は100のコストがかかっていた
仕事が、50のコストでできるようになった（数字は体感的なもので正確ではない。
以下同様）。&lt;/p&gt;

&lt;p&gt;（成果物の品質も向上したのだけれど、それはひとまず措く。）&lt;/p&gt;

&lt;p&gt;でも、自動化を導入する前は80%くらいの割合で、出版社外部の編集制作スタッフ
（編集プロダクションやフリーランスの編集者）に仕事をお願いできていたのが、
導入後は20%くらいの割合でしかお願いできなくなった（例外はあるけどここでは
措く）。&lt;/p&gt;

&lt;p&gt;というのも、自動化されたワークフローに参加するには、ある程度の知識が必要
になるから。&lt;/p&gt;

&lt;p&gt;知識と言っても大したことはなくて、原稿等を共有するためのVCSの使い方と、
XMLのマークアップ規則くらい。けれども、プロダクションにとってみれば、たく
さんいる顧客のうちの1社のやり方に対応するために教育コストをかけるのは割に
合わない。&lt;/p&gt;

&lt;p&gt;結果として、全体のコストは100から50へと半分に減ったけれど、出版社内の編集
者が負担するコストは20から40へと倍に増えた。そして工程全体を律速するボト
ルネックが、出版社外部の制作担当から出版社内部の編集者に移った。&lt;/p&gt;

&lt;h2&gt;対策&lt;/h2&gt;

&lt;p&gt;ではどうするか。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;知識を共有して、一緒に仕事ができる人を増やす&lt;br/&gt;
優秀な人は適応力も優れている。&lt;/li&gt;
&lt;li&gt;やり方をさらに洗練させて、より少ない資源でより多くの成果を出せるようにする&lt;br/&gt;
今の方法にはまだ改善の余地がある。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;ほかには？&lt;/p&gt;

&lt;h2&gt;結果&lt;/h2&gt;

&lt;p&gt;TBD&lt;/p&gt;

&lt;h2&gt;備考&lt;/h2&gt;

&lt;p&gt;ある人の話では、20年前の写植と版下の時代には、一人の編集者が1年間に企画編
集できる本は4冊くらいだったらしい。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>本という言葉の含み</title>
    <link href="http://hisashim.org/2009/04/10/book-implication.html"/>
    <updated>2009-04-10T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/04/10/book-implication</id>
    <content type="html">&lt;p&gt;本と一口に言ってもいろいろな含みがある。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;記録する媒体&lt;br/&gt;
アトム &amp;lt;-&gt; ビット&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;表現する媒体&lt;br/&gt;
紙 &amp;lt;-&gt; スクリーン・音声・点字スクリーンなど&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;表現&lt;br/&gt;
ページ区切り &amp;lt;-&gt; スクロール&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;データ形式&lt;br/&gt;
PDF &amp;lt;-&gt; XML・テキスト・その他&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;構造（アクセス方法）&lt;br/&gt;
シーケンシャル &amp;lt;-&gt; ランダム&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;社会的位置づけ&lt;br/&gt;
オーソライズされている &amp;lt;-&gt; そうとも限らない&lt;br/&gt;
公的 &amp;lt;-&gt; 私的&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;価格&lt;br/&gt;
有料 &amp;lt;-&gt; 無料&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;今のところ、前者のほうを暗黙のうちに前提としている人が多いみたい。紙に記
録されて流通し、ページに区切られていて、……というふうに。&lt;/p&gt;

&lt;p&gt;でもこれらのなかで本に必須の要素や属性は一つもない。（例えば、自分が書い
た、HTML形式の詩の本を、シャッフルしてランダムな順番で、text-to-speechを
使って音声読み上げで聴いているとする。それもやっぱり本を楽しんでいるのだ
と思うから。）&lt;/p&gt;

&lt;p&gt;じゃあ必須で本質的なのは何だろうか。今のところはまだ、「送り手と受け手を
結ぶ、普通の人でも手が届く媒体」くらいの曖昧なものしか思いつかない。でも
この「普通の人のメディア」っていう認識は、案外悪くないんじゃないかと思っ
てる。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>基礎研究を怠ることの対価（The Price of Forgoing Basic Research）</title>
    <link href="http://hisashim.org/2009/04/07/buxton-basic-research.html"/>
    <updated>2009-04-07T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/04/07/buxton-basic-research</id>
    <content type="html">&lt;p&gt;基礎研究の大事さを強調するBill Buxtonさん（PARC, utoronto, Alias
Research, MSR）の記事。住井さん経由。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The Price of Forgoing Basic Research&lt;br/&gt;
By Bill Buxton&lt;br/&gt;
&lt;a href=&quot;http://www.businessweek.com/print/innovate/content/dec2008/id20081217_814717.htm&quot;&gt;http://www.businessweek.com/print/innovate/content/dec2008/id20081217_814717.htm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;via &lt;a href=&quot;http://twitter.com/esumii/status/1465096669&quot;&gt;http://twitter.com/esumii/status/1465096669&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;基礎研究を怠れば長期的には実入りが減るのは当然という話。Xerox PARCのこと
をあげつらう者はDupontを見よとか、面白い。&lt;/p&gt;

&lt;p&gt;あとこのあたり。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The foundation of academic life is the community of scholars. This can
only be sustained if academics have the freedom to talk about their
work with their most knowledgeable colleagues, no matter what
university they are associated with.
...
We are largely paying the price for policy decisions made a quarter of
a century ago. Those policies are still rigidly in place. But it is
not too late for change.&lt;/p&gt;

&lt;p&gt;学術の生命線は学者のコミュニティにある。それを維持するのに欠かせないも
のとは、自分たちが取り組んでいる仕事について、それを一番よく知っている
同輩たちと、所属にかかわらず自由に話し合えることだ。
...
私たちはおおむね、四半世紀前になされた方針決定の対価を支払っているのだ。
その方針はいまだに頑として存在する。しかしそれを変えるのは今からでも決
して遅くはない。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;基礎研究にかけるコストと成果とに相関がみられるというのは初めて知った。
この論文らしい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Basic Research and Productivity Increase in Manufacturing&lt;br/&gt;
by Edwin Mansfield&lt;br/&gt;
&lt;a href=&quot;http://www.jstor.org/pss/1805767&quot;&gt;http://www.jstor.org/pss/1805767&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>Jekyll導入メモ</title>
    <link href="http://hisashim.org/2009/04/05/jekyll.html"/>
    <updated>2009-04-05T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/04/05/jekyll</id>
    <content type="html">&lt;p&gt;jekyllを使ってウェブサイトを作ってみた。git over sshでソースを転送して、
gitのpost-updateフックでjekyllを呼んでページを生成する。&lt;/p&gt;

&lt;h2&gt;Gitリポジトリのセットアップ&lt;/h2&gt;

&lt;h3&gt;remoteで作業&lt;/h3&gt;

&lt;p&gt;2つのリポジトリを作る。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;src.git&lt;br/&gt;
bareなリポジトリ。localからのpush先として使う。&lt;/li&gt;
&lt;li&gt;src&lt;br/&gt;
普通のリポジトリ。src.gitからpullしてHEADの作業コピーを作るための場所。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;まずリポジトリsrc.gitを用意する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% mkdir src.git
% cd src.git
% git init --bare
% cd -
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;そしてそれをcloneして作業コピー用のリポジトリsrcを作る。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% git clone src.git src
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;src.gitのフックを設定する。pushされた後で呼ばれるのはpost-updateフック。
フック中で、一時的にsrcにcdしてsrc.gitからpullする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% cp src.git/hooks/post-update{.sample,}
% vi src.git/hooks/post-update
...
# git-update-server-info
...
# generate example.org
# see /etc/apache2/sites-available/example.org.
echo &quot;post-update: cwd is `pwd`&quot;
# (cd $HOME/src/; git pull -v; cd -)
(
  echo &quot;post-update: cd to working copy&quot;
  cd $HOME/src/
  echo &quot;post-update: cwd is `pwd`&quot;
  echo &quot;post-update: status:&quot;
  GIT_DIR=$HOME/src/.git git status -v | head
  echo &quot;post-update: log:&quot;
  GIT_DIR=$HOME/src/.git git log -v | head
  echo &quot;post-update: pulling source:&quot;
  GIT_DIR=$HOME/src/.git git pull -v
  echo &quot;post-update: cd back&quot;
  cd -
  echo &quot;post-update: cwd is `pwd`, leaving subshell&quot;
)
echo &quot;post-update: cwd is `pwd`&quot;
export GEM_HOME=$HOME/lib/ruby/gems/1.8
export RUBYLIB=$HOME/lib/ruby:$HOME/lib/site_ruby/1.8
export PATH=$HOME/lib/ruby/gems/1.8/bin:$PATH
echo &quot;post-update: generating site from $HOME/src/ to $HOME/public_html/:&quot;
jekyll --rdiscount $HOME/src/ $HOME/public_html/
...
% chmod +x src.git/hooks/post-update
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;注意点など：&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;echoでメッセージを表示させているのはデバグの名残りで、実際は不要。ただ
しgitはあくまで対話的に使うことを前提にしているらしく、非対話的に呼ぶ
際はやや注意が必要。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;最初はgitの--git-dirオプションで絶対パスを指定して、cdせずに操作しよう
としたけれど、どこかで暗黙のうちにcwdが参照されているようでうまくいか
なかった。&lt;/p&gt;

&lt;p&gt;なお--git-dirオプションに指定する値は、普通のリポジトリを指す場合、
foo ではなくfoo/.gitなどとなる。bareなリポジトリを指す場合はfoo.gitな
どとなる。（gitでいうリポジトリとは、普通の作業ツリー付きのリポジトリ
でいうところの.git/を指す模様。bareなリポジトリは作業コピーがなく、ルー
ト直下にhooks などの制御ファイル群がある。）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;テスト実行した時に次のように言われたら、src.gitにlocalから何かpushした
時点で、一度src内でpullしておくとよいかもしれない。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;fatal: bad default revision 'HEAD'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;こんな感じで。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% cd src
% git pull
% cd -
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;localからpushしたときに&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;fatal: Not a git repository: '.'
&lt;/code&gt;&lt;/pre&gt;

などと言われることがある。ここではとりあえず環境変数GIT_DIRでリポジ
トリの位置を指定して回避している。&lt;/li&gt;
&lt;li&gt;&lt;p&gt;現時点では、MarukuよりもRDiscountのほうがMarkdownの箇条書きの解釈に強い
様子。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;localで作業&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;% git clone ssh://xxx.xxx.xxx.xxx/~jdoe/src.git

% cat .git/config
...
[remote &quot;origin&quot;]
        url = ssh://example.org/~jdoe/src.git
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;jekyllのセットアップ&lt;/h2&gt;

&lt;h3&gt;RubyGemsをセットアップ&lt;/h3&gt;

&lt;p&gt;RubyGemsの影響がユーザ環境内に限定されるように、localとremoteのアカウン
トに環境変数を設定。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% vi ~/.zshrc
...
# RubyGems
export GEM_HOME=$HOME/lib/ruby/gems/1.8
export RUBYLIB=$HOME/lib/ruby:$HOME/lib/site_ruby/1.8
export PATH=$HOME/lib/ruby/gems/1.8/bin:$PATH
...
% source ~/.zshrc
% rehash
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;localとremoteのアカウントにRubyGemsをインストール。
rubyはとりあえず1.8.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install rubygems rubygems1.8
% sudo apt-get install ruby1.8 ruby1.8-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;gemが拡張ライブラリをビルドするときにmkmf.rbが必要なので、rubyx.y-devも入
れる。&lt;/p&gt;

&lt;h3&gt;jekyllをインストール&lt;/h3&gt;

&lt;p&gt;localとremoteのアカウントにjekyllをインストール。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% gem install --no-rdoc mojombo-jekyll -s http://gems.github.com/
% gem install --no-rdoc rdiscount
% gem install --no-rdoc hoe
% gem install --no-rdoc bones
% rehash
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;最新のjekyllのgemはRubyForgeではなくGitHubにあるようなので注意。&lt;/p&gt;

&lt;h2&gt;Webサイトのセットアップ&lt;/h2&gt;

&lt;h3&gt;DNSの設定&lt;/h3&gt;

&lt;p&gt;example.orgという名前がremoteホストのIP addressを指すように。&lt;/p&gt;

&lt;p&gt;example.org:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;A xxx.xxx.xxx.xxx
www cname example.org
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Webサーバのセットアップ&lt;/h3&gt;

&lt;p&gt;remoteにapache2をインストールしてサイトを設定。
http://localhost/~jdoe/ がhttp://example.org/として見えるように。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install apache2-mpm-prefork
% sudo a2enmod userdir
% sudo cp /etc/apache2/sites-available/{default,example.org}
% sudo vi /etc/apache2/sites-available/example.org
&amp;lt;VirtualHost example.org:80&amp;gt;
...
  DocumentRoot /home/jdoe/public_html/
...
  ErrorLog /var/log/apache2/example.org-error.log
...
  CustomLog /var/log/apache2/example.org-access.log combined
...
% sudo a2enmod userdir
% sudo a2ensite example.org
% sudo /etc.init.d/apache2 restart
%
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;テスト&lt;/h2&gt;

&lt;p&gt;local:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% cd src
% echo hello world &amp;gt; hello.txt
% git commit -am &quot;Add hello.txt.&quot;
% git push -v
...
% vi hello.txt
...
% git push -v
Pushing to ssh://xx.xx.xx/~jdoe/src.git
Enter passphrase for key '/home/jdoe/.ssh/id_rsa':
...
To ssh://xx.xx.xx/~jdoe/src.git
   xx..xx  master -&amp;gt; master
&amp;gt;From /home/jdoe/src
   xx..xx  master     -&amp;gt; origin/master
Updating xx..xx
Fast forward
 hello.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Successfully generated site in /home/jdoe/public_html/
% w3m http://example.org/
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;参考&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://wiki.github.com/mojombo/jekyll&quot;&gt;jekyll&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html&quot;&gt;Blogging Like a Hacker&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;What would happen if I approached blogging from a software development perspective?&lt;/p&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>『俺様の宝石さ』</title>
    <link href="http://hisashim.org/2009/04/03/ukiya-gem.html"/>
    <updated>2009-04-03T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/04/03/ukiya-gem</id>
    <content type="html">&lt;p&gt;久しぶりに読み直したら、以前とは違った面白さが見つかった。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  俺様の宝石さ&lt;br/&gt;
  浮谷 東次郎&lt;br/&gt;
  &lt;a href=&quot;http://www.amazon.co.jp/dp/4480020322&quot;&gt;http://www.amazon.co.jp/dp/4480020322&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;前回読んだのが十数年前なので、ずいぶん印象が違う。彼が亡くなった歳をとっ
くに過ぎてしまい、良くも悪くも東次郎が若い。&lt;/p&gt;

&lt;p&gt;でも、より良く生きようという強い意志と行動力が素晴らしい。彼が今の時代に
生きていたら、いったいどうしただろうね。やっぱり教育をどうにかしようと思っ
ただろうか。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  浮谷東次郎について&lt;br/&gt;
  &lt;a href=&quot;http://www8.plala.or.jp/tojiro/tojiro/bio.html&quot;&gt;http://www8.plala.or.jp/tojiro/tojiro/bio.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  彼の生涯の夢は勉強したい人であれば誰でも入れる大学を設立することでし
  た。&lt;/p&gt;&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>takramインタビュー</title>
    <link href="http://hisashim.org/2009/04/03/kinya-tagawa-takram.html"/>
    <updated>2009-04-03T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/04/03/kinya-tagawa-takram</id>
    <content type="html">&lt;p&gt;takramの田川欣也さんのインタビューが面白い。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  ハイブリッドな感性が導く、新世代の力強いものづくり。&lt;br/&gt;
  デザインエンジニアリングファームtakram&lt;br/&gt;
  &lt;a href=&quot;http://white-screen.jp/2009/04/takram.php&quot;&gt;http://white-screen.jp/2009/04/takram.php&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;興味深いと感じたところを抜粋。&lt;/p&gt;

&lt;p&gt;デザイナとエンジニアのコミュニケーションの溝：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  一般のプロダクトデザインの現場だと、美大を出て就職し、
  インハウスのデザイナーになるケースが多いのではないかと
  思います。そのような組織ではデザインをデザイナーが、
  設計をエンジニアが行う分業制になります。そうすると
  業界用語やバックグラウンドの違いが溝になって、もの創りが
  思うように進まなくなるケースが多々あるんです。&lt;/p&gt;

&lt;p&gt;  デザインとエンジニアリングという軸に直交して、ハード
  ウェアとソフトウェアという軸をかけ合わせると合計4つの
  マスができますが、僕らは一人一人がその4つのマスを埋める
  スキルを持つ人間になりたいと思ってるんです。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;デザイナとエンジニアのコミュニケーションの溝を問題視している件については，
Physical Computingと動機が似ている気がする。Physical Computingでは
ArduinoやGainerといった扱いやすいハードウェア設計キットを用意し、それを共
通言語として使うことでコミュニケーションギャップを軽減しようとしている。
takramでは一人の人が複数のスキルを身につけることで、溝を克服しようとして
いるらしい。
アプローチは違うけれども、問題意識の根は同じように思う。&lt;/p&gt;

&lt;p&gt;プロトタイピングについて：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  その4マスのスキルを現実社会で活かす具体的な活動が、
  とにかく試作を繰り返す&quot;プロトタイピング&quot;です。&lt;/p&gt;

&lt;p&gt;  プロトタイピングは、ハイテク製品についても、この
  &quot;時の洗礼&quot;を擬似的に起こしてしまうためのアプローチだと
  考えています。&lt;/p&gt;

&lt;p&gt;  ――大きな労力がかかりそうですが…&lt;br/&gt;
  実際の製品を数万単位の数で量産することに比べたら微々たる
  ものだと思います。&lt;/p&gt;

&lt;p&gt;  プロトタイピングは、小さい規模でたくさん失敗しておく、
  予防注射のようなものですね。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;まさに&quot;Fail early, fail often&quot;ということ。早い時期にこまめに小さな失敗を
しておけば、後々の大きな失敗を防げる。
ハードウェアでもソフトウェアでも、工程が進むほど変更のコストがかさむので、
問題点は早めに見つかったほうがよい。&lt;/p&gt;

&lt;p&gt;（余談だけれど、これは人間向けのソフトウェア設計（編集制作）でも同じこ
と。）&lt;/p&gt;

&lt;p&gt;受託と自社製品のバランス：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  クライアントワークの場合には問題設定や目的意識が
  クライアントの側にありますが、アート制作の場合はこれらが
  自分の側にあるので、何を考えるべきか、考える内容にしても
  自分たちが気になっていることに正面から取り組めるんです。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;おそらくそうだろうなと思う。業務が主に受託であっても、自社製品を持つこと
には意味があるだろうと思う。&lt;/p&gt;

&lt;p&gt;（余談：出版社専属の編集者にとってもこれは他人事ではなくて、勤務先で割り
当てられる仕事以外に、自分自身の作品（本や記事やBlog）を持つということは
有意義だと思う。）&lt;/p&gt;

&lt;p&gt;変化を抱擁せよ：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  もの創りで重要視するものって時代とともに移り変わると思う
  ので、何とも言えないんですけどね。いまAppleやAmazonが
  やってるもの創りで、一番大事なものは&quot;サービス&quot;ではない
  でしょうか。でも、10年前にはそんな概念がなかった。
  そして、10年後もどうなってるかわからない。必要要素は
  増えていくし変動していくので、その動きを自然に受け入れ
  られるような受け皿としてスキルセットを広く考えていくのが
  重要だと思っています。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Guy Steeleもよく言っているように、人間と社会が時とともに変化していく以上、
製品も人間のニーズに合わせて変わっていかざるを得ない。であれば変化は抑え
込むものではなく受け入れるべきもの。そう考えるとスキルセットを広く持つと
いうのも自然に思える。簡単ではないけど。&lt;/p&gt;

&lt;p&gt;この人たちが実践しているやり方には強く共感する。
普通の人が真似できるかという点を考えると、agile等の方法論とはちょっと毛色
が違うように思えるけれど、でも問題意識の根っこは近いところにありそう。&lt;/p&gt;

&lt;p&gt;こういう考え方やそれを提唱・実践する人たちが、今この時代に同時に現れてい
るということは、偶然ではないように思う。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>「学生を成功に導くアドバイス」(Advising students for success / Jeffery Ullman)</title>
    <link href="http://hisashim.org/2009/04/02/ullman-advising-students.html"/>
    <updated>2009-04-02T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/04/02/ullman-advising-students</id>
    <content type="html">&lt;p&gt;Ullman先生が、教育者が学生にアドバイスする際の心得をCACM誌に書いていて、
斉藤先生がその日本語訳を公開されている。素晴らしい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  学生を成功に導くアドバイス
  〜学生にアドバイスをする教師へのアドバイス
  （そして、教師が学生から学べること）&lt;br/&gt;
  &lt;a href=&quot;http://leoclock.blogspot.com/2009/04/ullman.html&quot;&gt;http://leoclock.blogspot.com/2009/04/ullman.html&lt;/a&gt;&lt;br/&gt;
  &lt;a href=&quot;http://portal.acm.org/citation.cfm?id=1467247.1467260&quot;&gt;http://portal.acm.org/citation.cfm?id=1467247.1467260&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;教育者ではなくても、他人と一緒に学びながら仕事をする立場の人なら、何かし
ら感じるところがあるんじゃないかと思う。&lt;/p&gt;

&lt;p&gt;個人的にはここが気になった。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  教師のゴールとは、どうやったら学生が自分自身の力で考え、アイデア
  を組み立て、問題を解ける人になるかを教えることだ。&lt;br/&gt;
  ...&lt;br/&gt;
  起業は学位論文よりより大きなインパクトを我々の生活に及ぼし得る。&lt;br/&gt;
  ...&lt;br/&gt;
  私のキャリアでの様々な仕事のうち、私が最も誇りに思うのは、
  53人のPh.D.コースの学生と、それに続く弟子たちだ。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;結びの一言については、Tanenbaum先生も同様のことを言っていた。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;  Some notes on the &quot;Who wrote Linux&quot; Kerfuffle (Japanese)&lt;br/&gt;
  &lt;a href=&quot;http://www.kt.rim.or.jp/~hisashim/ast-brown/followup/&quot;&gt;http://www.kt.rim.or.jp/~hisashim/ast-brown/followup/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;  私がこれまでにしたなかで最も重要なことは、驚くほど優秀な生徒、
  特にPh.D.を大量に送り出したということだ。私のホームページの
  リストを見てほしい。彼らは偉大なことをやってのけている。私は
  母鶏のように誇らしい気持ちでいっぱいだ。
  ...
  教授というものは、生徒が自分を超える栄誉を手にするとうれしいものだ。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;人材の大事さはいくら強調しても足りないということだろうと思う。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>SkypeをGUIなしで常時起動させておく: skypeheadless.rb</title>
    <link href="http://hisashim.org/2009/03/31/skype-headless.html"/>
    <updated>2009-03-31T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/03/31/skype-headless</id>
    <content type="html">&lt;p&gt;Skypeは音声通話もテキストチャットも両方できて便利。&lt;/p&gt;

&lt;p&gt;ただP2Pなので、やりとりしている相手と自分の両方がオンラインでないと、メッ
セージが流れず、送ったつもりのメッセージが手元に溜まってしまう。ラップトッ
プユーザのように、使わないときはコンピュータをオフラインにする使い方をし
ていると、これはちょっと不便。&lt;/p&gt;

&lt;p&gt;これを何とかするには、常時オンラインなコンピュータでSkypeを動かして、中継
役として加わってもらえばいい。幸い手元には常時オンラインなDebian boxが1台
ある。&lt;/p&gt;

&lt;p&gt;Linux版Skypeをheadlessで動かせないか調べてみると、厳密にはheadlessではな
いけれども、ダミーのXサーバをあてがっておけばいいらしい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&quot;Headless&quot; Skype for API-only usage&lt;br/&gt;
&lt;a href=&quot;http://forum.skype.com/index.php?s=&amp;amp;showtopic=89970&amp;amp;view=findpost&amp;amp;p=1083521&quot;&gt;http://forum.skype.com/index.php?s=&amp;amp;showtopic=89970&amp;amp;view=findpost&amp;amp;p=1083521&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;具体的な手順は次のとおり（無保証）。&lt;/p&gt;

&lt;p&gt;skypeに加えて、xvfbをインストールしておく。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;wget http://www.skype.com/go/getskype-linux-deb
sudo dpkg -i skype-debian_*.deb
sudo apt-get install -f
sudo apt-get install xvfb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Xvfbに2番目のディスプレイを提供させて、そこに出力する形でskypeを起動する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/ruby
# skypeheadless.rb
# hisashim 2009-03-31
# cf. &quot;Headless&quot; Skype for API-only usage
# http://forum.skype.com/index.php?s=&amp;amp;showtopic=89970&amp;amp;view=findpost&amp;amp;p=1083521

system(&quot;stty -echo&quot;)
print &quot;Enter id, password, and ^D in one line (e.g. \&quot;johndoe opensesame^D\&quot;):&quot;
id_and_password = ARGF.read.gsub(/[\r\n]/, &quot; &quot;)
system(&quot;nohup Xvfb :2 &amp;amp;&quot;)
system(&quot;echo #{id_and_password} | DISPLAY=localhost:2 nohup skype --pipelogin &amp;amp;&quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;今のところうまく動いている模様。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>ExcelファイルをSambaで共有する</title>
    <link href="http://hisashim.org/2009/03/31/sharing-excel.html"/>
    <updated>2009-03-31T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/03/31/sharing-excel</id>
    <content type="html">&lt;p&gt;Excelの文書ファイルをLinux上のSambaで共有してみた。一応動いている。
maskとgroupに注意。&lt;/p&gt;

&lt;h2&gt;Sambaで共有を用意する&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;% sudo vi /etc/samba/smb.conf

# A shared folder for project Foo
# \\server\share-foo
[share-foo]
   comment = Foo
   browseable = yes
   read only = no
   create mask = 660
   path = /home/jdoe/share-foo
   public = no
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;cerate mask = 660として、同じgroupのメンバなら読み書きできるようにする。&lt;/p&gt;

&lt;h2&gt;Unix groupの準備&lt;/h2&gt;

&lt;p&gt;共有用のgroup fooを用意して、メンバーを加える。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo groupadd foo
% sudo adduser jdoe foo
% sudo adduser asmith foo
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Sambaアカウントの準備&lt;/h2&gt;

&lt;p&gt;必要ならSambaにもユーザを登録。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo smbpasswd jdoe
% sudo smbpasswd asmith
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;ディレクトリと権限の用意&lt;/h2&gt;

&lt;p&gt;group foo, mode 660でディレクトリを用意してsetgidする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo mkdir /home/jdoe/share-foo
% sudo chown jdoe:foo /home/jdoe/share-foo
% sudo chmod 660 /home/jdoe/share-foo
% sudo chmod g+s /home/jdoe/share-foo
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;smb.confで設定したとおりにディレクトリを用意する。
group fooで読み書きできるようにmode 660とする。
配下のファイルやフォルダがgidを継承するようにsetgidしておく。&lt;/p&gt;

&lt;h2&gt;Excelで文書ファイルを用意&lt;/h2&gt;

&lt;p&gt;Excelの文書ファイルを用意して、ブックを共有設定する。設定を変えるとき
はブック共有を一次的に解除しないといけないので注意。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% ls -al /home/jdoe/share-foo
drwxrwsr-x jdoe    foo   .
drwxr-sr-x jdoe    jdoe  ..

(jdoe creates foo.xls)

% ls -al /home/jdoe/share-foo
drwxrwsr-x jdoe    foo   .
drwxr-sr-x jdoe    jdoe  ..
-rw-rw---- jdoe    foo   foo.xls
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;編集して保存する&lt;/h2&gt;

&lt;p&gt;編集して保存するとこうなる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% ls -al /home/jdoe/share-foo
drwxrwsr-x jdoe    foo   .
drwxr-sr-x jdoe    jdoe  ..
-rw-rw---- jdoe    foo   foo.xls

(asmith edits foo.xls)

% ls -al /home/jdoe/share-foo
drwxrwsr-x jdoe    foo   .
drwxr-sr-x jdoe    jdoe  ..
-rw-rw---- asmith  foo   foo.xls
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Excelで共有されたブックを開いて保存すると、新しいファイルを作って置き
換えるらしく、ownerは変わってしまう。でもgroupは変わらないので、group
のメンバは読み書きできる。&lt;/p&gt;

&lt;p&gt;もっといい方法があれば知りたい。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>LDAPサーバ</title>
    <link href="http://hisashim.org/2009/03/27/ldap.html"/>
    <updated>2009-03-27T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/03/27/ldap</id>
    <content type="html">&lt;p&gt;DebianでLDAPサーバを立ててみた際の自分用メモ。誤りが多い。無保証。&lt;/p&gt;

&lt;h2&gt;OpenLDAP server (slapd)を導入&lt;/h2&gt;

&lt;h3&gt;インストール&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install slapd

% sudo vi /etc/ldap/ldap.conf
...
BASE   dc=example,dc=com
HOST   xxx.xxx.xxx.xxx
TLS_CACERT /etc/ssl/certs/myhost.pem
...
%
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;基本設定&lt;/h3&gt;

&lt;p&gt;管理者アカウントを設定する。また、slapd自身の設定を、設定ファイルではなく
設定データベースに記録するよう設定する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo slappasswd -h '{SSHA}'
...
% sudo vi /etc/ldap/slapd.conf
...
suffix          &quot;dc=example,dc=com&quot;
...
rootdn          &quot;cn=admin,dc=example,dc=com&quot;
rootpw          {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
...
access to attrs=userPassword,shadowLastChange
        by dn=&quot;cn=admin,dc=example,dc=com&quot; write
        by anonymous auth
        by self write
        by * none
...
access to *
        by dn=&quot;cn=admin,dc=example,dc=com&quot; write
        by * read
...

% sudo /etc/init.d/slapd restart
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;slapdのTLSの設定&lt;/h3&gt;

&lt;p&gt;TLSの設定をする。必須ではないけれど。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install gnutls-bin

% sudo openssl req \
               -new -x509 -nodes \
               -keyout /etc/ssl/private/foo-key.pem \
               -out /etc/ssl/certs/foo.pem
% sudo chown root.openldap /etc/ssl/certs/foo.pem
% sudo chown root.openldap /etc/ssl/private/foo-key.pem

% sudo vi /etc/ldap/slapd.conf
...
# TLS settings by jdoe
TLSCertificateFile      /etc/ssl/certs/foo.pem
TLSCertificateKeyFile   /etc/ssl/private/foo-key.pem
...
%

% sudo adduser openldap ssl-cert
% sudo /etc/init.d/slapd restart
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;TBD&lt;/p&gt;

&lt;h3&gt;SASL&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install sasl2-bin libsasl2-modules
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;TBD&lt;/p&gt;

&lt;h3&gt;テスト&lt;/h3&gt;

&lt;p&gt;データが何もない状態で、アクセスできるかだけテストしてみる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% ldapsearch -x &quot;(cn=admin)&quot;
% ldapwhoami -x -D &quot;cn=admin,dc=example,dc=com&quot; -W
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;既存のアカウント情報をldifに変換する&lt;/h2&gt;

&lt;p&gt;/etc/passwd, /etc/groupのユーザアカウント情報をldif形式に変換する。
migrationtoolsを使うと楽。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install migrationtools
% $PAGER /usr/share/doc/migrationtools/README.Debian
% cd /usr/share/migrationtools

% sudo LDAP_BASEDN=&quot;dc=example,dc=com&quot; \
  ./migrate_group.pl /etc/group ~/group.ldif
% sudo LDAP_BASEDN=&quot;dc=example,dc=com&quot; \
  ./migrate_passwd.pl /etc/passwd ~/passwd.ldif
% cd -
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;注意点：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;passwd情報を抽出する際は、/etc/shadowを読むためにroot権限が必要なので、
sudoを使う。&lt;/p&gt;

&lt;p&gt;念のためpasswd.ldif内のエントリがaccount, posixAccount,
shadowAccountを備えているか確認すること。shadowAccountがないと後になっ
てからはまりかねない。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;認証に失敗したユーザidをキーにslapdのログを検索して、近くに次のような
文字列があったら疑わしい。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;conn=X .. filter=&quot;(&amp;amp;(objectClass=shadowAccount)(uid=jdoe))&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;LDAPにアクセスしているかどうかを区別するために、/etc/passwdには存在し
ないldapuserというユーザを定義したldifを用意する（内容は後述）。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% vi ldapuser.ldif
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ここで*.ldifを編集して、システムユーザのアカウントやグループなど、不必要
な情報を削除する。&lt;/p&gt;

&lt;p&gt;トップレベルを用意する（内容は後述）。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% vi top.ldif
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;slapdに登録&lt;/h2&gt;

&lt;p&gt;準備したldifの情報をslapdに追加登録。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% ldapadd -x -W -D &quot;cn=admin,dc=example,dc=com&quot; -f top.ldif
% ldapadd -x -W -D &quot;cn=admin,dc=example,dc=com&quot; -f group.ldif
% ldapadd -x -W -D &quot;cn=admin,dc=example,dc=com&quot; -f passwd.ldif
% ldapadd -x -W -D &quot;cn=admin,dc=example,dc=com&quot; -f ldapuser.ldif
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;聞かれたらadminのパスワードを入力する。&lt;/p&gt;

&lt;h2&gt;テスト&lt;/h2&gt;

&lt;p&gt;適当に検索してみる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% ldapsearch -x -W -D &quot;cn=admin,dc=example,dc=com&quot; \
             -b &quot;dc=example,dc=com&quot; \
             &quot;uid=nobody&quot;
# extended LDIF
...
# search result
search: 2
result: 0 Success
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;LDAPにしかアカウントがないユーザと、どこにも存在しないユーザの情報を調べ
てみる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% id ldapuser
uid=1502(ldapuser) gid=1502(ldapuser) groups=1502(ldapuser)
% id foo
id: foo: No such user
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ローカルには存在せずLDAPにだけ存在するユーザの情報が出力されればOK。&lt;/p&gt;

&lt;h2&gt;ファイルの内容&lt;/h2&gt;

&lt;p&gt;ldapuser.ldif:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dn: uid=ldapuser,ou=People,dc=example,dc=com
uid: ldapuser
cn: ldapuser
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: bGRhcHVzZXI=
shadowLastChange: 13181
shadowMax: 99999
shadowWarning: 7
loginShell:/bin/bash
uidNumber: 1502
gidNumber: 1502
homeDirectory: /home/ldapuser
gecos: ldapuser

dn: cn=ldapuser,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapuser
userPassword: {crypt}x
gidNumber: 1502
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;top.ldif:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: example.com

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;トラブルシュート&lt;/h2&gt;

&lt;p&gt;LDAPはたくさんの要素が絡み、しかも親切なソフトウェアが少ないので、はまり
やすい。トラブルシュートに役立つ道具を用意しておくと楽。&lt;/p&gt;

&lt;h3&gt;分析用ツール&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ldapsearch&lt;br/&gt;
基本。設定やDBに変更を加えたら、まずこれを使って確かめる。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apache Directory Studio&lt;br/&gt;
&lt;a href=&quot;http://directory.apache.org/studio/&quot;&gt;http://directory.apache.org/studio/&lt;/a&gt;&lt;br/&gt;
Eclipseベースのワークベンチ。俯瞰するのに向いている。
ldapsearchと併用すると便利。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;slapdの診断&lt;/h3&gt;

&lt;p&gt;slapdのloglevelを上げていろいろ出力させ、成功時と失敗時を比較するとよ
い。loglevelは/etc/ldap/slapd.confで設定する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo vi /etc/ldap/slapd.conf
...
# Read slapd.conf(5) for possible values
#loglevel        none
loglevel        any trace filter acl shell stats
...
% sudo /etc/init.d/slapd restart
...
% sudo tail -n 10000 /var/log/debug | lv
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;anyを指定すると何でもかんでも出力する。詳しくはman slapd.conf.&lt;/p&gt;

&lt;h2&gt;参考&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;UNIX USER 2002/1: LDAP特集 (draft)&lt;br/&gt;
&lt;a href=&quot;http://ukai.jp/Articles/2002/uu-ldap/&quot;&gt;http://ukai.jp/Articles/2002/uu-ldap/&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;slapd: sporadic errors in SSL connections (&quot;bad record mac&quot;) fromm libnss-ldap and exim4 (gnutls11)&lt;br/&gt;
&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=325971&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=325971&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://bugs.launchpad.net/debian/+source/openldap2.3/+bug/227744&quot;&gt;https://bugs.launchpad.net/debian/+source/openldap2.3/+bug/227744&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;main: TLS init def ctx failed: -64 - openldap user not in ssl-cert group&lt;/p&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.cozmixng.org/~rwiki/?cmd=view;name=slapd&quot;&gt;http://www.cozmixng.org/~rwiki/?cmd=view;name=slapd&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Todo&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TLS&lt;/li&gt;
&lt;li&gt;SASL&lt;/li&gt;
&lt;li&gt;冗長化&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>第二回LLVM勉強会</title>
    <link href="http://hisashim.org/2009/03/22/llvm-studygroup.html"/>
    <updated>2009-03-22T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/03/22/llvm-studygroup</id>
    <content type="html">&lt;p&gt;藤田さん主催のLLVM勉強会#2に参加した。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;第二回 LLVM 勉強会 - LLVM 勉強会 | Google グループ&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/llvm_study/web/%E7%AC%AC%E4%BA%8C%E5%9B%9E+llvm+%E5%8B%89%E5%BC%B7%E4%BC%9A&quot;&gt;http://groups.google.com/group/llvm_study/web/%E7%AC%AC%E4%BA%8C%E5%9B%9E+llvm+%E5%8B%89%E5%BC%B7%E4%BC%9A&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;発表：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;藤田さん：JIT and specialization of RenderMan Shading Language&lt;/li&gt;
&lt;li&gt;三浦さん：yarv2llvm&lt;/li&gt;
&lt;li&gt;森田さん：Clang紹介&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;三浦さんが熱かった。笹田さん本人や浜地さんを含む複数の人からたくさん質問
を受けていた。人気の言語は周辺の厚みが徐々に増していくものだなあ。&lt;/p&gt;

&lt;p&gt;出かけて人と話すと消耗するけれど、いい話が聞けた。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>未踏同窓会（河野組・美馬組）</title>
    <link href="http://hisashim.org/2009/03/14/esp-reunion.html"/>
    <updated>2009-03-14T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/03/14/esp-reunion</id>
    <content type="html">&lt;p&gt;河野組・美馬組のみなさんと久しぶりにお会いして近況を交換しあった。&lt;/p&gt;

&lt;p&gt;IdeoTypeについて美馬先生には、機械による処理と編集者の感性による調整とを
いかに融合・両立させるかが大事ではないかとの意見をいただいた。
質問してくれた中原さんも同じことを伝えたかったのかもしれない。
とにかくリリースしよう。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>PDF入稿での問題</title>
    <link href="http://hisashim.org/2009/03/10/pdf-trouble.html"/>
    <updated>2009-03-10T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/03/10/pdf-trouble</id>
    <content type="html">&lt;p&gt;PDF/Xで入稿してみたら1C出力できなかった。著者支給のEPSに4Cビットマップ
が埋め込まれていたかららしい。&lt;/p&gt;

&lt;p&gt;現時点の答え：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;無視して1Cで出す。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;本来すべき対処：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;作成アプリケーションまでさかのぼって直す&lt;/li&gt;
&lt;li&gt;新規に作図する&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;予防のためにすべきこと：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;テスト入稿を行い、問題を洗い出し、印刷所と相談しておく。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;プリフライト時にカラーモデルを確認する。グレー出力の予定なのに
カラーが含まれているときは、画像をグレースケールに変換しておく。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;第三者によるデータは、あくまで部品とみなして、検証済み
アプリケーション（AI等）の文書ファイルに移植して使う。
そのまま変換して使ってはいけない。なお、扱う際は必ず検証済み
アプリケーションを使うこと。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>LaTeXで日本語の索引を打つxyzzy Lisp: latex-insert-index-ja.l</title>
    <link href="http://hisashim.org/2009/03/09/latex-insert-index-ja.html"/>
    <updated>2009-03-09T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/03/09/latex-insert-index-ja</id>
    <content type="html">&lt;pre&gt;&lt;code&gt;;; 2006-10-03 LaTeX indexing utility
;; 2009-03-09 updated
(defun latex-insert-index-ja (begin end pre &amp;amp;optional key)
  &quot;Insert \\index{key@term} using region text (or last killed text if
   with prefix arg) as index term. If the term is Japanese and the key is
   ommited, term's reading is copied as key.&quot;
  (interactive &quot;r\nP\nsKey:&quot;)
  (let ((term (if pre
                  (caar *kill-ring*)
                  (buffer-substring begin end))))
    (insert (concat
             &quot;\\index{&quot;
             (if (or (equal key nil) (equal key &quot;&quot;))
                 (if (string-match &quot;\\sj&quot; term)
                     (concat (mecab-reading-katakana term) &quot;@&quot;)
                     &quot;&quot;)
                 (concat key &quot;@&quot;))
             term
             &quot;}&quot; )
            )))

(defvar kata
  (let ((str (concat &quot;ァ ア ィ イ ゥ ウ ェ エ ォ オ &quot;
                     &quot;カ ガ キ ギ ク グ ケ ゲ コ ゴ &quot;
                     &quot;サ ザ シ ジ ス ズ セ ゼ ソ ゾ &quot;
                     &quot;タ ダ チ ヂ ッ ツ ヅ テ デ ト ド &quot;
                     &quot;ナ ニ ヌ ネ ノ &quot;
                     &quot;ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ &quot;
                     &quot;マ ミ ム メ モ &quot;
                     &quot;ャ ヤ ュ ユ ョ ヨ &quot;
                     &quot;ラ リ ル レ ロ ゎ ワ ゐ ゑ ヲ ン&quot;)))
    (mapcar 'character (split-string str &quot; &quot;))))

(defvar hira
  (let ((str (concat &quot;ぁ あ ぃ い ぅ う ぇ え ぉ お &quot;
                     &quot;か が き ぎ く ぐ け げ こ ご &quot;
                     &quot;さ ざ し じ す ず せ ぜ そ ぞ &quot;
                     &quot;た だ ち ぢ っ つ づ て で と ど &quot;
                     &quot;な に ぬ ね の &quot;
                     &quot;は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ &quot;
                     &quot;ま み む め も &quot;
                     &quot;ゃ や ゅ ゆ ょ よ &quot;
                     &quot;ら り る れ ろ ゎ わ ゐ ゑ を ん&quot;)))
    (mapcar 'character (split-string str &quot; &quot;))))

(defun translate-char (chr from-dict to-dict)
  (let* ((dic (mapcar (lambda (x y) (list* x y)) from-dict to-dict))
         (counterpart (cdr (assoc chr dic :test 'equal))))
    (if counterpart counterpart chr)))

(defun kata-to-hira-char (chr) (translate-char chr kata hira))
(defun hira-to-kata-char (chr) (translate-char chr hira kata))
(defun kata-to-hira-string (str) (map 'string 'kata-to-hira-char str))
(defun hira-to-kata-string (str) (map 'string 'hira-to-kata-char str))

(defun filter-region (f begin end)
  (let ((src (buffer-substring begin end)))
    (progn
      (delete-region begin end)
      (insert (funcall f src)))))

(defun kata-to-hira-region (begin end)
  &quot;Convert katakana in region to hiragana.&quot;
  (interactive &quot;r&quot;)
  (filter-region kata-to-hira-string begin end))

(defun hira-to-kata-region (begin end)
  &quot;Convert hiragana in region to katakana.&quot;
  (interactive &quot;r&quot;)
  (filter-region hira-to-kata-string begin end))

(defun run-command (cmd &amp;amp;optional input) ;; thanks to snmsts
  &quot;Run CMD as sub-process with INPUT for stdin. Return stdout as string.&quot;
  (let ((buf (create-new-buffer &quot;tmp&quot;))
        proc)
    (save-window-excursion
      (with-set-buffer
          (setup-temp-buffer buf)
        (set-buffer buf)
        (setq proc (make-process cmd))
        (if input (process-send-string proc (concat input (string #\C-z)))
            nil)
        (while (eql :run (process-status proc))
          (do-events))
        (prog1
            (string-right-trim &quot;\r\n&quot; (buffer-substring (point-min) (point-max)))
          (delete-buffer buf))))))

(defun mecab-reading-katakana (str)
  &quot;Acquire reading of Japanese text in katakana using MeCab morphological analyzer.&quot;
  (let* ((src-enc (detect-char-encoding str))
         (src-internal (convert-encoding-to-internal src-enc str))
         (src-sjis (convert-encoding-from-internal *encoding-sjis* src-internal))
         (src-utf8 (convert-encoding-from-internal *encoding-utf8* src-internal))
         (str src-utf8)
         (yomi (run-command &quot;C:/Program Files/MeCab/bin/mecab.exe -Oyomi&quot; str))
         (yomi-internal (convert-encoding-to-internal (detect-char-encoding yomi) yomi)))
    yomi-internal))

(defun mecab-reading-hiragana (str)
  &quot;Acquire reading of Japanese text in hiragana using MeCab morphological analyzer.&quot;
  (kata-to-hira-string (mecab-reading-katakana str)))
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  
  <entry>
    <title>shibuya.lisp tech talk #2</title>
    <link href="http://hisashim.org/2009/02/28/shibuya-lisp-tt2.html"/>
    <updated>2009-02-28T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/28/shibuya-lisp-tt2</id>
    <content type="html">&lt;p&gt;楽しかった。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;shibuya.lisp tech talk #2 の感想&lt;br/&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/higepon/20090301/1235880501&quot;&gt;http://d.hatena.ne.jp/higepon/20090301/1235880501&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;本を読む 「Shibuya.lispテクニカルトーク#2」に参加&lt;br/&gt;
&lt;a href=&quot;http://emasaka.blog65.fc2.com/blog-entry-564.html&quot;&gt;http://emasaka.blog65.fc2.com/blog-entry-564.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shibuya.lisp #2雑感 - val it : α → α = fun&lt;br/&gt;
&lt;a href=&quot;http://www.jmuk.org/diary/2009/03/03/0&quot;&gt;http://www.jmuk.org/diary/2009/03/03/0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TT#2での黒田さん講演回想録 (1) - わだばLisperになる - cadrグループ&lt;br/&gt;
&lt;a href=&quot;http://cadr.g.hatena.ne.jp/g000001/20090304/1236140062&quot;&gt;http://cadr.g.hatena.ne.jp/g000001/20090304/1236140062&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>xtel ubiquitous contents symposium</title>
    <link href="http://hisashim.org/2009/02/27/xtel.html"/>
    <updated>2009-02-27T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/27/xtel</id>
    <content type="html">&lt;blockquote&gt;&lt;p&gt;「ユビキタスコンテンツシンポジウム 2009」開催&lt;br/&gt;
&lt;a href=&quot;http://xtel.sfc.keio.ac.jp/jp/2009/01/_2009.html&quot;&gt;http://xtel.sfc.keio.ac.jp/jp/2009/01/_2009.html&lt;/a&gt;&lt;br/&gt;
2008年2月27日(金)　13:00〜19:00 (開場 12:30)&lt;br/&gt;
代官山ヒルサイドバンケット&lt;br/&gt;
&lt;a href=&quot;http://www.hillsideterrace.com/access/&quot;&gt;http://www.hillsideterrace.com/access/&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;オンラインでジャーナルを書き、作品を共有しなさい。そうすればより早く学ぶ
だろう。/TI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AgileもTinkeringの要素を含んでいる。作ることで考えるのだから。/O&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ユーザをイノベータとして扱え。/O&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PhysicalComputingの医療への応用は面白い。ただスケールが大きいからチャレ
ンジだ。/TI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FLOSSの大プロジェクトではたいてい独裁者がいる（Debianは例外だけど、（合
意形成に手間取り）リリース間隔が長い）。/TI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;propertyではなくpracticeに注目している。/?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;xtel Projectでは現代のTinkererを生み出そうとしているのだという奥出先生の
話を聞いてやっと分かった。
Tinkererはagileであるというのも納得。&lt;/p&gt;

&lt;p&gt;要追記。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Ask E.T.: ET course: low resolution vs high resolution</title>
    <link href="http://hisashim.org/2009/02/25/tufte-on-paper.html"/>
    <updated>2009-02-25T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/25/tufte-on-paper</id>
    <content type="html">&lt;p&gt;Edward Tufte先生が語る、紙のメリットなど。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Ask E.T.: ET course: low resolution vs high resolution&lt;br/&gt;
&lt;a href=&quot;http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=00002G&amp;amp;topic_id=1&quot;&gt;http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=00002G&amp;amp;topic_id=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But the overwhelming truth is that much of the history of progress in
science and in communication can be written in terms of improvements
in resolution. That is the big idea here, and it should not be
compromised away by shortrun situational considerations.&lt;/p&gt;

&lt;p&gt;-- Edward Tufte, July 29, 2001&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;メディアは解像度が最重要とのこと。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Paper is high-resolution, exact, portable, efficient, permanent; paper
leaves traces, can be copied outside the meeting, says that you are
serious and willing to be held accountable.&lt;/p&gt;

&lt;p&gt;-- Edward Tufte, August 29, 2001&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;紙のメリットいろいろ。高解像度その他。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Although Linotype output is indeed ~2400 dpi, this is not usually the
&quot;true resolution&quot; of the final printed output due to color dithering.
That is, each CMYK film sheet from the Lino is 2400 dpi, but they
combine in overlay. Colors other than CMYK are simulated through a
halftone process, bringing the effective resolution to ~200-300 dpi.
Black text is full resolution because it is all black (K), and the
fine curves in the characters take full advantage of it.&lt;/p&gt;

&lt;p&gt;-- Michael Yacavone (email), September 30, 2004&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;CMYKのK以外の色は実際には解像度が低いとのこと。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Xantour is pH neutral, but there is another archival issue with coated
stock: if the book pages get wet, the pages glue themselves together
because of the clay and clay-glue that form the coating on the paper.
Although a few copies might be irretrievably ruined if the coated
stock gets very damp, the book will generally survive because so many
copies are printed.&lt;/p&gt;

&lt;p&gt;-- Edward Tufte, October 1, 2004&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;コート紙は湿気に弱いとのこと。くっついてしまう。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Git from the bottom up</title>
    <link href="http://hisashim.org/2009/02/25/git-object.html"/>
    <updated>2009-02-25T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/25/git-object</id>
    <content type="html">&lt;p&gt;Gitのオブジェクトの仕組みについてよく書かれた資料。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Git from the bottom up - Lost in Technopolis&lt;br/&gt;
&lt;a href=&quot;http://www.newartisans.com/blog/2008/04/git-from-the-bottom-up.html&quot;&gt;http://www.newartisans.com/blog/2008/04/git-from-the-bottom-up.html&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.newartisans.com/blog_assets/git.from.bottom.up.pdf&quot;&gt;http://www.newartisans.com/blog_assets/git.from.bottom.up.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my pursuit to understand Git, it's been helpful for me
to understand it from the bottom up - rather than look at it
only in terms of its high-level commands.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;以下自分にとって重要なポイントをメモ。&lt;/p&gt;

&lt;h2&gt;commit, tree, blob&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ファイルシステムにたとえると、treeはdirectoryに、blobはi-nodeに似て
いる。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;（個人的にはジャガイモに似ていると感じた。commitは茎、treeは地下茎、
blobは芋。親から枝分かれしたり合流したりしてつながっている網目のような
一連のcommitのそれぞれに、treeがぶら下がっていて、treeの下にはサブtree
やblobがぶら下がっている。）&lt;/p&gt;

&lt;h2&gt;branch&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;branchはcommitに付けられた別名（alias）に過ぎない。ただし
（commitをhashで指定する場合と違って）branchの名前が指す
ものは更新されるので注意。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;tagも特定のcommitに付けられた別名という点では同じ。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;rebase&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;git rebaseには潜在的な危険があるので注意。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;tip: privateなリポジトリではrebaseでよい。
publicなリポジトリではmergeを使うこと。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;index&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;意味から言えばstageとでも呼ぶべきもの。&lt;/li&gt;
&lt;li&gt;indexは、次にcommitする際のtreeとなる。&lt;/li&gt;
&lt;li&gt;tip: commitコマンドに-aオプションを付ければ、
ほとんどindexを気にせずに作業できる。&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;reset&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;git resetのオプションによる影響の違いと危険性&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;resetはref, index, wtに影響を与えうる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;--mixed: refを切り替え、index（の一部）を適宜revertする。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;--soft : refを切り替える（indexはそのまま）。
（場合によっては下流が困る場合がある。）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;--hard : refを切り替え、wtをheadに完全に合わせる。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checkoutは、indexがあればwtをそれに合わせる。
なければheadに合わせる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;tip: reset --hardは単独では実行せず、直前に必ずstashを
使うとよい。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;stash&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;stashを使うと作業履歴を手元のblobに残せる。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;stash --clearは使わず、reflog expire --expire=30.daysを使うとよい。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;参考資料&lt;/h2&gt;

&lt;p&gt;上記を読んだ後に次の資料を読むとおさらいができる。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Tv's cobweb: Git for Computer Scientists&lt;br/&gt;
&lt;a href=&quot;http://eagain.net/articles/git-for-computer-scientists/&quot;&gt;http://eagain.net/articles/git-for-computer-scientists/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>DOIを出力するBibTeXスタイル: alphaurl-doi.bst</title>
    <link href="http://hisashim.org/2009/02/24/alphaurl-doi-bst.html"/>
    <updated>2009-02-24T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/24/alphaurl-doi-bst</id>
    <content type="html">&lt;p&gt;Bibliography（参考資料）にURLを出力したい場合はalphaurl.bstが便利。
.bibでurl = {http://exapmle.com}などと書いておいて、
.texで\bibliographystyle{alphaurl}と指定すればよい。&lt;/p&gt;

&lt;p&gt;今回はDOIを出力したくなったので、alphaurl.bstを基に、URLの代わりにDOI
を表示するスタイルをでっちあげた。
\bibliographystyle{alphaurl-doi}として使う。&lt;/p&gt;

&lt;h2&gt;変更点&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ENTRYにdoiを加える&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FUNCTION {format.doi}を定義する（FUNCTION {format.url}を参考に）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FUNCTION {output.doi}を定義する（FUNCTION {output.url}を参考に）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FUNCTION {webpage}にformat.doiを加える&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;次の関数内のoutput.urlをoutput.doiに置き換える。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FUNCTION {article}&lt;/li&gt;
&lt;li&gt;FUNCTION {book}&lt;/li&gt;
&lt;li&gt;FUNCTION {incollection}&lt;/li&gt;
&lt;li&gt;FUNCTION {inproceedings}&lt;/li&gt;
&lt;li&gt;FUNCTION {misc}&lt;/li&gt;
&lt;li&gt;FUNCTION {proceedings}&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;パッチ&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;--- alphaurl.bst
+++ alphaurl-doi.bst
@@ -38,6 +38,7 @@
     year
     url % urlbst.pl
     lastchecked
+    doi
   }
   {}
   { label extra.label sort.label }
@@ -130,6 +131,13 @@
   if$
 }

+FUNCTION {format.doi}
+{ doi empty$
+    { &quot;&quot; }
+    { &quot;DOI: \url{&quot; doi * &quot;}&quot; * }
+  if$
+}
+
 FUNCTION {format.lastchecked}
 { lastchecked empty$
     { &quot;&quot; }
@@ -630,6 +638,17 @@
   if$
 }

+%% DOI
+FUNCTION {output.doi}
+{ doi empty$
+    'skip$
+    { new.block
+      format.doi output
+      format.lastchecked output
+    }
+  if$
+}
+
 % Webpage entry type.
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
@@ -660,6 +679,8 @@
   new.block
   format.url &quot;url&quot; output.check
   new.block
+  format.doi % DOI
+  new.block
   note output
   fin.entry
 }
@@ -681,8 +702,10 @@
       format.pages output
     }
   if$
+%   new.block
+%   output.url % urlbst.pl
   new.block
-  output.url % urlbst.pl
+  output.doi % DOI
   new.block
   note output
   fin.entry
@@ -715,8 +738,10 @@
   if$
   format.edition output
   format.date &quot;year&quot; output.check
+%   new.block
+%   output.url % urlbst.pl
   new.block
-  output.url % urlbst.pl
+  output.doi % DOI
   new.block
   note output
   fin.entry
@@ -795,8 +820,10 @@
       format.chapter.pages output
     }
   if$
+%   new.block
+%   output.url % urlbst.pl
   new.block
-  output.url % urlbst.pl
+  output.doi % DOI
   new.block
   note output
   fin.entry
@@ -831,8 +858,10 @@
       format.pages output
     }
   if$
+%   new.block
+%   output.url % urlbst.pl
   new.block
-  output.url % urlbst.pl
+  output.doi % DOI
   new.block
   note output
   fin.entry
@@ -904,6 +933,8 @@
   new.block
   output.url % urlbst.pl
   new.block
+  output.doi % DOI
+  new.block
   note output
   fin.entry
   empty.misc.check
@@ -959,6 +990,8 @@
   new.block
   output.url % urlbst.pl
   new.block
+  output.doi % DOI
+  new.block
   note output
   fin.entry
 }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;表記を変えたいだけならほんの少し書き換えれば済む。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;--- alphaurl.bst
+++ alphaurl-simple.bst
@@ -126,7 +126,7 @@ FUNCTION {inbrackets}
 FUNCTION {format.url}
 { url empty$
     { &quot;&quot; }
-    { &quot;Available from World Wide Web: \url{&quot; url * &quot;}&quot; * }
+    { &quot;URL: \url{&quot; url * &quot;}&quot; * }
   if$
 }
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  
  <entry>
    <title>とちぎRuby会議01</title>
    <link href="http://hisashim.org/2009/02/23/toruby-tochigi01.html"/>
    <updated>2009-02-23T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/23/toruby-tochigi01</id>
    <content type="html">&lt;p&gt;とちぎRuby会議01に行ってきた。とても良かった。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;とちぎRuby会議01 - Regional RubyKaigi&lt;br/&gt;
&lt;a href=&quot;http://regional.rubykaigi.org/tochigi01&quot;&gt;http://regional.rubykaigi.org/tochigi01&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.flickr.com/photos/recompile_net/sets/72157614271688180/&quot;&gt;http://www.flickr.com/photos/recompile_net/sets/72157614271688180/&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mame_n/sets/72157614213400443/&quot;&gt;http://www.flickr.com/photos/mame_n/sets/72157614213400443/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;h2&gt;招待講演  &lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;「博士の愛したRubyと数学」原信一郎(長岡技術科学大学)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;使う道具も含めて人間であるから、道具は身体になじむものであることが大事と
いう話。身体になじむペンは思考を促進する。22世紀のRubyは、もっとべたべた
に人間寄りになっているのではないか。といった話。
たしかにプログラミング言語は人と世界との良きインタフェースであってほしい。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;「20世紀Ruby」後藤謙太郎(株式会社シングラム)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;プログラミング言語はいろいろな楽しみ方があるという話。
懐かしい話がいろいろ。作品を作って気軽に見せ合う場は大事だなあ。ベーマガ
はなくなったけれど、今はインターネットや勉強会がある。&lt;/p&gt;

&lt;h2&gt;ライトニングトークス&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;米澤慎 「タイマーからはじめる本当のRuby」&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;いろんなインタフェースでタイマーを書きましたという話。タイマーというのは
お題としてちょうどいいのかも。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;森田尚 「組み込みRake：Rakeで作るお手軽ビルドツール」&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;require 'rake'して楽をしましたというだけの話。締め切り近くになってもLTに
応募がなかったので、呼び水として手を挙げてみた。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;大川祐介 「Ruby初心者！」&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;初めてRuby使ってみたプログラマがどう感じたかという話。視点が新鮮で面白
い。話し慣れていない感じで、でもそういう人が話してくれたのがうれしい。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stsuboi「最強のRuby環境獲得のために：Apple製品格安購入術」&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;為替の差を利用してMacを安く買うためのノウハウ。今なら韓国が狙い目で、最
大4割引とのこと（2008年末-2009年頭の話）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;安藤葉子 (株式会社ネットワーク応用通信研究所) 「NaClは塩化ナトリウ
ムなのでエヌエーシーエルと読んでください」&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;まつもとさんたちが勤めるNaClの会社紹介。人がとても増えていて驚いた（当た
り前）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;樽家昌也 (日本Rubyの会) 「分散unit/test」&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;テストがボトルネックになりつつあるので、dRubyで分散してみたという話。並
列度の制御など課題はあるものの、動いて役に立っているとのこと。&lt;/p&gt;

&lt;h2&gt;雑感&lt;/h2&gt;

&lt;p&gt;toRubyでは、若い人が主体的に活動しているのが目立った。任せることは大事。&lt;/p&gt;

&lt;p&gt;これも「XPだったもの」の一環なんだろうな。そういう文化を感じた。&lt;/p&gt;

&lt;p&gt;関さんチームがうまくいっている秘密は分からない。ただ成り立たせている要因
はだんだん見えてきた気がする。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;クライアントとの距離が近い&lt;br/&gt;
自社製品を開発しているので、要求への疑問を口にしやすい&lt;/li&gt;
&lt;li&gt;人の入れ替わりがゆるやか&lt;br/&gt;
技術が人に蓄積される。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;真似できるところはぜひ真似したい。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Sambaの認証をsmbpasswdからtdbへ移行</title>
    <link href="http://hisashim.org/2009/02/18/samba3.html"/>
    <updated>2009-02-18T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/18/samba3</id>
    <content type="html">&lt;p&gt;古いSambaサーバのOSをアップグレードしたらいろいろはまった。3.xになって
も2.x時代の設定を使っていたつけが顕在化したらしい。&lt;/p&gt;

&lt;h2&gt;3.xでの変更点&lt;/h2&gt;

&lt;p&gt;3.xでは標準のパスワードファイルの形式と場所が変更されている。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/etc/smbpasswd
/var/lib/samba/passdb.tdb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;また管理者用にpdbeditコマンドが提供されている。管理者権限が必要だけれ
ど、smbpasswdよりも汎用で強力。&lt;/p&gt;

&lt;h2&gt;設定を確認する&lt;/h2&gt;

&lt;p&gt;testparmコマンドでsmb.confから設定を抜き出して、認証DBにtdbsamが指定さ
れていることを確認する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% testparm -s /etc/samba/smb.conf
...
  passdb backend = tdbsam
...
%
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;古いsmbpasswdファイルからpassdb.tdbを作る&lt;/h2&gt;

&lt;p&gt;/etcや/var/backupsにあるsmbpasswd.bakを作業用にコピー。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo cp /etc/smbpasswd.bak /var/lib/samba/smbpasswd.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;pdbeditで変換する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo pdbedit -i smbpasswd:/var/lib/samba/smbpasswd.txt \
               -e tdbsam:/var/lib/samba/smbpasswd.tdb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;エラーが出たら不具合を直して再試行。今回は単にまずい行を削除した。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo vi /var/lib/samba/smbpasswd.txt
(remove invalid users)
% sudo rm /var/lib/samba/smbpasswd.tdb
(try again)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;パスワードファイルを置き換える。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo /etc/init.d/samba stop

% sudo mv /var/lib/samba/passdb.tdb{,.bak}
% sudo mv /var/lib/samba/{smbpasswd,passdb}.tdb

% sudo /etc/init.d/samba restart
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;logonできるかテストする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% smbclient --debuglevel=3 //192.168.0.x/jdoe -U jdoe
(jdoe's smb password)
smb: \&amp;gt; exit
%
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;トラブルシュート&lt;/h2&gt;

&lt;p&gt;本当にそのユーザが登録されているか確認。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo pdbedit -u jdoe -v
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;登録されていなければ登録する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo pdbedit -a -u jdoe
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;参考&lt;/h2&gt;

&lt;blockquote&gt;&lt;p&gt;＠IT：Samba 3.0の全貌 改訂版［後編］（3/3） / たかはしもとのぶ&lt;br/&gt;
多様な認証データベースのサポート&lt;br/&gt;
&lt;a href=&quot;http://www.atmarkit.co.jp/flinux/special/samba3b/samba06.html&quot;&gt;http://www.atmarkit.co.jp/flinux/special/samba3b/samba06.html&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>DVIPDFMxの設定（lenny）</title>
    <link href="http://hisashim.org/2009/02/18/dvipdfmx.html"/>
    <updated>2009-02-18T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/18/dvipdfmx</id>
    <content type="html">&lt;p&gt;lennyで設定しなおしたのでメモ。&lt;/p&gt;

&lt;h2&gt;OTFパッケージのインストール&lt;/h2&gt;

&lt;p&gt;vfdata-otf-ptexパッケージをインストールしておく。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo dpkg -i vfdata-otf*.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ptexとdviwareのための仮想フォントが適切な場所に用意されるほか、いろい
ろ設定される。&lt;/p&gt;

&lt;h2&gt;DVIPDFMxの設定：フォント&lt;/h2&gt;

&lt;p&gt;/usr/share/fonts以下の適当なディレクトリにフォントの実体を置く。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo mkdir -p /usr/share/fonts/opentype/hiragino
% sudo cp HiraMinPro-W3.otf /usr/share/fonts/opentype/hiragino
...
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;DVIPDFMxからフォントが見えるようにする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo ln -s /usr/share/texmf/fonts \
             /usr/share/texmf/dvipdfmx/fonts
% sudo ln -s /usr/share/fonts/opentype/hiragino \
             /usr/share/texmf/fonts/opentype/public/hiragino
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;見えているか確認する。フォントファイルのパス名が表示されたら大丈夫。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% kpsewhich -format &quot;opentype fonts&quot; HiraMinPro-W3
/usr/share/texmf/fonts/opentype/public/hiragino/HiraMinPro-W3.otf
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;不具合があればサーチパスを表示させて、フォントを置いた場所が含まれてい
るかどうか確認する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% kpsewhich -progname dvipdfm -show-path &quot;opentype fonts&quot;
...
%
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;DVIPDFMxの設定：CMAP&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;cmap-adobe-japan*パッケージをインストールする。&lt;/li&gt;
&lt;li&gt;dvipdfmxがcmapを参照するよう設定されていることを確認。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;/etc/texmf/texmf.d/80DVIPDFMx.cnf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% dvipdfmx
CMAPINPUTS = .;/usr/share/fonts/cmap//
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;この設定では、まずカレントディレクトリ（.）を探し、次に
/usr/share/fonts/cmap以下を再帰的に（//）探す。&lt;/p&gt;

&lt;h2&gt;DVIPDFMxの設定：フォントマップ&lt;/h2&gt;

&lt;p&gt;ここでは普段platexとdvipdfmxの組み合わせでしか使わないと仮定して、
DVIPDFMフォーマットのマップをシステムワイドに設定してしまう。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dvipdfmx.cfgではdvipdfm.mapとcid-x.mapのみ生かす。&lt;/li&gt;
&lt;li&gt;普段は

&lt;pre&gt;&lt;code&gt;dvipdfmx -f jis-cjk ...
&lt;/code&gt;&lt;/pre&gt;

のように実行する。&lt;/li&gt;
&lt;li&gt;特定のフォントを使うときは

&lt;pre&gt;&lt;code&gt;dvipdfmx -f jis-cjk -f hiraginox ...
&lt;/code&gt;&lt;/pre&gt;

のように使いたいフォントに合ったマップを指定して実行する。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;/etc/texmf/dvipdfm/dvipdfmx.cfg&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; %% Font Map Files
 %%
 %% teTeX 2.x and TeXLive using updmap (pdfTeX format)
-f  pdftex.map
+%f  pdftex.map

 %% teTeX 2.x and TeXLive using updmap (DVIPDFM format)
-%f dvipdfm.map
+f dvipdfm.map

 %% teTeX 2.x and TeXLive using updmap (DVIPS format)
 %% MiKTeX 2.2 and 2.3
 %f psfonts.map

 %% Put additonal fontmap files here (usually for Type0 fonts)
-f  cid-x.map
+%f  cid-x.map
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;システムワイドな設定を使わずに、dvipdfmxのコマンドラインで指定してもよ
い。その場合は&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dvipdfmx.cfgではmapを全部コメントアウトする。&lt;/li&gt;
&lt;li&gt;常に

&lt;pre&gt;&lt;code&gt;dvipdfmx -f dvipdfm -f cid-x ...
&lt;/code&gt;&lt;/pre&gt;

のように使うマップをすべて指定して実行する。&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;トラブルシュート&lt;/h2&gt;

&lt;p&gt;困ったらおまじない。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo mktexlsr
% sudo update-texmf
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  
  <entry>
    <title>Postfixでgreylisting</title>
    <link href="http://hisashim.org/2009/02/15/postgrey.html"/>
    <updated>2009-02-15T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/15/postgrey</id>
    <content type="html">&lt;p&gt;Postfixでgreylistingをするよう設定。&lt;/p&gt;

&lt;p&gt;postgreyをインストールしておいて、main.cfのsmtpd_recipient_restrictions
に check_policy_service inet:127.0.0.1:10023 を追加すればよい。
まずは /usr/share/doc/postgrey/README.Debian を読むこと。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% sudo apt-get install postgrey
% lv /usr/share/doc/postgrey/README.Debian
% sudo vi /etc/postfix/main.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination,
  check_policy_service inet:127.0.0.1:10023

% sudo /etc/init.d/postfix reload
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;以前のpostgreyはport 60000で動いていた時期もあるので注意。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Developers Summit 2009 / 『プログラミング言語Ruby』出版記念トーク</title>
    <link href="http://hisashim.org/2009/02/13/devsummit-ruby.html"/>
    <updated>2009-02-13T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/13/devsummit-ruby</id>
    <content type="html">&lt;p&gt;2009-02-12..13&lt;/p&gt;

&lt;p&gt;Developers Summit 2009に行った。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Developers Summit 2009&lt;br/&gt;
&lt;a href=&quot;http://codezine.jp/devsumi/2009/&quot;&gt;http://codezine.jp/devsumi/2009/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;未来へつながる言語〜ある言語おたくの視点から / まつもとゆきひろ 氏&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;いつもの話だったので安心して、途中で人と話しに外へ。ごめんなさい。&lt;/p&gt;

&lt;p&gt;関さん中内さん和田さん荻野さんとランチ難民になりつつお昼を食べた。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ruby 1.9の現状と導入ポイント / Yugui 氏&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;自作スクリプトを1.9に対応させるための情報収集の一環として。想像どお
り、m17n関係で作業が発生しそう。&lt;/p&gt;

&lt;p&gt;DocDiffは複数のエンコーディングに自前で対応しているので、同じものを1.8
と1.9の両方で動かすのは難しそう。パッチを取り込んで整理して0.3.xを出し
て、その後1.9に対応させて0.4を出す？&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ブラウザJavaScript高速化JITバトル最終決戦 / 森田創 氏&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;speakers cornerでMozilla Japanの浅井さんに各種プラットフォーム対応の話
などをお聞きする。CSS printよりもmobileへ注力するのは組織として正しい
と思う。&lt;/p&gt;

&lt;p&gt;森田さんにiLiadというebook readerを見せてもらった。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/ILiad&quot;&gt;http://en.wikipedia.org/wiki/ILiad&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;薄くて軽い。粗いし遅いけど、用途によってはこれで十分。紙やPCと使い分け
ればいい。過渡期の製品でこれなら、いずれいいものが出てきそう。楽しみ。&lt;/p&gt;

&lt;p&gt;森田さんは理系文学青年なので、話しているとなんだか共感してしまう。（姓
が同じなのは関係ない。）&lt;/p&gt;

&lt;p&gt;SE社の栗原さんに久しぶりに会った。&lt;/p&gt;

&lt;hr /&gt;

&lt;blockquote&gt;&lt;p&gt;ジュンク堂書店新宿店　トークセッション詳細情報&lt;br/&gt;
&lt;a href=&quot;http://www.junkudo.co.jp/newevent/evtalk-shinjyuku.html#20090212shinjuku&quot;&gt;http://www.junkudo.co.jp/newevent/evtalk-shinjyuku.html#20090212shinjuku&lt;/a&gt;
『プログラミング言語Ruby』出版記念トーク&lt;br/&gt;
―「まつもと ゆきひろ、大いにRubyを語る」―&lt;br/&gt;
まつもとゆきひろ（著者） × 卜部昌平（監訳者）&lt;br/&gt;
2009-02-12 19:00..21:00&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;本の内容の紹介と若干のバックステージ話。和やかで楽しかった。&lt;/p&gt;

&lt;p&gt;最後に少し時間があったのに誰も質問しなかったので、もったいないと思って
手を挙げた。&lt;/p&gt;

&lt;p&gt;卜部さんへの質問：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Q. 今後の1.8系のメンテナンス計画はどのようにお考えか。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A. 自分がすべてのバージョンをリリースマネジメントしているわけ
ではないので、他のバージョンはそれぞれの担当の方が判断する
だろう。
自分に関しては、特にこうしたいということはなくて、来るものは
なるべく受け入れたい。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;まつもとさんへの質問：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Q. 今後Rubyにおいて実現したいこととして、スライドに書いてあった
もの（selector namespaceや高速化など）以外ではどんなアイディア
をお持ちか。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A. 難易度は高いが1つのプロセスに複数のVMを含むMulti VMなども考えて
いる。（mod_rubyのような）組み込み用途で役に立つだろう。マルチ
コアを生かせるかもしれない。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;p&gt;その後高井さん幹事の懇親会に参加。いろんな方とお話しできた。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;『プログラミング言語Ruby』出版記念トーク懇親会&lt;br/&gt;
&lt;a href=&quot;http://atnd.org/events/297&quot;&gt;http://atnd.org/events/297&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;p&gt;翌日もDevelopers Summit 2009の2日目。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ERP5に見るストレージ技術 / 奥地秀則 氏&lt;br/&gt;
&lt;a href=&quot;http://enbug.tdiary.net/20090214.html#p01&quot;&gt;http://enbug.tdiary.net/20090214.html#p01&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.enbug.org/DevelopersSummit2009.pdf&quot;&gt;http://www.enbug.org/DevelopersSummit2009.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;遅れてしまい聞き逃す。資料を読んだ限りでは、検索用の索引だけRDBMSに
キャッシュして、データ自体はODBMSに格納するという作戦らしい。なるほど。&lt;/p&gt;

&lt;p&gt;Nexediは「FLOSSの」「自社プロダクトで」「ビジネスを成立させて」、さら
に日本にまで進出してきている。かなりすごいことだと思う。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;アート・オブ・アジャイル デベロップメント
〜テストが駆動するビジネス価値〜
/ 木下史彦 氏&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;これだけの実績を持っていて、agileを実践しているのは2005年からだという
から驚き。「腹をくくった」「目の前の人を助けたい」という言葉が印象に
残った。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers [Media] Summit&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;メディア関係者のLT集。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;稲尾さん：良い意味で混沌にリードさせている。&lt;br/&gt;
瀧澤さん：DRMはしないが権利者への配慮も忘れない。&lt;br/&gt;
飯岡さん：編集者（ユーザ）と開発者の距離を縮めたほうがうまくいく。&lt;br/&gt;
長尾さん：QConやります。&lt;br/&gt;
星さん：お客が値付けするのもありでは。&lt;br/&gt;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;自分で道具を作る人がもっと増えると、楽しくなりそう。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;パネルディスカッション：テストを行うこと、テストを続けること
/ 和田卓人 氏/ 関将俊 氏/ 太田健一郎 氏&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;これは素晴らしかった。最後しか聞けなかったのが悔やまれる。
「ソフトウェアおよびプロセス=チームが成果物」は何度でも思い出したい名言。&lt;/p&gt;

&lt;p&gt;東京駅で関さんを見送って帰宅。&lt;/p&gt;

&lt;p&gt;人と会って話すのが一番楽しい。&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;仕事関係ではうれしい話と悲しい話を聞いた。お世話になった人が何人か、出
版業を去るようだ。いい判断でありますように。&lt;/p&gt;

&lt;p&gt;できる限りうれしい話を増やそうと思う。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>TOC2009の資料</title>
    <link href="http://hisashim.org/2009/02/10/toc.html"/>
    <updated>2009-02-10T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/10/toc</id>
    <content type="html">&lt;p&gt;O'Reilly Mediaが主催する出版関連のカンファレンスTOC2009が2009-02-09..
10に開催された。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;O'Reilly Tools of Change for Publishing Conference 2009&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009&quot;&gt;http://www.toccon.com/toc2009&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;配布資料をいくつか読んだのでメモ。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Presentation Files&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/proceedings&quot;&gt;http://www.toccon.com/toc2009/public/schedule/proceedings&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Reasons To Be Excited&lt;br/&gt;
Tim O'Reilly (O'Reilly Media, Inc.)&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/detail/7123&quot;&gt;http://www.toccon.com/toc2009/public/schedule/detail/7123&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;良い現状のまとめ。3.5.&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;&quot;People are paying for access to to information&quot;.&lt;/li&gt;
&lt;li&gt;&quot;Safari is O'Reilly's #2 channel (behind only Amazon) in
revenue returned to publisher and authors&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Understand Your Consumer BEFORE You Define Your Strategy&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/detail/5387&quot;&gt;http://www.toccon.com/toc2009/public/schedule/detail/5387&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;良いアドバイス。3.5.&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;友人のお奨めはどんなメディアでも効くが、オンラインではより
強力になる。&lt;/li&gt;
&lt;li&gt;オンラインではレビューも力を増す。&lt;/li&gt;
&lt;li&gt;オンラインメディア担当は、衝動的ではなく計画的に買う人に
訴えかけよう。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;eBooks II: Formats, Standards, and Implementation&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/detail/6712&quot;&gt;http://www.toccon.com/toc2009/public/schedule/detail/6712&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;ePub形式の良いおさらい。3.0.&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;XMLベースでリフローする。PDFとは違う&lt;/li&gt;
&lt;li&gt;&quot;EPUB is an OPS/OPF publication in an OCF container&quot;&lt;/li&gt;
&lt;li&gt;DRMはオプショナル。ePubの外側でやるもの&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fahlgrenさん：&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;ebookならリンクしろ&lt;/li&gt;
&lt;li&gt;スタイルは技術的制限をよく知ったうえで判断しろ&lt;/li&gt;
&lt;li&gt;とにかくリンクしろ&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Literature as a (Web) Service&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/detail/7395&quot;&gt;http://www.toccon.com/toc2009/public/schedule/detail/7395&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;考え方が面白くて共感する。4.0. 特に前半。参加しよう・参加を促進しよ
う、と読んだ。&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;本の読み書きは社会的活動である&lt;/li&gt;
&lt;li&gt;本は関係性である&lt;/li&gt;
&lt;li&gt;&quot;What is published will become less about the books than
the people who read them.&quot;&lt;/li&gt;
&lt;li&gt;&quot;We have to think of (IP) rights in a new way.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;The Rise of eBooks&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/detail/5105&quot;&gt;http://www.toccon.com/toc2009/public/schedule/detail/5105&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;本全体が落ち目ななか、ebookは伸びているというデータ。3.5.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Youth and Creativity: Emerging Trends in Self-expression
and Publishing&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/detail/5177&quot;&gt;http://www.toccon.com/toc2009/public/schedule/detail/5177&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Adobe的な意味でクリエイティブな若者のケーススタディ。2.5.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What Would Google Do with Publishing?&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/detail/7126&quot;&gt;http://www.toccon.com/toc2009/public/schedule/detail/7126&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;2.5.&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;本の内容がオンラインになれば、引用しやすくなる。&lt;/li&gt;
&lt;li&gt;取引のコストが極端に下がれば、今までなかった新しい市場が生まれる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Manifesto 2.0: What Does the Future Look Like for Publishers?&lt;br/&gt;
&lt;a href=&quot;http://www.toccon.com/toc2009/public/schedule/detail/6664&quot;&gt;http://www.toccon.com/toc2009/public/schedule/detail/6664&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;3.0.&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;&quot;Content isn't king; Conversation is.&quot; -- Cory Doctorow&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;時間がない人は&quot;Reasons To Be Excited&quot;、&quot;Manifesto 2.0&quot;、&quot;Literature as
a (Web) Service&quot;あたりを読むとよいかも。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>LaTeXでページのスタイルをカスタマイズする（\pagestyle）</title>
    <link href="http://hisashim.org/2009/02/09/latex-pagestyle.html"/>
    <updated>2009-02-09T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/09/latex-pagestyle</id>
    <content type="html">&lt;p&gt;ページのスタイル（柱など）は、\pagestyle{x}とすればxに設定できる。&lt;/p&gt;

&lt;p&gt;ページスタイルの種類は、empty, plain, headings, myheadingsの4種類がプ
リセットで定義されている。&lt;/p&gt;

&lt;p&gt;myheadingsはいろんな説明を読むと一見カスタムページスタイルを作れそうだ
けど、実際は単に柱の文字列を設定できるだけ。あんまり自由は利かない。で
もお手軽。&lt;/p&gt;

&lt;p&gt;カスタムページスタイルfooが欲しければ、こうする。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;\ps@fooを定義する（使っているクラスの\ps@headingsの定義をコピー
して改変するのが手っ取り早い）&lt;/li&gt;
&lt;li&gt;preambleで\pagestyle{foo}とする&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;これでその文書のデフォルトのページスタイルはfooになる。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>国立国語研究所「第2回ワークショップ: 文字 ―文字の規範―」</title>
    <link href="http://hisashim.org/2009/02/07/character-rules.html"/>
    <updated>2009-02-07T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/02/07/character-rules</id>
    <content type="html">&lt;p&gt;2009-02-07に国立国語研究所「第2回ワークショップ: 文字 ―文字の規範―」を聴
講してきた。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;「第2回ワークショップ: 文字 ―文字の規範―」のご案内&lt;br/&gt;
&lt;a href=&quot;http://www2.kokken.go.jp/egov/ws_moji090207.html&quot;&gt;http://www2.kokken.go.jp/egov/ws_moji090207.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2009年2月7日（土）13:15より
国立国語研究所　多目的室&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;他の方の報告。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;文字の旅人 - 「ワークショップ：文字」に行ってきました&lt;br/&gt;
&lt;a href=&quot;http://typojourney.blog81.fc2.com/blog-entry-427.html&quot;&gt;http://typojourney.blog81.fc2.com/blog-entry-427.html&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;以下自分用のメモ。間違い多数につき要注意。&lt;/p&gt;

&lt;h3&gt;基調報告 當山日出夫（立命館大学グローバルCOE）&lt;/h3&gt;

&lt;p&gt;「景観文字と字体規範−「祇園」のその後−」&lt;/p&gt;

&lt;p&gt;[聞き損ねてしまった。]&lt;/p&gt;

&lt;h3&gt;発表(1)小形克宏（フリーライター）&lt;/h3&gt;

&lt;p&gt;「大日本印刷における表外漢字の変遷」&lt;/p&gt;

&lt;p&gt;1950年代から1960年代にかけて、大日本印刷（だけ）は略字体を積極的に推進し
たが、1970年代には康煕字典体を中心とする姿勢に戻った。これは1950年代の国
語施策に合わせたためではないか、という調査結果。&lt;/p&gt;

&lt;p&gt;依るべき規範の変遷が見て取れる：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;略字（理念を解釈して具体化することで準拠する）&lt;/li&gt;
&lt;li&gt;康煕字典体（表に準拠する）&lt;/li&gt;
&lt;li&gt;コード（デジタル化にともない、グリフではなくコードが基準となった）&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;[スライドと資料が労作。]&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;ご来場御礼 - もじのなまえ&lt;br/&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/ogwata/20090208/p1&quot;&gt;http://d.hatena.ne.jp/ogwata/20090208/p1&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;発表(2)小池和夫（築地電子活版）&lt;/h3&gt;

&lt;p&gt;「JIS X 0213 漢字の選定規準とその問題」&lt;/p&gt;

&lt;p&gt;JIS X 0213では、実際に使われていたことが確認できる文字だけをJISに入れよ
うというのが原則だった（電話帳などが資料になる）。現状優先。辞書になくて
も使われていればそのグリフから起こす。一方UCSは、文字鏡に入ってる文字は
結構入っていたりする。&lt;/p&gt;

&lt;h3&gt;発表(3)狩野宏樹（イワタ）&lt;/h3&gt;

&lt;p&gt;「字形規範とフォントデザイン」&lt;/p&gt;

&lt;p&gt;[フォントベンダの立場からの現状報告。]&lt;/p&gt;

&lt;p&gt;（抽象的な）「字体」に関する規範が（具体的な）「字形」に関する規範として
受け取られてしまっているのではないか、とのこと。&lt;/p&gt;

&lt;p&gt;商用フォントベンダのケースとして、互換性や検証コストを考えて、あえて「正
しく」直さなかったことがある。&lt;/p&gt;

&lt;p&gt;直接の顧客が印刷会社の場合、フォントベンダはあるものを全部渡して、選択は
先方に任せればよい。しかしそうでない場合、組み合わせを吟味して、統一され
たセットを作る必要がある。その経験が過去になかったので苦労した。
またフォントベンダは（規格等に依るのではなく）過去の作品を基にして、例示
によってフォントを起こしていることが多くある。
平成フォントを作り直すとなると、（文字を加えることになるので）Adobe CMap
にも影響がある。&lt;/p&gt;

&lt;h3&gt;発表(4)師茂樹（花園大学）&lt;/h3&gt;

&lt;p&gt;「携帯電話の絵文字のUnicode登録をめぐる議論の動向」&lt;/p&gt;

&lt;p&gt;[先日の携帯絵文字Unicode化の提案に関する報告。ご本人のまとめがとても詳し
い。]&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;携帯電話の絵文字のUnicode登録をめぐる議論の動向 - もろ式: 読書日記&lt;br/&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/moroshigeki/20090208/p1&quot;&gt;http://d.hatena.ne.jp/moroshigeki/20090208/p1&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;[個人的には、既に泥水が少し混ざっているのだからもっと混ぜてよい、とは思
わない。自分たちがどういう未来を望むのかを議論して実現するのが大事じゃな
かろうか。]&lt;/p&gt;

&lt;h3&gt;発表(5)池田証寿（北海道大学）&lt;/h3&gt;

&lt;p&gt;「字書記述と実用例とを連関させた漢字字体の研究方法について」&lt;/p&gt;

&lt;p&gt;[門外漢すぎてよく分からなかった……。]&lt;/p&gt;

&lt;h3&gt;発表(6)林立萍（台湾大学）&lt;/h3&gt;

&lt;p&gt;「台湾の大学入試センターの日本語語彙表に見られる漢字」&lt;/p&gt;

&lt;p&gt;[結論が聞き取れず。でもこういうふうに文化が交わったところで何が起きたか
を明らかにしている研究があるのは興味深い。傍目八目で日本語を客観的に見ら
れるかも。]&lt;/p&gt;

&lt;h3&gt;全体討論&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;文字の規範は根本的な規範ではなく、手続き上の規範・決まり事である。「車
は左側通行」と同じ。この2つは分けて考えてほしい。1980年以降は道路交通法
ばかりだ。考える基準となるのだから思考停止してはならない。（トヨシマ先
生）&lt;/li&gt;
&lt;li&gt;絵文字が規範というものを再考させた。このことが面白い。（師先生）&lt;/li&gt;
&lt;li&gt;「人名漢字……」がいつからそんなに依拠されるようになったのか知りたい。
（安岡先生）&lt;/li&gt;
&lt;li&gt;常用漢字の役割が終わっていないか考えるべきでは。その規範が、そもそも必
要かどうかをよく考えようよ。絵文字は感情を表すツールが必要になったから
使われている。個人間のやりとりにコード化された文字が使われている。そう
いう世の中でどうバランスを取って行くかを考えよう。（山本さん%あくまで個
人としての意見）&lt;/li&gt;
&lt;li&gt;昭和15年に小学校に入学した人間として言わせてもらえば、私たちの混乱と犠
牲の上にあなた方は楽ができている。どうか歴史に学んでほしい。今度、内村
鑑三の全集を精興社で組んで岩波から出す。原稿は手入力してJIS化した。内村
は鴎外や逍遙に比べて簡単だから良い資料になるはず。[當山先生によると、
まず文字鏡を使って電子化して、精興社で分析してJIS第3、第4水準に変換した
とのこと。]&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;[「基本に立ち返って、規範そのものの意義を問え」という指摘にはっとした。]&lt;/p&gt;

&lt;p&gt;グリフのごく細かな違いにもこだわり、一次情報を追いかけて、とことん議論を
してくれる人がいるおかげで、普段何も考えなくても混乱なく文字を使えるのだな。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>TeXのシンボルを探す（texref.sh）</title>
    <link href="http://hisashim.org/2009/01/29/texref.html"/>
    <updated>2009-01-29T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/29/texref</id>
    <content type="html">&lt;p&gt;TeXのシンボルを探すコマンドをでっち上げた。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% cat ~/bin/texref.sh
#!/bin/sh
if [ 'x' == 'x$1' ]
then
  echo &quot;Need argument.&quot;
  exit
else
  echo &quot;Seacrhing $1&quot;
fi

locate -r '\b\(latex\|plain\|jsclasses\)\.\(dtx\|tex\|ltx\)\b' \
 | xargs grep --color=always -C 10 &quot;\(\\def\|\\newcommand\)[{\\]*$1&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;こんな感じ。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% texref.sh addvspace | lv -c
...
.../latex.ltx:\def\addvspace#1{
...
%
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;もっとましな方法を知りたい。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Makeを使う上での注意点</title>
    <link href="http://hisashim.org/2009/01/28/make.html"/>
    <updated>2009-01-28T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/28/make</id>
    <content type="html">&lt;p&gt;Makeの問題点を詳しくかつ具体的に指摘した記事を読んだ。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;What's Wrong With GNU make? - Conifer Systems&lt;br/&gt;
&lt;a href=&quot;http://www.conifersystems.com/whitepapers/gnu-make/&quot;&gt;http://www.conifersystems.com/whitepapers/gnu-make/&lt;/a&gt;&lt;br/&gt;
via yendot&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;暇があったら抄訳したいくらい面白い。以下目次。&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;Language Design

&lt;ul&gt;
&lt;li&gt;Recursive Make&lt;/li&gt;
&lt;li&gt;The Parser&lt;/li&gt;
&lt;li&gt;Uninitialized Variables and Environment Variables&lt;/li&gt;
&lt;li&gt;Conditional Syntax&lt;/li&gt;
&lt;li&gt;Two Types of Variables&lt;/li&gt;
&lt;li&gt;Pattern Rules and Search Paths&lt;/li&gt;
&lt;li&gt;Other Missing Language Features&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Reliability

&lt;ul&gt;
&lt;li&gt;Missing Dependencies&lt;/li&gt;
&lt;li&gt;Last-Modified Timestamps&lt;/li&gt;
&lt;li&gt;Command Line Dependencies&lt;/li&gt;
&lt;li&gt;Environment Variable Inheritance and Dependencies&lt;/li&gt;
&lt;li&gt;Multiple Concurrent Sessions&lt;/li&gt;
&lt;li&gt;Editing Files During a Build&lt;/li&gt;
&lt;li&gt;Cleaning Up Old Files&lt;/li&gt;
&lt;li&gt;Path Canonicalization&lt;/li&gt;
&lt;li&gt;After a Failed or Cancelled Build&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance

&lt;ul&gt;
&lt;li&gt;Incremental Build Performance&lt;/li&gt;
&lt;li&gt;Recursive Make and Performance&lt;/li&gt;
&lt;li&gt;Parallel Make&lt;/li&gt;
&lt;li&gt;Automatic Dependency Generation with Microsoft Visual C++&lt;/li&gt;
&lt;li&gt;Builtin Rules&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Miscellaneous

&lt;ul&gt;
&lt;li&gt;Silence is Golden&lt;/li&gt;
&lt;li&gt;Multi-Target Rules&lt;/li&gt;
&lt;li&gt;Warnings That Should Be Errors&lt;/li&gt;
&lt;li&gt;Creating Output Directories&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;いちいちもっとも。自分もmake -C dirで文脈を捨てて再帰的にビルドしているこ
とがあったので反省。すぐにSConsやOMakeに移行するわけにいかないので、しば
らくはmake、それもGNU Makeを使い続けるだろうけど、理解した上で使わないと
いけない。&lt;/p&gt;

&lt;p&gt;関連して、いまやクラシックな1998のPeter Miller, &quot;Recursive Make
Considered Harmful&quot;を読んでみた。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Recursive Make Considered Harmful&lt;br/&gt;
&lt;a href=&quot;http://miller.emu.id.au/pmiller/books/rmch/&quot;&gt;http://miller.emu.id.au/pmiller/books/rmch/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;要するに文脈情報が失われるような分断をしちゃだめってこと。&lt;/p&gt;

&lt;p&gt;第8章が興味深い。なぜこのような悪い慣習が延々と続けられているのかを考察
している。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;8. Literature Survey&lt;br/&gt;
...&lt;br/&gt;
It is interesting that the problems of recursive
make are rarely mentioned in the very books Unix
programmers rely on for accurate, practical
advice.&lt;/p&gt;&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;オリジナルのmakeの論文（1978）では再帰makeには触れていない。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GNU makeのマニュアル（1993）では、数箇所で再帰makeに触れている。しかしそ
の問題点については書かれていない。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nutshell book（1991）では、再帰makeを全プロジェクトmakeよりも推奨してい
る。でもその2段落後の文章では、すべてのファイルを単一のディレクトリに収
めることが良いと述べている。ディレクトリを分けることとMakefileを分ける
ことを混同しているようにも読める。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;BSD makeのチュートリアル（1988）は再帰makeには触れていないけれど、
MakefileとDAGの関係には触れている。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;同じようなことを自分もやりかねないので耳と心が痛い。読み手からのフィード
バックがすぐに書き手に伝わって、楽に直せる仕組みがあればいいのに。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>「出版コンテンツ研究会報告書 200901」</title>
    <link href="http://hisashim.org/2009/01/26/publishing-report.html"/>
    <updated>2009-01-26T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/26/publishing-report</id>
    <content type="html">&lt;p&gt;「出版コンテンツ研究会報告書」がポット出版のサイトで公開されている。
これは、デジタルメディアが普及した現在、出版業が面している課題と、それに対する
提案をまとめたもの。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;デジタル／ネット時代を生き抜く出版コンテンツの活用法&lt;br/&gt;
出版コンテンツ研究会報告書 200901&lt;br/&gt;
&lt;a href=&quot;http://www.pot.co.jp/news/200901pck_houkokusyo.html&quot;&gt;http://www.pot.co.jp/news/200901pck_houkokusyo.html&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;自分も出版業の端っこにいるものの、見えている範囲はとても狭いから、こうい
うものをまとめて公開してもらえるのはありがたい。感謝。&lt;/p&gt;

&lt;p&gt;以下気に留まったところ。&lt;/p&gt;

&lt;hr /&gt;

&lt;blockquote&gt;&lt;p&gt;3　研究会における主要論点とその要旨&lt;br/&gt;
（1）紙とデジタル（所有と利用）の関係&lt;br/&gt;
...&lt;br/&gt;
また、デバイスとコンテンツは不可分の関係といえる。たとえば、
携帯電話というデバイスだからこそ携帯小説というジャンルは登場した。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;メディアを考慮せずに制作はできないし、新しいメディアが新しい表現を生むと
いうのはそのとおり。&lt;/p&gt;

&lt;p&gt;ただ、コンテントすべてがメディアと不可分というわけでもなくて、各種メディ
ア向けに加工しやすいのもデジタルデータのいいところなので、個人的には共通
化と最適化の適切な組み合わせを追求したい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;（2）電子書籍の在り方&lt;br/&gt;
今の電子書籍は、紙の書籍の呪縛から逃れられていない。製版データを
そのままwebに出すのではなく、デバイスの特性とコンテンツを組み合わ
せ、両面から付加価値をつけて再編成する必要がある。また、新しい
配信サービスとの連動も不可欠だ。&lt;/p&gt;

&lt;p&gt;ただし、既存の出版社の編集業務は、紙の書籍を電子コンテンツとして
再利用しやすい体制にはなっておらず、またシステム的なツールも存在
しない。音楽業界はCDを製品化する時点で楽曲のデジタル化が完了して
おり、ダウンロード事業にスムーズに移行できたが、出版業界ではデジ
タル化の費用面で各社躊躇しているのが現状である。&lt;/p&gt;

&lt;p&gt;電子書籍の販売は、紙媒体と同じ方法で売ろうとして苦戦している。
電子書籍の価格設定は、再販制度及び紙の本の値段との関係を断ち切った
方がよい。今のところ、電子書籍や携帯小説の流通コストは相対的に
高く、また種類・売上げともに紙の書籍より圧倒的に少ない。電子書籍
の「金になる」ビジネス・モデルは、やはり紙媒体の出版物の強みの
延長線上にあるだろう。独自に価格設定した電子書籍の流通を紙の本と
連動させることも考えられる。ただし、出版社が直販で電子書籍を売る
場合、各社個別に販売システムを構築するのではなく、共有の販売イン
フラを持つことが望ましい。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;ああもう全く賛成。&lt;/p&gt;

&lt;p&gt;まずは内容（コンテント）と見せ方（メディアやフォーマット）とを区別して話
ができるといいな。同業者の間ですら話が通じないことがあるので。ページ分割
されて紙に印刷された静的なテキストだけが本ではなくて、インタラクティブに
変化する電子的なハイパーテキストもまた本といっていいと思う。
（最近は、紙媒体を前提にした話をするときは「紙の本」、電子媒体を前提にし
た話をするときは「ebook」と呼んで区別している。）&lt;/p&gt;

&lt;p&gt;デジタルデータの整理はXMLベースで粛々と進行中。&lt;/p&gt;

&lt;p&gt;今後の本の価格付けは、ソフトウェア製品やサービスの契約が当座の参考になる
と思う。例えばライセンス＋メディアという感じで。&lt;/p&gt;

&lt;p&gt;インフラは、まず互換性・相互運用性が欲しい。独占が生じると淀むから。その
うえで、共有して効率化できれば理想的。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;（3）出版社の役割&lt;br/&gt;
...&lt;br/&gt;
紙媒体の書籍の出版においては、出版社が総体としての情報の質に
責任をもってきた。作者や出版社の固有名詞は一種のブランドと
なっている。このような信頼性の高いブランドを作り上げる仕組みは、
現在のデジタル出版にはまだ存在しない。将来に残す信頼性の高い
コンテンツは、資本投下して作られるべきである。出版社（編集者）
によってクオリティコントロールされ、付加価値をつけられた情報と、
インターネット上で誰にでもできる情報発信は等価ではない。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;メディアと品質とは直交していると思うものの、品質管理が大事だというのは本
当にそうだと思う。&lt;/p&gt;

&lt;p&gt;そして、品質保証の努力を見合うものにするために、書評も充実するといいな。&lt;/p&gt;

&lt;p&gt;作品や出版社を利用者が評価し、その評価を共有・検索・比較できるサービスが
もっと充実してくれるとうれしい。関係者全員の長期的な益を考えると、複数の
サービスが健全に競争しているのが理想的。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;（4）著作権システム&lt;br/&gt;
電子書籍の普及を阻む一要因として、現行の著作権システムが挙げら
れる。出版者側の権利が弱すぎないだろうか。出版者のもつ「編集力
（信頼性の付与、内容の高度化等）」や「クオリティコントロール」
への対価として、何らかの補償が必要なことを国は認識すべきではないか。
従来の紙メディアの出版物は別として、デジタルへの移行期だからこそ、
デジタルコンテンツの補償金制度（＝集中管理システム）という利益
分配の新しい枠組み導入のチャンスと考えるべきだ。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;これは慎重に考えたい。価値があるなら当事者間の商取引で相応の対価がやりと
りされるようにしたほうが健全な気がする。慎重に。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;（5）公共基盤&lt;br/&gt;
...&lt;br/&gt;
たとえば、本のデータ（書誌情報）を公共的に集めて使える状態にし、
商業的な条件をつけずに自由に利用できる仕組みこそ、公共基盤が
担うべきではないか。データのダウンロードが可能になれば、利用者が
自発的な工夫で新たなサービス（使い道）を生み出すこともできる。
現在の公共の書誌データ提供の仕組みは貧しい。たとえば、国立国会
図書館のMARCはOPACからダウンロードすることができない。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;賛成。そういう基盤があれば、評価の共有をはじめ、いろいろ面白いことができ
そう。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;4　新ビジネス・モデルと制度づくりの提案&lt;br/&gt;
（2） ビジネス・モデルの提案&lt;br/&gt;
01 従来との連続性を重視するアプローチ&lt;br/&gt;
「冊子併売モデル」&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;物理媒体と組み合わせて売るという選択肢は、過渡期の対応として移行の手助け
になると思う。&lt;/p&gt;

&lt;p&gt;（ただ、サービスを提供しているという視点は忘れないようにしたい。）&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;他の人とも話をしてみたい。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>LIST Magazine</title>
    <link href="http://hisashim.org/2009/01/26/list-magazine.html"/>
    <updated>2009-01-26T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/26/list-magazine</id>
    <content type="html">&lt;p&gt;韓国の本を紹介する_listという雑誌（の英語版の紙版）を見る機会があっ
た。ウェブ版もある。ウェブ版は英語と中国語がある。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt; LIST Magazine&lt;br/&gt;
 &lt;a href=&quot;http://www.list.or.kr/&quot;&gt;http://www.list.or.kr/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;発行しているのは、LTI（Korea Literature Translation Institute）とい
う、韓国文学の翻訳を支援する団体らしい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;LTI - Korea Literature Translation Institute&lt;br/&gt;
&lt;a href=&quot;http://www.ltikorea.net/&quot;&gt;http://www.ltikorea.net/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;表紙はニス引きで、中も全ページ4色で美しくデザインされている。制作側の
意気込みと気遣いが伝わってくる。
中で紹介されている作品も、やや保守的な感じはするけど現代ふうだった。自
分が持っていた古い印象とのギャップがちょっと新鮮。&lt;/p&gt;

&lt;p&gt;面白かったのは、インターネットで公開してから本にまとめるというやり方の
フィクションが増えているという話。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Publishing Trends of 2008: Online Fiction By Pyo Jeonghun&lt;br/&gt;
&lt;a href=&quot;http://www.list.or.kr/articles/article_view.htm?Div1=1&amp;amp;Idx=60&quot;&gt;http://www.list.or.kr/articles/article_view.htm?Div1=1&amp;amp;Idx=60&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  Many leading Korean authors are serializing
  their fiction on the internet, then publishing them later in
  book form. Readers have responded well to this trend. Park
  Bumshin's Cholatse, Hwang Sok-yong's Hesperus, and Jung
  Yi-hyun's You Don't Know are such examples. Park and
  Hwang posted their fiction on the most popular Korean portal,
  www.naver.com, and saw their books go on to become bestsellers.
  Jung has been serializing her fiction on a bookstore website
  since last August.&lt;/p&gt;

&lt;p&gt;  How do the authors feel about posting their fiction online?
  Park Bumshin says it felt like a concert. He says he felt as
  though he was performing before an audience. Thanks to the
  posting and reply features of blogs, he was able to gauge his
  readers' reactions instantly. Hwang Sok-yong also recalls
  the experience as a special opportunity to communicate with
  his readership. Hwang showed interest in creating an internet
  cultural medium himself, and predicted that the medium will
  allow readers to post reviews of his work instantaneously.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;どこの国でも意欲がある人はいろいろ挑戦しているようで、いいね。&lt;/p&gt;

&lt;p&gt;本題とは関係ないけど、本棚の写真では、両隣にWeb ServicesとかITっぽいタ
イトルが見える。Pearson, O'Reilly, Wrox/Wileyなどの翻訳もあるし、書下
ろしらしいものも見える。さすが韓国、こっちの分野は盛んらしい。&lt;/p&gt;

&lt;p&gt;韓国の出版界でも、取り入れるだけでなく外に出していくことにも力を入れて
いるんだな。そういう方向に向かうのは自然だ。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>RubyGemsの影響範囲を特定ユーザに限定する</title>
    <link href="http://hisashim.org/2009/01/25/rubygems-per-user.html"/>
    <updated>2009-01-25T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/25/rubygems-per-user</id>
    <content type="html">&lt;p&gt;RubyGemsの影響範囲を特定ユーザに限定するには、環境変数GEM_HOMEを設定し
たうえで、$GEM_HOMEをRUBYLIBやPATHに含めればよい。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% adduser jdoe
...
% su jdoe
% $EDITOR ~/.bashrc

# RubyGems specific setup.
PREFIX=$HOME
export GEM_HOME=$PREFIX/lib/ruby/gems/1.8
export RUBYLIB=$PREFIX/lib/ruby:$PREFIX/lib/site_ruby/1.8
export PATH=lib/ruby/gems/1.8/bin:$PATH

% exit
% su jdoe
% gem install foobar
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これでOK.
環境変数経由というのがかゆいけど、動く。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>DRMなしの電子書籍</title>
    <link href="http://hisashim.org/2009/01/23/drm-free-ebook.html"/>
    <updated>2009-01-23T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/23/drm-free-ebook</id>
    <content type="html">&lt;p&gt;竹熊さんは電子書籍は便利だけど改善の余地ありと感じたらしい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;たけくまメモ : オンライン出版本を買ってみて&lt;br/&gt;
&lt;a href=&quot;http://takekuma.cocolog-nifty.com/blog/2009/01/post-83ac.html&quot;&gt;http://takekuma.cocolog-nifty.com/blog/2009/01/post-83ac.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;メリット&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1. 立ち読み機能がある。
2. 手頃な価格で、決済が簡単
3. 自宅に居ながらにして何時でも本が買える。
4. 時間を問わず、購入したその場で読める
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;デメリット&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1. 読むための環境が限定されている
2. 専用ビュワーでないと読めない
3. 書き込んだり、テキストをカット＆ペーストで引用することができない
4. コピー（プリントアウト）をとることができない
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Pragmatic Bookshelfの本はこの要求を全部満たしてる。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The Pragmatic Bookshelf&lt;br/&gt;
&lt;a href=&quot;http://www.pragprog.com/&quot;&gt;http://www.pragprog.com/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;DRMなしで汎用の形式（PDF等）にしてしまえば、ユーザにとってはとても便利に
なる。他の出版社との最大の違いは、信頼できるコミュニティと堅実な計算と勇
気か。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>『愛と笑いの夜』</title>
    <link href="http://hisashim.org/2009/01/20/miller.html"/>
    <updated>2009-01-20T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/20/miller</id>
    <content type="html">&lt;p&gt;Henry Millerを初めて読んだ。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt; 『愛と笑いの夜』(1987, 福武文庫)&lt;br/&gt;
 （Henry Miller, &quot;Nights of Love and Laughter&quot;, 1955）&lt;br/&gt;
 ヘンリー・ミラー著, 吉行 淳之介訳&lt;br/&gt;
 &lt;a href=&quot;http://www.amazon.co.jp/dp/4828830545/&quot;&gt;http://www.amazon.co.jp/dp/4828830545/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;よかった。5編のうち4編は恋文か告白かという感じで、何ともせつない。彼の作
品では変わり種らしい。&lt;/p&gt;

&lt;p&gt;構成としては、純な娼婦を描いた『マドモアゼル・クロード』が最初に置かれて
いるおかげで、全体の雰囲気がいっそう決まっていると思う。『初恋』を最後に
加えたのもいい。うまい。&lt;/p&gt;

&lt;p&gt;もうひとつ。『頭蓋骨が洗濯板のアル中の退役軍人』に残酷なことがさらっと書
かれているのが印象に残った。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;男が発する言葉は魂の叫びだった。自分の魂は潰されてしまったと、彼は言っ
ているがそれは真実ではない。魂は潰されないものだ。魂は傷つき、その結果、
全宇宙が広大な苦悩の場に見えるのである。しかし魂は、際限なく苦悩や苦痛
に耐えることができる。そうでなかったら、人類はとっくに滅びていたことだ
ろう。心臓が血液を送り出すかぎり、生命はつづいてゆくのである。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;とてもいい。&lt;/p&gt;

&lt;p&gt;こういう本が味わえるようになるというのは、今後の楽しみの一つかもしれない。
3.5 .. 4.0.&lt;/p&gt;

&lt;p&gt;（この本は、別宮貞徳『誤訳 迷訳 欠陥翻訳』であとがきが紹介されていたので
読んでみた。そのあとがきも読み応えがある。）&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>LaTeX文書の一部を非表示にする――comment.sty</title>
    <link href="http://hisashim.org/2009/01/12/latex-comment.html"/>
    <updated>2009-01-12T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/12/latex-comment</id>
    <content type="html">&lt;p&gt;LaTeXで複数行からなるブロックの表示・非表示を切り替えるには、commentパッ
ケージを使うのがよさそう。自分で書くのは避けたほうがいい。&lt;/p&gt;

&lt;h3&gt;文書&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;\documentclass{article}
\usepackage{comment}
\begin{document}

\begin{comment}
Frogs and snails, and puppy-dogs' tails.
\end{comment}

かえるにかたつむり、子犬のしっぽ。

\end{document}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;出力&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;かえるにかたつむり、子犬のしっぽ。
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;ビルドスクリプト&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Makefile:&lt;/p&gt;

&lt;p&gt;  ...
  LANG = ja
  ...
  $(DOC)-$(LANG).pdf : $(DOC)-$(LANG).texdoc&lt;/p&gt;

&lt;p&gt;  $(DOC)-$(LANG).texdoc : $(DOC).tex $(LANG).txs \&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;                      headpre.txs headpost.txs foot.txs \
                      Makefile
      cat headpre.txs $(LANG).txs headpost.txs $&amp;lt; foot.txs &amp;gt; $@
&lt;/code&gt;&lt;/pre&gt;

  %.dvi : %.tex
  %.dvi : %.texdoc Makefile

&lt;pre&gt;&lt;code&gt;      $(LATEX) $&amp;lt;
&lt;/code&gt;&lt;/pre&gt;

  ...&lt;/li&gt;
&lt;li&gt;&lt;p&gt;headpre.txs:&lt;/p&gt;

&lt;p&gt;  \documentclass{article}&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ja.txs:&lt;/p&gt;

&lt;p&gt;  \newenvironment{en}{&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\begin{comment}
&lt;/code&gt;&lt;/pre&gt;

  }{

&lt;pre&gt;&lt;code&gt;\end{comment}
&lt;/code&gt;&lt;/pre&gt;

  }&lt;/li&gt;
&lt;li&gt;&lt;p&gt;enja.txs:&lt;/p&gt;

&lt;p&gt;  \newenvironment{en}{}{}&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;headpost.txs:&lt;/p&gt;

&lt;p&gt;  \begin{document}&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;foot.txs:&lt;/p&gt;

&lt;p&gt;  \end{document}&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>ddでWindows PCの復旧</title>
    <link href="http://hisashim.org/2009/01/07/pc-trouble.html"/>
    <updated>2009-01-07T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/07/pc-trouble</id>
    <content type="html">&lt;p&gt;新年早々Windows PCが動かなくなっていたので復旧作業をした
（2009-01-05..01-07）。&lt;/p&gt;

&lt;p&gt;使っていると前触れなしに青画面になってしまう。調べたところ、&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memtest86（Knoppixをboot: memtestで起動）で1周しても異常なし&lt;/li&gt;
&lt;li&gt;Windows標準のディスクユーティリティで確認しても異常なし&lt;/li&gt;
&lt;li&gt;メーカーのツール（Samsungのhutil）で調べたら不具合発見&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;というわけで、HDD（とおそらくマザーボード）が故障したらしい。&lt;/p&gt;

&lt;p&gt;同じ型のPCと同じ容量のHDDを手配してすげ替えたら動いた。
今回はHDDが低水準なところで壊れたらしく、いつもお世話になってる
partimageが異常終了してしまうのでddを使った。以下手順。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Knoppixで起動。&lt;/li&gt;
&lt;li&gt;適当なストレージをマウント（今回は手近なSambaサーバ）。&lt;/li&gt;
&lt;li&gt;sfdiskでパーティション情報をストレージに保存。&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ddでディスク内容を読み出してストレージに保存。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;conv=sync,noerrorを忘れないこと。これは読めない箇所があっても
停止せずに、かつオフセットを維持して記録するため。&lt;/li&gt;
&lt;li&gt;bsは大きめ。本当は4096とかのほうが安全だと思う。&lt;/li&gt;
&lt;li&gt;ネットワークがボトルネックだったので、高速な圧縮ツールlzopで
圧縮してからネットワークを通すように。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;電源を落としてHDD等を交換。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Knoppixで起動。&lt;/li&gt;
&lt;li&gt;さっきのストレージをマウント。&lt;/li&gt;
&lt;li&gt;sfdiskでパーティション情報をHDDに書き込む。&lt;/li&gt;
&lt;li&gt;ddでディスク内容をHDDに書き込む。&lt;/li&gt;
&lt;li&gt;いったん終了して、HDDから起動できるか確認。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;例：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;boot: memtest

boot: knoppix noswap

$ sudo smbmount //sambaserver/jdoe /mnt -o user=jdoe
$ sudo sfdisk -d /dev/sda &amp;gt; /mnt/sda.sfdisk
$ time sudo dd if=/dev/sda conv=sync,noerror bs=65536 | \
  lzop -c &amp;gt; /mnt/sda.dd.lz
dd: reading `/dev/sda': Input/output error
974459+1 records in
974460+0 records out
63862210560 bytes (64 GB) copied, 4894.94 s, 13.0 MB/s
dd: reading `/dev/sda': Input/output error
1271253+2 records in
1271255+0 records out
83312967680 bytes (83 GB) copied, 6063.52 s, 13.7 MB/s
2442043+3 records in
2442046+0 records out
160041926656 bytes (160 GB) copied, 10842.2 s, 14.8 MB/s

real    180m42.348s
user    48m3.745s
sys     26m42.006s
$

$ sudo shutdown now

(change hdd)

$ sudo smbmount //sambaserver/jdoe /mnt -o user=jdoe
$ sudo sfdisk /dev/sda &amp;lt; /mnt/sda.sfdisk
$ lzop -d /mnt/sda.dd.lz | sudo dd of=/dev/sda conv=sync,noerror bs=65536

$ sudo shutdown -r now
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;教訓：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PCはいつか壊れる。当たり前ながら、日々のバックアップが必須。&lt;/li&gt;
&lt;li&gt;リストアしやすい方法を選ぶことが大事。ミラーのような形で常にもう1台にリ
ストアされている状態が理想かもしれない。&lt;/li&gt;
&lt;li&gt;プログラムはある程度仕方ないけれど、データだけでも集中管理したほうが楽。&lt;/li&gt;
&lt;li&gt;そろそろPOPもIMAP経由で読み書きするようにしよう。&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>『高い城の男』(The Man in the High Castle)</title>
    <link href="http://hisashim.org/2009/01/06/pkdick-castle.html"/>
    <updated>2009-01-06T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/06/pkdick-castle</id>
    <content type="html">&lt;p&gt;P. K. Dickの『高い城の男』を読んだ。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;urn:isbn:978-4-15-010568-6&quot;&gt;『高い城の男』&lt;/a&gt;&lt;br/&gt;
The Man in the High Castle&lt;br/&gt;
フィリップ・K・ディック（著） 浅倉　久志（訳）&lt;br/&gt;
ISBN：978-4-15-010568-6　刊行日：1984/07/21&lt;br/&gt;
&lt;a href=&quot;http://www.hayakawa-online.co.jp/product/books/10568.html&quot;&gt;http://www.hayakawa-online.co.jp/product/books/10568.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;〔ヒューゴー賞受賞〕第二次世界大戦が枢軸国側の勝利に終わって
から十五年、世界はいまだに日独二国の支配下にあった。日本が
支配するアメリカ西海岸では連合国側の勝利を描く書物が密かに
読まれていた……現実と虚構との間の微妙なバランスを、緻密な
構成と迫真の筆致で描いた、Ｄ・Ｋ・ディックの最高傑作！&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;第2次大戦で枢軸側が勝利した世界で、人々がそれぞれの運命と苦闘する話。&lt;/p&gt;

&lt;p&gt;個人的には勇気と希望の物語として読んだ。暗く苦しく居たたまれないなかに、
救いがある。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;やっぱり工具とモーターをマッカーシーからとりもどし、自分の工場を持ち、さ
さやかながら商売をはじめるべきだ。あの恐ろしいコウがなんといおうと、やれ
ばいい。せっせと働き、自分なりに最後まで創造的な仕事をすればいい。できる
だけりっぱに、できるだけ積極的に、人生を生きていくんだ。われわれにとっ
て、全人類にとって、城郭が濠の中へ崩れ落ちる日まで。易の託宣がおれに告げ
ているのは、そういうことだ。どのみち、運命はいずれわれわれをなぎ倒すだろ
うが、それまで、おれには自分の仕事がある。自分の頭と手を使わなくちゃいけ
ない。（p.77）&lt;/p&gt;

&lt;p&gt;チルダンの心は平安に満たされた。おれはとことんまでやって、生きのびたんだ
な、と彼はさとった。（p.275）&lt;/p&gt;

&lt;p&gt;「私は罪の許しを欲しています。」田上はいった。「しかし、あなたが私にそれ
を与えることはできない。おそらく、だれにもできないでしょう。...
（p.358）&lt;/p&gt;

&lt;p&gt;「わたしにとって小説を書く上での大きな喜びは、ごく平凡な人物が、ある瞬間
に非常な勇気で何かの行動をするところを描くことだ。その行動によって彼はな
にも得をするわけではなく、現実世界に名前が残るわけでもない。とすれば、そ
の本は彼の勇気を讃える歌なのだ。
（解説p.394、ヴァーテックス誌74年2月号、ディックへのインタビューより）&lt;/p&gt;&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>創造的な訓練</title>
    <link href="http://hisashim.org/2009/01/04/practice.html"/>
    <updated>2009-01-04T00:00:00+00:00</updated>
    <id>http://hisashim.org/2009/01/04/practice</id>
    <content type="html">&lt;ul&gt;
&lt;li&gt;[Hard Work and Practice in Programming - O'Reilly Radar][#1]
[#1]: http://radar.oreilly.com/2008/12/hard-work-and-practice-in-programming.html&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;2008-12にあった&quot;Program For the Future&quot;でのAlan Kayの発言（「人は新しい
技術を習得する努力をしたがらない」）に端を発して、いろいろな人が習熟のた
めの努力について語ったのを、Tim O'Reillyが記憶を頼りに起こした記事。&lt;/p&gt;

&lt;p&gt;いろんな人がそれぞれ意見を述べていて、共通する点と違う点が面白い。&lt;/p&gt;

&lt;p&gt;何事かに熟達するには1万時間の訓練が必要という例の話も引かれている。
結局、「知るだけじゃなく、手を動かさなきゃ身につかない」というのはほかの
人も言ってる。&lt;/p&gt;

&lt;p&gt;個人的に興味深かったのはこれ。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Scott Gray: &quot;Repetition and drill sucks. Creation and discovery rocks.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;単純なドリルはできることなら避けたい。
知的発見を創造的に楽しみながら、その過程では自然と繰り返し練習することに
なる。そんなコースが理想かも。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Alan Kay, Personal Computing: Historic Beginnings</title>
    <link href="http://hisashim.org/2008/12/25/alan-kay.html"/>
    <updated>2008-12-25T00:00:00+00:00</updated>
    <id>http://hisashim.org/2008/12/25/alan-kay</id>
    <content type="html">&lt;p&gt;Alan Kayの講演をビデオで観た。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[Personal Computing: Historic Beginnings][#1]&lt;br/&gt;
[#1]: http://jp.youtube.com/watch?v=tQg4LquY0uU&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;  &gt; In this lecture, Alan Kay first presents a historical overview
  &gt; of computing and technological developments that led to personal
  &gt; computing and influenced his thoughts on creating the Dynabook.&lt;/p&gt;

&lt;p&gt;  via Bill Kerr: [alan kay: after 40 years the dynabook is not here yet][#2]&lt;br/&gt;
  via [http://d.hatena.ne.jp/squeaker/20081209#p2][#3]
  [#2]: http://billkerr2.blogspot.com/2008/12/alan-kay-after-40-years-dynabook-is-not.html
  [#3]: http://d.hatena.ne.jp/squeaker/20081209#p2&lt;/p&gt;

&lt;p&gt;とてもよかった。Bill KerrさんのTranscriptを読めば主旨は分かる。&lt;/p&gt;

&lt;p&gt;（僕の理解：教育はアイデアとメンタリングが両輪なのに、メンタリングを担当
する部分が欠けている。それがコンピュータであるか人間であるか、場所が先進
国であるか途上国であるかを問わず。）&lt;/p&gt;

&lt;p&gt;その他印象的だった言葉：&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;「我々はレンガだ。協力して組織化し、アーチにならねばならない。ただ積み重
なった山ではなく、堅牢なアーチに」&lt;/p&gt;

&lt;p&gt;「どうして今のコンピュータが腐ってるか：作り手が役に立とうと強く願ってな
いからだ」&lt;/p&gt;

&lt;p&gt;「利用者も、コンピュータですごいことができることを知らない」&lt;/p&gt;

&lt;p&gt;「まともな大人の教育者がいないことが問題だ。おかしな教師なら、いないほ
うがいい」&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;1:36からの若い人へのメッセージもいい。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;「できる限り学んで、そして忘れろ」&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;1940生まれなのにまるで少年のように若々しく話すのが印象的だった。&lt;/p&gt;
</content>
  </entry>
  

</feed>
