an odd fellow

読書と写真と情報工学

おまえのすべてが燃え上がる

 

おまえのすべてが燃え上がる (新潮文庫nex)

おまえのすべてが燃え上がる (新潮文庫nex)

 

竹宮ゆゆこ先生の新刊、良かった。

 

取り返しの付かなさが良い。最初から取り返しの付かないとこから始まって、最後まで取り返しが付かない。取り返しの付かなさが全力で足を引っ張っている。もちろん主人公信濃は取り返そうとしてみるけれど、取り返しの付かなさは絶対にそれを許さない。

 

でもきっとこの話はハッピーエンドだった。ぶくぶくの黒い沼みたいな人生から、重り付きでも途切れていても人の道を歩くための話だった。

 

だけど、不幸だったのは彼女だけじゃ無かったのだ。幸せそうな主婦青葉さんも、バリキャリの美人白鳥さんも、みんな自分や他人にかけられた呪いが足を引っ張って、ままならない人生になる。

 

僕も気づいたら 24 だ。それなりに取り返しの付かなさを積み重ねてしまった。意外に、人生は短いのだ。良い小説だった。

 

竹宮ゆゆこ先生の書く擦れた大人の女のひとの話、大好きだ。知らない映画のサントラを聴くはいつか映画にして欲しいと思って居る。

 

知らない映画のサントラを聴く (新潮文庫nex)
 

 

男の着エロ画像をランダムで表示する slack bot を Python で作る

https://github.com/roronya/skinybotgithub.com

大学に六年も通って出来るようになったことが此のようなくだらんことでは、君のお母さんは泣いているぞ。

以下を見たら1時間で作れた。

PythonでSlackbotを作る(1) – ビットログ

このライブラリが強かった。slack の API キー取得してきたらコンフィグファイルに貼り付けて、あとは画像取ってくるロジックを2,3行書いただけ。

github.com

動作例

今年読んだ本

今年読んだ本 - an odd fellow

2014年消費したおはなしたちまとめ - an odd fellow

三年前から一月一冊をノルマに読書している。今年は達成した。ラノベも含むけど 19 冊読みました。

ろにゃさんの読んだ本 - 読書メーター

今年は旅行前の予習としてその土地を舞台にした小説を読むことが多かった。富良野旅行は三浦綾子の泥流地帯、函館旅行は司馬遼太郎燃えよ剣といった具合である。これはなかなか面白い経験だった。その土地に根差した人物を好きになると、その土地を踏むだけでテンアゲである。函館旅行なんか、土方歳三が討たれたと伝わる、今となっては何の変哲もない住宅街の真ん中で、一人で写真を撮ってブチアガって居た。

燃えよ剣〈上〉 (新潮文庫)

燃えよ剣〈上〉 (新潮文庫)

そういうわけで今年は燃えよ剣が一番印象に残った小説…としたいところだが、今年は三浦綾子の氷点を上げたい。

氷点(上) (角川文庫)

氷点(上) (角川文庫)

泥流地帯で三浦綾子にハマると、直ぐにデビュー作であり傑作と云われる氷点も読んだ。これがいい。氷点の良さを説明しきる言語能力を持たないのが口惜しい。

文章読本 (中公文庫)

文章読本 (中公文庫)

あとは谷崎潤一郎文章読本だろうか。色々消費して見ると、他人にその良さをどうにかして伝えたくなるんだが、その術を持たないことに気づく。いわゆる文章力というやつで、このノウハウ本は古来より需要があったらしく、文章読本という名で様々な人物により出版されており、手始めに谷崎潤一郎を読んでみた(村上春樹のものと迷った)という次第なんだが、これが良かった。文章の良し悪しなどはやはり感覚的なものではあるにせよ、それなりに理論立てて良し悪しが測れるようで、理系脳には有難い。少し齧っただけでも、その後の読書による経験値の稼ぎ方が変わった。しかし、結局のところたくさん読みたくさん書いて経験を積みなさいと言うことで、最近は気に入った作家の文章の写経などもしているし、毎日日記も付けている。

以上である。なんだか古めかしい本ばかり読んで居る。

来年は志賀直哉を読みたいと思っている。竹宮ゆゆこの新作と古典部シリーズの新作も読む積もりである。あとは村上春樹だろうか?同じ作家の本をまとめて読む機会が欲しいと思っていてこれを春休みにやる予定である。

jupyter に themes を適用する

jupyter に themes を簡単に設定することができる jupyter-themes を紹介する。また、jupyter-vim-binding と併用する際の設定についても書く。

jupyter-themes

jupyter に themes を設定できるコマンドツールを pip で入れられる。

github.com

$ jt -t onedork

これで themes は設定できる。

jupyter-vim-binding との併用

選択セルに themes が適用されない問題

jupyter-vim-binding と併用すると、CSS が競合して選択セルに themes が適用されない。これは jt コマンドに -vim オプションを付けることで解消できる。

$ jt -t onedork -vim

normal モードのカーソルの色を変える

デフォルトでは normal モードで緑のカーソルがチカチカとしている。せっかくなので themes にあった色を設定したい。これは~/.jupyter/custom/custom.cssを編集して変更できる。ファイルの冒頭に下記のように追加する。#0095ff は onedork でのカーソルの色に合わせている。

.cm-fat-cursor .CodeMirror-cursor {
 background: #0095ff;
}
...

諸注意

  • jt コマンドを叩くと custom.css が上書きをされるので、カーソルの色の変更をする設定は最後に行う。
  • jupyter notebook の再起動をしないと themes が適用されない。ブラウザのキャッシュにより変更がされていないように見える場合があるので、シークレットモードで確認をする。

MySetting

jt コマンドは -vim 以外にも色々オプションが付けれる。私はセルの幅を広くした。デフォルトでは 970 であるが、手持ちのノートブックの解像度を考えて 1300 とした(-cellw 1300)。また、jupyter-thems では画面上部のファイル名やツールバーが無効化されているのでこれを有効化する(-T -N)。

$ jt -t onedork -vim -cellw 1300 -T -N

f:id:roronya:20161204065154p:plain

【逐次更新】SQL でよくやる処理を pandas でやるときのメモ

github にまとめた

github.com

【Symfony2】DoctrineFixturesBundle で作ったフィクスチャを phpunit から呼びたいとき

機能テストをするときにテストデータを DoctrineFixturesBunle で作った LoadHogeData クラスを使いたいとき

  • LoadHogeDataクラスが ContainerAwareInterface を実装しているときどうするか
  • LoadHogeData が外部キー制約で怒られるときはどうするか

について書きます。

ほとんど以下の「テストコードからFixtureをロードする」項目からのコピペです。

www.karakaram.com

こうしました。泥臭さが出るけど致し方ない。

  • LoadHogeDataクラスが ContainerAwareInterface を実装しているときどうするか fixture に自分で Container をセットする。
  • LoadHogeData が外部キー制約で怒られるときはどうするか SET FOREIGN_KEY_CHECKS = 0 を無理やり叩いて外部キー制約を無効化する。
use AppBundle\DataFixtures\ORM\LoadHogeData;
use Doctrine\Common\DataFixtures\Loader;
use Doctrine\ORM\EntityManager;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Doctrine\Common\DataFixtures\Executor\ORMExecutor;
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
use Symfony\Component\DependencyInjection\ContainerInterface;

class HogeFuntionalTest extends WebTestCase
{
    /**
     * @var EntityManager;
     */
    private $em;

    /**
     * @var ContainerInterface;
     */
    private $container;

    public function setUp()
    {
        # kernel のブート {
        $kernel = static::createKernel();
        $kernel->boot();
        # }

        # EntityManager の取得 {
        $this->container = $kernel->getContainer();
        $this->em = $this->container->get('doctrine.orm.entity_manager');
        # }

        # 外部キー制約の無効化 {
        $connection = $this->em->getConnection();
        $connection->exec('SET FOREIGN_KEY_CHECKS = 0');
        # }

        # フィクスチャの実行 {
        $loader = new Loader($this->container);
        $fixture = new LoadAccountantData();
        $fixture->setContainer($this->container); # ContainerAwareInterface を実装している場合インスタンス化してから自分で container をセットする必要がある
        $loader->addFixture($fixture);
        $fixtures = $loader->getFixtures();
        $purger = new ORMPurger($this->em);
        $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
        $executor = new ORMExecutor($this->em, $purger);
        $executor->execute($fixtures);
        # }

    # 外部キー制約の有効化 {
        $connection->exec('SET FOREIGN_KEY_CHECKS = 1');
        # }
    }
…

外部キー制約で php app/console doctrine:fixtures:load がたたけ無いときはこっち

roronya.hatenablog.com

doctrine:fixtures:load で外部キー制約で怒られるとき

[Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException]

このエラーが出る。

結構調べたんだけど、結局データベースごと作りなおすしか無さそうでした。

というわけで、僕は以下のコマンドを叩いています。

php app/console doctrine:database:drop --force;php app/console console doctrine:database:create;php app/console doctrine:schema:update --force;php app/console doctrine:fixtures:load

データベースを作って壊してスキーマをアプデートしてフィクスチャをロードします。