basyura's blog

あしたになったらほんきだす。

cygwin にさようなら

Cygwinを使おう―Windows上で実現されるUNIX環境

Cygwinを使おう―Windows上で実現されるUNIX環境

プロジェクトが svn から git に移行したのに伴い、cygwin から git for windows に乗り換えて半年以上が経過。cygwin を立ち上げる必要がなくなったので削除。git なら cygwin でも良かったのだけど、git status したときの速度がオプションを指定してもかなり遅かったのでダメだった。

リポジトリとのやりとりは git svn を使っていた。他に使っていた人はいないようだった。メモ帳などの通常のエディタを使っていると vim とは違ってなんとも言えない不安感 (編集が心もとなく、意図せず何かを触ってしまいそう) があるが、同様の不安感が svn にもある。git svn を使うことで心の平穏を保ちつつ数年の開発を乗り越えることができた。

cygwin を使い始めたのがいつ頃だったのかよく覚えてないけど、入社して 1、2 年後に始まったプロジェクトで cygwin を使ってログを tail していたのでまぁまぁの年月お世話になった。使ったと言っても tail するか ruby を実行するかが主だった。

cygwin を使うにあたって大変お世話になったのが cygwin ck 。dos プロンプトで動かすのはいろんな辛さがあったのだけど ck のおかげでとても快適だった。一時配布が止まっていたが再開されたときは歓喜した。現状でも 2013 年から更新は止まっているようだけど。

git for windows に移り zsh にして pacman を使ってパッケージ管理をしている。mintty もいいのだけど ConEmu あたりがタブも使えて便利そうなので移行できないか検討中。

GitLab に初コントリビュートをキメた

GitLab Advent Calendar 2016 - Qiita の 21日目の前エントリ。

GitLab に Merge Request が取り込まれたので初コントリビュートをキメることができた。

  • CE/EE: Fix display hook error message (!7775)

これは Merge Request 取り込み時にサーバサイドの update hook がエラーを返すと応答がなくなる(ように見える)不具合の修正。

背景

仕事プロジェクトで GitLab を社内に設置。コミットログのルール強制やおかしなコミットが入り込まないための判定に update hook を使用。

通常、手元のターミナルから push した際に hook で蹴られると内容がターミナルに表示される。ところが Web 上の Merge Request から Accept Merge でマージした時に update hook で蹴られるとハングしたようになってしまう。

実際にはサーバから失敗した旨の応答が返ってきているのだけどメッセージの表示で失敗する。javascript で UI の書き換えができていないのでエラーメッセージが表示されずグルグル回るインジケータが表示されたままになる。これが処理中のままに見えてしまう。

調査

社内では Merge Request の運用が本格的に始まっていなかったので "そのうち直るだろう” と思っていたのだけどそうでもなかった。自分で直せるか分からないけど見始めてみる。

CentOS 上に yum でインストールしている資源にデバッグログを入れてみるもよく分からない。サーバ側から応答がちゃんと返っていないからだろうと調べていたけど返っているようにみえる。やっぱりよく分からんわと issue を徘徊したところ発見。

コメントを見ると

  • javascript でエラーが出ている
  • 発生箇所が書いてある

そこまで分かればなので、修正することができた。

ついでなので "こうすれば直ると思うよ” と issue にコメントをしてみる。結果的に直し方はちょっと違っていたのだけど、 ここまで書いていれば誰かが反応して一瞬で直るだろうと思っていた。仕事プロジェクトの方では同じ修正を入れたので運用は解決。

MR 登録

1 週間ほど経過を見守っていたのだけど反応が無い。修正が軽微とはいえ困る人は多そうなのに。週末に時間が取れ、ちょうど良いので Merge Request を作ってみることにした。まずは環境づくりから。

mac で環境を作る。

若干ハマったけどドキュメントを読めていないだけだった。コマンド一発で GitLab がローカルで立ち上がり、ユーザー登録からリポジトリの登録、コミットして push までできると感動した。後は Merge Request を作るだけ。

Merge Request を作る際の説明部分にテンプレートが埋め込まれているので、それに沿って記載すれば良い。軽い気持ちであったというか、なんとなく採用されずに他の人が直しちゃいそうだし直し方が間違ってる可能性もありそうなのでテストやライセンスの記述はすっ飛ばして登録した。

この時に issue にコメントした内容ではない正しい直し方に気がついたので改めた。

MR レビュー

数日後に反応がある。まずは、直し方についての指摘。直し方は正しかったがバグ修正に加えて表示方法を変えていることに関してだった。

単純にバグを直すだけだと update hook の結果が h4 タグで表示されてしまう。自分のプロジェクトでもそうだけど、hook が返すメッセージが 1 行で済むケースはあまりなさそう。しかも、ターミナル等で表示することを想定すると html であるはずがなく複数行に渡るプレーンテキストになるだろうと。それで h4 を pre に変えてコミットした。

やり取りの結果、バグと機能修正を分けようということになり、それはそうだと納得してバグ修正のみを適用。表示方法の改善については別の issue が登録された。

a test please.

javascript のテストを書いたことが無いので自信が無かったのだけど、GitLab の中の人がテストについて教えてくれるので頑張ってみる。Google 先生に聞きながら斜め読みしつつ他のテストを参考してみた結果なんとか書けた。

ブラウザを起動してテストを実行していたのだけど terminal から実行できると教えてもらえた。こっちの方が楽だ。

Can you also add a changelog?

GitLab の中の人に changelog の作り方を教えてもらう。CHANGELOG.md とは別に changelog 用のファイルを追加して終了。

テスト

GitLab の環境が非力なのか関係ないところでテストがコケまくる。容量不足的なエラーもちょいちょいでる。最初の push からテストは通っていないので関係無いところでコケてると思っていた。実際そういうところもあったのだけど push する前にした rebase が最新に対してじゃなかったのも一因だった。改めて rebase & push して何回かテストをリトライしたのち見事テスト通過。

LGTM

初めての LGTM をいただく! 無事 8.14.5 でリリースとなった。

まとめ

しょぼい修正ながら MR からリリースまでやった印象。

GitLab チーム優しい!

GitLab の中の人なら半日で MR 作成から修正完了まで終えていたに違いない。それを粘り強く付き合ってくれたので途中から申し訳ない気持ちになりつつも速く終わらせようという前向きな気持になれた。GitLab 社としての方針ではあるだろうけど、沢山ある MR に対して同様の対応を進めるというのはかなりの労力が必要になりそう。

GitHub に対抗できてプライベート環境にデプロイ可能なサービスとしてはありがたいことこの上ない。今後も GitLab をウォッチしつつ可能なら MR を再度キメたい。何事もそうかもしれないが仕事に直接絡むような当事者の位置になると愛着がでるし調べてみようという気になる。

GitLab 便利!

kindle + Instapaper (Pocket から乗り換え)

長らく使っていた Pocket から Instapaper に切り替えた。後で読む記事をストックしておくのは一緒。ただ、ストックしておくだけで読み返さず溜まっていくだけになることが多い。iPhone SE で画面がやや小さいからっていうのもあるかもしれないけどなんだか読む気にならない。ストックされていることが分かってて目に入ってても読む気がおこらない。パソコンからブラウザで立ち上げて読む気もおこらない。これはなんでかなと前から思っているのだけどよく分からない。

前から使っている kindle に記事を送信するやつ。kindle に送信された記事は割と読む。kindle で読むのが慣れたからなのか読む。多少放置することはあっても目を通す。

前々から pocket が kindle と連携して kindle で読んで既読も管理できたらいいんだけど、さすがに無理だろうと思っていた。kobo が pocket と連動すると書いてあったので、それように kobo を買っても良いかなと思っている時期もあった。でも kindle と分散するのは微妙。kobo と pocket がいい感じに連動してたらいいけど端末もソフトも微妙だったらゴミになる。

Intapaper は前に試しに使っていたのだけど pocket に切り替えてから使わなくなった。最近 premium を開放したということもあり、kindle に送信する機能もあったなぁと思い出してなんとなく使い始めた。Intapaper アプリで開いてすぐ読まないようなのは kindle に飛ばせばいいやぐらいの気持ちで乗り換えた。

f:id:basyura:20161204203410p:plain:w400

しばらく経って kindle から送られてきた記事を読んでいると Archive と Link & Archive のリンクがあるのに気がついた。もしや・・・と思ってクリックする。

f:id:basyura:20161204203440p:plain:w400

Archived と表示されるではないか。Instapaper アプリを確認すると記事が Archive されている。前からずっと欲しかったやつだ。前からあったのだろうか?複数の記事を一つの本のように閉じて kindle に送信されるのは認識していたけど kindle から archive できたのか記憶が定かではない。きっとできてたんだろうと思う。今年最後にして最大の発見になった(誇張あり)。

ちなみに画像は kindle で開いたものを evernote アプリで撮ったもの。ちゃんと文書として認識してくれた。面白い。

ラ王担々麺

うまかった。野菜を足したらうまさ増。肉は買い忘れたのでまた今度。

子供の頃にラ王を食べた時はインスタントでこんなにうまいのが食べられるのかと驚いた。スパ王も同様。生麺タイプだったかな。土曜のお昼によく食べてた思い出。

最近は担々麺がやたら食べたくなるので店で注文することも多くなった。辛すぎるのは得意ではないが、担々麺は程良い。

セブンイレブンの冷凍コーナーにある担々麺が好きで毎週のように食べてたけど、次の候補を見つけていきたい。

担々麺じゃないけどこれもうまいんだよな。冷凍のちくわとかイカ天をのせるとなお良し。

最近は麺類率が高すぎるかな。

熱発再び

体温が上がったり下がったり。やることもないのではてブ巡りしたり podcast 聴いたり kindle で読書してたり。

kindle paperwhite でマンガのページめくりが速くなった

Kindle Paperwhite 32GB、マンガモデル、Wi-Fi 、ブラック

Kindle Paperwhite 32GB、マンガモデル、Wi-Fi 、ブラック

漫画で長押しすると発動する高速ページ切り替え。漫画用に容量が多くなった paperwhite だからできる機能だと思ってた。それが前世代の10月のソフトウェアアップデートで可能になった。現状の paperwhite で満足しているのだけど、ページめくり性能で気になっていたので危なかった。oasis も気になるのだが、voyage のディスプレイがあわなかったので手が出せない。高いし。paperwhite 生活が続きそうだ。

EarPods を Apple Care で交換

f:id:basyura:20161124161017p:plain:w300

何かしらのタイミングで再生が止まったりしておかしいなと思っていたら片方からしか音が聞こえなくなった。EarPods の前の世代は耳部分のゴムがすぐにボロボロになるし断線するしでよく交換してた。EarPods になってゴムじゃなくなって長持ちするようになったのだけどプラグ部分の方がやられてしまうようになった。ゴムが分離して耳の方まで移動して来てるとか。ポケットに入れた場合にイヤホンジャックの箇所に斜めの圧力がかかってしまうのが原因だろう。iPhone のサイズにぴったりなポケットじゃないと圧力をかけないようにするのは難しい。

会社の帰りにビックカメラに寄る。Apple コーナーに置いて無さそうだった。店員さんに聞きたかったのだけど客対応されていて捕まえられず。うろうろ探す。実物ではなく商品交換用のカードが置いてある場所が分かる。カードが2列並んでいた。どちらも同じだろうと思いこんでレジへ。

結果、Lightning 版だった。前はプラスチックの入れ物だったのに紙になってた。レジで見せられた時も違うのは分かった。エコかなと勝手に解釈してた。

僕は iPhone SE なのだ。挿してみると使える。けど・・・聴きながら充電したい。MacBook Pro や Windows PC にも挿して使いたい。箱をバリバリに破ってるから返品ができそうな気がしない。Lightning からイヤホンジャックへの変換アダプタがあればと思ったけど無さそう。色んな意味で辛いのでそのままヨドバシへ。

探してたら店員さんが積極的にやってくるスタイル。Lightning じゃなくてイヤホンジャックの方をくださいと聞くと「apple care に入ってますか?」と返される。入ってたと思うと伝えると「交換できますよ」だってさ。マジかと思いながらも手続き方法を聞いて帰る。apple のサポートページがら交換の依頼を出す。後日、佐川さんがイヤホンを送って来てくれた。そのタイミングで古い方を渡して返した。便利。この際に返却しない場合は自動的に口座から買取の金額が引き落とされるので注意。

iPhone イヤホン 新品 未開封 Apple 正規品 純正

iPhone イヤホン 新品 未開封 Apple 正規品 純正

手元には Lightning とイヤホンジャックの二種類がある事に。ちょうど良いので聴き比べしてみる。

Lightning の方が音が軽く聞こえる。慣れもあるかもしれないけど、低音が弱く迫力に欠ける印象。イヤホンジャックを常用するとして Lightning の方は予備としてしまっておいた。