足首をひねった

近況

足首をひねった。
月曜日に西日暮里.rbに参加した帰路、夜道で飛び出してきたタクシーにびっくり仰天、咄嗟に華麗なジャンプをしてかわしたもののあまりにも華麗すぎて酔った足がついていかず、結果として左足首が犠牲になった。
あー、これはたぶんヤバいやつですねと思って足の具合をみているうちにタクシーは走り去っていった。つらい
経過としてはとりあえず湿布貼って固定しておけばいいんでしょみたいな感じで対応中。昔何回もやったのでこのへんは慣れている

2017年4月12日

最近ブログ書いてなかったから適当につらつら書く

pero

blog.kazuhooku.com

最近よく使うやつ。上の記事ではリリースされてない感じですがもう brew から入る peco にも入ってます。

用途としてはざっと該当箇所のコードを読みたいときに適当に検索してる。
インクリメンタルサーチなのでファイル構成とかクラス構成を把握してないようなときに便利。あと Ruby で include, extend してるけど結局実装どこだよというときにもよい。

ラッパーは微妙に変えてる。 less じゃなくて vim のほうがいろいろなれてるので。うっかり編集しちゃうのはご愛嬌。

#! /bin/sh
exec ack "$@" . | peco --exec 'awk -F : '"'"'{print "+" $2 " " $1}'"'"' | xargs -o vim '

これの何がいいって、「メソッドAしらべる」→「どうも実際の処理はメソッドBっぽいな」っていうときにすぐ検索対象を変えられるとこ。めっちゃ便利。たぶん他の人はctagsとかつかってジャンプしてるのかしら

ack つかってるけど ack のオプション全然覚えてないから変えようか迷ってる。
とりあえず pero --ruby '.*' lib みたいな感じでつかってることが多いです。

hkdnet.netのアレ

go 部分と js 部分を完全に分割した。あと go から html とかサーブしてたのを nginx に変えた。そしたら go のバイナリと public ディレクトリ内をまるっと更新すればいいだけになったので ansible で置いて適当に supervisor を restart すればデプロイが完了する。楽。

api サーバとして動くコードと1日1回バッチ処理を行うコードがあったんだけどそれも完全に分割して2バイナリ生成するようにした。管理がめっちゃ楽になってよかった。
ただなんとなく ansible が好きになれないので mitamae とか使いたい感じがある。

技術書典2

湊川さんのところで店番してた。なかなかない経験で楽しかった。本もいくつか買ったけど積んでます。すみません

Rust

書いてる。これを読んでテンションがあがったあとに Rebuild.fm で typester さんが言及してたので。

六本木ではたらくソフトウェアエンジニアへのよくある質問とその答え (FAQ) (2015 - 2017) — hayato.io

なんか書くかーと思って自分で tcp コネクションを張って自分で http のプロトコル書いて読むやつ書いてる。まあ curl ですね。
適当に実装して HTTP はしゃべれてるっぽい気がするんだけど https は handshake とかあってめんどくさ!!!ってなって投げてる。
これのあとに GitHubAPI 叩くコード書いてるあたりでエラーの扱い方をようやく学んだ。面白い。

Rust 自体の感想としては、オブジェクトがメモリ上でどういう風になってるのかを意識させられる感じがある。そこがつらくておもしろい。
「全然わからない。俺達は雰囲気で C++ を書いている」という感じがあったけど Rust は 「雰囲気ですら書けていない」という感じ。コンパイル通らんし。

コンパイラが出すメッセージがかなり親切で「もしかしてこうじゃない?」って言ってくるあたりほんと賢い。
コンパイラに叱ってもらって関係ありそうな節を Rust book で読んでというトライアンドエラーをしている。叱責駆動の勉強。

ほんとに親切なんだけど一方でわかってんならよしなにやってくれという気持ちもあってそういうところは人間が機械に傅いている感じがあって趣がある。また数年後にはこのあたりが解決される新言語あるいは新バージョンが出るのだろうか。

curl 代替を書いているときにヘッダーも書いて1行あけてボディなくて、でなんか読み出しできねぇ!みたいなことがあってなんでだろーって感じだったんだけどボディが空のときに空行が必要だからでした。てへぺろ
あと RFC 読んでてはじめて HTTP は改行コードが CRLF なことを知った

Rust に対する不満は VSCode の拡張でフォーマットかけると Vim モードが解除されるとこ。Rust の不満じゃなくて VSCode の不満ですね。

Rubocop

0.48の変更がめんどくてあげたくないという気持ちがある

ますとどん

酔った。たぶんもうやりません。


追記

JSON Schema

という感じ。

2017年3月振り返り

記録

total: 13720 minutes
Rank    Name    Minutes
1   Ruby    5424
2   YAML    1567
3   JavaScript  1319
4   JSX 461
5   PHP 460

minutesがやたら増えてんなと思った方はこちらの記事をご参照ください

hkdnet.hatenablog.com

雑感

記録から

えーと、Rubyistっぽいですね。はい。
YAMLとjsがなー。JavaScriptとJSXを合わせりゃ勝ってるんだけど。vimだとfiletypeみているのでこういうことがおきる。
wakaitime側の設定でfileytpeとかをサーバに送られた後に変換できるのでやってもいいかも。
今回の場合 language = JSX の場合に language = JavaScript とすればよさそう

えーと記録にないですがjupyter notebookでPython書いてます。

ゼロからはじめるデータサイエンス ―Pythonで学ぶ基本と実践

ゼロからはじめるデータサイエンス ―Pythonで学ぶ基本と実践

これwakatimeで記録できないんで結構めんどい……。

えーと曜日別で表示してみたんですけど曜日別のプログラミング時間がこちら。

f:id:hkdnet:20170402181239p:plain

金土日が少ないですね。金曜日はなんで少ないんでしょうか。どう考えても飲み過ぎですね。もっと進捗しろ

phpjson-schemaでリクエストを検証するあたりをちょろちょろ書いてた。たのしい

記憶から

  • SQLアンチパターン読了した
  • 言語のしくみ読了した
  • hkdnet.netで
    • https化した
    • 曜日別グラフ作った
    • 活動量とれてない問題に対応した
      • タイムアウト時間の延長
      • 日次でチェックしてとれてないときはslack通知
    • HTTPリクエスト時に日付をTZつきでやりとりするようにした
      • っていうか最初からやっとけ感ある
    • 月次サマリ出すようにした
  • gomodoroつくった
  • マイクロサービス群の結合テスト実施するためのなんやかんやをした
    • 特定レポジトリになんかイベントがあると、その時点での該当レポジトリ群をとってきてdocker imageつくってデプロイしてDB叩く感じの
    • 仕事でやったので非公開です……
  • 週報はじめた
    • 後述
  • はじめてでかめのp-rをレビューしてる
    • でかいと疲れるのでなんかいい方法ないかなーとすごく悩んでいる
  • electronアプリに手を出し始めた
    • これ↓に出る予定です

nishinipporirb.doorkeeper.jp

友人がpodcastをはじめた。↓
メインパーソナリティのガミさんってほうが友人です。

楽しくて仕方がないラジオ

楽しくて仕方がないラジオ

  • shiganaiRadio
  • テクノロジー
  • ¥0

僕が言い始めた週報の話がしがないラジオep.3aで言及されてます。よければどーぞ。

fish移行した

以下雑な手順

  1. brew install fish
  2. cp ~/.zshrc ~/.config/fish/fish.config
  3. ひたすらfish化する
  4. このへんでfishにはいる
  5. fishermanをinstall
  6. 適当にfisher installする
  7. /etc/shells に追記
  8. chsh -s fish_path

ひたすらfish化でやったのででかめのトピックは以下。

export FOO=BAR -> set -x FOO BAR

anyenvがなんかダメだったのでがんばった。

  1. anyenv init - は実は後ろに引数としてshell名をとれる。なければ $SHELL を見る。そのためfish移行時にはfishと明記しておかないとエラーがでまくる。せっかくなのでzshrcにも書くことにした
  2. anyenv init - fish | source でいいはずなのだがなんかうまくいかなかったのでanyenv自体をupdate
  3. それでもダメだったので、anyenv init - fish の出力をなんとなく目で見る。ndenvのpath設定あたりで文字列内展開の書き方が間違ってたっぽい。いろいろめんどくさくなって anyenv uninstall ndenv しとく。dockerもあるし、ローカルのnodeのバージョンがちゃんと管理できなくて困ることはあるまい……

プロンプト変えた。fishなのでさかな。right_promptは最初gitブランチを設定してたんだけど、右端まで空白入るのがウザくて切った。手癖で git s(= git status) 打つようになってるから見えなくても特に問題ない

pecoは下に入力欄がくるようにした。そっちのほうが目線移動が少ない、というのを誰かの設定でみた。確かに。

hubのaliasは別にいらないかなって思って切ったままにしている。hub browseくらいしか使ってないしhub browseって打つようにしている。

移行した感想としては、特に変わらなかった。ターミナルでその場でシェルスクリプティングをすることがあまりなく、あってもfor文程度なので特に利点がない。逆にREADMEとかにあるスクリプトをコピペで動かすことができないのでいまのところ不満度のほうが高い。あっさりまた乗り換えるかもしれない。次にやるとしてもzshではなくbashにしようと思っている

懺悔

えー、最近の振り返りで使ってたツールですが集計ミスが発覚しました。

各レコードに対してminutesっていうカラムがあるんでそれで集計してたんですけど、minutesってのが実は「経過分数」じゃなくて「時刻表示の分」だったんですよね。

60 seconds -> 1 minute
3660seconds -> 1hour 1minute ( not 61 minutes )

2月末に発覚したデータロストとかじゃないからまだよかった……(よくはない)
1月の振り返りの時点で「コーディング時間おもったより少ないですね。もっと頑張らなきゃなあ」みたいな感想もってるのが笑える。ちゃんと気づけよw
3000分で少ないなって思ってましたが8000分になりました。はい。
2月は12000分弱なので実際1月は少ないみたいです。データ何日分かロストしてるけど

データの整合性については、えー、恥ずかしながらSQLで全件抜いたあとにgoogle spreadsheetに頼りました。エクセルで育ったもんで……。
実際値を見ながら仮説をたててなんかするってときにSQLはちょっとやりにくくて集計データがのこるスプレッドシートのほうが断然楽ですね。

データロストの対応については、昨日の分のレコードが0件だったらslackで教えてくれるスクリプトを書いてます。

f:id:hkdnet:20170315010110p:plain

というわけで過去記事を書き直しておきました。

yet another pomodoro

つくりました

github.com

いつもどおり英語は適当です。

モチベーション

  • ポモドーロテクニックがやりたかった
  • tmuxのバーに表示したかった
    • ターミナルを全画面で使ってる事が多いのでmacのステータスバーに表示するのは微妙
    • tmuxのバーが一番いいかな?っていう感じで決まった
  • 終わったら通知が欲しかった
    • macユーザーなので右上にピコンと出る系のやつがよかった

対抗馬は?

  • hughbien/thyme: Console Pomodoro timer
    • 使おうとしたんだけど依存関係がちゃんと定義されてなくて普通にやると動かなかった
    • たしかgem installしてレポジトリをとってきてbundle installしてその後bundle exec rakeしてテストを通すとようやく動くようになった
      • 最後の1ステップがマジで謎すぎる
  • ほかはしらない

作ったもの

1秒sleepして、ってやるとどんどんズレるよなー、どうやってんのかなーと悩んでた。悩みながら実装は見ないでthyme使ってた。
あるときgoでループ回しながら指定期間過ぎたら「過ぎたよ」っていうのをchannel経由で送ってくれるやつがいたらそれでよくね?と思いついたので作ってみた。
まだthymeの実装みてないのでどうやってるのかはしらない。

tmuxに出すのはthymeの設定ファイルから察したやり方で。$HOME配下にファイル出してtmuxのステータスバー側でcatで読んでる。

終わったら通知というのは設定ファイルにスクリプトのテキスト書いてそれをexecする感じにした。これもthymeの設定ファイルを参考にしている。スクリプトの中身はterminal-notifierというのを使っている。
julienXX/terminal-notifier: Send User Notifications on Mac OS X 10.8 from the command-line.

直したいところ

  • -dとかでdaemon化したい
    • goでdaemon化するのちょっとめんどくさそうで止まってる
      • 適当にやる分にはできそうだけどどういう問題があるのかよく把握してない
    • 実運用的には gomodoro & でバックグラウンドに飛ばしてる
  • SIGNAL対応
    • SIGINTくらいしか対応してない
    • まあ実用上困らんか……
  • tmux用のファイルは開きっぱなしのほうが効率がいい気がする?
  • 日別のpomodoroカウントとりたい気がする

実は作ったのは結構前で3commitしかないけど1commit目でmain.goは全部できてます。

2017年2月振り返り

記録

2017年2月 コーディング時間: 3378分 言語比率 1〜5位

Ruby 859
YAML    625
ERB 291
Docker  163
JavaScript  143
訂正版
total: 4517 minutes
Rank    Lang    Minutes
1   Ruby    1090
2   YAML    747
3   ERB 291
4   JavaScript  277
5   C++ 208

2017-03-13追記: 2/11と2/16のデータがないけど仕方ないのでこれで確定版

再訂正版
total: 11230 minutes
Rank    Name    Minutes
1   Ruby    4350
2   YAML    1418
3   JavaScript  702
4   Markdown    680
5   C++ 571

2017-03-15追記: 普通に計算ミスってました。 -> 懺悔 - Smoky God Express

ただしデータの信憑性があやうい

雑感

記録から

時間すくねーなって思ったんだけどこれはまた後で。

Rubyは主にCLIツール作ってた時間かな。いろいろ作った。使うかあやしいけど。

  • hakoのyamlを生成するやつ(諸事情あって2回つくった)
  • erbを自分たちのawsリソースの情報を埋め込みやすくしたラッパー
  • CircleCi内でやりたい処理を詰め込んだ便利gem

あとrubotyのプラグインとlambda(nodejs4.3)も書いてた。公開できないけど。流れとしてはこんな感じ
githubの通知 → lambda → ruboty → AWS CloudFormation

PRに対してChange SetのURL貼ったりマージしたらexecuteしたりexecuteしたらステータスが完了になるまでまって教えてくれたりって感じ。

Dockerfileは、うーん、なんでこんなに長いんだろう。そんなに書いてないと思うが。謎。herokuのdocker対応番作ろうとして挫折した記憶はある。

JavaScriptはwakatimeのviewerの構成を変えたからかなー。HTML直書きのVueだったのをcomponent分割してwebpackするようにした。
Go側はほぼいじってない。

wakatimeのviewerについて

viewerのバグ直した。これは結構大事なバグで、なにかっていうと0分だとそもそも折れ線グラフに点が打たれないからスキップされちゃうってバグ。初歩的すぎる……。もしかしてバカなんだろうか。真面目にデータみてないからわかってなかったけど……。
そして0分をいれて折れ線グラフを見ると1月にやる気ないどころかマジでなにもしてない1週間があってちゃんと値とれてるのか不安になってきた。っていうか2月のこの日おれ絶対コード書いてるんだけどってのが抜けてるのでたぶん取れてない。

2017-03-13追記: このあとすぐにサーバにログインしてその時点からでもとれるデータはとった

エラー通知なんもいれてないけどさすがにいれてretryさせる形がいいのかなー。エラー通知はslackに投げときゃいいかな

2017-03-13追記: エラー検知してリトライはめんどかったので昨日の分がとれてなかったらslackに投げるようにした

これからの振り返り

施策を打てるような分析をやりたいなーと思ってる

  • 曜日単位での集計
  • タブの分け方の変更
    • 年次、月次、週次の種別をかんたんにかえたい
  • 書いてる時間の集計
    • 集中してる時間とかわかるかも?