ユーザーの問題解決とプロダクトの成功を導く エンジニアのためのドキュメントライティング作者:ジャレッド・バーティ,ザッカリー・サラ・コーライセン,ジェン・ランボーン,デービッド・ヌーニェス,ハイディ・ウォーターハウス日本能率協会マネジメントセン…
Tidy First? ―個人で実践する経験主義的ソフトウェア設計作者:Kent Beckオーム社Amazon Kent Beck が2023年に16年ぶりに発表した書籍らしい。 シリーズとして執筆される予定らしいが、一冊目ということもあるのかボリュームはそれほどなく、サッと読める。 …
目的 月次の集計結果や、職歴の開始年月など、日付が意味を持たず年月のみだけを管理したいケースがある。 そういった場合にどう実装するか。 方針 DB上は、DATE型で値を保持する 日付は必ず月初日(1日)にして意味を持たせない 文字列等他の形式で保持する…
問題 Rails から Active Storage で S3 に XML をアップロードし、CloudFront でホスティングしようとしていた(XML は RSS フィードのようなもの)。 ファイルはアップロードされ、CloudFront 経由でアクセスもできたのだが、ブラウザだとダウンロードされ…
やりたいこと MySQL で重い可能性があるクエリを投げるときに、一定時間以上かかったら、タイムアウトとしてキャンセル用にしたい。 解決策 MySQL のシステム変数でタイムアウト関連の設定をいじるという手もあるが、max_execution_time をオプティマイザヒ…
問題 文字列のあるカラムに対して、半角全角や大文字小文字を区別なく検索したい場合がある。 (例) ABC で検索した場合に、ABC や abc もヒットしてほしい COLLATION を使う MySQL の場合、照合順序(COLLATION)の設定で実現できる。 charset が utf8m…
ゼロから始めるプロダクトマネジメント作者:丹野 瑞紀技術評論社Amazon プロダクト開発がどんなものなのかを分かりやすく説明していた。 自分はプロダクトマネージャーではなくプログラマの仕事だけれど、プロダクトマネジメントには意識的であれ無意識的で…
問題 Rails 7.0 から 7.1 にアップグレードしたので、7.1 のデフォルト設定を有効化しようとしていたら new_framework_defaults_7_1.rb でエラーが発生した。 エラー内容 action_view.sanitizer_vendor や action_text.sanitizer_vendor で使用している Rail…
GitLabに学ぶ 世界最先端のリモート組織のつくりかた ドキュメントの活用でオフィスなしでも最大の成果を出すグローバル企業のしくみ作者:千田 和央翔泳社Amazon 少し話題になっていて気にはなっていたのだが、社内で輪読会が開催されることをきっかけに読ん…
概要 住所の一覧から郵便番号をまとめて逆引きしたかったので、 ZIPCODA API を使って実現してみた。 CSV ファイルから住所を読み込んで、結果も同じく CSV ファイルに書き込むだけ。 github.com ZIPCODA を使った理由 たぶんサービス等で定常的に利用するな…
プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus作者:伊藤 淳一技術評論社Amazon 今の会社に出戻ってから Ruby On Rails をやることになり、まずは Ruby について学びたいなと思って手に取っ…
まとめ ぼっち演算子と or 演算子を使うといい感じに書ける。 result = hoge&.value || "default" 愚直に書く if hoge== nil result = "default" else result = hoge.value end nil? を使う Object クラスにレシーバーが nil の場合に真偽値を返すメソッドが…
概要 Rails で DB の構成管理に ridgepole を使っているんだけれど、 MySQL の TEXT 型に後から Not Null 制約を付けるとエラーになってしまう。 github.com 原因 例えば下記の用に定義していたとする。 # 最初は null: true で作成 t.text "my_text", null:…
概要 importmap-rails を使っている場合に、特定のページだけで使う js ファイルを作る方法をまとめる。 github.com js ファイルを用意する 任意のファイル名と実装内容で良いが、ここでは下記のようにする。 app/javascript/foo/special.js import 可能にす…
概要 factory_bot_rails 6.3.0 から Active Record の PK カラムに対して sequence を指定するとエラーになるようになったようだ。 指定した場合、 FactoryBot::AttributeDefinitionError が発生する。 github.com FactoryBot.define do factory :hoge do # …
表題の通りなんですが、3月いっぱいでコネヒトを退職して、4月からエス・エム・エスという会社で働いています。 試用期間が終わったくらいにブログでも書こうかなと思ってたら、半年以上過ぎてるわ年末が目前だわで、時の早さを自分の怠惰の言い訳にしたくな…
概要 検索フォームのような、チェックボックスによる複数条件を指定する UI を作ろうとしたときに、 collection_check_boxes を使うとよさそう。 collection_check_boxes | Railsドキュメント しかし、collection_check_boxes のオプションだけだと input の…
概要 トランザクションとは分離したいが、保存した内容によって事後処理を行いたい場合がある。 changed? や hoge_changed? あたりは save 後には false になってしまうため、更新内容を取得できない。 ApplicationRecord.transaction do if foo.name_change…
Rails + Docker な開発環境で RubyMine のリモートデバッグを行う場合、下記を参考にすればできるようになる。 www.jetbrains.com ところが、 Puma を利用していた際にデバッグモードでエラーが発生し起動できなくなってしまった。 Exception: Connection re…
詳解Go言語Webアプリケーション開発作者:清水陽一郎シーアンドアール研究所Amazon 仕事では中々 Go を書く機会がないので、手を動かしながら学べる本がないかなと手に取った。 初心者向けの入門書かな、くらいの気持ちだったのだけれど、いい意味で期待を裏…
概要 GitHub Actions では、ジョブのサービスとして MySQL や Redis が使える。 volumes ( jobs.<job_id>.services.<service_id>.volumes ) を指定することで、サービス間やステップ間でデータを共有できる。 ただソースコードは通常 actions/checkout を利用すると思うが、リポ</service_id></job_id>…
概要 GitHub Actions の Workflow では、 Services として MySQL が利用できる。 character_set_server などのシステム変数を変更する方法についてまとめる。 採用した方法: SQL ファイルでグローバル変数を書き換える Workflow で使う MySQL は基本使い捨て…
概要 DataGrip で MySQL に接続すると、 sql_mode を別途設定しているにも関わらず、STRICT_TRANS_TABLES が勝手に適用されていた。 グローバルの設定を確認すると、意図したものが設定されているが、セッションの設定は STRICT_TRANS_TABLES になってしまう…
概要 ネットに十分な情報はあるのだが、なんやかんや毎回詰まったりちょこちょこ調べたりしているので自分用にまとめておく。 Goland を使う Docker で動かす Web アプリケーション air でホットリロード delve でリモートデバッグ テストも Docker 経由でデ…
プロフェッショナルWebプログラミング Laravel作者:久保田賢二朗,荒井和平,大橋佑太エムディエヌコーポレーション(MdN)Amazon 現職だと Web アプリのフレームワークは CakePHP を利用してるんだけど、Laravel もう少し知っておきたいな〜、と思って読んで…
アソシエーションの dependant CakePHP のモデルのアソシエーションには dependant というキーが用意されており、 true に設定することで削除のときに関連付けたモデルのレコードもまとめて削除することができる。 book.cakephp.org belongsToMany だけデフ…
概要 Laravel の Factory で画像のテストデータを作ろうとして $this->faker->image(storage_path('app/public/images')) とかやっても、画像ファイルがうまく生成されず、画像ファイル名も 0 とかで生成されてしまう。 v1.20.0 で非推奨になっており、 Fake…
社内に投下したポエムを一部修正してリポスト。 「リソース」っていう表現が嫌い 表題の通りなんですが、僕は人間をリソースと呼ばないほうがいいと思っていて、何ならとても嫌いな表現なんです。 文脈上使わざるを得ないときもありますが。 よく聞くような…
スナップショットテストをやりたいなと思って spatie/phpunit-snapshot-assertions を導入してみた。 github.com ところが PHPUnit でデータプロバイダをつかったパラメータライズドテストをやっていると、どうもうまくいかない。 原因は、データセット名に…
前提 Laravel v9.17.0 Sail v1.14.10 環境変数を定義 .env で xdebug を有効化し、設定を変更する SAIL_XDEBUG_MODE=develop,debug SAIL_XDEBUG_CONFIG="client_host=host.docker.internal idekey=PHPSTORM start_with_request=yes" ブラウザ拡張を使う方法…