basyura's blog

あしたになったらほんきだす。

Inkdrop - vim plugin とカーソルの色 : その3

カーソルが点滅しないようにするのは頑張らなくていいことが発覚。

init.js で点滅を止める。

inkdrop.onEditorLoad((e) => {
  const { cm } = inkdrop.getActiveEditor();
  cm.setOption("cursorBlinkRate", 0);
})

styles.less でカーソルの色をオレンジっぽくする。

.CodeMirror-cursor {
    border-left: 2px solid #ffa87d;
}
.cm-fat-cursor .CodeMirror-cursor {
    background: #ffa87d;
}

フォーカスが外れたときにカーソルが消えるようになった。めでたしめでたし。

Inkdrop - vim plugin とカーソルの色 : その2

カーソルの blink を止めたのはいいけど、フォーカスが外れた時は非表示にしたい。 お試し中。

inkdrop.onEditorLoad((e) => {
  const editor = inkdrop.getActiveEditor();
  const { cm } = editor;
  const container = document.querySelector(".CodeMirror-lines");
  const changeVisibility = (visibility) => {
    const cursor = container.querySelector(".CodeMirror-cursor");
    cursor.style.visibility = visibility;
  };

  cm.on("update", () => {
    if (!cm.hasFocus()) {
      changeVisibility("hidden");
    }
  });
  cm.on("blur", () => changeVisibility("hidden"));
  cm.on("focus", () => changeVisibility("visible"));
});

update イベントは頻繁に走るので負荷が気になる。

Inkdrop - vim plugin とカーソルの色

Inkdrop 5.5 がリリースされた。electron のバージョンアップ起因かもしれないが、日頃から愛用している vim plugin のカーソル表示がおかしい。 見てみると、そもそものスタイル指定が間違ってたっぽい。

合わせて blink も止めたくなったので見直した。

.editor {
  /* insert mode */
  .CodeMirror-cursor {
    border-left: 2px solid #ffa87d;
    visibility: visible;
  }
  /* normal mode */
  .cm-fat-cursor .CodeMirror-cursor {
    background: #ffa87d;
    visibility: visible;
  }
}

javascript : getter, setter, Proxy, Reflect

最近の javascript もある程度勉強したつもりだったけど、全く知らなかった。

明示的な getter & setter

const hogeProxy = {
  _hoge: null,
  set hoge(v) {
    this._hoge = v;
  },
  get fuga() {
    return this._hoge;
  },
};

hogeProxy.hoge = "(=ΦωΦ)";
console.log(hogeProxy.hoge);  //=> undefined
console.log(hogeProxy._hoge); //=> (=ΦωΦ)
console.log(hogeProxy.fuga);  //=> (=ΦωΦ)

汎用的な getter & setter

const person = {
  name: "basyura",
  age: -1,
};

const personProxy = new Proxy(person, {
  get: (obj, prop) => {
    return Reflect.get(obj, prop);
  },
  set: (obj, prop, value) => {
    Reflect.set(obj, prop, value);
  },
});

console.log(personProxy);      //=> { name: 'basyura', age: -1 }
console.log(personProxy.name); //=> basyura
personProxy.age = 99;
console.log(personProxy.age);  //=> 99

便利。

三国志14 with PK

With PK 版が Switch でディスカウントされていたので購入。通常モードでクリアしたあとはあまり面白みが感じられず放置 (後半はいつもの物量攻めだし)。

Youtube でたまに見ていたのだけど、うどん高機動型さんのチャンネルを見ていたら再びやりたくなって上級編で再チャレンジ。

内政が簡易化されているのもあり、やることがなくターンを終わらせることがよくある。これがやる気をそいでいたけど、それはそれで戦闘にフォーカスしているからという記事をどこかで見て納得 (自分に納得させた)。

城だけでなく府を取っていくこともあり、マップがかなり広く感じる。時間が結構かかるけど後半はやっぱりゴリ押しで攻めていけるので単調になりがち。さっさと移動してくれよと思い始めたりする。

加えて目が疲れる。真っ赤になる。ディスプレイが 13.3インチでちょっと小さめなせいかもしれない。ナイトシフトモード強めでマシになる。

Switch でやってるけど PC 版でマウスを使ってやりたい(買い直しになるけど)。操作性が全然違うだろうし、コントローラーよりマウスの方がボタンクリックや範囲選択などの細かい操作ができて良さそう。

長い休みがあると

  • 考え事が増える (世界情勢が気になり始める)
  • 睡眠時間が増える (入眠時間は遅くなっていく)
  • ゲームの時間が増える
  • 動画を見る時間が増える
  • ネットしてる時間が増える
  • amazon を見る時間が増える
  • 目が疲れる (特にゲームしてる環境は光の差し込み方とか椅子とテーブルを含めて姿勢の問題もありそう)
  • vimrc、inkdrop、blog の 設定をいじる時間が増える
  • 散歩が増える(とは言い切れない)
  • ブログのエントリが増える

目が疲れるので iPad にフィルムを貼った。一日中 Night Shift モードでいいかと思っていたけど反射やじぶんの映り込み(主にこっちかな)が気になりすぎたので重い腰を上げる(8ヶ月前に買って放置してた)。結果、良かった。

リタイア後の自分が見えた気がしないでもない。

GraphQL しらべ

某雑誌の冒頭に「GraphQLすごいんです」しか書いて無くて何がすごいのかどういうものなのかがさっぱり伝わらなくて逆に気になったので調べ(ググっ)てみた。

まとめ

いいとこ

  • 柔軟性が高い (API に対する多様な要求に答えやすい)
  • 一般的な REST API のように不要なものも含めて固定された項目を返すのではなく、1 クエリ(リクエスト)で必要なものを必要なものに絞って一括取得できる

分からん

  • メリットを感じられるケースがどの程度あるのか
  • 保守、性能面で RDB で SQL を叩くよりどの程度メリットがあるのか

memo

注意点

  • Client にクエリの決定権がある。Client にとって必要十分なクエリを起こすだけで済む。

GraphQLの利点

  • クエリとレスポンスの構造に対応関係がある
  • スキーマとその一部である型システムによりエディタにおける補完や型チェックなどのツールによる開発サポートが受けられる (IDE: GraphiQL - グラフィクル)
  • クエリの学習コストが低いことです。
  • 既存のクエリを壊さずにアプリケーション API を進化させることができます。
  • 柔軟性が高い (必要なものを絞って取得できる)

GraphQLの欠点

  • パフォーマンス分析が難しい → エンドポイントが一つしかないのでまとめられてしまう
  • 処理系の実装が難しい
  • 画像や動画などの大容量バイナリの扱いが難しい → Base64 でも 1.3倍になる / メモリに乗らないものは処理できない
  • 保守可能な GraphQL スキーマを作成する作業が付加される

links

GitHub