Category: 未分类

  • 新 RSS 源地址

    我注意到虽然原来的 Live Spaces 的 RSS 订阅地址能自动跳转到 WordPress ,但是这样貌似不能输出文章全文,请通过阅读器订阅我的博客的同学们更新为此 Feed 地址: https://mghostsoft.wordpress.com/feed/ 。谢谢!

  • Live Spaces 果然还是要关了……

    早有坊间传闻说 Live Spaces 要关。我一方面抱着微软不会关他的希望,因为太多用户积累了这么久的珍贵数据;另一方面又很担心微软真的某一天会关掉它,数据怎么处理还是未知数。

    用微软的服务很没有安全感,说不定哪天就会被关闭。非官方微软新闻博客 Liveside 的中文版 Livesino 有一个标签叫做 Deadpool ,里面专门收录各种微软关闭服务的新闻。比如 Windows Live 系列的 Event, Favorite, Expo, Alert, 个性化主页 (my.live.com) , Call, OneCare ,都是我或多或少用过或接触过的, Windows Live Gallery 也快要关了或者转型了;还有 Microsoft Vine Beta, Popfly, Microsoft Money, Microsoft Encarta, Office Live Workspace, Live Mesh 等,也都是我试用过或者推荐过的,现在已经全部关闭或者不再出新版了,其中比较好的情况是被别的服务取代了,而糟糕的则是没被市场接受而彻底消失了。你现在用一个服务,比如说 Hotmail, Calendar, SkyDrive ,用得好好的,并且生活中的一些重要的部分都依赖它们,谁知道一年之后会不会成为即将关闭的对象呢?

    Spaces 当年可是跟 Messenger 和 Hotmail 一起算是 MSN 最重要的三个服务。后来改过很多次版,名字也变成 Windows Live Spaces ,虽然褒贬不一但整体还是在改进的,至少是一直在改变的。但貌似从2007年开始 Spaces 就没什么动作了,有改动也是非常小的。今年6月份 Spaces 的统计功能悄悄取消了,结果引来骂声一片,而就在前几天,“最近的评论”功能也消失了。虽说写博客也不太需要额外的乱七八糟功能,但改成这样已经或多活找影响到人正常使用了。刚过没两天我突然看见豆瓣的 Spaces 小组有人发帖子说微软要关闭 Live Spaces 了,我赶紧到 Spaces 主页一看,发现果然真要关了!而数据的解决方案是转移到 WordPress ,我立刻放心不少。几分钟后我就迁移到 WordPress 了,结果后来证明事实上我的迁移是相当顺利的,其他很多大陆用户被墙,而没被墙的也很多日志没有立刻导入。


    LiveSino 上又多了一篇被标记上 Deadpool 的标签的文章,而这次竟轮到 Live Spaces 了。


    虽然不太舍得,但是这基本是最好的结果了。事实上 WordPress 确实比 Live Spaces 好用,很多个人或技术博客都用的 WordPress 模板。它功能比 Spaces 强大,速度也很快,各种信息一目了然,而且没有 Windows Live 系列讨厌的多次跳转。比单纯地注册个 WordPress 帐号然后从 Live Spaces 导入(如果可行的话)好的一点在于 Live Spaces 原来的网址会自动跳转到 WordPress 。


    对于那些订阅了我博客 RSS 的人,抱歉突然多出10篇新条目。另外,当前这个博客的新 RSS 地址是 https://mghostsoft.wordpress.com/feed/ ,尽管原来的地址也能自动跳转,但这个地址还是更靠谱一些。

  • 推荐: Microsoft Exchange

    Microsoft Exchange 的本质是什么我还没搞清楚,貌似是一个提供邮件服务、联系人、日历的服务器遵循某种协议以后,支持 Exchange 的客户端就可以方便地访问这些服务。我发现的一种应用是:使用 iOS 设备( iPhone, iPod touch, iPad)访问 Windows Live 服务(Hotmail, Calendar, Contact)。

    首先要在比方说 iPod touch 上配置一下。在“邮件、日历、通讯录”里面新建一个账户,帐户类型选择 Microsoft Exchange 。服务器填写“m.hotmail.com”,域空着,别的项目根据自己的情况填。

    使用 Microsoft Exchange 有如下好处:

    • 推送获取,时效性非常强。在实际使用中,我电脑上的 Messenger 提示收到新邮件的同时, iPod 就会响一声。
    • 邮件的文件夹全都同步。在传统的方式中,只能获取“收件箱”中的邮件,但是用 Exchange 就能获取所有文件夹中的邮件。
    • 在 iPod 上把一封邮件标记为已读、删除或者移到另一个文件夹中,服务器也会进行相应的变动。反之亦然,比如 iPod 收到了一封新邮件,我在电脑上开网页然后把它标记为已读,那 iPod 上的这封邮件也不是新邮件了,而我在网页上删掉的话, iPod 上也删掉了。这减少了很多的麻烦。
    • 日历也能同步,而且在 iPod 上编辑在服务器端也能生效。联系人也是。

    Hotmail 是前不久刚支持 Exchange 的。貌似使用 iOS 和 Gmail 帐户以前就能实现一些同步,但是我不知道他们用的是某种公共的协议还是 Gmail 与 iOS 特有的协议还是干脆就是 Exchange 。

  • IE9 发布了,技术部,你们懂的……

    前几天 IE9 Beta 发布了,在性能和对 Web 标准上有大幅提升,我快要考虑从 Firefox 再回到 IE 了,因为在 Windows 下用 IE 有很多好处,首先它是最能将大多数网站按照设计者意图显示出来的浏览器,而且它与 Windows 其他程序能比别的浏览器更无缝地工作。比方说,在 Windows 中,一个回车是由一个 r 和一个 n 连着的,而基于 UNIX 的系统是只有一个 n 。在 IE 中,一个回车就是一个 rn ,但是 Linux 出身的 Firefox 就只是一个 n ,而 Mac 出身的 Safari 也是单独一个 n (尽管 Mac OS 中应该是单独一个 r)。如果有人想测试可以下载这个网页,输入包含回车的一个字符串然后观察 ASCII 码。从 IE 中复制网页内容到剪贴板中也是最符合 Windows 习俗的,比如我可以复制一个表格,然后粘贴到 Excel 中,就是所期望的结果,但是在 Firefox 中复制再粘贴却是制表符分隔的文本。 IE 的收藏夹和链接也是与 Windows 集成的,它们甚至是可定义路径的用户文件夹。 IE 应该是用了大量 Windows 的库(DLL),而这些库广泛也被用在其他 Windows 程序中;另一方面,很多程序的部分功能也是用 IE 内核实现的。最后,我个人常用的 Windows Live Writer 和 OneNote 在 IE 中都有插件,可以方便地从 IE 中将选定的部分或整个页面输出到相应程序中。 Firefox 有一点值得一提的是 Sync 插件,它可以将个人的收藏夹、历史记录、表单数据等备份到服务器上,这样重装系统什么的就很方便。但是,既然 IE 的收藏夹是系统个人文件夹,那就可以把它设置为一个位于非系统分区的文件夹中,而且 Windows Live Sync 也可以将收藏夹同步到服务器上,但是历史记录和表单数据貌似无法备份。

    介绍 IE9 前先列出两个网址:

    IE9 下功夫支持了 HTML5 和 CSS3 。IE 以前的版本的性能极度受人诟病,但是 IE9 至少在 HTML5 的 <video> 和 JavaScript 操纵 <canvas> 上的性能表现十分出色。,这得益于它充分利用显卡加速。在一些 demo 中, IE9 能以最正确的方式渲染一些 CSS3 。这是一些最本质的改变,也是开发者最关心和乐于看到的。猛击这里了解更多。但是当前的 IE9 还是个 Beta 版,还有很多问题,最显著的是经常会崩溃。

    我还记得初中时买的一张 Windows Me 的盗版碟上写着:“集成最新 IE5.5 永不过期”。而我对浏览器最早有概念还是大概初三时 IE6 刚出的时候。我热衷于把各个电脑都部署上 IE6 ,但它实际上有什么好处我却不太知道,那时我离网页开发还很远,只看到一些表面现象,比如下载对话框的变化、图标更漂亮一些、更整洁的工具栏、多了个“媒体”侧边栏(后来消失了)。它在当时还算是一个合格的浏览器,但微软的错误在于就把它放着不管了,一放就是5年,互联网中的5年可以发生翻天覆地的变化,但这个糟糕的浏览器顽固地占领了绝大部分市场份额,搞得开发者焦头烂额。后来的 SP 增加了一些安全特性和弹出式窗口拦截程序,但没有改进内核。

    IE7 发布的时候都是我进工作室以后的事情了。有些数据表明 IE7 比 6 对标准的支持的进步微不足道,但是在实践中我感觉 IE7 有明显的改进,经常是一个页面在 IE7 、火狐、 Opera 甚至我的手机浏览器中显示都正常而唯独 IE6 不正常。

    IE7 在功能上显著新增的有:更简洁的界面、标签浏览、搜索框、 RSS 订阅。注意后两者,它们是与开发相关的。具体地讲,我就是因为 IE7 新增的这两个特性对就业网进行了一些改进:首先是做了几个 RSS 源,但除此之外为了让浏览器感知到一个页面有可订阅的 RSS ,需要增加几个标签,如图所示(单击图片放大)。

    当然,绝不仅是 IE 支持这个,现在感知页面的 RSS 源几乎是浏览器的标配了,甚至很多手机的浏览器也有此功能。而 Firefox 甚至更进一步,可以选择将源订阅到本地或者类似 Google Reader 这类在线服务。

    而利用 OpenSearch ,也可以让浏览器的搜索框感知到当前页面可用的搜索引擎,然后添加到浏览器中。为了办到这一点,首先要把一个 XML 文件放到站点中(就业网的文件是这个 URL : http://www.dsjyw.net/common/OpenSearch.xml ),然后也是增加一个标签。效果如下图所示(单击图片放大),因为当前的 IE9 Beta 无法看出效果,所以我用火狐截的图。

    IE8 在表面上新增的功能有:兼容性视图( Compatibility View )、集成的开发辅助工具、选项卡着色、隐私( InPrivate )浏览、加速器( Accelerator )和 Web Slice 。

    加速器的用法是选定网页的一段文本,然后旁边就会出现一个小图标,单击它就能利用这段文本快速使用一些服务。

    但在我个人使用中,这个东西意义不大。我们可以开发个自己的加速器(详情见这里),但做完之后我很怀疑有哪怕一个人会去用。

    另一个就是 Web Slice ,用法是在某个网页的频繁更新的部分(比如股票、最新促销等)单独提取出来然后放到链接栏中,然后以后想访问这部分内容时直接在链接栏就可以看,有更新时浏览器还会提醒。

    鼠标移到有 Web Slice 的网页部分时,会出现一个绿框。

    单击那个绿色的按钮,就会出现一个对话框。

    点“Add to Favorites Bar”以后,在链接栏就会多出一个这个项目。单击它就会在一个小窗口内显示这部分的最新内容,而你也无需离开当前正在浏览的页面。

    为了设计 Web Slice ,只需把一些 DIV 和 SPAN 加上特定的类名就行了,如图所示(单击图片放大),详细的开发说明见这里

    IE9 有一些令人惊讶的新特性,其中最值得一提的莫过于“锁定到任务栏”了。方法是:点住一个选项卡,然后往任务栏上拖,就像把普通程序锁定到任务栏那样,如下图(单击图片放大)。

    锁定以后,效果类似下图(注意右边三个图标)。

    从任务栏打开网页,那么浏览器按钮颜色也会变成对应的,见下图。工具栏最左边是个窗口图标,单击那个会回到这网站的主页。

    更令人惊讶的是,这样锁定的网页还支持 Jump List 的自定义项目!

    甚至还有 Overlay Icon (以下两幅图单击放大):

    还没完, Windows 7 的任务栏新特性还差什么?对, Thumbnail !我勒个去,还真有这凶残能力啊!(单击图片放大)

    我曾经试过应用这些任务栏特性进行桌面开发,费了半天劲才弄得差不多,结果现在网页就能直接定义这些了!

    总的来讲,办到这些也并不难。比如为 Jump List 添加任务和自定义区域的方法就如下:添加任务是用特定的 <meta> ,而添加自定义区域及其内部的任务就是用 JavaScript 来操作 BOM 中提供的 window.external 对象(以下两幅图单击放大):

    值得一提的是,在 Jump List 的自定义区域,条目是可以被用户自行删除的。而甚至可以使用 JavaScript 给添加一个事件监听函数,当用户删除这里的条目时触发该事件。

    对于 Overlay Icon ,是用 JavaScript 控制的,也是作用于 window.external 对象。添加 Overlay Icon 要调用一个方法传进图标 URL 和鼠标提示两个参数,而清除图标的方法则不需要参数。

    而 Thumbnail Button 也是用 JavaScript 操纵 window.external 对象实现动态增减的,其中每个按钮可以自定义图标和鼠标提示,当然,为了让它们发挥作用,还要给绑定上一个事件监听函数。

    关于这部分有趣的主题的系统指南,请参见这篇文章

    而关于 IE9 开发的最完善和权威的资料,请在这里找。


    好吧,技术部充满激情的孩子们,你们懂的……

  • Spaces, 没人管了么……

    我还在奇怪怎么在 Windows Live Home 都看不到什么人更新日志,很长一段时间里我都以为是因为这里只显示网络里(即加为“朋友”)的联系人的更新,可能很多人我都没加吧。今天点开了几个联系人的空间看,他们当年都是写日志的先锋,我写博客也在很大程度上受他们影响,结果点开一看,原来他们就是真的没更新了。最后一篇日志还是一两年前的,评论里的广告也像杂草一样没人管。

  • 雨纷纷,旧故里草木深

    今天翻看了以前的日志,看了几个小时。一方面,深深地感受到我过去原来是那么能写、那么有思想的,另一方面又使我严重怀念大学的日子。

    自从我的空间被墙之后,我就丧失了大部分写日志的动力,写的文章也经常比较敷衍。而看到以前空间那么繁荣,再对比现在的荒凉,顿感十分沧桑。

    还记得以前 Messenger 联系人更新空间的话,在图标前面就会有个黄色的小星,那时我就是靠这个监视所有联系人空间更新的,看到有人更新就点进去看。也没有在一个地方查看是否有新评论的机制,只能记住最新几篇的日志的评论数量,然后时常开一下网页看看有没有增加,以及在别人空间中评论的日志也时常去看一下有没有回复。过去的网速也是极慢的,连接 Windows Live (过去的 MSN )更是缓慢,而电脑慢得甚至连将模块设为半透明都不敢。而如今, Windows Live Home 能方便地跟踪联系人空间的更新,却没几个人更新空间了;也有一个专门的地方监视最近的评论,却一年也不到5条评论;开网页不用担心什么性能问题速度也飞快了,也有 Windows Live Writer 这样的强大工具,却没什么心情写日志了。

    一些事关成熟的各种说法让人越来越不敢表达自己的思想。必须要成熟,但有什么想法就是不成熟的标志,于是就不能这样想,至少不能说出来。要表达什么观点,就必须考虑所谓成熟的人“应该”怎么想,所谓符合一般社会价值观又是怎样,四处嗅查怎样才是正确的,偶尔有特立独行的想法却是伴随着罪恶感和自责的,久而久之自己就变成了一个社会的机器,一个没有独立人格的人,一个机械的人,一个可有可无也可以轻易被取代的人。

    所以,我决定以后要重拾写日志的传统,让我挖掘和正视自己的思想,去关注一些我真正想关注的东西,重新培养积极思考的习惯,也让以后看到的时候有东西可怀念。


    从小时候到现在,时常见到有人问这个问题:如果让你有机会选择回到过去的任何一个时候再过一遍,你会回到什么时候?我也见过别人的形形色色的答案,有的想回到中考前,有的想回到幼儿园,但我以前一直的想法是:就接着现在继续过,以前什么时候也不想回。

    然而,当我大学毕业以后又见到这个问题时,猛然发现我已经开始真切地想回到过去,确切地讲是回到刚上大学的时候。

    大学的四年过得说不上快乐。学校本身是十分官僚和腐败的(不过幸好工作室还是一片净土,至少我刚上大学的时候是这样),而这个城市也令人绝望。但是,大学生活绝对是我活到现在最怀念的一段时光,而且我也看不到在未来还会有怎样的生活与之媲美。

    有的时候我觉得,其实我还没有毕业,因为关于大学生活的一切记忆仍然那么地生动和真切也仍然那么地朴实,没有因为时间的流逝而变得黯淡或是升华。毕业后的一切,或许只是一场还没醒的梦?当我回忆大学生活时,所感受到的却是比面对现实时还要真实。

    有的时候我又觉得,或许四年的大学生活才是一场梦?要不是梦,怎么会突然凭空多出来这么一段令人怀念的时光?怎么会有四年之久却就这么还没来得及品味呢就过去了?

    所谓快乐,并不在于我一手拿着 HTC Magic 一手拿着 iPod touch ,却也只能无聊地翻遍程序列表也找不到一个想玩的游戏;而在于即使给我一个低级的索爱 K506c 我就能把突然冒出来的一个有趣的想法随手编成短信然后群发给5个人分享。


    再一次以学生的身份走进了校园。仿佛是找回了久违的校园生活的感觉。但是,一切还是太不同了。没有过学院组织的集体活动,我现在甚至不认识一个除我之外的我们学院2010级的学生。住在校外的公寓里,说起来条件是优越了,不用天天走那么远去浴室洗澡,不再限时供电,房间也足够大了,也不再抱怨东北的人和社会,但是我所剩下的也只有强烈的孤独感。

    谈论梦想貌似是很久远的年代才做的事情了,现在谁不都变得屈于现实,那些曾经坚持过的信念在不得不面对现实问题时立刻变得不堪一击。有那么一个时刻,我们会猛然发现,那些从前被我们无比鄙视和抵触的念头,不知从何时起开始不自觉地一直在遵循了。

    什么时候也代替不了什么时候。就算见到了谁也最多就是谈谈现在的生活和叙叙旧而已,甚至谁也不再是以前的谁;就算是回到了校园也只是转一圈怀念一下而已,那些青春的面孔一直在提醒你你早已不再属于这里了。那种生活早已经远去,没有什么能够寄托来找回过去的日子。那些岁月,过去了就是过去了。

  • 今年的新 iPod 们

    今年的 iPod 发布会提前了几天举行。不过,我没有像去年那样全程跟踪,吃完午饭上网的时候已经快结束了,也就缺少了一些去年那样的乐趣。但是总的而言,今年的新款 iPod 比去年的升级幅度更大。

    iPod touch

    touch 无疑是今年最值得关注的升级。虽然只是把 iPhone 4 新增的特性移到 touch 上,但是这就已经足够了。这次的升级使得 iPod touch 跟 iPhone 的距离缩到了历史的最小值: Retina 屏幕、双摄像头、三轴陀螺仪,而且 8GB 版本与 32GB 和 64GB 在其他硬件方面也都一致了。虽然并没有像去年那样把 32GB 卖上一代 16GB 的价,但这样的升级还保持原来的价格也是不小的进步,毕竟储存容量的价格被过于夸大了。

    这样的硬件升级是十分有道理的:带有 Retina 屏幕、三轴陀螺仪和摄像头的设备增加以后,第三方应用程序开发者就更有动机去开发应用了这些新技术的程序,这有助于保持应用程序商店繁荣兴盛和高质量。

    刚看到一条传言说新 touch 也带振动了(但是未经证实),如果真是这样,那又更进一步缩短了 iPod touch 和 iPhone 的距离:貌似只剩下移动网络接入、指南针和 GPS 。但是 touch 比 iPhone 4 薄 22% 、轻 25% 、便宜 55% (香港无锁版)。

    iPod nano

    nano 的升级是变化最大的,但在我看来并不是在进步。 nano 的前身是 iPod mini ,而它的前身正是经典的 iPod 。也就是说,不同于半路直接杀出的 shuffle 和 touch , nano 是具有纯正 iPod 血统的:典型的屏幕+滚轮。然而,这次发布的第6代 nano 却把滚轮去掉了,屏幕也缩小了,直接变成了触屏操作,而多点触摸也挺没意义的,而且我感觉触摸屏的手感并没有滚轮好,何况是那么小的触摸屏,而这么一个金贵的屏幕甚至开始无法播放视频了。上代加进去的本来就不怎么受宠的摄像头也去掉了。价格却跟上一代完全一样。如果说可能的优点,那么或许有人喜欢这种触屏的设计,而且更加便携、外观和界面更漂亮,当然这些并不是对所有人都是优点。

    新的 nano 变得比 shuffle 大不了多少,还加上了原来 shuffle 特有的夹子,又却加上一个 touch 的触摸屏和界面。我想说,设计出这样一个产品不是坏事,多一种选择总是好的,而且这还是相当有创意的选择,但它不应该是 nano ,或许应该是一个什么新的分支。直到上一代, nano 还是适合最多人的选择:它平衡了各个要素,比 shuffle 容量大、功能多,比 touch 更纯粹、简单,比 classic 更便携。但这一代的 nano 立刻成了最华而不实的了。

    iPod shuffle

    第4代 shuffle 没什么新的特点,就是集成了第2代和第3代的优点:机身上有按钮、有语音反馈、支持播放列表。虽然没亮点,但却是最实在的更新,它并不是苹果想破脑袋为了让新一代产品看起来跟上一代尽可能不同的产物,而是实实在在把功能和用户体验优化的结果。同时,新的 shuffle 只保留了 2GB 的版本,事实上对于能选择播放列表的 shuffle 而言, 2GB 是一个刚刚好的容量,当然可能有人会想要 4GB ,但总体而言这并不是一个大的缺陷。同时,价格比上一代便宜10美元。

    iPod classic

    classic 完全没有更新,有点“遍插茱萸少一人”的感觉,但是,对于 classic 的用户而言,他们不需要苹果每年都去更新它,甚至不期望苹果在这个产品上投入多少关注,也不在乎这个产品被边缘化,仅仅需要的是苹果别把它停产就行了。这是最经典的 iPod 设计(屏幕、滚轮、硬盘)和文化(海量空间)仅存的独苗了。

    Apple TV

    这个产品在以前还真没怎么关注过,直到现在我还不是很清楚它能做的事情,但是可以看出它的升级是非常显著的:只有前一代20%的体积、 1/3 的售价、 HDMI 接口和 Youtube 等在线视频,以及其他很多我没怎么关注的功能。 $99 的价格跟 iPod 家族比的话仅比 shuffle 贵,而貌似用它租赁电影的便宜价格也是亮点之一。苹果这么高调升级 Apple TV ,不知道是不是感受到了 Google 涉足 TV 市场的威胁?

    软件升级

    iPod touch 和 iPhone 上的 iOS 4.1 的改进不算多,增加了早就宣布的 Game Center ,以及照相质量的改善(高动态光照),但这点跟以前版本的 touch 无关。还有就是电视剧也能在 iTunes 上租赁了(原来只有电影可以)。而11月才会发布的 iPad 上的 iOS 4.2 将会集成当代 iOS 4 的所有新功能(如多任务),除此之外还将增加无线打印(原来完全不能打印)和无线影音信号传输。比如,可以把 iPad 上的影片无线地传输到 Apple TV 上播放。

    iTunes 10 新增的功能主要就是一个叫做 Ping 的社交网络服务,但是它跟我们主要听华语歌曲的人关系不大。

  • 前几天去超市

    前几天去离住的地方大概600米的一个超市,因为我没有小区门的钥匙,所以需要绕一些远,实际的路程有一千米多。

    然后杯具了,我严重高估了我提东西的能力,结果买了30多 kg 的东西,出来以后光是想办法把那么一大坨东西那么多袋子用两个手提住就费了半天劲,提起来以后又只能支撑走二十多米就要停下来歇一歇。好不容易走了100多米远,正歇着呢,突然旁边有人喊:“需要帮忙吗?”一看是个开着车的中国学生,顿感无比欣喜,于是他就帮我运回去了。我跟他完全不认识,问了才知道原来也是 IIT 的学生,读大四,是辽宁人。还是热心的人多啊!

  • 讲座回忆录

    这是一篇分了很多次才完成的日志,最初是我撰写在 Google Wave 中。大多数文章都是凌晨两三点写的,因为现在我只有这个时候才能写出真正的东西来。

    我做这个系列的动机是有一次教当归 XHTML 的时候,翻出了以前的演示文稿,就突发奇想觉得应该写点东西纪念一下,然后就每天写一两个最后把基本所有的都写了。

    但是显然有一些演示文稿被我弄丢了,我还记得大一暑假时刘老师让我们所有人每人讲一个 IT 界的我们不太了解的专题。我被安排讲的貌似是各种服务器端脚本语言的比较。但那个演示文稿不知道哪去了。我还记得张乐讲过一个类似文件系统的比较的主题,但那应该是我大二暑假时的事了。我之所以会记得这个是因为她在讲座结束时提问到我,而我的回答还超出了讲座的范围,而且我还因此受到了表扬smile_shades

    我想先说一说大一的时候别人给我们的讲座。我还记得第一次讲座是曾荣耀给我们讲用 Frontpage 做网页,但他也强调说必须会 HTML 。那时我还不知道曾荣耀是谁,一直以为是哪里请来的专家,所以此后一段时间我一直把他称作曾老师。

    王文的 Google 讲座是十分有特色的,安排这样一个主题的讲座不是很容易的事情,因为不像某一门纯技术那样有基本固定的思路可遵循。所以他走了之后就没人再开这个讲座了。在讲座的时候,他还让大家谁说个自己的网名然后放 Google 里搜索,结果最后还是没人自告奋勇,其实我是相当想来的……

    PHP 讲座我印象中好像也是王文给我讲的,但关于这点我不太确定,因为印象不深了。

    而 MySQL 是文瀚讲的,这个讲座我听的时候也要睡着了……

    貌似曾哥还给我们讲过一个系统安全的讲座,但具体内容不太记得了。

    这些讲座的内容丰富程度和深度都远不如后来我们给新生开的,但是很好地促进了我们自学,所以最后的效果甚至更好。

    CSS 用法简介

    2006年3月26日

    下载

    要不是前两天给同学翻幻灯片,我还没注意到这个未经修改的演示文稿居然还留着。

    从首页上的日期可以看出,这是在我大一下学期开的一次讲座。当时是工作室历史上唯一一次春季纳新,齐汝西、赵威、张帆、杨乐乐这些人就是这次纳新的时候进来的。我还记得那个时候文瀚在安排讲座,恰好我看到了,她把 CSS 和 JavaScript 打算放在一次讲座里。她就问我要不要讲。当时我是十分希望讲的啊,但是表面上得矜持一些,还假装推诿了一下,当然最后还是安排给我了。在大一的时候就开讲座貌似是史无前例的,所以这对我来说是极大的荣誉。

    在我开始准备之后不久,就发现把 CSS 和 JavaScript 只用一次讲座是讲不完的。所以就安排了两次。那时工作室的人也少,规划讲座也很灵活,哪像后来一开始先把一整个学期的所有讲座每次的具体内容、时间、主讲人、要求美工还是变成参加、什么时候考试等等全都安排得那么详细。

    对于讲座内容,当时根本没什么理解,绝大多数内容我都不会,更无从谈实战经验,还是现从网上找的资料,说实话在我讲完的时候我还不怎么会。从演示文稿里就能看出,当时我对 CSS 的认识是相当肤浅的,整个讲座基本就是各种 CSS 属性的罗列。

    做这个幻灯片费了我一些功夫,力求排版上的一致,以及一些特效,还用到了一些宏。所以多数幻灯片在放映的时候才能看出效果。因为有这个弊病,所以在讲座之后我还专门修改成了一个“便于阅读的”版本。

    到最后,这个演示文稿有51张幻灯片。在那时,这个数字是不可思议地大的。我记得娄帝开第一次讲座的时候就用了七八张幻灯片(下载)。而在我之前我参与的讲座也最多20多张。所以,在开讲座之前我对时间的把握很没信心。不过好在每张幻灯片都没什么好展开讲的,而且那时是晚上7点钟,没什么时间的压力,所以没出现时间问题。

    开讲座的时候,刘畅和娄帝还专门前来膜拜。不过据说我的声音催眠效果非常好。

    这就是我的第一次讲座。

    JavaScript 简介

    2006年12月10日

    下载

    这个演示文稿本来是在06年春季讲 JavaScript 的时候做的,后来06年秋季下一届的进来了我就又把这个幻灯片稍微改了一点接着用(改了多少已经不记得了),而最原始的我这里已经没有了。

    回想起来我开过的有关 JavaScript 的讲座应该是次数最多的主题。跟后来的讲座比较就会发现,此时讲座的内容是极为不靠谱的。结构和内容也有本质的区别。当时我还根本没听说过 ECMAScript 和 DOM 这两个概念,就是凭借着我以前的 Visual Basic 6 的编程经验,试图给套到网页客户端编程上(所以在很长一段时间里,我坚持使用纯粹的 VBScript 而不是 JavaScript 作为网页脚本语言)。

    在开这个讲座的时候,我对“类”的理解完全来源于以前用 VB 画 Windows 窗体应用程序时的经历。根本没自己写过类,也不知道对于一个类而言应当如何指明其结构。我甚至还不知道属性跟变量、方法跟函数分别本质是一样的,更没想过把函数作为一种特殊的变量看待。

    在那种状态下,我还要给人开讲座将这个主题,现在想起来就不寒而栗。而05级下学期进工作室的和06级的编程的后来仍能有这样的造诣,充分说明了自学的重要性。

    在做这个演示文稿的初期,我还试图将跟类相关的诸如“属性”、“方法”和“事件”等概念跟自然语言作类比,文瀚看到时还感慨了一下。但后来这个想法没能成功。

    在讲座中,我甚至没有讲到用户自定义函数的返回值。文瀚知道了,很囧地问我:那不是最重要的部分么?

    不记得是06年春季还是秋季将的时候,赵靖宣(工作室的反面典型,晚辈不知道此人的可回顾论坛旧帖,论坛名“万松行秀”)在快结束时的问答环节还问了个问题,就是说像 Google 那样一加载页面就把焦点自动定位到文本框的那种脚本怎么写。当时我还很心虚地一再强调我先试试,不保证能成功。结果还真成功了。

    冬天与 PHP 亲密接触

    2006年11月5日

    下载

    这篇讲座的副标题叫做“PHP 程序员修炼之进阶篇”。正标题之所以叫这个名字,是为了跟前不久齐汝西开的“秋天和PHP有个约会——PHP程序员修炼之开门篇”(下载)相呼应。

    这个演示文稿开头还写了个目录,结果发现放映到这页的时候没话可说了。

    之所以放个“绝对路径与相对路径”的主题,是因为王老师还是谁说有学生搞不清楚,所以让我顺便讲一下。

    然后就对上次讲座做了一下补充,我是感觉齐汝西的讲座在这几个方面讲得不太明确,而且确实有不少人对此不明白,所以才放进来的,结果讲的时候王闯就来吐槽说“上次讲座讲过了”……

    这个演示文稿有161页,其实我本来没计划做这么多的,但做着做着就变得这么多了,且不说讲的时候得花多少时间还不一定,能不能在开讲座之前做完也是个挑战。我就记得做这个的时候是最后突击出来的,前一两天还在做流程控制那部分。相比之下,齐汝西的讲座只有28页幻灯片,而且前面还有不少黄姐的名言……

    其实齐汝西的讲座的作业也是黄姐当初留的。但是我觉得很不科学,因为第一个表格就是一个纯粹静态的 HTML ,用 PHP 写无非就是不断 echo 。第二个也没什么意思……不过我的讲座里还是加上了上次作业的参考答案。

    演示文稿里的亮点在于流程控制的那部分的代码做成了单步执行那样的效果,就像 VS 里的那样,做这个着实费了不少事。不过后来王闯开讲座还重复利用了,算是多发挥了点价值。

    现在回头看这个演示文稿的时候,还对此十分欣赏,因为我感觉这里面的内容和难易程度安排得都很合理,而我后面开的一些 JavaScript 讲座的内容就太学术和枯燥了,不仅听讲座的人现场学不到什么东西,还抑制了他们继续学习的积极性。当然,还有一部分原因便是对那时的美好时光的怀念。

    Microsoft Office 2003 进阶功能与使用技巧

    2006年12月8日

    下载

    这是我在学院开的一个讲座,那时我是学院团委宣传部的副部长(混进团委是我在大学期间最后悔的几件事情之一),开这个讲座就算是团委组织的一次活动了,而团委的工作就是刻意地不断举办无意义的活动——我自认为这次讲座极大地增加了团委活动意义的平均值。

    这个演示文稿有231张幻灯片,应该是我做过的幻灯片数量最多的了。在这里面我是自己设计的模板,这个橙色的设计来自于当时 Office 站点的设计:橙色弧线的概念。这个模板在设计视图看起来相当别扭,因为有很多内容位于幻灯片之外。但是放映的时候就不会有这个问题了。不过后来的事实证明综合楼投影仪的效果对于呈现出那些彩色水印图片而言远不够。

    开这个讲座之前,我相当地紧张,从前两天晚上开始就睡不好了。在工作室开讲座就不怎么紧张,因为面对的都是认识的人,地方也不大,人也不多,而且是在一个设备齐全、安静、大家都坐着这样一个温馨的环境下开的。但是在学院开就有很多未知数了。

    据说那天大一有个班因为我这个讲座专门把团日活动从那个时间段推迟到晚上。

    在开讲前的10分钟左右,那个教室还是没几个人——如果是我我也不会去主动地参加一个团委组织的讲座的。后来貌似还是现叫的一些人,让观众席看起来不那么凄凉。直到开讲的时候,目测听众也就三四十人。不过团委在乎的是照片,只要让大家都集中坐到一起,然后只照那里就行了。

    开始讲的时候,我还留出时间让同学做笔记,后来发现这是个极其错误的决定,因为整个讲座持续了3个多小时,从下午2点一直讲到5点多,有不少同学中间离场了,主要是因为饿得。

    开完之后,虽然不怎么成功,但是我还是松了一口气。

    要提一下第33张幻灯片的那个问题:“如何选定一个被挡住的对象而不引起其他变化?”这个问题我一度认为除了不断地按 Tab 试验之外别无他法,后来才发现这种方法。不过重要的是这句话的提法,不知道有没有人感到比较熟悉:它是模仿热力学第二定律的“不可能从单一热源获取热能,并将其全部转化为机械能而不引起其他变化”。最早是大一时山药(那时他还没有这个名字)发短信问我的,那时我们的创意真是源源不断。

    P.S. 我发现了一个貌似是这个演示文稿的简化版的东西。只有88张幻灯片,也上传上来(下载)。我已经不记得这个的更多细节了。

    网站重构

    2007年5月9日

    下载

    这个讲座是我跟 Assam 在一起后的第3天开的,所以十分有纪念意义。那天她以对我无比崇敬的心情前来听这个讲座,尽管是一如既往地引人入睡。不过当时确实鼓励美工也来听的。

    这次讲座的另一个纪念意义在我看来是工作室 Web 标准普及的开始标志——它的副标题是“应用 Web 标准进行设计”。话说在大一大二的时候,我对工作室和相关技术是相当具有激情的,因为不仅我本身爱好这些技术和这个环境,更重要的是我在这里受到了非常充分的肯定。如果在做什么项目,就时常干什么事情都时不时想一想,而当获得了什么成就或荣誉时就更是如此。我记得有一次信誓旦旦地想做几个就业网的 RSS 输出程序,就心神不宁地激动了好几天。

    大二寒假结束的时候,我买了几本书搬回学校,那时的我对于工作室的技术发展抱有雄心壮志,什么新技术都想引进工作室,当然大多数的最后还是流产了。当时先是买了一本《别具光芒:DIV+CSS网页布局与美化》,就是那本蓝色的很花哨的国产书。然后无意间看到这本《网站重构》,一看评价还不错就顺便给买了。我是回到学校以后才开始看的,结果一看就立刻被里面的极具号召力的措辞所感染了。读完了以后,就立志一定要在工作室推广 Web 标准。大二下学期刚开学的时候,我在工作室有两个“伟大”志向:一是这个幻灯片的主要任务——普及 Web 标准,另一个是引入 Ajax 技术,不过后者困难更大、意义更小,而且后来时间长了该技术的重要程度在工作室也被淡化了。那时对 Web 标准的积极性还能从一篇日志里面看出几分:《我正在改写这世界。

    我还记得4月份有一次,那时就在准备这个讲座了,我对于做这个演示文稿十分积极,有一次刘老师领着一帮人通宵,我还故意以别人有问题我能帮到为由也跟着凑热闹了,不过那天先是跟 Assam 打了几个小时的电话,剩下时间就基本做这个了。

    要提一下:在我开这个讲座的很长时间之前,赵威就曾经对纯 DIV + CSS 布局做过一些研究,我还是从他那里知道这个的呢。但一开始我没怎么当回事。

    讲座之后不久的暑假,就业网改版。这个暑假我回家了一段时间,在回家之前设计数据库和后台页面,但没想到到了8月大概22号左右我学校的时候才刚开始设计前台页面。此时就完全用 XHTML + CSS 来编码了。顺便提一句,我个人认为我对于数据库结构的设计和表、字段等的命名都起到了积极的作用。

    这个主题的讲座只开过一次。理想状况是:开完这个讲座以后,所有编程的人接下来都贯彻 Web 标准精神,使用 XHTML + CSS 写网页,对下一代的教育也如此。 也就是说,07级从进工作室开始就应该受到完全的 Web 标准的教育,在开始学置标语言的时候就时刻注意代码的良好的结构和语义,而这样的精神也会被08、09级等延续下去。也就是说,这次的这个讲座是一个“告诉大家要转型”的讲座,而以后从基础教育起就只安排转型后的内容,所以这样的讲座只开一次就够了。但遗憾的是,受我影响最深的06级就对 XHTML + CSS 的模式没有很好地应用,而07级就更是混乱了。就业网的招聘求职首页当初在我刚写完的时候,是完全能通过 W3C 置标语言验证的,连个警告都没有,比如“最新公告”那个栏目,我甚至是用 JavaScript 而不是 marquee 标签实现的滚动效果,因为后者是表现层标签;但后来这个页面被后人改得不说面目全非也是非常混乱了,到我写这段话的时候再验证,会出现11个错误、3个警告。在刚开始的时候,可以说一个网页纯粹用 XHTML 以及 DIV + CSS 布局是一件值得骄傲的事情,偶尔出现一些老式代码也无可厚非,但现在完全用 Web 标准武装的网页应当是常态。如果08、09级的同学能看到这个演示文稿,希望你们能再将 Web 标准在工作室内部发扬光大。

    话说我一直很遗憾没能好好开一次 HTML 的讲座,这大概是安排讲座的人认为 HTML 太简单、 JavaScript 比较难所以总让我讲 JavaScript 吧。但是我倒觉得, JavaScript 讲起来模式比较固定,也无非就那些东西,但如何写出结构良好、富有语义的 (X)HTML 代码以及 CSS 整体规划等内容是很有讲究的,不是记住一些东西然后循规蹈矩就能做好的,而是每次写代码的时候都要用自己的智慧去思考,没有一定数量的实践是很难学好的。以前说起工作室编程所用技术,第一个想到的可能就是 PHP ,但在我任职期间,我和跟我一起工作过的编程的花在研究 CSS 上的时间远远多过 PHP 。毕业以后,我还时常想还有没有机会给工作室的新生开一次有关 XHTML 的讲座。

    现在再回顾这个演示文稿,内容基本令人满意,即使是现在,对于工作室的现任编程的人还是有很多值得学习的地方。开讲座的时候,我还没什么实战经验,只能讲些规则性的东西,但其实后来的这种实战经验也没那么容易讲出来。而且我对这演示文稿的设计感到十分得意,包括美工和一些动画效果。

    最后,推荐那些还在学习路上的人们一本书:《精通 HTML》,我大概是08年夏天看这本书的,那时我已经几乎不做项目了,很遗憾没早看到,不过更早的时候还没写出来呢。虽说名字里面有个 HTML ,但是整本书十分强调代码的结构和语义,它强调置标代码的这两点作用,而淡化 HTML 和 XHTML 的形式上的区别,是一本十分值得精度的好书。

    构建 Ajax 初级应用

    2007年11月11日

    下载

    这次讲座便是上面提到的两大“伟大”志向之二——引入 Ajax 。不过此时已经是过了一个学期了,而且我已经大三,开始逐渐淡出工作室的项目生涯了。

    这样内容安排的讲座也只开过这一次。这里面花大量篇幅介绍的 JavaScript DOM 编程成为后来独立的 JavaScript 讲座的雏形。而关于 HTTP 请求、响应的那部分印象中老关给08届进行网站原理“启蒙”的时候讲过,当时我在旁边听到了,而且我不太相信有哪怕一个人听懂了。而纯粹的 Ajax (包括 XMLHttpRequest 对象)貌似就没再出现在讲座中了。

    Ajax 的效果实现起来显得繁琐,有大量优秀的类库能大大简化这一过程并使得相关的 JavaScript 代码显著增加可读性,不过可惜的是此后我一直没什么动力深入研究 Ajax 乃至 Web 开发技术了。

    当时06级的编程要求到场,而05 级的则非常建议到场。不过听完之后大多数06级的应该都是云里雾里,只有王闯最后还能提出个问题。

    不过我突然想起来好像在最开始是想让王闯研究这个课题然后开讲座的,但到最后还是我亲自开了。

    就业网改版的时候,也就是07年暑假,我在“招聘求职”首页上运用了一点 Ajax 技术,此时在开这个讲座之前。就是招聘信息那4个选项卡,其实是通过动态获取 XML 文件来给显示出来的。原来有个“刷新”按钮用来动态更新当前选项卡的数据,但不知道什么时候被谁给去掉了。当时之所以要做成这样,是因为生成那个列表的 SQL 语句太过复杂,牵扯到好几个表,还用到了子查询,所以直观上看查询一次开销很大,不能让每次加载页面的时候就进行这么一次查询,更不能一开始就把4个选项卡内容全给查出来(我有点印象好象如果不用 Ajax 的话那每次加载页面就必须执行好几十个查询语句)。最后的方案就是,弄4个静态的 XML 文件,前台页面动态获取这几个文件的信息,而且按需获取,而这4个文件由服务器每5分钟生成一次。而在网站后台也做了一个手动生成的功能。(这个功能也用到了 Ajax ,不过那纯粹就是我一时兴起想把它做得看起来酷点罢了。)

    要说我最早是什么时候听说 Ajax 的,那可以追溯到大二寒假(也就是上面提到的我搬了好几本书回学校的那个假期)。在购书中心的网页开发书籍那个区域,我站在那里感慨太多的东西要学、太多的技术不会。我就随手拿了一本讲关于一种我没听过的技术的书,就想:我偏要弄明白是怎么回事。事实上这本书恰好就是很适合 Ajax 入门的《Ajax 基础教程》,也是我唯一完整读过的 Ajax 书籍,不过那是大三上学期的事了。

    在我们知道 Ajax 之前,有一次我跟文瀚看到了一个很不可思议的网站: http://www.ask.com ,就是在搜索框里输入的时候,会实时提示建议的关键词,就像如今 Google 和绝大多数搜索引擎那样。当代网站这么做当然不奇怪,但在那时看到这样的现象令我和文瀚感到十分不可思议——当时另一件不可思议的事情是类似自定义 Live Spaces 时拖动模块的效果,但是这还可以理解,而实时提示就完全不能理解了。我就思考了一下究竟该如何实现,就想到:如果我放一个 IFRAME ,然后在我输入的时候,每输入一个字符就将该 IFRAME 的网址给重定向一次以查询跟输入的文字相关的内容,那不就可以实现了吗?然后就立刻写了个简易的试验性网页,结果还真可行。不过,那个 ask.com 网站上我们所见到的那种高效绝不是 IFRAME 能实现的。不过我那个想法后来也在那本《Ajax 基础教程》的开头部分得到了证实——广义上讲这确实也是一种 Ajax 的实现方法。

    JavaScript 基础

    2008年4月20日

    下载

    这个讲座总算把 JavaScript 讲座推向正轨了,算是比较完备、严谨的一次讲座,以至于一年之后的同一主题的讲座也都没什么改变,而现在我仍然觉得用它来学习 JavaScript 是比较合适的。

    这个讲座按照 ECMAScript 、 DOM 编程、 BOM 编程的思路介绍 JavaScript 语言,其中 DOM 编程的那部分借鉴了大量的《构建 Ajax 初级应用》的讲座的内容。但是因为 ECMAScript 这部分是全新加进来的,而且比重也相当大,所以我还是费了不少功夫准备, BOM 虽然也是新加进来的但是好在内容不多。新内容还有事件,尤其是晚期绑定的简易技术。但可惜的是最后07级编程好几个不能来,一共就6个人听这个讲座,其中还有两个净月来打酱油的。

    但是,这个讲座虽然严谨,但是相当不符合人的认知规律。我想所有听过我这个讲座的人结束之后都应该是一头雾水,我还怀疑我最开始接受 JavaScript 教育的时候要是听上这么一次讲座肯定都吃不消。

    Microsoft Office 2003 进阶功能与使用技巧

    2008年10月30日?(日期有待考证)

    下载

    这次讲座是应物理学院学生会主席王闯的邀请免费在物理学院讲的,虽然离上次在我们学校讲 Office 已经过去了两年,但是考虑到在我们学校绝大多数人当时用的还是 Office 2003 ,所以还是把内容安排成2003版的了。

    有了上次的经验教训,我专门把这次的幻灯片数量缩减到上次的一半左右,并尽可能提高语速,最后成功地花了一个小时多一点的时间讲完了。这次的氛围就比上次好得多。

    Microsoft Office 2007 进阶功能与使用技巧

    2008年11月15日

    下载

    貌似是马赛知道我给物理学院讲了 Office ,就说那就顺便给工作室也讲讲吧?我就想,给工作室的人讲那得讲2007。这一顺便讲,就把整个演示文稿的内容都给顺便成2007了,包括所有 Ribbon UI 的新操作方法以及截图。

    这个演示文稿的幻灯片数量大概是前两次的平均值,因为第二次的 Office 讲座经验表明内容还可稍微扩充一些,尤其是在工作室讲。

    我还深刻地记得这次讲座本来是下午2点开,但前一天晚上跟工作室的人通宵唱 K 一夜没睡,第二天上午又体能测试,直到中午才躺在沙发上睡了一会儿,结果醒的时候猛然发现已经两点过几分了!此时才赶紧手忙脚乱地准备各种讲座的设备,还头晕眼花的。

    这次讲座同样是尽可能提高语速,最后仍然成功地将时间控制在两个小时之内。不过提高语速的另一个动机是当时我尿急……

    JavaScript 进阶

    2009年3月29日

    下载

    本来以为上次的 Office 讲座是我有生之年给工作室做的最后一次讲座了,没想到居然还有一次。我当然是乐意的,但前面说过我更想讲 XHTML ,可惜不再有机会了。

    这个讲座跟一年前的那个内容几乎一样。之所以把名字改成“进阶”了,是因为在这之前小汤已经给08级讲过一次称为 JavaScript “初步”的讲座了。但是我看过演示文稿以后感觉内容安排比较混乱,一开始就介绍了比较深入的概念,但基本的却忽略了,以及我懒得认真比对我上次的讲座内容和这次小汤的内容来找出差集,所以我就打算干脆当学生什么都不会从基础讲吧,当然为了掩人耳目还是把标题改成了“进阶”。

    这个演示文稿比上次的少了十多页幻灯片,把一些比较累赘的要么太基础要么用处不大的内容删掉了。初衷是想给学生减负,但目的仍然远没达到,不知道08编程听完之后有何感想。

    说实话我对这次讲座现场的印象不深了。

    我的讲座生涯就至此结束了。