2008-12-09

损失两小时

花了一个半小时,清除了\Windows\system32下的3个同气连枝的病毒dll,以及注册表中的一打子启动项。

我是在发现按WIN+E时资源管理器出来得相当慢,才疑心有病毒的。在WIN优化大量里看到一些可疑的启动项,其中有3个是dll,删除不了,unlocker显示它跟包括explorer在内的好多进程关联,如果强制解锁的话,explorer就报错调试,屡试屡败,在安全模式下也不行。后来进入LINUX,就想怎么删怎么删了。注册表内容费了些周折也清理干净了。

还是该装个杀毒软件看门。以前电脑只是我自己用,基本不惹病毒,现在叔叔和安经常用它上网,事情就复杂了。我突然意识到,自己一直鄙夷的网上那些诱人上当的把戏,对电脑新手是很有杀伤力的。

2008-12-07

穷并奢侈着

上午10点出门,陪安见她一同学ZLING——即将去米国,与其豪门男友结婚,然后,生子。

原来跟有钱人混也不是那么爽,昨天电视上还传闻李嘉欣要受多少条家规约束,今天听ZLING一说,果然大同小异。

我俩同情地听她讲了一大堆她婆家人的怪癖。也不能说是怪癖,我估计还是因为人家对钱的观念不同,超出了我们的理解能力。他们可能不是有了钱才这样的,而正是因为这样才有那么多钱的,那样级别的富豪肯定在财富问题上有非常严格的原则。

总之,按计划,ZLING到米国后会跟她的节俭老公住进豪宅,但是零花钱不会超过普通工人的工资;为了将来能自食其力,她要在那边上学,但是不会得到一辆宝马代步,而很可能是一辆普通的二手车;添加贵重的私人物品可能要先征得婆婆同意;她不能从婆家抠出一分钱给娘家……

乘电梯时,安小鸟依人过来悄悄说:“我看还是我们这样好!“

我靠!那还用说!我们会用工资的1/3买条牛仔裤,或一双皮鞋!穷并奢侈着!

~~~

中午吃饭时,我一开始没要啤酒,嫌贵,我心想妈的12块钱老子在徐州买一捆。后来顶不住了,菜太辣,辣得嘴疼。在逛街和吃辣这两样事上,女人的表现再一次超出我的想象。

我还发现请客时蟹黄豆腐这道菜很实用,这东西实打实的,能迅速把对方的胃填满。我今天就点了,不过没操作好,自己先划拉了两碗,很撑很遗憾的说。

~~~

我在商场里看见这幅广告时,强烈想象到的情景是这伙计对自己说:“我花光所有钱搞了这一身行头,可这个月吃饭怎么办呢?”

 

发件人 2008-12-07

2008-12-06

体重

数据显示我在增加体重。

一切都是从几个月前痛感运动量不足开始的。先是打羽毛球,吃饭时胃口明显大开。大概一个月后气候不适合在户外打羽毛球了,又接上骑自行车上下班,单趟35~45分钟,胃口更大,几乎翻倍。

不仅如此,我居然对零食也产生了深厚兴趣,包括但不限于花生米、蚕豆、锅巴。

……把天冷衣物重,以及称的偏差这两个因素考虑进来后,我估计我的净体重已经达到130斤了。

我想起来好几年前一天晚上跟老五在矿大西门外的夜市转悠,老五说他洗澡后称了下体重,已经达到**斤(记不清了)之多了。我装着心不在焉地问:

“衣服全脱了?”
“全脱了。”
“内裤也脱了?”
“也脱了。”
“毛也刮了?”
“毛没刮。”
“那不行,你那坨毛分量不轻的。”
“毛没有重量的。”老五无辜地回答,我闭嘴了。

这件事之后,我再也不试图调戏老五了,没用的,这家伙兵来将挡水来土淹,面不改色地就能把你豁出老脸使出的招式化解掉。

2008-12-06

13香!

当我觉得要需要的东西都已经拿了,可以去结帐时,安说她还没找到十三香。

“又是13香!”我嘀咕说,“只有不会做菜的人才喜欢13香,所以我都不好意思开口要13香!”

“……虽然我平时并不做菜。”继续嘀咕。

“我爸确实不会做菜嘛!而且如果我们不买的话,他自己也会出来买的。”安继续找,但是没找到。货架上有全系列的胡椒粉啊咖喱粉,就是没有13香,我窃喜。

~~~

我晕啊,近来好些天没在菜中发现13香的味道,以为叔叔的菜风变了,到头来还是因为家里缺货。

叔叔做菜的思路是:多一种料就多一种味!而像13香这种以一当十三的猛料,是绝对不能无视之的。

不幸的是,他还认为剩菜汤也具有调料的效果,于是会在饭后毫不犹豫地把三五样剩菜聚到一个盘子里。下一顿自己吃还算好的,在我坚决表示反对之前,他会在煮面条时用那种汤。这是他为数不多的既遭阿姨和安那个阵营反对,又不受我支持的行为之一。

然而看他在下一顿津津有味地吃他的混合大餐,我也会怀疑,到底是他不幸,还是我不幸?甜的东西不能和咸的一块吃;不同的菜汤不能搅在一块,这是我从小就接受的饮食习惯,根深蒂固。所以我吃不下有明显甜味的菜,也看不下把两种以上菜拌在一起,除非它们都没有汤水。但是现在我觉得,这仅仅是习惯问题,往大处说是文化差异。好不好吃是很主观的东西,你再看不下去,只要别人吃得很欢,你能否认他的快感吗?新概念英语中有篇课文就是说这个的:地中海地区的人看到北半球高纬度地区的吃法会很反胃,反过来也是——很有见地。

我并不打算在这两点饮食习惯上向叔叔妥协,但也不会对他的习惯采取斗争的姿态,唔,求同存异。

~~~

但是我坚决认为13香这东西在有些菜中一星半点都不该放,比如以青椒土豆丝为代表的素菜。我并不清楚那几个有名的菜系分别是哪些,我猜我自己(虽然很少动手)是属于“原生态系”的,我不想在吃青椒土豆丝时尝出不属于青椒和土豆的味道。如果我的见闻属实,我想要的其实是淮扬菜。

!!! CSS规范中可能不包括任何意义上的变量,这里只是一个直观的说法。

今天写了一个jscript脚本,它扫瞄一个文本文件,遇到 $name=value 就记录一个变量定义,遇到右边没有等号的 $name 就替换成先前定义的值或包含警告内容的注释(/*WARNING: undefined ...*/)文本。

写这个脚本的主要动机是在CSS中使用变量(实际是具有C/C++宏效果的常量)。我可以在CSS文件的前部的注释中定义颜色变量,然后在后面引用它,写好后,用这个脚本把包含了这种变量的CSS文件转换成符合CSS规范的文件。

次要动机是这几天对脚本程序手痒,写程序的愿望临时超过了打游戏的。这个程序主要使用了正则表达式来完成任务,以前用C#写一个代码高亮程序时,大量使用了正则表达式,这回虽然在内容上没有超越,不过毕竟是在新环境中使用,边查手册边写,有些东西暂时还不透彻,所以显得很有技巧性。比如在string.replace()方法中,替换文本中可以包含捕获的表达式,但是如果要把这个表达式直接用作字典对象的关键字,貌似不行。不过它可以用作函数的参数,于是我在代码中就地创建了一个函数来访问字典对象。而作为函数参数的话,捕获表达式的索引也有变化。

这个脚本的用法是这样的,比如我把它保存为CSS-preprocessor.js,在一个名为current.src.css的文件中写如下CSS代码:

/*current.src.css

...

DEFINE COLORS
-------------

$pageForeColor=#FFF
$pageBgColor=#CCC

$pageHeadBgColor=#214552
$pageHeadForeColor=#FFF
$pageHeadForeColor_a=#FFF
$pageHeadDescColor=#FFF

$pageFooterBgColor=#FFF

$boxBgColor=#FFF
$contentForeColor=#FFF
$contentBgColor=#214552

$moduleBgColor=#CFDFBF
$moduleForeColor=#564b47

$unimportantColor=#999 // minor description text
$headlineColor=#FF9900 // h1,h2,h3...

$textBlockBorderColor=#FFF // pre, quote, etc.
$textBlockBgColor=#315562;

$postbodyForeColor=#FFF
$postbodyForeColor_a=#8FDFFF
$postDateColor=#446677
$postTitleColor=#FF9900
$postTitleColor_a=#FF9900
$postHeadlineColor=#FF9900
$postFooterBgColor=#8FDFFF

$moduleHeadColor=#FF9900
$moduleBorderColor=#226699
$moduleText_a=#226699

$commentsBorderColor=#999
$commentsTextColor=#FFF
$commentsBgColor=#315562

*/


body {
font-size: small;
font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif;
text-align:center;
margin:0px;
padding:0 0 20px 0;
color: $pageForeColor;
background-color: $pageBgColor;
}

...

写好这个CSS后,在windows命令行中执行cscript CSS-preprocessor.js current.src.css current.css,屏幕上显示:

#13     $pageForeColor = #FFF
#14 $pageBgColor = #CCC
#16 $pageHeadBgColor = #214552
#17 $pageHeadForeColor = #FFF
#18 $pageHeadForeColor_a = #FFF
#19 $pageHeadDescColor = #FFF
#21 $pageFooterBgColor = #FFF
#23 $boxBgColor = #FFF
#24 $contentForeColor = #FFF
#25 $contentBgColor = #214552
#27 $moduleBgColor = #CFDFBF
#28 $moduleForeColor = #564b47
#30 $unimportantColor = #999
#31 $headlineColor = #FF9900
#33 $textBlockBorderColor = #FFF
#34 $textBlockBgColor = #315562
#36 $postbodyForeColor = #FFF
#37 $postbodyForeColor_a = #8FDFFF
#38 $postDateColor = #446677
#39 $postTitleColor = #FF9900
#40 $postTitleColor_a = #FF9900
#41 $postHeadlineColor = #FF9900
#42 $postFooterBgColor = #8FDFFF
#44 $moduleHeadColor = #FF9900
#45 $moduleBorderColor = #226699
#46 $moduleText_a = #226699
#48 $commentsBorderColor = #999
#49 $commentsTextColor = #FFF
#50 $commentsBgColor = #315562
#61 $pageForeColor -> #FFF
#62 $pageBgColor -> #CCC
#67 $headlineColor -> #FF9900
#89 $textBlockBorderColor -> #FFF
#90 $textBlockBgColor -> #315562
#106 $boxBgColor -> #FFF
#128 $contentForeColor -> #FFF
#129 $contentBgColor -> #214552
#136 $moduleBgColor -> #CFDFBF
#141 $pageHeadBgColor -> #214552
#148 $pageFooterBgColor -> #FFF

每行的开头是行号,余下内容表示脚本在CSS源文件中的这一行找到了一个变量的定义或引用,分别用 = 和 -> 标识。

同时,转换后的CSS被输出到current.css文件中。

以下是jscript脚本的完整内容:

/*
CSS-preprocessor.js

CSS user defined variables preprocessor 1.0 - replace variables reference with their values.

the "variable" here is something defined in css remark by the following:

$<name>=<value>

and referenced like this, e.g.:

color: $pageForeColor;

seems like php variable, but essentially it's C/C++ macro.

how to use:
(1)define and use variables in css "source" file;
(2)process the css source file with this jscript, e.g.:

C:\>cscript this.js current.src.css current.css;

in css source file, anything with the form of "$name=value" is considered as a variable definition. note that any number of blank(including tab and newline) on both side of "=" is allowed, and, to define multiple variables in a single line is possible.

anything not variable definition with the form of "$name" is considered as a variable reference, and will be replaced with it's value defined before. a undefined variable reference will be replaced with a warning remark.

--
pzy 2008-12-6
*/

// user defined variables in CSS files
var varlst = new ActiveXObject("Scripting.Dictionary");

if (WScript.Arguments.Length < 2)
{
WScript.Echo("arg0: source css file;");
WScript.Echo("arg1: dest css file;");
}
else
{
ProcessCSSVariable(WScript.Arguments(0), WScript.Arguments(1));
}

function ProcessCSSVariable(input, output)
{
var fso, ts, fout, s;
var ForReading = 1;

fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile(input, ForReading);
fout = fso.CreateTextFile(output, true);

WScript.Echo(input + " => " + output);

while (!ts.AtEndOfStream)
{
s = ts.ReadLine();

var vardef = s.match(/\$[_\-0-9a-zA-Z]+[ \t\n]?=[ \t\n]?[#0-9a-fA-F]+/g);

if (vardef)
{
for (var i = 0; i < vardef.length; ++i)
{
var sep = vardef[i].indexOf("=");
var name = vardef[i].substr(0, sep);
var value = vardef[i].substr(sep + 1);

WScript.Echo("#" + (ts.line - 1) + "\t" + name + " = " + value);
varlst.add(name, value);
}

// output as-is
fout.WriteLine(s);
}
else
{
// output replaced line
fout.WriteLine(s.replace(/(\$[_\-0-9a-zA-Z]+)/g,
//varlst("$1")
function($0)
{
var value = varlst.Exists($0) ? varlst($0) : "/*WARNING: undefined: " + $0 + "*/";
WScript.Echo("#" + (ts.line - 1) + "\t" + $0 + " -> " + value);
return value;
}
));
}
}
}