タグ

rubyに関するmizdraのブックマーク (64)

  • 絶対に抜け出せないループと、それを抜け出す方法 - pockestrap

    こんにちは。 id:Pocke です。Rubyで抜け出せないループを定義する方法を紹介します。 抜け出せるループ Ruby にはKernel.#loopメソッドが定義されています。これはブロックの評価を永遠に繰り返すメソッドです。 # 永遠にhelloが出力される loop do puts "hello" end loopメソッドは当然抜け出すこともできます。 # helloを1回出力した後ループから抜ける loop do puts 'hello' break end # 同様にRubyを1回出力した後ループから抜ける # メソッド内で`return`を呼ぶことで、メソッドごと抜け出すのに使われる def f loop do puts 'Ruby' return end end f # worldを1回出力した後、例外を出してループから抜ける(プログラムは異常終了する) loop do p

    絶対に抜け出せないループと、それを抜け出す方法 - pockestrap
    mizdra
    mizdra 2026/07/14
  • 分散にも便利 SO_REUSEPORT - Chienomi

    この記事はLinuxカテゴリです! 文はLinux上での話をしています Linuxに関する疑問解消や共有は日Linuxersへ 序 SO_REUSEPORT って便利だよという話を聞いたので試してみた。 SO_REUSEPORTはソケットオプションで、複数のプロセスで同じポートを指定できるようになる。 類似のものにSO_REUSEADDRがあるが、これはTCPポートがTIME_WAIT状態にあるとき、そのポートを直ちに再利用できるようにするものである。 socatやnc, netcatで待ち受けていると、使い終わったあと履歴からもう一度実行するとAddress already in useと言われて拒否された経験がある人も多いだろう。このような状況のときに活躍するオプションである。 対して、SO_REUSEPORTは同時に複数のプロセスで同一のポートでの待ち受けが可能になる。 複数の

    分散にも便利 SO_REUSEPORT - Chienomi
  • Ruby Parser開発日誌 (1) - かねこにっき

    Error Tolerant parserに関するアイデア 9月半ばに行われたRubyKaigi 2022以来、3ヶ月くらいError Tolerant parserについて調べたり考えたり実装をしたりしています。 途中でもいいからなにかにアウトプットしておくとよいというアドバイスをもらったので、今現在の状況や考えていることを書いておこうと思います。 Error Tolerant parserとは? どうしてそれが欲しいの? 通常parserはユーザーの入力を受け取り その入力がそのプログラミング言語にとって、validなものか否かをチェック validな場合、その後の工程にとって都合のいいデータ構造(例えばAST)に変換し、後工程に渡す invalidな場合、Syntax Errorをレポートする といった処理を行います。 しかしIDEやLSP(Language Server Proto

    Ruby Parser開発日誌 (1) - かねこにっき
  • Goで作られたシステムをRuby on Railsに移植しています - STORES Product Blog

    STORES でエンジニアをしている片桐です。 STORES では店舗運営に関するさまざまなプロダクトを提供しています。これらのプロダクトは元々別の会社で運営されてきた完全に異なるプロダクト群で、アカウント体系から全く異なるシステムになっていました。近年はこれらのシステムを格的に統合する取り組みを進めてきており、その中で統合のためにいくつかのシステムが新たに作成されてきました。 ある程度統合が進み、うまくいったところ・いかなかったところが見えてきた中で、これまでに作ったシステムの技術選定・システムの役割に対する課題感が見えてきました。 現在弊社ではこの課題を解決していくプロジェクトを進めています。その中の1つで、Goで作られたシステムをRuby on Railsで作られたシステムに移植する作業を行なっているので、今回はそれについて紹介させていただきます。 移植元のシステムの課題 今回別シ

    Goで作られたシステムをRuby on Railsに移植しています - STORES Product Blog
  • 約9000個の自動テストの 時間を50分->10分に短縮 Flakyテストを1%以下に抑えた話

    .NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer

    約9000個の自動テストの 時間を50分->10分に短縮 Flakyテストを1%以下に抑えた話
  • Rubyistに伝えたかったLTの歴史と大事なこと|tkskkd

    (1) 日最初のLTはRubyPerlコミュニティから日最初のLTは、2001年5月、初台の当時アスキーの地下フロアで行われたYARPC 19101 というイベントでした。 YARPCはYet Another Ruby/Perl Conference の略称で、RubyPerlのカンファレンスでした。主催はJUS(日UNIXユーザー会)で、初期の頃のRubyコミュニティは小さかったので、単独ではなく先輩スクリプト言語のPerlと共催するイベントが多かった時代でした。 つまり、日最初のLTはUNIXをベースとしたRubyPerlのコミュニティから始まったのです。だから、少なくともRubyコミュニティの方々には、ライトニングトークスの歴史は知ってほしいと考えました。 (2) 高橋メソッドの原型は日最初のLTで生まれた日Rubyの会、会長高橋さんが発明した「高橋メソッド」のプレ

    Rubyistに伝えたかったLTの歴史と大事なこと|tkskkd
  • 「RailsアプリはIO-boundである」という神話について考える(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: The Mythical IO-Bound Rails App | byroot’s blog 原文公開日: 2025/01/23 原著者: byroot -- Railsコアコミッター、Rubyコミッターであり、ShopifyのRuby/Railsインフラチームのシニアスタッフエンジニアです 日語タイトルは内容に即したものにしました。 IO-boundは英ママとしました。 私がやりたいのは、Pitchfork1に関する記事を書いて、これがどんな理由でできたのか、なぜ現在のような形になったのか、そして今後どうなるのかについて説明することです。しかしその前に、いくつか解説しておく必要があります。 Railsとパフォーマンスの話題になると「データベースがボトルネックになる」という話がよく持ち上がりますが、RailsはいずれにしてもI

    「RailsアプリはIO-boundである」という神話について考える(翻訳)|TechRacho by BPS株式会社
    mizdra
    mizdra 2025/02/21
    YJIT によるパフォーマンスの向上からアプリケーションの I/O 処理の割合を推測する話、CPU 枯渇が I/O 待ち時間が長いと見間違える理由の話が面白かった
  • 今Rails 8アプリを作るなら何も足さないバニラ味にしよう(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: 37signals Dev — A vanilla Rails stack is plenty 原文公開日: 2024/12/20 原著者: Jorge Manrubia -- 37signalsの首席エンジニアです 日語タイトルは内容に即したものにしました。 今の世の中で、Railsアプリを新しく作るゆとりに恵まれているならば、バニラアプリとして作る1、すなわち依存関係を何も足さないのが、私たちからのオススメです。 Rubyの依存関係は、よほどの理由がない限りRailsに追加しない。 Railsで生成したGemfileは、極力手つかずのままにしておく。 JavaScriptの依存関係をRailsに追加するのは、Ruby依存関係の場合以上に慎重に検討する。 Reactなどのフロントエンドフレームワークも、それらにJSONを送り込

    今Rails 8アプリを作るなら何も足さないバニラ味にしよう(翻訳)|TechRacho by BPS株式会社
  • ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)

    AI時代のアジャイルチームを目指して ー スクラムというコンフォートゾーンからの脱却 ー / Toward Agile Teams in the Age of AI

    ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)
  • 2024年のRailsと自由について考える

    えにしテック15周年記念カンファレンスの発表資料です。 https://enishi-tech-15th-anniv-conf.peatix.com/ 資料中で参照しているURLは以下です: https://github.com/rails/rails/milestone/87 https:…

    2024年のRailsと自由について考える
    mizdra
    mizdra 2024/07/02
    良い
  • まつもとゆきひろさん「Better Ruby」~RubyKaigi 2024 3日目キーノート | gihyo.jp

    2024年5月15日から17日まで、沖縄県那覇市の那覇文化芸術劇場なはーとでRubyKaigi 2024が開催されました。3日目の基調講演はRubyの作者である、まつもとゆきひろさんが登壇し、「⁠Better Ruby」というタイトルで講演を行いました。 まつもとさんは、Rubyの良さ、Rubyをより良くするための4つの側面、Rubyの未来像について話しました。 まつもとさんによるキーノート Rubyの良さ 「Ruby当に素晴らしい言語で、これを日語で自画自賛と言います」とまつもとさんは話し始め、Rubyの良さについて順に紹介しました。 楽しい まず最初にRubyの良いところとして、コードを書いていて楽しいという点を取り上げました。Rubyの公式サイトにある「A PROGRAMMER'S BEST FRIEND」というスローガンは、「⁠プログラマーがコードを書くときにRubyが友であ

    まつもとゆきひろさん「Better Ruby」~RubyKaigi 2024 3日目キーノート | gihyo.jp
    mizdra
    mizdra 2024/06/30
  • スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog

    こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカいマイクロサービス第一位である api

    スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog
    mizdra
    mizdra 2024/04/02
    “ある程度リクエストを処理したworkerを次世代のworkerの親にする” おもしろい。
  • Pumaの使い方 まとめ - 猫Rails

    感想 スレッドベース 参考 unicornはプロセスベース pumaはスレッドベース MRIのスレッド Jruby・Rubiniusのスレッド スロークライアント railsへの導入 設定 参考URL 設定ファイルの読み込み 設定項目 bind: バインド port: バインド(portとhost) ssl_bind: バインド(SSL) workers: ワーカー数 threads: スレッド数のmin・max environment: 環境 demonize: デーモン化 pidfile: pidファイル置き場 stdout_redirect: 標準出力/標準エラーを出力するファイル preload_app!: プリロード before_fork{}: 各ワーカーのフォーク前の処理 on_worker_boot{}: 各ワーカーのboot前の処理 prune_bundler: phas

    Pumaの使い方 まとめ - 猫Rails
  • 新しいRubyパーサーPrism利用時の開発体験の変化

    この記事で扱っていること 記事ではRuby 3.3で導入されたPrismという新しいパーサーについて扱っています Prismが持つ「パース時に問題が発生した場合でも可能な限り意味のある結果を返却する」という機能に着目して下記について話します Rubyを記述する際の開発者体験がどれくらい向上しているのか? 「可能な限り意味のある結果」をどうやって組み立てているのか? 最後に主テーマから外れますが、Prismの動かし方についても話しています はじめに こんにちはウォンテッドリーで推薦基盤の改善をやっているnasaです 去年の12/25にもRubyの最新バージョンがサンタさんから届きました。https://www.ruby-lang.org/ja/news/2023/12/25/ruby-3-3-0-released/ 最新バージョンのRuby 3.3.0ではPrismという新しいパーサーが導

    新しいRubyパーサーPrism利用時の開発体験の変化
    mizdra
    mizdra 2024/03/21
  • Feature #5054: Compress a sequence of ends - Ruby - Ruby Issue Tracking System

    I'm not sure yet what to think of this proposal, but if it gets introduced, please lets make sure to improve the allignment of the ennnnnd. Rather than: Yasushi ANDO wrote: module MyModule class MyClass def my_method 10.times do if rand < 0.5 p :small ennnnnd please put the first character of the ennnnd in the same column as the outermost construct it closes: module MyModule class MyClass def my_m

    mizdra
    mizdra 2024/02/21
  • 2023年にやったこと - k0kubun's blog

    今年で30歳、社会人9年目、在米5年目になった。今年は 趣味でRJITを作り、仕事でYJITを超高速化した 初めて論文を国際会議に投稿し、採択された 子供とプリスクールに行き始めた という感じの一年だった。 仕事 大変ありがたいことに、自分が今一番興味のある仕事であるYJITの高速化に集中できた一年だった。 いろいろやったが、代表作は以下の三つかなと思う。 スタックオペランドのレジスタアロケータ 最適化未対応なメソッド呼び出しのフォールバック 例外ハンドラのコンパイル どれもベンチマークがかなり速くなった。 特に二つ目と三つ目は、自分で発案してかつ主に僕が重要性を訴えていた奴で、 それらで大きな成果が出たときはかなり達成感があった。 単独のPRでRailsベンチが7%速くなった時はこりゃ昇給するわと思ったが、実際めちゃくちゃ昇給した。 ベンチマークも速くしている一方、僕は番アプリの最適化

    2023年にやったこと - k0kubun's blog
    mizdra
    mizdra 2023/12/31
  • RJIT: RubyでRubyのJITコンパイラを書いた - k0kubun's blog

    僕はRustRubyのJITを書く仕事をしているのだが、去年の12月くらいから、趣味ではRubyRubyのJITを書いている。 それまではC言語でコード生成を行なうMJITを5年くらいメンテしていたのだが、先月、Rubyで機械語を直接アセンブルするRJITに差し替えた。 github.com なので、今Rubyのmasterブランチには、会社で業務として開発しているRust製のYJITと、僕が趣味で開発しているRuby製のRJITの2つのJITコンパイラが存在している。余談だが、JITの開発をしすぎてRubyの作者であるまつもとさんのコミット数を最近抜いた。 なぜMJITをやめたのか MJITも結構がんばっていて、去年開発していたRuby 3.2ではMJITのコンパイラの実装をCからRubyにフルスクラッチした上、バックグラウンド処理をpthreadからfork + SIGCHLDで行

    RJIT: RubyでRubyのJITコンパイラを書いた - k0kubun's blog
    mizdra
    mizdra 2023/12/31
  • Ruby 3.3.0 リリース | Ruby

    Posted by naruse on 25 Dec 2023 Ruby 3.3.0 が公開されました。Ruby 3.3ではPrismという新しいパーサーの追加、新しいパーサージェネレーターであるLramaによるBisonの置き換え、RJITという新たなJITの仕組みを追加、YJITの高速化など様々な改善が行われています。 Prism default gemとしてPrismパーサを導入しました。 Prismは、Ruby言語のためのポータブルで、エラートレラントで、保守可能な再帰下降パーサです。 Prismは番環境で使用する準備が整っており、積極的にメンテナンスされています。Ripperの代わりに使用することができます。 Prismの使用方法については、詳細なドキュメンテーションがあります。 Prismは、CRubyに内部的に使用されるCライブラリと、Rubyコードを解析する必要がある任意

    Ruby 3.3.0 リリース | Ruby
    mizdra
    mizdra 2023/12/26
    Prism と M:N スレッドスケジューラ、へー
  • standard librariesとdefault gemsとbundled gemsの違い - ESM アジャイル事業部 開発者ブログ

    のハワイ、宮崎よりお送りします。yoshinoです。 先日、XMLでレスポンスを返すAPIがあったので、require 'rexml/document'でロードしてXMLをパースしようとすると、cannot load such file -- rexml/documentが起きてしまう事象に遭遇しました。 Ruby 3.0.0 Releasedによれば、Ruby3.0からrexmlとrssbundled gemになったようです。 このリリース記事では、libraryとして次のような言葉が使われていて、 standard libraries ( stdlib files ) default gems bundled gems default gemsでもbundled gemsでもないgem (その他のgem ) 「具体的に何が違うんだっけ?」となったので、この4つの言葉について調べま

    standard librariesとdefault gemsとbundled gemsの違い - ESM アジャイル事業部 開発者ブログ
    mizdra
    mizdra 2023/12/26
    それぞれの違いは分かったけど、default gems と bundle gems ってそれぞれどう使い分けられているのだろう。標準の gems として扱うようにしたいのでどっちかに所属させたいけど、どういう基準でどっちにするの、みたいな。
  • Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました - Repro Tech Blog

    Development Division/Repro Team/Feature 1 UnitWatsonです。Feature 1 Unit は Repro Tool の機能開発と保守を担っています。 弊社でも利用している Oj gem のパフォーマンス改善 PR を送った話と、その PR の内容について共有します。 ことのはじまり 以前、同僚が Ruby on Rails で JSON を返す REST API を作成した際、JSON のエンコード部分のパフォーマンス計測をしていました。JSON のエンコード方法は JSON.generate、ActiveSupport::JSON.encode、Oj gem を利用する方法など色々ありますが、私としては Oj gemの ほうがパフォーマンス的にいいだろうからそちらを利用したほうが良いのではと思っておりました。 計測結果を拝見したら確

    Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました - Repro Tech Blog
    mizdra
    mizdra 2023/12/19