2023年振り返り

仕事 2022年1月に転職して、丸2年働いた 転職してからRuby/Railsを使うようになってきて、今年やっと自分のなかで自然なものになってきた感覚 一方でPHPのことは忘れてはないけど、書かなくなったので分からなくなってきた この2年は新しい機能の開発という…

転職活動メモ

概要 転職活動をして、無事に次に働く会社が決まったので、転職活動の各フェーズにおいての反省点・改善点や不満などをメモ書き 事前にやったこと 履歴書の作成 WEB上で作成できるサービスを利用した 職務履歴書の更新 Google document で管理していたので、…

dataProviderではCarbon::setTestNowをしてはいけない

概要 タイトル通り。 他のテストクラスに影響を与えてしまう。 ざっくりと詳細 今までテストクラスを一つずつ読み込んで実行してくれているものだと思っていたが、実はそうでなく、 全てのテストクラスとdataProviderを読み込んでから、テストメソッドが実行…

Carbon の diffInDays の仕様を理解していなかった

$a = new Carbon('2020-05-11 12:00:00'); $b = new Carbon('2020-05-12 00:00:00'); $a->diffInDays($b); // 1が返ってくると期待していたが、0が返ってくる。 $c = new Carbon('2020-05-12 12:00:00'); $a->diffInDays($c); // 1が返ってくる $d = new Car…

否定のor と andの否定

否定のor if(!$a || $b !== $c) { // } andの否定 if(!($a && $b === $c)) { // } 勝手に名前を付けているが、どちらが可読性が高いのかという疑問。 宗教論争的な話になると思うから、深くは考察しないけど、個人的には前者。 理由としては and は 全ての条…

MigrationとFactoryを別のディレクトリから読み込む

概要 現在、1つのDBの対して、4つのアプリケーション(すべてLaravel5)が稼働しているシステムに関わっており、そのMigrationとFactoryを共通モジュールとして利用できるようにした。 パッケージ開発 細かいところは公式ドキュメントを。 laravel.com Migrati…

Laravelの「max」ルール (sizeの処理を追ってみた)

はじめに tkfric.hatenablog.com 以前書いたような記事に似た内容 概要 公式のドキュメントでは readouble.com max:値 フィールドが最大値として指定された値以下であることをバリデートします。sizeルールと同様の判定方法で、文字列、数値、配列、ファイル…

PHPUnitのバージョン上げようとして嵌った

環境 Laravel 5.3.x / Laravel 5.5.x の2つのアプリケーションが存在 PHP 7.2.x やりたいこと どちらも最新バージョンのPHPUnit(8.x)が使いたい 事象と原因 Laravel 5.3.xのアプリケーション PHP Fatal error: Class 'PHPUnit_Framework_TestCase' not found…

Laravelのセッションが消えて困った

概要 画面間で遷移させているときに、一部のセッションキーが消えてしまったときの話 (Laravelのバージョンは5.3) ざっくりと (先に断っておくが、変数やメソッド名は仮) 少し雑だが、こんなformからPOSTで画面Aに遷移しようとする際に <form action="https://abc.com/" method="post" name=""> <input type="input" name="client_id" value="hoge"><br> <input type="input" name="redirect_uri" value="https://yyy.com"></form>

Laravelの「integer」ルールのバリデーション

概要 LaravelのValidationルールで「integer」があるが、これは型までチェックしているのか?と思ったのが調べるきっかけ。 どういうことかというと、 'id' => 'required|integer', と書いていたバリデーションルールに対して、string型での数値が通っていた…

LaravelのPHPUnitで「PDOException: SQLSTATE[HY000] [1040] Too many connections」が起きた

概要 Laravelでテスト実行中に以下のエラーが出るようになり、少し悩んだ ※バージョンは「Laravel 5.5.44」 PDOException: SQLSTATE[HY000] [1040] Too many connections エラーの発生箇所はPHPUnitで流しているケースの後半 エラーが起きたテストクラスを単…

PHP7.2からのcount()の挙動に悩んだ

PHP

概要 PHPのバージョンを7.0(7.0.15)から7.2(latest)に上げたときに起きた問題 エラーの内容 php7.2 count でググればたくさん出てくるので、細かいことは省略するが、 count()の仕様変更により、配列などCountable なものではないとエラーを返すようになった…

リトライ処理のTraitを作ってみた

ずいぶん前に個人的に作ってたものを備忘録で記載。 Exponential Backoff and Jitterで。 TODOで残してるとこがダサいけど、ベスプラがよくわからず。 こういうところを極めるなら、まずは数学をおさらいしなければかなと思う。 trait RetryTrait { /** * リ…

ServerlessFrameworkでのdeploy時にエラーが出る

概要 serverless deploy でデプロイした際に、エラーメッセージが出るのだが、 -v と -verbose で違いがあった(調べた感じではどっちも同じだと思ってた) StackTraceを見る感じ、Serverless内でエラーになってるっぽいからバグなのかなぁ。。 環境 Your Envi…

ServerlessFrameworkでdeployを成功させるまでに嵌ったことまとめ

環境 OS: linux Node Version: 8.12.0 Serverless Version: 1.32.0 Python Version: 3.6 本題 $ sls deploy -v を実行時に発生したエラーで、個人的に解決まで時間がかかったものを書く The security token included in the request is invalid. Serverless …

webpack4でビルドしたときにエラーになる

■前提 webpack初心者 ■本題 qiita.com もともとはこの記事にしたがってVue.jsを勉強してて、 qiita.com この記事にしたがって、Sassをビルドしようとした するとこのコマンドでビルドしようとしたらエラーになった $ webpack --watch --progress tkfric:Samp…

Laravelでバリデーションルールにorやandがほしかった話

経緯と概要 携わってるプロジェクトで、メールアドレスのバリデーションを変えるということになった。 既存会員 : オリジナルの正規表現 新規会員 : Laravelのemailルール(RFC準拠) となったのだが、 結果としてこの形で全員救う必要性が出てきた。 でも、正…

Python3でリクエストパラメータ付のPOST通信をしたときに、リクエストパラメータが抜け落ちる

tkfric.hatenablog.com この記事でやったことの続き def http_post(url, headers, body): req = urllib.request.Request(url, json.dumps(body).encode(), headers, 'POST') try: with urllib.request.urlopen(req) as res: body = res.read().decode() でbo…

can't concat bytes to str: TypeErrorを解決する

コードは以下 def http_post(url, headers, body): req = urllib.request.Request(url, body, headers, 'POST') try: with urllib.request.urlopen(req) as res: body = res.read().decode() でてきたエラーは以下 can't concat bytes to str: TypeError Tra…

LambdaでHTTPリクエストしたときに遭遇したやつ

Lambdaから外部のAPIを叩いてたときに遭遇した <urllib.request.Request object at 0x7faa06fe2278> サンプルコードは以下 def http_post(url, headers, body): method = 'POST' data = urllib.parse.urlencode(body).encode() req = urllib.request.Request(url, data, headers, method) try: with urllib.req</urllib.request.request>…

awkの使い方を毎回調べてしまうから自戒の念を込める

タイトル通り アプリケーションログやアクセスログから調査をするときに 気付けばいつも「awk 使い方」でググってしまう。 いつもやってること $ cat アクセスログ | awk -F'[ ]' '{print $1,$2,$3}' | less -F のあとに[] を使ってdelimiterの指定 上の例で…

Python3でPOST通信する

Pythonを書き始めて1日目 外部のAPIを叩きたいと思って 試行錯誤の結果できた、サンプルコード importのモジュール群とかよくわかってないものが多すぎるが、 Python初日での理解で、どうにか動いたというレベルのものはできた ※headersでjsonエンコードをし…