Enjoy the life together
看到这么一幅图片,感觉挺有意境的,贴出来和大家一起欣赏。
看到这么一幅图片,感觉挺有意境的,贴出来和大家一起欣赏。
前天我在讲Linux内核开发时提到了git──Linus使用的版本控制程序。我对它了解不多,不过今天正好在YouTube上看到了Linus在Google的讲座,主要是讲git的好处和cvs的缺点,视频可以在这里看到:
http://www.youtube.com/watch?v=4XpnKHJAok8
哈,连Andrew都出来了,他给Linus做的主持人。总算是目睹了Andrew的风采,他果然是在Google,而且这次也是给Linus做副手,颇有意思~
今天下午讲座还算可以,讲的时候发现竟然有一页ppt放错了,还好也没什么大碍。虽然讲走了很多人,但是在意料之中,毕竟具备条件的人不多。没办法,我总不能从Linux基础开始讲,那样我一天也讲不完。
非常感谢张老师,听不懂还一直在给我捧场,还是张老师最好(貌似张老师在读博士,很辛苦啊)。感谢王老师,有他参加才使得我这次没白讲,总算把自己的东西留给老师了(当然也就算是留给西邮了)。弱弱地谢一下韩老师,他把这弄得太隆重了,而且还给我安了个学术讲座的帽子。汗啊,这和学术有啥关系啊,明明是技术嘛。我可背不起玷污学术的黑锅呵呵~~感谢赵崇日同学和郭拓同学帮忙宣传,感谢金明洁同学帮我处理一些杂事。
错过这次讲座的同学不用担心,你们可以看小公子同学拍的DV,也可以在下下周的周一上午一二节去B228再听一次,我打算下次把班里讲得只剩下一个人──刘洋。;-)
P.S. 这次讲座的ppt可以在这里下载:
http://wangcong.org/down/kernel.ppt
(其实早就放上了,只是现在才对外公布而已。;-p)
两次讲座的安排如下:
第一个讲座
时间:本周三的下午七八节
地点:新校区B108教室
题目:Hacking Linux Kernel
内容:这次不是讲内核源代码,也不是讲内核是如何工作的(我把这些内容留给陈老师),主要是讲Linux内核的实际开发流程,如何参与开发,如何提交补丁,和一些注意事项和常用的工具。欢迎各位都来听一下,有一定的Linux基础是有必要的,但不必具备编程知识。
(如果你不小心错过了这次讲座,没关系,第13周周一还有一次一样的讲座,地点是在B228,时间是上午1,2节课。)
第二个讲座
时间:下下周的周三下午七八节(如有变动,另行通知)
地点:等申请好以后会及时公布
题目:The Art Of C Programming
内容:这个主要是讲C语言的一些高级技巧,C99标准,混乱C代码。如果你认为你的C学得很好了,那么请来听一听这个,它会让你知道你的C根本就是不及格。;)注意:这次是面向C语言基础很好的同学和老师,恕不照顾基础差的同学!
致谢
感谢杨爽老师,她一直都在帮助我处理系里的工作,没有她的帮助是不可能有这两次讲座!感谢韩俊刚老师,王忠民老师的支持!感谢牛晓晨老师,李育贤老师!
今天下午审查我们这边的Java代码时捕捉到N个bug,收获颇多。在这里小总结一下。
1. 最难找的bug
这个bug困惑我们很久了,我们为了它 已经有好几天食不甘味了。bug的症状是这样的,在通过ls读取数据连接的数据时,总是停在最后那里。我们一直以为是read的原因,而且网上也有讨论说是靠read()的返回值并不可靠。于是我们都在研究read()……但今天孔建军突然报告说是close()出问题了,而且把FTPOutStream.close()去了问题就没有了!最后分析发现,应该是Java中的stdout不能关闭。
修补很简单,如果是标准输出跳过关闭就行了。
+if (!LocalFile.equals(“”)) //We can NOT close the stdout.
我们ls/get某个文件总是出错,一开始还以为是编码问题,后来我才发现竟然是空格问题!
修补就是把多余的空格去了!
3. 最头疼的bug
FTPConnection.Status的值几乎总是不对,关键是处理异常后没有恢复原来的状态。因为它和异常处理缠绕在一起,所以不太好修复。
4. 处理最巧妙的bug
到最后,周晓炜发现一个问题,我们竟然无法区分close和quit,因为有控制连接时我们都把它翻译成了QUIT!在处理QUIT时无法对最初的输入进行判断。
我想到的修复办法比较巧妙,那就是在quit对应的QUIT后面再加一个QUIT。发送第一个QUIT命令后,可以通过检查后一个命令是否还是QUIT来判断是quit还是close。这样问题就解决了。
对Java比较无语。
先是调试器JDB,和GDB根本就没法比。JDB不能通过向上向下键来取历史命令,JDB不能简单地通过回车来执行上一条命令,最关键的是, 在调试交互输入的程序时,JDB根本就不让你插手。KAO啊,无语~
再说Input/Reader 里面的read*方法,貌似通过其返回值来判断是否读完很不可靠,总是读“不完”。这还不算完,我不用返回值来判断了还不行!新闻组上说最好在另一个thread中读,无语了。为了读个文件还得再弄一个thread……
无语中……
第一讲座大体定在下周三或周四下午,讲Linux内核开发,不涉及太深的技术问题,主要是关于内核开发的过程和常用的工具等内容,建议对Linux内核感兴趣的去听一下。有一些Linux基础知识是非常有必要的,但不必有太深的编程知识。地点现在还没确定,毕竟地方不好找,正在和系里商量。
第二个讲座大体定到下下下周的周三或周四,因为这个讲座涉及技术问题较多,需要多花一些时间仔细准备。这个讲座的内容主要有:C99标准,C语言编程技巧,混乱C代码等。 地点应该可以安排到和前一个一样的地方。
多谢韩老师的大力支持!
Do not edit this page
题目是这样的,已知set的定义文法如下:
Set ::= “{“ Elementlist “}”
Elementlist ::= <empty> | List
List ::= Element | Element “,” List
Element ::= Atom | Set
Atom ::= “{“ | “}” | “,”
五一七天完成如下任务:
1. 向Linux内核提交补丁,其中两个被接受了,自以为还不错。
2. 完成XYLFTP客户端的大部分编码工作,并为以后作好计划。
3. 做了两道算法题,惭愧,没达到预期目标(7道)。
4. 写了6页书,而且还完成了“参考资料”的清理工作,目录发生大的改动(感谢董溥同学的建议!)。有兴趣的同学请发邮件索取最新的目录。
总体来说还算可以。下面是未来几周的计划:
1. 写书得加快进展了,争取一个半月收工。
2. 决定主攻Linux内存管理一块,仔细研究一下这一部分的代码。
3. 近几周准备在西邮做两个讲座:一个关于Linux内核开发,一个是关于C语言高级技巧。为什么要做这两个讲座呢?说来好笑,我们系统结构老师看我实在不顺眼:既然你对内核有研究,那就给我们都讲讲吧?我笑,当然是求之不得了,这不明摆着送“羊入虎口”么?而且,既然要讲,那还得正式点儿,我担心班里的年轻人们听不懂,把系里老师都叫来听听吧。不,还不够,在再附带一个C语言的,我也想看看咱们谁的C更牛X。这也算是造福西邮吧,何乐而不为呢?(不知道系统结构老师现在后悔了没有?)
如果你碰巧在西邮,请帮忙宣传一下关于我讲座 的消息,具体安排和系里商量好以后会及时公布,请细心留意!Thanks!