タグ

ブックマーク / melborne.github.io (13)

  • DRY重患者RubyistのためのNullObjectパターン

    以前私はRubyistはDRY症候群に掛かっているという記事を書いた。 RubyistたちのDRY症候群との戦い 要約するとDRYじゃないコードを見るとRubyistはムズムズするといった内容だ。 前回私が書いた記事の中に、次のようなコードが出てきた。 def run @methods.inject(@obj) do |mem, method| if custom = Filter.filters[method] custom.call(mem) else mem.send method end end end Rubyでパイプライン? これは@methodsに格納したメソッドを@objに対し順次呼び出すが、同名のフィルタがFilter.filtersにあるのならそれをcallする、といったコードである。 あなたが重度のDRY症候群に掛かっているなら、このコードを見てムズムズしているに違い

    pycol
    pycol 2014/03/08
  • 僕が考えた最速・最小投資でRubyを学ぶ方法またはステマ乙

    そろそろ軽くRubyをやってみたいけどなんか情報多すぎてどこから手を付けたらいいかわからない、リファレンス的なものとか言語論的なものとかコミュニティー的なものとかの情報は結構あるけど、もっとカジュアルでかと言ってどの言語でも使いまわせる的な説明じゃなくRubyらしさが浮き出てるようなもので、しかもちょっとしたCLIツールとかWebアプリとかを作れる程度に理解の手助けをしてくれるものがほしいけど、今の段階で大枚叩きたくないしという人向けに僕がRubyの道案内を致します。 ステップ1(所要時間:0〜10分、投資額:0円) あなたのコンピュータでRuby2系を使えるようにします。 Macなひと => Mavericksをインストールする。 Windowsなひと => RubyInstaller for WindowsRuby2系をインストールする。 Linuxなひと => ご自由に。 ターミナ

    僕が考えた最速・最小投資でRubyを学ぶ方法またはステマ乙
    pycol
    pycol 2013/12/25
  • あなたのプロジェクトを美しく視覚化する

    (追記:2013-11-01) DirFriendのバージョンアップについての記事を書きました。 あなたはファイルシステムに美を見るか? プロジェクトにおけるディレクトリ構造をさっと把握したいという欲求があります。そういうときは通常treeします。 % bundle gem gem_project -bt % tree gem_project gem_project ├── Gemfile ├── LICENSE.txt ├── README.md ├── Rakefile ├── bin │   └── gem_project ├── gem_project.gemspec ├── lib │   ├── gem_project │   │   └── version.rb │   └── gem_project.rb └── spec ├── gem_project_spec.rb └

    pycol
    pycol 2013/10/28
  • ええ、ハッキリ言います。私はRubyのArray#unshiftが嫌いです。

    numbers = [3, 4, 5] numbers.push(6, 7, 8) # => [3, 4, 5, 6, 7, 8] numbers << 9 numbers # => [3, 4, 5, 6, 7, 8, 9]

    pycol
    pycol 2013/09/04
  • Rubyで色を扱うライブラリ「Colorable」をアップデートしましたのでお知らせいたします

    Rubyで色を扱うColorable gemをアップデートして大幅に機能強化しましたので、改めて紹介します。versionは0.2.0です。 colorable | RubyGems.org | your community gem host melborne/colorable · GitHub Colorableとは Colorableは、Rubyで色を取り扱うためのライブラリで、次の機能を備えています。 1. 色変換: X11カラー名, HEX, RGBおよびHSB値の間での出力フォーマットの変換ができます。 2. 色合成: 算術演算子を使った色合成ができます。 3. 色列挙: X11カラーにおける列挙操作ができます。 4. 色モード: 各Colorオブジェクトは出力状態を表すモードを持っていて、その状態に応じてメソッドの挙動を変更できます。 使い方 上記各機能の使い方を順に説明しま

  • 知って得する!55のRubyのトリビアな記法

    Rubyはたのしい言語です。Rubyを触っているとマニュアルにも書いていない「小さな発見」に遭遇することがよくあります。このような「発見」は、プログラムの質や効率の改善には直結しないかもしれません。いや、むしろチームプログラミングでは妨げになる可能性すらあります。しかしその一方で、言語自体が自分の知らない領域を持ち続けていることが、その対象に対する興味を失わせないための大きな要因である、というのもまた疑いのない事実なのです。つまり「発見」はたのしさに直結しているのです。 このブログにおいて「知って得するRubyのトリビアな記法」というタイトルで、今まで3回記事を書きました。 “知って得する21のRubyのトリビアな記法” “第2弾!知って得する12のRubyのトリビアな記法” “第3弾!知って得する12のRubyのトリビアな記法” これらのトリビアには、ネット検索で見つけたもの、Twitt

  • Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい

    Rubyのcase」を一瞥し「あー要は〇〇(言語名)のswitchね」などと早合点し、その後もその真の価値を知ることなく一生を終えるプログラマが近年跡を絶たない。加えて、「今更条件分岐?RubyはOOPなんだからポリモフィズムじゃね?」とか「HashにProc突っ込んでcallするのがオレ流。」とかうそぶく人たちもまた増加の一途を辿っている。 そんな世の中にあって、ぼくは一言、できればガツンと一言申し上げたい。生まれも育ちもRubyなぼくから、是非ともそんな人たちに「Rubyのcase」について一言申し上げておきたい。 ─ 問題1 ─ 名前name、レベルlevel、ポイントpointの各属性を持った複数のCharacterオブジェクトcharlie, liz, benがある。 class Character < Struct.new(:name, :level, :point) def

  • Ruby標準添付ライブラリcsvのCSV.tableメソッドが最強な件について

    ─ 問題1 ─ data.csvファイルには、5人のプレイヤー(Alice, Bob, Jimmy, Kent, Ross)が二種類のゲーム(gameA, gameB)をプレイした結果が次のような形で格納されている。各ゲームの平均点を求めよ。 data.csv player,gameA,gameB Alice,84.0,79.5 Bob,20.0,56.5 Jimmy,80.0,31.0 Kent,90.5,15.5 Ross,68.0,33.0 data = File.read('data.csv') headers, *scores = data.lines.map { |line| line.chomp.split(',') } scores # => [["Alice", "84.0", "79.5"], ["Bob", "20.0", "56.5"], ["Jimmy", "80

  • 今年の冬休みに電子書籍であなたがRubyを習得しなければいけないたった一つの理由

    冬休みです。多忙なあなたがまとまった自由時間を取れる唯一のチャンスです。こんなときは、遊んではいけません。なぜならその消費方法があなたの未来を決定付けるからです。もちろん、家族や両親や犬の世話をしてもいけません。寝正月などもっての外です。それはあなたの未来のための時間なのです。 そう、この時間を使ってあなたは学習するのです。 今年の冬こそはプログラミング言語を習得するのです。なぜならプログラミング言語を習得すれば、お見合いのときに「LispとRubyを少々」という相手に対して臆することなく「ほほぅでは関数型にも興味をお持ちかな?」などと返すことができるのです。 プログラミング言語といったら「Ruby」です。なぜならそれは日人が作った言語だからです。国語の勉強をせずにいきなり外国語を学ぶ人はいません。事情はプログラミング言語の世界でも同じです。ですからまずは国産言語「Ruby」を学ぶべきな

  • 東京の地下鉄をGviz(Ruby Graphviz Wrapper)で描く

    (追記:2014-3-3) Gvizについてのまとめ頁を作りました。 Gvizの目次 - Rubyの世界からGraphvizの世界にこんにちは! 全国の駅情報を提供する『駅データ.jp』という素晴らしいサイトがあります。無料でダウンロードできるCSV形式の駅データには各駅の管理鉄道会社や路線の情報だけでなく、駅の経度・緯度情報までもが含まれています。マコトニスバラシイ。イママデシラナカッタノガハズカシイ。 そんなわけで… 今回はGvizを使って、東京の地下鉄、すなわち東京メトロ+都営(東京都交通局)の路線図に挑戦してみます。 駅データの取得 まずは駅データを取得します。先のサイトのダウンロード頁からマスターデータ(m_station.csv)をDLします。サイトの仕様書頁にあるように、各駅情報は次の14フィールドで構成されています。 データ仕様 1. 鉄道概要コード 2. 路線コード 3.

  • Yet Another Ruby Graphviz Interfaceを作ったからみんなで大量のグラフを作って遊ぼうよ!

    (追記:2014-3-3) Gvizについてのまとめ頁を作りました。 Gvizの目次 - Rubyの世界からGraphvizの世界にこんにちは! このブログとかでたまに無向だとか有向だとかのチャートの方じゃないグラフが書きたいと思うことがあるよ。でまさかこのご時世で今更VISIOとかあり得ないからGraphvizのdotファイルを書くことになるんだけどDOT言語は制御構造を持ってないから結局より高級な言語によるインタフェースが必要になるよ。でRubyの出番ってことになるんだけどGithubで”graphviz ruby“で検索すると1200件以上ものリポジトリがヒットするんだよ。でこの中から適当なものを選んで使えばいいってことなんだろうけどさすがにこれだけあるとどれを選んでいいか全然わからないから結局The Ruby Toolbox当たりで”graphviz“にヒットする20件くらいの中か

  • Ruby脳が理解するJavaScriptのオブジェクト指向(その2)

    Ruby脳が理解するJavaScriptのオブジェクト指向 」の続きです。 引き続きJavaScriptのオブジェクト指向における「継承」について学んだので、自分の理解を書いてみます。当然に、間違いが含まれています。ご指摘助かります。 前回のまとめ 前回の記事では、JavaScriptの「オブジェクトの生成」、「プロトタイプチェーン」、「オブジェクトコンストラクタ」、「new演算子」の各概念について順にみました。これらを通したJavaScriptのオブジェクト指向に対する僕の理解は概ね次のようなものです。 すべてのオブジェクトは__proto__プロパティ(非標準)を持っていて、プロパティ探索に関し、ここにセットされたオブジェクトを順次たどりこれを解決する(プロトタイプチェーン)。__proto__にはデフォルトで空オブジェクトがセットされている。 同種オブジェクト(属性値だけが異なるオ

  • 知って得する21のRubyのトリビアな記法

    (追記:2013-08-16) 記事のトリビアを含む55のトリビアを以下の記事にまとめました。 知って得する!55のRubyのトリビアな記法 ちょっとトリビアだけど、知っていると意外と便利なRubyの記法を21個拾ってみたよ(Ruby1.9限定)。 君なら全部知ってるかもしれないけど.. 1. 動的継承 Rubyのクラス継承では < 記号の右辺にクラス定数だけでなくクラスを返す式が書けるよ。 class Male def laugh; 'Ha ha ha!' end end class Female def laugh; 'Fu fu fu..' end end class Me < [Male, Female][rand 2] end Me.superclass # => Female Me.new.laugh # => 'Fu fu fu..' def io(env=:develop

  • 1