2007年8月30日木曜日

Emacsで快適な翻訳環境を

Darが便利なので常用することに決めたのですが、日本語化されていないので、自分で適当にチマチマと翻訳することにしました。
最近のlinuxのアプリは言語に依存する部分を別ファイル形式にして、それを差し替えていろんな言語に対応できるようになっています。
この言語ファイルが拡張子poの付いたテキストファイルで、これを変換してバイナリ形式のmoファイルにし、/usr/share/locale-langpack/ja/LC_MESSAGES/あたりに放り込むことで簡単に日本語化することが出来るのです。そこで早速poファイルを編集するための環境作りを。いそいそ。

Emacsにpo-modeを


とりあえずEmacsでpoファイルを編集するためのpo-modeが入っていなかったので、
sudo apt-get install gettext-el
してpo-modeをインストール。とくに~/.emacsに設定することもなく。さっそく、Darのソースを落としてきて展開し、中のpo/ディレクトリに移動し、
cp dar-pot ja.po
としてdarの言語テンプレートから日本語のja.poファイルを作り、emacsで開いてみました。

操作方法

u次の未翻訳項目に移動
C-j元の言語をコピペする
RET項目の翻訳状態に入る
C-c C-cその項目の翻訳を終了する。
C-c C-k今いる項目の翻訳状態から抜ける。
Vpoファイルに異常が無いか確認してからタイムスタンプを修正し、上書き保存する。
s該当個所のソースコードを開く。
Epo-modeを抜ける。
な感じで。h キーで簡易ヘルプも表示されます。POファイル自体はタダのテキストファイルで、msgid "" が元の言語で、msgstr "" に翻訳した言葉を書いていきます。

ネット接続で英文を翻訳

emacsでpo-modeで翻訳できる環境にはなったけど、これだけだとつらいので、Emacs でテキスト翻訳をする Emacs Lisp パッケージ text-translator をさくっと導入します。リンク先からダウンロードしてきて ~/.lisp に放り込み、~/.emacs に以下を追記します。
(require 'text-translator)
;;翻訳キー設定
(global-set-key "\C-xt" 'text-translator)
(global-set-key "\C-x\M-T" 'text-translator-translate-last-string)
適当にC-xtにキーを設定し、おもむろに英文を範囲選択してからキーを押すと、見事に和訳された文章が表示されました。いろんな翻訳サイトに対応していて、ほかにもルー語変換も出来るそうです^^;


ん〜シームレスにemacs内で完結するというのは気持ちがいいですね。普通だったら、翻訳したい文章をコピーして、Webブラウザで翻訳サイトを開き、テキスト入力部分にコピペし、翻訳ボタンをクリック。
英和辞書なら、和英辞書ソフトをを立ち上げて、同じくコピペするという・・・これだけの作業をマウスを使ってあっちのソフトからこっちのソフトへ行ったり来たりは、何回もやっているとむきゃーとなりますね^^;

emacsから英辞郎を利用する


上のだけではアレなんで英和辞書もemacsから使えるようにします。英辞郎の辞書データは別途用意してください。
手順としては、英辞郎のテキストファイルを sdic-eijiro パッケージに含まれているスクリプトでsdic形式に変換し、sdic.elを導入する、です。

インストール

sudo apt-get install sdic-eijiro sdic
  • 辞書の変換
  • 以下手順メモ
    mkdir ~/sdic
    cd ~/sdic
    nkf -S -e EIJIRO98.TXT | perl /usr/share/sdic/eijiro.pl > eijiro.sdic
    nkf -S -e WAEIJIRO98.TXT | perl /usr/share/sdic/eijiro.pl --waei > waeijiro.sdic
    sudo ln -s ~/sdic/eijiro.sdic /usr/share/dict/eijiro.sdic
    sudo ln -s ~/sdic/waeijiro.sdic /usr/share/dict/waeijiro.sdic
    ~/.emacsに、
    (global-set-key "\C-cw" 'sdic-describe-word) ;;英辞郎で翻訳する。

    を追記して、キーバインドをC-cw に設定。試しに英単語上でC-cwしてみると見事に訳が。

ただ検索速度が遅すぎたので、sufary を導入してみました。
sudo apt-get install sufary
をした後に、再度
sudo apt-get install --reinstall sdic-eijiro
してみたところ、自動的にeijiro.sdic.arryが作成されました。結構時間がかかります。
その後特に何も設定せずともsufaryが効いているみたいで、検索速度が飛躍的に早まり、快適に使えるようになりました♪


これでemacsで快適な翻訳作業が構築完了。試しに
msgfmt -v ja.po -o ja.mo
sudo cp ja.mo /usr/share/locale-langpack/ja/LC_MESSAGES/dar.mo
してみて無事darの日本語化が成功。
  • 英文章を翻訳したい時は、
    翻訳したい箇所を範囲選択し、おもむろにC-xt
  • 英単語を翻訳したい時は、
    翻訳したい単語の上にカーソルを持っていき、おもむろにC-cw
ん〜〜〜便利だぁw

オマケの翻訳中のdar画面
●20070902追記:
apt-cache search sdic してみると、
sdic - Emacs-Lisp program to view dictionaries
sdic-edict - EDICT dictionaries for sdic (installer)
sdic-eijiro - Installer for EIJIRO dictionaries for sdic
sdic-gene95 - Installer for GENE95 dictionaries for sdic

と出てきます。ubuntuの日本語版に標準で入っているGjiten日本語辞典が使用している英和辞書の形式がEDICTなので、sdic-edictパッケージを導入すればemacsから辞書の再利用ができるかもしれません。わざわざ英辞郎を用意するなんて・・・という人にはお薦めかもしれません。

2007年8月29日水曜日

Darの簡単な使い方

Darの簡単なチュートリアル のつもり

Darについてはこちら

  1. テスト用の作業ファイルを作る
    mkdir dar-test
    cd dar-test
    touch aaa.txt bbb.txt ccc.txt
    echo "aaaaaaaaaaa" > ccc.txt
    cd ~/

  2. バックアップしてみる
     dar -v -R ~/ -c test-full -g dar-test/
    -cはアーカイブ名を指定します。
    -vは詳細表示してくれます。-Rはバックアップする時のルートディレクトリを設定します。-gはバックアップするディレクトリを指定します。

  3. 確認する

    バックアップが成功すると、-cでつけた名前の後に.1.darが付いたファイルが作られます。
    dar -l test-full
    で、バックアップされたリストが表示されます。

  4. ファイルを編集してみる。
    rm dar-test/aaa.txt
    echo "bbbbbbbbb" >> dar-test/ccc.txt
    などとして、ファイルを編集して見ます。

  5. 差分バックアップしてみる

    前回のバックアップ以降更新されたファイルをバックアップしてみましょう。
    dar -R ~/ -c test-diff -A test-full -g dar-test
    -Aオプションで、基準となるバックアップファイルを指定します。
    test-fullを基準としてそれ以降に更新されたファイルをtest-diffというファイルにバックアップします。

  6. 差分されたファイルを確認する
    dar -l test-diff
    きちんと更新されたファイルがバックアップされ、削除されたファイルには削除マークがされていますね。
    dar -l test-diff -as
    -asオプションを付けると、前回以降更新されたファイルだけを表示することが出来ます。

  7. リストアしてみる

    rm dar-test/* して、dar-testディレクトリ内をいったん空にしたら、いかのコマンドを実行してみてください。
    dar -x test-full

    1. 確認してみる
      ls -l dar-test
      合計 4
      -rw-r--r-- 1 hoge hoge 0 2007-08-27 23:40 aaa.txt
      -rw-r--r-- 1 hoge hoge 0 2007-08-27 23:40 bbb.txt
      -rw-r--r-- 1 hoge hoge 12 2007-08-27 23:40 ccc.txt
      削除したaaa.txtがあることや、ccc.txtのサイズに注目してください。

  8. 差分ファイルをリストアしてみる
    dar -wa -x test-diff
    -waは問い合わせを抑制します。
    1. 確認してみる
      ls -l dar-test
      合計 4
      -rw-r--r-- 1 hoge hoge 0 2007-08-27 23:40 bbb.txt
      -rw-r--r-- 1 hoge hoge 22 2007-08-27 23:59 ccc.txt
      削除したaaa.txtが削除されています。ccc.txtも編集したサイズになっています。最新の状態に復元されました。


とまぁ駆け足で説明してみましたがどんなものでしょう。大体の感じが掴めたでしょうか。
よく使うオプションは~/.darrcに記述できますのでいろいろ試してみてください。
以上。

2007年8月28日火曜日

Darで大事なデータをバックアップ

linuxではtarで適当に固めてバックアップ、というのが一番多い気がしますが、少数のファイルをバックアップするならそれで問題ないかもしれませんが、tarは、もし書庫が壊れたら、壊れた場所以降のファイルが取り出せない! という致命的な欠点があります。本格的なバックアップには使えません。

そこで、Darを使います。Darはバックアップのために作られたソフトで、増分・差分バックアップにも対応し、書庫の圧縮にも対応しています。また、バックアップしたくないファイルやディレクトリの指定圧縮したくないファイルの指定、さらには拡張属性のバックアップにも対応しています。

インストール

sudo apt-get install dar

オプション

よく使いそうなオプションを抜粋
-cバックアップファイルを作ります。ファイル名を指定します
-xバックアップから展開します。ファイル名を指定します
-lバックアップされたリストを表示します
-as-lでリスト表示時に更新されたファイルだけ表示する
-tバックアップファイルが壊れていないかテストします
-dバックアップファイルとバックアップ元との比較を行います
-z[level]gzipで圧縮します。デフォルト圧縮レベルは9
-y[level]bip2で圧縮します。デフォルト圧縮レベルは9
-Z圧縮時、圧縮しないファイルを指定します
-m圧縮をするファイルの最低サイズを指定。指定以下のサイズのファイルは圧縮されない。デフォルトは100バイト
-s指定したサイズでファイルを分割します。
-S分割するとき、最初の分割ファイルのサイズを指定します
-X除外するファイルを指定します
-P除外するディレクトリを指定します
-gバックアップするディレクトリを指定します
-R pathこのパスをルートディレクトリとみなします
-D除外した結果空になったディレクトリをバックアップする
-G指定したファイルにバックアップ情報、カタログデータを書き出します
-A差分バックアップなどの時に参照するファイルを指定します
-,
CACHEDIR.TAGのあるディレクトリを保存しない


簡単な使い方



使う上でのちょっとしたTips


  • ファイル名の命名規則について
    バックアップファイル名には規則性を持たせた方がいい。
    例えば、
    フルバックアップは名前に-full
    差分ファイルには-diff
    増分ファイルには-incを付ける。

さらに`date +%Y%m%d`としてファイル名に日付を付与しておくのもいいだろう。 組み合わせて、ベース名-full-`date +%Y%m%d`とすれば、ファイルを判別するとき便利になるでしょう。
  • カタログを作る
    バックアップする時に、-G path/カタログファイル名とすることで、バックアップしたファイルのカタログリストを作ることが出来ます。
    バックアップファイルをDVD-Rに焼いた後でもカタログファイルを参照することで、わざわざDVD-Rをマウントしてリスト表示しなくても確認できるようになります。

2007年8月24日金曜日

パスワードファイルを定期的にgmailにバックアップ

パスワードなどを書き溜めたGnuPgファイルを普段emacsでeasypgを使って管理している。こうするとemacs上からgpgファイルを透過的に扱うことが出来るので大変便利だ。
大切なファイルなので複数のでメディアにバックアップしているのだけれど、gmailに定期的にアップすればストレスなく快適じゃない? ということでやってみた。

まず、添付ファイルをコマンドラインから送信できるメールコマンドを探した。意外とない。お手軽に手っ取り早くやりたかったのでmpackコマンドを使用することにした。日本語が使えないが、今回の目的には全然問題ない。

インストール

sudo apt-get install mpack

使い方

mpack -s "件名" 添付ファイル名 宛先
で送信できる。あ、MTAを入れていないと無理です。ubuntuにはデフォルトで入っていません。うちにはpostfixを入れていた。

あとは
#!/bin/sh
#

if [ ! -e "pass.gpg" ]; then
exit;
fi

mpack -s "password backup `date +%x%X`" pass.gpg hogehoge@gmail.com
などとしてシェルスクリプトを書いて、/etc/cron.daily に放り込もうかと思ったが、個人的なファイルなので、crontab -e で毎日一回実行するようにして終わり。
あとはgmailでフィルタ設定でゴミ箱にでも振り分けておけば、古いバックアップファイルは自動的に削除されていく。

2007年8月18日土曜日

ubuntuで定期的にプログラムを実行させる

ubuntuで定期的にタスクを実行させます。Windowsだとタスクスケジューラーですかね。あれって実は意外とよくできていたりします。あんまり使われていない気もしますが・・・

linuxだとそもそも定期実行は管理者が行うものだし、ubuntuでもタスクスケジューラに相当するGUIなアプリは入っていません。
端末からだと crontab -eviで設定ファイルが開き、そこで定期的に実行したいプログラムの設定が出来ます。この場合crontabの書き方を知らないといけません。

そこでGUIなアプリの出番です。gnomeだと、gnome-schedule



KDEだとkCronというソフトが用意されています。



gnome-scheduleよりkCronのほうがよりわかりやすいので、おすすめです。ubuntuでもKDEのプログラムは動きます。

インストール

sudo apt-get install kcron
日本語で表示されない場合は一緒にkde-i18n-jaを入れましょう。
sudo apt-get install kcron kde-i18n-ja

インストールされると、メインメニューのアプリケーションシステムツールkCronで起動出来ます。

使い方

新しくタスクを設定する場合は、新規アイコンをクリックすると設定ダイアログが出ます。ご覧のとおり解説するまでもないほどのわかりやすいインターフェースですねw



実行したいプログラムを指定して、あとは実行させたい時間をぽちぽちとボタンを押すだけ。

2007年8月7日火曜日

mp3タグの文字コードを変換する

現在iTunesで管理している楽曲をubuntuでも聴けるように、ゆっくりと移行作業を進めているのですが、iTunesライクな音楽管理ソフト、Amarokで曲表示をしますと思いっきり文字化けして表示されます。
これはID3タグがShift JIS で書かれているためで、id3Ver2だと文字コードはUnicodeと規格で決まっているのですけれども、Windowsだとそこら辺が適当でソフトによってまちまち。

それでID3タグの文字コードをUnicodeに変換することになりますが、一括で変換してくれるソフトでこれといったソフトがみつかりませんでした。
とりあえずSuperTagEditor 改造版で一括で変換し、mp3infpのプロパティでUnicodeに変換されていることを確認してAmarokで表示してみたのですが、文字化けしてダメでした。
ほかにもmp3infpのプロパティでusyncオプションにチェックがついているとAmarokで文字化けすることも確認しました。
さらにID3v2.4でUnicodeだとAmarokでは文字化けするらしい。

そこで今度はiTunesでid3v2.3に一括で変換を行いました。この時に自動でUnicodeに変換もしてくれます。
今度は無事Amarokで日本語が表示でき、めでたしめでたし^^
それにしても手持ちのライブラリが約3000曲。チェックするのは骨が折れる・・・

2007年8月2日木曜日

EmacsでAnthyの起動をダブらせないために

ubuntuの標準な日本語入力システムであるSCIM-Anthy。こいつの日本語入力ON/OFFを全角/半角キーに設定してある。そしてEmacsの日本語入力システムにもAnthyを使い、同じく起動に全角/半角キーを割り当てている。
こうして同じ起動キーを割り当てていると、SCIMのほうが起動してしまい、Emacsの方のAnthyが起動してくれない
そこで、Emacs起動時に、
XMODIFIERS=@im=none emacs
として起動すれば無事にSCIMが起動せずにEmacsの方のAnthyが起動できた。
あとはaliasで
alias em='XMODIFIERS=@im=none emacs
とでもしておけばいいだろう。