ExitedとなったDocker Containerを一括削除
ExitedとなったDocker Imageを一括削除したい。そんな時、下記コマンドを実行すると削除できる。
docker rm `docker ps -a | grep Exited | cut -b 1-12`
【PHP】strposのfalseチェックについて
strposで検索対象文字列に検索文字列がない場合、falseが返ってくる。では、falseチェックはどうするか。個人的には、厳密な比較演算子を使うのがベターだと思う。
<? php $result = strpos('test', 'niku'); if($result === FALSE){ echo 'FALSEです。'; exit(); }
他のPHPの関数を使った場合の挙動はどうなるか。
例えば、emptyを使ってstrposの結果が入った変数をチェックした場合。strposは、検索文字列が検索対象文字列の最初にあった場合には0を返すので、emptyのチェック結果はtrueになる。
<? php // $resultに0は入り、emptyの結果はtrueになる $result = strpos('test', 't'); if(empty($result)){ echo 'FALSEです。'; exit(); }
ちなみに、PHP マニュアルにも似たようなことが書かれている。 PHP: strpos - Manual
『発酵野郎! 世界一のビールを野生酵母』鈴木成宗
- 作者: 鈴木成宗
- 出版社/メーカー: 新潮社
- 発売日: 2019/07/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
本書を読むまで、鈴木さんはビールが好きで、事業を始めたんだろうなと思っていた。だけど、本当の目的は酵母と戯れることだったらしい。。どいうこと!酵母と遊びたくて事業を始めるって、すごい勇気。怖くなかったのかな。これで上手くいくの?って思ったけど、やっぱり上手くはいってなかった。90年代末、ビール事業の影響で鈴木さんは無給だったらしい。
結構衝撃だったのは、鈴木さんはある時期まで、お客様が何を求めているかを考えていなかったらしい。マジか。本書に明確な時期は書かれていなかったけど、考え始めたのが2003年の世界大会で金賞を取った後。ということは、1997年にクラフトビール市場に参入後、結構な期間ということになる。そこから、この成功。凄いな。
本書を読んだ後、クラフトビールが飲みたくなった。スマホで良さそうなお店を見つけて、出発。なんと伺ったお店に、伊勢角屋麦酒のヒメホワイトがあったので早速注文。本書にも書かれてるけど、ヒメホワイトは伊勢の酵母で作られたビール。美味しかったなぁ。また、飲もう。
【Laravel】updateメソッドで保存する時にハマった
データの更新をする際に、updateメソッドを使って実行。そして、ハマった。そのコードは、下記。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Model\Book; class BookController extends Controller { public function index(Request $request) { $book = Book::where('page', 100)->get(['page'])->first(); $book->page = 5; $book->update(); } }
ログに実行したsqlを出力しているので、確認してみる。
[2019-08-31 15:52:22] local.INFO: Query Time:11.06s] select `page` from `book` where `page` = ? [2019-08-31 15:52:22] local.INFO: Query Time:1.53s] update `book` set `page` = ?, `updated_at` = ? where `id` is null
2行目でupdate文のsql。コード上では、「wehre is null」は使っていない。恐らく、updateメソッド内で実装しているのかな。
それで、下記のようにgetの指定カラムにidを追加したら想定通りの動作になった。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Model\Book; class BookController extends Controller { public function index(Request $request) { $book = Book::where('page', 100)->get(['id', 'page'])->first(); $book->page = 5; $book->update(); } }
ログも確認
[2019-08-31 16:07:58] local.INFO: Query Time:17.51s] select `page`, `id` from `book` where `page` = ? [2019-08-31 16:07:58] local.INFO: Query Time:4.01s] update `book` set `page` = ?, `updated_at` = ? where `id` = ?
where句でidを使って絞り込みをかけるようになっていた。なるほど、面白い。updateメソッドの処理の確認をしてみよう。
Laravelで処理途中でDBの変更をしたい
Laravelで処理途中でDBの変更をしたい。どうすればいいのか。答えは、config/database.phpのconnections.mysql.databaseの値を変更する。下記、コードで変更できる。
\Config::set('database.connections.mysql.database', 'test_db');
ただ、一度DBに対してアクセス後に上記コードを実行しても、connections.mysql.databaseの値自体を変更できるが、アクセス先のDBは変更はできない。うーむ、何故。
恐らく、1度DBにアクセスした後にアクセス先のDBをキャッシュしているのかな。調査する。
【Laravel】任意のルートパラメーターの挙動について
任意のルートパラメーターが設定されている時、されていない時の挙動を確認した。サンプルコードを含め確認した内容を記す。
まずは、wbe.php
// web.php <?php Route::get('okinawa/{urasoe?}', 'OkinawaController@index');
続いて、サンプルで作ったOkinawaController。ルーティングに設定した任意のルートパラメーターurasoeを取得する処理が実装されている。
// OkinawaController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class OkinawaController extends Controller { public function index(Request $request) { var_dump($request->urasoe); exit(); } }
任意のルートパラメーターが設定されているパターン
・実行URL
http://localhost/okinawa/urasoe
・結果
string(6) "urasoe"
任意のルートパラメーターが設定されていないパターン
・実行URL
http://localhost/okinawa
・結果
NULL
任意のルートパラメーターの値は$requestオブジェクトのプロパティから取得できる。任意のルートパラメーターが設定されている場合、string型の値が取得できた。また、ルートパラメーターが設定されていない場合にはNULLを取得。
ふと思ったけど、string型の数値をrequestオブジェクトのプロパティから取得した場合には、どのような型になるのか。ちょっと、気になる。
※参考
readouble.com
『1本5000円のレンコンがバカ売れする理由』 野口 憲一
- 作者: 野口憲一
- 出版社/メーカー: 新潮社
- 発売日: 2019/04/16
- メディア: 新書
- この商品を含むブログを見る
honzのレビューを読んで購入。レンコン農家に生まれた著者が、レンコンを1本5000円で売ろうと試行錯誤する姿が書かれた一冊。試行錯誤する姿が面白い。父親に凄く反対されるが折れないし、なかなかレンコンが売れない中イベントに参加したり販路を探す。そんな中、総合食品商社の方から話を持ちかけられ、徐々に光が見えてくる。
意外だったのが、レンコン購入業者の目線で商品を作ることを否定していること。例えば、業者からレンコンを真空パックにできないかとの要望が結構あるらしい。ただ、著者はその申し出を断っている。技術的にレンコンを真空パックにするのは可能らしいが、真空パックにするにしてもコストがかかる。そのコスト分を吸収する利益が出るかといったら、疑問があるらしい。
どんな仕事でも、買う側からの要望は結構あると思う。その中で、やるやらないの判断を下すのは結構難しい。目の前の売り上げって大事だしね。
とりあえず、レンコン買いたいなぁ。