basyura's blog

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

GitHub API - Deprection notice for authetication via URL query parameters

あまりツイートすることも無くなってきたので記録がてら GitHub にコミットがあったら垂れ流すようにするスクリプトを動かしているのだけど、非推奨になってる API を使っているから直せとメールが来ていた。ずっと無視していたけど年末年始の休みという自由時間ができたので直した。

https://developer.github.com/changes/2020-02-10-deprecating-auth-through-query-param/

As mentioned in this previous blog post, GitHub no longer supports authentication through query parameters. Instead, we recommend users move the authentication in the header.

クエリパラメータで指定していたのをヘッダで指定するように変えるだけ。

# before
curl "https://api.github.com/user/repos?access_token=my_access_token"

# after
curl -H 'Authorization: token my_access_token' https://api.github.com/user/repos

スクリプト修正中に、指定するパスにある user を消していたために謎の not found で 1 時間ぐらい悩んだけど直せた。めでたしめでたし。

Witch - Tab Everything

WindowServer

MacBook Pro を外部モニタにつなぐようになってから操作に対して若干の遅延(違和感)を感じるようになり、top で見たときの cpu 使用率上位によく上がる WindowServer が気になってしまった。30% - 40% を消費していることがままある。今まで気にしたことなかったのに。ググるとアクセシビリティのディスプレイ設定にある透明度を下げると改善するとある。設定を変えると確かに改善したっぽいのだけど Cmd+Tab のアプリケーション切り替えウインドウの選択状態が分かりづらくなってしまった。ダークモードにしたあたりから見づらいなと思っていたのだけど。

Witch

ダークモードからライトモードに戻しても良いのだけど、透明度を下げたからか見た目が非常にダサい感じになってしまう。かといって他に OS の設定はなさそう。前々から気になっていてた Witch を見ると外観の設定もできるようなので即購入。 気になるのは「アプリ名 - ドキュメント名」表示になるけど「ドキュメント名」を消したいぐらい(長いから)。長くなったり短くなったりでちらつくのでそっちの方が気になる。フォントの種類は選べるけどサイズは変えられないようなので色を背景と同じにして見えないようにした。下にちょっと謎の空間ができるけどちらつくよりは良さそう。

まとめ

負荷が下がって?視認性が良くなていい感じ。

2020 年終わり

前半は年初から稼働した大型ユーザのサポートがメインだったけど炎上することもなくぬるっと終わったものの、帯状疱疹が発動して休んだり上司に苛ついて休むとかしてた。その後は在宅メインで通勤がなくなることによる時間的余裕もあり、前半は若干暇と感じることもあり担務も飽きてきて「またか」な感じでのんびりやっていた。

後半になるとタスクを引き継ぎつつ担務変更。コア部分のチームに組み込まれてリーダーをすることになった。このあたりから日々の活動がほぼほぼオンライン会議で埋まるようになった(週に何回進捗報告しないといけないんだよ)。余裕がまったく無くなり、朝に椅子に座って気がつけば昼。昼ごはんを書き込んで気がつけば夜を繰り返している。通勤が無いことが過度な運動不足を加速し、今まで良かった健康診断の結果も悪化が見られた(特に血圧)。 数人の遊軍として割と自由に活動していたのが正規軍に組み込まれた感じで内外を広範囲に見つつ把握しないといけないこと、判断しないといけないことが増えて非常にしんどい時期となった。12 月に入ったら息切れしててあまり考えられないけど自分自身のタスクも会議の合間に考えるようなるのでさらに椅子から立ち上がれない。記憶力もアレなのでいちいち時間がかかるのは前からなのだけど、範囲が増えたことで更に辛い時期が続いている。その割に自分のアウトプットは零に近いので担務が変わったとはいえ寂しい日々となっている。幸いメンバは士気が高く好意的に受け入れてくれているようなのでなんとかなっているのであった。 来年はチームとして機能するように活動しつつフィジカル面を意識的に鍛えるようにしたい(10年後の自分が心配)。

技術的なスキル習得や情報収集ができなくなってきているので、勝手に 10% ルールを用いて活動するぐらいの余裕を持ちたい。

2020 年在宅環境改善

在宅がメインになったので自宅環境を改善するためにいろいろ購入した。

まず椅子を購入

WORKAHOLIC 日本橋店でお試しして購入。最初に座らされたのがこれで(戦略があるんだろうけど)、しっくりきた。他のに座ってもピンとこなかったのでそのまま購入。それからずっと使っているものの家で使ってみるとあまりしっくこず・・・腰の辺とか足の周りとかずっと悩みながら座面の前後位置や高さ、背もたれの角度とかを調整していろいろ試している。一生ものとまでは行かないものの良いものを長く使うつもりで買ったけど、値段を考えると満足度が低い。見た目はいいけど。amazon の値段を見ると僕が店舗で買った時より数万円高くなっているので人気沸騰中なのかもしれない。

これをつければ?と思って購入してみたけど違和感しかなかった。そもそも長時間座るためには自分の筋肉を鍛えないとだめなのかもしれないので今後も様子見。

他に人気商品もあったけど素足 or 靴下を考えると柔らかい方が良いと思ってこちらを購入。いいのか悪いのかは微妙なライン。冬場になって寒いのでスリッパを履いてるし高さ調整もできた方が良さそうなので他のも試してみたい(木製のものとか)。

組み立てる前に玄関から配置スペースに持ってくるのがしんどかった。それ以外は良くて満足度高。電動で上下するのでスタンディングでも使えて便利。配置スペースの問題で幅 100cm にしたのでディスプレイ 2 枚構成の場合に若干狭いけど気になるのはそれぐらい。

働きすぎで目がしんどくなってディスプレイを見るのが辛くなってから外部ディスプレイを使うのはもう無理だと思ってたし、大きなディスプレイを何枚も使っている人を見ては恵まれてる人としか思ってなかった。13.3inch のノート PC のディスプレイでも若干不便だなぐらいでいたのだけど、パソコンデスクを買ったらディスプレイも欲しくなった。前述の通りの要因で買っても使えなかったらもったいないので「なるべく目に優しそう」「なるべく小さいサイズ」「高さを調整できる」で調べて唯一該当したものがこれだった。そのままでも大丈夫そうだったけどコントラストやモードをいじって問題なく使える状態となった。それに気を良くしてもう一台購入して左右に並べている(一枚が若干かぶってるけど)。メインディスプレイは 1600x900、サブディスプレイは 1920x1080。サブディスプレイは主にオンライン会議の画面(資料)を映す用とメッセンジャー用に使用している。メインの解像度を下げているのは目のしんどさ対策で、狭くなるし若干ぼやけて見える感じがあるけどその方が目がかなり楽なのが理由。

ノート PC の HDMI の口に一枚指して、もう一枚は USB 経由で接続。外部ディスプレイを 2 枚並べているけどノート PC のディスプレイは未使用としている。外部ディスプレイを使い始めたらノート PC の画面が小さすぎてしんどいのと、パソコンデスクの広さ的に無理があるからなのが理由。

椅子と机とディスプレイが揃ったらキーボードが欲しくなる。迷ったものの購入。したけど・・・あわねぇ・・・1日使ったら腱鞘炎になりかけたしスコスコ感の良さもよく分からなかった。現在は冬眠中。REALFORCE だったら?と思ったけど近くのヨドバシで試し打ちしたらそうでもなかった。キーが薄くてある程度跳ね返ってくるものじゃないとだめな体になってしまったようだ。結局、初代の apple wireless keyboard を使っている。これはめちゃくちゃしっくりくる。コンパクトで打ちやすい。予備があるけど劣化するものなので壊れた時にどうするか問題が怖い。乗り換え先を探しているけどなかなか見つかりそうにない。

まとめると、椅子がもうちょっとしっくりくるようになれば・・・かな。

inkdrop いじり

vim いじり (vimrc, plugin) をよくしてた頃と同じ感じで inkdrop いじり (init.js, plugin) をよくしてる。ちょっと気になるところがあれば自分で直せるのは大きい (yak shaving) が捗る。

enter でカーソル位置の url を開き、 <C-m> でカーソル行のリンクを全部開くようにしてみた。正規表現はやっつけ。

keymap.cson

'.CodeMirror.vim-mode:not(.insert-mode):not(.key-buffering) textarea':
    'enter': 'mycmd:open-cursor-link'
    'ctrl-m': 'mycmd:open-current-line-links'

init.js

inkdrop.commands.add(document.body, "mycmd:open-cursor-link", () => {
  const editor = inkdrop.getActiveEditor();
  const { cm } = editor;
  const cur = cm.getCursor();
  const token = cm.getTokenAt(cur);
  if (token.type == "url") {
    open(token.string);
  } else if ((token.type = "string url")) {
    const link = token.string.replace("inkdrop://", "");
    inkdrop.commands.dispatch(document.body, "core:open-note", {
      noteId: link,
    });
  }
});

inkdrop.commands.add(document.body, "mycmd:open-current-line-links", () => {
  const cm = inkdrop.getActiveEditor().cm;
  const cur = cm.getCursor();
  const str = cm.doc.getLine(cur.line);
  // url parse
  const urlReg = new RegExp(/(http.*?)( |\)|$)/g);
  [...str.matchAll(urlReg)].forEach((v) => {
    open(v[0]);
  });
  // inkdrop:// parse
  const idReg = new RegExp(/(inkdrop:\/\/.*?)( |\)|$)/g);
  const matches = [...str.matchAll(idReg)];
  if (matches.length > 0) {
    inkdrop.commands.dispatch(document.body, "core:open-note", {
      noteId: matches[0][1].replace("inkdrop://", ""),
    });
  }
});

Redmine: Contributed to View customize plugin v2.7.0

日頃からお世話になっている View customize plugin 。プロジェクト識別子を指定できるようにした PR が無事にマージされました (バグがあったりテストの書き方がおかしかったりで色々直してもらってます・・・)。

元の登録画面が url のパスを指定して js などを記述する UI になっているので、パス起点でしか動かせないとつい最近まで思い込んでた (そう思ってる人は多いはず)。なので、パスにプロジェクト識別子がある場合はいいのだけど、チケットを選ぶとパスから消えてしまうので特定のプロジェクトかを判断できず不便だなとずっと思ってた。

実は js で画面の要素を $(".current-project") で取って判定することができた (View customize plugin が埋め込む ViewCustomize 変数をから判断することもできてたっぽいけど未検証)。パスは .* を指定して js の先頭で判断すれば任意のプロジェクトにいる場合に実行することができるようになるのだけど、.* だらけになってどのプロジェクトを開いても js が html に埋め込まれて発動してしまうのが嫌になって PR を作った (余程の量を書かなければ性能影響はないと思うけど・・・)。

登録時の UI でプロジェクト識別子が明確に指定できるので、今まで存在を知らなかった人にも嬉しいのではないかと思う。

任意のプロジェクトで js を発動できるようになると、任意のプロジェクト選択中に任意の自作タブを表示するような事ができる (プロジェクト、活動、チケットのタブの横とか)。自分担当や任意のクエリタブを追加したりすると便利で、チケットを開いてもタブは表示されたままなので簡単に選択できてとても便利。

Twitter を見ると良い反応が多かったので良かった。