- 校正の手間を省くため、なるべく箇条書きでやっていく
- 通常の文章を書く頭は README と競プロ参戦記に使う
- Twitter ではなく、まとまったものを書いていきたい
競プロ参戦記
- 8月中旬から note.mu で 競プロ参戦記 を始めた
- 3日で終わるかと思ったけど1ヶ月は続いた
- 成長やモチベに貢献しているかは微妙
- 以前に参戦記で書いたことと同様の手順で解ける問題をとき損ねるという事件があった
- 競プロ参戦記 第16回「偶奇と多節腕」 ARC103 [CD]|ベイン|note
- note.mu を選んだ理由
- 日本語で書ける、技術よりな日記を書ける、デザインが良い、という条件を満たしてる
- Qiita には日記を書きづらい
- Codeforces blog は日本語では書きづらい
- 自前のブログは更新がめんどい
- note.mu の問題
- エディターが微妙に使いづらい
Milone 言語を作り始めた
- リポジトリ: milone-lang
- セキュリティキャンプや Turing Complete FM の影響でC言語のセルフホスティングコンパイラを作るのが大流行
- 私もやりたいけどCコンパイラは乗り遅れ感
- 自作言語なら楽?
- Rust っぽい構文をさっと考えて実装開始
- 道のりが長すぎて既に飽き気味
- F# のサブセットにしようとしてる
- 字下げ依存構文の解析がつらすぎて飽き気味
F# 用のTOMLパーサを書き始めた
- リポジトリ: toml-hammer
- 習作。既存の TOML パーサ実装はある
- 字句解析 → 字句リストを再帰下降パース、という手順でやる
- パーサコンビネータ (FParsec) もパーサジェネレータ (FsYacc) もいらない、言語機能だけでパースできる、っていうのをやりたい
- パースはわりとすんなりいけてる
- 字句解析が正規表現でかなりがちゃがちゃしてる、ここをもっと簡単にしたい
- エラー報告の精度を上げるのは大変そう
- 何を使っても大変
- Rust コンパイラのエラー報告はとても偉い
- TOML のデータ構造の持ちかたで迷ってる
React を始めた
- Vue.js をちょっとだけやったことはあった
- 極めて便利だけど型や環境構築が煩雑という印象だった
- Node.js + SPA の環境構築になれてきた
- とはいえいろいろ諦めた
- Live Reload
- Hot Module Replacement
- ブラウザ上でのテスト (karma)
- レンダリングのテスト (enzyme)
- コードに静的な型がついて、ドメイン層のユニットテストが高速に実行できたらそれでいいと思う
- TypeScript を書く場合、 Vue.js と違って React はシンプルな型がつくのが嬉しい
- Vue のコンポーネントの型はやばい
- ブラウザ履歴の管理や、URL と state の同期がよく分からない
fsharp-error-builders
- リポジトリ: fsharp-error-builders
- F# 用の Option/Result のコンピュテーションビルダーを提供するライブラリ
- プロジェクトの名前を変えた
- リポジトリはハイフン区切りがいい
- パフォーマンスの改善を試みた
- inline をつけてメソッド呼び出しを減らした
Some ()
をキャッシュした
- それでも for 式はコンピュテーション式の外側で書くより2倍ぐらい遅い
- F# でパフォーマンスといえば、F# では型引数をどれだけ導入しても煩雑にならないので、構造体をガンガン使うようなコードでは C# に有利がつく可能性がないこともない
Rust で競プロの入力をパースするマクロ
- リポジトリ: scan-bench
- Rust で競プロの入力をパースするコードを書くのはとてもめんどい
- いま使ってる read! マクロは悪くないが、性能が低い
- 変数を大量に定義するのはマクロでやるのがよい
- scan! マクロを作ってみた
- シンプルとはいえわりとひどい記述になってるので作り直すかも
- std::cin と比較してベンチマークをとった
- 2倍ぐらいは速かった
- Travis の設定をやった
- こういう chore に時間をかけすぎている
ガルパ (リズムゲーム) を始めた
- 初音ミクコラボにつられてほいほいインストールした
- リズムゲームはひさしぶり
- 最初は Normal や Hard でも四苦八苦していた
- 毎日練習してたら Expert ができたりできなかったりするようになった
- ファントムシーフ (Expert 27) は何度も練習してるけどクリアできない