こんにちは、hachi8833です。
🔗Ruby
🔗 "Code Golf Stack Exchange"(Ruby Weeklyより)
つっつきボイス:「Stack ExchangeにコードゴルフのQ&Aがあって、Rubyのコードゴルフも扱われているそうです」「しかもcodegolf.stackexchange.com
というドメイン」「結構情報多いですね」「読み込んでいったらRubyの隠れた仕様とかを見つけられそう」
「コードゴルフといえばRubyKaigiで不定期開催されるTRICKを思い出しますね」「TRICK好きな人ならきっと好き」
🔗 ShopifyによるRubyガベージコレクション改善
Link: Two Garbage Collection Improvements Made Our Storefronts 8% Faster | Rails at Scale : https://t.co/oerNX4swPv
https://t.co/oerNX4swPv— Yukihiro Matz (@yukihiro_matz) August 21, 2023
つっつきボイス:「ShopifyのStorefront Renderer(ウォッチ20230330)の高速化に寄与したガベージコレクションの記事です」「Rubyのガベージコレクションで2つ改良を行なって、ガベージコレクションのパフォーマンスが平均46%改善、Storefrontも8%改善したのか」「次のRuby 3.3にも取り入れられる予定なんですね」
参考: ガベージコレクション - Wikipedia
参考: The Shopify platform
Feature #19571は、ガベージコレクタに新しいヒューリスティックを追加しました。このヒューリスティックは、古いオブジェクトの個数の比率に基づいて、「書き込みバリア」で保護されていないオブジェクト数の上限を調整します。この比率はデフォルトで1%となっており、
RUBY_GC_HEAP_REMEMBERED_WB_UNPROTECTED_OBJECTS_LIMIT_RATIO
環境変数で調整できます。
同記事より
Feature #19678は、ガベージコレクタのオブジェクト成長アルゴリズムの振る舞いを変更し、古いオブジェクトから参照される若いオブジェクトを即座に昇格させないようにしました。
同記事より
「この記事からリンクされている同じ著者の別記事↓にもガベージコレクションが詳しく解説されていてよさそう👍」「みっちり書かれていて凄そう」「gc.c
のリンクを開いてみたらものすごく長い...」
参考: Garbage Collection in Ruby - Peter Zhu
🔗 RubyKaigi 2023の録画を見る会
今週も参加しています〜!来週もあるので!楽しみ!!
毎週木曜日にRubyKaigi 2023の録画を見る会を開催しています。 - Money Forward Developers Blog https://t.co/4ykWg4szMa
— しげる。 (@_4geru) August 10, 2023
つっつきボイス:「ruby-jp Slackで最近やっと知ったんですが、RubyKaigi 2023の動画はとっくにYouTubeですべて公開されていて、マネーフォワードさんが7月から毎週木曜に録画を見る会を開催しているんだそうです」「お〜動画見直そうかな」「動画は自分のペースで視聴できるのがいいけど、みんなで視聴すると集中しやすいかも」
- プレイリスト: RubyKaigi 2023 - YouTube
🔗 Standard RubyをLanguage Serverで使うと爆速(Ruby Weeklyより)
つっつきボイス:「記事を書いたsearlsさんはStandard Ruby↓のメンテナーだそうですが、Standard RubyをLanguage Server(LSPモード)で動かしたらVSCodeでのlintがめちゃくちゃ速くなって悔しかったみたいなことが書かれてますね」
「たしかに最近のVSCodeのRuby開発環境はすごく高速になってて、同じことをRubyMineでやるとまだ遅いのが悲しいんですが、ともあれRuby LSPはマジで速くて便利👍」
🔗クラウド/コンテナ/インフラ/Serverless
🔗 ALBでパス毎にIPアドレスを制限する
つっつきボイス:「babaさんがBPS Slackに貼っていた記事です」「AWS WAFを触ってみるとわかるけど、できることが意外に多いので、たとえばアクセス制限ならWAFでもできるんですよね: ターゲットグループごとに設定を分けようとしたりすると面倒になってくる」「なるほど」「AWS WAFは設定が深いので、stagingとproductionで設定が同じになっているかどうかを見比べようとすると手間ですけどね」「Terraformでやりたくなるヤツですね」
参考: Application Load Balancer とは? - Elastic Load Balancing
参考: AWS WAF(ウェブアプリケーションファイアウォール)| AWS
参考: Terraform by HashiCorp
🔗 GitHubのAPIキープッシュ防止
APIキーなど「pushしてはいけないもの」をpushしてしまう事故はGitHubも認識しているようで、そういうのを検知してpushできないようにするオプションが個人/企業向けに用意される(=リポジトリ毎に個別設定しなくてもよくなる)ようになったようです。https://t.co/C1krxjwXzQ pic.twitter.com/tZBUX7kyLi
— YSR@はつゆきさくら攻略中 (@YSRKEN) August 22, 2023
つっつきボイス:「なるほど、GitHubレベルでAPIキーのプッシュを防ぐ機能がパブリックベータ版としてリリースされたんですね」「github.com/settings/security_analysisに設定が追加されていた↓のでオンにしてみました」「これはGitHubレベルにあってもいい機能👍」
github.comより
「今回入ったプッシュ保護は個人単位ですが、GitHub Organization向けには別途設定がありますね↓」「なるほど」「今回入ったもうひとつの"プッシュ保護メトリクス"の方はOrganization向けの機能としてリリースされたんですね」
参考: Push protection for repositories and organizations - GitHub Enterprise Cloud Docs
後編は以上です。
バックナンバー(2023年度第3四半期)
- 20230829前編 Active Storageのミラーアップロードが非同期に、Rackアプリを手作りほか
- 20230824後編 ArelでCAST関数サポート、webdrivers依存を解消、YJIT高速化ほか
- 20230823前編 Rails 7.0.7に含まれているRails 7.0.6のバグ修正ほか
- 20230809 Rails 7.0.5のcreate_association挙動変更取り消し、YJITの性能を最大限引き出す方法ほか
- 20230803後編 Railsフラグメントキャッシュ経由の情報漏洩に注意ほか
- 20230802前編 Active Storageバリアントの事前変換、Linkヘッダープリロードのオプトアウトほか
- 20230727後編 Rubyにdefp導入の提案、IRB 1.7.3リリースほか
- 20230725前編 config.autoload_libとconfig.autoload_lib_onceが追加ほか
- 20230721後編 Kaigi on Rails 2023プロポーザル募集、rubocop-magic_numbersほか
- 20230719前編 複合主キー関連の実装進む、Action TextでHTML5サニタイザほか
- 20230705後編 AWS LambdaでRailsをRackで動かすLambyほか
- 20230704前編 productionのforce_ssl=trueがデフォルトで有効に、rakeタスクをthorで書くほか
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)