You are currently browsing the archives for the category: prog

August 3, 2010

gccでのi386とamd64におけるワードアライメントの動作の違い

Linux (Debian lenny)で、メモリダンプとかsocket経由の通信とかを行うラッパライブラリを試験していて、データを突っ込む構造体の中のワードアライメントが(amd64で)思ったのと違っていることに気づいて、少し試験してみた。昔のi386の時代は、4byteごとにアライメント境界が来るからそれにあわせて、という話があったけれど、そうではない様子。 環境はDebian lennyのパッケージそのままで、次のような感じ。 @i386 (32bit) % gcc -v Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure -v –with-pkgversion=’Debian 4.3.2-1.1′ –with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs –enable-languages=c,c++,fortran,objc,obj-c++ –prefix=/usr –enable-shared –with-system-zlib –libexecdir=/usr/lib –without-included-gettext –enable-threads=posix –enable-nls –with-gxx-include-dir=/usr/include/c++/4.3 –program-suffix=-4.3 –enable-clocale=gnu –enable-libstdcxx-debug –enable-objc-gc –enable-mpfr –enable-targets=all –enable-cld –enable-checking=release –build=i486-linux-gnu –host=i486-linux-gnu –target=i486-linux-gnu Thread model: posix gcc version 4.3.2 (Debian 4.3.2-1.1) % uname -a Linux lenny-i386 […]

more...
December 17, 2008

Error on ublas/lu library of boost

First, I’ve wrote some source code, #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/triangular.hpp> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/lu.hpp> #include <boost/numeric/ublas/io.hpp> // calc inverted-matrix ublas::matrix<double> mat_lu(lc_param); ublas::matrix<double> lc_conj; ublas::permutation_matrix<> lu_exc(lc_param.size1()); lc_conj = ublas::identity_matrix<double>(lc_param.size1()); ublas::lu_factorize(mat_lu, lu_exc); ublas::lu_substitute(mat_lu, lu_exc, lc_conj); and gcc 4.1.2 arises error, cc -Wall -Wextra -g -I./ -I../ -o hvltest.o -c hvltest.cc /usr/include/boost/numeric/ublas/lu.hpp: In function ‘typename M::size_type boost::numeric::ublas::lu_factorize(M&, PM&) […]

more...
May 27, 2008

perl-mongers.org

perl使いのためのblogサイトperl-mongers.orgを開設したので何か記事を書け!そして宣伝しろ!といわれたので、ちょっと書いてみました。 なんか、有名な人のポストに混じって空気読めないポストがあるよぉ~状態ですが、なにとぞperl-mongers.orgをよろしくお願いいたします。はい。

more...
May 13, 2008

postfix-ldap @ debian etch

某所のためにldapにアカウント情報を入れたpostfixのセットアップ。転送情報なども全部ldapに入れたいなぁ、と。 debian etchなので、とりあえず、 apt-get install postfix postfix-ldap でソフトを入れて、postfix.schemaを/etc/ldap/schemaに入れて、slapd.confにincludeを追加。main.cfは alias_maps: ldap:/etc/postfix/ldap-aliases.cf を追加。(というか、既存のalias_mapsに追加、か。) 中身は、ldapサーバはlocalhostなので、とりあえずtlsは無しにして server_host = localhost search_base = dc=example,dc=net query_filter = (&(objectClass=mailUser)(uid=%s)) result_attribute = maildrop とする。(ldifではuidをユーザ名として定義している。)ldapの方は、アカウントをldapmodifyで変更で、追加するのは、 mailDrop = account mail = account@example.net objectClass = mailUser とか。objectClassは最後に追加しないと、schemaのMUSTチェックでエラーになるので注意。mailはいらない気もするけど、schemaでMUSTなので。。複数のところにメールを落としたいときは、mailDropを複数入れる。 入れたら、 postmap -q account ldap:/etc/postfix/ldap-aliases.cf でチェックする。設定したmailDropの内容が、カンマ区切りで表示されればok。@無しのものはローカルのメールスプールに、@があるのは転送になる、かな? [修正@2008/05/22] ldap-aliases.cfのquery_filterが間違っていたので訂正。%sが検索文字列に置換されてクエリがldapに投げられるので、uid=%sなどのアカウント名を引ける検索条件でないと動かない。

more...
March 1, 2008

.forward and procmail

forwardとprocmail関係で少しもめた(?)のでメモ。 “|IFS=’ ‘ && exec /usr/bin/procmail -Yf- || exit 75 #username” “|exec /usr/bin/mailfilter | /usr/bin/procmail -Yf- || exit 75” などなどの違いと意味について。以下、smtpdの中身の議論の際は、postfixのみを想定。 1. IFSって何 IFS = Internal Field Separatorの略 bashなどのシェルでの引数展開の際の参照変数(環境変数?)となる。で、変更するとセキュリティー問題を引き起こす、という警告をどこかのマニュアルで見たような。 2. そもそも||とか&&って何 || : 前のコマンドの終了ステータスが0でない(異常終了)のときに実行 && : 前のコマンドの終了ステータスが0のときに実行 ということで、普通のシェルを実行するときのと同じですな。どちみち、forwardを解釈するlocalは、global/pipe_commandに投げるので、fork/execするだけだったりしますが。場所としてはlocal/deliver_command()関数。 3. exit 75は? posix shellでのexitステータスコード75は、EX_TEMPFAILで、一時エラーを意味する。まぁ、もう一度実行したら成功するかもねぇ~、と、呼び出しもとのコマンドにいう、という感じ。 /usr/include/sysexits.h:#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ localでは、投げつけたコマンドからの戻り値などは、global/pipe_commandの最後でPIPE_STAT_*になったものを受け取って判断する、ので、終了ステータスがどう反映されるかは、ここを見る必要がある。 […]

more...
February 21, 2008

Perlパフォーマンス測定

LpSolitがBugzilla->loginのボトルネック測定に-DPref使ってるけど何かいいのない?とかぼやいてたので、Devel::Profilerとか、Benchmarkとかを提案してみる。Benchmarkのほうは、スクリプト全体を突っ込めない(もしくは、shebangに突っ込めない)ので却下だったらしいけど。 LpSolit> “NOTE: If Devel::DProf works for your application then there is no reason to use this module.” LpSolit> taken from the Devel::Profiler docs :) himorin> heh :) LpSolit> oh, I like the bad_pkgs argument LpSolit> very useful to ignore DBI and Template とかゆってたので満足したんでしょう。 もともとは、DPrefだと出力ファイルがtmon.proに固定されているのが不満で、CGI経由で実行毎に違うファイル名で吐いてほしかったらしい。その機能は使ったことはあったので知ってたけど、bad_pkgsとかまではperldocを読んでなかったので、そのうち一度ザーッと見てみることにする。

more...