まったりするmatayu

ツイートにゴミがついた感じのブログ

vscodeのcodeコマンド

Codeコマンド

vscode を使っている人であれば打ったことがあるであろうcodeコマンド

実はbinaryじゃなくてshellscriptが見れる

shellscriptがそのままあることもあるんだなぁ

$which code
/usr/local/bin/code
$cat /usr/local/bin/code
#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.

function realpath() { python -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; }
CONTENTS="$(dirname "$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")")"
ELECTRON="$CONTENTS/MacOS/Electron"
CLI="$CONTENTS/Resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
exit $?

realpath

dirname

  • ディレクトリのパスを返す
  • 知らないコマンドがまだまだたくさんあるね
$dirname ~/ws/notes/blog
/Users/matac/ws/notes

$?

直前のプロセスの終了ステータス

exit $?

終了ステータス$?を返して終了する

debugしてみる

$zsh -x /usr/local/bin/code .
+/Users/matac/.zshenv:1> source /Users/matac/.cargo/env
+/Users/matac/.cargo/env:4> case :/Users/matac/.nvm/versions/node/v14.16.1/bin:/Users/matac/.pyenv/shims:/Users/matac/.pyenv/bin:/Users/matac/.rbenv/shims:/usr/local/opt/openssl@1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/go/bin:/Users/matac/.cargo/bin:/usr/local/go/bin:/Users/matac/ws/go/bin:/Applications/Julia-1.6.app/Contents/Resources/julia/bin: (*:/Users/matac/.cargo/bin:*)
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> realpath /usr/local/bin/code
+realpath:0> python -c 'import os,sys; print(os.path.realpath(sys.argv[1]))' realpath
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> dirname /Users/matac/realpath
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> dirname /Users/matac
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> dirname /Users
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> dirname /
+/usr/local/bin/code:7> CONTENTS=/ 
+/usr/local/bin/code:8> ELECTRON=//MacOS/Electron 
+/usr/local/bin/code:9> CLI=//Resources/app/out/cli.js 
+/usr/local/bin/code:10> ELECTRON_RUN_AS_NODE=1 //MacOS/Electron //Resources/app/out/cli.js .
/usr/local/bin/code:10: no such file or directory: //MacOS/Electron
+/usr/local/bin/code:11> exit 127

マジで何やってるのかわからん

$ls -la /usr/local/bin/code
lrwxr-xr-x  1 matac  admin  68  3 28 20:50 /usr/local/bin/code@ -> /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code

実体はここにある

[~/ws/notes/blog]
$zsh /usr/local/bin/code .
/usr/local/bin/code:10: no such file or directory: /Users/matac/MacOS/Electron
[~/ws/notes/blog]
$bash /usr/local/bin/code . 

zshじゃなくてbashなら行けるっぽい(bashって書いてあるやろがい!)

[~/ws/notes/blog]
$bash -x /usr/local/bin/code .
++++++ realpath /usr/local/bin/code
++++++ python -c 'import os,sys; print(os.path.realpath(sys.argv[1]))' /usr/local/bin/code
+++++ dirname '/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code'
++++ dirname '/Applications/Visual Studio Code.app/Contents/Resources/app/bin'
+++ dirname '/Applications/Visual Studio Code.app/Contents/Resources/app'
++ dirname '/Applications/Visual Studio Code.app/Contents/Resources'
+ CONTENTS='/Applications/Visual Studio Code.app/Contents'
+ ELECTRON='/Applications/Visual Studio Code.app/Contents/MacOS/Electron'
+ CLI='/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js'
+ ELECTRON_RUN_AS_NODE=1
+ '/Applications/Visual Studio Code.app/Contents/MacOS/Electron' '/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js' .
+ exit 0

なのでcodeコマンドは最終的に '/Applications/Visual Studio Code.app/Contents/MacOS/Electron' '/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js' . を実行している

'/Applications/Visual Studio Code.app/Contents/MacOS/Electron'

vscodeを開くコマンド

'/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js'

[~/ws/notes/blog]
$cat '/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js'
"use strict";const bootstrap=require("./bootstrap"),bootstrapNode=require("./bootstrap-node"),product=require("../product.json");bootstrap.avoidMonkeyPatchFromAppInsights(),bootstrapNode.configurePortable(product),bootstrap.enableASARSupport(void 0),process.env.VSCODE_CLI="1",require("./bootstrap-amd").load("vs/code/node/cli");

//# sourceMappingURL=https://ticino.blob.core.windows.net/sourcemaps/054a9295330880ed74ceaedda236253b4f39a335/core/cli.js.map

後ろにディレクトリを指定してあげるとvscodeでそのディレクトリを開ける動きをするはず

めっちゃ長い1 line code

vscodeのフロントまでたどり着いたっぽい

bootstrap はフロントエンドライブラリ

ちょっと見辛いので改行入れてみた(あんまり改行できなかった)

"use strict";

const bootstrap=require("./bootstrap"),bootstrapNode=require("./bootstrap-node"),product=require("../product.json");

bootstrap.avoidMonkeyPatchFromAppInsights(),bootstrapNode.configurePortable(product),bootstrap.enableASARSupport(void 0),process.env.VSCODE_CLI="1",require("./bootstrap-amd").load("vs/code/node/cli");

requireでモジュールbootstrap, bootstrapNode, productを読み込んでいる 最後にvs/code/node/cliがloadされている。見に行ったらとてつもなく長い1 line codeがあった。

このくらいにしておこう...

build and debug

https://github.com/microsoft/vscode/wiki/How-to-Contribute

buildしてcodeしたときの動きをdebugすると面白そう

ブラウザでも開けるのか

webアプリケーションって思ったよりも大きい括りかもしれない

webブラウザvscodeが立ち上がってる不思議な感覚

f:id:mattari_matayu:20210527113757j:plain
webブラウザで立ち上がっているvscode

debugはappとして起動しながらやろう

いろいろ準備して./scripts/code.shで起動できる

多分これがcodeコマンドに相当するはず

./scripts/code.sh ~/ws/notesとやったら~/ws/notesが起動後に開かれた

  • これ自体はcodeコマンドとは別物みたい

ソースをみに行ったら、しっかりインデントがついたコードが見れた

GitHub - microsoft/vscode: Visual Studio Code

$resources/darwin/bin/code.sh .
resources/darwin/bin/code.sh: line 10: /Users/matac/ws/src/github.com/microsoft/vscode/MacOS/Electron: No such file or directory

これがcodeコマンドだろうけど、パスがずれてるっぽくてうまく動かない

実機の場合は

/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code

debug環境は

/Users/matac/ws/src/github.com/microsoft/vscode/resources/darwin/bin/code.sh

ちょっといじらないとcodeコマンドのdebugができない...?

vimtutorやった

vimを使うことが多いですがvimtutorというvimチュートリアルをやったことがなかったのでやりました。

コマンドでvimtutor jaと打つとできます。(jaをとると英語でできます) いままでなんとなくでvimを使ってたので、結構知らないコマンドや操作がありました。 知ることはできたので後はちゃんと使っていくだけですね。わすれっぽいから...

ctrl+], ctrl+o, ctrl+iはブラウザっぽくて面白かったです。この仕組みに名前はあるのだろうか。 vimの操作極めて、vscodevimキーバインド使うと楽しそう。

読み書き聞き

最近文章を読むのも書くのもちょっと辛いです。

色々読みたいものはあって読むのですが、最中に色々考えてしまって内容がほとんど入ってきません。

別に何か悩みごとがあってその事ばかり考えてしまうというわけではなく、単純に読みながら別のことを考えている感じです。

環境の難易度が上がったのか、自分のレベルが下がったのかわからないですが困りました。

生活できなくなるくらい悪くはないですが、楽しくはないですね。

これは文章に限らず会話のときもそうです。人の話を聞いてるつもりでも、どうしても聞き漏らしがあります。

聞いてる最中に、言葉が脳を経由せずに右から左へ抜けていくのを本当に感じることが出来ます。

大抵は聞き返せば問題ないですが、あまり何回も聞き返すのは気が引けるし、相手も気分は良くないでしょう。

会話と読み書きの頻度が低くなっているのが原因だと思います。

あと、集中力も低下しているような気がしていて、それも原因の一つに挙げられるでしょう。

もとからこんなもんだった説もあります。

どちらにせよ、今の能力値では物足りないので言語を使用する頻度を増やして鍛えていきたいです。

ありがとうgit reflog

gitってブランチの移動やresetの履歴まで残ってるの初めて知りました。

深夜の私はなにか血迷い$git reset --hard HEAD^(たぶんbranch間違えたか何か).

つらい気持ちになっていたときに諦めきれずに調べたら、reflogが出てきて作業内容を取り戻すことが出来ました。

めでたしめでたし。

1限は辛かった

できることなら1限という制度はなくなってほしいです。オンライン実施だったので授業が始まるギリギリまで寝てました。今回はオリエンテーションみたいな感じだったのでそれでも問題なしです。まあでも毎度のことですが、毎週1限に出ると慣れてきます。自分の場合は慣れの問題です。3コマも1限があるので早起きが得意になりそう。

卒業要件的には卒研・セミナーの単位で終わりです。しかし、他にも12単位くらい取るので大学のほうがいつもより暇になるということはなさそうです。

GitHub Actions

今日は初めてGitHub Actionsを触りました。学科にGitLabがあって、そっちではGitLab CI/CD, GitLab Runnerが使用できます(以下、GitLab CI)。しかし、GitHub ActionsとGitLab CIのyamlの書き方は違います。同じyamlを使い回すといったことはできないかも。 ある程度対応関係はありそうなので、変換してやれば使えるかもしれないという予想。特にそういった予定はないですが。

Migrating from GitLab CI/CD to GitHub Actions - GitHub Docs

ウマ娘

因子について教えてもらったのでうまぴょい目指してがんばります。

明日から授業が始まる

いきなり1限からで辛いです。オンライン講義なのでまだ楽ですが、しっかり起きられるかどうか微妙です。

これツイートよりゴミなブログだな。

明日はもっとしっかり書きます。とりあえず早く寝なきゃ。

バイトの初出勤でした

今日は4月からの新しいバイト先に初出勤しました。初出勤と言っても3月の初め頃に顔合わせはしていたので見知らぬ人たちに囲まれて、というわけではなかったですが。web系の業務で、自分の経験としてはenpitでrails触ったくらいなのでこれから知識を蓄えていきたいです。Reactとかも触るのかな。

今年度はシス管、研究、バイトを継続的に行い、何かもう一声!という感じになりそうです。 継続的に行うためには時間帯決めてやったほうがいいかもしれない。シス管は少々柔軟な対応が必要な気はしますが。

ブログも継続的にやってください自分。

明日はシス管ミーティングで学科システム関係の論文読み会をやるようです。学科システム興味ある人は覗くと良いかも?

また、自分は明日Cephの構築テストをやる予定です。どんな感じでやるかは考え中...