1/14(火)
今日は昼食を食べに外に出て、いつもの店のいつもは頼まないメニューを頼んでみたのだがやはりいつものメニューのほうが良かった。冒険はリスクを伴う。
今日もぼちぼちOS30日本を進めた。3日目が終了。HLT→RETをループするだけの関数をアセンブリで書き、それをCで読み込んで実行するプログラムを書いてコンパイルする。そうしてできたファイルをバイナリエディタで読んでみると、ちゃんと末尾がF4, C3になっていて感動。
もう2時か。さすがに遅い。
教えちゃお
1/12(日)
https://atnd.org/events/110955
界隈の方に誘われ、同僚とともに参加した。フロントエンドエンジニアの自分が自作OSをやってどうなるのか。まだ初めたばかりなのであまり大きなことは言えないが、低レイヤーでも高レイヤー(?)でも共通する考え方のようなものがあって、低レイヤーの知識を得ることによって物事をより抽象的に捉えられるようになるかもしれないな、という感触がある。
1/9(木)
http://www.typescriptlang.org/docs/handbook/interfaces.html
ReadonlyArray<T>
というやつもあるぞ要求されているプロパティがあるかだけをチェックする
とoptionalを組み合わせると、optional propertyのプロパティ名のtypoが型エラーにならなくなるexcess property checking
をする
Object literal may only specify known properties, but 'hoge' does not exist in type 'Fuga'.
excess property checking
を回避する方法
as
[propName: string]: any;
を足しておく1/8(水)
const createFakeFuga = (num: number) => ({ a: num, c: "hoge" });
const func = (array: number[]): { a: number }[] => array.map(createFakeFuga);
{ a: number }
型に { a: 1, c: "hoge" }
を入れても怒られない。ただしリテラルで代入したときだけは怒られる。詳しくは仕様を読もう。
1/5(日)
ランチに少し歩いたところの家系ラーメンに。味が濃く、魚介の風味もあった。ライスはおかわりはできないので最初に大森で頼むべきだった。銭湯はしょうが湯。早い時間に行ったので混んでいてあまりゆっくりできなかった。
今日が正月休暇の最終日だ。今年は帰省もせず、のんびりとしていた。悪くはなかったが退屈でもあったので、同じ退屈なら帰省してもよかったかもしれない。
法律上今年度中にあと2日休暇を取らねばならない。それとは別に繰り越せない休暇も2日ある。適当な祝日に合わせてどこかでまた9連休を生成することになりそうだ。
LinuxでWindows向けのゲームをやりたいときはLutrisというソフトを使う。Lutrisがなんであるかというのを説明するのは難しいのだが(公式にはgaming platformを名乗っている)、ゲームごとにどのバージョンのwineをどんな設定で使うかというのを管理できるソフトだ。
Detroit: Become HumanのPC版が12月に出ていたらしい。ぜひプレイすべきと勧められていたのと、新年で安くなっていたので購入し、Lutrisでのプレイを試みた。ダイアログに求められるまま依存パッケージをインストールし、d9vkをセットアップした。その結果起動には成功した。FPSも良好だ。しかしWASD移動ができない。キー入力が死んでいるわけではないのだが、ゲーム中に移動だけができない。不思議だ。しかしもう一歩だ。
1/4(土)
久々に絵を描いていた。ニコ動見たり、ちょっとしたChrome拡張を書いたり。chibat氏のchrome-extension-typescript-starterがとても勉強になるサンプルだった(jQueryはなくしていきたいが)。
1/3(金)
自宅の気温や湿度を表示するwebアプリをいろいろとリファクタリングしていた。APIを叩いたレスポンスには型の保証がないが、 axios.get
にジェネリクスを与えておけばその型が来たという想定で書くことができていい感じだった。このコードで渡すジェネリクスを更に外から与えられるT型にしているのは、インフラ層でドメイン層で定義した型を使ってはいけないから(ホンマか?)。
moment.jsはめちゃ便利。JavaScriptの組み込みのURLオブジェクトはパスの結合が便利にできるかと思いきやそうでもない。ホストとパスの結合だけ。
12/22(日)
masterにマージするだけでデプロイされてほしかったので。
12/21(土)
CI環境ほしいので作った。基本的にはこれを読みながら進めるだけ。
12/18(水)
TypeScript+ReactのプロジェクトにESLintとprettierを入れた。ESLintのプラグインを上手く組み合わせていくテクニックが難しかった。
結論はこんな感じ。
.eslintrc.json
{
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "tsconfig.json",
"sourceType": "module"
},
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended",
"plugin:react/recommended"
]
}
yarn lint
で能動的にlintを実行できるようにしつつ、lint-stagedとhuskyでcommit時にも仕込んだ。