The presentation deck for RubyKaigi 2024 about "Namespace on read".
こんにちは。 id:Pocke です。最近のマイブームはルピシアのラムレーズンの紅茶です。1 Ruby や Rails のアップグレード情報を共有する場を作ったので、それをご紹介しようと思います。 背景 Ruby や Rails のアップグレードは単純な作業ではありません。 アップグレードには多くの変更が含まれています。変更はそのソフトウェアが成長している証ですが、一方で痛みもあります。Ruby や Rails を使うアプリケーションが、それらの変更に対応する必要があるためです。 そのようなアップグレード作業を楽にする取り組みはすでにいくつか存在します。 例えば Rails ガイドの Rails アップグレードガイドでは、一般的なアドバイスと、各バージョンで注意すべき変更が書かれています。 また 社内版 Rails アップグレードガイドを公開します - Timee Product Team
はじめに Rubyでゲームボーイのエミュレータを作って、rubyboyという名前のgemで公開しました! (スターをいただけると嬉しいです!) この記事 RUBY BOYの実装手順を説明しながら、ハマった点や工夫した点を紹介します。 またRUBY BOYの高速化のためにやったことを紹介します。 なぜゲームボーイのエミュレータをつくったのか なにか個人開発をしたいが、Webサービスは維持費がかかるので無料で維持できるものを作りたい 業務でRubyを使っていることもあり、以前からRubyのgemを作ってみたかった ゲームのエミュレータ開発は「ゴールが明確&動くと楽しい」ので、モチベを維持しやすそう 特にゲームボーイには思い入れがある → Rubyでゲームボーイのエミュレータを作って、gemで公開しよう! エミュレータの概要 以下は、ゲームボーイのアーキテクチャです。 "Game Boy / C
SREチームの長田です。 今回はRubyのJITコンパイラであるYJITのはなしです。 カヤックが開発・運用している地域通貨サービス「まちのコイン」は、Ruby on Railsを使用しています。 このまちのコインにてYJITを有効化し、その結果どのような影響があったのかを紹介します。 coin.machino.co YJITとは YJITは RubyのJITコンパイラです。 Ruby 3.1までは実験的な機能という位置づけでしたが、 Ruby 3.2から実用段階となりました。 Basic Block Versioning (BBV)を採用した遅延コンパイルにより、コード実行の高速化を図っているようです。 YJITそのものの話題については、今回は割愛させていただきます。 まちのコインの状況 まちのコインでは昨年6月末頃に Ruby 3.1.x から Ruby 3.2.x にアップデートを行
Ruby 3.2 YJIT is Battle-Tested Shopify deploys YJIT on business-critical services in production, such as Storefront Renderer, the software that powers all online storefronts on Shopify’s platform, and Shopify’s Monolith. As of the Ruby 3.2 release, YJIT sped up our Storefront Renderer by 10% on average. Storefront Renderer is a complex application. Your more reasonable-sized app might get better/w
2023年1月18日にRuby on Railsの脆弱性[1]とは別にRackの脆弱性が公表されました。 どれもReDoSの問題であり、CVE-2022-44571とCVE-2022-44572は以下の特徴により危険性がとても高いです。 multipartの解析部分での問題であり、数MBの文字列を攻撃に利用可能 RailsがHTTPリクエストを受け付けた際に呼び出される 呼び出しの際に認証が不要 殆どのRailsサーバが影響を受ける CVE-2022-44572は短い文字列で攻撃可能でPoCでは326byteの文字列で0.3秒の実行時間、416byteで22秒でした。1MBを超える文字列が攻撃として送信された場合の実行時間は1日以上になることが予想されます。 Rackのバージョンを2.0.9.2, 2.1.4.2, 2.2.6.2, 3.0.4.1のいずれかに更新することで解決します。[2
パッチ会や地域 Ruby コミュニティなどで集めた知見を元に、勤務先の永和システムマネジメントなんかで度々話している表題についてテキスト化しておく。 TL;DR Ruby 2.8.0 の開発が始まっているが、それは 2020 年のどこかで Ruby 3.0 になるらしい Ruby 3.0 ではキーワード引数 (以下 kwargs) の分離という破壊的変更があり、Ruby 2.7 系は事実上の移行パスバージョン的な位置付けになるだろう 2020年1月8日の現時点では、Ruby 2.7 の kwargs の分離警告について対応された安定版の Rails はなく、周辺 Gem も WIP なので OSS エコシステムに参加していくと良い 2.8.0 (tentative; to be 3.0.0) development has started 2019年の ruby/ruby での matz
The English version of this article is available here: medium.com 2/4(日)に、去年のRubyKaigiが終わった直後の新幹線で開発を始め10月に公開したJITコンパイラをRubyのtrunk (2.6.0-dev) にマージし、昨日TD Tech Talk 2018で以下のような内容の発表をしました。 speakerdeck.com まだそれほど速くできていないということもあり、私はTwitterでのみ共有して満足していたのですが、海外の方がいくつか記事を書いてくださいました。 Playing with ruby's new JIT: MJIT - John Hawthorn Ruby’s New JIT – Square Corner Blog – Medium とても丁寧に書かれているので、私の記事がわかりにくければ
HashDoS脆弱性との戦い! Rubyコミッター・卜部昌平が明かすプログラム堅牢化のノウハウ 過去、HashDosの影響を受けたRuby。言語開発者はいかにしてこうした問題に対応してきたのでしょうか。コミッターである卜部氏の貴重な記録を公開します。 2011年の末頃、HashDoSという脆弱性が公表され、Rubyもこの影響を受けた。本稿の筆者である卜部昌平(うらべ・しょうへい/@shyouhei/以下、卜部)は、報告当初からRuby側のチームメンバーとしてプログラム本体の修正を担当した。以下はその記録である。言語開発者たちが普段どのようなことを考え、どういった技術を用いて開発やバグフィックスを行っているのか。その概要を知ってもらえれば幸いだ。 オブジェクト指向スクリプト言語 Ruby HashDoSの概要 なぜ約6年後の今、修正内容を公開するに至ったか? 前史:すでに内包されていたリスク
Posted by usa on 29 Aug 2017 Ruby の標準添付ライブラリである RubyGems に、複数の脆弱性が発見されました。 RubyGems の公式ブログにて報告されています。 詳細 以下の脆弱性が報告されています。 a DNS request hijacking vulnerability. (CVE-2017-0902) an ANSI escape sequence vulnerability. (CVE-2017-0899) a DoS vulnerability in the query command. (CVE-2017-0900) a vulnerability in the gem installer that allowed a malicious gem to overwrite arbitrary files. (CVE-2017-0901
unicornのwokerのbusy数とidle数の比率がわからなくて、うっかりworkerが枯渇して大変なことになったので、workerの状況を返すエンドポイントを追加するrackミドルウェアを書いています。 github.com ぶっちゃけkazeburoさんのPlack-Middleware-ServerStatus-Liteのruby版です。 github.com この中で使っているkazuhoさん製のParallel-Scoreboardも移植しました。(まだREADMEがない。。。) github.com 元は下記です。 github.com Kazuho@Cybozu Labs: Parallel::Scoreboard でワーカープロセスをモニタリングする方法 使い方 config.ruに下記の用に書く。 # In config.ru use Rack::ServerSta
“Hello World”なベンチマークでUnicornに比べ2倍高速に動作するRackサーバをリリースしました。 rubygems: http://rubygems.org/gems/rhebok github: https://github.com/kazeburo/rhebok PerlのGazelleをベースに作っています。Rackアプリケーションの運用経験がほぼないので、機能不足があると思います。issue等で教えて頂ければ幸いです。 なぜ高速に動作するアプリケーションサーバが必要なのか Unicornは高速に動作します。多くのアプリケーションにとっては十分でしょう。それでもRhebokでさらに上のパフォーマンスを出そうとしたのは、技術的なチャレンジの他に以下のようなアプリケーションで高速なアプリケーションサーバが必要とされると考えているからです。 ソーシャルゲーム、広告サーバ、
GazelleでやったことをRubyでもやってみようと思い、まず picohttpparser の Ruby バインディングと、perforkなサーバを書く時に便利なモジュールであるParallel::PreforkのRuby版を書いてリリースしました。 pico_http_parser http://rubygems.org/gems/pico_http_parser prefork_engine http://rubygems.org/gems/prefork_engine そしてこの2つを使って、StarletのRuby版を書いてみました。ソースコードはprefork_engineのrepositoryにあります。 https://github.com/kazeburo/prefork_engine/blob/master/example/starlet.rb 動かし方 まず上の2つ
Update (25/11/2014): We can finally confirm that yes, the awesome Raptor project is the codename for the next release of Phusion Passenger itself! Read the announcement If you're a seasoned Ruby web developer you're probably familiar and comfortable using the usual suspects to deploy your applications. You're either deploying something simple through good old Thin, or you're orchestrating several
perl のライブラリ(ライセンスはperlと同じ)をrubyに移植した場合、GPL汚染を受けるのか? 14:41 sonots: ライセンス周りに詳しい方におききしたいのですが、perl のライブラリ(ライセンスは perl と同じ、と書いてある)を ruby に移植した場合、GPL 汚染を受けるでしょうか? ★1 14:42 kazuho: Perl のライセンスは Artistic と GPL の dual license (利用者がどちらかを選ぶ)なので ★0 14:42 kazuho: ruby へ移植した版でも、dual license のまま行くことができます ★0 14:43 kazuho: で、ユーザーが artistic を選択すれば、GPLによる制約はうけないことになります ★0 14:43 yosuke_furukawa: 勉強になった ★0 14:44 sonot
Ruby Way 第2版を読んでいきなりつまづく。 P46 class Myclass @x = 1 # クラスインスタンス変数 @y = 2 # 別のクラスインスタンス変数 def mymethod @x = 3 # インスタンス変数 # ここで@yにアクセスすることはできない end end これのなにが分からなかったかというと、クラスのはじめの@xとメソッド内の@xが別物であるということ(コメントに書いてあるんだけどね)。5年間C++を学んできた自分としては変数の宣言があることは当然だと思っていたため、なかなか理解できませんでした。 ということで、クラス変数とクラスインスタンス変数とインスタンス変数の違いについて。 クラス変数とは、 別名static変数とも言われ、各インスタンスが共有する変数のこと。 クラスインスタンス変数とは、 クラス変数とほぼ同じだが、そのクラスのみでしか参照で
require 'optparse' params = {} opt = OptionParser.new opt.on('-a') {|v| params[:a] = v } opt.on('-b') {|v| params[:b] = v } opt.on('-c file_name') {|v| params[:c] = v } opt.parse!(ARGV) p params % ./very_boring_and_waste_of_time_option_parsing.rb -a -c /tmp/file {:a=>true, :c=>"/tmp/file"} % ./very_boring_and_waste_of_time_option_parsing.rb -h Usage: very_boring_and_waste_of_time_option_parsing [o
IRC (あいあーるしー) 「教養チャンネル」とも「衒学チャンネル」とも呼ばれる。ほとんどのタイミングで日本史か中欧史か仏教史か英語史の話をしている。たまにRubyの話題になると逆に違和感が… ISeq (あいせく) RubyVM::InstructionSequence のこと。長いので誰も正式名称で呼ぼうとしない。 rubyスクリプトのいくつかある表現型の中でもっとも低レベルな表現。現在、rubyスクリプトからISeqを生成する機能は公開されているが、そのようにして生成したISeqを実行する機能はセキュリティ上の懸念から(作られてはいるが)封印されている。→ AST ID (あいでぃー) 型。rubyレベルでいうSymbolにほぼ相当するもの(ちょっとだけ違う)。objcプログラマーはこれを見てVALUEと混乱しないように。 assn (あさしん) IRCで彼らがアサシンと呼んでいるも
ウェブサイトの会員登録なんかでメール送信をプログラムで書く機会は結構あると思います。 基本的に他所に書かれてある物を集めただけですが紹介したいと思います。主に自分参照用に。 Mailライブラリーを使う TMailには伝統がありますが、使い方が結構難しかった記憶があるので、今のRailsで使っているというMailというライブラリーを使ってみます。 gem install mail でインストールできます。 1. メールを作る メール本文のオブジェクトを作ります。 require 'mail' mail = Mail.new do from 'KitaitiMakoto@example.net' to 'KitaitiMakoto@example.net' subject 'Mail from Mail' body 'There is a body.' end
「つくるための三種の神器」というテーマで続けている「777ブログウェイ」! 9日目となる本日は「Rubyで開発するときに入れておきたい三種のRubyGems」と題して、定番の RubyGems を3つご紹介します。 1. bundler「bundler」は、アプリケーションが依存するgemを管理するツールです。今やgem管理のデファクトスタンダードです。 「gem install hoge」のようにコマンドで gem をインストールしていくと、あれよあれよとグローバルな領域にどんどん色んなgemが…それも複数バージョン混在していきます。そして、いずれは、このアプリケーションで必要なgemはどれだっけ…バージョンはいくつだっけ…といった具合に、どんどん依存関係が分からなくなってきます。ここで活躍するのが「bundler」です。 使い方はいたって簡単。1) bundler のインストールgem
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く