12月 222010
 

Mozilla の製品の中にカレンダーアプリがあります。「カレンダープロジェクト」と言うヤツですね。でもってこれを利用して Thunderbird に Lightning をインストールすると google カレンダーと連携できて、Thunderbird の別タブとして Lightning が起動してカレンダーが利用できる。と言う感じです。

google カレンダーと連携したい場合は Lightning の他にアドオンとして「Provider for Google Calendar」と言うのが必要になります。これら全てが揃うと google のアカウントを設定するたけで google カレンダーと連携できるようになります。

FreeBSD 的に言うと ports/mail/thunderbird と日本語化するための ports/mail/thunderbird-i18n が、後は Lightning の ports として ports/deskutils/lightning-thunderbird をインストールする必要があります。 Provider for Google Calendar は Thunderbird からアドオンとしてインストールする必要があります。

が・・。FreeBSD の ports からインストールする lightning-thunderbird-1.0 は日本語化されていないんですな・・。orz。 Thunderbird は日本語化されているのにカレンダーは英語表示。スケジュール自体は日本語で表示してくれるのにメニューなどは英語表示。ちょっと悲しいな。と、言う感じなのであります。

Widnows 上で動作している Thunderbird+Lightning は日本語で表示できるのに悲しいねぇ。

と、言うことで FreeBSD 上で動作している Thunderbird+Lightning のカレンダー部分を日本語化することにしましょうかね。

スクリーンショットはこんな感じ。一応日本語化できました;-)。

thunderbird-ja-2.png

まず最初に Windows 版の Thunderbird+Lightning の環境をじっくりと眺めます。ふむふむ。Application Data\Thunderbird\Profiles\乱数\extensions\ の下には {e2fda1a4-762b-4020-b5ad-a41df1933103} と言うのがあって、その下の \chrome\ の中に日本語テキストがあるみたいですね。この中の calendar-ja.jar と lightning-ja.jar が Lightning を日本語化するために必要なファイルみたいです。

では、このファイルを抽出して FreeBSD 上に持って行ってみましょうか。 FreeBSD の Thunderbird の個人用設定は ~/.thunderbird/乱数/extensions/ ぽいですね。ここにやはり {e2fda1a4-762b-4020-b5ad-a41df1933103} があり、その下に /chrome/ があるのでそこにほーりこんでみましょうか。でもって再起動。

どーだっ!!?? ダメだぁ・・。orz。きっと何かファイルが足りないと思うので再度、Windows 側で色々調査します。すると Windows 側と FreeBSD 側のファイルで圧倒的に記述が少ないファイルがありました。 {e2fda1a4-762b-4020-b5ad-a41df1933103} の直下の chrome.manifest と言うファイルです。このフアイルの中を覗いてみるとローカル言語設定が記述されているようですね。FreeBSD 版では en-US しか無いのですが、Windows 版には色々な言語の情報が記述されています。なるほど。このファイルを FreeBSD 側に持っていくことにしましょう。

で、再起動。おぉーーっ!! Lightning のカレンダーが日本語表示してくれるようになりました。良かった;-)。

ちなみに、Windows 版 Thunderbird が無い人のために以下、 URL に言語パックを置いておきました。

http://icmpv6.org/Prog/FreeBSD_ports/lightning-thunderbird-1.0-ja-pack.tgz

ダウンロードしたら以下の要領でインストールしてみてください。

$ cd  ~/.thunderbird/乱数/extensions/
$ cd \{e2fda1a4-762b-4020-b5ad-a41df1933103}/
$ tar xvzfp ~/lightning-thunderbird-1.0-ja-pack.tgz

 
古い chrome.manifest は chrome.manifest.ORG として保存されます。と言うか、展開されます。

後は Thunderbird を再起動して Lightning が日本語化されたか確認してみてください。

なお、今回は Thunderbird+Lightning で google カレンダーと同期する方法などは一切書いていません。その情報はウェブ上を探せばゴロゴロ出てくるのでここではあえて書きませんでした。あくまで FreeBSD における Lightning の日本語化に特化したものとなります;-)。

ちなみに、Windows から全ての言語パックを持ってきて、上記、僕が作成した tgz ファイルの中に突っ込むと lightning-thunderbird-1.0-i18n みたいな ports が簡単に作れると思うのですが、どなたか ports を作る方いらっしゃいませんか?

僕は言語パックを自分で作ってしまったので ports は作らない予定なんでけども;-)。

12月 202010
 

CPUコレクションの第 21 回目は CPU ではありません。CPU 変換ゲタです。

その昔、Socket 系 CPU では CPU に変換ソケットを履かせて、マザーボードの Socket に刺す「ゲタ」と言うのが流行りました。 i486、i586 辺りで人気が出たでしょうかね。この辺りの、筆者は持ってないのですが、今回登場する、Slot1 <=> Socket370 変換アダプタは持っているのであります;-)。

Slot1Socket370_geta_1.jpg

実はこれ、つい最近、アキバのジャンク屋に売っていたのを買ってきました。箱に入った新品です。GIGABYTE GA-6R7。こーいうのがまだ新品で手に入るのがアキバですよねぇ。

実は買うときに店員さんに「これ、新品ですか?」と聞いたんです。僕的には利用しないんだけど、コレクションアイテムとしてゲットして非常に嬉しいわけです。店員さんは心の中で『こいつ、まさか使うつもりでいるのか?』みたいに思ったんでしょうね。非常にケゲンな顔をして「そ、そうですが・・。」みたいに言うわけです。う゛。勘違いされている・・。って思いましたね。僕もf(^^;;。「コレクションにするんです。」って店員さんに言ったらその人の顔がパーっと明るくなったのが印象的でした。

Slot1Socket370_geta_2.jpg

写真は変換 Socket の部分です。

でもってこっちの写真は PentiumIII と一緒に撮ったヤツ。

Slot1Socket370_geta_3.jpg

こうして二つ並べてみるとまたちょっと違う雰囲気が出てきますねぇ。

新品で購入したので、僕は今で箱に入れて保存しています;-)。

12月 152010
 

さてさて。 前回のエントリで「iOS4.2・AirPrint で体験する CUPS。」ってのを書きましたが、その続編です。いきなりこちらから読むと内容がちぃとも解らないかもしれないので前編から読んで頂ければと思います。

前回は確か、cups-pdf インストールして airprint.types というファイルを /usr/local/share/cups/mime/ に設置したけど、ダメだったー。ってところで終わりました。

iPhone4 に FreeBSD 上のプリンタを認識させるには CUPS ではなく avahi-daemon のほうであるようなので、実は avahi-daemon に設定ファイルを用意する必要があるのでありました。MacOSX や Windows では “Bonjour” と呼ばれている実装が FreeBSD 的には “avahi” になります。

ports 的には net/avahi になるのですが KDE4 をインストールしていると net/avahi-app のみがインストールされると思います。今のところはそれで十分でしょう。gnome の場合も net/avahi-app はインストールされるのかなぁ?僕は知らないのですが。もしインストールされていないようでしたらインストールして avahi-daemon と avahi-dnsconfd を起動してください。

avahi の設定ファイルは /usr/local/etc/avahi/ と言うディレクトリで管理されていますが、その中に /services/ と言うディレクトリがあります。ここに何かしらの名前で、今回は例えば AirPrint-PDF_Printer.service と言うファイルをしましょうか。ファイルを一個おけば、それが iPhone4 上のプリンタメニューに表示されるのであります。

AirPrint_avahi_1.jpg

では、AirPrint-PDF_Printer.service の中身はどう書けば良いのか?ってことですよね。以下は例です。

<?xml version="1.0" ?>
<!DOCTYPE service-group  SYSTEM 'avahi-service.dtd'>
<service-group>
    <name replace-wildcards="yes">AirPrint PDF_Printer @ %h</name>
    <service>
        <type>_ipp._tcp</type>
        <subtype>_universal._sub._ipp._tcp</subtype>
        <port>631</port>
        <txt-record>txtvers=1</txt-record>
        <txt-record>qtotal=1</txt-record>
        <txt-record>Transparent=T</txt-record>
        <txt-record>URF=none</txt-record>
        <txt-record>rp=printers/PDF_Printer</txt-record>
        <txt-record>note=FreeBSD/amd64</txt-record>
        <txt-record>product=(GPL Ghostscript)</txt-record>
        <txt-record>printer-state=3</txt-record>
        <txt-record>printer-type=0x80f04c</txt-record>
        <txt-record>pdl=application/octet-stream,
                application/pdf,
                application/postscript,
                application/vnd.cups-banner,
                application/vnd.cups-command,
                application/vnd.cups-postscript,
                application/vnd.cups-raw,
                image/gif,
                image/jpeg,
                image/png,
                image/tiff,
                text/html,
                text/plain
        </txt-record>
    </service>
</service-group>

 
途中、”pdl= ” の行だけ改行していますが、実際は一行で書く必要があります。

後、avahi のサービスの設定と CUPS に登録してあるプリンタはどこで結び付くのだ? と思いますがそれは “rp=printers/PDF_Printer” の行になります。CUPS の URL http://localhost:631/ にアクセスして [プリンター] タブに表示されているプリンタをクリックすると URL が表示される(http://localhost:631/printers/PDF_Printer)と思いますが、その http://localhost:631/ を取ったヤツになります。

後、設定を見ると type タグの中に情報が書かれていますが、ipp に対するサービスの設定である必要があります。良くわからないのが “printer-type=” ですが、まぁ、これで多分大丈夫だと思いますf(^^;;。

あ。そーそー。前回設定した /usr/local/share/cups/mime/airprint.types は削除しました。これで一応設定は完了です。avahi-daemon と avahi-dnsconfd、cupsd を再起動します。

でもって早速 iPhone4 のブラウザを開いて「プリント」を見てみましょう。無事に表示されたでしょうか?そして、印刷してみましょう。前回も書いた通り、FreeBSD の場合は /var/spool/cups-pdf/ にユーザ名のディレクトリができて、その中に PDF ファイルが出力されます。無事に出来ていたら完成です;-)。

え?ダメですか・・。ではここからはトラブルシューティングです。

まず、CUPS の管理ページにアクセスして [管理] タブの右側の一番下にある 「トラブルシューティングのためにデバッグ情報を保存」にチェックを入れて設定を保存します。すると、/var/log/cups/error_log に iPhone4 からアクセスがあった場合にログが出力されるのでその様子を見ます。

後、tcpdump -i re0 port ipp とかして iPhone4 からパケットが正常に流れてきているか確認するのも良いでしょう。

tcpdump から解ることとして、IPv4、IPv6 のどちらでパケットが到達しているか確認するのも良いかもしれないです。筆者の環境では 2001:c90:609:: でお互いに LISTEN にしていたのでガクゼンとして慌てて BB ルータの IPv6 ブリッジを切りました・・orz。iPhone4 恐るべし。NTT の IPv6 閉域網のアドレスで LAN 内をアクセスしていたんかいっ!! って感じで・・。

自宅のネットワークがデアルスタクの人はまず、ネットワークの状態を確認しておいたほうが良いでしょう。

続いて、CUPS のエラーログを見ます。無事に印刷できないログの原因としてパッと思いつくのが以下でしょうか。

cupsdAuthorize: No authentication data provided.

 
このログは後で解ったのですが、 PDF の出力には特に関係は無いので無視してよさそうです。もう一個のログのほうが重要でした。

Request from "192.168.1.200" using invalid Host: field "wanchan.local"

 
“192.168.1.200” と言うアドレスは iPhone4 のアドレスです。IPv6 でアクセスしている場合にはここに IPv6 が入ると思います。もう一個の “wanchan.local” と言うのは CUPS が動作している FreeBSD マシン名です。ホスト名の FQDN 的には wanchan.running-dog.net なのですが、mdns・avahi 的には wanchan.local になるんですな。

けど、何故か知らないですが、CUPS 自体がこの “wanchan.local” と言う「ホスト名」を認識しないみたいです。なので、/usr/local/etc/cups/cupsd.conf に以下の行を追加して上げてください。

ServerAlias wanchan.local

 
これで cupsd を再起動します。で、再度 iPhone4 からチャレンジ。こんどはどうだぁ? 無事に印刷されました?

あ。無事に印刷されない場合 iPhone4 はプリントクライアントが動きっぱなしになります。パケットキャプチャしているとずっとパケット送り続けてきます。タスクリストに表示されているので job をキャンセルしましょう。
#あ。iPhone3G ではマルチタスクが無くて、この画面を表示できないから AirPrint に対応してないのねー。なるほど。

AirPrint_avahi_2.jpg

仮に、無事に印刷ができたと仮定して FreeBSD 側を見てみると /var/spool/cups-pdf/ANONYMOUS/ と言うディレクトリが出来ていると思います。オーナーは nobody:nobody。認証がなくとも無事に印刷できたようですね。よかった。よかった;-)。

以上で「iPhone4 から PDF プリンタへの印刷」は完了です。

さてと。avahi についてですが、僕もあまりよく知らないのですが、知っている限りの情報をちょっと書いてみましょう。

まず、mdns・cups・avahi を起動するとネットワーク上の色々なサービスが、許可されていれば相互に利用できます。ports 的には net/avahi-gtk と言うのがあり、こいつをインストールすると avahi-discover-standalone コマンドがインストールされ GUI で、現在利用できるサービスの一覧が表示されます。サービス・NIC と後、IPv4/IPv6 の情報が表示されます。表示されている情報をクリックするとこれまたなかなか面白いですがf(^^;;。一回確認してみると面白いかもしれません;-)。

ただ、サーバにプリンタを付けているので X なんざねーよ。って場合があるかもしれません。そんな時は 以下のコマンドを叩いてみると良いでしょう。

$ avahi-browse -rat

 
CUI で現在提供されているサービスの一覧が表示されます。今回のオプションは -rat を指定しています。

例えば、僕の環境では MacOSX に接続されている HL-2040 プリンタが見えるわけです。そいつの情報は “= re0 IPv6 Brother HL-2040 series @ macosx-host _ipp._tcp local” として表示されます。情報がややこしいのでここには書きませんが、上記コマンドを叩くとだいたい想像が付くと思います。表示される内容は avahi-discover-standalone の GUI で表示されるものと基本的には一緒です。

実は、ここに表示された内容を /usr/local/etc/avahi/services/ の下に置いた services ファイルの XML に記述することになります。なので、僕の場合は MacOSX に接続されている HL-2040 プリンタの XML ファイルを書いて、それをサも自分の PC のサービスの如く iPhone4 に見せて、

iPhone4 -> FreeBSD(wanchan) -> MacOSX -> プリンタ -> 印刷

と言うことも可能になるわけですね。ややこしいけど;-)。

ただ、残念なことに FreeBSD に直に接続しているプリンタが無いので avahi-browse の出力結果がどのようになるのか解らないのが悲しいところです。

今回は iPhone4 対応の PDF プリンタが準備できたのでヨシとしておきましょうか。

ちなみに、僕の場合は、多分 MacOSX 上に PDF プリンタを準備したほうが圧倒的に早いしらくちんだったと自分でも思います。が、それだとあまりネタにならないしねぇ;-)。

非常に疲れた・・。ふぅ。

12月 142010
 

iOS4.2 の機能の目玉の一つ、AirPrint が HP の対応プリンタ以外のハードウェアでも利用できて、印刷できるらしい。と言うのが最近あちこちで騒がれています。例えばこれ。

ascii.jp の「OS XのプリンターをAirPrint経由で使う」
マイコミの「既存のプリンタで iOS AirPrint 印刷に対応する方法」

僕的には ascii.jp の記事のほうがラクだったのでそっちで試してみました。本文にあるとおりですが、/usr/share/cups/mime/airprint.types と言うファイルを作成して、その中に以下の行を書いたら MacOSX をリブート。

image/urf urf (0,UNIRAST<00>)

 
後は、システム環境設定の「共有」でプリンタ共有にチェックを付けて「全員 プリント可能」を選択するだけでで iPhone4 から AirPrint が利用できます。

AirPrint_2.jpg

ちなみに元記事では「認証ダイアログ」が出てきてしまう。と書かれていましたが「プリンタとファクス」の設定の所で [ネットワークでこのプリンタを共有] のチェックを2,3回付けたり外したりしてシステム環境設定を閉じれば、iPhone4 側では特に認証を聞かれることもなく印刷が可能になります;-)。

AirPrint_3.jpg

このブログで何回か書いていますが、僕はブラザーの HL-2040 を利用しています。iPhone4 のキャプチャでちゃんと認識できます。HP のプリンタでなくともこうして iOS4.2 の AirPrint が利用できるのですね。ぱちぱちぱち。
#ちなみに iPhone3G では AirPrint はまぁるで利用できません。メニュー自体がありません。あしからず・・。orz。

さて。これで終わったら、ただの記事のパクリですね。もうちょっと足を突っ込んでみましょうか。

そもそも、MacOSX では CUPS と言うプリントシステムを提供しています。Apple 謹製で、僕が普段利用している FreeBSD も CUPS が動作します。

以前のエントリで「CUPS で FreeBSD から簡単印刷。(MacOSX があればだよ)」というのを書いていますが、詳しくはそっちに譲ります。

MacOSX のシステム環境設定の「共有」で「プリンタ共有」の制御を行うのは、実は CUPS の設定を変更しているんですな。試しに http://localhost:631 にアクセスして「管理」タブの右側の「このシステムに接続されているプリンターを共有」のチェックのところを見ていると解ります。「共有」の「プリンタ共有」のチェックを外して http://localhost:631 の「管理」タブのページをリロードすると、チェックが外れたりします。

AirPrint_1.jpg

ブラウザとシステム環境設定の画面をキャプチャしたモノですがちゃんと見えるかな?

その時、/etc/cups/cupsd.conf にも実はこっそりと設定が入って、更にバックグラウンドで cupsd がリサスタートされるわけですね。ふむー。立派な GUI なこと。FreeBSD にもこーいう統合的な GUI が欲しいなぁ。KDE4 には無いんだけど、gnome にはあるのかなぁ?

ちなみに共有するかしないかチェックによって /etc/cups/cupsd.conf が書き換わるんですが、以下はその差分ですねー。

--- cupsd.conf.O        2010-12-14 02:17:05.000000000 +0900
+++ cupsd.conf  2010-12-14 02:17:24.000000000 +0900
@@ -1,19 +1,21 @@
LogLevel warn
SystemGroup admin
SystemGroupAuthKey system.print.admin
-# Only listen for connections from the local machine.
-Listen localhost:631
+# Allow remote access
+Port 631
Listen /private/var/run/cupsd
-# Show shared printers on the local network.
+# Enable printer sharing and shared printers.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseRemoteProtocols
-BrowseLocalProtocols
+BrowseAddress @LOCAL
+BrowseLocalProtocols CUPS dnssd
DefaultAuthType Basic

-  # Restrict access to the server...
+  # Allow shared printing...
Order allow,deny
+  Allow @LOCAL
</Location>
<Location /admin>
</Location>

 
と、言うことで MacOSX っちゅーのは UNIX 知っている人でもむやみやたらに手で設定ファイル変更したらアカンよ。って感じなのでしょうかね。

それにしてもその昔、「プリンタ共有」ってのは samba で行い、smb.conf の中にプリンタ共有の設定を記述することにより行っていたのですが、MacOSX がベースになると CUPS 側でプリンタのドライバから共有まで一手に面倒見てくれるので、随分と変わったモノだ。などとなるのでありました。

Windows を利用している人でも、UNIX 系 OS や MacOSX がネットワークにある人は是非とも Bonjour をインストールしておきたいものです。って、 Windows7 版ではもうないんだっけか;-)。

さてさて。話がここで終わってしまうとこれまたどーも尻切れとんぼちっくなので FreeBSD での動作についてもちっくと書いておきましょうかね。

結論から言うと FreeBSD 上で動作する CUPS では AirPrint ができませんでした。

僕の知識が多分足りないのだと思います。思いますが・・。

簡単に行った手順を書いておきます。

1. まず、FreeBSD の CUPS に対応しているプリンタが無いので cups-pdf と言うプリンタを ports からインストールします。 CUPS 経由で印刷したものを PDF 化する “プリンタ” です。 firefox3 や KDE4 では「印刷」で「PDF に出力」ってのがあるので本当は必要無いのですけどね。 print/cups-pdf という ports です。

2. 続いて http://localhost:631 にアクセスして cups-pdf を「プリンタの追加」に登録します。「ロカールプリンタ」を選択し、ベンダは「Generic」を選択すればプリンタの準備は完了です。後は実際にアプリケーションから印刷してみます。印刷した時にできる PDF は /var/spool/cups/cups-pdf/ユーザ名/ に出力されます。

3. さて。プリンタの準備も整ったので、早速 AirPrint 対応してみましょう。一番上に書いた airprint.types というファイルを /usr/local/share/cups/mime/ に設置します。後、一応、/usr/local/etc/cups/ にも symlink しましょうかね。

4. cupsd・avahi-daemon・mdnsd を再起動 (restart) します。プリンタ共有しようとする場合、この三つのデーモンはセットですね。どれか一個が起動していない(hoge_enable=”YES” になっていない)と MacOSX のプリンタも共有できないです。その割りには MacOSX 側では avahi-daemon が動いている気配無いのにプリンタ共有できるんですよね。不思議だ・・。

で、自分が思っている設定が終わったので、早速 iPhone4 からアクセスするのですが、「プリタンーが見つかりません。」と悲しい状態になるのでありました・・。orz。

多分、 cupsd・avahi-daemon・mdnsd のうち、どれかの設定が悪いのだと思います。ログを見ていると認証というか、アクセス系のエラーが出ていたのでそっち方面の設定をしたら良いかもしれません。そもそも、僕の iPhone4 は自宅の無線 LAN に接続すると IPv6 でアクセスしているので、更に何か設定が必要なのかもしれません。

ちなみに、MacOSX も FreeBSD も cupsd・avahi-daemon・mdnsd は全て IPv4/IPv6 のデアルスタクで動作しています。

とまぁ、大体こんな感じで試したのですが、 FreeBSD で AirPrint をやるにはもう少し情報収集してから再度トライする必要がありそうです。せっかく MacOSX と同じ環境持っているんですしね。けどもまぁ、裏を返すと MacOSX で AirPrint できるんだからもういいんじゃね? ともなるんですが・・f(^^;;。

続編書きました。-> 「iOS4.2・AirPrint で体験する avahi。

12月 042010
 

話が Slot1 になったら、これは絶対に外せないですよねぇ。利用したことは無いのですが、一応 CPU 自体はもっています。Slot1 の Celeron。アキバでジャンク扱い 300yen で買ってきました;-)。

Slot1 の Celeron と言えば「Celeron 300A コスタリカ産」ってのが今でも伝説でしょうか? 300MHz の CPU が 450MHz までオーバークロックできる、非常にオーバークロック耐性のある CPU として爆発的人気になったと記憶しております。

Slot1_Celeron_1.jpg

Slot1 の Celeron と言うのは PentiumII・III と違って「カラ」が付いてないので CPU クーラーを取ってしまうと非常に薄っぺらい CPU になります。表の CPU コアがついているほうは大体こんな感じ。

裏側はツルっとしています。値札というか、シールはどこで付いたんだろ?一応つけたままにしているんですけどf(^^;;。

Slot1_Celeron_2.jpg

で、左側の白い帯をアップにしたのがこの写真になります。

Slot1_Celeron_3.jpg

ふむ。この CPU は一応コスタリカ産のようですね。けど、クロックが 366MHz FSB は 66 みたいですね。 300A とは違うかf(^^;;。

けどもまぁ、一応、有名な CPU なので、一個だけですがコレクションとして持っているのでありました;-)。

何回も既に書いているかと思いますが、当時、僕は Socket7 ラバーな人だったので Slot1 の CPU は自分では全く購入していません。Intel が Socket370 に移行するまで、AMD や Cyrix など他の CPU ベンダ(後、チップセットベンダもだね)は Super Socket7 でがんばるわけです。僕はそっちに行ってしまったのですけどね。

当時、アキバを俳諧したりしていても、一歩引いた目線で眺めていた Slot1 だったのでありました。