2014-06-01から1ヶ月間の記事一覧
columnは...段組みのテキストデータを綺麗に成型してくれるコマンドです $ cat sample.txt hoga huga piyo 12 3 45 6 7 8 9 a bc てな無茶苦茶なモノがあったとしても $ cat sample.txt | column -s " " -t hoga huga piyo 12 3 45 6 7 8 9 a bcとあっという…
instance_execはinstance_evalと似てますがちょっと違う子です。 > "hoge".instance_eval{ self[0] } => "h" > "hoge".instance_exec{ self[0] } => "h" と、これだとinstance_evalと何が違うの? という感じですが...この子は引数を持つ事ができます > "hoge…
以前書いたtrコマンドで不要文字を抹殺したり小文字を大文字に置換したり。 - Bye Bye Mooreの続きです 複数行の改行を一個だけに絞る $ printf "hoge\nhuga\n\npiyo\n" hoge huga piyo複数の改行が入るとアレですよね。 sedで置換するのも良いですが、 ここ…
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。 Wikipedia日本語版より UNIXライク環境ならば、デフォルトでコマンドが入っ…
カンマ区切りで複数行あるテキストファイル...たとえばcsvみたいなものを切り分ける方法です rubyのsplitみたいな感じで配列に切り分ける方法です $ head sample.txt hoge,huga,piyo foo,bar,bazz 1,2,3read -aをwhileでぶん回して配列にツッコみます。 ...U…
以下のような文字列があったとします。 $ seq -10 10 | sed -e s/^4/hoge/ -e s/^-8/fuga/ -10 -9 fuga -7 -6 -5 -4 -3 -2 -1 0 1 2 3 hoge 5 6 7 8 9 10デフォルトのsortだと、 $ seq -10 10 | sed -e s/^4/hoge/ -e s/^-8/fuga/ -1 -10 -2 -3 -4 -5 -6 -7 …
nextは繰り返し処理を次に送るメソッドです。 コーディング規則によれば、これを使うと、深いネスト化を避ける事ができます。 # 悪い例 Array(1..10).each do |item| if item.odd? puts item end end # => 2 # => 6 # => 10 # => 14 # => 18 # 良い例 Array(…
lambdaはcall以外にも[]で呼び出す事ができます printout = ->(x) { ("*" * 10) << x.to_s << ("*" * 10)} #=> #<Proc:0x007fb58d03ef18@(irb):34 (lambda)> printout['a'] #=> "**********a**********" これはprocも同様です p = proc {|x| puts x} #=> #<Proc:0x007fb58c86c538@(irb):47> p['a'] #=> a ためしにリファレンスを読んで</proc:0x007fb58c86c538@(irb):47></proc:0x007fb58d03ef18@(irb):34>…
以前書いた、railsのinputを生成するヘルパーメソッドです。 def choose_action(key, flag) str = case key when :name "text_field :fund, key".instance_eval { |e| flag ? e << ", value: nil" : e } when :begin_date, :end_date "date_field :fund, key…
とあるパッケージを入れようとした所、エラーがでました。 $ go get github.com/kr/godep go: missing Mercurial command. See http://golang.org/s/gogetcmd package github.com/kr/godep imports code.google.com/p/go.tools/go/vcs: exec: "hg": executab…
enum = (1..7).each_cons(6) #=> #<Enumerator: 1..7:each_cons(6)> > enum.next #=> [1, 2, 3, 4, 5, 6] > enum.next #=> [2, 3, 4, 5, 6, 7] 末尾に達すると、エラーを吐きます。 > enum.next #=>StopIteration: iteration reached an end これはenumratableメソッドであるeachとcycleの特</enumerator:>…
Railsのコードを読んでいたら見つけたのでメモ。 Arrayをわざわざnewしなくとも、連番のデータは実は楽に作る事が出来る、というお話です。 ary = [1,2,3] Array(ary) #=> [1,2,3] Array("str".split("")) #=> ["s", "t", "r"] Array({a: 1, b:2}) => [[:a, …
evalは文字列をスクリプトとして解釈して実行するKernel所属のメソッドです。 これを活用すると、似たメソッドを延々と生成する愚を犯さずに済みます。 更に、文字列を生成して評価する形式であるため、変更に対しても柔軟です。 実際の所 helperに def choo…
今回はインスタンスに紐付けるinstance_evalを扱います。 例 # -*- coding: utf-8 -*- class EvalTest attr_accessor :val_a, :val_b def initialize @val_a = 10 @val_b = "test" end private def private_method ' hello from private_method' end end 使…
evalを使うと、式を実行することができます。 > eval "1 + 1" #=> 2 この程度だとあまり旨みがありませんが... なんと、これを使うことで動的にメソッドを定義することもできます %w(hoge huga).each do |val| eval <<-EOM def method_#{val} %q( From the #…
inspectメソッドはオブジェクトを人間が読める形にした文字列として返します。 Ruby2.0系から、to_sに代わりirbの出力で用いられています。 > 0x11.inspect #=> "17" ぱっと見to_sのようです。 が、これは全ての基礎となっているObjectクラスに実装されたメ…
seqのように連続数を $ jot 10 1 10 1 2 3 4 5 6 7 8 9 10ランダム値の場合は「r」オプションを。 $ jot -r 10 1 10 4 2 2 8 3 8 10 5 3 3 $ jot -r 10 1 10 8 9 2 5 7 2 2 2 3 2連続する16進数を表示するのも楽々。 $ jot -w 0x%x 10 20 0x14 0x15 0x16 0x1…
readコマンドで標準入力から変数を代入する - Bye Bye Mooreで配列で突っ込む方法を紹介しました。この突っ込んだデータをアレコレする方法がわかったのでメモします。 $ read -a Words <<< 'as you like'とやった場合 全てのデータを表示させるには $ echo …
2014/8/7追記: Enumeratorクラスのwith_indexメソッドの方が美しいです。each_char.each_with_indexなんて泥臭い事をせずとも...with_indexがあるんじゃよ - Bye Bye Moore > str = ('a'..'z').to_a.join => "abcdefghijklmnopqrstuvwxyz" という文字列があ…
止むを得ず、観賞魚(熱帯魚、金魚、錦鯉etc...)の飼育を諦めなければならないケースもありますよね。 たとえば、海外への引っ越し、破産等々による経済環境の激変、あるいはオーナーさんの逝去等々。 こういった場合、業界団体である日本観賞魚振興事業協…
sedは文字列置換以外にも、不要な行を削除するのにも使えます。 $ seq 1 10 | sed -e "1 ,3d"4 5 6 7 8 9 10headとtailでも似た事ができますが、コッチの方が楽なケースもありそうですね。 参考もと man sed
readは標準入力から変数を代入するコマンドです。 $ read Hoge <<< 'as' $ echo ${Hoge} asそもそもは標準入力と連動して動くものです。 以下のようなbashスクリプトを組み #!/bin/bash ## hoge.sh # single 'read' statement can set multiple variables. e…
単にコマンドへ文字列を渡したいだけのケースって結構多いですよね。 bash系では、そういった要望にお答えする手法「ヒアストリング」が用意されています。 これを使えば毎回毎回echoやprintfをつかって文字列を生成する必要がなくなるわけです。 $ tr a-z A…
ドキュメント中のコメントに $$ hoge $$ $$ huga $$なんて出力をしたい場合、 今迄は一行毎に $ echo ' $$ hoge $$' $ echo ' $$ huga $$'とやるか、ヒアドキュメントで $ cat << 'EOS' > $$ hoge $$ > $$ huga $$ > EOSなんてやってました。 毎回毎回、定型…
mkdirしたら、すぐ移動したいのが人情というものです。 ぱっと思いつく泥臭い方法は mkdir=>C-rで履歴辿り=>mkdirを消してcd といった感じでしょうか。 ここでbashの組込み変数を使うと若干楽にできます。 今回使う「$_」には、最新のパラメータが格納されて…
chunkは意味合い単位で区切ってEnumratorして返してくれるメソッドでした。 今回紹介するgroup_byは条件毎に振り分けてハッシュで返してくれるメソッドです。まずは基本のtrue/false (1..10).map.group_by{|i| i > 2} #=> {false=>[1, 2], true=>[3, 4, 5, 6…
参考もと様の記事を眺めていたところ、chunkというメソッドを発見。 チャンクという位ですから、意味合いレベルのカタマリを作ってくれるものと考えられます。 試しに公式を見に行ったところ 要素を前から順にブロックで評価し、その結果によって 要素をチャ…
「Go Web 编程」はGo言語でWebアプリケーション(Web 编程)を開発する書籍です。全文・画像共にCC BY-SA 3.0 License(いわゆるクリエイティブコモンズ)で公開されています。 書籍版もは2013年5月末に大陸中国で出版されたようす。 有志(?)による日本…
ライブラリを導入し $ go get github.com/garyburd/redigo/redis$ #{おこのみのエディタ} hello-go-redis.goとやって、以下のコードを入力します。 package main import "fmt" import "github.com/garyburd/redigo/redis" func main() { //INIT OMIT c, err …
Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. RedisはいわゆるNonSQLの類で早いとの噂。 データをインメ…