カテゴリー
ゲーム

未だ新天地にたどり着けず

艦これ。未だに3-4と4-4前にして止まっている。

3-4。基本的には火力勝負で、空中戦は敵の空母が出てきたときにこちらの空母が王戦する程度。なので、こちらの赤城はフルに戦闘機を積んでるし、航空戦艦の開幕爆撃なんて気にしない。ということは、今Lv40の航空戦艦群より、今Lv30の正規戦艦群の方が、戦力になるのではないか?
ちょっと二人並んでくれたまえ。

陸奥対扶桑

このように、航空戦艦のステータスは、10Lv低い戦艦のそれと同じくらいだ。ひょっとしたら特殊能力があるのかもしれんが、どこで発動するかも分からないような危険な技を作戦の計算に入れるわけにはいかない。

ということで、手元の航空戦艦を全て2群に回す。君たちには、1群の艦が疲れたりドック入りしたりした場合の穴埋めとして樺ってもらう。

ということで、3-4攻略の艦隊の編成は決定!
「航戦戦戦戦戦」の殴り込みだ!

(中略)

5000あった鋼材が1000を切った所で今日は終わりにしましょうか。

カテゴリー
PC

bsfilterの運用

昔の日記で書いた気がしたけど、こちらの日記ではまだ書いてなかったので書く。

日々到着するspamメールが厄介なので、何かしらの対策をしたいと思った結果、調べた当時にちょうど出来てきたbsfilterが良さそうだったので、インストールして以来、ずっと使っている。

うちのメール環境はIMAP4で、メールサーバーでもシェルが使えるという便利な環境(自宅サーバーなんだからそうだ)なので、これに沿った話になる。

基本方針。

  1. sendmail.cfとかprocmailをいじる設定は行わない。昔は行ってたけど、メールが来る度にbsfilterが立ち上がるのが重い上に、多重起動への対応ができないので、以下のポリシーに変更した。
  2. 10分に1回、INBOXのメールでまだチェックしていないメールをチェックし、spamメールだったら専用のフォルダに移動する。
  3. どうしても誤認識は出る(特にspamメールをhamと誤認識するのはしょうがない。逆を出さないためにも)。ので、INBOXのメールでspamメールだったものは手動で別のフォルダに移動する。
  4. 1日1回、3.で移動したメールを、bsfilterに「このメールはspamメールですよ」と再学習させる。

それでは設定を開始しよう。

まずIMAPサーバの設定から。INBOXの下に「0spam」「1clean_to_bsfilter」「1spam_to_bsfilter」というフォルダを作る。

次にbsfilterの設定。ホームディレクトリに.bsfilterというディレクトリを作り、その中で作業する。

bsfilter.conf

imap-server localhost
imap-port 143
imap-user imap-user-name
imap-password imap-user-password
imap-folder-clean INBOX
imap-folder-spam INBOX.0spam
jtokenizer bigram
spam-cutoff 0.2

imap-user-name と imap-user-password はそれぞれ置き換えること。言うまでもないことだが、bsfilter.confにはパスワードが平文で含まれているので、パーミッションは600で。

さて、bsfilterを運用するためには、まずspamメールとhamメールのデータベースが必要になる。何通かspamメールとhamメールを保存しておき、以下のコマンドを実行する。

% bsfilter --add-clean ~/Mail/inbox/*
% bsfilter --add-spam ~/Mail/spam/*
% bsfilter --update

そして、以下のシェルスクリプトを作成する。

#!/bin/sh

BSFILTERHOME=/home/togawa/.bsfilter ; export BSFILTERHOME

SCRIPT_PID="${BSFILTERHOME}/run_script.pid"
if [ -f $SCRIPT_PID ]; then
  PID=`cat $SCRIPT_PID `
  if (ps -e | awk '{print $1}' | grep $PID >/dev/null); then
    exit
  fi
fi

echo $$ > $SCRIPT_PID


/usr/local/bin/ruby ${BSFILTERHOME}/bsfilter --imap --imap-fetch-unflagged \
    --insert-flag --insert-probability --imap-reset-seen-flag --refer-all-header \
    -a inbox

rm $SCRIPT_PID

ざっと説明すると、

  • IMAPを使い (–imap)
  • 「X-Spam-Flag」ヘッダがないメールを対象に (–imap-fetch-unflagged)
  • 見たメールには「X-Spam-Flag」ヘッダをつけ (–insert-flag)
  • 見たメールには「X-Spam-Probability」ヘッダをつけ (–insert-probability)
  • IMAPの既読フラグをリセットし (–imap-reset-seen-flag)
  • 全てのヘッダを判断の対象にし (–refer-all-header)
  • データベースを自動で更新する (-a)
  • 処理するのはINBOX

の意味。他に必要な設定はさきに書いたbsfilter.confにある。

実行してみて何もエラーが出ないことを確認すること。
このスクリプトを10分に1回呼ぶように、crontabを編集する。

*/10    *       *       *       *       /home/togawa/.bsfilter/bsfilter_imap.sh

最後に、1日1回呼び出される「spam/hamの誤認識再学習」用のスクリプトを書く。

BSFILTERHOME=/home/togawa/.bsfilter ; export BSFILTERHOME

/usr/local/bin/ruby ${BSFILTERHOME}/bsfilter -v --imap -s -C -u --refer-all-header INBOX.1spam_to_bsfilter
/usr/local/bin/ruby ${BSFILTERHOME}/bsfilter -v --imap -c -S -u --refer-all-header INBOX.1clean_to_bsfilter

ざっと説明すると

  • INBOX.1spam_to_bsfilterのメールはspamだよ。再学習してね。
  • INBOX.1clean_to_bsfilterのメールはhamだよ。再学習してね。

これを1日1回呼ぶように、crontabを編集する。

0       4       *       *       *       /home/togawa/.bsfilter/bsfilter_restudy.sh

最後に。何せメールが絡むことなので、運用に入る前には入念なエラーチェックを忘れずに。

(追記)
IMAPサーバ上でシェルやcronが使えなくても、他にシェルやcronが使えるマシンがあれば、そこでbsfilterを動作させればよい。

カテゴリー
FreeBSD

シェルスクリプトつれづれ: 定義されていたらhoge、いなければ空文字列

jail周りを追いかけていて知った知識を小出しにしてアクセス数を稼ぐメソッド。

/etc/rc.d/jail にこんなコードがあった。ちょうどjailを起動するコマンドの部分。

eval ${_setfib} jail -n ${_jail} ${_flags} -i -c path=${_rootdir} host.hostname=${_hostname} \
                        ${_addrl:+ip4.addr=\"${_addrl}\"} ${_addr6l:+ip6.addr=\"${_addr6l}\"} \
                        ${_parameters} command=${_exec_start} > ${_tmp_jail} 2>&1 \
                        > /dev/null

${_addrl:+ip4.addr=\”${_addrl}\”} とはなんだろう、と思っていろいろ調べた結果、この部分は
「変数_addrlが定義されていれば ip4.addr=”${_addrl}” に。定義されていなければ空文字列」
という意味になるらしい。

カテゴリー
ゲーム

艦隊これくしょん

コミケ終わりの週から始めたので、もう2ヶ月になる。

艦これ一覧

僕はこういう「事前準備型ストラテジーゲーム」が好きだ。代表的なのは「サカつく」であろう。選手を揃え、疲労度を気にし、年齢による引退と後継者の育成に気をつけ、それでいて競技では勝つ。そんなマネージャの体験が味わえるゲームの中に、この「艦これ」も入る。

  1. 疲労度制度: 艦娘は2-3回連続で出撃すると疲れた状態になる。疲れた状態で更に出撃すると、性能が発揮できないばかりか、突然の轟沈というリスクがあるので、極力そういう娘は休ませたい。となると、特定の娘が休んでも穴を埋められるように、常に出撃する戦力の3-4倍の戦力を均等に育てていかなくてはならない。この辺がドラクエ3(古い例えだなー)と違うところで、僕は好きだ。
  2. めったに轟沈しない: このゲームでは一旦轟沈した娘を復活させる手段がほとんど存在しない。「ほとんど」というのは、事前にあるアイテムを装備しておけば生き返ることが出来るのだが、死んでから準備しても遅いのである。しかし、公式の回答を信じるならば「戦闘開始時(および野戦突入時)に『小破』以下である娘は轟沈しない」ということになっているので、例え轟沈してもそれは提督(僕だ)の無謀な突入命令にある、ということになる。いずれにせよ、「中破以上なら退却」を守っている限り、轟沈はない。(ちなみに今のところ1人も轟沈させてません)
  3. 振り込めない詐欺: 大抵のプレイヤーは0円、もしくは入渠ドッグ2000円しか課金していないようで、どうやってお金を稼いでいるのかが不安になるが、安いのはいいことだ。

ということで、見た目でぬるいゲームだと思っていると実はとんでもなくハードなので、食わず嫌いの皆さんもやってみてはいかがだろうか。

カテゴリー
フラッシュメモリ

SanDisk Extreme USB3.0 高速フラッシュメモリ SDCZ80 16GB サンディスク 海外リテール[並行輸入品]

復活記念に、昔買って驚愕したSandiskのUSBメモリのベンチマーク結果をあげておく。

20130510072143b00

なんですかねこの驚異的なランダム書き込みの早さは。
我が家ではこのメモリにFreeBSDのブートに必要なファイルを入れて、USBブートしてます。