Feeds:
文章
评论

Archive for 2007年12月

上次记了一份日程表,其实是为了展开这篇的。时间上则拖拉得太狠了,随时检讨。

如果日程表被打乱了,对全家来说就是小灾难。两周前的周六就是一例。

周末的早饭是煎鸡蛋。平时早上煮五个蛋,周六早上煎四个蛋、煮一个蛋。

煮的蛋是云震的,因为他吃蛋白过敏。。。

对蛋白过敏这个令人难以置信又令人难以接受的事实,早在小河马6个月的时候就发现了。当时是吃上了一小碗蛋羹,第一次蛋白蛋黄打散了一起吃,肿了个猪头脸。

姥姥是很仔细的人,在姥姥手上,就再没有发生过敏的“事故”。等云震到了妈妈手里,妈妈秉着“吃啊吃啊就习惯”了的初衷,已经屡次发生“肿猪头”事故了!

那个周六,又是一例:妈妈给了云震一小块煎鸡蛋的蛋白。

不到11点,过敏症状全面出现:

先是眼角,鼻子下面,嘴角或者脸颊出现红斑,然后红斑逐渐胀大,并连成一片,直到整个脸肿起来,眼睛被封成一条缝。

撩开衣服看,浑身都起的包,后脖子、腋下、后背和肚皮都是一溜的大燎泡。

这些皮肤症状不新鲜了,每次过敏都是这样。这次似乎更严重一点,起得包多了,起包的部位也多了。

之所以妈妈敢尝试让小河马“习惯”蛋白,因为家里有过敏药常被不患。

由于这次症状有些严重,爸爸也打算让GP把云震国民的事情记录一下,所以拨了急诊。时间约在了下午3点。(周六下午3点?3点半爸爸打羽毛球啊!)

等到了看GP的时候,“特效药”已经发挥作用了:身上的包都下去了,虽然脸上的肿还没消,但云震情绪好很多了。

GP很严肃的批评了爸爸和妈妈。那意思是:光知道不能吃鸡蛋不行,要实际做到不吃鸡蛋。

在过敏源未知的情况下,这个过敏到底会导致多严重的症状还不好说,下次如果再出现而且发现呼吸困难的话,约急诊可不行,要直接叫救护车了。

爸爸问了,GP可以建议云震到医院做过敏源检验查查到底什么原因导致过敏。事实上,个别时候喂小河马一点点煮鸡蛋的蛋白不会过敏的。这事查清楚了好,以后小河马过集体生活的时候自己心里有数。

有惊无险,和以前一样,小河马变成一只肿猪头整整一天。带着这样一只猪头“抛头露面”的还真是丢人。。。:P

另外一个副题是说,自从姥姥回了北京,几乎每个周末云震都要病上一次。之前若干周是感冒反复,要么就突然在周六晚上开始发烧,要么就明显听着咳嗽加重,这好容易感冒过去了,妈妈又惹上过敏。关于周末病情反复的原因,下篇日记还有总结。

最后一个小小的副题是说,爸爸每周六下午3点半去打球,然后就在体育馆洗干净回家。那个周六打球未果,洗澡也未果,但洗澡日要贯彻。

于是,在云震洗澡后,爸爸直接跳进了澡盆里。

WOW!实在太爽了!难怪这小子每天屁颠屁颠地洗澡,妈妈也每天跟着泡上一个。

以及不记得上一次泡澡是什么时候了。。。慢慢躺下去,水没过胸口,深呼吸,感受水压,嗅到淡淡的氯气味道,体会每个毛孔都张开,汗毛似乎随着蒸汽从水里飘了起来。

最可气的是:妈妈反复强调,那水都凉了啊,别泡着了!

真是的,捡着老婆儿子用过的洗澡水,还像捡了宝似的。

 

附:

伊可新,全称伊可新维生素AD滴剂,似乎是用来补钙的 (FYI)。爸爸是“遵嘱”,姥姥说吃,爸爸就给喂;妈妈说吃,爸爸也给喂。

Technorati tags: , ,
Advertisements

Read Full Post »

Some C++ tips

1. Formatted output using <iostream>, Left align, fixed-width field

To screen output in the following format

line one      something in line one

line two      something in line two

{15 length }

code snippet

cout.setf(ios::left);

const int width = 15;

// first line

cout << setw(width) << “line one: ”;

cout <<  “something in line one” << endl;

// second line

cout << setw(width) << “line two: ”;

cout << “something in line two” << endl;

cout.unsef(ios::left);

2. Handle spaces and empty lines at the end of file (instead of eof()), using <iostream>

Read the file containing:

testString {some spaces after “testString"}

{some other empty lines} {end of file}

After the last input string, there are spaces and empty lines at the end. Function eof() cannot indicate the “real” end of file.

Code snippet

ifstream inFile(“filename”);

if (!inFile.is_open()) { // handle error in opening file}

string inputStr; // or some other data type

if (!(inFile >> inputStr)) {// stop reading file}

3. Define both const and non-const version of element accessing member function, because const object can only call const member functions.

class Class1 {

private:

int m_i;

public:

// non-const object can call non-const Element(int) to get/set element value;

// const object can only call const Element(int) to get element value;

int & Element(int i) {return m_i;} // non-const member function

const int Element(int i) const {return m_i;} // const member function

// it is virtually the same as implementing

// but user can hardly notice the difference when using the above two

void SetElement(int i) {m_i = I;}

const int GetElement(int i) const {return m_i;}

};

4. A template class example, declaration, implementation and usage

template<class T, int i> // use both a type template and a specified type

class TClass {

private:

int m_i;

vector<T> m_data;

public:

TClass(void) : m_i(i) {} // constructor

TClass(const TClass &source); // copy constructor

TClass<T, i> & operator = (const TClass &source); // operator =

~TClass() {}

T & Element(int i); // non-const element access method

const T & Element(int i) const; // const element access method

};

// put member function implementations with class declaration in the same header file

template<class T, int i> TClass<T, i> ::TClass<T, i>(const TClass &source) {

// valid check i v.s. source.m_i;

//copy members

m_i = source.m_i

m_data = source.m_data;

}

template <class T, int i> TClass<T, i> & TClass<T, i>::operator = (const TClass &source) {

if (this = &source)

return *this;

// copy members

m_i = source.m_i;

m_data = source.m_data;

return *this;

}

// implement as inline function

template<class T, int i> inline T & TClass<T, i>::Element(int i) {

// boundary check

return m_data[i];

}

template<class T, int i> inline const T & TClass<T, i>::Element(int i) const {

// boundary check

return m_data[i];

}

// use as a “variable type”

TClass<double, 2> t;

// use as a “return value”

TClass<double, 3> GetT(void);

 

Technorati 标记: , , ,

Read Full Post »

自从云震上幼儿园以来,妈妈就敦促爸爸写下些小河马在幼儿园的“轶事”。但这篇,还不是关于幼儿园的。

姥姥回北京后,河马一家的生活规律得像军训一样:

  • 早7点半左右起床,爸爸伺候云震,妈妈伺候自己。
  • 穿衣、喝奶、刷牙、洗脸、抹香香。应该有伊可新一粒,但爸爸总是忘记。
  • 早则8点10分、晚也不能过8点半,云震装车,妈妈上班,爸爸开始一天。
  • 中午12点半,云震在幼儿园呼呼,妈妈回来吃午饭,和爸爸商量大人小孩的晚饭。
  • 如果给小河马吃鸡肉或者排骨面,中午化肉,下午4点以前炖上肉汤。爸爸忘记过两次,导致整体吃饭时间顺延……
  • 下午5点,天色完全黑了,或妈妈接小河马爸爸做饭、或爸爸接小河马妈妈做饭。前者居多,因为妈妈嫌爸爸总忘记询问云震在幼儿园一天的表现,而爸爸嫌妈妈做饭动作太慢。
  • 6点半前大人小孩吃饭,爸爸闷头猛吃,妈妈陪小河马吃。爸爸接手吃饱的小河马,妈妈慢慢吃。
  • 饭后活动时间有限,期间还有把大便、洗碗、沏茶等例行。
  • 7点40准备云震的奶,220毫升6勺奶粉。
  • 8点10分放水洗澡。
  • 9点前让妈妈哄小河马呼呼,爸爸自由活动 😀
  • 10点妈妈收拾自己完毕,看电视连续剧……
  • 11点,妈妈呼呼,爸爸看书,随后全家呼呼。

周六日程特殊,机动性也只是高一点点。

  • 早7点半左右,云震到大床,全家继续呼呼到9点。
  • 9点之前,全家起床。爸爸吸地,做大人的brunch。
  • 妈妈伺候云震,穿衣、喝奶、刷牙、洗脸、抹香香。应该有伊可新一粒,但妈妈也总是忘记。
  • 10点左右,云震坐小桌桌吃早餐,牛奶麦片。
  • 10点半左右,大人吃brunch。之后妈妈收拾自己,爸爸陪云震。
  • 11点半,妈妈完成诸如洗脸、抹脸、画脸、戴眼镜(为了提高效率,爸爸已经建议妈妈周末取消戴眼镜例行)后,视情况洗一锅衣服、冲一杯咖啡、或者不停地看天气谋划出门。
  • 中午12点,云震午饭。之后,如果决定爸爸不陪着去超市,云震呼呼,妈妈偶尔呼呼,爸爸自由活动;如果决定出门,云震上车呼呼,全家出动。
  • 下午3点半,爸爸参加羽毛球活动。如果没有去超市,云震和妈妈去超市;如果去过超市了,云震和妈妈自由活动。
  • 6点前,回家,开始晚间日程,和平时一样……

周日日程最特殊,机动性最高。

  • 早7点半左右,云震到大床,全家继续呼呼到9点。
  • 9点之前,全家起床。爸爸吸地,做大人的brunch。
  • 10点之前,爸爸给家里打电话,妈妈收拾自己,云震吃早饭并捣乱。
  • 11点,云震和姥姥姥爷视频,姥姥全程监视云震直到12点云震午饭完毕。
  • 下午,不视天气情况,全家出动,或逛街,或购物,或开车出门。
  • 6点前,回家,开始晚间日程,和平时一样……

周三或者周四晚上9点之后,请同住的David留守,爸爸和妈妈去看一次电影。

Technorati 标记: , ,

Read Full Post »