Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Included in: TestCase Defined in: lib/test/unit/assertions.rb, lib/test/unit/assertions.rb, lib/test/unit/assertions.rb Test::Unit::Assertions contains the standard Test::Unit assertions. Assertions is included in Test::Unit::TestCase. To include it in your own code and use its functionality, you simply need to rescue Test::Unit::AssertionFailedError. Additionally you may override add_assertion to
要約 Ruby プログラムのためのプロファイラです。 プロファイラとは効率改善のための調査に用いられるツールのことです。 profile ライブラリは各メソッドの実行時間に関する統計を出力します。 profile はそれ自身がオーバーヘッドになる ためメソッド呼び出しあたりの処理時間がかなり遅くなります。 使い方 以下のように、ruby に -r profile オプションを付けて実行します。 $ ruby -r profile foo.rb foo.rb の実行が終わると標準エラー出力にプロファイルが出力されます。 プロファイルは各メソッドの実行時間に関する統計からなりますが、 この時間には大きく分けて 2 種類あります。 ひとつは、メソッドが呼び出されてから返るまでの時間です。 もうひとつは、全体の時間からそのメソッド内で行なわれた 他の呼び出しに費やしたすべての時間を引いた時間です。
要約 実行トレース出力をとる機能を提供します。 使い方は大きく分けて2通り。 ひとつは以下のようにコマンドラインから Kernel.#require する方法です。 hoge.rb の実行をすべてトレース出力します。 ruby -rtracer hoge.rb もうひとつはソースからrequireする方法です。 require 'tracer' とした後 Tracer.on によりトレース出力を有効にします。 Tracer.off によりトレース出力を無効にします。 また、ブロック付きで Tracer.on を呼び出すと、そのブロック内のみ トレースを出力します。 サンプルコード # 例: 式の評価の中でHogeクラスのメソッドが呼び出される時、トレースする。 # ruby 1.8 では警告がでますが、動作します。 require 'tracer' class Hoge def Hoge.
set_trace_func(proc) -> Proc[permalink][rdoc] Ruby インタプリタのイベントをトレースする Proc オブジェクトとして 指定された proc を登録します。 nil を指定するとトレースがオフになります。 Ruby インタプリタがプログラムを実行する過程で、メソッドの呼び出しや 式の評価などのイベントが発生する度に、以下で説明する6個の引数とともに 登録された Proc オブジェクトを実行します。 標準添付の debug、tracer、 profile はこの組み込み関数を利用して実現されています。 ブロックパラメータの意味 渡す Proc オブジェクトのパラメータは proc{|event, file, line, id, binding, klass| ... } で、意味は以下の通りです。 event 実行のタイプを表す、以下のいずれ
Bundler.with_clean_env と bundle install --gemfile について追記しました bundle exec した環境下でさらに bundle exec したいことがある。 bundle exec rake resque:work で起動した Resque ワーカーのなかで system("bundle exec rake spec") のような外部コマンドを呼び出すとか。ありますよね。ぼくは最近ありました。そしてハマった (そしてググりづらかった) のでこれ以上犠牲者を増やさないためにブログに書く。 bundler は実行時にいくつかの環境変数を定義するが、この場合問題になるのは BUNDLE_GEMFILE と GEM_HOME だ。 BUNDLE_GEMFILE は bundler が参照する Gemfile のパスで、 GEM_HOME は ge
7z ファイルを読み書きする Ruby gem ライブラリである seven_zip_ruby の作成メモその 3 です。 ひとまずこれでメモは終了し、久し振りに mruby の世界へ戻ろうと思います。 rubygems 内のページ GitHub 内のページ RDoc によるドキュメントページ 最後のメモはマルチスレッドや GVL (Global VM Lock) についてです。 概要 SevenZipRuby では、LZMA や BZIP2 圧縮の 7z ファイルを作る場合、デフォルトでマルチスレッドによる圧縮をサポートしています。 今回は、このマルチスレッドへの対応について、メモしておきます。 また rb_thread_call_without_gvl の使い方についても書いておきます。 ただし、(他の記事もそうですが) 今回の記事はあまり正しいかどうか、あまり自信がありません。 Ru
[ 不定期連載「『なるほどUnixプロセス』で学ぶWindows版Rubyの基礎」~はじめに ~ 4章:丁稚な日々 ] [ 5章~7章 ] [ 8章~10章 ] [ 11章~15章 ] [ 16章 ] [ 17章 ] [ 18章 ] [ 19章~おわりに ] ということで usa さんの話題のアレをまとめておく。自分にはちんぷんかんぷんな部分も多いのだけれど、きっといつか多分わかる日もくるかもしれないし。 でも、総じて面白かったし、部分部分では「へえ~」と思いながら読めたので楽しかった。達人さんの本の補遺にという声もあったし、どこかでまとまるとよいよね、とかも思いつつ。いつかの自分のためにもメモ、ということで。 本家のこれをメモしないで、どうする。
CUIの世界は地味な世界です。真っ黒なターミナル画面に単一色の文字列。それが却って落ち着くという向きもありますが、今となってはその地味さは際立っています。 ターミナルで色を使う方法を学ぶことで、新しい世界が開けるかも知れません。 ようこそANSIカラーの世界へ! エスケープシーケンス ターミナルで色を使うためにはエスケープシーケンスというものを利用します。エスケープシーケンスはターミナル上で色を含む特定の制御を実現するための特殊な文字列です。 これによりターミナル上に赤文字で「hello」と出力されます。この”\e[31m” “\e[0m”の部分がエスケープシーケンスです。”\e[31m”はそれ以降を赤文字で出力する制御命令、”\e[0m”はそれ以降を初期状態へリセットする制御命令です。 シーケンス中の数字において、30~37は文字色、40~47は背景色、0~9は文字装飾に割り振られていま
Rubyにおける軽量なデータベースツールキットとして、なかなかお手軽なSequelですが、実際に使うにあたっていくつか悩んだポイントがあったので、備忘録としてその解決法をメモしておきます。 なお、この記事はRuby 1.9.1p378とSequel 3.8.0の組み合わせを対象として書いています。 モデルの定義前にDB接続をしたくない SequelにもActiveRecordパターンに基づいたモデルの仕組みが用意されていますが、「モデルを定義した時点でデータベースへの接続が存在していなければならない」という制約があります。 つまり、 require 'sequel' Sequel.connect('sqlite://test.db') class User < Sequel::Model; end p User.all は動きますが、 require 'sequel' class User
http://samsaffron.com/archive/2013/11/22/demystifying-the-ruby-gc Ruby 2.1のガベージコレクタ (GC) については、「RubyとPythonの違いからガベージコレクタを理解する [その1] [その2] 」で取り上げましたが、今回は、DiscourseのSam SaffronがまとめているRuby 2.0のGCを利用するにあたっての学びを紹介します。 1) Heaps of heaps MRIはヒープにRVALUEとして知られているオブジェクトをもつ。各ヒープは約16KB。RVALUE構造体は、マシンのアーキテクチャによって異なる量のメモリを消費する。x64マシンでは40 byte、x32マシンではサブアーキテクチャー次第で20 byteから24 byte。RVALUEはマジカルなC構造体で、Rubyの様々なローレベル
Ruby の Monitor と ConditionVariable の使い方 なかなかぐぐっても日本語の資料が見つからなかったので自分で動かしてみた。(ぐぐる能力低い) まずThreadの直列化 require "thread" require "monitor" moni = Monitor.new val = 0 Thread.new { 3.times { puts "thread1 start: #{val}" val+=1 sleep 0.1 puts "thread1 end: #{val}" } } Thread.new { 3.times { puts "thread2 start: #{val}" val+=1 sleep 0.1 puts "thread2 end: #{val}" } } sleep 結果は以下の通り。 start > end, start > en
はじめに マルチスレッドとキューについていろいろ書いてきている。とりあえず今回は、Rubyでマルチスレッド対応なQueueを考えてみる。 いろいろなご意見 皆様からいろいろなご意見を頂いたので、記載しておく ・キューの上限が必要なケースがよくわからなかった ・ディープクローンが発生するとパフォーマンスが悪くなる ・lock-freeなアルゴリズムがあるのでは これらについては、今後また書きたい rubyのマルチスレッド対応キュー Rubyでマルチスレッド対応Queueが欲しければ、以下のようにすればいい。 require 'thread' q = Queue.new q.enq( '123' ) q.deq() 既にクラスがあるので、それを利用すればいい... 自分で作る いや、あえて作る必要がないのであるが、作ってみる require 'thread' class MyQueue def
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く