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

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

Mac はプログラミングにおすすめの PC ですが、どの Mac を買えば良いのか

僕はエンジニアとして働いていて、開発には MacBook Pro を使っています。そんな僕が、2021年おすすめの Mac を紹介していきます。 なぜ Mac なのか どの Mac が良い? MacBook の中でどれを選択したら良い? MacBook Air をどういうスペックにするか MacBoo…

PCの古いモニタを安く簡単に処分する方法

モニタは粗大ごみで回収不可 リネットジャパン 2枚のモニタを回収してもらった 感想 先日、ウルトラワイドのモニタを買った記事を書きましたが、今回はモニタの処分についてです。 www.utakata.work モニタは粗大ごみで回収不可 モニタを買ったらモニタを処…

個人事業主(青色申告)におけるクレジットカード経費の処理方法

私は「やよいの青色申告オンライン」を使って個人事業主の青色申告をしています。 クレジットカードを使って何かを購入し、それを経費にする時の処理は結構複雑です。 クレジットカードを使った際の経費処理は、個人のクレジットカードを使った場合と、事業…

msiの34インチウルトラワイドモニタと、モニタアームを買いました

ウルトラワイドモニターとは モニタの比較・選択肢 モニタの解像度を選ぶときの注意点 僕が買ったモニタ 購入したウルトラワイドのモニタ このモニタのデメリット 湾曲しているモニタはどうなのか モニタアーム まとめ ウルトラワイドモニターとは 通常のモ…

暗号通貨の「流動性の提供」によるDeFiはオススメできない

流動性の提供とは何なのか なぜ微妙なのか コインの価格変化の問題 拘束される金額が大きめ 年利が変動しすぎ まとめ 流動性の提供とは何なのか ます、取引所について理解する必要があります。 取引所では、暗号通貨を売りたい人と、買いたい人のマッチング…

GMOコインからETH(イーサリアム)をMetamaskに送金

はじめに 前提として GMO コインのアカウントを持っている すでに Metamask でウォレットを作っている Metamask のウォレットをイーサリアムネットワークに接続できる状態になっている GMO コインから Metamask のウォレットに送金 GMO コインのメニューから…

ビットコインの送金(マイニング)に時間やコストがかかる理由とブロックチェーン

はじめに ブロクチェーンの改ざん防止技術 ブロックとハッシュ nonce 多数のサーバーの監視による改ざん防止 参考ページ はじめに 昔から暗号通貨や、ブロックチェーンの勉強をしていて、なんとなく技術は知っていたが、実際に暗号通貨をいじったことはなか…

業務と個人でScalaを使って感じたScalaのメリット・デメリット

はじめに Scala をどこで使っているか 個人での利用: LGTMoon 会社での利用 Scala のメリット/デメリット 教育コストが高い 実装の負債化 実行時のパフォーマンスが良い コンパイルによるエラーチェックが強力 コンパイルが遅い まとめ コップ本 はじめに こ…

【PHP】Laravel で JSON 形式の Web API を実装する時に考えること

はじめに JSON 形式の Web API とは Laravel で JSON を返す基本的な実装 JsonSerializable インタフェースを使う JsonSerializable を使うと便利な点 想定外の例外が発生した場合の対応 Laravel デフォルトのエラー画面 Laravel のレスポンス形式は Accept …

PHP 8.0 / 8.1 で個人的にめっちゃ使いたい機能3選

はじめに PHP 8.0 / 8.1 で個人的にめっちゃ使いたい機能3選 名前付き引数(PHP 8.0) コンストラクタのプロモーション(コンストラクタ引数のプロパティ化) Readonly Property おわりに 余談: ドメイン駆動設計について はじめに 遅れました。この記事は P…

Golang と Cobra でサクッとコマンドラインツール作成

はじめに この記事は Go Advent Calendar 1日目の記事です。 qiita.com go でサクッとコマンドラインが作りたい 最近、よく行う処理を PHP でスクリプト化しています。 例えば、以下のような処理です。 CSVを突き合わせて差分を出す 動作確認のために開発環…

データベースのテーブルの正規化について、とにかくわかりやすく説明する

達人に学ぶDB設計 徹底指南書 はじめに: DB設計の重要性 テーブルの正規化 第一正規形 正規形と「更新時異常」 更新時異常とは 挿入時異常 削除時異常 修正時異常 関数従属性 第二正規形 挿入時異常について 削除時異常について 修正時異常 情報無損失分解 …

GitHub Sponsors の DocuSign で提出する W-8BEN の書き方

W-8BEN について GitHub Sponsors の利用手続きを進めていると、 DocuSign 上で W-8BEN という書類を書く必要が出てきます。 W-8BEN は、アメリカ以外に住んでいる人が提出すべき書類です。 GitHub Sponsors での売上は、収入になるので、所得税などを収める…

【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 を利用しているかと思いま…

エライザ効果(ELIZA効果)

「エライザ効果(ELIZA効果)」とは、意識的にはわかっていても、無意識的にコンピュータが人間と似た動機があるように感じてしまう現象のことです。 コンピュータは、プログラムに書かれたことを実行しているだけで、コンピュータ自身は「動機」を持ってい…

ショップディズニー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本ばわかりづらかったのか ボトムアップになるとどうなるのか ここ数年で一番おすすめの本 書籍『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計…

本『最軽量のマネジメント』、途中経過も公開、給与交渉も公開

マネージャーになった マネージャーのやることを減らしていく本 3行で説明すると 個人的に参考になった・気になった部分 「ザツダン」ですべきこと 徹底的な公開、特に「途中経過」の公開 社員が160人の時の話 その他書いてあったこと 書いてなかったけど気…

これまで僕が仕事で使った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…