| @技術/プログラミング

Rails のログファイルを tail -f で見たいんだけど余計なものはフィルタリングして表示されないようにしたかった。最初は以下のようにしてみた。

⚡ tail -f log/development.log | grep -v -e ‘asset|Cache|Rendered’

これだと条件にマッチする行は表示されなくなるけど改行が削除されずに空行がたくさん表示される。これでは見やすいとは言えない。以下のように sed で空行を削除するようにしてみた。

⚡ tail -f log/development.log | grep -v -e ‘asset|Cache|Rendered’ | sed -e ‘/^$/d’

しかしこうすると必要な情報まで表示されなくなってしまう。 tail ではなく cat とかでやると望んだ通りになる。 tail -> grep -> sed の流れだとうまくいかないぽかった。

“tail grep sed” でググったら以下のような記事を発見したので試しに grep に —line-buffered オプションを渡してみた。

⚡ tail -f log/development.log | grep -v -e 'asset|Cache|Rendered' --line-buffered | sed -e '/^$/d'

これで望んだ通りの出力になった。便利。

| @労働

新卒研修の一環で、若者向けにおっさんエンジニアが座学をするという取り組みが会社にあって、自分も担当したので資料を公開します。自分は技術力低くて技術的に有益な話はできないと思ったので奇行に走ってポエムを吟じた。

うちの会社、技術基盤チームの面々がすごく熱心に教育するし前年に新卒で入った若者たちも研修に絡んで斧を投げてくるので新卒で入ると大変便利なのではと感じる。業務として Rails チュートリアルやらせてくれる会社とかあんまないと思うし、おっさんエンジニアによる座学とかもあって、自分のようなポエムから Go 言語の話とか AWS やらインフラの話まで聞ける。技術的に有名な会社とかだと新卒入社時からエンジニアとしての高い能力が求められたりするのではないかと思うけど、うちの会社は雑魚キャラでも入ってから育てる的な環境がある気がするので、当初は Visual Studio でしかコード書いたことないしコードのインデントは Tab とスペースが入り乱れ、そもそもインデントがおかしい、みたいな状態の若者でも研修後には割とまともになってて一年後には Emacs でバリバリコード書いて何食わぬ顔で新サービスリリースしてたりする。なので今は雑魚キャラだけど成り上がってやりたいという方にもおすすめです。

こちらからは以上です。

| @散財

D90 のキットレンズだった AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED が1年半くらい前からズームしたときに遠くのものにピントが合わなくなっていた。(近くのものにはピント合う)

最初はそういう仕様だったかなぁと思いながら(ピントが合わないのは遠くのものだけなので)、単焦点レンズしか使わなかったのであまり気にしていなかったのだけど、ネットで検索したら同じ症状の人が何人かいて、どうやら故障しているらしいということが分かった。

kakaku.com の掲示板で、「 Nikon のサービスセンターに持っていったら玉を固定してるねじを締めてもらうだけで直り無料だった」と書いてる人がいたので、無料で直るかなと思って Nikon のサービスセンターに持っていったら「36,000円です」と冷酷に告げられてしまった。型落ちで中古でも4万くらいで買えるレンズの修理に36,000円も払うのはあり得ないと思ったので修理は頼まなかった。

合理的な価格で修理をやってくれるカメラ店とかないかと思って検索してたらゼネラルカメラサービスという会社が福岡にあることが分かったので持っていってみた。

10,500円で直るとのことだったので直してもらうことにした。今日受け取ってきたけど遠くのものもちゃんと撮れるようになってた。

DSC_5583

レンズとかカメラとか壊れたときにメーカーに修理頼んで高額な見積もり来て困ったら、こういう修理屋さんを探してみると良いと思った。あと恐らく修理頼んだとこはヨドバシとかキタムラからの修理依頼も受けてて、量販店に頼むと量販店の取次料とかがかかるっぽいので、行ける範囲にこの手の修理会社ある人は直接そこに持って行ってみると良いと思った。以上、個人の日記でした。

| @料理/食事

上にぎり 1.5 人前

寿司はうまい。寿司はうまいので寿司と結婚したいと思う人もいることでしょう。しかし寿司は人間ではないので結婚できない。結果的に寿司屋の娘と結婚することになります。

寿司好きなあなたは、寿司であれば何でも食べたいと思う。だから回転寿司だって、午後8時のスーパーの総菜売り場で半額になっている寿司だって好きなはずです。しかし、寿司屋の娘と結婚したばかりにそういった Guilty Pleasure は御法度となります。

「ああいうの食べるなんて頭どうかしてる」

寿司屋の娘はあなたにそう言います。寿司のことが好きすぎて、でも寿司とは結婚できないから寿司屋の娘と結婚したのに、安い寿司が食べられなくなったことでかえってあなたの生涯寿司数は低下するのです。寿司との距離、これがこの文章のテーマです。


24歳のときに病気になってしまった僕は、入院して治療を始める前、生ものが食べられなくなるからと寿司屋で寿司を食べました。治療の合間に一時帰宅が許されると回転寿司に行って吐くまで寿司を食べたりしました。寿司を食べ過ぎて吐くことで自分の生存を確認していたのかも知れません。

病気を克服した僕は、普通の寿司好きと同じように就職して社会生活を営むようになりました。週に二日休みがあれば、そのうち一日は祖母を連れて回転寿司に行くのは独身男性として当然のことだと思います。寿司を空気のようにすら感じていました。

寿司にもっと近づきたい -- 20代の僕はその欲求を抑えることができませんでした。実家を出て、寿司屋の娘と結婚することにしたのです。しかしこのときの僕は、好きなときに自由自在に寿司が食べられることのありがたみを分かっていませんでした。

寿司屋の娘との結婚が僕にもたらしたのは、寿司との離別でした。寿司と僕はもう二度と交わることもない別々の人生を歩むことになったのです。寿司屋の娘と結婚するとはそういうことなのです。僕は寿司に近づきすぎたのです。

僕は今日、福岡の高寅という寿司屋で以下の寿司を頼みましたが、大トロは寿司屋の娘であるところの妻に食べられました。

上にぎり 1.5 人前

代わりに僕は以下の赤身を食べさせられました。

並にぎり

おわかり頂けたでしょうか。寿司屋の娘と結婚するとはこういうことなのです。

あなたが本当に寿司のことを愛しているのならば、寿司には近づきすぎない方が良い。寿司とは適切な距離を保つべきなのです。


この記事は 寿司 Advent Calendar 2013 - Adventar の 9 日目でした。明日は watilde さんです。

| @技術/プログラミング

公開している Lokka の DB (MySQL) のデータを、手もとの Lokka の DB (SQLite) に取り込むときに毎回やり方を忘れるので書いておきます。

今回は MySQL to Sqlite converter という gist のコメント欄に書いてある以下の方法を試した。

sudo gem install sequel
sudo gem install sqlite3
sudo gem install mysql
rbenv rehash
sequel mysql://user:password@host/database -C sqlite://db.sqlite

これでデータを MySQL から SQLite に変換できた。Lokka をローカルで起動してアクセスしてみるが記事が表示されない。DB の中にはちゃんとデータが入ってるし、管理画面から記事一覧を表示するとちゃんと記事が表示される。どうも Post.published[] を返すみたい。

手でクエリを投げてみると

sqlite> select * from entries order by created_at desc limit 1;
             id = 960
        user_id = 1
    category_id = 5
           slug = eye-pro-is-shit
          title = Eye-Fi Pro を買ったけどクソだった
           body = [hitode909さんの日記](http://hitode909.hatenablog.com/entry/2013/05/24/093749 "hitode909の日記")...
           type = Post
          draft = 0
     created_at = 2013-10-06 07:28:00.000000
     updated_at = 2013-10-06 13:11:23.000000
frozen_tag_list =
         markup = redcarpet

draft = 0 なので表示されそうなもんなんだけど、よくよく調べてみると SQLite には Boolean 型がなくて、DataMapper は SQLite に Boolean 型のデータを保存するときは t/f の文字列で保存するみたい。これは盲点だった。

結局 draft = 0draft = 'f' に変えてあげればすべての記事を表示できるようになった。

| @技術/プログラミング

最近 Emacs を触っていることもあってテキストエディター熱が高まっているので思いつきで社内で Vim 勉強会を開催した。

自分は最初はプラグインをいかに使いこなすかというところから Vim を使い始めて(Vim テクニックバイブル的 Vim の活用)、Emacs に手を出したことによる素の Vim の少ないキーストロークでの編集能力の高さ再発見(実践Vim的 Vim の活用)し、Vim の真骨頂は後者にあるのではないかとむさ苦しく語った。

準備不足で資料とか作れなかったのであまり意味わからない感じだったかも知れないけど、話をするために実践Vimを読んだり積ん読になっていたオライリーの Learning the vi and Vim Editors を読んだりして勉強のきっかけを作ることができて良かった。

自分の他に同僚の @monochromegane 氏が Unite.vim の上級活用法 (agとUnite.vimで快適高速grep環境を手に入れる - Thinking-megane)や、氏が EUC-JP/Shift-JIS 対応を進めている ag による Unite grep の高速化などについて話した。カーソル位置の単語で Unite grep する方法*1なんかが個人的には参考になった。Unite の設定とかはネットで拾った情報のコピペで済ませていたので、実際に目の前で解説してもらいながら使い方の設定をすることで新たな発見をすることができ、大変良かったと思う。

4月に勉強会がつらくなって Fukuoka.rb もやってなかったんだけど、またぼちぼち再開していきたいと思った。


*1 以下のようなコードだけどなぜか自分の環境だと期待した通りに動いてくれなくて、Pattern: というプロンプトが出て検索キーワードが確認できるはずなんだけど、何かキーを入力しないキーワードが表示されなくて不便な感じ。

" grep current word
nnoremap <silent> ,cg :<C-u>Unite grep:. -buffer-name=search-buffer<CR><C-r><C-w>

| @雑談

会社の若者、夏期休暇期間中に徳を高めまくってた。

自分は徳が高まるようなことは特に何もしてない。コード書いてないしプログラミングの勉強もしてない。すこし .vimrc を触ったくらい。

実家に帰ったほかは、家を買おうとしてるので不動産屋に行ったり住宅メーカーに行ったりしてた。

プログラミングの本、『明解! Ruby』が読みかけになってるので読もうと思ったけど読まなかった。『SQL アンチパターン』も必要に迫られて買ったので夏期休暇で読もうと思ってたけど読めてない。

代わりと言ってはなんだけど歴史の本読み始めた。連休前に以下を買った。

大河ドラマとか見るときに日本史の知識ないと厳しいことがあるので Wikipedia 読むんだけど Wikipedia 読みだすと際限ない感じなるので本を買って歴史を勉強してみようと思っていた。丁度日経プラスワンの特集で紹介されてたので読んでみたくなって手に取った。Amazon でも評価高い。

あと夫婦げんかして家を飛び出して向かった天神のTSUTAYAで以下のような本を買った。

どれも古本なので安かった。『「芸能と差別」の深層』は三国連太郎の話が面白そうだったので買った。『夜這いの民俗学・夜這いの性愛論』を買うとき、レジが女の人じゃないなと良いなと思ったけど女の人になってしまって恥ずかしかった。結果的に痔ろうが再発した。