4月15日
一大早起来,本来想测试一下服务端程序。把二手笔记本的ubuntu打开,把自己原来笔记本的windows打开。客户端运行在windows上,服务端运行在ubuntu上。测试了一下发现服务端发给客户端的数据通道地址不对。在ubuntu上改了一下服务端代码。然后向把代码推送到GitHub上,发现不能推送。Git还是使用不熟练。百度了一下,折腾好一会搞定了。
这时我手贱,看到ubuntu的更新提醒,我就更新了。先用命令行同步了源。然后在桌面弹出的更新提醒中点击了更新。结果更新出问题了。再开机居然自动进了伪终端,startx后发现顶栏和左侧面板都不见了。升级出问题了。不该升级的。百度一下,有人也遇到了同样的问题。应该是驱动的问题。百度了好久也没解决。这时到了吃午饭时间了。果断去吃饭,然后睡午觉。
午睡后起床已经三点多了。还是继续搞ubuntu系统的问题。折腾了好久还是搞不好。决定就在tty1下玩了,还能强制我不用图形界面呢,本来也是服务端程序,要图形界面干嘛。可是tty1终端下字体太小,想修改字体大小,百度了一下,配置了一下,字体果然变大了。可以光标闪烁的太快,我看着心里很慌。想把光标调成不闪烁。百度了好久也不知道怎么设置。重启ubuntu后,发现字体又变小了。只好重启一下就设置一下字体大小。
套用小沈阳的一句话,一天就这么过去了哼!
4月16日
还是起得比较早,昨天一天没怎么写代码,今天怎么也得写下代码吧。发现在ubuntu tty1界面下所有的中文显示为乱码。这系统又是中文的,shell执行结果很多都是中文的,我代码中的注释也有中文。这些悲剧了,编译结果不正确,看到的报错信息都是乱码。我只好去猜测意思。还有代码中的错误处理打印出的结果都是英文。我想让它正确显示中文,于是上网搜。发现者东西牵扯到内核。不是半个小时能搞定的。鉴于我在linux下解决问题的能力,我还是放弃了。
继续测试代码。服务端程序和客户端程序的数据通道套接字老连不上。debug发现服务端发送给客户端的数据通道地址都是0。修改了一下代码,数据通道可以打通了。后来不知道改了哪个地方。服务端居然不能监听了。accept老失败。总以为是accept函数参数的问题,或者套接字属性问题,再或者是套接字资源被释放掉了。把 man accep看了好几遍,认定我没用错这个函数。默认属性也没问题。虽然是在一个自己封装的函数中申请的套接字,函数退出后资源应该没释放啊。因为套接字关联的资源是整个进程的,自己没显示关闭套接字,进程也没退出,应该没释放掉,还可以用的。我找不到原因了。吃午饭,午睡。
下午起床后又是三点多了。继续找bug。实在找不到原因了。调了几个小时,一种深深的挫败感油然而生。开始对一些理所当然的食物产生怀疑。去CSDN发帖,分数太低,没人鸟我。去QQ群里问。有个学长很耐心的问我情况。还让我把代码给他,让他调试。他也找不出问题。这一下到了晚上8点多了。实在想不到是哪里出了问题。我去洗衣服,转移注意力。今天有热水,我又洗了个澡。洗澡后变懒了,实在不想再debug。玩了一会。我又想到会不会是内存泄露才导致的诡异问题。于是百度linux下的内存诊断工具。最后找到Valgrind,看了一篇教程。测试了一下程序,发现没有内存泄露问题。
继续看Valgrind教程。到了晚上11:30停电了。我只好无奈的去睡觉了。意思说这个bug烦了我8个小时,而连它在哪儿都不知道。
4月17日
还是起得比较早。继续调代码。我再受不了tty界面了。决定重装Ubuntu12.04。装的过程中我居然选择了英文版。发现无线网卡没办法失败。打开无线wifi的开关没反应。我重启了几次还是没反应。这个搞个毛,不能联网我怎么测试程序?我以为是无线快捷键的问题。再加上这台老机器声音特别大。我想拆开看看,是不是无线快捷键坏了。顺便清一下灰。于是不调代码了,百度惠拆机图文教程,开始开机清灰。
惠普的老机子还是有点难拆的。清灰完后,已经是中文1点了,于是去吃午饭,回来后发现这台老机器开机不能进入系统了。只能进bios,一读硬盘就自动关机。重新设置bio,没用;重新用U盘装系统,没用。反正就是一读硬盘就死机。我想是不是硬件出了问题。我清灰的过程中够小心的啊。百度了好久。有人说是系统问题,有人说是硬盘问题,还有人说是电源坏了。我再开机试试,发送电源指示灯没有显示,我断定是电源线坏了。好吧不管了,午睡去。
由于午睡谁的比较晚,醒来就4点多了。拿着电源线去综合楼,想让修理店的师父看看是不是我电源线坏了。如果坏了就重配一个电源。不是电源问题就回来再拆一次机,自己看看是不是哪里线没接好。
去综合楼的图中发现有社团和外面修理店的在做外场活动,免费清灰、修理电脑。过去问了一下。然后回宿舍把电脑带过去。那个人帮我把电池拆了,接上电源,开机还是只能进入biso系统。他说有可能是主板问题。要我改天去他们店里。我一问,他们的修理店有点远,就不愿去了。不过这样就确定了我电源是没问题的。
离开活动现场我直接进了旁边的食堂,取下电池,插上电源。设置bios参数。检查硬盘,还是自动关机。只好拿着电脑先回宿舍。这时发现头好晕,身体发抖,流汗。这是感冒了还是饿了?在宿舍楼大厅休息了一会。吃了一个面包,喝了一瓶酸奶。感觉有点力气,又买了一个面包加一瓶酸奶,回宿舍。在床上躺了一会,干掉了面包和牛奶。和宿舍同学交流了一下。发现宿舍最近流行感冒啊。我看来是中标了。
休息后好了很多。继续百度电脑自动关机的问题。最后得出的结论:肯定是拆机清灰的时候把散热硅胶弄掉了不少。导致散热不行。电脑访问硬盘时产生产生高温。bios系统处于安全考虑选择自动关机。觉得买硅胶,拆机,涂硅胶。
去买了硅胶,图上后,果然就可以进入系统了。不过还是无线网卡不能打开。只好重装系统。发现问题后,我的感冒也好了很多。基本只有一点疲劳了。
开始装系统,我又选择了英文版。装的过程中还是没识别无线网卡。装到后面一点,居然进度动不了了。
我记得之前装过ubuntu12.04中文版是可以识别我的无线网卡的。果断强行关机,重装ubuntu,选择中文。果然无线网卡就识别了。不过装的好慢啊。装了一个小时。
电脑弄好后,我又不想看代码了。帮这台笔记本放着。打开学校网站开始看电影。(我就是有点儿那个,疲劳也要看电影)看了两三个电影,除了虎胆龙威,其他的我都快进掉了。发现时间还早。还是看代码吧。
用GDB跟踪了一下。我了个去。终于发现是在我把if(bind(...)==-1)后的错误处理代码不小心删掉了,导致后面的的listen没有执行。原来我一直在没listen过的套接字上accept,难怪不成功。改正这个bug后客户端和服务端终于可以连通数据通道了。我感到的要哭了。我去,一个小心的错误让我折腾了这么久。
这几天折腾我的笔记本问题,代码bug问题都搞定了。感冒也完全好了。我在学校论坛发帖庆祝,顺便提了一下硅胶的事。有人说我错把硅胶当硅脂了。散热会出问题的。上网百度了一下,果然有问题啊。硅胶和硅脂都是散热的,但CPU上用的应该是硅脂。决定明天重新是买硅脂涂上,希望不要再出问题。
4月18日
今天去店里买硅脂,老板说他们的硅胶和硅脂都是同一样东西。他们给被人清灰也是用的这个。看我不必担心了。我错把硅胶当硅脂,他们错把硅脂当硅胶。这些负负得正,我还是对了。
今天终于可以从客户端传视频到服务端了。
总结:这几天效率真是低啊!该改变了。改变晚上晚睡和中午久睡的习惯。解决问题不要手慢脚乱,冷静分析。程序员的水平体现在解决问题的能力上。