かみやさんの pixel phantom の日記にて「エアリセ全巻また重版かかったよ♪」の文字を見たのが4月ですよ。
1巻と4巻だけなんとか見つけて間を持っていない状態が長く続いていて、再版かかって喜んだもののやっぱり置いてなかったんですが、新宿ジュンク堂でなんとか見つけましたよ−。
生徒会の一存は部屋にずっといないといけなかったとき用に。
ヨーグルティングは始めた時期にサービス終了しちゃったんだけど、おもしろいゲームですよね。テンポいいし絵綺麗だし。
そのときアンソロ探したんですけど売ってなくて、そのまま数年。
秋葉で見つけましたよ!すごい焼けちゃってたけど。
デュアンは新刊。電車のお供に。
C++ の Boost に含まれている画像処理ライブラリに boost::gil というのがあって、OpenCV か Gimp のライブラリを見てみようかと思ってたんですが、こっちを先に使ってみました。
GIL は Generic Image Library の略で、Adobe が出してるみたいですよ。
んでまあ jpg の read/write を最初にやってみたわけですが、提供されている関数群がみんな void で、外部から与えられたメモリ領域に書き込みを行う、副作用どんとこいな関数ばかり。
あと C++ とか素人すぎて、コンパイルが通せなくてめっさ悩みました。
今回の例だと libjpeg を使う必要があって、boost/gil/extension/io/jpeg_io.hpp の中でちゃんと include されてるから、こちらが明示的に include する必要はないはずなんだけどなーとかなんとか悩んでいたら、リンクオプションが足りなくない?というオチ。
NetBeans のプロジェクトプロパティから -ljpeg を追加したらコンパイル通りました。
無事 input.jpg を output.jpg にコピーできましたとさ。
つまらない例でごめんなさい(ぇー
元の関数がデータを破壊してくるのでラップして無駄なインスタンスコピーを走らせる実装にしちゃったけど、C++ でこういうの、どう書けばいいんでしょうか。リファクタリング歓迎。
画像処理ってからには速さが命な気もするんですが、Haskell みたいなかんじで書けないんですかね。
/*
* File: Main.cpp
* Author: kei
*
* Created on 2009/06/21
*/
#include <stdlib.h>
#include <boost/gil/gil_all.hpp>
#include <boost/gil/extension/io/jpeg_io.hpp>
using namespace std;
using namespace boost;
using namespace boost::gil;
/**
* 入力ファイル名を返します。
* @return 入力ファイル名
*/
const string inputFilename() {
return string("input.jpg");
}
/**
* 出力ファイル名を返します。
* @return 出力ファイル名
*/
const string outputFilename() {
return string("output.jpg");
}
/**
* 指定したファイル名の jpg 画像データを返します。
* @param inputFilename 入力画像ファイル名
* @return jpg 画像データ
*/
const rgb8_image_t readImage(const string& inputFilename) {
rgb8_image_t imageMemory;
jpeg_read_image(inputFilename, imageMemory);
return imageMemory;
}
/**
* 指定したファイル名で、画像データをファイルに出力します。
* @param outputFilename 出力画像ファイル名
* @param outputImage 出力画像
*/
void writeImage(const string& outputFilename, const rgb8_image_t& outputImage) {
jpeg_write_view(outputFilename, const_view(outputImage));
}
/*
* メインエントリです。
* input.jpg という jpg 画像ファイルを output.jpg という名前でコピーします。
* @param argc
* @param argv
*/
int main(int argc, char** argv) {
writeImage(outputFilename(), readImage(inputFilename()));
return (EXIT_SUCCESS);
}
バージョン管理用に Bazaar 入れてみました。
NetBeans 使い的には Mercurial のほうが都合が良かったり、github の gist はコピペでコードが公開できて楽しいので git が良かったりと迷うところ。
と思っていた時期が私にもありました。
正直、設定ファイルとかの管理くらいにしか使わないであろうものに、上記に合わせる必要なんてないんじゃないかと。
ってことで、Bazaar。
ダウンロードページ曰く、Mandriva は urpmi にあるよ!とのことなんですけど、1.14 ですし、けっこうバージョンが上がるごとに進化しているらしいので(2ch 曰く)、最新版を入れてみます。
/opt 配下に入れるつもりで、java 関連はいつも /opt/java にまとめているので、/opt/python 配下に入れてみることに。
InstallationFaq に従って依存パッケージを urpmi でインストール。
セットアップスクリプトのオプションに –home と –prefix があって、どっち使っていいのか分からないんですが、どっちも試してみたかんじ、たぶん挙動は同じなので一応 –home で。
# tar zxvf bzr-1.16.tar.gz (展開)
# less README (読む)
# less INSTALL (読む)
# ./setup.py install --home /opt/python/bzr-1.16 (インストール)
# cd /opt/python/ (移動して)
# ln -s /opt/python/bzr-1.16 bzr (シンボリックリンクをはって管理)
この方法だと bin にパスを通さないと当然ながらコマンドが打ちにくいし、lib/python の場所を python に教えてあげないと実行すらできないわけで。
bzr の実行スクリプトに直接 PYTHONPATH を書くか、/opt/scripts (パスを通してある) に PYTHONPATH を通してから実行するシェルスクリプトを書くか、環境変数を bashrc 等に書くかと、どの方法でもいいわけですが。
いつもの java の管理の仕方に合わせて /etc/bashrc に追加しちゃうことにしました。
BZR_HOME なんてのは必要ないけど、いつもの管理方法に合わせてるだけ。
# for python
export BZR_HOME=/opt/python/bzr
export PYTHONPATH=$PYTHONPATH:$BZR_HOME/lib/python
export PATH=$PATH:$BZR_HOME/bin
基本的には、ローカルにリポジトリを作って管理する目的で導入したけど、使いやすそうだったら Launchpad にコミットも試してみたいところ。
git の github はよかったけど、mercurial の bitbucket はあんまり馴染まなかったんですよね;
上野・浅草を歩き回って写真を撮ったり、豪華ランチを食べたり、水上バスに乗ってみたりと充実したお休みでしたー。
8組に分かれてチーム戦。1チーム7, 8人。
・・・ウチのチームが一番大人しそうに見えるとかどんだけ。
# 単体で見たらみんな特殊スキル持ちタイプのはずが、組み合わせ的に周りが濃すぎ。
「エレベータまで、70cm で歩くと何歩か」。
まあなんとなくで歩いて測るのが期待されるところ?
メジャーを買ってきて計ってたり、GPS で計測してる大人たちでごめんなさい。
ちなみにウチは、わたしの元吹奏楽部(マーチング)スキル発動。
# だいたい190前半と踏んだわけですが、正解は193歩でした。GPS 並に正確な自分の足を褒めてあげたい。
# 追記。そのマーチング時の歩幅を、今確認してみたら間違ってた orz
その次は輪っかの直径を測れとのこと。
・・・縦に歩けとな?
全都道府県を答えるクイズをやってからスタートする今回の企画。
ウチは四国を全部埋めたつもりで高知の名前が出てこないためにスタートが大変出遅れました。
高知の人ごめんなさい。
親鸞の画数を答える必要があったりもしたわけですが、iPhone でぐぐったら Yahoo 知恵袋に同種の質問が・・・!
それにしても、浅草って綺麗だし楽しい街。
10円饅頭−。すごくおいしかったですよー。
山の手線沿線に住むのも悪くなさそう。
手形を数えたり−。
お店がいっぱいで、休日に来たら飽きなそうですよー。
捜し物は裏に。
しかし中学生達が知ってるにもかかわらず、我々は知らず。
修学旅行生、すごく多かったですよ。
噂の花屋敷。雨降ってたし入らなかったですけどね。
悲鳴が「キャー」じゃなくて「ギャー」って聞こえたんですが。
ホテルにて豪華ランチを頂きつつ、景品をゲット−。
飲みに行く、麻雀に行く、花屋敷に行く、などなど各自、解散後の2次会(?)へ。
水上バス行ってみようーということでのんびりと船に揺られにー。
解散後にもかかわらず、何気に約20人も居たよ・・・w
団体さんチケットで乗れてしまいました。
その後降りた先の公園でのんびり話しながら歩いて、夕方です。
今度はたいやき食べに、また来よう−。





























