Monday, 31 May 2021

ヴァイオレット・エヴァーガーデン

ちょっと twitter で激推ししていた人がいたので。東京でもでっかいポスター見かけたし。

珍しく録画し損ねたので Netflix で。シドニアの延期のせいか、サザンプレックスで劇場版もやっていたので、そちらも。

いろいろ問題はあるが、まぁ、泣けたからいいかな。自分では積極的には見に行かないタイプの話かも。

 割とすぐ泣く方です

機械式タイプの代筆屋さんとか面白いもの持ってくるな。中学生の頃、妹の赤のバレンタインでさんざん

 Queen や Yes の歌詞をタイプした

紙を入れる、ロールを廻す、キャリッジを戻す、深くタイプする、その音が良いね。

IBMのセレクトリックだして欲しかったかも。

Sunday, 30 May 2021

VS Code 側

午前中は TypeScript のお勉強をしてました。だって、

  declare const Buffer: any;
  const hasBuffer = (typeof Buffer !== 'undefined');
  export class VSBuffer {
      static alloc(byteLength: number): VSBuffer {
          if (hasBuffer) {
              return new VSBuffer(Buffer.allocUnsafe(byteLength));
          } else {
              return new VSBuffer(new Uint8Array(byteLength));
          }
      }

いきなり、これですよ。なんだよ、このコード。any で受けて、hasBuffer ですか? record型は面白いが微妙。

  % ls ~/src/public/vscode/src/vs/editor/common
  commands/       core/         editorCommon.ts    model.ts       services/       view/
  config/        diff/         editorContextKeys.ts modes/        standalone/      viewLayout/
  controller/      editorAction.ts    model/        modes.ts       standaloneStrings.ts viewModel/

というわけで、正直なMVCでよろしい。で、

  % more ~/src/public/vscode/src/vs/editor/common/model/textModel.ts

が Model というところまではすぐにわかったんですが...

  key input から model 変更の道筋がわからない

VSCode + Chrome extension で debug していくわけなんですが、さっぱりわかりません。なのだが、学生が getRange で捕まえられるっての発見。
僕がわからないところを見つけてくるのは偉すぎる。

なのだが、

  stack trace をコピペできないのでスクショ

なんだよそれ。でわかったのは、

  # In vs/workbench/browser/parts/editor/textResourceEditor.ts
  60:
  61:  // Remember view settings if input changes
  62:  this.saveTextResourceEditorViewState(this.input);
  63:
  64:  // Set input and resolve
  65:  await super.setInput(input, options, context, token);
  66:  const resolvedModel = await input.resolve();

await で resolve しているわけね。setInput ではわからん。

結局、
  # editStack.ts
  public pushEditOperation()
で editor command を undo 用に取っておいて、

  # vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts
   public applyEdits(rawOperations: ValidAnnotatedEditOperation[], recordTrimAutoWhitespace: boolean, computeUndoEdits: boolean): ApplyEditsResult {

で処理するってところまで見れました。この辺のcomandにhookがあるので、それでいろいろできるらしい。

行単位で変更前と後を持っている贅沢な作りだな。

Saturday, 29 May 2021

vim 側

Vim は93年に書かれてたものなんですが、今読むと、

  絶望的に古くさい

あの当時でも疑問なプログラミングスタイルだな。Cで書かれているのはともかく。

  あらゆる場所にある ifdef HOGE_FEATURE
  vim.h にシステム依存なものを含めて全部ぶちこんである
  structs.h に構造体を集めてある
  が、個々の hoge.c にも構造体の定義が .c なファイルの方に

「俺は好きなところにifdef HOGE_FEATUREでパッチを当てるぜ」的な感じ。

編集バッファは memline というdouble linked listなbinary blockなんだが、

  Line Property を ad-hoc に追加してある

うーむ。今回は Undo を読むつもりだったんですが、

  そこら中に u_sync() があり、そこで undo を区切りる

方式。ところがどうも、undo list は元データと追加データの組で構成されているらしい。

つまり、command pattern ではないわけね。

2015年に「vimは書き直すべきだろ」って記事があって、Rust で書いたものとかはあるらしい。

glib使ってCで書くとか、golang で書くとか、まぁ、いろいろありえるが。Javaはないな。

abbrib とか map! とか、今では疑問な機能も結構あるし、vim-script もいまいちだからなぁ。

明日も、同じZoomで10時から VSCode を読むはずです。あんまり学生がやってくれないのが残念ね。今回は二人だけか。

Friday, 28 May 2021

明日から vim / VSCode 読み会

10-12,14-16,17-18 みたいな感じのことが多いです。リンクはどっかに貼るかも。DMでもくれれば。

vim 側

  Singurality で build 環境を作り、
  singurality の権限を調整 ( -i --add-caps CAP_SYS_PTRACE )

で二つのコンテナ間で gdb できることが判明。わけないと、画面操作が gdb とかぶる。

おそらくは、undo 中心に読むはずです。

vscode 側

Build が難航する人が多いらしく、Youtube に build 動画を上げましたが、それでもダメらしく。

  Xcode は一度削除して install しなおす必要があるらしい
  node.js / npm はキャッシュが悪さしまくりなので、それを reset しまくる
   nodenv でも brew でも良いが reset はちゃんとする
  wikiのREADME.md に惑わされず、node.j は最新を使う
  BigSur では
   export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
  をつけないと、stdio.h とかが見つからないと文句を言う

それくらいで動いたぞ。

Thursday, 27 May 2021

OS研究会(オンライン)

別に沖縄でないのでいつでも良いんですが... いつも今ごろなので。今回は自分の発表も。

メモリ関係のいつもの細かい話が良いですよね。

  Trusted Execution Environmentとか、NUMAがとか...

Zoom + Slack だけど、1年経ってるのに、まだなれてない感じ?

  自分はネット文化の人だからな
  Slack書きまくりで引かれるパターン

ですね。懇親会やるなら晩酌セット欲しかったかも。


-

Wednesday, 26 May 2021

Scrapbox と Markdown

シス管は Redmine 使ってたんですが

  いい加減止めたい

で、候補にあがったのが Scrapbox 。だから、

  ずらずら議事録書かないで
  Todo/Doing/Done みたいに分割して
  Tag でつなげるんだよ

とか言ってやってるが、まぁ、それが良いかどうかは。Todo が忘れがちになるようですね。

割と軽快だし視認性も良い。独自記法は、自分もそうだけど。

最近、VSCode / Obsidian / Growi / Hugo と Markdown づいているけど、

まぁ、Scrapbox から変換するのはやんなくて良いかな。

Tuesday, 25 May 2021

ACM学生会員はオライリー読み放題

学生2千円だからな。太っ腹だよね。

いや、僕も忘れはててて、オライリーのなんかデータベース技術の奴が読みたくて、Kindle 版が紙版寄高いの変だろとか書いてたら

  ACMの読み放題で

って話が出てて。実際読める。ブラウザ Only ですが。なんと

  日本語のも読めるらしい

学生にはACMの会員/Digital Libraryは勧めているんですが

  学生がオライリー読み放題で大感動

してました。そういう勧誘方法があるのだな。