chevron_left

メインカテゴリーを選択しなおす

cancel
もがき系プログラマの日常 https://kojirooooocks.hatenablog.com/

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

kojirock
フォロー
住所
鶴ヶ島市
出身
西条市
ブログ村参加

2018/02/26

arrow_drop_down
  • 手を動かしてわかるクリーンアーキテクチャ第七章

    はじめに こんばんは。 一人輪読会です。 読むのはこちら。 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発作者:Tom Hombergs,須田 智之インプレスAmazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第七章 永続化アダプタの実装 本章で重要だと感じた点 ポートは単一ではなく分割しようね。 ポートが扱う処理の範囲はできる限り狭めよう。 終わりに この先も やる気はやれば出る の精神で無理やりやっていきます。 一人輪読会なので次も僕です。 現場からは以上です。

  • 手を動かしてわかるクリーンアーキテクチャ第六章

    はじめに こんばんは。 一人輪読会です。 読むのはこちら。 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発作者:Tom Hombergs,須田 智之インプレスAmazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第六章 Webアダプタの実装 本章で重要だと感じた点 ポートを設定することで、保守を行う人達の貴重な情報元になるよ。 一つのコントローラで複数のリクエストをつけるのではなく、リクエストごとにコントローラを作ったほうが保守しやすいよ だからコントローラやユースケースが増えることを恐れては…

  • 手を動かしてわかるクリーンアーキテクチャ第五章

    はじめに こんばんは。 一人輪読会です。 読むのはこちら。 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発作者:Tom Hombergs,須田 智之インプレスAmazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第五章 ユースケースの実装 本章で重要だと感じた点 入力値の妥当性確認と、ビジネスルールに関する妥当性確認は別 入力値の妥当性確認は構文的な確認・ビジネスルールに関する妥当性確認は意味的な確認。 濃いドメインモデルと薄いドメインモデルがある。 濃いドメインモデルはドメインモデル内にロジ…

  • 手を動かしてわかるクリーンアーキテクチャ第四章

    はじめに こんばんは。 一人輪読会です。 読むのはこちら。 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発作者:Tom Hombergs,須田 智之インプレスAmazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第四章 パッケージ構成に関する戦略 本章で重要だと感じた点 層を意識したパッケージ構成・機能を意識したパッケージ構成など考え方的には色々あるがそれぞれデメリットがある。 アーキテクチャの構成要素を意識したパッケージ構成が柔軟に対応できる。 終わりに このあたり、真面目にやるとすごい大変…

  • 手を動かしてわかるクリーンアーキテクチャ第三章

    はじめに こんばんは。 一人輪読会です。 読むのはこちら。 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発作者:Tom Hombergs,須田 智之インプレスAmazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第三章 依存関係の逆転 本章で重要だと感じた点 単一責任の原則は、本来の意味でいえば、単一の変更する理由の原則である。 変更する理由が少なくなる = 保守をより簡単に行える 終わりに 実務でもよく使っている手法の紹介でした。 この先も やる気はやれば出る の精神で無理やりやっていきます…

  • 手を動かしてわかるクリーンアーキテクチャ第二章

    はじめに こんばんは。 一人輪読会第一回です。 読むのはこちら。 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発作者:Tom Hombergs,須田 智之インプレスAmazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第二章 従来の多層アーキテクチャの何が問題なのか? 本章で重要だと感じた点 従来の多層アーキテクチャは変更に対してとても脆弱である 従来のアーキテクチャでの問題は複数存在する データベースの構造から考えてその後ビジネスロジックを検討するというフローを踏んでしまう傾向がある 責務が…

  • phpunitでstatic methodのmockはじめて使った

    はじめに こんばんは。 今日laravelでコードを書いていてstatic methodのmockをしたい場面があって初めて知ったのがあったので、忘れないように記録します。 本題 ロジックコード <?php use Illuminate\Support\Facades\Cookie; class ExampleLogic { public function __invoke(): int { Cookie::unqueue('test'); return 1; } } テストコード <?php use Tests\TestCase; use Illuminate\Support\Facades…

  • 手を動かしてわかるクリーンアーキテクチャ第一章

    はじめに こんばんは。 一人輪読会第1回です。 読むのはこちら。 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発作者:Tom Hombergs,須田 智之インプレスAmazon 本題 => 第1章 保守容易性 本章で重要だと感じた点 ソフトウェアそれぞれの品質要求と同等に保守容易性を扱うべき 保守しづらいソフトウェアの場合変更コストが高くなり、開発者・非開発者との間で衝突が起こりやすい 保守のしやすさのメリットで重要なものの一つに、開発者の満足度向上がある。 開発者満足度は生産性に直接影響を与えるため。 開発者の離職率を下げることにも寄…

  • 単体テストの考え方/使い方 第11章

    はじめに こんばんは。 一人輪読会第11回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第11章 単体テストのアンチ・パターン 重要だと感じた点 プライベートメソッドに対してテストを行わない(実装の詳細とテストとの距離が近くなる) テストのためにプライベートメソッドを公開しない 実装の詳細をテストに漏らさない 足し算をするメソッドのテスト時に足し算をするということをテストに知らせない あくまで結果をテストする 具象クラスをMockしない 終…

  • 単体テストの考え方/使い方 第10章

    はじめに こんばんは。 一人輪読会第10回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第10章 データベースに対するテスト 重要だと感じた点 データベースはmock等を作らず実際のものを使用するべき データベースへの書き込みは必ず変更結果をテストすべき。反対に読み込みのテストは重要部分以外はテストの必要はない。 終わりに 第10回終わりました。 Laravelを仕事で使っているのですが、10章で書かれていることは基本laravelのテスト…

  • 単体テストの考え方/使い方 第9章

    はじめに こんばんは。 一人輪読会第8回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第9章 モックのベスト・プラクティス 重要だと感じた点 モックの利用は結合テストに限定する(複雑なコードとなるビジネスロジックは単体テストできちんとテストする) モック使用時の検証項目は、想定回数回モックが呼び出されていることを必ず確認する。 モック対象の型には、自身のプロジェクトが所有する型のみにする(サードパーティのライブラリをモックに置き換えず、ライ…

  • 単体テストの考え方/使い方 第8章

    はじめに こんばんは。 一人輪読会第8回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第8章 なぜ、統合(integration)テストを行うのか? 重要だと感じた点 単体テストでは、シナリオにおける異常ケースを可能な限り多く扱うようにし、統合テストでは1件の正常系および、単体テストで扱えなかった異常ケースを扱うようにする。 モックも使いましょう。ただし、DBは可能限り実物に依存して使いましょう。 統合テストは実行の戻り値のみチェックするの…

  • 単体テストの考え方/使い方 第7章

    はじめに こんばんは。 一人輪読会第7回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第7章 単体テストの価値を高めるリファクタリング 重要だと感じた点 単体テストを行う価値が最も高いコードは、複雑なコード、もしくはドメインにおける重要性の高いコード コードの複雑さや重要さがますと、使用するオブジェクトが増えてくる。そのたびにオブジェクトの数を減らすようにすべき。 ビジネスロジックを別クラスに抽出する(Humble Object)を使用する…

  • インフル&コロナ

    こんばんは。 今我が家は、インフル&コロナが蔓延している病巣になっているkojirockです。 単体テストの考え方/使い方 は読み進めているのですが、家族全員ダウンしていて自分もやばいので、なかなかブログを書けずです。 復帰次第頑張ります...

  • はじめに こんばんは。 一人輪読会第6回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第6章 単体テストの3つの手法 重要だと感じた点 単体テストには出力値ベーステスト・状態ベーステスト・コミュニケーションベーステストの3つがありますよ。 一番質が高いテストは基本の出力値ベーステストですよ。 終わりに 第6回終わりました。 3つの手法おもしろかったです。 この次も やる気はやれば出る の精神で無理やりやっていきます。 一人輪読会なので次も僕…

  • 単体テストの考え方/使い方 第5章

    はじめに こんばんは。 一人輪読会第5回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第5章 モックの利用とテストの壊れやすさ 重要だと感じた点 モックは外部、スタブは内部に向かうコミュニケーションを模倣・検証する場合に使うよ。 終わりに 第5回終わりました。 前回の本と同じような部分も出てきましたね。 この次も やる気はやれば出る の精神で無理やりやっていきます。 一人輪読会なので次も僕です。 現場からは以上です。

  • 2025年の目標

    はじめに こんにちは。 2025年いきなりインフルエンザになっているkojirockです。 2025年の目標を建てようと思います。 2024年の目標はこちら kojirooooocks.hatenablog.com 2024年の振り返りはこちら kojirooooocks.hatenablog.com 本題 1. 体重を65kgにする バッチリリバウンドして今は75kgです。 ことしはジムにも行ってかならず65kgにします。 めざせ1ヶ月-1kg! 2. 積本をすべて消化する 去年も一昨年も勉強意欲がなくなってたのですが、段々と本を読めるようになってきたので、今年はずーっと積んでいる本をすべて…

  • 2024年のまとめ

    はじめに こんばんは。 2024年も本当にお疲れさまでした。 そして毎年恒例2024年の振り返りをやっていきたいと思います。 本題 kojirooooocks.hatenablog.com 1. 体重を65kgにする => 未達 ブログ書く前に測ってみましたが、73kgで未達です。。。 ただ、年末にパーソナルジムに入会して本気で痩せる決意をしました。 去年よりかなり増えました。 2. アドベントカレンダーに必ず1つ以上参加する => 未達 去年同様全く参加しなかったので、未達です。 3. 毎日10分〜1時間くらい必ず勉強する => 少しだけ達成 こちらはですね。 結構頑張りました。 毎日はちょ…

  • 単体テストの考え方/使い方 第4章

    はじめに こんばんは。 一人輪読会第4回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第4章 良い単体テストを構成する4本の柱 重要だと感じた点 4つの柱は退行に対する保護・リファクタリングへの耐性・迅速なフィードバック・保守のしやすさである。 作成するテストは4つの柱を備えているかを考えて作成すれば良い単体テストになる。 ただし、4つすべてを備えることはできない。作成するテストの種類や属性で何を備えるべきかは考える必要あり。 終わりに 第…

  • 単体テストの考え方/使い方 第3章

    はじめに こんばんは。 一人輪読会第3回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第3章 単体テストの構造的解析 重要だと感じた点 fixture使う際はテストケース同士の結びつきがデータによって強くなってしまうので注意して使おう。 テストコードのメソッド名は、非開発者に対してもどのような検証をしているかが伝わるような名前をつけよう。 テスト対象のメソッド名をテストメソッド名に含めない方が良い。単体テストはコードをテストしているのではな…

  • 単体テストの考え方/使い方 第2章

    はじめに こんばんは。 一人輪読会第2回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 前回はこちら kojirooooocks.hatenablog.com 本題 => 第2章 単体テストとは何か? 本章で重要だと感じた点 単体テストは他のテストケースから隔離された状態で実行しなければいけないが、隔離の意味の捉え方で古典学派とロンドン学派が存在している。 終わりに 第2回終わりました。 最近テストを書くプロジェクトとテストを書かないプロジェクトが同時並行で走っていて、 テスト書かない方のプロジェクトにどうやって文化を取り組…

  • 単体テストの考え方/使い方 第1章

    はじめに こんばんは。 一人輪読会第1回です。 読むのはこちら。 単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 本題 => 第1章 なぜ単体(unit)テストを行うのか 本章で重要だと感じた点 単体テストで成し遂げたいことは、ソフトウェ開発プロジェクトの成長を持続可能なものにすること。 「テストを作ること」を目的にテストを作ってはいけない。 網羅率を指標にてそれに縛られすぎるな。 終わりに 今回の本は 前回言っていたAIの本ではなく、前回の本の終わりにテストのことを重点的に紹介されていたので、この本になりましたね。 あと、AIの本より前から積んでた…

  • Good Code, Bad Code 11章

    はじめに こんばんは。 一人輪読会第11回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 11章 ユニットテストの実践 ) 本章で重要だと感じた点 具象なクラスに紐づいていると途端にテストしにくくなるから抽象に依存するかDIしようね。 プライベートメソッドまでテストしようとしなくていいよ。 終わりに 11章読みました。 一旦ここまでで終わりです。 初学者向けでしたが、モチベ…

  • Good Code, Bad Code 10章

    はじめに こんばんは。 一人輪読会第10回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 10章 ユニットテストの原則 ) 本章で重要だと感じた点 テストが実装の詳細にとらわれないようにしようね。 テストコードが複雑にならないようにしようね。 テストの実行は迅速に行われるようにスピード感も意識しようね。 モックやスタブは便利だけど、それ自体が問題になる可能性がある(実態と違…

  • Good Code, Bad Code 9章

    はじめに こんばんは。 一人輪読会第9回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 9章 コード再利用、汎用化しやすくする ) 本章で重要だと感じた点 グローバルな状態は再利用とは相性悪いから気をつけようね。 抽象化とモジュール化をきちんと行えば再利用性、汎用性は自然と高くなるよね。 終わりに 9章読みました。 短めでしたが、大事な章でした。 この先も やる気はやれば出…

  • Good Code, Bad Code 8章

    はじめに こんばんは。 一人輪読会第8回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 8章 コードをモジュール化する ) 本章で重要だと感じた点 抽象に依存しようね。 継承は注意しながら適切に使おうね。 戻り値や例外で意図せず詳細が漏れないように注意しようね。 終わりに 8章読みました。 初学者向けですが、例外処理とか少しサボってしまうときとかあるので、耳が痛い部分もあり…

  • Good Code, Bad Code 7章

    はじめに こんばんは。 一人輪読会第7回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 7章 誤用しにくいコードを書く ) 本章で重要だと感じた点 不変なものにできるものは、なるべく不変にしていこうね。 基本的なデータ型よりも、なるべく専用の型を作っていこうね。 終わりに 7章読みました。 この部分も設計系の本ではよく見る文脈でした。 この先も やる気はやれば出る の精神で…

  • Good Code, Bad Code 6章

    はじめに こんばんは。 一人輪読会第6回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 6章 想定外の事態をなくす ) 本章で重要だと感じた点 マジックナンバー(マジックバリュー)は避けて、きちんとnullを使おうね。 予期せぬ副作用を誰かが起こさないように、適切に名前をつけようね。 終わりに 6章め読みました。 初学者に向けての内容ですが、ある程度経験積んだ自分も、また文…

  • Good Code, Bad Code 5章

    はじめに こんばんは。 一人輪読会第5回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 5章 コードを読みやすくする ) 本章で重要だと感じた点 なるべくコメントではなくコードで説明できるようにする。 コードの行数を意識しすぎない。 終わりに 5章め読みました。 大体現状、実践している事がほぼでした。 経験も増えていくと実践しているのがほぼなんですが、コメント周りは自分も改…

  • Good Code, Bad Code 4章

    はじめに こんばんは。 一人輪読会第4回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 4章 エラー ) 本章で重要だと感じた点 エラーが起きた場合は素早く落ちることが大事 回復不可能なエラーが起きた場合は、大いに目立って落ちること。 エラーが起きた際には必ず通知するべき。ただしメールアドレスなど個人情報を通知した場合、データポリシー違反などに抵触する可能性があるので、要注…

  • ダイエット日記2回目

    ダイエット続いてます。 緩やかに痩せていってます。 前回から1キロは痩せたかな? 昔は1キロって誤差の範囲だったけど、最近は減らない減らない。 しかも今週前半は熱を出して倒れていたので運動もできてませんでした。 来週からも頑張って痩せます!

  • Good Code, Bad Code 3章

    はじめに こんばんは。 一人輪読会第三回です。 結構あいちゃいました... 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 3章 コードでの契約 ) 本章で重要だと感じた点 細かなコメントは契約時の利用規約の細則のようなもので、大体の人はきちんと見ない 自分のコードを正しく他のエンジニアに理解してもらうためには、名前や型にこだわること 上記2点が正しくできたうえで、使用者に正しく使…

  • laravelのcachedriverをmemcachedにしている状態で ttlを指定してもなぜか時間が来てもデータが消えない 2

    はじめに こんばんは。 以前ブログで書いた 記事でまた似たような現象が起きました。 kojirooooocks.hatenablog.com 今度は違う理由だったので備忘録のため残しておきます。 本題 今回も同じくttlで指定した時間にキャッシュが消えてない現象が発生しました。 $key = 'xxxx_key'; $value = 'aaaaaa'; $ttl = CarbonImmutable::now()->addHour(); // 1時間後に設定 Cache::put($key, $value, $ttl); 前回のことがあってmemcachedのtimezoneの設定は Asia/…

  • ダイエット再開します。

    はじめに 完全に太ってきました。 完全にリバウンドです。 露骨に服もきつくなってきました。 なので、今日からまたダイエット頑張りはじめます。 とりあえず証拠として現在の体重を載せておきます。 74.1kgです。 過去ダイエットが成功して痩せた体重も載せておきます。 65.6kgです。 この写真は 2022/10/28 の写真です。 一旦この年内にこの65.6kgにするのが目標ですが、最終目標は自分の標準体重+5kgの61kgです。 本題 基本的には前回同様FitBoxing2で運動します。 Fit Boxing 2 -リズム&エクササイズ- -SwitchイマジニアAmazon Fit Box…

  • 我が家の積本紹介

    こんばんは。 この夏から少しずつ積本の消化を頑張ってます。 今回は今溜まってる積本を紹介します。 完全に積んでいる本は以下 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発作者:Tom Hombergs,須田 智之インプレスAmazon [入門]ドメイン駆動設計――基礎と実践・クリーンアーキテクチャ Software Design別冊作者:増田 亨,田中 ひさてる,奥澤 俊樹,中村 充志,成瀬 允宣,大西 政徳技術評論社Amazon Flutter実践開発 ── iPhone/Android両対応アプリ開発のテクニック作者:渡部 陽太技術…

  • Good Code, Bad Code 2章

    はじめに こんばんは。 一人輪読会第二回です。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon 前回はこちら kojirooooocks.hatenablog.com 本題( 2章 抽象化レイヤー ) 本章で重要だと感じた点 コードをどのように抽象化するかは自分自身の判断と、解決しようとしている問題の知識が必要。 コードを書くだけではなく、それぞれのタスク(ひいてはプロジェクト全体)に関するいわゆるドメイン知識が必要ということだ。 レイヤーが厚すぎるよりはレイ…

  • Good Code, Bad Code 1章

    はじめに こんばんは。 最近ゲーム・動画でボーっと過ごすことが多いので、一人輪読会ということで、無理やり本を読むようにします。 読むのはこちら。 Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考作者:TomLong,秋勇紀,高田新山,山本大祐秀和システムAmazon ちょっとだけ読んで、すぐに積本になってしまったので、無理やり最後まで読みます。 本題( 1章 コードの品質 ) 本章で重要だと感じた点 高品質なコードが達成すべき4つのゴール 高品質なコードであることを担保するための6つの上位の戦略 高品質なコードが達成すべき4つのゴール 正しく動くこと…

  • laravelのcachedriverをmemcachedにしている状態で ttlを指定してもなぜか時間が来てもデータが消えない

    はじめに こんばんは。 今日作業しているときにぶち当たった謎がありました。 もう解決済みですが、備忘録として残しておきます。 laravelのcache_driverを memcached に設定している状態で ttlを指定して保存したが、なぜか期限が切れてもデータが消えませんでした。 laravel.com 本題 実際に使用しているコードは以下 $key = 'xxxx_key'; $value = 'aaaaaa'; $ttl = 3600; Cache::put($key, $value, $ttl); ドキュメントにも書いている書き方で、全く問題ないと思ってました。 ただ、ttlで設定…

  • 地震多すぎ

    こんにちは。 雑日記です。 最近地震多いですね。 先日の宮城県の震度6弱の地震があったと思いますが、僕はその時ちょうど愛媛県に帰省していてかなり揺れを感じました。 その時の地震により、国から南海トラフ注意となる地震ということで愛媛に一人暮らししている母を連れて関東に帰ってきたら、今度は神奈川で地震があり、どこにいても危ないなーという感じを受けました。 自分の家は定期的にお水を頼んでいたりしているのですが、周りでは水がなくなっている状況になり、コロナ時のようになっているなぁと思いました。 ともかく、一週間〜一ヶ月は南海トラフに関連する大地震を注意するということなので、みなさんもお気をつけください…

  • AdonisJSを試す(authentication)

    はじめに こんばんは。 今日もAdonisJS試していきます。 今日はDBの認証やってみます。 前回はこちら kojirooooocks.hatenablog.com 本題 前回と構成は一緒で プロジェクト名だけ authentication にしています。 そして、前回と同じようにユーザーテーブルだけ作成しています。 初期データ作成 デフォルトユーザ用のSeederを作成します。 $ node ace make:seeder User DONE: create database/seeders/user_seeder.ts できたSeederファイルを修正します。 user_seeder.t…

  • AdonisJSを試す(migration)

    はじめに こんばんは。 今日もAdonisJS試していきます。 今日はDBのマイグレーションやってみます。 前回はこちら kojirooooocks.hatenablog.com 本題 インストール $ npm init adonisjs@latest migration_example > npx > create-adonisjs migration_example _ _ _ _ ____ / \ __ ___ _ __ (_)___ / ___ / _ \ / _` / _ \ '_ \ / __ _ \___ \ / ___ \ (_ (_) …

  • adonisjsを試す

    はじめに こんばんは。 新たな案件で adonisjsというものを使用する可能性が出てきたので、こちらの素振りをしておきます。 adonisjs.com nodeのバージョンは以下です。 node -v # v22.5.0 本題 インストール $ npm init adonisjs@latest hello-world Need to install the following packages: create-adonisjs@2.4.0 Ok to proceed? (y) y > npx > create-adonisjs hello-world _ _ _ _ ____ / \ __ …

  • Laravelのメンテナスモードを初めて使用した。

    はじめに こんばんは。 今まであんまり使用したことなかったのですが、最近はじめてLaravelのメンテナンスモードを使用しました。 laravel.com 本題 対応は非常に簡単で、コマンド操作で終了です。 メンテ on $ php artisan down メンテ off $ php artisan up 以下で終わりです。 めちゃ簡単。 バイパス機能 $ php artisan down --secret="シークレットパス" http://localhost/シークレットパス にアクセスると Cookieにシークレットパスが入り、使用中のブラウザのみメンテナンスモードを突破できるようにな…

  • LaravelのHasMiddlewareを初めて知った

    こんばんは。 Laravel案件やっている自分ですが、またまた最近知った機能がありました。 HasMiddleware です。 バージョン9からあったみたいです。恥ずかしい〜。 laravel.com 本題 <?php namespace App\Http\Controllers; use Illuminate\Routing\Controllers\HasMiddleware; use Illuminate\Routing\Controllers\Middleware; final class ExampleController implements HasMiddleware { publ…

  • mac, win 間でキーボード・マウスを共有する「Barrier」が使いやすかった

    はじめに こんばんは。 現在案件で、Windowsを使用しなければいけない箇所がありまして、普段Macを使用している自分からしたら、そのためだけにwindowsPCとキーボード・マウスを用意して...という作業が苦痛で苦痛でしょうがなかったです。 なんかいいのないかなぁと思って探したのですが、イイのありました。 github.com 本題 こちらから適当にダウンロードして使えます。 Mac/Windowsどちらにもダウンロードして起動しておきます。 起動するこんなのが立ち上がります。 サーバー側はコントールする側 クライアント側はコントロールされる側 で、僕の場合はMacからWindowsを操…

  • パスワード付きxlsmファイルのMimeTypeがいつもと違ってた

    はじめに こんばんは。 Laravelプロジェクトでマクロ付きのエクセルファイルをアップロードしたりして、それをもとにモニョモニョするみたいなプロジェクトをしております。 今回パスワード付きのxlsmを扱ったさいにちょっといつもと違ったので、備忘録しておきます。 本番 今までアップロード時のValidationは 以下みたいにしていました。 'file' => [ 'required', 'file', 'mimes:xlsx,xlsm', ], 今回パスワード付きのxlsmを扱った際にMimeTypeのバリデーションに引っかかってしまいました。 直接以下みたいにしてみてもだめでした。 'fi…

  • MySQLのGenerated Columns初めて知った。

    はじめに こんばんは。 Generated Columns知ってますか? 僕は最近お仕事で初めて知りました。 dev.mysql.com 特定のロジックに従って算出された値をカラムのように扱えるようになるみたいです。 本題 例えば 論理削除が採用されている会員テーブルで、emailカラムにユニーク制約をつけたいという場合、論理削除されたレコードに登録されている emailデータは、新たに登録できるような作りにしたいと思います。 ただ、ユニーク制約をつけている場合、制約に引っかかって登録できないというよくある失敗が発生したりします(よくあるのか...?) 僕が今まで体験してきた現場だと論理削除時…

  • PHP_CodeSnifferのレポジトリが新しくなっていた

    こんばんは。 PHP_CodeSniffer使っているプロジェクト多いと思いますが、PHP_CodeSnifferのレポジトリ新しくなっていたの知ってましたか? 僕は先週知りました。すいません... github.com 今まで使用されていた squizlabs/PHP_CodeSniffer から PHPCSStandards/PHP_CodeSniffer に変更されました。 squizlabs/PHP_CodeSniffer の方は最新バージョンは 3.7.2 で、このバージョンではphp8.3から導入されている Typed class constantsが エラーになっていました。 こ…

  • Laravelのテストコード内でFakerを使いたい

    はじめに こんばんは。 全く知らなかったLaravelの機能で、テストコード上でFakerを使う備忘録です。 本題 <?php namespace Tests; use Tests\TestCase; use Illuminate\Foundation\Testing\WithFaker; class UserCreateActionTest extends TestCase { use WithFaker; public test_invoke() { // 以下みたいな感じで使える $this->faker->name, $this->faker->email, } } 終わりに お恥ずか…

  • Laravel11で `DB::connection()->getDoctrineSchemaManager()->listTableNames()` は使えない

    こんばんは。 簡単なLaravelネタです。 最近あるプロジェクトを Laravel10から11へアップグレードしました。 その際にエラーがでたので、そちら備忘録で残しておきます。 本題 今回アップグレードでエラーが出た箇所は以下 $tables = DB::connection()->getDoctrineSchemaManager()->listTableNames(); 接続先のDBのテーブル名一覧を取得するというコードです。 こちらLaravel11では getDoctrineSchemaManager() が削除されており使用不可になっています。 readouble.com こちら対…

  • ngrokで複数のポートを使用してみる

    はじめに こんばんは。 ngrok今でもよく使っているんですが、あれは基本的に指定した一つのポートのみしか使えません。 ただ、設定ファイルを使って複数のポートを設定できるようです。 本題 よく使うのは以下だと思います。 $ ngrok http 8080 K8s Gateway API support available now: https://ngrok.com/r/k8sgb Session Status online Account xxxxxxxx (Plan: Free) Update update available (version 3.9.0, Ctrl-U to updat…

  • Dockerのマルチステージビルドを試してみた

    はじめに こんばんは。 Dockerネタです。 前々からローカル環境・検証環境でDockerfileを分けたいなと思っていて、ファイルを分けずにどうにかできないかと考えていたのですが、マルチステージビルドというのがあり、今回試してみました。 docs.docker.jp 本題 Dockerfile # ローカル & 検証どちらも FROM php:8.3-apache AS base RUN apt-get update \ && apt-get install -y libzip-dev \ && docker-php-ext-install zip RUN apt-get update \…

  • 積みゲー多すぎる

    久々にだらっとした日記。 最近やっと積んでたゲーム 風花雪月をクリアしました。 全学級 + DLC クリアするのにめちゃ時間かかりました... ファイアーエムブレム 風花雪月 -Switch任天堂Amazon 龍が如く8やりたいなート思ってるんですが、それより前に積んでるゲームが多すぎてまだたどり着けなそうです。 さしあたっては龍が如く7の外伝 龍が如く7外伝 名を消した男【Amazon.co.jp限定】デジタル壁紙 配信 - PS4セガAmazon キングダムハーツ3 キングダム ハーツIII - PS4スクウェア・エニックスAmazon ユニコーンオーバーロード ユニコーンオーバーロード …

  • DBが複数存在する場合のRefreshDatabaseトレイトを使ったテスト

    はじめに こんばんは。 Laravelでテスト書く際に 最初に必要なSeederを読み込んで 各テストを行いたい場合ってよくあると思いますが、その際は必ず RefreshDatabase トレイトをuseする必要があります。 そのさいDBが複数存在する場合に限りうまくいきません。 色々調べたのですが以下の例のように RefreshDatabase の処理をオーバライドする必要がありそうです。 qiita.com 本題 <?php namespace Tests; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\…

  • Laravelでファイルダウンロード

    はじめに こんばんは。 あんまりダウンロード機能とか作ってなかったのですが、久々にLaravelで作ったので備忘録っときます。 めちゃ短いですが... 本題 <?php namespace App\Http\Controllers; use App\Model\File; use Illuminate\Http\Response; use Illuminate\Routing\ResponseFactory; class DownloadAction { public function __construct(private readonly ResponseFactory $response…

  • phpでQRコード作成

    はじめに こんばんは。 QRコード生成ライブラリはJSでメインで使っていて、あとはGo言語で少しだけやった記憶があったんですが、今回PHPでも使う機会があったので、備忘録残しておきます。 本題 使用したのはこちら github.com 今回のユースケースは、 Laravelでメール通知の際に特定のURLのQRコードを作成して、メールに添付して送りたいってことでした。 <?php use Endroid\QrCode\QrCode; use Endroid\QrCode\Writer\PngWriter; $qrCode = QrCode::create(route('users.answer'…

  • docker-composeでminioが起動したときにバケットを作る

    はじめに こんばんは。 minio使用する際にバケットがないと言われてイラッとしたので、調べてみました。 本題 方法1 minio: image: minio/minio:latest ports: - '${FORWARD_MINIO_PORT:-9001}:9001' - '${FORWARD_MINIO_CONSOLE_PORT:-8900}:8900' environment: MINIO_ROOT_USER: root MINIO_ROOT_PASSWORD: password entrypoint: > /bin/sh -c " mkdir -p /data/minio/bucke…

  • laravelでファイルアップロードのテスト

    はじめに こんばんは。 今回もlaravelネタで簡単な備忘録です。 画像をアップロードするようなアクションのテストを行いたい場合の対応です。 本題 アップロードするアクションは以下のような感じだとします。 <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Http\Requests\UploadRequest; class UploadController extends Controller { public function __invoke(UploadRequest $…

  • laravelのuuid()をmockする

    はじめに こんばんは。 ちょっとまえに、laravelの uuid() を使用しているコードのテストを行う必要があったので、対応してみました。 簡単ですが備忘録です。 本題 uuid()のコード自体は Illuminate\Support\Str::uuid() を使ってます。 /** * Generate a UUID (version 4). * * @return \Ramsey\Uuid\UuidInterface */ public static function uuid() { return static::$uuidFactory ? call_user_func(static…

  • Laravel Precognitionを試してみた

    はじめに こんばんは。 今回は Laravel Precognitionを試してみました。 readouble.com 試してみたいと思っててなかなか試せずいました。 本題 基本ドキュメントどおりに進めていきます。 自分がやっていたプロジェクトでは vue + inertiaをつかってたので、まずnpmでライブラリをインストールします。 コマンド $ npm install laravel-precognition-vue-inertia バックエンド側では HandlePrecognitiveRequests を使えるように対応します。 route.php use App\Http\Cont…

  • laravelのパスワードバリデーションのuncompromisedを初めて知った

    はじめに こんばんは。 恥ずかしながらシリーズで laravelのパスワードバリデーションの uncompromised を初めて知りました... readouble.com 本題 <?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rules\Password; class StoreUserRequest extends FormRequest { protected function rules() { return [ 'pass…

  • Laravelのテストで初回にSeeder読み込みをしたい

    はじめに こんばんは。 またまたLaravelネタです。 RefreshDatabase と $seedプロパティ or $seederプロパティ を使います。 公式にも記載があります。 readouble.com 本題 tests/TestCase.php <?php namespace Tests; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; abstract class TestCase extends Base…

  • laravelのpaginateでgroupbyもしたい

    はじめに こんばんは。 今回もlaravelネタです。 paginateしつつデータをgroupbyしたいなってときがあって、それを調べた対応です。 本題 元データはこちらでやってみます。 $paginator = new \Illuminate\Pagination\Paginator(collect([ ['userId' => 10, 'type' => 1, 'name' => 'AAA'], ['userId' => 20, 'type' => 2, 'name' => 'BBB'], ['userId' => 30, 'type' => 3, 'name' => 'CCC'], […

  • laravelのFormRequestバリデーションのテスト方法にはassertInvalidを使う

    はじめに こんばんは。 めちゃめちゃ簡単ですが、知らなかったので備忘録です。 本題 readouble.com 今までは assertSessionHasErrors を使って以下みたいに書いてました。 $article = Article::factory()->create(); $response = $this->actingAs(User::factory()->create()) ->post(route('article.update', $article->id), [ 'name' => null, ]); $response->assertStatus(302); $res…

  • laravelのRedirectorのintendedメソッド

    はじめに こんばんは。 何気なく使ってた intended メソッドですが、ふわっと使ってたので、きちんとドキュメントよんでみました。 本題 readouble.com Laravelのリダイレクタが提供するintendedメソッドは、認証ミドルウェアによってインターセプトされる前に、アクセスしようとしたURLへユーザーをリダイレクトします。目的の行き先が使用できない場合のために、このメソッドにはフォールバックURIが指定できます。 実際のメソッドはこちら /** * Create a new redirect response to the previously intended locat…

  • 犯罪心理学者が教える子どもを乗ろう言葉・救う言葉を読んだ

    はじめに こんばんは。 積極的な勉強はまだ手つかずですが、少しでも机に向かって勉強する姿勢を取り戻すために、本を読むようにしています。 とりあえず今回読んだのはこちら。 犯罪心理学者が教える子どもを呪う言葉・救う言葉 (SB新書)作者:出口保行SBクリエイティブAmazon 犯罪等を犯した未成年の子たちをモデルケースに、子どもと親の関わり方で、危険な関わり方等を教えてくれます。 紹介されているモデルケースでは、親子の関わり方がおかしかった結果、窃盗や詐欺、果ては殺人未遂まで犯してしまった という、かなり極端というか、特殊なケースでした。 ただ、節々で 「あぁ。こういう言い方自分もしちゃっている…

  • 40歳になりました。

    こんばんは。 本日ついに40歳になりました。 自分の中ではまだ15歳くらいの気分なのですが、体つきはおっさんそのものかも。 とりあえず実感はありません。 さてさて、40歳で気になるのは以前記事で読んだ「ミッドライフクライシス」です。 news.yahoo.co.jp 中年の危機 めちゃこわいです。 自分の人生やアイデンティティに疑問や不安を抱く状態で、メンタルに大きな影響を及ぼすことがあります。 めちゃこわいです。 自分はそこまでメンタル強い方でもないと思っているので、 中年の危機 のことを考えているだけですでに不安になってきます。 対策としてはざっくり、運動と睡眠ってことみたいですね。 正直…

  • 2024年の目標

    はじめに こんにちは。 2024年は厄年の始まりのkojirockです。 2024年の目標を建てようと思います。 2023年の目標はこちら kojirooooocks.hatenablog.com 2023年の振り返りはこちら kojirooooocks.hatenablog.com 本題 1. 体重を65kgにする 少しリバウンドをして70kgまで戻ってしまいました。 最後の方は運動やめて食事制限だけだったので、それがだめだったのかな...? 今年は少しだけでも運動しつつマイナス-5kgの65kgを目指します。 2. アドベントカレンダーに必ず1つ以上参加する ここ2年全く熱量がわかず参加し…

  • 2023年のまとめ

    はじめに こんばんは。 あけましておめでとうございます。 2023年も本当にお疲れさまでした。 そして毎年恒例2023年の振り返りをやっていきたいと思います。 kojirooooocks.hatenablog.com 本題 1. ダイエットで62kgにする ブログ書く前に測ってみましたが、70kgで残念ながら未達です。 2. 毎月1冊積本を読破する 今年は全く勉強らしい勉強しなかたので全くの未達です。 3. アドベントカレンダーを必ず1件参加する 去年同様全く参加しなかったので、未達です。 終わりに 2023年はここ3, 4年の中で一番何もできなかった年でした。 勉強もやる気にならないし、ダイ…

  • 体調が悪いと気持ちも落ちてくる

    こんばんは。 雑談です。 10月くらいから子供がインフルエンザ + 溶連菌のダブル感染でとんでもない状態になっていたのですが、その後子供は回復し、次は妻・自分がインフルエンザになり、大変な状況になっておりました。 今月ようやく体調不良が落ち着いたと思ったら、子供がまた溶連菌をもらってしまい、僕も2・3日前に発熱して、ダウンしておりました。 年末というのに体の不調が続いてしまって、仕事も勉強もなかなかうまくいかない状況でした。。。 最近本も買ったのですが、やる気が起きず積本しちゃってます。 最後の締めくくりブログもあんまり書く気になれない。 来年はお祓いでも行って、頑張らないとなぁ。

  • LaravelのHasOneOfManyを今更試した

    はじめに こんばんは。今回もLaravelネタです。 結構前から触ってたのに全然気づいてなかったのですが、 1:Nな関係のテーブルに対して擬似的に1:1を定義して取得できる機能がありました。 laravel.com 本題 テーブル定義 CREATE TABLE `users` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL COMMENT 'メールアドレス', `password` varchar(255) COMMENT 'パスワード', `created_at` timest…

  • Laravel-PermissionのRoleやPermissionをInertiaに送る

    はじめに こんばんは。 Laravel-Permissionを使用している状態でLaravel + Inertia環境下で、RoleやPermissionを送るための方法を備忘録で残しておきます。 本題 方法は簡単で、HandleInertiaRequests でグローバルに送るのがよさそうです。 <?php namespace App\Http\Middleware; use App\Http\Resources\AuthResource; use App\Models\User; use Illuminate\Http\Request; use Inertia\Middleware; cl…

  • Laravel+Inertiaでのsentry設定

    はじめに こんばんは。 Laravel + Inertia環境で Sentryを使用することがあったので、めっちゃ簡単ですが設定方法を備忘録で残しておきます。 本番 やり方はとっても簡単で、 resources/js/app.ts に記載するだけです。 import "./bootstrap"; import "../css/app.css"; import { createInertiaApp } from "@inertiajs/vue3"; import * as Sentry from "@sentry/vue"; import { resolvePageComponent } fro…

  • laravel-permissionで関連テーブルのprimary keyをuuidにしたい

    はじめに こんばんは。 laravel-permissionを使用する際に専用のマイグレーションを実行すると思いますが、その各テーブルのprimary keyを通常のbig integerからuuidに変更する対応をしたので備忘録です。 本題 対応は以下を見れば大丈夫。 spatie.be 基本的に $this->bigIncrements となっている部分を $this->uuid となる感じです。 Model側は 他のModel同様に HasUuidsをuseするだけです。 Role.php <?php namespace App\Models; use Illuminate\Databa…

  • vanilla-autokanaを使ってみた

    はじめに こんばんは。 今回は vanilla-autokanaを使ってみました。 日本語入力すると、対応するカタカナが該当のフォームに入力される的なやつです。 github.com 今回は vueを使用しているプロジェクトで導入しました。 参考サイト code-enj.app 本題 コードはざっくりこんな感じ。 <script lang="ts" setup> import { useForm } from "@inertiajs/vue3"; import * as AutoKana from "vanilla-autokana"; import { onMounted, ref } fr…

  • Inertia利用下で flashMessageを送りたい

    はじめに こんにちは。 よく以下みたいな感じで リダイレクト時にflashMesageをセットするようなときってあると思います。 session()->flash('success_message', 'OKです!'); Inertiaを利用している状況で このセットした flashMessageをフロントに渡す際に対応した備忘録です。 こちらのページを参考にしました。 https://laracasts.com/discuss/channels/inertia/jetstream-inertiajs-how-to-return-back-with 本題 最初にController側でflas…

  • laravelのwhereUuid知らなかった

    こんばんは。 恥ずかしながらしなかった備忘録です。 ルートパラメータの成約でよく whereとかを使うと思います。 こんな感じの。 Route::get('/user/{id}', function (Request $request, int $id) { return 'User ' . $id; })->where('id', '[0-9]+'); ← これ idを指定する場合は、primarykeyを指定する感じが多いのかなと思うので、まさに例で書いたような ->where('id', '[0-9]+'); みたいにしちゃうと思います。 int型なら一旦これでもいいかなと思うのですが、…

  • Inertia利用下でfeatureテストを書く

    はじめに こんにちは。 現在、Inertia利用下のプロジェクトでテストを書いてます。 書き方はそんな難しくないです。 本題 <?php namespace Tests\Feature; use Inertia\Testing\AssertableInertia; use Tests\TestCase; class ExampleControllerTest extends TestCase { public function test_invoke(): void { $this->get('example') ->assertInertia(static fn (AssertableIne…

  • laravelのpintを初めて知った。

    はじめに こんばんは。 皆さん pintしってましたか?自分は最近まで全く知りませんでした。。。 readouble.com pintを知らずに頑張って php-cs-fixer だったり phpmd だったりを独自導入してましたが、laravelプロジェクトだったらもうこれ一択でいいなとか思いました。 本題 laravel9以上だったらlaravelと一緒にインストールされているので特別なにかする必要ないようです。 ベースは php-cs-fixer です。 基本はこれでOK $ ./vendor/bin/pint % ./vendor/bin/pint ..................…

  • write-blog-every-weekの通知プログラムを更新しました

    こんばんは。 ただの報告ですが、ついに write-blog-every-week のプログラムを更新しました。 github見てみたら 4年前くらいだったので久しぶりの更新です。 旧ロジックは archiveして、新たにレポジトリを作りました。 旧ロジック github.com 新ロジック github.com 旧ロジックはGoで作りましたが、新ロジックはTSでつくりました。 あとはインフラ系も AWS SAM をつかってコード管理しています。 もともとメンバーの方と一緒につくろうとしていたのですが、自分の仕事とプライベートが忙しくなってしまい、時間が取れず足を引っ張りまくって、頓挫させてし…

  • ShiftItを卒業してHammerspoonをインストールした

    はじめに こんにちは。 画面分割アプリつかってますか? 僕はだいぶ前から shiftIt を使用していました。 github.com ただ、なんか最近うまく動かないときが続いており、気づくと応答なしになることが多くなってました。 githubみると、そもそもだいぶメンテされてないぞとなってたので、代替品を調べてたら他にも考えた方がいらっしゃいました。 kawase-k.hatenablog.com いいのがありました。 それで Hammerspoon となるいい第かえツールがありました。 www.hammerspoon.org shiftIt ライクに動かせるようにインストール後、設定ファイル…

  • laravelのResourceCollectionで追加データを送りたい

    はじめに こんばんは。 めちゃ簡単な備忘録です。 ResourceCollectionで data meta 以外に新たにデータを追加したい・または 元のデータに更にデータを追加したい場合の対応です。 readouble.com 本番 簡単な話なんですが additional() を使えばOKです。 以下みたいな感じ。 $resources = new ResourceCollection($collection); $resources->additional([ 'aaaa' => 'AAAA', 'bbbb' => 'BBBB', 'cccc' => 'CCCC', ]); 配列よりクラ…

  • Vue datepickerをlaravel + Inertia環境で使用してみた

    はじめに こんばんは。 今回は Vue datepickerをlaravel + Inertia 環境上で使用したので備忘録っときます。 といっても変な使い方はしてないので、めちゃ簡単でした。 vue3datepicker.com 本題 1. まずはインストール $ npm install @vuepic/vue-datepicker 2. 次は初期設定 cssの設定をします。デフォルトだと resources/css/main.css だと思います。 @import "@vuepic/vue-datepicker/dist/main.css"; vueにuseします。デフォルトだと reso…

  • inertiajsで404ページを出したい

    はじめに こんばんは。 さいきんはInertiajsを使っています僕です。 今回は。inertiajs使用下で404ページを表示する方法です。 基本的に公式のままやればOKです。 inertiajs.com 本題 app/Exceptions/Hander.php /** * @param $request * @param Throwable $e * @return JsonResponse RedirectResponse Response * @throws Throwable */ public function render($request, Throwable $e) { $r…

  • laravelのResourceCollectionのpaginationデータの返却値をいじりたい

    こんばんは。 最近よく laravelさわってます。 paginationデータを ResourceCollectionで返却すると以下みたいなデータが返って来ると思います。 { "data": [ { "id": 1, "name": "Eladio Schroeder Sr.", "email": "therese28@example.com" }, { "id": 2, "name": "Liliana Mayert", "email": "evandervort@example.com" } ], "links":{ "first": "http://example.com/users…

  • CarbonPeriod知らなかった

    はじめに こんばんは。 Carbonよく使っているのですが、 最近 CarbonPeriodの存在を知りました。 github.com 本題 <?php use Carbon\CarbonImmutable; use Carbon\CarbonPeriodImmutable; $period = CarbonPeriodImmutable::create( CarbonImmutable::now()->startOfMonth(), CarbonImmutable::now()->endOfMonth(), ); dd(array_map( static fn(CarbonImmutable…

  • laravel10からdatesプロパティは削除されていた

    はじめに こんばんは。 めっちゃ簡単な話なんですが、最近知ったので備忘録。 本題 laravel10から $dates プロパティが削除されてました。 readouble.com laraveldaily.com これからは $casts プロパティに統一されているようです。 まぁ僕は前から $casts の方を使ってたので、きにしてなかったんですけどね。 <?php class User extends Authenticatable { protected $fillable = [ 'name', 'email', 'last_login_at', ]; protected $casts…

  • laravelのcastsでenumをセットする

    はじめに こんばんは。 今回も簡単な laravelの備忘録です。 最近はphp8.1のenumを使うパターンをよく使う事が増えてきたのですが、laravelでは $casts でenumをセットしてくれるようになってるみたいなのでやってみました。 本題 laravel.com Enum <?php namespace App\Models\Enums; enum Status: int { case REQUESTING = 1; case REJECT = 2; case ACCEPT = 3; } Eloquent <?php namespace App\Models; use App\…

  • 家族中にコロナが蔓延した

    はじめまして。 先日僕がコロナになったというブログを書きました。 kojirooooocks.hatenablog.com 僕はやっと収まって約一ヶ月、今度は家族が続々とコロナになっていきました。 まずは一緒に住んでいる祖父母。 「喉がいたいなぁ」という一言でビクッとしましたが、確認してもらうとバッチリコロナ感染。 最初に祖父がかかり、次に看病していた祖母がかかりました。 一緒に住んでたので1F, 2Fで完全に分かれて半隔離状態で過ごしてもらったのですが、その一週間後、今度は子供が感染。 最後は、子供を看病してくれていた妻が4日前に感染。 完全に僕のコロナから始まった家族全員蔓延でした... …

  • phpstanの"no value type specified in iterable type array" の対応方法

    はじめに こんばんは。 phpstan使ってますか? 自分はLaravelのお仕事を受けることが多く、その現場では larastanとして導入されている事が多いです。 個人的によく怒られるエラーの代表として no value type specified in iterable type array があるかなと思ってます。 配列の中身ちゃんと定義してね。ってやつです。 基本的にはちゃんと書くと思うんですが、ちょっとここは除外したいなーってときもあると思います。 たとえば Laravel の FormRequestクラスの rules() とか attributes() とかです。 配列をかえ…

  • jsで日付入力フォームのために年・月・日の値を作成したい

    はじめに こんばんは。 生年月日の入力フォームを作成する要件がありまして、最初はデザイン的に適したdate pickerライブラリを使おうと思っていました。 ただ、提案したどのライブラリも 入力側がミスしすそう、または操作しづらそうという意見が多く、極力シンプルに 年・月・日がすべて分かれたプルダウンメニューを作るという形になりました。 今まで生年月日入力は date pickerとかに任せちゃってたので、作ろうとしたちょっとだけハマりました。 めちゃめちゃ簡単な実装なんですが、いつものように備忘録しときます。 本題 年の実装 1980年 〜 今年までの年の情報を作るスクリプトです。 0から始…

  • コロナになって2週間くらい寝込んでいた

    こんばんは。 雑日常ブログです。 7月の12日くらいからコロナにかかってしまい、完全にダウンしていました。 妻にも感染して、子供だけ祖父母宅に退避してもらって、夫婦仲良くダウンしてました。 よく言われる味覚や嗅覚が効かなくなるみたいなものは僕にはなかったですが、とにかく咳と喉の痛みがひどかったです。 タイミング悪く帰省していたタイミングでかかってしまったので、実家から車で自宅へ帰るのにも、めちゃめちゃ休みながら帰りました。 せっかくの帰省だったのに90%以上は寝て過ごしていました... まだ微妙に咳が出ますが、ようやく体調が復活してきたので、仕事も復帰しはじめています。 ただ、まるまる2週間く…

  • 管理画面用・フロント用にInertiaのルートを分ける

    はじめに こんばんは。 Laravelで使うInertiaで管理画面用・フロント用でルートを分けたい時がありまして、調べて対応しました。 めっちゃ簡単ですが、備忘録です。 本題 対応するのは、Middlewareの HandleInertiaRequests です。 public function rootView(Request $request): string { if ($request->route()->getPrefix() === 'admin') { // admin root return 'admin_app'; } return $this->rootView; } こ…

  • cognitoでsignup後、smsのcode認証

    はじめに こんばんは。 最近 cognitoを使って、認証等を勉強中です。 そんな中で流れでsignupして code認証する流れをphpで作ってたので、備忘録で残しておきます。 本題 登録 $client = new CognitoIdentityProviderClient([ 'version' => env('AWS_COGNITO_VERSION'), 'region' => env('AWS_DEFAULT_REGION'), 'credentials' => [ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SEC…

  • mockserverをmockできるAPIサーバを作る

    はじめに こんばんは。 今回は mockサーバーを作った際の備忘録です。 ローカル開発のさいに実際に通信せずにmockできるようにするためにdockerで作ります。 色々あるみたいですが、今回作ったのは この mockserver github.com さっそくやってみます。 本題 いきなりコード docker-compose.yml version: '3' services: mockServer: platform: linux/amd64 image: mockserver/mockserver:latest ports: - 1080:1080 environment: MOCKSE…

  • 最近早起きしています。

    こんばんは。 最近早起きを始めた僕です。 というのも、副業の仕事を初めたのと、運動・勉強とやりたいことがいっぱいあり、1日のスケジュールをキチンと決めないと、時間が足りなくなってしまったからです。 仕事 運動 勉強 副業 と1日のうちにやりたいことがいっぱいありすぎるんです。。。 最初は、仕事をして子供が寝たあと、夜間を使ってこれらをさばいてたのですが、どうにも睡眠時間が足りず次の日のパフォーマンスが微妙になってました。 なので、これは思い切って朝から稼働しようと思った次第です。 今週から始めたこのスケジュールは、一応寝落ちせずになんとか続いております。 ちなみにこんな感じのスケジュールです。…

  • tblsでmermaid出力ができるようになってた

    はじめに こんばんは。 k1low.hatenablog.com 個人的にすごいニュースでした! github が mermaidを表示できるようになってたから、ぜひ tblsでもmermaid表示できるようにしてほしいなーと思ってたらなってました!! 本題 なんか適当にテーブル追加してみます。 create table users ( id int unsigned NOT NULL AUTO_INCREMENT, email varchar(255) NOT NULL, password varchar(255) NOT NULL, created_at timestamp, update…

  • nuxt-basic-auth-moduleで簡単basic認証 2

    はじめに こんばんは。 めっちゃ簡単な備忘録ですが、以前の記事の続きになります。 kojirooooocks.hatenablog.com 本題 全体的にbasic認証をかけて、一部分だけbasic認証を突破させるというパターンがあると思います。 たとえば ヘルスチェックとか。 そういった場合に nuxt-basic-auth-moduleの match 設定を使います。 nuxt.config.js basic: { name: 'user_name', pass: 'password', enabled: process.env.environment === 'staging' // ス…

  • Laravelのタスクで多重起動を避ける

    はじめに こんばんは。 なんか毎回調べてるので、今回も自分の備忘録用。 Laravelのタスク起動で多重起動を避ける方法 readouble.com 本題 コードはこちら $schedule->command('emails:send')->withoutOverlapping(); withoutOverlapping() を宣言することでそのコマンドが実行中のときは追加で起動するのを避けてくれます。 単一サーバーでしか実行させない宣言の onOneServer() はよく使っていたのですが、今回2分毎くらいで結構重めのバッチを実行するという作業があり、終わってない可能性があったので、こちら…

  • LaravelのXSRF-TOKENの名前を変える

    はじめに こんばんは。 今回、laravelのXSRF-TOKENクッキーの名前を変えるために色々調べた備忘録です。 Staging環境, Production環境でTokenの名前がぶつかって token mismatchエラーが出てしまっていました。 この解決策が参考サイトに書かれていました。 参考サイト techblog.roxx.co.jp 本題 <?php declare(strict_types=1); namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken a…

arrow_drop_down

ブログリーダー」を活用して、kojirockさんをフォローしませんか?

ハンドル名
kojirockさん
ブログタイトル
もがき系プログラマの日常
フォロー
もがき系プログラマの日常

にほんブログ村 カテゴリー一覧

商用