0

制作中


0

AutoPagerize/LDRizeのmicroformatsを埋め込んだ

wedataにSITEINFOを書くのではなく、wordpress2.7.1のHTMLにmicroformats埋め込んで設定した。
これでインデックスページタグページなどで無限スクロールでjjjjkpjjpjpjkjpoできる

たいへん参考になった:
mixi Engineers’ Blog ? Find Job !がAutoPagerizeとLDRizeに対応


HTMLってひとつのtagに複数classを設定する時は、スペース区切りで列挙できるんですね

■LDRize対応
wp-content/theme/テーマ個別ディレクトリ/ 以下の記事に関わるファイル全部修正し、jk移動に関わる情報を埋め込む

  • 記事1つのコンテナタグに class=”hentry” → スクロールする区切りになる
  • 記事タイトルに class=”entry-title” → pした時に右下に記事タイトルがたまる
  • 記事permalinkに rel=”bookmark” → vやoした時に開くリンク


■AutoPagerize対応
wordpressの関数を修正する。次のページへのリンク要素を指定しておくと、自動で継ぎ足してくれる
参考:WordPress サイトの AutoPagerize 対応 – JACO-BASS
wp-includes/link-template.php を編集
  • function get_previous_posts_link
  • function get_next_posts_link
の最後でreturnしてるaタグ内にそれぞれ rel=”prev”とrel=”next” を追加

autopagerizeの場合、prevはいらないか

pageElementとinsertBeforeは書かなくてもinoveテーマだと動いた


LDRizeのほうはテーマに書けたからいいけど、AutoPagerizeはwordpress本体の関数を修正してるので本体アップデートでリセットされそう。毎回手動で書き直すしかない。

0

最近買った本 – パーソンズ、C++

知識社会学と思想史
知識社会学と思想史
posted with amazlet at 09.03.10
タルコット パーソンズ
学文社
売り上げランキング: 356816
おすすめ度の平均: 5.0
5 知識社会学への批判的視座
まだあんま読んでない。
フランス・ドイツのまとめ本的な感じ



Modern C++ Design—ジェネリック・プログラミングおよびデザイン・パターンを利用するための究極のテンプレート活用術 (C++ In‐Depth Series)
アンドレイ アレキサンドレスク
ピアソンエデュケーション
売り上げランキング: 99561
おすすめ度の平均: 5.0
5 必読
5 文句なしに良書です。しかし内容は難解です
5 テンプレートの威力
5 テンプレート
4 凄いのは分かった。でも、僕には使えません(泣
C++はTemplateがすごい機能らしいから買った



スプーク・カントリー (海外SFノヴェルズ)
ウィリアム・ギブスン
早川書房
売り上げランキング: 3525
以前デンマークのイベントに行った時に、来場者のお兄さんに薦められた本で「GEOハッキングの話」らしいので英語版を買ったんだけど
いつのまにか翻訳されてしまっていて、英日両方持っている状態になった。



Effective C++ 【改訂第2版】      アスキーアジソンウェスレイシリーズ—Ascii Addison Wesley programming series
Scott Meyers
アスキー
売り上げランキング: 198288
おすすめ度の平均: 5.0
5 C++入門書の次に買うべき本
5 C++プログラミングのノウハウが詰まってます
5 動いてる......でも.....
5 漠然たる開発に陥ることのないように
5 C++書籍でもっともためになる本
評判いいけど中古しかなかったので中古で買った。
普通にC言語だいたいやった後でC++に行くにはこれがよさげ



OpenCV プログラミングブック
奈良先端科学技術大学院大学 OpenCVプログラミングブック制作チーム
毎日コミュニケーションズ
売り上げランキング: 5371
おすすめ度の平均: 3.0
3 とっかかりとしてはよい本
4 OpenCVを日本語でまとまって解説した初めての本
2 肩すかし
頭から読めばOpenCVがだいたいわかる。(読むまでただのwebcam顔認識ツールだと思ってた)
Processingの例題とかで出てくるような画像処理に必要な関数は一通り揃っているので組み合わせれば凄い速度で動く。
サンプルコードは、一部分しか掲載されていなくて大事なdefine部分などが抜けていて意味不明になっている事もあるけど
webで探せば琉球大のページなど全文が掲載されているサイトがあり助かる



WAVプログラミング—.NET C#で学ぶ音響処理
北山 洋幸
カットシステム
売り上げランキング: 179506
画像やってたらbyteいじって音声も作りたくなったぞと

0

Flickrのcontactの写真をMediumサイズで全部見る

Pipes: Flickr Auto Feedで新着500件のRSSを作ってGoogle Readerに読み込ませたら快適になった。サムネイルじゃないのでビデオもGoogle Reader内で見れる。


ステキなガジェットを作っている人をかたっぱしからFlickrのコンタクトに加えていたら、いつのまにか100人を超えていて、とんでもない量の新着写真が毎日来るようになった。
たとえば今、2日ぶりに新着を見てみたら656枚の写真があった。


Flickr: From your Contactsを見ると自分のコンタクトのアップロードした写真の一覧があるが、サムネイルなので何がなんだかわからなくて全然駄目。
RSSも出ているけどこれもthumbサイズだし、なぜか新着20件しか取得できないので使い物にならない。普通のFlickrユーザは数十枚まとめてアップロードするので、すぐに新着が流れてしまって取りこぼしてしまう。

本当はこのpipesをLDRで読みたいけど、PipesのRSSをLDRに登録してもPipes自体が重いからなのかFeedが来ない。なのでこれだけはGoogle Readerを使う事にした

—–追記—–
Google Reader Minimalistic for Greasemonkeyを使うと写真が画面に入りきるようになる

0

OpenCVで顔色の悪いアイコン画像をたくさん生成する

OpenCVで、画像の特定領域のHSV(HSB)を増やしたり減らしたりするツール「colortrans」を作った。
コマンドラインからファイル名を渡すと実行できるタイプ。

こんなコマンドでお手軽一発生成できます

colortrans ../data/shokai.jpg result.jpg -30 50 -10 ../data/shokai-mask.bmp


できた画像
face color transition


■ダウンロード
mercurialリポジトリをbitbucketに置いた。
shokai / twitter face color change / overview — bitbucket.org
Ubuntu8.04でビルドしたバイナリもコミットしておいた。OpenCVなので他環境でも同じコードをコンパイルしなおせば実行できるはず。


twitterでriywoさんがアイコンに自分の最近の発言ワードを出しているのを見て、じゃあ自分の顔色を使って何か表現できないかという事で作り始めた。なのでリポジトリ名が twitter face color change になっている
でもまだ何と色を連動させればいいのか決めかねているので、アップローダはまだ書いてない。たぶんtwitterと関係のないリアルワールドの情報の方が面白い。俺の脈拍とかクリエイティブビートとか・・・




■顔だけ色を変える方法
画像認識ではできそうにないので、手動でマスクを作る

イラレでもPhotoshopでもいい。
making mask


元画像と同じサイズで、顔部分だけ黒で描く画像間違えた。顔を白で、顔以外を黒で描くだった
making mask


モノクロ2階調のBMP形式で保存する
making mask
ファイル名はなんでもいい。



できたマスクBMP画像と、今回使うjpeg元画像



■変換する
colortransというUbuntuでビルドしたバイナリがコミットしてあるので、

入力ファイル名 出力ファイル名 Hue Saturation Value マスクファイル名

の順に引数を渡すとできる。

colortrans shokai.jpg result.jpg -30 50 -10 mask.bmp



マスクを指定しないと、画像全体の色を遷移させる事も出来る

colortrans shokai.jpg result.jpg 40 0 0

face color transition
これはこれで何かに使えるかもしれない



■プログラム
MacやWindowsでも、OpenCVをはじめたで書いたとおりビルド環境を作れば使える。
OpenCVは簡単なので、各言語バインディング使うより普通にCで書いた方がいいと思う

colortrans.cpp

#include <stdio.h>
#include <highgui.h>
#include <cv.h>

IplImage *img = NULL;
IplImage *imgMask = NULL;
IplImage *imgHsv, *imgResult, *imgHue, *imgSat, *imgVal;

int main(int argc, char** argv){
  if(argc < 6){
    puts("Put filenames and HSV(HSB) as ARGS");
    puts(" colorchange input output H(int) S(int) V(int) (mask)");
    puts("Usage:");
    puts(" colortrans ../data/shokai.jpg result.jpg -30 50 -10 ../data/shokai-mask.jpg");
    puts(" colortrans ../data/shokai.jpg result.jpg 40 0 0");
    return -1;
  }

  img = cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR);
  if(argc > 6) imgMask = cvLoadImage(argv[6], CV_LOAD_IMAGE_GRAYSCALE);

  imgHsv = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_8U, 3);
  imgResult = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 3);
  imgHue = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 1);
  imgSat = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 1);
  imgVal = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 1);

  cvCvtColor(img, imgHsv, CV_BGR2HSV);
  cvSplit(imgHsv, imgHue, imgSat, imgVal, NULL);
  cvAddS(imgHue, cvScalarAll(atoi(argv[3])), imgHue, imgMask);
  cvAddS(imgSat, cvScalarAll(atoi(argv[4])), imgSat, imgMask);
  cvAddS(imgVal, cvScalarAll(atoi(argv[5])), imgVal, imgMask);
  cvMerge(imgHue, imgSat, imgVal, NULL, imgHsv);
  cvCvtColor(imgHsv, imgResult, CV_HSV2BGR);

  cvSaveImage(argv[2], imgResult);
}