そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

今週気になった技術ネタ

常々このブログはエンジニアっぽさが足りてないと思ったので水増し補充。

ブクマを棚卸しして振り返る意味も込めて毎週末続けていきたいなーと思う。

ソース検索に便利なPlatinum Searcher

monochromegane/the_platinum_searcher · GitHub

ガラケー向けのサービスなんか扱ってるとよくあることなんだけど、文字コードが混在してる環境はソースを検索しづらいのが辛いところ。

速度面に関しては特に検証してないけれど、少なくとも文字コードに左右されずに横断的に検索できるのは相当に有難い。

いつの間にかMacにはhomebrewからも入れられるようになってた。


命名規則について

英語苦手系エンジニアなんでこのへんは勉強していきたいところ。

正しいコーディングが身につくエンジニア英語の手引き 〜文法とクラス/メソッド、命名規則〜 | Find Job ! Startup

特に取得する系のメソッドの動詞を使い分けるのは、後でパフォーマンスを改善していく際に当たりをつけやすくて良いなと思った。

railsとかのどうでもよいメモ: メソッド名の動詞


CSVファイルをSQLで扱う

Run SQL directly on CSV files | Text as Data | q

$ q "SELECT COUNT(*) FROM ./clicks_file.csv WHERE c3 > 32.3"みたいな感じで使える。

内部的には一旦sqlite3にオンメモリで入れてるだけらしいのであまり大きいファイルには使うべきじゃないが、ちょっとした集計になら便利そう。


mysqlコマンドでのテーブル名の補完

mysqlコマンドで、テーブル名とかカラム名の補完(completion)をする方法 - (ひ)メモ

--auto-rehashオプションを付けてmysqlコマンドを打つ、もしくは入った後にrehashコマンドで。


MySQLからコマンドに渡しやすい形で結果を取得する

MySQLのgroup_concatで複数レコードを1行にまとめる - 文系プログラマによるTIPSブログ

集計スクリプトの引数とかコードへベタに記述する用の結果を取得したい場合、普通にターミナルからSELECT文を叩くと加工が必要で面倒くさかったりする。

そんなときこのGROUP_CONCAT使えばコピペで使いやすい形で出力できる。

SELECT GROUP_CONCAT([カラム] SEPARATOR '[区切り文字]') FROM 〜みたいな感じ。


Perlワンライナー備忘録

Perl ワンライナー [ 一行野郎 OneLiner ] 勉強中。

Perlおじさんな割にはあんまり使いこなせてないのよなってことで。

なんだかんだで業務じゃ無理くりシェルやらawkやらでこなしたりちゃう(で、出力結果を手修正する)ことが多いのだけれども、こっちのほうが自由度も高いし書きやすいはずなので。


とりあえず個人的に使用頻度が高そうなutf8エンコードで作ったCSVファイルをWindows機のユーザに渡すために変換するワンライナーを記述してみた。↓

$ perl -MEncode -i -nle 'Encode::from_to($_,"utf8","cp932");print $_¥r¥n' [FILE]
  • -MオプションでEncodeモジュールを指定
  • -iオプションで一時ファイルを作るよう指定
  • -nで引数のファイルを展開して一行ずつ実行
  • -lオプションでchompして要らない改行を取り除く
  • エンコード変換して新たな改行コードを加えて出力する

プロセスをバックグラウンドに移す

時間がかかる集計スクリプトなんかを実行する時には$ nohup [コマンド]&でバックグラウンド実行して接続が切れたりログアウトしても実行し続けられるようにするのが良いのだが、うっかり忘れてしまった時に。

うっかりnohup無しで長時間かかるコマンドを実行したときに後から終了しないようにする - Glide Note - グライドノート

要は

  1. Ctl+Zで休止
  2. jobsでジョブ番号を確認
  3. bg [ジョブ番号]でバックグラウンド実行
  4. disown %[ジョブ番号]でログアウト後も実行されるようにする

という感じらしい。


無料の技術書

無料でダウンロードできるIT技術系電子書籍(EPUB/PDF)一覧 - Build Insider

とりあえずProGitあたりは読んでおこうかなと。


なんか初回だから盛りだくさんになってしまった。。。