kaigi on rails 2023での発表内容です https://kaigionrails.org/2023/talks/willnet/
問題: コントローラで例外処理している アプリケーションが扱うドメイン特有のエラーを例外として表現する場合に、その例外をコントローラで処理するコードを書くと、ほとんどの場合でコードが読みにくくなったり、コードを変更しづらくなったりする結果となる。そして、開発の効率が落ちたり不具合を作りやすくなったりする。 具体的な問題は次のとおり。 コントローラのアクションの凝集度が下がる コントローラのアクションに、たとえば複数の決済方法のエラーのような微妙に異なる種類の例外に対する処理を書くと、コントローラが肥大化し、凝集度が下がる。結果として、エラーが関わる変更を入れるときに、本来ビジネスロジックだけの変更であっても、コントローラとモデルの両方を必ず変更しなければならなくなる。また、関係の薄いさまざまな例外が1箇所で処理されることになり、コードが読みにくくなる。 class ChargesContr
テクノロジー部門で Ruby インタプリタの開発をしている笹田です。RubyKaigi 2024 楽しみですね。 さて、Ruby のメソッドを定義するとき、仮引数がある場合、カッコを省略することができます。 def foo(x, y) end def bar x, y end bar の定義の方法ですね。私は好んでこの書き方をしてたんですが、同僚の遠藤さんに「そんな書き方をしているのは今時笹田だけだ」と言われてショックを受けたので、ちょっと調べてみました。 ちなみに、カッコがないと使えないメソッド定義の方法があるので、その時には涙を呑んでカッコをつけます。 def foo(kw:) # 必須キーワード引数 end def bar(&) # 無名ブロック引数 end 補足1:Ruby では「メソッド呼び出し時にカッコをつけるかどうか」にいろいろな論争がありますが、ここでは「メソッドを定義する
自分が会社員だった時の転職活動、必ずしも毎回全部できていたわけではないけど、一応こういうステップを意識していたなぁ、というノウハウのシェア。 ①1度に1社だけを受ける。エージェントではなくリファラルで紹介者を見つける。2社以上を同時に受けるのはちょっと大変かなと考えていた。 ②紹介者に社内の課題を聞いて、イシュー度(本当に解く価値があるか?)やCan(自分のスキルや経歴に合う領域か?)とのマッチングを確認する。 ③カジュアル面談やリファラル食事会で社内課題やカルチャーをヒアリングする。なるべく違う立場のメンバーに来てもらって、見え方や意見のズレを探り、正確な状況を把握する。必要に応じて事前にNDAを締結する。 ④外部事例をリサーチしてその会社にマッチする解決案を考え、提案資料にまとめて送る。入社後に期待される動きの1つを先に実施し、③の参加者が投下した時間コストはこの成果物でお返しとする。
はじめに ダンジョン飯 1巻 (HARTA COMIX) 作者:九井 諒子KADOKAWAAmazon アニメ『ダンジョン飯』が人気ですね。 ダンジョンで飯を食うという非常識がグルメにもギャグにもなっていて、いちおうシリアスな話も進行していく『ダンジョン飯』。今日のお題は、そのインスパイア元っぽいRPG『ウィザードリィ』のさらにご先祖様の『ダンジョンズアンドドラゴンズ』(以下『D&D』と表記)です。 今、『D&D』の雰囲気をいちばん簡単・忠実に味わえる作品といえば『ダンジョンズ&ドラゴンズ/アウトローたちの誇り』でしょうか。 ダンジョンズ&ドラゴンズ/アウトローたちの誇り 4K Ultra HD+ブルーレイ[4K ULTRA HD + Blu-ray] クリス・パインAmazon 『アウトローたちの誇り』は、種族も性格も技能も違うキャラクターたちが喧嘩したり協力しながら旅を続ける物語ですが
例えば tag でソフトウェアのリリースのバージョンを作っているとしましょう。 そこで最新の tag を取得することで、最新のリリースを取得することができます。 git describe コマンドを用いることで最新の tag を取得できますが、これは現在のブランチに限定された話です。 違うブランチにて最新の tag が打たれている場合は正しく動作しませんので、少し工夫が必要です。 結論 # 現在のブランチの最新タグ(lightweight tag を含む)を取得する場合 $ git describe --abbrev=0 --tags v1 # 全てのブランチにおける最新タグ(lightweight tag を含む)を取得する場合 $ git describe --tags `git rev-list --tags --max-count=1` v2 Memo まずは現在のブランチの最新タ
SREチームの長田です。 SRE関連の記事としては今年最初の記事になります。 今年も定期的にSREチームメンバーによる記事を投稿していく予定です。 よろしくお願いします。 さて、今回はGitHub Actionsのはなしです。 TL;DR デプロイを実行するGitHub Actionsの実行状況を デプロイ対象環境ごとに別々のSlackチャンネルに通知する場合の実装例として、 「slackapi/slack-github-actionで通知をつくりこむ」 「Actions Workflowを分ける」 「Actions Workflow実行の入り口を分ける」 の3つを紹介します。 背景 カヤックでは「まちのコイン」という地域通貨サービスを開発・運用しています。 coin.machino.co まちのコインの開発・運用チームの、特にサーバーサイドに関しては、 アプリケーションやインフラ構成の変
昨年、十二月二十一日のことである。 森見登美彦氏は、万城目学氏と、ヨーロッパ企画の上田誠氏との忘年会に参加した。年末の京都に清らかなおっさんたちが集う忘年会も、すでに六回目を数える。 「六回目といえば」 ということで、万城目氏が新作『八月の御所グラウンド』で六回目の直木賞候補になっているという話になった。 しかし万城目氏の顔つきは暗かった。 「どうせあかんねん」 「待ち会はしないんですか?」 「そんなもんせえへんわ。いつもどおりにしてる」 それはいかん、と登美彦氏は思った。度重なる落選にウンザリする気持ちはよく分かるが、直木賞はようするに「お祭り」なのであって、盛りあがらなければ損である。「待ち会」は落ちてからが本番なのだ。落選したってええじゃないか! 「何をいじけてるんです。待ち会やりましょう!」 「なんでやねん!」 「やるなら東京まで行きますって」 「あ、それなら僕も行きます」と上田氏
この記事は はてなエンジニア Advent Calendar 2023 の 2024年1月4日 の記事です。 GitHub Actionsの実行環境であるランナーには、GitHubが提供するGitHub ホステッド ランナーと、自分でランナーを用意・管理するセルフホステッド ランナーの大きく二種類があります。 最近はGitHub ホステッド ランナーにもラージランナーが用意されるようになり、ある程度ランナーのスペックを選べるようにもなりましたが、他のCIサービスと比べてもスペックの割にコストが高めである感じは否めません。一方でセルフホステッド ランナーにはスペックを自分で調整できる自由度がありつつも、管理する手間とコストが掛かってきます。 こうした隙間を突くように、サードパーティーによるマネージドなセルフホステッド ランナーを提供するサービスが増えつつあります。基本的には runs-on:
こんばんは炬燵です。自宅分納の桐生あんずファンブックが届いたので、何をどうやっていたのかをざっとまとめようと思います。 届いたので長男に検品してもらいました。 検品 #桐生あんずファンブック進捗 pic.twitter.com/edAp7eFGAE— 炬燵(kotatsu) (@sakahukamaki) 2023年12月27日 重たかったです。たった20冊なのに。 あらかた文字なことがわかりますね https://t.co/RZQluNzJA6 pic.twitter.com/1hfSZSE8ZT— 炬燵(kotatsu) (@sakahukamaki) 2023年12月27日 頒布について 事前に宣伝と情報共有です。 あなたのサークルは 日曜日 東地区 “パ” ブロック 03b に配置されています。 目次とか内容とかはBOOTHのサンプルやこのポストのツリーを見て下さい。 桐生あんずフ
この記事では依存関係の更新を自動化するRenovateを使う上で、Angular CLI ベースのリポジトリに適した設定を紹介する。 またその設定を誰でも利用できるプリセットとして公開したので、その使い方も解説する。 自動化すべきでない依存パッケージRenovate は依存するライブラリなどの新しいバージョンが公開されると一定時間後にそのバージョンへ追従するプルリクエストを自動作成してくれる。 一般的なケースではこの機能はありがたいが、Angular CLI で管理されるリポジトリにおいては注意が必要である。なぜなら Renovate は ng update を実行しないからだ。 ng update コマンドは関連するパッケージグループをまとめてバージョンアップするだけでなく、バージョンアップ時に必要なソースコードのマイグレーションを自動実行する。たとえば angular.json から非
8/12(土)東京遠征、モルモットの性格の違いはどこから来るのか コミケ東京遠征の日。週報をほぼ完成させ、モルモットにたくさんの🫑、チモシーを与えて家を出た。新幹線で東京へ行く。 東京駅についたら荷物を置いて山手線の某駅で降りた。友人宅を目指す。 いつ東京に来ても思うのだが、東京の道路は東京としか言いようのない雰囲気がある。大阪にも京都にも、私の地元にもない雰囲気。地価の高さからくる家の小ささ、道路の狭さ、なのだろうか。あと商店街が栄えている。どの駅に行っても商店街があることに驚く。 🍐🍐🍐 友人宅で二匹のモルモットたちにご挨拶をした。初めてお目にかかる。二匹のモル様はどちらもうちのモルモットと性格が違っていておもしろい。片方は態度がでかくて凶暴そう。すぐにケージを囓ってアピールする。もう片方はモルモットらしい臆病な性格。なのに好物の餌を見つけたら猪(鼠)突猛進。餌を拾うのに邪魔な
おはこんばんにちは!1年間の自分に対して最大限の感謝を伝えるために今日人生で初めてうなぎ屋さんに入ってうな重を食べましたしおりんです!高かったけど、とーっても美味しかったぁ〜〜!1年間ありがとう私!来年も行こうね ✌️ 今回は、GMOペパボ EC Advent Calendar 2023の17日目の記事です。前回はtakapiさんの個人開発Webアプリケーションを0円で運用するでした!私自身、勉強のために自分でWebアプリケーションを作りたい!と思った際、まず立ちはだかった不安がお金の面だったので、0円で運用できる方法はとても魅力的で参考になる内容でした👀 0円なので気軽に試せそう!私もやってみよう 💪 adventar.org はじめに さて、私が所属しているGMOペパボではサービスでインシデントが発生した際、収束後に振り返りと再発防止を目的としたポストモーテムを作成しています。 こ
前置き 実際の設定 参考リンク 実際に作られたPR 前置き actions/upload-artifact と download-artifact がそれぞれv4になりました。 github.blog 個人リポジトリの .github/dependabot.yml で下記のような自動更新設定を入れていたのでそれぞれバージョンアップのPRが作られました。 updates: - package-ecosystem: github-actions directory: / しかし、片方ずつバージョンアップするPRだとCIがコケてしまったので同時にバージョンアップする必要がありました。 github.com github.com 手でバージョンアップしても良かったのですが、今後の事も考えて自動化しました。 実際の設定 下記のように複数のactionを1つのグループとして扱うことでDependabo
docker/build-push-actionのv3.3.0 で、 provenance というオプションが入り、デフォルトで有効化された。このオプションについては、 This may introduce issues with registry and runtime support (e.g. GCR and Lambda). という注意書きがされており、一部環境で問題が起きる可能性がある。GitHub Actionsでバージョンをマイナー、パッチバージョンまで指定せずに使っていた場合、自動的にこのバージョンが適用されるため、実際に問題になったという声もTwitterで散見され、自分も一部で引っかかった。 @GitHub Actions runner bumped @Docker buildx today, which has default provenance on. It's
さいしょ 4/29 16:40~20:15 1話 2話 3話 4話 5話 6話 7話 8話 9話 10話 4/29 23:40~4/30 1:52 11話 12話 13話 14話 4/30 13:20~18:43 15話 16話 17話 18話 19話 20話 21話 22話 23話 24話 25話 26話 5/2 21:42~5/3 2:05 27話 28話 29話 30話 31話 32話 33話 5/3 11:01~5/4 3:15 34話 35話 36話 37話 38話 39話 40話 41話 42話 43話 44話 45話 46話 47話 48話 49話 50話 51話 おわり さいしょ こんばんは、相生です。こんにちはでもいいかもしれませんがこういうの大体夜に見られるイメージあるのでこんばんはにしておきます。 いつぞやに友人と一緒にGWプリリズRL一気見するぞ!!!!と言って4/
年の瀬ですね。クリスマスの足音も近く、ピザなんかを頼んだら景気が良いかなと思ったので、GitHub 上で Issues を生やすとピザが頼める仕組み(workflows)を構築してみました。 本記事は mast Advent Calendar 2023 の 7 日目の記事です。6 日目は Hitoko T. 先生の記事「我が家に猫3匹がやって来た話|Hiroko T.」でした。猫、癒やしですよね 折角のアドカレの機会ですから、GitHub 上でピザを頼むまでの過程を、GitHub や Web 技術、ピザ等に明るい方にも、そうでない方にもお楽しみいただけるように説明*1*2を進めていきます*3。少し長くなりますが、どうぞお付き合いください。 ピザ 突然ですが、みなさまはピザと呼ばれる食べ物をご存知でしょうか? 初めてピザをご覧になられた方に向けて説明しておくと、小麦粉等を練って構成した生地を
これは はてなエンジニアアドベントカレンダー2023 2日目の記事です。 はてなエンジニア Advent Calendar 2023 - Hatena Developer Blog はてなエンジニアのカレンダー | Advent Calendar 2023 - Qiita トップバッターは緊張するけど、順番が回ってくるまで長い間ソワソワするのも嫌、という理由で例年2日目を狙うようにしている id:pokutuna です。今年も成功しました。 観光名所とは 目を閉じれば思い出す、あのコード... あの Issue... あなたが Web 系のエンジニアであれ、趣味で開発している方であれ、必要に応じてライブラリやフレームワークのコードを読むのはよくあることでしょう。公開の場で開発されているソフトウェアは、ソースコードだけでなく、開発コミュニティでの議論やバグ報告なども見ることができます。 リポ
すべての説明はイチRubyユーザーの個人的で期間も限定的な観測範囲に基づきます。 「Rubyには型がない」 ある日、同僚とプログラミング言語に関する雑談をしていたときに言われた一言です。 私はその日までRubyの型機能は使っていませんでした。忙しい毎日を送り、キャッチアップを疎かにしていたのです。後日このことは猛烈に反省することになります。 「Rubyには……型があるッ……!」 火がついた私はパターンマッチの時と同様にRubyの型についてキャッチアップすることにしました。そして最高の体験が待っていました。 導入した後の世界 ぶっちゃけRubyの型を導入するとどうなるのでしょうか? メチャクチャ簡単に説明すると、エディタでバグがひと目で分かるようになります。 vscodeでの画面です。なにやら赤線がついています。 === bar === barの部分にカーソルを合わせてみましょう。 「Pos
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く