7月 222010
 

僕の自宅にはネットワーク上に FreeBSD 二台、Windows7 二台、MacOSX 一台がクライアント PC として存在してます。でもって自宅にはプリンタがあって ブラザー HL-2040 があるのですが、このプリンター、USB とパラレルポートで接続できるのであります。

HL-2040 のパラレルポートは Windows7 に、USB は MacOSX に接続されているので FreeBSD が動作している PC にはプリンタが接続されていないのであります。

そもそも、FreeBSD ではプリンタが動作するようにする設定はややこしいし、無理して FreeBSD から印刷しなくとも、cupsd が動作していて、ベンダがドライバを用意している MacOSX から印刷すれば綺麗に印刷できるのでそれで良いやー。とか思っていたわけですが・・。

しかし、よくよく調べてみるとブラザーは MacOSX と Linux 用に cups ドライバを用意しているので、それを FreeBSD に持ってきたら FreeBSD でも綺麗に印刷できるではないかい?

とか思い、FreeBSD で cupsd を onestart したわけです。で、その後に http://localhost:631 にアクセスするわけです。そしたら・・。

あぁれぇ? MacOSX に接続しているプリンタが FreeBSD から見えるではありませんかっ!! 以下は cupsd に接続した時の「プリンタの管理」の画面です。

cups_printer.png

cupsd で既に認識されているので、後はアプリから使えるのか確認するだけです。まずは GTK アプリの代表格 Firefox からですが、「印刷」を選択するとちゃーんと MacOSX に接続されたプリンターが見えていて、印刷もちゃんとできました。

次は僕がメインで利用しているデスクトップ環境の KDE4 の konqueror で印刷してみましたが、これまたプリンタがちゃんと見えていてちゃんと印刷ができたのでありました。日本語も文字化けせずに綺麗に印刷されております(@_o)。

す、すげーな。って感じなのてありました。

さてと。ここからはただの観測でしかなくて、全くウラは取ってないのですが、MacOSX と、後、KDE4 を利用した僕のデスクトップ環境では mDNS やら avahi やら hald などがガシガシ動いている環境です。なので、MacOSX 上の samba でファイル共有とプリンタ共有がオンになっていると Apple 謹製の cupsd はサクっとお互いを認識しあえるのかなぁ(サクっと認識されたのは多分 mDNS の影響だと、僕は思うのでありますが)。などと思った次第です。

MacOSX に接続され、ネットワーク共有されているプリンタはサクっと利用できると言うことなのでしょうなぁ。

それにしても上のほうに書いた通り HL-2040 のパラレルポートは Windows7 に接続しています。で、Windows7 に接続しているプリンタもネットワーク共有しているのですが、こいつは cupsd からは見ることが出なかったのでありました。

cupsd 同士、後、mDNS などの親和性がすごーく良い。と言うことなんでしょうかねぇ。

最後にですが FreeBSD 上で make した cups-base の make config のオプションを付けておきます。

# This file is auto-generated by 'make config'.
# No user-servicable parts inside!
# Options for cups-base-1.4.3
_OPTIONS_READ=cups-base-1.4.3
WITH_GNUTLS=true
WITHOUT_PHP=true
WITHOUT_PYTHON=true
WITHOUT_LIBPAPER=true
WITH_DNSSD=true
WITHOUT_PAM=true
WITHOUT_LDAP=true
WITHOUT_DBUS=true
WITHOUT_LIBUSB=true
WITH_GHOSTSCRIPT=true
WITHOUT_XPDF=true
WITHOUT_XDG_OPEN=true

 
本当に良く分からないのですが WITH_DNSSD=true なのかなぁ。 FreeBSD で簡単にプリンタを使いたければ MacOSX に接続されているプリンタで。って感じでしょうか;-)。

7月 142010
 

FreeBSD の最新の ports-current を追いかけていたら KDE4 は kde4-4.4.5 に、 qt4 は qt-4.6.3 になったのだけど、あるときから scim-bridge で日本語の入力ができなくなってしまった。それ以前のバージョンではちゃんと動作していたのになぜなんだよぉ・・。orz

GTK アプリの Firefox とか Thunderbird には日本語が入力できるので KDE4 か QT4 がちょっとあやすぃ。などと思い textproc/scim-bridge や textproc/scim-bridge-qt4 などを再インストールするのだけど、ちぃとも復旧しない。おかしい・・。orz。入力できないのは KDE のアプリと、後 Java アプリで日本語入力ができない状態となっていました。

そして、色々環境変数を見直した所以下の設定で kde4-4.4.5+qt-4.6.3 でも scim-1.4.7 で入力できることが解りました。

o. 動作しない今まで設定していた内容

export QT_IM_MODULE=scim-bridge
export GTK_IM_MODULE=scim
export XMODIFIERS="@im=SCIM"
exec /usr/local/bin/scim -d &

 
この内容を ~/.xsession に書いていたわけですね。あ。僕は KDE4 の利用時に ~/.xsession を利用するってのは以前書いているのでそちらを参考にしてください。

さてと。この設定では scim で KDE4 アプリに文字入力できない。なので設定を見直してみました。

o. 見直した新しい設定

export QT_IM_MODULE=scim-bridge
export GTK_IM_MODULE=SCIM
export XMODIFIERS="@im=SCIM"
export XIM=SCIM
export XIM_PROGRAM="scim -d"

 
「scim」と小文字で設定したのを大文字で「SCIM」と記述し、新たに XIM な環境変数を追加してみました。

そして、今までは ~/.xsession で起動していたものを 「KDE システム設定」の [詳細] タブにある「自動起動」に登録して KDE4 側で自動起動するように設定してみました。そしたらなんとっ!! 無事に復活して KDE4 アプリでも scim で文字入力できるようになりました。良かった良かった。

ちなみに ports が scim のインストールに必要なものは textproc/scim textproc/scim-bridge textproc/scim-bridge-qt4 と、後、僕は Canna 使いなので japanese/scim-canna をインストールしています。

それにしても復活して良かった。このためにまるまる二日を費やしてしまったではないか・・。orz。

7月 032010
 

ちょっと前のエントリーで「ONKYO ND-S1 を PC に接続してみる。」と、いうのを書きました。その時は MacOSX と Windows7 では無事に動作したけど FreeBSD では usb.ko 辺りでエラーになって動作しないですねぇ。で終りました。

その時検証した FreeBSD は 7.3-STABLE だったのですが、今回 8.1-PRERELEASE にバージョンアップしたので再度試した所、無事に動作することを確認できました。mp3 や 音楽 CD、後、mp4 の動画についても音が出ることが確認できたので、FreeBSD から ND-S1 はサウンドカードとして無事に認識できました。

kernel: uhub7: 2 ports with 2 removable, self powered
root: Unknown USB device: vendor 0x08bb product 0x2704 bus uhub7
kernel: ugen5.7: <Burr-Brown from TI> at usbus5
kernel: uaudio0: <Burr-Brown from TI USB Audio DAC, class 0/0, rev 1.10/1.00, addr 7> on usbus5
kernel: uaudio0: Play: 48000 Hz, 2 ch, 16-bit S-LE PCM format
kernel: uaudio0: No recording!
kernel: uaudio0: No midi sequencer
kernel: pcm4: <USB audio> on uaudio0

 
前回書いた通り、サウンドデバイスがたくさんある PC になっている (cat /dev/sndstat の結果) のでサウンドカードを特定する必要があるのですが、以下のコマンドで pcm4 に向けてあげます。

# sysctl hw.snd.default_unit=4

 
これで無事に音がでるようになったということですね。演奏中は特にエラーを吐くことも無く快調に音が出るのでありました;-)。

さて。 7.3-STABLE と 8.1-PRERELEASE では基本的に USB 周りが改修されているようです。 8 系 FreeBSD では usb.ko から ochi.ko 、 uhci.ko 、 ehci.ko が独立しました。その関係でコードが見直されたのでしょうなぁ。良かった良かった。

筆者はその昔、8.0-STABLE を試しているのですが、この時、USB 接続の HDD が認識しませんでした。その時の顛末は「8.0-STABLE の USB ブート。」に書いているのですが、なるほどー。8 系リリースのことをよく調査もしないで、7 系と同じ感じで usb.ko だけロードすれば USB が使えると思っていて uhci.ko とかロードしていないために USB 接続の HDD が認識しなかったのねぇ。という感じなのでありましたf(^^;;。

最後にですが、ONKYO ND-S1 は USB バスパワーでも動作します。サウンドカードとして利用する分には AC アダプタは必要ありませんでした。 iPhone3G を接続した時に充電するためには AC アダプタが無いと充電できません。なので、実質的には AC アダプタは必要になるかと思うんですけどねぇ。

さてと。これで FreeBSD からもデジタル出力でオーディオ機器に対して音が出るようになったということですね。DVD を mplayer で見た時、5.1 チャンネルで音が出るようになるのかなぁ?だとしたらそれはそれで凄いことだけど;-)。 snd_uaodio.ko はどうなっているんだっけかなぁ。

6月 202010
 

オンキョーの CR-D2+D-D2E と言う組み合わせのミニコンポを購入しました。そして、その後に ND-S1 と言う PC と USB で接続できる iPod ドック付きのデジタルメディアトランスポートを購入しました。

音響機材としての感想などについては以下の URL に書いたのでそちらを参照して頂ければと思います。

ここでは ND-S1 を PC のパーツとして利用した場合にどんな感じか、ちょっとまとめてみたいと思います。

まず、ND-S1 と言うデバイス、PC からすると「サウンドカード」と言う扱いになります。USB 接続の外付けサウンドデバイス。 PC に接続すると USB Audio DAC として認識するので Windows・MacOSX・FreeBSD の全てでサクっとデバイスとして認識します(筆者の自宅に Linux は存在しない;-)。

まず、Windows についてですが、簡単に書いておきます。 Windows7 Ultimate x64 に接続するとサクッと認識します。後はコントロールパネルのサウンド設定で出力先を ND-S1 に向けてあげるだけで Windows Media Player や iTunes で音が出ます。また、 iTunes では iPod と Sync も行えます。

MacOSX は製品のカタログでは対応外の OS となっているのですが、こちらも Windows7 と同じくサクッと認識します。

usbdac_1.jpg

これが認識した瞬間ですね。後は iTunes の音も出るし、システム全体の音もステレオに飛ぶようになります。当然 iPod との Sync も行えるのであります。

さてと。ここまで二つの OS でサクッと認識したので、では今回の本命の OS である FreeBSD はどうだ?と言うことで、FreeBSD/amd64 7.3-STABLE に接続してみました。

uhub6: <vendor 0x0409 product 0x005a, class 9/0, rev 2.00/1.00, addr 3> on uhub5
uhub6: single transaction translator
uhub6: 2 ports with 2 removable, self powered
ugen1: <Burr-Brown from TI USB Audio DAC, class 0/0, rev 1.10/1.00, addr 4> on uhub6

 
一発目。USB ポートに接続したら、あれま。 ugen0 に落ちてしまいました。カーネルモジュールをロードしよう。と言うことで /boot/kernel を眺めるとそれらしいのは snd_uaudio.ko くらいしか見あたらないのでそれをロードしてから再度接続すると。おぉ。pcm として認識しましたね。

uaudio0:  <NBurr-Brown from TI USB Audio DAC, class 0/0, rev 1.10/1.00, addr 4k> on uhub6
uaudio0: audio rev 1.00
pcm4:  <NUSB Audiok> on uaudio0

 
cat /dev/sndstat してみると以下のような感じ。

$ cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2007061600/amd64)
Installed devices:
pcm0:  <NHDA ATI R6xx HDMI PCM #0 HDMIk> at cad 0 nid 1 on hdac0 kld snd_hda
pcm1:  <NHDA Realtek ALC883 PCM #0 Analogk> at cad 0 nid 1 on hdac1 kld snd_hda
pcm2:  <NHDA Realtek ALC883 PCM #1 Analogk> at cad 0 nid 1 on hdac1 kld snd_hda
pcm3:  <NHDA Realtek ALC883 PCM #2 Digitalk> at cad 0 nid 1 on hdac1 kld snd_hda
pcm4:  <NUSB Audiok> at ? kld snd_uaudio [GIANT] (1p:1v/0r:0v channels default)
mode 1:(output) 2ch, 16/16bit, pcm, 32000,44100,48000Hz
mode 2:(output) 1ch, 16/16bit, pcm, 32000,44100,48000Hz

 
おぉ。pcm4 で USB Audio DAC な機器として認識したようです(Realtek ALC883 PCM は長すぎるので後ろの文字列を消しています。今回重要なのは pcm4 になります)。これはすばらしいっ!!

それにしてもこの ND-S1 と言う機器は出力用にコンポジットデジタルとオプティカル光デジタル出力があるので output は二系統あります。そんでもって input は持っていないと言うことが解ります。

これが悲しいのよねぇ。ミニコンポから光デジタル出力して ND-S1 にデジタル入力があったとしたら PC 側でデジタル録音できたのにねぇ。それができない。フツーの PC 用サウンドカードではない。ということが良く分かります。

話を戻しますが、FreeBSD ではここからが泥沼です。まず、デジタル出力のチャンネルが二系統あるのですが、僕は「どっちかの出力チャンネルを指定する」コマンドなり設定を見つけることができませんでした。なので、オプティカル光ケーブルで接続しているほうを優先的に利用することができないので実際に正常に音が出ているのか確認できないのであります。orz。Windows とか MacOSX はどうやって判断しているのだろう・・。

ちなみに sysctl の hw.snd MIB ではそれらしいのを見つけることができませんでした。

けどもまぁ、気を取り直してとりあえず CD でも聞いてみましょう。あれ・・。音が出ない・・。
じゃあ mplayer で mp3 でも聞いてみましょう。あれ・・。音が出ない・・。
それなら dolphin (KDE4 付属のメディアプレーヤー)で動画でも見てみましょう。あれ・・。音が出ない・・。

orz。つまりは全滅。と言う感じなんですね。あげくの果てにはなにやら怪しげなログを出力しているようです。

kernel: pcm4:virtual:dsp4.vp0: play interrupt timeout, channel dead
kernel: usb5: *** WARNING: opening low/full speed device, this does not work yet.
pcm4:virtual:dsp4.vp0: play interrupt timeout, channel dead
kernel: usb5: *** WARNING: opening low/full speed device, this does not work yet.

 
USB HUB が悪さしていて USB の速度が出ないよ。的なメッセージなんですかね。けど、PC の USB ポートに直接接続したので特に問題は無いのではないかと思えるんですけど・・。また、同一 PC でマルチブートする Windows7 は同じ構成で無事に動作したし。

ちなみにこのメッセージが出力される部分がどこか、一応ソースを眺めたのですが、sys/dev/usb/ の
ehci.c と uhci.c だったので snd_uaoudio 側ではなく、USB 側の問題であろうと言う感じはします。時間ができたらじっくりとソースを眺めてみたいとは思いますが・・。

とまぁ、そんな感じで ONKYO ND-S1 を購入したのですが、ネタ的には音響機器・PC のデバイスと色々な角度から見てネタができて良かったです。

まぁ、FreeBSD で動作して本当に嬉しい?と言われれば何ともいえないのですけどね。 iPhone3G や iTunes での音楽の管理は 全て MacOSX 上で行っているので MacOSX に接続して、そこで動作すれば良いやー。となってしまうのでありますが;-)。

つづきを別のエントリーとして書きました。以下になります。

ONKYO ND-S1 と FreeBSD 8.1-PRERELEASE。

6月 182010
 

今年の初めあたりに「virtualbox-ose-3.1.2 を X11 無しで利用する。」というエントリーを書いたのですが、FreeBSD の ports の VirtualBox も今はバージョンが virtualbox-ose-3.2.4 というものになりました。

ports から make すると、make config で VNC がサポートされたことが解ります。つまり、X11 無しのサーバ上で VirtualBox を起動して VNC で接続すれば Windows でもラクチンに運用できる。ということですね。

先に起動方法を書いてしまいます。ports から emulators/virtualbox-ose をインストールしますが、 make config で WITH_VNC=true だけ指定して make install します。後は「virtualbox-ose-3.1.2 を X11 無しで利用する。」のエントリーで書いたコマンドを順番に実行していけば良いだけです。

が、コマンドオプションをちょっとだけ追加してみましょう。

$ VBoxHeadless -s "WindowsServer 2008 R2 EPE x64"  -n -m 12345

 
“-n” は VNC を使いますよー。ってオプションで “-m” は VNC で接続する時のポート番号ですよー。ってオプションです。

僕は自宅で動作している FreeBSD のサーバ上に virtualbox-ose-3.2.4 をインストールして、上記コマンドを実行したのでありました。

後は手元のデスクトップから VNC クライアントで vnc://server:12345 と接続すると、WindowsServer が起動する所から確認することができるのでありました;-)。

ちなみに、今回は Windows7 Ultimate x64 上で動作している VirtualBox にインストールした WindowsServer 2008 R2 EPE x64 を FreeBSD/amd64 7.3-STABLE 上に持っていって起動しました。
あ。FreeBSD/amd64 上で VirtualBox を起動させるためにはカーネルの設定ファイルに options COMPAT_IA32 が必要です。カーネルの再構築が必要ななります。

Windows7 上の \ユーザ\takachan\.VirtualBox\ を samba 経由でサーバ上に ~/.VirtualBox/ としてコピーしました。サーバ上ではパーミッションを直した後に以下のファイルを手で編集します。

  • ~/.VirtualBox/VirtualBox.xml
  • ~/.VirtualBox/Machines/WindowsServer 2008 R2 EPE x64/WindowsServer 2008 R2 EPE x64.xml

上の xml ファイルは VirtualBox 自体の設定を行う XML ファイルです。パスなどに “\” などが入っていたら “/” に書き直してあげる必要があります。

下のファイルは OS の設定用 XML ファイルです。このファイルは手で直すか、VBoxManage で設定するかします。僕の場合、Windows7 のデスクトップ上ではサウンドをオンにしていたのですが、サーバ上ではサウンドをオンにしていないので WindowsServer が起動しなかったため VBoxManage コマンドで –audio off しました。

これで無事に起動しました。後、ネットワーク周りとかでも引っかかったりするのではないかなぁとか思いますが、ダメだったらインストールしなおしてください(^^;;。ちょっとだけ設定ファイルを書いておきます。ネットワークの設定はこんな感じです。

<Network>
<Adapter slot="0" enabled="true" MACAddress="080123858840" cable="true" speed="0" type="82540EM">
<BridgedInterface name="re0"/>
</Adapter>
<Adapter slot="1" enabled="false" MACAddress="080123328902" cable="true" speed="0" type="82540EM"/>
:
<Adapter slot="7" enabled="false" MACAddress="08012319BA1F" cable="true" speed="0" type="82540EM"/>
</Network>

 
これはブリッジの設定ですが 僕は re0 を利用しているのでデバイス名を指定します。 NAT を利用する場合に <NAT/> と書くだけになります。

なんせ、僕は X11 無し版の VirtualBox 上では OS はインストールしたことがありません。前回は デスクトップ機として利用している FreeBSD/amd64 上で稼働する VirtualBox から、今回は Windows7 x64 上で稼働する VirtualBox から OS イメージと設定ファイルを持って来ています;-)。

しかし、自宅の FreeBSD サーバ上に WindowsServer 2008 が動作するようになりました。何のために利用するかですが、まずは SilverLight なサーバでも構築するか。という感じなのですが、自宅内のために AD を起動したりするのも良いかなぁ。などと思っているのであります;-)。がっ!!そーだった。検証目的のインストールなんだったf(^^;;。

あ。一点書いておきます。VNC クライアントで VirtualBox に接続するとマウスが、その動作に対して追随して来ません。実際のポイントとずいぶんとずれてしまうので難儀は必死です。そんな時は Windows 側のマウスの動作を最速にすると良いかと思います。後、Ctrl+Alt+DEL を利用しないようにするにはレジストリを変更する。ってのは書かなくとも良いですよね;-)。

5月 252010
 

ちょっと前のエントリーで「USEN 放送を録音して iPhone で聞く。」ってのを書いたのですが、ようは USEN のチューナからアナログケーブルで PC の LINE-In に接続して録音してみました。ってヤツでした。

しかし、これやっても音が非常に悪いっ!! アナログ特有の「ぶーー」って音が後ろの方で聞こえていたりしてもうダメダメ。なのでアナログ録音することはあきらめました。orz。

するっていと、自宅にやってきた USEN は結局どうるすか?と言うことになるのですが、自作した「USEN SOUND PLANET-i プレイリスト」で今流行の曲を認識して、その曲自体を USEN で聞く。みたいな感じにしか利用できないのであります。

欲しいな。と思う曲があれば iTMS で購入したりするのですが、youtube も検索してみるわけです。ふむー。自分でアナログ録音したのより youtube のほうが音、いいんじゃね?とか思うのでありますが、ここでようやっと clive の出番です(^^;;。

clive とは youtube の動画を自分の PC にダウンロードできるコマンドです。使い方はこんな感じ。-f は保存形式を指定します。 mp4 で保存します。 URL は youtube の動画が見えるページの URL をそのまま指定します。

% clive -f mp4 "http://www.youtube.com/watch?v=77EJiYJG3h0"

 
すると、Flash なのに mp4 ファイルで保存してくれます。すげー。jobs に感化されて Flash キライ(インストールしてない)な人は mplayer とか QuickTime Player で見てください;-)。

FreeBSD の ports では multimedia/clive にあります。make install すればもうばっちし。

しかし、mp4 の動画、サウンドトラックとビデオトラックがあるけどビデオトラックを消して m4a にしたいので、その時は MacOSX 上で GarageBand を利用するので、どうせなら clive もMacOSX 上で動かしたいモノだ。とか思い epkg を作ろうとしたのだけど・・。

うひー。perl のための epkg というのがなくて、ひな形となる Makefile が存在しないみたい。あれれ・・。まぁ、epkg と言うのはユニバーサルバイナリを出力するための「フレームワーク」なわけで perl スクリプトなどはアーキテクチャには依存しないので当然と言えば当然か。

と、言うことでコマンドラインから clive をインストールします。

まず、clive のソースを取って(http://clive.googlecode.com/files/clive-2.2.11.tar.bz2) きて、展開した後に perl Makefile.PL;make;mak einstallします。けど、色々 perl モジュールが足りないぜぃ。と言われるので必要なものをインストールしてあげます。cpan(1) を利用してインストールします(コマンドイメージはこんな感じ % perl -MCPAN -e shell )。必要な perl モジュールは以下になります。

  • Class-Singleton
  • Config-Tiny
  • Getopt-ArgvFile
  • HTML-Parser
  • URI
  • WWW-Curl

cpan からのインストールが終わると、/Library/Perl/5.10.0/ 辺りにインストールされます。その後で再度 clive をインストールすると無事に入るので上記のコマンドをすかさず実行します。実行時に WWW/Curl/Easy.pm が無いと言われたら /var/root/.cpan/build/ の下の WWW-Curl で直接 make install 叩いちゃってください;-)。

clive は以上なのであります。

さて、引き続き、GarageBand についてちょっと書いてみたいと思います。

そもそも iPhone(iPod) で音楽を聴きたいので動画部分は必要ありません。そんな時は GarageBand でビデオトラックを削除して、サウンドトラックのみにしてから保存すれば大丈夫です。

まずは GarageBand を起動してダウンロードした mp4 データを DnD してあげます。すると以下のような感じになるでしょうか。

GarageBand.jpg

左上部分のキャプチャですが、二個並んでいるのがトラックです。上がビデオトラック、下がサウンドトラックです。ビデオトラックをクリックして、メニューから [トラックを削除] を選択すると簡単に m4a(AAC) な音楽ができます。後はこれを iTunes に転送してあげれば良いだけですね。

簡単なのでありました;-)。

などと、GarageBand をいじっているとその機能の多さにちょっと感動します。僕もミュージシャンになって音楽でも作ろうかなぁ。などと思ってしまうのでありました;-)。

ちなみに、著作権についてですが、 USEN 放送を録音して自分で聞く分にはちゃんとシロです。youtube の動画を保存して自分用に聞くのはどうなんだろう? 以前別のブログに書いたのがあるんだけど、こっちは youtube 上からもう既に削除されてしまっています。と、言うことはクロかな?

自己責任でお願いします。

5月 222010
 

以前「emacs-canna の ports。」と言うエントリーで、emacs-23.1+Canna な ports を作りました。と書きましたが、FreeBSD のports-CURRENT の editor/emacs が 23.2 になったみたいなので、 emacs+Canna の ports も23.2 に追随してみました。

以下の URL からダウンロードできます。

http://icmpv6.org/Prog/FreeBSD_ports/ports-emacs232-canna-20100521.tgz

/usr/ports/japanese 辺りで展開して make してください。

ちょっと説明すると、editoe/emacs は make config に対応したみたいなので、config の画面で CANNA を選択できるようにしました。

後、Canna for GNU Emacs23 では emacs-23.1 にしか対応していないので、このパッチを参考にさせて頂いて emacs-23.2 に適用できるように改修しました。emacs-23.2 対応の パッチは以下の URL にあります。Linux 方面の人はこっちのほうが嬉しいですかね;-)。

http://icmpv6.org/Prog/emacs232canna-20100521.patch.gz

と、言うことで自分で書いたモノを、短い時間ですが使ってみても特に問題無くネーテブに Canna で日本語入力ができています。もし良かったら使ってみてください;-)。

さてと。この ports を今後どうするか。と言うのが大きな課題です。一応 make config で CANNA が選択できるようになったので editor/emacs に吸収してもらっても良いかなぁ。とか思っているのですが、そーすると send-pr したり、 ports のメンテナに連絡とったりするかなぁ。

emacs-23.1 の ediotr/emacs は config の画面が出なかったのであれだったんだけど 23.2 の ports は良くできているような気がしないでも無いのでねぇ。今回は連絡取ってみようかなぁ。

と、言うことで Canna での入力を必要としている皆さん。利用した結果のコメントなどいただければ嬉しいです。

5月 122010
 

KDE4 を普段からデスクトップで利用していると、kdepim-4.3.5 なんてのがインストールされることがあります。”PIM” と言うのはそもそも Personal Information Manager/Management の略で利用者個人の情報を管理しています。 kdepim-4.3.5 をインストールすると KMail や KNotes (ポップアップメモ)、KJots (メモ帳) などかインストールされますが、それと一緒に KOrganizer と言うスケジュール管理ツールもインストールされます。

KOrganizer と言うのは MacOSX で言うところの iCal、Windows で言うところのなんだろ? みたいなものです。普段、スケジュールを利用している人は「google カレンダー」を利用している人が多いのではないでしょうか。

僕は MacOSX 使いでもあるのでスケジュールは iCal で管理して iPhone3G と sync しているので特に困ったりはしないのですが、 KDE4 を利用していて google カレンダーを利用している人は「KOrganizer が google カレンダーと同期できたらいいなぁ。」と思ったことのある方、いるのではないでしょうか。

今回は KOrganizer と google カレンダーを同期させてみたいと思います。 gppgle カレンダー側で書いたものを KOrganizer へ、 KOrganizer 側で書いた情報を google カレンダーに反映できるようになります。

さて、それを実現する前に kdepim4 についてちょっと書いておきましょう。kdepim4 をインストールすると、こいつはなんとデータを MySQL で管理するようになります。個人情報を管理するためだけに mysqld が、ログイン直後から起動していると言う、なんかスゲー信じられない現象が、今の KDE4 では起きています。邪道だ・・。orz。

ドキュメントを読んでみると「sqlite3 ではマルチタスクマルチスレッドの動作時にデータの保証ができないので MySQL 使うよ。」みたいなことが書いて有りました。ふむむむ。

さて、話を本題に戻しますが kdepim4 が利用しているデータは MySQL の中に入っていることがこれで解ったかと思うのですが、 google カレンダーの情報も google から取ってきて MySQL の中に突っ込んだら KOrganizer から見えるんでないかい?となります。

kdepim4 で MySQL との窓口(API って言って良いのかなぁ?)となっているのが akonadi というものです。こいつが一手に引き受けていてくれるんですね。でもってこいつについて、もちっと踏み込んで調べてみると FreeBSD の ports として databases/akonadi-googledata と言うのがある。ふむ。なんか名前からして怪しいじゃん;-)。とりあえずこいつを packages/ports からインストールしてしまいましょう;-)。

インストールが完了した時点で準備完了です。それでは設定に移ってみましょうか;-)。まず、akonadi の設定をします。ターミナルから akonadiconsole とコマンドを叩いてみましょう。

akonadi_1.png

そーするとこんな感じのウインドが表示されたと思います。そしたら [+ADD] ボタンを押すともう一個画面が現れます。この画面から Akonadi Google Calendar Resource と Akonadi Google Contacts Resource の二つを追加します。追加すると一覧に表示されるようになるのでそこでクリックすると google カレンダーの ID とパスワードを入力するよに急かされるので入力します。

後は Akonadi を再起動して Akonadi 自体への設定は完了です。

動作は(ソースコードを追ってないので)良く分からないのですが、MySQL と情報をやり取りする Akonadi が 今回インストールした二つのリソースで横から google カレンダーをつついてデータを取りに行ったり、データを更新したりするんだ。と言う感じでしょうか。 KOrganizer 的には「おめー、バックグラウンドでやっているんだからエレーよ。」となるんでしょうなぁ;-)。

続いて KOrganizer 側での設定です。こいつは簡単です;-)。KOrganizer を起動すると左下に「カレンダー」と言うメニューがあるかと思います。これの [+] ボタンを押します。

korganizer_1.png

するっていとこんなのが現れるとかと思います。

korganizer_2.png

KOrganizer ってのは色々な所からカレンダーデータを持ってくるモジュールが用意されているのねぇ。などと関心させられますが、使い方はどれもイマイチ解らなかったりしますf(^^;;。その中で「Akonadi (Akonadi のカレンダーフォルダに保存されているカレンダーへのアクセスを提供します)」を選択して OK を押します。そうすると「カレンダー」のメニューに google カレンダーへのアクセスが登録されます。

表示されたら真ん中のボタン「カレンダーの設定を編集」ボタンですね。を押して設定画面を表示します。白枠の中に akonadi_gcal_resource_0 などとあったらそれを選択して [Manage Calendar Sources] ボタンを押します。そこでメニューが出てくるので [追加] ボタンで 先ほど akonadiconsole コマンドで登録した二つのリソースを追加し、編集して google カレンダーの ID とパスワードを設定します。

korganizer_3.png

一応これで作業は完了です。一旦 KOrganizer を再起動してみましょう。再起動後に google カレンダーの情報が表示されるようになりましたか? もしされたら新規にイベントを書き込んでみましょう。約 10 分位後に google カレンダー側に反映されたか確認してみましょう。

もし、ダメな時ですが、先ほどの [Manage Calendar Sources] ボタンを押した時に表示されるウィンドで 緑の丸いののが表示されその横に “Online” と表示されているか何も表示されていない場合には OK です。 “Offline” と表示されている場合には [編集] ボタンを押して再度 ID とパスワードを入力してあげるとオンラインになったりする場合があります。

この辺り、何回も追加・削除・編集をしていたら僕の akonadi_gcal_resource_? は 7 まで行ってしまいましたf(^^;;。

とまぁ、こんな感じで KOrganizer は google カレンダーと同期が取れるようになりました。しかし、本当に使えるかはまだまだ良く分からないです。しばらく使い込んでみたいとですかねぇ。

ってか。皆さんも KDE4 使ってみてください。色々楽しいですよ;-)。

3月 192010
 

前回の「FontBook ライクなフォント表示ツール。」の続きです。

「GUI が欲しいなぁ。」などと README.txt の中に書いているのですが、考えてみたら pango-view.sh ファイルを走らせるシェルスクリプトにフォント名を付けて、それをファイルマネージャからダブルクリックして実行すれば良いだけじゃん。などと、ヒジョーに安直な考えが頭に浮かびました。で、それを実戦したのがこんな感じ;-)。

from_dolhin.png

僕は KDE 使いなので Dolphin を利用しているワケですが、とあるディレクトリに MS_ゴシック.sh と言うファイルを作ってそれをクリックすると pango-view.sh が動作するようにするだけ;-)。こうすることで自分の環境にインストールされているフォント名とその書体が一目瞭然となる;-)。

え? そんなん必要無いって?(^^;;。 デスクトップとして利用していてフォントをたくさん突っ込んでいると書体を確認したい時ってあるのよー。

で、fc-list からフォント名が付いたシェルスクリプトを吐き出すのは perl で書いてしまいました(^^;;。大体こんな感じ。これを cron とかで定期的に実行すればたえず最新のフォントを閲覧できるってわけですね。ってそんなに頻繁にフォントをインストールしないか;-P。

#!/usr/bin/perl
use strict;
my $fc_list_cmd = "/usr/local/bin/fc-list"; my $sort_cmd = "/usr/bin/sort"; my $sh_cmd = "/PATHTO/pango-view.sh"; my $fontsize = 120;
my $command = $fc_list_cmd . "|" . $sort_cmd; open(CMD,"$command|"); while(<CMD>) { s/\\//g; my (@t1) = split(",",$_); my ($fontname,@t2) = split(":",$t1[0]); my $filename = $fontname; $filename =~ s/ /_/g; # print $fontname . "\n";
my $outfile = "./Fonts/" . $filename . ".sh"; open(OUT,">$outfile"); print OUT "#!/bin/sh\n"; print OUT "$sh_cmd \"$fontname\" $fontsize\n"; close(OUT); chmod(0755,$outfile); } close(CMD);
exit 1;

 
けど、僕の中ではかぁなり、フォントの扱いが楽になったんですけど;-)。

あ。pango-view.sh の中身は相対パスから絶対パスに書き換えています。さむないと Dolphin が認識してくれなかった。

3月 182010
 

恥ずかしながら FreeBSD 上で Java なアプリを初めて使う機会に恵まれました。今まで必要性を全く感じなかったのですが、OOo をインストールする時に Java が入るので、java/diablo-jdk16 は入れていたのですけどね。

では、どんなアプリかと言えば、Twitter 用のアプリなのですが「なにかないかなぁ?」と思い探していたら PeraPeraPrv と言うのを見つけました。まず先に MacOSX にインストールしたんだけど、それとは別に Java で書かれているので FreeBSD でも動作するらしいのであります。

と、言うことで早速試してみました。とはいいつつ、僕は Java については全くと言っていいほど解らない。とりあえず P3_4_18 をダウンロードして起動してみました。おぉっ!!

javaApp_1.png

無事に起動しましたが、文字化けしている模様です。けど、MacOSX 版で大体の場所を把握していたのでフォントの設定を先にします。すると、無事にアンチエイリアスが有効になって表示されたのでありました。パチパチパチ。 Java って pango とか cairo をリンクしているのかな?

後、起動中は KDE のパネルのシステムトレイにちゃんと乗っかってくれるのも嬉しいかなぁ;-)。

javaApp_2.png

細かい話を少々しますと、PeraPeraPrv の設定ウィンドでは「表示」タブに “GTK の Look and Feel を使用する” ってチェックボックスがあるんだけど、僕は(KDE4 上で使用する) GTK の Look and Feel はあまり好きではないのでチェックを外てみました。そしたら今度はピュア Java な環境で文字を表示するようになったのかな? 見事に文字化けしてしまいました。けど Look and Feel は美しいのよ;-)。

なので、以下のコマンドを打ってみました。

# cd /usr/local/diablo-jdk1.6.0/jre/lib/fonts
# ln -s /usr/local/lib/X11/fonts/FONTDIR fallback

 
そしたらメニューの部分は Java 側がフォントを表示してくれるようになりました(よく分からないのですが、そー言うことですよね?)。アプリケーション自体は設定ウィンドの「フォント」タブから指定したものが有効になっています。

後は、起動ファイル(と言うか、起動用のスクリプト)を書いて KDE4 のメニューに登録して作業は完了。って感じなのでありました。

いやぁ。本当に FreeBSD で Java が動作するんですねぇ。嬉しいですねぇ。

それにしても、これなら ports にできそうだぞぉ;-)。