山自高兮水自深,当尘雾消散,唯事实流传。

2008-10-29

今天你黑了没有?

    2008年中国的网民数量有望超过2.4亿,以windows xp在中国使用的广泛性来说,微软盗版用户黑屏策略的出台,有可能让微软成为全球最大的‘黑客’,而‘今天你黑了没有’,也有可能成为人们见面的问候语。

        国内网友创意百出,以漫画的形式讽刺微软的这项举措——


    10块钱跟1000块的差距也是不小的,中国官方的回应是微软全球统一定价策略不合理——作为一个全球性的产品没有考虑到各国使用者的经济状况的差异。其实这种说法也蛮屁话的,一样的东西凭什么卖给你就便宜,卖给别人就贵。

    当初,比尔的愿望是让千家万户里每家都有一台电脑,而操作系统作为计算机的‘灵魂软件’,它的不可或缺性及高价位,促使OS盗版的产生。大家都知道,MS的软件虽不是最好用的,但一定是使用最广泛的,显而易见的是Designed for Microsoft Windows Xp的商标和win键位被标识在一台台商用机上,然而长久以来MS对这种盗版状况的默认,也是windows高使用率的重要原因。这种互相促进的状态,我想MS是应该清楚的,而xp作为MS史上最好的操作系统(至少我是这么认为的),却挡了vista的道,用户满足于xp提供的现有功能,所以vista自推出后销售情况不佳也可能是对盗版下杀手的原因。


2008-10-26

铁观音就是苦丁茶

男人,说正确的话不算本事,如果铁着脸把错误的话变成正确的才算本事,前日跟曲曲的一段对话。
ps:我抿了一口杯子里的茶。
我叹道:这苦丁茶清热解暑,好茶好茶!
曲曲以鄙夷的眼神看过来:这哪是苦丁茶,这是铁观音!
ps:我心想,哟嗬!这刚过门儿就会顶撞官人了,时间长了还不上房揭瓦!
我镇定道:也可以这么称呼它,可你有所不知,这铁观音就是苦丁茶。
曲曲又鄙夷道:胡说八道!
ps:奶奶的,真是造反了,但咱大男人有风度不能跟个小女子一般见识。
我又温和道:你难道不知道苦海无边吗,观世音苦海渡世人,宁可一人受苦,靠的就是喝这苦丁茶呀!
曲曲冲我做个鬼脸后走开。
ps:小样,看你能咋地!

2008-10-13

网络暴力就在我们周围

    这些天想买台冰箱,去几个大卖场看了一下各个品牌的外观、听了一下导购员的‘忽悠’,最终购买目标锁定在两个品牌上,然后就是到网上各个门户调查一下这两个品牌的用户体验,感觉门户网站的有些话也不足信,论坛里就更乱了,同样的东西,截然相反的两种评价,甚至两个人互相攻击为商家‘枪手’云云,搞得我也是云山雾罩,不明就里。

        中国有句老话叫做“众口铄金,积毁销骨”,而现今的网络就提供了这么一个三人成虎的平台,大家拥有同样的话语权,道德底线不一,你一言我一语,这要是面对面的真有可能掐起来,但真的对人体没有伤害吗?直到前两天在报纸上看到韩国影星自杀的原因就是承受不了网络上的流言蜚语,才意识到网络暴力的严重性。

2008-10-12

10月7号实施APS.NET项目遇到的疑难杂症

    对Web程序不太感冒,不巧出差同行同事喜得贵子,无奈我一人去实施一个Web项目,系统上的问题遇到过一次混个眼熟,以后就会解决了,问题记录如下:
系统环境:windows Server 2003:
1、Web页面一片空白
Var newwin=window.open('Default.aspx','_blank','fullscreen=0,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=0,resizable=0,top=0,left=0 charset=utf-8');
  如果浏览器的安全级别过高或有防火墙、弹出页面阻止程序的话就会发生该问题,解决方法是把该程序页面加入“可信站点”,具体是“Internet选项”->“安全”->“可信站点”

2、System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7或更高版本
 
其实高于8.1.7版本的Oracle已经安装了。
Google了一下,遇到类似的问题的人很多,解决的方法也各不一样,方法我挨个试到解决为止,回过头来想了一下,问题应该是ASP.NET(全名:ASP.NET Machine Account)这个用户无法调用Oracle相关程序造成的,几个必行步骤:
a. 在用户组“Administrators”用户组中加入用户“ASP.NET”,具体做法:右键
“我的电脑”-> “管理”-> “本地用户和组” -> “组”-> “Administrators”点添加;
b. 找到Oracle安装目录,例如:\Oracle\Ora92,添加用户群ASP.NET、administrator、authenticated users;
c. 重新启动IIS,运行iisreset。

2008-10-06

指针常量与常量指针

C++语言的一个复杂点是在指针上,在与const字符结合后,两者狼狈更是弄得人头晕,毕竟是好久没有用到的语法点,一时还真回不过神来,在这里写一段程序阐明其中的玄机。


char c1 = 'a';char c2 = 'b';
const char *L;                      //指针常量,指针指向的值不能改变
char const *M;                     //跟上面一样
char *const N = &c1;          //常量指针,指针的地址不能改变
char const*const O = &c1; //指向常量的指针常量,地址和指向的值都不能改变
L = &c1;    //OK          
*L = c1;     //error,改变了指向的值 
N = &c2;   //error,改变了指针的地址
*N = c2;    //OK
O = &c2;    //error,改变了地址 
*O = c2;    //error,改变了指向的值


不是看了程序后更糊涂了吧,其实不用管何谓“指针常量”、何谓“常量指针”,问题的关键在于:const与*的位置;const *M=const(*M),所以值*M(值)不能被改变; * const N= *(const N),所以N(地址)不能被改变。

FireFox、Opera、Chrome、IE内存占用对比

最近Google引领了新一轮浏览器大战,孰优孰劣不做深度分析,作为我自己而言,现在的年代1G的内存也根本不够各个后台软件分,所以我最关心的还是内存占用问题,4款浏览器同时打开新浪,内存占用情况如下:
FireFox3.0.3——内存81,524K,CPU在6%左右
Opera9.60——内存5,348K,CPU一直为0

Chrome0.2.149.30——由于是多进程浏览器,所以在任务管理器显示出多个进程,但似乎也不是一个分页一个进程,而是跟其内置的任务管理器的进程对应的,加起来占用的内存可以用庞大来形容了,详情见下图 IE6.0——打开了两个新浪,详情见下图

所以,我最终选择的是Opera。

2008-09-22

“八大关”的一杯沧海

一杯沧海

每个人都是一只杯子
但杯子的大小不同
有的杯子装得下一片汪洋
有的杯子装不下自己的欣赏

每个人都是一只杯子
但是盛的东西不一样
有的杯子里盛的是大块文章
有的杯子里盛的是小肚鸡肠

倒空你的杯子
让人生作别样想

2008-07-20

当游戏照进现实1-如何作一名城主

男人跟女人玩游戏的目的是不同的,我一直认为策略游戏与女人无关,我更认为经营类游戏基本上没有女人缘.最近经常玩这么一款妹妹不疼姐姐不爱的游戏,叫作《皇帝-龙之崛起》,类似于《恺撒大帝》、《法老王》的经营类游戏,虽同属于一家公司的作品,但《皇帝》更耐玩、画面更精致、系统设计更简洁合理,且支持网络联机.

游戏时间设定在古代,玩家的身份是一名城主,用手中的鼠标管理自己的城市农业、建设、贸易、外交、军事,正合了那句"指点江山"的激扬文字.

这款游戏没有类似于《模拟城市》复杂的管理模式,但农林牧副渔商样样齐全并且它们的契合度很高.

开图建造主线基本上差不了多少,下面是笔者的一些经验:

第一步,住宅小区.
建造住宅基地、水源、检查站,吸引外来人口入住.注意,检查站是必须的,游戏中的房屋损坏的很快(豆腐渣工程?),还有如果水源、检查站附近吸引力高是可以升级的,升级之后对小区有更强的支援能力;

第二步,农业与市场.
发展农业,不要以为开垦土地就是农业哦,一些地区是捕鱼或打猎的,建造磨坊制造食物,原材料花样越多,制造的食物越美味,接着造个市场,上面建个餐馆,负责供给食物.注意检查站要有,笔者曾经一磨坊的美食毁于一场大火,苍天呀大地呀,欲哭无泪呀;

第三步,亚麻.
亚麻也是必须的,这样百姓就有基本的衣食保障,同时市场上弄个亚麻店.注意作物小屋周围三格均可以种植,提前作好计算以节约用地,到这儿如果规划好了,此时小区就已经有个村落的模样了;

第四步,先祖神庙.
人民有吃有喝了,别忘了还有老祖宗呢,忽视了他们你会很惨的,先祖神庙相当重要,通过神庙每月可以祭祀先祖,保持先祖的情绪.注意,先祖生气是相当可怕的,地震、洪水让你瞬间倒退十年,但如果把先祖伺候高兴了则会在城中现身,对城市也有不小的好处;

第五步,娱乐、医药.
要想达到小康水平的生活,也要让人民拥有丰富的精神生活呀.戏曲和杂技是两种基本娱乐方式,开设相应学校,训练出来的娱乐人员会走街串巷提高人民的娱乐指数.人生病不可避免,建造草药诊所和针灸诊所后,会有医生拖着小车为百姓预防和治病;

第六步,瓷器与高级住宅.
住宅小区要想吸引更多的外来人口就必须上档次,所以瓷器就必不可少了,瓷器也是高级住宅的基本用品,高级住宅是贵族住的,有了它意味着可以建造军事设施了;

第七步,兵营.
步兵、弩兵、骑兵,还有破城器械,你的高级住宅越多、规格越高,则能造的兵种越多,除此之外,如果没有很强的实力还要定期对周围城市施以小恩小惠,改善周围对你的态度,到一定程度可结成军事联盟,可共同抵抗外来侵略,合纵连横嘛,等你有了足够实力,也把黄帝、孙子、关羽、孙悟空伺候高兴了,便可群雄逐鹿、力扩版图了;

第八步,税务局与货栈.
有了规模化的高档住宅小区,可以调整合适的税率建立市政府、税务局来充实国库,取之于民用于民嘛,毕竟维护高档小区成本还是蛮高的;与周围城池达成贸易联盟,建立贸易货栈,如果你选择了一片贫瘠的土地物产贫乏,那你一定有其它城市所需要的物产.注意,卖的东西未必你能够生产,如果你有多个贸易联盟,可以做转手卖的无本买卖,比方说一块翡翠以8O的价格从A城市买入再以82的价格卖给B城市,或者仅做二次加工的工作,比如以8O的价格买入翡翠,经过自己4—5人的翡翠工厂加工成翡翠饰品,可以卖到198的价格.经济才是硬道理,做想做的事,国底充裕才行呐.

第九步,其它.
皇宫,儒、道、佛建筑,圣地作用还没来得及摸索,不过,我想有实力建造这类建筑物时,相信整个城市已经非常发达了.

掌握平衡是玩这款游戏的密诀,中国有句古成语叫做"过犹不及",凡事有度,合理的规划,精确的计算才是正道.

2008-07-17

Tip:去除Oracle字段中的空格

有些问题就是那么诡异,一个字段的两条记录看起来明明是一个字符不差,为什么我用distinct能select出两条来,鼠标不小心的一拉,发现原来第二条记录后面跟着一堆“幸灾乐祸”的空格。

笑!我叫你笑!update table set field = replace(field,' ',''),搞定你!

2008-06-17

VC6.0的INTERNAL COMPILER ERROR错误

同样的程序运行在两台机器上,一台可编译,在另一台机器上的VC6.0上会报如下错误:

fatal error C1001: INTERNAL COMPILER ERROR 
(compiler file 'msc1.cpp', line 1786) 

重新配置编译环境、重装VC未果,不得其解,GG一把,大都说是M$的Bug,既然是Bug就不必在上面纠缠了,解决这个问题的三种方法贴在下面,我是用第3种方法解决的:
造成这种问题的原因是编译器分配的内存超过了限制。 
解决的办法有三种: 
1.给编译器增大内存限制。在project(工程)->setting(设置)->c/c++的project option(工程选项)中,添加/Zm#nn选项,#nn是一个数字,取值最大为2000。默认为100。但是这种方法好像没有什么用处。 
2.将模板类头文件从stdafx.h中移出; 
3.不使用预编译头文件。project->setting->c/c++,选择所有的.cpp文件,都使用“不使用预编译头文件“的选项。缺点是编译的时候很慢。 

更专业点的英文解释:
When template classes or template class header files are included in a precompiled header file, the compiler may generate the following error for files that use the precompiled header: 

  fatal error C1001: INTERNAL COMPILER ERROR
  (compiler file 'msc1.cpp', line 1786)

  -or-

  fatal error C1001: INTERNAL COMPILER ERROR
  (compiler file 'msc1.cpp', line 1188)
   
This error occurs only on machines with the Windows 95 or Windows 98 operating system. 

CAUSE
The compiler exceeds the allocated memory limit. 

RESOLUTION
Use one of the following three suggested workarounds: 
Use compiler switch /Zm#nn to increase the compiler's heap memory allocation limit. The default value of #nn is 100 and the maximum value is 2000. Manually add this switch in Developer Studio: under the Project menu, click Setting, the click C/C++, then Project Options. Usually, a value of 1000 works. 

NOTE: You may need to increase the system virtual memory to accommodate the increased #nn for /Zm. 工程| 设置 | “C/C++” | “工程选项"


-or- 
Remove the template class header files from the precompiled header file. 

-or- 
Use "Automatic use of precompiled headers" (/YX switch), or, "Not using precompiled header."


STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.