Bye Bye Moore

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

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

YAMLデータをBashスクリプトのみでパースする

今回のスクリプトはハッシュ系で構成されたもの限定です。 配列系は対応していません。 本文 次のようなYAMLファイルがあるとします。 ## global definitions global: debug: yes verbose: no debugging: detailed: no header: "debugging started" ## outpu…

railsのselect_tagで選択肢ポップアップをつかう

かれこれ2年ほど弄っておきながら、実はRailsを十分理解していない僕ですこんばんは。 今日はクリックするとプルダウンして選択肢が出てくるアレ「select」タグを扱います。 例 Model データを突っ込む部分なのですが...よく分かってません(白目 ともかく…

パス付きのzipファイルをCLIで扱う

コンプライアンス重視なご時世、パス付きZipファイルを望まれるケースが結構あります。 そこいらのソフトで固めるのも良いですが、ここは折角なので自動化してみませう 例 次のようなコマンドを入力し、お試しファイルを生成します。 ちなみに全部空です。 $…

brewでcocoa Emacsを入れる(Applicationsフォルダにも突っ込む)

一度環境が壊れたのでメモいつも通りbrew install。cocoaを引数にする事をお忘れなく。 $ brew install --cocoa emacs終わったらApplicationフォルダへリンクを貼ります。 次の例は24.3版です。後続のものが出来たら適時切り替えます。 $ brew --config | gr…

sedの内部でpwdを呼び出す

バッククォートを使えば、いろんなコマンドを内部で実行できます。 $ echo Date:`date +%y%m%d` Date:140224これはsedでも実行可能です $ ruby -e "puts ('a'..'x').map {|i| i*3 + i.next * 3 + i.next.next * 3}" > hoge.txtで生成したデータhoge.txtに対…

Tera Termのマクロを実行する

Tera Termには独自マクロ言語「Tera Term Language (TTL)」が用意されています。 便利リンク データ型や文法 マクロ言語 "Tera Term Language (TTL)" コマンドリスト 豊富なコマンド群が定義されています。 ログインや送信といった基本的なものから、 「はい…

ブロック引数とinstance_evalメソッドを使ってインタフェイスをシンプルに保つ

FileとかSerialPortなんかで採用されてるインタフェイスは綺麗ですよね。 クラスを生成しなくともブロック呼べばスマートに開閉してくれます。 こういうものを実装するにはブロック引数とinstance_evalメソッドを使います。 コード クラス本体 class Test de…

irbでyaml出力を得る

irbのオプションを生かせば、わざわざrequire"yaml"を呼ばなくともYAML出力を得られます。 設定法 最初からYAML出力 $ irb --inspect yaml 実行途中でYAML出力に切り替える > conf.inspect_mode = :yamlちなみに...他の出力は raw p pp marshal*1 独 自 定 …

素敵な無名クラスはメソッドチェインの実装やI/O整合性維持に役立つ

def noname_class Class.new do |cl| def cl.zero 0 end def cl.now Time.now end end end => nil noname_class #=> #<Class:0x007f9ba3056dd8> noname_class.now #=> 2014-02-20 23:03:58 +0900 noname_class.zero #=> 0 使いどころ 本来あり得ないメソッドチェインを実装可能 わざ</class:0x007f9ba3056dd8>…

rails cとかいう子がいい具合にキモ便利

rails cはテスト用に一時的な初期値をぶっ込むときに楽です。 cはconsoleの略です irb(main):001:0> Player.find(1).food.update_attribute(:pt, 10_000) {略} => true 実行SQLが実行されます。 小ネタ やめる場合 irbと同様、exitで止められます。 irb(main…

Bashスクリプトを使ってGitのリモートブランチを全部引っ張ってくる

Git

Bashスクリプトを使ってリモートブランチを全部引っ張ってくる方法です。 昨日のものと対になります。 使い方 あらかじめ $ git fetch --all -pしておいた上で、次のスクリプトを実行します。 前回と同様、developとmasterを明示的に排除しています。 $ for …

Bashスクリプトを使って溜まりに溜まったローカルの不要branchを消す

リモート開発をやっていると、不要ブランチが出て来ます。 こまめに消していれば良いのでしょうが、修羅場ではそうも言っていられません。 と、いうわけで、今回の記事では不要ブランチを綺麗にするbashスクリプトを紹介します。 $ for var in `git branch |…

Pandocでドキュメント変換で楽する

pandocはmarkdownだろうがtexだろうが問答無用で任意形式に変換する鬼ツールです。 markdownファイルを一個つくれば pdf化 プレゼン資料 忌々しいオフィスソフトを開かずともodtやdocファイルを生成 といった事ができます。 org-modeみたいですが、vimやIDE…

Gitブランチ検索を可能とするgit grepは実際便利

git

git grepは基本grepと同じ使い方ができます。 独自の機能として git管理ディレクトリのみを捜索 ブランチを跨いだ捜索も可能 本家にはない、ワード条件の特殊構文 があります。 多人数で管理しているプロジェクトでは威力を発揮しそうです。 実例 複雑な条件…

ssh-keygenを少しスマートにやる

公開鍵を生成するのに使うssh-keygen。 そのまま使っても問題ありませんが、 毎度毎度質問に応える形式だとイマイチですよね。 自動化し難いですし。 オプションを使うと、このあたりはスッキリいきます。 ssh-keygen -t rsa -N {PASSWORD} -C {COMMENT} -f …

paper_trailを使ってmodelの差分を扱う

paper_trailはActiveRecordの編集差分を取ってくれるgemです。 railsのみならず、sinatraでも活用できます。 使い方 例の如くscaffoldで叩き台を生成します。 $ rails new PaperTrailTest $ rails g scaffold Blog name:string user_id:integerGemfileに追記…

プリプロセッサを使って少し違うロジックを使い分ける

C

OSSプロジェクトでは良く見かけるifdef 自前のコードだと余り使わない子ですが、使い所はあります。種類によって一行だけ違うコードがある場合、ifdefやif defineを使うと楽にいけます。 パターン1:ifdef 対象コード #include <stdio.h> int main() { printf("yes\n</stdio.h>…

git fetchで溜まった不要リポジトリ群は-pオプションで消える

git

git fetch --allでリモートブランチを引っ張ってくると、 そのうち不要ブランチ群のデススタックで引っ張りたい奴がどれだか分からなくなる愉快な事態が発生します。そこで役立つのが-pオプション。 不要になった奴を消し去ってくれます。 $ git fetch -p x …

文字列に%[hoge,piyo]で変数を入れ込むのはバッドノウハウです(白目

以前、ドヤ顔で紹介した文字列に配列で変数を入れ込むテクですが... 目下翻訳中のコーディング規則によるとバッドノウハウらしいです(白目 # bad '%d %d' % [20, 10] # => '20 10' 文字列として出力したい場合はsprintf 出力したい場合はsprintfです。 prin…

桁の多い数値を扱う時はアンダーバーで区切る

桁の多い数値は非常に見辛いという欠点があります。 Rubyは仕様上、数値中にアンダーバーを入れても無視してくれる仕様になっています。 4桁程度なら兎も角、5桁になったら積極的に入れて行くようにすると精神衛生上幸せになれる感じです。 ちなみに、何桁…

読書メモ「強いチームはオフィスを捨てる」

読書メモ「強いチームはオフィスを捨てる」 概要 Ruby on Railsやベースキャンプで有名な37signalsの最新刊。 今度はリモートワークのやり方と実践の本です。 カフェでお仕事等々、パッと見ノマド勢も使えそうなネタが散見されますが 本質はチームから見たリ…

unixコマンドの文中に別のコマンドを捩じ込む

$ echo DATE:`date` DATE:2014年 2月 7日 金曜日 23時02分02秒 JSTあるいは $ echo DATE:$(date) DATE:2014年 2月 7日 金曜日 23時02分34秒 JSTで、内部のコマンドを実行できます。これを応用すると...「who」という文字列を格納したhoge.cmdというファイル…

RuboCopで採用されているコーディング規則...の和訳が無い! => 出てました(白目

本家の言語リストにマージされていなかっただけで、2014/1/29に既にプルリクが出ていました... github commit log Rubyのコーディング規約確認用ツールとして、RuboCopという奴があります。 これに採用されているコーディング規約は下に示す通りです。 bbats…

Ruby配列周りのアレコレ

規則配列をまとめて作る 規則性のある配列を生成するときはブロックをつけると綺麗 - Bye Bye Mooreからの派生で ary = Array.new(16) {|i| rand(100)} #=> [59, 10, 72, 92, 16, 27, 9, 73, 85, 44, 45, 12, 62, 35, 51, 22] 最大値・最小値、あるいはその…

LibreOfficeで近似値曲線を引く

グラフをプロットしたら、計測点をクリックし... 曲線ダイアログをみて 今回はExponentialを使うと... 曲線ヤッター 参考もと https://help.libreoffice.org/Chart/Trend_Lines/ja

plantuml-modeを設定する

$ git clone https://github.com/zwz/plantuml-mode.git ~/.emacs.d/elisp/plantumlデフォだと~/直下にplantumlを置いている想定らしいので、コピーします。 ...ここは後々修正ですね $ cp ~/path/to/plantuml.jar ~/パスを通します。 ついでに.plantumlと拡…

plantUMLをemacs上でコンパイルする その1

まずは以下のURLを辿ってplantUMLのjarファイルを入手します。 http://plantuml.com/download.htmlこれを、emacsに標準搭載されているorgモードでコンパイルする事にします。まずはinit.elへ以下の情報を追加し... ;; active Org-babel languages (org-babel…

<自習用リンク>C言語によるデザインパターン(逐次追記)

C

デザインパターンとは... GoFというタツジン級エンジニア集団が提唱した、イケてる実装スタイル集の事を指します。 類似の問題があれば、これを適用するとスマートに書けるというスグレモノ。 そもそもデザインパターンとは みんな大好き結城先生によるデザ…