Hello GNU Assembler World

何年か前に「はじめて読む486」を読んだはずなんですけど、最近アセンブラ読もうとしたら全然読めなかったので、一から復習することにしました。アメリカ人が重要なタスクに取り組んでて凄い!と書いた直後にアセンブラの復習とかシュールなんですけど、まぁ気になったら次に進めないですし仕方ないですね。コードの動作確認は32bitのCentOSで行っています。手元の64bitOSだとググって出てくる情報と色々違うので、面倒でやめました。

Continue reading “Hello GNU Assembler World”

CMakeでiOS用のframeworkを作ってみる

先日カッコいいと書いたBlitzを、頑張ってiOS用にビルドしたという話です。

元々Blitzに限らずC/C++で書かれたライブラリがiOSに対応している事はまれで、あーiOSに対応してたら使いたいのになーというシーンはちょくちょくあります。なんですけど、.frameworkを作ろうとすると.xcodeprojを作ってどうのこうのという話になりがちで、普段Autotoolsでビルドしているソースツリーに特定のしかもプロプリエタリなIDEのプロジェクトファイルを追加するとか、醜すぎて誰もやりたくないわけです。

ところが最近OpenCVがiOS用の.frameworkのアーカイブを別途配布しているのを知りまして、どうやってビルドしてんのかなと見てみると、CMakeで一旦xcodeprojを吐いてから、xcodebuildという流れになっていて、それをPythonスクリプトで纏めて、ワンコマンドで.frameworkが構築出来るようになっていました。

まぁiOS用のCMakeLists.txtは必要だし、結局xcodebuild叩いてるやんとかはあるんですけど、プロジェクトファイルを管理せずに済んでいるので、ソースの構成が変わるたびにプロジェクトファイルを編集するという残念な作業からは解放されているので、なるほどなと思いました。

というわけで、真似してBlitzのソースツリーから.frameworkを作ってみようという話ですね。

Continue reading “CMakeでiOS用のframeworkを作ってみる”

行列計算ライブラリのBlitzのコードがカッコいい件

iOSで行列計算したいなーという事で、ちょろちょろ調べているとBlitzっていうC++のライブラリが見つかったんですけど、すごくカッコよくてビックリしました。

このライブラリ使うと以下のようなノリで行列計算が出来ます。AとBを初期化してる部分がエレガント過ぎますね。

#include <iostream>
#include <blitz/array.h>

using namespace std;
using namespace blitz;

int main(int argc, char** argv) {

    Array<float, 2> A(3,3), B(3,3), C(3,3), D(3, 3);

    A = 1, 0, 0,
        2, 2, 2,
        1, 0, 0;
    
    B = 0, 0, 7,
        0, 8, 0,
        9, 9, 9;

    C = A + B;
    D = A * B;

    cout << "A = " << A << endl
         << "B = " << B << endl
         << "C = " << C << endl
         << "D = " << D << endl;

    return 0;
}

Continue reading “行列計算ライブラリのBlitzのコードがカッコいい件”

画像を特徴色を調べる

ちょっと画像の類似度を使って分類実験したいと思います。

それでどうやって画像の類似度を測ろうかなぁと悩んだのですが、その画像を代表する幾つかの色でパレットを作って、その距離でもって類似度にするのが簡単そうなのでやってみることにしました。

なお画像の特徴色は正式な言葉ではありません。英語だとDominant Colorという単語はあるようですが、対応する日本語はわかりませんでした。この記事ではDominant Colorの意味で特徴色と書きたいと思います。

Continue reading “画像を特徴色を調べる”

TOC13の1Cの2問目 (TheOlympiadInInformatics)

前回は数年ぶりのTopCoderで、コンテスト中にエディタの設定に手間取ったりしたので、今回こそはと思って参加しました。2問解けてまぁ行けたかなと思ってたら、2問目がシステムテストで落ちてて、またダメでした。生きるのが辛いです。

今回間違えた問題がこれです。

問題は人数不明のテスト受験者達が、人数がバラバラのグループに分けられていて、グループ毎の合計点数のみ与えられたときに、自分がK番以内の成績を取るには何点必要かというもの。

Continue reading “TOC13の1Cの2問目 (TheOlympiadInInformatics)”