博文

目前显示的是 2005的博文

让你的X11支持中日韩文字

(由于我的X11不支持中文locale,所以我就一篇探寻,一边写了这篇帖子)我的操作系统是FreeBSD 6.0,X11是cvsup中的最新版gtk_set_locale溯源由于我的gtk老是报告说"locale not supported by C library",我决定仔细的调试下看问题出在哪里。首先,gtk程序一般都要先调用gtk_set_locale()函数,然后gtk_set_locale调用gdk_set_locale,gtk_set_locale调用setlocale,XSetlocaleModifiers,XSupportLocale,由于我的setlocale没有问题,所以我就向Xlib进发。在lcWrap.c中找到了XSupportLocale,XSupportLocale调用_XlcCurrentLC(),如果_XlcCurrentLC()返回NULL,就代表失败,于是XSupportLocale返回false;_XlcCurrentLC()调用_XOpenLC((char *) NULL),然后关闭last_lcd, 并设置静态变量last_lcd为_XOpenLC的返回值。但是这个_XOpenLC函数就比较复杂了。_XOpenLC首先调用name=setlocale (LC_CTYPE, (char *)NULL)获得当前的LC_CTYPE设置,然后如果在配置文件中没有定义X_LOCALE 这个宏参数,那么需要调用_XlcMapOSLocaleName将setlocale的返回值translate一下。(在BSD上这是需要的)._XlcMapOSLocaleName返回的依然是原来的name,或者是原来name的一个子字符串。然后下面加一把锁子。因为这里需要访问并修改静态全局变量lcd_list.首先先在lcd_list中查找name,如果找到,把这个lcd的引用计数加1,并解锁返回。如果没有找到。就看静态变量loader_list是否为NULL,是NULL的话就调用_XlcInitLoader();loader_list其实一个是一个很简单的链表。每个元素里面包含一个类型为XLCdLoadProc的函数指针。这是它的函数原型typedefXLCd(*XLCdLoadProc)( constchar* …

更新主页

我准备更新下我的主页,把我写的一些代码和文档放上去,再添些小软件和一些资源,网站链接。写一个较为清晰的个人简历,把死掉的blog的链接去掉。
再加一栏,Friends,是指向朋友的连接。
不过我得学下tex,我准备用tex重新整理我以前的文档并以pdf和Html两个格式发放,也可以考虑ps或者tex原文。
我得加一个留言板。
我想学一下C++ CGI,不过没有这方面的书或者文档。
再看吧。

让FreeBSD支持usb鼠标的办法

让FreeBSD支持usb鼠标的办法1.重新编译内核,打开ochi(usb2.0),usbm(usb mouse)的支持,去掉前面的注释符号就可以了。2.打开sysinstall,在mouse一节,把鼠标协议设置为auto,端口(port)设置为PS/2.3.打开rc.conf,把/dev/psm替换为/dev/usm0reboot或者
修改内核后
moused -p /dev/usm0 -t auto
vidcontrol -m on
就ok了注意一点,用ps -A|grep moused看看
如果有两个或多个moused,一定要kill掉多余的。不然鼠标能用,但是奇慢无比。
第二步是我没有想到的,呵呵,无语了

cn.comp.lang.c FAQs [20050922]

cn.comp.lang.c FAQs 1.关于
1.1 这是一份什么文档?
这是新闻组(newsgroup)cn.comp.lang.c的FAQs 1.2.什么是新闻组
没有人可以规定什么是新闻组,但是抱歉,这个问题不在我们的讨论范围
内,如果你是一个新手还尚未接触过新闻组,那么你可以来这里看看
http://news.yaako.com , 我相信在这里你能找到很多你需要的资源。 如果
你已经开始使用新闻组但是对其还不熟悉,需要一些帮助的话,请去
cn.help组发问。 1.3.什么是FAQs?
FAQs是Frequently Asked Questions的缩写,是将某一方面常见的问题以问
答的方式写出来的文档。如果你在C/C++上遇到了什么困难,需要别人帮你
解答,不妨先看看本文档,或者用google groups搜索一下本组。 1.4.这份文档是comp.lang.c的C FAQs的中文版吗?
不是。 1.5.这个文档目前由谁维护?
Changming Sun(snnn),如果你在阅读的过程中发现了什么BUG,比如错别字,语法错
误,知识概念性的错误等等,你可以迅速联系我。我的邮箱是
me@sunchangming.com. 1.6.这份文档遵守什么样的版权协议?
目前是GPL.以后我会考虑逐步放宽。简而言之,如果你不打算用于商业用
途的话,可以自由转载本文档。 1.7.cn.comp.lang.c是一个什么样的组?
以讨论程序设计语言C/C++为主的新闻组。 1.8.C/C++是什么?
两门程序设计语言,C语言,C++语言. 1.9.这个组的信件以什么语种为主?
汉语,同时也欢迎少量的英文,法文等其他信件。 1.10.在这个组发帖有什么限制?
必须与本组用户所常讨论的主题相关。本组主要讨论的是C/C++,另外也讨
论一些其它的电脑技术如UNIX,USENET.广告和涉及政治 制度的一律被认为
是不受欢迎的,讨厌的。 1.11.这是唯一的中文C/C++组吗?
目前,是的。 2.C/C++语言概览 2.1.什么是C语言?
C语言是一门很古老的结构化程序设计语言。70年代初,美国Bell实验室为
了开发Unix操作系统,感觉已有的高级语言都效率低下或者使用不便,而
汇编语言使用起来太麻烦,就发明了C语言。1973年左右,C语言大致成型,
1979年6月,K&…

试手的时候写的代码

好久没有用STL,就试手写了一段小代码#include <iostream> #include <fstream> #include <algorithm> #include <vector> #include <functional> #include <gmp.h> #include <gmpxx.h> #include <cmath> #include <loki/functor.h> #include <loki/SmallObj.cpp> intmain(){ mpf_set_default_prec(1024); mpf_class t(0); gmp_randclass m(&gmp_randinit_default); std::vector<mpf_class> v(100); m.seed(); Loki::Functor<mpf_class,TYPELIST_1(unsignedlong)> f(&m,&gmp_randclass::get_f); std::generate_n(v.begin(),100,Loki::BindFirst(f,1024u) ); std::fstream fs("C:\\i.js"); std::copy(v.begin(),v.end(),std::ostream_iterator<mpf_class>(fs,"\n")); fs.close(); } 作用是生成100个精度为1024位的浮点数,输出到一个vector,然后把这个vector序列
化到一个file中。
今天试了一下,fstream的确是和ostream有太多的相似,也可以用这样的方式输出
std::copy(v.begin(),v.end(),std::ostream_iterator<mpf_class>(fs,"\n"));
可惜的是Generator并非是STL的一部分,STL并不…

网络安全需要立法!

国家有必要通过立 法对各个网站的一些行为作出规范。
我给大家举几个例子吧。
第一,你在一个新网站注册的时候,填邮箱和密码的时候你有没有犹豫过?
我尽管没有做过统计,但是我想大多数人,邮箱密码和普通密码没有什么区别,很多 人都是一个密码走天下……这就意味着,网站的技术人员就可以拿着你的这把钥匙去开 那把锁……
我们应该规定,不可 以明文形式存储用户的密码,除网站的登陆界面外,不可 以任 何方式向用户索取密码。
其实所说的这些,技术上来讲都很简单,把用户的密码hash后再存储就可以了。但是 很多网站都没有这么做,他们甚至还会把你的明文密码email给你让你再度确认(比如 blogs.msdn.com).
"除网站的登陆界面外,不可 以任何方式向用户索取密码。"
这样做也是在保护用户不被欺骗。我上次看新闻,就发现一个很好笑的事情,杭州两 个小伙子,作了个假的银联的网站,骗取用户的密码,仅仅因为有个银联的标志和一 个可笑的理由,就有数百人上当受骗在一个简单的表单中留下了自己的银行卡密码。
还有,未经用户允许不得以任何方式向第三方透露用户资料(包括email),除非是国 家司法机关和安全部门需要。
还有,对于网上的电子交易,不成功时商家应该向用户无条件立即返还所有货款。这 件事情看起来似乎天经地义,而且其他的法中对此应该也有规定,但是仍然就是有N 多霸老虎不执行,欺骗着消费者的钱财。在此我强烈谴责dearbook,也请大家和我一 起揭穿这个骗子的真面目。
另外,如果用户购买商品的时候商户已说明要提供赠品,但是寄货的时候却以各种理 由(比如缺货)而没有给客户,客户有权利要求立即退货并返回全部货款。理由同 上,骗子还是上面那个。
等等,等等。。哎呀,想起来就烦!就像去年盛行的短信骗局,明明是消费者的权益 受到侵害,但是国家却不出来说句话,只有移动公司以商业手段从内部规范,这明显是法制漏洞嘛!

Sunday, January 23, 2005

1/23/2005 4:49:14 AM
自己建立了一个NNTP server ,现在读起新闻组来爽快多了事实好像不像我想的那么简单耶!
新闻组的转信真是麻烦!
哎!
为什么总是转不出去呢?
刚开始还成功过一次呢

NTFS卷的特殊文件简介

1/22/2005 8:12:10 AM
NTFS卷的特殊文件
NTFS分区的Master File Table (MFT)中的前60个入口是被保留的,指向一些特殊文件,这些特殊文件在windows下一般是看不见的。Linux下也不行,FreeBSD下可以看见一部分。这里,我简单的介绍一下这些特殊文件吧。
NTFS 3.0中只使用了前12个。
1。\MFT (entry 0)
主文件表 (Master File Table ,MFT)
格式化为 NTFS 的卷上的一个 NTFS 系统文件,包含了该卷上的每个文件和文件夹的信息。MFT 是 NTFS 卷上的第一个文件。 该文件在FreeBSD下也是不显示的。\MFTMirror (entry 1) MFT的镜像,在FreeBSD下可以直接读取。\LogFile (entry 2) 卷日志文件,记录了卷的结构的改变。一般默认为65536k,在xp下你可以通过下面的命令查看和修改它的大小 例如 E:\>chkdsk E: /L 文件系统的类型是 NTFS。 目前日志文件大小为 65536 KB。 此卷默认的日志文件大小为 65536 KB。\Volume (entry 3) 存储整个卷的数据属性。通过打开路径\\.\C:就可以打开这个文件。Volume文件也具有卷名(volume name),卷信息(volume information)和对象标识符(object identifier)属性 5.\AttrDef (entry 4) 里面存储的是这样的数组 typedef struct { WCHAR AttributeName[64]; ULONG AttributeNumber; ULONG Unknown[2]; ULONG Flags; ULONGLONG MinimumSize; ULONGLONG MaximumSize; } ATTRIBUTE_DEFINITION, *PATTRIBUTE_DEFINITION; 6.\ (entry 5) 卷的根目录\Bitmap (entry 6) 卷上已分配的簇的位图(bitmap),\Boot (entry 7) 引导文件。 Boot的第一扇区,就是这个卷的第一扇区。如果这个卷是可引导的(bootdable),那么这里面存贮的,毫无疑问,就是引导信息。所以这里面的数据存…

我敢打赌,今年是国内各大商业网站的寒冬

我敢打赌,今年是国内各大商业网站的寒冬
除非有谁能先跳出来找到一个好的方式自救
丁磊确实厉害,先感知能力很强,短信他第一个开始做,社会网络他也第一个开始做,但是,这次,未必像上次那么容易。社会网络的收益是不会那么快的。或者说,未必有什么盈利点
这算是我2005年做的第一个预言吧,结果,明年的今天,我再来看

What type should std::set::begin() return?

前几天在写一个小程序,总是无法在VC++.net 2003和gcc下同时编译通过。因为我要做的是一个跨平台的库,所以这点极为重要,于是就一点点的去查看出错信息,看究竟是哪里的问题。
查到最后,发现原来是const的问题。
VC++下set::begin() const返回const_iterator,而gcc下返回iterator. 也许你认为这是小事,其实不是。多一个const,少一个const,都是无法编译通过的。我别无所求,只求能在两个编译器下都能编译通过。
那么,究竟谁的实现更好些呢?抱着这样的疑问,我把我的问题发到了comp.lang.c++.
然后,我查看了下二者的STL 中的set的实现。发现他们在内部不约而同的都是使用的红黑树(Red-Black tree)来实现的.虽说STL standard中并没有tree这样的container.但是你在VC++的头文件中可以发现一个,gcc中同样有一个
.内部实现的都是一棵红黑树。但是,之后在实现set的时候,二者的方式就有所不同了。
MS用的是is-a关系从class xtree继承,GNU 用的是has-a关系在set内部定义了一个 _RBTree。
如果你去比较下二者的源代码,你会发现MS的要简洁的多。虽说从本质上来讲基本都是一样的。但是由于GNU用的是has-a关系,所以它至少必须在其set类中对所有的外部接口重新定义一次。而在MS STL的std::set源代码中,你找不到begin()这个函数的定义,它是直接从基类 xtree中继承而来的。
首先,我们查看标准中std::begin()是怎么定义的。
iterator set::begin() const.
和gcc完全一样
再看MS VC++ STL中
const_iterator begin() const;
iterator begin().
你会发现在GNU的实现中,一个const的this指针,却返回了一个mutable iterator?但是标准中就是这样定义的,为什么呢?我们继续来查看
在《Generic Programming and the STL》(Matthew H. Austern)中作者对set的定义是:
“Model Of
Sorted Associative Container, Simple Associative Container, Uniqu…

遍历std::vector时容易犯的bug

Hi
Can you find where is the bug?std::vector<Switch> Switches; for(int i=0;i<Switches.size()-1;i++){ /*do stuff here*/ } vector::size()从语义上来讲,必须返回一个非负的值,所以它的返回值
被定义为unsigned.也就是说,如果Switches为空,它将返回0,然后减去1,
得到0xffffffff这样的值。。。
所以,这样的遍历,最好用for_eachstd::for_each(Switches.first(),Switches,last(),func); 或者自己这样手动写一个typedef Vector<Switch>::Iterator switchIter; for(switchIter i=switches.first(),i != switches.last(),++i){ /*do stuff here*/ } 注意,这里一定要写++i而不是i++.
如果要优化下,就别把switches.last()写在for的()中

艾丽莎·库斯伯特 小档案

艾丽莎·库斯伯特
姓名:Elisha Cuthbert
呢称:Heesh.
出生地:卡尔加里[加拿大西南部城市]
头发:金色
眼睛:蓝色
现居住地:洛杉矶
爱好:滑雪、画画、摄影
荣誉:
2004年《男人帮》百大性感美女排名第10位
2003年《男人帮》百大性感美女排名第14位
2003年《Maxim》杂志评出年度最热辣女星
2002年《Maxim》杂志百大性感美女排名84位
2001年凭借电视剧《幸运女孩》获Gemini最佳表演奖
个人爱好:
食品:墨西哥餐、海鲜、意大利面
球队:洛杉矶湖人队
■主要影视作品
电影
2004 《邻家女孩》
(The Girl Next Door)
2003 《重返校园》
(Old School)
《真爱至上》
(Love Actually)
2000 Believe
1997 《月亮之舞》
(Dancing on the Moon)
电视
2001-2004 《24》