It's Dangerous to GC alone. Take this! IBM's talk on work integrating the OMR GC into Ruby. OMR preview: goo.gl/P3yXuyRead less
こんにちはエンジニアの越川です。 本日、ついにRubyKaigi 2015が始まりましたね マネーフォワードは、Rubyスポンサーとして初日のKeynoteのタイミングでスポンサートークをさせて頂きました。 発表させて頂いた内容は、プレスリリースも出させて頂いております。 http://corp.moneyforward.com/service/20151211_a_matsuda</a/ 技術顧問 松田明氏がマネーフォワードの技術顧問として就任 しました RubyとRailsのコミッターである松田明氏と共に、特にRails観点でマネーフォワードのプロダクト開発を加速させて行きたいと思っています。 すでに日々コードレビューに参加して頂いたり、設計や実装の相談にのって頂いております。1人のエンジニアとして松田明さんと一緒に仕事ができることが純粋に嬉しいです。 フルタイムRubyコミッター 更
技術部の国分 (@k0kubun) です。 先日byebugの高速化を行っていた最中、変更を加えたbyebugを使っていると一定の確率でrubyがSEGVするバグを発見しました。 私はC言語のコードのデバッグの経験はなかったのですが、デバッガの使い方を調べながらSEGVの原因調査を行いパッチを送ったところ無事取り込まれ、最新の高速なbyebugが安全に使えるようになりました。 その際、ruby自体をデバッグするために必要な情報が分散していて大変だったので、まだrubyのデバッグをしたことがないけれどやってみたいという人を対象に、gdbというデバッガを使ったrubyのデバッグの方法を紹介します。 デバッグ用にrubyをビルドする デバッグ時に変数名やソースコードなどの情報を見るためには、最適化オプションをオフにしてデバッグ用にrubyをビルドしておく必要があります。 rubyのデバッグ用ビル
「Matzから、Rubyパフォーマンスのポイントを教えてもらおう!会議」レポート #matz_1031 こんにちは、開発2年目エンジニアの 岩﨑 俊貴 です。 2015.10.31(Sat)13:00-15:30 @渋谷クロスタワー32F CTカンファレンスルームにて 弊社顧問、Rubyの作成者まつもとゆきひろ氏をはじめ、 株式会社Ruby開発 開発室室長 柴田有一郎氏 株式会社Speee サーバサイドスペシャリスト 西岡寛兼氏 にお越しいただき、勉強会を開催いたしました。 ここでは当日のスライドをまとめてご覧いただけます。 当日ご協力いただきました皆様、 また、お越しいただきました皆様、誠にありがとうございました。 Index Rubyのパフォーマンスはどこまで上げられるか。あるいはRubyは本当に遅いのか? (まつもとゆきひろ氏) Benchmarkspec (株式会社Ruby開発 開
RubyからGoの関数をつかう → はやい - Qiita 約20倍はやい!!!!!!すごい!!!!!!!!!!!!!! Go単体での実行に毛が生えた程度になりました!!!!!!!!!!!!!!!!!! もう「Rubyより、ずっとはやい」なんて言わせないぞ!!!!!!!! http://qiita.com/grj_achm/items/679b3f3af2cf377f0f02 def fib(n) return n if n <= 1 fib(n - 1) + fib(n - 2) end puts fib(40) 巷で良く見る fib のコードですね。 $ time ruby fib1.rb 102334155 real 12.692 system 0.031 user 12.651 これを再帰を使わない様に修正すると以下の様になります。 def fib(n) f0, f1
Rubyはたのしい言語です。Rubyを触っているとマニュアルにも書いていない「小さな発見」に遭遇することがよくあります。このような「発見」は、プログラムの質や効率の改善には直結しないかもしれません。いや、むしろチームプログラミングでは妨げになる可能性すらあります。しかしその一方で、言語自体が自分の知らない領域を持ち続けていることが、その対象に対する興味を失わせないための大きな要因である、というのもまた疑いのない事実なのです。つまり「発見」はたのしさに直結しているのです。 このブログにおいて「知って得するRubyのトリビアな記法」というタイトルで、今まで3回記事を書きました。 “知って得する21のRubyのトリビアな記法” “第2弾!知って得する12のRubyのトリビアな記法” “第3弾!知って得する12のRubyのトリビアな記法” これらのトリビアには、ネット検索で見つけたもの、Twitt
Yesterday, we had a face-to-face developer meeting. https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20131001Japan Several committers attended. matz didn't attended, though. (This means this issue is not concluded.) We believe we found a better way to freeze static string literals for less GC pressure. "static string literal" is a string literal without dynamic expression. Currently,
I would like to suggest a phased transition across several releases in Ruby 2.x (the specific version numbers and flag names are just examples): In Ruby 2.3, it is possible to turn on warnings when mutating a String literal (--warn-frozen-strings). the warnings come with the place in the source where the String was originally created In Ruby 2.4 (or 2.5?), the warning is on by default Once it is o
テストの書き方 基本 今までのTest::Unitと変わらないので,classで書く.ただ,昔のTest::Unitとは違い,TestCase毎に呼ばれるstartupやshutdownなどが増えている. require 'test/unit' class TestSample < Test::Unit::TestCase class << self # テスト群の実行前に呼ばれる.変な初期化トリックがいらなくなる def startup p :_startup end # テスト群の実行後に呼ばれる def shutdown p :_shutdown end end # 毎回テスト実行前に呼ばれる def setup p :setup end # テストがpassedになっている場合に,テスト実行後に呼ばれる.テスト後の状態確認とかに使える def cleanup p :cleanup
require 'rubygems' require 'parallel' require 'open-uri' require 'digest/md5' urls = [ 'http://farm4.staticflickr.com/3052/3086132328_e2041be795.jpg', 'http://farm7.staticflickr.com/6053/6312937936_cebaf2feb9.jpg', 'http://farm1.staticflickr.com/54/131841577_0e67642c02.jpg', 'http://farm3.staticflickr.com/2293/2266151759_058e732577.jpg' ] Parallel.each(urls, in_threads: 2) {|url| puts "start downl
あらすじ コマンドラインから引数つきでRubyを実行する時は ruby xxxx.rb ARG1 ARG2とかして、中でARGVをifで条件分岐とかしていたが…何か他にやり方があるのではと調べたらやっぱりあった。optparseを使えばよろしく解析してくれるようだ。 参考サイト optparse::チュートリアル - Rubyリファレンスマニュアル 1. OptionParser オブジェクト opt を生成する。 2. オプションを取り扱うブロックを opt に登録する。 3. opt.parse(ARGV) でコマンドラインを実際に parse する。 基本はこういう事らしい。 サンプルソース とりあえずGistに。色々試してみる。 実行結果 単純なオプション # short option opt.on('-a', 'DESCRIPTION') do |v| puts "v class
There’s something magical about the way that Ruby flows from your fingertips. Perhaps that’s why it was once said that “Ruby will teach you to express your ideas through a computer.” And it’s most likely the reason that Ruby has become such a popular choice for modern web development. Just as in other languages, there are numerous ways to say the same thing in Ruby. I spend a lot of time reading a
Ruby is a dynamic, open-source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. This system is hosting the development of Ruby language and its related projects. You must register your account and activate it via an email before reporting issues. Or login if you have an account. How to report a bug¶ How To Report¶
Mac の Bash (Terminal) でクリップボードを扱うには pbcopy と pbpaste を使用します。 クリップボードはペーストボードとも呼ばれています。 # クリップボードにコピー echo 'Hello, world!' | pbcopy # クリップボードから貼り付け pbpaste # or echo `pbpaste` #=> Hello, world! ※ ' ← シングルクオートと、` ← バッククオート に注意 Ruby でクリップボードを操作するには、下記のように行います。 # クリップボードにコピー IO.popen('pbcopy', 'w') {|f| f << 'Hello, world!'} # クリップボードから貼り付け puts `pbpaste` #=> Hello, world!
Rubyでは比較的簡単にマルチプロセス、マルチスレッドのプログラミングができますが、それでもやや煩雑な書き方になってしまいます。 それらの処理を簡単に書くためのライブラリとしてparallelがオススメです。 ループの前に少し構文を加えるだけで簡単にマルチな処理が実行できます。 # 普通に書くとこんな感じ [1, 2, 3, 4, 5, 6].each do |i| p i end # Parallelを使って処理 Parallel.each([1, 2, 3, 4, 5, 6], in_processes: 6) do |i| p i end このように先頭にParallelを付けるだけです。 またActiveRecordを使用する際は、スレッド・プロセスが生成される度にデータベース接続を行うとデータベース側でエラーとなってしまうので、Parallelに限らずマルチでの処理では以下のよう
前回の投稿から期間が空いてしまいました。実装にはいろいろ不十分なところも多いのですが、きりがないので記事にすることにします。 前回のベンチマークでは、JITを実装したものの、単純なJITコンパイラではMRIのインタープリタによる実行速度に勝てないという結果でした。これに対する対処として、基本的な型解析とメソッドのインライン化の最適化を導入したというのが今回の話題です。 https://github.com/msumimz/ruby/tree/rbjit まずは、ベンチマークの結果から。 $vc10/Release/miniruby examples/perf_while.rb user system total real interprited 12.012000 0.000000 12.012000 ( 12.010687) JIT compiled 1.186000 0.000000
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く