Bye Bye Moore

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

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

「docopt」を使えばgithubやherokuのCLIツールみたいなUIをドキュメント駆動開発で実装できる。

Julliaとか聞いたこともない珍しい言語もサポートdocopt/docopt.rb · GitHub と、Rubyも対応はしているのですが docopt has been confirmed to work with 1.8.7p370 and 1.9.3p194. If you have noticed it working (or not working) with an earlier versio…

pythonでchomp的な事をやりたいときは「rstrip」

Pythonのrstripメソッドは末尾の改行を消します。 RubyのString#chompですね。 for i in open('./example.yaml'): print(i.rstrip()) #foo: # bar: # - baz # - 3 一応、非破壊メソッドのようです >>> bar = "string\n\n" >>> bar 'string\n\n' >>> bar.rstr…

gem「view_source_map」で、Render元のファイルをViewに表示する

view_source_mapはViewにRenderもとのContollerファイル名を記載してくれる便利Gemです 使い方 特になんの工夫もなく、rails sしてあげれば <p>test</p> てな感じで展開されます。 ソースをみると、Railtie自体に細工をする事でこの魔法が実現されているようです……

YAMLをコマンドでパースできるツール「yq」

ちょっと前に、JSONをパースしてくれる便利コマンド「jq」を紹介しました。CLI上でjsonパースをしてくれるjqを使えばワンライナーが不要となる - Bye Bye Moore今日散歩中にフと、あの発想でYAML版つくれないかな……と思い検索をかけたところ…… あ、ありまし…

xmllintでCLIでもXMLをパースする

OSXやUbuntuのような*NIX系には、xmllintというXMLをパースする便利なツールがついてます 実例 $ echo '<foo><bar/></foo>' | xmllint --xpath "//foo" - <foo><bar/></foo> XPath Xpathに対応しているため、局面によっては便利につかえることもあります $ xmllint --xpath '//a/@href' vietna…

オンラインREPL「http://repl.it/」が魔界技術すぎて辛い

ちょっとJavaScriptで遊びたいなーと検索をかけたところ…… オンラインREPL「http://repl.it/」を発見しました 使えるものの一例 JavaScript以外にも、色んな言語が実装されています。 一通り遊んでみた範囲では、軽い動作検証程度であれば十分用は成すようで…

IMPORTXML関数で、XPathを使ってデータ抽出ができる

IMPORTHTML関数を使って、WEB上の表やリストからデータをインポートする - Bye Bye Mooreの記事末尾で触れたIMPORTXML関数は、XPathでタグを指定すれば任意の要素を引っ張りだすことができます。 aだのimgだのといったタグは、これを使えばよいです。 実際の…

awkのカラム番号変数内部でも演算ができる

awk

awkはカラム番号を指定すると、その番号分を出力してくれます。 $ printf "as you like\n" | awk '{ print $(1) }' as 0なら、全部出力。 $ printf "as you like\n" | awk '{ print $(0) }' as you like で、この変数ですが番号を与えればいいだけなので……内…

GOOGLETRANSLATE関数で楽に翻訳

ありがたい事に、GoogleSpreadSheetにはGoogle翻訳を使うための関数が用意されています。 GOOGLETRANSLATE関数を使えば、一発です。 つかいかた GOOGLETRANSLATE(テキスト, [ソース言語, ターゲット言語])ソース言語とターゲット言語のデフォルトは"auto"な…

SPARKLINE関数でお手軽グラフプロット

Google Docs付属のSPARKLINE関数は、カラムの中にグラフを表示してくれる便利関数です。 つかいかた =SPARKLINE(data, [options]) Google Financeと組み合わせる GoogleFinanceの通過変換を使って、JPY-USDな図を出す場合は、次の式の通り。 =SPARKLINE(Goog…

IMPORTHTML関数を使って、WEB上の表やリストからデータをインポートする

Google Docsに実装されているIMPORTHTML関数はWEB上の表やリストからデータをインポートする超絶便利関数です 実際の使い方 =IMPORTHTML(URL, クエリ, 番号)です。URLには、プロトコルを含める……とあるので、もしかするとMQTTやらCoAPみたいなものに対応する…

表計算ソフトでNヶ月後の日付を出したい場合MDATE関数が使える

非エンジニアな方に作業内容を報告する際、線表の類を求められることがあります。 やれ一ヶ月毎だ四半期毎だと指示はありますが……こんなもの一個一個入力すると頭がおかしくなります。DATE型だと単純な足し算でも面倒だし……そんな時はedate関数が便利です。 …

直前のコマンドの引数を継続してつかう

「!*」で直前のコマンドで使った引数を呼び出す事ができます。 $ echo "hello\n" hello\nとした場合、 $ printf !* printf "hello\n" helloと、一旦展開された後で、実行されます。 コマンド誤爆でも大活躍 これを活かせば、コマンドを誤爆した場合にもそ…

N個前のコマンドを実行する

N個前に実行したコマンドを再度実行する事ができます。 たとえば、次のような状態の場合 $ history 3 594 echo 'fuga' 595 echo 'yeah' 596 history 3「!-戻りたい個数」と入力すると、実行可能です。 $ !-3 echo 'fuga' fuga履歴には、次のように展開した後…

historyの番号を指定して実行する

historyコマンドを実行すると、こんな感じで「番号」「コマンド」という順番ででてきます。 $ history 10 558 basename `dirname hoge/huga/ruby.rb` 559 basename `dirname hoge/huga/ruby.rb` 560 history 561 basename `dirname hoge/huga/ruby.rb` 562 e…

basenameでファイル名を楽に取得する

basenameは「/」や拡張子を削除し楽にファイル名を取得できるコマンドです 現在いるディレクトリ名を取得 $ basename hoge/huga/ hugaファイル名を含んだパスの場合*1 $ basename `dirname hoge/huga/ruby.rb` huga ファイル名を取得 $ basename hoge/huga/r…

bashでもcase文がつかえる

bashでも、caseが使えます。 たまにみかける、 if [ some_rule ]; then #something to do else #something to do fiを置き換えるにはちょうど良いかもしれません。 POSIX的にどうなのかは、調査中ですが…… 実際のところ 記法は以下のとおりです。 case word …

環境省が金融について語るサイトがある

環境省といえば、地球温暖化やら公害やら里山やらを担当する省というイメージが強いですよね。とはいえ、緑と向き合うだけでは話が終わらないのも事実。 そこで、「持続可能な社会」という観点から金融に一言! という動機でブチかました発言がコレです。 私…

dirコマンドをつかうと、「~/」からの位置がわかる

現在位置を調べる場合、 $ pwd /Users/shuzo_kino/ruby/sampleという手が使えます。 ただ、これだと人に渡すとき色々アレな事もありますよね。 そんな時はdirsコマンドを使います。 $ dirs ~/ruby/sampleこの通り、ホームディレクトリを示す「~/」にして位置…

CLIで未読のGmailを確認する

Gmailには、atomフィードに未読メールを一覧させる機能があります。 これをつかうと、CLIから楽に未読メールの確認ができます。 curl -u your@gmail.address --silent "https://mail.google.com/mail/feed/atom“ | perl -ne 'print "\t" if /<name>/; print "$2\n"</name>…

標準出力に表示しつつ、結果をファイルに保存したい場合は「tee」コマンドをつかう

標準出力に表示しつつ、結果をファイルに保存したい場合は「tee」コマンドをつかえばよいです。 $ cal | tee cal.log 3月 2015 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 保存先のファイ…

UNIXコマンド「test」が思ったより使える件

一般に、「test」はファイルが存在するか確認する際に使われるコマンドです。 結果は標準出力ではなくコマンドの終了状態に格納されるため、注意が必要です。 $ test -e aasm_sample.rb ; echo $?とまぁ、これ単体だとイマイチありがたみがわかりませんが 設…

Railsのbundle installで突っ込んだgemの配置先をみる

Railsのbundle installで突っ込んだgemの配置先をみるには 「bundle show」です。 $ bundle show sass /Users/shuzo_kino/.anyenv/envs/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.13また、半端に入力しても $ bundle show sas 1 : sass 2 : s…

安全安心な農作物をつくるためのガイドライン、「農業生産工程管理(GAP)」

農業生産工程管理(GAP)とは、生産者にとっても、消費者にとっても安全安心な農作物をつくるためのガイドラインです。 定量的生産手段に関する取り決めとその実施方法を定める事になっています。 策定には、国連食糧農業機関(FAO)などが関わっている…

Rubyで状態遷移を実装できるGem「AASM」(その4_現在の状態を表示)

現在の状態を表示する場合、current_eventが使えます。例えば、指定のメソッド中で現状のイベント名を提示したい場合 class AASM_Sample include AASM aasm do #中略 event :sence, :after => :comment do transitions :from => :sleep, :to => :transmit en…

Rubyで状態遷移を実装できるGem「AASM」(その3_状態に入ったあとの動作を定義)

event :sence do after { p "sence"} transitions :from => :sleep, :to => :transmit end といった感じで、eventの中に記述します。 あるいは、 assmのブロック外に def comment puts "comment" endとしてあげた上で event :sence, :after => :comment do t…

GithubのWikiページにローカルから更新を加える

考えてみれば当たり前なのですが…GithubのWikiページもローカルから更新をかける事ができます。流れは通常のGit cloneと変わりません。 $ git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.wiki.gitリポジトリにアクセス権限があるユーザアカウ…

「水銀に関する水俣条約」により、体育館や街路樹で多用されている水銀灯は原則2020年で製造停止

「水銀に関する水俣条約」は、日本が主導した環境に関する合意です。 名前の通り、水銀の利用を制限する類の条約です。その中で、 電池、スイッチ・リレー、一定含有量以上の一般照明用蛍光ラン プ、石鹸、化粧品、殺虫剤、血圧計、体温計などの水銀含有製品…

展示会「NIKKEI MESSE」に行ってきました

展示会が「NIKKEI MESSE」に行ってきた。 写真 構成図は次の通り。 なんと初日だけで4つのイベントが同時開催。二日目はさらに2個追加…豪華ですね。 セキュリティ 建材

Rubyで状態遷移を実装できるGem「AASM」(その2_未定義の動作)

AASMにて、定義していない順番で呼び出しをすると例外を返してきます。とはいえ、そのまま動作を止めたくない場合もあるわけで… そういった場合は aasm :whiny_transitions => false do # ... end とすることで、「false」を返すように指定できます。 以前の…