Monday, June 2, 2014

Understanding C++ memory and variables


#include <iostream>
using namespace std;
void f1 (int *j)
{
cout << "in f1() beginning-------------\n";
    cout << "       j addr is: " << &j << " is pointed to addr " << j << " value is: " << *j <<"\n";
    int l = 20;
    int *k = &l;
    j = k;
    //k = 0;
    cout << "in f1():======================\n";
    cout << "       l addr is: " << &l << " value is: " << l << "\n";
    cout << "       k addr is: " << &k << " is pointed to addr: " << k << " value is: " << *k << "\n";
    cout << "       j addr is: " << &j << " is pointed to addr " << j << " value is: " << *j <<"\n\n\n";
}

void f2(int **j)
{
    cout << "in f2() beginning-------------\n";
    cout << "       j addr is: " << &j << " is pointed to addr " << j << " value is: " << *j <<"\n";
    cout << "       the value is an address and the exact data is: " << **j << "\n";

    int l = 20;
    int *k = &l;
    *j = k;
    //k = 0;
    cout << "in f2():======================\n";
    cout << "       l addr is: " << &l << " value is: " << l << "\n";
    cout << "       k addr is: " << &k << " is pointed to addr: " << k << " value is: " << *k << "\n";
    cout << "       j addr is: " << &j << " is pointed to addr " << j << " value is: " << *j <<"\n";
    cout << "       the value is an address and the exact data is: " << **j << "\n\n\n";
}

int main()
{
    int i=10;
    int *j = &i;

    cout << "before f1() in main:\n";
    cout << "       j addr is: " << &j << " is pointed to addr " << j << " value is: " << *j << "\n\n";

    f1(j);
    cout << "after f1() in main: \n";
    cout << "       j addr is: " << &j << " is pointed to addr " << j << " value is: " << *j << "\n\n";

    f2(&j);
    cout << "after f2() in main: \n";
    cout << "       j addr is: " << &j << " is pointed to addr " << j << " value is: " << *j << "\n\n";

    return 0;
}
results:
before f1() in main:
      j addr is: 0x28fea8 is pointed to addr 0x28feac value is: 10
in f1() beginning-------------
      j addr is: 0x28fe90 is pointed to addr 0x28feac value is: 10
in f1():======================
      l addr is: 0x28fe7c value is: 20
      k addr is: 0x28fe78 is pointed to addr: 0x28fe7c value is: 20
      j addr is: 0x28fe90 is pointed to addr 0x28fe7c value is: 20
after f1() in main:
      j addr is: 0x28fea8 is pointed to addr 0x28feac value is: 10
in f2() beginning-------------
      j addr is: 0x28fe90 is pointed to addr 0x28fea8 value is: 0x28feac
      the value is an address and the exact data is: 10
in f2():======================
      l addr is: 0x28fe7c value is: 20
      k addr is: 0x28fe78 is pointed to addr: 0x28fe7c value is: 20
      j addr is: 0x28fe90 is pointed to addr 0x28fea8 value is: 0x28fe7c
      the value is an address and the exact data is: 20
after f2() in main:
      j addr is: 0x28fea8 is pointed to addr 0x28fe7c value is: 20

Wednesday, May 14, 2014

How to install python packages on Windows 7

Brief steps:
1. Download a package
2. Extract the package to a folder_pkg
3. Open Windows Command Prompt
4. Go to the folder_pkg
5. > python setup.py install
Then done. Check PythonHomeDir/Lib/site-packages

Useful packages:
1. simplejson: https://pypi.python.org/pypi/simplejson
2. XlsxWriter: https://pypi.python.org/pypi/XlsxWriter

An Detailed Example for installing XlsxWriter Package (TODO)

Saturday, January 11, 2014

高峰体验

[摘] 一个徒步登山者,费尽千辛万苦,克服许多的艰难险阻,每一步都挣扎在生死边缘。开始的时候,还有很好的现实感,知道山知道水,攀登中还会有幽默和笑语。慢 慢的,躯体的痛苦,情绪的沉抑,心身的耗竭让你忘却了行为的意义,甚至怀疑攀登的价值和现实性,你的内心挤满了渴望与逃避,冒险与胆怯、放弃与坚持的双向 冲突,知觉变得凝重而迟缓,现实感消隐,意识逐步的缩窄。再后来,你的思想似乎停滞,感觉麻木,忘了自己是谁,在做什么和为什么要做,只是机械地向上走。 你的意识界沉静而虚无,只有心灵那一丝光亮,仍在坚持和闪耀着。        终于,你到达了那高耸卓绝的山顶,按理说积压太长的期待会给你带来像爆炸一般的狂喜,但却没有发生。你似乎忘却了自我,忘却了存在,时间和空间消融在一 起,没有边界,四周只有一片纯净的虚空,深邃而神秘。你甚至会有一瞬的迷茫,不知道你接下来要做什么?这时,一种像海潮般的愉悦和满足感从遥远的心灵深处 释放、溢出、扩展,伴随着高峰上的洁净、安详,和谐席卷了你,你似乎听见了心灵的笑声,品尝到生命融入那种永恒与无限的感觉。慢慢的海潮过去,你的内心仍 充满着充沛的活力和美妙无比的欣喜,灵感激荡,思想饱满而充实。在以后很长的日子里,你对自我的态度和对世界的感觉已经完全的不同。每当遇到困难的时候, 回忆那不平凡的一刻,你的内心依然会荡漾出坚毅、活力和创造力,成为你自由、自信、自强不息的精神源泉。

[摘马斯诺高峰体验]

Friday, January 3, 2014

Sed Command Basics


Description: the most command parameter of sed command is 's', which stands for substitute.
Format: sed 'PARAM/REGEXP/REPLACEMENT/FLAG' filename
        It searches for matched patterns (by REGEXP) and replaces it with REPLACEMENT.  PARAM and FLAG decides which match is replaced.

Examples:
  1. Replace every first match in a line 
  $ cat sed_cmd_study.txt
  This is to study sed command in Linux system.
  Actually, this is in a cygwin terminal.
  Here are some list of stuff that I am interested:
  Linux Hacking
  C programming and C++ programming
  Python programming and Perl programming
  Photoshop applications and design
  And all the other related stuffs


  $ sed 's/programming/coding/' sed_cmd_study.txt
  This is to study sed command in Linux system.
  Actually, this is in a cygwin terminal.
  Here are some list of stuff that I am interested:
  Linux Hacking
  C coding and C++ programming

  Python coding and Perl programming
  Photoshop applications and design
  And all the other related stuffs

    [NOTE]: in this case, the original file is not modified


    2.  Replace every matches in file
  $ sed 's/programming/coding/g' sed_cmd_study.txt
  This is to study sed command in Linux system.
  Actually, this is in a cygwin terminal.
  Here are some list of stuff that I am interested:
  Linux Hacking
  C coding and C++ coding
  Python coding and Perl coding
  Photoshop applications and design
  And all the other related stuffs

     
    [NOTE]: in this case, the original file is not modified


     3. Only replace the 2nd occurrence of a line in file
  $ sed 's/programming/coding/2' sed_cmd_study.txt
  This is to study sed command in Linux system.
  Actually, this is in a cygwin terminal.
  Here are some list of stuff that I am interested:
  Linux Hacking
  C programming and C++ coding
  Python programming and Perl coding
  Photoshop applications and design
  And all the other related stuffs

     
    [NOTE]: in this case, the original file is not modified

     4.  Replace all the matches and write the modified lines in a file
  $ sed 's/programming/coding/gw output.txt' sed_cmd_study.txt
  This is to study sed command in Linux system.
  Actually, this is in a cygwin terminal.
  Here are some list of stuff that I am interested:
  Linux Hacking
  C coding and C++ coding
  Python coding and Perl coding
  Photoshop applications and design
  And all the other related stuffs


  $ cat output.txt
  C coding and C++ coding
  Python coding and Perl coding



     5. Delete last X number of characters from each line
  $ sed 's/...$//g' sed_cmd_study.txt
  This is to study sed command in Linux syst
  Actually, this is in a cygwin termin
  Here are some list of stuff that I am interest
  Linux Hack
  C programming and C++ programm
  Python programming and Perl programm
  Photoshop applications and des
  And all the other related stu






Friday, December 20, 2013

关于申请和国外学习

最近收到挺多师弟和T友的邮件,询问些关于申请和出国的问题,其实我自己知道的并不算多,只是我自己的想法,而且现在已经经历过,作为一个局外人,可能并不了解你们现在的心情,希望能给大家一点参考

首先应该恭喜大家走上这条路,记忆里在国内的时候,每每跟别人提及申请出国,提及offer的时候,大家一脸的羡 慕,所以说你们选择了一条让大家都羡慕的路,不知道有没有读过《羊皮卷》,里面提到每个人都有一种最最伟大的力量,选择的力量。我不知道看到这儿的时候你 是不是能想明白,下次当你不开心的时候,想想这句话,可能能帮你解解小郁闷。恭喜你们用了自己最伟大的力量,选择这样一条路。当然恭喜的时候,我也想说别 让别人的羡慕把你捧的太高,别被GTER网站以及太傻和其它众多留学咨询什么整的你觉得这是一条神圣的路。一句话:出国是一个选择,仅仅是一个选择,跟你 做任何一个选择一样,所以对待这样的选择,你需要一个平常的心态

再要说一下国外的学习。我相信现在大家都听说过国外凌晨三点睡觉就算早的之类的传言,MS国外的学生都不用睡觉,这 里我要澄清这一事实,实际上我们并没有那样的辛苦。传言的原因我想有几点:1. 每个人都会想要显示一种优越感,当然也包括留学在外的学生,他会告诉你我学习学习多么辛苦,多么晚睡觉就表示我这边压力多么的大,我多么的牛,所以适当的 夸张一下不失为一种很好的办法。 2. 个人的生活习惯问题。我想说因为在国外每个人的生活都是相对独立不会影响他人的,所以我不知道在你的寝室,周末的晚上会有多少人习惯早睡。在那样一种还要 考虑其它人感受的并不很独立的环境里可能大多数人都会选择两点左右睡觉,游戏或者电影,在这样一个自己独立的环境里,你认为你会几点睡觉呢?如果第二天没 课,或者11点才开始上课? 3. 学习的压力的确是有的,当然这一点也同样是个人习惯问题。总有些人喜欢把事情拖到最后才去做,所以到最后的时候不得不熬夜,然后偶尔聊天传言就是我昨晚通 宵作业了,含义是我平时没有做作业。

当然我不否认这边学习的压力,我个人感受最深的一点就是作业问题。在国内的时候有多少人会因为作业痛苦呢,我们都习 惯了抄作业,习惯了很简单的用上半小时到一两小时完成作业,而且并不在乎作业的正确性,更多的是即使不会做,还有人可以讨论,有人可以抄。每个班上总有那 么一两个人的作业是标答,自己不用动手。可是在这儿,首先最强高的是诚信,在课程的开始就会公布下如果发现抄袭教授可以直接把你从这门课里drop掉。而 且作业全部英文,你必须独立完成,当然可以讨论,但是其实并不容易。这里的作业我目前的感觉难度比较大,一般一门作业可能会花上一整天的时间,甚至更多。 所以一般来说作为这边的研究生,一学期修三门主课就相当牛了。(我一同学说这边三门主课相当于国内六门主课,我不发表任何评论)。另外一点是上课,这里没 有人会查你是不是去上课了,但我在这儿没有逃过一节课,虽然在国内大学四年我逃过的课不少,但这里我没有逃课的冲动,因为我觉得这里上课可以让我学到东 西,而国内却并没有这种感觉。

学习的压力是有的,但是偶尔跟我老板聊的时候最严重的问题还是在语言。有时候想想如果以我现在付出的精力,以我现在 听课的认真程度,在国内怎么着当年也保清华去了(小吹一下)。听力,阅读,口语,写作,我不知道你看过多少英文论文,就那么短短的几页,一般你要花上多长 的时间仔细看完呢?再想想现在,国外的一门英文教材一般都800到上千页的,虽然不用全部看完,但要仔细研究其中的大部分,还是要花上相当长的时间的,所 以有时候自己也觉得苦恼,因为当年在国内的时候可以不用花太多的时间就能做很多的事,可是在这儿,可能花了很多的时间还是做不了太多。在这儿就先提醒下, 一定要学好英语

说了这么多,其实我想说压力固然是有的,但更多的是一种自由广阔的空间。(现在偶尔想想我很同情国内的很多事情,很 多不平,很多人和事,尤其是对于农民和打工一族的艰辛,那样的贫富差距让人心寒,小发泄下了)。我觉得自己不属于学术型,但是如果你属于,这个地方你一定 要来,因为可以让你最大的发挥你的潜力,你会觉得在这里如鱼得水,当然在学术上的造诣估计是不可限量。记得之前提过这里的学习,你可以在图书馆找一张大的 桌子,邀上几个优秀的朋友,一起讨论下政治讨论下学术讨论的人生理想,多么惬意的事情,当然前提是你要有一帮优秀的朋友,他们能够在心智上对你有所帮助, 取长补短,共同进步。 你也可以自己选一小桌子,一个人看自己想看的书,拿一大堆的草稿纸,查阅各种资料,埋头做自己的研究。这里的资源相当的丰富,各种网络计算机设施超级全, 你可以从自己的电脑上传任何想要的资料到学校的服务器,然后在学校的任何一台电脑上登录,找到自己的文件,不管是Linux, Mac, 还是Windows,共享同样的文件系统,你可以用自己的电脑连接到学校的任何一个打印机,打印你想要的东西,包括彩印扫描,当然前提是你要会自己操作那 些机器,打印机,扫描仪,所以你得学会自己动手。学习如果累了,可以找个沙发躺躺休息,小憩一会儿,精力充沛继续努力。当然你还可以选择抽点时间做自己喜 欢的事情,周五晚上打打球,周末读些传记,了解下时事经济政治什么的,或者开车出去较远的城市购物旅游之类,然后再投入的新的学习中

这里的生活我想说很舒适,我不知道该怎么来形容,但我告诉你高于国内普通的生活水平很多。我记得一个可以自费50万人民币的MM告诉我,她觉得这里的生活很舒适,不太想回家。希望这里能为你提供一点简单的想象空间。

最后说下申请的问题,之前在太傻还是寄托上发过一篇帖子,是申请之后写的一点小结。这里再说下我觉得最重要的是心 态,当然不乏运气的成分,记得今天晚上还跟一哥们聊这个问题,他的平均水平跟我差不多,然后是RA硕士,我TA博士,真有点羡慕他的硕士,呵呵。当时跟我 一起申请一哥们不知道在哪儿看过一句话,好像是说不要把对美好事物的追求变成一种焦虑和不安吧,就是说申请是件美好的事情,他不应该成为你焦虑的问题,而 是一种向往。申请过程中难免有很多的郁闷,自己的心态放平稳了,保持一种乐观积极向上的心情,相信你定会有所收获的。

因为之前写的关于考T的问题,加了很多的T友,有时候你们的问题我不能一一解答,要说下抱歉,但同时我想告诉你,有 些问题是需要你自己去解决的,每个人总是有一种依赖心理,以为加个朋友就可以帮我解决任何问题,比如托福一年考几次,什么时候考,怎么报名之类的问题,我 不好评价这些问题,这是需要你自己去百度或者google的,只有自己去做了才会有所收获,别人告诉你的始终都只是别人的。不想讲太多的大道理,希望你们 都是优秀的,当然更希望能认识优秀的你,可以一起讨论很多除了社会自然科学以外,关于本身心智成长理想的等等问题。

末了,祝所有正在申请的正在考G考T的朋友都顺顺利利!

[PS:原贴写于09年在美国的第一个学期]

Thursday, December 19, 2013

托福全攻略之七 考试

对于托福考试,我想最重要的一点就是自信吧,自信而从容而安静而气定神闲而沉稳不紧张。

考试的前一天一定要睡个好觉,有充足的睡眠才能保证做题的效率和质量。早点休息,因为第二天早上需要相对早起点,大概七点半左右吧。早起是要上网看看有没有JJ在网上公布。传说中国考试的前一天在北美也会有考试,而一般考题的重复性比较大,所以一定要 上寄托或者小马过河或者太傻上找找,有可能会有原题的。我考试那天是遇到的,完全一 样。但这时候有个惨痛的教训给大家:那个JJ不可全信,但也不可不信,所以最好的方法是那天早上大概把那些题准备准备。而且要记住了,即使你知道原题,做题的时候还是要细心再细心。我考试的时候发现听力是原题,当时挺乐,因为听力实在是差劲,可一乐这问题就出来了,因为我只了解听力的主题,不知道其中的细节原委,而听力的考题集中在细节上,而且其选项的相似性很大,不容易猜出答案,所以大家即使看到原题,也不要过早的开心,这时候更要细心,有RP的时候,还要用实力把RP发挥到极致啊,可不要一时的开心误了大事。

再就是谈谈考试的细节,我在华工考的,早点去考场,最好能在9:10到,如果是10:00考
的话,因为有些表需要填,而更重要的一点是这时候可以让自己有一个时间安静,不要因为填表太忙乱导致后面的心情急躁。进考场后有点吵,这时候一定要学会调整心态,平和,大度,不就一点小噪音吗,没什么大不了的。再就是要坚持,不要放弃,我考试的时候,阅读第一篇做完就想走了,因为实在做的太烂,自我感觉,结果最后阅读还有27,所以一定要坚持,不要中途放弃,相信自己。中间的10分钟休息时间,华工老师是不允许你在考场的,必须出去休息,所以这时候出去让自己安静下,可以适当准备下口语,因为口语的限时着实的让人紧张,如果你的心态够好,佩服,我当时说完口语整个手都红了,更别提脸了。太紧张了。大家尽量想办法让自己沉稳点,口语声音也不要过大了,表达清晰连贯就够了。作文一定要留着时间出来检查,简单的单词和语法错误,a, an ,is are这样的可以改改。

最后,终于写完了,也是对自己的一个肯定喽,呵呵,做事情都要坚持的,如果以前没有,从现在开始,学会坚持,坚持到最后吧。

给大家点个人的衷告,不是针对托福考试,而是如果你打算出国,如果你选择了这条路,请认真对待G和T的考试。当然我想大多数人都会认真对待的吧。不像我这样,我当时考试只是为了提高英语水平,只是为了打发时间,没有认真的考虑过以后,要现在当我选择学校的时候才发现,很多学校都把我排除在外,仅仅是因为我的这两项不达标。所以请认真对待你的考试,只要你有一点点的想法以后会出国,请认真对待

祝好运,我想技巧和方法都只是一种心理安慰或者一种策略,更重要的还是要切实的去做吧,态度决定一切,不要总在考试前徘徊迷茫,把迷茫的时间用来解决你的迷茫,相信自己,坚持到最后就是一种收获。

托福全攻略之六 写作

终于快结束了,可提到写作,自己真不知道该从哪儿说起。G的作文被BS了,T的作文又被BS了,尤其有一点让我没想通的是,我以为好的,评分较低,我以为差的却比我想象中给的分高。教训可以算得上,经验无。

作文,多写,再写,还要写。

从考G开始说起,准备了近一个月的时间,最大的一点体会是一定要写。然后进行修改。修改应该来说比写更加的重要,对句子表达的琢磨,对某一个词语的琢磨替换,这些都需要耗很多的时间,对一些典型的句子,一定要多记,简单同意替换一定要熟练。比如常用的词:有益于,有害的,辉煌的有成就的等等,多替换替换。这里是考T的作文,个人感觉和G 是有很大不同的,G里完全就是一种严格的论证,不允许有类似中国散文那种描述,而T就随意多了,更多的感觉是和四六级比较像,只是字数相对多一点,而且内容和语句表达可能要更丰富一点,但其例证这些不必过于严谨。可以参照下李笑来那本托福作文,看看他的文章就知道了,这里的作文感觉要随意多了。

对于作文,有几点还是需要注意下的。1.句子结构。句子结构是需要复杂,但不可一味地追求复杂,而导致句意只有作者才明白。2.表达清晰易懂。写作的目的是要让人明白,而不是刁钻,这只是我个人想法。3.多用被动,不要总是用I,he等等(这一点是看别人的经验的),个人感觉的确是,不要总是用这类名词做主语。4.句式的多样性。可以自己总结出常用的句子表达,常用的一些句式,以后就可以直接拿来使用了。5.第一句中心句。这一点我建议还是按照大多数的写法,第一句为中心句,然后这一段后面进行展开,可适当举例说理然后再总结。

差不多就这些吧,对于作文实在没有什么高招,考T之前我就完整的写过两篇作文,而且都是构思了很久,但写的时候都是限时完成。有一点提醒下,T的作文没有高频一说好像,而且考题范围是会超过185题的,我的考题就不是185里的一个,好像是老师要更加的easy-going,还是serious,所以对于作文我想重点不在对每个题你的看法如何,而是把你的语言,句子,词语和表达能力提高,考试的时候,观点自圆其说即可,并不一定要爱迪生,三里岛这样的例子,可以整身边的事情然后适当扩大一点就OK了。按几个哥们的说法,就是跟他扯,乱扯,但扯圆了就可以了。

作文写的很简单,对于第一题,也没有给太我的看法,感觉是靠听力的,所以听力过关了,把要点记下,稍稍看看模板,模仿下,问题该不大的。

祝好运~