Bye Bye Moore

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

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

arityメソッドで必要な引数を調べる

Methodクラスのインスタンスメソッド(書いてて意味分からなくなりますが)に、 arityという便利なものがあります。 これは、メソッドが持つ引数を返してくれるスグレモノです。 (*N)のような、複数個持つ系のものは-1を返します。本文のサンプルそのまんま…

台湾のトイレもやっぱり流せなかったという話

台湾に来ています 日本とベトナムを足して割ったような感じです 台湾トイレも紙禁物 台湾トイレはこちら 下水インフラはベトナムとドッコイですねぇ 毎度お馴染み汚物入れ 台湾を代表する博物館である、故宮博物館でもkonozamaなので台湾全土で駄目な可能性…

catコマンドは猫じゃない

cat(コマンド|猫)にまつわるエトセトラです。 ……何の意味もないのですが、書かずにいられなかったので cat (UNIX) CATenateの略。キャットでなく、カット。 ファイルを表示したり、文字列を出したりできる便利なUNIXコマンド。 UUOC(Useless Use of cat) c…

-Cオプションで所定ディレクトリに移動してからスクリプトを実行する

# test.rb p Dir.getwd という単純なrubyスクリプト「test.rb」が「~/src」に置いてあったとします。Homeディレクトリ(例では"/Users/shuzo")にいる時、このコードを実行するにはどうしたら良いでしょうか? cdで泥臭く移動する手もありますが…… 以下のよう…

emacsで文字カウント

emacsで文字数をカウントするには、 リージョンを選択した上で M-=としてあげればおkです。 これは、 M-x count-lines-regionのエイリアス(?)です。実行すると Region has 6 lines, 32 words, and 177 characters.といった感じの出力を得ます。 参考もと …

mrubyでもsqliteを使うよ!

以前、rubyからsqliteを使うという記事を書きました。 ……rubyで行けるという事は、mrubyでも多分行けますよね。はい。行けました。サンプルはこちらから。本体コードは僅かに15kbyte。コンパイルすれば更に減ります。 SQLite自体、アプリケーションに組み込…

lsusb...USBの状態を知るコマンド

Linux系ではlsusbというコマンドでUSBの状態を知る事が出来ます。 Raspberry Piに XBeeのUSBドングル USB-HUB 無線LANドングル を繋いだ状態でやると、次のような出力になります。 $ lsusb Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bu…

ライブラリ「un」で依存性のないUNIXコマンドが使える

unライブラリを使うと、基本的UNIXコマンドを依存性を気にせず使えます。 library un要約 Unix の基本コマンドの代替となるユーティリティ。 Makefile 内でシステムに依存しないように用意されました。 mkmf が使用します。 含有リスト ruby -run -e cp -- […

RubyでXivelyにデータを放り込む

今回は、生成済みFeedにRubyスクリプトでデータを飛ばす方法を紹介します。 下準備 XivelyにDeviceのFeedを生成 上記にsensor1、sensor2というチャンネルを生成 gem 「xively-rb」を入れる。*1 コード 次のコードでは、ランダム値を10秒毎に10回送ります。 r…

each_with_objectで遊ぶ

each_with_objectには、文字通りオブジェクトを持たせてeachをブンまわすことができます。 以前も扱った内容ですが……ちょっと理解が深まったので再度。 文字列 > ('a'..'z').each_with_object("") {|i,a| a << i.upcase} => "ABCDEFGHIJKLMNOPQRSTUVWXYZ" p …

lambdaの別名「->(x)」

lisper御用達のメソッドといえば、lambdaですね。 許容可能なLispなんて呼ばれることもある、Rubyも当然使えます。 1.9系以降では、使いやすくなるように->という別名が与えられています。 ->(a,b){ p [a,b] } は lambda{|a, b| p [a, b] } と同じ意味です。…

caseで継承を使わず自前クラスを評価してみる

「==」と「===」はクラスにより挙動が異なる場合があります。 例えば、Stringクラスならば > "str" === String => false > "str" == String => false > String === "str" => true > String == "str" => false という動きになります。case文の場合、判定に「=…

クラス中で「===」、「[]=」演算子の定義

class SS def []= a,b,c b + c end def === a a == 42 ? true : false end def + a 42 end end => nil > ss = SS.new => #<SS:0x007fed122ac7e8> > ss[0,1] = 2 => 2 > ss[0] = 1,2 ArgumentError: wrong number of arguments (2 for 3) > ss === 42 => true > ss === 9 => false </ss:0x007fed122ac7e8>…

sliceで先頭を除いた配列を返す(cdrっぽい事をする)

単にcdrっぽい事をしたい場合、 dropを使った方がシンプルになります。 コチラの記事を参照 配列系では、-1は末尾を示します。 sliceで-1を指定すると、末尾を返してくれます。 あらかじめサイズを知ってる必要がないので楽で良いですね。 > [1,2,3].slice(-…

Xivelyが凄すぎて開発するのが辛い(サンプルアプリ紹介)

IoT業界の殺し屋と個人的に認定しているXivelyについてです。 前回の記事では登録までを扱いました。 あれだけでは、凄さがわからないと思うので、今回は一歩進んで実際にサンプルアプリの内容を紹介していこうと思います。 step1 サンプルアプリケーション…

Rangeで最大値を含みたくないときは「...」が使える

繰り返しやcase文の条件式でとっても便利なRangeクラス よくある入門書では「A..B」が紹介されてますね > b = (1..3) => 1..3 > b.each {|i| puts i} 1 2 3 => 1..3 こいつにドットをもう一個追加すると最大値を除外することができます > a = (1...3) => 1..…

gnuツールチェインを使うならUNIXライク環境に移行しませう

UNIXライク環境に乗り換え 以前の記事で、コマンドプロンプトでmakeを扱う方法について扱いました。 が、あれっきりコマンドプロンプトでのmakeはやってません。 というのも、それからすぐにUNIXライク環境に乗り換えたからです。 オススメ:gnupack 具体的…

【Unity系TDD】TEST_ASSERT_EQUALは便利でもなるだけ使わない。

C TDD

TEST_ASSERT_EQUALはINT型の計算結果を返します。 公式ドキュメントによればTEST_ASSERT_EQUAL_INTと同じ意味合いらしいです。 ……というわけで #define END_FLAG 0b11111111 int8_t result = END_FLAG; というコードに対して TEST_ASSERT_EQUAL(END_FLAG, re…

Mac OS XでCLIからapplication-modeなChromeを起動する。

mac

普通に起動したい方はこちらの記事を参照。 2015/12/13 もっとモダンな環境が出てました shuzo-kino.hateblo.jp 前準備 複数アカウントでChromeを動かす前準備です。 すでに実施してる方は必要ありません。設定画面を開いてアカウント作成をクリック アイコ…

Procクラスを使って多変数な文字列を楽に生成する

今日はProcを使って文字列を作ります。 > b = proc {|x, y, z| "%s %s %s" % [(x||"0"),(y||"0"),(z||"0")] } => #<Proc:0x007fb063c00dd0@(irb):10> > b.("as","you","like") => "as you like" > b.("as","you") => "as you 0" これがlambdaだと、引数チェックが厳密なので上手く行きません</proc:0x007fb063c00dd0@(irb):10>…

Procの結果を受け取りたいなら===を使う

Proc.newの実行結果を受け取る Procクラスの結果を受け取りたいときには、===を使います。 $ irb > buff = Proc.new { puts "u" } => #<Proc:0x007fb063c3a008@(irb):1> > buff === Proc.new { puts "u" } u => nil > c = Proc.new {|a,b| a * b } => #<Proc:0x007fb063901ff8@(irb):33> > c === [10, 8] => 80 lambdaの挙動</proc:0x007fb063901ff8@(irb):33></proc:0x007fb063c3a008@(irb):1>…

Mac OS X環境のGoogle ChromeをCLIから起動する

mac

open "/Applications/Google Chrome.app" 'http://google.com/'です。 既に実行しているインスタンスがあると、そこに窓を開いて表示してくれます。 今更ですが、openてMacの独自コマンドなんですね。 フツーにstartと使い分けてた癖に気付きませんでした( …

IoT向けクラウドストレージ「xively(ザイブリー)」はセンサネット業界の破壊神?

xively(ザイブリー)という名前*1のIoT向けクラウドストレージがあります。 API経由でデータを送信すればグラフ化まで勝手にやってくれるという素敵サービスです。 アカウント取得・並びに5個のデータ転送までなら無料。(取得法は後述) このシステムは今ま…

Bluetooth(=802.15.1)とZigBee(=802.15.4 + α)の使い分け

Bluetooth4.1が出たそうです。 IPv6に対応するため、IoT(Internet of Things)にデフォで対応します。 ANTのような、BAN(Body Area Network)で使う分には大活躍が期待されます。 が……上記記事で言われているような、大規模計測には流石に向いていないように思…

pkill、pgrepが便利すぎて全僕が泣いた

実行中のrailsプロセスを抹殺する場合 ps | grepでrailsを探す*1 プロセス番号をコピペ kill -9で爆発四散! という流れをとっていました。 巷の入門サイトなんかでも、よくある解説ですね。 ですがまぁ……創造的怠惰に手足が生えたようなUNIXハッカーの事、…

Ruby組み込みのTCPServerを使って今日の天気をCLIに出す

微妙に昨日の続きです。 Ruby組み込みのTCPServerを使って今日のお天気をCLIに出すスクリプトです。 デーモンとして起動し、telnetで繋いで結果を貰います。 loopで読み出してるので若干不安でしたが、一応コネクションをしないと処理を止めてくれるみたいで…

タダで天気のYAML形式データを生成Rubyワンライナー

お天気ワンライ……ナぁ……? $ ruby -r json -r yaml -e 'YAML::dump((JSON.parse!(`curl http://weather.livedoor.com/forecast/webservice/json/v1?city=130010`))["forecasts"], $stdout)'……Mac Book Air の13インチの画面には収まったからワンライナーとは…

Make Faire Tokyo 2013 レポート

Maker Faire Tokyo 2013 今年のMakerの祭典、Maker Faire Tokyo 2013に行って来ました。 結論から言うと……超楽しい。 これにつきます。みんなやってる事がバラバラでケイオスの権化です。 飛び交うUAV、初音ミク、時速40Kmの小型電気カート、空気砲のバケモ…

一発環境導入なワンライナー「ruby -e "$(curl ~)"」の挙動について調べてみた

homebrew公式では環境導入として次のようなスクリプトが紹介されています。 $ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"こういうの、たまに見かけますよね。 何となく意味はわかりますが、こういものをオマジナイとして思考停止する…

C-rでコマンド履歴をたどる

私は横着者なので、C-pで履歴辿りを多用します。 が、時折手癖で誤爆します。 具体的には、git commit -am "hogehoge"とかを誤爆して意図せずコミットしてしまう事が何度か......。 そんな折、UNIX本の復習をしてたところ以下ののコマンドを発見しました。 C…