タグ

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

  • Rubyによる暗黙のFizzBuzzの世界

    class FizzBuzz def self.to_proc ->n{ case 0 when n % 15 then :FizzBuzz when n % 3 then :Fizz when n % 5 then :Buzz else n end } end end puts (1..100).map(&FizzBuzz) # => [1, 2, :Fizz, 4, :Buzz, :Fizz, 7, 8, :Fizz, :Buzz, 11, :Fizz, 13, 14, :FizzBuzz, 16, 17, :Fizz, 19, :Buzz, :Fizz, 22, 23, :Fizz, :Buzz, 26, :Fizz, 28, 29, :FizzBuzz, 31, 32, :Fizz, 34, :Buzz, :Fizz, 37, 38, :Fizz, :Buzz, 41, :Fizz

    keyesberry
    keyesberry 2015/02/19
    ブログを書いたよ! 親切な解説を追加しました。 #ruby #fizzbuzz
  • Ruby de Streem

    のっぴきならない事情で暫くここを離れてたけど 戻ってきたらMatzが新言語を作ってた 僕がいないうちにRubyは捨てられてしまったの? 僕が暫く目を離しているうちに世の中もMatzも変わってしまって もうだれもRubyを愛さなくなってしまったの? matz/streem Streem - stream based concurrent scripting language Streem is a concurrent scripting language based on a programming model similar to shell, with influences from Ruby, Erlang and other functional programming languages. In Streem, a simple cat program looks like th

    keyesberry
    keyesberry 2014/12/15
    ブログを書いたよ! #ruby #streem
  • Ruby的FizzBuzz

    最終鬼畜FizzBuzz大全 - Qiitaに刺激を受けて、Qiitaのほうにポストしてみたんだけど、こちらは解説付きで。 Ruby的FizzBuzz - その1 class FB def FizzBuzz(n) (n%15)==0 end def Fizz(n) (n%3)==0 end def Buzz(n) (n%5)==0 end def self.call(n) instance_methods(false).detect { |m| new.send(m, n) } || n end end (1..100).each { |i| printf "%s ", FB.call(i) } # >> 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz

    keyesberry
    keyesberry 2014/08/10
    ブログを書いたよ! #ruby #fizzbuzz
  • Ruby製サードパーティライブラリgemのトレンドを知るには「BestGems.org」がベスト

    ─質問1─ Ruby製サードパーティライブラリ、要はgemで、何が人気なのかってこと、手っ取り早く知りたいんですけど。 ─回答1─ RubyGems.orgのstatsページを見てください。 ─質問2─ えっ?これだけ?この辺は万年上位で固定でしょ。もうちょっと俺の知らないバラエティに富んだものに出会いたいんだけど。俺、Rails用ないし。 ─回答2─ カテゴリー別ならThe Ruby Toolboxがあります。 The Ruby Toolbox - Terminal Coloring ─質問3─ あんた、俺の質問ちゃんと聞いてるの?カテゴリー別なんて言ってないし。それに、ここのカテゴリーってなんか俺的に信用ないんだよね。取りこぼし多いっていうか..。俺のgem出てこないっていうか..。 ─回答3─ GitHubTrendingでここ最近の人気リポジトリが分かります。 Trending

    Ruby製サードパーティライブラリgemのトレンドを知るには「BestGems.org」がベスト
    keyesberry
    keyesberry 2014/08/08
    ブログを書いたよ! #ruby
  • ターミナルにデジタル式デカ文字を出力する「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」の紹介
    keyesberry
    keyesberry 2014/08/04
    ブログを書きました。 #ruby #gem
  • わかりやすいREADME.mdの書き方がわかりません。どうしたらいいでしょうか(Yawhoo知恵袋) - digi_mojiのステマ

    質問 【ID非公開さん】 GitHubで自作ツールを公開して世界中の人に使ってもらいたいと考えています。でも自分は英語が苦手です。どうしたらいいでしょうか。 ベストアンサーに選ばれた回答 【SOTAさん】 この記事を読んでください。 わかりやすいREADME.mdを書く SOTA ベストアンサー以外の回答 【melborneさん】 ビジュアルに訴えるツールを作って、README.mdをそのスクショで埋めます。英文は最小限に留めましょう。作ったツールがビジュアルに訴えないもののときは、gvizなどのツールを使って説明をビジュアライズしてください。以下にサンプルを示します。 README.mdのサンプル 以下は、チンピラgem作者のmelborneさんのdigi_mojiというツールのREADME.mdです。英語がちょっと怪しいですが、スクショがあることでツールの目的が明確になっています。 d

    keyesberry
    keyesberry 2014/08/04
    ブログを書いたよ! #ruby #readme
  • カラム指向ターミナルカラーライブラリ「colcolor」にcyclicオプションを付けました!

    先日、カラム指向ターミナルカラーライブラリ「colcolor」というのを公開しまして。 Yet Another Terminal Color for Ruby: Colcolorの紹介 colcolor colcolorはStringクラスにcolcoというメソッドを挿します。colcoでは引数として複数の色名を受け取って単語区切りで文字を彩色します。こんな感じです。 require "colcolor" DATA.each_line.with_index do |line, i| puts line.colco(:green, :yellow, :blue, :blue) puts "-".colco(:red) * line.size if i.zero? end __END__ lang year designer Ruby 1993 Yukihiro Matsumoto Lisp

    カラム指向ターミナルカラーライブラリ「colcolor」にcyclicオプションを付けました!
    keyesberry
    keyesberry 2014/07/28
    ブログを書きました。 #ruby
  • RubyでANSIカラーシーケンスを学ぼう!

    CUIの世界は地味な世界です。真っ黒なターミナル画面に単一色の文字列。それが却って落ち着くという向きもありますが、今となってはその地味さは際立っています。 ターミナルで色を使う方法を学ぶことで、新しい世界が開けるかも知れません。 ようこそANSIカラーの世界へ! エスケープシーケンス ターミナルで色を使うためにはエスケープシーケンスというものを利用します。エスケープシーケンスはターミナル上で色を含む特定の制御を実現するための特殊な文字列です。 これによりターミナル上に赤文字で「hello」と出力されます。この”\e[31m” “\e[0m”の部分がエスケープシーケンスです。”\e[31m”はそれ以降を赤文字で出力する制御命令、”\e[0m”はそれ以降を初期状態へリセットする制御命令です。 シーケンス中の数字において、30~37は文字色、40~47は背景色、0~9は文字装飾に割り振られていま

    keyesberry
    keyesberry 2014/07/23
    未だによくアクセスあるので、拙作colcolorの解説追加しました。 #ruby
  • Yet Another Terminal Color for Ruby: Colcolorの紹介

    巷にはターミナル文字のカラー化を楽にするライブラリが溢れています。僕も以前にその幾つかを紹介した記事を書きました。 RubyでANSIカラーシーケンスを学ぼう! にも拘わらずみんな、人の作ったライブラリが自分のテイストに合わないのか、自分用に、しかし他と似たようなものをまた作って、このリストを更に長くしていくという傾向があるようです。RubyGems.orgでcolorを検索してみてください。僕が言っていることが冗談ではないということが分かるでしょう。 これだけ大量のカラー化ライブラリがあるとどれを選ぶべきか皆目わからず、人気どころを2、3試してみてそれらが合わなかったら、他を探すより自分で作ったほうが早い、となるのも頷けます。 え〜、それで、ちょっと言いづらいのですが…。 ご多分に漏れず…。 「Colcolor」というgemを作りましたよ!> まじか。 colcolor melborne

    Yet Another Terminal Color for Ruby: Colcolorの紹介
    keyesberry
    keyesberry 2014/07/14
    もう一本、ブログを書いたよ! #ruby
  • 自分が公開しているgemの日々のダウンロード数が気になって寝られません。どうしたらいいでしょうか(Yawhoo知恵袋)

    質問 【ID非公開さん】 RubyGems.orgでいくつかのチンピラgemを公開してます。それらの人気度が気になって毎日サイトにアクセスしてます。サイトでは個々のgemの総ダンロード数はわかるんですが、僕が知りたいのは、今日どのgemがどれくらいダンロードされたかなんです。これって、知る方法ないですか? ベストアンサーに選ばれた回答 【melborneさん】 「Mygegegems」というgemを使ってください。使い方を説明します。 Mygegegemsの使い方 ターミナルを開いて、gem install mygegegemsでインストールが完了したら、次のようにしてローカルデータをアップデートします。 % mygegegems update Your gems data updated!(/Users/keyes/.mygegegems.yaml) 初めてupdateを実行するとあなた

    keyesberry
    keyesberry 2014/07/14
    ブログを書いたよ! #ruby
  • Ruby的即時関数

    JQuery = Class.new { define_singleton_method(:click) { |name, &blk| blk.(name); } } alias :alert :puts method(def _ _ _.click("Charlie", &->name{ alert "Hello, " + name + "!!" }); end).(JQuery) # >> Hello, Charlie!!

    keyesberry
    keyesberry 2014/07/10
    ブログを書いたよ! #ruby #javascript
  • RubyでObject#dockというのはどうですか?

    Rubyでその必要性は明らかだけれども名前が決まらずに承認されないメソッドというのがあって長く議論が続いているものに「単にselfを返すメソッド」というのがあるよ。 Feature #6373: public #self - ruby-trunk - Ruby Issue Tracking System ruby - Is there a short way to write {|x| x}? - Stack Overflow

    keyesberry
    keyesberry 2014/07/08
    ブログを書いたよ! #ruby #naming
  • GitHubの彼と自分を比べて何になるの?

    過去の自分と今の自分を比べてみてそこに何か変化があったとき、人は生きていることを実感します。UNIXを作った人達は自分たちが生きているということをコンピュータスクリーン上で実感したくて、「diff」というツールを作りました。diffがあれば簡単に一年前の自分と今の自分を比べられるのです。 % diff -u me_in_last_summer.txt me.txt --- me_in_last_summer.txt 2013-07-03 18:17:21.000000000 +0900 +++ me.txt 2014-07-03 18:17:21.000000000 +0900 @@ -1,3 +1,4 @@ My name is Charlie. I can do a handstand. -I hate carrots. +I love carrots. +I speak Japane

    keyesberry
    keyesberry 2014/07/04
    ブログを書いたよ! #ruby
  • Rubyのメソッド引数は奥が深い(その2)または別のフィボナッチ

    ─ 問題 ─ n番目のフィボナッチ数を返すメソッドfibを定義しなさい。但し、メソッドの実装は一文字とする。 解答例は下。 ─ 解答例 ─ def fib(n, m=n==0||n==1 ? n : fib(n-1)+fib(n-2)) m end (1..20).map { |n| fib n } # => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765] def fib(n, m={0=>0,1=>1}.tap{|s|s.default_proc=->h,k{h[k]=h[k-1]+h[k-2]}}[n]) m end fib(1000) # => 434665576869374564356885276750406258025646605173717804024

    keyesberry
    keyesberry 2014/07/02
    ブログを書いたよ! #ruby #fib
  • チリドッグでRubyのヒアドキュメントを良くしよう!

    プロジェクト体でヒアドキュメントを使うことはそんなに多くはないんですが、これがテストでは意外と使われるということがわかってきまして。そうすると、どうしてもこの醜さには耐え難いものがあるんです。 describe ATool::CLI do before do @expected = <<-EOS Hello, Ruby! I'm Here with Dog! Where are You? EOS end ... end

    keyesberry
    keyesberry 2014/06/30
    ブログを書いたよ! #ruby #heredoc
  • RubyのHashの秘密 その3 - ハッシュテーブルの理解

    同姓同名のいない1億人の日人の中から素早く「山田 太郎」を見つけ出して彼と話をしたい。各人の胸には名札が貼ってあるので、「山田 太郎」の名札の付いた人物を見つけ出せばいい。全国を行脚して片っ端に名札を確認していくという手もあるが、恐ろしく時間が掛かることは想像に難くない。最悪で1億人、平均で5000万人の名札の確認が必要となる。したがって事前に彼ら彼女らをなんらかのかたちに整列させるべきだと認識する。かと言って、こちらが持っている情報は彼ら彼女らの名前(姓と名)しかないから順位付けで整列というのは難しい。そこで姓(苗字)によるグループ化を思いつく。つまり各人の名札を「苗字関数」に通して苗字を得、その苗字のために割り当てられた区域に彼ら彼女らを住まわせるのだ。 def 苗字関数(name) name.split(/\s+/).first end name = "山田 太郎" 苗字関数(na

    keyesberry
    keyesberry 2014/06/14
    ブログを書いたよ! #ruby #hash
  • RubyのHashの秘密 その2

    fib = Hash.new { |h,k| h[k] = h[k-1] + h[k-2] } .tap { |h| h.update 0=>0, 1=>1 } t = Time.now puts fib[10] puts fib[100] puts fib[1000] puts "#{Time.now - t} sec" # >> 55 # >> 354224848179261915075 # >> 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795

    keyesberry
    keyesberry 2014/06/12
    ブログを書いたよ! #ruby #fib
  • RubyのHashの秘密

    このHashは普通のHashのように使えるんだけど、そこに機密情報をセットするためのHash#secret=というメソッドを追加するんだ。 h = {} h[:name] = 'Charlie' h[:job] = 'Programmer' h # => {:name=>"Charlie", :job=>"Programmer"} h.secret = 'My-password123' # 機密情報をセット!

    keyesberry
    keyesberry 2014/06/11
    ブログをかいたよ! #ruby
  • earthquake.gemで逆さ書きツイートとか縦書きツイートとか

    昔作った「flippy gem」を元に、「earthquake.gem」用のflip.rbというプラグインを書きました。 gem install flippyした上で :plugin_install https://gist.github.com/melborne/31f81cc17084a0aea7d7 とすれば:flipコマンドが使えるようになります。 オプション無しで逆さ書き、-rオプション付きでそれをさらにリバース、-vオプション付きで縦書きを出力します。 :flip twitter # => "ɹəʇʇᴉʍʇ" :flip -r twitter # => "ʇʍᴉʇʇəɹ" :flip -v FOO\\BAR++ by vertical # => "B F" "A O" "R O by vertical" 縦書きの区切りは\\か全角空白で、例のように++以降は横書きに戻ります。

    keyesberry
    keyesberry 2014/06/01
    ブログを書きました。#ruby #earthquake
  • earthquake.gemのプラグイン管理

    keyesberry
    keyesberry 2014/06/01
    ブログを書きました。#ruby #earthquake