投稿

3月, 2006の投稿を表示しています

glibc: version or release

glibc には gnu_get_libc_version()、gnu_get_libc_release() という関数がり、現在のバージョンを取得できる。 glibc-2.4 で試すとこんな感じになるはず。 gnu_get_libc_version: 2.4 gnu_get_libc_release: development

Perl メモ: CPANのアップデート

古くなっているモジュールの一覧の表示 perl -MCPAN -e 'CPAN::Shell->r' 古くなっているのを一括してアップデート perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'

Mac MSN Messenger: 5.1

Mac版MSNメッセンジャーの最新バージョンが公開されています。 ダウンロードはいつものとこからしませう。

C : エンディアン判定

タイトル通り。 エンディアンの判定なんぞをやってみませう。 C言語或はコンパイラに依存します。 #include <stdio.h> #include <stdint.h> typedef union { int32_t i; int8_t  c[4]; } endian; int main() { endian endn = { .i = 1, }; printf("%s\n", ((endn.c[3] == 1)?"big":"little")); return 1; }

C : 友達に教えていた時

友人にプログラムを教えていた時、 #include <stdio.h> char list[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int main(){ unsigned int a = 363546000; int b, i, j; int c = sizeof(int) * 8; int flg = 0; for(i = c - 4;i >= 0;i -= 4){ b = (a >> i) & 0x0f; if(flg == 0 && b < 1){ continue; } flg++; printf("%c", list[b]); } /* for(i = 4;i <= c;i += 4){ b = (a >> (c - i)) & 0x0f; if(flg == 0 && b < 1){ continue; } flg++; printf("%c", list[b]); } */ return 1; } すっごく変な気分になりましたとさ(ぉ

C: ビッグな人向けかも

ビッグな人向け。 リトルな人には少し使い難いもの。 #include <stdio.h> #include <stdint.h> typedef union { int32_t a; char b[4]; } sInt2Str; int main() { sInt2Str a; a.a = 0; /* 初期化 */ a.b[0] = 'a'; a.b[1] = 'b'; a.b[2] = 'c'; printf("1:0x%X\n", a.a); switch(a.a) { case 0x61626300:/* ビッグな人 */ printf("2:%s\n", a.b); printf("3:ビッグ\n"); break; case 0x00636261:/* リトルな人 */ printf("2:%s\n", a.b); printf("3:リトル\n"); break; default: break; } a.a += 0x00010200; printf("4:0x%X\n", a.a); printf("5:%s\n", a.b); a.b[2] = 'a'; printf("6:0x%X\n", a.a); printf("7:%s\n", a.b); return 1; }

C: 何となくやってみた。

以下をGCCでコンパイル。 通った・・・ しかも、エラー無しで動く・・・ コンパイラの型チェックとか意味ない。。。 危険過ぎる。。。 #include <stdio.h> int aaa(int a, int b){ return a + b; } int main(){ void *(*a)() = (void*)aaa; printf("%d\n", a); printf("%d\n", (int)a(10) ); printf("%d\n", (int)a(10, 10) ); printf("%d\n", (int)a(10, 10, 10) ); return 1; } --環境-- Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. >gcc -v Reading specs from C:/Program  Files/GNU/MinGW/bin/../lib/gcc/mingw32/3.4.2/specs Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable -languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug Thread model: win

Mac mi: ことえり用簡易チェック

ことえり用の簡易チェックです。 正規表現にチェックを入れてから使いましょう形式がおかしければその行が選択されます。 ^(?!("[^"]*?","[^"]*?","[^"]*?")) 問題は、 " が認識させたい文字列に入っていると引っかかってしまうところです。 その辺は工夫しましょう。

Perl: ちょっとだけ有用なスクリプト

ちょっと役立つスクリプト my $lastTabOffset= 0; my $tabSize = 4; my $spaceCount; $line =~ s{([^\t]*)\t}{ $lastTabOffset += length( $1 ); $spaceCount = $tabSize - $lastTabOffset % $tabSize; $lastTabOffset += $spaceCount; $1 . ( ' ' x $spaceCount ) }eg; これを考えた2chの中の人は暇だったのかな。

Perl SQLite: 3

前回の続き。 -- test2.pl #!/usr/bin/perl use DBI; # SQLiteでデータを保存するファイル。 # データベース名となる。 $dbfile = 'dbfile'; # 接続 $dbh = DBI->connect( 'dbi:SQLite:'.$dbfile, "", "", { AutoCommit => 0, # 毎回自動的にCommit(有:1 無:0) RaiseError => 1, # 例外発生の有無(有:1 無:0) PrintError => 1 # 警告生成(有:1 無:0) } ); # ここまではほぼ一緒 if(!$dbh) { # エラー処理。 # ハンドルが作成出来なかった時の動作を書く。 # データベースへのアクセスが出来ない等が考えられるので、終了するほうが良いかも。 # print "error\n"; # exit; # とか。 } else { # エラーが無かった時の処理。 # テストだけなら # print "success\n"; # exit; # とか。 } eval { # 実際にSQLを動かしてみる $sth = $dbh->prepare('begin;'); # 互換性を追求するならあったほうが良いのかもしれない。 $sth = $dbh->prepare( # SQL # SQLiteでは型指定は要らないが、互換性のために書いておくと良い。 'CREATE TABLE test_table (' .'id INTEGER PRIMARY KEY,' .'data1 INTEGER,' .'data2 TEXT' .');' ); $sth->execute; }; # ;を忘れないこと if($@) { # クエリに問題があったときどうするか。 # この場合はすでにテーブルが存在していそうだから、ロー

Perl SQLite: 2

前回の続き。 インストールが終わったら実際に使ってみませう。 -- test.pl #!/usr/bin/perl use DBI; # SQLiteでデータを保存するファイル。 #データベース名となる。 $dbfile = 'dbfile'; $dbh = DBI->connect( qq/dbi:SQLite:$dbfile/, "", "", { AutoCommit => 0, RaiseError => 0, PrintError => 0 } ); __END__ -- test.pl とりあえず、これでデータベースへのハンドルが取得出来る。 AutoCommit => 1 これは、毎回自動的にコミットを使用することを指定している。 AutoCommitを明示的に使用しない場合は、 AutoCommit => 0 とすること。 RaiseError => 0 これは、例外を発生するかどうかを指定している。 例外を扱いたい場合は、 RaiseError => 1 とすること。 PrintError => 0 これは、エラーコードを返すことに加えて、warnを使用して警告を生成するように強制しないようにしている。 警告を生成する場合は、 PrintError => 1 とすること。 SQLiteの真価はトランザクションを使用すると発揮されるので、トランザクションを使用するほうが良い。

Perl SQLite: 1

某所で公開してた奴だけど、こっちでも公開してみる。 SQLiteを導入しようとする人向けです。 SQLiteって何?という人はぐぐりましょう。 まずはインストールから。 Windowsな人は ppm >search DBD-SQLite の後リストが出るのでその中から >install DBD-SQLite と選択するか >install 1 とかでリストに表示されている番号を選択。 或は、SQLite以降を指定すると名前の重複を避けれるので、 ppm >install DBD-SQLite2 とか。 モジュールをダウンロードして~って場合は、解凍後に ppm install DBD-SQLite.ppd とか。 Unix系の人は cpan > install DBD::SQLite とか CPANからモジュールをダウンロードしてきたのなら、解凍後に、 perl Makefile.PL make make test make install とかになるかな。 SQLiteはパブリックドメインなので、ほとんどの環境で問題なくインストールが可能。

Googleなのに・・・

GoogleのBlogのはず何だけど、外部に置けるらしいのでテストも兼ねてやってみた。 設定も簡単だったし、良い感じかも。 容量もそれほど気にしなくても良さそうだし、今後もこのまま使い続ける予定。 星虫にするかどうかは未定。

目標

目標は、月に1回以上更新 。 元々日記を書くのが無理な性格をしているので、かなり抵抗がありますが、メールチェックのついでに更新が出来ると良いなぁという感じでやります。 ・・・ まぁ多くても月に数度しかメールチェックしていないという状況を脱することが出来たらもっと頻度が上がるかも。 まぁ友人もblog始めたことだし、ついでにいろいろ書いちゃおうかとか思ってます。 さて、誰にも言わないブログに、誰か来るのだろうか。