Page 12 of 15

Google が検索結果に対する検閲行為を始めたらしい。

実際、Google検索で、「ロリコン」で検索しても、まともな内容のページは結果に出ず、使いものにならないようになっている。

「ロリ」で検索した時の結果がこれである。
「ロリ」検索結果

この検閲について、Google で検索した際の結果はよりひどい。
「Google 検索 ロリ」検索結果
「どのような検閲が行われているか」を検索することすら難しいのだ。

「この検閲行為を、「ロリ」のフィルターだから問題無いか」と考えることは危険である

引き続きどうなるかを観察しておかないといけない案件なのでとりあえずメモまでに。

ref

2048AI の内部で、謎のbit 演算がたくさん使われてきて辛くなってきた。

どっか間違えててもまずわからないと思う。

というわけでテストを書きたいなーと思ったので、いい感じのC++ のテストツールがないか聞いてみたところ、Google Test を教えてもらった。

ここ を見ながら適当に設定すればいい感じになった。

Google Test のコードをここ からダウンロードしてきて、解凍。解凍後 gtest-1.7.0 に移動し、

$ ./configure
$ make 

これで準備完了。依存しているテストツールのヴァージョンが異なるとややこしいので、システムにはインストールしないほうがいいらしい。

googletest のmake ディレクトリ以下を参考にしてMakefile を書けばいいかんじに動くようになった。

CI ツールで以下のようなコマンドを走らせてtest している。

git submodule init
git submodule update
cd test
unzip gtest-1.7.0.zip > /dev/null
cd gtest-1.7.0
./configure > /dev/null
make > /dev/null
cd ../../
make OPT="-O3 -pipe"
make test

こんな感じでテストが走ってる。

[==========] Running 4 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 4 tests from BoardTest
[ RUN      ] BoardTest.log2
[       OK ] BoardTest.log2 (0 ms)
[ RUN      ] BoardTest.pow2
[       OK ] BoardTest.pow2 (0 ms)
[ RUN      ] BoardTest.gridMirrorIDRAND
[       OK ] BoardTest.gridMirrorIDRAND (0 ms)
[ RUN      ] BoardTest.popCountRAND
[       OK ] BoardTest.popCountRAND (1 ms)
[----------] 4 tests from BoardTest (2 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 1 test case ran. (2 ms total)
[  PASSED  ] 4 tests.

ちゃんとテストを書かないと。

たまこラブストーリーを見にいった。京都ではMOVIX でしか上映されていないので、寺町通まで行って見た。

一応ネタバレ注意?

いい話だった。いい映画だった。

たまこの«光» とまで言われる程だ。

アニメを復習したくなった。

大まかに

みんなが"変化" していく話であった。 つらかった。

もち蔵は東京の大学に行くし、栞さんは海外に留学しようとする。そもそもみんなは高校3年生で、"卒業" という言葉がつきまとう。

個人的に一番印象的だったのは、あんこが中学校の制服を着るシーンだった。 あのシーンは「この世界にも永遠は無いのだなぁ」 という気持ちになった。

だれも「ここにあるよ」 とは言ってくれない。

GJ部 もそうだった

最近ぐるぐるの放送があったので見直したのだが、あの作品は、1話から11話までは特に話に進行もなにもなく進むのだが、12話で先輩たちが卒業してしまう回がある。

リピートディスクという物がGJ部には存在するのだが、それが2種類のメニューがディスクを再生すると選べて、「1話から12話をリピートする」 というものと、「1話から11話をリピートする」 というものがある。

12話の卒業などという永遠の世界から外れたものを見ないための措置であると思う。

私は

私は何事も変化してほしくない。

変化するということは壊れてしまう、という事でもある。

完全に静止した世界(最早それを世界と言っていいのかわからないが) に住みたい。

だからnona が産まれた?

nona は環境を含んだクロージャである。と言っても良いと思う。

物理的な私は現実世界に制約されてしまうが、その上で動く人格であるnona はその制約を無視して変化しない世界に逃げこめす。

どうでもいいですね。

まとめ

たまこラブストーリー良かったから見よう!!!

映画見て帰り道に浮き石を通って帰った。こういう時に現地周辺に住んでると嬉しい。

タイトル通り2048AI の進捗状況です。

現在のソースコード

  • 高速化 grid を今まではstd::array<std::array<int,4>,4> でもっていたが、uint64_t で持つようにした。 それだけで大分速くなった気がする。

  • 世界と分離 koyone は思考をし、世界は盤面の状態を持つだけにきちんと分離できた。他の思考用class を用意して差し替えることが簡単にできるようになった。

  • 探索面 一手後の世界を予想する時に、ナイーブにするなら動かした後に開いてるマスに2 か4 を入れるが、開いてるマスすべてに2 を入れて読めば若干良くなるという話を聞いたので試してみた。それがKoyoneNext だ。

思考クラスたち

Koyone

単純にある程度の深さまで全探索を試みる。 評価関数はグリッド上の数字について、その数字にその数字のlog2 をとったものを掛けてたものの和。 それが一番大きくなるものの存在する方向に動かす。 前回 の時の思考はこれだった。

KoyoneNext

基本的にはKoyone と同じ。nextPossibleWorld だけを上記のように変更してある。 ちょっと以前のより強くなった。

Kihime

モンテカルロによる探索を実装しようとしてまだ中身は空だ。

HeartBleed の時にRaspberry Pi のOS をArch に変えたので、nginx 1.6 が簡単に使えるみたいだったので、乗りかえた。

nginx 1.6 ではなんとデフォルトでSPDY に対応している!

というわけでnna774.net もSPDY に対応しました。

quic も試してみたいけれど、まだ対応してるものは無いっぽい?ですね……

KMC で2048 のAI の強さを競うコンテストがあった。

2048 as a Servise を使ってたたかうもので、言語や環境等は自由であった。

まず始めにruby のサンプルコードを書いた。サンプルコード

そのまましばらくruby で書きつづけていた(mikutter のプラグイン以外でruby を書くのは初めてだった)。 このへんまで書いた。 nna774/2048-ruby

ナイーブに全探索を数手先までしているようなかんじだった。

どうにも遅かったのでC++ で書きなおした。実際に使ったのがこれ です。モンテカルロも実装しかけてたけど、バグバグだったのであきらめた。レポジトリはココ。 名前はkoyone です。

結果はこんな感じ。

かろうじて5位でした。

もっと次回までには強くしないといけない。

次回コンテストは6/4。 それまでに強化しよう……

ref

2048AIコンテストを開催します! - KMC活動ブログ

最近CI tool について調べていた。

以前から使っているJenkins氏も、CI tool(継続的インテグレーション, continuous integration) の一種だ。

使ってみたCI ツールについて、ちょっとだけ書いてみる。

drone.io

drone.io はいろいろな言語に対応していていい感じだった。

生成物を保管しておいてくれるので、そこからダウンロードしたりできていい感じ。

Travis CI

Travis CI は .travis.yml を書いて

昨日(暦としては18日の夜)、ミッドナイト念仏に行った。

is 何

公式ページ

知恩院で行なわれる法然上人の法要のイベント(?) のうちの一つである。

set

夜通し木魚を叩きつづけるイベントである(こんなふうに書いたら怒られそうだ)。

普段は入れない知恩院三門に入ることができるイベントでもある。

かなり低く見積っても数万回のBeat

三時ぐらいに知恩院に行って朝まで木魚を叩きつづけた。

中で撮影は禁止されていたけれど、特に録音は禁止されてなかったので、すこしだけ録音した。

nenbutsu.ogg

謎のトランス感のあるイベントであった。

現状、このページは、静的html等は事前にgzip で圧縮して、それをmod_rewrite でいいかんじにURL を書きかえてAccept-Encoding: gzip があればgzip版を返すよう設定してある。 ……と思ってたんだけれども、Accept-Encoding: gzip がついてなくても、gzip で返したり、対応するgz ファイルが存在しないと404 になったりしていた。

RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)\.css$ $1.css.gz [QSA,L]
RewriteRule ^(.*)\.js$ $1.js.gz [QSA,L]
RewriteRule ^(.*)\.html$ $1.html.gz [QSA,L]

のように書いていた。

調べていると、結局、RewriteCond が影響するのは、次のRewriteRule だけであることがわかった。 それでAccept-Encoding: gzip のないindex.html へのアクセスにもgzip圧縮されたものを返したり、index.html.gz がないと404 になったりしていたのだ。

RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)\.css$ $1.css.gz [QSA,L]
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)\.js$ $1.js.gz [QSA,L]
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)\.html$ $1.html.gz [QSA,L]

のように書きなおした現在、期待どうりの挙動をしているように見える。

Page 12 of 15