讲座回忆录

这是一篇分了很多次才完成的日志,最初是我撰写在 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编程听完之后有何感想。

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

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s