2020-10-01から1ヶ月間の記事一覧
Rubyの場合はNil Objectパターンと呼ぶことになるんでしょうか? Null Objectパターン Null Objectパターンは、値が存在しない場合の処理を共通化したい場合に使えるデザインパターンです。 こちらの解説がわかりやすいです Nullオブジェクトパターンの紹介…
N+1問題 N+1問題は、ループ内の処理を通過するたびにSQLが発行されるというパフォーマンス上の問題です。Railsにおいては、includesメソッドを使って、preloadあるいはeager loadを使って回避できます。 こちらの記事がわかりやすいです 【Ruby on Rails】N+…
Railsと設計 Railsは、Active Recordを中心に据えてコードを書いていきます。そうなると、自然とテーブル設計に強く依存したアプリケーションになって行くので、アプリケーションが複雑になっていくとツライ!となることがあります。こういった、Railsのアー…
RailsはSQLからJavaScriptまで広い範囲を扱えるため、詰まりポイントが非常に多いです。私がRailsに慣れなかったころに確認していたことを振り返ってまとめてみます。 どこがつまりポイントになるか Railsが扱う要素技術は非常に多いので、初心者にとっては…
bulmaは美しいCSSフレームワークです。Railsで使おうとする場合、bulma-railsというgemを使ってもいいのですが、せっかくyarnが入っているので、yarnでインストールすることにしました。 bulma-railsは、本家よりすこし遅れてアップデートが反映されていくの…
Stimulas Stimulasは、少ないコード量で動的な表現をすることに主眼を置いて開発された、軽量なJavaScriptフレームワークです。DHH率いるBaseCampが公開してます。 主に提供している機能はこの2つです。 DOM要素のイベントと、そのイベントにフックするJSの…
概要 Ruby用の国際化(i18n)機能を提供するgem。ymlで書かれた設定ファイルを、規定の構造で設定しておくと、I18.tメソッドで翻訳を取得できる。 github.com 仕組み I18n.tの引数と、現在設定されているロケールを頼りにymlに書かれた対応関係に従って翻訳を…
この記事では、Ruby3で追加される予定のScheduled Fiberを紹介します。Ruby 3.0.0 preview1の情報であり、この機能はまだまだ議論と開発の真っ只中です。実際に正式にリリースされるのものとはインターフェースや実装が異なることをご理解ください。 Ruby本…
github.com 概要 システムで利用可能なJSONパーサーのうち、最適なものを選んで使ってくれるJSONパーサーのラッパー。 できるだけ早いものを使うようにしていて、独自に優先順位を付けている。 候補がなにも使えない環境の場合はOkJSONを使う。 仕組み Adapt…
Fiberとnio4rを組み合わせてサーバーを作りました。あたまバグりそうになるのでよかったら見てってください。 Fiberとnio4rを組み合わせる Fiberは、軽量なスレッドを作成できます。このスレッド上で、途中まで実行した処理を中断し、再開することができます…
TCPコネクションのようなIOを複数扱うとき、書き込みや読み込みが可能になっているものを一つ選びたい、ということがあります。RubyにはIO.selectというメソッドがあり、これを使えばそのようなことができます。 IO.selectは、Rubyが動く環境ならどこでも動…
ちゃんとしたHTTPサーバーを作るのって難しいんですが、それっぽいものを作るなら実はそんなに難しく無いです。 HTTPサーバーの処理の流れ とってもざっくり説明すると、HTTPサーバーの処理はこんな流れです。 TCPコネクションを確立する HTTPリクエストを受…
リファクタリング:Rubyエディション作者:ジェイ・フィールズ,シェーン・ハービー,マーティン・ファウラー発売日: 2020/03/21メディア: 単行本に、extendの興味深い利用方法が出てきていたのでご紹介。この本の、8.13 タイプコードからモジュールのextendへ(R…