MacOS X の通常のアプリケーションで Anthy や PRIME を利用できるようにするツール。 約 10 日ぶりの version up。
超多機能 multi-media viewer for Windows である IrfanView32 のメニュー等を日本語化するプラグイン。 約 7 ヶ月半ぶりの version up。
会社の方にヤイコさんの DVD をいっぱい借りた。 かなり楽しみ。 :D
お返しに、椎名林檎さんの DVD と鬼束ちひろさんの DVD をお貸しする予定。 好みとあまり合わない様な気もするけど、まあ、気分的なものですな。
実は、某お方の買った“キル・ビル”にも興味があるけど、 その前に梶芽衣子さんの (釈由美子さんの方じゃない)“修羅雪姫”を見たいのでしばらくは我慢。 適当な時期に貸してもらおう。
貸してもらえることになった。 thx. でーす。 :D
SSH 2 にも対応している Windows 向け Telnet/SSH client である PuTTY の日本語版。 数日ぶりの version up。
rufein さんの日記から。 ユニットテストフレームワーク事始めと一緒にめも。 …もっとキッチリ調査と設計、実装それぞれに時間をとれるプロジェクトに参加したいなぁ。 …有り得ませんか。そうですか。 (;_:)
美しい GUI を持つ多機能と軽快さを兼ね備えた message user agent。 開発版としては約 1 週間ぶりの version up。
PostScript 関連の tool 群。 AFPL 系列としては約 4 ヶ月ぶりの version up。
複数の連絡ミスから痛い目に遭った。 ついでに自分のうっかりミスもあったので、今週後半はけっこう忙しくなっちゃいそう。 失敗失敗。
うーん、五月病かなぁ…。 好き勝手にやれる状況になるまでは我慢我慢。
何か誤解されているようなので一応書いておきます。 僕が意図しているのは、\C-a を連打すると行頭と行の最初の非空白文字を行き来する、トグルの様な動作です。
(define-key global-map "\C-a" #'(lambda (arg) (interactive "p") (if (looking-at "^") (back-to-indentation) (beginning-of-line arg))))
こちらはおまけ (muneda さん向け)。 手抜きしてますが、こちらの方がある意味自然な動作なのかも。
(defun ys:beginning-of-line (&optional arg) (interactive "p") (if (and (eq last-command 'ys:beginning-of-line) (looking-at "^")) (back-to-indentation) (beginning-of-line arg))) (defun ys:back-to-indentation (&optional arg) (interactive "p") (if (and (eq last-command 'ys:back-to-indentation) (not (looking-at "^"))) (beginning-of-line arg) (back-to-indentation))) (define-key global-map "\C-a" 'ys:beginning-of-line) (define-key global-map "\M-m" 'ys:back-to-indentation)
UNIX 系 OS 上で動く Windows API の実装。 約 2 週間ぶりの version up。
美しいペン習字風 font。
「IT Text 音声認識システム」の付録 CD-ROM に入っている chawan という プログラムの代替をちょこちょこと作成中。
#! /usr/bin/env ruby
# 数字から位取りした読み情報を生成するクラス class CreateJapaneseNumbers JAPANESE_LOWER_ZERO = ['0', 'レイ', '{レイ/ゼロ}'] JAPANESE_LOWER_NUMBERS = [# 各数字の「表記」「読み」「基本発音」を提供。 # 一の位 [[], ['1', 'イチ', 'イチ'], ['2', 'ニ', 'ニ'], ['3', 'サン', 'サン'], ['4', 'ヨン', 'ヨン'], ['5', 'ゴ', 'ゴ'], ['6', 'ロク', 'ロク'], ['7', 'ナナ', '{ナナ/シチ}'], ['8', 'ハチ', 'ハチ'], ['9', 'キュウ', 'キュー']], # 十の位 [[], ['十', 'ジュウ', 'ジュー'], ['2十', 'ニジュウ', 'ニジュー'], ['3十', 'サンジュウ', 'サンジュー'], ['4十', 'ヨンジュウ', 'ヨンジュー'], ['5十', 'ゴジュウ', 'ゴジュー'], ['6十', 'ロクジュウ', 'ロクジュー'], ['7十', 'ナナジュウ', 'ナナジュー'], ['8十', 'ハチジュウ', 'ハチジュー'], ['9十', 'キュウジュウ', 'キュージュー']], # 百の位 [[], ['百', 'ヒャク', 'ヒャク'], ['2百', 'ニヒャク', 'ニヒャク'], ['3百', 'サンビャク', 'サンビャク'], ['4百', 'ヨンヒャク', 'ヨンヒャク'], ['5百', 'ゴヒャク', 'ゴヒャク'], ['6百', 'ロッピャク', 'ロッピャク'], ['7百', 'ナナヒャク', 'ナナヒャク'], ['8百', 'ハッピャク', 'ハッピャク'], ['9百', 'キュウヒャク', 'キューヒャク']], # 千の位 [[], ['千', 'セン', '{セン/イッセン}'], ['2千', 'ニセン', 'ニセン'], ['3千', 'サンゼン', 'サンゼン'], ['4千', 'ヨンセン', 'ヨンセン'], ['5千', 'ゴセン', 'ゴセン'], ['6千', 'ロクセン', 'ロクセン'], ['7千', 'ナナセン', 'ナナセン'], ['8千', 'ハッセン', 'ハッセン'], ['9千', 'キュウセン', 'キューセン']] ] JAPANESE_UPPER_NUMBERS = [# 各位の「表記」「読み」「基本発音」を提供。 nil, ['万', 'マン', 'マン'], ['億', 'オク', 'オク'], ['兆', 'チョウ', 'チョウ'], ['京', 'ケイ', 'ケイ'], ['垓', 'ガイ', 'ガイ'] ] JAPANESE_LOWER_REPLACE_RULE = [# 各数字の「発音変化」を提供。 # 一〜千 [[/\Aヨン\z/, '{ヨン/シ}']], # 万 [], # 億 [], # 兆 [[/\Aイチ\z/, 'イッ'], [/\Aハチ\z/, 'ハッ'], [/ジュー\z/, '{ジュッ/ジッ}'], [/(((ヒ|ビ|ピ)ャ)ク)\z/, '{\1/\2ッ}']], # 京 [[/\Aイチ\z/, '{イチ/イッ}'], [/\Aハチ\z/, '{ハチ/ハッ}'], [/ジュー\z/, '{ジュッ/ジッ}'], [/(((ヒ|ビ|ピ)ャ)ク)\z/, '{\1/\2ッ}']], # 垓 [[/ジュー\z/, '{ジュッ/ジッ}'], [/(((ヒ|ビ|ピ)ャ)ク)\z/, '{\1/\2ッ}']] ] def initialize @output = Array::new end def create_jnumbers(number, values=nil) @output.clear number = number.to_s.split(//) place = number.length inserted_lower_number = false number.each { |n| place = place - 1 lower_index = place % 4 lower_number = JAPANESE_LOWER_NUMBERS[lower_index][n.to_i] unless lower_number.empty? then @output << lower_number inserted_lower_number = true end if lower_index == 0 and inserted_lower_number then inserted_lower_number = false lower_number = @output.pop if lower_number then lower_number = lower_number.dup lower_number[2] = lower_number[2].dup JAPANESE_LOWER_REPLACE_RULE[ place / 4 ].each { |rule| break if lower_number[2].sub!(rule[0], rule[1]) } @output << lower_number end if 0 < place then @output << JAPANESE_UPPER_NUMBERS[ place / 4 ] end end } if @output.empty? then @output << JAPANESE_LOWER_ZERO end if values then return values.replace(@output) else return @output.dup end end end
# 主処理 (動作確認サンプル) values = Array::new cjn = CreateJapaneseNumbers::new ARGV.each { |number| if /\A[0-9]+\z/ =~ number then puts "#{number}:" number = number.to_i cjn.create_jnumbers(number, values) values.each { |n| puts "\t#{n[0]}\t#{n[1]}\t#{n[2]}" } else warn "WARNING: \"#{number}\" is invalid!" end }
12345678901234567890
を引数に与えると、以下の出力を得る。
千 セン {セン/イッセン} 2百 ニヒャク ニヒャク 3十 サンジュウ サンジュー 4 ヨン ヨン 京 ケイ ケイ 5千 ゴセン ゴセン 6百 ロッピャク ロッピャク 7十 ナナジュウ ナナジュー 8 ハチ ハッ 兆 チョウ チョウ 9千 キュウセン キューセン 十 ジュウ ジュー 2 ニ ニ 億 オク オク 3千 サンゼン サンゼン 4百 ヨンヒャク ヨンヒャク 5十 ゴジュウ ゴジュー 6 ロク ロク 万 マン マン 7千 ナナセン ナナセン 8百 ハッピャク ハッピャク 9十 キュウジュウ キュージュー
連続して使うとボロが出るところを、とりあえず修正した。
UNIX 系 OS では定番のメディア・プレーヤ MPlayer の Mac OS X 向け拡張版。
以前、以下のように 会社の開発環境と自宅のそれを比較した内容を書いたことがある。
先週後半、先月発注した Mac Pro (Quad-Core XEON 2.8GHz dual) が到着したのが、とても嬉しかった。 それまで Windows とリモートの Debian 上で作業していた内容のほとんどを、 慣れている Mac OS X 上に移せたのだから、作業効率が上がる上がる。 かなり快適。 今年に入ってからずっと作業のし辛さでストレスを感じていただけに、「やっと来ましたか!」という思いが強い。 GNU Emacs をローカルで快適に動かせるのが特に嬉しかった。
自宅の iMac (Core 2 Duo 2GHz) と比べると、ひっかかる感じがとにかく少ない。 特に VMware Fusion で他 OS を起動している時に大きな違いがある。 でも、それを除けば体感できる程度の違いをまだ感じていない。 自宅ではそれほど重い処理をすることがないからだろうけど、少し意外だ。
会社のディスプレイ環境は、Cinema HD Display 23" で 1,920×1,200。 自宅のディスプレイ環境は、Diamondcrysta RDT197S の 1,280×1024 と iMac の 1,440×900 の dual。 解像度は自宅の方が大きいのだけれど、発色は会社の方が断トツで良い。
約半年経ったので、これらについて見直してみる。
Mac Pro 導入のおかげでリモートの作業がローカルの作業になって楽になった件、 これは、VMware Fusion 上で Debian などを動かすことにより、 更に楽になったことを感じた。 言語のモデリングや資料の作成が作業の中心なんだけど、 たぶん以前の環境に比べたら、作業効率が数十%は向上していると思う。
VMware Fusion を使っている時だけでなく、 言語のモデリング時にも Mac Pro と iMac の差を体感できている。 特に形態素解析処理をしている時。 それと通常のテキスト処理で何個もコマンドをパイプで繋いだ時。 まあ、テキスト処理〜に関しては、 自宅では滅多にたくさん繋げることはないけど。
ディスプレイに関しては、iMac のデュアル・ディスプレイの方が快適。 というのも、2 つのディスプレイの配置がけっこう自由にでき、 単一の大きなディスプレイで左右の端が見辛いのに対し、 ある程度、それを気にしないで済む使い方ができるからだ。 ちなみに、発色に関してはやはり勝負にならない。 Cinema HD Display はかなり綺麗だ。
定番の Linux ディストリビューション。
定番の Linux ディストリビューション。 メンテナンス・リリース。
この土日、ちょっと忙しかったけど、どうにかパッチを更新した (ver.2.0.9p5)。 「数詞とその後続形態素の読み変化の処理が、現在主流と思われる IPA 辞書 2.6.3, 2.7.0 および NAIST Japanese Dictionary 0.4.3 でうまく動いていなかった」 ことを修正。 それ以外はあまりいじってない。 今回の改変でもこれらの辞書に対して問題が発生した場合、 ぜひこの blog のツッコミ欄から報告していただければと思います。 その際は、使用している茶筌とその辞書のバージョンを明記して下さい。
なんか、改めて Ruby か何かで書き直した方が良いような気がしてきた。 某氏が「ルールが複雑すぎてデータを外部に出せない…」と言っていたけど、 かなりの部分を外に出してしまえそうな気がするし。 それに、実装に関して改善の余地がありまくるし。
AVI ファイル編集ツール。
Windows 上で動くシンプルな CSV エディタ。
IPA, Konatu, Ume の各フォントを M+ フォントと合わせたフォント群。
今回は UmePlus の更新。
GNU Compiler Collection。 メンテナンス・リリース。
Macintosh 定番の text editor。
Apple 社が公開しているジュークボックス・ツール。