ircdを自分だけが使用し、大量に書き込みが許される状況では、ircdのExcess Floodの機能が非常に邪魔だ。
数キロバイトのテキストがircdに貯まるだけで、Excess Floodが発動し、強制ログアウトさせられる。
configで機能を削除する方法もあったが、とりあえずソースを弄って、Excess Floodの機能を削除した。
Excess Floodとmsg_readyエラーを削除する必要がある。
以下にソースを弄ったログを。
「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。
ircdを自分だけが使用し、大量に書き込みが許される状況では、ircdのExcess Floodの機能が非常に邪魔だ。
数キロバイトのテキストがircdに貯まるだけで、Excess Floodが発動し、強制ログアウトさせられる。
configで機能を削除する方法もあったが、とりあえずソースを弄って、Excess Floodの機能を削除した。
Excess Floodとmsg_readyエラーを削除する必要がある。
以下にソースを弄ったログを。
さてさて、構文解析1メモにおいてコーディングした構文解析部の残りのルーチン3つを今回は記載。
おさらいとして、以下のように解析の流れを構造化しておく。
/*
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()関数に対応 */
では、残りのコードを以下に示す。↓
こんなのでできてしまう。
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; }
どうも、この書き方が苦手だ。
$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