新鲜、有趣,互联生活。令狐葱。
2007/01/30
原来国家的名字也可以这样浪漫(Z)
> > > > h.o.l.l.a.n.d.荷兰
> > >
> > > > hope our love lasts and never dies.
> > >
> > > > 希望我们的爱永恒不变
> > >
> > > > i.t.a.l.y. 意大利
> > >
> > > > trust and love you.
> > >
> > > > 我相信你和爱你
> > >
> > > > l.i.b.y.a. 利比亚
> > >
> > > > love is beautiful; you also.
> > >
> > > > 爱是美丽的 你也是
> > >
> > > > f.r.a.n.c.e. 法兰西
> > >
> > > > friendships remain and never can end.
> > >
> > > > 友谊永固
> > >
> > > > c.h.i.n.a. 中 国
> > >
> > > > come here. i need affection.
> > >
> > > > 来这 我需要爱
> > >
> > > > b.u.r.m.a . 缅甸
> > >
> > > > between us, remember me always.
> > >
> > > > 我们之间,常常记得我
> > >
> > > > n.e.p.a.l. 尼泊尔
> > >
> > > > never ever part as lovers.
> > >
> > > > 像情人一样永不分开
> > >
> > > > i.n.d.i.a. 印度
> > >
> > > > i nearly died in adoration.
> > >
> > > > 我差点在狂爱中死去
> > >
> > > > k.e.n.y.a 肯尼亚
> > >
> > > > keep everything nice, yet arousing.
> > >
> > > > 全部东西保养好来 保持趣味
> > >
> > > > C,a,n,a,d,a 加拿大
> > >
> > > > cute and naughty action that developed into attraction
> > >
> > > > 可爱和顽皮的动作建造成吸引力
> > >
> > > > k.o.r.e.a. 南韩
> > >
> > > > keep optimistic regardless of every adversity.
> > >
> > > > 虽然事与愿违 保持乐观
> > >
> > > > e.g.y.p.t. 埃及
> > >
> > > > everything's great, you pretty thing!!
> > >
> > > > 十全十美,你这漂亮的东西
> > >
> > > > m.a.n.i.l.a. 马尼拉
> > >
> > > > may all nights inspire love always.
> > >
> > > > 漫漫长夜时时刻刻感到爱
> > >
> > > > p.e.r.u. 秘鲁
> > >
> > > > phorget (forget) everyone...remember us.
> > >
> > > > 忘记全部人 记得我们
> > >
> > > > t.h.a.i.l.a.n.d. 泰国
> > >
> > > > totally happy. always in love and never dull.
> > >
> > > > 完全快乐时时刻刻蜜运中
经典面试(Z)
某销售公司要招两名助理,我很自信地抱着一堆资料去了。
公司门前已经等了很多人,每一个都意气风发。看着他们,我觉得自己条件丝毫不差,完全没理由自卑。这么想着,我气宇轩昂地排在了队伍的后面。
前面的人开始慢慢移动,轮到谁谁就把手里的入场券递给保安。保安收过撕开,人就可以进去了,像火车站进站剪票时的情景。看来这家公司招聘很严格呀!等了半个多小时,终于轮着我了,我打起精神进去。
走过一条走廊,突然出现了左右两条走廊,我正不知道该走哪条路时,看见上面有一个小小的标示: * 名牌大学本科及以上人员请走左边,其他的走右边。 * 我很高兴地向左边走去。拐过一个弯,又出现了这样的标示: * 身高一米七以上者走左边,以下者走右边。 * 我想,这公司真有趣,做法也聪明,自然而然就淘汰了一大批人。
我继续向左走去。没走几步,又有一个标示: * 外语六级以上人员请走左边,其他走右边。 * 我接着向左边走。接着标示接连出现: * 精通电脑者,请走左边,其他走右边 * ; * 表达能力强者走左边,其他走右边 * ; * 社交能力强者请走左边,其他走右边 * ; * 形象气质佳者走左边,其他走右边 * ; * 本市户口者请走左边,其他走右边 * 。我庆幸自己各方面条件都不错,一直是向左走的。
*会做假账者向右边,其他向左边。 * 我觉得这很重要,也为公司的正直诚信高兴。
我大踏步向左迈去。还没弄清楚是怎么回事,我就发现自己已经站在了繁华的大街上。
2007/01/29
JS特效――编辑任意网页
javascript:document.body.contentEditable='true'; document.designMode='on'; void 0
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);
2007/01/24
电影:秋天路――爱的痕迹
一个人无聊于是在宿舍看《秋天路》,感觉就是一韩国版的《恋之风景》。不过拍得很不错,比国内的那些所谓的大片看起来享受多了:〉
影片里几个长镜头处理的很不错,比如女主角把落叶放入小溪,然后男主角从另一各地方接到。这也是影片拍摄手法的一个显著特点,那就是时空交错。虽然时间上感觉杂乱无章,但是却让观众看得很明白。我想着应该就是电影节的"以用户为中心的设计"了吧:〉记得《疯狂的石头》导演宁浩曾经说过:不要低估观众的智商。很经典的一句话。
还有一个长镜头,就是男主角站在崖边然后镜头逐渐进入到一张照片中。至少可以肯定的是图像处理做得很成功:〉(真是三句话离不了本行)
最后推荐一下林嘉欣的歌曲《恋之风景》,也是同名电影的主题曲。
好不容易走你走过的楼梯
玩你玩过的游戏
做你没做完的事
这条路我也觉得好熟悉
所以我有理由怀疑
你住过这里
如果思念能随时间累积
创造另一个天地
风景一定好美丽
我的回忆在哪里
让你代我去忘记
直到我忘了爱上过你
我才拿出来温习
你的回忆在哪里
让我为你好好收集
那已经成为我唯一活下去的动力
有点可惜回到了你的过去
找不到我的影子
闻不到你的呼吸
这些人有些暧昧的痕迹
和你有过甚么关系
你认不认识
如果思念能随时间累积
创造另一个天地
风景一定好美丽
我的回忆在哪里
让你代我去忘记
直到我忘了爱上过你
我才拿出来温习
你的回忆在哪里
让我为你好好收集
那已经成为我唯一活下去的动力
恋爱的风景过去比现在还要拥挤
我在这里你在哪里没关系
我的回忆在哪里
让你代我去忘记
直到我忘了爱上过你
我才拿出来温习
你的回忆在哪里
让我为你好好收集
那已经成为我唯一活下去的动力
2007/01/23
鸡生蛋还是蛋生鸡
GNU 工程 开始於一九八四年,旨在发展一个类似 Unix ,且为 自由软件 的完整操作系统: GNU 系统。(GNU 是由"GNU's Not Unix"所递回定义出的首字母缩写语;它的发音为"guh-NEW")。各种使用 Linux 作为内核的 GNU 操作系统正被广泛地使用著;虽然这些系统通常被称作为"Linux",但是它们应该更精确地被称为 GNU/Linux 系统。
2007/01/22
读书:Don't Make Me Think
2007/01/21
2007/01/20
解决金山词霸和卡巴斯基冲突问题
2007/01/16
未来的互联网成功者
下一个MySpace――Blue Dot(Bluedot.us):
一位投资者曾经这样评价Blue Dot,"从Blue Dot身上,我看到了电子邮件和即时信息工具的影子,它有可能会成为第三代通信工具。"当用户在网页上发现自己感兴趣的内容时,只需点击屏幕上的一个蓝点,就可以将其保存下来,并与好友共享。
下一个YouTube――Loopt(Loopt.com):
有一天,21岁的斯坦福大学学生萨姆・阿尔特曼(Sam Altman)在计算机课结束时希望与好友共进午餐。他说:"当时我想,如果能通过手机看到每个人的位置就太好了。"他随后就开始编写软件,实现了这一功能,并获得了500万美元的风险投资。通过Loopt,手机每15分钟就会向手机基站或卫星发送特定指令,从而确定自己的准确位置。手机所有者可以同好友的手机或计算机共享位置信息, 每月只需交纳2.99美元的费用。
下一个iTunes――Pandora(Pandora.com):
在加州奥克兰的一间办公室里,很多音乐家都头戴耳机,正通过计算机分析歌曲。他们正在对音乐做有史以来最全面的分析,这一项目名为"音乐基因工程"。对于每一首歌曲,他们都会分析数百个细节,包括音调、节奏和歌词等等。通过Pandora网站,用户只需提交自己最喜欢的歌曲或艺人名称,就可以找到最相似的歌曲,并像广播电台一样播放。这项服务完全免费,主要通过广告获得营收。到目前为止,Pandora已经拥有400万名听众。
下一个Google――Powerset(Powerset.com):
巴尔尼・佩尔(Barney Pell)一直希望实现打造自然语言搜索引擎的梦想。他表示,当前的很多搜索产品,如Google或雅虎的搜索引擎,只能搜索关键字,而不能理解"为孩子 写的书"、"孩子写的书"、以及"关于孩子的书"之间的区别。自然语言搜索引擎则可以有效地区分"功能"词汇,从而能提供更加准确、有用的搜索结果。今年 38岁的佩尔认为,即将推出的Powerset搜索引擎将成为语义网络的催化剂。
下一个Craigslist――Yelp(Yelp.com):
Yelp的主要功能是邀请用户就所有事 物,如本地餐馆、商店和医生等等发表评论,并与他人共享。Yelp员工、今年26岁的鲍勃・古德森 (Bob Goodson)表示:"Yelp借助了'口口相传'的力量,并通过互联网将这一力量放大。"最新数据显示,Yelp上月的访问者人数达到了160万。 Yelp计划在美国28个城市开展业务,并可能进军英国市场。 (来源: 搜狐IT)
2007/01/15
2007/01/14
可变参数的使用(C++和C#实现)
//C++ 中的可变参数使用
#include <stdio.h>
#include <stdarg.h>
int OpenFileArray(FILE ***array, char *mode, char *filename, ...)
{
char *pName = NULL;
int nrFiles = 0;
int arrayIndex = 0 ;
if (filename == NULL) {
return 0;
}
//在参数表中创建一个索引使用的typedef
va_list listIndex;
//在参数表中初始化第一个参数索引的宏
va_start(listIndex, filename );
do {
nrFiles++;
//得到参数表中下一参数的宏
pName = va_arg(listIndex, char *);
} while (pName != NULL);
*array = new FILE*[nrFiles + 1];
//open files
pName = filename;
va_start(listIndex, filename);
do {
if (!((*array)[arrayIndex++] = fopen(pName, mode ))) {
(*array)[arrayIndex - 1] = NULL;
return 0;
}
printf("Had open file : %s\n" , pName);
pName = va_arg(listIndex, char *);
} while (pName != NULL); //有问题
(*array)[arrayIndex ] = NULL;
return 1;
}
void main(void )
{
FILE **array;
int fp = OpenFileArray(&array, "r", "1.txt", "2.txt", "3.txt" );
if (fp == 1) {
printf ("\nopen file successfully!\n");
}
//close the files
int i = 0;
while (array[i] != NULL) {
fclose(array [i++]);
}
delete []array;
}
//C#中的可变参数使用
//如果不用params 关键字,则参数调用的时候需要使用 new object[] {arg1, arg2}
class Program
{
public static int SumWithVariableParams(params int[] args)
{
int sum = 0;
for (int i = 0; i < args.Length; i++)
{
sum += args[i];
}
return sum;
}
static void Main(string [] args)
{
System.Console.WriteLine("sum(1, 2, 3, 4, 5) = " + (SumWithVariableParams( 1, 2, 3, 4, 5)).ToString());
System.Console.WriteLine("sum(33, 22) = " + (SumWithVariableParams(33 , 22)).ToString());
System.Console.ReadLine();
}
}
语言特有的类型名及对应的CLR类型名
| C# | VB | C++ | CLR |
| sbyte | SByte | char | SByte |
| byte | Byte | unsigned char | Byte |
| short | Short | short | Int16 |
| ushort | UInt16 | unsigned short | UInt16 |
| int | Integer | int | Int32 |
| uint | UInt32 | unsigned int | UInt32 |
| long | Long | __int64 | Int64 |
| ulong | UInt64 | unsigned __int64 | UInt64 |
| float | Single | float | Single |
| double | Double | double | Double |
| bool | Boolean | bool | Boolean |
| char | Char | wchar_r | Char |
| string | String | String | String |
| object | Object | Object | Object |
2007/01/13
C++高效编程笔记2:struct中的字节对齐
#include <iostream.h>
struct A {
char a; long b; char c; long d;
};
struct B {
char a; char c; long b; long d;
};
#pragma pack(push, 1)
struct C {
char a; long b; char c; long d;
};
#pragma pack(pop)
struct D {
char *a; char *b;
};
//使用比特域的结构
struct BitField {
unsigned a1 : 11; //long 1
unsigned a2 : 11;
unsigned b1 : 10;
unsigned a3 : 11; //long 2
unsigned a4 : 11;
unsigned b2 : 10;
};
void main(void)
{
cout << "Size of A : " << sizeof(A) << "bytes" << endl;
cout << "Size of B : " << sizeof(B) << "bytes" << endl;
cout << "Size of C : " << sizeof(C) << "bytes" << endl;
cout << "Size of D : " << sizeof(D) << "bytes" << endl;
cout << "Size of BitField : " << sizeof(BitField) << "bytes" << endl;
}
运行结果:
Size of A : 16bytes
Size of B : 12bytes
Size of C : 10bytes
Size of D : 8bytes
Size of BitField : 8bytes
A、B、C之所以不一样是因为字节对齐的问题。#pragma pack(push, 1)指令可以让编译器暂时调整对齐,设置为1字节。
另外注意,char * 一般占4字节。
2007/01/12
C++高效编程:阅读笔记1
在这本书的最后一章提到算法的陷阱的时候举了几个例子,记下两个。
1. 循环计数的覆盖
如果把1加到数值为255的字节上,该字节就会变为0。
unsigned char i;for (i = 0; i < 256; i++) {
cout << "test" << (int)i << endl;
}
这就会出现一个死循环了,因为255之后再加一就又为0了。
2. 数组和继承的混用
#include <iostream.h>
class AverageJoe
{
public:
long id;
};
class JetSet : public AverageJoe
{
public:
long VIP;
};
void setId(AverageJoe *person, long index, long number) {
person[index].id = number;
}
void main(void) {
JetSet vips[40];
for (int i = 0; i < 40; i++) {
vips[i].VIP = 1;
}
setId(vips, 1, 0);
if (1 == vips[0].VIP) {
cout << "VIP!!!" << endl;
} else {
cout << "Not Vip." << endl;
}
//test
cout << "Test : \n" << "vips[1].id :" << vips[1].id << endl;
cout << "vips[0].VIP :" << vips[0].VIP << endl;
}
类AverageJoe 的大小为4字节,而JetSet 为8字节,调用函数setId的时候指针按照AverageJoe 的大小操作,每次移动4字节。
修改方案:把setId函数定义为基类的成员函数。
VC中_beginthread 使用错误
在VC++ 6.0 中使用_beginthread 和 _endthread 的时候,出现如下错误:
error C2065: '_beginthread' : undeclared identifier
error C2065: '_endthread' : undeclared identifier
解决方案:
debug状态:settings->C/C++->Project Options中加入/MDd
release状态:settings->C/C++->Project Options中加入/MD
如果还不行,可以修改以下选项:
project->settings->c/c++->code generation->multithread