2021-01-01から1年間の記事一覧

FOLIOでのrefined活用法 - ドメインを型で形式知化し、契約を型で表すことで認知漏れを防ぐ

FOLIOアドベントカレンダー2021 12日目です。 FOLIOではrefinedというライブラリを採用しているので、活用事例とその目的について考えていこうと思います。 お品書きは以下です。 refinedとは ドメイン知識の形式知化 契約を型で表すことによる認知漏れリス…

MySQLでのVARCHARサイズ変更を行うALTER TABLEについて

これは何 MySQLにはVARCHARの文字数を拡張するDDLをオンラインで行うための最適化が存在する。 一方でこの最適化は内部のバイナリ表現に依存した限定的な最適化であり、意図せずオフラインDDLとして実行される可能性がある。 本ページではこの最適化の仕組み…

refinedでPosInt + PosInt を PosIntにしたい

結論 オーバーフローしたら条件満たさないから無理 結論以外 refined はScalaでrefinement typeを表現するためのライブラリです。 このライブラリの中に「1以上のInt」を表すPosIntという型があるのですが、refinedは PosInt + PosInt = PosIntといった推論…

MySQLでカラム追加などのalter table中にクエリがブロックされるかなどについてのメモ

これは何 MySQLのカラム追加などのDDL, alter table時にそれぞれの操作がどれくらい危険なのか、負荷は?といった情報の見方を毎回忘れるのでメモしたもの まとめ 表を見なくても ALTER TABLE の末尾に ALGORITHM=INPLACE,LOCK=NONE; をつけてしまえば、動作…