11月 29 2014
重複したレコードがないかをチェックする【SQL】
SQL文でテーブル中にあるフィールドを対象にして重複がないかを確認する。
select field1,count(*) from tablename group by field1 having count(*) > 1;
でチェックできる。
11月 29 2014
SQL文でテーブル中にあるフィールドを対象にして重複がないかを確認する。
select field1,count(*) from tablename group by field1 having count(*) > 1;
でチェックできる。
11月 28 2014
<例(昨日の算出)>
$date_today = mktime (0, 0, 0, date(“m”), date(“d”), date(“y”));
$date_yesterday = $date_today – 86400;
echo date(‘y-m-d’, $date_yesterday);
今日-86400 = 昨日
今日+86400 = 明日
11月 27 2014
スクリプトの最初にとりあえず
set_time_limit(0);
を入れておく。ゼロは無制限。標準で30らしい。
11月 26 2014
.htaccessでのIPアドレス制限をする。
Order Allow,Deny
Allow from 192.168.xx.xx
Allow from 192.168.xx.xx
11月 24 2014
もう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はすごい思い出深いです。
2月 17 2012
仕事でまた 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
12月 31 2011
ja-webalizer-2.23.4_1 を portsから makeするときに gd library not found.. please install libgd と出てエラーストップする。
http://www.pc-freak.net/blog/how-to-fix-configure-error-gd-library-not-found-please-install-libgd-during-webalizer-port-make-on-freebsd/
のページの方法でうまくいきました。
#cd /usr/ports/graphics/gd/
#portmaster .
#make
#make install
の後、webalizer をmake