月曜日 5 26, 2008

Mac OS X 10.4.11でSony GPS-CS1Kを使えるようにする

愛用のGPSロガーSony GPS-CS1K。以前書いたMac OS XをLeopard(10.5.2)からTiger(10.4.11)へダウングレードした理由の一つにこのデバイスがLeopardでは使えないことがあります。GPS-CS1は通常のUSB Massストレージデバイスなのですが、どうもMac OS Xのドライバとの相性が悪いらしく、利用できるOSのバージョンがMac OS X 10.4.9〜10.4.10のIntel Mac (および10.4.8のMac Pro)でしか利用可能な実績がありません。これに困っている人は多いようで、ググルと山ほど似たような症状を抱えた人のブログが引っかかります。
_DSC6619-D
これは海外でも同様で、いろんなフォーラムやブログで日本と同様に困った困ったとの記事がヒットします。その中でも最もメジャーなワークアラウンドがSony GPS-CS1 for Mac (macgpscs1.blogspot.com)というサイトのワークアラウンドです。結構強引な方法なので当然サポート外な方法なんですが、サポート外でも何でもとりあえず使えるならと祈る気持ちで・・。今回の問題はGPS-CS1をハンドルすべきIOUSBMassStorageClass.kextというドライバのバージョンにあります。いろいろ情報をまとめてみると次のような感じです。IOUSBMassStorageClass.kextはMac OS Xのオープンソース部分Darwinに含まれているのでそれぞれソースコードを参照することができます。
_DSC6622-D
ソースコードのdiffをとったりしてみましたが、どうも設定で回避できるような感じでもなく、どこかの分岐ブロックで機嫌が悪くなってしまっているようです。USBドライバどころかカーネルエクステンション自体、デバッグどころかビルドしたことさえないので、ちょっとこの先は手が出せそうにありません。仕方なく、先ほどのmacgpscs1.blogspot.comに紹介されていた手法でワークアラウンドを試しました。
  1. Mac OS X 10.4.10のコンボアップデートのdmgをとってくる
  2. USBデバイスを念のためとりあえず全部はずす、よけいなアプリは終了しておく
  3. IOUSBMassStorageClassをkextunloadする・・、つもりが、できないのでそのまま強行。
  4. 既存の /System/Library/Extensions/IOUSBMassStorageClass.kextを名前を変えたり、移動したりする。
  5. Pacifistというツールで10.4.10のコンボアップデートdmgからIOUSBMassStorageClass.kextを取り出して /System/Library/Extensionsにおく
  6. sudo touch /System/Library/Extensions
  7. リブート
これで無事、Sony GPS-CS1Kにつながりました。ひょっとしたらLeopardでも同様にIOUSBMassStorageClass.kextをv149.0.6とかに変えてやれば動作するかもしれませんが、v1xxからv2xxへとメジャーバージョンアップしていることなどを考慮すれば、かなり危険なチャレンジになりそうなのでやめておいた方がいいでしょう。

金曜日 5 23, 2008

Apreture 2.1が起動できない・・。原因不明のエラー 9

Apretureクラッシュ
この間から原因不明のエラー9というのが出たまま、Aperture 2.1が起動できなくなってしまいました。これは困った・・・。ライブラリの中のPreferencesやApplication SupportのAperture関連のものを消してもだめ。ほかのアプリを全部止めてからやってもだめ。再起動してもだめ。困った・・・。

木曜日 5 22, 2008

HudsonをMacのデスクトップに, その2

この間Macアプリ化してみた継続インテグレーションツールのHudsonですが、ようやく実行中の三角マークが出るようにできました。やり方はとっても簡単でした。
running hudson
HudsonにはJava Web Start版のHudsonがあるのですが、Java Web Start版ではグラフィカルなコンソールが立ち上がってそこにログが出力されます。このコンソールのメインクラスを読んであげるようにすればいいだけです。コマンドライン版のメインクラスがパッケージなしのMainだったのに対し、こちらはJNLPMainという名前のクラスです。
hudson gui
あとせっかくなので、最新の1.218をベースにdmg形式のパッケージも作ってみました。
Disk image for Hudson.app
欲しい方はこちらからダウンロードしてみてください。

土曜日 5 17, 2008

Mac OS X 10.5(Leopard)からOS X 10.4(Tiger)へ

img2008-043
自宅のパソコンがずいぶん調子が悪くなってしまい、ブラウザも頻繁にフリーズするし、PhotoshopやIllustrator、NetBeansを使ったりしているとみるみる機嫌が悪くなる。もともとLeopardを入れるときにはクリーンインストールではなくて、アップグレードインストールしていたのでいろいろおかしなデータが残っていたりしたはずで、その辺が原因のような気もしなくはないので、Leopardをクリーンインストールするという選択肢もあったのですが、いくつかの都合でまずはTigerにダウングレードすることにしました。
img2008-045
一つ目の理由はJava for Mac OS X 10.5 Update 1が手元のマシンでは使えないことです。どういう訳かAppleからリリースされているJava SE 6は64-bit版のみ。うちのパソコンはCPUがIntel Core Duo 1.8GHzというタイプで、32-bit CPUです。このため64ビットアプリケーションは動作しません。おかげでJava SE 6の選択肢が未だにSoyLatteしかありません。
img2008-055
次の理由はSonyのGPSロガー GPS-CS1Kがマウントできないためです。GPS-CS1KはもともとWindows用ですから、Macで使えないことに対してとやかく言うこともできないのですが、買ってしまった以上使えなくなってしまうと困ったことに・・・。Leopardにあげてから半年以上、GPSのログは参照できないままになっていました。これについては実はOS X 10.4.11でも実は解決できないのですが、それについてはまた別途。
img2008-072
3つ目の理由は、Leopardであることに対してそれほど執着するほど必要な機能がないことでした。Leopardの新機能で紹介されている中で、ないと困る機能は日本語辞書ぐらいでしょうか。それにQuickLookも捨てがたいですが、もともとプレビューが高速に動作するのでそれほど気になりません。Spacesは、個人的にはあまり使わない機能で、SolarisやLinuxなどでは昔から装備されていますがほとんど使ったことはありませんでした。また、Spacesになってからも同様に滅多に使いませんでした。
img2008-070
以上のような理由から、いったんTigerで様子を見ることにしました。いれかえてからだいたい10日ほど経ちましたがかなり快適になりました。快適になった理由が再インストールによるものであることは間違いありませんが、まだTigerに変えたことが理由かどうかまではわかりません。次のような点でずいぶん快適になりました。
  • ペンタブレット Wacom Intuos 3の調子が良くなった。今までは頻繁にペンを認識しなくなり、ほとんど使い物にならない状況でしたが、再インストール後にはそのようなことはなくなりました。
  • アプリケーションが快適に動くようになった。IllustratorやPhotoshopなどの重量級アプリもレスポンスが極度に悪くなることはほとんどなくなりました。
  • スリープからの復帰が早くなった。これも原因が何だったかわかりませんが、スリープからの復帰が以前はものすごく時間がかかっていたものが、今はかなりスムーズです。
  • Sony GPS-CS1Kを再びマウントできるようになった。
img2008-073
あと、せっかく再インストールをしたのでインストール時の設定メモを。いまさらTiger用の設定なのであまり参考にならないと思いますが・・。

インストール直後の設定

  • ユーザ登録の情報画面: 自分の個人情報をPCに入れる必要は特にないのでCommand-Qでスキップ。
  • ユーザ名の入力: ユーザ名はアルファベットで入れたいのと、うちはUSキーボードなので Cmd+Shift+; でアルファベット入力モードに。

システム環境の設定

  • DashboardとExpose: スクリーンセーバーのホットスポットを設定
  • キーボードとマウス: キーボード: 装飾キーで、Caps lock を Ctrlへ変更。
    トラックパッド: 副ボタンのクリックの代わりにトラックパッドに2本指をふれて。
    突発的なトラックパッドへの入力を無視: disabled
    キーボードショートカット: Spotlight検索フィールドを表示する、を無効化
  • アピアランス: 最近使った項目の数 を��んぶなしに。
  • デスクトップとスクリーンセーバ: スクリーンセーバを開始: 10分
  • 日付と時間: NTPの設定
    曜日の表示をオフ
  • セキュリティー
    • スクリーンセーバーから復帰時のパスワード設定: enabled
    • 自動ログインを使用不可にする: enabled
    • 保護されたシステム環境設定をそれぞれロック解除するのにパスワードを要求 する: enabled
    • 安全な仮想メモリの使用: enabled
  • 共有: コンピュータ名の設定と、ファイアウォール On
  • アカウント: ログイン項目
    • ログイン時の表示: 名前とパスワード
    • パスワードのヒントを表示: off
  • ネットワーク: ネットワークポート設定
    • Bluetooth: off
    • 内蔵FireWire: off
  • QuickTime: ディスクキャッシュに保存: off
  • 省エネルギー: オプション: Ethernetネットワーク管理者のアクセスによってスリープを解除: disabled

QuickTime

  • 一般設定: 最近使った項目の数: なし

Safari

  • 一般: ダウンロードリスト項目から取り除く: ダウンロードが成功したとき
  • 表示: フォント: 小塚ゴシック Pro 16
  • 自動入力: すべてオフ
PDFをSafari内で開かないようにする。
$ defaults write com.apple.Safari WebKitOmitPDFSupport -bool true

Terminal.app

  • カーソルの形状 |
  • アンチエイリアス処理を行う
  • フォント: Osaka-等幅 14.0pt
  • 文字セットエンコーディング: UTF-8 (default)
  • カラー: 黒地に白
  • 透明度を設定

Bonjour (旧 Rendezvous)

オフにする。
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Spotlight

ディスク全体は検索対象としない。
$ sudo mdutil -i off /

Firefox

  • 一般: ダウンロード:" すべてのダウンロードが完了したら閉じる
  • プライバシー:
    • Webページのフォームや検索バーに入力した内容を記憶する: off
    • ダウンロードしたファイルを記憶する: off
    • Firefoxの終了時にプライバシー情報を消去する: on
    • プライバシー情報を消去する前に確認する: off
  • フィード: 次のフィードリーダーを使用して購読する: Google
  • セキュリティ: サイトのパスワードを記憶する: off
  • about:config
    view_source.wrap_long_lines: true

その他

ネットワーク上には.DS_Storeを作らせない。
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores true
ファームウエアパスワードの設定。 Mac OS X Install Disc 1にはいっている「/Applications/Utilities/ファームウエアパスワードの設定」で設定。

月曜日 5 12, 2008

HudsonをMacのデスクトップに

継続的インテグレーションツールでDuke's Choice Awardにも選ばれたHudsonを久しぶりに使っています。使い方は川口さんによる特集記事が技術評論社のページで読めますので、そちらを参考にしていただくこととして、今回はHudsonにちょっと工夫のお話です。
最近、原稿を書くのに8年ぶりにpLaTeXを使っています。といっても、原稿自体は普通のプレーンテキストなんですが、図表の確認のためにpLaTeXを使ってプレビューしています。プレーンテキストをRubyのスクリプトでTeXのソースにして、TeXでコンパイルして、dvipdfmxでPDFにするという作業。まあ、シェルスクリプトにしてあるので、それらの呼び出しが面倒くさいということもないのですが、原稿のバージョン管理をRCSからSubversionにすることにしたので、ついでにこれらのコンパイルもHudson化してやろうとの魂胆です。
さて、HudsonからはSubversionの更新をポーリングしてもらってシェルスクリプトを起動してもらうだけの設定ですから、とても簡単なんですが、コンパイルが自動化されたことによってターミナルを開く必要がなくなりました。そうすると、わざわざHudsonを起動するがためにターミナルを開くのもおっくうだ、という思考になぜかたどり着きMac用の単独アプリとしてラッピングすることにしました。Mac OS Xには開発ツール(Xcode)を入れると、/Developer/Applications/Java Tools/Jar Bundler.appというJarをラッピングしてMacアプリとしてパッケージングしてくれるツールがありますのでそれを使います。
Making of Hudson.app
その前にアイコンを作ります。hudson.warを展開するとimages/hudson.xcfというGIMP用のイメージファイルが出てきますので、オーバーレイレイヤを取り除いて、あとは背景を透明にしたpngファイルなんかを適当に作ります。次に、Mac用のアイコンを作るのですが、同じく開発ツール(Xcode)に/Developer/Applications/Utilities/Icon Composer.appというのがついてきます。これに画像ファイルをドラッグ&ドロップしてやればアイコンが出来上がります。アイコンの使われ方でいくつかサイズが違うのがありますのでそれぞれに同じ画像をドラッグ&ドロップ。48x48、32x32、16x16の所は元画像に透明属性があれば自動的にマスクを作ってくれます。
Making of Hudson.app
次にJar Bundlerでパッケージングします。Jar Bundlerはhudson.warをそのままではjarファイルだと認識してくれないので、hudson.warをhudson.jarに改名しておいてクラスパスに入れてやります。
Making of Hudson.app
あとはメインのクラス「Main」を設定したり、作ったアイコンを選択したりしてCreate Applicationとやればオッケーです。
Making of Hudson.app
できました。
Making of Hudson.app
Dockに入ったHudson。起動してみるといつものようにアイコンがぴょんぴょんはねながら起動してくれます。ところが、起動が完了しても起動中を示す三角マークが出ません orz
ログをみる限り、起動しているし、8080ポートにつなぐと正常に稼働しています。
Making of Hudson.app
どうやら応答がないと判断されてしまったようです。GUIをたてないとだめなのかなあ。まあ、個人的に実用上困らないのでこのままでいいような気も・・・。強制終了をするときちんとハンドラが動いて、HTTPサーバが停止しているのがコンソールのログで確認できます。
ということで、デスクトップにHudsonさんをおいてみましたが、ちょっと微妙な感じで終わりました。ちゃんと三角マークがでたりするように暇ができたら改造してみます。

OpenSolaris 2008.05をParallels on Macに入れてみた

JavaOneでリリースが発表されたOpenSolaris 2008.05ですが、VirtualBoxやVMware上にインストールされた例はすでにたくさんあるので、手元にあるParallels for Macに入れてみました。
OpenSolaris 2008.05 on Parallels on Mac OS X
UbuntuのようにLiveCDでブートします(おそらく、しばらくはOpenSolarisの説明をするとき「Ubuntuのように」がよく利用されるようになるでしょう)。ロゴがかっこいいですね〜。背景も、NetBeans壁紙みたいに幻想的な感じです。
OpenSolaris 2008.05 on Parallels on Mac OS X
ブートすると最初にキーボードのタイプを聞いてきます。贅沢を言えばもう少しここはグラフィカルになってほしいですね。UbuntuだとグラフィカルUIがあって、しかもタイピングを試せます。とりあえず手元のキーボードはUSキーボードなのでそのまま続行します。一般的な日本語キーボードを使われている方は18番ですね。17番と紛らわしいですが、17番はSunのType 6キーボードのことです。
OpenSolaris 2008.05 on Parallels on Mac OS X
次はデスクトップで使用する言語です。これもUbuntuだとGUIで選べて、しかも現地語で表示されます。次回以降のリリースに期待ですね。今回は日本語を使いたいので7を選択します。
OpenSolaris 2008.05 on Parallels on Mac OS X
この二つの選択をすると、あとはX11が起動し、グラフィカルインタフェースで作業ができます。
OpenSolaris 2008.05 on Parallels on Mac OS X
左側にアイコンがいくつか並んでいて、OpenSolarisをインストールするというのがあるので、これをクリックしてインストールを始めます。ここはSolaris 10を手元のLaptop PCやデスクトップPCにインストールされたことのある方であれば、劇的な違いを感じられるところだと思います。
OpenSolaris 2008.05 on Parallels on Mac OS X
ようこそ。
OpenSolaris 2008.05 on Parallels on Mac OS X
使用するディスクのパーティションを決めます。
OpenSolaris 2008.05 on Parallels on Mac OS X
次にタイムゾーンを設定します。地図から選べるのでずいぶん楽ですね。
OpenSolaris 2008.05 on Parallels on Mac OS X
次に使用するロケールを設定します。ここはコマンドラインで聞いてきたやつを再利用してほしいところですね(どちらかというと、コマンドラインで聞いてくれるのがなくなればそれでいいですが)。
OpenSolaris 2008.05 on Parallels on Mac OS X
次は管理者(root)のパスワードと、一般ユーザアカウントの作成です。
OpenSolaris 2008.05 on Parallels on Mac OS X
最後に設定の確認です。問題なければインストールを始めましょう。
OpenSolaris 2008.05 on Parallels on Mac OS X
このようなプログレスバーがでてインストールが進みます。すいません、途中で目を離したのでどれぐらいで終わったかわかりませんでした・・・。
OpenSolaris 2008.05 on Parallels on Mac OS X
完了したらリブートします。
OpenSolaris 2008.05 on Parallels on Mac OS X
リブートしたらログイン画面が出ます。はい、無事にインストールできました。昔と比べてこういうのって、全然手こずらなくなりましたよね。いいことなんですが少し寂しい気も・・。

水曜日 3 26, 2008

MacのDictionary.appにSun Glossとか、ResourceBundleから作った独自辞書を追加する

GlassFishとか、NetBeansなんかは仕事柄、日本語版が出る前から評価しています。そうすると、マニアックな機能なんかは英語版での経験のほうが長くて、日本語版でなんだっけ?この機能名称。なんてことがしばしばあります。自分で使うだけなら別に気にしなくていいんですが、ブログに書いたりプレゼンテーションに機能名称の説明を書いたりする場合にはなるべく、本当に画面に表示される名前を使いたいわけです。
今までは手作業でやっていましたが、少し前に英辞郎をMacについてくる辞書アプリDictionary.appで使えるようにしたときにDictionary.app向けの独自辞書の作り方を覚えたので、まずSunの用語集 Sun Glossの辞書を作ってみました。こんな感じ。
SunGloss for Dictionary.app
Sun GlossのDictionary.app用辞書はこちらに公開しておきます。 ダウンロードして、解凍した物をホームディレクトリ以下にある「ライブラリ」ディレクトリ以下に、「Dictionaries」というディレクトリがなければ作り、そこに置いてDictionary.appを再起動すれば終わりです。
これだけでもずいぶん個人的には便利になったんですが、GlassFishの管理画面など実際の画面に出るキーワードの対応表も欲しくなってきたので、GlassFish v2ur1からResourceBundleのファイルを取り出して、同じkeyを持つ日本語と英語のメッセージ対応を見れるようになればずいぶん便利だろうということで、こちらもスクリプトを作って作成。
GlassFish glossary from ResourceBundles for Dictionary.app
Sun Java System Application Server 9.1ur1マルチリンガル版のResourceBundleから作った物ですが、これも同じく公開しておきます。 これらの作り方も簡単にメモ程度ですがご紹介しておきます。なお、本当にメモ程度なので動かない!などご連絡いただいても対応できない可能性大ですのでご了承ください。
  1. Xcodeをインストールしておく
  2. /Developer/Examples/Dictionary Development Kit/project_templatesディレクトリ以下をどこかに名前を変えてコピー
  3. MakefileのDICT_NAME変数をつくりたい辞書の名前に適当にかえておく
  4. MyInfo.plistのCFBundleIdentifierとか、CFBundleName、DCSDictionaryCopyrightあたりを適当にかえておく。
  5. 辞書データをMyDictionary.xmlとして作成(後述)
  6. あとは make && make installして辞書を作って、インストール。
  7. Dictionary.appを再起動
という手順です。意外と簡単。MyDictionary.xmlに必要とされる書式も凝ったことをしなければ難しくないのでスクリプトも簡単。

タブ区切りのフラットファイルからMyDictionary.xmlを作る

これは割と簡単。以前、ちょっとしたスクリプトを書くときにもなるべくRubyを使うようにしていますなんて書いていたのに最近、プログラムどころかスクリプトさえも書かなくなってしまい、Ruby文法とかかなり忘れてしまっており、今回はずるをしてPerlのスクリプト。っていうかPerlすら怪しくなっています。忘れるスピードのはやいこと早いこと・・・(涙)
#/usr/bin/perl

print <<"__XML__";
<?xml version="1.0" encoding="UTF-8"?>
<d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
__XML__

undef %idtable;

while (<>) {
  chmop;
  $_ =~ s/&/&/g;
  $_ =~ s/</≷/g;
  $_ =~ s/>/</g;
  $_ =~ s/"/"/g;

  ($word, $jpn, $description) = split(/\\t/, $_);

  $id = $word;
  $id =~ s/ /_/g;

  if ($idtable{$id}) {
     $idtable{$id}++;
     $id .= "_$idtable{$id}";
  }
  $idtable{$id}++;

  print <<"__XML__";  
<d:entry id="$id" d:title="$word">
	<d:index d:value="$word"/>
	<h1>$word</h1>
	<p>
        $jpn
        </p>
	<p>
        $description
	</p>
</d:entry>
__XML__
}

print <<__XML__;
</d:dictionary>
__XML__
ちなみにタブ区切りのテキストは「英語 \\t 日本語 \\t 解説」の順番に並んでいると想定したスクリプトです。他の並びの場合とか、区切りがタブじゃないばあいには適当にいじってください (\^\^;;
これを perl convert.pl < 元ファイル.txt > MyDictionary.xml みたいにすればオッケーです。

ResourceBundleからMyDictionary.xmlを作る

つぎはResourceBundleから作る例です。今回はGlassFish用ですが、意外とこれ、他のプロジェクト用に作っても便利かもしれませんね。多国語対応されているようなプログラムのドキュメント担当の方にはお勧めです。GlassFishのように大きなソフトウエアの場合は、いろんなjarファイルにResourceBundleファイルが分散しているのと、パッケージ名(つまりファイルのあるディレクトリ)も気にする必要があります。とりあえずそれらをまとめてMyDictionary.xmlに作り上げるスクリプトを二つ作りました。
まずは、日本語のResourceBundleファイル(\*_ja.propertiesを想定。_ja_JPとか他のバリエーションのときはスクリプトを直接いじっちゃってください)の相対パスを渡してやると相対パスをパッケージ名と見立てて、メッセージのキーに付け加えて英語/日本語の辞書を作るようなPerlスクリプトです。なお、ResourceBundleの中身次第では結構辞書を作るmakeのときにエラーが出たりするのですが、それらは一つずつつぶすしかないです orz。あ、あとXMLなResourceBundleには対応していません。
#!/usr/bin/perl

print <<__XML__;
<?xml version="1.0" encoding="UTF-8"?>
<d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
__XML__


foreach $fileja (@ARGV) {
  $fileen = $fileja;
  $fileen =~ s/_ja//;

  %bundlesja = read_bundle($fileja);
  %bundlesen = read_bundle($fileen);

  foreach $id (keys %bundlesja) {
    $en = escape_xml($bundlesen{$id});
    $ja = escape_xml($bundlesja{$id});

    next if ($ja eq '' || $en eq '');
    next if (length($ja) > 128 || length($en) > 128);
    next if ($en =~ /Usage:/);

    if ($idhistory{$id}) {
      $idhistory{$id}++;
      $id .= "_$idhistory{$id}";
    }
    $idhistory{$id}++;

    print <<"__XML__";
<d:entry id="$id.en" d:title="$ja">
        <d:index d:value="$en"/>
        <h1>$ja</h1>
        <p>
        $id
        </p>
</d:entry>
<d:entry id="$id.ja" d:title="$en">
        <d:index d:value="$ja"/>
        <h1>$en</h1>
        <p>
        $id
        </p>
</d:entry>
__XML__
  }
}

print <<__XML__;
</d:dictionary>
__XML__

sub escape_xml {
  my ($txt) = @_;

  $txt =~ s/&/&/g;
  $txt =~ s/"/"/g;
  $txt =~ s/</</g;
  $txt =~ s/>/>/g;
  
  return $txt;
}

sub read_bundle {
  my ($file) = @_;
  my $line;
  my %bundles;
  my $package_name;

  $package_name = `dirname $file`;
  $package_name =~ s/\\n//;
  $package_name =~ s/\^\\.\\///;
  $package_name =~ s/\\//\\./g;

  open FILE, $file;

  undef $line;
  undef %bundles;
 
  while (<FILE>) {
    chomp;
    next if ($_ =~ /\^#/);
    $_ =~ s/\^\\s\*//;
    if ($_ =~ /\\\\$/) {
      $_ =~ s/\\\\$//;
      $line .= $_;
      next;
    }

    $line .= $_;

    my ($key, $value) = split(/=/, $line);

    $key =~ s/\^\\s\*//;
    $key =~ s/\\s\*$//;
    $key =~ s/\\"//g;
    $key =~ s/,//g;
    $value =~ s/\\n/ /g;
    $value =~ s/\^\\s\*//;
    $value =~ s/\\s\*$//;

    $bundles{"$package_name.$key"} = $value;

    undef $line;
  }

  close FILE;

  return %bundles;
}
あとは、いっぱいあるファイルからResourceBundleを取り出して、上記のPerlスクリプト(makebundledic.pl)を流し込むシェルスクリプトです。GlassFishを想定しているのでAS_HOMEにGlassFishのインストールディレクトリを指定します。あ、ちなみにこれは本当にメモで、動作確認していません・・。
#!/bin/sh

AS_HOME=~/Applications/glassfish-v2ur1-ml
TOOL_HOME=`pwd`
WORKINGDIR=./bundles

rm -fr $WORKINGDIR
mkdir $WORKINGDIR


cd $WORKINGDIR

for i in `find $AS_HOME/lib -name \\\*.jar`; do
  unzip -n $i \\\*.properties
done

perl $TOOLHOME/makebundledic.pl `find . -name \\\*_ja.properties` | native2ascii -reverse -encoding utf-8 > $TOOLHOME/MyDictionary.xml

cd $TOOLHOME

make
ということで参考になりましたでしょうか?スクリプト自体はけっこういい加減なものばっかりなので自己責任でお願いします・・。

金曜日 3 21, 2008

Mac OS X版のOpenOffice.org 3.0ベータを試す

OpenOffice.orgの次期メジャーバージョン 3.0.0のベータが試せるようになっています。Mac OS X版もIntel/PowerPC両方のビルドが公開されています。日本語版もあります。
OpenOffice.org 3.0.0 beta on Mac OS X
現在のOpenOffice.org/StarSuiteは起動するといきなり新規ドキュメントの画面で始まりますが、OpenOffice.org 3.0からはこの画面のように新規ドキュメントの種類を選んだり、既存ドキュメントを選ぶことができるようになっています。あと、注目はメニューがちゃんとMacに対応し、スクリーンメニューバーを採用しているところ。あとはニーモニック表示がなくなったら完璧かなあ。
OpenOffice.org 3.0.0 beta on Mac OS X
コンフィグをみてみると、スペルチェックにMac OS X Spell Checkerという表示があります。OS標準のスペルチェックが使えるようになっているんですね。Aqua対応という以外にも実はいろいろMac OS X対応しているようです。
OpenOffice.org 3.0.0 beta on Mac OS X
OpenOffice.org 3.0で便利&カッコイイのは左右ページを同時に表示/編集できるようになったこと。あとは、Notes 2と呼ばれている注釈機能。注釈を入れたいところを選んでメニューから「挿入」→「注釈」でコメントを入れられるんですが、かっこいい。これなら注釈入れがいがあります。
OpenOffice.org 3.0.0 beta on Mac OS X
左右ページを表示しても、表紙はきちんと独立していますね。あと、右下にある拡大/縮小バーも便利。100%と2ページ表示に便利な41%のところでスライドがピチっと止まるようになっています。便利。
OpenOffice.org 3.0.0 beta on Mac OS X
現時点で日本語もきちんと入力可能です。その他の新機能はOpenOffice.org 3.0's new features, an early lookからご確認いただけます。

水曜日 2 13, 2008

英辞郎をDictionary.appで (Mac)

Mac OS Xには購入時から辞書アプリがついていて、以前はOxfordの英英辞典、類語辞典だけでしたが、Leopardからはプログレッシブ英和/和英中辞典、大辞泉、類語例解辞典、Apple用語辞典、Wikipediaなど辞書が一気に増えました。普段はこれで十分なんですが、ブログを読んだりあるいはドキュメントの翻訳/レビューをするとなると複数の辞書を参照したくなります。以前から、アルクの英辞郎 on the Webを使っていましたが、Web経由だとWikipediaもそうですが若干の待ち時間が気になっていました。また、Dictionary.appという辞書アプリはインクリメンタルサーチに対応していたり、もしかして、機能を備えているので単にレイテンシだけの問題だけではなく入力支援の点でも優れています。
そこでようやく重い腰を上げて英辞郎をDictionary.appに組み込むことにしました。Dictionary.appのSDKがあることは前から知っていましたが、調べてみるとすでに先人がいらっしゃって今回はそのRubyスクリプトを利用させていただきました。Leopardの「辞書」アプリで「英辞郎」を使う(binWord/blog)
英辞郎の辞書データはオンラインで購入できますが、Windowsの自己解凍形式でのダウンロードのみになっています。Macだと・・・。と思いますが、StuffIt Expanderを使えばアッサリ解凍できるのでそれを使って解凍します。Dictionary.app用の辞書に変換するのに手元のMacBook (Core 2 Duo, 3GB RAM)でも1時間弱かかります。まあ、お昼ごはんなどの時間帯に実行しておけばいいでしょう。そしてようやくできあがるとこんな感じで使えます。
Eijiro into Dictionary.app
辞書を追加したのでそれぞれの表示名は辞書のブランド名を使うように更新してあります。2〜3年前まではSONYの電子辞書を手元に置いて仕事してましたが、(調子が悪くなったということもありますが) 今ではほとんどこのDictionary.appだけで十分になりました。

火曜日 1 08, 2008

ようやくMac OS X Leopardにアップグレード、と思ったら

発売されてからちょっと経ちましたがようやくADC(Apple Developer Connection)にもJava SE 6のDeveloper Previewが出た(1.6.0_02相当、Mac OS X 10.5 Leopard, 64bit専用)とのことなので重い腰を上げてMac OS Xのアップグレードすることにしました。
データをバックアップできそうなディスクが手元に無いのでおそるおそるアップグレードインストールにしようと思っていましたが、もっと手前の段階でこけてしまいました。インストールDVDを使ってインストールを開始すると、最初にDVD自身の検証をするのですがこれが40%ぐらいまで進んだところで検証エラーとなりインストールが進まないのです。
アプリケーションのインストール程度であればいつもはこの手の検証をスキップするのですが、さすがにOSのインストール(しかも、バックアップをとっていない)となるとエラーと言われてしまっては簡単にスキップする訳にも行きません。 取り出して傷が無いかどうか確かめてもそれらしきものは無いし、とりあえず古いMac OS X 10.4で起動してディスクユーティリティを使って検証してみてもエラーはみられませんでした。自宅のMacBook Proはこんな症状も発生せず、すんなりインストールできたので安心しきっていたんですが・・・。
また時間をみて再チャレンジしてみます。

金曜日 6 15, 2007

メモ: Mac OS Xでファイルの関連づけをリセットしたい

いろいろなソフトを評価したりしていて、インストールやアンインストールを繰り返しているとファイルの関連づけがおかしくなってしまって、かなり前から困っていました。実用上は困らない場合がほとんどですが、表示されるアイコンがおかしくなってしまったり、見栄え上も気持ちよくありません。
そういう設定はどこでやるんかな〜、なんて思って $HOME/Library以下を探してみたり、/Libraryや/System/Library以下を探してもそれらしきものは見つからず・・・。
そんなときはとりあえず、Googleさんに聞いてみようということで聞いてみたところ出てきました。How to rebuild the LaunchServices databaseこれです。
$ /System/Library/Frameworks/ApplicationServices.framework/\\
Frameworks/LaunchServices.framework/Support/lsregister \\
-kill -r -domain local -domain system -domain user
LaunchServicesはMac OS Xでファイルの実行に関する関連づけを管理しているサービスで、この(隠しコマンドみたいな)コマンドで、-kill -r なんてやると関連づけデータベースが再構築されるようです。-domainで、どのデータベースに対して操作をするかを指定するようです。
かれこれ半年ぐらい時間があるときに探していましたが、もっと早くググってれば良かったなあと思いました(でも、すっきり)。

火曜日 6 12, 2007

Mac向けOpenOffice.org Aquaを試してバグレポートしよう

(一部の)世の中はWWDCの発表でお祭り騒ぎのようですね。次期Mac OS XであるLeopardの詳細が徐々に明らかになってきたようです。 さて、先週の話題なのでもうご存じの方も多いと思いますがOpenOffice.org 2.3ベースのMac OS X Aqua向けのアルファ版がリリースされています。
OpenOffice.org Aqua
現在のところ次のような制約があるそうです。
  • 印刷は未対応
  • PDF出力もうまくいかないところがある
  • 共有フォルダのドキュメントをダブルクリックして開こうとしても動かないときがある
  • コピー&ペーストはまだ完全に動作しない
  • OpenOffice.org終了後にクラッシュする
  • Impressなどで、いくつかのテキストは適切な場所に描画されない
  • Impressはマルチモニタを認識しない
ほかにもすでに報告されているバグがあるのでそれは課題リストで確認することができます。いろいろ制約はありますがなんかNeoOfficeが出始めの頃を思い出します。
NeoOfficeがあるのにいまさら?と思われるかもしれませんが、NeoOfficeは画面描画などの処理をJavaで行っているために、本来C++で書かれているOpenOffice.orgとの間でいろいろ通信や変換などの処理が行われています。このため、Keynote等のアプリケーションと比べればややもっさりした感じの動作になってしまいます。
一方今回のOpenOffice.org AquaはX11も不要で、Javaもいらないほぼ完全にC++なアプリケーションとなるため、より軽量な動作を望むことができます。実際に、体感的にはこのOOo AquaはすでにNeoOfficeやX11版OpenOffice.orgよりも軽快に動作します。 このような期待の持てるプロジェクトがうまく進むためにも今、特に日本からのバグレポートがどんどん出てくることが期待されています。 とりあえず、岡崎はメニューなどの日本語が「□」に文字化けする(いわゆるおトウフ化け)バグを報告しておきました。課題の報告方法は、OpenOffice.orgでユーザ登録し、課題登録のページから課題の概要、コンポーネントにporting、OSの欄にMac OS Xを選択して課題を登録し、登録後にキーワードとして「aqua」を入れれば良いのだと思います。
About

okazaki

Search

Archives
« 4月 2014
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
今日