アーカイブ : 2012年 1月

MessagePack for Java を使ってみる

どうも、hide92795です
ノベルエンジンの作成の中で、読み込むデータなどをどのように保存(シリアライズ)しておくかということで、
調べていたら速度・圧縮率ともに優秀らしい MessagePack というライブラリを使用することにしました。
(今まではjava.io.Serializableを実装していましたが、圧縮率という面で不安になったので乗り換えることにしましたw)
The Message Pack
http://msgpack.org/

※この中では2012/01/16時点(MessagePack 0.6.6)について書いています

・インストール方法

MessagePackはjarとして配布がされていないので、gitかMavenリポジトリからソースを取得&コンパイルする必要があります
自分がやったやり方はeclipseとgitとAntでjarを生成する方法です。
①EgitでMessagePackのリポジトリからクローンする
msgpack_1
②リポジトリを右クリックし、「プロジェクトのインポート」
「プロジェクトをインポートするためのウィザード」では「一般的なプロジェクトとしてインポート」を選択
③パッケージエクスプローラーに「msgpack-java」というのが追加される
④プロジェクトの中の「built.xml」を右クリックし、「実行」→「Ant ビルド」を選択
⑤コンソールに「BUILD SUCCESSFUL」と出たら成功
⑥プロジェクトのフォルダの中の「build」フォルダにmsgpack-0.0.1.jarと「build\lib」フォルダに必要なライブラリが生成される
⑦これらをまとめてビルドパスに追加する
これで使う準備ができますw
・使い方
公式の方には、シリアライズしたいクラスに@Messageアノテーションをつければいいと書いてありましたが、byte[][]なんかを自分のクラスでは使っているのでエラーになってしまいました。

↑基本的にはこんな感じで使います。

自分のやつではこれでできないので、自分でPackerを生成し、値を一つずつ埋め込み&読み込みを行います。
・埋め込み

・読み込み

こんな感じですw
手順としては、PackerをcreatePackerで取得して、Packerに対してwrite(データ)で埋め込み、
read***()でプリミティブ型とString型の読み込み
(readInt(), readString(), readShort(), readLong())
read(Class c)でプリミティブ型のラッパークラス・その他Object・byte配列を除くプリミティブ型の配列の読み込み
(read(Integer.class), read(String.class), read(int[].class))
を行います。
埋め込みと読み込みの操作での操作は同じ順番(1番目にint 2番目にString みたいに)
これらを守ればほぼ確実にできると思いますw
ではノシ

C81行ってきたお

あけましておめでとうございます、hide92795です
今年もよろしくお願いします( `・∀・´)
記事の内容は去年のことですがw
人生初のコミケに行って来ましたw
行ったのは3日目
これもコミケの醍醐味かな?ということで自宅の最寄り駅の始発(4:55)で行きましたw
その始発にも同じ所に行くような感じの人が数名いたんだけどねww
りんかい線の駅に06:05位について、そのまま東館の待機列へ
c81_1
すでに結構な人がいました・・・
マップ上で表すと
c81_2
だいたいここら辺でした
もちろん待ってる間は寒く、3時間は結構長いですww
んで、コミケ初参加の俺がハマってしまったことが少し程・・・
1.入り口は東3・6側
2.壁側サークルの中には外に並ぶところもある
3.買ったものを入れておく袋が必要
4.小銭をわざわざ財布から出すのがめんどい(冬なら大抵コートとか来てるので1000か500を数枚ほどポケットに入れておくと便利だった)
常連さんには当たり前すぎるかもしれませんがww
事前にあまり調べずに行ったので1-3らへんでかなり惑わされましたw
使用金額は10000円前後
16サークルほどで買って来ましたw
数回読んでいますが、最後のあとがきの日付が2010.12になってたり(もちろん新刊)、
自宅で製本したらしきもので、同じページが2回続いてたりw
それも同人誌らしい面白いところなんですけどねw
次はC82で夏なのですが、さすがに夏場に朝早くから並んでいると死んでしまいそうなので(体型的に)朝から並ぶというのはしないと思います
ではノシ