ggdG:wq

個人的なメモとか書いてます。

How to Read a Paperという論文を読んだ

論文を読む方法を解説している論文(?) 手引き書的な短めのPDF文書
私は普段から論文を読むわけではないが、手法は論文を読む以外でも役に立ちそうな内容だったのでメモしておく

論文タイトル

How to Read a Paper

https://web.stanford.edu/class/ee384m/Handouts/HowtoReadPaper.pdf

ざっくりまとめると

研究者は論文を読むことに多くの時間を費やすが、その方法を教えてもらうことはほとんど無く、無駄な努力をしがちなので効率な方法として "three-pass method" を紹介している

"three-pass method" は

  1. Title, Abstract, Introduction, Section headings, Conclusions を読む
  2. 校正などは無視して要点をメモしたりコメント書き込みながら読む。この時、Referencesに未読の論文があればチェックしておく
  3. 論文の手法を再現してみる

という3周に分けて段々と詳細に読んでいく手法

著者/所属機関

  1. Keshav
    David R. Cheriton School of Computer Science, University of Waterloo Waterloo, ON, Canada
    keshav@uwaterloo.ca

2019年を振り返る

はじめに

振り返るといいつつ、日記みたいな内容

振り返り

大体Twitterをみれば何したか分かる。

1/8 早速キーボード買ってる

  • Keyboardio : 329$
  • 今は使ってないので、うちの押入れの肥やしと化してる

1/9 ボヘミアン・ラプソディ観に行ったらしい

  • 今年は去年に比べると映画割と行った気がする

1/15 深夜に家系ラーメン食ってる

  • もう少し健康に気を使ってほしい

1/20 Fate/stay nightのナイター観に行ってる

  • このアクティブさは悪くない、評価したい

1/24 遊舎工房行った

  • 実際に触ると欲しくなる症候群になっとる
  • もう少し通帳のこととか考えてほしい

1/28 Hamburg Willでシャレオツなディナーしとる

  • 後日会社でデート???って聞かれたけどお一人様でした。。。

2/5 iMac 買っとる

  • こうしてみると今年の序盤大盤振る舞いしてんな
  • iMac自体はいい買い物だった

2/24 艦これやり始めた

  • なんで今さら??って感じだけど何かを始めたいお年頃だったんだろう
  • 最近は熱が冷めてるけど、一時期は寝る間を惜しんで艦これしてた

3/15 金剛型戦艦が揃ってる

  • 金剛が出なさすぎて泣いてた記憶ある

3/29 睡眠がぶっ壊れる

  • 22時ぐらいまでお布団で過ごすみたいな生活してた

4/23 Netlify 初めて使って感動してる

  • 多分このとき初めて使った
  • このブログもNetlify。ベンリだ

4/23 lem を使ってみてる

  • lem っていう Common Lisp で書かれたエディタがあって、 何を思ったのか試してみてる
  • そもそもCommon Lispちょっと遊びで触れてみたことがある。ぐらいの知識なので常用するには至らず、1日でVimに帰ってきたっぽい
    • テキストオブジェクトの扱いが不満だった気がする

4/9 しろ八でPayPayが使えるようになった

  • しろ八 という、個人的に世界一美味しいラーメン屋があるのですが、そこがPayPayに対応したから、しろ八のためにPayPay入れた
  • 今ではPayPay割と便利に使ってる
    • 友達と飲みに行ったとき、誰かが支払いをして、その人に割り勘した分送りつける。みたいな使い方出来るのがベンリ

  • 最高に美味しいしろ八の醤油ラーメン画像置いておきます

醤油しろ八

5/4 箱根旅行

  • 仲良い友人'sと温泉旅行した
  • 美味しいもの食べて、綺麗な景色みて、温泉にゆったり浸かる
    • 日本に生まれてよかった

5/11 ずいパラ!

  • 艦これのイベント ずいパラに行った
  • 親子連れが「今日はアニメのイベントやってるから人が多いね〜(´・ω・`)」って話してるのが聞こえて申し訳ない気持ちになった
  • この頃、確か艦これやりながらコードギアス観てたから平成に取り残された気持ちになってた

5/18 とんでもないミスに気づく

  • AWS Solutions Architect受けようとしてAWS Certified Developerを受けてた
  • 3月ぐらいに受験した時、変だなーとは思ったが単純に勉強不足だったかなと反省してた
  • 5/24に再度受けようと思ったので、前回の点数見とこうと思って確認したら気づいた
  • あたまわるわる~

5/24 AWS 試験

  • 今度は受ける試験を間違えなかった
  • 間違えなければちゃんと受かった

6/26 艦これイベント終了

  • 余った資材を大型建造に突っ込んだら大和が出たりした
  • このあたりで艦これ熱が若干冷めてる

7/8 帰省

  • 愛媛県、みかん以外に魚とか美味しいので行ったら諸々食べて欲しい(宣伝)
    • 市内にある居酒屋だと、あさつきとかオススメ

7/28 睡眠がぶっ壊れる

  • 起きたら日付変わってる。みたいなことが頻発してた

8/1 日帰り温泉旅行

  • この旅行の少し前に はてブで こんな記事 を見て、勢いで湯河原に行った
  • この時期の足湯は暑すぎる
  • 今行くと丁度いい寒さな気がするしまた行きたい

8/22 睡眠がぶっ壊れる

  • 寝て起きたら休日がなくなってたりする

8/29 〜 8/30 散歩が過ぎた

  • ふらっと散歩してたら徒歩で戻るにはしんどい距離になった
  • 徒歩で家まで戻りたくない。という謎の思考により、そのまま始発の時間まで歩き続けてた

9/2 シャレオツディナー食べた

  • 誕生日祝いとして友人が奢ってくれた

9/8 ISUCON

  • 何もわからん!!って言っていたら終わってしまった
  • 来年はもう少しなにかできるといいね
    • 勉強しなきゃ

9/22 Pokemon Goを始める

  • 理由は何も思い出せないけど唐突にやり始めた

10/10 かつ精初来店

  • 会社の近くにある美味しいと噂のとんかつ屋に行った
  • 噂通りの美味さ
  • 定期的に食べたい

10/15 このブログを作った

  • Hugo + Netlifyのお手軽構成
  • この頃はバリバリアウトプットするぞ!!!という意思があった気がする

10/17 fengが破産したという話が流れてきて泣いた

  • あかね色に染まる坂は僕の青春でした
  • 片桐 優姫が好きだった

10/31 ラブプラスがサービス開始

  • 中学生の頃にDSで凛子ちゃんとイチャイチャした記憶が蘇り、懐かしい気持ちでインストールした
  • タイムアウト発生しすぎて全然プレイできず、結局アンイストールしてしまった

11/2 睡眠がぶっ壊れる

  • 今度は起きれない、ではなくて眠れないになってた

11/3 VimConf2019に行った

11/7 ドラクエを始める

  • ドラクエやってみたくなり、ドラクエ1のSwitch版を買った
  • 後日、友人'sと飲みながら竜王を倒した

11/13 〜 15 ドラクエ2

  • ドラクエが面白かったもんで、そのまま2も買った
  • 面白すぎて、13の夜に購入して15の0時にはクリアしてる

11/15 ポケモン 剣/盾 発売

  • ドラクエ2クリアしたら、ポケモンがプレイできるようになってた
  • 何も考えずに男主人公を選んで後々後悔する

11/20 ポケモン剣購入

  • 男主人公で盾をクリアし、女主人公が可愛いことに気づいてしまう
  • そのままの勢いで剣を購入した

11/24 ゲーミングチェア購入

  • Amazon Black Friday Saleで安くなってたので思わずポチってしまった
  • 会社の同期にも唆された
  • 腰に違和感を感じていたので、いい買い物だったと思ってる

12/6 〜 8 福岡旅行

  • 色々食べまくった
  • 福岡美味しいものたくさんあるので、いつか住んでみたい

総評

遊んでばっかだな!!!!
遊んで、ゲームして、美味しいもの食べて1年が終わった感ある
来年は目標とか立てて、それを達成できると良いのかも。

とりあえずアウトプットを習慣化させたいので、週1でブログ1記事を目標にしてみよう

あとは定期的に睡眠がぶっ壊れてるので、そこをなんとかしたいところ(解決策思いつかず)

各コーヒーチェーンの値段と支払い方法

値段 電子マネー 備考
サンマルク S:200, M:250, L:300 iD, Suica, PayPay
VELOCE M:210, L:250 iD
モリバコーヒー S:220, R:270, L:320 iD, Suica
ドトール S:224, M:275, L:326 iD, Suica
PRONT R:240, M:290, L:340 iD, Suica, (PayPayは店による)
カフェ・ド・クリエ R:260, T:290 (おかわり:100) iD, Suica
スターバックス S:290, T:330, G:370, V:410 (おかわり:100) クレジットカード
エクセルシオールカフェ S:305, M:357, L:408 Suica
タリーズコーヒー S:305, T:355, G:405 iD, Suica
上島珈琲店 M:390, L:460 iD, Suica, PayPay
コメダ珈琲 430 ~ 550 iD, Suica
星乃珈琲店 600 ほぼ使えない (稀にiD, PayPay)
ルノアール 500~700 iD, Suica

コレ何?

最近Pokemon GOを始めたので、 適当なコーヒーチェーンで休憩することが増えた。

サッと値段を確認できるようにしておきたかったのでメモ

味については確認できたところから順に埋めてく 備考欄はそのうち書くかも

VimConf 2018が最高だった

最高でした!!

VimConf 2018に参加してきました。
最初から最後まで最高of最高なカンファレンスでした。
運営スタッフ、登壇者の方々、本当にありがとうございました。

Vim熱が上がりまくったので、今後は何かVimに貢献したいと思います。
ただ、英語も怪しい上にパッチを送れるような技術も無いのでまずはその勉強からになりそうですが...

朝からワクワクしている様子です。

会場では珈琲がおかわり自由だったのですが、注ぐためのボタンが分からず全然違うボタン(おそらく開閉ボタン)を押しながら出ないな?? って首をかしげていたらBramさんに"こっちだよ"って教えて頂きました。

最高ですね。
珈琲の淹れ方をVimの生みの親に直接教えてもらえるのはVimConfだけです。

英語力があればもう少し気の利いたお礼が言えたのかも(思いっきり日本語で「ありがとうございます!」って言ってしまった)と思うと、かなり悔しい気持ちなのでちゃんと勉強し直します。

各セッションも最高でした。

Keynote - What is the next feature?

mattnさんのKeynoteでVimのエモい話

mattnさんが初めてpatchを出したときにはもうKoRoNさんが居たという話から、vim-jpの役割紹介・作った経緯的などが前半の内容でした。

スパルタンVimにKoRoNさん視点でmattnさんとの馴れ初め的な話があったなーと思いながら聞いてました。

後半は機能の追加提案でした。

  • DRCS Sixelをterminalでサポート出来るようにして画像が表示できるようになる
  • ch_listen, BLOB Typeを足してVimでlisten 出来るように
    • デモもありました :WebServerするとVim上でWebサーバが立ち上がってました (すごい

Keynote - Vim: From hjkl to a platform for plugins

Bram MoolenaarさんのKeynote
Bramさん本人からこれまでのVim, そして今後のVimの機能について語られました。最高ですね。

pluginの高速化

  • pluginの読み込み時間を短くするためにマルチスレッドにする
    • 難しいらしい
  • Python等の多言語を利用する
    • Pythonがよく使われているが、Vim script + Pythonが全てのVimで動くわけではない
  • Vim script自体を早くする
    • 中間形式にコンパイルする案
      • かなり時間と努力が必要になる WIP

pluginの依存管理を出来るように

  • dependencies.vim fileをプラグインが持つようにする案

欲しい機能の投票結果 (GitHubのIssueでやってたやつですね 多分)

  • text properties
    • 質問で回答していましたが、Bramさんも一番良いなってpollは text propertiesらしいです
      • これもWIPなので楽しみです
  • Popup window
    • メッセージを指定したポジションで表示できるようになる
      • 色々使いどころがありそうな機能です

Bramさん本人からどういう点を重視しているのか、とか考えていることが聞けて最高でした。

Migration plugins to standard features

daisuzuさんのpluginの機能をVim標準の機能で置き換える方法の話

スパルタンVimを読んでplugin中毒から脱したという話にかなり共感しました。
補完pluginについては何度も消したり入れたりしているのでこの機会に脱pluginで安定させようと思い、セッション中にvimrcから消しました。
(C-x C-l)が何も入力していない状態でああいう動作をすると思っていなかったので個人的に一番の知見でした。
めっちゃベンリでは??

Modes

ujihisaさんのmodeの話

termdebugの説明をしながらVimのソースコードを説明してました。
termdebug凄い便利そう

あと、ujihisaさんのterminal開いた時にxpsって文字列が見えたのでひょっとしてXPS13か??とか考えてました。

A day in the life of (ordinary) Vimmer

OKURA Masafumiさんの平均的なVimmerの一日について

  • VimとNeoVimのアップグレード
  • Vim pluginのアップデート

NeoVimユーザではないのでVimのコンパイルしかしませんが、やっぱみんなやる行動なのかと思いました。

デモもあったのですが、typoによって惜しくもTestが通って無かったです

"This is TDD"って言っていたので想定通り??

本番でのデモは難しそうですね...

Agは導入していなかったので後で入れようと思います。

Modern editor-independent development environment for PHP

USAMI KentaさんのPHPとEmacsとVimの話

PHPStormは便利機能が多数あるらしく、やっぱりJetBrains凄いなーって印象でした
ALEを使うとVimでも色々出来るらしいです。

他にもVeonimっていうneovimをベースにしたIDEのようなものがあるらしいです
GitHub見てみたら完全にIDEだなって感じの見た目してました

Oni - The GUI-fication of Neovim

Akinさんの Oni というNeovimのGUIエディタの話

デモがあったのですが、個人的にブラウザが中で開けるのが色々便利に使えそうで良いなーという 印象を受けました
まぁ今はVSCodeとかいろんなエディタでそういうことが出来るとは思いますが... NeovimにQuick InfoとかPopUp機能などが追加されて最強に見えるって感じだったので使ってみたいです。

日本語入力とかちゃんと動くのかな??

Vim ported to WebAssembly

rhysdさんのVimをWebAssemblyに移植した話(ご本人曰く軽めの話 全く軽くない )

wasmがCでコンパイルする→Vimをコンパイルしたくなる ??
なるほど流石って感じ

スライドが素晴らしく分かりやすく(私の力不足故に理解できない部分はありましたが)、どういうふうに移植していったのかを詳しく解説していました
特にシーケンス図が分かりやすく、概要は分かったような気になりました

質問の中にブラウザでVimプラグインのデモが出来るかという質問があり、 なるほどロマンですね。

LT

LTでも面白い話が聞けて最高でした。

  • Takaaki ISHIKAWAさんのorgmodeの話
    • orgmodeは第2の脳
    • こういう話を見聞きするたびに自分の最高のメモ環境について考えたくなります
  • notomoさんのNeovimからブラウザをコントロールする話
    • 最後ブラウザによるFizzBuzzまで含めて最高でした
  • rattvさんのVimから電話をかける話
    • デモ...時間切れ....
      • 後少しだった
  • ShougoさんのNeovimとVimの違いについて
    • 暗黒美無王 == Uncock Vim Awe(アンコック ヴィム オゥ) 私覚えました
  • Ken Takataさんのvim-historyというVimの過去のソースをgitにまとめたお話
    • 28年前のVim 1.14からソースがあります
      • この頃のソースコードならまだ規模がでかすぎず、読めそうな気がしてきます

懇親会

懇親会ではお酒の力を借りて、多くの人と会話できたかなと思います。
はじめ、たまたま h_eastさんと同じテーブルにいて少しお話出来たのはとても嬉しかったです(h_eastさんは覚えておられないかと思いますが、初めてQiitaに記事書いた時にコメントで"こういう機能ありますよ" っていう助言を頂いてて個人的にめちゃくちゃ嬉しかったので...)

aomoriringoさん(LTのドラお疲れ様でした)にすごく美味しいブランデー飲まさせて頂きました。
美味しすぎて何度かおかわりしてしまったのですが、後で調べたらめっちゃ高いやつですね...。
ご馳走様でした _(._.)_

他にも沢山の方とお話させて頂きました。

初対面の方とでも"Vimの欲しい機能どれに投票しました??"等とホワイトボード見ながら欲しい機能についてワイワイ語れて楽しかったです。

最高 of 最高 of 最高の一日でした。
今年は何かしら出来ればと思い、個人スポンサーチケットを購入したのですが、来年はもっと何か出来ることを増やして参加したいです。

登壇者の方、スタッフの方、参加者の方、スポンサーの方、そしてVimという最高のソフトウェアの開発を始めてくれたBramさん 本当に最高のカンファレンスをありがとうございました。

初めて自作キーボード作った やらかしたこととかメモ

先日buildersconで自作キーボードのセッションを聴いてそのままの勢いでHelixを買いました。
まだキー配置に慣れていないのですが、既に最高では??っていうお気持ちになっています。
とりあえず完成してキーマップも大分固まってきたので、 やらかしたこと含めて諸々書き留めておこうと思います。

この記事は作成したHelixによって書かれています。

作ったもの

遊舎工房さんのHelixキーボード(ステンレス五行版キット)を作りました。
ビルドガイドが親切なので作り方自体で詰まることは無かったです。

やらかしたこと

  • 基盤が若干焦げた
  • 左手が完成したときにいくつか反応しないキーがあった
  • 左手を2個作りそうになった

とりあえず上から反省しときます。。。今後のためにも

基盤が若干焦げた

これはもう文字通りにダイオードの表面実装をやっていたら基盤が若干焼けました。
なかなかハンダが融けず、慣れてもないのに温度を上げたのがマズかったですね。
調子に乗って温度を上げすぎてはいけないってのが学びです。

慣れるまでは240, 慣れてきたら270ぐらいでやると良さそうでした。
あと、半田こての先はこんな形↓のものを買ったほうが捗りました。
http://amzn.asia/d/4S94m4k

左手が完成したときにいくつか反応しないキーがあった

とりあえずキースイッチを全て取り付けた後でPCBに書き込み、動作確認したのですが、なんか結構な数のキーが反応しなかったです。
覚えてる限りでもA, 2, 5, Shiftは反応しなかったので完全にアウトですね
結局、どこが悪いのか分からなくて片手用のキーボードキットを再購入しました。

今思えばテスターで短絡してないかとかチェックしながら進めれば良かったですね。

左手を2個作りそうになった

左手が完成した後で右手を作り始めたのですが、何故か左手と同じ面にダイオードを実装していました。
右手用は左手用とは対象になる必要があるので逆面にダイオードを実装する必要があるのですが、何故か裏表を逆にしてしまった訳です。 謎い...
とりあえず30分くらいかけてダイオードを全部剥がして、再度やり直しました。

考えたキーマップ

キーマップは現状↓のような感じにしています。
keymap for helix · GitHub
なるべく左手小指のCtrlは押さずに右手親指のCtrlを使うように意識しているのですが、 なかなか慣れないですね。
LowerキーとRaiseキーもイマイチ活かしきれていない感じがするので、使っていきながら最高のキーマップを検討していきたいです。
とりあえず親指でのCtrlとEnterに慣れたい...

まとめ

まだ慣れてはないけどHelix最高!!
若干沼にハマった感がある...

また何か作ったらその時にブログ書きます。

Builderscon 2018 に参加した

公式サイト

buildersconは「知らなかった、を聞く」をテーマとした技術を愛する全てのギーク達のお祭りです。

Builderscon 2018に前夜祭から3日間参加してきた。 セッション数が多いので印象に残ったものを中心にメモと感想を...

全体的な感想とか

会場とか部屋サイズの事

  • 去年よりも人が多く、見ようと思ったセッションが人数オーバーで見れないということが多かった
    • 直前のセッションが長かったりすると次の部屋が埋まっていて見れないというのがあった
    • 諦めて他のセッション聞きに行ったらそこも面白いのであまり気にはならなかった
      • 見れなかったものも後日動画配信があるはずだからOKというのもある
    • 最終日のランチセッションに入れなかったのは残念 (お弁当食べたかった)

自作キーボード沼に引きずり込まれた

  • 前夜祭で自作BLEキーボードのその後を聞く → 欲しくなる
  • 最終日に自作キーボードのセッションを聞きに行く → 更に欲しくなる
  • 最終日のLTでも自作キーボードの話を聞く → 我慢できなくなる
  • 帰りの電車でHelix注文した

初日(前夜祭)

IoT・謎ガジェット

この日帰りながら2016年の "Bluetooth キーボードの作りかた" のスライドを見て自作キーボードやりたい熱が上がった

2日目

オープニング

凝ったムービーで注意事項とかの説明があった

"The Stanley Parable"というゲームへのオマージュらしい builderscon tokyo 2018 オープニング作成の裏側

声優さんも同じ人らしいのですごい凝ってる

ランチセッション (サイボウズ株式会社): Kubernetes で実現するインフラ自動構築パイプライン

  • 物理サーバ1000台
  • 自動化の流れ(よくあるパターン)

    • 人が手で手順書に沿ってやる
    • オペレーション辛い
    • Pythonスクリプトにして自動化
    • スクリプト実行の前提条件がが厳しくなってくる
      • 手順そのままの自動化は脆いシステムになる
        • 手順が少しでも異なればそれは正しい処理じゃなくなる
  • どうすれば良いのか

    • 理想状態への収束
      • ゴールとなる状態を与えると、現在の状態との差分を抽出し必要な手順を行うという考え方
        • →実際は複数ホスト間の調停や既存スクリプトと合わせるのが難しく、やりたくてもやれなかった
  • AWS以降に合わせて負債の解消→スケールするように

  • USにkintoneを展開するにあたりAWS上に構築。これまでの技術的負債を解消し、スケールするインフラにしたい

  • k8s上に構築した理由

    • 手順でなく、理想状態を与えてデプロイできる
    • NetworkやDBはCloudFormation、AP serverやLBはk8sでみることにより、フルスタックで理想状態への収束ができる
  • 使われていない自動化は壊れていく
    • ゼロから環境が作れることを保証するためにgit pushするたびにCIで開発環境に適用
    • 一日一回はCIでVPCから削除してフル構築

JavaCardの世界

  • 普段自分が認識しなさそうな範囲の話が聞けたのが面白かった
  • 会場でもJava Cardの存在を知っている人が数人, Java Card触ったことのある人0
  • なるほどーとはなったが、使いどころの無さそうな知識を得られた

lld − 開発ツールの主要コンポーネントの1つをスクラッチから作成した話

  • ゲスト無し Turing Complete FM 生放送(スライド付き)って印象
  • "2回書くことで1回目の経験を活かしてより良いコードを書く"という話はなるほど大事とは思うがなかなか出来ないよなと感じた
  • スライド公開されているか探してみたが見当たらなかった

  • 早くてシンプルなコードを書くために

    • 2回書く(1回目の経験を活かす)
      • 試行錯誤した上でしっくりくるものを試してみる
      • 良さそうなものをいくつか試してみる
      • 最終的には勘
    • 最適化する箇所を最小に留める(大半は読みやすさを重視する)
    • プロジェクトオーナーが責任を持ってコードをきれいに保つ
  • 速いプログラムはコードが速いわけではなくやりたいことがスムーズにできるようになデータ構造は速い

    • データ構造が先、コードが後
    • 良いデータ構造ができれば自ずと速いコードになる

3日目

なぜエンジニアはパフォーマンス計測しないのか

「やる気を出すのではなくやる気が出る状態を作る」いい話

なぜ私はキーボードを作るのか

個人的に今年のBuildersconで最も影響を受けたセッション

このセッションのせいで自作キーボード沼に引きずり込まれたといっても過言ではない

恐らく最も長い時間触っているインターフェイスといっても過言ではないので拘るのは大事

とりあえずHelixを作っているので、完成したらブログ書きます。

Go言語でコマンドラインで動くポモドーロタイマー作った

Go言語で何かコマンドラインツール作ってみたかったので、ちょうど欲しかったポモドーロタイマー作った。

gomato

作成の動機

そもそもポモドーロタイマーは普段からスマホアプリで使っていたが、

  • 広告が出てくる事
  • タイマー止めるときにスマホを見るせいで「メッセージ返信してたら休憩時間を無視してた」ってなる

という問題があったため、

  • PCで使える
  • 出来たら一番見ることの多いコマンドラインツールで作りたい
  • ポモドーロ数を集計してグラフにして欲しい

という上記3点を満たすポモドーロタイマーを探していた。

Webアプリとかだと見つかるが、コマンドラインツールだと3つ目の集計してグラフにする という部分を解決してくれる物が見つからなかったので自作に至った

Goを選んだ理由は使ってみたかったから。 後は、Goでコマンドラインツールを作っている人が最近は多そうだったので情報が集まりやすいだろうという 見込みでGoを選んだ。

結果はGoで作って正解だったと思う。

作成する上で詰まった部分とか諸々

タイマー処理

とりあえずタイマー部分は sethgrid/multibar を利用させて頂いた。 若干今回の希望に沿わない部分があるのでここは後で自作するかも

この辺りでゴルーチンと少し仲良くなれた気がする。

JSONに保存する所

JSONをGoで扱うには構造体を定義してやるのが一般的らしいので調べつつやった。 これは調べれば記事が沢山出てくるので色々試してみれば理解できる。

後日メモとして記事に残すかも?

保存する処理の部分でキーイベントを取得して保存後os.Exit(1)するようにしたが、これが良いのか悪いのか分からない。 最初、保存する前にos.Exit(1)が処理されてしまい、データが消える事があった。

この辺り↓が関係している気がする。

os.Exit()とdefer

保存処理としてioutil.WriteFile()を使っている。 とりあえずos.Exit(1)をループ抜けてから呼ぶようにしてからデータが消えない。

とりあえず希望通りの動作はするようになったのでまぁ、合ってるだろう。

httpサーバー

ポモドーロ数を集計してグラフにする部分で表示するためにhttpサーバーを立てたかった。 今回はGinを使用した。 当初はnet/httpを使おうとしていたが、シンプルで分かりやすいサンプル記事がGinで見つかったのでGinを採用

Ubuntu 16.04 に GoLang 1.6 と Gin Web Framework をインストールし、HTMLテンプレートを読み込むまで

割とサクッと出来た。

サブコマンド、ヘルプの作成

urfave/cliを使用した。 Golang コマンドラインツール とかって調べると大体これを使った記事が出てくる。大変よい codegangsta/cliと同じものっぽい。昔はcodegangstaだったとかだと思われる。 参考記事は無数にあるが、公式のREADMEが結局一番わかり易かった。サンプルも沢山ある。最高。

TUIの部分

これ、どうすれば良いか悩んでたら みんなのGo言語[現場で使える実践テクニック]termbox-goが紹介されていた。

まだ全部読めて無いけどめっちゃ参考になる。買って良かったです。

今後の課題とか

とりあえず動くようにはなって、期待していた最低限の物は完成したので公開した。

  • タイマーの表示部分は自作に変更したい。
  • グラフの表示内容として他にも幾つか用意すれば便利かなと思う。随時足していきたい。

あと、Go言語についてもう少しちゃんと勉強しようかと思った。

A Tour of Goとかやってみようと思います。

fish shellの初期設定覚え書き(PATHの設定とか)

fish shellを使い始めたので、やった設定を個人的なメモ

最初のWelcome to fish〜 を消したい

Suppress or Customize Intro Message in Fish Shell - Stack Overflow

function fish_greeting
end

とやると消える

逆に何か出したければ上の関数の中に書けばOK

PATHとかrbenvとかの設定をしたい

設定ファイル~/.config/fish/config.fish

PATHは以下のように

set -x PATH $HOME/.rbenv/bin $PATH

初期化処理を以下のように

source (rbenv init - | psub)

書くことで解決出来る。

たどり着くまでの試行錯誤

とりあえず.bashrcを~/.config/fish/config.fishへそのままコピペした所、PATHの設定と 初期化処理でエラーが出る。

調べると、PATHの設定方法が他のshellと違うらしいことがチュートリアルに書いてある。

fish: Tutorial - Exports (Shell Variables)

初期化処理については以下のissueが参考になりました。

eval (rbenv init -) is broken on fish #869

以下のQiita記事の方法でも設定可能かもしれない。(試していない)

fish で rbenv の初期処理を実行する方法