技術」カテゴリーアーカイブ

FreeBSDでGsession

FreeBSD8.3 で GroupSessionを入れました。
tomcat8だとうまく動かなかった。tomcat6で動きました。
http://www.vdobv.com/freebsd9.0r/group-session がドンピシャ

以下引用です。

> 今回は、FreeBSD 9.0R の中で、OpenJDK 6.0 および Tomcat 6 を利用して動かしたので、インストール完了までを記録する。
>
> 現時点で公開されている GROUP SESSION のバージョンは、4.0.7 である。
>
> なお、このページの通りにセットアップしても、動作に関しては何ら保障するものではない。そもそも私は、インストールまでしただけで、具体的な利用はこれからだ。
>
> 基本的には、当該サイトのインストールガイドに従う。ただし、SUN の JDK 6.0 は使わず、OpenJDK 6.0 を利用する。
>
> OpenJDK 6.0
>
> # cd /usr/port/java/openjdk6
> # make config-recursive
> # make install clean
> Tomcat 6
>
> # cd /usr/port/www/tomcat6
> # make config-recursive
> # make install clean
> インストールの後半に次のような情報が表示されるのでメモしておくとよい。
>
> Installation settings:
> Destination directory: /usr/local/apache-tomcat-6.0
> Location of JDK: /usr/local/openjdk6
> Location of Java port: java/openjdk6
> Running as (user/group): www/www
> HTTP port: 8180
> Shutdown listener port: 8005
> AJP 1.3 connector port: 8009
> Logfile stdout: /usr/local/apache-tomcat-6.0/logs/stdout.log
> Logfile stderr: /usr/local/apache-tomcat-6.0/logs/stderr.log
> /etc/rc.conf には次のように記述しておく。
>
> tomcat60_enable=”YES”
> インストールするサーバの IP アドレスを、仮に 192.168.0.111 とした場合には、ブラウザのアドレス欄に次のように入力して、Tomcat の絵が表示されればOK。
>
> http://192.168.0.111:8180/
> 続いて、当該サイトのダウンロードページから gsession.war をダウンロードする。セットするディレクトリは次の場所になる。
>
> /usr/local/apache-tomcat-6.0/webapps/
> おわったら、ブラウザで下記のアドレスを表示してあげる。
>
> http://10.9.0.200:8180/gsession/

Turbo Pascalとか【再投稿】

turbo-pascal-1

もう25年位前にTurboPascalというコンパイラがありました。後にDelphiと変わっていくコンパイラです。
その頃のみんなはBasicの次にマシン語、その後、高級言語(Cとか)を触り始めるのですが、Cとかだと、(その頃はMSCだったと思う。)すごくコンパイルが遅いんですよ。基本的にHDDなんて高くて手が届かない時代で、FDDでやってたんですが、コンパイルになると、カツン、ガチャガチャ、カツンカツンってFDにアクセスばっかしですごく遅かったんですね。プログラムをちょっと書いて、コンパイルするにもひどく時間掛かってました。
そんなときに出てきたのが、TurboPascal。購入したときは多分 Ver3.0 ぐらいじゃないかなーとか思ってたのですが、いまぐぐると、見覚えがある画面は Ver1.0らしい。。。

コンパイルがね、画期的に早いんですよ。FDへのアクセスが皆無。メモリ上で、だららららーーってすぐ終わるのがすごくて。もうPascalばっかしやってました。

職場の上司の人は、「Pascalなんて勉強してなんになるんだよ。普通Cだろ。」とか言ってくるのですが、「いやいやいや普通じゃいやですから」でPascalを勉強してました。

作法に厳しい言語で、今のPHPみたいにいきなり変数を使うことなんてできなくて、プロシージャのはじめに、

var x,y : integer ;
   count : integer ;
message : string[80];

みたいな感じで変数宣言をしないといけないのですが、これがすごく邪魔くさい反面、変数間違いとかのバグが大幅に減ったりしてすごくいいです。

その後、Pascalを設計したのがニクラウス・ヴィルトという人だった影響もあって、その人の次の設計言語、Modula-2っていう言語を勉強したのですが、これは。。。うー。なにが気にいらなかったって、大文字だったんですよ。コードが。例えば、

Pascalだと。

procedure test1;
var x,y : integer ;
  count : integer ;
message : string[80];
begin
  writeLn(‘Hello, world!’);
end.

っていうかんじのプログラムが

MODULE test1;
FROM InOut IMPORT WriteLn,WriteString;
BEGIN
WriteString(‘Hello, world!’);
WriteLn
END sample.

こんな感じになります。美しくない。。。Pascalの美しさがなくなってしまっている。。。。。
そんな感じでやめました。そのままPascalをつかってて、そのうち後継の統合開発環境として、Delphiが発表されます。このころはもう仕事がその方向じゃなかったので全然触ってなくてわからなくなってしまいました。

でも初期のTurboPascalはすごい思い出深いです。

計画停電対策3

計画停電対策も最終段階になりました。サーバーも入荷、移行もかなり進みました。
なんかすごいコンパクトでサーバールームも静かになったですよ。あとはその分故障率に変化があるかどうか。

計画停電対策

この夏の計画停電があるかどうか微妙ですが準備はしておかないと。。でばっちし用意を進めています。
写真は無停電装置ですがこれも買うと高い!バッテリだけでも高い!でもまぁ計画停電がなかったとしても、これだけ天候が激しくなってくると停電対策は念には念を入れないと。

FreeBSD + Postfix + Spamassassin

仕事でまた spamassassin を使ってます。今回は念願の FreeBSD postfix postgresql の組み合わせです。
やぱり postfix でないと。

maillog で、

spamd: still running as root: user not specified with -u, not found, or set to root, falling back to nobody

みたいなエラーが出ました。
なんかspamdがrootで動いてるみたいな感じらしいです。ですので、

/usr/local/etc/rc.d/sa-spamd を

ommand_args=”-d -d -x -r -v -q -u hogehoge -A 202.211.xx.xx -r ${pidfile}”

で -u hogehoge みたいな感じで別のユーザーにしてあげると行けそうです。

あと、-A 202.211.xx.xx は、

spamd[40410]: spamd: unauthorized connection from noname.freedom.ne.jp [202.211.xx.xx] at port 24135 at /usr/local/bin/spamd line 1271.

がmaillogに出た時の対処です。なんかこうしないと、127.0.0.1からしかspamdは受け付けてくれないみたいです。

pgsqlの場合の/usr/local/etc/mail/spamassassin/sql.cf

user_scores_dsn DBI:Pg:dbname=spamassassin;host=localhost;port=5432
user_scores_sql_password xxxxxxx
user_scores_sql_username zzzzzzz
×user_scores_sql_custom_query SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = ‘$GLOBAL’ OR username = CONCAT(‘%’,_DOMAIN_) ORDER BY username ASC
○user_scores_sql_custom_query SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = ‘$GLOBAL’ OR username = ‘%’ || _DOMAIN_ ORDER BY username ASC

※postgresqlではconcatは使えない。

pgsqlの場合のuserprefテーブル作成

userpref

http://www.koders.com/sql/fid0DF2E1AD66C6EB4CE480765A739AD867D8EA4A07.aspx?s=update

CREATE TABLE userpref (
prefid bigserial NOT NULL unique primary key,
username varchar(100) NOT NULL,
preference varchar(30) NOT NULL,
value varchar(100) NOT NULL
);
CREATE INDEX userpref_username_idx ON userpref(username);

pgsqlの場合のawlfテーブル作成

http://www.opensource.apple.com/source/SpamAssassin/SpamAssassin-124.5/SpamAssassin/sql/awl_pg.sql

CREATE TABLE awl (
username varchar(100) NOT NULL default ”,
email varchar(200) NOT NULL default ”,
ip varchar(10) NOT NULL default ”,
count bigint default ‘0’,
totscore float default ‘0’
);
CREATE UNIQUE INDEX awl_pkey ON awl (username,email,ip);

pgsqlの場合のbayesテーブル作成

http://svn.apache.org/repos/asf/spamassassin/branches/3.0/sql/bayes_pg.sql
CREATE TABLE bayes_expire (
id integer NOT NULL default ‘0’,
runtime integer NOT NULL default ‘0’
);

CREATE INDEX bayes_expire_idx1 ON bayes_expire (id);

CREATE TABLE bayes_global_vars (
variable varchar(30) NOT NULL default ”,
value varchar(200) NOT NULL default ”,
PRIMARY KEY (variable)
);

INSERT INTO bayes_global_vars VALUES (‘VERSION’,’3′);

CREATE TABLE bayes_seen (
id integer NOT NULL default ‘0’,
msgid varchar(200) NOT NULL default ”,
flag character(1) NOT NULL default ”,
PRIMARY KEY (id,msgid)
);

CREATE TABLE bayes_token (
id integer NOT NULL default ‘0’,
token char(5) NOT NULL default ”,
spam_count integer NOT NULL default ‘0’,
ham_count integer NOT NULL default ‘0’,
atime integer NOT NULL default ‘0’,
PRIMARY KEY (id,token)
);

CREATE TABLE bayes_vars (
id serial NOT NULL,
username varchar(200) NOT NULL default ”,
spam_count integer NOT NULL default ‘0’,
ham_count integer NOT NULL default ‘0’,
token_count integer NOT NULL default ‘0’,
last_expire integer NOT NULL default ‘0’,
last_atime_delta integer NOT NULL default ‘0’,
last_expire_reduce integer NOT NULL default ‘0’,
oldest_token_age integer NOT NULL default ‘2147483647’,
newest_token_age integer NOT NULL default ‘0’,
PRIMARY KEY (id)
);

CREATE INDEX bayes_vars_idx1 ON bayes_vars (username);

smtp authについてはここがすごく参考になります。
http://satospo.sakura.ne.jp/blog_archives/tech/centos/postfix_smtpauth.html