今日は朝刊(yyagi さんの「なるようになるブログ」)で取り上げられてた PR から ActiveModel::AttributeMutationTracker を読んだ。 y-yagi.hatenablog.com 属性変更をトラッキングするクラス。ActiveModel::Dirty とかで使われていそうで馴染みがあったの…
良いテストコード、と言われて思い浮かぶ要素はいくつかあるだろう。 過度に DRY になっていない 上から下に読み下せる 仕様を網羅している テストデータが過不足なく当該セクションで作られている など。 たまたま良いテストコードについて議論する機会があ…
空いた時間に Rails コードリーディング。今日は ActiveRecord::Reflection をザーッと読んだ。 ActiveRecord::Reflection は model の関連付けに関するデータを保持するクラスという感じだった。例えば、belongs_to の実装では def belongs_to(name, scope …
Rails のコードリーディング、久しぶりにしてみようと思いどこから読もうか眺めていたらたまたま見たことないモジュールが見つかったので読んだ。 ActiveRecord::Base#slice と ActiveRecord::Base#values_at を ActiveModel に移植したもの。non-Active Rec…
今までMitamaeで管理していたが、例えば Ruby のインストールする場合 itamae の plugin を使うと便利なのだが依存関係が多くなり、dotfiles 管理・セットアップのためにはちょっと複雑すぎる印象があった。実際、Itamae を理解し使いこなすというより Ruby …
歯茎が腫れて痛いから抜いたのもあり、一晩経ってもまだ痛む。ちゃんと生えてたので楽な部類らしい。状態悪い人だと大変だろうな… もう一本あるのでまた今度抜こう。
昨年に引き続き、所属しているGMOペパボ株式会社の参加支援を受け参加しました。(去年に引き続き本当にありがとうございます。) セッション 特に印象に残ったセッションについて書きます。 Writing Weird Code rubykaigi.org @tompng さんによる1日目のキ…
所属しているGMOペパボ株式会社の支援でRubyKaigi 2023に初参加してきた。 コロナ禍や子供が産まれたタイミングもありここ数年あまりコミュニティに参加できておらず、色々な人に「久しぶりです」が言えたのがとてもよかった。同時に「初めまして」や「xxx使…
ebihara99999の2023年3月のふりかえり
第N次無理だ仕事まわらん期をやっている。これ自体は委譲せざるを得ない状況に自分を追い込むため、そして視座を上げるために色々な課題を自分に課して意図的に追い込んでいるので別にネガティブな気持ちはないのだがさすがに体力的な辛さを感じることも増え…
ebihara99999 の2023年2月の振り返り
仕事の話 直接の上長にあたる人が退職し、実質的に事業部の技術組織のトップの人間となった(別に昇格したわけではない)。選択肢として今まで通りの感覚・業務内容を継続するか、視座を上げアクセルを踏むかの二択があるが、せっかくの機会なのでアクセルを…
job の内部でネットワークエラーを拾うケースでは、定間隔より exponential backoff でリトライしたいなぁと考え調べた。 ActiveJob::Exceptions#retry_on で定義されている。 def retry_on(*exceptions, wait: 3.seconds, attempts: 5, queue: nil, priorit…
GMOペパボエンジニア Advent Calendar 2022の記事です。2021年8月1日から2022年3月末まで取得した育児休業や復帰後の仕事の振り返りを書きます。
あまり大きな成果が出せずに思い悩んでいるジュニアエンジニアの方に意識して欲しいことがある。ジュニアエンジニアとは、一人前の手前のエンジニアのことである。実績を残すこと以上に、成長するためのアクションを取れているかが求められている。成長途中…
v0.5.0をリリースした翌朝、ふとClass Lengthのメトリクス結果にNamespaceを付与してなかったことに気づいた。これではUserクラスもAdmin::Userクラスも同じUserになってしまうのでマズい。ということで以下のPRで直した。もし困っていた方いたらアプデして…
CodeKeeperというGemをリリースした。循環的複雑度、ABCソフトウェアメトリクス、クラスの行数という品質面にまつわるメトリクスを取得するGemで、Rubyファイルを対象にしている。 github.com 動機 主に以下の3つである。 Four keysのような生産性を測る指標…
8月から半年予定で育児休業を取得しているので、現時点の雑感を残しておこうと思う。 育児休業かなり多くのメリットを感じているし、子供と過ごす時間がとても貴重なので本当に取得して良かったと感じている。 生後一ヶ月頃から私は育休を開始した。育児休業…
コードのメトリクス自分で取りたいなと思いRubocopのソースコードを読んでいる。 Copが呼ばれるまでにソースコードがどう処理されて渡されるのか、Cop内でどう解析するのか気になって手元でいじっていた。 手元でRubocopを実行しブレークポイントを貼り見る…
今改めてReact.jsを学びなおしている。 以前チュートリアルをやって分かったような分からないような気持ちだったので、ドキュメントを読んでいるが詳しく解説があって読みやすい。 以下のページから1ページずつ読んでいるのでそのメモ。h3は雑にページのタイ…
flex-git-configを作ったが、CI/CD環境もなくバイナリも手動でリポジトリにcommitしていた。 同僚から便利じゃんって言ってもらえたのと、Github Actions使いたいと思いつつ機会がなかったので利用し導入してみた。 併せて、雑だった各種メッセージや終了時…
結論 SameSite=None; Secureにしているサービスは開発環境もHTTPS化しておきましょうというお話です。Chromeは84よりデフォルトの挙動が変わり、FirefoxもFirefox 69からSameSite属性が利用できるようになっています(デフォルトの挙動はまだのよう)。 自分…
IV(初期化ベクトル)をどこに保存してあるのだろう、どうやって復号化しているのだろうか?と調べたのでメモ。 #encrypt_and_signの返り値は、--区切りで暗号化データ・初期化ベクトル・認証タグとなっている(それぞれBase64符号化を行っている)。 # Rely…
競技プロでDFSの問題が出てきて調べたので主にリンクのメモ。 以下2記事の DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜 がとてもわかり易かった。概念から丁寧に解説があり、図・コードも記載されているのでイメージがかんたんに…
次回は新型コロナウィルスの影響を鑑みリモート開催とします。 以下の理由でZoom等のツールを用いずSlackのみ用いた形式で実験的に開催する予定です。 家庭の事情で音声を繋ぎっぱなしでの参加や映像を映しての参加が難しい方がいる たとえSlack上だけでも何…
弊社の@kurotaky さんの発案で、インシデントハンドラ虎の巻を作る取り組みをしている。その中で、 @hibomaさんにセキュリティの項の執筆について指名して頂いた。 私はセキュリティインシデント対応に際しての心構え、状況に応じた体制と役割などについて書…
Mediumやnoteに興味があり試してきたけど、はてなブログが一番使いやすいなと思ったので戻ってきた。 Mediumはアプリでの書き味は良かったのだけどURLが記事タイトルである点、noteはcode snippetの貼りやすさが気になってしまっていた。 元々はてなブログへ…
3/18(月)にStep-to-Rails-Expert.rb第28回を株式会社Speeeさんで開催しました。 step-to-rails-expert-rb.connpass.com 今回私は母の体調が優れないため参加できず、スタッフのtwo_sannさんに開催をお願いしました。そして、有志でだいそんさんにも手伝っ…
最近、RubyMineを布教している。それに伴い決済や事業部のライセンス購入の諸々を整えている。何でこのように思ったのか、以下に書いていこうと思う。 私の所属するwebチームでは、今年からスプリントタスクの多くをペアプロで実施するという試みをしている…
Dnsmasqは.consulへのDnsへの問い合わせ(port 53)をConsul DNS(127.0.0.1#8600)に問い合わせるために使っている。 通常、DnsはUDPポートの53を使うが、rootアクセスを必要とする。consulを特権ユーザーで動さずに使うために、適切にクエリをconsulにフォ…