neovim コメント内で改行した時に自動でコメントされるのを防ぐ
最近 neovim を使い始めていて、vim を使ってる時から気になってた問題に向き合うことにした。この問題がどんな内容かというと
“ vim ファイルでのコメント
といったコメントを記入していてカーソルが行の最後に来た時、エンターキーを入力して改行するはずである。その時に
“ vim ファイルでのコメント “
といった感じで、カーソルの前にコメント文字が勝手に入力されてしまうことである。
この問題を全てのファイルフォーマットに対して解決したかった。ググってみると沢山の情報が出てきた。例えば init.vim
に
set fo-=c fo-=r fo-=o
を記入すると解決するみたいな内容ばかりで、実際にはどれも解決しなかった。それで Twitter 上でいじけてると、通りすがりの暗黒美無王さんから次のようなヒントをもらった。
続きを読むhomebrew を使って gomod 経由で Go のバイナリをインストールする
Go 1.14 では modules がついに production ready な状態になった。
これまで ghq といったツールを使い、GOPATH
直下に自分のワークスペースを作って開発するといった手法とはお別れになるだろう。開発に関してはとても便利になったが、これまで go get
や go install
で Go のバイナリをリモートからインストールしていたが、 modules を使っているワークスペース上で行うと、プロジェクトに使われる module としてインストールされてしまうため、良い方法はまだ存在しない。
しかし、global install
ができるようしたい!といった issue は既に存在するため将来的には可能になるかもしれない。
そんな中、Go Hacker の一人である @FiloSottile 氏が homebrew と gomod を組み合わせて、上記で記述したやりたいことが実現できるツールを開発していた。
続きを読むGo で AND, OR 条件付きのテキストマッチを行う
AND, OR 条件付きでテキストがマッチしてるか確認する関数を作る。
Perl や PHP 等の PCRE をサポートしてる正規表現を使う場合は、こんな感じでいい。
/(?=.*(hello|world))(?=.*(foo|bar))/
こうすると
hello, foo hello, bar world, foo world, bar
といったそれぞれの文字列にマッチする。「hello または world」かつ「foo または bar」にマッチするかどうかという関数を作りたい。
それで、この正規表現を組み立てるようなコードを書いてみたけど、Go ではこの (?=re)
といった肯定先読みの表現がサポートされておらず、困ってしまった。
そこで、自力でロジックを書くことにしたが...
続きを読む2019年の仕事周り簡易まとめ
この年は他の会社に入社していたら絶対に経験できないだろうなということを経験できたので本当に良い年だったと思う。優秀な人が多い会社なのでそういった方々と一緒に仕事をすることができたおかげで「どんな考えを持って仕事をすべきか」というのが少しだけ見えた気がした。
もっとあるだろうけど、一旦思い出したことを簡単にリスト化した
続きを読む知らないであろう @, % シジルのお話
こちらは Perl Advent Calendar 11 日目の記事です。
小ネタです。
社会人になって Perl と触れ合う機会が少なくなりました。Go と PHP を主に書く会社に入社するとこんな感じになります。
アプリケーションを書くスピードは断然Goの方が早くなってしまったけど、適当なデータを処理するとかワンライナーならPerlを使った方が早い身体になってる
— GCP Professional Architect (@codehex) November 30, 2019
しかし、Perl が大好きなので、コードリーディング力を失わないように何か実装するときに必ず一回は CPAN に上がっている Perl のモジュールのロジックを参考にします。また Twitter では Perl 的なコードを読む力を温存するために ThisIsPerl bot をフォローしています。
ある日このコードを読んでいて気づいた事があったのでそれについて記述します。
続きを読むGCP にて他プロジェクトの GKE クラスタを使えるようにする
GCP の話。GCP にはプロジェクトという概念があって、普段自分が使ってるプロジェクトではない他のプロジェクト内の GKE を操作できるようにするためのメモ。
- gcloud auth を service account で行う
- gcloud config set でプロジェクトをセットする
$ gcloud auth activate-service-account [a-z]+@<PROJECT>.iam.gserviceaccount.com --key-file=<FILE_NAME>.json $ gcloud config set project <PROJECT>
これで gcloud を使って他プロジェクトを扱うことが可能。
今度は gcloud container コマンドを使って操作したいクラスタへ接続する。まずは list を使って一覧を取得。
$ gcloud container clusters list NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
といった感じで表示される。該当のクラスタから credential を取得する。
$ gcloud container clusters get-credentials <CLUSTER_NAME> --zone <LOCATION>
あとは kubectl config get-contexts
を実行するなどして切り替えたいコンテキストを選べばいい。
細かいことは下記のリンクにも書かれてる。