关于作者

用户名:konds
笔名:konds
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言


我的杂品库

访问统计:
文章个数:115
评论个数:66
留言条数:61




Powered by BlogDriver 2.1

konds for linux手札

 


文章

[杂谈]怪说以及关于怪说的一切  (作者置顶)
这里我要讲的是发生在中国北方一所三流大学中的一个真实故事。至于它发生的原因,我只能说:“人毕竟要分三六九等,这与社会制度及其宣称无关,并且万事皆 有差别,所谓相同,不过是看上去相仿罢了。”我猜想定会有人自作多情的对号入座,因为这样的事情层出不穷。在中国每一所大学阴霾的背景色中,周而复始,不 断在上演。

旋转木马 A  

  百八烦恼颓废的蹲在寝室的椅子上,面前的老爷机处于待机的状态,廉价音箱中哈狗帮乐队声嘶力竭:“……像条狗!”这时贱S来了。贱S是始终会背 着“三好书包”在校园里盛气凌人的那种人,寻常人认为他们是智力型英雄,能回避老师的常规伤害,反弹考试的致命一击——至少大多数情况如此,可惜凡事都有 例外,有些像那些从男寝楼上随机群星飞落的啤酒瓶。现在贱S破门而入,顶着形如死亡骑士的马脸,哦,应该说是形如死骑的马的脸。他翩然走过来道:“百八, 好久不见……”

  蹲在椅子上的百八烦恼头皮发麻,那感觉像有百万只蟑螂拼命地爬。贱S是喜欢强调礼尚往来却绝不会给别人回报的人。这类好学生向来认为受宠皆是理所应 当, 但百八烦恼不吃这一套,尤其在吃过亏后更不吃这一套。这点贱S清楚,所以贱S马上切入正题:“百八,你有补考吧?”
这显然是设问句,因为答案彼此心照不宣。

  “这个学期你包宿不少,总该有课程和老师跟你过不去;好好和老师聊聊分数通融一下你又不敢;哈,或者是你觉得不值……其实及格容易。我朋友有一套纸条 试题答案,来路正统,只是他最近手头紧张,随便出个价钱就归你。我可以考虑给你护驾。考虑一下吧,考试很快就到了……”百八烦恼侧过脸来,牵强地呲牙仰望 近在咫尺的马脸:“稀客稀客,来坐。”

“百八,你也知道我这次没过的原因只是缓考而已。时间上正好考研撞车了嘛,熊掌与鱼不可兼得。不过我研究生还是考上了,350多啊!”
“恭喜恭喜!”
“那么纸条的事?”贱S眼睛里闪着希望的光,
“没问题,什么科?”百八烦恼煞有其事地写下他挂掉的科目。
“百八烦恼是个好人!大好人!”贱S欢快的奔出百八烦恼的寝室,顶着那张形如死骑的马的脸,对于报酬只字未提。只有电脑重复着哈狗帮的嚎叫:“……像条狗!”

七楼的山崎龙二 A

  水母目不转睛盯着屏幕:屏幕里八神冲向对面的山崎龙二,山崎提刀迎战。恼羞成怒的八神庵开始出了“暗勾手”,但终于还是不能自保,山崎抓住空档杀过 去,于是八神欣长的身子被拖地滚,接着便是惨不忍睹的暴踢。“Win!”电脑女声欢叫。但胜利的水母并不开心,这次的四级压得他透不过气,就像八神庵临死 前的怒骂。更令他难以忍受的是身后不请自来的百八烦恼,正在冷眼观看这场失败的KOF对局。

  “考虑一下吧,四级考试很快就到……”百八烦恼面如冰霜。这局山崎的对手是比利,那个拿着三节棍的黄毛。水母一阵头痛,虽说拳皇算是平衡的游戏,但也许是以前败过的阴影,每次对战比利都让他恐慌;就像那该死的英语四级考试,这个冬天是最后的机会。然而转眼山崎战败,屏幕外的水母失去了全部耐心,失声尖叫:

“×他大爷!”
“他可能没大爷。”百八烦恼面带微笑。
“那×别人大爷!”显然水母已经失去了理智,“老子一定要过四级!”接着是一阵如此这般,水母欣然接受百八的纸条战术。片刻后水母出现在七楼凉台上,向对面女
生舍嗥叫:“老子一定要过四级,否则老子就从新楼跳下去!”底气十足。——因为刚才的客人叫百八烦恼,专为不能通过考试的人们解决烦恼。
只是游戏屏幕依然定格:山崎撅倒在地,败得很是凄惨。

直板绵羊A

  绵羊是这样的动物:愚蠢,傲慢,懦弱,顽固,迟缓,死后价值远大于存活价值;如果一个人集中了上述缺点便可以称之为绵羊。
百八烦恼就面对着这样一个人物,此刻,绵羊同学正光彩照人地甩着一头刚做好的直板烫。他非常不希望绵羊同学转过脸。毕竟世上存在一种叫背影美女的东西,但 来不及了,绵羊转过她的扁脸,形象可怖。——理工大学里,女生是极度稀缺资源,百八的同学由其离奇,如曲轴,如主板,如托盘天秤,因此百八从不凭空奢望任 何事发生——

  直板烫的绵羊同学婀娜坐在百八烦恼面前——身后是刚开局的扫雷,计时器还在不紧不慢的跳。如果不是绵羊是个女生,恐怕她很难有惊无险地混到大四。百八烦恼和她打过交道,尽管她不像贱S那样一毛不拔,但砍价很凶。凭着百八的经验,有恃无恐的买家都极难对付。

  “你觉得400块很贵吗?你可找那些便宜的,喏,那边墙上就有几个……”远远看去,法学院墙上依稀涂着四级英语枪手联盟的代考联系电话,“如果最后一次四级考试失手,叫招聘单位怎么想你?我这位朋友英语一定比他们好;我跟你讲这是最后一次通过四级的机会……”
“啥?”直板绵羊终于开口,叫人不寒而栗,“别磨叽了,俺知道了!”

  道不同不相为谋,百八烦恼起身告辞。身后传来绵羊的尖叫和摔打鼠标的噪音。这局扫雷她又败了。凭运气猜想这一个或是那一个到底是不是雷,显然是不明智;因为很多时候运气是靠不住的,况且扫雷不是靠运气;而是要动脑子!
但显然绵羊不是。

旋转木马B

“贱S!” 百八烦恼蹲在食堂门外的破长椅上吼。那声音震聋发聩,死骑贱S自然也不能豁免,于是轻飘飘的脚步哆嗦了一下,摔倒在百八烦恼面前。
“这次是现钱,做得要快。答题卡很快就要交。”百八烦恼从口袋里抓出一把钱,塞到贱S敞开的领子里。,那张形如死骑的马的脸笑得如同被散弹枪崩开了花:“没问题!”
“通过付另一半;不成扣50%。”百八烦恼面无表情掏出一只直板手机,塞给贱S,“翻盖只配用来泡女生,短信发答案的时候要用直板,这是规矩。”
“Let the money speak!”不知道四级会不会考这一句——百八烦恼盯着贱S兴冲冲走开,悄无声息的消失在暮色中的人群里。
初八日,有风;
文曲星降下,定文卷优劣;
有血光,忌出行,宜破财免灾。

直板绵羊 B

  18号后天气持续良好,百八烦恼依旧颓废地蹲在寝室椅子上享受冬日难得的温暖。上次实验室的谋面之后,百八烦恼再未遇见直板绵羊;尽管他很希望买家回心转意。但直板绵羊再始终绵羊出现,很快就到了“四级事件”。事情是这样的:

  绵羊终究不肯付那400块钱的费用,这既不能证明其开化,也不能证明其明智。因为在考试之前她辗转和四级枪盟套上了关系,从另一所大学搬来救兵——该 救兵《使用说明》上写着:界面友好,运行稳定,输出精准。然后绵羊突然直截了当地抽回了身份证,并且明确的告诉替考救兵,她与她看起来很像。面团脸的小枪 妹看上去一脸无辜加无奈,于是风萧萧路漫漫地跌进考场,剩下的事情可想而知。监考教师并不聪明,但也不是瞎子,愤愤举着直板绵羊的学生证怒吼:“你们两个 长得很像,但肯定不是一个人!”小枪妹挣扎着要辩白,但面对保安处一干校警地怒目而视,那辩白很快就变成了噫语,然后再变成了抽噎。

  很快教务公告中刷出了新消息:“×××系-01-99班-99号,直板绵羊同学因在8号的四级考试中……给予开除学籍处理,钦此!”
蹲在寝室椅子上的百八烦恼一跃而起。Ctrl+C、Ctrl+V。第3721号通告便Copy到了三流大学乌烟瘴气的BBS上。
没事情可做的日子竟然过得分外轻松,百八烦恼一遍又一遍的浏览第3721号通告下或嘲讽,或鄙视的帖子,从中体验到一种妙不可言的快乐,而生活竟也明快起来,于是继续喝酒、吃菜、扯废话。北方冬日难得的温暖阳光照在百八的眼镜上,反射出荒诞的光。

旋转木马C

  贱S顶着他那张形如死骑的马的脸,在一干男女人渣的簇拥之下,胸有成竹的走进补考教室,更多人渣坐在教室中向他脱帽致敬。贱S从“三好书包”中掏出那 些纸条,纸条是温热的。补考人群发出一阵欢呼。贱S那张形如死骑的马的脸辉煌得如同被散弹枪崩开了花,补考答案洋溢出的不洁之光环泽被万人。.贱S娴熟的 躲闪深度近视监考教师的视线,祭起那些温热的纸条。

答卷:\>Copy 纸条: *.* 答卷:/
答卷:\>……
答卷:\>I/O error!!!

  很多时间过去后,贱S终于意识到:这些纸条上的确曾经写过完整的答案,但早被人为的减去了部分,然后拼在一起。贱S的马脸上渗出了汗水,哆嗦着掏出最后一张纸条,毫无选择的,他要把所有希望要在最后这一票上了。舍生取义,杀身成仁。
最后一张纸条上写着最长的一道简答题答案,同样没有写完,不过在结尾之处,有人写着:“见后面←!”贱S胸中一阵沸腾,抛开手中钢笔,把纸条翻转过来。只见那纸条后面以百八烦恼难于辨识的笔迹写着五个大字:
“×——你——大——爷!”
“×你大爷!”贱S嚎叫着,那张形如死骑的马的脸愤怒得如同被散弹枪崩开了花,惊得四周的人渣和监考教师驻足。而就在此刻,他惊恐的发现,考场的玻璃窗上 竟然如海市蜃楼一般的泛出了一个身影,贱S仓皇的转头去看那门外,百八烦恼就倚在那门框,脸上带着嘲弄的微笑。几秒钟后,他优雅地转身离去。一阵风莫名其 妙的吹起,卷动百八烦恼披在身上的长外套,那身影远远望去象是振着双翼的吉尔·基丹。

结局

  昨天已经过去,今天正在过去,明天还未到来。

  自从上次有三流大学的落寞博士生从新楼的十三层纵身一跃后,领导们就封闭了通向十三层的门;可惜这并不能够阻止另一个因为英语四级代考被抓开除学籍而 绝望的不知趣家伙从十二层跳下去,摔得稀烂。纷飞的血肉胡乱溅了一墙。领导们强令刚刚饱餐了晚饭的各班班长去认尸,蒙混过关而跑去豪饮庆祝的水母自然也被 抓来看热闹。而最终的验尸报告却荒谬地显示:三流大学中竟查无此人。领导很满意,至少本年度新闻不会涉及“学校教育不善导致学生跳楼”的负面消息。

  直板绵羊在得到通报的下午便雇了最好的律师,出手极为阔绰。辗转一番后终于从开除学籍的死刑变成了留校查看的死缓,然后又多方周折终于改判留级一年的 有期,正应了那句“有血光,忌出行,宜破财免灾”。于是绵羊的四年本科变成了五年,也就是说她还可以继续坐在实验室里扫雷,等待有代言人对她说:“你觉得400块钱很贵吗,你可找那些便宜的,喏,那边墙上就有几个……”

  四级枪盟折损了小枪妹后便得罪了另一所大学的同僚,自此在三流大学里销声匿迹。也许下次考试他们还会出现,也许不再出现,但那又有什么关系呢?
贱S顶着他那张形如死骑的马的脸,拎着补考单垂头丧气的滚回南方老家的大学参加研究生考试复试去了。至于他如何向另一群领导们解释这档子事,早已不在我们 的讨论范围内。不可否认,贱S很想暴打百八烦恼泄愤;但事实上,殴打身为国家认证二级健身教练的百八烦恼,无异于以空管的阿尔撒斯去敲满血的吉尔·基丹。

  虽然凡事皆有例外,并且也不太好估算。如同那些从男寝楼上随机群星飞落的啤酒瓶。但同样,总该有些事情已经是定性的,就如醉醺醺百八烦恼蹲在寝 室的椅子上,面前的老爷机处于待机的状态,廉价的音箱中哈狗帮声嘶力竭:“……像条狗!”他这样唱的时候,百八烦恼喝干了最后一瓶哈尔滨啤酒。他似乎看到 了将要到来的夏天,他已经顺利的毕业,英姿飒爽地站在三流大学状如棺材的大门前,自豪地比出中指……

于是百八烦恼向窗外掷出啤酒瓶,然后伸出中指,竭尽全力地吼道:
“×——你——大——爷!”
早春三月,那悲怆的声音在三流大学的宽阔操场上回荡着,久久不能散去。

  每年临近毕业的时候,大学校园里就业咨询的海报和四级枪手联系电话就如同雨后霉菌层出不穷。四级是心中永远的痛,就业前最后一次补考中落马的枪 手数量就足以证明,偶尔会出现一两例学位不保跳楼事件的强刺激。但无论是骂学校还是骂体制,四级、毕业和就业话题总是阴森森地捆绑在一起。又是一年毕业将 至,就要离开这所混了四年也恨了四年的高校,各位,现在你们要独自面对这个阴险而危机四伏的社会了。

- 作者: konds 2005年09月2日, 星期五 11:17  回复(1) |  引用(1) 加入博采

centos4.6 + 移动edeg
特贴出本人设置手札 希望能帮到各位想上EDGE的朋友

硬件:X31+centos 4.6 +tlink e6 pcmcia卡 +移动2000M/月

插入卡后会有提示,若无提示可使用kudzu来找一下。

这里看一下卡是否被找到
[root@konds ~]# dmesg | grep tty
ttyS1 at I/O 0x2f8 (irq = 3) is a 16C950/954
[root@konds ~]#

看卡是否有回应

[root@konds ~]# stty -a < /dev/ttyS1
speed 115200 baud; rows 0; columns 0; line = 3;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal crtscts
ignbrk -brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop
-echoprt -echoctl -echoke
[root@konds ~]#

使用拨号配置测试一下

[root@konds ~]# wvdialconf  /etc/wvdial.conf
Scanning your serial ports for a modem.

Port Scan<*1>: Scanning ttyS1 first, /dev/modem is a link to it.

ttyS1<*1>: ATQ0 V1 E1 --
ttyS1<*1>: failed with 2400 baud, next try: 9600 baud
ttyS1<*1>: ATQ0 V1 E1 -- )!!
ttyS1<*1>: failed with 9600 baud, next try: 115200 baud
ttyS1<*1>: ATQ0 V1 E1 --
ttyS1<*1>: and failed too at 115200, giving up.
Port Scan<*1>: S0   S2   S3   S4   S5   S6   S7   S8
Port Scan<*1>: S9   S10  S11  S12  S13  S14  S15  S16
Port Scan<*1>: S17  S18  S19  S20  S21  S22  S23  S24
Port Scan<*1>: S25  S26  S27  S28  S29  S30  S31  S32
Port Scan<*1>: S33  S34  S35  S36  S37  S38  S39  S40
Port Scan<*1>: S41  S42  S43  S44  S45  S46  S47  S48
Port Scan<*1>: S49  S50  S51  S52  S53  S54  S55  S56
Port Scan<*1>: S57  S58  S59  S60  S61  S62  S63  S64
Port Scan<*1>: S65  S66  S67  SHSF0 SHSF1 SHSF2 SHSF3 SHSF4
Port Scan<*1>: SHSF5 SHSF6 SHSF7

Sorry, no modem was detected!  Is it in use by another program?
Did you configure it properly with setserial?

Please read the FAQ at http://open.nit.ca/wvdial/

If you still have problems, send mail to wvdial-list@lists.nit.ca.

在这里出现问题。使用setserial设置一下速度
[root@konds ~]# setserial /dev/ttyS1 baud_base 230400

再测试一遍

[root@konds ~]# wvdialconf /etc/wvdial.conf
Scanning your serial ports for a modem.

Port Scan<*1>: Scanning ttyS1 first, /dev/modem is a link to it.
ttyS1<*1>: ATQ0 V1 E1 --
ttyS1<*1>: failed with 2400 baud, next try: 9600 baud
ttyS1<*1>: ATQ0 V1 E1 --
ttyS1<*1>: failed with 9600 baud, next try: 115200 baud
ttyS1<*1>: ATQ0 V1 E1 -- OK
ttyS1<*1>: ATQ0 V1 E1 Z -- OK
ttyS1<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyS1<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyS1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyS1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyS1<*1>: Modem Identifier: ATI -- WYLESS_600
ttyS1<*1>: Speed 230400: AT --
ttyS1<*1>: Speed 230400: AT --
ttyS1<*1>: Speed 230400: AT --
ttyS1<*1>: Max speed is 115200; that should be safe.
ttyS1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
Port Scan<*1>: S2   S3   S4   S5   S6   S7   S8   S9
Port Scan<*1>: S10  S11  S12  S13  S14  S15  S16  S17
Port Scan<*1>: S18  S19  S20  S21  S22  S23  S24  S25
Port Scan<*1>: S26  S27  S28  S29  S30  S31  S32  S33
Port Scan<*1>: S34  S35  S36  S37  S38  S39  S40  S41
Port Scan<*1>: S42  S43  S44  S45  S46  S47  S48  S49
Port Scan<*1>: S50  S51  S52  S53  S54  S55  S56  S57
Port Scan<*1>: S58  S59  S60  S61  S62  S63  S64  S65
Port Scan<*1>: S66  S67  SHSF0 SHSF1 SHSF2 SHSF3 SHSF4 SHSF5
Port Scan<*1>: SHSF6 SHSF7

Found a modem on /dev/ttyS1, using link /dev/modem in config.
Modem configuration written to /etc/wvdial.conf.
ttyS1<Info>: Speed 115200; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
[root@konds ~]#

应该是通过了,拨号上线

[root@konds ~]# wvdial
--> WvDial: Internet dialer version 1.54.0
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Modem initialized.
--> Configuration does not specify a valid phone number.
--> Configuration does not specify a valid login name.
--> Configuration does not specify a valid password.

................没设置电话号和用户名

无奈打电话问了号是*99***1# 客服说用户名不需要填写

以下是配置文件

[root@konds ~]#cat /etc/wvdial.conf

[Dialer Defaults]
Modem = /dev/modem
Baud = 115200
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ISDN = 0
Modem Type = Analog Modem
Phone = *99***1#
Username = 11
Password = 1
; Phone = <Target Phone Number&g;
; Username = <Your Login Name>
; Password = <Your Password>

再拨号。

[root@konds ~]# wvdial
--> WvDial: Internet dialer version 1.54.0
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Modem initialized.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT
--> Carrier detected.  Waiting for prompt.
--> Don't know what to do!  Starting pppd and hoping for the best.
--> Starting pppd at Tue Jul  1 11:06:22 2008
--> pid of pppd: 5090
--> Using interface ppp0
--> pppd:  ATM1L4
--> pppd:  ATM1L4
--> pppd:  ATM1L4
--> pppd:  ATM1L4
--> local  IP address 10.60.84.255
--> pppd:  ATM1L4
--> remote IP address 192.200.1.21
--> pppd:  ATM1L4
--> primary   DNS address 211.136.112.50
--> pppd:  ATM1L4
--> secondary DNS address 211.136.20.203
--> pppd:  ATM1L4

好像是上了,可就是打不开网页,试了一下,dns没解析

执行以下,把网卡刷一下。

ip route flush all
route add default ppp0

OK,EDGE是可以上了。但有时候速度不稳定,我在家里有时候EDGE信号不稳定,没有EDGE时候就是GPRS了,慢的嘞只想砸机器.

- 作者: konds 2008年07月1日, 星期二 20:16  回复(2) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: konds 2006年06月10日, 星期六 09:16  回复(1) |  引用(1) 加入博采

决定不再用blogchina做记录档
现在的blogchina越来越差劲了。已经全面转向gmail标签做记录档了

- 作者: konds 2006年04月4日, 星期二 11:00  回复(1) |  引用(1) 加入博采

整理资料时候看到以前的QMAIL的文档,也不知道全不全。先贴上
[root@konds2 named]# cd /root/qmail-test/
Qmail_setup                qmail_setup-v1.5.3.tar.gz
[root@konds2 named]# cd /root/qmail-test/Qmail_setup/
[root@konds2 Qmail_setup]# ls
autorespond-2.0.2.tar.gz    qmail-1.03.tar.gz
cmd5checkpw-0.22.tar.gz     qmail-1.03.tar.gz.md5
COPYING                     qmailadmin-1.0.6.tar.gz
courier-imap-1.5.3.tar.tar  qmail-smtpd-auth-0.30.tar.gz
ezmlm-0.53.tar.gz           qmail-smtpd.c
ezmlm-idx-0.40.tar.gz       README
httpd-2.0.40.tar.gz         setup
iceblood                    sqwebmail-3.3.7.20020910.tar.gz
INSTALL                     string.h
libmysqlclient.so.10        ucspi-tcp-0.88.tar.gz
mysql.pl                    vpopmail-5.2.1.tar.gz
qmail                       vqadmin-2.3.2.tar.gz
qmail-103.patch
[root@konds2 Qmail_setup]# ls
autorespond-2.0.2.tar.gz<   qmail-1.03.tar.gz
cmd5checkpw-0.22.tar.gz     qmail-1.03.tar.gz.md5
COPYING                     qmailadmin-1.0.6.tar.gz
courier-imap-1.5.3.tar.tar  qmail-smtpd-auth-0.30.tar.gz
ezmlm-0.53.tar.gz           qmail-smtpd.c
ezmlm-idx-0.40.tar.gz       README
httpd-2.0.40.tar.gz         setup
iceblood                    sqwebmail-3.3.7.20020910.tar.gz
INSTALL                     string.h
libmysqlclient.so.10        ucspi-tcp-0.88.tar.gz
mysql.pl                    vpopmail-5.2.1.tar.gz
qmail                       vqadmin-2.3.2.tar.gz
qmail-103.patch

[root@konds2 Qmail_setup]# tar -zxf qmail-1.03.tar.gz
[root@konds2 Qmail_setup]# mkdir -p /usr/local/qmail
[root@konds2 Qmail_setup]# groupadd nofiles
[root@konds2 Qmail_setup]# useradd -g nofiles -d /usr/local/qmail/alias alias
[root@konds2 Qmail_setup]# useradd -g nofiles -d /usr/local/qmail/ qmaild
[root@konds2 Qmail_setup]# useradd -g nofiles -d /usr/local/qmail/ qmaill
[root@konds2 Qmail_setup]# useradd -g nofiles -d /usr/local/qmail/ qmailp
[root@konds2 Qmail_setup]# groupadd qmail
[root@konds2 Qmail_setup]# useradd -g qmail -d /usr/local/qmail/ qmailq
[root@konds2 Qmail_setup]# useradd -g qmail -d /usr/local/qmail/ qmailr
[root@konds2 Qmail_setup]# useradd -g qmail -d /usr/local/qmail/ qmails
[root@konds2 Qmail_setup]# patch
patch           patch-metamail
[root@konds2 Qmail_setup]# patch -p0 < qmail-103.patch
patching file qmail-1.03/dns.c
[root@konds2 Qmail_setup]# cd qmail-1


[root@konds2 qmail-1.03]# make setup check
[root@konds2 qmail-1.03]# ./config-fast --help
Your fully qualified host name is --help.
Putting --help into control/me...
Putting --help into control/defaultdomain...
Putting --help into control/plusdomain...
Putting --help into control/locals...
Putting --help into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to --help.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

[root@konds2 qmail-1.03]# chgrp qmail /usr/local/qmail
[root@konds2 qmail-1.03]# chmod 755 /usr/local/qmail

[root@konds2 qmail-1.03]# cp /var/qmail/boot/home /usr/local/qmail/rc
[root@konds2 qmail-1.03]# mkdir /etc/qmail
[root@konds2 qmail-1.03]# chmod 755 /usr/local/qmail/rc
[root@konds2 qmail-1.03]# ln -s /usr/local/qmail/bin/sendmail /usr/lib/sendmail
ln: `/usr/lib/sendmail': File exists
这里因为没有预装sendmail
###
ln -s /usr/local/qmail/bin/sendmail /usr/lib/sendmail
ln -s /usr/local/qmail/bin/sendmail /usr/sbin/sendmail
chmod 755 /usr/local/qmail/bin/sendmail
###
[root@konds2 qmail-1.03]# vi /usr/local/qmail/rc
[root@konds2 qmail-1.03]#
[root@konds2 qmail-1.03]# touch /etc/qmail/start
[root@konds2 qmail-1.03]#  echo "csh -cf '/var/qmail/rc &'">/etc/qmail/start
[root@konds2 qmail-1.03]# echo "/etc/qmail/smtp.sh">>/etc/qmail/start
[root@konds2 qmail-1.03]# cd ../
[root@konds2 Qmail_setup]# tar zxf ucspi-tcp-0.88.tar.gz
[root@konds2 Qmail_setup]# cd ucspi-tcp-0.88
[root@konds2 ucspi-tcp-0.88]#
[root@konds2 ucspi-tcp-0.88]# make && make setup check && touch /etc/qmail/smtp.sh
[root@konds2 ucspi-tcp-0.88]# cat /etc/passwd | grep -i qmaild
qmaild:x:503:502::/usr/local/qmail/:/bin/bash
[root@konds2 ucspi-tcp-0.88]# cat /etc/group | grep -i nofiles
nofiles:x:502:
[root@konds2 ucspi-tcp-0.88]# touch /etc/qmail/smtp.sh
[root@konds2 ucspi-tcp-0.88]# chmod 755 /etc/qmail/smtp.sh
[root@konds2 ucspi-tcp-0.88]# touch /etc/qmail/tcp.smtp
[root@konds2 ucspi-tcp-0.88]# echo "127.0.0.1:allow,RELAYCLIENT="\"\" > /etc/qmail/tcp.smtp
[root@konds2 ucspi-tcp-0.88]# echo ":allow" >> /etc/qmail/tcp.smtp

创建2个文件smtp.sh tcp.smtp

[root@konds2 ucspi-tcp-0.88]# cat /etc/qmail/smtp.sh
/usr/local/bin/tcpserver-H -R - l konds.org -t 1 -c 100 -v -p -x/etc/qmail/tcp.smtp.cdb
-u 503 -g 502 0 smtp /usr/local/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw
/bin/true | /usr/local/qmail/bin/splogger &" > /etc/qmail/smtp.sh
[root@konds2 ucspi-tcp-0.88]#



[root@konds2 ucspi-tcp-0.88]# cat /etc/qmail/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
:allow
[root@konds2 ucspi-tcp-0.88]#





[root@konds2 ucspi-tcp-0.88]# /usr/local/bin/tcprules /etc/qmail/tcp.smtp.cdb /etc/qmail/tcp.smtp.tmp < /etc/qmail/tcp.smtp
[root@konds2 ucspi-tcp-0.88]# echo “/etc/qmail/start” >> /etc/rc.d/rc.locad

[root@konds2 ucspi-tcp-0.88]# cd ..
[root@konds2 Qmail_setup]# tar zxf vpopmail-5.2.1.tar.gz
[root@konds2 Qmail_setup]# groupadd vchkpw
[root@konds2 Qmail_setup]# useradd -g vchkpw -d /home/vpopmail vpopmail

[root@konds2 Qmail_setup]# cd vpopmail-5.2.1

[root@konds2 vpopmail-5.2.1]# service mysqld restart
Stopping MySQL:                                            [FAILED]
Starting MySQL:                                            [  OK  ]

修改mysql密码
[root@konds2 vpopmail-5.2.1]# mysqladmin -u root password 'youpassword'

cheng pass for
[root@konds2 vpopmail-5.2.1]# vi vmysql.h

[root@konds2 vpopmail-5.2.1]# ./configure --prefix=/home/vpopmail --enable-default-domain=konds.org --enable-passwd=n --enable-ip-alias-dmains=n --enable-defaultquota=52428800s --enable-mysql=y --enable-sqwebmail-pass=y --enable-tcprules-prog=/usr/local/qmail/bin/tcprules --enable-tcpserver-file=/etc/qmail/tcp.smtp --enable-vpopuser=vpopmail --enable-defaultquota=1050000000 --enable-indir=/usr/include/mysql  --enable-libdir=/usr/lib/mysql


[root@konds2 vpopmail-5.2.1]# make && make install-strip  && chmod 6755 /home/vpopmail/bin/vchkpw

[root@konds2 vpopmail-5.2.1]# echo " tcpserver -c 100 -v -l konds.org  -U -H -R
0 pop3 /usr/local/qmail/bin/qmail-popup konds.org  /home/vpopmail/bin/vchkpw /usr/local/qmail/bin/qmail-pop3d Maildir 2>&1 | /usr/local/qmail/bin/splogger &" >
/etc/qmail/pop.sh
[root@konds2 vpopmail-5.2.1]#

[root@konds2 vpopmail-5.2.1]# cat /etc/qmail/pop.sh
 tcpserver -c 100 -v -l konds.org  -U -H -R 0 pop3 /usr/local/qmail/bin/qmail-popup konds.org  /home/vpopmail/bin/vchkpw /usr/local/qmail/bin/qmail-pop3d Maildir 2>&1 | /usr/local/qmail/bin/splogger &
[root@konds2 vpopmail-5.2.1]#

[root@konds2 vpopmail-5.2.1]# chmod 755 /etc/qmail/pop.sh
[root@konds2 vpopmail-5.2.1]# echo "/etc/qmail/pop.sh">>/etc/qmail/start

[root@konds2 vpopmail-5.2.1]# /home/vpopmail/bin/vadddoman konds.org
Please enter password for postmaster:
enter password again:

 如果运行命令出现:error in loading shared libraries: libmysqlclient.so.10: cannot open

shared object file: No such file or directory
则:cp libmysqlclient.so * /usr/lib
chmod 755 /usrl/ib/ libmysqlclient.so

注意目录权限:
/home/vpopmail/domains 的权限应该是700
/home/vpopmail/domains/domail.com/.qmail-default 应该是600
/usr/lib/libmysqlclient.so.10.0.0应该是755

[root@konds2 vpopmail-5.2.1]#

[root@konds2 vpopmail-5.2.1]# mysql -uroot -pyoupassword
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14 to server version: 3.23.49
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql>
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> insert into user values('localhost','ezmlm','','y','y','y','y','y','y','y','y','y','y','y','y','y', 'y');
Query OK, 1 row affected (0.00 sec)
 
mysql> update user set password=password('ezmlm') where user='ezmlm';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit;
Bye
[root@konds2 vpopmail-5.2.1]#
[root@konds2 vpopmail-5.2.1]# mysqladmin -u root -pyoupassword create ezmlm


[root@konds2 vpopmail-5.2.1]# cd ..
[root@konds2 Qmail_setup]# tar zxf ezmlm-0.53.tar.gz
[root@konds2 Qmail_setup]# tar zxf ezmlm-idx-0.40.tar.gz

[root@konds2 Qmail_setup]# mv ezmlm-idx-0.40/* ezmlm-0.53
mv: overwrite `ezmlm-0.53/ezmlm-list.c'? y
mv: overwrite `ezmlm-0.53/ezmlm-make.1'? y
mv: overwrite `ezmlm-0.53/ezmlm-make.c'? y
mv: overwrite `ezmlm-0.53/ezmlm-manage.1'? y
mv: overwrite `ezmlm-0.53/ezmlm-manage.c'? y
mv: overwrite `ezmlm-0.53/ezmlm-reject.1'? y
mv: overwrite `ezmlm-0.53/ezmlm-reject.c'? y
mv: overwrite `ezmlm-0.53/ezmlm-return.c'? y
mv: overwrite `ezmlm-0.53/ezmlm-send.c'? y
mv: overwrite `ezmlm-0.53/ezmlm-sub.c'? y
mv: overwrite `ezmlm-0.53/ezmlm-unsub.c'? y
mv: overwrite `ezmlm-0.53/ezmlm-warn.c'? y
mv: overwrite `ezmlm-0.53/issub.c'? y
mv: overwrite `ezmlm-0.53/qmail.c'? y
mv: overwrite `ezmlm-0.53/qmail.h'? y
mv: overwrite `ezmlm-0.53/subscribe.c'? y
mv: overwrite `ezmlm-0.53/subscribe.h'? y
[root@konds2 Qmail_setup]#
[root@konds2 Qmail_setup]# cd ezmlm-0.53
[root@konds2 ezmlm-0.53]#  patch < idx.patch
patching file ezmlm-warn.1
patching file ezmlm-return.1
patching file ezmlm-send.1
patching file ezmlm-sub.1
patching file ezmlm-unsub.1
patching file ezmlm-list.1
patching file ezmlm.5
patching file log.c
patching file MAN
patching file BIN
patching file VERSION
patching file Makefile
patching file constmap.c
patching file constmap.h
patching file error.h
patching file error.c
patching file ezmlm-weed.c
patching file ezmlm-weed.1
[root@konds2 ezmlm-0.53]#

[root@konds2 ezmlm-0.53]# make mysql && make clean  && make man && make ch_GB && make setup

[root@konds2 ezmlm-0.53]# /usr/local/bin/ezmlm/ezmlm-mktab -d testlist | mysql -uezmlm -pezmlm -f ezmlm
ERROR 1051 at line 2: Unknown table 'testlist'
ERROR 1051 at line 7: Unknown table 'testlist_slog'
ERROR 1051 at line 8: Unknown table 'testlist_digest'
ERROR 1051 at line 9: Unknown table 'testlist_digest_slog'
ERROR 1051 at line 10: Unknown table 'testlist_mod'
ERROR 1051 at line 11: Unknown table 'testlist_mod_slog'
ERROR 1051 at line 12: Unknown table 'testlist_allow'
ERROR 1051 at line 13: Unknown table 'testlist_allow_slog'
ERROR 1051 at line 14: Unknown table 'testlist_deny'
ERROR 1051 at line 15: Unknown table 'testlist_deny_slog'
ERROR 1051 at line 16: Unknown table 'testlist_cookie'
ERROR 1051 at line 18: Unknown table 'testlist_mlog'
ERROR 1051 at line 19: Unknown table 'testlist_digest_cookie'
ERROR 1051 at line 20: Unknown table 'testlist_digest_mlog'
[root@konds2 ezmlm-0.53]# mysqlshow -u root -predhat ezmlm
Database: ezmlm
+------------------------+
|         Tables         |
+------------------------+
| testlist               |
| testlist_allow         |
| testlist_allow_slog    |
| testlist_cookie        |
| testlist_deny          |
| testlist_deny_slog     |
| testlist_digest        |
| testlist_digest_cookie |
| testlist_digest_mlog   |
| testlist_digest_slog   |
| testlist_mlog          |
| testlist_mod           |
| testlist_mod_slog      |
| testlist_slog          |
+------------------------+
[root@konds2 ezmlm-0.53]#

[root@konds2 Qmail_setup]# tar -zxf autorespond-2.0.2.tar.gz
[root@konds2 Qmail_setup]# cd autorespond-2.0.2
[root@konds2 autorespond-2.0.2]# ls
autorespond.c  help_message  Makefile  qmail-auto  README
[root@konds2 autorespond-2.0.2]# make
gcc -Wall -o autorespond autorespond.c
[root@konds2 autorespond-2.0.2]# make install
gcc -Wall -o autorespond autorespond.c
Installing...
cp autorespond /usr/local/bin/autorespond
chown root /usr/local/bin/autorespond
chgrp root /usr/local/bin/autorespond
[root@konds2 autorespond-2.0.2]# cp autorespond /usr/local/bin/
cp: overwrite `/usr/local/bin/autorespond'? n
[root@konds2 autorespond-2.0.2]# mv /usr/local/bin/autorespond /usr/local/bin/autorespond-df-nothing
[root@konds2 autorespond-2.0.2]# cp autorespond /usr/local/bin/

[root@konds2 Qmail_setup]# tar zxf igenus_2.0.2_20040901_release.tgz
[root@konds2 Qmail_setup]# cp igenus  /home/mail-obj/mail -r
[root@konds2 Qmail_setup]# vi /usr/local/apache/conf/httpd.conf
         <Directory /home/mail-obj/admin>
        AllowOverride All
        Options FollowSymLinks
        <Limit GET>
        order allow,deny
        allow from all
        </Limit>
        </Directory>

       <Directory /home/mail-obj/mail>
        AllowOverride All
        Options FollowSymLinks
        <Limit GET>
        order allow,deny
        allow from all
        </Limit>
        </Directory>

[root@konds2 Qmail_setup]# cd /home/
a         abckd     b         konds     mail-obj  vpopmail  web
[root@konds2 Qmail_setup]# cd home/mail-obj/
[root@konds2 mail-obj]# vi config/config_inc.php

修改config/config_inc.php文件。config_inc.php是igenus的配置文件,必须正确设置,具体设置如下:
# vi /var/www/igenus/config/config_inc.php

$CFG_BASEPATH = "/var/www/igenus";
$ CFG_BASEPATH -----是iGNEUS webmail安装在系统的路径。

$CFG_MYSQL_HOST = 'localhost';
$CFG_MYSQL_HOST -----是mysql服务器的地址。

$CFG_MYSQL_USER = 'root';
$CFG_MYSQL_USER -----是mysql服务器的用户名。

$CFG_MYSQL_PASS = 'mysql2003';
$CFG_MYSQL_PASS -----是mysql服务器的密码,根据你的实际填写

$CFG_LANGUAGE = gb;
$CFG_LANGUAGE-----是系统默认语言,可有中英日可选。

$CFG_GMT = +8; // GMT time local
$CFG_GMT----是时区设置,中国选+8。

$CFG_TEMP = $CFG_BASEPATH."/../temp";
$CFG_TEMP----临时文件的位置。

[root@konds2 mail-obj]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.23.49
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql> use vpopmail;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> drop table vpopmail;
Query OK, 0 rows affected (0.00 sec)

mysql> create table vpopmail
    -> ( pw_id int(5) unsigned NOT NULL auto_increment,
    -> pw_name varchar(32) NOT NULL default '',
    -> pw_domain varchar(64) NOT NULL default '',
    -> pw_passwd varchar(40) NOT NULL default '',
    -> pw_uid int(11) default NULL,
    -> pw_gid int(11) default NULL,
    -> pw_gecos varchar(64) default NULL,
    -> pw_dir varchar(160) default NULL,
    -> pw_shell varchar(20) default NULL,
    -> pw_clear_passwd varchar(16) default NULL,
    -> PRIMARY KEY (pw_id),
    -> KEY pw_name (pw_name,pw_domain)
    -> ) TYPE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
 
mysql> quit
Bye
[root@konds2 mail-obj]#


[root@konds2 mail-obj]# /home/vpopmail/bin/vadddomain konds.org
Please enter password for postmaster:
enter password again:
[root@konds2 mail-obj]# /home/vpopmail/bin/vadddomain konds.info
Please enter password for postmaster:
enter password again:
[root@konds2 mail-obj]#

[root@konds2 Qmail_setup]# tar zxf qmailadmin-1.0.6.tar.gz
[root@konds2 qmailadmin-1.0.6]# cp ../iceblood/en-us  ./html/en
cp: overwrite `./html/en'? y
[root@konds2 qmailadmin-1.0.6]# cp ../iceblood/en-us  ./html/en-us

[root@konds2 qmailadmin-1.0.6]# ./configure --with-htmllibdir=/home/mail-obj/admin --enable-qmaildir=/usr/local/qmail --enable-autoresponder-bin=/usr/local/qmail/bin --enable-ezmlmdir=/usr/local/qmail/bin/ezmlm --enable-cgibindir=/usr/local/apache/cgi-bin -enable-htmldir=/home/mail-obj/admin

[root@konds2 qmailadmin-1.0.6]# make && make install-strip
[root@konds2 qmailadmin-1.0.6]# chown -R vpopmail:vchkpw /home/mail-obj/admin/

- 作者: konds 2005年08月12日, 星期五 09:53  回复(1) |  引用(1) 加入博采

Linux下Java程序中中文显示的一些问题的总结 转自‘轻松生活’

此处一般指应用程序,不是WEB App.(或者是web app中生成的统计图形等)

通用处理原则: 1.存在中文字体 2.jre能找到中文字体 3. font.properties.xx.xx 和你的系统正确对应

我以Red Hat Enterprise Linux AS release 3 (Taroon Update 2) , LANG=zh_CN.GB18030, jdk 1.4.2_02  为例,说一下过程

(自己要按照自己的情况变化,不要照搬,例如我按照下面摘抄的就不行)

1.发现存在中文字体 /usr/share/fonts/zh_CN/TrueType

2.jre的lib目录下有 font.properties.zh_CN.Redhat8.0 ,但是我的redhat不是8.0 ,改成Redhat应该通用,于是复制一份到 font.properties.zh_CN.Redhat ,看看内容,发现里面已经设置了中文字体,最后一行也指明了中文字体的路径,于是 不用修改任何东西了

3.重新启动程序/或者webserver ,ok 显示成功了



下面的内容从各处摘抄而来.

1. Mandrake Linux 8.2 、JDK 1.4.1  ( 【作者:家居猫】 )

===============================================

   很多朋友在 Linux 下使用 Java 开发应用程序时发现中文显示不正常,在窗口应用中的中文显示为一串方块。这主要是由于字体设置不正确。JDK 自带的配置文件中,它所指定的中文字体不存在而造成了显示不正确。本文以 Mandrake Linux 8.2 、JDK 1.4.1 为例,简单的介绍了在 Linux 下 Java 中文环境的设置方法。其它 Linux 系统或 JDK 版本可参照本文作相应调整。

     首先,检查你的 /usr/share/fonts/ttf/gb 目录下是否装有中文字体 gbsn00lp.ttf 。如果没有,也可以用 Windows 字体目录下的 song.ttf 来代替。将字体文件拷贝到 Java 安装目录下的 jre/lib/fonts 下。

    第二,修改 Java 安装目录下的 jre/lib/fonts/fonts.dir 文件,将首行的 72 改为 73,然后添加下列内容:

        gbsn00lp.ttf -Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0

        注意:如果你用的是 song.ttf ,则应该将头部的 gbsn00lp.ttf 改为 song.ttf 。

    第三,在 Java 安装目录下的 jre/lib 目录中,将字体配置文件 font.properties.zh.Turbo 复制为 font.properties.zh 。然后修改 font.properties.zh 。将文件中所有的:

        -tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0 替换为:
        -Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0

    第四,用 JDK 自带的演示程序 SwingSet2 测试,如果看到中文菜单则说明设置成功。

===============================================

2. Java , Installanywhere 在 Redhat 上的中文问题解决方法     jacklondon [原作]

标准 jre/jdk 中只带了 redhat 6 的 font.properties, 我在 redhat 7.3 和 redhat 8.0 上都不能用。我们需要建一个 font.properties.zh.Redhat 放在 redhat 的 jre/lib 目录下。打开 /usr/lib/X11/fonts/ttf-zh 或者 /usr/share/fonts/zh_CN/TruType 下面的 font.dir, 将其中的一个中文字体名复制下来,比如 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1,按照 java 的字体规则改为 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1,将 font.properties.zh 中的内容复制到 font.properties.zh.Redhat 中。

我选用字体 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1 是因为在 redhat 7.3 和 redhat 8.0 上都能用。

因为 jre/jdk 找不到 Redhat 的 true type 字体,在文件 font.properties.zh.Redhat 最后加入

appendedfontpath=/usr/lib/X11/fonts/ttf-zh
appendedfontpath=/usr/share/fonts/zh_CN/TrueType

将字体名全部替换成 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

- 作者: konds 2005年07月26日, 星期二 19:23  回复(1) |  引用(1) 加入博采

Resin2.1.12的数据库连接池配置
Resin2.1.12的数据库连接池配置

Resin的确是比较狠的应用服务器,运行速度快,配置又简单!这里介绍一下Resin2.1.12的数据库连接池配置方法。

在%ResinHome%/conf/resin.conf中找到
<!--
- Sample database pool configuration
- The JDBC name is java:comp/env/jdbc/test
-->
在其下加入相应的信息可以连接到不同的数据库。

Mysql:
<resource-ref>
<res-ref-name>jdbc/blog</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-param driver-name="com.caucho.jdbc.mysql.Driver"/>
<init-param url="jdbc:mysql_caucho://localhost:3306/blog"/>
<init-param user="root"/>
<init-param password="****"/>
<init-param max-connections="20"/>
<init-param max-idle-time="30"/>
</resource-ref>

将相应的驱动放到%Resin/lib/%下。

MS-Sql:
<resource-ref>
<res-ref-name>jdbc/blog</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-param driver-name="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<init-param url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=blog"/>
<init-param user="sa"/>
<init-param password="****"/>
<init-param max-connections="20"/>
<init-param max-idle-time="30"/>
</resource-ref>
首先要下载安装sqlserver-jdbc-驱动,然后将其lib下的三个jar文件放到%Resin/lib/%下。

- 作者: konds 2005年07月25日, 星期一 17:02  回复(1) |  引用(1) 加入博采

Tomcat4.1.31的数据库连接池配置
本文是作者在配置廖兄的blog时用到的,刚开始使用Tomcat5.0.27,后又使用Tomcat5.5.4,但是配置数据库总有错误,后来发现时 context标志被取消的缘故。吾本性情中人,搞不定就换,于是就使用Tomcat4.1.31。主要参考FanyHan等人的相关文章,介绍了 Tomcat4.1.31这个版本下数据库连接池的配置,及程序对连接池的JNDI查找,并提供相应测试代码。最后指出配置及应用过程中的常见问题及解决 方法。

一、 Tomcat简介
Tomcat是Apache Jakarta的子项目之一,是Sun公司推荐的JSP、Servlet容器。作为一款优秀的应用服务器,Tomcat提供了数据库连接池、SSL、Proxy等许多通用组件功能,其中连接池是4.0以上版本的新增功能,应用非常广泛。
二、 该文配置环境
Tomcat4.1.31 + jdk1.4.2 + Sql Server 2000 + Win2000 AS
三、 对Tomcat4.1.31的DBCP配置
这里,将连接池置于tomcat的工程目录中的blog子文件夹(新建)下,JNDI名设为jdbc/blog,数据库服务器IP为localhost,SID为blog,配置步骤如下。
第一步:配置server.xml
在server.xml中找到
<!-- Tomcat Root Context -->
<!?
<Context path="" docBase="ROOT" debug="0"/>
-->
将其改为:
<Context path="/blog" docBase="blog" debug="0" reloadable="true">
<Resource name="jdbc/blog" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/blog">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name> <value>jdbc:microsoft:sqlserver://localhost:1433;databaseName=blog</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
参数说明:
Resource项:
<Resoure name="jdbc/blog" auth="Container" type="javax.sql.DataSource"/>
Resource项(即连接池的DataSource对象),有3个属性name、auth、type,name项是JNDI的名称定义,程序通过 JNDI才能找到此对象,这里取名jdbc/Sblog;auth项即连接池管理权属性,这里取值Container,申明为容器管理;type项即对象 的类型,这里取值javax.sql.DataSource,申明为数据库连接池。
在接下来的<ResourceParams>域内容里包含四个参数user、password、driverClassName、driverName,依次为数据库的用户名、密码、JDBC驱动和数据库地址。
factory参数:
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
即基础对象工厂,这里取值org.apache.commons.dbcp.BasicDataSourceFactory,即DBCP自带的工厂,也可以用别的。
DriverClassName参数:
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
即数据库的JDBC驱动名称,具体值为:
     Sql Server 2000: com.microsoft.jdbc.sqlserver.SQLServerDriver
首先要下载安装sqlserver-jdbc-驱动,然后将其lib下的三个jar文件放到
tomcat/common/lib下。
MySql:     org.gjt.mm.mysql.Driver
MySql的JDBC驱动包mm.mysql-2.0.14.jar。
Oracle8.1.7: oracle.jdbc.driver.OracleDriver
Oracle8.1.7的JDBC驱动包名叫classes.jar,一般位于Oracle安装目录下的ora81\jdbc\lib目录下,初始扩展名 为ZIP,需要手工把classes.zip改名为classes.jar,并放到tomcat/common/lib下。 oracle.jdbc.driver.OracleDriver此类由classes.jar提供。
url参数:
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;databaseName=blog</value>
</parameter>
即数据库的地址。(不同的数据库其地址都不相同)
username参数:
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
即连接数据库的用户名。
password参数:
<parameter>
<name>password</name>
<value>**</value>
</parameter>
即连接数据库的密码。
maxActive、maxIdle和maxWait参数:
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连 接。maxIdle是最大的空闲连接数,这里取值为20,表示即使 没有数据库连接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到超时为 止,也可取值9000,表示9秒后超时。

第二步:配置web.xml
打开webapps/ROOT/WEB-INF下web.xml,加入如下内容:
<resource-ref>
<description>SqlServer Datasource example</description>
<res-ref-name>jdbc/blog</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

第三部:配置tomcat(添加类)
将Microsoft SQL Server 2000 Driver for JDBC\lib目录下的三个jar文件拷贝到Tomcat安装目录的common\lib下。
配置完成!!

四、 测试代码
数据库如下:
新建一个名为blog的数据库,在里面创建一个表格:Create table test(id varchar(12),name varchar(30));
写一个jsp文件(testdb.jsp),将其置于webapps/ROOT目录下,打开tomcat运行该页面进行测试。
页面testdb.jsp的内容如下:

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import= "java.sql.* "%>
<%@ page import= "javax.naming.* "%>
<%
try{
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
//获取连接池对象
Object obj = (Object) ctx.lookup("jdbc/blog");
//类型转换
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String strSql = " insert into test(id,name) values(´00001´,´fany´)";
stmt.executeUpdate(strSql);
strSql = " select id,name from test ";
ResultSet rs = stmt.executeQuery(strSql);
if(rs.next()){
out.println(rs.getString(1));
out.println(rs.getString(2));
}
}catch(Exception ex){
ex.printStackTrace();
throw new SQLException("cannot get Connection pool.");
}
%>

运行tomcat,打开浏览器,输入http://localhost:8080/blog/test.jsp,正常情况下会在页面上看到"00001 fany"输出。

- 作者: konds 2005年07月25日, 星期一 17:01  回复(1) |  引用(1) 加入博采

resin(4)
Resin的使用和安装(4)

5、JSP编译指令PAGE:

<%@ page
language="java" //指出使用的语言是JAVA,这既是缺省的又是唯一合法选项
import="package.class1,...,package.classN" // 用于引入程序中需要使用的JAVA
//程序包,多个包之间用逗号分割
contentType="text/html;charset=gb2312" //制定输出的MIME类型
errorPage="URL" //指定一个JSP页面来处理任何当前页面并未处理的意外错误
isErrorPage="true | false" //该属性指示当前页面是否可以作为其他页面的错误处理
//页面,默认值false
isThreadSafe="true | false" //值为false表示Serverlet以单线程模式工作,值为true表示
//多个请求被一个Serverlet并行处理,默认值true
session="true | false" //true表示session可用,false表示session不可用
buffer="size | none" //确定out对象输出缓冲大小,默认大小为8KB
autoflash="true | false" //默认值为true,表示当缓冲满时将自动清空
extends="package.class" //指出将要生成的serverlet使用哪个超类
info="message" //定义当前JSP文件的一些相关信息,如作者,功能描述等
%>

实例:
<%@ page language="java"
import="java.util.*"
contentType="text/html;charset=gb2312"
%>
<html>
<head>
<title>JavaServer Pages Sample-Page你好</title>
</head>
<body>
<%=(new Date()).toLocaleString()%> </body>
</html>

6、JSP编译指令INCLUDE:

<%@ include file="relativeURL" %>

include指令用于在JSP文件转换成Serverlet时引入一个静态文件,这个文件可以是JSP
和HTML以及文本文件等。许多网站的每个页面都有一个同样的导航条,为了避免重复
,可以单独编写一个页面来描述这个导航条,然后利用include指令把这个文件包含在
每个主页面里。不过这种方法有一个缺点,因为这个导航条是在页面被编译时插入的
,如果导航条改变了,那么每个包含这个导航条的页面都必须重新编译。因此,如果
导航条经常改变,应该使用jsp:include动作来实现。

实例:

主文件(index.jsp)

<html>
<head>
<title>JavaServer Pages Sample-include</title>
</head>
<%@ page language="java"
contentType="text/html;charset=gb2312"
%>
<body>
<H1>当前时间</H1>
<%@ include file="time.html"%>
</body>
</html>

引入文件(time.html)

<%=(new java.util.Date().toLocaleString())%>

7、JSP操作指令INCLUDE(此操作指令的中文参数传入问题还没有解决):

<jsp:include page="relativeURL | <%=expression%>" flush="true"/> 或者

<jsp:include page="relativeURL | <%=expression%>" flush="true">
<jsp:param name="parameterName" value="parameterValue | <%=expression%>"/>
</jsp:include>

include动作的目的是把其他文件的正文插入到这个程序中来,在一定程度上重用代码,过度使
用会降低执行效率。前面已经介绍过include指令,它是在jsp文件被编译时引入文件,当被引入
文件做过修改,也不需要重新编译主jsp文件。

page="relativeURL | <%=expression%>" 指定需要包含文件的相对路径,可以使用jsp表达式
动态生成需要包含文件的相对路径。

flush="true" 此属性的值必须为true。

<jsp:param name="parameterName" value="parameterValue | <%=expression%>"/> 能为
引入文件传递参数。

实例:

主页面

<%@ page language="java"
contentType="text/html;charset=gb2312"
%>
<html>
<head>
<title>Include Actions</title>
</head>
<body>
<H1>带参数引入页面</H1>
<jsp:include page="11.jsp" flush="true">
<jsp:param name="gr1" value="aaabbb"/>
<jsp:param name="gr2" value="rossini"/>
</jsp:include>
</body>
</html>

引入页面

<%
String gr1=request.getParameter("gr1");
String gr2=request.getParameter("gr2");
out.print(gr1);
out.print(gr2);
%>

8、JSP操作指令FORWARD:

<jsp:forward page="relativeURL | <%=expression%>"/> 或者

<jsp:forward page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue | <%=expression%>"/>
</jsp:forward>

改动作把请求转到另外的页面,</jsp:forward>后面的代码将不能执行,因为已经转到其他
页面上去了,所以后面的代码不会被执行的。

实例:

主页面

<%@ page language="java"
contentType="text/html;charset=gb2312"
%>
<html>
<head>
<title>Forward Actions</title>
</head>
<body>
<jsp:forward page="11.jsp">
<jsp:param name="gr1" value="rossini"/>
<jsp:param name="gr2" value="126263"/>
</jsp:forward>
</body>
</html>

转到页面

<%
String gr1=request.getParameter("gr1");
String gr2=request.getParameter("gr2");
out.print(gr1+"#");
out.print(gr2);
%>

9、JSP操作指令PLUGIN

<jsp:plugin
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"

name="instanceName"
archive="URIToArchive,..."
align="bottom | top | middle | left | right"
height="displayPixels"
width="displayPixels"
hspace="leftRightPixels"
vspace="bottomTopPixels"
jreversion="JREVersionNumber | 1.1"
nspluginurl="URLToPlugin"
iepluginurl="URLToPlugin" >

<jsp:params>
<jsp:param name="parameterName" value="paramValue | <%=expression%>"/>
</jsp:params>

<jsp:fallback> text massage for user </jsp:fallback>

</jsp:plugin>

jsp:plugin动作用来根据浏览器的类型,插入通过java插件运行Applet所必须的OBJECT
或embed元素。

type="bean | applet"插件将执行的对象类型,用户必须在Bean和Aplet中指定一个。
code="classFileName"插件将执行的java类文件名称,在名称中必须包含扩展名。
codebase="classFileDirectoryName"插件将执行的java类文件的路径,默认与JSP文件
在同一个文件夹下
name="instanceName"Bean或Applet的实例名称,使得被同一个JSP文件调用的Bean或
Applet之间的通信成为可能
archive="URIToArchive,..."以逗号分隔的路径名列表,这些路径名用于预装一些将要使用
的class,这会提高applet的性能。


实例:

<%@ page
language="java"
contentType="text/html;charset=gb2312"
%>
<html>
<title>Plugin 实例</title>
<body bgcolor="white">
<h3> 当前的时间是 : </h3>
<jsp:plugin
type="applet"
code="Clock2.class"
codebase="/guorui"
name="time1"
jreversion="1.2"
width="160"
height="150" >
<jsp:fallback>
Plugin tag OBJECT or EMBED not supported by browser.
</jsp:fallback>
</jsp:plugin>
</body>
</html>

10、jsp:useBean操作指令:

<jsp:useBean id="beanInstanceName" scope="page | request | session | application" class="package.class"/>

该动作用来装载一个将在JSP页面中使用的JavaBean,其含义是创建一个package.class的
实例,然后把它绑定到变量ID上,并使用scope定义Bean的作用范围。

获得Bean的实例之后,要修改或获取Bean的属性就变得很重要

<jsp:setProperty name="beanInstanceName"
property="*" | property="propertyName" | property="propertyName" param="paramName" |
property="propertyName" value="string | <%=expression%>"/>

如果property的值是"*",表示所有名字和Bean属性名字匹配的请求中的参数都将传递给相应属性的set()
方法。
如果property的值是"propertyName",表示所有名字和Bean的propertyName属性名字匹配的请求中的参数都将传递给propertyName属性的set()方法。
如果使用property="propertyName" param="paramName"方式,则用指定的请求参数作为Bean指定属性
的值。

<jsp:getProperty name="beanInstanceName" property="propertyName"/>

个动作提取指定bean属性的值,转换成字符串然后输出。

实例:

主页面:

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<%!private int aa=0;%>
<HTML>
<HEAD>
<TITLE> JavaBean使用实例 </TITLE>
</HEAD>
<BODY>
<jsp:useBean id="test" scope="page" class="test.testBean"/>
1输入变量值:
<jsp:setProperty name="test" property="test1"/>
<form method="get">
<input type="text" name="test1" size="25">
<input type="submit" value="确定">
<input type="reset" value="清除">
<P>
你刚才输入的内容是:
<jsp:getProperty name="test" property="test1"/>
<P>
2输入变量值:
<jsp:setProperty name="test" property="*"/>
<form method="get">
<input type="text" name="test2" size="25">
<input type="submit" value="确定">
<input type="reset" value="清除">
<P>
你刚才输入的内容是:
<jsp:getProperty name="test" property="test2"/>
<P>
3输入变量值:
<jsp:setProperty name="test" property="test3" param="guorui"/>
<form method="get">
<input type="text" name="guorui" size="25">
<input type="submit" value="确定">
<input type="reset" value="清除">
<P>
你刚才输入的内容是:
<jsp:getProperty name="test" property="test3"/>
<P>
<jsp:setProperty name="test" property="count" value="<%=++aa%>"/>
你登陆的次数是:
<jsp:getProperty name="test" property="count"/>
</BODY>
</HTML>

JavaBean源码:

package test;

public class testBean{
private String test1="呵呵,还没有输入内容呢!!";
private String test2="嘻嘻,还没有输入内容呢!!";
private String test3="嘿嘿,还没有输入内容呢!!";
private String test4="哈哈,还没有输入内容呢!!";
private int count=0;

public testBean(){}

public void setCount(int s){
this.count=s;
}
public int getCount(){
return this.count;
}

public void setTest1(String s){
this.test1=s;
}
public String getTest1(){
return this.test1;
}

public void setTest2(String s){
this.test2=s;
}
public String getTest2(){
return this.test2;
}

public void setTest3(String s){
this.test3=s;
}
public String getTest3(){
return this.test3;
}

public void setTest4(String s){
this.test4=s;
}
public String getTest4(){
return this.test4;
}
}

- 作者: konds 2005年07月25日, 星期一 17:01  回复(1) |  引用(1) 加入博采

resin(3)
Resin的使用和安装(3)

五、其他问题

使用Resin可以和apache结合使用。也就是利用apache做http服务器,而Resin做srun服务器。可以参考

resinconfsamples目录下的apache.conf。主要就是把 app-dir 设成 /usr/local/apache/htdocs(也就是

apache的root)。同时在apache 中的http.conf也做了相应的设置。Resin还提供了对该过程的自动安装程式

,运行resininsetup,你可以在弹处的对话框中选择apache,这样子就可以了。只要你曾经安装过apache

,resin可以自己找到httpd.conf文件所在的路径。

使用命令行方式启动Resin,如果改动了Resin.conf,Resin会自己重新启动适应新的配置。这个很适合初期安

装时使用。

Resin对数据库缓冲池的支持很好。在这里,它提供了DBPool对缓冲池做了封装。实际使用时,只要在

resin.conf这样配置:

<dbpool.sql>

   <id>ORCL</id>
   <driver>oracle.jdbc.driver.OracleDriver</driver>
   <url>jdbc:oracle:thin:@localhost:1521:SMTH</url>

   <!-- <url>jdbc:oracle:oci8:@SMTH</url> -->

   <user>scott</user>
   <password>tiger</password>

   <max-connections>5</max-connections>

</dbpool.sql>

然后,在你的jsp或者servlet中就可以这样子使用了:

先导入 com.caucho.sql.*包,然后如下直接得到连接:

Connection conn = DBPool.getPool("ORCL").getConnection();

个人建议不要如上使用连接池,还是按照ejb的方法用从Context中直接找到的DataSource对象中得到连接通用

性比较好。代码也很简单:

Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(“jdbc/EmployeeDB”);
Connection conn = ds.getConnection();

在Resin中如下配置jdbc就可以了:

<resource-ref>
<res-ref-name>jdbc/EmployeeDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-param driver-name="com.caucho.jdbc.mysql.Driver"/>
<init-param url="jdbc:mysql_caucho://localhost:3306/test"/>
<init-param user="name"/>
<init-param password="password"/>
<init-param max-connections="20"/>
<init-param max-idle-time="30"/>
</resource-ref>

在Resin中conf中resin.conf中配置默认主页就可以了:

<welcome-file-list>index.jsp, index.html,index.xtp</welcome-file-list>



用Resin Web Server开发还是比较愉快的。只是没有像Weblogic 或者WebSphere那样子提供现成的管理控制台而已。但是从稳定性和方便性来讲,Resin个人认为比Tomcat要好很多。况且Resin还有提供 了resin-cmp 和 resin-ejb,功能更强大。

女人的美与男人的心

对一个年轻貌美女孩的追求,很能激发一个男人的进取心

古人云:未见好学如色者也

真知灼见
JSP标准语法

1、JSP的注释语法:

<%--comments--%>

其中,comments是你可以添加的任意文本注释,但是不能使用“--%>”,
如果非使用不可,请用“--%\>”

实例:
<%--
FileName:helloworld.jsp
Author:rossini
Date:2004-1-29
Note:显示一个"Hello World!"信息
--%>
<html>
<head>
<title>JavaServer Pages Sample-Hello World!</title>
</head>
<body>
<%
out.print("Hello World!");
%>
</body>
</html>

2、JSP的声明语法:

<%!declarations;... ;%>

(a)在JSP中使用到的变量和函数必须事先声明,并以分号“;”结尾
(b)在JSP声明中允许一次声明多个变量
(c)在JSP声明中,不但可以声明变量,还可以声明函数或者自定义类
(d)你可以直接使用在include编译指令中被包含进来的已经声明的变量
和方法,不能在当前的JSP程序中对它们进行重新进行声明;JSP声
明的作用范围是页面层的,一个声明只在一个页面有效;如果想在
每个页面都使用一些声明,最好把他们写在一个单独文件里面,然
后用include编译指令或者是<jsp:include>操作指令包含进来

实例:
<html>
<head>
<title>JavaServer Pages Sample-Declarations</title>
</head>
<body>
<%!String msg="变量声明";%>
<H1><%=msg%></H1>
</body>
</html>

3、JSP表达式语法:

<%=JAVA表达式%>

JAVA表达式是一个值,转换成字符串后插入到页面中,不能用分号(;)
来作为JAVA表达式的结束符。一个表达式可以变的很复杂,它可能由
多个合法的JAVA表达式组成,这些表达式执行顺序是从左到右。如果
一个表达式的结果不能转化为String类型,将会导致错误发生。

实例:
<html>
<head>
<title>JavaServer Pages Sample-Declarations</title>
</head>
<body>
<%!String msg="变量声明";%>
<H1><%=msg%></H1>
</body>
</html>

4、JSP程序段语法:

<% 程序段%>

(a)程序段中只能包含合法的JAVA语法的代码,不允许出现HTML标记,
JSP标记,JSP指令等元素。但是可以使用“<%”,“%>”标记,交错
使用JAVA代码、HTML标记。
(b)程序段中对变量的声明最好进行初始化,否则有些服务器可能会出错。

实例:
<html>
<head>
<title>JavaServer Pages Sample-dribs and drabs</title>
</head>
<body>
<%
String words="welcome!";
int font_size=0;
for(int i=0;i<8;i++){
%>
<FONT SIZE=<%=++font_size%>><%=words.charAt(i)%></FONT>
<%
}
%>
</body>
</html>

- 作者: konds 2005年07月25日, 星期一 17:00  回复(2) |  引用(1) 加入博采

在10g不支持的Linux发行版上安装10g的解决方法
一、乱码问题
Redhat RHEL AS3 下安装 Oracle DB 10g 中文乱码问题

  不少兄弟反映在rhel3下安装oracle10g时出现乱码, 其实在安装和使用时出现乱码的地方有多个, 可以分为三类:
  1. 安装时的乱码
  2. 一些应用程序的乱码, 比如 dbca, netca
  3. 一些基于oc4j的web应用的乱码, 比如 isqlplus, em

  造成这些问题的原因都是一个, 就是这些程序都使用jdk, 相应的jdk(或jre) 使用的字体配置文件 font.properties 中的字体和操作系统的字体或者字体配置文件不匹配. 解决的办法是把两者改成一致.

  1. 下载, 解包 ship.db.cpio.gz, 生成目录 Disk1

  2. cd Disk1/stage/Components/oracle.swd.jre/1.4.2.0.0/1/DataFiles/
  unzip all_except_bin.jar (这时生成一个 jre 的目录)
  cd jre/1.4.2/lib/
  mv font.properties font.properties.bak
  cp font.properties.zh_CN.Redhat8.0 font.properties
  cd ../../../
  zip -r all_except_bin.jar.new jre/
  mv all_except_bin.jar.new all_except_bin.jar
  (其实就是把 font.properties 文件换掉. 这样安装时汉字显示就没有问题了)

   3. 如法炮制, 把Disk1/stage/Components/oracle.jdk/1.4.2.0.0/1/DataFiles/sol_bin.1.1.jar 文件里面的font.properties 文件换掉, 创建数据库和执行网络配置时的乱码就没有了. isqlplus 和em 的乱码也解决了。

用IE登录Linux服务器上的em出现的乱码
  不知道大家有没有注意到,EM显示的中文翻译很是糟糕,up/down 动不动就翻译成“向上”“向下”,让人哭笑不得.很多朋友都说,干脆给显示英文算了,可是怎么显示呢?

  好了,现在我们有一种办法很容易的解决这个问题:

  打开你的IE浏览器,选择'工具"-->Internet选项-->常规

  选择“语言”,默认只有“中文”,选择“添加”,加入英语(美国),调整顺序,把”英语(美国)“放到最上面

  OK ,确定。

  打开你的 http://yoururl:5500/em

  问题解决了。


二、10g如何更改归档模式
   1. 对于初始化文件,只需要修改log_archive_dest_n 这个参数.n=1,2,3,....10, Oracle 缺省会使用log_archive_dest_10这个参数来使用flash recovery area里面存放的归档日志文件,大小由参数db_recovery_file_dest_size来决定.

  修改:
  log_archive_dest_1="location=c:\oracle\10g\...\archivelog quota_size=2G"
  ...
  如果归档使用flash recovery area, 上面的参数不需要指定任何值,Oracle 会自动使用db_recovery_file_dest这个参数所指定的路径。

  2. 启动sqlplus:
  startup mount pfile='....'
  alter database archivelog;
  (如果启用flashback, alter database flashback on)

  alter database open;
  archive log list(查看是否运行在归档模式)
  (如果前面的log_archive_dest_n没有设置,则会显示USE_DB_RECOVERY_FILE_DEST)

  3. 怎样变成noarchivelog 模式
  步骤基本同上。
三、用dblink在10G中做create table ..as select * from ..varchar2()的column宽度变成3倍
  问题描述:例如:varchar2(255)==>varchar(765)

  测试:1. 环境: 两台机器都装的10G的数据库
  2. 测试步骤和结果:

SQL> conn test1/test1@db10G_server1
SQL> create database link link_server2

connect to test1 identified by test1

using 'db10G_server2'
SQL> conn test1/test1@db10G_server2
SQL> create table test1_t1 as select * from all_objects

where rownum<=3000;
SQL> desc test1_t1;
Name Null? Type

---------------------------------------------------------------

OWNER VARCHAR2(30)

OBJECT_NAME VARCHAR2(30)

SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER

DATA_OBJECT_ID NUMBER

OBJECT_TYPE VARCHAR2(19)

CREATED DATE

LAST_DDL_TIME DATE

TIMESTAMP VARCHAR2(19)

STATUS VARCHAR2(7)

TEMPORARY VARCHAR2(1)

GENERATED VARCHAR2(1)

SECONDARY VARCHAR2(1)
SQL> conn test1/test1@db10G_server1
SQL> create table test1_linkt1 as

select * from test1_t1@link_server2;
SQL> desc test1_linkt1
Name Null? Type

----------------------------------------- -------- ----------------

OWNER VARCHAR2(60)

OBJECT_NAME VARCHAR2(60)

SUBOBJECT_NAME VARCHAR2(60)

OBJECT_ID NUMBER

DATA_OBJECT_ID NUMBER

OBJECT_TYPE VARCHAR2(38)

CREATED DATE

LAST_DDL_TIME DATE

TIMESTAMP VARCHAR2(38)

STATUS VARCHAR2(14)

TEMPORARY VARCHAR2(2)

GENERATED VARCHAR2(2)

SECONDARY VARCHAR2(2)


  表结构一样,但是列的长度确实变了, 通过dblink创建的表的varchar2列的长度是原表的两倍

  再来看看字符集

  1.Server1上的数据库字符集

SQL> column value format A20
SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';

value
--------------
ZHS16GBK



  2. Server2上的数据库字符集

SQL> conn test1/test1@db10G_server2
SQL> column value format A20
SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';

value
--------------
AL32UTF8


  结论: 与数据库字符集不同有关系.

四、在10g不支持的Linux发行版上安装10g的解决方法
  正常安装的10g只支持Red Hat Enterprise Linux 2.1 and 3, and on UnitedLinux 1.0。如果是其它的版本,比如fedora,rh9等,10g将会说不支持,而不允许安装,解决方法如下:

  1.运行runInstaller -ignoreSysPrereqs,这样会跳过检查

  2.修改/etc/redhat-release文件,让10g认为自己处于支持的操作系统中,运行下面的命令即可

su - root
cp /etc/redhat-release /etc/redhat-release.backup
cat > /etc/redhat-release << EOF
Red Hat Enterprise Linux AS release 3 (Taroon)
EOF


  安装完毕,再将那个文件还原:

su - root
cp /etc/redhat-release.backup /etc/redhat-release



  3.同样的思路,我们可以去修改Oracle 的install/oraparam.ini文件:

[Certified Versions]
Linux=redhat-2.1,UnitedLinux-1.0,redhat-3


  把这个屏蔽掉,或者是添加新的内容:

[Certified Versions]
Linux=redhat-2.1,UnitedLinux-1.0,redhat-3

[Linux-redhat-2.1-optional]
TEMP_SPACE=80
SWAP_SPACE=150
MIN_DISPLAY_COLORS=256

[UnitedLinux-1.0-optional]
TEMP_SPACE=80
SWAP_SPACE=150
MIN_DISPLAY_COLORS=256

[Linux-redhat-3.0-optional]
TEMP_SPACE=80
SWAP_SPACE=150
MIN_DISPLAY_COLORS=256


  对这个地方定制一下就可以了。
  注:有兴趣的朋友不妨测试一下,其实在这个地方可以定制很多东西的,但是不推荐在正式的应用中这么做。

- 作者: konds 2005年07月25日, 星期一 16:47  回复(1) |  引用(1) 加入博采

RedHat Linux网络服务器构架实务(6)
  2 编写逻辑层代码 
  ##在客户端创建dbbridge.jsp,然后上传到服务器端即可:

  ##上级要来视察某官僚的工作,只见该官僚指挥若定:
  ##逻辑层对处理层说:小子,去跟我的后台联络一下。  //连库并初始化
  <jsp:useBean id="bridge" class="com.gledecity.yesgo.sql.DBBridge" />
  ##逻辑层对处理层说:把我们今年的工作成果准备一下。  //执行SQL语句
  <%bridge.execSQL("select * from prov");
  ##逻辑层对处理层说:材料准备好了?干得好!上级一来看到一片数据。//循环显示
  while(bridge.next())
  {   out.print(bridge.getString("prov_id")+bridge.getString("prov_name")+"<br>");}
  ##逻辑层对处理层说:好了好了,政绩显示完毕,你们通通滚蛋吧。 //关闭所有变量
  bridge.close();%>
  ##上级看后非常满意,拍拍官僚的肩膀:"干得不错!"官僚一高兴,说:"哪里哪里,都是下属办事得力!"

  3 测试该程序
  lynx http://www.yesgo.loc/dbbridge.jsp 
  ##当然你也可以在客户端浏览器测试,只是你需要将你服务器的IP添加到你网络设置中的DNS列表中。



  ##处理的结果是数据库中所有的数据:

  1安徽
  2北京
  3重庆
  4福建
  5甘肃
  6广东
  7广西
  8贵州
  9海南
  10河北
  11黑龙江
  12河南
  13湖北
  14湖南
  15内蒙古
  16江苏
  17江西
  18吉林
  19辽宁
  20宁夏
  21青海
  22山西
  23陕西
  24山东
  25上海
  26四川
  27天津
  28西藏
  29新疆
  30云南
  31浙江
  32香港
  33澳门
  34台湾

  例四:测试PHP
  1 创建源文件
  touch /home/www/test.php
  chmod 701 /home/www/test.php

  2 编辑源文件
  vi test.php 
  ## 源代码如下:
  <?
  phpinfo(); 
  ?> 

  3 测试该程序
  lynx http://www.yesgo.loc/test.php 
  //结果是大家熟知的服务器端变量列表。

  Step 17 Configuration debug

  ##调试过程可能的错误如下:

  常见错误一:You don't have permission

  Forbidden
  You don't have permission to access / on this server. 

  Apache/1.3.22 Server at www.yesgo.loc Port 80

  原因可能是:

  1、你没有为该目录或者该文件设置guest组权限;
  2、你没有将该文件名设置为默认页面,尤其是在仅用域名访问的情况下。 
  解决办法:
  chmod 701 /home/www
  chmod 701 /home/www/*

  vi /usr/local/apache/conf/httpd.conf
  DirectoryIndex index.html index.jsp index.xtp index.php index.php3

  常见错误二:404 Not Found

  404 Not Found
  /index.jsp was not found on this server. 

  Resin 2.0.5 (built Thu Nov 15 17:56:24 PST 2001)

  原因可能是:
  1、你请求的文名输入错误;
  2、你没有在resin.conf和httpd.conf中都建立相应的主机。

  解决办法:
  1、检查文件名,尤其注意大小写问题; 
  2、参照Resin install步骤中的配置支持JSP的虚拟主机部分。

  常见错误三:java.lang.ClassNotFoundException

  500 Servlet Exception
  java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
    at com.caucho.util.DynamicClassLoader.loadClass(DynamicClassLoader.java:479)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:120)
    at _cnmysql__jsp._jspService(/cnmysql.jsp:4)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
    at com.caucho.jsp.Page.subservice(Page.java:485)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:176)
    at com.caucho.server.http.Invocation.service(Invocation.java:278)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
    at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:338)
    at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:270)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)

  Resin 2.0.5 (built Thu Nov 15 17:56:24 PST 2001)

  原因可能是:
  1、你没有安装驱动程序;
  2、驱动程序没有设置到系统CLASSPATH中。

  解决办法:
  参见 Classes Install 和 edit /etc/profile两部分



  常见错误四:Invalid authorization specification

  500 Servlet Exception
  java.sql.SQLException: Invalid authorization specification: Access   denied
  for user: 'hongze@ns.langkey.loc' (Using password: YES)
    at org.gjt.mm.mysql.MysqlIO.init(MysqlIO.java:330)
    at org.gjt.mm.mysql.Connection.connectionInit(Connection.java:261)
    at org.gjt.mm.mysql.jdbc2.Connection.connectionInit(Connection.java:89)
    at org.gjt.mm.mysql.Driver.connect(Driver.java:167)
    at java.sql.DriverManager.getConnection(DriverManager.java:517)
    at java.sql.DriverManager.getConnection(DriverManager.java:177)
    at _cnmysql__jsp._jspService(/cnmysql.jsp:5)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
    at com.caucho.jsp.Page.subservice(Page.java:485)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:176)
    at com.caucho.server.http.Invocation.service(Invocation.java:278)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
    at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:338)
    at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:270)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)

Resin 2.0.5 (built Thu Nov 15 17:56:24 PST 2001)

  原因可能是:
  1、源代码中的主机名、数据库名、帐号或者密码输入错误;
  2、如果数据库名、帐号、密码均正确,那说明是主机名不匹配;
  3、如果使用数据源连库,检查数据源的设置和源代码中名称是否输入正确。

  Solution:
  1、参见Resin install和Server test两部分;
  2、注意:数据库的连接不仅仅是帐号和密码决定的,而是由主机名、数据库名、用户名和密码四个参数决定的。

  常见错误五:Invalid authorization specification

  500 Servlet Exception
  java.lang.AbstractMethodError
    at _cnmysql__jsp._jspService(/cnmysql.jsp:11)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
    at com.caucho.jsp.Page.subservice(Page.java:485)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:176)
    at com.caucho.server.http.Invocation.service(Invocation.java:278)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
    at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:338)
    at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:270)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)

  Resin 2.0.5 (built Thu Nov 15 17:56:24 PST 2001)

  原因可能是:

  1、你安装的JDK版本太低以至于JDBC版本并不是2.0的;
  2、更大的可能性是你的驱动程序不支持JDBC2.0,JDBC只是提供了抽象类接口,它需要驱动程序作为其实体类来具体实现。

  解决办法:
  1、升级JDK,我的建议是 is j2sdk-1_3_1_01-linux-i386.bin,参见Jvm install部分;
  2、替换数据库驱动,你很有可能使用的是mysql_comp.jar ,使用 mm.mysql-2.0.4-bin.jar.zip替代它。

  常见错误六:中文乱码

  可能的原因:
  安装操作系统时候,你没有选择i18n的简体包也没有在源文件中加以处理
  解决办法:
  1、Html方式,添加如下一行到你的JSP源代码:
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  2、JSP方式一:
  <%@ page contentType = "text/html; charSet=gb2312" %>
  3、JSP方式二:
  一般说来使用Resin作为JSP引擎是不需要本方法的,我就从来都没用到,只有使用象Tomcat之类的东东才可能用到这个繁琐的方法,不过这个方法也有它的好处,就是提高了程序的可移植性,不至于换了系统或者引擎就乱码了。
  <%
  String chs="这个方法肯定可以!";
  byte[] bchs=chs.getBytes();
  out.print(new String(bchs,"8859_1"));
  %>

- 作者: konds 2005年07月25日, 星期一 15:06  回复(1) |  引用(1) 加入博采