done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

今更ながら「嫌われる勇気」を読んだ

本屋でこういう自己啓発系の本が置いてあるセクションに行くと、必ずと言っていいほどこれ置いてあるじゃないですか。ええい、認めましょう。ずーっと気になっていました。ということで読んでみました。

アドラー心理学なるものに関する本で、ある哲学者が悩める青年を徹底的に論破していくお話です。ふふ、困った人だ。(嘘です)

覚えておきたいこととしては、以下。

  • 他者の課題と自分の課題は別物だから混同するな
  • 過去にあった事象に意味づけするのは自分
  • 「貢献感」を大事にするべき
  • 自分がどう生きるかを選ぶのは自分
  • 変えられないものを何とかするのではなく、変えられるものに目を向けるべき
  • 今ここの人生を生きるべき

ともすると、頭がもっと良ければなーとか、もっとお金があればなーとか思ってしまう「ないものねだり」は時間の無駄なので、もっと今の時間を精一杯生きようと思いました。

WindowsのターミナルエミュレータはMobaXtermがいい、という話

mobaxterm
mobaxterm

皆さんはWindowsでのターミナルエミュレータは何を使っていますか?minttyとかconemuとか、最近だとMicrosoft謹製のWindows Terminal とか使っている人も多いのではないでしょうか。 www.microsoft.com

私は最近MobaXtermを使っています。以下のような要件があるからです。

  • WSLを使いたい
  • Shift + Insertでペーストしたい
  • 画面分割したい

これらの要件を満たせていたのが https://mobaxterm.mobatek.net/:MobaXterm でした。特にX serverが内蔵されているってのが良くて、別途VcXsrvとか入れなくていいんです!

X Serverいらなくていいなら、正直Windows Terminalが成熟すればそちらでもいいかなーという気分ではあります。Visual Studio Codeに期待。特にCode Hierarchy機能がほしい・・・

個人の雑多なメモ取りには何がいいか

雑多なメモをPCで取ることが多いが、あっちに書いてしまったりこっちに書いてしまったりとイマイチまとまらない。

evernote.com www.notion.so boostnote.io

あたりを使ってきたが、なんというか、ノートのとり方をアプリに決められてしまっているようで嫌になってしまう。

それぞれの製品で、個別にはとても便利なところがあるんだが、個人で使うにはオーバースペックすぎると思ってしまいます。

結局最近は妥協案として、GitHubのプライベートリポジトリにMarkdownでとにかく突っ込んでおいて、後で検索する、というやり方にしているけど、なんだか効率よくない気がする。

なにかいい方法はないだろうか。要件としては、

  • Markdownで書ける
  • Gitで管理できる
  • タグなどが使える
  • TOCを勝手に作ってくれる
  • いい感じに検索ができる
  • 画像なども挿入できる

くらいかなぁ。Gitで管理できるのが少ない・・・あとでblameして、いつそのメモを書いたかを思い出したいときとかあると思うんだけどな

sshcodeが便利そう

前置き

最近WSL内にVSCodeをインストールして使っていたのですが、やはり動作が遅いのがどうしても気になっていました。

そういえば最近

coder.com

ってのが話題になっていたなーと思い、いっそ適当なVPSを借りてブラウザ経由でVSCode動かしたほうが生産的かなーとか思って少しあさっていると、以下のプロダクトを見つけました。

GitHub - cdr/sshcode: Run VS Code on any server over SSH.

適当なLinuxを動かしているサーバを指定して、コマンドを実行するだけでcoder-serverのインストールから自動でやってくれて、over SSHVScodeが動かせる?ということで、試してみました。

使い方

適当なVPSLinuxが動いていて、SSHログインができることが条件だと思います。

今回は、AWS Lightsail上で動いているUbuntu 18.04のVPSを用意して試してみました。つなげるもとはWSLです。

  1. github.com から、バイナリを落としてきてWSL上のPATH通っている適当な場所に配置
  2. sshcode -ssh-flags "-p <ポート番号> -i <秘密鍵の場所>" <user名>@<host名>と実行
  3. vscodeが立ち上がる

なんとこれだけで本当に動きました。どうもWindows側にChromeをインストールしていて、パスが通っていると勝手にそっちを使ってくれるらしく、まじで便利。動作も快適です。

セキュリティ面とかがよくわかっていないのですが、SSH tunnelingしている感じになっているのかな?そのあたりが安全なら、まじで私にとっては最強のソリューションかもしれないです。

VimからVisual Studio Code (VSCode) に移行した

VSCode(Windows)とVSCode(WSL)
VSCode(Windows)とVSCode(WSL)

普段はインフラエンジニアをやっているので、サーバにSSHして設定ファイルをVimでいじるみたいなことがままあります。 その延長線上で、プログラムのコードだったりとかもVimで書いていたのですが、正直 .vimrcいじって頑張って補完とか出すのめんどいなーと思っていたこの頃でした。 (ぶっちゃけJavaとかはIntelliJ使っていたりいまいち統一感なかったですが)。

そんな中、なんの気無しに以下の記事を読んでいて、すごいなーと思う一方、「ここまで頑張ってやっとVSCodeと同様なの?」という気持ちが湧いてきてしまいました。 (記事の著者の方には申し訳ないですが・・・)

qiita.com

そんなわけで、VSCode をプログラミング用途で使い始めてみました。VSCode自体は昔から使っていたのですが、 Windows環境に入れていただけで、Windowsではそもそもプログラミングしないので、テキストエディタとしてしか使っていなかったです。

しかし、VSCodeをWSLの中で動かすことができると知り、試してみることにしました。

使っている環境は以下です。

もともとIntelliJもWSLの中で使っていたこともあり、多分動くだろうなーと思っていたのですが、なぜか今まで試していませんでした。

WSL(Ubuntu)には、以下の手順に従ってインストール。Snapでもインストールできるかもしれませんが、なんとなく試していません。

Running Visual Studio Code on Linux

インストール後はcodeと打てば起動します。簡単ですね・・・と思っていたら、なぜかWindows側のVSCodeが立ち上がってしまいました。

確認してみると、どうやら$PATHWindows側のVScodeを指している模様。以下のように、aliasを貼って回避しています。

alias code="/usr/bin/code"

Windows側のバイナリがWSLからシームレスに実行できると、こういう弊害があるのか・・・)

aliasを貼ったあとは無事に動いています。以下、所見。

  • いいところ
    • プラグイン入れたら、あとは基本デフォルトのままでいい感じに動く
    • VSCode内のTerminalが普通に動く
      • 動くかどうか不安だったのですが、ちゃんとWSL内のZshが動きます。
  • 悪いところ
    • 動作が遅い
      • VScodeだからなのかはわからないですが、多少もたつく感じがします。コード行数が多くなると辛くなるとかあるかも。
    • たまに表示が壊れる
      • 同様の環境で動かしているIntelliJではないのですが、たまにポップアップとかがぶっ壊れて操作不能になります。VScodeを再起動すれば治りますが

総評

VimもいいけどVScodeもいいね

小ネタ: WSLからWindowsのアプリケーションを呼び出したいとき

WSLは便利ですが、基本GUIの環境が入っていなかったりして、たまにコマンドラインからWebブラウザを呼び出すようなスクリプトを使っていたりすると動かなかったりします。

URLをWindows上のChromeなどにコピペすればよいのですが、面倒でした。

なので、WSLからWindows側のChromeコマンドラインで呼び出して使いたかったのですが、やってみたところ以下で普通に動きました。

"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" google.com

これでChromeのタブが開きます。インストール先は適宜変えてください。aliasに登録しておくと便利だと思います。