Sep 13

8月5日@永胜

按照课表安排,上午初级班在进修学校教室,由Jialun和Wangnan讲“指法介绍和练习”和“各种输入法介绍”,希望他们初级班老师早日告别二指禅。上午的中级班,在先觉电脑教室上,由我和Dongxiao讲“网络搜索技术和实践”。

在网络搜索课程上,发现一个问题是,我准备的PPT理论知识非常充足,听得当地老师们云里雾里;发现的一个有趣现象是,搜搜无处不在,我们的搜索从百度Google文本搜索开始,一直到图像搜索、视频搜索、MP3搜索、文件搜索、地图搜索等等,甚至自然而然地到了youtube的搜索。

中午休息的时候,Wenjia的笔记本坏了,检查了一下判断为硬件故障,Dongxiao也来检查了一遍,仍然无法开机。问了一下,原来Wenjia的这个本子已经换过主板,似乎每换一个主板支撑一年,然后我们鼓动她说这个日本牌子质量一般,买国产的ThinkPad吧,呵呵。

下午初级班在进修学校,由Jialun讲“Word使用入门”。中级班在先觉电脑,讲“Internet原理”,这时候出了一个意外,就是有机器中毒了,貌似飘雪病毒或ARP病毒,直接导致无法上网。依稀记得本来课程安排不是这样的,因为无法上网才开讲“Internet原理”,结果我bla bla bla讲下来,很多理论。下课后Wenjia跑来争论,说“你们讲的太难了太理论化了”,我点头称是,但又说:我们这样安排有我们的principle和motivation。

火锅晚餐

下午下课后,Jialun打电话说,当地老师要请我们计算机志愿者吃晚饭。我们会合后,努力婉拒了一番,还是由不住云南人的热情,从了。

接受邀请参加晚餐的有:Dongxiao、Jiatu、Jialun、Wangnan和我五名计算机志愿者。下午Wenjia来蹭网络,所以也和我同去。

主人们是当地老师和他们的家属,坐了两桌,年龄最大的是一位80多岁的纳西族老奶奶,她精神很好,而且和我们聊天交流都没有问题。年龄最小的是几位纳西族的小姑娘,四五岁或七八岁的模样。

在昆明的时候,同学就认真地告诉我们:云南人很热情,基本上是敬白酒,基本上是把你喝醉。

当晚,基本上每位志愿者都喝白酒。Dongxiao人生第三次喝白酒,他处女喝在昆明,榜眼喝在片角小镇,探花喝在永胜,人生头三次饮白酒全部献给了云南。

Wangnan每次只抿一下,Jiatu的又从脸红到了脖子里,而Wenjia作为队长喝了不少,好像后来难受的吐了。这不利于她的淑女形象,某位队员后来这样写简史:

8月5日
上课
上完课计算机老师请吃饭,“wenjia mm喝醉了”。

晚餐是乌鸡火锅,不少是云南特色的菜,还吃了很多稻田养的鱼,我虽然对美食不敏感,但遇到这样的美食还是知道拼命地吃啊吃啊吃得很high。我一向赞同唐师曾的话:要有一副好胃口,到哪里都能吃得香睡得着,然后能周游世界。

 

The Mission Goal

晚饭后回到汉城宾馆,计算机志愿者开会,总结前面的得失,安排后面的课程。记得刚开始的时候进展不大,后来Jiatu和Dongxiao提出了一个非常精彩的问题:目前的课程安排又多又杂,那我们的理念是什么?

对啊,我们的Mission Goal是什么呢?

经过Jiatu和Dongxiao的提议,大家的激烈讨论,最后我们确定的理念是,关注四块领域的相关教学知识:

    • Office办公软件应用
    • Windows系统使用
    • 网络在教学中的应用
    • 病毒和安全防护

在这个理念的指导下,课表的安排第一次大修改,从8月6日到15日的课程,优先四块主要领域的课程,凡是和理念不合的一律删除,好像删掉的课程有VMWare的课、Linux和Vista介绍的课。

会议圆满结束,一切安排妥当后,貌似我们开始玩Bang!牌,一种使用特殊扑克的杀人游戏,中文译名叫“西部警长”。

Sep 13

有些人一定想钱想疯了!某晚,在网上找白话史记的下载,不小心中招了,结果一旦打开百度,最上面就会出现一行提示,说

“IE浏览器提示版本过低建议安装火狐”

属性显示,它使用iframe载入了http://www.baidunihao.cn/的一张网页。然后欺骗或胁迫用户安装来自google的firefox,他就可以挣几毛钱,真是想钱想疯了!

卸载这个恶意IE插件的方法是:

1. 把Internet Explorer全部关闭,最好关闭所有的程序。

2. 按“开始—运行”,输入regedit,点确定进入注册表编辑器。

3. 点菜单“编辑—查找—查找目标”中输入关键词mimefilte,点击查找,将键值删除了,然后重启IE就好了。注意这里主要删除来自微软的mimefilter。

4. 后期清扫工作,到Windows目录中,吧mimefilte.dll删除掉。OK!

另一种方式,请见百度网站:http://zhidao.baidu.com/question/33399543.html

Sep 11

关于永胜的事情,很多天没有写了。这会儿坐在摩星岭顶上,风吹虫鸣,对面灯火安静,静下心来好好梳理一下。

8月4日,晚。

晚饭后,貌似是第一次走路回汉城宾馆。本打算去先觉电脑做第二天的课件,可是休息的时间有点久,出发的时候大概8:30了,先觉应该关门了。于是我们改去网吧,也记不清楚有几个人了,尽力回忆一下吧:我,Dongxiao, Justine, Jialun, Jiatu, Doris, Jing……时间太久,我实在记不清楚了。

路上我开玩笑,骗Justine说我是少数民族的,竟然她和Dongxiao都几乎相信了,呵呵。

永胜县城虽小,初来乍到,找个网吧也不容易。在网吧,我们大概呆了一个小时。

回去开会,首先,讨论通过了第二天的课程安排:上下午各一个session,分成两个班,有四位志愿者明天要讲课。

其次,开始排12天的课表。开始一天一天讨论,发现进展缓慢;后来,根据出发前编译的提案,先填充了一个草稿,然后交给大家评估工作量、进度和难度,再做调整。大概十一点多的时候,基本安排完毕,五位计算机志愿者有点筋疲力尽,胜利散会,:)

然而,貌似这个时候,计算机志愿者心中仍然忐忑不安,不知道能否完成教学任务。白天的几个场景仍历历在目,当地老师的一些问题,我们竟然回答不出来……汗!

虽然我们开玩笑说,如果当地老师水平太高,我们就教C++开发和Linux,发展祖国的开源软件,:)

虽然不知道每个人的真实紧张程度,但,无论怎样开玩笑,有个基本的原则:不能慌。

如果一群人在一起,有时,当群体有些negative的倾向的时候,需要有人站出来,扮演有益于团体的角色。

“如果所有人都慌了,那就坏了”

每次想到这个道理,我都想起父亲讲的一个鬼故事:那年发洪水,从城里回镇上的路断了。当时他们一位长辈在市医院去世了,大概五六个人,开车载着长辈的灵柩,连夜绕道回镇上。

当时夏天,凌晨4点多,暴雨停了,小雨还在下,天已经朦朦亮了。

经过一个河堤时,忽然,看到河堤上走来一个人影,一身白装,没有脑袋!

父亲说,他当时刷地就感到,其他几个人寒毛都直起来了!但他装作啥都没看到,虽然有人指给他看:

“那是什么?”

“啥都没有啊!”

车过河堤很久,有人问“你真的啥都没有看到吗?”

“也不全是。但不管是幻象,还是真实,要是所有人全慌了,那就坏了。”

当时为什么没慌呢?父亲讲了他小时候的一次经历。

“不要慌,沉住气”

那时候他十岁左右,在山西逃荒。逃荒,就是住在深山老林里面,去垦别人放弃的土地,只求收一口粮食能够活命。

平时也会砍柴,然后挑到山下集市,去换一些盐巴或粮食。他年纪小,就挑小担的柴禾,他父亲和叔叔挑大担的柴禾,沿着曲曲折折的山路走。

忽然,转过一个急弯,看到几百步外的小路边,卧着两头豹子!看起来是一公一母,这时候豹子也看到了他们,一起好奇转过头来,盯着他们。

他父亲轻轻稳了稳扁担,低声说,“不要慌,沉住气,跟着我走。”

他们三个没有再说一句话,就这样,保持速度不变,挑着柴,低着头,不去看豹子的眼睛,从容地从豹子身边走过。

而心却一直在嗓子眼上,一直到转过一个弯,走远了,确信豹子不会追来,才长长松了一口气。

他们仿佛赌了一把,赌的是,深山老林的豹子,很少能见到人,所以对人也有畏惧。而当时如果掉头就跑,反而激起它们的好奇心,引发豹子追上来。

团队需要的角色

父亲讲过很多故事,我无法一一验证真假。但是即使编的故事,也是能带来启发的。比如这两个,告诉我们,在一个团队可能发生危机的时候,不应该随波逐流,而应该沉住气,不要慌,仔细分析,主动去扮演团队最需要的角色。

貌似扯远了点,哈哈,凌晨0:56了,上楼休息去了。:)

Sep 09

Hong Kong is crowded with……everything! We lodged in a moutain hotel. It’s cheap but great, facing the bay and on the top of a moutain. If walking up the moutain, you will need about 30 minutes.

After taking a bath, I walked in naked feet, to a table near the sea. Sat there and stared at the flowing coulds overhead, thinking about my experience, the good and bad, in past months. The night was beautiful. The clouds and wind were pleasant……

Sep 08

I took the train from Beijing to Jiulong alone, due to some passport issues. The train was delayed about three quarters. But HK people are so warm-hearted. I got road guide the moment I walked out of the railway station. Then took the bus 103 directly to Hong Kong University. The problem was about communication. It was hard to find a public phone booth. I walked around and fortunately found HK SIM card from a convenience store 7/11. Then I reached the TECC representatives and got to the conference site. Will write something later. Still in middle of something….

Sep 06

上一篇文章提到了如何使用Redirect做重定向,但是Redirect做的话不能匹配一批URL,这就需要用到RedirectMatch和正则表达式,来完成更艰巨的任务。

RedirectMatch指令:

说明: 基于正则表达式匹配对当前的URL发送一个外部重定向
语法: RedirectMatch [status] regex URL
上下文: 服务器配置, 虚拟主机, 目录, .htaccess
覆盖项: FileInfo
状态: Base
模块: mod_alias
说明:此指令与Redirect等效, 但是它使用了标准的正则表达式,而不是简单的前缀匹配。 如果此正则表达式与URL-path相匹配, 则服务器会用给定的字符串替换加了括弧的匹配,并视之为一个文件名。

 

举例来说,比如我要把以下地址全部匹配到http://www.frankdu.com/blog/feed上:

/blog/SyndicationService.asmx/GetRssCategory
/blog/SyndicationService.asmx/GetRssCategory?categoryName=Coding
/blog/SyndicationService.asmx/GetRssCategory?categoryName=Natural Language Processing
/blog/SyndicationService.asmx/GetRssCategory?categoryName=Coding|Python
/blog/SyndicationService.asmx/GetRss

那么可以在.htaccess中添加下面一行指令:

RedirectMatch 301 /blog/SyndicationService.asmx.*$ http://www.frankdu.com/blog/feed

现在访问原来地址的链接,都能找到新的、改变后的地址了。

更多内容,请参见Apache的mod_alias模块的中文文档

Sep 06

网站建设中,时常会遇到需要网页重定向的情况:

1.网站调整,如改变网页目录结构,网页被移到一个新地址。

2.网页扩展名改变,如因应用需要把.php改成.Html或.shtml,在这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户还会得到一个404页面错误信息,访问流量白白丧失。

3.注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点。

 

常用的重定向方式有:

1. 301 redirect

301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。

2. 302 redirect

302 代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。

3. meta fresh

这在2000年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之内),会被判断为spam。
这里我们主要谈谈如何通过301 Redirect实现网页重定向

 

IIS服务器实现301重定向

* 打开internet信息服务管理器,在欲重定向的网页或目录上按右键
* 选中“重定向到URL”
* 在对话框中输入目标页面的地址
* 切记,记得选中“资源的永久重定向”
* 当然,最后要点击“应用”

Apache服务器实现301重定向

相比较来说,Apache实现起来要比IIS简单多了。在Apache中,有个很重要的文件.htaccess,通过对它的设置,可以实现很多强大的功能,301重定向只是其中之一。

Redirect permanent / http://www.frankdu.com/blog/ ;将目录下内容重定向到http://www.frankdu.com/blog/
Redirect permanent /old.html http://www.frankdu.com/blog/new_url ;将网页old.html内容重定向到http://www.frankdu.com/blog/new_url

通过合理地配置重定向参数中的正则表达式,可以实现更复杂的匹配。有兴趣的朋友可参考Apache手册。

 

其他方法还有:

PHP下的301重定向

<? Header(”HTTP/1.1 301 Moved Permanently”);
Header(”Location: http://www.frankdu.com/blog” );?>

ASP下的301重定向

<%@ Language=VBScript %>
<% Response.Status=”301 Moved Permanently” Response.AddHeader “Location”, ” http://seo.highdiy.com”>

ASP .NET下的301重定向

<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”
Response.AddHeader(”Location”,”http://seo.highdiy.com”);
}
</script>

配置完成后,要认真检查一下是否正确。Internet有很多类似的Server Header检查工具,如Check Server Headers Tool - HTTP Status Codes Checker。

Sep 06

特别感谢典型的江南ppmm许静逸对我们做的报道,全文如下请访问云南新闻网:

http://www.yn.chinanews.com.cn/news/yunnanxinwen/jiaoyu/jiaoyu/2007/820/07820134113C830137ABDBCA4EA1K24.html

Sep 06

先解释一个问题:为啥我们培训的是当地老师?每年夏天,很多大学都会有很多支教分队奔赴中西部,去做一些暑期实践活动,主要是教中小学生,比如说清华每年有20~30支中美大学生联合支教队,再比如复旦小盆友春环今年带队去了宁夏。很难奢望这些活动有点石成金的效果,但是对于参与的大学生,对于当地参与的中小学生和教师,都是一次难得的交流机会,互相帮助增长见识。TECC的暑期支教项目,理念有些不同。TECC本身是一个学生NGO,我们的理念是培训当地的教师,因为我们相信这个的效果更长远;当然如果当地表达了愿望,也可以培训中小学生,或者为中小学生办人生论坛等活动。

我们在永胜即将培训的,就是当地的小学计算机教师。他们有的水平还可以,但更多的是对计算机很陌生,比如打字用的是“二指禅”敲键盘。下午两点钟,我们从宣明会出发,乘车前往计算机培训教室。英语培训就在宣明会的教室里面做,但计算机培训要到外面租借教室,有两个场所:先觉电脑、进修学校。

第一次课程在进修学校,到了以后才发现,机器“又”是PIII 667MHz加128M内存的,这配置是2000年的电脑嘛!虽然已经有心理准备,可是看到不能上网,机器跑起来很慢,估计我们准备的部分内容还不能教,还是有一点点哇凉哇凉的想法。所以,风雨走过,需要感谢志愿者们克服种种硬件困难,尽心尽力顺利完成了培训任务;更需要感谢当地老师的宽容和配合,耐心地和我们一起来面对种种情况。

按照计划,我们第一堂可的框架是:展示后面11天的课程提纲,然后各位志愿者挑最精彩片段来讲,就像电影的预告片一样。首先讲课程提纲,记得是Jialun中午辛辛苦苦做的PPT,忘了什么原因是我来讲的,当时我挺紧张的。最开始课堂秩序还有点乱,因为每位志愿者都在讲台上讲了一些注意事项。

接着Dongxiao讲计算机硬件基本知识,拆了一台坏电脑的机箱,老师们围得水泄不通,很努力地听志愿者的讲解。依稀还记得当时Dongxiao指着主板说:这里是CPU。然后才发现上面CPU,他马上说:哦这台机器CPU被人拆了,怪不得这台机器坏了,原来是没有CPU。

接着Jiatu登场,做计算机病毒知识简介。六天以后Jiatu详细展开讲病毒和安全的时候,连我们都学到了不少东西,比如怎么防U盘病毒。Jiatu还自己编写了哑病毒,给老师们做实验。

最后我讲了一个Excel使用例子,做成绩统计,算平均分、及格率、优秀率。本来按计划应该Wangnan将,她当时太紧张了……难道是因为罗老师露了一手,让她觉得当地老师水平都比我们高?

第一个下午就这样度过了,第一节课就这样度过了,我们拼命展示的“预告片”一样的精彩片段。可是心头还有一片云遮着:课表还没有排出来呢,当地老师的水平还没摸透呢。

 

我在讲课:

在课堂上:

这么多人走神,内容太难了?

志愿者Jiatu和Dongxiao:

讲一点Bill Gates的趣事:

课间休息1:

课间休息2:

就在楼下,晒花椒呢:

志愿者Jialun:

老师们在做上机实践:

老师们的笔记:

 

注意画面上还有更破的电脑:

Sep 05
  1. 创建套接字Socket
    • 初始化连接请求:BeginConnect
  2. 等待
    • ConnectCallback()
    • 初始化发送的请求:BeginSend
  3. 等待
    • SendCallback
    • 初始化接收的请求:BeginReceive
  4. 等待和继续处理
    • ReceiveCallback
  5. 关闭套接字

 

在.NET中进行C#编程的话,参见System.Net.Sockets命名空间和异步编程相关知识。

服务器端的基本流程,请访问另一篇日志。