2012年2月12日日曜日

postfix メモ

久しぶりにpostfixでハマったのでメモ

> mechanismを設定していても
smtp_sasl_mechanism_filter = plain,login

> このようなエラーが出て送信できない
status=deferred (SASL authentication failed;
cannot authenticate to server smtp.hogehoge.com: no mechanism available)

>ふと思い出してsasl-plainが足りなかったのでインストール
yum install cyrus-sasl-plain.x86_64 cyrus-sasl-md5.x86_64

なおmechanismを調べるにはEHLOを送信すると応答が帰ってくる
$ telnet smtp.hogehoge.com 587
EHLO kickitout.net
250-smtp.hogehoge
250-PIPELINING
250-SIZE 20971520
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN CRAM-MD5
250-AUTH=PLAIN LOGIN CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

2011年12月27日火曜日

mysql-cluster ndb_mgmd 2台構成

サーバ2台でndb_mgmd, ndbd, mysqlを動かした際のメモ

 sv1      sv2
+----------+ +----------+
| ndb_mgmd | | ndb_mgmd |
|  ndbd  | |  ndbd  |
|  mysql | |  mysql |
+----------+ +----------+

*****************************************************

// sv1, sv2共通
# vi /var/lib/mysql-cluster/config.ini

-----------------------------------------------------
# Example Ndbcluster storage engine config file.
#
[ndbd default]
NoOfReplicas= 2
ServerPort = 63132
MaxNoOfConcurrentOperations= 10000
# DataMemory= 1G
# IndexMemory= 64M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512

[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster

[ndb_mgmd]
Id = 1
HostName = sv1.kickitout.net

[ndb_mgmd]
Id = 2
HostName = sv2.kickitout.net

[ndbd]
Id = 11
HostName = sv1.kickitout.net

[ndbd]
Id = 12
HostName = sv2.kickitout.net

[mysqld]
Id = 21
HostName = sv1.kickitout.net

[mysqld]
Id = 22
HostName = sv2.kickitout.net

# choose an unused port number
# in this configuration 63132, 63133, and 63134
# will be used
[tcp default]
PortNumber= 63132
-----------------------------------------------------


// sv1 抜粋
# vi /etc/my.cnf

-----------------------------------------------------
[mysql_cluster]
ndb-connectstring = sv1.kickitout.net

[mysqld]
ndbcluster
ndb-connectstring = sv1.kickitout.net

[ndb_mgmd]
config_file=/var/lib/mysql-cluster/config.ini
-----------------------------------------------------


// sv2 抜粋
# vi /etc/my.cnf

-----------------------------------------------------
[mysql_cluster]
ndb-connectstring = sv2.kickitout.net

[mysqld]
ndbcluster
ndb-connectstring = sv2.kickitout.net

[ndb_mgmd]
config_file=/var/lib/mysql-cluster/config.ini
-----------------------------------------------------


*****************************************************

あとはiptablesで該当ポート1186,63132を開けておく
(忘れていてこれにはまった)

起動はndb_mgmd(sv1,sv2) -> ndbd(sv1,sv2) -> mysql(sv1,sv2)で順に行う

2011年12月14日水曜日

gitメモ

git config --add receive.denyCurrentBranch ignore

jsvcメモ

jsvcを必要とする機会があったのでその際のインストールメモ

//最初にopenjdkを準備
# yum install java-1.6.0-openjdk.x86_64 java-1.6.0-openjdk-devel.x86_64

$ wget http://ftp.riken.jp/net/apache//commons/daemon/source/commons-daemon-1.0.8-src.tar.gz
$ tar xzf commons-daemon-1.0.8-src.tar.gz
$ cd commons-daemon-1.0.8-src/src/native/unix/
//configure作成(既にあるけど)
$ ./support/buildconf.sh

//configure
$ CC=gcc44 CXX=g++44 \
CFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mmmx -mfpmath=sse -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mmmx -mfpmath=sse -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2" \
./configure \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--cache-file=./config.cache \
--with-libdir=lib64 \
--with-java=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/

$ make -j4

//同じ場所にjsvcが作成されるので利用する

2011年11月14日月曜日

D-ITG インストールメモ

訳あってD-ITGを入れる必要があったのでその際のメモ

$ wget http://www.grid.unina.it/software/ITG/codice/D-ITG-2.7.0-Beta2.tgz

$ tar xvf D-ITG-2.7.0-Beta2.tgz

$ CC="gcc" \
GCC="gcc" \
CXX="g++" \
CFLAGS="-march=native -O2 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O2 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CPPFLAGS=-I/usr/lib/x86_64-redhat-linux5E/include \
make

//stropts.hが無いといわれたら…

# yum provides */stropts.h
# yum install compat-glibc-headers-2.5-46.2.x86_64


CPPFLAGS=-I/usr/lib/x86_64-redhat-linux5E/include
を追加して再度makeする

2011年10月12日水曜日

AMFフォーマットからPHPで値を抜き出す方法

AMFファイルから必要な値だけ出す方法がなかなか見つからなかったので調べてみた
Zend FrameworkにはZend_Amfがあり、この中にAMFフォーマットを処理する部分があることを
睨んで調べてみたら簡単にできた

これでUstreamのamfが読めるようになった

$url = "http://cdngw.ustream.tv/Viewer/getStream/1/7811835.amf";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$result = curl_exec( $ch );
curl_close($ch);

$request = new Zend_Amf_Request();
$request->initialize($result);
var_dump($request->getAmfBodies());

後はdump結果から欲しい値のキーを探して取得するだけ

2011年9月27日火曜日

Ustream Liveの録画メモ

HINATABOCCOを録画した際に、(一部)うまく行ったのをメモ
・CDN(LimeLight)利用時なのでほかは不明
・rtmpdumpを利用
・解析はStreamTransportを利用
(StreamTransport自体はダウンロードできなかった)
・帯域が安定している自宅Linuxサーバより遠隔でダウンロード実施

rtmpdump -v -r "rtmp://ustreamvip.fc.llnwd.net:1935/ustreamvip/ustreamvip_llnw_live_1_76452776" \
-s "http://cdn1.ustream.tv/swf/4/viewer.381.swf" \
-p "http://www.ustream.tv/channel/hinatabocco1" \
-o HINATABOCCO5.flv

これで録画は可能

-rにはStreamのURL(StreamTransportで解析可能)
-sにはPlayerUrl(不要?)
-pには視聴していたchannelURL(不要?)

あとはnohupしておくべきだったと後悔
(この後PCが切断→SSHセッション断→dump失敗に)

----------------------------------------
[チラシの裏]
これうまく使って録画サーバできないかな…
・外出先等でUstLiveが見たくても見れない時に
 後から録画
・でも著作権の保護観点から予約した人しか見れない
・同じ番組を予約した人がいたら、一番最初の人が予約した動画を共有
・できれば友人間だけは録画した動画を共有
 (URLで共有するとか)
・一週間ほどで削除

・同じチャンネルでも時間によって放送してたり、StreamURLが変わったりする
 どうやってそれを監視するか

結構Ustreamのみたい番組が多いのだが、
忘れてたりそもそも見れる環境じゃない(場所or勤務中)だとすごく困る
ソフトを使うにしても自宅のPCじゃないといけないので、
なんとか外出先からも録画できるといいなと思う