2013年1月31日木曜日

Amazon Elastic Transcoder

AWS、またもや急に発表。

Amazon Elastic Transcoder

音声や動画の変換サービス。
様々な端末で再生することのある場合に必ず必要になる。

http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/introduction.html


痒いところに手が届く。

2013年1月23日水曜日

とうとうサービス開始。AWSの240GBメモリインスタンス

去年ニュースにあった、240GBメモリインスタンス。 

http://www.infoq.com/jp/news/2012/12/aws-big-data

 とうとう利用できるようになったようですね。

 まだ使えるのはUS East (N. Virginia) regionの3つのzoneだけのようですが、 日本でも使えるようになるんでしょうね~。

2013年1月19日土曜日

アフィン変換行列を求めるのに必要な連立方程式をphpで解く

結構めんどくさいんですが、一度書いてやれば使いまわせます。

$pointには0~2までx1→x2、y1→y2という座標点の対応を入れる前提です。


2013年1月17日木曜日

Virtual BoxにCentOS6.3を入れる

VirtualBoxにCentOS6.3を入れて良く使うので必要なリンクをメモ。

1. OSイメージ系

以下のURLは6.3の場合。

OSのネットインストールイメージ
http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.3/isos/x86_64/CentOS-6.3-x86_64-netinstall.iso


HTTPインストールURL
http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.3/os/x86_64/


2. Guest Additions

入れないと実用に耐えられないほど不便。

Guest Additionsインストール用イメージ
http://dlc.sun.com.edgesuite.net/virtualbox/4.2.2/

インストールする前にyumでkernel-develをインストールしておきましょう!

インストールしたら、/usr/src/kernels配下のkernelディレクトリを環境変数KERN_DIRに設定します。


#yum install gcc
#yum install make
#yum install kernel-devel-2.6.32-279.el6.x86_64

# export KERN_DIR=/usr/src/kernels/[kernelディレクトリ]

カーネルのバージョンが違う場合、guest additionsインストール時にエラーになる。
エラーメッセージの中に書かれているカーネルバージョンでもう一度インストールすればOK。

3. 共有フォルダ

ゲストOSのサイズを抑えて作成するには共有フォルダを使います。

自動マウントを設定した共有フォルダは

/media/sf_[設定した共有フォルダ名]

でマウントされます。

2013年1月14日月曜日

SVNでローカルロックが起こった時の対応

SVN UPしたら、ローカルのファイルが何らかのソフトのせいで書き込み禁止になっている場合に、ロックが発生する。
 そのままクリーンコマンドを打ってもエラーになると思うのでその時の対処法。

1.Copy edited items to another location.
2.Delete the folder containing the problem path.
3.Update the containing folder through Subversion.
4.Copy your files back.
5.Commit

 例)たとえばファイルをエディタで開いていたことによるロック。 

エラーになったファイルを別のところへコピーして退避。
そのあと、エラーになっているファイルを削除。
クリーンを念のため行う。
 これでOK。

2013年1月12日土曜日

apacheでデータの送受信量を確認する

データ転送量を見積もるときに使ったのでメモ。

apacheのモジュールとして、以下の2つが必要。

・mod_log_config

・mod_logio

たぶんデフォルトで有効なはず。

次に、httpd.confのLOGFORMATに以下の書式で追加。

%I:リクエストとヘッダを含む、受け取ったバイト数。 0 にはならない。
%O:ヘッダを含む、送信したバイト数。0 にはならない。


最後にhttpdを再起動で完了。


詳しい説明はこちら。

http://httpd.apache.org/docs/2.2/ja/mod/mod_log_config.html

例)

LogFormat "%h %l %u %t \"%r\" %>s %b %O %I \"%{Referer}i\" \"%{User-Agent}i\" %D" combined



AWS プライベートIPを負荷分散できるELB

AWSにはプライベートIPを負荷分散できるELBがある。

http://aws.typepad.com/aws_japan/2012/06/internal-elastic-load-balancers-in-the-virtual-private-cloud.html

つまり、プライベートアドレスのみを割り振ったのEC2インスタンスの負荷分散を行うことが出来る。

設定も簡単で、ELB作成時に

「Create an internal load balancer」のチェックボックスにチェックを入れるだけ

とのこと。


GMOクラウドには同様のバランサが見つからない…。


S3とCloudFrontについて役に立つスレッド

S3とCloudFrontについていい質問をしてくれている人のスレッド


https://forums.aws.amazon.com/message.jspa?messageID=325095


後、課金される場合分けがわかりやすいのが以下。

http://d.hatena.ne.jp/tune34/20090210/1234209209

レートが今と異なるので、そこは計算する必要があるけど場合分けの参考に出来る。


putty ダウンロードページ

puttyのダウンロードページ

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

ec2のチュートリアルで使ってる。

※でもteratermでpemが使えるのでそっちが速いです。


AWS入門記事一覧

AWSを使い始めるにあたって便利な入門書一覧。

まずはEC2インスタンスを使い始めるには以下のEC2入門。

http://aws.amazon.com/jp/documentation/ec2/


日通り終わったら、以下のリンクから次のステップを目的に合わせて選択する。

http://docs.amazonwebservices.com/ja_jp/AWSEC2/latest/GettingStartedGuide/WhereGoFromHere.html


VPCについて。


http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/GettingStartedGuide/GetStarted.html


ロードバランサ(ELB)について。

http://docs.aws.amazon.com/ja_jp/ElasticLoadBalancing/latest/DeveloperGuide/Welcome.html


CroudFrontについて。

http://codenote.net/amazon/cloudfront/1453.html


s3が以下。

http://aws.amazon.com/jp/documentation/s3/


これで大体基本的なところは抑えられそう。
日本語ドキュメントのリンクがあったりなかったりなのでちょっと面倒。



OpenCVで画像をぼかす。その他フィルタリングする。

以下は、LinuxのOpenCV環境ですぐに試せそう。やってみよう。

http://opencv.jp/sample/filter_and_color_conversion.html

・ぼかす(平滑化)
・境界線
・閾値処理
・2値化


CentOS6.3にOpenCV2.4.3をソースから入れてEclipseで動かす

○ライブラリのインストール

yum install cmake
yum install gcc
yum insatll gcc-c++
yum install gtk2-devel
yum install libjpeg-devel
yum install libtiff-devel
yum install jasper-devel
yum install libpng-devel
yum install zlib-devel
yum install pcre-devel

# v4L2(カメラデバイスを使う場合にいれましょう)
yum install v4l2*
yum install totem
yum install xine
yum install unicap-devel
yum install autoconf

# swig
cd /[ソフトダウンロード用の好きなディレクトリに]
wget http://sourceforge.net/projects/swig/files/swig/swig-2.0.9/swig-2.0.9.tar.gz
tar -xvzof swig-2.0.9.tar.gz
cd swig-2.0.9
./configure
make
make install


※説明
・gtk2 http://ja.wikipedia.org/wiki/GTK+ gui ライブラリ
・swig http://ja.wikipedia.org/wiki/SWIG C/C++で書かれたライブラリをスクリプト言語やJavaなどの言語に接続するためのツール

○OpenCVのインストール
sourceforgeからopenCVを取得して、展開する。
(今回は2.4.3のtar.bz2ファイル)

cd /[ソフトダウンロード用の好きなディレクトリに]
cd OpenCV-2.4.3
cmake -DBUILD_DOCS=ON -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=RELEASE -DWITH_TBB=ON -DINSTALL_C_EXAMPLES=ON -DWITH_CUDA=OFF -DWITH_OPENNI=ON -DWITH_UNICAP=ON -DWITH_V4L=ON -DWITH_XINE=ON .
make
make install
ldconfig

これで、/usr/local/include/opencv及び/usr/local/include/opencv2にインストールされ、ライブライが/usr/local/libに入った状態。


○Eclipseの設定
C++の開発環境(CDT)が入っているのが前提。
プロジェクトのプロパティの設定を行ってコンパイル&実行可能にする。

「C/C++ Build」-「Setting」に移動。

「GCC C++ Compiler」-「includes」に以下を追加。
・/usr/local/include/opencv
・/usr/local/include/opencv2

「GCC C++ Linker」-「Libraries」に以下を追加。
Librariesに
・opencv_core
・opencv_highgui
・opencv_imgproc
・…用途によって減らしたら増やしたりしましょう。



Library search pathに
・/usr/local/lib

これでコンパイルは可能。
後は実行時のパスを追加。

デバッグセッティングのEnvironmentに以下を追加

LD_LIBRARY_PATH = /usr/local/lib


以上でEclipse上でOpenCVを実行可能です。



OpenCV2.4.3 ラプラシアンフィルタをかける

OpenCV2.4.3でラプラシアンフィルタをかけるサンプル

Linuxコマンド 権限情報などそのままコピー

権限情報とかそのままコピーしたいことが結構あるんですが、毎回調べてるのでメモ。
以下でOK。

cp -pR [バックアップファイル or ディレクトリ] [バックアップ先]


ちなみにシンボリックリンクもそのままコピーされます。


【PHP】複数座標点の外接矩形から中心点を求める

与えられた複数座標に外接する矩形の中心点を求める。
選択した点の大体の中心を求める時に使う。

  public static function getCenterCoordinate($coordinates){
    // 初期化
    $max_x_value = $coordinates[0]['x'];
    $min_x_value = $coordinates[0]['x'];
    $max_y_value = $coordinates[0]['y'];
    $min_y_value = $coordinates[0]['y'];

    // 座標点を含む矩形の中点を作成して返す
    foreach($coordinates as $coordinate){
      if($coordinate['x'] < $min_x_value){
        $min_x_value = $coordinate['x'];
      }
      if($coordinate['y'] < $min_y_value){
        $min_y_value = $coordinate['y'];
      }
      if($coordinate['x'] > $max_x_value){
        $max_x_value = $coordinate['x'];
      }
      if($coordinate['y'] > $max_y_value){
        $max_y_value = $coordinate['y'];
      }
    }
    $center_value = array();
    $center_value['x'] = ($max_x_value + $min_x_value) / 2;
    $center_value['y'] = ($max_y_value + $min_y_value) / 2;

    return $center_value;
  }

もっとちゃんと中心をもとめたい場合は回転を考慮する。