タグ

関連タグで絞り込む (176)

タグの絞り込みを解除

Rubyに関するtyabeのブックマーク (362)

  • Route 477(2011-01-19)

    ■ [ruby] open-uriでUTF-8でないページを取得するときの注意 Ruby標準添付のopen-uriライブラリを使うと、HTMLを簡単に取得することができる。 irb> require 'open-uri' irb> url = "http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43008" irb> html = open(url).read このとき、文字コードがUTF-8でないことが分かっているなら、第二引数でエンコーディング名を指定しておいた方が良いだろう。(あ、ここからはRuby 1.9の話です。) irb> html = open(url, "r:euc-jp").read 読んだあとは、String#encodeでUTF-8に変換することができる。 irb> html = open(url,

    Route 477(2011-01-19)
  • Rubyの末尾再帰最適化を理解する - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyの末尾再帰最適化を理解する : melborne.github.com - RubyではSchemeなどとは異なって 末尾再帰の最適化を勝手にしてはくれません 再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! でもid:athosさんが Rubyで末尾再帰最適化を実現するコードを書いてくれました Rubyで末尾再帰最適化をする。 - Homoiconic Days 自分の実力だと一見しただけでは何をしているか理解できなかったので 少し自分用にコードを整理してその処理を追ってみます class Module def tco(meth) called = false tmp = nil orig_meth = "orig_#{meth}" alias

    Rubyの末尾再帰最適化を理解する - hp12c
  • 再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! : melborne.github.com - 「計算機プログラムの構造と解釈」で 末尾再帰というものを知ったので勉強しました 自分の理解を書いてみます 再帰 再帰呼び出しとはある手続きの中で 再びその手続き自身を呼び出すことと定義される*1 でもこの定義は正確じゃない なぜなら再帰呼び出しは自分自身を呼んでいないからだ 階乗を考えてみよう 階乗は数学的にこう定義できる 但し、自然数n=1のときは1 ふつうRubyで階乗メソッドはこう書く def fact(n) if n == 1 1 else n * fact(n-1) end end fact 5 #> 120 factメソッドの中でfactメソッド

    再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! - hp12c
  • 223Soft -

    Document Data Structure in MongoDB Express MongoDB lets you easily store structured and unstructured data in a flexible and dynamic database schema. It supports CRUD operations on complex data objects using JSON as the main data type. Its an open source solution so it may not be as robust or well supported as commercial management tools. However it is easy to deploy and works well for most use cas

  • Ruby-1.9でutility_belt - suzumura_ssのブログ

    かなり便利な gem utility_belt ですが、Ruby1.9系で使えません。(utility_belt-1.1.0) $ irb -r utility_belt /usr/local/lib/ruby/gems/1.9.1/gems/utility_belt-1.1.0/lib/utility_belt.rb:16: in `block in <top (required)>': wrong number of arguments (1 for 0) (ArgumentError) from /usr/local/lib/ruby/1.9.1/irb.rb:61:in `call' from /usr/local/lib/ruby/1.9.1/irb.rb:61:in `start' from /usr/local/bin/irb:12:in `<main>'gems/utili

    Ruby-1.9でutility_belt - suzumura_ssのブログ
  • [bundler]Bunderを使ったGem管理のメモ | diary NET. 1.2mg

    以前、つくったRVM環境をGemsetsをつかわない環境に作り直したのでメモ。 Rubyのバージョン管理ツール RVM は 複数バージョンのRuby と 各RubyのGemをGemsets で管理をするつもりで環境を作っていたのですが、この間、Rails勉強会@東京 に行ったときに、Gemの管理はBundlerで、RVM では Rubyのバージョン管理のみに使うのがいいんじゃないかとアドバイスを頂いて、いろいろ試してみました。 まず、Gemの管理というのがいまいちイメージがつかめていなかったのですがGemfileという設定ファイルで RailsアプリなどをGithubなどからダウンロード、必要なGemBundlerでインストール Rails2アプリを作る、Gemfileを作成する、バージョンを固定 Rails3アプリを作る、Gemfileは自動作成される、追記する、バージョンを固定 空

  • Rubyで末尾再帰最適化をする。 - Homoiconic Days

    元ネタはPythonで末尾再帰最適化をする。 - wasabizの日記。Pythonのデコレータを使って、末尾再帰で書かれた関数に対して末尾呼び出し最適化(TCO)を行う、というものです(どうやってTCOを実現しているかの詳細についての説明はここでは割愛します)。 さて、元エントリでは「Pythonがすごいからこんなことができるんだ」という感じで書かれていますが、タネさえ分かればいろんな言語でできそうだということが分かったので、他の言語でも試してみることにしました。 まずはじめに、試しにScheme版を書いてみたものの、そもそもSchemeはTCOを勝手にやってくれるのであまり意味のない例になってしまいました。 その後、Scheme版をだいたいそのままRubyに書き直したのが以下のRuby版です。 class Module def tco(name) continue = [] first

    Rubyで末尾再帰最適化をする。 - Homoiconic Days
    tyabe
    tyabe 2011/01/20
    なんでtcoをModuleクラスに入れたんだろう?
  • rvmでインストールしたRubyをアップデート

    なんかググッてもあんまり出てこないので。 rvm upgradeというコマンドを使えばできるみたい。 例えば既にインストールしてあるruby-1.8を1.9にしたいときは rvm upgrade ruby-1.9 ruby-1.8 みたいにしてやればできる。 gemも引き継がれるので(確か引き継ぐかどうかも選択できる)、gemsetをexportしたりとかする必要もない。 もとのやつ(上の例だとruby-1.8)を消すか残すかも選択できるっぽいので、gemそのままでruby1.9をインストールしたいときとかも使えるのかも。 rvm install ruby-headとかでインストールしたものをアップデートするにはどうするんだろう。

    tyabe
    tyabe 2011/01/20
  • 超便利なワンライナーを、コマンドラインで検索できるgemパッケージ「cmdline-fu」 - 元RX-7乗りの適当な日々

    Linux等のコマンドラインで使える便利なワンライナーを、世界中のみんなで共有しちゃおうという「Command-line-fu」というサイトが素敵! All commands 以前、100SHIKIさんでも、以下のように紹介されていました! Command-line-fuではLinuxなんかのコマンドラインで使えるワンライナー(一行プログラム)を投稿・共有できる。 自分がよく使うワンライナーを保存しておいて使うも良し、他の達人の技を盗むも良し、の素晴らしきサービスである。 ちょっとのぞいてみただけでも「へー、一行でここまで出来るんだ・・・」という小技があってかなり勉強になる。 コマンドラインで使える超絶便利なワンライナーを投稿・共有できる『Command-line-fu』 | 100SHIKI で、サイトで新しく投稿されたワンライナーをブラウザで眺めたり、サイトでキーワード検索したり、RS

    超便利なワンライナーを、コマンドラインで検索できるgemパッケージ「cmdline-fu」 - 元RX-7乗りの適当な日々
  • 気になるあのエンジニアをもっと知る。Rubyのコミッター一覧をWebサイト化·Ruby Committers MOONGIFT

    Ruby CommittersはRubyのコミッター一覧のYAMLファイルを読み込み、RailsでWebサイト化したもの。 [/s2If] Ruby CommittersはRuby on Rails製のフリーウェア(ソースコードは公開されている)。オープンソース・ソフトウェアはソースコードを軸にしたコンテンツだ。そこに集まる開発者たちを中心としてコミュニティが形成される。 メイン画面 開発者には様々なバックグラウンドがある。有名な開発者にはファンも多く、そのブログ、Twitter、著書などを知りたいと思うはずだ。Rubyについても同様で、Rubyのコミッターで有名な人たちをリストアップしたRuby CommittersはまさにそのためのWebサイトになる。 このコミッターデータの一覧はRubyコミッタ一覧(via 世界線航跡蔵)にて作成されたYAMLデータが元になっている。名でやり取りし

  • 未経験で初めてgemを作ってみたので晒してみる - (゚∀゚)o彡 sasata299's blog

    2010年12月22日23:12 Ruby 未経験で初めてgemを作ってみたので晒してみる (この記事は Ruby Advent Calendar jp:2010 の 22 日目。前日は yuunachan さんでした) # gem を一度も作ったことない人が gem を初めて作ってみる話です # この記事を読んで、「gem って意外と簡単に作れるんだ〜」と思ってもらえれば幸いです ということで、gem 作ってみましょー まず、gem の生成に必要なファイルを全部一から書くとか気が遠くなる作業なので、ライブラリを使ってひな形をどかどか〜っと作ってしまいます。今だと jeweler っていうライブラリが良いようなのでさくっとインストール。 gem install jeweler んで、さっそくひな形を作ってみます。--rspec って付けると、付属するテストを RSpec 仕様にしてくれます

  • Vim で快適デバッギング。もちろん Ruby スクリプトの。

    (この記事は Ruby Advent Calendar jp:2010の 14 日目です。前日は ujihisa さんでした。) こんにちは。時が経つのは早いもので、もう 14 日ですね。 Ruby の話題ばかりで皆さん飽きてらっしゃると思うので、今日は便利な Vim Script vim-ruby-debugger を紹介します。 vim-ruby-debugger は、名前から想像出来るように、Vim から ruby-debug を使うためのものです。 この Script をインストールして、 :Rdebugger のように起動すると、デバッグモードに入ります。 止めたい場所で、 <leader>b とタイプすると、ブレークポイントを設定することが出来ます。 コードを実行して、BP を設定した場所までくると、自動的に実行が一時停止して、Vim は該当にカーソルを移動します。 vim-r

  • Try ActiveGroonga!

    投稿者 okkez 2010-12-05 07:04:00 GMT (この記事は Ruby Advent Calendar jp: 2010 : ATND の 5日目です。前日はauthorNariさんでした。) buzztter - Twitter のイマを切り取ったー☆ や Rubyリファレンスマニュアル全文検索 | るりまサーチ で使われている groonga - an open-source fulltext search engine and column store. をご存知でしょうか。groonga 自体の説明は公式サイトを見てください。 groonga には Ruby バインディングの rroonga があります。 さらにその rroonga を ActiveRecord っぽいインターフェイスで使える ActiveGroonga があります。 ところで、先日 2010-

  • rubyでやってみた。『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』まとめ - それマグで!

    『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』を読んだ。 Javaマルチスレッドはすごいと。Java見直した。がrubyもしゅごい Single Threaded Execution - この橋を渡れるのは、たった一人 Immutable - 壊したくとも、壊せない Guarded Suspension - 用意できるまで、待っててね Balking - 必要なかったら、やめちゃおう Producer-Consumer - わたしが作り、あなたが使う Read-Write Lock - みんなで読むのはいいけれど、読んでる間は書いちゃだめ Thread-Per-Message - この仕事、やっといてね Worker Thread - 仕事が来るまで待ち、仕事が来たら働く Future - 引換券を、お先にどうぞ Two-Phase Termination - 後片付

    rubyでやってみた。『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』まとめ - それマグで!
  • Shared examples: Variables can be set using a block

    Use space bar or arrow keys to navigate, and escape for index. Built with Slippy.

  • RSpecのスライドがいい - rochefort's blog

    Kerry Buckleyさん?のRSpecのスライドが凄くいいです。 RSpec 3分の1くらい知らない内容が載っていた感じです。 読みやすくとても良く纏まってるので また何度か読み返すと思います。 気になったとこ .rspec spec.opts ってdeprecateなんですね。 .rspecファイルらしいです。 fuubar テストの進行具合をプログレスバー表示してくれる かわいいツールです。早速installしてみます。 $ gem install fuubar Fetching: rspec-instafail-0.1.5.gem (100%) Fetching: fuubar-0.0.3.gem (100%) Fetching: rspec-core-2.4.0.gem (100%) **********************************************

    RSpecのスライドがいい - rochefort's blog
  • Rubyでメタプログラミング 〜暗黙的に呼ばれるto_procメソッド - (゚∀゚)o彡 sasata299's blog

    2011年01月08日23:09 Ruby Rubyでメタプログラミング 〜暗黙的に呼ばれるto_procメソッド 先日、こんな感じの処理に遭遇しました。はて、、何じゃこりゃ・・(´・ω・`) ポカーン (1..5).each(&method(:puts)) と思って調べたのでまとめておきます。この処理が理解できれば一人前です。きっと。 ブロックはオブジェクトではない Ruby では大抵のものがオブジェクトですが、オブジェクトではないものも一部あります。ブロックがその一つです。 例えばこんな風にブロックを定義することは出来ません。 block = { "test" } # in:1: odd number list for Hash そもそも Ruby の構文ではハッシュとして扱われるためブロックを直接生成することは出来ません。Block.new みたいな構文も無いので、ブロックは ti

  • 多数の言語に対応したGitライブラリ·libgit2 MOONGIFT

    libgit2はC製のオープンソース・ソフトウェア。ここ1、2年で急速に人気を高めたバージョン管理システムがGitだ。特にRuby開発者の間で好んで使われているが、最近では企業内でも利用されるようになっている。今後も実績を積み重ねていくことだろう。 公式サイト そんなGitはシステム開発の現場以外でも使われるようになっている。例えばコンテンツのバージョン管理に使われるなど、ソフトウェアのバックエンドとして活用するのにもぴったりなのだ。そんなシステムとGitを連携させたい時に使えるのがlibgit2だ。 libgit2は単体で利用するソフトウェアではない。C言語で開発されたGitライブラリで、高速さとマルチプラットフォームでの動作、多彩な言語へのバインディングが特徴となっている。Windows/Mac OSX/Linuxで動作し、かつ例えばWindowsであればMS VCでコンパイル可能だ。

    tyabe
    tyabe 2011/01/11
  • 追記型O/R Mapper "Stratum" を公開した(公開しただけ) - たごもりすメモ

    仕事で作っているアプリ用に書いたO/Rマッパのライブラリ、隠してても何の嬉しいこともないので、社内に置いてたgitのリポジトリをgithubに移した。さすがにもう機能追加の必要もなくなってきたなーという段階になったので。 https://github.com/tagomoris/Stratum ライセンスは Apache License v2.0 としました。なにかしたい方はお好きにどうぞ。READMEとか書き中。 何のためのもの? 世の中にORMなんていくらでもあるのになんで書きはじめたんだ、ということですが、要するに以下の理由です。 誰が、いつ、どのようにデータを追加・更新・削除したのかをすべて残す そのような履歴データに簡易にアクセスする 最近監査とかなんだとかうるさいですからね。 で、こういう条件をきっちり満たしたアプリケーションを普通のORMを使って書くというのは存外に面倒。全デ

    追記型O/R Mapper "Stratum" を公開した(公開しただけ) - たごもりすメモ
    tyabe
    tyabe 2011/01/11
  • RSpec で autotest - tmtms のメモ

    自分は Ruby コードの単体テストに RSpec を使ってるんですが、プログラムコードやテストコードを更新する度にいちいち手動でテストを実行していました。 autotest というのを使えば自動でテストが実行されるという話は聞いていたので、ちょっと調べてみました。 使用しているバージョンは RSpec 2.3.0, ZenTest 4.4.2 です。 インストール autotest は ZenTest という gem に入っているのでそれをインストールします。 # gem install ZenTest 実行 プロジェクトのトップディレクトリからのツリーが次のようになっている場合、 ./lib/hoge.rb ./lib/fuga.rb ./spec/hoge_spec.rb ./spec/fuga_spec.rb次のように実行します。 % autotest --style rspec2

    RSpec で autotest - tmtms のメモ