ruby.wasm で作ったページの紹介と ruby.wasm の使い方 スライド内のリンク - 文字化けを復元するよ https://tmtms.net/mojibake/ - シャッフル https://tmtms.net/shuffle.html?list=Ruby,Perl,Pytho…
![Ruby on Browser](https://cdn-ak-scissors.b.st-hatena.com/image/square/fe3ca05506dddfeaf17b7fffd3ed0782795712bd/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F15c0aae6c38743d5a434a3ffed9c35e6%2Fslide_0.jpg%3F30716578)
はじめに Rubyでゲームボーイのエミュレータを作って、rubyboyという名前のgemで公開しました! (スターをいただけると嬉しいです!) この記事 RUBY BOYの実装手順を説明しながら、ハマった点や工夫した点を紹介します。 またRUBY BOYの高速化のためにやったことを紹介します。 なぜゲームボーイのエミュレータをつくったのか なにか個人開発をしたいが、Webサービスは維持費がかかるので無料で維持できるものを作りたい 業務でRubyを使っていることもあり、以前からRubyのgemを作ってみたかった ゲームのエミュレータ開発は「ゴールが明確&動くと楽しい」ので、モチベを維持しやすそう 特にゲームボーイには思い入れがある → Rubyでゲームボーイのエミュレータを作って、gemで公開しよう! エミュレータの概要 以下は、ゲームボーイのアーキテクチャです。 "Game Boy / C
これまで「Rubyは死んだ」、「Railsがオワコン」と定期的に言われて、そういった記事やSNSの書き込みにさまざまな意見が寄せられてきました。が、今年はRuby on Rails復活の兆しが見えてきました。我々paizaもRailsで開発をしているので嬉しい限りです。 【目次】 Ruby on Railsはオワコンと言われている背景 (1)他言語比較での言及数の少なさ (2)言語特性における短所を語られやすい (3)AIやデータサイエンスの普及 いい加減「Ruby on Railsはオワコン」とは言えなくなってきた背景 (1)面接リクエスト数の増加 (2)成熟した言語であり安定性がある (3)エンジニアスキルとして今でも求められている 「オワコン」は抽象的過ぎる表現 Ruby on Railsはオワコンと言われている背景 「Ruby on Railsはオワコン」という言説に関して、あえて
'タピオカ'.gsub(/[\uFF61-\uFF9F]+/) { |str| str.unicode_normalize(:nfkc) } #=> "タピオカ" 説明 'タピオカ'.unicode_normalize と書かずに gsub を介しているのは、Unicode 正規化を適用する文字列を限定し、想定外の置換が起きないようにするため。 半角カタカナの Unicode コードポイントについては、@scivola さんのコメント、および Wikipedia の 半角カナ ≫ Unicode (UTF-8, UTF-16 など) を参考にした。 旧方法 @scivola さんにコメントをいただく前に紹介したいた方法。半角カタカナ以外も Unicode 正規化してしまうため改善が必要だった。 コード 'カンダタ'.gsub(/\p{In_Halfwidth_and_Fullwid
はじめに こんにちは。リアーキテクティングチームの髙橋と申します。 この記事では、アンドパッドの施工管理サービスで利用している Ruby をバージョンアップしたときに発生したメモリ使用量の問題の発生から解決までをお話しします。 Ruby のバージョンアップ(3.0 -> 3.2) アンドパッドでは昨年 2023 に、施工管理サービスで利用している Ruby を 3.0 から 3.2 にバージョンアップしました。 バージョンアップ自体は過去に確立済みの手法(詳しくは過去記事をご参照ください)により、粛々と進められリリースされました。 ところがこのリリースから数日後、とある問題が発覚しました。 メモリ増大問題 アプリケーションのリソース使用状況を監視している SRE チームのメンバーから、以下のような連絡がありました。 Ruby バージョンアップのリリース以降、アプリケーションの利用するメモリ
Ruby 3.3リリース! 新機能解説 Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす 2023年12月25日、Ruby 3.3.0がリリースされ、様々な新機能が加えられました。本連載では実際に携わった皆さんにその新しいRubyをご紹介いただきます。 RubyはJust-In-Time(JIT)コンパイラという機能を備えており、これを有効化すると実行時に機械語を生成して様々な最適化が行なわれ、実行が高速になります。Ruby 3.3にはYJITとRJITという2つのJITコンパイラがあり、デフォルトでは無効になっていますが、それぞれ--yjitと--rjitで有効化できます。 この回では、Ruby 3.3でYJITの性能特性が変化した点や、YJITに新たに追加された便利な機能、またRJITはどのように使うものであるかについて解説します。 YJ
プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。4回目は、Rubyコミュニティが生存するために必要なことについて。前回はこちら。 Rubyコミュニティが生存するためには何が必要か まつもとゆきひろ氏(以下、まつもと):さて、これらの教訓をもとに、Rubyの未来はどうなるかについて考えてみましょう。 教訓をもう1回まとめておきますね。アイデアだけでは、価値がない。単純さは、いつもいいこととは限らない。仕様が大きいことは、いつもい
テクノロジー部門CTO室の笹田(ko1)と遠藤(mame)です。今年の 9 月から STORES 株式会社で Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています(Rubyのこれからを STORES で作る。Rubyコミッター笹田さん、遠藤さんにCTOがきく「Fun」|STORES People )。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、恒例のクリスマスリリースとして、Ruby 3.3.0 がリリースされました(Ruby 3.3.0 リリース)。クックパッド開発者ブログで連載していたように、今年も STORES Product Blog にて Ruby 3.3 の NEWS.md ファイルの解説をします(ちなみに、STORES Advent Calendar
まもなくRuby 3.3.0がリリースされますね。 LramaによるBisonの置き換え、named referencesによるparse.yのリファクタリングなど、parser本体の大きな改善が入ったバージョンになります。 今回はRuby 3.3向けに行った改善のうち「Rubyの抽象構文木のデータ構造の改善」という内部的な改善を紹介します。 問題の背景 RubyのNodeはかつてGCで管理されていました。そのころの名残で全ての種類のNodeがたった一つのRNode構造体を共有しています。 他のNodeへのポインタやメソッド名を表すIDなどはu1, u2, u3というunionで管理しています。 typedef struct RNode { VALUE flags; union { struct RNode *node; ID id; VALUE value; rb_ast_id_tabl
島根県でプログラミング言語「Ruby」に関するイベントを集中的に実施するキャンペーン「Ruby Week」が開催された。そのうちRubyWorld Conferenceを中心に、Rubyの今とこれからを解説する。 島根県で、プログラミング言語「Ruby」の自由さや楽しさ、コミュニティへの貢献という価値観を表現するキャンペーンとして「Ruby Week」が開催された。これまでも開催していた「Ruby biz Grand prix」「RubyWorld Conference」「Ruby Prize」の3イベントを1週間にまとめるとともに、数多くの取り組みを実施。エンジニアやビジネス関係者が数多く島根を訪れる期間となった。 Ruby Weekの中心である3イベントのうち、最も歴史が深いRubyWorld Conferenceは、今回で15回目の開催。国内最大級のビジネスカンファレンスとして、Ru
年月の範囲をDateクラスで扱うのがダルい... 2023年1月、2023年2月...と月単位のラベルを持つグラフを作る 2023年1月号、2023年2月号...と月単位で提供される雑誌を扱う といった、年月を扱うケースでは、ただのDateクラスではちょっと役不足ですよね。例えば以下のようなコードを考えてみます。 require 'date' start_year_month = Date.new(2023, 9, 1) today = Date.today latest_year_month = Date.new(today.year, today.month, 1) # # 期間でループしたいとき # tmp_month = start_year_month while tmp_month <= latest_year_month pp tmp_month.strftime('%Y%m
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Writing Object Shape friendly code in Ruby 原文公開日: 2023/10/01 原著者: Ben Sheldon なお、Kaigi on Rails 2023最後のキーノートスピーチでbyrootさんが発表していた2つ目のバグ(mastodonの#23644)が、ちょうど本記事の内容と関連していました。修正はRails 7.1の#47747で行われました。 参考: A Decade of Rails Bug Fixes by byroot - Kaigi on Rails 2023 Ruby 3.2には、オブジェクトシェイプ(Object Shape)と呼ばれるパフォーマンス最適化が含まれています。これによって、Ruby VMでインスタンス変数(@ivarなどのアットマークで始まる変数)の
プログラミング言語 Ruby30 周年記念イベント 2023 年 2 月 25 日、Ruby 誕生 30 年を記念したイベントが開催されました。 2020 年から流行した新型コロナウィルス感染症の影響で、一時期のイベントはすべてオンラインでの開催が主流となっていました。 本イベントも当初はオンライン形式で予定されていましたが、当日は松江オープンソースラボをメイン会場としてオフラインとオンラインのハイブリッドで開催されました。 開催日 2023-02-25 (土) 13:40 - 17:30 開催場所 松江オープンソースラボ / YouTube 配信 主催 一般財団法人 Ruby アソシエーション / 一般社団法人 日本 Ruby の会 公式ページ プログラミング言語 Ruby30 周年記念イベント 進行 :前田修吾 公式ハッシュタグ #ruby30th 動画 アーカイブ動画 オープニング
require 'mail' # 以下にgmailのアプリパスワードを設定 https://accounts.google.com/IssuedAuthSubTokens?hide_authsub=1 mail_passwd = ENV['GMAIL_PASS'] mail_from = ENV['GMAIL_ADDR'] # fromのアカウントとアプリパスワードを作ったアカウントは揃える必要がある mail_to = ENV['GMAIL_ADDR'] # クリップボードからテキストを取得(Macならpbpaste) clip = `powershell.exe -command "[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8');Get-Clipboard"` lines = clip.s
RubyKaigi 2023で「Make Regexp#match much faster」という発表をします、@makenowjust です。この発表では、ReDoS対策のためにRuby 3.2で導入された、正規表現マッチング (Regexp#match) の メモ化による最適化 について解説します。 さて、発表の中に次のようなスライドがあります。 このスライドはRubyの正規表現がいかに強力かを説明するためのもので、例として「2進数の足し算を計算する正規表現」を示しています。 また、このツイートで使っている正規表現も、実はこの正規表現です。 今回の記事では、この「2進数の足し算を計算する正規表現」の解説をしていきたいと思います。 「2進数の足し算を計算する正規表現」 コピペがしやすいように、スライドの画像ではなくテキストのコードで上の正規表現を出しておきます。 RE = /(?<s>[
「研鑽Rubyプログラミング」を読んだので、その感想を書く。 届いた。研鑽を積むぞ! pic.twitter.com/YuL5WUyjap— tagomoris (@tagomoris) 2023年4月15日 なお本書の訳者である角谷さんに本をお贈りいただきました。が、その前から同書のβ版(電子版)を購入していたため、実際にはほとんどをそちらで読みました。*1 本エントリの言いたいことは、様々な状況に対応してコードを書くには知識・技術の幅と深さが重要で、本書はそのための重要なインプットとなるでしょう、です! 総論: さまざまなRubyの書きかたを学べる さて、この本は初手から対象読者を「中級から上級のRubyプログラマー」としており、本そのものの目的は「まえがき」の先頭にもはっきり書かれています。少し長めに引用します。 本書の目的は、中級から上級のRubyプログラマーが従うべき有用な原則を
はじめに 複数のトラップがあり,苦労したので記録する.以下は 2022/12/29 現在の話. 手順 rbenv および ruby-build のセットアップ 今調べたら Homebrew 利用の方法ばかりヒットするので,念のため書いておく.git pullのエイリアスとしてrbenv_updateを登録しておく.新しい Ruby のバージョンがリリースされたら,rbenv_updateしてからrbenv installする. $ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >>
技術部の笹田(ko1)と遠藤(mame)です。クックパッドで Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 昨日 12/25 に、恒例のクリスマスリリースとして、Ruby 3.2.0 がリリースされました(Ruby 3.2.0 リリース)。今年も Ruby 3.2 の NEWS.md ファイルの解説をします。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ プロと読み解くRuby 3.0 NEWS - クックパッド開発者ブログ プロと読み解く Ruby 3.1 NEWS -
Posted by naruse on 25 Dec 2022 Ruby 3.2.0 が公開されました。Ruby 3.2では多くの機能を追加するとともに、様々な改善が行われています。 WASIベースのWebAssemblyサポート WASIベースのWebAssemblyへのコンパイルがサポートされました。これにより、ブラウザやサーバーレスエッジ環境、その他のWebAssembly/WASI環境でCRubyのバイナリが利用できるようになります。現在この移植版はThread API以外のbasic testとbootstrap testをパスしています。 Background もともとWebAssembly (Wasm)が導入されたのは、プログラムをブラウザの上で安全かつ高速に実行するためでした。しかし、様々な環境で安全かつ効率的にプログラムを実行するという目的は、Webだけでなく一般的なアプ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く