タグ

Rubyに関するwalf443のブックマーク (308)

  • Ruby1.9 のクラスのメタ階層を整理する - Smalltalkのtは小文字です

    [ruby-core:18437] Class as second-generation singleton class を読んだ当初は、特異クラスのクラスが Class ってことでええやん!と思ったのですが、改めて調べてみるとどうやら必ずしもすべての特異クラスが Class に属するわけではないようで(かつ、確認する過程で、id:sumim:20080111:p1 の間違いを見つけてしまったり、id:sumim:20061019:p1 の謎が解けたりもしたので)、この機会に表題の件についていったん図にして自分なりに理解を整理しておくことに。 関連: Ruby1.9 のクラスのメタ階層を整理する 2 - Smalltalkのtは小文字です Ruby1.9 のクラスのメタ階層を整理する 3 - Smalltalkのtは小文字です Ruby で、クラスのメタ階層の情報を得る際の注意として、Ru

    Ruby1.9 のクラスのメタ階層を整理する - Smalltalkのtは小文字です
    walf443
    walf443 2008/09/13
  • RubyでWSSE認証をするためには - ユーウツな雨がふりつづいても雪がハートを曇らせてもドアの中で待っていた君に魔法をかけたいのさ

    どうしてもmixi APIを使ってみたくて、RubyForge: WSSE for Atompub: Project Inforubyforgeにwsseっていうそのままなのが上がってたのでこれをつかってみました。$ gem install wssegemでいれます。== SYNOPSIS: http = Net::HTTP.start(site, 80)response = http.get('/atom', {'X-WSSE' => WSSE::header('name', 'password')}) (code sample of usage)使い方は、header関数にnameとpasswordを渡すだけです。def header(username, password) nonce = Array.new(10){ rand(0x100000000) }.pack('I*') no

    walf443
    walf443 2008/08/27
    wsse
  • Rails on the Run - About Metaprogramming speed

    In a previous article I took an example of bad metaprogramming and I pushed people to think twice before using metaprogramming. My main points were that: you might make your code way slower if you don't know what you are doing readability might drop considerably maintainability can become an issue People left some very good comments about how to write the same module using metaprogramming and keep

    walf443
    walf443 2008/08/25
    メソッド定義のオーバーヘッドをに速くするためにはdefine_methodじゃなくclass_eval(STR)を使いましょうという話。 classxもこうした方がいいのかなぁと思いつつ、やる気がおきないw
  • kmuto’s blog

    View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this

    kmuto’s blog
    walf443
    walf443 2008/08/24
    これは素晴しいまとめ。 classxの速度に関しては普通と比べると遅いのは遅いけど実際に使ってストレスが感じるほど遅くはないくらいにはそこそこ最適化してきたといいたかったのですがちょっとマイナスに伝わったかな
  • OptiFlag: A Ruby Command-Line DSL Parser

    walf443
    walf443 2008/08/22
    ClassX::Commandableとおなじようなことができるらしい
  • 迷惑メール・電話対策本部

    walf443
    walf443 2008/08/19
    QRCode
  • ブロックの self を差し替えたい、という話 - ¬¬日常日記

    Selfish では Self を真似るため(当の目的は delegation を行なうため)にメソッドをオブジェクトとして持つ必要があります。Self のメソッドオブジェクトはコードにおける暗黙の self の差し替えが可能です。でもなぜそうした目的のためにわざわざ Selfish::MethodObject なんて作ったの?それは Ruby 標準の ::Method のインスタンスじゃダメなの?と思った方もおられることでしょう。 ダメです!というのも、Method オブジェクトはそもそも new して簡単に作れるものじゃないという点で苦しいわけです。でもそれだったら、Module#define_method 使えばいいんじゃないのかな? c = Class.new c.instance_eval do define_method(:sum){|x, y| x + y} end c.n

    ブロックの self を差し替えたい、という話 - ¬¬日常日記
    walf443
    walf443 2008/08/18
  • Route 477(2008-08-07)

    ■ [ruby] RubyZipperを実装してみた Zipperについては http://www.kmonos.net/wlog/55.php#_2114051118 を見てほしいのですが、簡単に言うと副作用を使わずに実装された双方向リストみたいな感じです。 例。 # zipperを作る zipper = Zipper.make(1, 2, 3) # 最初は、0番目にカーソルがある zipper.get #=> 1 # nextを呼ぶと、1番目にカーソルが移動する zipper.next.get #=> 2 んで書き換えもできるのですが、「副作用なし」なので、書き換えると丸ごと別のzipperができます。 orig = Zipper.make(1, 2, 3) copy1 = orig.next.set(100) copy2 = orig.next.set(200) copy1.to_

    Route 477(2008-08-07)
    walf443
    walf443 2008/08/10
    bench結果がのってなかったのでbench書いてみた。 自分の環境では配列のサイズが1000を越えてくるとzipperの方が早くなった。 http://gist.github.com/4691
  • EventMachineを使ったクローラの書き方の足がかり

    Photo by pnoeric いま、PhotoShareで使うために、高速なEvent Driven方式のネットワークライブラリ、EventMachineを調べています。 このEventMachine、ほとんどの場合はサーバを作るときに使われていますが、HTTPクライアントの機能も実装されており、実はクローラの様な物を作るときにも利用することができます。 今回はこっちを使いたかったのですが、ググってもほとんど情報が出てこなかったので、Seattle.rbで相談したところ、Aaronさん(RubyKaigi 2008でプレゼンしているのをustで見てコンタクトしました)からサンプルが貰えたので、それを元に、同時接続する様にしてみました。 このコードだけだと役には立ちませんが、情報が少なかったので参考に上げておきます。 require 'rubygems' require 'eventma

    EventMachineを使ったクローラの書き方の足がかり
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    walf443
    walf443 2008/08/06
    'abc' 'def' #=> 'abcdef'になるらしい。golf用のテクニック?
  • DelegateClass に起因するスペックテスト問題 - ¬¬日常日記

    私の大好きな Bacon さん(一応 RSpec クローンですけど、記法が色々違うので注意して下さい)で DelegateClass を使って定義したクラスのオブジェクトの振舞いを定めていて気付きました。RSpec についても同様の状況ですので、DelegateClass を使う場合には注意しましょう。次のような例をご覧下さい。 require "delegate" class A; end class B < DelegateClass(A) def initialize super(A.new) end end describe "class B" do it 'should be kind of B' do B.new.kind_of?(B).should.true B.new.should.kind_of B end end さて、このスペックテストの結果はどうなるでしょうか。B

    DelegateClass に起因するスペックテスト問題 - ¬¬日常日記
    walf443
    walf443 2008/08/03
    奇遇にもこのまえ丁度この問題になやまされたw
  • InfoQ: RubyGemsのまとめ: RubyGems 1.2のリリース、JRuby、より高速なGemリリース機能

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    InfoQ: RubyGemsのまとめ: RubyGems 1.2のリリース、JRuby、より高速なGemリリース機能
    walf443
    walf443 2008/07/16
    少しずつ改善はしてるっぽい
  • Procのソースを取り出すライブラリ:proc_source.rb - Hello, world! - s21g

    以前笹田さんに、procのソースが見たいとお願いしてみたことがあったのですが、 それをRubyコードレベルで実現するライブラリを見つけたので紹介します。 proc_source.rb I wrote this a while ago and it works by extracting a proc's origin file name and line number from its .inspect string and using the source code (which usually does not have to be read from disc) -- it works with procs generated in IRB, eval() calls and regular files. It does not work from ruby -e and stuff

    walf443
    walf443 2008/07/05
    へぇ。
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    walf443
    walf443 2008/07/05
    なるほど
  • Rubyでwebにアクセスするならhttpclientが手軽 - http://rubikitch.com/に移転しました

    http://d.hatena.ne.jp/willnet/20080626/1214487378 httpclientはopen-uriの手軽さと、Net::HTTPの機能を両立させてる使い勝手のいいライブラリだ。クッキーやkeep-aliveもサポートしている。ただし、Ruby 1.9未対応。Ruby 1.9だとParseDateなんてないぞーってエラーがでてしまう。→最新版でRuby 1.9対応 POSTの場合はpost_contentを使う。串、User-Agent、FromヘッダはHTTPClient.newの引数で。 require 'rubygems' require 'httpclient' require 'kconv' hc = HTTPClient.new query = "ruby" html = hc.get_content("http://www.google.

    Rubyでwebにアクセスするならhttpclientが手軽 - http://rubikitch.com/に移転しました
    walf443
    walf443 2008/06/28
    httpclientしらんかった
  • RubyKaigi2008 2nd day, 基調講演:Regional RubyKaigiのご提案 - 角谷HTML化計画(2008-06-22)

    ■1 RubyKaigi2008 2nd day (あとで) Tags: rubykaigi2008 ■2 基調講演:Regional RubyKaigiのご提案 資料 | View | Upload your own http://kakutani.com/articles/regional_rubykaigi.pdf (11MB) 動画 23:27からが私の出番です。持ち時間(5分)を2分ほどブチ抜いてしまった。失格だな。 走り書き カオスすぎるRejectKaigi2008 / RejectRejectKaigi2008 の基調講演で「Regional(地域) RubyKaigi」プロジェクトを提案してみた。なんでこんな馴染みのない感じの命名になっているのかというと、米国のRubyコミュニティの活動を踏まえたものだから: RubyConf → RubyKaigi RejectConf

    walf443
    walf443 2008/06/26
    akasaka.rbはほそぼそと続けてるんだぜ(自分だけだけど。) http://rubyforge.org/projects/akasakarb/
  • WWW::Mechanizeがメモリを食いまくる件について - 一分一秒真剣勝負!

    Rubyで某通販サイトの商品在庫数をファイルにリスト出力するスクリプトを書いたら、なんとクロールが終了し終わった頃にはメモリを400Mも消費していた。pageオブジェクトをループするごとにクリアするとか、何かやらないと駄目なのか?とずっと悩んでいたところ、id:kitamomongaさんのブログを発見。 もしかして履歴って無限? 無限です。しかも @body 変数にファイル内容を丸まんま保持したまま延々メモリ内に積み重なっていきます。メモリの空きが無くなるか、その WWW::Mechanize オブジェクトが終了するまで続きます。 agent.max_history = 1 とすると、動作に必要な最低限の履歴が確保できます。履歴に関する機能を自力で使わないのならこれで充分だと思われます。 なるほど、助かりました。max_historyなんてメソッドがあったのか。これで無駄にメモリを使わなく

    WWW::Mechanizeがメモリを食いまくる件について - 一分一秒真剣勝負!
    walf443
    walf443 2008/06/08
    max_history = 1
  • だいありー

    「第88回カーネル読書会」行きたいけど,どうしても外せない会議が....ううむ. http://pc11.2ch.net/test/read.cgi/tech/1204466626/744 insns.def の話? うう,色々自重します.すんません orz 炊飯器のパーツを着け忘れていた orz 久々に C の switch を書いたら break を書き忘れていた.もうだめだ orz definemethod とかをメソッドに落とそうと作業していたら,iseq をどうやって指定すればいいかわからなくなってしまった.というのも,pubobject で ISeq#to_a とすると,色々とまずいからなんだけれど.iseq が来たときだけ特殊なことをすればよいのか? なんか,今日はもうダメダメだ.今までのダメな部分がどんどん出てくる. なんか,報告書を書かなければならなくなった. 当に今日

    walf443
    walf443 2008/06/08
    なるほどw
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    walf443
    walf443 2008/06/05
    undefにしまくってmethod_missingで見た感じProxyObjectがあるようにみえないようにするかぁ。なるほど
  • Mochaのstub_everythingは強力 - http://rubikitch.com/に移転しました

    Jay Fields' Thoughts: Testing: Mocha's stub_everything method stub_everythingの強力さについて。 stub_everythingメソッドは、どんなメソッドを呼び出してもnilを返すオブジェクトを生成する。なんていうか、幽霊…みたいな、透明人間みたいなオブジェクト。 stub(:meth => retval)同様「stub_everything(:meth => retval)」のように特定のメソッド呼び出しの返り値を設定することもできる。stubだと特定のメソッドを偽装するだけだが、stub_everythingはその他のメソッドは素通りするようになる。 こんなコードを例とする。 class ReservationService # implementation end class MaidService # im

    Mochaのstub_everythingは強力 - http://rubikitch.com/に移転しました