Bye Bye Moore

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

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

awesome_printでRubyオブジェクトをさらに見やすくする(その2)

前回紹介したawesome_printは凄まじいgemです。 オブジェクトの可視化に抜群の効果を発揮します。 その上、ppにはないような機能を多数備えています。 オプションを使う 長い出力を中途省略する ap (1..0xffff).to_a, limit: true [ [ 0] 1, [ 1] 2, [ 2] 3,…

awesome_printでRubyオブジェクトをさらに見やすくする(その1)

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アプリの引数をよろしくやる

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(インコタームズ)」

Incoterms(インコタームズ)は、輸出入の責任範囲に関する国際ルールです。航空便での輸出入において最も一般的なのはDAP(Deliver at Place)という、相手国の税関手前まで責任範囲を負うスタイルです。 この場合、輸入に関わる税金や、各種手続きは先方負…

UNIXコマンドのあたまにLANG=Cでデフォルトロケールで実行できる

たまに、 LANG=C minicomみたいな感じで頭に「LANG=C」とかつける奴がありますよね。 これ、デフォルトでは日本語優先状態のコマンドをデフォルト…つまり英語環境で実行してくれるアレらしいのです $ date 2015年 1月27日 火曜日 23時50分39秒 JST$ LANG=C d…

bashのfor文で規則性のある文字列をつくる

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…

LinuxやOS X環境でプロキシ鯖を立ち上げて楽をする

プロキシ鯖を使うと、WEBアプリ開発で何かと開発で楽をできます。 仮鯖を立ち上げて、同一ネットワーク中の他の人に動作検証をお願いしたりだとか。 設定を適切に書き換えれば、社内用のアプリを作る際にも便利です。 OS X用はPow OS X用には、Powという素敵…

スクリプト中でpryを実行してデバッグの手間を減らす

スクリプト中にpryのバインディングポイントを設定することで、 printfデバッグをせずとも変数の状態やらメソッド実行時の挙動やらを調べることができます スクリプト中に記述 $ ruby test2.rb From: /Users/shuzo_kino/test2.rb @ line 4 : 1: require 'pry…

【イベントレポート】SCIS2015

暗号系の学会、SCIS2015に参加してきました SCIS2015 暗号と情報セキュリティシンポジウム 開催場所は福岡県は北九州市のリーガルホテル小倉。 広々とした良いホテルでした。 会場案内はこんな感じ。 プログラムはこちら。 2015年1月20日(火)~ 1月23日(…

rubyでopenCVを使う

rubyでも画像処理の定番ライブラリopenCVを使うことができます。 導入 まずopenCVがなければ導入します。 $ brew install opencv次に、gem「ruby-opencv」を入れます。 導入時にライブラリのインストール先を指示する必要があります。 brewで導入した場合は…

pryの独自コマンドで、日常のシェル芸をちょっと楽にやる

pryには独自のコマンドが実装されており、 うまく使うと時間の短縮になります。 .hogehoge ドットのあとに、代表的シェルコマンドを実行するとそのまんま使えます。 シェル芸やる程ではないけどチョット凝ったことをしたい場合なんかには使い出があるかもし…

sumif関数で否定条件を扱いたい場合は「<>」とする

sumif関数で否定条件を扱いたい場合は「<>」とします。 実際のところ 例えば、Google Spread Sheetで 「別ページ(フォームの回答 1)」にある「F列で"済"」がついていない「D列の合計」を出力したい場合は =sumif('フォームの回答 1'!$F:$F,"<>済", 'フォー…

暗号化やハッシュ値生成で何使うか困ったら「電子政府推奨暗号リスト」を参照してみる

以前の記事で、ハッシュ値を出す関数としてSHA1やMD5を紹介しました。 これらは枯れた技術で扱いやすい反面、破りやすくもあります。 MD5なら2の64乗個、SHA1なら2の80乗個のハッシュ値がない限り衝突はない…はずだったのですが*1、研究が進むにつれて…

rfcommをつかって、Bluetooth機器をシリアル通信機器のごとく扱う

rfcommは遠隔にあるBluetoothを仮想シリアルポートとして認識させるコマンドです。 より正確には、 Bluetoothのプロトコルスタックの一つで、L2CAP(メモ:Bluetooth機器間の通信路。OSIの第二レイヤに相当)上でRS-232Cシリアルポートの転送機能をエミュレ…

minicom内部でminicomを呼び出す際のちょっとした事

minicomで接続した端末の上で更にminicomを起動する際は注意が必要です。特に考えもなくminicom終了コマンド「Command-key x」を実行すると、大元のminicomもまとめて消えてしまいます。これを防止するためには、設定で「Screen & Keyboard」を選択し… オプ…

pryの出力を弄る

Pryの出力はPry#configで色々と弄る事ができます。 たとえば、出力を弄りたい場合上記に加えてprintをつなげた上で、procオブジェクトを渡します。実際に Pry.config.print = proc { |output, value| output.puts "#=> #{value.inspect}" } とやると、 >> 1 …

pry画面から、simple-promptに移行できる

pry起動時にsimple-promptオプションを入れてあげると、 最小表示のpryが立ち上がります。pry画面からもsimple-promptに移行する方法があります。 pry(main)> simple-prompt >> 参考もと pry help

pryのコマンドshow-sourceでメソッドの実装をみてみる

pryのコマンドの一つ「show-source」を使うと、メソッドの実装を確認できます。 素のpryには入っていないので $ gem install pry-docであらかじめ導入しておきます。 組み込みメソッド > show-source String#+ From: string.c (C Method): Owner: String Vis…

apt-getで入れたパッケージをアンインストールする

apt-getで導入したアプリを削除したい場合は、 removeまたはpurgeを使います。 $ apt-get remove bluetooth$ apt-get purge bluetooth後者は設定ファイルごと抹殺します。 参考もと Linux Certif - Man apt-get(8)

Kernel.#at_exitで終了時の挙動を記述する

そう滅多に使うものではないでしょうが…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リテラルは空白区切りで配列を作ってくれる構文です。 %w!hoge huga piyo! #=> ["hoge", "huga", "piyo"] ここで、バックスラッシュを入れてあげると、ちゃんと空白文字を含めた文字列を生成してくれます。 %w!hoge\ huga piyo! #=> ["hoge huga", "piyo"]…

rescue修飾子でエラー時にやる処理を定義

rescue修飾子は、後置きのif同様、処理の後ろに書いてエラー時の挙動を定義できる構文です。 使い方によっては、三項演算子以上にスマートに書くことができます。 1/0 rescue "ゼロ除算ですか? いい根性してますね?" #=> "ゼロ除算ですか? いい根性してま…

CSVパースの際、コンバータは自前で設定できる。

CSVパースの際、時刻や数値をコンバートできる…というネタを扱いました。 なんと、このコンバータは自前で生成できます。パラメータはProcクラスで定義されています。 converter = ->(field, field_info) { return field.upcase rescue field if field_info.…

RubyのCSVパーサには適切なクラスに読み替えてくれる便利オプションがある

CSV形式、便利ですよね。 エクセル方眼紙方式のまま処理するより圧倒的に高速ですし。RubyでCSVを扱うときは、標準添付ライブラリーを使えば良いのですが… なんと、これのパーサにはか適切なデータに読み替えてくれるクラスが標準で搭載されています。 CSV.p…

UNIX系環境でシリアル通信をする際便利なCLIアプリ「minicom」

「minicom」はUNIX系環境でシリアル通信をする際便利なCLIアプリです。 導入 Ubuntu $ apt-get install minicom OSX 事前に必要なライブラリを導入しておかないといけません $ brew install minicom 初期設定 読み込むポートやボーレートは $ sudo minicom -…

git diffをpatchで扱える形式にする

Git

Git diff もpatchコマンドで扱う形式に変換できます。通常のgit diffと併せて、"–no-prefix"のオプションを使います。 このオプションは ”--no-prefix” Do not show any source or destination prefix. とあるように、ファイル名のような情報を表示しないオ…

diffコマンドとpatchコマンドで差分を扱う

diffコマンドとpatchコマンドを使うことで、 差分を楽に扱うことができます。次のようなファイル群があったとします。 $ ls difffile.diff test.txt test_diff.txt $ tail +1 * ==> difffile.diff <== --- test.txt 2015-01-04 21:46:58.000000000 +0900 +++…

テキストファイルをまとめてcat風に表示したい場合、tailを使う手が

tailコマンドは通常、ファイルの末尾数行を表示するコマンドですね。 $ ls difffile.diff test.txt test_diff.txtという構成で、全部表示したい場合、以下のようにやるとファイル名つきで表示してくれます。 $ tail +1 * ==> difffile.diff <== --- test.txt…

osascriptでOS Xのアプリを操作する

mac

osascriptコマンドは osascript -- execute AppleScripts and other OSA language scripts とあるように、AppleScriptというOS Xアプリケーションを操作するスクリプトを実行するコマンドです。そのまんま使う事も可能ですし、 $ osascript -e 'return "hell…

rbenv-gem-rehashを使うと、毎回rehashを打たないで済む

そこで登場するのが、rbenv-gem-rehash。 一度アドオンとして登録すれば、あとはrehashをしなくて済みます。 導入 rbenv 0.4以降の対応なので、 自前の環境を念のため確認。 $ rbenv -v rbenv 0.4.0大丈夫なら、git経由で突っ込みます。 $ git clone https:/…