type holyshared = Engineer<mixed>

技術的なことなど色々

HHVM

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

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

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

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

Hackで書いたProcessパッケージ

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

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

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

HackでのJSONのパース

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

Typesafetyの0.10.0をリリースした

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

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

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

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

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

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

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

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

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

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

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

Hacklangのパッケージのテストコードを、型チェックかかるようにしたかったが断念した話

タイトルの通りHacklang用のパッケージを開発していて、テストコードも型のチェックしたかったので、 できるか試してみました。 今、自分がパッケージ開発で使用しているテストツールは下記の通りです。 peridot-php/peridot - BDDテスティングフレームワー…

PHPのコードをHackのコードに変換する

PHPコードをHackのコードに置き換えるのは、最高に面倒くさいですよね。 なので、HHVMで提供されている、hackificatorを使用して、一気に変換できないかを検証してみました。 hackificatorはPHPコードをHackに置き換える為のコマンドラインツールです。 hack…

Hacklang用にベンチマーク取れるライブラリを作った

HacklangでのJITの検証とか、Vector、Setのパフォーマンスの計測がしたかったので作りました。 計測用のコードは下記のような感じになります。 namespace hhpack\performance\example; require_once __DIR__ . '/../vendor/autoload.php'; use hhpack\perfor…

typechecker-clientで型のカバレッジ取れるようにした

型チェックの比率が知りたかったので、クライントのライブラリにAPIを新しく追加しました。 ファイル/ディレクトリ単位でデータを抜いて、整形することで見やすいフォーマットに整形して表示したり、 データを別の形式に変換したりすることができます。 簡…

typesafetyっていうパッケージを作った

typesafetyというパッケージを作りました。 Hacklangでコードを書いていると頻繁に型のチェックをかけるのですが、チェックをするのにサーバーを再起動したりしないといけないのでとても面倒でした。 なので、サーバーの起動と型のチェックをまとめてできる…

Hacklang用のテスティングフレームワークを作った件

hhspecifyっていうBDD styleのテスティングフレームワークを公開しました。 下記のコマンドでcomposerを利用してインストールできます。 composer require hhspecify/hhspecify 使い方は下記の通り。 設定ファイルの作成 まず、最初に設定ファイルを作成しま…