2010年8月7日星期六

英语学习的好帮手——灵格斯

第一次听说灵格斯词典还以为别人把柯林斯说错了,之后发现确有其物。灵格斯,它首先是免费的,它不是词典,更像个书架,你可以把自己喜欢的词典放到此书架中。所以,它能够实现各取所需,功能足够强大。现在一般词典的功能它都能具有,更突出的是词典的定制功能。

每个人在使用词典的过程中总有所偏好,觉得有些词典使用起来舒适得心应手。所以,我根据自己的需要,在灵格斯中添加了如下的词典。

  1. 柯林斯高级英语学习词典。这是一个英英词典,所有的解释都是简明易懂的英语。我一直以为辩解同义词,用英英词典最高效,同时它给出的例句也有助于理解单词。

  2. 牛津英语词典。它可以和柯林斯相互补充使用。

  3. 新东方词根词缀词典。把单词以词根词缀加联想的方法给出,释义简单,有助于记住一个新单词。


当然,灵格斯这个书架也可以添加法语、德语、日语等词典。总结一下它的特点:免费、体积小、功能强大和可定制性强。

手工删除病毒的方法

电脑中毒了,杀之!一般的情况下我们需要启用笨重的杀毒软件,进行耗时的全盘扫描。有些时候杀毒软件也搞不定,下面介绍一种手工删除病毒的方法,前提是您需要知道病毒文件所在的目录。

  1. 开始——运行,输入"CMD",最好是带NTFS格式分区支持的。

  2. 转到病毒文件所在的分区,并用CD命令进入病毒文件所在的目录,如:c: 回车进入C盘 cd windowssystem32 回车进入system32文件夹

  3. 去除病毒文件的隐藏和只读属性(如果没有可略去),如病毒文件名为xviewer.exe,则:attrib -s -h xviewer.exe

  4. 删除病毒文件:del xviewer.exe

  5. 建立同名的文件夹,防止病毒文件再生:md xviewer.exe (注意:要把后缀也带上) 另外,有的目录在DOS中是禁止进行写操作的,如windowssystem32drivers。如果已将大部分病毒文件进行以上处理后,剩余的就可以到windows中进行操作了。

  6. 给同名文件夹加锁,避免病毒覆盖:attrib +s +h xviewer.exe

  7. 完成后重启进入Windows安全模式中全面查杀病毒。


杀毒完成后就可以把那些自己建立的刚建立的文件夹删掉。如果按着以上的步骤正确操作,删除掉一般的病毒应该不成问题。

Photoshop抠图——钢笔加通道

抠图可谓是Phtoshop的重头戏,抠图的方法也有很多。给出一张图片,需要根据图片的内容来判断使用什么样的抠图方法。对于一张背景简单、颜色单一的图片,魔棒工具的使用是再好不过了。对于复杂的背景图片,抠图的方法一般需要滤镜抽出、钢笔、蒙版、通道等这些工具复合使用。

通道抠图:(主要用于发丝与背景相融合的素材)


  1. 选择“钢笔工具”,注意是路径。把人物的主体部分抠出来。发丝的部分留着。大致抠一下。

  2. Ctrl+Enter 将路径转换为选区。

  3. Ctrl+Alt+D 将其羽化一个像素值。

  4. 背景图层复制一份(把图层拉到右下角倒数第二个上面即可),得到背景图层的副本。

  5. 为背景图层添加蒙版。

  6. ------下面的操作在通道下完成---------

  7. 到通道面板。

  8. 注意观察红、绿、蓝三个通道,观察头发,选择对比度大的那个通道。

  9. 将选择的通道复制一份。

  10. Ctrl+L 色阶 黑色吸管设置黑场,吸取黑色的头发部分。白色吸管吸取背景部分。

  11. Ctrl+I 反相

  12. 选择画笔工具,黑笔,把不需要的部分涂抹。

  13. 把这个副本载入选区。点右下角第一个图标(虚线围成的圈)

  14. ------回到图层面板---------------

  15. 回到图层面板。

  16. 单击背景图层。将背景图层解锁。

  17. 对背景图层添加图层蒙版。

  18. 成功抠出。


2010年8月6日星期五

在超市做兼职——客服(2)

错钱之后,和我一起在里面干的那位同学很执着,我和她说我不想干收银了,她虽然也错了钱,但是认为是个人的原因,可以再小心一些就没有问题了。

而我接下来就去服务台做了客服,每天的工作是念广播、发放赠品、寄存物品之类。接近过年的时候存包的人超多,存包柜不够用,就放在地上,摆的满满当当,几乎没有下脚的地方,不停地存包、取包,虽然累点,但是不用惦记着收银的事情了。但是每天总有那些各个商品区的负责人在那里大喊为什么有一段时间没有听到播他们特价商品的广播,忙起来的时候哪里有分身之术呀?

那时候超市做活动,例如购物满18元,凭购物小票加一元钱可以换购黑芝麻糊一袋。海报和广播都讲得很清楚了,“换购”两字写的很大。记得有一位四十多岁的女人拿着二十几元的购物小票到服务台要芝麻糊,于是告诉她是加一元钱换购,不是赠送。她听完之后突然发飙,将服务台上的一叠宣传单撕得稀烂,扔的到处都是,一边撕一边破口大骂,又是拍桌子又是跺脚,根本不在控制的范围内,看着挺正常的一个人,怎么突然这么激动。虽说理解上有偏差,会有心理落差,但是这也太义愤填膺了吧。

服务台的退换货是由每天的值班经理负责的。要是遇上双方意见不一致的时候,空气的气温会更高,摔个东西也属家常便饭。有时候也难怪顾客会生气,有时候明明商品有问题,他们就是百般找借口,坚决不给调换。

有一个值班经理是个大嗓门的中年妇女,脾气比顾客还火爆,人家还没有怎么样呢,她就先发制人把人家呵斥的一愣一愣的,几乎来服务台的人都被她骂的气呼呼地掂着残次品回家了。

还有一个值班经理属于那种态度和善、连哄带骗型的。记得有一次有人说买回去的柿饼吃着又涩又苦,想把剩下的退掉,都是单独包装,按斤称的那种。于是这个值班经理就拿出一个找来超市里几个同事分食,笑眯眯的说:“这柿饼很好吃呀,很甜呀,怎么会苦呢?你们尝着苦不苦呀?哦,你看大家都说不苦,呵呵呵,小陈呀,你去里面再那几个出来。”然后她抓着几个从里面拿出来的柿饼往那个顾客购物袋里装,他们一伙人都说:“我们超市里的东西有保证,不像是那些外面卖的……”就这样打发走了。

服务台的另一位正式客服每天无聊就会乘着店长不在的时候捶电脑,故意很大声地放很难听的歌曲,用赠品中的勺子吃饭,然后再赠送给顾客;而里面的理货员会乘人不备将商品包装弄破,这样他们就可以用内部价买这些包装破损商品;或者是偷吃货架上的食物……

整个超市就像是上演一出出的闹剧,身在其中的时候,总是想着逃离……

045117b0e0a11a242b9765e79cbf113f.背影

在超市做兼职——收银员(1)

有年大学放寒假,听说超市招临时收银员,当时招聘的还有理货员之类,每天报酬都是一样的。想着在家闲着也是闲着,理货员每天还要从卡车上卸货、上架,就报了收银员。

开始三天是学习期,没有报酬,就是跟着那些超市收银员的后面看,帮忙装装东西什么的。第四天的时候,交了几百块的押金,领了几千块的备用金(就是各种各样的零钱),给了个人账号和密码,开始自己上机,心里还是有些忐忑的。因为这里有规定,每天上交的钱数不对的话,不管收多收少都要自己赔的,现在临近过年,生意很好,生怕稍不留神,一天的工资不仅赚不到,还会倒赔。

每天工作的时间是三个时间段,就是上午、下午和晚上高峰期时段,每天晚上八点半下班后,那些临时理货员都可以直接回家,而我们还要到收银办公室里开始数钱。先把早上的备用金数出来,剩下的就是当天需要上交的钱,把金额填在一张单子上,一并交给收银主管。这个时候的心真是悬着的,等待从她口中说出“恩,钱对了,你可以回去了”。要是蹦出其他的话,那就惨了。

开始收银那段时间,每天都要数钱到差不多十点才回家,开始的时候动作慢,生怕出错,一两万块钱被数上几遍。干了几天就感觉很痛苦,每天总是提心吊胆的,睡觉都睡不好,做梦都是这些事情,开始羡慕起那些理货员了,每天按时回家,也不用担心扣钱的。

干到差不多一周的时候,一天晚上被告知多收了两百块钱,吓了一跳,反复想,也想不出哪里出错了。接下来的一天又被告知我和另一个临时收银员各少自收了一百块,而总台收银员又多出一百块,等到第三天的时候,又说我收的钱是对的,那一百块没有少收,但是那个多出来的钱又是怎么回事呢?

可以想象我们当时的心情,接下来便去找店长说明情况,没有任何缓和的余地,没有任何理由,反正他们异口同声说你们几个的钱错了,要照数赔。我们问问超市里面的其他收银员,她们讲每个月很少有人被告知不错钱的,几乎都会被扣工资,有押金和工资在他们那里,只好这样了,或者走人,所以这里的人都干不长的。

每天晚上下班,我们十几个收银员挤在一间狭小的办公室里小心地数钱、填单子、上交。这个情景总会让我想起来鸬鹚(luci,又名鱼鹰)这种动物,我们只不过是超市收钱的廉价工具,每天站在收银台上收钱,到晚上再把钱取出来分类数好上交,并且还要承担失误的一切风险。那些里面的正式员工大都是九几年出生的小妹妹,时间长了,数钱的时候在一起说笑打闹,开着玩笑,说是不要把两个人收的钱混在一起了,要不然会死的很惨什么的,好像气氛很热闹,但是我总会想起鸬鹚。

不光是每天承担收银的风险和劳累。学收银的时候,那些有经验的告诉我们,有时候买东西的会抱怨你动作太慢,甚至破口大骂,要是境界不高自己乱了阵脚就很容易错钱,所以一定不要慌,随他们去讲,时间长了也就习惯了。我在收银的时候很少遇到这样的顾客,倒是遇到这样的员工。记得有一次家电类的促销员带着一个顾客在我这里交钱,开了好几张单,我要手动输到电脑,她嫌我动作慢,耽误她招揽其他的生意,在一旁开始不停地大声埋怨,当时那个顾客买了将近一万块钱的东西,没有刷卡机,给的全是现金,而且超市不给我们配备验钞机,都是自己凭经验区分真假钱。临近过年的时候有个别收银员一不小心收到假钱,也是要自己赔的,所以我当然要谨慎了。那个女人只管自己促销拿提成,才不管你收钱的事情。后来我下楼叫收银主管上来收的这笔钱,直接上交了。万一这一沓里混上一两张假钱,我那些临时工资可赔不了。

有时候有些人根本就不去理会那么多,他们才不管你是怎么样,只是想着自己,还在一边不停地责怨。做了这份兼职以后,我去超市买东西,遇到技术比较生疏的收银员,总会想起我们那时候的事情,有了切身体会,就更能理解她们,不要无理责怪,不要拼命地催促。有时候,她们并不是想刻意放慢速度,而是要承担太多的风险。

配图

2010年8月4日星期三

Inove修改汇总

Wordpress搭建的博客建起来第一件事就是更改主题(Themes),总觉得老外欣赏美的眼光与国人不同,他们做出来的主题虽然也美丽大方,可感觉缺少东方人简约含蓄的味道来,换了不知多少主题后,终于选用了MG12的Inove主题。

在Inove主题上做了不少的修改,现总结如下。

404页面模板(404.php)

1、  去掉了咸湿佬图片的链接。

2、  添加了谷歌自定义404错误页面

主题支持函数 (functions.php)

Wordpress默认的标签云略显单调,为此实现了彩色标签云。参考wordpress免插件实现彩色标签云

Tags页面模板(tag-page.php)

实现了标签云页面,由于已经添加了彩色标签云函数,故而这里的标签云页面为彩色标签云页面。参考inove主题添加标签页

cse页面模板(cse.php)

实现页内的谷歌搜索,也就是对搜索结果提供内页处理, 搜索后不会转跳到 Google.com.参考整合 Google 自定义搜索 CSE美化iNove的Google自定义搜索

底部 (footer.php)

主要是修改了底部的CSS样式,添加了协议声明。

文章页面模板 (single.php)

主要在文章末尾添加版权申明以及少许广告片段。

样式表 (style.css)

大部分修改花在样式表上。

导航栏和侧边栏样式的修改侧边栏宽度的修改

延迟加载图片的实现鼠标悬浮显示评论添加站点统计功能 、顶部图片汇总

Inove修改汇总

Wordpress搭建的博客建起来第一件事就是更改主题(Themes),总觉得老外欣赏美的眼光与国人不同,他们做出来的主题虽然也美丽大方,可感觉缺少东方人简约含蓄的味道来,换了不知多少主题后,终于选用了MG12的Inove主题。

在Inove主题上做了不少的修改,现总结如下。

404页面模板(404.php)

1、  去掉了咸湿佬图片的链接。

2、  添加了谷歌自定义404错误页面

主题支持函数 (functions.php)

Wordpress默认的标签云略显单调,为此实现了彩色标签云。参考wordpress免插件实现彩色标签云

Tags页面模板(tag-page.php)

实现了标签云页面,由于已经添加了彩色标签云函数,故而这里的标签云页面为彩色标签云页面。参考inove主题添加标签页

cse页面模板(cse.php)

实现页内的谷歌搜索,也就是对搜索结果提供内页处理, 搜索后不会转跳到 Google.com.参考整合 Google 自定义搜索 CSE美化iNove的Google自定义搜索

底部 (footer.php)

主要是修改了底部的CSS样式,添加了协议声明。

文章页面模板 (single.php)

主要在文章末尾添加版权申明以及少许广告片段。

样式表 (style.css)

大部分修改花在样式表上。

2010年8月2日星期一

JADE Tutorial and Primer摘要

JADE Tutorial and Primer 是一个绝好的学习JADE的网站,文章讲解地简单明了,很适合初学者学习。下面是本人在学习过程中根据个人理解的知识摘要。

JADE Agents are defined as subclasses of the predefined class Agent and their initial code must be placed in a method called setup.

Agents are a bit like Java Applets in that they can't be executed directly; they must execute within a larger program which provides the necessary services. In the case of Applets, a browser or an Applet viewer is needed; for Jade agents the environment is provided by the class jade.Boot which finds which Agents to run from command line parameters.

Jade environments are called containers. Typically, in a multi-agent application, there will be several containers (with agents) running on different machines. The first container started must be a main container which maintains a central registry of all the others so that agents can discover and interact with each other.

Agent actions are normally specified through Behaviour classes. More exactly, the actions are described in the "action" method of these Behaviours. The setup method only serves to create instances of these behaviours and linking them to the Agent object.

A last point is the provision of a mechanism to terminate the behaviour. In Jade, as long as a behaviour is not "done", its action method will be called repeatedly after every event - such as receipt of a message or expiry of a timer delay.

Agent Parameters: the parameters are placed in a list seperated by spaces after the "name:class" agent specifier. For example: fred:ParamAgent(3 "Hi there"). In Jade, the arguments are obtained by calling the method getArguments which returns an array of Objects which must be cast to Strings Reversing single and double quotes can give surprising results.

为了实现Agent的并行,可以借助Java的线程机制。但是Java的线程不适合大规模的并行。所以,jade使用behaviour实现并行。

A behaviour is basically an Event Handler, a method which describes how an agent reacts to an event.  In Jade, Behaviours are classes and the Event Handler code is placed in a method called action.

In JADE, messages adhere strictly to the ACL (Agent Communication Language) standard which allows several possibilities for the encoding of the actual content. In particular, Jade supports FIPA's SL (Semantic Language), a LISP-like encoding of conceptsactions andpredicates. It also allows the content to be serialized Java objects.

Our message uses the most common performative: INFORM whereby one agent gives another some useful information. Other types are: QUERY to ask a question, REQUEST to ask the other to do something and PROPOSE to start bargaining. Performatives for answers include AGREE or REFUSE.

We use addReceiver because there is no setReceiver method.

Note that, if you don't call block(), your behaviour will stay active and cause a LOOP. Generally all action methods should end with a call to block() or invoke it before doing return.

the CyclicBehaviour, which stays active as long as its agent is alive. by using CyclicBehaviour, we don't need to specify done.

To simplify answering, Jade provides a method createReply() which creates a new message with the sender and receiver attributes switched and all other attributes set correctly. Generally, only the content and performative have to be modified before sending it back.

For agents to interact usefully in open systems, it is imperative that they use the same language conventions and the same vocabulary. The DF entries thus concentrate on listing the ontologiesprotocols and languages which are supported by the agents. Additionally, entries have sets of services which are characterized by aname and name-value properties as well as the ontology/language/protocol conventions they support

Each agent is allowed only ONE entry in the DF. Attempts to register an agent already in the DF gives an Exception.

the WakerBehaviour,its delay is computed from the time the behaviour iscreated.

一定要区别好Behavours Created和Started.

The key to implementation of interaction protocols is to assign to each conversation a unique identifier, the conversationID (CID).

简单PHP相关文章链接的实现

一般文章的正文后面会跟上该文章的相关文章,罗列一条条相似的文章。这种做法不仅对于作者还是读者都是有利的,既可以吸引粘连读者又可以使读者加深阅读。

对于PHP编程实现来说,一般的方法是在写文章时自己添加或者自动生成Tag标记,之后再寻找这些Tag相关性高的文章。谷歌实验室的Google Related Links同样也可以实现此功能,有兴趣的同学可以前往研究,不过需要申请。

我们知道文章标题能够涵盖文章的大体要义(标题党除外),相关文章在标题上也会有一定的相似度。下面就来介绍一种基于文章标题Tilte的相关文章实现方法,其实也就是利用了PHP自身带的similar_text函数来判断内容的相似度。





<?php

require('conn.php');
$sql="select title from content order by id"; //判断标题相似度
$result=mysql_query($sql,$conn);

while($row=mysql_fetch_array($result)){
similar_text($row['title'], $title, $percent); //比较相似度 存放于$percent

if($percent>30 && $percent<100){echo $row['title'];} //相似度高于30小于100,小于100就是排除掉自己。当然这个值可以根据实际来修改。

}

?>




这样的话就可以把和该文章标题相似度在30-100间的文章标题输出了。

2010年8月1日星期日

TinyMCE插入并上传图片的实现

TinyMCE自带的“插入图片”只能插入图片的链接(也就是外链),不能上传到网站服务器上,以前我的图片就是放在雅虎的Flickr!上的,想着放在别人的那里终归来说不太保险,于是想寻求一个在TinyMCE里就可以实现插入图片并上传到网站目录中的插件。

TinyMC官网上有个插件叫做MCFileManager,可以使用它来进行图片管理,无奈它是收费的。于是Google几十下,试了好几种方法总是有问题,几经周折找到了完美解决此问题的地方Simple Image Upload Plugin for TinyMCE,此网站提供一款及其简单并且免费开源的TinyMCE图片上传插件markettoimages. 配置和使用方法网站上说的简单明了,现摘录如下。

1. Download distribution pack. Unzip it into TinyMCE’s plugins folder.(下载markettoimages包,解压并存放在TinyMCE的plugins文件夹中。)

2. Edit config.php file found in plugins/markettoimages. Minimally, you should only specify a target directory for your uploads. Every block of config. php is well-commented, so I think everything should go right.(编辑plugins/markettoimages中的config.php文件,指定上传图片文件的存放位置。具体的设置是把markettoimages/config.php的28行:$config['img_path'] = '/images/somefolder';修改为自己需要的位置。提醒:路径是相对网站根目录的,没有最后的斜杠“/”。)

3. Activate markettoimages plugin and add markettoimages button in TinyMCE. Don’t forget to set theme: advanced and realtive_urls:false. See an exmple below:(激活markettoimages插件,并在TinyMCE中添加markettoimages按钮。不要忘记设置theme为advanced以及设置relative_urls为false.下面是一个配置的例子,具体位置是在调用TinyMCE的初始化语句部分。)
tinyMCE.init({
theme : "advanced",
relative_urls : false,
plugins : "markettoimages, ***",
theme_advanced_buttons1 : "markettoimages,|,***"

* * *
});