行く記憶の流れは絶えずして

戻ってこないのでメモするところ

突然ですが保険の話

被保険者が私、親が加入し一人暮らしの機会で引き継いだ保険があります。

支出が厳しいので見直しもかねてみてみたところ…

 

月間払込額:11000円(知ってた)

特約付積立終身保険(そうなんだ)

特約部分:10500円(!?)

 

何ですかこれは…

契約の控えをみると特約全部入ってるっぽい。3大疾病、傷病、入院などなど。

積立部分ワンコインって呆れを通り越して笑えてくる。

いっそのこと特約だけの定期保険でよかったのでは?

 

月2000円の共済でいいんじゃないかと本気で思えてきた。

最近、カード会社から保険料無料の謎保険の案内が来てたけどそれもありか?

( 何か裏がありそうなので怖いけど )

 

比較対象を知らない、事由発生時に実際いくらいるか知らないので見直しには時間がかかりそう。

そこをついて保険屋は成り立っているところもあるんだろうな。

勉強することが増えましたとさ。

あけましてTensorflow on centos6

 

見てくれる人がいるかわかりませんが、明けましておめでとうございます。

 

新年ということで実家からVPSにTensorflowを入れてみました。

何をさせるからこれから考えます。

 

導入(Python)

とりあえすつまづいた点を挙げていきます。

入れ方はこちらを参考に。

CentOS に Python2.7, Python3.3を入れたメモ - Qiita

  1. CentOS6.6なのでPythonのインストールから
  2. 動作環境がC++Pythonなので、せっかくだからPythonにしました。
  3. 2系と3系があるそうですが、馴染みがあるのが2系なので2系にしたらはまってしまった…
  4. 結局Pythonは3系にしました
  5. ここから私の浅い知識なのでいくらでも回避方法があると思います。それも面倒な方はご参考に。
  6. 2系(2.7.6)を入れようとすると、
  • numpyが文字コードUCS2で入る
  • TensorflowはUCS4
  • ってことになり、Pythonは(私の知る限り)どちらかの肩を持たなければいけませんが無理でした。
  • というわけで3系にしましたが、勢いで最新版の3.5.1を入れたらTensoflowが入りませんでした。
  • URLから察するに3.4.*ならいいだろうと思ったからいけました。

 

(はてなキーワードとSyntaxHighlighterがケンカしてうざい ので引用にしてます)
curl -O https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
tar zxf Python-3.4.4.tgz
cd Python-3.4.4
./configure --prefix=/opt/local/Python344
make && make altinstall
curl -kL https://bootstrap.pypa.io/get-pip.py | /opt/local/Python344/bin/python3.4
/opt/local/Python344/bin/pip3.4 install virtualenv

 

導入(Tensorflow)

mkdir tensorflow
/opt/local/Python344/bin/virtualenv --system-site-packages tensorflow

source bin/activate

./bin/python3.4 -m pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.6.0-cp34-none-linux_x86_64.whl

実行時にglibcのバージョンが足りない

Centos6はglibcのバージョンが2.12止まりなので、Centos7からもらいます。

そのアイデアはこちらから頂きました。

Python - root無しの環境でtensorflowを使う - Qiita

 

mkdir tflib
cd tflib
curl -O http://ftp.riken.jp/Linux/centos/7/os/x86_64/Packages/glibc-2.17-105.el7.x86_64.rpm
rpm2cpio glibc-2.17-105.el7.x86_64.rpm|cpio -idv
curl -O http://ftp.riken.jp/Linux/centos/7/os/x86_64/Packages/libstdc++-4.8.5-4.el7.x86_64.rpm
rpm2cpio libstdc++-4.8.5-4.el7.x86_64.rpm|cpio -idv

(bin/activateに追加、パスは各自環境で)

alias tfpy='LD_LIBRARY_PATH=~/tensorflow/tflib/lib64/:~/tensorflow/tflib/usr/lib64/ ~/tensorflow/tflib/lib64/ld-2.17.so ~/tensorflow/bin/python3.4'

 

さわりやサンプルコードはこちらから。

Python - TensorFlowを算数で理解する - Qiita

 

何をさせようかもあるけど、使い方も手探りでいろいろ試したいですね。

 

引越し一括見積もりではまる

 

転職に伴い引越しの見積もりをしているのですが、

一括見積もりなる方法を見つけ試してみました。

引越し侍というサイト。

今回は個人情報の抜かれ損っぽい気分です。

( 今回は、というのは複数の引越し一括見積もりを試す気分に離れないので )

  1. 現住所と引越し先、荷物の量をを入力してください…見積もりに必要だよね
  2. 名前、電話番号、メールアドレスを入力してください…個人情報はやだな
  3. 見積もり依頼完了、複数の会社から連絡が来ます…!!!!????!?

 

想像していたのは1までで複数社の概算が出てきて比較し、

気になるところにこちらから連絡する方法だと思っていました。

( 各社の見積もりフォームに一括で入力、各社の見積もりが返ってくるイメージ )

やることが意外に大雑把。

運営元がIT企業だから期待してたけどギャップが激しかったですね。

 

結果としては6社くらいからのメール&電話の同時攻撃。

しかも気になってた大手は対象外。

想像とは大きく異なりますが、きちんとサイトのどこかに書いてあるんでしょうね。

 

 

これからスパムが増えたら悲惨だなぁ。

 

cakePHP入門にEclipse+Composerにこだわり学習意欲を削がれる

 

6/19くらいにPHPに改宗せよという天啓を受けました。

始めてみると、まあうまくいかない。

PHPperlの記法+Javaのようなクラス定義、といった印象。

( PHP5.5以降ではジェネレータがあったり、言語としても長短。

 Javaネイティブなのでジェネレータはうまく使えないから微妙。

 使いこなせるとかっこいいのでしょうね・・・。)

 

以前までEclipseでDropwizardを触っていたので異文化交流状態です。

インストールではこちらを参考にさせていただきました。

http://qiita.com/ysnsyks2/items/176cfddbdf1f79d65a75

 

現状で比較してみると以下。

言語 Java PHP
フレームワーク Dropwizard cakePHP
ライブラリ管理

Maven

pom.xml

Composer

composer.json

ORM Hibernate
Dropwizard付属

????
DB接続情報はapp/config/app.phpに書く箇所がある

DBマイグレーション Liquibase
Dropwizard付属
????
テスト JUnit
webアプリレベルではJettyを使用してテスト可能

PHPUnit
webアプリレベルでは他のサーバー(httpdなど)を使用する

実行(デプロイ) デプロイ後、実行でポートのリッスンまで単独

他のサーバー(httpdなど)でポートフォワードすれば

デプロイだけ、明示的な実行は不要?

 

まだPHPサイドでは理解不足だったり、

Dropwizard目線で項目を出しているので不便な印象を受けます。

 

で、表題の話。

Composerを使用しようとするとだいたいコンソールで、Eclipseでの話はなかなか出てこない。

やっとこプラグインを見つけるもpackegistの検索で固まったり、

cakePHPのプロジェクトのスケルトンは作れなかったり、

コンソール上で同じことをするとフォルダ構成が違ったり、修行が足りない。

特にフォルダ構成が違うのは初心者に厳しい。

 フォルダ構成は、ざっと見た感じ以下の3種類があるっぽいです。

  • php composer.pher create-project dev cakePHP/app
  • composer.jsonを編集してcomposer install
  • eclipseでcomposer.jsonを編集してinstallっぽいことを実行

eclipsecakePHPを動かしている例を見たことがなく、またうまくいかない。

休日返上で格闘するもEclipseを見限ってコンソールでプロジェクト作成。

 

世間ではnetbeansとかPHPStorm+コンソールという体制なのか?(知ったか)

Eclipse上でデプロイ以外を賄えたDropwizardを思うと不便さを感じる。

 

で、やっと入り口に立ったわけで。

まあぼちぼちやるしかないですね。

 

Big Peat

f:id:taketsuru:20150528214017j:plain

 

国産ウイスキーが軒並み値上げとなる昨今(山崎、竹鶴派です)、いい機会なので

海外ものにも手を出してみようとポチってみました。

 

 まとめサイトで見かけ、ちょっと調べると

  • ピート臭がやばい
  • 炭俵の香り

などと褒めてるのかどうか分からない(たぶん褒め言葉だと思う)意見。

 

いざ挑戦すると、国産ウイスキーやマッカランを全てと思い込んでいた私にとっては

カルチャーショックな香り。まさしく先に上げた意見の通り。

私の言葉でいうと、「燻製を飲んでいる」感じ。

製法を考えるとそのままなんですけどね。

 

手元にあったサイダーで割ってみるとこれがちょうどいい。

燻製+甘味=カラメルになり、燻製の香りが薄まってもともと持っている甘い香りが

炭酸で浮上してくる感じ。

他のスコッチもこんな感じなのかな。

とはいえ、これで満足してしまったので飲みきってから考えたいですね。

 

Liquibase、H2databaseでdropAll()できない

 

表題ままです。1週間悩んでました。

 

流れとして、

  • テストコード書きたい

  • DBにテストデータ入れたい

  • DropwizardのテストからLiquibaseを知る

  • テストを独立させるため@Beforeでテーブル作成、@Afterで全て消したい

  • 消えない(エラー終了)

最初はH2databaseとLiquibaseの相性とかいろいろ考えてました。

foreign key,view,tableを消す処理を自前で作ることも辞さない勢いでした。

 

が、落ち着いてログを見るとスキーマ名とテーブル名がダブルクオートで囲われている。

 

まさかと思ってソースを見ると、わざとそういった処理をしていました。

そのためそこだけオーバーライドしてよけたらうまくいっちゃった。

自己満足のためにgistで公開してみました。

Solve my way of exception on liquibase.dropAll(),using H2database(MODE=MYSQL)

Liquibase-3.1.1、 h2database-1.4で確認しています。

 

プロジェクトのソースに横槍を入れるなどおごがましいと考えているので、

絶対に他にやり方があると思います。

 

1週間の戦いに勝ったので、今日はマッカランで1杯やって寝ます。

DropwizardのテストからLiquibaseを知る

 

DropwizardのDAOテスト用DBをどうしようかと悩んでいたらこれを知りました。

最初はmockitoを使ってやりきろうと思ったけど、SQLのクエリも見たいのと

ログイン周りでSessionを使っているのでこれを選択。

 

DBをバージョン管理できるすごいやつ。

 

今回はMySQLの既存のスキーマxmlにダンプして、h2 dabatase(in memory)に

再構築してテスト用DBを作ろうと頑張ってみました。

Dropwizardに食わせるDB設定は本番環境とテスト環境で設定ymlを分ければいいので楽です。

 

できたこと:

  1. xmlのテンプレートを作っておく(Step 1参照)

    Liquibase | Database Refactoring | Liquibase Quickstart<

    必要ないかもしれません

  1. 設定項目をliquibase.propertiesに記載

    Liquibase使い方(基本)メモ - Qiita
  2. ダンプ

    • java -jar [liquibase.jarのpath] --defaultsFile=[上記で作ったliquibase.properties] generateChangeLog
    • liquibase.jarとDBドライバはDropwizardのプロジェクトで使用(依存)しているものにリンクを張るとバージョンで悩まない
    • 上記だとログ作成時にymlパーサーが見つからないとINFOが出たが今回は無視
    • クラスパスをきっちり指定している人は大丈夫だと思う
  3. h2 databaseへの再構築(一部)、Dropwizardのテストでの使用

    上記で作成したxmlをdropwizard-migrationで使用

    Java - dropwizard-testingが便利でした - Qiita

できなかったこと:

  • ダンプしたxmlからの完全な再構築

    • VIEWのクエリでDATE_FORMAT()関数を使用していた部分、スキーマ指定していた部分
    • DATE_FORMAT()使用箇所はテストでクリティカルではないので削除、
    • スキーマ指定もここでは単一のスキーマなので削除
  • スキーマの指定(上記でも触れていますが、やりたいことができたので後回し)

 

目的は達成できたので満足です。

いずれバージョン管理にも手を出したいところ。