ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

目標ログ日記16

Pythonのコミュニティの勉強会が今日午前中だったのに、休日出社中。月の少ない楽しみが。。。(´Д`;

しかもその理由が定時後なので、のびのびと会社でブログを書きます。(怒られないかな。。。?)

まぁいっか。

運動

全くもって走っていないです。やばい。

最近同僚がこんな本を進めてくれました。

Amazon CAPTCHA

筋肉すげぇえ! これ読んだから多分衝動的に筋トレしたくなるはず。来週購入する。

読書

期間があいたので、補充と読み終わった本をずらずら書く。

  • 「コーディングを支える技術」読み終わった!
  • 「リモートチームでうまくいく」読み終わった!
  • 「マンガでよくわかる怒らない技術」 読み終わった!
  • 「CODE COMPLETE」はちょっと読んで閉じた!orz これちょっとむずかしい。少しずつ読む。

そして、購入した本。

  • 独習データベース設計
    • 本当は「SQLアンチパターン」を書いにいったんだけど、置いてなくて、かわりにこの本を購入した。
    • DBの設計手法は一通り読んで、実践してみたんだけど、経験が少なくまだまだスムーズにいかないと思っていたので、事例を元にした本を読んでみたいからこの本を購入した。
  • ハッカーと画家
    • 明日読む予定
  • ドラッカーさんに教わったIT技術者が変わる50の習慣

IT

  • CakePHP3を使って、会社で販売しようとしているアプリケーション作成中。記事検索してて人気があまりないのが心配。。。
  • AngularJS1.xが楽しくなってきそう。やっぱりわからないから触らないってことは損で続けてやらないとダメだな。
    • ちなみに1週間仕事もままならないまま、ブラウザのタブはAngularJSの記事で埋まっていました。

課題として

  • DB設計の知識を増やす
  • cnnでゴジラを認識するプロジェクト用意したけど、全然進んでない。。。
  • CakePHP3とAngularJSを使ったプロジェクト2つ進めないといけない。。。

英語

初めてstackoverflowとgoogle groups使ったお!!! もちろん英語で。

groups.google.com

stackoverflow.com

しかし、書いてて自信なかったけど、結構通じるのね。

ちなみに内容としては、google adwordsで困ったことがあって、質問したら、「まずはサンプル試しな」って言われてサンプル試したら「なんかおかしい。。。」って気づいて調べたら自己解決しました。

google groupには返事して、stackoverflowでは自己解決を投稿しました。

今週良かったこと

  • もくもくと開発ができた。楽しかったわ

今週の反省

  • photoshopillustratorが使えなくて仕事に支障が。うーむ、本当はあんまり触りたくないんだけど、覚えないといけないのかな。。。
  • 今月は5万を貯金する!と試したが、できませんでしたorz 通帳とレシートを見てこれから振り返る。

今後

生まれてから27年目突入! 来年は機械学習とか取り入れた仕事がしたいな。

【CakePHP3】phpunitでテストしてみた

CakePHP2では結構お世話になりました(不具合の方向で。。。)

CakePHP3ではすんなりいくかな?と思っていたけど、ダメでした。むー。なんででしょう?

とりあえずphpunitインストール

composerでインストールしました。

$ composer require --dev phpunit/phpunit

自作プラグインのロードエラー

テスト - 3.10

チュートリアル通り、実行しようとするとエラーが発生。

$ ./vendor/bin/phpunit
Cannot load Xdebug - extension already loaded
Exception: Plugin MyPlugins could not be found. in [../TestController.php]

???

色々試してみたら、phpunitだけじゃなくて、/bin/cakeコマンドもエラーがでているっぽい

???

デバッグしてたらわかった。

<?php
    // ...省略
    // 112行目ぐらい
    public static function load($plugin, array $config = [])
    {
        // ... 省略
        if (empty($config['path'])) {
            $paths = App::path('Plugin');
            $pluginPath = str_replace('/', DIRECTORY_SEPARATOR, $plugin);
            foreach ($paths as $path) {
                if (is_dir($path . $pluginPath)) {
                    $config['path'] = $path . $pluginPath . DIRECTORY_SEPARATOR;
                    break;
                }
            }
        }

        if (empty($config['path'])) {
            // ここでエラーが発生している
            throw new MissingPluginException(['plugin' => $plugin]);
        }

どうやら自作したPluginがロードできていないっぽい。なぁーぜぇー?

あ!

  • ~/config/bootstrap.php
<?php
// ...省略
Plugin::load('MyPlugins', ['autoload' => true, 'bootstrap' => true, 'routes' => true]);

実際のディレクトリは~/plugins/my_plugins/だったので、キャメルケース変換とかそんな処理がないからエラーになっているっぽい。

  • ~/config/bootstrap.php
<?php
// ...省略
// plugin名修正
Plugin::load('my_plugins', ['autoload' => true, 'bootstrap' => true, 'routes' => true]);

修正したらうまくいった。(ってかphpunitのエラーと関係ない。凡ミス)

何故かIDEでの実行結果とコンソールの実行結果が違う。

これも自分のところだけ。ってか考え方でした。

IDEのコマンドはこんな感じ

$ ~/vendor/bin/phpunit

コンソールはこんな感じ

$ ./vendor/bin/phpunit

おわかりいただけただろうか・・・・?

ようは相対なのか絶対なのかって話ですよ。この場合絶対パス指定のIDEはただphpunitを実行するだけで、help内容が出力されるだけ。

IDEで使いたい場合はパラメータも含めすべて絶対パスで指定してあげてください。

$ ~/vendor/bin/phpunit --bootstrap ~/tests/bootstrap.php ~/tests/

何故かtableが認識されない

$ ./vendor/bin/phpunit
...
Cake\Database\Exception: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test_table.post_meta' doesn't exist
...

こんなエラーが。。。と思いきや、単純にアプリケーション側のモデルロード処理の名前が間違っていました。。。。orz

2016/09/18 追記

実行するコマンド間違えていました。。。

$ ~/vendor/bin/phpunit --configuration ~/phpunit.xml.dist

雑な感想

やっとテストできたお! (^ω^ = ^ω^)

エラーはいっぱいでたけど、phpunit全然関係なかった。。。