Laravelのフォームリクエストのジレンマ

Laravelにはフォームリクエストという便利な機能がある。コントローラに適切なフォームリクエストをインジェクションさせると、リクエストがフォームリクエスト内のルールでバリデーションされた上でインジェクションされる。 ['string'], 'email' => ['ema…

LaravelでRefreshDatabaseしているテストをどう安全に運用するか

課題 RefreshDatabaseはテストごとにデータベースをクリアしてくれる便利なトレイトで、データベースを使ったテストを書くときにはほぼ必須だが、運用をミスると消したくないデータベースを消してしまうことがある。 具体的に危険なのは、.env.testingがない…

連想配列への代入は一括でやった方がいいと思う

PHP

2020-03-26追記 もっと単純に、一つの操作を複数に分けるな、って話でよかったね。 'val1', 'key2' => 'val2', 'key3' => 'val3', ]; 上記のような場合に、$assoc1の方法より$assoc2の方法がいいと思う。まあ昔からずっと思っていたのだが最近$assoc1の方法…

通勤定期というものを初めて買った話

12月は常駐案件に入っていた。ずっとフルリモートで働いていて、通勤は初めて。そこそこ遠くて交通費もけっこうかかるので、定期を買ってみた。その際なにもわからなかったのでみどりの窓口の人にいろいろ聞いてみたのだが、ちょっとググっただけじゃわから…

2019年読んだ本

2019年は割と技術書が読めた。といっても9冊。技術書以外のフィクション以外の本が40冊。フィクションが、小説(ラノベ)80冊ちょいに漫画500冊ちょい。技術書と小説は割と読めたけどほかが減ってた感じっぽい。 今年はそこまで「当たり」って本が少なかったよ…

Laravel Deployerで変な落ち方してロックが残ってしまった場合の対処法

最近とても忙しい。つらい。 とっても便利なDeployerをLaravel向けにさらに手軽にしたLaravel Deployerですが、この間こんなメッセージが出た。 Deploy locked. Execute "dep deploy:unlock " to unlock. 書いてある通り、ロックされちゃったっぽい。 通信環…

銭けっと行ってきたので雑な感想を

(多分)第3回の銭けっと行ってきた。IT系の技術書に限らない、実業実学書の即売会とのこと。 銭けっと公式WEBサイト - ホーム 11時半くらいに着いたがまだ人は少なく、じっくり見て周れて楽しかった。以下覚えている限りの感想。 リンクは銭けっと公式ページ…

LaravelでHTTPS対応する正しいやり方

HTTPSを強制する場合はWebサーバ側で対処する。HTTPから強制リダイレクトしてもいいし、HTTPは閉じてしまってもいい。 HTTPSを強制する場合、もしくはHTTPSをデフォルトにしたい場合はAPP_URLをhttps://...にする。 リバースプロキシ下で動かす場合、HTTPSで…

Laravelの設定ファイル(config/*.php)のキャッシュ関係の仕様を簡単に

php artisan config:cacheでデフォルトではbootstrap/cache/config.phpにconfig/*.phpから読み込まれた設定のキャッシュが生成される。 config:cacheは最初にconfig:clearするため、再実行した場合はキャッシュが再生成される。 config:clearは単純にbootstr…

IE以外のブラウザではもうES2015は十分サポートされているようだ

FRONTEND CONFERENCE 2019のモダンJavaScript再入門で聞いた、"本セッションで紹介した内容は、IE以外のブラウザではネイティブサポートされている"が気になり、以下のようなコードを書いて試してみた。 https://gist.github.com/magai/467c80989769d5f58ad0…

FRONTEND CONFERENCE 2019行ってきたので雑な感想

最近の案件でVueでSPAに入門して、設計どうしたらいいかさっぱりで困ったので、ヒントでもないかなーと行ってみた。 あと関西でやってくれるカンファレンスとても助かるのでできるだけ行きたいよね。 もっとデザイン寄りかなーと思ってたけど、思ってたより…

[募集終了しました]2019年11月以降のフルリモートのPHPのお仕事を募集しています

仕事数ヶ月分埋まったので、募集終了です。ありがとうございました。 とりあえず自己紹介 私は神戸在住の個人事業主でやっているプログラマです。よろしくお願いします。 ここ5年ほどは仕事ではPHPを書いています。最近はLaravelをかなりやっていて、1人月未…

SynologyのNASのファームウェアのマイナーバージョンの更新を手動でする場合の注意

メジャーバージョンなら、あるいは多分自動更新とかでも問題ないと思うのだが、マイナーバージョンアップをインターネットにつないでいない場合に自分でダウンロードしてきて更新する場合にちょっと引っかかったのでメモ。 メジャーバージョンの.patファイル…

Anker SoundCore Ace A1買ったので感想

前から寝室で使う用の小さくてバッテリー駆動のBluetoothスピーカー欲しかったのだが、安くてよさそうなのがセールやってて2000円切ってたので買った。 決め手の一つが防水ついてないこと。防水つけるとどう考えても音質・入出力・操作性に影響するので、防…

デブサミ2019関西に行ってきたのでだいぶ雑な感想を

雑な上個人的な話ばかりでレポート的な感じではないので、そういうのを求めてる人には以下などのほかの人のレポートがおすすめ。 【行ってきた】(20190927)DevelopersSummitKANSAI 2019 - 技術覚書 勉強会メモ:デブサミ関西2019に行ってきました - Qiita 以…

CentOS 7でCircleCI CLIでDockerがエラーを出す場合

こんなエラー。 % sudo circleci local execute --job build Docker image digest: sha256:359227b82618c1ce0514da6b1ee0c05f60863601b8078b1907fe6917f3e5593a ====>> Spin up Environment Build-agent version 1.0.15410-75b89bda (2019-09-13T15:43:07+00…

Goでis-a関係を作る

Go

Goには継承はなく、実装の再利用は構造体の埋め込みで行う。じっさいは委譲だが、見た目はオブジェクト指向言語で継承した場合のように使える。 package main type Super struct {} func (super Super) SuperMethod() {} type Sub struct {Super} func main(…

PHPで例外を出力するときにわざわざgetMessage()を使う必要はない

PHP

たまに見かけるので。 こんな感じにすれば__toString()が自動的に呼ばれる。エラーメッセージとスタックトレースの両方がついたいい感じの出力になる。

Nginxで権限があるはずなのにポートをバインドできない

ちょっと必要があって、Nginxを8000番で動かそうとしたらなぜかエラーが出た。1023までのポートならともかく8000だし、そもそもroot権限で動かしてるのに。 nginx: [emerg] bind() to 0.0.0.0:8000 failed (13: Permission denied) Permission deniedと来た…

WindowsでMercurialが死んでた件

5.0.2で以下のようなエラーが出た。Python 3が別途入ってたからそのせいかと思ってPATHいじったりアンインストールしてみたりしたが駄目。 仕方ないので一応安全そうなところから4.9.1をダウンロードして入れてみたら動いたっぽい。 ちなみにChocolateyで定…

Laravelでドキュメントルートに静的ファイルを混在させる方法

作ったシステムに後から静的ページを追加したい、みたいな要望にどう対応すればいいだろうか。「有料です」で済ませたいところだが、なかなかそうも行かない場合も多い。 古のCGI/PHP環境でやってきたクライアントにとっては、既存のファイルと無関係なとこ…

LaravelでAuth系のコントローラが最初から存在するのはなぜか

ご存知の通りLaravelではartisan make:authすることでいくつかのファイルが生成・変更され、デフォルトの認証関係の機能を有効にできる。 だが、じつはこれを実行しなくとも、最初からApp\Http\Controllers\Auth\LoginControllerをはじめとする各種コントロ…

ChocolateyでStrawberry Perlが更新できない

chocolatey upgrade strawberryperlすると、 WARNING: Generic MSI Error. This is a local environment error, not an issue with a package or the MSI itself - it could mean a pending reboot is necessary prior to install or something else (like t…

Tridactylでデフォルトのsearchurlsのキーワードを無効にする

Tridactylではデフォルトで各種キーワードでの検索が設定されている。が、キーワードが名前そのままなので、キーワードと同じ単語を検索したい場合につらい。ので無効にしたいのだが、しばらくやり方がわからず、試行錯誤の末最近ようやくわかったので共有す…

Google Chartsで列に有効なデータがある場合は問題ないのにない場合にエラーになる件

var data = google.visualization.arrayToDataTable([ ['date', 'number'], ['2019-05-13', 1], ['2019-05-14', 2], ['2019-05-15', null] ]); では問題ないのに、 var data = google.visualization.arrayToDataTable([ ['date', 'number'], ['2019-05-13', …

Eloquentのwhen()で、偽になる可能性のある値の存在を条件に検索する

Eloquentというかクエリビルダ側の機能だけどまあ。 when()はこのように使うことができ、条件分岐を何度も何度も書かなくて済む。 when($condition['cond_1'] ?? false, function ($query, $cond_1) { $query->where('cond_1', $cond_1); }); }…

ASUSのノートPCを修理に出したメモ

購入から一年後くらいからSSDの認識が怪しくなってきて、一度治ったかのように見えたものの数ヶ月後完全に駄目になったので修理に出した。ASUSのサポートセンターに直接。 こういうのって具体的にどういうフローになるのか、どれくらいかかるかなどわかりに…

ngrokでWordPress製のサイトを公開する

ご存知の通りWordPressはドメイン名をデータベースに入れたりデータベースに入れたりしてるので、ngrokで動かせるようにするのはちょっとやっかい。 なのでどうするか。まあ公式ドキュメントに書いてある。 ngrok – documentation なお既存の記事などのデー…

ngrokで"online ngrok process", "tunnels/ngrok process"はなにを指すか

"online ngrok process"は有効なngrokコマンドの数、"tunnels/ngrok process"はngrokによって転送(トンネル)されているポート数、と考えてよさそう。 つまり、無料版 1 online ngrok process 4 tunnels/ngrok process ngrok - secure introspectable tunnels…

Laravelのartisanのzsh補完書いた

サブコマンドの補完はあったんだけど、ちゃんとオプションの補完までしてくれるのがないので自分で書いてみた。zshわからんしcompsysわからんし、そもそもシェルスクリプトさっぱりなので大変苦労したが、まあ使えるものになってきたので公開。 サブコマンド…