タグ

rubyに関するtaraoのブックマーク (90)

  • 情報処理2015年12月号特集記事「20年目のRubyの真実」インタビュー-情報処理学会

    笹田:今日はよろしくお願いします。「Rubyの真実」を久しぶりに読んでいただいたわけですが、一番ささるセンテンスってありました? 「確かに、これはそうだな」、というような。 松:結局プログラミング言語において、普通の人が注目するのは、客観的な評価ををしやすいところ、といっていること。 笹田:普通の人っていうのは? 松:プログラミング言語を選ぶ人とか。 笹田:ユーザですか? 開発者? 松:それは誰でも同じだと思うんだけど、次の仕事にどのプログラミング言語を使おうかとか、あるいは、より良いプログラミング言語の設計について研究しようとしているかもしれないし、自分でデザインして実装しようとしているかもしれないし。で、そういう人たちそれぞれ、言語を評価するわけだよね。使うか使わないかとか、この機能を採用するかしないかとか。そういうときに、最初に評価しがちなのは、機能がどうこうとか、性能がどうこ

    情報処理2015年12月号特集記事「20年目のRubyの真実」インタビュー-情報処理学会
  • ActiveRecord considered harmful

    Home Blog 2011-12-30 It is practically impossible to teach OO design to students that have had a prior exposure to Rails: as potential programmers they are mentally mutilated beyond hope of regeneration.Edsger W. Dijkstra (paraphrased) I love ActiveRecord. It was the first ORM I’d ever interacted with. My first technical employer had commissioned a DBA, and so of course, we wrote all our own queri

    ActiveRecord considered harmful
    tarao
    tarao 2015/05/20
  • RubyにHaskellよりも強力なパターンマッチを実装した - Qiita

    require 'egison' include Egison match_all(object) do with(pattern) do ... end end match(object) do with(pattern) do ... end with(pattern) do ... end ... end パターンマッチに成功すると、withに渡されたブロックが実行され、その結果が返されます。 このライブラリのパターンマッチでは、パターンマッチの結果が複数あるということがあります。 match_all構文はそのすべてのパターンマッチの結果それぞれについてwithに渡されたブロックを実行し、すべての結果をまとめた配列を返します。 match_all構文は1つのwith節を取ります。 一方、matchは複数のwith節を取ります。 先頭のwith節のパターンから順番にパターンマッチに成功

    RubyにHaskellよりも強力なパターンマッチを実装した - Qiita
  • rbenv のメカニズム - @kyanny's blog

    rbenv 環境下で実行された Ruby プログラムの中から他の Ruby プログラムを起動するときに、 rbenv 環境をリセットしたい―要するに別のバージョンの Ruby で外部プログラムを実行したい―という事情があったので rbenv のメカニズムについて調べた。 rbenv 環境下で ruby コマンドを実行するとき、実際にコンパイルされた ruby バイナリが直接実行されているわけではない。 rbenv 環境をお膳立てした上で ruby バイナリを exec するラッパーのシェルスクリプトが実行される。こういうものを binstub と呼ぶ。 binstub である ruby という名前のシェルスクリプトの中身をみてみると、最終的に rbenv exec というサブコマンドを呼び出している。 rbenv のサブコマンドはリポジトリでいうと libexec ディレクトリ以下にある。

    rbenv のメカニズム - @kyanny's blog
    tarao
    tarao 2013/05/11
  • GitHub - tomas/skull: Object-oriented-like Bash framework

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - tomas/skull: Object-oriented-like Bash framework
    tarao
    tarao 2013/04/18
    bash
  • 第一回 超絶技巧 Ruby 意味不明コンテスト in RubyKaigi

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • RealtimeViewerを作ったらREADMEを書くのがとても捗る件について

    RealtimeViewerを作ったらREADMEを書くのがとても捗る件について READMEを書くときはMarkdown形式で書くと思うのですが、四六時中その記法で書いているわけでは無いので、なかなか覚えられないわけです。Rubyの場合はRDoc形式で書くのが普通なのかな?まぁWikiにしろ何にしろ似たような記法増えすぎだと思うのです。 わたしのようなゆとりには、プレビューしながら確認できるととても幸せになれます。とは言っても、ブラウザ上で入力なんてしたくないし、自分のお気に入りのエディタを使いたいわけです。 こちらの記事にあるツールを使っていたのですが、どうも自分の環境ではファイルを保存しなおすと、高確率でreadでこけるようで・・。 というわけで(上記ツールを参考にして)自分で作ってみました。 インストール、および実行方法は以下のようになります。 gem install rdoc-v

    RealtimeViewerを作ったらREADMEを書くのがとても捗る件について
    tarao
    tarao 2013/01/24
    markupよりこっちの方がfssmでやってるからファイルの監視をinotifyとかにできていいな / em-websocket-0.4.0がsinatra-websocketと互換性がなくなってしまったようで、em-websocket-0.3.8を入れる必要があった
  • TapがRubyの新たな制御構造の世界を開く

    Object#tapはそのブロックの評価結果を捨てるという風変わりなメソッドです。これは主としてメソッドチェーンにおける途中経過を覗き見るために使われます。 "charlie".upcase.tap{ |s| p s } # => "CHARLIE" .reverse.tap{ |s| p s } # => "EILRAHC" .gsub(/[aeiou]/i,'*') # => "**LR*HC" tapの副作用を使う もっとも、その評価結果を捨てるというユニークな特徴をうまく使えば、もっと面白いことができます。 例えば、ある変数の値を取得した上でその変数の値をリセットしたい場合を考えます。通常は次のように実装するのでしょう。

    tarao
    tarao 2012/10/30
  • Better Specs. Testing Guidelines for Developers.

    What is Better Specs Better Specs is a collection of best practices developers learned while testing apps that you can use to improve your coding skills, or simply for inspiration. Better Specs came to life at Lelylan (open source IoT cloud platform) and checking out its test suite may be of inspiration. Better Specs focus on Rails testing, but our goal is to create testing guidelines covering mos

  • Ruby で作る、簡単 CLI ツールのススメ - Qiita

    Ruby 開発環境 AdventCalendar 10 日目です。前日は、 aereal さんでした。 さて、皆さんコマンド打ちまくってますか?僕は Ctrl+R で履歴から引っぱり出さないとタイポで撃沈します。 そんなこんなで皆さんいろんな CLI ツールをご利用中だと思います。 vim とか emacs とか、 rails g とか、 guard とか。実に便利なものたちですが、現実の開発現場に即した、素晴らしいニッチなツールというのは、得てしてそんなにないものです。 「こんなに重厚でなくていい」 「もうちょっとざっくりとした……なんというか痒いところに手が届くような……」 などなど、いろいろあると思います。例えば「チームで開発しているのだが、今行ったコミットのレビューを依頼するメールを書くのが面倒なので社内 Twitter 的なものに書こうかと思うのだがそれもめんどくさいのでコミット

    Ruby で作る、簡単 CLI ツールのススメ - Qiita
    tarao
    tarao 2012/07/25
  • 自分のライブラリでの標準クラスに対するのオープンクラスのやり方 - わからん

    自分のライブラリで String などの基的なクラスをオープンしてメソッドを追加する場合の書き方について、activesupport-2.3.2、activesupport-3.2.3、zucker-12.1、facets-2.9.3 でどうやっているかを調べました。 activesupport-2.3.2 の場合 ▼ activesupport-2.3.2/lib/active_support/core_ext/string.rb require 'active_support/core_ext/string/filters' ... class String #:nodoc: ... include ActiveSupport::CoreExtensions::String::Filters ... end ▼ activesupport-2.3.2/lib/active_suppo

    tarao
    tarao 2012/05/15
  • Ruby向けパターンマッチライブラリ「pattern-match」を作った - 継続にっき(2012-03-03)

    ))) Ruby向けパターンマッチライブラリ「pattern-match」を作った先日ポストしたScalaっぽいパターンマッチをRubyで実装するをベースに 一通り機能を揃えてライブラリ化した(pattern-match)。 面白そうなパターンをいくつか例に取ってみると、まず多重代入。 match([0, [1, 2, 3, 4]]) { with(_[a, _[b, *c, d]]) { # `Array.(a, Array.(b, *c, d))'と同じ p [a, b, c, d] #=> [0, 1, [2, 3], 4] } } Gaucheのutil.match由来の___、__k。 match([[0, 1], [2, 3]]) { with(_[_[a, b], ___]) { p [a, b] #=> [[0, 2], [1, 3]] } } 赤黒木のbalance(参考

    tarao
    tarao 2012/03/08
  • GitレポジトリをRubyから操作するライブラリGritを試してみた - ごろねこ日記

    仕事でブラウザベースのファイルライブラリ的なものを作ろうかどうしようかって雰囲気なので、どうせなら過去の履歴もコメント付きで追えて、なおかつ過去の変更時点での状態のものをダウンロード出来たら便利じゃね?って思ったらそれってGitじゃんっておもったので調べてみた (ハァハァ 参考にしたのはこのサイト Grit を使って Git リポジトリを Ruby で操作する 紹介されているのはGritとかいうRubyのライブラリ。なんじゃいそれはと思ってたら、かのgithubでも使ってるそうな。おお。信頼性高そう。 インストール gemを検索してみたらあったあった(^◯^) $ gem search grit -r *** REMOTE GEMS *** grit (2.4.1) ではインストール $ sudo gem install grit Successfully installed grit-2

    GitレポジトリをRubyから操作するライブラリGritを試してみた - ごろねこ日記
    tarao
    tarao 2012/02/27
  • 単一化でテストすれば良いじゃない - soutaroブログ

    最近、こんなテストをいくつか書いていて、イラっとしました。 post(:create_note, { :note => { ... } }) assert_equal( { "id" => 13, "created_at" => Time.now, "updated_at" => Time.now, .... }, JSON.parse(@response.body)) このテストにはいくつか問題があります。 idは13だと思っていて大丈夫か? postした時刻とassert_equalする時刻は等しいか? created_atとupdated_atが等しいことはテストできるか? どれも保証されません。*1 さて、これは、なんかどこかで見たことがあります。 まず連想するのはMLやHaskellのパターンマッチです。(ここにOCamlの例を書こうと思ったけど、忘れていたので省略。)パターンマ

    単一化でテストすれば良いじゃない - soutaroブログ
    tarao
    tarao 2012/02/20
  • inspectで自分自身のインンタンス生成を出力する - hitode909の日記

    Rubyで,1とか,'hello'とか,{:foo => :bar}とかは,inspectした結果がソースコードと同じで,プログラムとして実行できる. 自分で作ったクラスなんかだと,#<クラス名> みたいな文字が出る. 普通のクラスでもinspectすると自分自身を作るようなコードが表示されるとおもしろい気がしたから作ってみた. module PrintSelf def inspect args = self.method(:initialize).parameters.map{ |param| self.instance_variable_get("@#{param[1]}".to_sym).inspect } "#{self.class}.new(#{args.join(", ")})" end end class Human include PrintSelf def initial

    inspectで自分自身のインンタンス生成を出力する - hitode909の日記
    tarao
    tarao 2012/02/18
    ClassやModuleのインスタンスも同じように書き出せるとだいぶ捗るから誰か作らないかな.
  • [ruby] Index of /tags/v1_8_7_72

    tarao
    tarao 2011/12/28
  • Rubyistよ、irbを捨ててPryを使おう | Webシステム開発/教育ソリューションのタイムインターメディア

    Pryは結構前からgithubのリポジトリを追いかけている人達には認知されていましたが、RailsCastsでも紹介されたことから、Ruby界で一気に広がりを見せています。 ちなみに発音はpra'i(ぷらい)です。英単語で「覗く」などを意味します。 今回はそんな便利なPryについて少し紹介したいと思います。 Pryはirbの代わりになるREPL Pryを一言で説明すると、irbと同様にREPL環境を提供してくれます。 では、さっそくインストールしてみましょう。

    Rubyistよ、irbを捨ててPryを使おう | Webシステム開発/教育ソリューションのタイムインターメディア
    tarao
    tarao 2011/12/27
  • モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。 - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥

    これはRuby Advent Calendarの21日目の記事です*1。20日目は@sasata299さんのHerokuって便利だし利用までたった3ステップですお!!でした。 はじめに 当は「Pure Rubyで動くかっこいい形態素解析エンジンができた!!!」みたいな記事を書く予定でしたが、目標のクオリティに達しなかったのでリリースは延期されました。 クリスマスごろにリリースされるといいですね。 さて、この記事では、Haskellのような純粋関数型言語がどのように副作用を伴う処理を実現しているかについて、Rubyによる実装を使って解説します。モナドという言葉が全く出てこないのでアレルギーのかたも安心ですね。 純粋関数とは 同じ引数を渡す限り、どのような順番で何度呼んでも同じ結果が返るような関数のことです。 何が問題なのか puts 'hello!' res1=gets puts 'hel

    モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。 - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥
    tarao
    tarao 2011/12/22
  • JavaScript第5版読書会#1

    モーニング営業 ~ココロもカラダも 満たされる朝~ たんばく質も野菜もたっぷり摂れて 一日を元気に過ごせる朝で 完璧な一日のスタートを。 お日にち限定で、モーニングを開催しております。 コトコトの朝ごはん> Take out おうちでべよう レストランクオリティをおうちで楽しめるコトコトのお持ち帰り(テイクアウト)。 レトルト仕様の真空パックなので、温めるだけで美味しくお召し上がりいただけます。 商品を見る はじまりは、癒しのスープから―。 千葉市中央区、蘇我駅・千葉寺駅近くにある「カラダをはぐくむレストラン コトコト」は、ココロもカラダも元気になれる一軒家レストランです。 毎日べても飽きの来ない優しい味わいをコンセプトに、大人も子どもも笑顔になれるヘルシーランチやカフェ、ディナーメニューをご用意しております。 また、思わず写真を撮りたくなるようなノンアルコールカクテルやちょっと珍

    JavaScript第5版読書会#1
    tarao
    tarao 2011/10/05
  • lennyでrubygemsのアップデート - モノノフ日記

    気分転換にrubyでも触ろうかなと思ったので下記コマンドを入力するとgemのバージョンが古いと怒られました。 $ sudo gem install hogehogecoLinuxに入れてるdebianはlennyでrubygemsのバージョンは1.2らしく、1.3.Xにしないともうインストできないものがいっぱいあるようなのでアップグレードしました。 rubygemsコマンド自体に rubygems-update というコマンドがあるらしいけどdebian使ってるんだからaptitudeで管理したいところ。ということでdebian backportsにあるかなと思って探したらすぐ見つかりました。 Debian -- Error 以下やったことまとめ。 手順 backportsのリポジトリを追加 backports用の公開鍵をインストール backportsでインストールパッケージの指定 今入

    lennyでrubygemsのアップデート - モノノフ日記