2009年2月27日星期五

Best Computer Programming Videos

转自:http://www.devtopics.com/best-computer-programming-videos/

We interrupt your regular programming to bring you these entertaining computer programming videos…

If Programmers Built Planes

 

First Fully-Automated Plane Flown by a Computer

We know what happens when we let computers control our lives!

 

Why Programmers Don’t Have Girlfriends

 

Frustrated Programmer

 

Java Programmer Time Lapse

This is what Java (the programming language) and java (the coffee) do to computer programmers:

 

Software Crash on Game Show

This is a clip from the German version of “Who Wants To Be A Millionaire?” The software malfunctions and starts blinking the correct answer to the question.

 

How to Deal with a Programmer

When you need to get a programmer’s attention:

 

Programmer Gone Insane

Warning: Cartoon violence.

 

Dev Life Hip-Hop Music Video

 

Coder Blues

 

Hug a Developer Today

 

Code Monkey

This is a music video about the life of the common lowlands code monkey.


Best Computer Programming Videos

Posted using ShareThis

The Prime Number Shitting Bear



http://alpha61.com/primenumbershittingbear/

2009年2月8日星期日

$150 has been comsumed!

本以为拖上一段时间MSECompany里的东西就会有所更新,结果让人失望,索性我还是有中意的产品,于是还是买了先。
在购买前也斟酌了很久,在Google里搜索到的资料也仅限于《Victorinox Swiss Army Base Camp — Only MVP (http://goxia.maytide.net/read.php/1027.htm)》 。

我个人认为这是一款限量版,因为是定制的,所以不可能量多,而且购买的人仅限于MS的员工以及合作伙伴等,也就是当赠品,MS是大公司是真的,但价值并不在MS身上,或者显得有点掉价,Swiss Army的东西是出了名的精品,手表虽然不比劳力士、浪琴等享有盛誉,但也是顶尖的牌子吧。起码他们的刀具经久不衰。

上次在Open day上特意看了马宁手上的那款手表,据说就是这款,可怎么当时觉得无比单薄,就像是地摊货,但今天拿在手上,还是挺有分量的,看来可能有所出入,下次见面的时候一定要好好比较一下。

说了这么多废话,大家一定等不及了吧,gOxiA的图片怕是手机拍的,不是很清晰,也让我晕了很久,既然已经到手了,就给大家上几张清晰靓丽的照片。












另外这款是鼠标,Wireless Laser Mouse 6000 EN/FN/E,是Made in China的,真是绕了一个地球的产品,去了一趟美国又飞回来了。这款手表的内部报价是$20美金,而大陆市场上盒装是在499左右,官方推荐价格是¥599,还是比较超值的。原本打算为自己购置一个摄像头,后来考虑到$20美金的摄像头那里只有一两款,而且它们在大陆的售价却只有三百多,觉得有亏了的感觉,而且平时也没人跟我视频,还是以后找个MM再买个高清的,$20的MS摄像头,也是最低档次的了。对了,这款鼠标在淘宝的工包价格却是低的可以,一百多两百就能够搞到手了,不知道货品正不正。其实鼠标对我也是多余,因为我手头也是一个Wireless Notebook Laser Mouse 6000,不过是淘宝的工包货,不过当时买的时候刚上市,好像是¥299买的。




2009年1月23日星期五

利用Windows Mobile系统和Microsoft Outlook群发手机短信

又到了一年的春节,每年的这时候总要给亲朋好友发送祝福短信。现在朋友一圈又一圈的,从小朋友到大朋友,几乎都是手机用户。打开手机,号码少说也有一百来个,这可给群发带来了不少难题:
1、以前用过的手机有群发人数限制,人一多,就难免出错,而且有的手机不好操作,或者你压根就不怎么发短信,边看春节晚会边发短信经常让你冒汗,而且时不时还收到别人的短信,有的手机干脆在这时候回到初始画面,让你功亏一篑。
2、有的手机,不具备群发功能,或者群发功能需要反复选取联系人列表,对于性能略差的低端手机以及那些操作步骤较为繁琐的手机,这种操作无疑要人吐血,而且除夕的网络忙现象始终没能很好解决,有的手机干脆不保留任何痕迹,让你从头来过,最后很多人只好放弃。
3、手机质量让人堪忧,不少手机已经年迈失修,经常死机跳闸,对这种性能消耗较高的情况来说,失败率直耸云天。
现在使用智能手机的朋友越来越多了,就市占率来说,Windows Mobile当然是首屈一指的。不过很遗憾的是,其实Windows Mobile 6(哪怕只是部分版本)的群发功能十分薄弱,具体表现为需要反复点选收件人,并从联系人中选择,更吐血的是,再次选择的时候需要从头开始选,假设有一百人,那么这个拉动滚动条的感觉就绝对像是100!(100的阶乘)。
虽然群发功能很薄弱,但是始终支持群发功能。使用Windows Mobile的用户大部分都安装了Microsoft Outlook用来同步数据,也就是你的联系人信息在PC端会有一个一样的拷贝。相比对着几寸的小尺寸屏幕操作慢悠悠的手机,操作电脑可谓是方便快捷了。下面就教你几步来让你疯狂群发短信。(如果你下一年的交际圈没有拓宽的话,今年的列表仍然可以继续使用!非常方便)

原理
这里用“原理”二字,显得有点过了,这里只是一个基本思路的概括。首先Windows Mobile系统群发短信的时候,只需要在收件人中包含下面格式的手机号码即可:
13912345678;13812345678;……
也就是多个手机号码用分号分隔。所以我们只需要将所有的联系人的手机号码转换成以上形式,即可顺利发送短信了。

具体步骤
1、将手机的最新联系人信息和Microsoft Outlook同步(请确认同步构建已经勾选了同步联系人列表),现在你就可以在Microsoft Outlook中查看到最新的联系人列表了。
2、打开Microsoft Outlook,选择“文件”->“导入和导出”->“导出到文件”->下一步,选择“Microsoft Excel 97-2003”,选择导出文件夹的位置,从目录树中找到“联系人”,将文件导出为(选择一个路径,即可保存相应的联系人)


















3、打开导出的xls文件,如果没有安装Microsoft Excel的朋友,可以将其上传到Google Docs上(http://doc.google.com/该步骤可能要求你拥有Google账户,Google是全球领先的计算机搜索服务供应商)
4、找到“手机号码”一列,在右侧添加一列(在Microsoft Excel中的步骤大致为:将鼠标放置在要插入列的标题上,右键,选择“插入”,即可)。在新插入的列中,添加“;”(分号)(在Microsoft Excel中的步骤大致为:在第一行中添加一个“;”,注意是半角的!然后将鼠标移至第一格的分号处,按住键盘上的alt键,将鼠标移至第一格的右下角处,鼠标指针会变成较浓较短的十字,这时垂直拉动鼠标,并保持鼠标左键始终处于按下状态,一直到最后一行,松开鼠标,就可以发现整列都被填充了分号)

5、新开一个记事本,并将移动电话列和分号列同时选中,并复制到记事本中。我们会发现在号码和分号之间有个TAB空,没关系,复制一个TAB空,并在记事本中打开“替换”功能,在“查找内容”空格中粘帖刚才复制的TAB空格,并使“替换为”空额一无所有(连空格都别有),并点击确定,这下就可以看到所有的号码都被整理成漂亮的格式了。

6、检查一下你的号码中是否有小灵通等号码,以及一些可能是错误的号码,就可以将它保存到文本文件中,并通过我的电脑中的“移动设备”复制到手机中,这个步骤就像操作一个U盘,很是方便。

7、在手机中找到并打开相应的文件,反选文本,复制到短信的“收件人”处,并编辑好祝福短信,点击发送。就大功告成了!
注意:由于群发祝福短信可能涉及几百个号码,所以短信可能一直处于发送中的状态,不要担心,这时候你放心去看春节晚会就可以了,大概十几分钟后短信就全部发送完毕了。这个过程可能比较长,但远比一条一条发送短信要来得方便。
还犹豫什么呢?赶快购入正版Office和带有Windows徽标的智能手机吧!

2008年12月21日星期日

[转载] VC/C++的中文字符处理方式

全文下载链接(可打印,已排版,并修改若干错误)
下文为原文转载,未经任何修改:

以下为原文转载,未经任何修改:
一 引入问题
代码 wchar_t a[3]=L”中国”,编译时出错,出错信息为:数组越界。但wchar_t 是一个宽字节类型,数组a的大小应为6个字节,而两个汉字的的unicode码占4个字节,再加上一个结束符,最多6个字节,所以应该不会越界。难道是编译器出问题了?
二 解决引入问题所需的知识
主要需两方面的知识,第一个为字符尤其是汉字的编码,以及语言和工具的支持情况,第二个是vc/c++中MutiByte Charater Set 和 Wide Character Set有关内存分配的情况.
三 汉字的编码方式及在vc/c++中的处理
1.汉字编码方式的介绍
对英文字符的处理,7位ASCII码字符集中的字符即可满足使用需求,且英文字符在计算机上的输入及输出也非常简单,因此,英文字符的输入、存储、内部处理和输出都可以只用同一个编码(如ASCII码)。
而汉字是一种象形文字,字数极多(现代汉字中仅常用字就有六、七千个,总字数高达5万个以上),且字形复杂,每一个汉字都有"音、形、义"三要素,同音字、异体字也很多,这些都给汉字的的计算机处理带来了很大的困难。要在计算机中处理汉字,必须解决以下几个问题:首先是汉字的输入,即如何把结构复杂的方块汉字输入到计算机中去,这是汉字处理的关键;其次,汉字在计算机内如何表示和存储?如何与西文兼容?最后,如何将汉字的处理结果从计算机内输出?
为此,必须将汉字代码化,即对汉字进行编码。对应于上述汉字处理过程中的输入、内部处理及输出这三个主要环节,每一个汉字的编码都包括输入码、交换码、内部码和字形码。在计算机的汉字信息处理系统中,处理汉字时要进行如下的代码转换:输入码→交换码→内部码→字形码。
(1)输入码: 作用是,利用它和现有的标准西文键盘结合来输入汉字。输入码也称为外码。主要归为四类:
a) 数字编码:数字编码是用等长的数字串为汉字逐一编号,以这个编号作为汉字的输入码。例如,区位码、电报码等都属于数字编码。
b) 拼音码:拼音码是以汉字的读音为基础的输入办法。
c) 字形码:字形码是以汉字的字形结构为基础的输入编码。例如,五笔字型码(王码)。
d) 音形码:音形码是兼顾汉字的读音和字形的输入编码。
(2)交换码:用于汉字外码和内部码的交换。交换码的国家标准代号为GB2312-80。
(3)内部码:内部码是汉字在计算机内的基本表示形式,是计算机对汉字进行识别、存储、处理和传输所用的编码。内部码也是双字节编码,将国标码两个字节的最高位都置为"1",即转换成汉字的内部码。
(4)字形码:字形码是表示汉字字形信息(汉字的结构、形状、笔划等)的编码,用来实现计算机对汉字的输出(显示、打印)。
2.VC中汉字的编码方式
vc/c++正是采用了GB2312内部码作为汉字的编码方式,因此vc/c++中的各种输入输出方法,如cin/wcin,cout/wcout,scanf/wsanf,printf/wprintf...都是基于GB2312的,如果汉字的内码不是这种编码方式,那么利用上述各种方法就不会正确的解析汉字。
仔细观察ASCII字符表,从第161个字符开始,后面的字符并不经常为用户所使用,负值也未使用。GB2312编码方式充分利用这一特性,将161-255(-95~-1)之间的数值空间作为汉字的标识码。既然255-161 = 94不能满足汉字容量的要求,就将每两个字符并在一块(即一个汉字占两个字节),显然,94* 94 =8836基本上已经满足了常用汉字个数的要求。计算机处理字符时,当连续处理到两个大与160(或-95~-1)的字节时,就认为这两个字节存放了一个汉字字符。可以用下面的Demo程序来模拟vc/c++中输出汉字字符的过程。
unsigned char input[50];
cin>>input;
int flag=0;
for(int i =0 ;i < 50 ;i++)
{
if(input[i] > 0xa0 && input[i] != 0)
{
if(flag == 1)
{
cout<<"chinese character"<<endl;
flag = 0;
}
else
{
flag++;
}
}
else if(input[i] == 0)
{
break;
}
else
{
cout<<"english character"<<endl;
}
}
输入:Hello中国 (“中国”对应的GB2312内码为:214 208,185 250)
输出:english character
english character
english character
english character
english character
chinese character
chinese character
vc/c++中的英文字符仍然采用ASCII编码方式。可以设想,其他国家程序员利用vc/c++编写程序输入本国字符时,vc/c++则会采用该国的字符编码方式来处理这些字符。
问题又产生了,韩国的vc/c++程序在中国的vc/c++上运行时,如果没有相应的内码库,则对韩语字符的显示有可能出现乱码。我个人猜测,vc安装程序中应该带有不同国家的内码库,这样一来肯定会占用很大的空间。如果所有的国家使用统一的编码方式,且所有的程序设计语言和开发工具都支持这种编码方式该多好!而现实中,确实已经有这种编码方式了,且许多新的语言也都支持这种编码方式,如Java、C#等,它就是下面的Unicode编码
3.新的内码标准---Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。最新版本的 Unicode 是 2005年3月31日推出的Unicode 4.1.0 。另外,5.0 Beta已于2005年12月12日推出,以供各会员评价。
Unicode 编码系统可分为编码方式和实现方式两个层次。
编码方式:Unicode 的编码方式与 ISO 10646 的通用字符集(Universal Character Set,UCS)概念相对应,目前的用于实用的 Unicode 版本对应于 UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示 216 个字符。基本满足各种语言的使用。实际上目前版本的 Unicode 尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。
实现方式:Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对 Unicode 编码的实现方式有所不同。Unicode 的实现方式称为Unicode转换格式(Unicode Translation Format,简称为 UTF)。如,UTF-8 编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他 Unicode 字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。
Java与C#语言都是采用Unicode编码方式,在这两种语言中定义一个字符,在内存中存放的就是这个字符的两字节Unicode码。如下所示:
char a='我'; => 内存中存放的Unicode码为:25105
4.内码的相互转换
(1)vc中的实现方法
利用Windows系统提供的API:::MultiByteToWideChar::WideCharToMultiByte
::MultiByteToWideChar实现当前码到Unicode码的转换;
::WideCharToMultiByte实现Unicode码到当前码的转换;
(2)Java中的实现方法
String vcString=new String(javaString.getBytes("UTF-8"),"gb2312");
java的编码应该是UTF-8
(3)C#中的实现方法
??
四 vc中的MutiByte Charater Set 和 Wide Character Set
1.MultiByte Charater Set方式
这种方式以按字节为单位存放字符,即如果一个字符码为两字节,则在内存中占两字节,字符码为一字节,就占一字节。例如,字符串“中国abc”的编码为:中(0xd6、0xd0)、国(0xb9、0xfa)、a(0x61)、b(0x62)、c(0x63)、\0(0x00),就存为如下方式:

原始图片链接:http://p.blog.csdn.net/images/p_blog_csdn_net/fishinthewind/win_1.bmp




对应的类型,方法有:
char、scanf、printf、cin、cout …
2.Wide Character Set
这种方式是以两字节为单位存放字符,即如果一个字符码为两字节,则在内存中占四字节,字符码为一字节,就占两字节。例如,字符串“中国abc”就存为如下方式:

原始图片链接:http://p.blog.csdn.net/images/p_blog_csdn_net/fishinthewind/win_2.bmp



对应的类型,方法有:
wchar_t、wscanf、wprintf、wcin、wcout …
造成上面存储方式的根本原因在于,wchar_t类型其实是一个unsigned short 类型。如,存储上面字符串的数组的定义为:wchar_t buffer[8] 等价于unsigned short buffer[8].而所有以字母w开头的方法也都是以unsigned short类型,即两字节为单位来处理字符,因此,存储在wchar_t类型数组中的字符串无法用cout显示,只能用wcout方法来显示。
由于Unicode码也是采用两个字节,因此Wide Character Set方式能够很好的支持Unicode码的存储,但是在vc的环境下要将一个Unicode码存入两字节而不是四字节内存中,必须通过上面的API函数::MultiByteToWideChar首先,将当前的编码转换为Unicode码,然后,将每个字符的Unicode码放入每一个wchar_t类型的变量中。以下是一个实例代码:
char input[50];
cin>>input;
int size;
size=::MultiByteToWideChar(CP_ACP,0,input,strlen(input)+1,NULL,0);
if(size==0)
return -1;
wchar_t *widebuff=new wchar_t[size];
::MultiByteToWideChar(CP_ACP,0,input,strlen(input)+1,widebuff,size);
输入:中国abc
Debug断点调试:
size==6
数组widebuff[0-size]占12字节,存放了6个字符的Unicode码,码值为:
中(0x4e2d) 国(0x56fd) a(0x0061) b(0x0062) c(0x0063) d(0x0000)
这时,数组的大小size等于输入的字符个数加上一个结束符,符合我们的想象。
五 引入问题的错误分析
(1) 没有理解编译器中的编码方式
虽然vc/c++中汉字的编码占两个字节,但并不是Unicode码,是GB2312码。
(2) 没有理解MutiByte Charater Set 和 Wide Character Set的存储原则;
在vc/c++中,“中国”按char[5]来对待,而wchar_t a[3]实际上是三个unsigned short类型的变量,因此赋值时会越界。

2008年10月16日星期四

Received the MSDN Subscription compast disks

I have received the MSDN Subscriptions from the Beijing filiale of Microsoft in Oct 17, 2008. It's a large bag!It contains a lots of Microsoft products. Oh, I have nothing to say......! :) -_-"
Posted by Picasa

2008年9月17日星期三

微软关系搜索——人立方,垂直个性搜索

什么是人立方?
微软人立方关系搜索是由微软亚洲研究院网络搜索与挖掘组研发的对象级别(object-level)互联网搜索引擎
人立方关系搜索从超过十亿的中文网页中自动的抽取出人名、地名、机构名以及中文短语,并且通过算法自动的计算出它们之间存在关系的可能性;同时,人立方关系搜索还索引了支持它们之间关系的网页文字。此外,人立方关系搜索还自动的找出人名之间最可能的关系描述词、与人名最可能相关的称呼、作品等词条等。人立方关系搜索从这些中文网页中自动的辨别出人名所对应的人物简介文字,并且按照这些文字是人物简介的可能性进行排序。
当用户给定任意搜索关键词,它能够找出与关键词最可能相关的人名、地名和机构名,并且根据它们与关键词之间的相关度排序。除此之外,人立方关系搜索还提供基于人名的新闻浏览功能,可视化关系搜索功能等。

人立方是网络名人的夺金魔方
根据人立方的“设计建造”原理,它最可能成为网络名人的搜索夺金魔方。如果一个词(比如人名)被囊括入网页的次数越多,那么他将被搜索的机会就会越多。
依此推算:
名歌影星 夺冠指数:5颗星
具备绝对的夺冠实力,无数的粉丝善于利用搜索引擎搜寻他们的记录,善于利用网络媒体八卦明星们的消息,因此通过网络搜索的结果量将是非常巨大的。
网界名人 夺冠指数:4颗星
互联网媒体成就了一批又一批的互联网精英,他们是这个载体的中坚力量,出镜率不亚于传统媒体上的明星出镜率。
历史巨人 夺冠指数:3颗星
经过千年历史的沉淀,仍然能被我们记住的历史巨人所剩无几,这些人也早已被搬上了互联网这个开放的知识海洋。

人立方的缺陷
机器的思维永远也赶不上人类的思维,搜索引擎始终也无法解决所有的问题。人立方也因此暴露出了很多严重的缺陷。
相对于名人搜索来说,许多人更希望搜索自己的社会关系,这也是关系搜索所有待解决的最主要问题。如果您所提供的搜索关键词与热门关键字相同,那么搜索结果将指向热门搜索的结果,并非你要的。


同名同姓


假设一个同志就是名叫“张三”,即便他确实在某一领域声名大噪,但要搜索到跟他自己关系最亲密的估计还是“李四”,但事实上,张三并不认识李四。



亮点技术


人性的搜索结果


同样是通过一个输入框一个按钮开始搜索的“人立方”搜索引擎提供了更符合要求的搜索结果。在“所有结果”页面,我们还可以看到“关系”、“网页”、“资讯”、“简介”等更符合个人简历特征的信息。事实上将根据不同人所具有的不同信息,在网页上会显示出更多的个性化信息,如“头衔”、“机构职务”等



关系


关系一览位于页面左侧,关系的搜索结果将返回两种类型的搜索结果,一种是文字列表方式,另一种则是最具特色的关系图方式。


文字列表方式依照关联度顺序,从上至下列出关系表。相比之下您或许会更喜欢关系图方式。



在网页右上方有“关系图”,在搜索页面的文字列表方式下方也有当前搜索关系的关系图。下图对“秦始皇”进行了搜索。想知道谁跟“她/他”关系最密切,关注人立方。



网页


网页搜索也是该搜索引擎的数据根本,因为您可能搜不到您期待的结果,网页搜索提供了传统方式的搜索结果供您自己塞选。该部分内容被放置在页面的最下方。


资讯


资讯搜索像是整合了类似于谷歌的趋势搜索的一种搜索体验。这些结果将直接呈现在搜索界面,上方的数据更显示了按时间顺序最新的一些网页搜索结果。也可以通过设定时间精确您的搜索结果。



简介、头衔、机构职务


这些根据关键字如人物、伟人、董事长、科学家等头衔或职务标记过的名字将列出这些相关网页的搜索结果,省去了您在千万网页中自己辨别的麻烦。垂直一下,更加个性,更加精准。


人立方网址


更多搜索体验,请您自己访问:http://renlifang.msra.cn/