2015-01-01から1ヶ月間の記事一覧
前回紹介したawesome_printは凄まじいgemです。 オブジェクトの可視化に抜群の効果を発揮します。 その上、ppにはないような機能を多数備えています。 オプションを使う 長い出力を中途省略する ap (1..0xffff).to_a, limit: true [ [ 0] 1, [ 1] 2, [ 2] 3,…
awesome_printはREPL(IrbとかPry)においてRubyオブジェクトを見やすくするgemです。 有名どこはpやppがありますね。 導入法 $ gem install awesome_print 実際のところ まずは、pの表示を見てましょう。 p [ false, 42, %w(forty two), { :now => Time.now, …
slopでCLIアプリの引数をよろしくやるgemです。 require 'slop' opts = Slop.parse do |o| o.banner = "usage: connect [options] ..." o.string '-h', '--host', default: "localhost" o.integer '-p', '--port', default: 80 o.on '--version', '-v' do pu…
Incoterms(インコタームズ)は、輸出入の責任範囲に関する国際ルールです。航空便での輸出入において最も一般的なのはDAP(Deliver at Place)という、相手国の税関手前まで責任範囲を負うスタイルです。 この場合、輸入に関わる税金や、各種手続きは先方負…
たまに、 LANG=C minicomみたいな感じで頭に「LANG=C」とかつける奴がありますよね。 これ、デフォルトでは日本語優先状態のコマンドをデフォルト…つまり英語環境で実行してくれるアレらしいのです $ date 2015年 1月27日 火曜日 23時50分39秒 JST$ LANG=C d…
bashのfor文では、多重配列っぽいものを渡すことができます。 これを利用すれば規則性のある文字列をつくることが可能です。 実際のところ $ for n in {1..10}{a..f}; do printf "%03s\n" $n; doneというコマンドは 01a 01b 01c 01d 01e 01f 02a 02b 02c 02d…
プロキシ鯖を使うと、WEBアプリ開発で何かと開発で楽をできます。 仮鯖を立ち上げて、同一ネットワーク中の他の人に動作検証をお願いしたりだとか。 設定を適切に書き換えれば、社内用のアプリを作る際にも便利です。 OS X用はPow OS X用には、Powという素敵…
スクリプト中にpryのバインディングポイントを設定することで、 printfデバッグをせずとも変数の状態やらメソッド実行時の挙動やらを調べることができます スクリプト中に記述 $ ruby test2.rb From: /Users/shuzo_kino/test2.rb @ line 4 : 1: require 'pry…
暗号系の学会、SCIS2015に参加してきました SCIS2015 暗号と情報セキュリティシンポジウム 開催場所は福岡県は北九州市のリーガルホテル小倉。 広々とした良いホテルでした。 会場案内はこんな感じ。 プログラムはこちら。 2015年1月20日(火)~ 1月23日(…
rubyでも画像処理の定番ライブラリopenCVを使うことができます。 導入 まずopenCVがなければ導入します。 $ brew install opencv次に、gem「ruby-opencv」を入れます。 導入時にライブラリのインストール先を指示する必要があります。 brewで導入した場合は…
pryには独自のコマンドが実装されており、 うまく使うと時間の短縮になります。 .hogehoge ドットのあとに、代表的シェルコマンドを実行するとそのまんま使えます。 シェル芸やる程ではないけどチョット凝ったことをしたい場合なんかには使い出があるかもし…
sumif関数で否定条件を扱いたい場合は「<>」とします。 実際のところ 例えば、Google Spread Sheetで 「別ページ(フォームの回答 1)」にある「F列で"済"」がついていない「D列の合計」を出力したい場合は =sumif('フォームの回答 1'!$F:$F,"<>済", 'フォー…
以前の記事で、ハッシュ値を出す関数としてSHA1やMD5を紹介しました。 これらは枯れた技術で扱いやすい反面、破りやすくもあります。 MD5なら2の64乗個、SHA1なら2の80乗個のハッシュ値がない限り衝突はない…はずだったのですが*1、研究が進むにつれて…
rfcommは遠隔にあるBluetoothを仮想シリアルポートとして認識させるコマンドです。 より正確には、 Bluetoothのプロトコルスタックの一つで、L2CAP(メモ:Bluetooth機器間の通信路。OSIの第二レイヤに相当)上でRS-232Cシリアルポートの転送機能をエミュレ…
minicomで接続した端末の上で更にminicomを起動する際は注意が必要です。特に考えもなくminicom終了コマンド「Command-key x」を実行すると、大元のminicomもまとめて消えてしまいます。これを防止するためには、設定で「Screen & Keyboard」を選択し… オプ…
Pryの出力はPry#configで色々と弄る事ができます。 たとえば、出力を弄りたい場合上記に加えてprintをつなげた上で、procオブジェクトを渡します。実際に Pry.config.print = proc { |output, value| output.puts "#=> #{value.inspect}" } とやると、 >> 1 …
pry起動時にsimple-promptオプションを入れてあげると、 最小表示のpryが立ち上がります。pry画面からもsimple-promptに移行する方法があります。 pry(main)> simple-prompt >> 参考もと pry help
pryのコマンドの一つ「show-source」を使うと、メソッドの実装を確認できます。 素のpryには入っていないので $ gem install pry-docであらかじめ導入しておきます。 組み込みメソッド > show-source String#+ From: string.c (C Method): Owner: String Vis…
apt-getで導入したアプリを削除したい場合は、 removeまたはpurgeを使います。 $ apt-get remove bluetooth$ apt-get purge bluetooth後者は設定ファイルごと抹殺します。 参考もと Linux Certif - Man apt-get(8)
そう滅多に使うものではないでしょうが…Kernel.#at_exitを使うと、終了時の挙動を記述することができます。 $ pry [1] pry(main)> at_exit {puts "出かける時は鍵を忘れずにね(戒め)"} => #<Proc:0x007fabc1be71b0@(pry):1> [2] pry(main)> "hoge" + "fuga" => "hogefuga" [3] pry(main)> </proc:0x007fabc1be71b0@(pry):1>…
%wリテラルは空白区切りで配列を作ってくれる構文です。 %w!hoge huga piyo! #=> ["hoge", "huga", "piyo"] ここで、バックスラッシュを入れてあげると、ちゃんと空白文字を含めた文字列を生成してくれます。 %w!hoge\ huga piyo! #=> ["hoge huga", "piyo"]…
rescue修飾子は、後置きのif同様、処理の後ろに書いてエラー時の挙動を定義できる構文です。 使い方によっては、三項演算子以上にスマートに書くことができます。 1/0 rescue "ゼロ除算ですか? いい根性してますね?" #=> "ゼロ除算ですか? いい根性してま…
CSVパースの際、時刻や数値をコンバートできる…というネタを扱いました。 なんと、このコンバータは自前で生成できます。パラメータはProcクラスで定義されています。 converter = ->(field, field_info) { return field.upcase rescue field if field_info.…
CSV形式、便利ですよね。 エクセル方眼紙方式のまま処理するより圧倒的に高速ですし。RubyでCSVを扱うときは、標準添付ライブラリーを使えば良いのですが… なんと、これのパーサにはか適切なデータに読み替えてくれるクラスが標準で搭載されています。 CSV.p…
「minicom」はUNIX系環境でシリアル通信をする際便利なCLIアプリです。 導入 Ubuntu $ apt-get install minicom OSX 事前に必要なライブラリを導入しておかないといけません $ brew install minicom 初期設定 読み込むポートやボーレートは $ sudo minicom -…
Git diff もpatchコマンドで扱う形式に変換できます。通常のgit diffと併せて、"–no-prefix"のオプションを使います。 このオプションは ”--no-prefix” Do not show any source or destination prefix. とあるように、ファイル名のような情報を表示しないオ…
diffコマンドとpatchコマンドを使うことで、 差分を楽に扱うことができます。次のようなファイル群があったとします。 $ ls difffile.diff test.txt test_diff.txt $ tail +1 * ==> difffile.diff <== --- test.txt 2015-01-04 21:46:58.000000000 +0900 +++…
tailコマンドは通常、ファイルの末尾数行を表示するコマンドですね。 $ ls difffile.diff test.txt test_diff.txtという構成で、全部表示したい場合、以下のようにやるとファイル名つきで表示してくれます。 $ tail +1 * ==> difffile.diff <== --- test.txt…
osascriptコマンドは osascript -- execute AppleScripts and other OSA language scripts とあるように、AppleScriptというOS Xアプリケーションを操作するスクリプトを実行するコマンドです。そのまんま使う事も可能ですし、 $ osascript -e 'return "hell…
そこで登場するのが、rbenv-gem-rehash。 一度アドオンとして登録すれば、あとはrehashをしなくて済みます。 導入 rbenv 0.4以降の対応なので、 自前の環境を念のため確認。 $ rbenv -v rbenv 0.4.0大丈夫なら、git経由で突っ込みます。 $ git clone https:/…