タグ

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

  • ターミナルにデジタル式デカ文字を出力する「digi_moji」の紹介

    require "colcolor" str = "Languages: Python Lisp Ruby Perl Haskell Erlang" puts str.colco(:yellow, :blue, :magenta, :red, :yellow, :blue, :red) puts str.colco(:green, :blue, cyclic:true) puts str.colco(:red_bold, regexp:/ruby/i) puts str.colco(:black_magenta, cyclic:true, regexp:/^\w+|[A-Z]/) このデモ的なものを作って宣伝できないかと考えたわけです。 それで「digi_moji」なるツールが生まれました。 で、ステマをしたのですが… わかりやすいREADME.mdの書き方がわかりません。どうしたらいいで

    ターミナルにデジタル式デカ文字を出力する「digi_moji」の紹介
  • Let It Go for Rubyists

    RailsConf 2014」からのワンシーンです。素敵だなあ。 Let Me Code - Liana Leahy - RailsConf 2014 彼女はRailsエンジニアで、かつてはプロの歌い手さんだったようです。 Liana Leahy (lleahy) on Twitter 感動したので歌詞の日語訳をしてみました。雰囲気が伝わればと。 (追記:2014-5-13) 対訳版を追加しました。 Let Me Code Lyrics 対訳版 PCスクリーンが 白く光る夜 The screen glows white on my laptop tonight (Let Me Code) The snow glows white on the mountain tonight (Let It Go) RSpecは グリーンにならない And my rspec won't go gree

    bunnyhop
    bunnyhop 2014/05/10
  • Rubyでワンタイムメソッドを実装して「スパイ大作戦」を敢行せよ!

    Rubyにはシングルトンメソッドと呼ばれる機能があります。これは、特定のオブジェクトにだけ実装されるメソッドのことです。 class User < Struct.new(:name, :age, :job) end charlie = User.new('Charlie', 12, :programmer) liz = User.new("Liz", 15, :teacher) dick = User.new("Dick", 31, :doctor) def charlie.passcode '22360679' end def liz.passcode '17320508' end charlie.passcode # => "22360679" liz.passcode # => "17320508" dick.passcode # => # ~> -:18:in `<main>':

    Rubyでワンタイムメソッドを実装して「スパイ大作戦」を敢行せよ!
    bunnyhop
    bunnyhop 2014/03/16
  • 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

  • Graphvizがドローイングソフトになってしまった件について

    (追記:2014-3-3) Gvizについてのまとめ頁を作りました。 Gvizの目次 - Rubyの世界からGraphvizの世界にこんにちは! GraphvizのRubyラッパーであるGvizというツールを作っておりまして。 gviz | RubyGems.org | your community gem host melborne/Gviz それは、次のようなgraph.ruというファイルを用意して、 route :main => [:init, :parse, :cleanup, :printf] route :init => :make, :parse => :execute route :execute => [:make, :compare, :printf] save :sample

    Graphvizがドローイングソフトになってしまった件について
    bunnyhop
    bunnyhop 2014/01/09
  • 電子書籍「irbから学ぶRubyの並列処理 ~ forkからWebSocketまで」EPUB版をGumroadから出版しました!

    このブログにおける「irbから学ぶRubyの並列処理 ~ forkからWebSocketまで」を電子書籍化し、「Gumroad」を通して販売させて戴くことにしました。 電子書籍「irbから学ぶRubyの並列処理 ~ forkからWebSocketまで」EPUB版 書は、ブログ「hp12c」( http://melborne.github.com/ )における「irbから学ぶRubyの並列処理 ~ forkからWebSocketまで」の記事の電子書籍版であり、チュートリアルに沿ってRubyの並列処理の基礎を理解する内容になっています。 (目次) はじめに 1章 REPL 2章 マルチユーザーREPL 3章 並列化REPL その1 4章 並列化REPL その2 謝辞 文庫換算で30頁相当、DRMフリーです。 価格は100円です。 コンテンツについては、ブログの記事に対し文体の変更、誤記の修

    電子書籍「irbから学ぶRubyの並列処理 ~ forkからWebSocketまで」EPUB版をGumroadから出版しました!
  • エラーメッセージから学ぶRack - Middlewareの魔法

    前回の記事「エラーメッセージから学ぶRack - 最初の一歩」の続きです。 噂によるとRackにはMiddlewareなる魔法があるそうです。そしてRack古文書にはMiddlewareについて次のようにあります。 useの呪文を唱えよ。さすれば扉は開かれん 準備 前回作った、なんちゃってWebフレームワーク「draque」を継続して使います。config.ruが少し長くなったので、Webアプリの体を別ファイルdraque.rbに移します。 #draque.rb module Draque @@routes = { get:{} } def draque(env) path = env['PATH_INFO'] if res = @@routes[:get][path] res.call(env) else [ 404, headers, not_found ] end end def

    bunnyhop
    bunnyhop 2012/08/06
    Rackというのは、棚ではなくて、マトリョーシカである。
  • Rubyのクラスの太った人たち

    前回の記事「Ruby、君のオブジェクトはなんて呼び出せばいいの?」で、Rubyには大量のメソッドがあることが分かりました。今回はその補足として、各クラスごとのメソッド数を数えてグラフ化してみます。 インスタンスメソッドを数える まずは、インスタンスメソッドを数えましょう。グラフ化の対象は、10以上のメソッドを持つクラスです。最初にクラスごとのメソッド数をリストアップします。 klasses = ObjectSpace.each_object(Module) def live(methods) methods.reject { |m| "#{m}".start_with? '_deprecated' } end methods = klasses.map do |k| [k, live(k.methods(false)).size, live(k.instance_methods(false

  • Ruby、君のオブジェクトはなんて呼び出せばいいの?

    Rubyには大量のメソッドがあります。次のコードでRuby1.9.3に含まれるメソッド数を数えたら単純合計で1659個、ユニーク数(同名を1と数えて)で937個と出力されました。 all_methods = ObjectSpace.each_object(Module).flat_map do |c| c.methods(false) + c.instance_methods(false) end.reject { |m| "#{m}".start_with? '_deprecated' } all_methods.size # => 1659 methods = all_methods.uniq methods.size # => 937 つまりRubyには、937個もの異なる名前のメソッドがあるのです。各メソッド名は、その動作や機能を端的に表現したものでなければならないので、その一つ一

  • YOUたち!RubyでinjectしちゃいなYO!

    プログラミングの存在価値は処理の自動化です。任意の集合に対して処理を繰り返しその結果を返す、それがプログラムです。つまり集合に対して処理を繰り返す能力が、プログラムの価値を決定付けるのです1。 「手続き型言語」ではループが処理の繰り返しを実現するための重要な手法の一つです。しかしループは、一時変数を用意してプログラマがループの進行を管理しなければならない、という欠点があります。そしてその管理ミスがバグとなります。 「関数型言語」では再帰が処理の繰り返しを実現するための重要な手法の一つです。再帰では再帰の進行はその構造に基づいて自動的になされるので、プログラマがそれを管理する必要はありません。しかしその一方で、処理が多段階に渡る立体的なものとなるので、その動作の理解が平面的なループ処理に比べて難しいという欠点があります。習得には慣れが必要です。 Rubyは、手続き型言語と関数型言語の両方の側

  • これからRubyを始める人たちへ

    (追記:2012-12-03) 記事を電子書籍化しました。「Gumroad」を通して100円にて販売しています。詳細は文末に追記しましたので、購入ご検討のほどよろしくお願いしますm(__)m 電子書籍「これからRubyを始める人たちへ」EPUB版 Rubyの特徴 Rubyは、まつもとゆきひろ氏(通称Matz)により設計されたオブジェクト指向プログラミング言語です。Rubyの特徴を一言で言うならば、それは「間口が広くて奥が深い言語」ということになります。 「間口が広い」というのは、インタフェースがシンプルで誰でもが簡単に使い始められることを意味します。「奥が深い」というのは、プロフェッショナルによる長期使用に耐えうる物の言語であるということを意味します。「間口が広い」ということと「奥が深い」ということは来競合する概念ではありませんが、その両方をバランスよく組み合わせるには、対象に対する

    bunnyhop
    bunnyhop 2012/04/11
    顔からは想像できないでしょうが、そのデザインセンスは尋常ではありません。
  • 1