2006年05月24日

It’s not the time to keep my step and gaze around. You know, sometimes things should be rewardful, then we can get ourselves stare at it and move forward. Just like some kinda of balance. It’s just a reward to me for my work these three years. But i know, it’s far from satisfying. So i have to keep moving, without hesitation.

One thing is clear, there’s no doubt that it’s just a beginning rather than an end.

2006年05月14日

断断续续从3月份开始到今天为止,找实习单位的事情算是告一段落。不过说起来还真的漫游戏剧性的,先是投了Kodak,然后由于种种原因,没去笔试,然后又由于种种原因,没去面试(汗。。。-_-)。然后是autodesk,总之是没投简历。然后QAD来了,听了宣讲会觉得还蛮好的,虽然是那个什么progress语言(老早都没听到过,>_<),但好像还有点意思。学点新的东西也未尝不好,也就投了一份简历。

周五QAD招聘小分队来学院开始笔试+面试。总共是一轮笔试+三轮面试。先是一个钟头的笔试,考一些基本的题目,包括各方面的东西:c,java,数据结构,数据库,网络,软工及项目管理,IQ,英文。虽然铺的蛮开的,不过深度到还好。前面的语言和数据结构部分基本不太费力就解决掉了。数据库倒是蛮烦的,倒不是说难,关键是很久不看都忘了,什么BCNF那个东西,我晕。数据库原理大二学好考好以后基本上就没碰过。虽然当年数据库原理还是优-_- 其实最寒的是英语,最后一道题目是英语作文。。。。。啊哈哈哈哈哈哈,撞我枪口上了。

中午回去吃个饭,下午等消息。笔试顺利通过,进入第一轮面试。面啊面啊,等啊等啊。nnd,我哪能是排在最后一个乃。。。晕阿。 轮到我的时候已经要3点多了,等了要2个多钟头,哎,不管来,面了再说。面试官人蛮好的,亲和力强,气氛也不错。虽然是我的处女面,不过感觉倒不是很拘谨。反正兵来将挡,水来土掩。先是自我介绍,侃之。然后问了我一些比较基本的技术问题,站的比较高,不是很细节的那种,继续侃之~ 就看见面试官一个劲的在我简历上写-_-然后就是一些比较细节的技术,问我擅长什么,我说c plus plus,然后就问我cpp和c有什么区别,具体说说,这个我熟,三下两下搞定。然后问我cpp的特点是什么,知不知道stl,说说stl的好处,举个例子说明,学了stl对对于cpp的理解有什么帮助等等,框框框框,狂说一气。然后就握手告别,出去等结果。忐忑不安阿,有那么一点点。其实还好,出来以后没什么感觉了,在进去之前倒反而紧张。过了一会,结果出来,直接进第三轮(少打一个boss,噢也),我居然是第一个,让我马上去面。。。。-_- 没什么头绪,不过好歹有了点经验了,面了再说~ 大boss出场,本来以为问题会非常之技术,不过还好,问了些cpp和java的区别之类的,总之不是很细节的技术问题,轻松搞定。btw,是全英文面试,这个有点不习惯。然后就比较轻松的话题,问问我的职业规划之类的问题。三面结束。出来以后继续没感觉,其实我到最后才知道,其他人三面都没问技术问题,只有我和最后一个三面的人(我是第一个)问了。寒~

到这个时候已经要6点了,差不多6个多钟头了,肚子饿死。在滂沱大雨中,冲到金师傅吃了碗馄饨,结果吃饭途中伞被老板借走,外面这么大雨,我反正也不用借么就借来。结果到我吃好馄饨,伞还么回来。然后等了一刻多钟,仍不见伞的踪影。 怒,斥问之,终于又过了5分钟,伞到。白白坐了20多分钟,什么事儿啊,真是的,老板给我一杯奶茶算赔罪,被我拒之。nnd,口头教育一番,闪人~

到了学院,又等了将近2个多小时,终于所有人面完。那时已经快9点了,QAD那帮人和很多老师(学院方面负责我们这次招聘活动的)还么吃饭,也真是蛮辛苦的。赞一个。说是先去吃饭,吃饭的时候和回去的路上讨论,然后发消息通知结果。就这样我回到寝室,到了差不多12点的时候,发来一个消息,给offer了。兴奋一记,把小电从床上拍下来(那厮居然已经睡了,我靠,太假了)。小电也兴奋一记,直接下床cs。。。。-_-

不管怎么样,就这样结束了我的处女笔试和处女面试。结果还算可以吧~小电昨天给我发消息说学院网站正式通告了。还说其实做erp也蛮好的,我笑笑,跟他说其实我做宠物训练师训练他也蛮好的,哈哈~玩笑玩笑。然后么要好好学习天天向上,到7月份就准备上班实习了。

2006年05月01日

为什么最近都没有评论的。。。。郁闷来

俄啊啊啊啊

发现如果很长时间没评论,评论都不显示了。T_T

明天开始5.1 vacation,不过劳动节果然还是要劳动的,看来这是没办法的事情。等忙过这阵子再说吧,自己要加油,大家都要加油。

中国男乒进决赛了,对手是韩国和中国香港的胜者,中国女乒得冠军了,七连冠了。。。。

我是意识流,想到哪里说哪里

juventus也赢了,结束连平,还有2轮,差3分,悬念还是有的。

可惜申花平了,居然在主场0-0,难道是因为我没看的关系。。。。-_-

其实这篇东西是我抱怨没评论的,其实主题就是第一句话,其实后面的字是用来凑字数的。

其实我也发现这篇东西真的很无聊

其实我要睡觉去了

好吧,明天接着奋斗

2006年04月24日

最近的生活蛮累的,基本都是晚上1、2点睡觉。忙项目,忙看书,准备实习,各种忙。累管累,但还真的蛮充实的。其实如果真的无所事事,东逛西逛的话,倒也蛮无聊的。

有压力,有deadline,有期盼,有踌躇。

不管怎么样,不要抱怨什么,累得时候听听音乐,打打游戏,然后再继续。付出多少不一定能回报多少,但是不付出是永远不会有回报的。这是等价的原则的真谛。

我爱这精彩的世界,我爱这生活,他让我感觉到力量。

就像小T说的,life is hard, but happy

exactly

so, move on…

2006年04月19日

有段时间没上blog了,正好晚上有点时间,来更新下吧;)

最近抽空忙着温习知识,为实习做准备。cpp是吃饭的家伙,必然要烂熟于心才行。所以抽空把primer的部分章节又看了一遍,把一些平时不怎么用的,快要淡出记忆的东西给找了回来。

静态常量型整形变量才能在类声明中赋初值
.H

class A
{
  public:
 int hello(int i) {return i;}
 int HookShot;
  private:
 static const int i = 10; // okay
 static int n = 5;  // wrong
 static vector<int> vec(10); // wrong
 static const float f = 1.0f; // wrong
}

.CPP

float A::f = 1.0f; // okay
vector<int> A::vec(n) // okay
vector<int> A::vec(i) // okay

函数指针不能被赋值为成员函数的地址,即使返回类型和参数表完全匹配。必须指定类类型
int (A::* pfunc) (int) = A::hello;
A a;
(a.*pfunc)(3); // 不能漏掉*,否则错误

指向成员变量的指针:
int A::* pvar = & A::HookShot; // 必须有&
cout<<a.*pvar;

指向类成员的指针语法不能被用来引用类的静态成员。静态类成员是属于该类的全局对象和函数,它们的指针是普通指针

用union来测试cpu是big_endian还是little_endian
union test
{
    int  a;
    char b;
};

bool IsLittle_Endian()
{
    union test t;
    t.a = 1;
    return (t.b == 1); // true means little_endian 0×00…1 1为低位,0为高位
}

—-2006/4/10

在类体中,后声明的成员不能被先声明的成员声明使用
在类定义中用到的名字必须在使用前首先被声明。这个规则有两种例外的情况:第一个例外是对于被用在inline 成员函数定义中的名字;第二个例外是于被用作缺省实参的名字。

用在类定义中的名字除了上述2种例外,其解析过程按照:
1、在该名字之前有否相关声明(在类域中查找)
2、如果1没有查找成功,则在类定义之前的名字空间中查找相关声明

被用在类成员函数定义中的名字的解析过程:
1 在成员函数局部域中的声明首先被考虑
2 如果在步骤1 中的解析不成功则考虑所有的类成员声明
3 如果在步骤2 中的解析不成功则考虑在成员函数定义之前的名字空间域中出现的声明

私有成员是指这样的成员,它只能在该类的成员或友元定义中被访问。除非外围类被声明为嵌套类的友元,否则它没有权利访问嵌套类的私有成员

class A
{
  public:
 static void GreetingsFromA() {cout<<"Outer";}
}

class B
{
  public:
 A obj; // this obj will be an instance of A (outer)
 class A
 {
   public:
  static void GreetingsFromA() {cout<<"Inner";}
 }
 A objobj; // this obj will be an instance of A (inner)
}
如果外围类A的名字改为别的,则A obj;这句话将会报错。
如果想要使用内部类来声明一个变量,则必须将该句声明放在内部类的声明之后。

局部类的成员通常都是public的

—-2006/4/11

派生类中如果出现和基类中名字相同的成员函数或成员变量,则在派生类中相对应的基类版本成员变量或成员函数将会不可见。除非使用类域来显式指出

之所以相同函数名的函数不能直接在基类和派生类之间重载,是因为重载函数必须都出现在同一个域中。而基类的函数属于基类的域,派生类的函数属于派生类的域

—-2006/4/12

Using 基类::函数名
在派生类的声明中添加,以此来实现派生类对基类函数的重载

如果基类和派生类都声明了一个相同名字的非虚拟函数,则通过基类指针该函数总是调用基类版本

基类中的静态成员将只有一个,无论该基类被继承多少次

友元关系不会被继承

构造函数调用顺序:
基类构造函数(如果多基类,则按照继承列表中的先后顺序)—>成员类构造函数(如果多成员类,则按照类声明中成员变量声明的先后顺序)—>派生类构造函数

析构函数调用顺序则为构造函数调用顺序的逆序

将派生类对象赋给基类对象时,派生类对象将被切除多余的部分以适应基类空间

只有使用指针或引用时,多态才发挥作用

若在类声明中在函数前指定了virtual,则virtual关键字不能再次出现在类声明之外的函数实现中

纯虚函数是这样一种虚拟函数,他只是起到一个占位符的作用,为其子类提供一个可供改写的接口,它本身并不能通过虚拟机制被调用
virtual void ForFutrueUse() = 0;

包含(或继承)一个或多个纯虚函数的类称为抽象类,他不能生成实例

当使用类域操作符显示调用虚拟函数时,该函数已经被静态调用,在编译时刻被静态解析

函数的缺省实参不是在运行时刻决定的,而是在编译时根据调用函数的对象的类型决定的

如果想通过在运行时刻判断根据当时的对象来调用实参,则应该如下实现:
void base::hello(int val = 1)
{
    if(val == 1)
 val = 1024 // the value you want to be the default
}

void derived::hello(int val = 1)
{
    if(val == 1)
 val = 2048
}

—-2006/4/13

在c++中可以用0赋给任何任何指针变量,而void*不行,在c中,void*可以,0不行

—-2006/4/15

dynamic_cast 运行时刻转换
void greeting(base * p)
{
    Derived * pd;
    if(pd = dynamic_cast<Derived *>(p)) // 如果p指向的的确是Derived对象,则转换成功
 //….
    else // 否则失败,pd = 0
}

void greeting(base &p) // include <type_info>
{
    try
    {
 Derived Dobj = dynamic_cast<Derived &>(p);
    }
    catch(std::bad_cast)
    {…}
}

static_cast 静态转换,作用同c中的强制类型转换 static_cast<int>(value)

const_cast 去除变量的const和voliate性

reinterpret_cast 从底层重新考虑一个变量
Derived Dobj;
string str = reinterpret_cast<string>(Dobj);  // actually the result is undefined

typeid(Dobj).name() // the output will be Derived
typeid(Dobj) == typeid(Derived) // true
typeid(Dobj) == typeid(Derived *)  // false

class Base
{
    virtual Base hello() {}
}

class Derived : public Base
{
    Derived hello() {}
}

—-2006/4/16

// 虚拟继承 public virtual Base is also Okay
class Hello : virtual public Base
{
}

在虚拟继承中,中间派生类对虚拟基类构造函数的调用将被自动抑制。虚拟函数构造函数将由最终派生类来调用

虚拟基类的构造函数总是比非虚拟基类的构造函数早些被调用

调用顺序为:按照派生类的继承声明顺序,分别查找每个继承类的继承子树,对于每棵子树采用深度优先进行查找虚拟基类,找到所有虚拟基类并构造之,然后按照继承声明顺序构造非虚拟基类

在虚拟派生下,如果中间派生类改写了虚拟基类的函数,则在最终派生类调用该函数时,中间派生类的特化版本的优先级高于虚拟基类原版本的优先级

私有继承代表了一种has-A的关系,父类的所有protected成员和public成员均被继承为子类的private成员,而公有继承代表了一种is-A的关系

class PeekbackStack : private IntArray
{
    public:
 // 维持公有访问级别
 using IntArray::size;
        // …
};
派生类只能将继承得到的成员恢复到原来的访问级别。该访问级别不能比基类中原来指定的级别更严格或更不严格

protected继承将父类所有public成员变为子类的protected成员

—-2006/4/18

断断续续看了几天,终于把要啃得啃完了。主要都是基于对象和面向对象的部分,基础还是要夯实才好。心里踏实。等找到实习单位,应该会可以心定一点了,呵呵

还要考认证,还要做项目,继续啃书去…….

p.s.

1、昨天晚上终于没白熬夜,比赛还蛮好看,暂且不说a米输赢(虽然作为juven的球迷,a米输了对我来说没什么不好的),2队的确打了一场观赏性还可以的比赛。我的评价是,激烈有余,精彩尚可。

2、我有预感,今晚申花能赢,等着瞧吧

2006年03月31日

在bbs上看到一个帖子,关于函数指针和模板函数,有点意思。本来以为是不能用指针指向模板函数的,毕竟没有实参化,让他往哪指呢。。。想想也对,所以也就不以为然。结果一位学长贴了一个奇怪的东东出来:

template<typename T>
void func(T*){}

typedef void (* ptrf)(int *);

ptrf p = func;

居然能过,有点诧异。原来在定义函数指针的时候就实参化了,厚厚,学到一招。

然后调用的时候发现,(*p)(&i) 和 p(&i) 都okay。就想起来了周胖当年的26级指针。试了下,果然比较邪恶

(*******************p)(&i)

应该是[p] = offset func<int>了,不管怎么取内容,都是他了,呵呵

我在想,如果别人看这个代码一上来看到这么个表达式,会不会晕死。。。。@_@

2006年03月29日

昨天晚上本来想把照片传上来的,结果尝试了n次都是连接超时。。。汗了,所以以为donews的相册不支持大图片。结果今天早上上来抱着侥幸心理,try了一下,嘿,居然okay了。看来还是那可耻的校园网的速度阿。。。那个啥,行宽不够,图片在下面。

2006年03月28日

除草除草……n久没来这里写东西了,惭愧一个。懒阿……懒害死人阿……-_-

好吧,言归正传。昨天刚刚春游回来,哎呀,那个High阿,那个刺激阿。。。名副其实的爬山,的确是用爬的。现在想想以前那种旅游,只能叫登山观光游,简直不能和这次的比。

场景一:话说当日清晨,一行人等来到公路旁的一小溪边,还未站定,导游三步两步已经沿着小溪,踏着水中突出的石头,跑到了前面。这个情景其实很难描绘,没有亲眼看过的人真的很难体会我们当时无比诧异的神情。简直就像是七龙珠里面孙悟空那种连续n段冲跳……汗了……众人急忙跟上,奈何水平有限,于是一时间落水者有之,嚎叫者有之,发呆者有之,转身上车者有之。。。

场景二:残余部队继续前行,前方突见一瀑布,飞流直下3米多高,正诧异间,导游又一次向我们证明了超级赛亚人的实力。嗖嗖嗖,还没缓过神来,人已经站在瀑布上方的某块大石头上向我们招呼。事已至此,无回头路可走,只好硬着头皮上。奈何岩壁在水流和青苔的作用下,湿滑不堪,一次次尝试均徒劳无功。终于功夫不负有心人,经过各种蹭,爬,攀,#$¥%^&,以裤子衣服沾满泥土的代价,爬上了那不可一世的瀑布。。。。

以上只是冰山一角,旅途中各种匪夷所思的镜头层出不穷。不过索性有惊无险,也算平添一份刺激。不得不说,这次春游真的是满开心的,的确是很high。有机会把照片传上来,大家共赏,呵呵。

玩也玩过了,回到学校又该埋头苦干了。经过了上次欧特克的招聘会,发现自己原来只是棵菜-_-|| COM的问题真是一问三不知,当初用DX的时候说来说去都是COM,但是用管用,问问还是真不知道,真乃知其然而不知其所以然。好吧,我承认我没学过COM。。。没办法,自学呗,为了不做一棵菜而努力。

最后回答个问题,最近很多人都问我为什么改名字了,本来叫ANuy,现在变成了Brandon。其实也没什么,只是因为ANuy这个自造词没办法发音,所以改了。仅此而已,呵呵。

最后祝福下申花,在周四的德比中能够击溃联城,让他们看看谁才是上海足坛的老大。申花加油,永远支持你。

over

谢谢观看,我们下次再见:)

2005年11月11日

看软工看的郁闷死了,写点东西算了。说起来我的blog最初的申请本意是写技术贴的,结果变成杂七杂八的大杂烩了,呵呵,不过也没什么不好,顺其自然吧

关于DrawIndexedPrimitive()的第四参数问题:

网上关于这个函数的解释似乎不是很清楚,特别是第4个参数。我在中文范围内搜没搜出什么东西,大都是些照着msdn抄的函数说明。msdn上关于第四个参数说的也不是很清楚,原文如下:

HRESULT DrawIndexedPrimitive(      
    D3DPRIMITIVETYPE Type,
    INT BaseVertexIndex,
    UINT MinIndex,
    UINT NumVertices,
    UINT StartIndex,
    UINT PrimitiveCount
);

NumVertices
[in] Number of vertices used during this call, starting from BaseVertexIndex + MinIndex

我以前一直以为是用到的顶点数,一般如果是三角形的话我都填的3,但是事实却并非如此,当时还郁闷了我好久,真叫百思不得其解。后在gamedev上猛搜,在电脑上猛试,终得正解如下:

其实这个参数的意思是在这次画图元的调用中,最小索引和最大索引间的跨度,即(MinIndex – MaxIndex + 1)

以后可能还会陆陆续续写一些,想到什么写什么。先写这么多,没别的意思,就是觉得如果在这上面浪费时间,还真是不值得。

2005年11月10日

难得贴一回歌词,呵呵

逆鳞

这生命对每个人
都不公平也没道理
只能扑向泥泞迎向
那阵骤雨由不得你
yeah~
突来的骤雨这条街一路泥泞
就像人生不过是一场即兴
整个世界正在对我们挑衅
就算如此还是得无惧前进
手中的邮报封面的人在微笑
下个路口生命在暗巷尖叫
活着只是油墨上面的一角
明天之后还有谁翻阅的的到
我跟你用不同方式
踩过前方带刺荆棘
你嚣张不畏惧退缩
我低头沉默却坚定
用力的还击发出声音
让他们安静不敢相信继续前进
他们畏惧睁大眼睛
他们躲避难道放弃
专心聆听我的声音
这生命对每个人
都不公平也没道理
只能扑向泥泞迎向
那阵骤雨由不得你
如果生命对每个人
都不公平也没道理
那就让我带着孤寂
继续前进直到光明
继续前进

wo wo
我只有一种容貌我就是永远不会倒
我就算逆境环绕我面对也要带着笑
我只有一种咆哮
我要让他们都知道
我生命再怎么粗糙
我都要活的很骄傲
我说自尊那看起来或许可笑
但它至少支着我,试着不让我颠倒
活着如果只是不甘寂静的喧嚣
那就咆哮吧让每个人都听得到

听着比较爽,歌词也写得不错,恩。以前对方文山不太了解,不过这次这个歌词写得还能和逆鳞扯上关系,真有点刮目的感觉,看来写歌词的人也不容易,还是需要比较广博的知识面的。小小的赞下。另外,中间那段rap感觉上有一段不是jay唱的。(我说自尊那看起来或许可笑,但它至少支着我,试着不让我颠倒。活着如果只是不甘寂静的喧嚣,那就咆哮吧让每个人都听得到)我怎么听怎么像上海某个人唱的-_-不过不是很肯定,但是感觉是这样。如果哪位达人知道,还望不吝指教。

ps: 发现一个问题,我每次发帖间隔差不多都是10天。其实我并没有刻意这么做,所以对这个奇怪的间隔感到比较好奇。不过今天这次好像是破了例,呵呵。

ps又ps: 最近在各大论坛混得比较多,比较反感一种情况,就是帖子里的句子是用感叹号分割的,没有句号,没有逗号,通篇感叹号。且不说内容,光第一眼给人感觉就好像是文字苍白无力却硬要用感叹号加强语气,增加气势。我真是很替他们的小学语文老师难过,不知道他们老师看了这样的文字会作何感想。