| 云翔 的个人资料上善若水照片日志列表 | 帮助 |
|
2006/8/30 琵琶语 夜已深,人不寐,心绪起伏。
琵琶语,飘荡在静谧的时空中。 心语在奏,欲语语还休,叹知己独难求; 心弦在吟,弦弦难诉相思意,声声撩拨寂寞情; 心向之,神往之,与之共和,为之而舞,沉浸其中,忘乎所以,心缥缈,人不已。 一曲终了,嘠然而止,弦断音绝人渺渺,美梦早惊休,佳人去难留,肠断人倚盼,惟有愁千行…… (从小王子处盗得一曲琵琶语,心喜不已。) 2006/8/25 “下辈子”百度搜索“下辈子”,找到相关网页约6,390,000篇。
相关搜索 下辈子不要做男人 下辈子不做男人 下辈子不做女人 下辈子我还记得你 下辈子我不要做男人 如果下辈子 下辈子不再做男人 如果下辈子还记得你 下辈子不要再做男人 google搜索“下辈子”,约有2,690,000项符合下辈子的查询结果。
结果和百度差不多。 看来男人们个个苦大仇深,已经快成怨妇了。
但google的相关搜索比较奇怪:
相关搜索 下辈子程序员 下辈子别再做女人 下辈子如果我还记得你 来生 来世
马郁 辈子 我在搜索结果里面连续翻了5页都没有看到有关“下辈子别再做女人”的内容。
再点击“下辈子程序员”,发现当今程序员的不满情绪也很大。不过值得注意的是google相关搜索:
相关搜索 下辈子下载程序员 下辈子程序员论坛 下辈子程序员考试 下辈子网络程序员 下辈子程序设计员 下辈子高级程序员 程序员 下辈子初级程序员 程序员考试 程序员论坛 真是看不大懂,乱七八糟的。 这可不是怨妇帖,或许这只能说明男性程序员无聊的时候一般都在网上泡着。 2006/8/24 struct IO#include <stdio.h>
#include <stdlib.h> typedef struct transfer_di{
unsigned bno:22; unsigned fno:10; int len; int command_no; }; void main() { struct transfer_di f,g; f.bno=3; f.fno=4; f.len=500; f.command_no=100001; FILE *fp,*op; fp=fopen("test_b.dat","ab"); fwrite(&f, sizeof(struct transfer_di), 1, fp); fclose(fp); op=fopen("test_b.dat","r"); fread(&g, sizeof(struct transfer_di), 1, op); fclose(op); printf("bno=%d\ncommand_no=%d\nfno=%d\nlen=%d\n",g.bno,g.command_no,g.fno,g.len); } GCC使用详解在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等。 开放、自由和灵活是Linux的魅力所在,而这一点在GCC上的体现就是程序员通过它能够更好地控制整个编译过程。在使用GCC编译程序时,编译过程可以被细分为四个阶段: ◆ 预处理(Pre-Processing) ◆ 编译(Compiling) ◆ 汇编(Assembling) ◆ 链接(Linking) Linux程序员可以根据自己的需要让GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。和其它常用的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。 GCC提供了30多条警告信息和三个警告级别,使用它们有助于增强程序的稳定性和可移植性。此外,GCC还对标准的C和C++语言进行了大量的扩展,提高程序的执行效率,有助于编译器进行代码优化,能够减轻编程的工作量。 GCC起步 在学习使用GCC之前,下面的这个例子能够帮助用户迅速理解GCC的工作原理,并将其立即运用到实际的项目开发中去。首先用熟悉的编辑器输入清单1所示的代码: 清单1:hello.c #include <stdio.h> 然后执行下面的命令编译和运行这段程序: #gcc hello.c -o hello 从程序员的角度看,只需简单地执行一条GCC命令就可以了,但从编译器的角度来看,却需要完成一系列非常繁杂的工作。首先,GCC需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着,GCC会调用ccl和as将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。 为了更好地理解GCC的工作过程,可以把上述编译过程分成几个步骤单独进行,并观察每步的运行结果。第一步是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程: #gcc -E hello.c -o hello.i 此时若查看hello.cpp文件中的内容,会发现stdio.h的内容确实都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成: # gcc -c hello.i -o hello.o GCC默认将.i文件看成是预处理后的C语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用-x参数让GCC从指定的步骤开始编译。最后一步是将生成的目标文件链接成可执行文件: # gcc hello.o -o hello 在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由foo1.c和foo2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序foo,可以使用下面这条命令: # gcc foo1.c foo2.c -o foo 如果同时处理的文件不止一个,GCC仍然会按照预处理、编译和链接的过程依次进行。如果深究起来,上面这条命令大致相当于依次执行如下三条命令: # gcc -c foo1.c -o foo1.o 在编译一个包含许多源文件的工程时,若只用一条GCC命令来完成编译是非常浪费时间的。假设项目中有100个源文件需要编译,并且每个源文件中都包含10000行代码,如果像上面那样仅用一条GCC命令来完成编译工作,那么GCC需要将每个源文件都重新编译一遍,然后再全部连接起来。很显然,这样浪费的时间相当多,尤其是当用户只是修改了其中某一个文件的时候,完全没有必要将每个文件都重新编译一遍,因为很多已经生成的目标文件是不会改变的。要解决这个问题,关键是要灵活运用GCC,同时还要借助像Make这样的工具。 警告提示功能 GCC包含完整的出错检查和警告提示功能,它们可以帮助Linux程序员写出更加专业和优美的代码。 ◆main函数的返回值被声明为void,但实际上应该是int; ◆使用了GNU语法扩展,即使用long long来声明64位整数,不符合ANSI/ISO C语言标准; ◆main函数在终止前没有调用return语句。 清单2:illcode.c #include <stdio.h> 下面来看看GCC是如何帮助程序员来发现这些错误的。当GCC在编译不符合ANSI/ISO C语言标准的源代码时,如果加上了-pedantic选项,那么使用了扩展语法的地方将产生相应的警告信息: #gcc -pedantic illcode.c -o illcode 需要注意的是,-pedantic编译选项并不能保证被编译程序与ANSI/ISO C标准的完全兼容,它仅仅只能用来帮助Linux程序员离这个目标越来越近。或者换句话说,-pedantic选项能够帮助程序员发现一些不符合ANSI/ISO C标准的代码,但不是全部,事实上只有ANSI/ISO C语言标准中要求进行编译器诊断的那些情况,才有可能被GCC发现并提出警告。 除了-pedantic之外,GCC还有一些其它编译选项也能够产生有用的警告信息。这些选项大多以-W开头,其中最有价值的当数-Wall了,使用它能够使GCC产生尽可能多的警告信息: #gcc -Wall illcode.c -o illcode GCC给出的警告信息虽然从严格意义上说不能算作是错误,但却很可能成为错误的栖身之所。一个优秀的Linux程序员应该尽量避免产生警告信息,使自己的代码始终保持简洁、优美和健壮的特性。 在处理警告方面,另一个常用的编译选项是-Werror,它要求GCC将所有的警告当成错误进行处理,这在使用自动编译工具(如Make等)时非常有用。如果编译时带上-Werror选项,那么GCC会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改。只有当相应的警告信息消除时,才可能将编译过程继续朝前推进。执行情况如下: #gcc -Wall -Werror illcode.c -o illcode 对Linux程序员来讲,GCC给出的警告信息是很有价值的,它们不仅可以帮助程序员写出更加健壮的程序,而且还是跟踪和调试程序的有力工具。建议在用GCC编译源代码时始终带上-Wall选项,并把它逐渐培养成为一种习惯,这对找出常见的隐式编程错误很有帮助。 库依赖 在Linux下开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助一个或多个函数库的支持才能够完成相应的功能。从程序员的角度看,函数库实际上就是一些头文件(.h)和库文件(.so或者.a)的集合。虽然Linux下的大多数函数都默认将头文件放到/usr/include/目录下,而库文件则放到/usr/lib/目录下,但并不是所有的情况都是这样。正因如此,GCC在编译时必须有自己的办法来查找所需要的头文件和库文件。 GCC采用搜索目录的办法来查找所需要的文件,-I选项可以向GCC的头文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/include/目录下有编译时所需要的头文件,为了让GCC能够顺利地找到它们,就可以使用-I选项: #gcc foo.c -I /home/xiaowp/include -o foo 同样,如果使用了不在标准位置的库文件,那么可以通过-L选项向GCC的库文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so,为了让GCC能够顺利地找到它,可以使用下面的命令: # gcc foo.c -L /home/xiaowp/lib -lfoo -o foo 值得好好解释一下的是-l选项,它指示GCC去连接库文件libfoo.so。Linux下的库文件在命名时有一个约定,那就是应该以lib三个字母开头,由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时可以省去lib三个字母,也就是说GCC在对-lfoo进行处理时,会自动去链接名为libfoo.so的文件。 Linux下的库文件分为两大类分别是动态链接库(通常以.so结尾)和静态链接库(通常以.a结尾),两者的差别仅在程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。默认情况下,GCC在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库,如果需要的话可以在编译时加上-static选项,强制使用静态链接库。例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so和libfoo.a,为了让GCC在链接时只用到静态链接库,可以使用下面的命令: #gcc foo.c -L /home/xiaowp/lib -static -lfoo -o foo 2006/8/20 UNICODE与ANSI互换UNICODE转换成ANSI串:
int WideCharToMultiByte (UINT CodePage,DWORD dwFlags,LPCWSTR lpWideCharStr,int cchWideChar,LPSTR lpMultiByteStr,int cbMultiByte,LPCSTR lpDefaultChar,LPBOOL lpUsedDefaultChar ); 以下是参数解释:
CodePage Unicode字符转换成的代码页。你可以传递CP_ACP来使用当前的ANSI代码页。代码页是256个字符集。字符 0——127与ANSI编码一样。字符128——255与ANSI字符不同,它可以包含图形字符或者读音符号。每一种语言或地区都有其自己的代码页,所以使用正确的代码页对于正确地显示重音字符很重要。 dwFlags dwFlags 确定Windows如何处理“复合” Unicode字符,它是一种后面带读音符号的字符。如è就是一个复合字符。如果这些字符在CodePage参数指定的代码页中,不会出什么事。否则,Windows必须对之进行转换。 传递WC_COMPOSITECHECK使得这个API检查非映射复合字符。 传递WC_SEPCHARS使得Windows将字符分为两段,即字符加读音,如e`。 传递WC_DISCARDNS使得Windows丢弃读音符号。 传递WC_DEFAULTCHAR使得Windows用lpDefaultChar参数中说明的缺省字符替代复合字符。 缺省行为是WC_SEPCHARS。 lpWideCharStr 要转换的Unicode串。 cchWideChar lpWideCharStr在Unicode 字符中的长度。通常传递-1,表示这个串是以0x00结尾。 lpMultiByteStr 接受转换的串的字符缓冲 cbMultiByte lpMultiByteStr的字节大小。 lpDefaultChar 可选——当dwFlags包含WC_COMPOSITECHECK | WC_DEFAULTCHAR并且某个Unicode字符不能被映射到同等的ANSI串时所传递的一个单字符ANSI串,包含被插入的“缺省”字符。可以传递NULL,让API使用系统缺省字符(一种写法是一个问号)。 lpUsedDefaultChar 可选——指向BOOL类型的一个指针,设置它来表示是否缺省字符曾被插入ANSI串。可以传递NULL来忽略这个参数。 ANSI串转换成UNICODE: int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar); 以下是参数解释:
uCodePage参数用于标识一个与多字节字符串相关的代码页号。
dwFlags参数用于设定另一个控件,它可以用重音符号之类的区分标记来影响字符。这些标志通常并不使用,而在dwFlags参数
中则传递0。 lpMultiByteStr参数用于设定要转换的字符串。
cchMultiByte参数用于指明该字符串的长度(按字节计算)。如果你为cchMultiByte参数传递-1,那么该函数用于确定源字符串的长度。
转换后产生的Unicode版本字符串将被写入内存中的缓存,其地址由lpWideCharStr参数指定。你必须在cchWideChar参数中设定该缓存的最大值(以字符为计量单位)。
如果你调用MultiByteToWideChar,给cchWideChar参数传递0,那么该参数将不执行字符串的转换,而是返回为使转换取得成功所需要的缓存的值。
将多字节字符串转换成Unicode等价字符串: 1、调用MultiByteToWideChar函数,为pWideCharStr参数传递NULL,为cchWideChar 参数传递0。 2、分配足够的内存块,用于存放转换后的Unicode字符串。该内存块的大小值由前面的对MultByteToWideChar的调用返回。 3、再次调用MultiByteToWideChar,这次将缓存的地址作为pWideCharStr参数来传递,并传递第一次调用MultiByteToWideChar时返回的缓存大小值,作为cchWidechar参数。 4、使用转换后的字符串。 5、释放Unicode字符串占用的内存块。 2006/8/17 很喜欢的两首曲《天睿灵韵》
月冷千山,寒江自碧,只影向谁去? 万丈冰崖,雪莲花落,片片如星雨。 听谁,露咽箫管,十指苔生,寥落吹新曲。 人影肥瘦,玉蟾圆缺,昆仑千秋雪。 斜斟北斗,细饮银河,共我醉明月。 奈何二夜春风,心如桑叶,又是花开时节。 《刹那芳华》 朝露昙花,咫尺天涯 人道是黄河十曲,毕竟东流去 八千年玉老,一夜枯荣 问苍天此生何必 昨夜风吹处,落英听谁细数 九万里苍穹,御风弄影,谁人与共 千秋北斗,瑶宫寒苦,不若神仙眷侣 百年江湖 7+1荣7+1耻以更新博客为荣,以不写日志为耻
以请客吃饭为荣,以曾吃曾喝为耻 以给自由球为荣,以作球毁位为耻 以随叫随到为荣,以有事推托为耻 以争做司机为荣,以抢副驾驶为耻 以百迈以上为荣,以百迈以下为耻 以有福同享为荣,以有难同当为耻 以玩弄感情为荣,以相信爱情为耻 Fibonacci数列的疑问 《计算机程序设计艺术》开篇就有一个关于Fibonacci的证明题,高德纳给的数列从0开始,而一般人们说的时候都从1开始。当然这个问题本来无关紧要,但如果数列从1开始,那么书中的证明就有错了,我相信高德纳不会犯这种低级错误的。所以四处验证,究竟Fibonacci数列是什么,想找其数学定义,未果,只有一段文字描述,“而从第三项起,每一项是之前两项之和,则称该数列为斐波那契数列。”从这个文字定义看来这是个很不严谨的数列,也不是从1开始,也不是从0开始,我完全可以从任意数开始,-4 3 -1 2 1 3 4 7 11 18 29,这个数列也符合上面的定义,它也能称为Fibonacci数列么?
而且Fibonacci数列有一个通项公式
(n为正整数),按照这个公式计算,U1=1,不是0。 那么Fibonacci数列到底是什么,0 1 1 2 3 5?1 1 2 3 5 8?3 5 8 13 21 34?-4 3 -1 2 1 3?混乱了,谁有准确的定义给我一个。
后来仔细推敲了一下,书中的描述也没错,我想是中文的歧义造成的,当然也可能是我吃饱了撑的造成的。不过我还是想找找有没有这个数列的数学定义。 2006/8/13 爱人者人恒爱之,敬人者人恒敬之。懂得关怀获得朋友,懂得放心获得轻松。
一个普通的朋友从未看过你哭泣。一个真正的朋友有双肩让你的泪水湿。 一个普通的朋友不知道你父母的姓氏。一个真正的朋友有他们的电话在通讯簿上。 一个普通的朋友会带瓶葡萄酒参加你的派对。一个真正的朋友会早点来帮你准备,为了帮你打扫而晚点走。 一个普通的朋友讨厌你在他睡了后打来。一个真正的朋友会问为什么现在才打来。 一个普通的朋友找你谈论你的困扰。一个真正的朋友找你解决你的困扰。 一个普通的朋友对你的罗曼史感到好奇。一个真正的朋友可以威胁你说出来 一个普通的朋友在拜访时,像一个客人一样。一个真正的朋友会打开冰箱自己拿东西。 一个普通的朋友在吵架后就认为友谊已经结束。一个真正的朋友明白当你们还没打过架就不叫真正的友谊。 一个普通的朋友期望你永远在他身边陪他。一个真正的朋友期望他能永远陪在你身旁 ! 朋友, 不一定合情合理,但一定知心知意; 不一定形影不离,但一定心心相惜; 不一定锦上添花,但一定雪中送炭; 不一定常联络,但总放在心上! 2006/8/11 15号 细雨朦胧,昨天晚上我带着强烈的期盼走进西单图书大厦东面的胡同内,寻找那传说中的大红灯笼,在我经过了一个又一个大红灯笼之后,总算看见了两个小红灯笼,上面印有“15号院”。门面很小,进院一看,好家伙,人山人海,进进出出,热闹非凡,好一派繁荣景象,满眼望去,全是服务生,可惜全是男的。在院门口的墙壁上贴了好多小纸条,都是食客留下的赞美之词,好像还有外国人,脑中顿时闪现出“雕刻时光”。进入院内有三间房,两大一小,好像“怡家花园”,旁边还有个临时搭建的玻璃班房,里面整齐的排列着四个烤架。这里除了烤鸡翅就是烤馒头片,我俩坐在一间大屋,有一拨聚会的十几个人挤在屋里三分之一的位置。另外三分之二的部分只有我俩,看上去很不协调,好像我欺负他们一样。屋内环境很差,脏了吧唧,屋外环境更差。我点了传说中味道最好十串的微辣和四个馒头片,说实在的鸡翅我没吃出什么不同,就是比其他地方的稍微甜点儿,不如酷爱的鸡翅好吃。馒头片倒是不错,刷的红红的,服务员说是酱豆腐,我觉得那就是烤鸭酱。没吃出什么新鲜,就是为了满足强烈的好奇心而已,我想这里的食客大部分都是慕名而来的,真不知道是老板市场做得好,还是老板真的运气好。
回家路上外面下着大雨,我把两边的车窗都打开,FM91.5播放着齐秦的《狼》,雨声、车声混在一起,我只能把音量调到最大,我左躲右闪的在大货车之间穿行。刚在长椿街被一个凸井很严重的托底,旁边有辆索纳塔被托之后方向盘打不动了,司机正坐在雨中郁闷呢。我心想我的方向盘现在要突然锁死了,我就算身归那世去了,想起来突然很兴奋。一路兴奋到家,什么都没发生。 2006/8/10 C++字符串完全指引 所有的string类都是以C-style字符串为基础的。有三种编码模式:单字节字符集(SBCS:single-byte character set)、双字节字符集(DBCS)、宽字符(Unicode)。前两者用char类型操作,Unicode用wchar_t类型,字符串常量前用L或者_T表示。 wchar_t wch = L''1''; // 2 bytes wchar_t* wsz = L"Hello"; // 12 bytes, 6 wide characters 表1.SBCS在内存中的存储形式
表2.Unicode在内存中的存储形式
strcpy(), sprintf(), atoll()等。这些字符串只应该用来处理单字节字符字符串。标准库也提供了仅适用于Unicode类型字符串的函数,比如wcscpy(), swprintf(), wtol()等。微软还在它的CRT(C runtime library)中增加了操作DBCS字符串的版本。Str***()函数都有对应名字的DBCS版本_mbs***()。如果你料到可能会遇到DBCS字符串(如果你的软件会被安装在使用DBCS编码的国家,如中国,日本等,你就可能会),你应该使用_mbs***()函数,因为他们也可以处理SBCS字符串。 根据存储形式的不同,在处理不同类型字符串时应选择合适的处理函数。用表2的结构来举例,因为x86CPU是little-endian,值0x0042在内存中的存储形式是42 00。你能看出如果这个字符串被传给strlen()函数会出现什么问题吗?它将先看到第一个字节42,然后是00,而00是字符串结束的标志,于是strlen()将会返回1。如果把"Bob"传给wcslen(),将会得出更坏的结果。wcslen()将会先看到0x6f42,然后是0x0062,然后一直读到你的缓冲区的末尾,直到发现00 00结束标志或者引起了GPF*。所以在便利字符串的时候不要用++或者--,应用和字符串类型相匹配的函数。
在Win32 API中定义了很多宏,用来自动匹配字符串的类型,是MBCS,还是Unicode。比如: SetWindowText() #ifdef UNICODE #define SetWindowText SetWindowTextW #else #define SetWindowText SetWindowTextA #endif TCHAR #ifdef UNICODE typedef wchar_t TCHAR; #else typedef char TCHAR; #endif 表3.字符串的typedefs
表4.OLECHAR相关的typedefs
表5.包围字符串和字符常量的宏定义
表6.BSTR在内存中的存储形式
表7.各字符串类型间转换表
参考《C++字符串完全指引》,作者:Michael Dunn ---------------------------------------------------------------------------------------- *GPF(General Protection Failure即一般保护性错误。当Windows中某个应用程序对不正确的内存段进行了读写操作,导致堆栈充满溢出时,Windows就会出现GPF一般保护性错误。有时系统会提示错误信息,并要求选择Close或Ignore,选Close,系统会给出一些错误信息关闭发生GPF故障的程序,选Ignore时应用程序会继续运行,但不管选哪一项,此时的系统很不稳定。还有一种情况就是发生GPF错误时,系统连提示“out of memory”的机会都没有了,只能重新启动计算机。GPF有很大的破坏作用,能导致未存盘的文件全部丢失。 滚动签名凤凰涅磐、浴火重生
云卷云舒、变化万千
不能自制、大业难成
卧薪尝胆、后积勃发
上善若水、包容万物
闹中取静、波澜不惊
万籁俱寂、心斯忧愁
千般痛苦、终归尘土
长路漫漫、我心悠然
生于忧患、死于安乐
冷眼观潮、笑看花落
混淆乾坤、人言可畏
鱼龙混杂、混水摸鱼
人心冷暖、世态炎凉
悲欢离合、嬉笑怒骂
顺其自然、因果循环
侠肝义胆、古道热肠
静如处子、动如脱兔
天地正气、皓月当空
滴水之恩、涌泉相报
读书万卷、不求甚解
人浮于世、弹指一挥
恃才自傲、目空一切
灯红酒绿、歌舞升平
脱胎换骨、点石成金
海枯石烂、昙花一现
笑傲江湖、游戏人生
大勇若怯、大智若愚
趋炎附势、唯利是图
生不带来、死不带去
有则改之、无则加勉 2006/8/2 好的更需要改变 自从胖子走后,我每天都会吃一个可爱多。自从胖子走后,每天晚上我都会和韩啸切盘星际。不知道为啥,祝巴西愉快。
今早看到这个新样式,msn spaces变成了live spaces,新样式我还算喜欢,可惜老传统还没能丢,打开仍旧很慢。还有上面那个广告banner太大了,我不喜欢大脑门儿。但是终于去掉了右面的帮助菜单,这页面看起来就和谐多了。
spaces在进步,我也在进步。 心太软 我很抱歉把97年的歌又拿出来强奸大家的耳朵,不过前天下班的路上听到这歌时发现和我的情况如此吻合,每一句话都吻合,流行了这么多年,除了好听没什么其他感觉,这次可算深切的体会了一把,句句钻心啊。这首歌曲的流行更让我相信,偶然都是必然和巧他妈生得,此事看来属于非常普遍的情况,只得叹息。
你总是心太软心太软。
独自一个人流泪到天亮。 你无怨无悔的爱着那个人。 我知道你根本没那么坚强。 你总是心太软心太软。
把所有问题都自己扛。 相爱总是简单相处太难。 不是你的就别再勉强。 夜深了你还不想睡。 你还在想着他吗。 你这样痴情到底累不累。 明知他不会回来安慰。 只不过想好好爱一个人。 可惜他无法给你满分。 多余的牺牲他不懂心疼。 你应该不会只想做个好人。 喔,算了吧。 就这样忘了吧该放就放。 再想也没有用。 傻傻等待他也不会回来。 你总该为自己想想未来。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|