2010年10月09日
2010年09月24日
octave (3.2.4-3) + database (1.0.4)
octave (3.2.4-3) + database (1.0.4)をインストールしたときのメモ
ことの始まりは、以下のエラー
「vi +6904 sqlite3_wrap.cpp」で
誤 result = (int)sqlite3_auto_extension(arg1);
訂 result = (int)sqlite3_auto_extension((void(*)())arg1);
そして、はたまたエラー。
以下のサイトの情報によると
どうやらsqlite3をソースからコンパイルする必要があるようだ。
http://www.mail-archive.com/octave-dev@lists.sourceforge.net/msg00765.html
で、ソースからのコンパイル方法を確認。
vi /usr/share/doc/Cygwin/sqlite3.README
そこで sqlite3-3.6.21-3.cygport に以下の行を追加して、
変更前:CYGCONF_ARGS="CC=gcc-4 CXX=g++-4"
変更後:CYGCONF_ARGS="CC=gcc-4 CXX=g++-4 CPPFLAGS=-DSQLITE_ENABLE_COLUMN_METADATA"
cd /usr/src
cygport ./sqlite3-3.6.21-3.cygport all
#cygport ./sqlite3-3.6.21-3.cygport prep (ビルドディレクトリ作成、ソース展開、パッチ適用)
#cygport ./sqlite3-3.6.21-3.cygport compile (ビルド)
#cygport ./sqlite3-3.6.21-3.cygport test (テスト)
#cygport ./sqlite3-3.6.21-3.cygport install (インストール)
tar jxvf sqlite3-3.6.21-3.tar.bz2 -C /
tar jxvf libsqlite3_0-3.6.21-3.tar.bz2 -C /
tar jxvf libsqlite3-devel-3.6.21-3.tar.bz2 -C /
ことの始まりは、以下のエラー
g++-4 -c -I/usr/include/octave-3.2.4 -I/usr/include/octave-3.2.4/octave -mieee-fp -I/usr/include/freetype2 -pipe -DHAVE_OCTAVE_32 sqlite3_wrap.cpp -o sqlite3_wrap.o
sqlite3_wrap.cpp: In function 'octave_value_list _wrap_sqlite3_auto_extension(const octave_value_list&, int)':
sqlite3_wrap.cpp:6904: error: invalid conversion from 'void*' to 'void (*)()'
sqlite3_wrap.cpp:6904: error: initializing argument 1 of 'int sqlite3_auto_extension(void (*)())'
「vi +6904 sqlite3_wrap.cpp」で
誤 result = (int)sqlite3_auto_extension(arg1);
訂 result = (int)sqlite3_auto_extension((void(*)())arg1);
そして、はたまたエラー。
make[1]: Entering directory `/tmp/database-1.0.4/src'
CXXFLAGS="-pipe" mkoctfile -DHAVE_OCTAVE_32 -v -o sqlite3.oct sqlite3_wrap.cpp -lsqlite3
g++-4 -c -I/usr/include/octave-3.2.4 -I/usr/include/octave-3.2.4/octave -mieee-fp -I/usr/include/freetype2 -pipe -DHAVE_OCTAVE_32 sqlite3_wrap.cpp -o sqlite3_wrap.o
g++-4 -shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -o sqlite3.oct sqlite3_wrap.o -lsqlite3 -L/usr/lib/octave-3.2.4 -loctinterp -loctave -lcruft -llapack -lblas -lfftw3 -lfftw3f -lreadline -lncurses -ldl -lwsock32 -lhdf5 -lz -lm -lwsock32 -L/usr/lib/gcc/i686-pc-cygwin/4.3.4 -L/usr/lib/gcc/i686-pc-cygwin/4.3.4/../../.. -lhdf5 -lz -lm -lgfortranbegin -lgfortran -lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32
sqlite3_wrap.o:sqlite3_wrap.cpp:(.text+0x1fdab): undefined reference to `_sqlite3_table_column_metadata'
sqlite3_wrap.o:sqlite3_wrap.cpp:(.text+0x2d318): undefined reference to `_sqlite3_column_origin_name16'
sqlite3_wrap.o:sqlite3_wrap.cpp:(.text+0x2d618): undefined reference to `_sqlite3_column_origin_name'
sqlite3_wrap.o:sqlite3_wrap.cpp:(.text+0x2d907): undefined reference to `_sqlite3_column_table_name16'
sqlite3_wrap.o:sqlite3_wrap.cpp:(.text+0x2dc07): undefined reference to `_sqlite3_column_table_name'
sqlite3_wrap.o:sqlite3_wrap.cpp:(.text+0x2def6): undefined reference to `_sqlite3_column_database_name16'
sqlite3_wrap.o:sqlite3_wrap.cpp:(.text+0x2e1f6): undefined reference to `_sqlite3_column_database_name'
collect2: ld returned 1 exit status
make[1]: *** [sqlite3.oct] Error 1
make[1]: Leaving directory `/tmp/database-1.0.4/src'
make: *** [build] Error 2
以下のサイトの情報によると
どうやらsqlite3をソースからコンパイルする必要があるようだ。
http://www.mail-archive.com/octave-dev@lists.sourceforge.net/msg00765.html
で、ソースからのコンパイル方法を確認。
vi /usr/share/doc/Cygwin/sqlite3.README
そこで sqlite3-3.6.21-3.cygport に以下の行を追加して、
変更前:CYGCONF_ARGS="CC=gcc-4 CXX=g++-4"
変更後:CYGCONF_ARGS="CC=gcc-4 CXX=g++-4 CPPFLAGS=-DSQLITE_ENABLE_COLUMN_METADATA"
cd /usr/src
cygport ./sqlite3-3.6.21-3.cygport all
#cygport ./sqlite3-3.6.21-3.cygport prep (ビルドディレクトリ作成、ソース展開、パッチ適用)
#cygport ./sqlite3-3.6.21-3.cygport compile (ビルド)
#cygport ./sqlite3-3.6.21-3.cygport test (テスト)
#cygport ./sqlite3-3.6.21-3.cygport install (インストール)
tar jxvf sqlite3-3.6.21-3.tar.bz2 -C /
tar jxvf libsqlite3_0-3.6.21-3.tar.bz2 -C /
tar jxvf libsqlite3-devel-3.6.21-3.tar.bz2 -C /
Posted by kanedayo at
04:21
2010年09月20日
SQLite ゼロ詰め2桁
date("2010-12-1")
のように書くと日付として認識してくれない。涙
どうやら「”2010-12-01"」のようにゼロ詰め二桁にそろえないといけないみたい。
ということで、以下のように書き換え。
LPAD()関数や、RIGHT()関数があるともっとスマートにかけるようだけど。
見当たらない。
select date(
year||"-"
||substr("0"||month,length(month),3)||"-"
||substr("0"||day,length(day),3)) as YMD
from table
where YMD > date("2005-12-01");
こんな感じがきれいかな。
select
date( year||"-"
||substr("0"||month,-2,2)||"-"
||substr("0"||day,-2,2)) as YMD
from table
where YMD
between date("2005-01-01")
and date("2005-02-01");
Posted by kanedayo at
22:32
2010年09月20日
SQLite3
cygwinにSQLite3をインストールして、
PerlからDBIで操作することができるようになりました。
でも、何行取り出せたのか調べることができません。
なので、for文を使ってダンプすることができないようです。
ひとまず、
こんな感じで、OKでした。
参考URL:
http://www.tuyudaku.net/sqlite/start.html
http://d.hatena.ne.jp/perlcodesample/20091121/1246679588
PerlからDBIで操作することができるようになりました。
でも、何行取り出せたのか調べることができません。
$st = $db->prepare("select * from tb;");
$st->execute;
print "num_rows=$st->rows\n"; # 常に「0」なぜ??
なので、for文を使ってダンプすることができないようです。
for( my$i=0; $i<$num_rows;$i++ ) {
my @res = $st->fetchrow_array;
print join(", ",@res), "\n";
}
ひとまず、
while( my @res = $st->fetchrow_array ) {
print join(", ",@res), "\n";
}
こんな感じで、OKでした。
参考URL:
http://www.tuyudaku.net/sqlite/start.html
http://d.hatena.ne.jp/perlcodesample/20091121/1246679588
Posted by kanedayo at
16:34
2010年09月15日
SFN
http://ja.broadcom.com/support/ethernet_nic/netlink_k57.php
http://social.answers.microsoft.com/Forums/ja-JP/ieja/thread/c163dff6-22d9-4522-b683-dbcf5e39a831
http://www.monyo.com/technical/windows/41.html
http://www.akakagemaru.info/port/windows7ipv6.html
http://netserc.blog63.fc2.com/blog-entry-231.html
Posted by kanedayo at
20:19

