Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

LFAを書いたときの話にあるKernel#loadの第2引数で名前空間的なものを作れるんだけど、loadした先のファイルでrequireされてたらダメなんだよね、という話の続き。ダメなんだよねー、で終わってたんだけどRubyKaigi2023で@shioyamaさんのMultiverse Rubyを聞いて、ここに仲間がいた!!! ってなって、さらにそのあとバーで飲みながらやろうやろうって盛り上がったので、なんか色々考えている。 RubyKaigiの話は別途書くとして、いまはとりあえずこっち。 後半に、こんなものが欲しい、という話、および読んだ人の意見が欲しいということが書いてあるので、このあたりに何か思うところがある人はぜひ読んでみてください。どっちかというと、自分以外のRubyユーザがどう考えているのかを、bugsに出す前にまず知りたいなと思っています。 動機 Rubyにはみなさんご存知
Test which reminded me why I don't really like RSpec | Arkency Blog (日本語訳:Rails: RSpecが好きでないことを思い出したテスト(翻訳)|TechRacho by BPS株式会社) を見ての感想。 元のコードのイマイチなところは 4 つあって、 params を before で書き換えている *1 it "will succeed" の文言 it { is_expected.to be_success } と expect(result.success?).to eq(true) が混ざっている let が不思議な順序で連発されていて事前条件を読み解けない すべて、これによって何をテストしているのかが分かりづらくなっているという問題を引き起こす。 params を before で書き換えている let(:pa
■ Ruby の中にある解決できると嬉しい人が多分多いタフな問題 Ruby 開発チーム(コアチーム)には壺と呼ばれる、「これができるととても嬉しい」というネタを放り込む hackmd のページがあります。issue などにして作ったところで誰かが進めるわけでもないし、project にしても epic すぎるが、いつかは何かやりたいという大きさのものを思いついたらすぐに入れています。 今回は Ruby Advent Calendar 2022 の14日目の記事として、この壺の中から熟成された夢をいくつか取り出してご紹介します。 ライブラリのRactor 対応 Ruby 3.0 の目玉として入った Ractor ですが、Ruby のライブラリが Ractor で動くかというとまだわからない、むしろ動かないだろう、というステータスです。RubyGems や Bundler でネットワークアクセ
This cheatsheet can help you get started with ruby/debug as well as use it in your daily development. It's not an exhausting list of its features or commands, so please go through its document as well. If you're migrating from byebug, I also recommend checking my byebug to ruby/debug migration guide. I also shared how to build a powerful debugging workflow with it in my talk: ruby/debug - The best
こんにちは、ydahです。 2021年の12月から株式会社アンドパッドでソフトウェアエンジニアとしてANDPAD検査の開発に携わっています。 昨年、息子が生まれてから夜更かしすることがなくなり、早朝に起きては軽くジョギングをしてから、OSSプログラミングにいそしむのが朝のルーティンになった今日このごろです。 さて本稿では、Rubyの例外処理を眺めていたらrescueがグローバルなオブジェクトを破壊するケースがあったんですよという話と、その対策について話したいと思います。 発生していたケースについて 突然ではありますが以下のコードをご覧ください。 この中にグローバルなオブジェクトを壊してしまうrescueがいます。 # 1 begin raise 'foo' rescue ArgumentError end # 2 begin raise 'foo' rescue => ArgumentEr
Ruby Gems で Rust が Native として利用可能になった のでとりあえず UUIDv4 を生成してみた。 リポジトリ 準備 Ruby 側の gem に Rust を利用する準備として rb_sys と rake-compiler を利用します。この二つの gem は native compile するためにインストールしておきます。 Rust 側から Ruby へ関数を公開するために rb-sys と magnus を利用します。 gem install とりあえず cargo で Rust のパッケージを作って Rust を書いてみます。 > bundle gem rust_uuid --mit --ext rust_uuid # --ext を指定してnative build する gem を作成 > cd rust_uuid # 作成した gem のディレクトリへ移
2022-03-03-WAR.md https://zverok.space/blog/2022-03-03-WAR.html 翻訳 ハリコフのRubyistからRubyコミュニティへのお願い 2022年3月3日 やぁ、僕はVictor Shepelev。ウクライナのハリコフに住んでいて、TwitterやGitHubでは@zverokというIDで活動している。 僕がRubyを書き始めたのは2003年からで、いくつかのライブラリやRuby Changelogのメンテナだ。国際的なカンファレンスや/r/rubyなんかで君たちと会ったことがあるかも知れない。今年、僕はRubyコミッターに申請して、嬉しいことに承認された。僕が取り組んでいるのは(いくつかの小さな機能追加と共に)Rubyドキュメントの改善だ。僕のRubyに関する作業の一覧はここで確認できる。 東ヨーロッパ出身であることや、短気な性分
Posted by naruse on 25 Dec 2021 Ruby 3.1系初のリリースである、Ruby 3.1.0 が公開されました。Ruby 3.1は3.0と高い互換性を保ちながら、多くの機能を追加しています。 YJIT: New experimental in-process JIT compiler Ruby 3.1では、Shopifyが開発した新しいプロセス内JITコンパイラであるYJITをマージしました。 2018年のRuby 2.6でMJITをマージして以来、そのパフォーマンスは年々改善され、去年にはRuby3x3を無事達成しました。比較的大規模なOptcarrotベンチマークでは輝かしい高速化を達成したMJITですが、一方で現実の業務アプリケーションの性能はこれまで改善出来ていませんでした。 近年Shopifyは彼らのRailsアプリケーションを高速化するため、Rub
This version of Rails has been years in the conceptual making. It’s the fulfillment of a vision to present a truly full-stack approach to web development that tackles both the front- and back-end challenges with equal vigor. An omakase menu that includes everything from the aperitif to the dessert. This vision wasn’t possible even just a few years ago. We simply didn’t have the core technologies i
ルビービル(仮) 第1期住民募集のご案内.md tl;dr 高円寺の南のほうのあたりで、ちょっとした新築共同住宅プロジェクトを立ち上げてみたいと思っています。つきましては、このプロジェクトの趣旨とノリに賛同してくださって居住してくださる方をふわっと募集します。 My New Gear... 最近、高円寺の南のほうのあたりに築古賃貸物件を買ってみました。物件概要はざっくり以下のような感じです。 立地: 丸の内線東高円寺駅徒歩5分、JR中央線中野駅徒歩12分(Google調べ) 地積: 110平米と120平米の間ぐらい 建物: 築およそ30年の2階建て木造アパートを賃貸運用中 この建物には問題がある! しかし、いま建っているアパート自体はそんなに気に入って買ったわけではなくて、以下のような問題を抱えています。前の持ち主もそのあたりが気に入ってなくて手放したんだろうと思われます。 建物の床面積が
混乱しやすいが、SFTP は SSH を使って暗号化・認証を行うプロトコルで FTPS とは別。 HTTP のセキュア版が HTTPS FTP のセキュア版が FTPS と覚えると良いだろう。 サンプルコード# FTP の SaaS である BrickFTP にアカウントを作った。 Net::FTP で接続可能。以下は FTPS 接続し、PWD を発行する Ruby コード。password はマスクしている。 #!/usr/bin/env ruby require 'net/ftp' ftps = Net::FTP.new( 'masutaka.brickftp.com', ssl: true, username: '[email protected]', password: '********', debug_mode: true, ) puts ftps.pwd 結果。 connec
So why is JRuby slow in these examples? It turns out that the answer is complicated. What Is JRuby? I was very happy to discover the JRuby project, my favorite programming language running on what’s probably the best virtual machine in the world. - Peter Lind JRuby is an alternative Ruby interpreter that runs on the Java Virtual Machine (JVM). MRI Ruby, also known as CRuby, is written in C and is
Posted by naruse on 25 Dec 2020 Ruby 3.0系初のリリースである、Ruby 3.0.0 が公開されました。 これまで、Ruby3に向けてパフォーマンスの改善、並行処理、静的解析という3つの目標を掲げて、活発に開発が行われてきました。特にパフォーマンスの改善については、Ruby 3x3 として「Ruby3はRuby2の3倍速くする」ことを目指してきました。 Ruby 3.0では開発の指標の一つとしてきたOptcarrotベンチマークで3倍を達成するとともに、以下のような取り組みが行われています。 benchmark-driver.github.io/hardware.html に書かれている環境で計測されました。 8c510e4095 が Ruby 3.0 として使われています。環境やベンチマークによっては3倍にならないかもしれません。 Ruby 3 では
Ruby コミッターの村田です。Ruby 3.0 に組み込まれる実験的な新機能を作ったので解説します。 新機能は MemoryView と名付けられました。これは C などで書かれる拡張ライブラリ向けの機能です。メモリ上の、型が均一で同一サイズの要素から構成される配列 (e.g. 行列や画像など) を、複数の拡張ライブラリ間でコピーレスで共有するために必要な仕組みを提供します。 MemoryView が導入された背景 多次元数値配列が重要な役割を持つ時代になった 深層学習やデータサイエンスの流行にあわせて、メモリ上で大きなサイズの多次元数値配列データを処理する事例が増加しています。このような数値配列データに対する処理は、複数のライブラリの機能を組み合わせて実現されます。この分野でよく使われる Python では、データ構造を numpy と pandas が提供し、機械学習アルゴリズムを
Ruby 3.0 Advent Calendar 2020 13日目の記事になります。 昨日は『銀座Rails#26で Ruby 3.0 の話をした』です。 今日は Ruby 3.0 で新しく Hash クラスに追加・変更される2つのメソッドの紹介です。 任意のキーの要素を取り除く Hash#except メソッド ActiveSupport でおなじみの Hash#except がついに Ruby 3.0 で標準ライブラリに追加されました。 Hash#except は引数のキーを Hash から取り除くメソッドです。 hash = { id: 1, name: "homu", age: 14 } # 引数のキーを取り除く pp hash.except(:id, :age) # => {:name=>"homu"} これが欲しかった方も多いのではないでしょうか。 わたしもちょうど以下のよう
計測方法は、(10**6).times{ }のような最小限のコードです。 実際、制限時間が2秒だとして、10の7乗台前後から、想定解法でも厳しくなってくる印象です。 それ以前の1,000,000回(10の6乗)で2秒超えてTLEするなら、自分の書いたアルゴリズムを疑いましょう。 今のC++は10の7乗だと「余裕をもって間に合う」レベルらしいので、C++と比べるとRubyは10倍遅い感じです。 競技プログラミングでは、問題に与えられた要素数も 方針・アルゴリズムを考えるヒントになるので、このあたりの感覚はもっておくとよさそうです。 高速化手法のまとめ・見方 先に高速化のまとめがあった方が親切かと思い、簡単にまとめておきます。 (まとめの方にしか書いてないのもあります……) 本記事は、アルゴリズムの話も少し混じっていますが、アルゴリズムはRubyに限らないので、ほぼ触れてません。 「アルゴリズ
Matzことまつもとゆきひろといえばプログラミング言語Rubyの作者なのだが、技術的にはともかく政治的にはツイッターを見ていてとてもつらい。 「高度プロフェッショナル制度」について 高度なスキルを持つと自負し、高い裁量が欲しい私のような労働者を野党が目の敵にしてることはよく分かった。実に残念だ。— Yukihiro Matsumoto (@yukihiro_matz) March 1, 2018 「定額働かせ放題」とも呼ばれ、専門性も裁量性も低い業種への拡大が懸念される「高度プロフェッショナル制度」について、問題点を理解せず反対する野党を揶揄。 「IT 業界を苦しめたいか、生産性を高めるのを阻害したい勢力」について 軽減税率といい、改元といい、サマータイムといい、IT 業界を苦しめたいか、生産性を高めるのを阻害したい勢力が政治をコントロールしている陰謀論を信じたくなるな。— Yukihir
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く