ZLibユニットによるデータの圧縮と展開

■TZCompressionStreamでデータを圧縮する

ZlibユニットにあるTZCompressionStreamクラスを使うとデータを圧縮することができます。

TZCompressionStreamクラスのコンストラクタは引数に圧縮したデータを書き込むTStream*をとります。
第2引数は圧縮方法です。

#include <ZLib.hpp>

unique_ptr<TFileStream> dest(new TFileStream("C:\\test.dat", fmCreate)); //圧縮したデータの書き込み先
unique_ptr<TZCompressionStream> cs(new TZCompressionStream(dest.get(), Zlib::zcDefault));

Writeメソッドで圧縮するデータを受け取り、圧縮したデータをコンストラクタの引数のTStream*に渡します。

UTF8String utf8 = L"圧縮のテスト圧縮のテスト圧縮のテスト";
cs->Write(utf8.c_str(), utf8.Length());

■TZDecompressionStreamで圧縮されたデータを展開する

ZlibユニットにあるTZDecompressionStreamクラスを使うと圧縮されたデータを復元することができます。

TZDecompressionStreamクラスのコンストラクタは引数に圧縮されたデータを読み込むTStream*をとります。

#include <ZLib.hpp>

unique_ptr<TFileStream> source(new TFileStream("C:\\test.dat", fmOpenRead)); //圧縮されたデータの読み込み元
unique_ptr<TZDecompressionStream> ds(new TZDecompressionStream(source.get()));

Readメソッドは入力ストリームからデータを読み込み、復元します。

__int64 size = ds->Size;
boost::scoped_array<char> buffer(new char[size]);
ds->Read(buffer.get(), size);

Ruby on Railsを使うならバージョン2.2以上を使おう

Ruby on Railsを使うならバージョン2.2以上を使おう。

バージョン2.1以下は、セキュリティホールが放置されている。
いずれも、バージョン2.3.4と2.2.3で修正されている。

とはいっても、バージョン間での互換性が低いのがRuby on Railsの特徴。
既存のシステムのバージョンアップも楽ではない。

Railsの思想

“Railsという現象”とコミュニティの性質」で、Rails開発者がRailsの思想について語っている部分が興味深い。

以前に書いた記事「Rubyの後方互換性の低さは、Rubyの良さである。」と同じようなものだけど。

「枯れたバージョンのRailsというものはない。昨日のバージョンより今日のバージョンのほうがいいし、今日のものより明日のRailsがいい。だから常に“今”のRailsがベスト」

“Railsという現象”とコミュニティの性質

とか、

「Railsでは新機能が未完成のまま出てくることが多い。攻めのプロダクト。完成していなければ、自分が完成させながら使えばいいじゃんという認識がコミュニティ側にある」

“Railsという現象”とコミュニティの性質

など。

こういう思想を理解せずに使うと、後で痛い目に遭うかもしれない。

NetBeans 6.7でRuby on Railsの開発をして気がついたこと

NetBeans 6.7でRuby on Railsの開発をして気がついたこと

UnitTestのテスト結果のウィンドウが豪華になっていた。
エラーがあると、テスト結果のバーがアニメーション表示する。
# RSpecを使っていたので気がつかなかったが、もしかすると昔からかもしれない。
人の目は敵を素早く見つけるために、動いているもにに視点が移動する。
したがって、アニメーション表示するテスト結果のバーに視点が移動してしまい、
集中してソースコードを見ることができない。
アニメーション表示は見た目はいいが使い勝手は悪い。

愛用していたプラグインが動作しない。
NetBeansのRuby用プラグインで紹介したタブ文字をハイライト表示する「Tabs」プラグインと、行末のホワイトスペース(半角空白、全角空白、タブ文字)をハイライト表示して削除してくれる「Trailing Whitespace」プラグインが動作しない。
このプラグインの機能は多くのエディタに搭載されている機能だ。
NetBeansにも標準で搭載してもらいたい。