type holyshared = Engineer<mixed>

技術的なことなど色々

プリズナージャケットとパンツの経年変化

何回かWAREHOUSEから出ているプリズナージャケット & プリズナーパンツ。 これはJUNKY STYLE別注モデルで、ボーダーの染める回数を増やして黒になるようになっているやつです。 1年ちょっとの着用で、経年変化の記録ために写真を撮っていたのを忘れてた。 …

Mongooseドキュメントのserialize/deserialize

Mongooseを利用している場合、読み込んだドキュメントをserialize/deserializeしたい場合があると思います。 serializeは雑にtoJSON、でいいと思うのですがdeserializeはどうするのか? 一つのやり方として、hydrateメソッドを使用するやり方があります。 con…

netlifyのNodejsのバージョン

netlifyを利用していて、デプロイ時のNodejsのバージョンを指定したいので調べてみました。 ドキュメントでは下記のやり方があるようです。 docs.netlify.com 環境変数のNODE_VERSIONで指定する。 .node-version または .nvmrcをリポジトリのルートに置く。 …

2019年の靴の着用回数を集計した

2018年から引き続き履いているもの、買い足したもの、手放したものを集計対象にしています。 昨年の末くらいから集計できるように年間のレポートを表示できる仕組みをTop | 365shoesに追加していました。 2019年は520件を投稿していたようです。 一つの靴に…

OCamlのパッケージインストール時にファイルをコピーする

OCamlプログラムをduneを使用してビルドしている場合、インストールする時にバイナリファイル以外のファイルも一緒にコピーしたい場合があると思います。 それをopam、duneを使用している時にどのように行うか調べました。 Duneの設定 設定はduneファイルにS…

テスト容易性設計のやつOCamlでやってみた

自分の場合は現在時刻を引数で渡すようにしました。 モジュールやコンテキスを表すデータ型みたいなものを渡してもいいんですが仰々しいので。 t-wada.hatenablog.jp コードはここに置いてあります。 Design-for-testability - OCaml version · GitHub 実装…

Levi’sのGOOGLE JACQUARD トラッカージャケット買ってみた

Levi’sのGOOGLE JACQUARD トラッカージャケット買ってみた Levi’sのトラッカージャケット 10月5日に発売ということだったので、面白そうだし買おうかなと思いWebから購入しました。 Webだと1日早くて、4日から買えたみたいです。 これは米国だと、前に発売さ…

履いた靴の記録を取っている

昨年の6月くらいから履いた靴の記録を残すようにしました。 365shoes.style 残す理由は以下の通りです。 手持ちの靴が革のものが多く、経年変化の記録を残したい。 いつの間にか変わってることが多い。 靴が気付いたら増えているので、増減を記録したい。 学…

Wescoのブーツが届きました

Wesco Custom 38LTT 3月7日にオーダーしていたWescoのブーツが最近届きました。 当初の8月末くらいという話だったのですが、8月17日にオーダーしたお店から午前中に連絡をいただいて、その日に受け取り行きました。(オーダーから約5ヶ月) 当初はオーダーする…

HackでAttributeを表現するためのインターフェース

HHVM3.29より、Attributeを表現するインターフェースが追加されました。 今までも、Attribute自体は使用できていましたが、以下の問題がありました。 タイプチェックがかからない。 Attributeに依存する処理でバグがあると原因を特定しにくい。 ユーザー独自…

HackのコードジェネレーターをHackTestに対応させた

Hack用のテストフレームワークが出たので、HackUnitから置き換えました。 github.com そのついでに、CodegenにHackTestのテストコードを生成できるジェネレーターを追加しました。 github.com HackUnitからの移行 名前空間をHackUnitからHackTestに置き換え…

jbuilderからduneに変えた

dune1.0がリリースされたので、jbuilderからduneに置き換えました。 作業内容としてはそんなに修正箇所はありませんでした。 github.com 作業内容 jbuildファイルの変更 jbuildファイルをduneにリネーム 設定ファイルの変更 コマンドをjbuilderからduneに変…

js_of_ocamlをjbuilder(dune)で試してみた

OCamlのバイトコードをJSに変換できるツール、js_of_ocamlを試して見ました。 とりあえず、jbuilder(dune)を使用して、JSを出力できるようにはなりました。 今回はビルドの方法だけの内容です。 必要なもの opam経由で必要なパッケージをインストールします…

Hackで書いたProcessパッケージ

Processパッケージをリファクタリングしました。 https://github.com/hhpack/process 主な変更点は下記の2点です。 stream_selectからstream_awaitへの置き換え IDisposableを使用したリソース管理 stream_selectからstream_awaitへの置き換え パイプの状態…

ppx_inline_testの仕様が変わったみたい

ppx_inline_testの仕様が変わったぽいです。 今まで、テスト実行時にコンソールにテスト結果が表示される仕様だったと思うのですが、デフォルトで表示されなくなったようです。 なのでテスト実行されているのかがわかりにくくなっています。 テスト結果を表…

Hack用のコードジェネレータの新しいバージョンをリリース

Hack用のコードジェネレータの新しいバージョンをリリースしました。 前のバージョンでは、デフォルトのジェネレータしか使用できなかったのを独自のジェネレータを使用できるようにしました。 サンプルのプロジェクト下記に用意してあります。 https://gith…

HackでのJSONのパース

HackでJSONをパースする際にjson_decodeを使うと思うのですが、JSON_FB_HACK_ARRAYSが新しく指定できるようになったみたいなので調べて見ました。 また、JSONを扱う場合の実装をどうするかも検討しました。 json_decodeのオプションによる型の違い オプショ…

Scheme手習い読み終わった

定理証明手習いを途中まで読んでいたのですが、読む前におすすめされていたのと、近所の本屋に一冊だけあったので読みました。 最初にちょっとだけ読み始めて、載っているコードが非常に少なく、写経しなくても覚えれそうと思い、 ちょうど真ん中ぐらいの内…

ppx_inline_testでモジュール内にテストコードを書く

これはML Advent Calendar 2017の記事です。 枠が空いていて、誰も書いてなかったので書きました。 OCamlのテスト用のツールで、構文拡張を使用したppx_inline_testがあります。 今まで、OUnitを使っていたのですが試しに使用してみました。 使用するのに必…

Typesafetyの0.10.0をリリースした

Typesafetyの0.10.0をリリースし、下記の変更を加えました。 OASISからjbuilderへの移行 タイプチェックがパスした時も、レビューコメントを残せるようにした OASISからjbuilderへの移行 ビルドツールをOASISからjbuilderへ変更しました。 移行作業自体は1日…

jbuilderでビルドに必要なファイルを生成する

jbuilderでビルドに必要なファイルを生成する方法を調べました。 なんで調べたかというと、atdgenでjsonのパーサーのコードを出力したかったからです。 パッケージのインストール jbuilder、atdgenをインストールします。 opam install atdgen jbuilder rule…

typesafety_cliのビルドツールの変更計画

CI上でテスト前の型チェックのエラーをGitHubのPRのコメントとして投稿するツールtypesafety-cliのビルドツールを変えようとしています。 具体的にはOASISからjbuilderに移行しようとしています。 開発当初はOASISで良かったのですが、以下の理由で辛く感じ…

Hackのコード自動生成できるようにした

毎回エディタからファイル作成したり、名前空間指定したりするのが面倒なので、コードを生成できるようにした。 コードの生成というか、ファイル生成に近いです。 github.com 使い方 名前空間とディレクトリのペアに対応させるジェネレータをマッピングする…

HackでDBのマイグレーションツールを作った

HackでDBのマイグレーションツールを作ってみた。 データベースの作成、削除、スキーマ変更の適用、適用の取り消しが一通りできます。 現在のバージョンでサポートしているRDBMSはMySQLのみです。 また、マイグレーションはSQLベースです、DSLはサポートして…

プロフェッショナルSSL/TLSを読み終わった

ラムダノートさんから出ている、プロフェッショナルSSL/TLSを読み終わりました。 SSL/TLSを理解するのに、基本的に必要な情報が網羅されていて、とてもいい本だと思います。 プロフェッショナルSSL/TLS(紙書籍+電子書籍)www.lambdanote.com よかった点 鍵…

Hackで書いた自作のオプションパーサーをリファクタリングした

結構昔にHackでオプションパーサー書いていたのですが、しばらく面倒でメンテナンスを放置していました。 それをHHVM-3.21.0がリリースされてたタイミングで、メンテナンスしている他のパッケージと一緒にリファクタリングしました。 使いかたはこんな感じで…

Hackの型のチェックのエラー内容をレビューコメントとして投稿できるようにした

Hackの型チェックをCI上で行っていたのですが、エラー内容を見るのにCI環境側までいちいち見に行かないといけないので、OCamlでレビューコメントとして投稿できるtypesafety-cliを作りました。 レビューコメントは下記のような感じになります。 https://gith…

言語ファイルをチェックできるgemを作った

言語ファイルをチェックできるgem、i18n_checkerを作りました。 多言語対応をしていると、typoで翻訳されていなかったり、言語ファイルに追加漏れがあったりするので、簡単なチェックができるツールが欲しかったのが作った理由です。 サポートするファイル形…

OUnitでOCamlライブラリのテストを書く

これはML Advent Calendar 2016の18日目の記事です。 OCamlのテストフレームワークのOUnitについて解説します。 また、Oasisの簡単な説明も行います。 プロジェクトのセットアップ OCamlのプロジェクトでは、だいたいの場合はOasisを使います。 Oasisはビル…

Rustでlcovのレポートファイルをマージする

これは Rust Advent Calendar 2016 (2) の 14日目の記事です。 lcovが出力するレポートのパーサー&マージャーをRustと実装しました。 lcovはgcovの拡張版みたいなもので、gcovの出力ファイルから、HTML形式のようなコードカバレッジレポートを出力するツール…