2009 年 5 月 6 日

第 19 回世界コンピュータ将棋選手権大会に参加

Filed under: Event,Research — araki @ 10:22 AM

昨年は多忙のため参加できなかったのですが、今年は第 19 回世界コンピュータ将棋選手権大会に参加してきました。昨年の 6 位だった大槻将棋が準優勝しました。今回自分は全くと言っていいほど貢献が無かったのに表彰式に出させてもらい、大変恐縮でした。

昨年は優勝、準優勝プログラムがエキシビジョンマッチながらアマトップを破るという快挙が生まれましたが、今年は多くのチームが全体的にさらに強くなり、実力が伯仲した印象を受けました。決勝戦で昨年の上位チームがことごとく負けたこともこの裏付けです。この主たる要因は、プロ棋士の棋譜を中心として数万局程度の棋譜を機械学習させるというソフトウェア上の技術改良 (いわゆる Bonanza 学習) が 2006 年に広まり、ほとんどのチームがそれを取り入れてきた結果であろうと思います。将棋のレベルについては、双方 25 分の持ち時間で指される対局中に将棋アマチュアの私がもはや指し手の良し悪しをどうこう言えるレベルではありませんでした (特に中終盤)。

来年以降も楽しみです。

2009 年 4 月 9 日

Python での日本語文字コード判定

Filed under: Programming Language,Software,Tips — araki @ 12:06 AM

EUC-JP、Shift_JIS、UTF-8 の文字コードが混在したテキストを解析する機会があって、その時にいくつか方法があったのですが、python の pykf と chardet を使って、文字コードを自動判定して全て EUC-JP に統一するというスクリプトを書きました。chardet は短い文字列に弱いらしいので second guess にしました。

# -*- coding: utf-8 -*-

import sys
import pykf
import chardet

def main():
    f = open(sys.argv[1])

    line = f.readline()
    while line:
        code_changed_line = to_euc(line)
        print code_changed_line
        line = f.readline()

    f.close()

def to_euc(text):
    c = pykf.guess(text)
    sc = second_guess(text)

    if c is pykf.EUC:
        return text
    elif c is pykf.UTF8:
        try:
            return unicode(text, 'utf8').encode('euc-jp')
        except:
            return text
    elif c in (pykf.SJIS, pykf.JIS):
        try:
            return unicode(text, 'utf8').encode('euc-jp')
        except:
            return pykf.toeuc(text)
    else:
        return text

def second_guess(text):
    sc = chardet.detect(text)
    return sc

if __name__ == "__main__":
    argc = len(sys.argv)
    if (argc != 2):
        print "Usage: python %s filename" % sys.argv[0]
        sys.exit(1)

    main()

インストールの手順は以下の通りです。手順自体は簡単ですが、pykf についてはダウンロード可能なサイトがいくつかあり、中にはモジュールが足りずにインストールが失敗するもの (例えば、SourceForge.jp 上のものなど) もあったため、少々厄介でした。

$ wget http://archives.sertice.org/devs/linux/cvs/pykf-0.3.4.tgz
$ tar xvfz pykf-0.3.4.tgz
$ cd pykf-0.3.4
$ python setup.py build
$ python setup.py install
$ wget http://chardet.feedparser.org/download/chardet-1.0.1.tgz
$ tar xvfz chardet-1.0.1.tgz
$ cd chardet-1.0.1
$ python setup.py install

参考にさせていただいたサイトをメモしておきます。

2009 年 3 月 21 日

Debian lenny/stable で platex 環境構築

Filed under: Software — araki @ 9:39 PM

今日は困ったことに Debian lenny/sid で、X のログイン画面からログインしてもその後メニューバーも含めて画面に何も現れない現象に悩まされました。昨日まで書いていたある原稿の続きを進めたかったので、結局 Debian lenny/stable をインストールして真っ新な状態から platex 環境を再構築しました。原稿自体はリポジトリにコミットしていたので、それは問題ありませんでした。

lenny/sid での構築手順は以前のポストに書いていたので、基本的にはそれを踏襲しましたが、一部そのままでは入らないパッケージもあったり、他にも必要な設定があったりしたのでなかなか大変でした。手順を再掲します。

まず、lenny/sid の時と違ったのは (デフォルトの sources.list では) xdvi が apt-get でのインストール対象から外れていたことです。

$ sudo apt-get update

platex 環境関連

$ sudo apt-get install ptex-bin yatex okumura-clsfiles

ビューア関連

$ sudo apt-get install gs gs-esp xpdf xpdf-japanese dvipdfmx xdvik-ja

日本語関連

$ sudo apt-get install kinput2-canna kinput2-common language-env anthy scim-anthy
$ sudo apt-get install ttf-kochi-gothic ttf-kochi-mincho
$ sudo apt-get install xfonts-a12k12 xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

この時点では dvipdfmx での PDF 生成がうまくいかず、Could not open config file “fontmapsx”. と Could not find encoding file “H”. というエラーが出ます。どちらも結構有名なエラーらしいですね。前者の方は、これが正しい対処法ではないかも知れませんが、以下でエラーは消えます。

$ sudo ln -s /etc/texmf/dvipdfm /etc/texmf/dvipdfmx

次に後者への対処ですが、これには CMap ファイルのインストールと設定をします。まず、/etc/apt/sources.list に以下の 2 行を追加して apt-get update を実行します。

deb http://ftp.jp.debian.org/debian/ lenny non-free contrib
deb-src http://ftp.jp.debian.org/debian/ lenny non-free contrib

この後に CMap ファイルをインストールします。

$ sudo apt-get install gs-cjk-resource cmap-adobe-gb1 cmap-adobe-japan1 cmap-adobe-japan2

そして、/etc/texmf/texmf.d/80DVIPDFMx.cnf に以下を記述します。

CMAPINPUTS=.;/usr/share/fonts/cmap/adobe-japan1//;/usr/share/fonts/cmap/adobe-japan2//;/usr/share/fonts/cmap/adobe-gb1//;/usr/share/fonts/cmap/gs-cjk-resource//

最後に texmf を更新します。

$ sudo update-texmf

ここまですると、ようやく dvi 経由の pdf 生成/表示 (tex -> dvi -> pdf) が可能です。

$ platex foo.tex; platex foo.tex; dvipdfmx foo.dvi; xpdf foo.pdf

何も知らない状態からここまでするのは結構大変なので、例えば Ubuntu の latex-env-ja や latex-extra-ja のような一括パッケージなどでもう少し簡便に platex 環境を構築できるようになると有り難いのですが、それは今後に期待しておきます。参考にさせていただいたサイトを以下にメモしておきます。

Stow によるパッケージ管理

Filed under: Software — araki @ 3:12 PM

rpm や apt などの独自のパッケージ管理機構を持たない Linux OS を使っている時はもちろんのこと、そのような独自のパッケージ管理機構を持つ Linux OS を使っている時でもパッケージを tar ボールなどのソースからインストールするという機会はよくあると思います。例えば、新しいバージョンのパッケージを試したいが、まだ自分の使っているディストリビューション用のパッケージが用意されていない時などです。

そういった tar ボール型のパッケージも rpm や apt などのパッケージ管理システムでするのと同様に管理したい時 (例えばパッケージのアップグレードや削除など) に便利なのが Stow です。ダウンロードは GNU のサイトからできます。1.3.3 が出たのがかなり前 (2002 年 1 月) なので有名なツールなのかも知れませんが、私は最近知りました。ちなみに、”stow” という単語は「しまい込む、詰め込む」という意味です。

まず stow をインストールします。今回は /usr/local/stow 下にインストールしました。

$ tar xvfz stow-1.3.3.tar.gz
$ cd stow-1.3.3
$ ./configure
$ make
$ sudo make install

ここでは例として、autoconf-2.63.tar.gz を Stow に入れてインストールします (autoconf のインストールに必要な awk, perl, m4 などはインストール済みとします)。

$ tar xvfz autoconf-2.63.tar.gz
$ cd autoconf-2.63
$ ./configure --prefix=/usr/local/stow/autoconf-2.63
$ make
$ sudo make install

次に、Stow を利用して autoconf-2.63 に対応するシンボリックリンクを /usr/local/bin に作成します。これにより、autoconf 2.63 を利用できるようになります。

$ cd /usr/local/stow/autoconf-2.63
$ sudo stow -t /usr/local/bin/ bin
$ ls -ltr /usr/local/bin
lrwxrwxrwx 1 root root      33 2009-03-21 15:05 ifnames -> ../stow/autoconf-2.63/bin/ifnames
lrwxrwxrwx 1 root root      36 2009-03-21 15:05 autoupdate -> ../stow/autoconf-2.63/bin/autoupdate
lrwxrwxrwx 1 root root      34 2009-03-21 15:05 autoscan -> ../stow/autoconf-2.63/bin/autoscan
lrwxrwxrwx 1 root root      36 2009-03-21 15:05 autoreconf -> ../stow/autoconf-2.63/bin/autoreconf
lrwxrwxrwx 1 root root      34 2009-03-21 15:05 autom4te -> ../stow/autoconf-2.63/bin/autom4te
lrwxrwxrwx 1 root root      36 2009-03-21 15:05 autoheader -> ../stow/autoconf-2.63/bin/autoheader
lrwxrwxrwx 1 root root      34 2009-03-21 15:05 autoconf -> ../stow/autoconf-2.63/bin/autoconf
$ which autoconf
/usr/local/bin/autoconf
$ autoconf -V
autoconf (GNU Autoconf) 2.63
Copyright (C) 2008 Free Software Foundation, Inc.
(以下、略)

参考にしたサイトを以下にメモしておきます。2 番目のサイトがよくまとまっています。

2009 年 2 月 27 日

.emacs の見直し

Filed under: Software — araki @ 11:41 PM

他人の .emacs を見るのは楽しいものです。その人の Emacs へのこだわりが分かったり、もっと早く知っておけば良かったと思う設定もあったりします。たまに自分の .emacs を振り返ってみるのも面白いです。以前は便利かも知れないと思って設定したものでも、後から見るとほとんど使っていなかったりします。

最近 .emacs を振り返る機会があったので、今の私にとって最低限必要な設定をメモしておきます。Emacs のバージョンは 22.1.50.1 です。

;; 起動時にスタートアップ画面を表示しない
(setq inhibit-startup-message t)

;; メニューバーを非表示にする
(menu-bar-mode -1)

;; ツールバーを非表示にする
(tool-bar-mode -1)

;; タイトルバーにファイル名を表示する
(setq frame-title-format (format "emacs@%s : %%f" (system-name)))

;; "yes or no" の代わりに "y or n" の省略形を使用する
(fset 'yes-or-no-p 'y-or-n-p)

;; 括弧を強調表示する
(show-paren-mode t)

;; カーソル位置の行番号を表示する
(line-number-mode t)

;; カーソル位置の列番号を表示する
(column-number-mode t)

;; 時刻を表示する
(setq display-time-day-and-date t)
(setq display-time-24hr-format t)
(display-time)

;; 1 行ずつスムーズにスクロールする
(setq scroll-step 1)

;; スクロールバーを右側に表示する
(set-scroll-bar-mode 'right)

;; バッファの末尾で新たな行を追加しない
(setq next-line-add-newlines nil)

;; 行頭で行削除 kill-line (C-k) したら改行も含めて行全体を削除する
(setq kill-whole-line t)

;; 行数を指定してジャンプする (goto-line)
(global-set-key "\C-l" 'goto-line)

;; タブを使用せず、スペースを使用する
(setq-default indent-tabs-mode nil)

;; リージョンをハイライト表示する
(setq transient-mark-mode t)

;; font-lock-mode (色の設定等) を有効にする
(global-font-lock-mode t)

;; 半角スペースや全角スペースなどを色付け表示する
(defface my-face-b-1 '((t (:background "medium aquamarine"))) nil)
(defface my-face-b-1 '((t (:background "dark turquoise"))) nil)
(defface my-face-b-2 '((t (:background "cyan"))) nil)
(defface my-face-b-2 '((t (:background "SeaGreen"))) nil)
(defface my-face-u-1 '((t (:foreground "SteelBlue" :underline t))) nil)
(defvar my-face-b-1 'my-face-b-1)
(defvar my-face-b-2 'my-face-b-2)
(defvar my-face-u-1 'my-face-u-1)
(defadvice font-lock-mode (before my-font-lock-mode ())
(font-lock-add-keywords
major-mode
'(
(" " 0 my-face-b-1 append)
("\t" 0 my-face-b-2 append)
("[ ]+$" 0 my-face-u-1 append)
)))
(ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode)
(ad-activate 'font-lock-mode)
(add-hook 'find-file-hooks '(lambda ()
(if font-lock-mode
nil
(font-lock-mode t))))

;; 圧縮されたファイルも編集できるようにする
(auto-compression-mode t)

;; クリップボードを他のアプリケーションと共用にする
(setq x-select-enable-clipboard t)

;; リージョンをコメントアウトする
(global-set-key "\C-co" 'comment-region)

;; リージョンのコメントアウトを解除する
(global-set-key "\C-cr" 'uncomment-region)

;; ファイル名を補完する時に大文字と小文字を区別しない
(setq read-file-name-completion-ignore-case t)

[2010.9.14 追記] タイトルバーに関する設定とファイル名の補完に関する設定を追加
[2009.11.29 追記] メニューバーとツールバーの非表示、クリップボード、リージョンのコメントアウトに関する設定を追加
[2009.10.17 追記] リージョンのハイライトに関する設定を追加
[2009.6.10 追記] global-font-lock-mode と auto-compression-mod に関する設定を追加

2009 年 1 月 12 日

研究室の新年会

Filed under: Event — araki @ 11:05 PM

1/10(土) に、すっかり毎年恒例となった感のある研究室の新年会に参加してきました。昨年の新年会に比べると、参加者が増え、心なしかお店もグレードアップしていました。同期の 2 人とともに、博士を卒業された後に別の大学に移られて今では助教をされている先輩にも再会できました。

昨年の新年会で会った中国からの留学生達は、一年経って日本語がさらに上達していました。彼らにとって日本語は中国語、英語に続く第三の言語になるわけですが、研究を続けながら少しずつ勉強しているようで感心しました。タイから来た留学生には、「日本では英語はいつから勉強するのですか。」と問われ、中学一年生からであると答えると、彼曰く「それは遅くないですか。タイでは幼稚園から英語を勉強しますよ。」ということでした。

英語教育は基本的に早期に学習を始めるのが良いが、あまりに早期からの学習は母語の習熟に影響を与えるので、ある程度の年齢を経てからの方が望ましい、ということが書かれた本を読んだことがありますが、確かに中学一年というのは遅い気もします。今では小学校から英語教育がなされているところもあるようですが、改めて日本での英語教育に思いを馳せた日にもなりました。

2009 年 1 月 1 日

2009 年スタート

Filed under: Miscellaneous — araki @ 3:58 PM

昨年末の大掃除後に風邪を引き、今年は体調が万全でない状態で新たな一年を迎えました。今年一年間の計画を立てた後、身の回りの整理を少ししました。

その時、みずほ銀行のポイント (マイレージポイント) が 1,000 ポイントを超えていることにふと気が付きました。普段クレジットカードではほとんど買い物をしませんが、昨年も Amazon で書籍などを頻繁に購入したのでいつの間にか貯まっていたようです。ついでに、みずほ銀行のポイント一覧のページを見てみると、ページの下の方に以下の注意書きが何気なく書かれていました。

2009年春から、みずほマイレージクラブが新しくなります。サービス内容変更後、現在お持ちのマイレージポイントはご利用いただけなくなります。

これは今使わなければそのまま忘れて失効しそうな気がしたので、早速 UC ギフトカード (5,000 円分) との交換を申し込みました。元日でもネットで申し込みできたのは良かったです。申し込んでから 3 – 4 週間で届くそうです。

2008 年 12 月 29 日

Emacs で翻訳環境を整える

Filed under: Software,Tips — araki @ 11:43 PM

最近ようやく少し時間が取れたので、以前から気になっていた Emacs での翻訳環境を整えてみました。参考にさせていただいたサイトは以下です。試した環境は、Emacs 22.1.50.1@Ubuntu 8.04 (LTS) です。

1) po-mode をインストール
po ファイルを修正する場合は入れておくと便利です。

$ sudo apt-get install gettext-el

2) text-translator によりネット上の翻訳サービスを利用
Google などのテキスト翻訳サービスを提供するウェブサイトを利用して翻訳を行う elisp をインストールします。サイトの更新はかなり前に停止しているようですが、elisp 自体は問題なく動きました。インストール後に .emacs に以下を記述します。

(require 'text-translator)
;;翻訳キー設定
(global-set-key "\C-xt" 'text-translator)
(global-set-key "\C-x\M-T" 'text-translator-translate-last-string)

翻訳したい文字列を選択してコマンドを実行すると、ウィンドウの下の方に翻訳結果の文字列が表示されます。英日だけでなく、日英など各翻訳サービスに付随する翻訳が可能です。各々の翻訳サービスの機械翻訳の質はまだ高くないですが、ブラウザをいちいち見たりせずに済むので翻訳の手助けにはなりそうです。

2008 年 11 月 26 日

さくらのレンタルサーバへ移行

Filed under: Server-related,Software — araki @ 10:43 PM

最近本サイトの可用性を上げる必要性に迫られたので、自宅サーバからさくらのレンタルサーバへ移行しました。自宅サーバで本サイトを運用している時は DDNS を使用していたのですが、やはり時折 DNS の更新が遅いために (特に週末にかけて) 長くて 1 日程度落ちている時もありました。早く ISP の固定 IP サービスが無料程度の価格帯になるよう願っています。レンタルサーバでも少なくともシェル操作は必要だったので、スタンダードプランにしました。年間一括で 5,000 円を支払いました。その数日後に、料金の変更無しに容量が 1GB から 3GB に増強されるという連絡が届きました。どうもついていたようです。

自宅サーバでなくなったのでやれることの自由度が落ち、OS も Debian でなくなったのが残念ですが、しばらくはこちらで運用します。自宅サーバは別用途に使おうと思います。

サーバ移行後の作業をメモしておきます。WordPress のバージョンが上がり (2.0.10 -> 2.6.3)、かなり使い易くなりました。

  • MySQL データベースの作成 (さくらのコントロールパネルより実施)
  • Emacs のインストール
  • WordPress のインストールと設定 (プラグインを含む)
  • WordPress のデータ移行
  • AWStats のインストールと設定
  • Cron の設定 (さくらのコントロールパネルより実施)
  • メールユーザの作成
  • DNS 切替
  • メール送受信の確認

2008 年 10 月 25 日

Things I have learned in my life so far

Filed under: Miscellaneous — araki @ 6:48 PM

今年 6 件目の友人の結婚式で新横浜へ行きました。来月も 1 件友人の結婚式の予定が有ります。冠婚葬祭は今年も比較的多く、ブログの更新も停滞気味になってました。

話は変わりますが、他山の石になるような言葉をユニークな写真や動画に収めたサイト (英語) を見つけたので、メモしておきます。シンプルな言葉が却って心に響くような気がします。

« Newer PostsOlder Posts »

Powered by WordPress
Copyright © 2007-2012 Jun Araki