Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

2014-09-01から1ヶ月間の記事一覧

each_with_objectを使ったHash生成

またしても魔界記法の記事です。すみませんeach_with_objectはブロックに値を渡して回すメソッドです。 普通はこんな感じで使います %w(as you like).each_with_object("hoge").map(&:+) => ["ashoge", "youhoge", "likehoge"] ここで、objectとしてHashをも…

配列の要素取得のアレコレ

配列の要素取得にも範囲指定がつかえます。 (:a..:z).entries[3..6] #=> [:d, :e, :f, :g, :h, :i] (:a..:z).entries[3...6] #=> [:d, :e, :f] 末尾を含めるパターンは以下の内容と同等です (:a..:z).entries[3,6] #=> [:d, :e, :f, :g, :h, :i]

format記法にhashを渡してキーから文字列を生成する

format記法にhashを渡してキーから文字列を生成する方法があります。 format("%<foo>04b %<bar>05d", {foo:1, bar:2}) #=> "0001 00002" format("%<foo>#04b %<bar>05d", {foo:1, bar:2}) #=> "0b01 00002" ネストしたhashを扱うのは相当に難しいです。 あえてやるとすれば hash </bar></foo></bar></foo>…

centerやljustを使うと文字列寄せができる

center p "MYNAME".center(40, "-*") #=> "-*-*-*-*-*-*-*-*-MYNAME-*-*-*-*-*-*-*-*-" ljust p " MyName ".ljust(20, "*") #=> " MyName ************" rjust "MyName".rjust(20,"*") #=> "**************MyName"

メソッドの動的定義で似たメソッドをスマートに定義

似た内容の違う名前なメソッドを定義するケース、結構ありますよね。 こんな時は動的定義が生きてきます。キモは、次のdef_eachメソッドです。 instance_execとブロックを使って格好よく処理します class Class def def_each(*method_names, &block) method_…

Rangeにもentriesがある

Dirなんかにも付属してるentriesメソッドですが・・・Rangeにも付属しています。 正確には、Enumerableにくっ付いたメソッドですが。 (1..9).entries #=> [1, 2, 3, 4, 5, 6, 7, 8, 9] 返ってくるのは配列なので、そのままメソッドチェインに繋げる事ができ…

aws-sdkをつかってAWSの便利機能をRubyから扱う

aws-sdkを使うと、Amazon Web ServiceをRuby経由で使う事が可能になります。 導入 gem install aws-sdkまた、使う為にはAWSで設定したアクセスキー、シークレットキー、そして利用リジョンの設定が必要です AWS.config(access_key_id: '...', secret_access_…

brewで入れたImageMagickが上手く動かないときは

rmagick gemを弄っていたところ、 ImageMagick標準装備である筈のdisplayコマンドが存在しないという旨のメッセージが出ましたというわけで調べた所、やはり情報が。ImageMagickのレシピを自力で改造する必要があるとの事。 $ cd /usr/local/Library/Formula…

lsofで動作中のプロセスやファイルの詳細を調べる

lsofは動作中のプロセスの詳細を調べるコマンドです便利なコマンドですが、深い所まで手を突っ込むため、sudoで実行する必要があります。 また、全プロセス見に行くので結構重いのが難点です。httpdを動かした状態でやると $ sudo lsof -i -n -P | grep LIST…

地理情報や郵便番号の検索ができるGem「Geocoderで遊ぶ」

Geocoderは既存APIをつかって地理情報を検索できる便利Gemです 導入 $ gem install geocoder 基本的な使い方 Geocoder.configure(language: "ja", units: "km", :lookup => :google) => {:timeout=>3, :lookup=>:google, :ip_lookup=>:freegeoip, :language=…

Structで構造体なデータを扱う

StructはRubyで構造体なクラスを扱うときに使えます。 使い方がちょいと特殊です。 class Point < Struct.new(:x, :y) def +(other_object) Point.new(x + other_object.x, y + other_object.y) end end => :inspect a = Point.new(1,3) #=> #<struct Point x=1, y=3> b = Point.new</struct>…

Pash... Widows Power Shell「風」CUIをMacOSXで使う

http://ascii.jp/elem/000/000/608/608166/ https://github.com/mono/monodevelop https://github.com/Pash-Project/Pash

【読書メモ】あのメニューが生まれた店

あのメニューが生まれた店 (コロナ・ブックス)作者: 菊地武顕出版社/メーカー: 平凡社発売日: 2013/11/22メディア: 単行本この商品を含むブログ (2件) を見るハヤシライスからタコライスまで、聞いたことがあるような有名料理元祖の店を取材した本です私の好…

web-modeをつかってerb入りのhtmlでもちゃんとハイライトさせる

web-modeはerbのような埋め込み式スクリプトとhtmlを共存させてハイライトやらインデントを宜しくやってくれる拡張です 導入 2016年6月追記: emacs24以降であれば、package.elがあるので M-x package-install [RET] web-mode [RET] でいけます。 以下、古い…

dash.elをつかってイマドキなリスト操作

Lisp系のご多分に漏れず、Emacsもリスト型データを基本として扱います。 そのリスト型をイマドキな感じのメソッドで操作できるのが、このdash.elです。例えば、Rubyでもお馴染みのmapなんかがあります ...emacs lispを書き慣れていないせいか、lambdaやらit…

関数にリンクを貼りたいだけの時はdefalias、細工をしたければdefadvice

defaliasは名前の通り、メソッドにエイリアスを貼るもの。 もう一方のdefadviceは対象メソッドの挙動を途中で奪ったり後始末にプラスαしたりするメソッドです。 defalias (defalias 'yes-or-no-p 'y-or-n-p) 挙動は素直ですし、それ以上の事はできません。 d…

特別な拡張を使わずinit.elを分割して別ファイルにする

init.el単体でやっていたのですが、良い加減量が増えてきた感があったので 分割する方法を調べてみました。次のようなディレクトリ構造の場合 .emacs.d/ init.el custom/ 01ruby.el 02org.elinit.elを (add-to-list 'load-path "~/.emacs.d/custom") .. .. (…

GO用の全部のせフレームワークRevelでWEBアプリをつくる

GO言語にも、Railsのような全部のせWEBフレームワークがあります。 導入 これもgo getで楽々導入です。 go get github.com/revel導入が完了すると、$GO_PATH/src以下にサンプルが展開されます。試しにチャットアプリを動かしてみます。 $ revel run github.c…

Array#packが良い感じにコワイ

packは配列の中身を一定のルールで成型した文字列で返すメソッドです。変換記号は色々と暗号めいていますが... 慣れると、色々なデータ型をスイスイ精製できます。 Rubyの特性上、配列はカッコで括るだけですから楽チンですし 狙える局面では積極的にやって…

railsアプリを作った筈なのにアパッチのトップしか表示されなかったら...enforceが正常に働いてないかも

以前、習熟ついでにApacheで動作するrailsアプリを作りました。 今どうなってるかなと様子を見た所...トップページにはApacheのテストページしか表示されていません。 何の事は無く、SELinuxのenforce設定がリセットされているだけでした。 $ getenforce Enf…

監視レスな検索エンジンDuckDuckGoをRuby経由で使う

DuckDuckGoプライバシー重視なオープンソース検索エンジンです。 Emacs Wikiなんかでは標準の検索エンジンになっていますね。 利用ユーザの情報を保存しないため、高い安全性を誇ります。 原理上はAさんとBさんが同じ検索ワードで検索をかけても同じ結果がで…

大小アルファベットの中から適当な一文字を抽出する

前回の記事のように大小アルファベットの配列を作り... basedata = [('A'..'Z').to_a,('a'..'z').to_a].flatten shuffleでかき混ぜてtakeなりpopなりで一個取り出し出します。*1 非破壊なので元の配列はちゃんと52個を維持しています。 10.times { p basedat…

('A'..'z')とやればアルファベット一式になると思った? 残念! asciiコード順でした!

アルファベット一式をRangeで生成しようとしたところ... ('A'..'z').to_a #=> ["A", "B", ... , "Y", "Z", "[", "\\", "]", "^", "_", "`", "a",... ,"y", "z"] と何やら意図しない記号が入っていました。 RubyのRangeはあくまでAsciiコードに則った範囲指定…

見知らぬ国へ行く羽目になったら指さし会話帳を買ってみよう

雑談の流れでフと思い出したので記事化します旅の指さし会話帳11 ベトナム(ベトナム語) [第2版] (旅の指さし会話帳シリーズ)作者:池田 浩明情報センター出版局Amazon学会なり出張なりで見知らぬ国へ行く羽目になったら、 この「指さし会話帳」シリーズが大活…

active_supportのClass#subclassesで継承先を調べる

require 'active_support/core_ext/class'すると使えます。たとえば、Integerにやると Integer.subclasses # => [Fixnum, Bignum]のように、継承した先が出てきます。自作クラスでも同様です。 class Foo; end class Bar < Foo; end class Baz < Bar; end cl…

AWSのアクセスキーを作る

今回はAWSのアクセスキーを作る方法です 右下の「Create」を押すだけで一発。なお、デフォルトでは2個までしか作る事ができないようです。 生成後に右下に「DownLoad」があるので、これを押すとcsvファイルが手に入ります。 また、中段の所に「Show User Se…

aws-cliでCUIからAWSを操作する

aws-cliはPython製なので、pipで導入します。 $ pip install awsclivirtualenvを入れていない方は先に用意しておいて下さい。コマンドそのものは、これで完了です。 中身をちゃんと操作したい場合は別途、環境変数を設定する必要があります。 とりあず、直接…

YAML::StoreでYAMLファイルを弄り倒す

YAML::Storeはブロック内で実際美しいYAMLファイルを生成できるライブラリです。 準備 require "yaml/store" store = YAML::Store.new 'list.yaml' #=> #<Psych::Store:0x007ff962926888 @abort=false, @filename="list.yaml", @lock=#<Mutex:0x007ff962926770>, @opt={}, @thread_safe={}, @ultra_safe=false> データ投入 ブロックの中で記述。ブロック変数不要。</psych::store:0x007ff962926888>…

Amazon Route 53でGoogle Business用GmailのMXレコードを貼りたい場合

Gmailのビジネスアカウント用にMXレコードを貼ろうとしたところ... といつまで経っても反映される気配がありません。 反映する情報はコレなのですが... 参考サイトの多くはサブドメインとして"mail"をくっ付けています。 が 実際には不要で空白にしておけば…

Object#tapで初期値を叩き込んだり、インスタンスの状態を見たりする

tapはselfをブロック引数としてアレコレしてくれます。配列なら Array.new.tap do |ary| ary[0] = 1 ary[1] = 3 end #=> [1, 3] ハッシュでも Hash.new.tap do |h| h[:first] = 1 h[:second] = 2 end #=> {:first=>1, :second=>2} インスタンス変数だって cl…