my notebook blog : Groovy
MapDB に PDF を保存する、そのために PDFデータを Base64 文字列に encode したり decode したりの話
別に PDF データに限らず Binaryデータを Base64 で文字列にして保存するという話。
時々必要になるがその度にあれどうするんだっけ、となるのでここにまとめておきます。
Groovy の LeftShift Operator (<<
) を IO 系のコードで使うと直感的にわかりやす過ぎなのでおすすめです。
MapDB: Javaアプリケーションでちょっとしたデータを保存しておきたい場合に便利
アプリケーションでデータをキャッシュして再利用したい。 たとえば、 Mongo などを使えばそれを実現できるけれど、 UNIXのDBMのような、キーとバリューのセットを保存しておきたいだけなので、 もっと簡単に済ませたい。
Java界隈で DBM っぽいそれと言えば、Berkeley DB がかつては定番だった気がする。 もう少し手軽なものはないかと探してみると MapDB がありました。
Haskell の zip に相当する groovy の transpose が便利
2つのリストをつなぎ合わせたリストをつくる Haskell の zip 相当の機能は、Groovy では transpose で実現できます。
Groovy で画像処理、普段使いのスクリプト その2( 回転 )
Groovy で画像処理、普段使いのスクリプト その1 に続き その2 画像回転をやってみます。
Java2D では 画像を回転させるには AffineTransform を使います。 さらに AffineTransform に与える行列を計算するために、3x3行列の積の計算が必要です。 そのまま地道に計算してもたいしたことはないのですが、 ここでは Apache Commons Math を使います。 Commons Math にはさまざまな機能がありますが、 ここで必要な行列の積の計算には MatrixUtils と RealMatrix を理解しておけば十分のようです。
Groovy で画像処理、普段使いのスクリプト その1 ( リサイズ/グレースケール/JPEG/切り抜き/2in1 )
普段ターミナル中心に bash と vim で仕事をしている身としては ちょっとした画像処理は いちいち Photoshop や GIMP を起動するより groovy スクリプトでちゃっちゃと済ませてしまいたいところです。
今回はそれら普段使いのちょっとした画像処理用コードをいろいろ書いてみます。 ここではこのとてもおいしそうな ポンシェのホワイトドーナツ 画像を例に いろいろ料理してみましょう。
Java でパイプを使う / 複数の変換処理をつなげて処理する
Javaでパイプする方法がよくわからなかったので、いろいろ試行錯誤した結果をまとめました。 Javaで書くとコードが長くなるので、Groovy で記述しています。
ここでは話を簡単にするために、最初の入力として以下のような果物名を列挙したデータがあり、 これを二つのフィルタを使って処理する例を考えます。
melon lime lemon raspberry cherry kiwi banana apple orange grape