Hatena::ブログ(Diary)

きちめも

2012-03-19

はてなブログ取った

16:09

http://seikichi.hatenablog.com/

せっかくなので移行してみる.

2011-06-24

ICPC国内予選

04:04

http://icpc2011.ait.kyushu-u.ac.jp/icpc2011/common/guest_standings_ja.php

317で参加.全体7位で学内3位.

先輩と私がコーダー,もう一人の先輩はペアプロの突っ込み要員.私が担当したのはA,B,D.Aは篩,Bはstd::stack<char>で適当に,Dは円盤が最大で24枚しか存在しないので,状態をintのビットで保持して全探索とメモ化.


激しく練習不足で反省気味.私の担当分は大抵サンプルでバグを発見していた.そこで発見できたから良いという話もあるが,あれぐらいバグ無しで一発で通せないと不味い気がする.そもそも1年間にチーム全体で解いた問題数が40を超えていない説があってですね…….


SRMから逃げない」を目標にして頑張ることにする.せめてアリ本ぐらいは読まんとなぁ.

2011-05-16

5月前半

03:30

どうでも良いメモ集.

てんぷれーと難しい

スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践という本を読み始めた.Lua等のスクリプト言語に触ったことがなかったので何となく.それはそうと5章で「Luaヘルパークラス」というものが出てくる.これを使うとC/C++からLua関数を呼び出すのが楽になる(以下参照)

LuaHelper luah;
luah.SetLua(L);
LuaFuncParam params, results;
params.String("left").Number(100).Number(200);
if (!luah.CallFunc("on_mouse_click", &results, 2, &params)) {
    printf("%s\n", luah.GetErr());
} else {
    bool result = results.GetBool(0);
    const char *mes = result.GetString(1);
}

もうちょっと綺麗に書けないかな,と思ったので自分で何か書いてみた.可変長どころかテンプレート自体で何かを書いてみるのが始めてな気がする.むずい.せっかくなのでgistに置いた.以下利用例.

#include "luahelper.hpp"

int main(int, char**) {
    auto L = std::shared_ptr<lua_State>(lua_open(), lua_close);
    luaL_openlibs(L.get());
    luaL_dofile(L.get(), "sample.lua");

    kichi::LuaHelper LH(L);
    bool success;
    double ret1;
    std::string ret2;

    /* > sample.lua
       function sample(a, b)
           return a+b, "Waha-"
       end
     */
    std::tie(success, ret1, ret2) = LH.CallFunc<int, std::string>("sample")(1.0, 2);
    if (success) {
        std::cout << ret1 << ", " << ret2 << std::endl;
    }

    /* > fuga.lua
       return 1, "seikichi"
     */
    std::tie(success, ret1, ret2) = LH.DoFile<int, std::string>("fuga.lua")();
    if (success) {
        std::cout << ret1 << ", " << ret2 << std::endl;
    }
    return 0;
}

ちなみにgcc4.6の-std=gnu++0xで通った.相変わらず適当なC++力.

例会講座

サークルの講座(15分で適当な話題を発表)が久々に回ってきたので言語モデルとか漢字変換の話をした.2回生の頭にバイト先で受けた研修(?)を圧縮しただけですよ(ゲフッ.書いたコードはこんなん.全体的に投げやり.もうちょっとマシな言語モデルを作ろうと思っていたのだけれど,説明が面倒+準備開始が当日深夜 だったので残念な出来に.まぁいいか.

自炊

ScanSnap自炊バーコード自動認識→amazonAPIでタイトル取得 の幸せな日々を送っていたのだが,白黒の縞模様のページがあるとzbarからの返事が帰ってこなくなる.仕方ないのでulimit(1).

tmp=tmp
check=3
file="hoge.pdf"
page=$(pdfinfo $file | grep -E '^Pages' | sed -e 's/^Pages:\s*//')
pdfimages -j -l $check $file ${tmp}_h
pdfimages -j -f $(expr $page - $check) $file ${tmp}_t
for file in ${tmp}_*; do
    ulimit -t 10 && zbarimg -q $file \
        | uniq \
        | grep -E '^EAN-13:' \
        | grep -v -E '^EAN-13:192' \
        | grep -v -E '^EAN-13:191' \
        | sed -e 's/^EAN-13://';
done
rm ${tmp}_*

サークル

「今年は新入生と一緒にC++でゲーム作るかー!」と思って練習がてらに以前C#で書いたものを移植していた.普段Linux上で生活してるので,そっちでコード書けるのは快適.とは言えノートの方はWindowsなので,MinGWでごにょごにょしてたら時間がサクサク消えていった.ちなみにMinGW上でCMakeする場合は -G "MinGW Makefiles" としてやると良いらしい.何のこっちゃ.

Python

自炊関連でどーでもいいプログラムを動かしていたのだが,stderrに吐かせているログをファイルにリダイレクトするとエンコード何たらのエラーを吐く.もしやと思って確認してみると sys.stdout.encoding がリダイレクトするとNoneになっている(ちなみにリダイレクトしない場合はLANG見てそう).ということで明示的に.encode('utf8')してやって解決.

Juman

研究室の先輩(Mac)が上手く入れられんと言うので見てみた.ココ見て解決.どうでもいいがstraceってMacに無いのね,知らなかったぜ.

2011-05-01

4月

| 01:53

今年も慌しい4月だった.

大学

今期は2コマ(4回生必修).研究室の拘束も強くないのだが,せっかく配属されたのだから「家で出来ることは研究室に行ってする」ぐらいの気持ちで望みたい.だからと言ってラノベ読むのはどうなのって気もするけど.

ちなみに研究室配属がどのように決定されているかは不明.今年は実験の比重が大きいと風の噂で聞いたが,どこまで本当なのか.隠さずオープンにしろよと思わんでもない.

研究室

無事に第一希望の研究室(知能情報のY研)に配属された.卒論自然言語処理っぽい方向になった.既に忙しい研究室もあるようだが,うちはまだまだまったり.ダレないように気を付けたい.

ちなみに院試はまたちょっと考え中;-)

サークル

今年はそろそろ30人入部したことになるらしい.今年も新入生と一緒に何かゲームでも作るかなぁという気分.まだまだ現役ですよ.

新歓系のイベント以外では,読書会に参加したりといつも通り.今年はゲーム以外にも何か作ろうと画策中.ネタは決めているのでちびちび進めたい.

アニメ

タイバニ,あのはな,いろは あたりが楽しい.やっぱオリジナルは続きが気になって素敵.それ以外では C,DOG DAYS,日常,青の祓魔師Aチャンネル を見てる.書いてて気付いたけど,今期は結構アニメを見ているらしい.

積読

入門自然言語処理
何となく買って放置していた.5章まではPythonの入門的な色合いが強く退屈.現在7章.ちゃっちゃと読み終えたい.
カーネル多変量解析
これまた何となく生協で買ってしまった本(そんなんばっかり……).後半までカーネルの理論的な話は出てこないので気楽に読める.SVMの章は割と知ってることばかりじゃないかなーと甘く見ていたが,案外そうでも無かった.νトリックや1クラスSVMはどこかで聞いたことがあったが,ちゃんとした解説を読むのは初めてだった気がする.またSVM以外にも主成分分析やクラスタリングなどへのカーネル法適用が載っていて楽しく読めた.現在6章でカーネルの理論のお話.

その他

風邪で体温が39.2度まで上がった.1人暮らしで風邪を引くと,布団に入る際「このまま寝てしまって大丈夫なのか.次起きた時今より高熱でどうしようもなくなったりしないか」と悩む.どうやらインフルエンザでは無かったようで,復帰も早かったのが幸い.

そういえば友人が桂キャンパスへ流された.「晩飯行こうぜ!」などと誘えなくなって寂しいもんだな,と思ったり.と言いつつよく吉田で見る気もするが.

2011-04-03

Twitterで自分の発言に関連した発言を読みたい

09:56

動機

  • ラーメン食べたいなぁ」とpostしたあとに,@無しで「ラーメンなら夢語」とか言ってくる発言を読みたい
  • ただしクライアント非依存にしたい(TweenやTweetDeckから読めるようにしたい)

最初はtwitterAPIプロキシを作りtf-idfのコサイン類似度が一定以上の発言にハッシュタグもどきを付けて,クライアントの方でタブ分け等をすれば良いと思ったが,冷静に考えたらprotectedのボットを作ってRTすれば良いと気付いた.ということで書いてgithubに置いた

使い方

  1. ボット用のアカウントを作り(protected推奨),自分のアカウントからフォローしておく.
  2. プログラムを起動(% similot.py).OAuthの認証は2回行われる.自分のアカウント→ボットの順番で行う.同じアカウントで2回認証しないように注意.
  3. 自分のアカウントのTLで自分の発言に類似している発言がボットの方でRTされるので,適当にタブ分けなりリストなりで読む.

必要なライブラリや設定はREADME参照

注意

  • 俺「ラーメン食べたいなぁ」→友人「そこで天一!」とかの検知は無理.要するに同じ単語が入ってないとダメ.
  • それなりにノイズが入るので,無いよりマシかなー程度で使うと良いと思います.
    • 口語分かち書きは難しいですね
    • 設定のmax_postsの値(デフォルト1000)を増やせばtf-idfのidfが効いてきてマシになるかも.まぁメモリと適当に相談して下さい.