タグ

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

  • rake specの実行時間を短くするための簡単なお仕事です ※ただし、(何か)に限る - moroの日記

    TDDで開発している人の目下の悩みはSlow test問題、すなわちテストの実行時間がかかりすぎて辛い、という問題です。 が、ふと思うところがあって、次のようなタスクを定義していたら、なんということでしょう、劇的に早くなったではありませんか。 namespace :spec do spec_prereq = Array(File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop) desc "faster version of rake spec, but why?" task :faster => spec_prereq do %w[spec:models spec:controllers spec:views spec:helpers spec:lib].each do

    rake specの実行時間を短くするための簡単なお仕事です ※ただし、(何か)に限る - moroの日記
    walf443
    walf443 2009/12/23
    全部同じプロセスで実行してるからメモリ食いすぎてswap読んじゃってるとかじゃないかなー
  • enumerabler.rb: Enumerable の遅延評価版メソッドライブラリ - まめめも

    たとえば整数の配列から、条件に合う要素のうち、最初に現れる 10 個だけ拾いたいとき、どうしますか? ary.select {|x| x.even? }.take(10) ↑これは非常に明瞭なプログラムです。しかし select は、最初の 10 個だけでなく全要素をチェックしてしまうため、ary が大きいと無駄にループします。また、select の戻り値となる中間配列も無駄です。 ret = [] ary.each do |x| ret << x if x.even? break if ret.size == 10 end ↑これなら 10 個見つかった時点で終了してくれるし、無駄な配列確保もありません。しかし非常に強引で原始的で煩雑なプログラムであり、Ruby 1.9 の時代を迎えた新人類である我々には、可読性やメンテナンス性に問題があると言わざるを得ない。一言で言うと品がないのです。

    enumerabler.rb: Enumerable の遅延評価版メソッドライブラリ - まめめも
    walf443
    walf443 2009/11/12
  • Ruby高速化計画のその後。(ループ内で定数化するマクロの除去) - CanI's diary

    進渉報告。 セキュリティ&プログラミングキャンプ2009で、自分はひたすらに、例のBignumと同様の問題の解決に勤しんでいました。 件の問題は、RBIGNUM_PTRだとか、RBIGNUM_LENだとかいうマクロが原因で起こってました。 (Rubyでフィボナッチ数列の演算が遅い問題についてのその後の考察。@解決編 - CanI’s Diary) で、実は、これらのマクロに似たマクロが、他にもruby.hに定義されています。 Array RARRAY_PTR RARRAY_LEN String RSTRING_PTR RSTRING_LEN Struct RSTRUCT_PTR RSTRUCT_LEN Rubyでそれぞれの型を表す構造体に、型の中身が埋め込まれる(省メモリのため)可能性があるものに、これらのマクロが用意されているようです。 というわけで、こいつらをループの外に出してやったら

    Ruby高速化計画のその後。(ループ内で定数化するマクロの除去) - CanI's diary
    walf443
    walf443 2009/09/29
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    walf443
    walf443 2009/09/22
    pretty_generate
  • Ruby1.9で length派 vs size派 の闘いは決着してたのであった - きみのハートを8ビットキャスト

    (8/18 8:57 一部間違いがありましたので修正しました。下の方。) (8/18:18:00 エントリ自体がネタなんですよと明記しました。下の方) StringやらArrayやらHashやらのインスタンスに lengthメソッドとsizeメソッドがありますが全く同じ動作をするので 個々人が好みで使い分けていました。 私は文字数が短いので、なんとなくsizeを使っていました。 この度、私はlength派に寝返りました。 と言うのは Ruby1.9系では組み込みクラス、Array、String、Hashにおいて lengthの方がsizeより、ものすごくわずかに速いためです。 いまのところですけど。 あと、lengthメソッドをオーバーライドしてない事も条件です。 lengthとsizeの実効時間を測定してみました。 適当なArrayとStringとHashのオブジェクトを作って leng

    Ruby1.9で length派 vs size派 の闘いは決着してたのであった - きみのハートを8ビットキャスト
    walf443
    walf443 2009/08/20
  • qwik.jp - qwik リソースおよび情報

    This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.

    walf443
    walf443 2009/08/17
  • edo cabinet – rubykaigi2009

    Here are my slides for the “edo cabinet” talk at the RubyKaigi2009. I presented about Ruby-FFI, Tokyo Cabinet|Tyrant and then rufus-tokyo and Rufus::Edo. These are just slides, here is the english transcript of the actual talk. Many thanks to the RubyKaigi team for organizing this great event ! Special kudos to Leonard Chin for the on-the-fly translations, throughout the 3 days. You’ll find videos

    edo cabinet – rubykaigi2009
  • やる夫がFiberパフォーマンス測定してみたそうです その1 - サイログ。

    (はてなの投稿制限らって途中までしか公開できません。あとは後日) ____ /      \ /  ─    ─\    最近、Ruby1.9.1にFiberが追加されたけど、 /    (●)  (●) \    「遅い」「遅い」ってよく言われるお |       (__人__)    | ________ \      ` ⌒´   ,/ | |          | ノ           \ | |          | /´                 | |          | |    l                | |          | ヽ    -一ー_~、⌒)^),-、   | |_________| ヽ ____,ノγ⌒ヽ)ニニ- ̄   | |  |     ____ /      \ /  ─    ─\      でも、それは当なのだろうか・・

    やる夫がFiberパフォーマンス測定してみたそうです その1 - サイログ。
    walf443
    walf443 2009/07/30
    fiberは遅いよと。
  • jrubytips's Wiki - 逆引きRuby-FFI

    RubiniusやRuby-FFIとも互換性のあるJRuby-FFIについてのTipsです。FFIはRubyスクリプトから外部の動的ライブラリ(DLLやso)を呼び出す仕組みです。動的ライブラリを呼び出すためのRuby拡張ライブラリをC言語で書かなくとも、Rubyスクリプトから直接動的ライブラリを利用できるのがメリットです。 Rubinius … http://rubini.us/ Ruby FFI … http://kenai.com/projects/ruby-ffi それぞれの環境でも共通だと思われますが、JRuby trunk上のJRuby-FFIでしか検証していません。JRubyでは内部的にJNA(Java Native Access)を利用してRuby-FFI機能を実現しています。 Ruby-FFIはRubyに対して以下の機能を提供します。 外部ライブラリのロード 外部ライブラ

  • GMP で Bignum を高速化するパッチ - まめめも

    Ruby の Bignum は自力で多倍長整数演算を行っていますが、あまり速くないです。そこで、GMP を使うようにするパッチを書いてみました。GMP (The GNU MP Bignum Library) は gcc なんかも使ってるらしい多倍長整数ライブラリ *1 で、そこそこチューニングされているようです。 http://dame.dyndns.org/misc/misc/ruby-1.9.1-p0-gmp-bignum.patch 以前多倍長演算の速度比較をしたときに使った題材で、パッチ前とパッチ後の速度を比較してみました。 5 の 1000000 乗を計算する時間: 5.887 秒 → 0.075 秒 5 の 1000000 乗を計算して 10 進数表示する時間: 36.485 秒 → 0.939 秒 円周率を 10000 桁計算する時間: 3.885 秒 → 1.022 秒 い

    GMP で Bignum を高速化するパッチ - まめめも
    walf443
    walf443 2009/07/15
  • ARAKI notes - debian ruby at 横浜

    This is ARAKI's daily notes. 実ノ商人ハ先モ立チ我モ立ツコトヲ思フナリ 管理/ カテゴリ/ 日記(全部): 技術系: ay先生のオーガナイズにより,debian ruby kaigiが横浜でおこなわれた.コーヒーと,お菓子ごちそうさまでした.twitterでも書いてはみたのだが自分なりのメモをしてみる.ruby1.9のリリースマネージャのyuguiさんからのお話rubyではオフィシャルサポートを表明しているDistributionに対してはsecurity fixのnoticeをするらしい.現状ではmacosxくらいだが,debianも追加されることに.rubyにはまだJPCERTやJVNへの道がないらしい.自分でもしらべてみるか..Ruby Enterprise Edition (REE)とGCとスレッドの話REEはGCを変更したおかげで,script lan

  • Debian Ruby 1.9 会議に参加してきた - diary of a madman

    Debian Ruby 1.9 会議という集まりに参加してきた。(参考: http://arika.org/diary/2009/06/04/DebianRuby19Kaigi) Debian、Ruby、ともに仕事でもプライベート環境でも頼っている都合上、今後のパッケージングがどうなるかとか、RubyGems と Debian Package の共存(あるいは連携)がどうなりそうなのかに興味があったので、参加してみた次第。 以下、会議中のメモのまとめ。事実誤認があったらごめんなさい。 lenny に ruby1.9 が入ってしまったのは事故 入れるつもりは無かったが、依存関係の都合で抜けなくなった。 (やまだあきらさん) 仕様が確定する前のバージョンなので使って欲しくない。(yugui さん) sid に 1.9.1 が入らない理由 $LOAD_PATH に /usr/lib/ruby/1

    Debian Ruby 1.9 会議に参加してきた - diary of a madman
  • Rack::Utils#escapeがRuby1.9.1だと何かアレな件 : As Sloth As Possible

    sinatraとActiveRecordとERBでBBS作ったのでソースを公開してみる - だるろぐに触発されて俺もBBSを作ってみようと、ここ数日Sinatraをいじっていた。Sinatraさんは最近バージョンアップしてた気がするけど、どうやらちゃんとRuby1.9.1でも動くようだ。素敵。 で、順調に行くかと思ったんだけど、どうにも書き込みのspecが通らない。そこで初めて、POSTやGETでパラメータにマルチバイトの文字列が入ってると何かおかしいことに気付いた。 最初に書いたspecとアプリ側のコードを抜粋。 # coding: utf-8 require 'rubygems' require 'rack/test' require 'routes.rb' #sinatraアプリ set :environment, :test include Rack::Test::Methods

    Rack::Utils#escapeがRuby1.9.1だと何かアレな件 : As Sloth As Possible
    walf443
    walf443 2009/06/25
    packでencoding情報が落ちるのは、しょうがないけどハマるよね。
  • ','.join() がなぜキモイのか - methaneのブログ

    Ruby厨とPython厨が平行線の議論をしていたので、まとめてみる。 オブジェクト指向的にキモイ? str.join() 処理での登場人物は2人いる。連結文字(区切り文字=separator)、連結される文字列の列だ。 この二つを比べると、「連結される文字列の列」が情報的に重要な場合がほとんどだろう。それを元に文字列の列が主役で連結文字はオマケと考えると、「joinが主役でない連結文字側のメソッドになる何てキモチワルイ」となる。 でも、別の視点で「連結する側とされる側」というように分類すると、「区切り文字 join 連結される文字」が素直な能動態で、「連結される文字列 (is) join(ed by) 連結される文字」だと無理やりな受動態になるので、''.join() の方が素直だ。 Rubyの場合は「配列が要素をjoinする」と配列が主体となっているので、後者の考え方はしにくい。なので

    ','.join() がなぜキモイのか - methaneのブログ
  • Rubyのweakref.rbはすごーくいけてない

    標準添付のweakref.rbなんですけどね。こいつえらいメモリいなんですわ。 zsh % ruby -e' require "weakref" p ObjectSpace.count_objects x = WeakRef.new(Object.new) p ObjectSpace.count_objects' {:TOTAL=>13471, :FREE=>286, :T_OBJECT=>7, :T_CLASS=>493, :T_MODULE=>18, :T_FLOAT=>5, :T_STRING=>3036, :T_REGEXP=>12, :T_ARRAY=>605, :T_HASH=>9, :T_BIGNUM=>2, :T_FILE=>6, :T_DATA=>256, :T_MATCH=>1, :T_COMPLEX=>1, :T_NODE=>8715, :T_ICLASS=>19}

    Rubyのweakref.rbはすごーくいけてない
    walf443
    walf443 2009/04/12
    ObjectSpace.count_objects
  • netswitch! | DoCoMoだけCSSの外部参照ができない件など - CSSのインライン化

    僕はあんまり携帯HTMLをいじらないけど、タイトルのような問題があるという話はよく聞く。 また、CSSにはスコープの概念がないので、TinyMCEなどのWYSIWYGエディタを使っていると、Wordなどから<style>タグを含む断片が貼付けられて、ページ全体のスタイルに影響を与えてしまう、などといったことが起こる。 こういった問題への対応策として、CSSのインライン化が有効に働きそうなので、調べてみた。 参考に挙げているが、Perl/PHP では、こういったライブラリが存在しているらしい。 我らが(?)Rubyはというと、(最近遊びでCSSParserを書いたので、なければ作ろうと思ってたけど)やっぱり存在していて、これが結構便利そう。 TamTam: Inline CSS しかし、こんな名前で公開されても…。見ても気付かないよ… インストール $ sudo gem install ta

  • http://rails.lighthouseapp.com/attachments/93770/script-console-invoke-used-rubys-irb.diff

    walf443
    walf443 2009/02/27
  • Route 477(2009-02-12)

    ■ [ruby] 1.8.7は(海外で)なぜ不人気なのか ruby-talkでアンチ1.8.7スレが立ってると聞いたので斜め読みしてみた。 「1.8.6で動いてたコードが、1.8.7で動かないことがあったから」が主な理由っぽいなぁ。安定版なのに、気軽にバージョンアップできないじゃんっていう。 「バックポートなんていらね」という意見もある。「新しい機能が使いたければ1.9使うよ」ということらしい。(個人的には、「1.8のまま」新しい機能が使える1.8.7は好きなんだけどね) 「仕様が異なる」バージョンがいくつもあることはプログラマを混乱させる。 「1.8系が1.9に近くなったら、1.9に移行しなくてもいいやってならね?」(→これは逆だよなぁ。) 「初心者としては、違うバージョンがいくつもあると混乱する。1.8.6がピッケル相当で、1.9.1がdblackの新しい相当だよね?」 「1.8.

    Route 477(2009-02-12)
    walf443
    walf443 2009/02/14
  • DebGem:Debian向けRuby Gems

    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が最近リリースされ、重要な変...

    DebGem:Debian向けRuby Gems
    walf443
    walf443 2009/01/22
    coolと思いつつ、たいていのgemにrequire 'rubygems'かいてあるけどパッチあてずに動かせるのかなと思ったりもする
  • REXML 2.4.2のサンプル付きXPathの関数リファレンス

    このリファレンスについて これは、書籍「Ruby de XML」 内に掲載されているXPathの関数リファレンスをベースとしています。一部、 書での記述と異なる部分もありますが (注1) 、 質的には同じものですのでご了承下さい。 (注1) 書籍内では紙面の都合による不自 然な折り返しを防ぐために不必要な変数が導入されていたりします。 はじめに XPathの関数は以下の四つに分類されている。 ノードセット関数(node set function) 文字列関数(string function) ブーリアン関数(boolean function) 数値関数(number function) 関数の中にはハイフン(-)を含むものもあるが、REXMLでは、ハイフン をアンダーバー(_)に変更した関数も用意している。例えば、 a-b() という関数があったら、a-b()でも呼び出せるし、 a_b

    walf443
    walf443 2009/01/18
    たぶんREXMLは個人的にはあまり使わなそうだけどいちおうブクマ