It comes up very often. Should I use alias or alias_method . Let's take a look at them in a bit detail. Usage of alias 1class User 2 3 def full_name 4 puts "Johnnie Walker" 5 end 6 7 alias name full_name 8end 9 10User.new.name #=>Johnnie WalkerCopy
![alias vs alias_method](https://cdn-ak-scissors.b.st-hatena.com/image/square/df7dcf3e382d2d4b018ba79fc6642260e3fa7070/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fdpc4i4bdx%2Fimage%2Fupload%2Fbigbinary_blogs%2Fdefault_blog_image.png)
日本のハワイ、宮崎よりお送りします。yoshinoです。 先日、XMLでレスポンスを返すAPIがあったので、require 'rexml/document'でロードしてXMLをパースしようとすると、cannot load such file -- rexml/documentが起きてしまう事象に遭遇しました。 Ruby 3.0.0 Releasedによれば、Ruby3.0からrexmlとrssはbundled gemになったようです。 このリリース記事では、libraryとして次のような言葉が使われていて、 standard libraries ( stdlib files ) default gems bundled gems default gemsでもbundled gemsでもないgem (その他のgem ) 「具体的に何が違うんだっけ?」となったので、この4つの言葉について調べま
技術部の笹田(ko1)と遠藤(mame)です。クックパッドで Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、ついに Ruby 3.1.0 がリリースされました(Ruby 3.1.0 リリース )。今年も Ruby 3.1 の NEWS.md ファイルの解説をします。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ プロと読み解くRuby 3.0 NEWS - クックパッド開発者ブログ 本記事は新機能を解説することもさることながら、変更が入った背景や苦労な
TL;DR 『環境変数を設定するだけでRuby on Railsサーバが10%高速化する(かもしれない)話』 でRailsを高速化させる素晴らしいハックが紹介されましたが。いまや有効なハックではなくなりました。 TZハックさん、ながい間(2日間)おつかれさまでした。 はじめに アカツキさまで技術顧問をさせていただいている小崎です。 このエントリは『環境変数を設定するだけでRuby on Railsサーバが10%高速化する(かもしれない)話』をRubyコミッタが読んだらこうなったというアンサーソングになっています。合わせてお読みください TZ環境変数でTime.newが10倍近く速くなるのは素晴らしい発見ですが、コミッタとしてはTZなしでも速くなって欲しいなと思いました。だってめんどうだし。 現状分析 まず問題のテストプログラムを軽く分析してみましょう % strace -c ruby .
背景 Rubyの標準ライブラリであるnet/httpを用いたHTTPリクエストって、Net::HTTP.newしたりNet::HTTP::Get.newしたりhttp.start {...}したり色々と実装が面倒臭いなとずっと思っていたんですが、実は1行で書けることを知ったので open-uri との比較も含めて少しまとめてみました。 環境 Ruby 2.6.0 目次 一番シンプルな方法 リクエストヘッダを指定する方法 Basic認証を使う方法 Proxyを挟む方法 open-uri を使う方法 一番シンプルな方法 GET require "net/http" uri = URI.parse("https://jsonplaceholder.typicode.com/todos/1") response = Net::HTTP.get_response(uri) response.code
技術部の笹田(ko1)と遠藤(mame)です。クックパッドで Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 去年の記事「プロと読み解く Ruby 2.6 NEWS ファイル」に続き、今年も本日 12/25 リリース予定の Ruby 2.7 の NEWS ファイルの解説をしてみようと思います。NEWS ファイルとは何か、というのは去年の記事を見て下さい。 実は最近、NEWS ファイルを読みやすくしよう、と例を入れたりしていて、以前のものに比べて読みやすくはなっています(英語だけど)。記事中のコードも、NEWS ファイルから引用しているものがあります。本記事では、変更の解説に加え、執筆者らが開発に携わっているということを活かして、「なぜ変更
2019年4月18日から20日にかけて、福岡国際会議場にて「RubyKaigi 2019」が開催されました。2006年から毎年開催され、今回で13回目を迎えるRubyKaigi。世界中からRubyコミッターを始めとした第一人者が集い、最新の情報や知見を共有します。基調講演「The Year of Concurrency」に登場したのは、Rubyの生みの親であるまつもとゆきひろ氏。Rubyのこれまでとこれからについて語りました。動画はこちら The Year of Concurrency まつもとゆきひろ 氏(以下、まつもと):おはようございます。私は九州の生まれではないんですが、福岡県がRubyのことをたくさん支援してくれているので、だいたい2ヵ月に1回くらいこっちに来ています。なので、だいぶ福岡は近いイメージがあるんですけど。 今日は、Ruby3の話をしようと思ってやってきました。Rub
プロファイラ好きなモニタの前の皆さんこんにちは。@sonots です。この記事では、Ruby コードのどの行がどのぐらいメモリを消費しているか調べる方法を紹介します。 オブジェクトの数を数える Ruby には ObjectSpace というオブジェクトの情報を集めたり操作したりする module があります。 このモジュールの each_object メソッドを使用すると、RubyVM 上の全てのオブジェクトを取り出すことができます。 このメソッドを使って、以下のようなコードを書くと、実行した地点で、RubyVM 中にどのクラスのオブジェクトが何個存在しているのかカウントできたりするわけです。興味深いですね! ObjectSpace.each_object.inject(Hash.new 0) {|h,o| h[o.class]+=1; h } #=> {Class=>241, Strin
Object management on Ruby 2.1 Koichi Sasada Heroku, Inc. ko1@heroku.com 1 Object management on Ruby 2.1 by Koichi Sasada at RubyConf2013 Summary of this talk • Ruby 2.1.0 will be released soon! • 2013/12/25 • Some new features and internal performance improvements • Rewrite object management to improve performance • “gc.c” → 3414 insertions, 1121 deletions • Allocation/Deletion trace mechanism • I
Help us understand the problem. What is going on with this article? Ruby2.1では、RGenGCによりかなりパフォーマンスが改善されている。 また、チューニングパラメータが増えているが、まとまった日本語の解説が無かったので書いてみた。 間違いがある可能性があるので、指摘は歓迎です。 RGenGCとは RGenGC(Restricted Generational Garbage Collection)については、まずはこれを読むべし www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf www.atdot.net/~ko1/activities/2014_rubyconf_ph_pub.pdf Ruby 2.1: RGenGC · computer talk by
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: The Limits of Copy-on-write: How Ruby Allocates Memory 公開日: 2017/08/28 著者: Brandur サイト: https://brandur.org/ Unicorn(またはPumaやEinhorn)を実行していると、誰しもある奇妙な現象に気がつくでしょう。マスタからforkした(複数の)ワーカープロセスのメモリ使用量は開始当初は低いにもかかわらず、しばらくすると親と同じぐらいにまでメモリ量が増加します。大規模な本番インストールだと各ワーカーのサイズが100MB以上まで増加することもあり、やがてメモリはサーバーでもっとも制約の厳しいリソースになってしまい、しかもCPUはアイドル状態のままです。 現代的なOSの仮想メモリ管理システムは、まさにこの状況を防止するために設
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Memory Conscious Programming in Ruby 原文公開日: 2017/10/31 著者: Thomas Leitner サイト: https://gettalong.org/index.html -- メモリ使用量を節約する方法と戦略 Rubyのプログラミングでメモリが大量に消費されるのは当たり前で、避けられないと考えている人がたくさんいますが、メモリ使用量を削減するさまざまな方法や戦略が利用できます。本記事ではその中からいくつかをご紹介いたします。 Rubyの内部を常に意識する TrueClass、FalseClass、NilClass、Integer、Float、Symbol、String、Array、Hash、StructといったRubyの主要なビルトインクラスは、実行パフォーマンスやメモリ使用量
ご連絡:本日 25 日まで続けられた Ruby VM アドベントカレンダーは,世界の終了のため,保存していなかった部分が消えてしまいました.今後,随時復活させていきたいと思います.ご迷惑をおかけ致します. ご連絡:世界の終了によって失われた記憶を随時復旧させていますが,いくつかの記憶のかけらが宇宙的な何かのために欠落してしまっているようです.鋭意,そうさくしていきたいと思っております. 一覧: #1 RubyVM::InstructionSequence の拡張 #2 Kernel#caller_locations の紹介 #3 Kernel#caller_locations の性能 #4 vm_backtrace.c #5 メソッドディスパッチの高速化(RubyConf 2012 の紹介) #6 Thread.async_interrupt_timing の紹介 #7 Thread.as
要約 メモリ断片化は測定や診断が困難ですが、驚くほど簡単に修正できることもあります。マルチスレッドのCRubyプログラム(mallocのスレッド単位メモリアリーナ)におけるメモリ断片化の原因を追ってみましょう。本記事のボリュームは3343語、20分程度です。 単純な設定変更だけで問題を完全に解決できることはめったにありません。 私の顧客のSidekiqプロセスが大量のメモリを消費していたことがありました(1プロセスあたり1 GB程度)。開始当初の各プロセスは300MB程度でしたが、時間の経過とともにじわじわと肥大化してほぼギガバイトレベルにまで達したところで落ち着き始めました。 私は顧客にMALLOC_ARENA_MAXというたった1つの環境変数の変更を依頼しました。「2に設定してください」と。 プロセス再起動後、「じわじわ肥大化」現象はピタリと止みました。プロセスのメモリ使用量は以前の半
事の始まり @kasei_san [1,2,3].each &method(:puts)的な… — ほしの hoshinotsuyoshi (@hoppiestar) 2015, 1月 20 やってみる irb(main):001:0> [1,2,3].each(&method(:puts)) 1 2 3 おお、うごいた!! でもこれ何やってるの? まずは & 演算子について 色んな意味があるけど、今回は以下の用法で使っている xxx(&b) Proc オブジェクトをブロックとして使う。メソッド呼び出し(super・ブロック付き・yield)/ブロック付きメソッド呼び出し を参照。 Rubyで使われる記号の意味(正規表現の複雑な記号は除く) → &演算子を使うと、procオブジェクトをブロック引数の代わりにメソッドに渡せる 次にProcオブジェクトについて ブロックの部分だけを先に定義して
この記事はRuby Advent Calendar 2017 17日目の記事です。 benchmark_driver.gem とは Rubyの処理系を高速化していく上で重要な計測環境を改善するため、Ruby本体のリポジトリにあるbenchmark/driver.rbの後継として作られたベンチマークツールです。普通にRubyのスクリプトのパフォーマンスを比較するのにも使えます。 また、このgemはRuby Association開発助成金2017に採択されたプロジェクトとして開発されています。 何が便利なのか Procの起動を行なわない精度の良い計測ができる 皆さんがベンチマークによく使うのは、標準ライブラリの benchmark.rb か、見易い比較結果を得られる benchmark-ips.gem 等でしょう。 benchmark-ips.gem でよく使われるインターフェースや ben
ここ以前から分からなかったので調べてみました。 基本 class_eval Module で定義されている なので、クラスやモジュールにしか使えない irb(main):009:0> String.respond_to?(:class_eval) true irb(main):011:0> Enumerable.respond_to?(:module_eval) true irb(main):012:0> 'xxx'.respond_to?(:class_eval) false instance_eval Object で定義されている なので、クラス(Class クラスのオブジェクト)にもオブジェクトにも使える irb(main):003:0> String.respond_to?(:instance_eval) true irb(main):004:0> 'a'.respond_to?
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く