ひしだまの変更履歴

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

Embulk0.10.49プラグイン作成

2023-05-04 16:42:43 | PG(分散処理)

なにげなく「今のEmbulkの最新バージョンってどうなってるんだろう?」と思ってググってみたら、Embulk v0.11 がまもなく出ますという記事を見つけた。
Embulk v0.11 / v1.0 に向けてという記事が出てからもう2年くらい経っているので、てっきり立ち消えになったのかと思ってた^^;(TreasureDataの中で使われているData Connectorというプラグインとの整合性をとる為に開発が遅れていたらしい

v0.11は今年の6月(来月だ!)にリリースされる予定で、0.10系はv0.10.49が最終版になるらしい。自分が前回試したのがv0.10.41なので、何か変わったのか試してみた

まず、Java11でも問題なく開発・実行できるようになったのがすごい進展。
jaxb-apiが要らなくなったし、JRubyも入れる必要が無くなった。

多少バグっぽいところはあるけれど、すぐ直せそうなものばかりだし。

これならJava11のプラグインも作れそう。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Embulk0.10プラグイン作成

2023-01-06 22:45:55 | PG(分散処理)

EmbulkプラグインをJava11で作りたいと思って、今年の正月はそれを試していました

Embulk0.11/1.0でプラグインの作り方が変わるらしいので、どうせならその新しい方法にしてみようと思ったんですが、情報が少なくて、いろいろハマりましたね^^;
新しいプラグインを作るための環境構築については説明があったんですが、以前使っていたメソッドが色々deprecatedになっているのに新しくどれを使えばいいのかの説明はほとんど無いしorz

JUnitでのテストについてはほぼ従来通りの方法で出来ました。(Embulk0.10向けのEmbulkPluginTesterを作りました)
EmbulkEmbedの使い方がだいぶ変わっていて、データ受け渡しも今までの方法では出来なかったので、EmbulkTestOutputPluginはstaticフィールド経由で受け渡すという苦肉の策になってしまいましたがorz

しかし最悪なのは、作ったプラグインをどうやって実行するかの方法が全く分からないことでした。
embulk runをリモートデバッグでデバッグ実行しながら内部構造を調べて、Mavenローカルリポジトリーから自作プラグインを読み込む方法があるのは分かりました。
しかし依存ライブラリーも全てMavenローカルリポジトリーに有る必要があって、しかもGradleを使っているとGradleのディレクトリーにダウンロードされているのでMavenローカルリポジトリーにコピーしないといけないけれどディレクトリー構造が違うのでそのままではコピーできないという罠があって面倒くさすぎる…orz
そこでMavenローカルリポジトリーにダウンロードする方法が何かあるだろうと思って調べていたら、joker1007さんのサイトを発見しました。これ、Embulkプラグインを実行する為に自分が調べていたのと全く同じことが書いてあるやんけ!orz
そんな訳で、なんとか実行するところまで漕ぎ着けました。ありがたや、ありがたや。

残ったのはJava11で実行する方法でしたが、これも何とかなりました。
とはいえ現時点では面倒な手順が色々必要なので、早いところ0.11/1.0版のプラグインのリリース方法・インストール方法・実行方法を確立してほしいですね。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Asakusa Frameworkアドベントカレンダー2022は無し

2022-12-30 22:54:11 | PG(分散処理)

書こうと思ってすっかり忘れていましたが、今年のAsakusa Frameworkアドベントカレンダー2022は作りませんでしたorz
去年のアドベントカレンダーの時点でAsakusa Frameworkのバージョンアップは無かったわけですが、今年も無かったので、さすがに書くネタが尽きましたね…。

去年はアドベントカレンダーにTsurugiDBも混ぜたんですが、Tsurugiは今年度末の公開に向けて開発が大忙しで、アドベントカレンダーをやってる余裕も無さそうでした。

来年(2023年)はTsurugiのアドベントカレンダーはやりたいですね。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

AsakusaFWのprintデバッグはOperatorで

2021-12-23 19:32:37 | PG(分散処理)

AsakusaFW & Tsurugi Advent Calendar 2021の23日目です。

AsakusaFWの実行基盤であるM3BPVanillaは単一ノード上で実行するので、(推奨される方法ではありませんが^^;)System.out.printlnで値をデバッグ出力することが出来ます。
ただし、実行時に出力できるようなprintlnを仕込めるのは、あくまでOperatorクラスのメソッドのみです。
実行途中に出力したくてFlowPartやJobFlowに仕込みたくかもしれませんが、それらのクラスはコンパイル(ビルド)時に実行されるものであり、バッチを実行したときに呼ばれるものではありません。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

AsakusaFWでLocalDateTime(エポック版)

2021-12-21 21:06:33 | PG(分散処理)

AsakusaFW & Tsurugi Advent Calendar 2021の21日目です。

アドベントカレンダー14日目で、AsakusaFWのDate・DateTimeとJava8の日付時刻API(java.time)のLocalDate・LocalDateTimeとを変換する方法について書きました。(地道にgetYear()やgetMonth()・getDay()などを使う方法)

しかし、AsakusaFWのDateは基準日からの経過日数(エポック日)、DateTimeは基準日からの経過秒数(エポック秒)で保持しており、個別にgetYear()・getMonth()・getDay()を呼び出すのは、中で変換(割り算)が行われるため、若干不利です。(一方、LocalDateやLocalDateTimeは個別のyear・month・day等で保持しています)
で、LocalDateやLocalDateTimeもエポック日やエポック秒に変換するメソッドを持っているので、それを使う方法も良さそうです。
ただし、AsakusaFWの基準日は西暦1年で、日付時刻APIの基準日は西暦1970年なので、その差は埋める必要があります。コード上のマジックナンバーになっちゃいますけど、それくらいは仕方ないですよね(笑)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする