博文

目前显示的是 六月, 2006的博文

转载一段

李晨那天晚上2点突然在qq群里说
————————————————————————————————————
昨天天气热死了.我晚上去玩QQ游戏,QQ堂.遇见一个人开了个1vs1的房.我就进去了。
玩了一会,我说:"大事不好了~".
她说:"?" .
我说:"我被蚊子围攻了,身陷敌营,被咬的好痒啊"
她说:"晕~"
过会儿又说:"涂点花露水会好些的"
其实我当时没有被咬,是说的玩的~
但我真觉得心里很舒服
我遇见个好人就会很高兴。。
原来能得到别人的帮助是如此幸福
所以自己更要多去帮助别人
其实我昨天以前一直认为花露水对蚊子咬的疙瘩没什么作用
真的,,从来不用花露水涂在疙瘩上
那天晚上,我就故意去喂蚊子
想试试她的建议
我故意让要在不同的部位
然后我就涂花露水。
呵呵,还真管用了!一会就下去了
我很高兴啊,看着那些疙瘩不见了
她说的方法真管用啊 ~~
可我以前却不以为然
顺便说一下,我去厕所找的蚊子~~
那里多,好控制咬的部位~~
我从她身上学到不少东西~~
1。花露水对疙瘩有用(就像发现新大陆一样)
2。很多事情并不象我们之前想的那样 .
我以前认为花露水没用,是因为自己缺乏耐性,花露水见效稍微慢一点,大概平均1分半
3。应该多听听别人的意见 .
4。有时一点点小帮助都会起到很大的作用,尤其是内心上
5。控制蚊子咬的方位实在不易。。
第5点很重要
被蚊子咬时,你处于被动,事情很难随人所愿
蚊子是主动,总能把握先机
所以,我们很多时候也应该主动一点。
大家有什么看法吗?
————————————————————————————————————
最后一段很值得人回味。
其实很多东西,很多老人很在乎而如今因为嫌繁琐嫌落后被我们丢弃的,例如蚊帐例如花露水例如布鞋。很多啊很多,我们没有它们一样能生活,我们觉得。
可是,有时一点点小帮助都会起到很大的作用,尤其是内心上
而我们平时,受伤最重的,恰恰是内心,整日抱怨生活的艰辛,被压的喘不过气来。
为什么不能让自己更舒坦的生活呢?
如果你觉得,"应该多听听别人的意见"这句话是有价值的话,那么不妨听听他的意见。
很多事情并不象我们之前想的那样 .

make index

郁闷郁闷郁闷!!!!
原来这个port 2周前已经被提交了。
我非常之郁闷。
我当时在/usr/ports下make search name=chmsee什么结果都没有
后来,后来!!!!
发现原来是我很久没有make index了
阿门!!!!

28%的 ports缺人维护

刚在FreeBSD.org逛了逛,发现28%的 ports缺人维护
哎……

好累啊

不过是更新一个port吗,至于这么累吗?
更新port的几个主要步骤:
1。作diff
可以利用/usr/ports/Tools/scripts/patchtool.py来作,这个脚本的文档在
/usr/ports/Tools/scripts/README.patchtool
也可以手动作
diff -ruN xxx.old xxx
2。将diff通过send-pr提交
category 一栏写 ports
synopsis的开头写上 [maintainer update]
PR 的 “Class” 设置为 maintainer-update
“如果 diff 超过了 20K, 请考虑压缩并对其进行 uuencode; 否则,简单地将其
原样加入 PR 即可。”(这句话不明白。我没用过uuencode发邮件,好古老的办法啊。
要注意的事项还是,反复测试。
哎,loki库太挑剔编译器了。0.1.5版我已经编译通过,但是make test失败。
at last,谁有什么好做的差使不妨交给我。

loki1.5发布

https://sourceforge.net/projects/loki-lib
sourceforge上loki 1.5已经出来了
我该向FreeBSD递交update了
以前还没有做过,嗯,不知道是不是和添加new port一样麻烦

nero

原来nero也有虚拟光驱
原来nero刻录的镜像只有nero自己能读
OMG~
反正现在能用了,将就着用吧
讨厌这种不开放的专有格式

安全等于进展加保持

16:26 2006-6-24
安全等于进展加保持。进展:一个良类型系统不会受阻(要么它是一个值,要么它根据求值规则作下一步)
保持:如果一个良类型项做进一步求值,那么所得到的项也是良类型的。我对此的一个奇怪的理解是,一个良类型系统的值构成一组基,由它的运算所组成的表达式构成一个群。它对其运算保持封闭,具有群的一切"稳定性"。对于进展,我们只能理解为,它不会到达一个意外的受阻状态。并非所有的项都可以规约为值。例如
(λx. x x)(λx. x x)。不过这个是一个无穷的递归,与我们所要讨论的类型系统无关。说到这里,我觉得ocaml很特别的一点就是可以定义一个无穷项的数组,例如1,-1,1,-1...,然后对其操作。编译器当然不会为这样的数组的每个元素真的去划分空间,肯定是以某种方式将其递归定义暗地存了起来。例如这种数组本来就是对自己递归定义的。可是这样的数组有什么用呢?我暂时没有想到。我们可以利用其构造一个数学意义上的数列,然后对其取任何一项。但是我们并不能对其所有项求和。也许这样做仅仅是能让我们以一种简单的方式可以获取其第n项。也许我们可以把fibnacci函数封装在一个类体里然后重载operator[]可以达到同样的视觉效果。然后呢?我们可以把这个operator作为一个functor在构造的时候传入,并作为private成员存储,然后我们还可以定义operator+,operator-,operator*,operator/,方式就是用原有的两个operator[]构造一个新的functor,利用STL现有的functor就可以很简单的完成这个组合。然后呢?这样意义上的数组有什么用?不知道,哈哈!嗯,或许我们可以利用这个,加上误差估计技术,将一个函数用某种级数展开,然后进行某种运算例如逐项求导,然后利用误差估计技术,选其前N项求和,然后得到我们要的答案,精确到10^-n次方的一个解。或许吧。跑题了,我本来是想感叹下lamda演算的伟大呢。
谁能告诉我lamda演算是什么?我的理解就是反复的项的代入替换规约。可是并非如此,对于代入替换,lamda演算有自己的定义。lamda演算本身并不是代入替换。它是什么?它太奇妙了。我们可以用它来模拟无类型数值演算,利用lamda演算的奇妙特性定义Church数值和Bool常数,定义递归函数。OMG~不会lam…

中木马了

似乎又是IE的iframe 漏洞
事件类型: 信息
事件来源: ITSS
事件种类: 无
事件 ID: 1
日期: 2006-6-17
事件: 17:30:45
用户: N/A
计算机: SNNN
描述:
事件 ID ( 1 )的描述(在资源( ITSS )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL
文件来从远端计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分:
mhtml:c:\.mht!http://bbs.ssss.com/q6/1.js,
http://go.microsoft.com/fwlink?LinkID=45834.
为了防止有人受害我把地址去掉了

全抗全吸

100个Ultima,再加100个shell,放在elem-def上,对所有的元素攻击全抗全吸。
elem-atk上放了99个death,于是就有了99%的death附加属性。不过很多怪物都是抗death的,尤其对于boss更是如此。一般的低级怪物,还有人类小兵,用death杀起来简直太爽。
death不起作用的时候我就换100个Pain,引起"中毒、黑暗、沉默"状态。它自动掉血,而且不能使用魔法。而且用物理攻击打我一般都是miss.
偶尔也换下Pain放Drain,尤其对于Squell这种高攻击力的角色,打一下3000多再补3000多的血,还对所有元素攻击全抗全吸,太可怕了!
disc1中在sorceress的room里漏了一个GF,现在真是心痛不已……
Odin什么时候去拿呢……考虑中,我想先把陆行鸟凑齐

杀毒

刚刚遇见一个卡巴查不出来的毒,相当之利害
可能很多人都中了,所以最近防火墙老响
刚上网的时候正常。30s过后,网络就会被smss的对外的syn-sent的Dos完全堵塞掉
但是这个是一个老病毒了,莫非是变种?

爱情之外

今天朋友给我看了一篇他写的关于大学生恋爱观的短文。我看了后,笑了笑。没有什么可说的。不知从何时起,八股之风已无处不在。有人说是高考命题作文所致,以我之见,恰而相反。是八股之风害了高考。当面临爱情时,怕就怕没有自己的想法。有人问,所谓的爱情,除了满足性需求、占有欲、被认同感,摆脱孤独外,还算什么?它就像一个大杂货桶,我们守在前面,各取所需。不奇怪,人类本来很多很本能的、自发性行为,现在都带上了很强的目的性。我们妄图用意志去控制一切,甚至爱情。然而这所谓的"控制",不过是扼杀。不是说因为上大学了因为我们满18岁了,于是我们就成熟了,可以安全的产生并享受爱情了。Not at all!
成熟,是物体稳定保持一持续状态。而大学,不过是个起点。对于未来我们一无所知。没有人可预计四年后又将是一个怎样的改变。我将在哪里?她将在哪里?我们生活在怎样的环境中?各自走着怎样的路?于是这是一场没有许诺的爱。
无论你渴望的是什么,只要你舍得舍弃,一切都让爱去满足吧。just enjoy love.

[歪说]短信是面向datagram的,不可靠的传输协议

短信是面向datagram的,可多播的,不可靠的传输协议。类似于UDP.
电话是面向connection的,peer2peer的,可靠的传输协议,类似于TCP.
要在不可靠的传输协议上建立可靠的传输也是可以的,例如如果发现短信发出后长时间没有收到回应(timeout),那么就拨下我的电话,响一声后挂断。
类似的,如果拨我的电话时提示已关机,那么大概我是在睡觉,或者手机没电了。请给我发条短信提示你刚给我打过电话期待回电。
当然,为了避免陷入死循环,当你发现短信发出后长时间没有收到回应且拨我的电话时提示已关机,那么请稍候再试。sorry.

打补丁

用GeForce显卡玩Final Fantasy VIII出现横向条纹,但是如果选择sofeware
renderer就没有问题。后来发现需要打专用补丁,郁闷……

终堕于GBK

网上下的小电影发现文件名在FreeBSD下无法正常显示。
然后把locale设置为zh_CN.GBK,mount_ntfs的时候-C参数也改成这个。
以前用的是GB2312
嗯,好了。
期待着某年某月某一天,X能支持GB18030

isastream消失了?

系统中找不到这个函数,ace中有
我写了个小函数intisastream_main(constchar* path){ int fd=ACE_OS::open(path,O_RDONLY); if(fd<0) ACE_ERROR_RETURN((LM_ERROR,ACE_TEXT("打开失败%s失败:%m\n"), path),-1); if(ACE_OS::isastream(fd)==0) std::cout<<path<<"不是流设备"<<std::endl; elsestd::cout<<path<<"是流设备"<<std::endl; } 结果测试发现所有文件都返回是。
和apue中写的不一样。
自己写一个实现intisastream(int fd){ return (ioctl(fd,I_CANPUT,0)!=-1); } isastream.cpp:38: error: `I_CANPUT' undeclared (first use this function)
更不用说putmsg,getmsg了,都消失了~哎!

用winNT引导器引导FreeBSD6

绝对简单可行
把/boot/boot1复制到win下,例如,C:\BOOTSECT.BSD
然后在C:\boot.ini的末尾加一行
C:\BOOTSECT.BSD="FreeBSD"
就好了。
前提是必须是FreeBSD5以上。而且FreeBSD和win必须在同一块硬盘上。
老的方式是用dd把引导记录dump出来,现来看来似乎不需要了,嘿嘿,就这么简单,复制下这个文件就够了。
小知识:什么是boot1
FreeBSD 的启动分为很多步,写在MBR中的叫做boot0,最先被执行。其次是boot2,写在FreeBSD的分区的/boot目录下。
那么boot1是什么呢?boot1就是一个小巧的软盘启动器。

寂静岭

刚看完电影版的寂静岭
女人真是可怕~
恐怖片的主角总是一个充满怨气的小女孩,例如为了一个糖葫芦而毁掉整个村镇
女人真是可怕~
喜欢寂静岭这种阴暗的风格,那种灰白嵌以暗红,构成僵尸与教堂,黑暗与神圣的
主色。一个典型就是游戏恶魔城的背景。
为什么喜欢这种阴暗呢?是因为它衬出人的血性。当一个人出现的时候,你可以看
出她是活生生的一个人。她有普通的日常穿的上衣,和性感的胸部。而若看其它游
戏,很多人女性角色的身体比例都是被严重扭曲,着装更是可怕。很难想象那些变
态们在设计时心理想些什么。
Mother is the god of child.
整个片子,以forgive而结终。
(今天的球没有什么好看的,除了干吼)
女人真是可怕~
记住了,对于女人,宁可饿死她用鞭子抽死她,也不要惹她怨恨,否则……

gaim终于又可以用了

以前是我手动打的第三方的补丁,能上,但是不能使用群
后来发现ports中的openq已经加了patch了,重新编译,一切ok
gaim中的字体很漂亮,喜欢!
但是gaim-openq不支持代理,郁闷~

出错处理代码应占到40%

出错处理代码应占到40%个人感觉,平时写C/C++代码的时候,错误处理部分往往占了绝大多数。
例如
if(ACE_OS::chdir(dirp.d_name)!=0)
ACE_ERROR_RETURN((LM_ERROR,ACE_TEXT("%I进入到目录%s失败:%m\n"),
dirp.d_name),-2);任何函数调用都必须用一个if...else包含起来。除非真的可以确保它不失败。去年学用win api的时候深有此感,以为是win api接口不友善。后来发现要写一个健壮的应用程序,必须这样。想想也是,一个程序执行的时候那么多个分支,属于正常态的,有几个?唉,XP太滥,重装重装ing....

关于byte的大小

一般人的理解是1Byte等于8bit
对于一个C程序员就不一样了。
C99中的定义是
byte addressable unit of data storage large enough to hold any member of the
basic character set of the execution environment.
basic character set是指与locale无关的字符集
而在rfc中,也很少用byte做数据长度单位。
用的是octet.
而在C语言中,(不是C++),单个字符的类型是int.而它的值,必须在unsigned char的可表示
的范围内,而它实际上,一般是按char方式,转换到int,然后存储。
例如
如果char是无符号类型,那么'\xFF'这个字符就应该等于-1.
很晕吧?我也不知道为啥他们要把这个搞得这么麻烦

线程安全的readdir

我把apue的第一个程序示例,“列出一个目录中的所有文件”,改用线程安全的readdir_r重写了一次#include <sys/types.h>#include <dirent.h>#include <iostream>intmain(int argc,char* argv[]){ setlocale(LC_ALL,""); if(argc != 2){ std::cerr<<"Wrong number of arguments! Need one"<<std::endl; return -1; } constchar* dirname=argv[1]; DIR* dp=opendir(dirname); if(dp==NULL){ std::cerr<<"error when 'opendir' "<<dirname<<std::endl; return -1; } else{ dirent dirp; dirent* result; int error; while(( error=readdir_r(dp,&dirp,&result)) ==0){ if(result==NULL) break; ///读完了std::cout<<dirp.d_name<<"\n"; } closedir(dp); } return0; } intreaddir_r(DIR *dirp, struct dirent *entry, struct dirent **result); readdir_r的result要么返回NULL,代表结束,要么指向entry.

apue实验之:utime

/*! \file main.cpp * \brief 使用utime设置文件时间 * \date 05 6 2006 15:39:35 * \author "cyper - sun" <me@sunchangming.com> */#if HAVE_CONFIG_H# include <config.h>#endif#include <iostream>#include <argtable2.h>#include <ace/Log_Msg.h>#include <ace/OS.h>#include <ace/SString.h>#include <sys/types.h>#include <utime.h>//#include "main.h"#ifndef VERSION#define VERSION "0.0.1"#endifstruct arg_file *files; struct arg_lit *help, *version; struct arg_end *end; voidutime_main(constchar* filename); intACE_TMAIN( int argc, ACE_TCHAR* argv[]){ ///将日志输出到STDERR和SYSLOG ACE_LOG_MSG->open(argv[0],ACE_Log_Msg::STDERR|ACE_Log_Msg::SYSLOG); setlocale(LC_ALL, ""); ///分析optionsvoid* argtable[]={ help = arg_lit0(NULL,"help", "display this help and exit"), version = arg_lit0(NULL,"version", "display version information and exit&q…

apue实验之:unlink

#if HAVE_CONFIG_H# include <config.h>#endif#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <ace/OS.h>#include <ace/Log_Msg.h>#include <iostream>/* 用unlink删除一个文件的时候,他会自己从目录下消失,但是 * 磁盘空间不会被立即释放。只有所有打开它的fd都关闭后, * 才会被释放 */intmain(int argc,char* argv[]){ constchar* filename=argv[1]; if(ACE_OS::open(filename,O_RDWR) <0) ACE_ERROR_RETURN((LM_ERROR,ACE_TEXT("%p\n"), ACE_TEXT("打开文件失败")),-1); if(ACE_OS::unlink(filename)!=0) ACE_ERROR_RETURN((LM_ERROR,ACE_TEXT("%p\n"), ACE_TEXT("删除文件失败")),-1); std::cout<<"文件已删除"<<std::endl; ACE_OS::sleep(15); std::cout<<"done"<<std::endl; return0; } 这个是测试结果
$ ls > tmp
$ df .
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s3f 69491632 21201954 42730348 33% /usr
$ ./unlink tmp &
[2] 1630
$ 文件已删…

apue实验之lstat

/*! \file file.cpp * \brief 使用lstat函数打印文件属性 * \date 05 6 2006 14:43:22 * \author "cyper - sun" <me@sunchangming.com> */#if HAVE_CONFIG_H# include <config.h>#endif#include <sys/types.h>#include <sys/stat.h>#include <iostream>#include <ace/OS.h>#include <ace/Log_Msg.h>intmain(int argc,char* argv[]){ ///struct关键字不能省略///C下必须,C++下可选,但是由于某个函数与struct同名///所以C++下也必须加上struct stat sb; //memset(&sb,0,sizeof(sb));constchar* name; ///属性名for(inti(1);i!=argc;i++){ std::cout<<argv[i]<<": "; if (ACE_OS::lstat(argv[i],&sb)!=0){ ACE_ERROR((LM_ERROR,ACE_TEXT("%p\n"), ACE_TEXT("获取文件属性失败"))); } else{ if(S_ISBLK(sb.st_mode)) name="block special file."; elseif (S_ISCHR(sb.st_mode)) name="character special file."; elseif (S_ISDIR(sb.st_mode)) name="directory"; elseif (S_ISFIFO(sb.st_mode)) name="pipe o…

失败

本来准备趁周末用C++做一个无类型lamda演算的解析器,看来是不行了,无止尽的编译错误bison2和bison1差别太大了,即使是bison2.1的info也和bison2.0的差异甚大。犯贱,ocaml有啥不好我偏要用flex/bison唉……这东西真是三天不用手生,太麻烦了不干了不干了,赶紧写阿Q正传的读书笔记,周二就要交了

南电信,北网通

http://star.hyinfo.net
我向朋友们强烈推荐这个网站,因为打开速度很快,后来有人抱怨说几乎完全打不
开,我很纳闷。
后来才知道,有“南电信,北网通”一说。
虽说以前也听过这个笑话,“世界上最远的距离不是天涯海角,而是电信与网通”,
至今才发现这个问题已经相当之严重。前几天,新闻上不是又暴露出苏南某市私搭
线路盗用铁通路由的事情吗?垄断,究竟该怎么看?当时,记得某某人说过,“反垄断法是美国历史上最失败的一部法”。唉……
关于反垄断,一个普遍观点是反垄断的请求应该由消费者提出而不是它的竞争对手。我们不妨拿微软来举例。
为什么针对微软的反垄断提案,这么多年了,最终还是不了了之?
当时有人提了一个很好玩的笑话说,有一个鞋厂很火,占了当地80%以上份额,为
了反垄断,是不是说把它分拆成两个厂,一个产左脚的鞋,一个产右脚的鞋,就能
帮助消费者获得利益呢?问题终于出在了中国上。
电信是被分拆了,南电信,北网通,一只左脚一只右脚。作网络信息提供者的要舒
服就得两只鞋一起买做双线,作用户的只能干着急,网通的用户不要去电信的网站
下东西,电信的用户不要进网通的服务器玩网游。这就是所谓的“反垄断”!!!还是拿微软来说。
微软的垄断是有目共睹,如果拿中国的用户作一次调查,估计70%以上的人都会要
求拆了微软逼其降价。
问题是:
1、拆了微软不能得到更便宜的价格
2、中国有庞大的用户群但是没有庞大的消费市场真要是拿消费者去作调查,拿red hat 10万多一套的企业版linux和微软1500RMB的
win2003,你说让消费者怎么选???用户只选择更容易被盗版的,而从不站在商业
的角度考虑性价。从某种程度上而言,微软被它的竞争对手妖魔化了。red hat,IBM等为了挤败微
软,就过分的夸大Linux,在一些评测数据上做表面文章,把其推到了媒体的风口浪
尖上。晕了吗?IT界本来就如此,但是我们需要的是一个冷静的市场。而聪明的决策者从
来不会晕。

收敛阶与效率

测试环境:
OS:FreeBSD6.0
CPU:AMD AlthonXP 2400+
Memory: 256x2
代码为:
2阶FloatType sqrt_2(const FloatType& value,const IntType& n){ ACE_TRACE("sqrt_2"); FloatType retval(value); for(IntType i=0;i!=n;++i){ retval=(retval+value/retval)/2; } return retval; } 3阶FloatType sqrt_3(FloatType value,IntType n){ ACE_TRACE("sqrt_3"); FloatType retval(value); for(IntType i=0;i!=n;++i){ FloatType x2=retval*retval; //x^2 FloatType x3=retval*x2; //x^3 x2*=3; //3x^2 retval*=3*value; //3xa retval=(x3+retval)/(x2+value); } return retval; } 4阶FloatType sqrt_4(FloatType a,IntType n){ ACE_TRACE("sqrt_4"); FloatType x(a); for(IntType i=0;i!=n;++i){ FloatType t=x*x+a; x=t/(4*x)+a*x/t; } return x; } 第一组测试
被测数据
785544846554235596499070744180589750691109482706911662586613515463842050815959
用bc在100位精度下算出的平方根为886309678698272817467466386261572628…