2006/12/31
■ [sns] カテゴリ一覧 plugin
私はブログシステムに sns を使っているのですが,これはカテゴリ一覧を出す機能がありません.
しかしここのブログ を見るとメニューに,
Categories
として記事のカテゴリ一覧を出力している部分がありました.
ということで私もカテゴリ一覧を出力する plugin を作ってみました.下記の内容を plugin ディレクトリに入れて,サイドバー部分に <%= category_list => と記述するとサイドメニューにカテゴリ一覧が表示されます.
# category_list.pl - category listup plugin for sns # # usage: {{category_list("days")}} # wiki style {{category_list}} # html style <%= category_list %> sub category_list { my $max = shift; my (%category); my $buf; if ($max eq "") { $max = 365; } my @list = $sns->load_diary({rows=>$max}); foreach my $diary (@list){ my @sections = $diary->parse(); foreach my $section (@sections){ my $sec_title = $section->{TITLE}; if ($sec_title =~ s/\[(.*?)\] (.*)/"[<a href=\"diary.cgi?Search=" .&Util::url_encode("[$1]")."\">$1<\/a>]"/eg) { $category{$sec_title}++; } } } $buf = "<ul>\n"; foreach my $i (sort keys %category) { $buf .= "<li>" . $i . " ($category{$i})</li>\n"; } $buf .= "</ul>\n"; return $buf; }
■ [life] 年越しそば
今日は大晦日ということで実家の親と築地の仲買人と一緒に銀座の田中屋へ行ってきました.
だしが黒くて安心です.私はうどん王国にいってから未だに薄い色のだしに慣れずいます...
■ 関連スレ
後輩と IM で研究の話をしていると,下記のような情報をもらいました.
最近 2ch にも関連スレをオススメする機能が付きましたよ
オススメというのはいわゆる amazon などの商品ページに「こちらもオススメ」と表示されるやつです.
【いやだ】IT業界を本気で脱したいその16【つらい】 と 【富士通FIPについて教えて】 に相関があるというのはビールとオムツみたいに隠れた因果関係ですね...
という面白い情報をもらったのでさっそく私もチェックしてみました.
しかし「私のブラウザには表示されないですよ?」と聞くとどうも私は firefox の extension bbs2chreader を入れているためこのおすすめ部分が表示されていませんでした.
拡張機能を入れてスレを読んでいるとはツウですね...
と後輩から言われたのですが,なぜ私はこの拡張機能を入れたのやら謎な感じです...
今後スレ間の関連を意識しながら読むと新しい発見があるかも知れないですね.
2006/12/30
■ [R tips] R でクラスタリング
最近シラバスに記述されているテキストをクラスタリングする機会がありました.似ている講義をクラスタリングすることで類似する講義のシラバスを閲覧することができます.
ここでは統計解析ソフト R でベクトルデータをクラスタリングする手法についてメモしておきます.クラスタリングについてはこちらに詳しく書かれているので参照してみてください.
クラスタリングに入る前にまずデータを準備します.今回はここに記述されている 16 種類の動物のベクトルデータを用いることにしました.
下記の形式でテキストデータを保存します.
Hato 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0.5 Kitsune 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0.5 Mendori 1 0 0 0 1 0 0 0 0 1 0.3 0 0 1 1 0.5 Raion 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0.5 Gachou 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 Washi 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 Inu 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 Ookami 0 1 0 0.5 0 1 1 0 0 0 0 1 0 0 0 0 Shimauma 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 Ahiru 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 Neko 1 0 0 0.5 0 1 1 0 0 0 0 1 0 0 0 0 Fukurou 1 0 1 0.5 0 1 1 0 0 0 1 1 1 0 0 0 Tora 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 Uma 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 Taka 1 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1 Ushi 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1
コマンドラインから R を起動して,保存したテキストファイルを読み込みます.
> input <- read.table("a.dat", header=F, row.names=1)
そして各ベクトル間の距離を求めて,それをもとにクラスタリングを行ないます.
> input.d <- dist(input, method="euclid") > input.cl <- hclust(input.d, method="ward") > plot(input.cl, hang=-1) > # 結果を postscript に保存 > postscript(file="a.ps")
するとクラスタリング結果の図(デンドグラム)が表示されます.
最後にクラスタリング結果をテキストファイルに保存します.ここでは cutree でデータを 2 つのクラスタに分けます.
> # cutree の引数 k は何個のクラスタに分けるかを指定 > out <- cutree(input.cl, k=2) > write.table(out, file="out.dat")
out.dat には「ラベル クラスタ番号」の形式でデータが記述されます.
"Hato" 1 "Kitsune" 1 "Mendori" 1 "Raion" 1 "Gachou" 1 "Washi" 1 "Inu" 1 "Ookami" 2 "Shimauma" 2 "Ahiru" 2 "Neko" 2 "Fukurou" 2 "Tora" 2 "Uma" 2 "Taka" 2 "Ushi" 2
なぜかイヌとライオンが鳥類系のクラスタに分けられてますね...データを間違えたのかな.
■ 帰省
今日実家に帰省しました.機内で半券 1 枚で 200 円の商品券がもらえるというキャンペーンの紹介を見たので,カバンの中に入っていた半券を持って羽田の売店にいくと 2000 円の商品券になりました.なんかちょっと得した気分です.
実家に着いてから,夕食は三笠会館の大和に行ってステーキを食べました.
2006/12/29
■ 仕事納め
いつものように普通に大学に出動して,近くのコンビニに行くとレジの子に
仕事納めは昨日じゃないんですか?
と言われました.そういえば公務員系は 12/28 (昨日)が仕事納めでしたね.
「私は適当ですよ」と答えるとレジの子は「私は年末年始も仕事ですよ(涙)」と言っていました.コンビニは大変ですね.
■ 仕事を片付ける 88 のコツ
最近ちまたで流行りの lifehack ですが,下記のページに仕事を片付ける 88 のコツが書かれています.
今日は仕事納め?でもあったので机周りを最適化しておきました.
2006/12/28
■ カレンダー
もうすぐ今年も終わりです.今年はなんだか憂鬱な一年でした.来年こそはすっきりさせたいものです.
すっきりさせるためには日頃の自分管理から,ということで来年のカレンダーを探してみました.
私は普段自分の予定は自分の wiki ページに記入していますが,デスクトップ上にも xcalendar(古..)を表示させたりしています.(Web 版の xcalendarもあるらしい)
とりあえず Web で面白いカレンダーがないか探してみると下記のページを見つけました.
私は12 sided calendarにしてみました.言語や週の始まりをオプションで選ぶと pdf を生成してくれます.ただ祝祭日に対応していない様子...
その他
■ 森 博嗣のブログ
私は大学の話をしましょうかを読んで著者の森 博嗣さんは面白いひとだなと思っていました.ブログがあったので少し読んでみました.
例によって淡々と書かれているブログなのですが,とくに
あたりは本の内容の書き方と同じ感じで良いですね(あたりまえですが...).
2006/12/24
■ 第九の里 徳島 ドイツ館
出張のときに飛行機の中にあった機内誌に徳島に第九の里があるという記事を読みました.ドイツ,オーストリア音楽好きの私としては行かなくてはと思いました.
ということでなぜかクリスマスイブに車で行ってきました.うどん王国からは車で 1 時間くらいでした.
このドイツ館が第九(ベートーヴェンの交響曲 第 9 番)の日本初演の場所なので「第九の里」というらしいです.私はベートーヴェンというと,
ほとばしる情熱...
時代が変わっても色あせない魅力
といった力強い印象を勝手に持っていたのでドイツ館もとても期待していました.
行ってみるととてもキレイな建物でした.誰もいないので
やっているのかな...
という疑問を持ちながら入口に「あなたもなりきりベートーヴェンパネル」が置いてあったのでさっそく記念撮影...
私以外に人の姿が見えないのですが,一応営業していたので入場料を払って入場です.中では第九シアターという第九初演の時の話が人形劇?みたいな感じで見れました.
結局他の観光客に誰にも合わないままシアターが終了です.外にベートーヴェン像があったのでポーズして帰りました.
ドイツ館は第九の里というイメージよりも静寂の里っていう感じでしたが,ひとがいない分貸し切り状態で良かったです.
2006/12/23
■ なりたいお仕事ランキング
今日は身近な音楽家の方が演奏に出るということで高松冬のまつりに行ってきました.
高松市中央公園でやっていたのですが,そこで子供達がテレビ関係者に「将来なりたい職業は?」という質問を受けていました.
ケーキ屋さん!
野球選手!
と元気良く答えているのを見ていて私は何だったかなと考えていました.しばらく見ていると,
公務員
ゲーマー
ニート
というちょっとユーモアの効いた子供も居ました.私は小学生のころは郵便配達のおじさんに憧れていましたが,憧れと実際に生涯の仕事と選んだものは全然別なものになっていました.皆さんの場合はどうでしょうか?
参考
■ インターネットの法と慣習
職場でもネット利用に関するルール作り等と言われているので参考程度に読みました.
現在のネットはウソも本当も堪能できるところがよかったのですが,こういうのものを整備するのはなかなかむつかしそうですね.遠めから見ておきたいところです.
2006/12/20
■ 卒業アルバム写真撮影
今日は卒業アルバムの写真撮影会がありました.卒業アルバムをゲッツしたひとはぜひ見せてください.
2006/12/14
■ 留学生交流会
今日は職場で留学生の交流会がありました.私はかなり遅れていったのですが,どこかの国の美女達がちょうどダンスをしているときでした.
私は交流する場は得意ではないので,国際交流なんていうともっと苦手です.
普段工学部キャンパスの喫煙スペースで良く会う外国人の方とたまたま目があったので,
See you later in tabaco space...
というと,
ハハハ,わかりました
と日本語で返答されました.なんだ日本語話せるのか...
■ 銀行窓口の予約
最近銀行のカードの読み取りが調子が悪いので交換しようかなと思っています.
Web を見ているとどうやら窓口予約なるサービスがあるんですね.
他の銀行では窓口の混雑状況まで分かるらしい.これは職場の食堂や事務でもやって欲しいですね.
■ ついやってしまったサイト
下記は今日 Web をみていてたまたまやってしまったサイトです.
- 視力検査 - あなたの視力 今いくつ? ⇒ 0.3 でした.
- MAP OF THE INTERNET ⇒ 日本は数ヶ所しかリクエストがない
- あなたはビルゲイツの試験に受かるか? ⇒ まずは Google 先生に聞いてみたくなりますね...
2006/12/11
■ [sns] spam filter on sns
このブログにも最近スパムコメントやスパムトラックバックが届くようになりました.
ここのブログシステムは sns なのですがスパムフィルターを探してみるとさっそくありました.
どうやら plugin/filter.pm にフィルタルールを書けば良いだけらしい.そこで下記のように記述したら確かにバッチリ効いてました.
# filter.pl sub _comment_filter { my $name = shift; my $comment = shift; # TODO ここに任意の判定ロジックを記述してください if (length($comment) > 256) { #長いのはイヤ! return 0; } if ($comment =~ /\n/) { # 複数行もカンベンして return 0; } if ($comment =~ /<[aA] /) { #リンクもダメ return 0; } return 1; } sub _trackback_filter { my $title = shift; my $excerpt = shift; my $blog_name = shift; my $url = shift; # TODO ここに任意の判定ロジックを記述してください if ($excerpt =~ /<[aA] / || $excerpt =~ /http:/) { return 0; } # 要約の中にリンクが含まれる場合ははじく return 1; } 1;