メイリオ
実はメイリオまだ進化中! 誕生秘話を河野氏に聞いた ? @IT たくさんはてブされてる記事なので読んだ人も多いかもしれませんがこれは熟読すべき! 河野氏は熱い人だなぁ。一文字へのこだわりがすごい。 Wikipediaの項目もなんだか熱い気がする。。(メイリオ – Wikipedia) 社内プレゼンで使うフォントはメイリオにしよう。 あと、Windows 7には Meiryo UI が入っているので要確認。 ・関連記事 XPでも「メイリオ」が正式利用可能に
Web関連技術の話など
libeventを使ったhello, world的な小さなプログラム。 (libeventはmemcachedやThriftなどでも利用されているイベント通知API) ・ファイルが更新されたら内容を表示する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #include <event.h> #define BUF 256 void callback(int fd, short event, void* arg); int main(int argc, char** argv) { int fd; struct event ev; if((fd = open(argv[1], O_RDONLY)) == -1) { perror("open"); return -1; } event_init(); event_set(&ev, fd, EV_READ | EV_PERSIST, callback, &ev); event_add(&ev, NULL); event_dispatch(); return 0; } void callback(int fd, short event, void* arg) { char buf[BUF]; int len; // event_add((struct event*)arg, NULL); if((len = read(fd, buf, sizeof(buf) - 1)) == -1) { perror("read"); return; } buf[len] = '\0'; printf("%s", buf); } |
event_set 関数で EV_PERSIST を指定すると、イベント通知を継続して受け取ります。 これを指定しない場合は、コールバック関数内で再度 event_add 関数を呼び出す必要があります。 また、登録したイベント…
新年あけましておめでとうございます。 今年も思いっきり走り抜けたいと思います! Webエンジニアとしても学びたいことはたくさん。 今年の目標としては、 KVS(Key-Value Store)について深く学ぶ モダンPerlなコードを書く システム運用(トラフィックの監視、負荷分散など)を学ぶ 一つめはKey-Value Store。 僕が一番最初に担当した案件からKVSを利用したメディア配信系のシステムだったりして、 全社的にNoSQLへの流れが強くなっています。 業界全体としても大規模なWe…
同期のブログもみんな振り返りをやってるので僕も今年1年を簡単に振り返ってみます。 —— 大学院修了 無事に大学院を修了する。M1の時は正直まったく研究をしておらず、TAとかパン屋のバイトでお金を稼ぐ日々だったが、M2になってからは姿勢を改めて真面目に研究をしていた。学部生向けに画像処理の基礎をwikiにまとめたり、みんなが好きな環境で研究(開発)できるように環境整備したりと雑務もそれなりに忙しかったが、研究室の良い後輩達に恵まれて充実していたと思う。 就職 Web業界に身…
HTML5のcanvasを使って簡単な画像処理をやってみます。 試してみたのは基本的な畳み込みフィルタ。 今回はAS3のConvolutionFilter風のインタフェースで作りました。 Demo: HTML5 Image Processing (Convolution Filter) 汎用的に作ろうとすると少し時間がかかりそうだったので、ひとまず畳み込みフィルタの部分だけ。 引数はAS3のものよりずっと少なく、matrix, divisor, bias の3つ。 matrixXやmatrixY…
FITC Tokyo 2009 に参加してきました。 どのセッションも聞き応えがあり良い刺激になりました。 個人的にはNVIDIAさんの話を興味深く聞かせていただきました。 ランチをゆっくり食べ過ぎたせいで途中からしか聞けませんでしたが、内容としては Tegra用に最適化されたFlash Playerでは、H.264ビデオの再生などを行うときにTegraのアクセラレーション機能を利用でき、しかも省電力! OpenGL ES関連 (企業ブースではARのシューティングゲームを展示してた) OpenC…
前回に引き続き、cv::Matクラスについて。 今回は行列演算に関する機能を使います。 上記のシンプルな連立一次方程式を cv::Mat クラスの機能を使って解いてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 係数行列 A float dataA[][3] = { {1.0, -2.0, 3.0}, {3.0, 1.0, -5.0}, {-2.0, 6.0, -9.0} }; // 行列 B float dataB[] = {1.0, -4.0, -2.0}; Mat matA(3, 3, CV_32FC1, dataA); Mat matB(3, 1, CV_32FC1, dataB); Mat matX(3, 1, CV_32FC1); // AX = B を解く. 両辺にAの逆行列を前掛けする matX = matA.inv()*matB; MatConstIterator_<float> iter = matX.begin<float>(); while(iter != matX.end<float>()) printf("%.1f\n", *iter++); |
? 出力結果
1 2 3 |
1.0 // x 3.0 // y 2.0 // z |
CvMatでは cvmInvert -> cvmMul と関数を順番に呼び出さないといけないところを、 cv::Matなら matX = matA.inv()*matB のように直…