Ruby
16.85倍はやい僕のJIT RubyKaigi 2023 お疲れ様でした。非常に面白かったですね。k0kubun さんのRJITについての発表が面白かったので ruby-jit-challange をやりました。無事完走できたので感想記事を書こうと思います(激ウマギャグ) ※: ベンチマークから …
eager_load = true にした上で ↓ のスクリプトを bundle exec rails r する ar_classes = [] ObjectSpace.each_object do |obj| next if obj.class.name.to_s != 'Class' if obj.ancestors.include?(ActiveRecord::Base) && obj != ActiveRecord::Base ar_cl…
オフラインリアルタイムどう書くE28の問題「増築の果ての隣室」の実装例を、Ruby で。 問題 : http://nabetani.sakura.ne.jp/hena/orde28sqst/ 実装リンク集 : https://qiita.com/Nabetani/items/4e3fac2746ca05a93165 イベント : https://yhpg.doorkeeper.j…
TL; DR rubocop の自動修正とかが正しいのか不安になる Ruby なら ISeq に差分があるか調べればよい line number, column number 問題は本体に手をいれておけばある程度乗り越えられる 前提 tech-blog.monotaro.com qiita.com $ ruby -v ruby 2.5.1p57 (2018…
TL; DR アクション抜けたあとは action の callback, rendering, rack middleware の世界 おもそうなものを特定して抜こう bullet は重いぞ 事象 新機能開発中に、大量データ突っ込むか〜と思って突っ込んで開いたらまあ全然返ってこない。 はあ、まあそうい…
問題 : https://cedretaber.github.io/doukaku/e26/ 実装リンク集 : https://qiita.com/Nabetani/items/0bcabb80bdcbc9b2ff52 負けました。 とりあえず当日中に書いたのはこんなの。 github.com 縦n列目については n + 1 列目にあるやつをうごかせば揃うなー…
本日は2本立てでお送りします(特にネタがないので小ネタというか終わってないネタを2つ合わせて記事にしとくか……という記事です。 ast でメソッドコールを探すやつを作り始めました ほしくない?と思って作っています github.com 使い方は何かと言うとある特…
前回に引き続き trick コードを読んだのを書きます、といっても実はこっちのほうが先だったのですが。最近これに関連するものを twitter で教えてもらったので書きます。 前回はこちら hkdnet.hatenablog.com trick とは なんかよくわかんないけどすごい rub…
最近毎週水曜日に trick 読書会というのが開催されておりましてそこで読んだネタをブログ記事にしておくやつです。 先週読んだのはコレ。 trick2015/entry.rb at master · tric/trick2015 · GitHub とりあえずぱっとみ markdown ファイルにしか見えないやつ…
Ruby では v2.6 から RubyVM::AST というのが入ることになりまして、Ruby ランタイム上から AST を取得できるようになります。この話は以前に書いたので省略しますが、ASTがとれるということはASTを解釈して実行することもできるわけです。やるしかないです…
qiita.com オンライン参加で解けました。17:02なので45分くらいでしょうか。 #yhpg とけたー— はくどー (@HKDnet) July 7, 2018 方針としては、たかだか200x200マス = 40000通りなので、スタート地点以外の1点を選んでベクトル作ってベクトル回して伸ばして…
NOTE: v1.3.0 で見てます。 先日 datadog にメトリクスなげてーなと思ったのでライブラリの使い方を見てたのですがあんまり出来がよくなさそうです。気になったのはここ。 dog.batch_metrics do dog.emit_point('test.api.test_metric',10) dog.emit_point('…
hkdnet.hatenablog.com 作ったけど微妙ですわこれ(手のひら返し 使い始めたら、 children にアクセスするのに node_type とかそんなに意識したくないんだよなーということに気づきました いまやろうとしてるのは RubyVM::AST を使って Ruby インタプリタを R…
github.com さっと作りました。 rubygems には登録してません(名前が重複してるかすら調べてないや) 経緯 Ruby 2.6.0preview2 から RubyVM::AST モジュールが使えるようになりました。 Ruby 2.6.0-preview2 Released RubyVM::AST [Experimental] Ruby 2.6 in…
負けました。ほっとんどのテストケースは通るが4つほど通らない、というのがあるというのが時間内の回答です。 が、終わったあとの懇親会でぼーっと考えてたらあそこじゃね?というところに気づいて解けました。そしてその diff がしょーもない。 とりあえず…
だいたい必要ないと思ってますよ、という話。 Rails アプリケーションの開発において rescue_from を追加することが正しいことは少ないと思っています。 rescue_from とは実際にはアクションおよびコントローラをまたいだ begin - rescue ( try - catch )で…
最近自分たちのプロジェクトが依存する gem 関連で何かが起きて対応が必要だったことが続いたのでメモっておく。 rails-html-sanitizer 0.4.0 CVE-2018-3741 対応。これは依存が多いので追うのがちょっとめんどかった。情報としては以下の issue が非常によ…
問題: 辞書順に数を並べる 2018.3.3 実装: github.com とりあえずナイーブに解いたやつ。鍋谷さんは「Rubyでは解けないくらいの計算量にしたつもりだった」と言っていたが案外解けている。 $ ruby -v ruby 2.6.0preview1 (2018-02-24 trunk 62554) [x86_64-d…
はいどうも ! メソッド Ruby における ! ってご存知ですか? Ruby は演算子っぽいようなものもメソッドとして実装されているという話があったりします。 1 + 1 # Integer の + メソッドが呼ばれている class Integer # 上書き def +(other) 42 end end 1 + 1…
お気持ち やめよう 何がおきたか 単純化するとこんな感じのコードがあって爆死した1。 describe Foo do let(:left_foo) { Foo.new(value: 1000, bar: left_bar) } let(:left_bar) { BarMaster.all.sample } let(:right_foo) { Foo.new(value: 100, bar: righ…
yhpg.doorkeeper.jp 負けました。敗因はなんだろ……。方針が定まりきらなかったのが敗因なのかなー。 プレイヤーベースで考えると打ったときに、そのタイミングでアタリを引いたのか、次のターンでアタリを引いたのかの場合分けがめんどくさそうだなーと思い…
RubyKaigi2017に参加してやる気が高まったので最近は ruby/ruby のコードを読むようになってます。 github.com しかしこれがなかなか読むのにコツがいる感じです。 RubyKaigi参加前は “Ruby under a microscope”1 を読んで「Rubyの内側面白い!!!」ってな…
Ruby テスタビリティのために引数をとりたい 普通にプロパティアクセスするような気楽さでアクセスしたい この2つの気持ちがあわさってこういうことをよくしている class Foo attr_reader :baz, :qux def bar @bar ||= build_bar(baz, qux) end def build_ba…
www.amazon.co.jp 別に普段mruby使ってるわけでもないんですが『言語のしくみ』を読んでたら気になったので検証。 本の記載 タイプ3 Ax(25ビット) op(7ビット) 命令タイプ3はオペランド雨を全部1つにして25ビットのオペランド(Ax)として取り扱います。タイプ…
はじめに この記事は『オブジェクト指向設計実践ガイド』の内容をもとにテストコード書いてたらよくわかんなくなったので助けてくれ、という内容です。だれか助けてください。コメントとかRe:記事とかのリアクションあると嬉しいです! 本の内容の抜粋 詳細…
どうするのがいいんでしょうか。 メモリとかパフォーマンスとかそういうのはあんまり気にしない前提です。 以下のサンプルコードでは対象のEnumerableは変数 arr に代入されているものとし、条件Xを満たすかどうかのメソッドは foo?(x) という名前であるとし…