ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

AsakusaFW 0.10.3 Direct I/O JSON

2019-06-14 23:17:53 | PG(分散処理)

2019/6/12にAsakusa Framework0.10.3がリリースされた。→リリースノート

一番の目玉はDirect I/OでJSONファイルの読み書き(のExporter/Importerが生成される)が出来るようになったことかな?
もちろんAsakusaFWはデータモデルというシンプルなクラスしか扱えない為、配列やらネストしたJSONは扱えないと思うけど。

これに伴って、DMDL EditorXの入力補完機能にdirectio.jsonを追加した。


後は例によって細かいバグ修正等。

ロギング演算子で上限境界の無い型引数が指定できるようになった。
…ロギング演算子を使おうと思ったことが無かったので、全然気付かなかった^^;

Hiveの入出力データ(orcファイル)のカウント情報のバグ修正。
レコード数とバイト数に同じ値が出力されていた^^;さすがにそんなデータは無かろうてw

Asakusa on Sparkで、Direct I/Oの出力ファイル名のパターンに「ランダムな値」を指定できるようになった。
ランダムな値とは「[0..9]」みたいなやつ。ワイルドカード「*」とかは以前からちゃんと使えていた。

com.asakusafw.bridge.api.Reportがdeprecatedになった。
ちょっと前のブログで書いた、パッケージ違いのReportクラスがあって紛らわしいという問題。ユーザーが使ってはいけない方にdeprecatedが付けられた為、間違ってimportするとコンパイル警告が出るようになった。
(このdeprecatedはまさにユーザーが使うのは非推奨という意味であり、廃止予定という意味では無い)

BinaryStreamFormat.createInputで使うDelimiterRangeInputStreamがdeprecatedになった。
これは将来廃止予定という意味のdeprecated。今後はLineFeedDelimitedInputStreamを使う。

BinaryStreamFormat.getMinimumFragmentSizeでLong.MAX_VALUEを返すのは駄目になった。
というか、Long.MAX_VALUEが返された場合の挙動がバグだったらしい。
getMinimumFragmentSizeは、入力ファイルを分割しない場合は-1を指定する。基本的には親クラスのデフォルトメソッドを使っておけばいいようだ。


AsakusaFW Reportクラス

2019-06-02 16:51:48 | PG(分散処理)

Asakusa FrameworkReport APIで使用するReportクラスでハマったのでメモ。

OperatorクラスではReportクラスを使って「Report.info("message");」のようにログ出力することが出来るが、Reportクラスには以下の2つがあり、前者を使うのが正しい。

  • com.asakusafw.runtime.core.Report
  • com.asakusafw.bridge.api.Report
後者はAsakusaFW内部のクラスらしいのだが、誤ってimportしてもOperatorクラス上は普通にコーディングできてしまうので、間違いに気付きづらい^^;
Operatorのテストを実行すると例外が発生するが、知らないと意味不明な感じの内容だ…。
(最初はAsakusaFWのバージョンアップによってReport APIの初期化方法が変わったのかと勘違いしたよorz)