リポジトリごとにGOPATHを切る環境でのvim-go

↓のようなリポジトリごとにその直下をGOPATHにする環境でGoを書く時、 . ├── github.com/daisuzu/bar │ ├── bin │ ├── pkg │ └── src │ └── bar │ └── main.go └── github.com/daisuzu/foo ├── bin ├── pkg └── src └── foo └── main.go 両方のリポジトリの…

図のライブプレビュー環境を改善した

Go

PlantUMLで図を書く時もblockdiagと同じようにやろうかなと思ったけど、markdown作ったりpandocのテンプレートを準備するの面倒になったのでその部分をやってくれるサーバを作ってみた。 github.com go get github.com/daisuzu/liveimgしてから goemon livei…

Goで時刻が絡む単体テストをどうするか考える

Go

Goにはtimeパッケージをmockする仕組みが用意されていない。 そのため、time.Nowを以下のようにして使っているコードを見かけることがある。 var Now = func() time.Time { return time.Now() } たしかにこうすることでNow()が返す値を自由に設定でき、単体…

Meguro.vim #8 に行ってきた

vim

Meguro.vim #8 で久しぶりにvimrcを整理し、不要なプラグインや設定なんかを削ったら300行くらい短くすることができた。 ついでにリファクタリングをして、次のような任意のEXコマンドの結果を新しいバッファに表示するコマンド*1を作ってみた。 (今までは特…

gRPCでFirestoreをListenする

昨年の10月にBetaリリースされたCloud Firestoreですが、公式ライブラリによるデータのリアルタイム更新は Web(Javascript) Node.js iOS(Swift or Objective-C) Android しかサポートされていないようです。*1 GAまで待てば良いのでしょうが、今でもgRPCのLi…

2017年の振り返り

年末にやったこと無かったけど、たまには振り返ってみる。 今年は転職活動から始まった年だった。 それから初めて勉強会で発表してきたけど、転職したことがきっかけだったと思う。 ちょっと上手く説明できないけど... 喋ってきたのは Fablic.vim #2 tree.vi…

Vimのカバレッジを見る

vim

この記事はVim Advent Calendar 2017の2日目の記事です。 Vimのカバレッジはcoveralls.ioやcodecov.io上で見ることができますが、手元で見たくなることもあると思います。 そんな時はMakefileに書いてある通り、次のようにしてカバレッジを計測し、生成され…

VimConf 2017でコントリビューターになる話をしてきた

vim

VimConf 2017 - An international Vim Conferenceで speakerdeck.com という発表をしてきました。 最初は25分も話すことなんてあるかな?なんて思ってたら意外と良い感じの時間になりました。 少し足りなかったところを少し補足しておくと、 gitコマンド v8.0…

プレゼン資料にハイライトされたコードを貼り付ける

vim

プレゼン資料を作っててコードを綺麗に表示させたくなったんだけど、 何かをインストールしたりとかは面倒だったのでvim*1を使ってやることにした。 以下のコマンドでブラウザが開くのでコピペするだけ。 " mac :TOhtml | w | !open % " win :TOhtml | w | !…

Meguro.vim #4でプラグインを作った

vim

Meguro.vim #4で自分用の:VimFilerSimpleに代わるプラグインを作りました。 github.com vimfilerは機能が豊富でそこまで不満があったわけではないのですが、 常に全ての機能を必要としているわけではない unite.vimに依存している ので、一番使う頻度の高い …

grpc-web-clientをjsで試してみた

gRPC-Web: Moving past REST+JSON towards type-safe Web APIs - Improbableを見て、grpcwebを使えばgoogle.golang.org/grpc製の既存gRPCサーバがブラウザからも叩けるようになるとのことなので試してみた。 github.com サーバ側の変更点 DOC.mdにも書いてあ…

今更だけどLGL22をIIJmioで使い始めた

LGL22はそこそこ古い機種で、もう3年くらい使っているけど 色々とあって未だにこれを使っている。 www.lg.com 理由の1つとしてIIJmioのタイプAを待っていたっていうのもあるんだけど、 タイプAはVoLTE対応機じゃないと使えないので非対応のLGL22はアウツ… な…

エンジニアにジョブチェンジしてやってきたこと

「君のスキルはウチの新人と同レベルだけど、そんなんでやっていけるの?」と言われて今の会社に入社することを決めたのはもう4年半ほど前のこと。 前職はテスターでコードは全然書けなかったしデータベースとかも触ったことなかったけど好き勝手やらせても…

Vimでファイルを開く方法(基本編)

vim

この記事はVim Advent Calendar 2016の4日目の記事です。 Vimでファイルを開くのに Unite.vim Denite.nvim ctrlp.vim など のプラグインを使っている人はたくさんいると思います。 これらのプラグインは大変便利なインターフェースを提供してくれているので…

builderscon tokyo 2016 に行ってきた

「知らなかった、を聞く」がテーマの builderscon tokyo 2016 に行ってきました。 あのmattnさんが発表するセッションがあるということで気になっていたイベント。 チケット販売日はたまたま代休を取っていて、 たまたま販売開始のアナウンスを見たのでとり…

VimConf 2016 に行ってきた

vim

VimConf 2016に行ってきた。 発表メモ Introduction to Vim 8.0 by Ken Takata 最近Vimに入った機能の中でjob, timer, packagesは使ったけど *1 *2 Partial, lambda, closureはまだ触っていないので試してみたい 日本人VimmerがVim本体に多くのパッチを送っ…

gRPCサーバのベンチマーククライアントを生成する

google.golang.org/grpcでサーバ書いたのでそろそろベンチマークしてみようと思ったらgoogle.golang.org/grpc/benchmarkという便利そうなパッケージを発見した。 早速clientをビルドしてみたけどgrpc_testingパッケージ専用だったので中のmain.goをテンプレ…

neocompleteとneobundleを捨てた

vim

半年ほど使っていなかったのでvimrcを整理するタイミングで完全に消すことにした。 ただ長年ツートップだったプラグインなので消すに至った経緯を軽くメモっておく。 neocomplete 今の自分にはVim標準の補完機能(ins-completion)で十分だった。 自動補完が発…

vimのjob機能を使ってプラグインを更新する

vim

2ヶ月以上経ってるけど一応前回の続き。 ~/.vim/pack/bundle/opt/配下にインストールされているプラグインを更新するには、 ls -d ~/.vim/pack/bundle/opt/* | xargs -I{} git -C {} pull --ff --ff-only でやってしまうのが手っ取り早いんだけど、あえてvim…

vim pluginのbackground loading

vim

最近vimに追加されたpackages、timerを使ってvimが起動した後にプラグインの読み込みができたらどうだろう? と思ったのでやってみました。 以下のような設定をvimrcに追加してvimを起動するとvimが立ち上がってからプラグインが読み込まれます。 " vim起動後…

goemonを使ってblockdiagを書いてみたら快適だった

そこそこちゃんとしたドキュメントを書くときは Sphinx blockdiagシリーズ sphinx-autobuild を使うけど、 図だけライブプレビューしながら書くには大げさすぎるのでgoemonを使ってみた。 まずはこの記事を参考にmarkdownのライブリロード環境を構築。 ただc…

VimのCTRL-X補完について

vim

この記事はVim Advent Calendar 2015の5日目の記事です。 Vimで補完といえばShougoさんのプラグインneocompleteが有名ですが、プラグインを使わなくてもCTRL-X サブモードで補完を行うことが可能です。 この機能はブログや書籍などでたびたび紹介されてはい…

Goのパッケージをgit subtreeで管理する

Go

Go 1.5からVendoring機能が使えるようになったので外部パッケージをgit subtreeで管理してみた。 以下のコマンドで対象のリポジトリにパッケージを追加することができる。 ※ --squashをつけると取り込むパッケージのコミットを一つにまとめることができる # …

macvim-kaoriya or macvimをビルドする(2015/08)

vim

vim 7.4.774で追加された v:completed_item をmacvim-kaoriyaで使いたくなったけど今日の時点だとまだバージョン7.4.769なので使えない... Homebrewからインストールできるらしいけど手元の環境ではエラーが出たのでコンソールからビルドしてみる。 2015/08/…

Shibaで図を書いてTracで共有する

Shibaというマークダウンをプレビューしてくれるアプリがあるのですが、 @Linda_pp そのうち図を表示できるようになったりしますか?— daisuzu (@dice_zu) 2015, 8月 12 と言ってみたところ Shiba で mermaid.js 使えるようにした https://t.co/gdJB81t3tC C…

Middleman(Slim) + Ractive.jsでWeb AppのUIを作る

JSONでバックエンドサーバとデータをやり取りするというごく普通のWeb Appを作るにあたり、 UIをどうするか悩みつつ Middleman と Ractive.js を使ってみることにした。 Middlemanを選んだのは 開発中のlivereload css, jsのconcat/minify ページの構造化 各…

Goでhttp.ClientのテストをするときにProxyを書き換えてテストサーバにリクエストを投げる

Go

Goで外部リクエストが関わる処理をテストする - Qiita のfetch(url string)と違って引数でURLを取れないような関数をテストする場合、 http.DefaultTransport.(*http.Transport).Proxyを書き換えるとテストサーバにリクエストを飛ばせる。 main.go package m…

neocompleteのomniソースからneosnippetのスニペットを生成する

vim

前回のTokyoVimで作ったアレをプラグイン化しました。 daisuzu/miosnippet.vimgithub.com プラグイン名は語感と強引なこじつけです。 クーポンなんかはありません。 関数の戻り値をスニペットに含める機能や スニペットを展開した時に型を消す機能とか を実…

TokyoVim#24に行ってきた

vim

TokyoVim#24 (2015/03/21 13:00〜)tokyovim.connpass.com 今日のTokyoVimではneocompleteのomniソースから関数のシグネチャのスニペットを生成するVim scriptを作ってみました。 今のところ対応しているのは go(gocomplete) python(jedi) のみです。 使い方…

vital-smtpを作った

vim

Vim Advent Calendar 2014の7日目の記事です。 昨日は@katono123さんのVim script + Lua で rogue.vim を作った話でした。 以前unite-notmuchというメールを閲覧するプラグインを作ったのですが、 メールを送信する機能がないため、これと組み合わせて使うメ…