Linux下管道pipe的使用

管道:当从一个进程连接数据流到另一个进程时,使用术语管道(pipe)。

#i nclude <unistd.h>
int pipe(int filedes[2]); //创建管道

pipe()说明:
返回值:0成功,-1出错。
如果调用成功,则进程此时由了两个额外的打开文件描述符,filedes[0]中的值是管道的读取端,而filedes[1]是管道的写入端。

管道读写注意事项:
1.必须在系统调用fork()中调用pipe(),否则子进程将不会继承文件描述符;
2.当使用半双工管道时,任何关联的进程都必须共享一个相关的祖先进程。

  1. #include<unistd.h>
  2. #include<sys/types.h>
  3. #include<errno.h>
  4. #include<stdio.h>
  5. #include<stdlib.h>
  6.  
  7. int main(){
  8.     int pipe_fd[2];
  9.     pid_t pid;
  10.     char buf_r[100];
  11.     char *p_wbuf;
  12.     int r_num;
  13.  
  14.     memset(buf_r,0,sizeof(buf_r));
  15.  
  16.     //创建管道
  17.     if(pipe(pipe_fd)<0){
  18.         printf(“pipe create error\n”);
  19.         return -1;
  20.     }
  21.  
  22.     if((pid=fork())==0){//表示在子进程中
  23.         printf(“\n”);
  24.         //关闭管道写描述符,进行管道读操作
  25.         close(pipe_fd[1]);
  26.         sleep(2);
  27.         //管道描述符中读取
  28.         if((r_num=read(pipe_fd[0],buf_r,100))>0){
  29.             printf(“%d numbers read from the pipe is %s\n”,r_num,buf_r);
  30.         }
  31.         close(pipe_fd[0]);
  32.         exit(0);
  33.     }
  34.     else if(pid>0){//表示在父进程中,父进程写
  35.     //关闭管道读描述符,进行管道写操作
  36.         close(pipe_fd[0]);
  37.         if(write(pipe_fd[1],“Hello”,5)!=-1)
  38.             printf(“parent write1 success!\n”);
  39.         if(write(pipe_fd[1],“Pipe”,5)!=1)
  40.             printf(“parent write2 success!\n”);
  41.         close(pipe_fd[1]);
  42.         sleep(3);
  43.         waitpid(pid,NULL,0);
  44.         exit(0);
  45.     }
  46. }

看看下面的纪录片你的生活会更有趣的

对于纪录片爱好者来说,追BBC(英国广播公司,比较权威的高知名度的媒体)题材广泛、制作精良的纪录片是人生一大乐事。看BBC的纪录片,既可以追溯上下数千年的历史文化,也可以欣赏从宇宙到地信深处的奇妙境界,而其其超级精彩的画面即使定格,也是一幅摄影佳作。

1《恒河》高清(3集)
http://www.56.com/u78/v_NTIxOTc4Nzg.html
http://www.56.com/u61/v_NTIxOTc4NDQ.html
http://www.56.com/u67/v_NTIxOTc4NTk.html

2《活力星球》
http://www.56.com/u61/v_NDUyNzMyOTY.html

3《地平线:超大质量黑洞》
http://v.youku.com/v_show/id_ca00XMTg4MzgyMTY=.html

4《百慕达三角洲之谜》
http://www.56.com/u11/v_NDgxNjQ4MTE.html

5《野性加勒比》(2集)
http://v.youku.com/v_show/id_XNzU1NTA4ODQ=.html
http://v.youku.com/v_show/id_XNzU1NTEwMDQ=.html

6《星际漫游》暂时没找到标清的(3集)
http://www.56.com/u76/v_MzUyNTQ5Nzc.html
http://www.56.com/u97/v_MzUyNTI1MzQ.html
http://www.56.com/u42/v_MzUyNDQ3MzU.html

7《探潜鲨鱼火山 》
http://v.youku.com/v_show/id_XNDE5MTYzMjg=.html

8《太空漫游》
http://www.tudou.com/programs/view/dPXYzZK4rkU/ (不知道是不是BBC的)

10《神秘的玛雅》
http://v.youku.com/v_show/id_XMTU4MzgxMTgw.html

11《冷血生命》
http://www.56.com/w38/play_album-aid-5218275_vid-MzUzMjU2OTY.html
http://www.56.com/w38/play_album-aid-5218275_vid-MzUzMjMzOTg.html
http://www.56.com/w38/play_album-aid-5218275_vid-MzUzMjE3NjE.html
http://www.56.com/w38/play_album-aid-5218275_vid-MzUzMjAxNjI.html
http://www.56.com/w38/play_album-aid-5218275_vid-MzUzMTkxMDQ.html

12《俄罗斯音乐祭》(4集)
http://v.ku6.com/show/ow1ejU5dCLDYAHEv.html
http://v.ku6.com/show/Y_cs04w0XYlyhlaC.html
http://v.ku6.com/show/3z3X549bdna3p6Fy.html
http://v.ku6.com/show/YyQeLOjhvCYtUNt2.html

13《地球的力量》(5集)
http://www.56.com/u56/v_MjkyODM2Mjk.html
http://www.56.com/u93/v_MjkyODE5OTQ.html
http://www.56.com/u71/v_MjkyNzk3NzI.html
http://www.56.com/u12/v_MjkyNzczMzc.html
http://www.56.com/u56/v_MjkyNzM4NjE.html

14《透视动物》
http://www.56.com/u31/v_MzQ5NTAyNzY.html (透视动物1-生存挣扎)
http://www.56.com/u89/v_MzQ5NDg4Mzg.html (透视动物2-新生命)
http://www.56.com/u85/v_MzQ5NDcwNzQ.html (透视动物3-极端生活)

15《古代启示录》
http://tv.sohu.com/20100308/n270666918.shtml (古代启示录:尼罗河上的灭亡)高清
http://tv.sohu.com/20100308/n270666915.shtml (古代启示录:米诺安之谜)高清
http://www.56.com/u52/v_NTA1NDQ5MjA.html(古代启示录:马雅的崩溃)
http://v.ifeng.com/documentary/discovery/201109/2c7e9d41-d50d-41e6-8fee-9ab72696f7d8.shtml(古代启示录:所多玛与蛾摩拉)

16《艺术精品全记录》
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzU0ODU.html 1
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzU0NjQ.html 2
缺3
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzU0MzA.html 4
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzU0MTg.html 5
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzI5MDc.html 6
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzI4ODc.html 7
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzI4Njc.html 8
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzI4NDM.html 9
http://www.56.com/w38/play_album-aid-5218275_vid-MzU0MzI4MTk.html 10

17《地球》
http://v.pptv.com/show_page/33070280e8.html (1-5集)

18《空中特勤组》
http://www.56.com/u39/v_NDMxNDIwODY.html
http://www.56.com/u31/v_NDMxNDI0MjI.html
http://www.56.com/u25/v_NDMxNDI2OTM.html

19《制造新人类》
http://www.56.com/u11/v_MzE4MzA4NTQ.html(复制新人类)
http://www.56.com/u11/v_MzE4MzI2MjQ.html(预言者)

20《消失的古文明》(3CD)
http://www.tudou.com/programs/view/lEbrRahp9fU/isRenhe=1
http://www.tudou.com/programs/view/VmR5ngTxjXI/isRenhe=1
http://www.tudou.com/programs/view/jjntGWN_a4E/isRenhe=1

21《喜马拉雅壮丽之旅》
http://v.ku6.com/show/UAvLRJrT_B_75oPV.html
http://v.ku6.com/show/ce_s6ExEYcAJ1_vS.html
http://v.ku6.com/show/_CVMQR5Lz9sKN0Mf.html
http://v.ku6.com/show/fGNNkri2CufKrtAp.html
http://v.ku6.com/show/LBay-TAKLrnjeWyB.html
http://v.ku6.com/show/gWYLdYCqEwejU9PZ.html

22《与野人同行》
http://v.ku6.com/show/Z2IMOUfS81hUe4kR.html
http://v.ku6.com/show/ehct9zoHgcLm4EHa.html

23《艺术的力量》
http://v.youku.com/v_show/id_cc00XMjkzNTQ5NDA=.html
http://v.youku.com/v_show/id_cc00XMjkzNTUwODA=.html
http://v.youku.com/v_show/id_cc00XMjkzNTQ5NzI=.html
http://v.youku.com/v_show/id_cc00XMjkzNTUwMDQ=.html
http://v.youku.com/v_show/id_cc00XMjkzNTUwMjA=.html
http://v.youku.com/v_show/id_cc00XMjkzNTUxNDQ=.html
http://v.youku.com/v_show/id_cc00XMjkzNTUwNDA=.html
http://v.youku.com/v_show/id_cc00XMjkzNTUwNTI=.html

24《极地之旅》(8集,缺1 7)
http://v.youku.com/v_show/id_XNzUyMTgwOTY=.html BBC 极地之旅,02 穿越俄罗斯
http://v.youku.com/v_show/id_XNzUyMjAyNjQ=.html BBC 极地之旅,03 地中海迷踪
http://v.youku.com/v_show/id_XNzUyMjI2NjA=.html BBC 极地之旅,04 梦幻的沙
http://v.youku.com/v_show/id_XNzUyMjU5MDQ=.html BBC 极地之旅,05 越过边境
http://v.youku.com/v_show/id_XNzUyMjkwMjA=.html BBC 极地之旅,06 飞机、船和火车
http://v.youku.com/v_show/id_XNzUyMzYxMTI=.html BBC 极地之旅,08 严寒的终点

25《超自然力量》
http://www.tudou.com/programs/view/JLxPn6xTEkE/

26《八十天环游地球》
http://v.ku6.com/show/hE1mY7ZP30zhPjEr.html
http://v.ku6.com/show/qSG4-7fVRl19fCxR.html
http://v.ku6.com/show/lmwriPjumAsC3o2H.html
http://v.ku6.com/show/xwS_oil4ZFayNm1W.html
http://v.ku6.com/show/vAMzWoaRGXUFIfE7.html
http://v.ku6.com/show/iNtyYz8cLvA3LO1u.html

27《揭秘裕仁天皇》
http://v.youku.com/v_show/id_XMTkxMjQ1Njc2.html

28《人类亲缘》暂无

29《人类本能》
http://www.tudou.com/playlist/id/12307810/ (专辑,4个部分)

30《鬼盗船真面目》暂无

31《行星地球探索记》
http://www.56.com/w24/album-aid-9199320.html 1-10

32《蓝色星球》
http://v.pptv.com/show/qmlY1j6kFFK1M8M.html 蓝色星球(第01集) 标清
http://v.pptv.com/show/q2hX1T2jE1G0MsI.html 蓝色星球(第02集) 标清
http://v.pptv.com/show/rGta2ECmFlS3NcU.html 蓝色星球(第03集) 标清
http://v.pptv.com/show/rWpZ1ziblFVO2NMQ.html 蓝色星球(第04集) 标清
http://v.pptv.com/show/rm1U0jqgEE6xL68.html 蓝色星球(第05集) 标清
http://v.pptv.com/show/r2xT0TmfD02wLq4.html 蓝色星球(第06集) 标清
http://v.pptv.com/show/u3hHxS2TA0GkIrI.html 蓝色星球(第07集) 标清
http://v.pptv.com/show/ib6mVE3vhUYicycIA.html 蓝色星球(第08集) 高清
http://v.pptv.com/show/icKqUEnrgUI7xb28.html 蓝色星球(第09集) 高清
http://v.pptv.com/show/icauTEXnfT43wbm4.html 蓝色星球(第10集) 高清

33《世界自然奇观》
http://video.sina.com.cn/v/b/14773931-1259451885.html
http://video.sina.com.cn/v/b/14774843-1259451885.html

34《神迹透视》
http://v.pptv.com/show/tIZ7ibWHHN3XYVqY.html 神迹透视1 标清
http://v.pptv.com/show/tYd8ibmLIOHbZV6c.html 神迹透视2 标清
http://v.pptv.com/show/toh591icFNXPWVKQ.html 神迹透视3 标清

35《埃及》
http://v.youku.com/v_show/id_XMTk2MzQxMjY4.html

36《白色星球》
http://www.tudou.com/programs/view/PZYgPtj2scs/ 高清

37《野性南美洲》
http://www.56.com/u75/v_NDE0NDE1Mjg.html BBC:野性南美洲,01+失落的世界
http://www.56.com/u59/v_NDE0NDE4MzI.html BBC:野性南美洲,02+威猛亚马孙河
http://www.56.com/u51/v_NDE0NDIyNjc.html BBC:野性南美洲,03+大草原
http://www.56.com/u61/v_NDE0NDI2MTk.html BBC:野性南美洲,04+安地斯山
http://www.56.com/u14/v_NDE0NDMwMDM.html BBC:野性南美洲,05+亚马逊丛林
http://www.56.com/u39/v_NDE0NDMzOTM.html BBC:野性南美洲,06+企鹅海岸

38《彗星的故事》
http://v.ku6.com/show/7L3QFTjMqnmjzVB5.html

39《二战大突击》
http://www.56.com/u11/v_MzQ2MTYxNzg.html
http://www.56.com/u11/v_MzQ2MjQzNDQ.html

40《动物超感官》
http://www.56.com/w50/album-aid-4004416.html 1-5

41《成吉思汗》
http://www.56.com/u58/v_NTYxMTY5ODQ.html

42《微观世界》高清
http://site.douban.com/widget/videos/2247395/video/92660/

43《漂移的灾难冰山》
http://v.ku6.com/show/SWnddmz5VWzybH-9.html
http://v.ku6.com/show/Y8B1AYvkJ_yNV_jX.html

44《寻找特洛依战争》
http://www.56.com/u96/v_MzUzNzgzNzM.html
http://www.56.com/u85/v_MzUzNzc0ODI.html
http://www.56.com/u97/v_MzUzNzYzNTA.html
http://www.56.com/u33/v_MzUzNzQ5NjY.html
http://www.56.com/u19/v_MzUzNzMxMDQ.html
http://www.56.com/u58/v_MzUzNzAzMjc.html

45《北极传说》高清
http://v.pptv.com/show/cgv0ctpAsO5RzxE.html

46《地平线》
http://video.baidu.com/v?word=BBC+%B5%D8%C6%BD%CF%DF&ct=301989888&rn=20&pn=0&db=0&s=0&fbl=800

47《与恐龙同行》
http://www.youku.com/playlist_show/id_1761483.html

48《纳粹警示录》
http://www.soku.com/detail/show/XMzIxODg0?keyword=%E7%BA%B3%E7%B2%B9%E8%AD%A6%E7%A4%BA%E5%BD%95

49《地球脉动》
http://www.soku.com/detail/show/XMzk5ODI0?keyword=%E5%9C%B0%E7%90%83%E8%84%89%E5%8A%A8

50《两性奥秘》
http://www.soku.com/detail/show/XNDM4MjY4?keyword=%E4%B8%A4%E6%80%A7%E5%A5%A5%E7%A7%98 (3集)

71《园丁鸟的魅力艺术》
http://v.youku.com/v_show/id_XMzI2MjI0Njg.html

72《以色列的诞生》
http://www.56.com/u37/v_NTg4NjYzMDY.html

73《旷世杰作的秘密》
http://www.tudou.com/playlist/p/l14008985.html

74《文明的轨迹》
http://www.youku.com/playlist_show/id_2142542.html
太多了,请自行搜索:
http://video.baidu.com/v?word=%CE%C4%C3%F7%B5%C4%B9%EC%BC%A3&ct=301989888&rn=20&pn=0&db=0&s=0&fbl=800

75《环太平洋之旅》
http://www.tudou.com/programs/view/yoYYC7iRiAQ/ 只找到这么短的

76《玛雅地底之谜》
http://v.youku.com/v_show/id_XMTExMTYyNDYw.htm

77《人脑漫游》
http://www.youku.com/playlist_show/id_2418422.html (6集,缺2 3)

78《死尸的价值》
http://www.56.com/u11/v_NDg2MjEwODA.html

79《地球:气候战争》
http://www.tudou.com/programs/view/eVbm56M1hzY/isRenhe=1
http://www.tudou.com/programs/view/Lk-3wotiPSc/isRenhe=1
http://www.tudou.com/programs/view/Wef7Jgp4_9A/isRenhe=1

80《上帝之子》
http://www.56.com/u43/v_NDUyMDI3Mjg.html
http://www.56.com/u36/v_NDUyMDI3Mjg.html
http://www.56.com/u11/v_NDUyMDM2NTI.html

81《仰望夜空:大爆炸》
http://v.youku.com/v_show/id_XMTk4NTczMzMy.html
http://v.youku.com/v_show/id_XMTk4NTc0MzUy.html
http://v.youku.com/v_show/id_XMTk4Njg4ODY0.html

82《人体世界》
http://www.soku.com/search_video/q_BBC%E4%BA%BA%E4%BD%93%E7%A7%91%E5%AD%A6%E7%8F%8D%E8%97%8F%E7%B3%BB%E5%88%97%EF%BC%8D%E4%BA%BA%E4%BD%93%E4%B8%96%E7%95%8C

83《自然世界:鳄鱼谣》
http://v.youku.com/v_show/id_XNzc3MDk0OTI=.html

84《1929年大崩盘》
http://v.ku6.com/show/u-uNavRYf8Gtm1HH.html

85《抹香鲸:深渊归来》
http://you.video.sina.com.cn/a/2548327-1313444507.html

86《动物犯罪现场》
http://v.ku6.com/show/712uhuvscmGiLjjk.html BBC 动物犯罪现场1:内陆刺客
http://v.ku6.com/show/YZn_SX0ZGemwLuGM.html BBC 动物犯罪现场2:海洋刺客
http://v.ku6.com/show/wegwY_U4I-LoLkdx.html BBC 动物犯罪现场3:极圈刺客
http://v.ku6.com/show/2qVM633hx3w3vqwu.html BBC 动物犯罪现场4:非洲刺客
http://v.ku6.com/show/VCRPAJK7wWJZHvV1.html BBC 动物犯罪现场5:亚马逊刺客

87《惊世一刻》
http://www.56.com/w97/album-aid-6681316.html 10集全

88《金字塔》
这个系列的很多
http://video.baidu.com/v?ct=301989888&rn=20&pn=0&db=0&s=25&word=BBC%20%BD%F0%D7%D6%CB%FE
http://www.soku.com/search_playlist/q_BBC%20%E9%87%91%E5%AD%97%E5%A1%94

89《宇宙行星探索记》
http://www.56.com/w22/album-aid-7083966.html 1-8

90《宇宙无限》
http://www.56.com/w14/album-aid-5259903.html 1-6

91《庞贝古城:最后的一天》
http://www.56.com/u11/v_MzA0Njk0MTM.html

92《罗马斗兽场》
http://v.youku.com/v_show/id_XNDUyMDgyMTI=.html

93《自然世界:驭风而归》
http://www.tudou.com/programs/view/Mi7_h7o0Slk/isRenhe=1

94《自然世界:聪明的猴子》
http://v.youku.com/v_show/id_XOTc0Mjk2ODA=.html

95《生命之源》
http://www.56.com/u49/v_NTYzMzA2ODY.html
http://www.56.com/u89/v_NTYzMzE0MzA.html 不确定是不是第二集
http://www.56.com/u21/v_NTYzMzE0NTA.html
http://www.56.com/u89/v_NTYzMzE4NzA.html
http://www.56.com/u29/v_NTYzMzI2MDI.html

96《爆破达人:前进赌场》
http://v.ku6.com/show/2ZsfynRHFWcvTZAV.html?loc=youce_tuijian
http://v.ku6.com/show/3XuWyvsIUfgCQGjo.html?loc=youce_tuijian
http://v.ku6.com/show/SHY_ojbyBYu68M7F.html

97《印度的故事》
http://www.tudou.com/playlist/id/7932983/ (6集,缺2 3)

98《自然生态精选》
http://v.pptv.com/show/WLibFA2vRQXiciaYHA.html
http://v.pptv.com/show/Wb6GBGzSQoDjYXE.html
http://v.pptv.com/show/WsGicPaULe7kcmlo.html
http://v.pptv.com/show/W8DAPqYMfLodm1s.html

99《消逝的生物》高清
http://v.pptv.com/show/BIdicicWXLO3ncWqU.html
http://v.pptv.com/show/FJdv7VW7K2nMSpU.html
http://v.pptv.com/show/FZZw7la8LGrNS5Q.html

100《神话与英雄大观》
http://tv.sohu.com/s2010/shyyx/(4集)

101《群体大自然》
http://v.youku.com/v_show/id_XNTc4NTA1MDg=.html
http://v.youku.com/v_show/id_XNTc4NTA1Mjg=.html
http://v.youku.com/v_show/id_XNTc4NTA1NzI=.html
http://v.youku.com/v_show/id_XNTc4NTA2MzI=.html

102《战栗东方》
http://www.56.com/u11/v_NDc3NTkwNDA.html 战栗东方A
http://www.56.com/u11/v_MzM2MDUyMTQ.html 战栗东方B

106《雌雄争霸战》
http://v.youku.com/v_show/id_XNjE0MjMwNTY=.html 雌雄争霸战 第一集 弱者与强者
http://v.youku.com/v_show/id_XNjE0MzMwODg=.html 雌雄争霸战 第二集 挑剔的雌性
http://v.youku.com/v_show/id_XNjE0MTcwMjg=.html 雌雄争霸战 第三集 卵子争夺战
http://v.youku.com/v_show/id_XNjE0MzM0NjQ=.html 雌雄争霸战 第四集 父母的进退两难
http://v.youku.com/v_show/id_XNjE0MzM3MTI=.html 雌雄争霸战 第五集 家有要事

104《挪亚方舟》
http://v.youku.com/v_show/id_XNzM5MzIwODA=.html

105《诺曼底大登陆》
http://v.ku6.com/show/NIHkjIdZ0vJnDmNz.html
http://www.tudou.com/programs/view/u9UmSPbBft4

106《广岛核爆》
http://video.sina.com.cn/v/b/15754134-1374319272.html

107《敦刻尔克大撤退》
http://www.56.com/u11/v_NDc3MzYxODQ.html
http://www.56.com/u11/v_NDc3Mzc1OTM.html
http://www.56.com/u11/v_NDc3Mzg4NDM.html

108《地球水之旅》
http://www.56.com/u43/v_NDUyNjYyOTk.html
http://www.56.com/u11/v_Mjc1OTM5OTI.html 国语配音

109《从诺曼底到柏林》
http://www.tudou.com/programs/view/-0BvZV9L2Mw/
http://www.tudou.com/programs/view/PB1KQun9ymo/
http://www.tudou.com/programs/view/J4Rt2Ik7P5s/

110《大西洋之战》
http://www.tudou.com/programs/view/cnRQMdLLMOk
http://www.tudou.com/programs/view/ZKaG5ylOy_o/
http://www.tudou.com/programs/view/g-149cAg5Jo/

111《战争之路》
http://www.56.com/u11/v_MzM2MTYwNzk.html
http://www.56.com/u11/v_MzM2MjAyMjY.html
http://www.56.com/u11/v_MzM2MjQxNTM.html
http://www.56.com/u11/v_MzM2Mjc1Mzk.html

112《地球形成的故事》
http://tv.sohu.com/20111012/n321934548.shtml

113《丘吉尔的保镖》
http://v.pptv.com/show/RvWvLZX7a6kMialU.html 1
http://v.pptv.com/show/TPulI4vxYZ8CgE8.html 2
http://v.pptv.com/show/TfqmJIzyYqADgU4.html 3
http://v.pptv.com/show/Tv2nJY3zY6EEgk0.html 4
http://v.pptv.com/show/TicyoJo70ZKIFg0w.html 5
http://v.pptv.com/show/UNicJR68VhcMmpCs.html 6
http://v.pptv.com/show/Ud7KSLAWhsQnpSo.html 7
http://v.pptv.com/show/UuG7OaEHd7UYllk.html 8
http://v.pptv.com/show/UibC8OqIIeLYZl1g.html 9
http://v.pptv.com/show/VOO9O6MJebcamGc.html 10
http://v.pptv.com/show/VeKibPKQKergbmWY.html 11
http://v.pptv.com/show/VuWicPaULe7kcmmQ.html 12
http://v.pptv.com/show/VibTAPqYMfLodm2c.html 13

114《BBC 海底世界揭秘》
http://www.56.com/u68/v_Mjc0MjgzMzc.html
http://www.56.com/u71/v_Mjc0MjQzODA.html
http://www.56.com/u49/v_Mjc0MjAxMzQ.html
http://www.56.com/u26/v_Mjc0MTY1MDM.html
http://www.56.com/u72/v_Mjc0MzIwMzc.html
http://www.56.com/u91/v_Mjc0MzQyNTY.html

115《光的故事》
http://v.ku6.com/show/zOEiFfM_KEOLJ-0f.html
http://v.ku6.com/show/tc6fpvnX-nlPsEFF.html
http://v.ku6.com/show/Hi8CZ7kfMWZ0IVtl.html
http://v.ku6.com/show/F6EwUyZOfTScnEp4.html

116《宇宙间的各种洞》
http://v.youku.com/v_show/id_XNjcxNzE4MDA=.html

117《野性非洲》
http://www.youku.com/playlist_show/id_1232842.html

118《未来景象》
http://www.tudou.com/playlist/id/11988321/

119《血战奥马哈海滩》
http://www.tudou.com/programs/view/kY-ScA0CBJw/

120《最初的伊甸园》
http://www.tudou.com/programs/view/FB00tX8XjUI/

121《昆虫帝国》
http://v.youku.com/v_show/id_XMTA3MTAyMzY4.html
http://v.youku.com/v_show/id_XMTA3MTAyMzgw.html
http://v.youku.com/v_show/id_XMTA3MTAyMzky.html
http://v.youku.com/v_show/id_XMTA3MTAyNDI4.html
http://v.youku.com/v_show/id_XMTA3MTAyNDQ4.html
http://v.youku.com/v_show/id_XMTA3MTAyNDcy.html

122《深蓝》
http://video.sina.com.cn/v/b/58941170-1271981345.html

目录引自《BBC经典纪录片一览》

英文系教授的邮件总是礼貌的让我产生深深的自卑感,我决定复制粘贴一下。。。

是最近在做一个杂志的layout…对方是英文系。。。那个女性教授的邮件总是包含“深深的感谢”之类的词汇。。。和我们系这种可以直呼教授名字的习惯和邮件末尾署名8-) yours, J的教授十分的不和谐。我每次看着自己直白的以及包含各种语法错误的回信都有一种无限的自卑感。。。所以我决定把她的句子记下来。。。包含各种我收到的和转发顺带过来的。。。英文不太好又想要礼貌文风的同学可以顺便复制粘贴(不过注意一下词有些太过了年轻人用好奇怪Orz…)。。。某些已经是礼貌文风的同学就不需要来吐槽我了。。。

“What great news! I’d be thrilled to meet with you 。。。”

“Would it be convenient to 。。。“

”Yes, it would certainly be fine to 。。。”

“Would you prefer to 。。。”

“I look forward to it with great pleasure and thank you for your efforts and time.”

“Thank you for the very kind XXXX. I was touched by your thoughtfulness, and assure you that it was wholly my pleasure to xxxx. I’m delighted to know that 。。。。

”Thanks for all of your effort and service to xxxx. It’s been a pleasure to work with you and I’m looking forward to the results of your xxxx”

” I hope you had a very good Spring break in spite of this much appreciated work that you’ve done for….”

“I’m looking forward with great pleasure to working with you on xxxx”

问候方式有:

“Best wishes“

“With very best wishes”

“With all best wishes”

“With warm regards”

“With thanks and best regards“

“with very best wishes and much gratitude” (gratitude….-_,-)

“Best regards for a great weekend”

“With warm regards for a sunny and relaxing break”

“I hope you’re all enjoying an excellent break”

“I’m grateful for you all, and wish you and yours a very happy Thanksgiving.”

黑莓OS5.0系统断网问题自动修复程序AntiBrokenNet(黑莓断续膏)正式版发布

黑莓OS5.0系统断网问题自动修复程序AntiBrokenNet(黑莓断续膏)正式版发布

黑莓的OS5.0系统的断网问题困扰着BBer们很长一段时间了,RIM官方似乎没有看到问题的严重性,也没有任何官方说法的时候。BBer的民间高手们已经几乎解决了OS5.0的断网问题,就是通过搭建MDS来激活手机网络。通过手机上的修复工具可以不用取下电池或者重启手机就可以实现OS5.0的断网修复。之前的由感触黑莓的大神 RAiN开发的BrokenNetFixup是黑莓断网解决方案中的革命性突破,今天正式发布的AntiBrokenNet增加了自动修复功能,以及可以配置多组MDS地址,可为黑莓的OS5.0上网保驾护航了。

进入软件首页

黑莓OS5.0系统断网问题自动修复程序AntiBrokenNet(黑莓断续膏)正式版发布

添加MDS服务器地址

黑莓OS5.0系统断网问题自动修复程序AntiBrokenNet(黑莓断续膏)正式版发布

填写MDS名称,ip,端口。可设置多组

黑莓OS5.0系统断网问题自动修复程序AntiBrokenNet(黑莓断续膏)正式版发布

设置APN

黑莓OS5.0系统断网问题自动修复程序AntiBrokenNet(黑莓断续膏)正式版发布

感谢由感触黑莓论坛 @RAiN 带来的黑莓断续膏,OS5.0自动修复软件。同时在此号召莓友发扬共享精神,在留言中告知可以使用的MDS地址以供莓友分享。谢谢。

以下为bber们共享的MDS地址:

固定IP:222.35.76.109   端口:19781   APN:cmnet
固定IP:116.255.144.99  端口:19781     APN:cmnet
固定IP:211.138.141.132  端口:19781     APN:cmnet
固定IP:122.193.103.196  端口:19781     APN:cmnet
固定IP:123.120.217.108  端口:19781     APN:cmnet
固定IP:210.45.79.205  端口:19781     APN:cmnet
固定IP:122.225.206.76  端口:19781     APN:cmnet

软件下载:
黑莓断续膏AntiBrokenNet_v1.0_OS5.0.zip

BlackBerry 网络断网问题分析

BlackBerry 8900 断网现象,以及更新了官方发布的 5.0 OS 以后 9000,9700 也部分加入“断网大军”,断网问题越来越成为一个让 BBer 相当头疼的问题。当断网发生时,你的 BlackBerry 可以通过自带浏览器正常访问网络,但几乎所有的第三方程序都突然不能获得网络访问,登陆不了 IM 工具,使用不了 OperaMini、Gmail 等日常程序…你能做的就是按下 Alt+上档键+Del 重启你的 BlackBerry,方能恢复正常。

今天的专稿是来自于时光的朋友 lichaobin 应邀投递的断网分析文章,尝试从专业角度去了解更多网络访问的基本原理,抛砖引玉获得更多启发。而目的只有一个,找到断网的问题根源,解决问题。文章版权归作者 lichaobin 所有,欢迎转载分享讨论,转载请注明相关作者和来源信息。您如果希望和作者交流讨论,也可以日志留言向我们索取联络方式。

开头先来解释几个术语:

  • GPRS(General Packet Radio Service)通用分组无线业务是GSM网络过渡到3G的第一步,被认为是2.5G的技术。
  • HSCSD(High Speed Circuit Switching Data)
  • EDGE(Enhanced Data Rates For GSM Evolution)是EGPRS和ECSD的无线口技术, EGPRS (Enhanced GPRS)是对GPRS的增强,ECSD (Enhanced CSD)是对HSCSD的增强. EDGE令网络容量及数据传送比GPRS更快。

简单介绍一下各位同学使用手机GPRS上网的过程:

  • 用户开机,手机与SGSN交互,发起附着请求给HLR,HLR验证通过后,向手机发送附着请求成功消息;
  • 用户在附着成功后,通过UM接口发起GPRS业务请求,此时BTS来判断此时发起的CS域的请求还是PS域的请求;
  • BTS将发送过来的PS域的请求处理之后,经过ABIS接口发送给BSC,此时BSC得知该请求为数据包时候,将相应的请求通过Pb接口发送给PCU来进行处理;
  • PCU通过Gb接口,将数据发送给SGSN来进行处理;
  • SGSN此时发起一个非常重要的请求:就是PDP上下文激活的请求,相关的信令带了APN参数,SGSN通过DNS解析APN,获取GGSN的IP地址,并通过Gn接口发送到GGSN,GGSN此时开始处理SGSN发起的PDP激活的请求,此时GGSN根据用户发送的APN,分配用户一个IP地址,然后此时GGSN向AAA服务器发起鉴权的请求,该请求是通过Gi接口发送。此时AAA服务器接收发送过来的请求,然后将手机号码和用户的IP地址保存下来。然后反馈鉴权的结果;
  • 如果SGSN收到激活成功的消息之后,此时SGSN会判断用户的签约信息,如果HLR上对此用户设置了GPRS-CSI的DP12的数据,那么此时SGSN会通过Ge接口来向SCP发送呼叫请求,触发GPRS-PPS业务,GPRS-PPS业务开始进行用户鉴权,费用计算等等操作,然后下发AC给SGSN;
  • SGSN收到AC后,向MS返回激活PDP上下文接受消息(PDP类型,PDP地址,TI,商定的QoS,无线优先权,PDP配置选项),此时就已建立起MS与GGSN之间的路由;
  • MS收到GGSN发送的连接成功消息后,向WAPGW发送GET URL请求进行WAP浏览,WAPGW把GET请求发送给相应的PORTAL&SP站点,PORTAL&SP把请求应答消息给WAPGW,WAPGW把请求应答消息发给终端MS,MS开始进行使用分组数据业务;
  • SGSN等到AC中的时间或者流量用尽时向SCP上报ACR,SCP收到ACR后进行扣费、写话单操作,然后看用户是否挂机,如果用户仍然激活,就继续下发AC,如果用户已经断网,就下发Release Call给SGSN。

如果断网(故障是所有的第三方软件均不能用,Msn,Gamil,Google app,第三方邮件程序都不可以用,系统提示信号强度不够,请检查网络设置之类的。黑莓自带浏览器可以用,wifi也可以用。其实这时候信号已经变得非常好,已经是满格的状态了。拔电池重启后故障排除,所有第三方软件都可以用。)是按如此定义来的话,因为黑莓自带的浏览器ok,说明整个网络接入环境是通畅的,仅第三方软件有问题,应该和第三方软件的服务器,APN,黑莓机器servicebook,自身的OS和rom存在关系可能性较大。现在中国移动的APN是CMNET和CMWAP。CMWAP使用HTTP代理协议和WAP网关协议可以访问到Internet。 CMNET直接访问Internet。

对于通过CMWAP和CMNET进行业务时一个行或者一个不行的问题,本人没有在国内使用过,不甚了解。但是从网络侧来说应该没有很大的区别应该只是在移动核心网(SGSN,GGSN)后去了不同的服务器而已。当然WAP代理服务器也是需要考虑的因素之一,WAP网关和第三方软件服务器的配合问题也可能造成第三方软件不可用。下面以飞信为例介绍一下流程(其他第三方软件过程类似):

 

对于各位同学关心的黑莓断网的问题,需要实测解析信令和抓包才能了解网络侧的状态,而后进一步关注于黑莓自身的问题,采取逐段分析排除的方法才有可能彻底解决问题。

如果各位同学使用的sim卡属于不允许使用3G业务号段,黑莓手机在2G和3G网络共同覆盖区域有可能无法进行业务,造成手机进行网络乒乓切换。此时SGSN正常拒绝该用户注册3G网络,拒绝原因值为7号“gprs_service_not_allowed”,该用户被拒绝后回到2G,但是2-3分钟后,手机似乎忘记曾经被3G网络拒绝过,而试图重新尝试登陆3G,此现象循环。而根据协议3GPP TS24.008描述,当手机接收到SGSN下发的7号拒绝原因值后,应该不在尝试登陆3G,直到手机开关机或者SIM/USIM卡被移除。这样看来问题原因就是黑莓手机OS系统bug没有严格遵守协议标准。目前中国移动的GSM和TD网络之间的互操作以及切换还在进一步优化过程中,也有可能造成手机上网时候的断网。(中国联通也存在类似情况)

对于地铁,电梯,CBD高层建筑,地下停车场等特殊地区,进出特殊地区(有信号)数据业务要小区重选(类似于硬切换的道理),必然造成数据业务的掉线。但是一般来说重选成功的时间不长,用户应该感知不到整个过程。表现仅为浏览网页过程中的停顿或者缓慢。并且一但过程结束,手机重新发起数据业务肯能能成功,应该不会出现如各位所述需要拆电池重启等方法才能重新开启链接的情况。GPRS具有”永远在线”的特点,即用户随时与网络保持联系。用户访问互联网时,手机就在无线信道上发送和接受数据,没有数据传送时,手机就进入一种”准休眠”状态,手机释放所用的无线频道给其他用户使用,这时网络与用户之间还保持一种逻辑上的连接,当用户再次点击,手机立即向网络请求无线频道用来传送数据,而不象普通拨号上网那样断线后还得重新拨号才能上网。

从有信号区域到无信号区域再返回时无法进行业务,手机断网必然重现问题?我手头也没有重现的环境,只能先说这些猜测想法了。从无信号区域返回有信号区域,所有的资源会重新获取,如果机器自带的浏览器ok,那么和网络侧的关系应该不大。我就遇到过手机信号条直接显示SOS,如果哪位同学和我有一样的经历,可以参看如下的分析:

如果小区内无线信号不稳定或者经过复杂特殊区域,MS与SGSN之间的鉴权消息时序出现了错乱,导致SGSN错误的判断MS鉴权失败,下发了鉴权拒绝消息给MS,在手机上呈现SIM卡未注册。

  1. 正常情况下,MS发起附着请求(ATTACH_REQ)后,SGSN发起了鉴权请求(AUTHENTICATION_AND_CIPHERING_REQ),MS立即(1秒钟内)回复鉴权响应(AUTHENTICATION_AND_CIPHERING_RSP),SGSN校验正确之后,下发附着接受消息(ATTACH_ACC),MS立即回复附着完成消息(ATTACH_CMP)。
  2. 异常情况下,MS发起附着请求(ATTACH_REQ)后,SGSN发起了鉴权请求(AUTHENTICATION_AND_CIPHERING_REQ),MS没有回复鉴权相应消息,SGSN会等待10秒钟之后再重发鉴权请求消息,但是6秒之后MS再次发起附着请求,SGSN也会再次发起鉴权请求,MS立即回复了鉴权响应,SGSN在校验的鉴权响应时发现MS回复的消息错误,就直接下发鉴权失败(AUTHENTICATION_AND_CIPHERING_REJ)消息给MS,导致MS出现SIM卡未注册现象,手机接入GPRS网络失败。

 

图1 出现“SIM卡未注册”的手机的信令流程

SGSN下发的鉴权相应消息到达PCU之后,可能没有及时到达MS,因此SGSN也没有及时收到鉴权响应消息。6秒之后,MS再次发起附着请求,SGSN会使用一个新的鉴权集下发鉴权响应消息,此时MS回复针对上一次鉴权请求的响应消息,导致SGSN在校验的时候判断MS鉴权失败,下发了鉴权拒绝消息给MS,在手机上呈现SIM卡未注册。

另外对于使用联通WCDMA 3G的同学断网也可能是以下原因:黑莓手机不支持RNC在一个RB SETUP消息里面同时下发两个业务RB,并且这两个RB都建立在HSDPA上。如果这两个RB是建立在DCH上,那么可以成功。另外,需要说明的是黑莓手机只是不支持两个HSDPA业务同时建立,如果是前后建立两个HSDPA业务,黑莓手机是支持的。

再说说从本地漫游到别的省市的情况:各位同学在出行漫游附着到本地网之后,尝试通过漫游地SGSN回到归属GGSN激活PDP上下文,如果上网失败。可能性就是相同的IMSI用户已经激活了相同APN的一个PDP上下文,然后该用户尝试再次激活相同APN的PDP上下文,同时SGSN发来的请求指示并非二次激活(二次激活还会携带已有PDP的NSAPI值),GGSN将拒绝第二次激活,拒绝原因值就是Mandatory IE Incorrect。

对于相同IMSI号码GGSN中已经存在激活状态的PDP,已激活PDP使用的SGSN信令面地址与第二次激活所用的SGSN信令面地址相同,两次激活对应的漫游地SGSN相同。该用户第二次激活PDP时(非协议中描述的二次激活Secondary PDP),漫游地SGSN并未先向GGSN发送请求将原来同一IMSI上下文去激活。这种处理是有问题的。而SGSN比较好的处理方式是对用户的主要索引是IMSI,系统中是否存在该用户也需要用IMSI查询。所以如果用户用相同的IMSI激活,SGSN认为是同一用户,如果已经激活PDP,用户再重新ATTACH,SGSN会把该用户原来的资源去激活。

以上就是我根据以往经验对黑莓手机的粗浅分析,谬误之处请各位指正。

 

最后我还要给出在之前我和一位朋友拨打中国移动 10086 咨询热线时话务员的解释供大家参考:

  • 北京:目前 cmnet 是存在网络中断后无法再连接的问题,目前最有效的办法就是重新启动或关机并重新插拔 SIM 卡,或选择 cmwap 作为网络接入点。
  • 河北:目前中国移动河北分公司正在改制网络,改制完成后将不会出现 cmnet 断网的现象。

How to write an excellent GSoC proposal

How to write an excellent GSoC proposal

We assume you’ve already found our Project Ideas, GSoC Application Template, and Google Summer of Code pages.

Self-assessment

The most important starting point is looking at the prerequisites listed for the project, to confirm that you have these skills or have a foundation of knowledge that lets you acquire them rapidly, largely during the bonding period before your project would begin. It’s fine to be ambitious and target a project where you need to grow, but be realistic: with your academic obligations through the end of the current term, will you be able to read a book and write some code to consolidate freshly-acquired knowledge?

The other reason self-assessment is crucial is because your application is a practical proposal. Your application shows whether you can take a high-level objective, break it down into a series of tasks, and allocate time to those tasks in a way that shows realistic appreciation for their difficulty. You may never have done something quite like this before, so you should expect to spend quite a bit of time and energy during the application learning to do this for yourself. It’s fine to work in cycles: push it as far as you can on your own, come back for feedback, and revise.

One very important corollary of this is that you should not approach the mentor or the community expecting extensive feedback without showing a grasp of relevant fundamentals. You know what your background is, and you need a background that lets you relate concretely to the project. If you mail our developer list with a question like, “What is this project?”, you may not see a reply.

Research first, ask questions later

If you don’t understand what the project really is, particularly if there’s linked code or explicit references that you don’t understand, you need to show that you’ve tried to work this out for yourself rather than asking right off. You are joining our community for mentorship, but our objective is to develop your over the course of the summer into someone who can participate over the long term as a peer. Nothing threatens that premise like asking a question that a Google search could answer for you, particularly if it’s how you introduce yourself or if you do so persistently. Be especially sure to sure to search our mail and IRC archives to see if we’ve had previous discussions about the idea that interests you.

Survey the project

Assumptions are the hardest thing to refactor

A good time to ask questions is when you start getting clear ideas about how to structure the project. Baking in mistaken assumptions can kill code, but assumptions can also cause lost time well before that or show your project to be untutored if they contradict a mentor’s understanding. If you reckon you’ve got a basic conceptual grasp of the project (you’ve followed explicit references from the ideas page, you’ve checked how issues were framed if the project was previously discussed on the developer mailing list), asking questions is a good way to confirm and clarify that before you start building a proposal around it.

Don’t be surprised if there is disagreement on fundamentals

The further you go in forming assumptions, the more important it is to expose those assumptions to feedback from potential mentors. We encourage you to do this via the developer mailing list and IRC channel. Assumptions may not be agreed within the community, even between leading contributors to a particular area. One of the most important skills to develop in an open-source project is the ability to summarize and evaluate competing perspectives.

Look at the whole on your first pass

If a project mentions a list of items, diving into the first item may not be the best approach. Make a general survey to understand how the pieces do or do not relate so that you understand what leverage resolving one item gets you for others and what dependencies might exist between items.

Spend time with existing code

Look for existing code that bears some relation to the project. For example: if you’re looking at a project to implement instrumentation tools with DTrace, analyse different pieces to get a broader perspective: get a conceptual grasp of what the tools you mean to reimplement do, see what’s already in the DTrace toolkit that instruments the same subsystems, and see what’s implemented in illumos-gate using kstats and C that overlaps so that you can get a grasp of how DTrace differs in approach from traditional Unix instrumentation.

Look for references

A number of people involved in our project write technical blogs, and there are blogs dedicated to major subsystems, as well as related work in the continuing commercial fork. The Solaris Internals book document a good deal of our predecessor project. One book and one series by W. Richard Stevens, Advanced Programming in the Unix Environment and TCP/IP Illustrated are considered canonical texts on systems and fundamental networking programming. Tannenbaum’s Modern Operating Systems offers a comparative approach. Online docs for our predecessor projects can be found here:http://www.filibeto.org/~aduritz/. An online source for OS development can be found here:http://www.osdever.net/.

Assertions are only for debugging

Demonstration is best

This is a practical project. A lot of references to your academic record will be hard for us to verify, thus making it hard to evaluate parts of your application. Contributing fixes to bite-sized bugs, working through demo code for a first step on your project (preferably allowing time for feedback after sharing it with the community), and referencing contributions to other open source projects all go a long way to demonstrating that you can do the work.

Analysis is good, too

Code’s always best, but showing that you can find and grok relevant code and put it into a clear conceptual context is still better than resorting to rhetoric.

Show a long-term perspective

Focus your enthusiasm

Illumos and GSoC both want to support students with a long-term commitment to open-source development. If you have no prior experience with open source development, you’re at something of a disadvantage. Do not try to overcome this with non-specific expressions of enthusiasm.

The race you’re running has already begun

You are offering to make a serious commitment of time and energy to our project, and completing a project successfully, meaning that we are able to commit it before the summer is over, is a serious challenge. Particularly if you don’t have a record of open-source contribution generally and to our project in particular, you should expect to put in much of your free time between reading this and the deadline researching and preparing your application and supporting materials (bite-sized contributions, demo code directly relevant to the project).

We’re long-term people looking for long-term people

Many of the people working on this project have made career decisions to stick with it and have been doing this for quite a long time, many for a living. We come from a wide variety of backgrounds. We’ve had a lot of experience in the workplace, as well as in the open-source world. We have a decent eye for measuring capability, interest, and fortitude. Focus on the work as concretely as possibly, and you are most like to exhibit those things. Let them speak for themselves and leave other things out or in the background.

再来一篇牢骚满腹的日志,写写最近的工作和生活

再来一篇牢骚满腹的日志,哈哈

 

今天3月26日,对我来说应该算是很重要的日子,今天心情格外的爽朗,因为刚刚结束了两年多的实习经历,从09年11月份开始就一直在实习,中途虽然回学校研究生上课,但是仍然保持着实习的状态,研究生毕业后开始了新的一轮找实习的经历,去了豆瓣实习一个多月的时间,感受那里面的环境,印象很深刻。

经过这两个月的时间,继续回到了甲骨文研发中心去实习,以前的部门,以前的专业,在那段时间专心的找工作找实习,接着就是拿到了IBM的offer,甲骨文迟迟没有消息,过了年去IBM实习,在那里面的一个月里面还是有很深的感悟的,知道了自己真正喜欢做什么,每天对着Windows也确实是受不了,用着ez的编辑器,到现在还不知道为什么非要用这个,总跟我说是传统,我就各种无奈。

也许是个人性格的问题,喜欢上一个东西,就会一如既往的喜好和关心,习惯了Linux和Vim,真的不想换,还是想专心的使用,专心的开发一些喜欢的东西。非常喜欢开源,并一直坚持想贡献自己的一点力量。

最终的最终还是回到了原点,还是去了以前的公司,以前的Sun的部门,做开发的工作,总体来说很是喜欢这样的工作,之前的六次技术面试,两次经理面试,加之等了两个月时间,也算是最终有了结果。

 

找工作绝对是个耗费体力和经历的事情,这么久的时间,有了这样的结果心理很满足了。突然放松下来还真是有些不适应,哈哈,这周六回大连,开始了毕业的工作,早点完成毕设。

草草写了几笔,将来再继续完善。。。

 

接着写一下我的实习、工作的抉择过程吧,带有很重的个人感情色彩,不适合所有人。

1、豆瓣网

估计很多文艺青年会比较向往这个地方,我之前也是非常向往去感受一下那里的氛围,感受社区的小文艺文化,我是通过豆瓣的暑期夏令营过去,在那里实习了不到两个月的时间,电脑都是自己带,那面的工程师基本上都是苹果电脑,开发的话都是小团队开会,直接将内容上线,阿北直接参与的项目貌似不多,我在的那段时间正好赶上了一轮融资,哈哈。

为什么离开呢,个人原因很多,还是想去大公司去发展下,而且目前豆瓣的赢利点还在探索,未来发展会很好,目前已经200多人了。

2、中金

知道这个公司的人在搞IT的工程师里面貌似不多,但是他在金融界的影响是很大的,有很多很多的重大的融资和上市都是通过它,去那里主要是做内部系统的开发,内推过去的,比较简单的面试,主要做.net的开发,平时工作比较忙,经常加班,工资一般。做IT的背景在金融公司中真是一般,发展空间局限。

3、IBM

在那里实习了一个月的时间,也是拿到了offer过去的,IBM人很多,做的东西也很广,因此我说的会有局限性,我主要是做System i相关的东西,去了之后发现开发的内容不多,更多的是业务流程的感觉,做System i的流程对于将来的发展,自己认为会有局限性,因此选择的离开

4、Sun/Oracle

绕了一圈还是回到了这里,实习了好久的地方,总体感觉气氛比较轻松,做Solaris相关的开发工作。

 

这也就是我的工作抉择问题,好多主观感情,哈哈,仅供参考~

locale深入理解

关于locale的设定,为什么要设定locale
关于locale的设定

locale是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土化,大致包含三个方面:看中文,写中文,与window中文系统的兼容和通信。从实际经验上看来,locale的设定与看中文关系不大,但是与写中文,及window分区的挂载方式有很密切的关系。本人认为就像一个纯英文的Windows能够浏览中文,日文或者意大利文网页一样,你不需要设定locale就可以看中文。那么,为什么要设定locale呢?什么时候会用到locale呢?

Tags: locale 设定 原因 解释

一、为什么要设定locale
正如前面我所讲的,设定locale与你能否浏览中文的网页没有直接的关系,即便你把locale设置成en_US.ISO-8859-1这样一个标准的英文locale你照样可以浏览中文的网页,只要你的系统里面有相应的字符集(这个都不一定需要)和合适的字体(如simsun),浏览器就可以把网页翻译成中文给你看。具体的过程是网络把网页传送到你的机器上之后,浏览器会判断相应的编码的字符集,根据网页采用的字符集,去字体库里面找合适的字体,然后由文字渲染工具把相应的文字在屏幕上显示出来。

在下文本人会偶尔把字符集比喻成密码本,个人觉得对于一些东西比较容易理解,假如你不习惯的话,把全文copy到任何文本编辑器,用字符集替换密码本即可。

那有时候网页显示乱码或者都是方框是怎么回事呢?个人认为,显示乱码是因为设定的字符集不对(或者没有相应的字符集),例如网页是用UTF-8编码的,你非要用GB2312去看,而系统根据GB2312去找字体,然后在屏幕上显示,当然是一堆的乱码,也就是说你用一个错误的密码本去翻译发给你的电报,当然内容那叫一个乱;至于有些时候浏览的网页能显示一部分汉字,但有很多的地方是方框,能够显示汉字说明浏览器已经正确的判断出了网页的编码,并在字体库里面找到了相应的文字,但是并不是每个字体库都包含某个字符集全部的字体的缘故,有些时候会显示不完全,找一个比较全的支持较多字符集的字体就可以了。

既然我能够浏览中文网页,那为什么我还要设定locale呢?

其实你有没有想过这么一个问题,为什么gentoo官方论坛上中文论坛的网页是用UTF-8编码的(虽然大家一直强烈建议用GB2312编码),但是新浪网就是用GB2312编码的呢?而Xorg的官方网页竟然是ISO-8859-15编码的,我没有设定这个locale怎么一样的能浏览呢?这个问题就像是你有所有的密码本,不论某个网站是用什么字符集编码的,你都可以用你手里的密码本把他们翻译过来,但问题是虽然你能浏览中文网页,但是在整个操作系统里面流动的还是英文字符。所以,就像你能听懂英语,也能听懂中文。
最根本的问题是:你不可以写中文。

当你决定要写什么东西的时候,首先要决定的一件事情是用那种语言,对于计算机来说就是你要是用哪一种字符集,你就必须告诉你的linux系统,你想用那一本密码本去写你想要写的东西。知道为什么需要用GB2312字符集去浏览新浪了吧,因为新浪的网页是用GB2312写的。

为了让你的Linux能够输入中文,就需要把系统的locale设定成中文的(严格说来是locale中的语言类别LC_CTYPE ),例如zh_CN.GB2312、zh_CN.GB18030或者zh_CN.UTF-8。很多人都不明白这些古里古怪的表达方式。这个外星表达式规定了什么东西呢?这个问题稍后详述,现在只需要知道,这是locale的表达方式就可以了。

二、到底什么是locale
locale这个单词中文翻译成地区或者地域,其实这个单词包含的意义要宽泛很多。Locale是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。

这个用户环境可以按照所涉及到的文化传统的各个方面分成几个大类,通常包括用户所使用的语言符号及其分类(LC_CTYPE),数字(LC_NUMERIC),比较和排序习惯(LC_COLLATE),时间显示格式(LC_TIME),货币单位(LC_MONETARY),信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES),姓名书写方式(LC_NAME),地址书写方式(LC_ADDRESS),电话号码书写方式(LC_TELEPHONE),度量衡表达方式(LC_MEASUREMENT),默认纸张尺寸大小(LC_PAPER)和locale对自身包含信息的概述(LC_IDENTIFICATION)。

所以说,locale就是某一个地域内的人们的语言习惯和文化传统和生活习惯。一个地区的locale就是根据这几大类的习惯定义的,这些locale定义文件放在/usr/share/i18n/locales目录下面,例如en_US, zh_CN and de_DE@euro都是locale的定义文件,这些文件都是用文本格式书写的,你可以用写字板打开,看看里边的内容,当然出了有限的注释以外,大部分东西可能你都看不懂,因为是用的Unicode的字符索引方式。

对于de_DE@euro的一点说明,@后边是修正项,也就是说你可以看到两个德国的locale
/usr/share/i18n/locales/de_DE@euro
/usr/share/i18n/locales/de_DE
打开这两个locale定义,你就会知道它们的差别在于de_DE@euro使用的是欧洲的排序、比较和缩进习惯,而de_DE用的是德国的标准习惯。

上面我们说到了zh_CN.GB18030的前半部分,后半部分是什么呢?大部分Linux用户都知道是系统采用的字符集。

三、什么是字符集?
字符集就是字符,尤其是非英语字符在系统内的编码方式,也就是通常所说的内码,所有的字符集都放在/usr/share/i18n/charmaps,所有的字符集也都是用Unicode编号索引的。Unicode用统一的编号来索引目前已知的全部的符号。而字符集则是这些符号的编码方式,或者说是在网络传输,计算机内部通信的时候,对于不同字符的表达方式,Unicode是一个静态的概念,字符集是一个动态的概念,是每一个字符传递或传输的具体形式。就像Unicode编号U59D0是代表姐姐的“姐”字,但是具体的这个字是用两个字节表示,三个字节,还是四个字节表示,是字符集的问题。例如:UTF-8字符集就是目前流行的对字符的编码方式,UTF-8用一个字节表示常用的拉丁字母,用两个字节表示常用的符号,包括常用的中文字符,用三个表示不常用的字符,用四个字节表示其他的古灵精怪的字符。而GB2312字符集就是用两个字节表示所有的字符。需要提到一点的是Unicode除了用编号索引全部字符以外,本身是用四个字节存储全部字符,这一点在谈到挂载windows分区的时候是非常重要的一个概念。所以说你也可以把Unicode看作是一种字符集(我不知道它和UTF-32的关系,反正UTF-32就是用四个字节表示所有的字符的),但是这样表述符号是非常浪费资源的,因为在计算机世界绝大部分时候用到的是一个字节就可以搞定的26个字母而已。所以才会有UTF-8,UTF-16等等,要不然大同世界多好,省了这许多麻烦。

四、zh_CN.GB2312到底是在说什么?
Locale 是软件在运行时的语言环境, 它包括语言(Language), 地域 (Territory) 和字符集(Codeset)。一个locale的书写格式为: 语言[_地域[.字符集]]. 所以说呢,locale总是和一定的字符集相联系的。下面举几个例子:

1、我说中文,身处中华人民共和国,使用国标2312字符集来表达字符。
zh_CN.GB2312=中文_中华人民共和国+国标2312字符集。

2、我说中文,身处中华人民共和国,使用国标18030字符集来表达字符。
zh_CN.GB18030=中文_中华人民共和国+国标18030字符集。

3、我说中文,身处中华人民共和国台湾省,使用国标Big5字符集来表达字符。
zh_TW.BIG5=中文_台湾.大五码字符集

4、我说英文,身处大不列颠,使用ISO-8859-1字符集来表达字符。
en_GB.ISO-8859-1=英文_大不列颠.ISO-8859-1字符集

5、我说德语,身处德国,使用UTF-8字符集,习惯了欧洲风格。
de_DE.UTF-8@euro=德语_德国.UTF-8字符集@按照欧洲习惯加以修正

注意不是de_DE@euro.UTF-8,所以完全的locale表达方式是
[语言[_地域][.字符集] [@修正值]

生成的locale放在/usr/lib/locale/目录中,并且每个locale都对应一个文件夹,也就是说创建了de_DE@euro.UTF-8 locale之后,就生成/usr/lib/locale/de_DE@euro.UTF-8/目录,里面是具体的每个locale的内容。

五、怎样去自定义locale
在gentoo生成locale还是很容易的,首先要在USE里面加入userlocales支持,然后编辑locales.build文件,这个文件用来指示glibc生成locale文件。
很多人不明白每一个条目是什么意思。 其实根据上面的说明现在应该很明确了。

File: /etc/locales.build
en_US/ISO-8859-1
en_US.UTF-8/UTF-8

zh_CN/GB18030
zh_CN.GBK/GBK
zh_CN.GB2312/GB2312
zh_CN.UTF-8/UTF-8

上面是我的locales.build文件,依次的说明是这样的:

en_US/ISO-8859-1:生成名为en_US的locale,采用ISO-8859-1字符集,并且把这个locale作为英文_美国locale类的默认值,其实它和en_US.ISO-8859-1/ISO-8859-1没有任何区别。

en_US.UTF-8/UTF-8:生成名为en_US.UTF-8的locale,采用UTF-8字符集。

zh_CN/GB18030:生成名为zh_CN的locale,采用GB18030字符集,并且把这个locale作为中文_中国locale类的默认值,其实它和zh_CN.GB18030/GB18030没有任何区别。

zh_CN.GBK/GBK:生成名为zh_CN.GBK的locale,采用GBK字符集。
zh_CN.GB2312/GB2312:生成名为zh_CN.GB2312的locale,采用GB2312字符集。
zh_CN.UTF-8/UTF-8:生成名为zh_CN.UTF-8的locale,采用UTF-8字符集。

关于默认locale,默认locale可以简写成en_US或者zh_CN的形式,只是为了表达简单而已没有特别的意义。

Gentoo在locale定义的时候掩盖了一些东西,也就是locale的生成工具:localedef。
在编译完glibc之后你可以用这个localedef 再补充一些locale,就会更加理解locale了。具体的可以看 localedef 的manpage。

$localedef -f 字符集 -i locale定义文件 生成的locale的名称
例如
$localedef -f UTF-8 -i zh_CN zh_CN.UTF-8

上面的定义方法和在locales.build中设定zh_CN.UTF-8/UTF-8的结果是一样一样的。

六、locale的五脏六腑

刚刚生成了几个locale,但是为了让它们生效,必须告诉Linux系统使用那(几)个locale。这就需要对locale的内部机制有一点点的了解。在前面我已经提到过,locale把按照所涉及到的文化传统的各个方面分成12个大类,这12个大类分别是:
1、语言符号及其分类(LC_CTYPE)
2、数字(LC_NUMERIC)
3、比较和排序习惯(LC_COLLATE)
4、时间显示格式(LC_TIME)
5、货币单位(LC_MONETARY)
6、信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES)
7、姓名书写方式(LC_NAME)
8、地址书写方式(LC_ADDRESS)
9、电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式(LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。

其中,与中文输入关系最密切的就是 LC_CTYPE, LC_CTYPE 规定了系统内有效的字符以及这些字符的分类,诸如什么是大写字母,小写字母,大小写转换,标点符号、可打印字符和其他的字符属性等方面。而locale定义zh_CN中最最重要的一项就是定义了汉字(Class “hanzi”)这一个大类,当然也是用Unicode描述的,这就让中文字符在Linux系统中成为合法的有效字符,而且不论它们是用什么字符集编码的。

LC_CTYPE
% This is a copy of the “i18n” LC_CTYPE with the following modifications: – Additional classes: hanzi

copy “i18n”

class “hanzi”; /
% ..;/
..;/
;;;;;;;;/
;;;;;;;;/
;;;;
END LC_CTYPE

在en_US的locale定义中,并没有定义汉字,所以汉字不是有效字符。所以如果要输入中文必须使用支持中文的locale,也就是zh_XX,如zh_CN,zh_TW,zh_HK等等。

另外非常重要的一点就是这些分类是彼此独立的,也就是说LC_CTYPE,LC_COLLATE和 LC_MESSAGES等等分类彼此之间是独立的,可以根据用户的需要设定成不同的值。这一点对很多用户是有利的,甚至是必须的。例如,我就需要一个能够输入中文的英文环境,所以我可以把LC_CTYPE设定成zh_CN.GB18030,而其他所有的项都是en_US.UTF-8。

七、怎样设定locale呢?

设定locale就是设定12大类的locale分类属性,即 12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG。它们之间有一个优先级的关系:
LC_ALL>LC_*>LANG
可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。
1、如果你设定了LC_ALL=zh_CN.UTF-8,那么不管LC_*和LANG设定成什么值,它们都会被强制服从LC_ALL的设定,成为 zh_CN.UTF-8。
2、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_*=en_US.UTF-8,并且没有设定LC_ALL的话,那么系统的locale设定以LC_*=en_US.UTF-8。
3、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_*,和LC_ALL均未设定的话,系统会将LC_*设定成默认值,也就是LANG的值 zh_CN.UTF-8 。
4、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_CTYPE=en_US.UTF-8,其他的LC_*,和LC_ALL均未设定的话,那么系统的locale设定将是:LC_CTYPE=en_US.UTF-8,其余的 LC_COLLATE,LC_MESSAGES等等均会采用默认值,也就是LANG的值,也就是LC_COLLATE=LC_MESSAGES=……= LC_PAPER=LANG=zh_CN.UTF-8。

所以,locale是这样设定的:
1、如果你需要一个纯中文的系统的话,设定LC_ALL= zh_CN.XXXX,或者LANG= zh_CN.XXXX都可以,当然你可以两个都设定,但正如上面所讲,LC_ALL的值将覆盖所有其他的locale设定,不要作无用功。
2、如果你只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。这样LC_CTYPE=zh_CN.XXXX,而LC_COLLATE=LC_MESSAGES=……= LC_PAPER=LANG=en_US.XXXX。
3、假如你高兴的话,可以把12个LC_*一一设定成你需要的值,打造一个古灵精怪的系统:
LC_CTYPE=zh_CN.GBK/GBK(使用中文编码内码GBK字符集);
LC_NUMERIC=en_GB.ISO-8859-1(使用大不列颠的数字系统)
LC_MEASUREMEN=de_DE@euro.ISO-8859-15(德国的度量衡使用ISO-8859-15字符集)
罗马的地址书写方式,美国的纸张设定……。估计没人这么干吧。
4、假如你什么也不做的话,也就是LC_ALL,LANG和LC_*均不指定特定值的话,系统将采用POSIX作为lcoale,也就是C locale

Time to say Goodbay

Hi All,

As many of you probably know, today is my last day. But before I leave, I want to take this opportunity to
let you know what a great and distinct pleasure experince.

Over the past two years, a long time as an intern, I have been fortunate enough to work with you.

I would especially like to thank my mentor Dave, you have taught me more than I could ever ask for and,
in most cases, ever did ask for. You high demands and patience make me work better.

 

两年的时间对于一个实习生来说应该算是很长很长了,在这么长的时间里,一个职位两个公司,同样的同事,经历了好多好多事情。如今真的要走了真是好多的不舍得,前途未卜,不知道接下来会怎么样,但是我将全力以赴,努力做到最好。在Sun的两年属于学生时代最开心的事情,纵情于脚本,纵情于编程,Vim,Linux等等,所有的所有都是非常难忘的经历,也是我走向下一个公司的阶石。

两年的时间,我走过了学生时代,本科毕业,研究生也即将毕业,两个毕设,说走确实是有点不舍,毕竟花了太多太多的时间了,希望将来有机会再回去。

perl的调试

功能调试

1. 最常用的方法

(1. print:这个用户就不用写了吧

(2. 模块: Data::Dumper
这个使用很容易,主要就是使用Dumper的函数做输出

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl
use strict;
use Data::Dumper;

my $hash = {
        foo => 'test1',
        bar => {
            foo1 => 'test2',
                }
    };

print Dumper($hash);

这个会非常非常清楚的输出数据结构的信息:

1
2
3
4
5
6
$VAR1 = {
          'bar' => {
                     'foo1' => 'test2'
                   },
          'foo' => 'test1'
        };

(3 模块:Smart::Comments
这个模块就更加好用了,伟大的CPAN…..这个只需要###加上后面的变量就能输出变量中的信息。你可以在调试时打开,调试完了就关掉。超爽。

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl
use strict;
use Smart::Comments;

my $hash = {
        foo => 'test1',
        bar => {
            foo1 => 'test2',
                }
    };

### hash: $hash

见到上面###后面的内容没,这样很不错吧。。这个更新清楚的打印出数据结构

1
2
3
4
5
6
### hash: {
###         bar => {
###                  foo1 => 'test2'
###                },
###         foo => 'test1'
###       }

(2 perl的调试器

1
perl -d yourperl.pl

-s      Step 运行一行,跟踪进入子程序
-n      Next 运行一行
-r      Return 运行到当前子程序结束
-p   变量名         查看变量
-x   变量名         查看变量,友好格式(hash用引用)
-l/-/w        列出前后的代码
-c   行号          执行到”行号”
-c             执行,直到遇到断点
-b   行号          设置断点(b 子程序名)
-b   行号 条件       设置条件断点
-d   行号          去除”行号”处的断点
-L   列出所有的断点
-t    跟踪执行

(3 出错信号

这个不在详细写了。在我的另一个文章中,perl中的并发和信号中

性能调试

这个晚点在写困死了,其它下次写

(1. test模块

(2. Devel::Coverage模块

perl -d:Coverage yourperl.pl

这个主要可以测试到代码的覆盖范围。分支的运行情况。

(3. Devel::SmallProf模块

这个模块会生成非常不错的文本文件samllprof.out来显示各行运行的时间,真实时间和cpu时间。它的精度要求好些所以需要Time::HiRes这个模块.

1
perl -d:SmallProf yourperl.pl

暂时关闭和打开profile:

1
$DB::profile = 0;

这之间的代码不会被SmallProf跟踪

1
$DB::profile = 1;

指定要跟踪的模块名称,主程序用’main’表示,例如

1
2
3
4
use Data::Dumper;
use TK;
%DB::package = ('main' => 1,
                  'Data::Dumper' => 1);

只跟踪主程序和Data::Dumper的代码执行情况 不列出执行计数为0的行

1
$DB::drop_zeros = 1;

(4. Devel::DProf模块

perl -d:DProf yourperl.pl

1
这个和上面的作者大多相同,但这个会生成自己的格式文件,可以用它来画图之类.

(5 DBI::Profile

测试DBI的,没用过。。。

 
Powered by WordPress. Design by Bingo