タグ

rubyに関するsue445のブックマーク (421)

  • 不要な処理が実行速度を速くする謎を追う - Money Forward Developers Blog

    こんにちは。 id:Pocke です。マネーフォワードでは Rails を用いた Web アプリケーションの開発と、RBS という Ruby の静的型システムの開発を行っています。 最近 RBS の開発をする中で、「不要な処理を削除すると実行速度が遅くなる」という不思議な現象に遭遇しました。この記事ではその現象を解説しようと思います。 なおこの記事は Ruby の知識を前提としないように執筆されており、Ruby の知識が必要となるところには注釈を加えて補足しています。 普段 Ruby を書かない方にも読んでいただければ幸いです。 問題を引き起こした変更 今回の問題は、RBS のメモリ使用量の削減を行っている中で遭遇しました。まずはどんな変更を行おうとしていたかを解説します。 変更の動機 最近私は RBS のメモリ使用量の削減に取り組んでいます。1 その取り組みの中で、RBS のパーサーが作

    不要な処理が実行速度を速くする謎を追う - Money Forward Developers Blog
    sue445
    sue445 2024/09/27
  • 『Ruby on Railsパフォーマンスアポクリファ』 - snoozer05's blog

    翻訳を担当した電子書籍Ruby on Rails パフォーマンスアポクリファ』が発売となりました。 書籍は以下から購入できます。 Ruby on Rails パフォーマンスアポクリファ 書は、2020年に出版されたNate Berkopec著『The Ruby on Rails Performance Apocrypha』の全訳です。原書は訳書と同様、著者の販売サイトで自主出版の電子書籍として出版され、現在はKindleストアでも販売されています。 The Ruby on Rails Performance Apocrypha The Ruby on Rails Performance Apocrypha: A starter guide to making Rails apps faster and more scalable (English Edition) 作者:Berkope

    『Ruby on Railsパフォーマンスアポクリファ』 - snoozer05's blog
  • Ruby のメソッド定義時に仮引数があるとき、それをカッコでくくらないのは私だけなの? - STORES Product Blog

    テクノロジー部門で Ruby インタプリタの開発をしている笹田です。RubyKaigi 2024 楽しみですね。 さて、Ruby のメソッドを定義するとき、仮引数がある場合、カッコを省略することができます。 def foo(x, y) end def bar x, y end bar の定義の方法ですね。私は好んでこの書き方をしてたんですが、同僚の遠藤さんに「そんな書き方をしているのは今時笹田だけだ」と言われてショックを受けたので、ちょっと調べてみました。 ちなみに、カッコがないと使えないメソッド定義の方法があるので、その時には涙を呑んでカッコをつけます。 def foo(kw:) # 必須キーワード引数 end def bar(&) # 無名ブロック引数 end 補足1:Ruby では「メソッド呼び出し時にカッコをつけるかどうか」にいろいろな論争がありますが、ここでは「メソッドを定義する

    Ruby のメソッド定義時に仮引数があるとき、それをカッコでくくらないのは私だけなの? - STORES Product Blog
    sue445
    sue445 2024/04/12
    調査方法が面白かった
  • ブラウザでRubyを動かす夢 - まめめも

    何に使うわけでもないけど、とにかくブラウザで Ruby を動かしたかったんです。 その夢が、ついにかなった気がします。 長年の念願だった Emscripten と xterm.js でブラウザで irb を動かすやつがついに(一応)できたhttps://t.co/ubentOzj7p— Yusuke Endoh (@mametter) 2024年1月27日 振り返ってみると、ここに来るまで 6 年もかかったようです。ちょっと嬉しくなったので経緯を書き残します。 Emscripten で Ruby をビルドする 2018 年、ふと思い立って、Emscripten で Ruby をビルドできるようにしました。 Emscripten は、要するに C/C++ プログラムを JavaScriptWasm に変換してくれるコンパイラです。C で書かれた RubyEmscripten でビ

    ブラウザでRubyを動かす夢 - まめめも
    sue445
    sue445 2024/02/01
  • 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
    sue445
    sue445 2023/12/19
  • Announcing Trusted Publishing on RubyGems.org - RubyGems Blog

    Hi all! I’m excited to share a new feature that will help make RubyGems.org more secure, as well as making it easier to automate gem publishing. Inspired by the Python package index, we’re calling it Trusted Publishing. Backstory Over the past few years, we’ve increased the minimum multi-factor authentication (MFA) requirements for accounts that own popular gems. We highly encourage requiring MFA

    sue445
    sue445 2023/12/14
    便利っぽい
  • RBSのテスト方法4パターン

    rbs validate rbs validateはrbs gemが提供するCLIコマンドだ。 rbs -I sig validateのように対象の型ディレクトリーを任意に選択できる。 RBSファイルを全て読み込み、RBSファイルだけを見た時のおかしなところがないかを調べることができる。例えば、シンタックスチェックもちろん、メソッドに2重定義はないか、alias先のメソッドは存在するか、classをincludeしてないか等の異常もチェックしてくれる。 静的かつカジュアルに使えるため、RBSを使用する全ての状況で利用を推奨できる活用範囲の広い汎用的なツールだ。なにはともあれrbs validateと覚えよう。 rbs validateが通ることで、RBSのシンタックスが通っていることはもちろん、矛盾がなく、各種RBSツールで利用可能であることを保証できる。CIに組み込むことも容易で、既存の

    RBSのテスト方法4パターン
  • Ruby/Rails の勉強に何読んだらいいかと聞かれたとき - id:onk のはてなブログ

    「次の職場が Ruby なんだけど」と読み書きそろばんを聞かれたのと、大阪Ruby会議03、大江戸Ruby会議10、Kaigi on Rails 2023Ruby/Rails 関係のイベントに続けて参加して、作者の皆さまと会ったので。 「読める」になるために 言語仕様は何らかの 1 冊の冒頭の方を読めば雰囲気は掴めるだろう。 Ginza Rails27 igaiga - Speaker Deck 著書や技術顧問、健康診断レポート でお馴染みの @igaiga555 さんの作った表で、難易度別にまとまっている。 たのしいRuby か、プロを目指す人のためのRuby入門 が定番かなぁ。 できることを知る るりま (Ruby リファレンスマニュアル) の Enumerable、String Rails Guides の Active Support Core Extensions 日

    Ruby/Rails の勉強に何読んだらいいかと聞かれたとき - id:onk のはてなブログ
    sue445
    sue445 2023/11/01
  • 「Ruby存続が自社のメリット」、STORESはなぜ著名Ruby開発者を受け入れたのか

    「笹田さんや遠藤さん(のような突出した能力を持つプログラマー)を雇用できる機会はほとんどない。人類史上数回しかないレベル。これを逃す手はない」。店舗向けデジタルサービスなどを提供するSTORESは、プログラミング言語「Ruby」の処理系を開発している笹田耕一氏と遠藤侑介氏を採用し、両氏は2023年9月1日、同社に入社した。冒頭に挙げたのは、STORESのエンジニア採用の責任者である藤村大介CTO(最高技術責任者)の言葉だ。 両氏は、前の職場であるクックパッドRuby処理系の開発に専念する「フルタイムコミッター」として働いていた。STORESでも同様にRubyのフルタイムコミッターとして勤務する。 サービスの約6割がRubyを採用 採用の発端になったのは、笹田氏が2023年6月6日に投稿したTwitter(現X)の書き込み。同氏と遠藤氏が勤務先のクックパッドから退職勧奨を受け、転職先を探し

    「Ruby存続が自社のメリット」、STORESはなぜ著名Ruby開発者を受け入れたのか
    sue445
    sue445 2023/09/28
  • 『Ruby biz Grand prix 2023』 ファイナリスト企業が決定!

    Ruby biz Grand prix 2023』 ファイナリスト企業が決定!11月8日(水)開催の表彰式にてグランプリを発表します Ruby biz グランプリ実行委員会(事務局:島根県)は、『Ruby biz Grand prix 2023』のエントリー企業・事例合計29件の中から、厳正なる選考の結果9件のファイナリストを決定しました。 プログラミング言語「Ruby」を活用し開発されたサービスにより、金融・医療・不動産など様々な分野やシーンの課題解決に積極的に取り組んでいる企業の事例を選出しています。 表彰式は11月8日(水)に島根県松江市で開催し、ファイナリストの中から第9回グランプリを発表します。 ■『Ruby biz Grand prix 2023』ファイナリスト一覧(企業名50音順) ・株式会社ヴァル研究所「駅すぱあとWebサービス」 公共交通の乗換案内から交通費精算まで⁠、

    『Ruby biz Grand prix 2023』 ファイナリスト企業が決定!
    sue445
    sue445 2023/09/26
    ひぇ〜!
  • プログラミング言語「Ruby」を活用したITビジネスコンテスト 『Ruby biz Grand prix 2023』 エントリー企業29社を発表!

    プログラミング言語「Ruby」を活用したITビジネスコンテスト 『Ruby biz Grand prix 2023』 エントリー企業29社を発表!~IT産業に変革をもたらす多種多様なサービスが集結~ Ruby biz グランプリ実行委員会(事務局:島根県 商工労働部 産業振興課 産業デジタル推進室)は、今年で9回目の開催となるITビジネスコンテスト『Ruby biz Grand prix 2023』にエントリーするビジネス事例を募集し、国内外から合計29件の応募がありました。 今後、審査委員会での選考を経て、『Ruby biz Grand prix 2023』のグランプリ企業・事例が決定します。 <『Ruby biz Grand prix 2023』 開催概要> ●目的・概要 『Ruby biz Grand prix』は、プログラム言語「Ruby」を活用して、ビジネスの領域で新たな価値を創

    プログラミング言語「Ruby」を活用したITビジネスコンテスト 『Ruby biz Grand prix 2023』 エントリー企業29社を発表!
    sue445
    sue445 2023/09/22
    ワイワイ!(弊社から応募するに辺り僕も書類記入を少し手伝いました)
  • Rubyの並列並行処理のこれまでとこれから - クックパッド開発者ブログ

    技術部の笹田です。今日で退職するので、バタバタと返却などの準備をしています。 記事では、Rubyの並行並列処理の改善についての私の取り組みについて、おもに RubyKaigi 20222023 で発表した内容をもとにご紹介します。 並行と並列はよく似た言葉ですが、記事では次のような意味で使います。 並行処理(concurrent processing)は、「複数の独立した実行単位が、待っていればいつか終わる(もしくは、処理が進む)」という論理的な概念で、古典的にはタイムシェアリングシステムなどが挙げられます。 並列処理(parallel processing)は、「複数の独立した実行単位のうちのいくつかが、あるタイミングで同時に動いている」という物理的な概念で、古典的には複数のCPU上で同時に実行させる、というものです。最近では、1つのCPU上で複数コアが同時に動いている、という

    Rubyの並列並行処理のこれまでとこれから - クックパッド開発者ブログ
    sue445
    sue445 2023/08/31
    お疲れ様でした!
  • ObjectSpace を利用して Ruby 製 worker のメモリ使用量を改善した - @watson1978 の日記

    現在、Ruby 製 worker を作成することを業務で行っているのですが、継続的にメモリ使用量が増加する現象に遭遇してました。 (グラフの値が下がったタイミングが数回ありますが、それぞれでデプロイが行われてリセットされただけ) ObjectSpace.allocation_sourcefile や ObjectSpace.allocation_sourceline を利用してどのファイルのどの行でメモリ確保が多くなるのか調べれるようにしました。 以下のようなコードを worker に追加しました。 require 'objspace' class MemoryProfiler INTERVAL = 5 * 60 DISPLAY_COUNT = 20 def self.start Thread.start do loop do memory_usages = {} ObjectSpace.

    ObjectSpace を利用して Ruby 製 worker のメモリ使用量を改善した - @watson1978 の日記
    sue445
    sue445 2023/08/03
    個人アプリでも長時間動してると徐々にメモリ使用量が増えて困ってるのでこれ入れて調べて見るか
  • Twitter botをAPI v2移行する(Ruby編) - くりにっき

    https://github.com/sue445/pribirthdaybot をTwitter API v2移行した時のメモ tl;dr; 移行先のgem その他に必要になりそうなgem botでAPI v2対応する時の注意点 追記: 2023/07/21 10:40 手順 リフレッシュトークンを作成する botでのAPI v2移行 tl;dr; https://github.com/sferik/twitter はv2対応してないので別のgemに移行する v2だとアクセストークンに有効期限がつくようになったのでちょい面倒 移行先のgem 自分が当時調べた範囲だとAPI v2対応しているAPIクライアントのgemは下記の2つしかなかったです。 github.com github.com ちなみに前者のsimple_twitterは最近メンテナになりました。 sue445.hatenab

    Twitter botをAPI v2移行する(Ruby編) - くりにっき
    sue445
    sue445 2023/07/21
    何番煎じか分からないけどまとめた
  • simple_twitterのメンテナになった&v2.0.0をリリースした - くりにっき

    tl;dr; メンテナになった経緯 v2.0.0について 今後の展望 tl;dr; id:yhara さんのsimple_twitterのメンテナになりました。 github.com simple_twitter については下記エントリを参照 zenn.dev メンテナになった経緯 https://github.com/sue445/pribirthdaybot のTwitter API v2対応をしていて既存のtwitter gemから移行先*1としてsimple_twitterを選んだところ、いくつか動かない箇所があったり挙動に不満があったのでいくつかパッチを投げました。 そうしたらメンテナになってました。 @sue445 https://t.co/Gx6PEwETq7 プルリクありがとうございます。実は、有料化以降自分で使う用事がなくなってしまったので、あれだったらリリース権限をお渡

    simple_twitterのメンテナになった&v2.0.0をリリースした - くりにっき
    sue445
    sue445 2023/07/17
    PR送ったらメンテナになってた系エピソードです!
  • AWS LambdaでRuby 3.2の利用が可能に、初のRuby 3.xサポート。Ruby 2.7のサポートは2023年12月で終了

    AWS LambdaRuby 3.2の利用が可能に、初のRuby 3.xサポート。Ruby 2.7のサポートは2023年12月で終了 Amazon Web Services(AWS)は、同社のサーバレス基板「AWS Lambda」でRuby 3.2ランタイムのサポートを開始したと発表しました。 これまでサポートされていたのはRuby 2.7でしたので、AWS Lambdaとしては初めてのRuby 3.xのサポートとなります。 Rubyは2.xから3.xへのバージョンアップにおいて実行速度の向上を大きな目標としていました。特に今回サポートされたRuby 3.2では、Ruby 3.1でメインラインにマージされ、安定して稼働する実用段階に到達したJITコンパイラ「YJIT」が搭載されています。 YJITは、ECサイト構築サービスで知られるShopifyが開発を進めてきたもので、大規模なRail

    AWS LambdaでRuby 3.2の利用が可能に、初のRuby 3.xサポート。Ruby 2.7のサポートは2023年12月で終了
  • Ruby gem で Rust をつかって爆速にしたい!!!!!!11

    Ruby Gems で Rust が Native として利用可能になった のでとりあえず UUIDv4 を生成してみた。 リポジトリ 準備 Ruby 側の gemRust を利用する準備として rb_sys と rake-compiler を利用します。この二つの gem は native compile するためにインストールしておきます。 Rust 側から Ruby へ関数を公開するために rb-sys と magnus を利用します。 gem install とりあえず cargoRust のパッケージを作って Rust を書いてみます。 > bundle gem rust_uuid --mit --ext rust_uuid # --ext を指定してnative build する gem を作成 > cd rust_uuid # 作成した gem のディレクトリへ移

  • eval_gemfile

    ちょっとしたコード変更を紹介するシリーズ。 - instance_eval( - File.read('Gemfile') - ) + eval_gemfile('Gemfile') Gemfileから別のGemfileを評価したいときに使えるメソッドとして、eval_gemfile (Bundler::Dsl#eval_gemfile) があったことを、他人のコードを読んでいて思い出した。結果的に、上記のように書き換えた。やっていることは大体同じだけど、異常系の考慮や相対パスの取り扱いなど細かなことをやってくれるし、DSLに入りてはDSLに従うべきだろうという考えの元で。 こういうきもい処理は、複数のGemfileを運用するとき場合などに出てくる。例えば、アプリケーションでRails 6と7との過渡期で並行運用するときや、ライブラリで複数のバージョンのGemをテストするときなど。

    sue445
    sue445 2022/06/13
    eval_gemfile、複数gemfileがある時に重複箇所をcommon.gemfileとかで共通化する時によく使ってる
  • MacでRailsにgem mysql2をインストールする時のトラブルシューティング - Qiita

    はじめに 2019年10月現在MacRailsアプリ開発時にDBMySQLを選択する場合、デフォルトではmysql2というgemをインストールします。 その時にいくつかエラーに出会ったので、まとめておきます。 実行環境 macOS Mojave v10.14.6 ruby v2.6.4 Rails v6.0.0 MySQLのクライアントが必要 MacMySQLクライアントをインストールしていない場合、以下のようなエラーが表示されます。 Fetching mysql2 0.5.2 Installing mysql2 0.5.2 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/hogehoge/sample

    MacでRailsにgem mysql2をインストールする時のトラブルシューティング - Qiita
    sue445
    sue445 2021/05/31
  • Pryはもう古い、時代はIRB - k0kubun's blog

    僕はRubyで開発をする時は毎回Pryを使うくらいの熱狂的Pryユーザーだったのだが、PryはGemfileに書いてないと binding.pry できなくて不便。任意のgemをdefault gem化するgem default コマンドも作ったのだが、これをやるのすら面倒だと思っていた。 ある日、nobuさんがRubyに binding.irb という機能をいれた。Pryがdefault gemになるのを待つよりPryで僕が使う機能をIRBに全部移植してしまった方が早いのではないかと思い、4年前からPryの機能の移植活動を始め、今日僕がよく使う機能を全て移植し終えた。 その記念に、この記事ではIRBのPry互換の機能を紹介する。昔 今更聞けないpryの使い方と便利プラグイン集 という記事を書いたんだけど、この中で僕が毎日のように使うコマンドは全てIRBに移植したので、それを紹介する稿を

    Pryはもう古い、時代はIRB - k0kubun's blog
    sue445
    sue445 2021/04/03