ひしだまの変更履歴

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

AsakusaFWでXMLファイルを読み込む方法

2017-05-22 04:42:05 | PG(分散処理)

Asakusa FrameworkXMLファイルを読み込む方法を考えてみた。

JavaでXMLファイルを読み込むライブラリーはいくつかあるが、AsakusaFWで使うにはStAXが向いている。

ただし、ファイル分割は出来ない(というか非常に面倒な)のと、タグがネストしていて内側の個数が不定のような場合はデータモデルをどうすればいいか等の問題があるため、AsakusaFWでXMLファイルを汎用的に扱うのは難しい気がする。

コメント
この記事をはてなブックマークに追加

AsakusaFW 0.9.1 formatted text

2017-05-01 11:28:10 | PG(分散処理)

2017/4/26にAsakusa Framework0.9.1がリリースされた。→リリースノート
ドラクエ10の大型アップデート(ver 3.5中期)と同じ日だったからDQ10を優先したので
今回は大きな機能追加が多かったので!試すのにちょっと時間がかかった!

まず、Direct I/Oのformatted text。これはcsvやtsvといったファイルの汎用的なもの。
従来のdirectio.csvより実行速度は若干劣るが、設定できる項目が豊富。項目数が不定(可変)のcsvにも対応している。
(これに伴い、DMDLに新しい文法(escape_sequenceの設定で使うマップ形式)が追加されているので、DMDL EditorXの対応しなきゃ…今のままだと、その文法がエディター上でエラーになってしまう)


Operator DSL関連では、StringOption(およびOption系共通のValueOption)やStringOptionUtilにメソッドが加わっている。

大きな変化として、GroupSortとCoGroupで、Listの代わりにIterableで入力を受け取れるようになった。(これはドキュメントには書かれていない模様)
それに伴い、@Once@Spillというアノテーションが追加になっている。 

それから、Operatorのテストで使うMockResultを生成するユーティリティーが加わった。→OperatorTestEnvironment#newResult

フローのテストでは、ファイルを直接読み込む機能が追加された。
Excelファイルで入力データや検証データを書く代わりに、直接csvファイル等を使うことが出来る。


M3BP関連では、アクセス方式nioの2GB制限が無くなった。
今までは結構当たり前のようにunsafeに変えてたけど^^;、今後はnioのままで良さげ。

あと、今までコンパイルにgccを使っていた(もしくは使ってなかったけど設定は必要だった?)のが、不要になった。(g++のみになった)
Windows上でコンパイルする為の自分の手順ではCMAKE_C_COMPILERを指定してたんだけど、これが不要になる。(付けたままだと警告が出る。警告なだけなので無視すればいいけど)


最後に、まだincubatingな機能だけど、GroupViewというものが追加されている。
これは従来のDirect I/O APIのようなもので、Update等の各演算子から他のデータを読めるもの。たぶんこちらが正式機能になると思われる。
コーディング方法もテストの記述方法もDirect I/O APIよりすっきりしている。
フローの結線にもデータが現れるので、「フローに無いのにデータを使ってる…」といった誤解も無くなるだろう。

早く正式機能にならないかなw

 

コメント
この記事をはてなブックマークに追加

AsakusaFW GroupSortのレコードを補填する例を訂正

2017-04-25 21:18:58 | PG(分散処理)

Asakusa FrameworkGroupSortのレコードを補填する例を訂正。

Resultにaddするデータモデルインスタンスをそのまま使い回していたんだけど、
addするとインスタンスの内容は破壊(変更)されることがあるので、毎回初期化する必要がある。

昔はそれを知らなかったので、古い例だとそういうコーディングをしてることがあるんだよな~orz 

コメント
この記事をはてなブックマークに追加

Java本格入門

2017-04-15 17:23:06 | PG(Java)

dentomoさんから『Java本格入門』を頂きました。ありがとうございます。
(著者は谷本心さんを始めとするAcroquest Technology株式会社の方々ですが、編集がdentomoさんのようです)
なんと、p.436の参考文献に、そうそうたる本に混じって自分のウェブページのURLが載っています! うわ~嬉し恥ずかしw
(「この本を読んだ人たちが次に参考に出来るサイト」という意味かなーと思ったら、書いた人が本当に参考にしていたみたいです^^;)

このJava本格入門、入門の名の通りJavaの基本的な文法も扱っていますが、そこからさらに、よく使われるライブラリーやJavaで開発するために知っておいた方が良いこと(デザインパターン・ログ出力・JUnit、果ては例外の使い方やマルチスレッドに関する注意点・Checkstyle/Findbugs等)についてまで載っています。
まさに仕事でJavaを扱う人なら知っておいて欲しい内容です。
(まぁ僕自身はFindbugsとか使ってないんですが(爆)、例えばAsakusa Frameworkのソースはそれでチェックされています) 

本書のJavaのバージョンはJava8ですが、従来のバージョンで普通に使われていたライブラリーも新しいライブラリーも載っています。例えばFilePathDate/CalendarDate and Time APIなど。
各章のコード例や末尾に載っている応用に関する話題等も参考になります。例えばp.145のConcurrentHashSetの件とか知りませんでしたし、p.171のmapToObj(i -> "?")も、なるほどiを無視する使い方もあるか!と思いました。

また、あまり良くない入門書だと「その説明だとちょっと違うんだよな~」という違和感があったりするのですが、本書にはそういう違和感がありませんでした。
レビュー陣がよほど厳しかった素晴らしかったのでしょうw

Java本格入門は、Java8を対象とした入門書としてとても良いのではないでしょうか^^

コメント
この記事をはてなブックマークに追加

2017冬アニメについて一言

2017-04-09 22:40:15 | Weblog

2017年1~3月期のアニメの感想。

今期は、アニメを録画予約しようとしたら予約数の上限を超えたので、(見たことなくても)再放送のやつはカット。シンフォギアとか(GXが面白かったので)見たかったんだけどねぇ。

  • Rewrite
    • 全シーズンからのやり直しなのでどうなるか楽しみだったが、予想外の終わり方だったけどこれもまた良し。自分の想像と違うから他人の作品は面白いのだし。
    • 主人公の生きる年代がちょっとずれて、共に行動する人が変わったのも面白かった。
  • けものフレンズ
    • 何度見ても第1話の最初の5分が一番酷い^^;これで見るのをやめた人がいたというのも頷ける。
      (動物の動きらしくない。放物運動を擬似シミュレートしたらあんな感じか?
      txを目標(かばんちゃん)のX座標、xを自分(サーバル)のX座標、aを増分(加速度相当)としたとき、z=sign(tx-x)/*相手が右にいたら+1、左にいたら-1*/; a+=z; x+=a; という感じのロジックならああなりそう(要するにバルーンファイトみたいな動き))
      (口の動きと声も合ってない。これは2話以降は違和感無くなったけど)
      スケジュールが厳しくて後の方の作成が間に合わなかったのなら分かる(ウィザード・バリスターズなんかその典型だったし)んだけど、よりによって何故先頭がこれ^^;
    • シンプルで楽しい作品ではあったけど、ここまで一般に評価が高くなったのは正直に言って謎…。
    • 舞台のジャパリパークという言葉がJavaと似ているので、ついネタに乗ってしまったw(仕事でビッグデータ関連のAsakusa Frameworkを使っているのでw)
      1. Javaリパークの歌
      2. サーバル
      3. ラッキービースト
      4. おにいさん
  • ACCA 13区監察課
    • いつの間にか陰謀に巻き込まれて最後の解決まで、流れが見事。
  • 亜人ちゃんは語りたい
    • とても良かった。
    • デミヒューマンの生態を色々考察しているのも面白かった。
  • 小林さんちのメイドラゴン
    • 良かった。
  • うらら迷路帖
    • 良かった。
  • ガヴリールドロップアウト
    • 面白かった。
    • これを長編映画化したらどうなるか、予想が出来るキャラクター達だw
  • ひだまりスケッチ×ハニカム
    • これが噂のひだまりスケッチか~
  • バンドリ
    • 良い。音楽も良いよね。
  • リトルウィッチアカデミア
    • 最初は野暮ったい(古いくさい)絵だなーと思ったけど、内容とよくマッチしている。思ってたより面白い。
  • この素晴らしい世界に祝福を2
    • 話は面白かったんだけど、絵柄が前シーズンより酷く(手抜きに)なってない?
  • 幼女戦記
    • 多少は予期していたけど、タイトル詐欺っぽいw
    • 魔法を近代の戦争と混ぜて使うという意味では終末のイゼッタと似ているけど、雰囲気が全然違うのな。
  • テイルズオブゼスティリア ザ クロス
    • 良かった。
  • スクールガールストライカーズ
    • 面白かった。
  • カオスチャイルド
    • シュタインズゲートと同じ会社の作品らしいので期待してたんだけど、猟奇的すぎるだろ^^;
    • オープニング音楽はシュタインズゲートと同じ声質ですぐ分かったw
  • MONSTER
    • 引き続き注視。

  • チェインクロニクル
    • むっちゃ王道っぽかった。
  • ハンドシェイカー
    • 絵はきれいだったねぇ。
  • 銀魂
  • ALL OUT
  • エルドライブ
  • アイドル事変
  • AKIBA'S TRIP
    • カードバトル(カードバトルアニメ)へのツッコミとか面白かったw
    • CMもお約束をひねっていたり、こういうノリも嫌いじゃないw

  • TRICKSTER
    • 前シーズンに比べて暗いっつーか、あんまり後味良くなかったなー。
  • 霊剣山 叡智への資格
    • 絵柄が変わって続編だと認識できなかった。性格も酷くなってるし。(すぐ「殺す」とか言い出して。仙人のイメージが全然違う)
    • 前シーズンの前半はアイデアで勝負する感じで面白かったのになー。全シーズンの後半から、この作品はどこへ向かおうとしているんだろう?という感じだった。
  • スピリットパクト
    • BL好きな人向けか?
  • 風夏
    • 音楽は格好良かった。
  • 正宗くんのリベンジ
    • やっぱ恋愛物は苦手だわ。
コメント
この記事をはてなブックマークに追加

embulk-parser-poi_excel 0.1.6 セルのキャッシュ値の取得

2017-01-28 17:04:05 | PG(分散処理)

きっかけは、Embulkで新しくExcelファイルを読もうと思ったら、プラグインが固まった(ように見えた)こと。
(超どうでもいいが、「きっかけは」って書くと、LINDBERGのLITTLE WINGが頭の中で始まるw)

トレースログを埋め込んで(自分で作ったプラグインだから、何とでもなるw)見てみたら、セルの数式の計算でやたらと時間がかかっている。1セル7分。おいおい(汗)
SUMIFのような関数で列全体とかが指定されていると、1行目~1,048,576行目までの全てを探しに行く実装になっているようだorz 関数がネストしているような“神エクセル”だと、そりゃ遅いわ…。
(POIでは実データの有る最大行数は取れるんだから、それを考慮してくれればいいのに(苦笑))

まぁPOIの実装は置いといて、Excelでファイルを開いたときは値が表示されているので、これが取れればいいのになぁと思って試しにPOIで値を取得するメソッドを呼んでみたら、取れたし!
後はその値がどの型(数値か文字列か)が分かる方法があれば…と思ってCellクラスを眺めてみたら、ばっちりgetCachedFormulaResultTypeというメソッドがあった!これは知らなかった。。
計算の結果がキャッシュされていないExcelファイルではどうしようもないだろうけど、とりあえず今回の目的にはこれでOK。

という訳で、embulk-parser-poi_excelプラグインに、キャッシュされている値を取得できるようにするオプションを追加した。

ついでに、シート名の指定でワイルドカードを使えるように修正。 

コメント
この記事をはてなブックマークに追加

Embulk xlsxファイルプレビューの注意

2017-01-27 23:55:06 | PG(分散処理)

Embulkembulk-parser-poi_excelプラグイン)で新しくxlsxファイルを読み込もうとしたら、例外が発生
エラーメッセージがEOFExceptionでend of ZLIB input streamとのことだったので、最初はxlsxファイルが大きすぎたのかと思った。

で、別途Apache POIのサンプルを作ってそのxlsxファイルを読み込んでみたら例外が発生した。
inflate ratio(圧縮率?)のチェックに引っかかったらしい。
ただ、これをチェックする閾値は設定できるので、問題解決!

と思ったのだが、よく見るとエラーメッセージが全然違う(汗)

WorkbookFactory.createメソッドでxlsxファイルを読み込むのだが、引数がFileのメソッドとInputStreamのメソッドでは挙動が違うらしい…。
Embulkのxlsxファイルを読み込むプラグインではInputStreamを使う方式なのだが、ratioのエラーになるのはFileを使う方式だけで、InputStreamを使う方式だとエラーにならなかった。
Embulkでも、previewだとエラーになるが、同じファイルをrunで読み込むとエラーにならない。

ということは、EmbulkとPOIの相性の問題と思われる。
プレビューだから、ファイルの全データを読み込んでいないのではないかと思う。
しかしxlsxファイルはzip圧縮されている形式なので、先頭データだけでは解凍できない^^;

まぁプレビューだけの問題だから、注意喚起だけでいいかな~。

(追記)他のプラグインでも同様の問題が起きているらしい。previewだと32kBしか読まないそうで。
previewでも全データを読むように修正されるなら、この問題も解決しそう。

コメント
この記事をはてなブックマークに追加

2016秋アニメについて一言

2017-01-22 14:07:50 | Weblog

2016年10~12月期のアニメの感想。

私事だが、この期から録画機器を導入したので、好きな時間に見られるようになったのが大きいw
(これで、「『Re:ゼロから始める異世界生活』を見る為に朝4:00まで起きていた」なんてことは無くなるのだ…!)
特にPM8:00台はテレビでろくなものがやっていないので(ニュースは19:00や21:00だし)、その時間帯に見るのがちょうどいい。
実際に見るのはだいたい1~2週間遅れになってしまうけど、「次回はどうなってるんだろう!」と思ったときに、他のアニメを飛ばして次回を見るということが出来て、良かったw

  • 終末のイゼッタ
    • 始まる前のCMを見て一番期待していたアニメ。期待通り良かった。
    • 使える魔法が物を動かすだけなので、戦闘機は槍(ランス)で落とせるけど、戦車の装甲は貫けない。代わりに戦車そのものをひっくり返す。というアイデアが良かった。
    • 大国から狙われる小国ということで(よくある)絶望的状況だったけど、(意外と早く)陥落してびっくり。
    • 最後、イゼッタの表情は映されなかったけど、ちゃんと生きてるのか不安だ…。
  • オカルティック・ナイン
    • 主要な登場人物が9人だからナインなのかと思ったけど、そういう訳では無かった。
    • 人数が多いしテンポが早いので最初はびっくりしたけど、慣れてくるとなかなか良い感じにw
    • 最後には謎や人物の関連が明かされてけっこうすっきりしたけど、残った謎はゲームに持ち越し?(買おうか悩むw 『シュタインズゲート・ゼロ』や『うたわれるもの』はアニメを見てゲームを買ったが面白かったし)
  • ViVid Strike!
    • 途中ちょっと重かったけど、ええ話やったわ~>< 「どうしたらお前を救ってやれるんや」
  • ブレイブウィッチーズ
    • 面白かった。(ハッピーエンドに終わるだろうと)安心して見ていられるのが良いw
  • 装神少女まとい
    • 仲間が協力していく話は好き。装神少女ゆまちんのオープニングが良かった。ああいう遊び大好きw
  • フリップフラッパーズ
    • なんと言えばいいのかよく分からん(幻想的な?)雰囲気で良かった。
  • ステラのまほう
    • (前期の『NEW GAME』に続いて、)ほのぼのゲーム製作ネタ。面白かった。
  • ろんぐらいだぁす!
    • ほのぼの自転車もの。良かった。
    • 赤信号で止まってたシーンに驚天動地。左右から車が来そうに無い交差点で、現実のロードレーサーが(ママチャリも)赤信号で止まってることなんて、年に2~3回しか見かけないぞ。僕が赤信号で止まってるのに、抜かして行くからな奴ら。
  • ジョジョの奇妙な冒険 ダイヤモンドは砕けない
    • ジョジョの中でほぼ唯一原作の連載を読んでいたやつ。(康一のファンなので、もっと活躍してほしかった←無茶言うなw)
  • SHOW BY ROCK!!#
    • 各話は悪くない(面白い方だ)と思う。
  • 魔法少女育成計画
    • ほのぼのした話かと思っていたら、殺し合いとは(苦笑)
  • Lostorage incited WIXOSS
    • これも何人か消えたりして重い話だったが、最後はまだ救われた…のかなぁ?
  • ブブキ・ブランキ 星の巨人
    • 『幼年期の終わり』みたいな話につながるとは!
    • 最終話、ああいうのやるの珍しいね。
  • レガリア
    • 普通。(本来前期に放映予定だったのが延びて今期に入ったが、おかげで他のアニメより先に終わった。同時に放送しているとピークが同じになるので、ずれるのはそれはそれで面白かった)
  • 文豪ストレイドッグス
    • 主人公が決意するシーンや活躍するシーンは格好良くて好き。だが、なんで文豪を表に推す必要があるのか…?
  • TRICKSTER -江戸川乱歩「少年探偵団」より-
    • 小林や花岡がどうなるのか気になる。けど、なんで江戸川乱歩(少年探偵団)を表に推す必要があるのか?
  • WWW.WORKING!!
    • 面白いw
  • 斉木楠雄のΨ難
    • 喋るテンポが良かった。原作の週刊ジャンプの方では読み飛ばしているんだが(爆)、アニメで楠雄の喋りやツッコミを聞いていると心地よいw 声優ってほんとすごい。
  • ナンバカ
    • 技を駆使して色々な牢から脱獄するという話かと思ったら、ぜんぜん違った。面白い方だとは思うけど。
  • 灼熱の卓球娘
    • 予想に反して面白かった。熱い!w(スポーツものだと、リアル指向かとんでも指向になることが多いけど、これはちょうど良いバランス)
  • ALL OUT!!
    • 男ばかりで萌えキャラが一切出てこないラグビーアニメ(リアル指向・スポ根に近い)だが、見ていると引き込まれていつの間にか時間が経っているという、不思議なアニメ。
  • DAYS
    • サッカーアニメ。主人公は嫌いじゃないが、(仲間とかに)恵まれすぎなんだよなー。
  • 競女
    • あかんアニメw 原作は知ってたけど、よくアニメ化したなこれw Fateのギルガメッシュの宝具っぽい演出とか、超うけたw
  • 刀剣乱舞-花丸-
    • 『艦これ』と同様に有名なゲームが元なので一応見ていたが、男向けじゃないねこれ。楽しそうな雰囲気ではあった。
  • Bloodivores
    • 設定を盛っている割に謎を解明させるストーリーが進まず戦闘ばっかりで、いまいち…。
  • アイドルメモリーズ
    • アニメは前半15分だけで後半15分は声優がクイズか何かやってたけど、前半しか見なかった。
  • ソードアートオンライン(再放送)
    • 途中から、「ああこれ見たことある」ってなった(自爆魔法が全く役に立たなかった辺り。なんてかわいそうな><)。昔見たときは途中からだったので状況が分からなかったけど、そういうことだったんだなぁ。
  • MONSTER
    • 前期もやってて来期も続く。引き続き注視。

どのアニメも、音楽は良かったな~。聞いているだけで盛り上がってくるw

あと、この期は終わるのが12月なので、最後にクリスマス特番をやっているものがいくつかあったけど。
声優はすごいと思うし尊敬するけど、声優が出てくるバラエティー番組にはあまり食指が動かない。
『装神少女まとい』は総集編をやってて、そういうのの方が面白かった。


さて、2016年の感想を書き終わったので、ようやく2017年のアニメを見始められるw
しかし今期はやたら多くて、録画予約が上限を超えた(爆)
仕方が無いので、再放送のものは(見たことなくても)泣く泣くカットorz

アニメーターの給料が安くて大量に作らないと食っていけないといった事情はあるらしいけど、待遇を良くして正常化してもらいたい。 

コメント
この記事をはてなブックマークに追加

2016年の(自分の)ゲーム事情

2017-01-17 22:35:32 | ゲーム

2016年のゲームの振り返り。

まず、ドラクエ10は継続して遊んでいる。
今はver3.4で、うっかりクリアしてしまった。今までのパターンだとボスが強すぎて、バージョンアップでレベル上限が開放されたりスキルが強くなってからようやくクリアできるという感じだったのだが。
それと、レベルも現時点(96)でカンスト。特訓はまだ終わってないけど、特訓が上がっても冒険日誌には記録が残らないんだよね~。

2016年の初期は『ドラクエビルダーズ』をやってたのかな?
ストーリーがドラクエ1関連ということで始めたんだけど、フリービルドの方も意外とハマってしまった(笑)

その後、やるゲームが無かったので『ソードアートオンライン ホロウ・フラグメント』を始めたんだけど、ゲームバランスがいまいち…。スキルの使い方がよく分からなくて単調な割にマップ広いし。未クリア。

8月に入って『イース8』。
面白かったよ。まぁ、イース4より後は、そのときは面白いんだけど、けっこう記憶に残ってないんだけどね…。

あと、『うたわれるもの二人の白皇』。前作やってたから、期待して待ってた。けど、発売日を一週間勘違いしてて、買おうと思ったら売り切れの店ばかりでなかなか買えなかったんだけどねorz
メインストーリーは期待通り面白くてクリアしたけど、その後のおまけが強すぎて、クリアできる気がしない…。 

今やっている最中なのがFF15。
今年ドラクエ11が出るのでPS4を買ったから、ついでにやり始めた。まだ序盤なんだけど、確かに噂どおり、メインストーリーの唐突さはなんだかなー^^;
サブクエストが自由に出来るのは良いと思うんだけど。

コメント
この記事をはてなブックマークに追加

Asakusa on M3BPの環境変数

2016-12-24 00:00:00 | PG(分散処理)

Asakusa Framework Advent Calendar 2016の24日目です。

Asakusa on M3BPでは、バッチ(YAESS)実行時のオプションを環境変数で指定することが出来ます。

まずASAKUSA_M3BP_OPTS。これはjavaコマンドに渡すオプションを指定します。

$ export ASAKUSA_M3BP_OPTS='-Xmx64g'

M3BP本体はC++なのでOSネイティブのバイナリーで実行されますが、Asakusa on M3BPはJava部分もあるので、javaのヒープ容量もそれなりに必要です。
(かといって64GBは多すぎですが^^; メモリーが512GBもあると、JavaVMのヒープも「てきとーに64GBにしとけばいっかー」みたいな感じになります(爆))


それからASAKUSA_M3BP_ARGS。これはM3BPのパラメーターを指定します。
特にm3bp.propertiesで記述するような内容は、--engine-confオプションを(複数)使って指定します。

$ export ASAKUSA_M3BP_ARGS="--engine-conf com.asakusafw.m3bp.output.buffer.size=4194304 --engine-conf com.asakusafw.m3bp.output.buffer.flush=0.8"

あとASAKUSA_M3BP_LAUNCHER。
これについてはアドベントカレンダー2日目(バッチのメモリー使用量の確認方法)を参照して下さい。 

コメント
この記事をはてなブックマークに追加