問題 以下のように複数のIDを指定して一括で更新したい場面がありました。 $divIds = Div::where('hoge_flg', true)->select('id')->get(); User::whereIn('div_id', $ids)->update(['hoge_flg' => true]); ただ、上記のように書くと2回クエリが発行されるの…
Sail インストール前だと Docker イメージのビルドがこける これは開発環境の初期構築時のみに発生する問題です。 Laravel Sail 環境で Sail 本体がインストール前、つまり composer install 実行前だと以下のようなエラーが出て Docker イメージのビルドが…
目的 アップデート作業時の最新は 5.7.41 だったのですが、これを 5.7.40 にしたいです。 $ mysql --version mysql Ver 14.14 Distrib 5.7.36, for Linux (x86_64) using EditLine wrapper アップデートできる MySQL のバージョン確認 まず yum でアップデー…
MySQL で数字を含む文字列の数字部分だけでソートする SQL を書いたのでメモです。 やりたいこと log_1, log_2 のような文字列 + 数字の値を持つカラムで数字順にソートしたい場面がありました。 末尾の数字が1桁のみであればそのままソートできたと思いま…
GitLab CI でアクセストークンを使いリポジトリをクローンするように変更したので手順のメモです。 元は SSH を使っており鍵の設定が煩雑そうでしたが、アクセストークンの発行・設定は10分くらいでできると思います。 アクセストークンを発行する メニュー…
ある日 Telescope 上で同じクエリが数十件発行されているリクエストを見つけて驚きました。 コードを追ってみるとどうやらモデルのアクセサでリレーションが呼ばれていることが原因のようでした。 そもそもそういうコードを書くな、ということなのでしょうが…
今回 SMTP を使っての APサーバ <=> SMTPサーバ 間のメール送信処理がうまくいってないようだったのでその部分の詳細なログを取得したくて調べていました。 Mailhog で詳細なログを出力する 開発環境では Mailhog というツールを使っています。 SMTPサーバと…
Rails チュートリアルの下記あたりです。 第2章 Toyアプリケーション - Railsチュートリアル 以下のコマンドでモデルを生成しましょうというくだりがあるのですが、私の環境ではapp\views以下に erb ファイルが生成されませんでした。 rails generate scaffo…
現在のプロジェクトでは CI でテストのジョブを分散させるために PHPUnit の設定ファイル(デフォルトだと phpunit.xml )が複数あります。 そのため、以下のようなことを同時にやりたい場合が発生します。 php artisan test --parallelでテストを並列実行する…
自戒を兼ねて記事にします。内容はタイトルの通りなんですが知らずハマりました…… 結論 xor より代入のほうが優先順位が上なので $a に代入される値は xor が処理される前の値になります。 $a = true xor false; // true $a = false xor true; // false その…
概要 PHPUnit でモックを作成する際に、、モック対象となるメソッドを指定する際にsetMethodsを使っていると、これは現在非推奨とのことで代わりのメソッドを調べました。PHPStorm が教えてくれました… ありがとうございます 代わりのメソッド setMethodsは…
テストで下記のようにデータベースの中身を確認するパターンよくあると思います。 $this->assertDatabaseHas( 'm_user', // テーブル名を文字列で指定 [ 'id' => $user->id, 'user_name' => $user->user_name, ]); ただ、テーブル名を文字列で指定するのって…
概要 CI での PHPUnit で行う自動テストで並列化オプションを有効にしたらテストが早く終わるようになりました。 ローカルではもちろん使っていたんですが CI でも有効したらいいじゃんと気づいたので有効しました。 並列化オプション parallelオプションで…
結論 マイグレーションの圧縮をしても速度はほぼ変わりませんでした。 というかプロジェクトの CI 環境では遅くなりました… もちろん、うちの環境では、という話なのでマイグレーションファイルの数や内容によっては早くなることも十分あると思います。 一例…
前置き 開発マシンをずっとスリープのまま使っていたらめちゃくちゃ重くなっていた(再起動したらめちゃくちゃ早くなってびっくりした)ことをきっかけに週一でマシンを再起動するようにしました。 そしたら、再起動の度に仮想マシン立ち上げて、ssh でログイ…
Mac とか Ubuntu とかは telnet コマンドが入ってないことが体感多いんですが curl ならたいてい入ってます。 Docker コンテナの設定を変えたりしたときにポート番号が開いてるかをすぐ確かめるのに便利です。 curl -v telnet://localhost:80 -v がないとポ…
状況がピンポイントすぎるのですがたまーに有り得そうだなと思い、自分の備忘録も兼ねて記事を書きました。 いろいろなテーブルに対して異なる条件で withCount を大量に行ったため、処理が重く画面が表示できない(リクエストがタイムアウトする)状態だった…
以下のようなエラー文が出て git pull できないことがありました。 # git pull error: cannot lock ref 'refs/remotes/origin/feature/#100_fix_application': is at 1d5d3c7777d883a428ffaf37a6f3ea2e77efccd9 but expected 9b681a8a212a74e003c4b9c44f4a9e…
記事はたくさんあるんですがコードを見てへ~となったのでメモです。 あとうちのプロジェクトで実装している簡易ホワイトリストの実装も。 概要 プロジェクトではログイン処理がN分内にM回試行されると一時的なロックをかけるようにしています。(もちろんセ…
目的 フロントエンドで使用する環境変数を環境ごとに変えたいため、ビルド前に環境変数をセットするのが目的です。 Laravel Mix を使うと頭に MIX が付いている環境変数をフロントエンドと共有できますが、当然フロントエンドのビルド時点で設定されている必…
概要 Laravel Sail では複数のリクエストを並列で処理できないかと思ったら実はできました! ついでに開発環境もちょっとだけ早くなったよ、という話です。 Laravel Sail 便利ですよね 現在のプロジェクトの開発環境は Laravel Sail を使用しています。 read…
Laravel で API を実行するために Http ファサードを使ったのですがエラー判定でちょっと躓いたのでメモです。 レスポンス前後でエラーを出し分ける レスポンスの成否判定に便利な failed メソッドがあります。 下記に書いてあるとおりステータスコード 400 …
概要 先日 NFS でマウントしているストレージへのアクセス過多がボトルネックとなりサービスへのアクセスがしづらくなるという状態が発生しました。 調査の中で、サーバのプロセスをトレースするコマンドを使ってプロセスがアクセスしたファイルを取得、内容…
以前下記の記事で MySQL のアップデート手順について書きました。 natsuhide.hatenablog.com その際、アップデート後に注意すべきパラメータについてもいくつかチェックしたので覚書きです。 MySQL のバージョンは 5.7.36 です。 注意 強制で 5.7 へのアップ…
がっつりではないですが負荷テストというか並列で複数アクセスがあったときも大丈夫かを確かめるために JMeter を使うことになったので覚書です。 具体的な使用方法はもっと詳しい解説をしてくれている方がたくさんいるので説明しませんが、初期設定(案の定…
先月くらいに Keychron K8 を買ってもらい、理解のある奥さんでよかった… などと思っていました。 kopek.jp US配列でも良かったのですが在庫がなく日本語配列を買いました。 キー配置的に K8 がほしかったので慣れてるし日本語配列でもいいかなと思いポチっ…
概要 背景 アップデート バックアップ yum リポジトリを利用したアップデート アップデート後の作業 MySQL の再起動 mysql_upgrade の実行 概要 タイトルの通りMySQL を 5.6 => 5.7 へアップデートしました。 背景 RDS が MySQL 5.6 をサポートしなくなる、…
そんなん公式サイトから落としたらええやん!と思っていたら古いサイトが引っかかってけっこう迷ったので覚書しておきます。 ダウンロードリンクのあるページ https://www.oracle.com/java/technologies/downloads/#jdk17-macwww.oracle.com ここで自分の Ma…
めちゃくちゃ基本的なことと思いますがちょっと探したのでメモ。 物理バックアップする方法を調べていたところ、MySQLを停止した状態でディレクトリをコピーすれば大丈夫そうだったのでコピー対象のディレクトリを探していました。 MySQL :: MySQL 5.6 リフ…
Mac はデフォルトだとループバックアドレスは 127.0.0.1 しか使えないようですが、コマンドでエイリアスを貼ればいけるとのことだったので設定してみました。 $ sudo ifconfig lo0 alias 127.0.0.2 $ ping 127.0.0.2 PING 127.0.0.2 (127.0.0.2): 56 data by…