C言語でOS判定

こんなのでできてしまう。

ircdのソースを参考にコーディング。

# cat c/os_chk.c
#include<stdio.h>

int main()
{

    #if(defined(__NetBSD__))
    {
        printf("NetBSD\n");
    }
    #elif(defined(linux))
    {
        printf("linux\n");
    }
    #elif(defined(__FreeBSD__))
    {
        printf("FreeBSD\n");
    }
    #else
        printf("error\n");
    #endif
    return 0;
}

perlでテキストファイル内容を取得

どうも、この書き方が苦手だ。

$file = `cat hoge.txt`;

かなり多様されてはいるものの、やはりできるだけ使用言語によるコーディングを心がけたい。

しかし、確かに、open→while→closeと段階を踏んで記述するのも、面倒と言う気持ちも分かる。

というわけで、サブルーチンにファイルオープン処理を記述してやると、多少便利だと思った。

sub get_text_file
{
    open my $FILE_HANDLE , $_[0] || die("File Opne Error.");
    local $/;
    <$FILE_HANDLE>
}

これでだいぶ手間が省ける。

↓コーディング例

# cat test.pl
#!/usr/bin/perl

my $file = &get_text_file($ARGV[0]);
print $file;

sub get_text_file
{
    open my $HANDLE , $_[0] || die("File Opne Error.");
    local $/;
    <$HANDLE>
}

# cat hoge.txt
frpijfweroi
fdrfefwfewef
fuok

# ./test.pl hoge.txt
frpijfweroi
fdrfefwfewef
fuok

コンピュータと意思

変なことを言うなと思う人もいるかもしれない。

昔から、生命科学において説明が難しいとされている、人間の「意思」。

世界が、人間をミクロレベルから人工的に作り上げるほどの技術力に至ったとしても、そこに人としての「意思」は宿らないと言われている。

「迷い、気まぐれ、なんとなくの行動」

ここには全て、人間の意思が働いている。

しかし、近頃コンピュータに「意識」というか、「人間らしさ」を感じることがある。

続きを読む

意外と忘れがちなmysqlコマンド

結構使えて、意外と忘れてしまうmysqlのコマンドをメモっとこう。

・数字を大小でソート(数字の桁数をそろえてソートすればおk)。
10桁にそろえて、降順でソート。

mysql> select * from テーブル where カラム like "%ワード%" order by LPAD(size, 10, '0') DESC;

その他色々↓

続きを読む

構文解析1メモ

構文解析のアルゴリズムはこんな感じ。

/*

E → TE'
E' → +T[+}E'|ε
E' → -T[-}E'|ε
T → FT'
T' → *F[*]T'|ε
T' → /F[/]T'|ε
F → (E)|i[i]|num[num]

*/

/*
E'がsyntactic_analysis_2()関数に対応
T'がsyntactic_analysis_3()関数に対応
F がsyntactic_analysis_4()関数に対応
*/

コード↓

続きを読む