猫でもわかるWebプログラミングと副業

本業Webエンジニア。副業でもWebエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

【Laravel】ServerError のレスポンスを Json で返すために Handler に実装を見る

Handler の処理を見ていく 最初の部分 次の部分 最後の部分 $request->expectsJson() Laravel は、デフォルトで例外をキャッチして、サーバーエラーの表示をしてくれる。 この処理を行っているのは、 App\Exceptions\Handler である。 このクラスは Illumina…

PHP + Laravel on Docker で MySQL に接続しようとして could not find driver at ...

環境 エラー内容 調査 環境 Docker の php:7.4.16-apache を利用 Laravel を利用 エラー内容 [2021-08-24 10:43:16] production.ERROR: could not find driver at /app/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:671) 調査 …

sbt のバージョンを 1.5.5 にしたら java.lang.NoSuchMethodError: scala.tools.nsc.Settings.bootclasspath()Lscala/tools/nsc/settings/AbsSettings$AbsSetting;

Scala + Play Framework のプロジェクトで、 sbt のバージョンを 1.3.9 から 1.5.5 にしたところ、以下のエラーが発生しました。 #9 87.82 [error] java.lang.NoSuchMethodError: scala.tools.nsc.Settings.bootclasspath()Lscala/tools/nsc/settings/AbsSet…

Scala sbt のバージョンを上げたら java.lang.RuntimeException: insecure protocol is unsupported

執筆時の sbt のバージョンが 1.5.5 だったので、 LGTMoon (https://lgtmoon.herokuapp.com/)で使っている sbt のバージョンを 1.3.9 から 1.5.5 に上げる作業を行いました。 sbt を 1.3.9 から、1.4.9 (1.4系の最新)に上げた際に以下のエラーが発生しま…

【PHP】autoload された class が定義されたファイルを確認する

結論 どういう時に使うの? Carbon と Chronos の例 Chronos と Laravel 結論 PHP の ReflectionClass を使えば可能です。 getFileName()); どういう時に使うの? PHP には autoload という機能があり、皆さん普通はこの autoload を利用しているかと思いま…

ショップディズニー1周年記念の 30% オフクーポンをプログラムから探す

作戦1: 画像のURLを推測する 作戦2: ページをクロールする 結果 ショップディズニーの、ネット通販サイトが1周年記念でキャンペーンをしていました。 その中で、「ページのどこかにクーポンが隠れている」というのがありました。 ショップディズニーのサイト…

Kubernetes チュートリアルで「ローリングアップデート」を学ぶ

はじめに ローリングアップデートとは 実際にやってみる アップデートの完了 ロールバック はじめに 前回、アプリケーションのスケールアップ/ダウンをやりましたが、その知識を使って、アプリケーションの「ローリングアップデート」をやります。 kubernete…

Kubernetes チュートリアルで「アプリケーションのスケーリング」を学ぶ

はじめに スケーリング 実際にスケールアップさせてみる ロードバランシングの確認 スケールダウン はじめに 前回、 Hello Minikube チュートリアルをやりました。 www.utakata.work 今回はその次のチュートリアルである「Kubernetes の基本を学ぶ」をやりま…

Hello Minikube チュートリアルで Kubernetes を学ぶ

Hello Minikube とは Minikube とは Mac に Minikube と kubectl をインストール Minikube の起動 Kubernetes のノードと kubectl Pod と Deployment Deployment の作成 Service を作成してコンテナにアクセス アドオンについて Kubernetes クラスタ上のリソ…

When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project.

Twitter の v2 API を oauth 1.0a 認証で叩こうと思ったら、以下のエラーが返ってきました。 {"client_id":"21075140","detail":"When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer Ap…

Python で Hello World して学ぶ Docker の使い方

はじめに 前提知識 Docker 上で Python のコマンドを実行してみる Python の Docker イメージを探す Docker イメージのダウンロードと起動 Python を書いて Docker 上で動かす Python のプログラムを書く Dockerfile を書く Docker イメージのビルド Docker …

PHPでボトムアップDDD: 値オブジェクト / ValueObject

値オブジェクトを使わず、プリミティブな型を使うとどうなるか 各IDの型が分かりづらい delete メソッドの引数の型チェックが弱い そこで値オブジェクト さいごに 値オブジェクトを使わず、プリミティブな型を使うとどうなるか ブログシステムを考えましょう…

現場のエンジニアにとっては理解しやすい本「ボトムアップのDDD」おすすめです

書籍『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本』 なぜ今までのDDD本ばわかりづらかったのか ボトムアップになるとどうなるのか ここ数年で一番おすすめの本 書籍『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計…

これまで僕が仕事で使ったWebフレームワークと言語の特徴

これまで僕が業務で触ったことあるフレームワーク(と言語)は Laravel (PHP) Slim Framework (PHP) Django (Python) Gin (Go言語) で、どれも1年以上は保守しています。 長年業務で使ってきたこれらのフレームワークについて、実際使ってみてどうだったのか…

Dredd で OpenAPI のスキーマに無いプロパティをエラーにする

例えば、 OpenAPI の定義がこうなっていたとします。レスポンスのプロパティとして、 name と size があります。 responses: 200: description: 正常系 content: application/json: schema: type: object properties: name: type: string size: type: intege…

2021年 PHP でスクレイピングするなら php-html-parser

PHP でスクレイピングするなら php-html-parser 以前、以下の記事を書きましたが、 phpQuery は3年以上更新が止まっており、最新の PHP に対応してないなど問題がありました。 www.utakata.work 別のライブラリを探していたら、 php-html-parser がかなり良…

PHP の composer でパッケージを uninstall する時の正しいコマンドは何か

composer require と composer remove 結論: composer.lock を作り直すしかない composer.lock を作り直したくない 依存をきれいに消すコマンドは無い composer update コマンドをうまく使う composer update する場合の注意点 結論 composer require と com…

rclone を使って AWS S3 から Wasabi にファイルを移行

AWS S3 から他サービスへのオブジェクトストレージにデータを移行する 参考ページ rclone のインストール rclone の設定 ファイルのコピー AWS S3 から他サービスへのオブジェクトストレージにデータを移行する 今回、私は AWS S3 を脱却して、料金の安い Wa…

どうぶつ語の音声を作れるツールを公開しました

どうぶつの森で、どうぶつがしゃべる時の音「どうぶつ語」の音声が生成できるツールを作りました。 どうぶつ語音声ジェネレーター 使い方や注意点は、 https://animal-crossing.utakata.app/ を開くと書いてあります。 音声は動画などに自由に使っていただい…

【2021/04/27】Composer の脆弱性が出たのでアップデートする

news.mynavi.jp 脆弱性の詳細ですが、理解しようとするとかなり時間が掛かりそうなので省略します。 composer のバージョンアップは難しくなく、アプリケーションへの影響も小さいので、サクッとアップデートしましょう。 $ composer self-update Updating t…

オブジェクトストレージ Wasabi で独自ドメインを使う

ほぼ AWS S3 と同じです。 リージョンは ap-northeast-1 です。リージョンが違う場合は設定方法も変わります。 設定方法 設定予定のドメイン名でバケットを作成します DNS に CNAME で ドメイン名 → s3.ap-northeast-1.wasabisys.com https://ドメイン名/フ…

オブジェクトストレージ&ホスティング(公開)比較【AWS / Wasabi / ConoHa / DigitalOcean】

オブジェクトストレージを使う目的 比較したオブジェクトストレージ Wasabi の概要 ConoHa オブジェクトストレージの概要 DigitalOcean Spaces 比較ポイント ざっくり比較 各サービスのメリット・デメリット AWS S3 Wasabi ConoHa オブジェクトストレージ Di…

Wasabi で画像をアップロードしてホスティング

オブジェクトストレージ Wasabi は、アメリカの Wasabi Technologies, Inc. のサービスで、日本では NTT PC 社経由でサービス提供されている感じになります。 使用感はだいぶ AWS S3 に似ています。NTT PC が提供している Web ARENA と連携してアカウントを…

【Go 言語】 Docker 上 で Gin を動かすまで

前回の復習 go.mod とは go mod を使って gin をインストール Dockerfile の修正 gin を起動するコードを書く 前回の復習 前回は、 Docker 上で Go を動かすまでやりました。まだ読んでないひとは読んでください。 www.utakata.work go.mod とは go.mod は、…

Docker 上で main.go を動かす(Goの開発環境を作る)

何をやるか Docker 開発環境の作成 main.go 参考 何をやるか これから何回かに分けて、 Docker + Go + Gin(Webフレームワーク)の開発環境を整えていきます。 ディレクトリ構成やコマンドの書き方、変更検知してコンパイルなど、開発に必要な最低限の環境を…

AWS ALB のヘルスチェックと Django の ALLOWED_HOSTS

はじめに ALLOWED_HOSTS との兼ね合い 対策 ALLOWED_HOSTS の意味 結局どうすればいいのか 事例を調査する 結論 はじめに 一般的に、 AWS で Web アプリケーションを動かすときは、 Application Load Balancer *1 と EC2 を利用します。 Application Load Ba…

pyenv を使っている環境で bad interpreter: /usr/local/opt/python@2/bin/python2.7: no such file or directory

問題 解決方法 問題 先日、久々に eb コマンド(Python で書かれている、 AWS ElasticBeanstalk の CLI ツール)を使おうとして、以下のエラーになった。 $ eb list zsh: /usr/local/bin/eb: bad interpreter: /usr/local/opt/python@2/bin/python2.7: no su…

Django 2.2 → 3.1 バージョンアップで MySQL may not allow unique CharFields to have a max_length > 255

Django を2.2 → 3.1 にバージョンアップしたら、以下の Warning が出るようになった。 test_app.Thumbnail.url: (mysql.W003) MySQL may not allow unique CharFields to have a max_length > 255. HINT: See: https://docs.djangoproject.com/en/3.1/ref/da…

index の複数形は indexes なのか indices なのか2 - MySQL のドキュメントを確認

以前にこのような記事を書き、 index の複数形は indexes と indices の2つがあり、どちらがどのようなときに使われるのかをまとめた。 www.utakata.work 改めて振り返ると、 indexes は「索引」の意味 indices は「添字」の意味 になるようだと書いた。 先…

【MySQL】インデックスを張ることのできる VARCHAR の長さには限界がある?

MySQL では長い VARCHAR にはインデックスを張れない? MySQL のドキュメントを読む ドキュメントの内容 つまり 実際にやってみる まとめ Appendix strict について テーブルの ROW_FORMAT の調べ方 MySQL では長い VARCHAR にはインデックスを張れない? My…