程序员是如何喝酒的

大家喝的是啤酒。这时你入座了。 你给自己倒了杯可乐,这叫低配置。 你给自已倒了杯啤酒,这叫标准配置。 你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。 你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡 泡,这叫超级木马。 你的同事给你倒了杯白酒,这叫推荐配置。 人到齐了,酒席开始了。 你先一个人喝了一小口,这叫单元测试。 你跟旁边的人说哥们咱们随意,这叫交叉测试。 但是他说不行,这杯要干了,这叫压力测试。 于是你说那就大家一起来吧,这叫内部测试。 这个时候boss向全场举杯了,这叫公开测试。 菜过三巡,你就不跟他们客气了。 你向对面的人敬酒,这叫p2p. 你向对面的人敬酒,他回敬你,你又再敬他……,这叫tcp. 你向一桌人挨个敬酒,这叫令牌环。 你说只要是兄弟就干了这杯,这叫广播。 可是你的上司jj听了不高兴了,只有兄弟么,罚酒三杯。这叫炸弹。 可是你的下级mm听了不高兴了,我喝一口,你喝一杯,这叫恶意攻击。 有一个人过来向这桌敬酒,你说不行你先过了我这关,这叫防火墙。 你的小弟们过来敬你酒,这叫一对多。 你是boss,所有人过来敬你酒,这叫服务器。 酒是一样的,可是喝法是不同的。 你喝了一杯,boss喝了一口,这叫c#。 你喝了一杯,mm喝了一口,这叫vb。 你喝了一杯,你大哥喝了半杯,这叫c++。 你喝了半杯,你小弟喝了一杯,这叫汇编。 你喝了一杯,你的搭档也喝了一杯,这叫c。 酒是一样的,可是喝酒的人是不同的。 你越喝脸越红,这叫频繁分配释放资源。 你越喝脸越白,这叫资源不释放。 你已经醉了,却说我还能喝,叫做资源额度不足。 你明明能喝,却说我已经醉了,叫做资源保留。 你喝一段时间就上厕所,这叫cache。 酒过三巡,你也该活动活动了。 你一桌一桌的走,这叫轮巡。 你突然看到某一桌的漂亮mm,走了过去,这叫优先级。 你去了坐下来就不打算走了,这叫死循环。 你的老大举杯邀你过去,你只好过去,这叫激活事件。 你向一桌敬酒,他们说不行不行我们都喝白的,于是你也喝白的,这叫本地化。 你向boss敬酒,可是boss被围了起来,你只能站在外圈,这叫排队。 你终于到了内圈,小心翼翼的向前一步,这叫访问临界区。 你拍着boss的肩膀说哥们咱们喝一杯,这叫越界。 你不知喝了几圈了,只会说两个字,干了,这叫udp。 可是还有人拿着酒瓶跑过来说,刚才都没跟你喝,这叫丢包。 喝酒喝到最后的结果都一样 你突然跑向厕所,这叫捕获异常。 你在厕所吐了,反而觉得状态不错,这叫清空内存。 你在台面上吐了,觉得很惭愧,这叫程序异常。 你在boss面前吐了,觉得很害怕,这叫系统崩溃。 你吐到了boss身上,只能索性晕倒了,这叫硬件休克。

好累啊

image1900199427.jpg太晚了 睡了啊

Mobile Blogging from here.

I Love You Beth Cooper 《校花我爱你》 中文字幕

下了个电影竟然没字幕,索性翻译了,提供给广大网友,翻译的不好还望大家多多指点。
srt格式的。

I Love You Beth Cooper 中文字幕下载

《校花我爱你》中文字幕下载

影片简介 

  影片的主人公是一位看起来有些呆头呆脑的学生代表,在毕业典礼时向全校的校花贝丝·库柏发出爱的宣言。出乎他的意料的是,贝丝在这天晚上出现在他家的门口,为的是给他一个最难忘的夜晚……

  高中毕业,代表着你即将告别少年时代,正式向成人的世界迈进,到了这种时候,你往往会在焦虑和手足无措的情况下,做出惊人的举动……丹尼斯·考沃曼(保罗·鲁斯特饰)绝对属于那种说话做事都极度招人厌烦的“怪胎”,然而就是这样一个处处透着古怪的男孩,却在毕业典礼的演讲上让所有人都跌破了眼镜。也许是意识到自己以后可能再也没有这样的机会了,所以丹尼斯将一切都抛到了九霄云外,当着全校师生的面,突然向学校里最受欢迎的啦啦队长贝丝·库珀(海顿·潘妮蒂尔饰)表达了自己长久以来的爱慕之情,每一个字都是那么地铿锵有力、掷地有声–贝丝·库珀,我爱你!

  一尝心愿的丹尼斯本来已经做好了接受大家的讥讽和嘲弄的准备,可是他却惊讶的发现,甜美得不像是真人的贝丝在毕业舞会之后,突然现身在他的房门前–身边跟着特瑞茜(劳伦·斯多姆饰)和卡米(劳伦·伦敦饰),她们是形影不离的“姐妹花”,就像丹尼斯和他的哥们里奇(杰克·卡朋特饰)一样。

  虽然最开始的时候,丹尼斯被香槟酒瓶上的木塞打中了眼睛,引起了小小的混乱,但基本上而言,5个人很快就恢复了“夜游”的亢奋。然而,在一种全然没有任何警示的情况下,贝丝那块头有如大猩猩的男友凯文(肖恩·罗伯茨饰)突然而至,他已经埋伏好准备把可怜的丹尼斯狠狠地揍一顿了,两个人在发生了小冲突之后,丹尼斯竟然靠着幸运险险地逃过了一劫……这5个临时搭凑起来的伙伴显然觉得窝在房间里不够过瘾,于是他们决定开车出游,而贝丝似乎早就做好了打算,她决定要带给丹尼斯一生中最美好的一个夜晚。

关于adobe cs4的序列号问题

最近我的 adobe cs4 报错
出现 license expired

找了一下解决办法是:
更换新的序列号
先下载09年的新版本注册机:
http://www.xun6.com/file/36ff7dc13/C4_Chaitanya.zip.html [下载后请看压缩包里的说明文件]

然后删除: /Library/Application Support/Adobe/Adobe PCD/cache/cache.db [For Mac]

再重新输入注册号即可

大淘宝VS.百度之技术屏障

注意力一直在搜索引擎上,直到最近Ming总时不时提到“大淘宝”,才开始关注这件事情。

事件1:
昨日去阿里得知大淘宝计划已经实施。
事件2:
从百度部门得知,百度搜索引擎已经开始对用户的搜索、点击行为(行动轨迹)进行记录。
事件3:
阿里妈妈正在研发网络碎片相关技术嵌入阿里妈妈体系。

百度可以在第一时间拿到网民搜索数据,这点对于阿里来讲略显困难。大淘宝提出了“淘宝的数据更有价值”,不难看出,从海量的用户搜索数据到淘宝的用户购物数据,淘宝更为精准。

数据挖掘,数据挖掘……

大淘宝战略与百度抗衡的关键技术点啊!

TextMate心得

折腾了多日,搞定了mac os x 和编译器,以及这个TextMate。很关键,一定要记录一下。

TextMate 介绍

TextMate is not an IDE but by using its powerful snippets, macros, and unique scoping system, it can often provide features that even a language specific IDE lacks. It has enough project management features to keep most users happy, but is otherwise kept lightweight with a clean and minimalistic GUI.

下载地址

http://macromates.com/

因为TextMate自带 Ruby on Rails 的 bundle 还是1.X 可是ror已经出到 2.1.0了,需要将他更新,所以要执行以下步骤:

更新 ROR bundle

請下載 Textmate bundle( http://github.com/drnic/ruby-on-rails-tmbundle/tree/master ),最好的方式是用 git,不過也可以直接下載放到 [~/Library/Application Support/TextMate/Bundles] 下,並命名為 Ruby on Rails.tmbundle,然後在 textmate 裡 reload bundle 即可。

另外也請在 [/Applications/TextMate.app/Contents/SharedSupport/Support/lib] 執行 mv Builder.rb Builder.rb.off (不然某些用到 rake 的 bundle 會有錯誤)。

TextMate破解 TextMate注册

至于破解的问题嘛,如果需要可以联系我 maxazure@gmail.com .

(版权问题,故不能公布到网站,大家见谅)

Web2.0:帮你辨别跟你聊天的是人还是狗

今晚心血来潮和哥几个一起吃饭,我们如是说:

8年前流行一句话:你不知道互联网另一端屏幕前坐着的是个人还是条狗。 那就是web.
今天:有了SNS你就可以辨别出互联网另一端的屏幕前坐着的是人还是狗。 这就是web2.0
好大的飞跃啊!

Ruby中“符号”Symbol 的意义

在Ruby中,一个符号是就是一个Symbol类的实例,它的语法是在通常的变量名前加一个冒号,如
:my_sy

Ruby的符号像一个字符串,因为它内部表现形式是一个字符序列。而与字符串不同的是,每个符号的实例只有一个。看下面的例子:
array = [”foo”, “foo”, “foo”, :foo, :foo, :foo]

建立这个数组后,内存中将有三个内容为”foo”的字符串对象,而只有一个:foo对象。

一个符号有它唯一对应的一个整数值,可以用to_i来获取它。

符号常用的地方是用它来代表变量名或者方法名:
class SomeClass
attr_accessor :whatever
end

与上面程序对等的程序如下:
class SomeClass
def whatever
@whatever
end
def whatever=(val)
@whatever = val
end
end

你可能会问,为什么不用字符串来表示呢?其实,字符串也是可以的:
attr_reader :alpha
attr_reader “beta” # 也是合法的

那它们的区别在哪里?某种意义上来说,是为了提高程序性能,节省内存吧。

有的人说,”符号就如同不可变的字符串”,从它的行为上来说,可能是对的。但是,Symbol并是是继承至String,而且,与字符串相关
的那些典型操作方法,Symbol也不一定有,也不需要有。

符号不一定看起来是像变量一样,它也可以这样:
sym1 = :”This is a symbol”
sym2 = :”This is, too!”
sym3 = :”)(*&^%$”
你可以用这样奇怪的符号来定义实例变量名或方法,你可以使用诸如send或instance_variable_get来获取它们的引用。虽然是可行的,
但请尽量不要使用这么奇怪的符号。

用Symbol作为枚举
==========================================
像Pascal或版本稍晚的C语言,都存在enum这种类型。Ruby不能正真的拥有这样的类型,因为它没有类型检查。但使用Symbol可以用来产生
这样的效果:
North, South, East, West = :north, :south, :east, :west

用Symbol作为元数据
==========================================
通常我们使用捕获异常的方式来处理错误,避免使用老式的返回代码的方式。但是,如果你想用老式的方式,还是可以的。像nil就是这样一个元数据。
我们通常可以这样使用(因为符号是全局的,所以在之后的整个程序中,都可以使用这些符号来作为元数据):
str = get_string
case str
when String
# Proceed normally
when :eof
# end of file, socket closed, whatever
when :error
# I/O or network error
when :timeout
# didn’t get a reply
end

Symbols, Variables, Methods
==========================================
Symbol最常用的地方就是我们熟知的定义属性了:
class MyClass
attr_reader :alpha, :beta
attr_writer :gamma, :delta
attr_accessor :epsilon
# …
end
这里的方法,如attr_accessor,它以传入的符号来确定实例变量的名称,以及读写属性的方法的名称,但这不代表所有的情况
(即总是会自动精确匹配符号和实例变量的名称),例如,当使用instance_variable_set方法的时候,符号和实例变量名必须
精确给出:
sym1 = :@foo
sym2 = :foo
instance_variable_set(sym1,”str”) # 正常,匹配到@foo
instance_variable_set(sym2,”str”) # 错误

不过,记住,在这些地方不一定要使用符号,可以用字符串来替代。

转换Symbol
============================================
Symbol和字符串之间可以互相转换,使用to_s和to_sym来实现:
a = “foobar”
b = :foobar
a == b.to_str # true
b == a.to_sym # true

Dede cms(utf-8)中的问题及解决

在dedecms4的utf8改版中,发布文档时可能出现:
更新数据库archives表时出错,请检查!

把数据保存到数据库archives表时出错,请检查!
以上两种情况分别为修改和新增,对应的php为
article_eidt_action.php和article_add_action.php,数据库操作为include/pub_db_mysql.php,中文字符串截取为

include/inc_functions.php中的cn_substr函数,此函数只支持双字节即gbk编码,所以要改成截取utf-8的.此时edit已正常,但add还出错,把
if(!$dsql->ExecuteNoneQuery()){
$dsql->Close();
ShowMsg(”把数据保存到数据库archives表时出错,请检查!”,”-1″);
exit();
}
改成
if(!$dsql->ExecuteNoneQuery()){
$errorSql = htmlSpecialchars($dsql->queryString);
$errorMsg = htmlSpecialchars(mysql_error());
$dsql->Close();
//ShowMsg(”把数据保存到数据库archives表时出错,请检查!”,”-1″);
//ShowMsg是document.write的js方法,不知为什么在加入$errorSql后不显示,所以用echo
echo “把数据保存到数据库archives表时出错,请检查!查询语句:
$errorSql
mysql错误提示:
$errorMsg “;
exit();
}
看提示是keywords字段长了,原来是中文分词时出错,include/pub_splitword_www.php调用字典include/data/dede_wwwdic.csv,可csv是gbk编

码的.改分词程序没成功,所以不分词了,关键字手工填就是了.把article_add_action.php中的

//自动获取文章中的关键字
//———————————-
if($autokey==1||$keywords==”"){

改成
//自动获取文章中的关键字
//———————————-
if(0 && ($autokey==1||$keywords==”")){

发布文档后的成功提示无法显示,
把include/win_templet.htm中
charset={dede:cfg_language/}改成
charset=utf-8

更新html那个框架中的字乱码,在浏览器中选utf8就行,但不知在哪个文件中改

图片栏目如果选分页显示,会在第2页开始图片上方有一行字:分页标题#e#,找不到在哪改,因此修改

dede/templates/default/article_iamge.htm,把

{dede:field name=’imgurls’/}

改成

{dede:field name=’imgurls’/}

也就是用js把这串字符替换

dede/article_eidt.php有错误,没有定义SelectTemplets函数,所以不能选择模板,在页面上方的js中把这个函数加上
function SelectTemplets(fname)
{
var posLeft = window.event.clientY-200;
var posTop = window.event.clientX-300;
window.open(”../include/dialog/select_templets.php?&activepath=&f=”+fname,

“poptempWin”, “scrollbars=yes,resizable=yes,statebar=no,width=600,height=400,left=”+posLeft+”, top=”+posTop);
}

程序的一些bug:
1.article_eidt.p,hp编辑选模板有js错误,并且无法在ff中使用这个函数,因为不支持window.event
2.栏目如果是频道列表,生成页后子频道的文档无法在该页显示,进入子频道才能看到
3.图片栏目如果选分页显示,会在第2页开始图片上方有一行字:分页标题#e#,不知是UTF-8改的原因还是bug
4.图片栏目修改文档后,最后一页没重新生成?选生成文档HTML才搞定
5.UTF8部分,分词和拼音还无法解决,生成html的提示乱码,一定要手工指定编码为utf8
6.图片栏目中生成缩略图有问题.好在不会在列表页显示出错
7.文章栏目中GIF图片似乎都无法生成缩略图?
8.dede/inc/writer.txt和dede/inc/source.txt都应该设成可写
9.两个广告紧连着会出问题,如{dede:myad name=’abc’/}和{dede:myad name=”efg” /}连着,后一个就会显示成文字.只有分开
10.在本地测试时安装在非根目录下,首页连接用cfg_cmspath正确,上传到网站后,这儿改成空,页面中这儿竟然被解析成当前目录

如何生成搜索结果中的动态摘要

在搜索的结果页面,标题下要显示文本的摘要,但是怎样能使用简短的几句话就可以实现动态摘要呢?

本文提供了三个思路方法:

方法一. 只记录关键字在一篇文档中第一次出现的位置
产生动态摘要时, 根据关键字第一次出现的位置p向前后扩展, 扩展至完整的句子, 扩展到需要的摘要的长度为止. 如果同时检索多个关键字, 那么各句动态摘要合并起来, 可能中间需要用省略号连接.
这种方法产生动态摘要的速度最快, 存储位置占用的空间最小; 但是可能产生的动态摘要不是最好的.

方法二. 记录关键字在一篇文档中所有出现的位置
记录所有的位置可以计算出文档的哪一部分与查询最相关, 尤其进行多关键字查询时, 将每个关键字出现的所有位置进行统计, 计算出文档的哪一部分同时出现了这几个关键字, 从而产生动态摘要. 这样产生的动态摘要比较准确, 但是存储位置占用的空间比较大.

方法三. 对文档事先进行断句(分块)处理, 记录关键字出现的所有句子编号.
生成动态摘要时, 对包含查询关键字的句子进行打分, 将得分最高的句子做为摘要.
这样产生的动态摘要也比较准确, 但是这种方法需要对文档事先进行断句(或是分块)的预处理.