Search Social Bookmarks Services from s21g twpro(ツイプロ) Twitterプロフィールを快適検索 地価2009 土地の値段を調べてみよう MyRestaurant 自分だけのレストラン手帳 Formula ブログに数式を埋め込める数式コミュニティ
ここ以前から分からなかったので調べてみました。 基本 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?
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Akasaka.rbのIRCでRubyのヒアドキュメントの話が盛り上がりましたので、ちょっとだけご紹介します。Rubyでは、PerlやPythonといったスクリプト言語と同じように、ヒアドキュメントが利用できます。例えば、次のようなケースです。 hello = <<-EOS Hello, World! EOS puts hello.reverse 上記の例では、一時変数としてhello変数を利用していますが、この一時変数をなくすこともできます。EOSの直後に閉じ括弧を置くとエラーになるので注意しましょう。 (<<-EOS Hello, World! EOS ).reverse さらに、おそらくPerlの文法からだとおもうのですが、次のような書き方もできます。 (<<-EOS).reverse Hello, World! EOS Rubyって本当にキモいですね!!
11 Feb 2007 An incredibly useful technique when using Ruby is to auto-load at start-up a custom library written for exactly that purpose. This is easy to accomplish with a couple of environment variables, but I see very little discussion on the subject. Thus, I’ve written a nice summary of how to go about setting this up. The secret to running code at start-up is RUBYOPT. You’ve probably seen this
Classes in Python allow developers to create reusable components for their code, making it easier to maintain and modify. In this article, we will explore the basics of classes in Python and how to use them effectively in your projects. Basic Principles of Object-Oriented Programming Object-oriented programming (OOP) is a programming paradigm that uses objects and their interactions to design appl
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
分散GCのかなりいいかげんな実装の提案*1。 定期的に自分が知っているDRbObjectにメソッド(respond_to?)を投げる係を置くですよ。 require 'drb/drb' require 'thread' class DRbPing def initialize(timeout=300) @timeout = timeout @queue = Queue.new @keeper = keeper @knocker = knocker end def keeper Thread.new do loop do en_q sleep(@timeout) end end end def knocker Thread.new do loop do begin @queue.pop.respond_to? :to_a rescue end end end end def en_q Obj
■ [CodeGolf] 99 Bottles Of Beer 突然ひらめいていままでとはまったく違う方法で177バイトまできた。 いきなりRubyのトップだ。ヒントとしてはループは使わずに変数は1個だけ。 さすがにもう小さくなりそうもないので次の Numeric Diamonds へ進もう。 ■ [Ruby] rakeがエラー CodeGolfのチェックが面倒なったのでMakefileでも書こうと思った。 いや、今ならRakeかと task :default do sh 'ruby 99-bottles-of-beer.rb | diff -U1 99-bottles-of-beer -' end のような簡単なRakefileを作ってrakeを実行してみるも、なぜかエラー。 --traceオプションで実行してみると wrong number of arguments (3 for 2)
dRuby で 1プロセスで複数サービスの提供 こっちが本題だったか。 DRb::DRbServerをnewすれば一つのプロセスで複数のDRbServerを持てます。それぞれに待ち受けスレッドが生成されます。 サーバがリモートからのメソッドを処理するコンテキスト内(スレッド内)でDRbObjectを生成するとき、そのメソッドを担当しているDRbServerへの参照が生成されます。あるコンテキストにおいて、そのきっかけとなったリモートからの呼び出しを受け付けたDRbServerがカレントサーバです。きっかけがリモートからの呼び出しでない場合には、プライマリサーバがカレントサーバとなります。プライマリサーバは一番最初に生成されたDRbServer、あるいはDRb.start_serviceで生成したDRbServerです。 こういうことは通常は意識しなくて良いように設計されていますが、こういう
Eric Hodel | Wed, 13 Sep 2006 07:44:00 GMT Posted in Rails, Ruby Now that Ruby 1.8.5 is out setting process limits is easier than ever before! We used to use a small shell script run from cron to kill processes that got too big for their britches. Unfortunately this was difficult to do both well and simply (we chose simply). Now, in Ruby 1.8.5, we have Process::setrlimit: $ ri Process::setrlimit
_ to_jsonのSafari対策 この間のコードだと、Safariで文字化けしてしまった。 やっぱり\u記法を使わないといけないようだ。 class String JSON_ESCAPED = { "\010" => '\b', "\f" => '\f', "\n" => '\n', "\r" => '\r', "\t" => '\t', '"' => '\"', '\\' => '\\\\' } def to_json return '"' + gsub(/[\010\f\n\r\t"\\]/) { |s| JSON_ESCAPED[s] }.gsub(/([\xC0-\xDF][\x80-\xBF]| [\xE0-\xEF][\x80-\xBF]{2}| [\xF0-\xF7][\x80-\xBF]{3})+/ux) { |s| s.unpack("U*").pack("n*").
I felt my application slow yesterday and profiled it. RJS is very useful, but it seems to be slow. Thanks to Charlies's ruby-prof (it doesn't belongs to me any more and has fascinating call graph support), I found the bottleneck. It was Object#to_json. The original code is here: define_encoder String do |string| returning value = '"' do string.each_char do |char| value << case when char == "\010":
今、仕事でマルチスレッドな Ruby アプリケーションを書いている。 そのときにリファクタリングの過程で こんなのあったら便利じゃないのかなぁってのを 思いついたのでココに書いてみる。 とりあえず、普通に書くとマルチスレッドなアプリの イディオムは以下のようになると思う。 threads = [] 10.times{ threads << Thread.new{ puts "hello" } } threads.each{ |th| th.join } こいつをメソッドとして、抽出してみた。 def do_multi_threads(num, &block) threads = [] num.times{ threads << Thread.new{ block.call } } threads.each{ |th| th.join } end # メインコードはすごくシンプルになる。 d
キューから配列へ、 配列からキューに気軽に変換できるようにしてる。 class Array def to_queue self.inject( Queue.new ) { |q, item| q << item; q } end end class Queue def to_array ary = [] until self.empty? ary << self.pop end; ary end end 文字列から 便利なPathname オブジェクト生成とか、 文字列を Pathname#cleanpath したりとか。 require 'pathname' class String def to_path Pathname.new(self) end def cleanpath to_path.cleanpath.to_s end def realpath to_path.realpa
_ String#succ 現実逃避。 あぁっ、String#succ が 引数回数分 succ してくれたら! [ξ;゜⊿゜)ξ { 遅レス。 - String#succより引用] メソッド定義せずにすませるならこんなんかなあ。 s = "a" n = 10 p (1..n).inject(s) {|x,| x.succ} injectよりしっくりくるメソッドは思いつかず。 何かありそうな気がするけど。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く