こんにちは、hachi8833です。以下の脆弱性対応はもうお済みですか?
- JVN情報: JVN#82074338: NEC Atermシリーズにおける複数の脆弱性
- 対応方法: Aterm製品におけるLAN側からの不正アクセスの脆弱性への対処方法について[2024年4月5日更新]|サポート技術情報|目的別で探す|Aterm(エーターム) サポートデスク
🔗Ruby
🔗 2要素認証のブルートフォーステストをRubyで書く(Ruby Weeklyより)
つっつきボイス:「ちょっとしたセキュリティ検証用のコードをRubyで書いたという感じのgistですね: repeated_permutation
ですべての順列(permutation)を列挙して大量のパターンで無慈悲に攻撃を仕掛けている」「Rubyにrepeated_permutation
というメソッドがあるんですね」
# 同記事より
(0..9).to_a.repeated_permutation(4).each do |numbers|
# (略)
参考: Array#repeated_permutation
(Ruby 3.3 リファレンスマニュアル)
参考: 順列 - Wikipedia
結果は貼りませんが、たとえば暗証番号4桁を1111から9999まで網羅するには以下のように書けますね。
(1..9).to_a.repeated_permutation(4).to_a
🔗 SeleniumですべてのRubyクラスやモジュールにRBSが追加された
つっつきボイス:「Seleniumで使われているRubyコードの全クラスとモジュールにRBSファイルが追加されたという話をruby-jp Slackで見かけました」「お〜これは偉業🎉」「182ファイルも追加されているのでさすがにコミットログが長いですね」「Seleniumのような大規模なライブラリほどRBSの型情報があると嬉しいですね👍」
# https://github.com/SeleniumHQ/selenium/blob/trunk/rb/sig/lib/selenium/webdriver.rbsより
module Selenium
module WebDriver
class Point
attr_reader x: Integer
attr_reader y: Integer
def initialize: (Integer x, Integer y) -> void
end
class Dimension
attr_reader width: Integer
attr_reader height: Integer
def initialize: (Integer width, Integer height) -> void
end
class Rectangle
attr_reader x: Integer
attr_reader y: Integer
attr_reader width: Integer
attr_reader height: Integer
def initialize: (Integer x, Integer y, Integer width, Integer height) -> void
end
@root: String
def self.root: () -> String
def self.for: (*untyped args) -> untyped
def self.logger: (**String | Symbol opts) -> WebDriver::Logger
end
end
参考: Selenium: https://www.selenium.dev/ja/
🔗 その他Ruby
Which syntax do you prefer? #rubyonrails pic.twitter.com/ssgCC4lgl1
— RubyCademy (@RubyCademy) April 1, 2024
つっつきボイス:「下の書き方初めて見ました」「一瞬なにこれ?って思ったけど、続きを見るとPathName
にある/
メソッドを使っているのか!」「Railsの機能かと思ったらRubyの機能なんですね」
# 同ツイートより
Rails.root.join("app", "join")
Rails.root / "app" / "jobs"
参考: Pathname#+
(Ruby 3.3 リファレンスマニュアル) -- Pathname#/
はエイリアス
「Ruby 2.2から使えるらしいから割と前からあるのね↓」
So 2014.
And I learned about #/ on Pathname today — 2024!— alexanderadam (@alexanderadam__) April 3, 2024
「/
で書くのはたしかに直感的で面白いけど、既存の他のコードでjoin
を使っているところにこれを混ぜて書くと気持ち悪がられそうなのと、左側がPathnameでない場合にはエラーになる点は注意が必要でしょうね」「もしかするとRuboCopに怒られるかもしれませんね👮🏽」「気の利いた書き方をしてもRuboCopに取り締まられるのはありがち」
🔗 設計
🔗 書籍『Enterprise Integration Patterns』(Ruby on Rails Discussionsより)
つっつきボイス:「以下のRuby on Rails Discussionsのエントリ↓で、Martin Fowlerの動画と合わせてこの"Enterprise Integration Patterns"という書籍に言及していたのを見つけました」
「お、図のスタイルは懐かしいというかだいぶ昔っぽいけど、メッセージングの普遍的なパターンが色々網羅されていてよさそう👍」「古典的名著という感じですね」「こういうパターンは昔からあって時が経っても変わりにくいですね: メッセージングとは別の話ですが、Railsの機能名にもなったMartin FowlerのActive Recordパターンなどもご存知の通り長年使われていますし、時を経て再評価されたりしていますね」
↓リンク先ではこの図の項目が全部リンクになっています。
Messaging Patterns Overview - Enterprise Integration Patternsより
「Enterprise Integrationの日本語を探してみると、マイクロソフトなどで"エンタープライズ統合"という用語にしているようですね↓」
参考: Azure での基本的なエンタープライズ統合 - Azure Architecture Center | Microsoft Learn
「英語版のみですが、書籍も随分前からあるんですね↓」「ハードカバー版が高いのでKindle版ポチろうと思ったら、何と数年前に既に買っていたことが判明」「私も時々やっちまいます」
🔗 書籍『データ匿名化手法』
これだいぶ面白いので簡単に書評的なの書きたい。匿名化や個人情報保護の概念とアプローチについて、如何に「雰囲気で」捉えてきたかを思い知った pic.twitter.com/zd6630V8AO
— べりんぐ (@_Bassari) April 3, 2024
つっつきボイス:「上のツイートでこの『データ匿名化手法』を知りました」「お、このテーマの本は現代なら1冊持っていてよいと思います👍: 少なくともデータ匿名化の概念やどんな手法があるかぐらいはひととおり知っていないとまずい」
🔗CSS/HTML/フロントエンド/テスト/デザイン
🔗 hotwire_combobox: gem形式のコンボボックス拡張(Ruby Weeklyより)
- 元記事: HotwireCombobox
つっつきボイス:「Hotwireアプリのコンボボックスを拡張するhotwire_comboboxというgemだそうです」
「やりたいことはわかるけど、gemの形になっているのが気になるかな: 10年前くらいにjQueryとかBootstrapあたりをgemの形でインストールしてgemで管理するのが流行った時期はあるんですが、今の時代にこういう小さめの機能で使うアセットを追加したりするためにgemを追加して依存関係を増やすことはためらう気持ちがありますね」「言われてみれば、importmap-railsとかjsbundling-railsとかでHotwireらしくインストールする方が現代的な感じはしますね、でもアセットは追加しにくいのか...」
後編は以上です。
バックナンバー(2024年度第2四半期)
週刊Railsウォッチ: solid_queueとmission_control-jobsが正式にRailsのgemに、Rubyの"チルド"文字列ほか(20240402)
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)