靴屋問題

 ある日、とある町にて、とある靴屋へ店の中にアヤシイ男が入ってくるのを靴屋の店主が見かけました。…良く見るとその男は指名手配犯でした!店主は警察に通報しようかと思いましたが、このご時世面倒なごたごたに巻き込まれるのは真っ平御免です…
 なーんて考えていたらその男が靴を選んで持ってきました。そこで店主、ちょっとしたひらめき等を駆使してみました。斯くして、その男は無事逮捕されました。めでたしめでたし。

 Q. 店主はどんな工夫を凝らしたのでしょう?

続きを読む

TracDecoratorのアイコンを表示させる (@Trac 0.11.1.ja1)

 デフォルトの report 設定を使っていない人には分からないが、Trac 0.11.1.ja1 にデフォルトで登録されている report のカラムは日本語なので TracDecorator でうまくアイコンが表示されてくれない。早い話がカラムを英語にすれば戻る。レポートの編集→レポートのクエリ より、アイコンを表示して欲しいカラムについて「<カラム名> AS <日本語名>」の AS から先を消して単に「<カラム名>」とすれば良し。

TracGanttCalendarPluginの文字コードエラーを解消する

 GanttCalendarPlugin の見た目に惹かれてインストールしてみたが、ファイル内部で日本語が使われているためか、エラーが発生する。ちなみに Python のバージョンは 2.5.2。

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

 とりあえず、ticketcalendar.py と ticketgantt.py にて日本語で書かれているところを u〜 を付ければ動いた (Python のことは知らないけど、これ何て言うんだろう?)。

# tag.a('カレンダー', href=req.href.ticketcalendar()))
tag.a(u'カレンダー', href=req.href.ticketcalendar()))

しかし、このままでは動いてもメニューの文字が暗号のような文字になってしまうので、ファイルの先頭に

#!-*- coding:utf-8 -*-"

を付ける必要があった。と言うわけで、修正点を纏めると↓みたいな感じかな?

★ ticketcalender.py

#!-*- coding:utf-8 -*-"
import re, calendar, time
from datetime import datetime, date, timedelta
    def get_navigation_items(self, req):
        if req.perm.has_permission('TICKET_VIEW'):
             yield ('mainnav', 'ticketcalendar',
                    tag.a(u'カレンダー', href=req.href.ticketcalendar()))

★ ticketgantt.py

#!-*- coding:utf-8 -*-"
import re, calendar, time
from datetime import datetime, date, timedelta
from genshi.builder import tag
    def get_navigation_items(self, req):
        if req.perm.has_permission('TICKET_VIEW'):
            yield ('mainnav', 'ticketgantt',
                   tag.a(u'ガントチャート', href=req.href.ticketgantt()))

チャット用「今北産業」 - tf/idf による単語抽出@IRC

 これまでの会話を要約し、入ってきた人に「今北産業」として提供する IRC マクロを実験中。
 friend 系列の IRC サーバでは、一度に三行より多くの行を送ろうとすると遅延が掛かるので三行で要約出来ると都合が良い。


 Webサービス上の類似の技術:

★ tf-idf による単語抽出@IRC

 td-idf の解説は以下が参考になる。

 チャットの場合は、「キーワード抽出対象テキスト」をどう決めるか、すなわちどのぐらいのログまでを遡って要約するかによって動きが異なって来る。どうすれば良いかは…用途と対象ログの性質次第かな?


 で、TF,N,DF はこんな感じにすれば良いのだろうか。

  1. 遡ったログの代表キーワード候補出現数 (TF)
  2. 全ログの行数 (N)
  3. 代表キーワード候補が含まれるログの行数 (DF)

 本来ならば「ログの行数」では無く「ドキュメントの数」となるのだが、idf=(log(N/DF)) の意味 (一般語フィルタ) がそこまで損なわれないような気がするので多分大丈夫…だと思う。自分の環境では IRC のログを自動で SQL サーバに積むプログラムを稼動させており、N や DF の値を求めるのが楽なのでログは SQL サーバに積むことをおすすめ*1
 TF を求める際は形態素解析が必要。マクロとして TF を求めるならば外部コマンドで mecabchasen を呼び出せば良いだろう。自分は PHP で組んでいるので php_mecab を使っている。


 とりあえず代表キーワードの抽出は出来たが、これをどう要約に使うか…

*1:正確には「形態素解析後」のデータを検索するべきであるような気がするが、手間がかかるしまぁいいだろう

コンピュータ脳

 部屋にいるときの「定位置」が二カ所あるのだが、ごみ箱が1個だと位置が合わない。2個設置しようかなと思っているとき、ふと

メインのごみ箱から ln (リンク) 張れればいいのにな…

なんて思ってしまった。
 本場の人はこんな事ばかり考えてしまうのだろうか。だとしたら楽しそうである、と思ってしまうのであった。

ニコニコ動画のフォントを変えてみる @ openSUSE 11.0

 参考文献:


 Flash の表示フォントはデフォルトでは sans-serif が選択されるらしい。つまり sans-serif のエイリアスの読み込み順序を変えれば Flash の表示フォントが変わり、結果としてニコニコ動画のフォントも変わる。
 副作用として sans-serif を使っている他のアプリケーションで困るかもしれませんね!


 手順は 認証がかかっています と同じ。M+1P+IPAG は自分の置き換えたいフォントに読み替えて進めれば良い。