アプリケーション

研鑽Rubyプログラミング 実践的なコードのための原則とトレードオフ

アプリケーション

研鑽Rubyプログラミング 実践的なコードのための原則とトレードオフを読んだ。 仕事でRubyを使い始めて、入門的な書籍も一通り読み漁って、ある程度知識が身についてきた段階でより実践的なことが知りたくて読んでみた。 Rubyの実践的な知識はもちろん、Rubyの魅力についてもこの本から感じ取ることができたような気がする。 プログラミングという観点では、Rubyに依らない考え方も拾うことができた。 ...

Ruby

punditのコードリーディング

アプリケーション

概要 punditのコードリーディングをする。 準備 punditのリポジトリをクローンする git clone git@github.com:varvet/pundit.git コードリーディング 権限を適用するときに使うauthorizeメソッドを見ていく。 authorize varvet/pundit/blob/main/lib/pundit.rb#L75 モジュールのクラス...

pundit Ruby

Ruby コードレシピ集

アプリケーション

Ruby コードレシピ集を読んだ。 Ruby初心者がRubyでできることやよくあるパターンをインプットするのにちょうど良い本。 これからRubyを学ぶのであれば、本書を読んでおいて損がないと思う。 分かりやすく簡潔に書かれているので読みやすい。 ...

Ruby

relineのコードリーディング

アプリケーション

概要 relineのコードリーディングをする。 準備 relineをクローンする git@github.com:ruby/reline.git サンプルコードを作成する $LOAD_PATH.unshift(File.expand_path('lib', __dir__)) require "reline" prompt = 'prompt&...

reline Ruby

irbのコードリーディング

アプリケーション

概要 irbのコードリーディングをする。 準備 irbのソースコードをクローンする git clone git@github.com:ruby/irb.git エントリポイントを細工する 元の状態だとRubyインストールディレクトリにあるirbを実行してしまうので、ローカルのirbを実行するようにする。 #!/usr/bin/env ruby # # irb.rb - intera...

irb Ruby

RSpecのコードリーディング

アプリケーション

概要 RSpecのコードリーディングをする。 準備 RSpecのリポジトリをクローンする。 https://github.com/rspec/rspec-core コードリーディング RSpecの呼び出し rspec/rspec-core/blob/main/exe/rspec#L4 エントリーポイント lib/rspec/core/runner.rb#L43 Runnerクラス...

RSpec Ruby

カーソルページネーションとオフセットページネーションについて

アプリケーション

概要 オフセットページネーションとカーソルページネーションの比較についてまとめる。 オフセットページネーションとは SELECT * FROM table LIMIT 10 OFFSET 20 のように、OFFSET と LIMIT を使ってページネーションを実現する方法。 比較的実装が容易で、任意のページに直接アクセスすることができる。全体のページ数が把握しやすいが、データセットが大きい場合、パ...

オフセットページネーション カーソルページネーション

Sidekiqのコードリーディング

アプリケーション

概要 Sidekiqのコードをさらっと読んでみる。 準備 sidekiqをクローン https://github.com/sidekiq/sidekiq redisを起動 docker run --name redis-server -p 6379:6379 -d redis デバッグしたいところでbinding.pryを仕込む sidekiqを起動 bundle exec ...

Ruby Sidekiq

セキュア・バイ・デザイン: 安全なソフトウェア設計

アプリケーション

セキュア・バイ・デザイン: 安全なソフトウェア設計を読んだ。 ソフトウェア設計からセキュリティを向上させていくアプローチについて書かれた本。 特徴的なのは、設計のアプローチとしてDDDを中心に据えている点。 セキュリティはドメインのモデリングを誤ると生じるリスクの一つでもあると思うが、その重要性が語られている。 具体的な脆弱性に対する対応方法については多くは語られていない。 セキュリティを実装す...

セキュリティ 設計 DDD