Lejayの日記

2010-01-13

Macportsでx264のインストールにこける

Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_x264/work/x264-snapshot-20090810-2245" && /usr/bin/make -j1 default " returned error 1

Command output: sh: line 0: cd: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_x264/work/x264-snapshot-20090810-2245: No such file or directory

Error: The following dependencies failed to build: x264

Error: Status 1 encountered during processing.

Before reporting a bug, first run the command again with the -d flag to get complete output.

上記のエラーが出た場合は,Xcodeのバージョンを解決.

2009-12-17

CentOSで,外部から接続が接続できなくなった件

CentOS自宅サーバー構築( http://centossrv.com/ )」の手順に沿って,随分前にセットアップしたサーバーが,急に外部から接続できなくなった.

原因は,iptables

指定された国のIPアドレスからのアクセスを破棄するように設定していたが,そのリストの取得に失敗していた.

http://centossrv.com/iptables.shtml

このページに記載されている,IPLISTGET(){の中で,以下を修正すれば治る.

before:

wget -q http://nami.jp/ipv4bycc/cidr.txt

after:

wget -q http://nami.jp/ipv4bycc/cidr.txt.gz

gunzip cidr.txt.gz

2009-11-13

SPDYについて: 適当なメモ

Googleの提案するアプリケーションプロトコル

HTTPのオーバーライド

[ 目的 ]

・Web上の通信の最適化

 ・Webコンテンツの読み込みを高速化(レイテンシの短縮)

[ 目標 ]

・読み込み時間50%削減

・低い導入コスト

 ・TCPを利用するため,既存ネットワークを変更する必要がない

Webサイト管理者に対して負担をかけない

 ・SPDYは,Webサーバブラウザの実装だけなので,CGIなどには影響を与えない

オープンソースで開発

[ 技術的目標 ]

TCPの1セッションで,複数のHTTPリクエストを同時に受け付ける

HTTPの利用帯域を削減

・実装の容易なプロトコルを提案

SSLを利用

サーバからクライアントへのプッシュ機能

・1つのTCPコネクション上で複数の同時SSL接続

HTTPのGETやPOSTに代わるデータ転送方法

・双方向通信

[ 特徴 ]

・多重化ストリーム(Multiplexed streams)

 ・無制限の同時ストリーム

・リクエスト・プライオリタイゼーション(優先順位付け)(Request prioritization)

 ・混線時に対応

HTTPヘッダ圧縮(HTTP header compression)

サーバプッシュ

 ・クライアントからのリクエストを利用せずに,サーバからクライアントへデータを配信

 ・X-Associated-Content header

サーバヒント

 ・クライアントがロードするであろうデータをサーバからクライアントに提案

 ・但し,サーバからクライアントへのデータ送信は,クライアントからの要求を待機

 ・X-Subresources header

セッションレイヤーSSL上に追加

・単一のTCP接続で複数の相互データストリームを並列処理

・GETとPOST意外に,新たなデータエンコード及び送信フォーマットを提案

[ HTTPとの差違 ]

・SPDYは,HTTPアプリケーションレイヤTCPトランスポートにまたがる感じ

・http://がspdy://になるわけではない

[ HTTPの欠点 ]

・1コネクション x 1リクエスト

 ・HTTP pipeliningを使えば大丈夫だが,それでもFIFOしか扱えない

 ・殆どのブラウザドメイン毎の同時接続数が,2から6へと変更された(2008年)

サーバ側でクライアントの状況を確認する手段がない

・リクエストやレスポンスヘッダーが圧縮されていない

・ヘッダーが冗長すぎる

 ・1回のセッションにも関わらず,同一のヘッダーを複数回要求する可能性がある

 ・User-Agent,Hostなどは,リクエスト毎に変更されることはない

・圧縮データは,HTTPエンコードを利用しないといけない

[ 関連研究 ]

トランスポート層セッション層で,HTTPを高速化する研究

・Stream Control Transmission Protocol (SCTP)

HTTP over SCTP

・Structured Stream Transport (SST)

・MUX and SMUX

[ 現状 ]

・SPDYに対応したChrome,Webサーバプロトタイプを開発

・上記のChromeプロトタイプ公開

 ・Chromehttp://src.chromium.org/viewvc/chrome/trunk/src/net/flip/

・一般の家庭用回線を用いた実験では,人気の上位25サイトからのダウンロードが最大55%高速化

 ・SSLを利用しないTCPでは,27-60%短縮

 ・SSLを利用したTCPでは,39-55%短縮

 ・headerの圧縮による成果

  ・headerは,最大88%削減

  ・response headerは,最大85%

  ・headerの圧縮だけで,375Kbpsの環境でupload時間が45 - 1142ms短縮

・研究所内のテストでは,ページロード時間を64%短縮

・SPDYは,Web高速化プロジェクト(http://code.google.com/speed/)の一環

[ 今後 ]

・SPDYに対応したWebサーバやテストツールを近日公開

コミュニティに公開してフィードバックを取得

・研究所ではなく,一般の状況(回線)で実験が必要

・"an early-stage research project"で,これからさらなる性能査定や評価が必要.

2009-08-19

MacでOpengazerをコンパイル

opengazerの性能はともかく,Macportsライブラリインストールした環境でコンパイルするには,

Makefileを下記に置き換えれば大丈夫.

# required libraries: vxl, opencv, boost, gtkmm

VERSION = opengazer-0.1.2

CPPFLAGS = -Wall -g -O3

#LINKER = -L$(VXLDIR)/lib -L/usr/local/lib -lm -ldl -lvnl -lmvl -lvnl_algo -lvgl -lgthread-2.0 -lnetlib

LINKER = -lm -ldl -lvnl -lnetlib -lmvl -lvnl_algo -lvgl -lgthread-2.0

#LD_LIBRARY_PATH=$(VXLDIR)

# change the following line if your vxl library is installed elsewhere

#INCLUDES = $(foreach prefix,/usr/local/include $(VXLDIR)/include $(VXLDIR)/include/vxl, \

# $(foreach suffix,/core /vcl /contrib/oxl,-I$(prefix)$(suffix)))

INCLUDES = -I{/usr/local/include,/opt/local/include,/opt/local/lib}{,/core,/vcl,/contrib/oxl}

# -I/usr/include/ffmpeg

# -lcv0.9.7 -lhighgui0.9.7

# -lvgui

sources = opengazer.cpp Calibrator.cpp GazeTrackerGtk.cpp HeadTracker.cpp LeastSquares.cpp EyeExtractor.cpp GazeTracker.cpp MainGazeTracker.cpp OutputMethods.cpp PointTracker.cpp FaceDetector.cpp GazeArea.cpp TrackingSystem.cpp GtkStore.cpp Containers.cpp GraphicalPointer.cpp Point.cpp utils.cpp BlinkDetector.cpp FeatureDetector.cpp Alert.cpp

objects = $(patsubst %.cpp,%.o,$(sources))

%.o.depends: %.cpp

# g++ -MM $< > $@

g++ `pkg-config cairomm-1.0 opencv gtkmm-2.4 --cflags` $(INCLUDES) -MM $< > $@

%.o: %.cpp

g++ -c $(CPPFLAGS) -o $@ `pkg-config cairomm-1.0 opencv gtkmm-2.4 --cflags` $(INCLUDES) $<

opengazer: $(objects)

# g++ $(CPPFLAGS) -o $@ `pkg-config cairomm-1.0 opencv gtkmm-2.4 --libs` $(LINKER) $^

g++ $(CPPFLAGS) $(LINKER) $^ -o $@ `pkg-config cairomm-1.0 opencv gtkmm-2.4 --libs`

include $(patsubst %.cpp,%.o.depends,$(sources))

TAGS: always

etags *.cpp *.h

ship: always

mkdir $(VERSION) || rm -fr $(VERSION)/*

cp LICENSE README Makefile calpoints.txt haarcascade_frontalface_alt.xml $$(for file in $$(cat $(addsuffix .depends,$(objects))) ; do test -f $$file && echo $$file ; done | sort -u) $(VERSION)/

tar czf $(VERSION).tar.gz $(VERSION)

cp $(VERSION).tar.gz README /home/ftp/pub/www/opengazer/

.PHONY: always ship

2009-05-06

3桁ずつカンマで桁区切り

http://homepage.mac.com/nanigashi/programing/formatednumberstring.html

[numberFormatter setFormat:@"#,###"];

これを入れないと,うまく動作しなかった.