人生若只如初见,何事西风悲画扇.


每个人都该读读国富论 - [twitter]
Tag:

虽然“国富论”是经济学界的扛鼎之作,亚当·斯密更是被奉为神一样的人物,但是我觉得,这不仅是本经济学的书。经济即生活,法律即人情。懂经济至少会帮助我们懂点生活。这本书只读了两百页,常常让我拍案叫绝。

读书,应该有兼容并包的心态。



sudo: sorry, you must have a tty to run sudo - [unix 命令及配置]
Tag:

通过 /etc/rc.local 或者 cfagent 执行 sudo 命令时,会得到这个错误,意思是执行sudo 的shell 需要一个控制终端。在 /etc/rc.local 或者 cfagent 中的命令,是没有控制终端的。

http://www.question-defense.com/2009/03/23/sudo-sorry-you-must-have-a-tty-to-run-sudo/ 上找到了答案,因为是英文的,总结其解决方案如下:

1. 编辑 /etc/sudoers

  1)Defaults    requiretty,修改为 #Defaults    requiretty,表示不需要控制终端。

  2)Defaults    requiretty,修改为 Defaults:nobody !requiretty,表示仅 nobody 用户不需要控制终端。

       如果修改为 Defaults:%nobody !requiretty,表示仅 nobody 组不需要控制终端。

2. 给 ssh 加上 -t 选项,表示不要控制终端。

    ssh -t hostname sudo <cmd>

可以 man sudoers,获取更多相关信息。




未若柳絮因风起 - [往昔]
Tag:

昨夜临睡之时,秋雨淅沥。早上醒来,抱怨“罗衾不耐五更寒”,看窗外,已见零星雪片落下。

至8点半乘公交之时,雪已纷纷,大如鹅毛。河对岸的绿景,已覆盖了一层白雪。

只是比较喜欢“未若柳絮因风起”而已,其实雪片之大,远胜柳絮。

另外,今天才发现衾念qin,之前一直读jin,真汗。



山中方一日,世上已千年 - [往昔]
Tag:

周六,天气不错,奔大觉寺而去。这周早些时候,在群里拉人,没一个相应的。正好,学亮出差至此,和他同去。

去大觉寺,只因为收音机上说,大觉寺有“千年银杏”。我只查了去大觉寺的公交路线,具体方位却不知道。在百望山森林公园换乘633之后,发现大觉寺几乎是633的终点了,我真担心会收到“河北移动为您服务”的短信。车渐行,感觉没了高楼,视野开阔了很多,感觉眼力所及之处,真干净啊,完全没有四环边上灰蒙蒙的感觉。

过了温泉镇,进入一条乡间公路,路边整齐的白杨,参天秀颀,有种回归田园的感觉。下车后,发现在西六环边上。路边是个采摘园的入口,除了几个卖田间蔬菜和水果柿子的,就没什么人了。

大觉寺的门口,有卖银杏仁的,卖木质玩具刀的,颇像乡间集市的一角。大觉寺大概是北京最老的寺庙了,从辽代到现在已有千年。寺中古木参天,主要是侧柏,银杏只有一株,当真大的吓人。风景很漂亮,写不出来的。照相的人很多,拿的都是高级家伙,我和学亮很是羡慕。

游客大致分三类,照相的,敬佛的,观光的。佛祖前有个募捐箱,很多人给钱,我没给,我觉得,佛祖他老人家不怎么需要钱,倒是路边卖艺的更需要。有人很虔诚的跪在蒲团上,双手合十。在大殿中,我感觉很不自在,有亏佛门清净。

寺并不大,一个小时,就游览了一遍,于是回家。等车之时,看到两队爬山的人,一队是自发组织的,一对是绿野的。他们爬的是大觉寺背后的山(今天google,知道其大概叫西山)。我也很想爬一次。

回家的车上,赶上国安夺冠,我向国安球迷兼北京人的老钱,发去贺电。老钱友好的回电,对河南建业仅得第三表示遗憾(我是河南人)。之后,我和学亮聊起足坛的一些事情,不亦乐乎。直接导致,我们坐过站了,还好,只是一站而已。



经典口误之股市播报 - [趣事]
Tag:

现在时间是8点20点。

刚报完欧洲股市运行点位的播音员,意犹未尽,在播时间的时候,也忍不住加了个“点”。



nginx 做代理服务器时的HTTP版本问题 - [c & c++]
Tag:

在NginxHttpProxyModule模块的说明中有:

It is an HTTP/1.0 proxy without the ability for keep-alive requests yet. (As a result, backend connections are created and destroyed on every request.) Nginx talks HTTP/1.1 to the browser and HTTP/1.0 to the backend server. As such it handles keep-alive to the browser.

即nginx和后端通讯用HTTP/1.0,通常这不是个问题,因为后端通常是产生内容,并不关心HTTP协议。但如果利用类似php的header函数,会产生诡异的问题。例如:页面301.php

  1 <?php
  2 redirect("http://www.google.com/", 301);
  3 function redirect($url, $type=301)
  4 {
  5     if ($type == 301) header("HTTP/1.1 301 Moved Permanently");
  6     header("Location: $url");
  7     echo 'This page has moved to <a href="'.$url.'">'.$url.'</a>';
  8 }
  9 ?>

直接访问该页面没有问题,但是通过代理访问就有问题了(因为第5行输出了HTTP/1.1的头)。通过代理访问的结果是:

52
This page has moved to <a href="http://www.google.com/">http://www.google.com/</a>
0

直接访问的结果是:

This page has moved to <a href="http://www.google.com/">http://www.google.com/</a>

解决的方法是,把第5行改为:

if ($type == 301) header("HTTP/1.0 301 Moved Permanently");、

更深层次的原因就需要研究HTTP协议和NginxHttpProxyModule的实现了。



size_t 和 time_t 的定义 - [c & c++]
Tag:

size_t 在32和64位不同:
32:
/usr/include/asm/posix_types.h:18:typedef unsigned int     __kernel_size_t;
/usr/include/linux/types.h:39:typedef __kernel_size_t              size_t;
64:
/usr/include/asm-i386/posix_types.h:18:typedef unsigned int        __kernel_size_t;
/usr/include/asm-x86_64/posix_types.h:18:typedef unsigned long     __kernel_size_t;
/usr/include/linux/types.h:39:typedef __kernel_size_t              size_t;

time_t 在32和64位相同:
/usr/include/linux/types.h:54:typedef __kernel_time_t              time_t;
/usr/include/asm/posix_types.h:21:typedef long             __kernel_time_t;

由此看来,size_t 只有在64位下,才能放得下time_t.


寻找办法是利用grep,方法很笨,很有效。



墙内红叶墙外红 - [往昔]
Tag:

周六爬香山,领教了“香山红叶”的威名。过了香泉环岛,公交基本就走不动了,我估计,搁地上放个乌龟,都比公交先到站。于是我就在卧佛寺下车。香山外面人很多,爬山的人倒不怎么多,因为已经近5点了。

这次爬山,心无旁骛,一口气窜到了山顶。这次还实现我的一个愿望,沿着香山的围墙走一圈。等我到山下时,已经6:10分了,最后那段,基本是摸黑下来的。

香山人很多,树叶却不领情,基本没咋红,倒是围墙外面红的一片一片的。

 



记购买变压器 - [往昔]
Tag:

家里的收音机太费电了,一个月就要两节电池,4块钱呢?不堪重负的我,决定买个变压器(220v变压到3v的那种),跟电池说byebye。

结果太出乎我的意料了。

我在鼎好地下2层,问了很多家,他们都说没变压器,即便有,也没这种型号的。更让我欣喜的是,一个貌似90后的小姑娘,竟然不知道啥是变压器。社会进步真快呀。

不甘心的我又跑到海龙,终于找到一家有的。估计很久没人买这东西了,店主想了想,跟我要35块钱。我迟疑了一下,终究没有买。一方面是因为从外形看,质量太差,另一方面,太贵了。

我最后,买了充电电池。两节电池35,充电器18,总算不虚此行。



File size limit exceeded - [c & c++]
Tag:

最初发现程序老是coredump,gdb发现是 Program terminated with signal 25, File size limit exceeded.

用ulimit -f 发现没有设置文件大小限制。写了个小的测试程序,发现文件写到2.1G时,系统打印 File size limit exceeded 然后就退出了。后来,同事提醒,明白了32位的操作系统,内存最大寻址也就2G。文件的offset偏移也有同样的问题。

但是用通过cat 追加文件,的确可以有2.1G以上大小的文件,所以一定有办法。

在网上找到两种解决方法:

1. 打开文件时指定 O_LARGEFILE 选项,只对open函数有效,对标准IO的fopen,没办法指定。

2. 编译时指定这些宏 -D_LARGEFILE_SOURCE -D_LARGEFILE_SOURCE64 -D_FILE_OFFSET_BITS=64。



博学,审问,慎思,明辨,笃行 - [编程]
Tag:

最近的一次领悟,来自,改了个MCDB的启动选项,使写入效率提高了10%。这个改动,来自老大的“疑问”。

我只是观察到MCDB的写入慢,cpu主要耗在等待写磁盘上,然后就想办法提高写入的效率。老大则问:写入数据的格式(是不是key-value,如果是,key是否有序),写入数据量是多少,为什么慢?

慢,只是现象,为什么慢才是需要思考的问题。是它本身就这么慢,还是由于某些原因导致它这么慢,如果是后者,有没有改进的办法,另外,改进,不仅仅需要考虑写入数据的情况,还要考虑数据在应用中的特点(事务性,持久性等)。

因为MCDB,本质上是BDB,所以需要琢磨BDB自身的特性,另外,还需要分析写入的数据的特点。

BDB是按页存储的,如果写入的数据,超过一页的大小,就需要分页(将数据分到多个页上),如果写入的数据很小,一页上可以放很多的数据,写数据的时候,会导致锁,降低并发。所以需要分析写入数据的大小特点,选择合适的页大小。

MCDB在使用BDB时,启用了事务,事务的持久性,导致需要不停的写磁盘。但是这个应用的特点,并不需要利用事务的持久性(事实上,根本不需要事务,但没办法禁用MCDB的事务,直接使用BDB的成本有比较高),它的数据是可重新计算生成的。BDB提供了选项,可以关闭掉事务的持久性,这样写磁盘的次数就大大减少。MCDB也提供了这个选项。

做了上述两个改进,尤其是关掉了BDB的事务持久性,性能提高了10倍。

问题解决了,整个过程对我有很大启发。如果当初没有老大的“疑问”,我会怎样?不停的想办法提高MCDB的速度吗(我当时想的方法是,改进磁盘的写入速度,并把MCDB分到不同的机器上)?

由此引出,测试,到底要测试什么的问题?

通常测试,是测试功能,然后是测试性能。功能有误,修改程序,性能不高,提高性能,我之前做的,似乎就这样了。现在,我认识到,测试还需要分析。需要在程序中加入统计代码,统计关键函数的执行时间,统计数据的大小,比率。每次测试,不仅仅应看到外表(功能,性能),还需要看到内部(关键函数的执行时间,关键数据的大小,缓存的命中率)。

另外,深入了解自己使用的工具的特点,了解自己应用的特点,在两者之间找到契合点,是更重要的(虽然常被我忽略)。



没有过去的人 - [往昔]
Tag:

其实不是没有过去,只是把过去都给忘了。我有时惊讶于我奇怪的记忆力,该忘的忘了,不该忘的也忘了,以至于回忆过去,一片空白。仿佛一个匆匆的行人,回想起走过的路,没有风景,只有匆匆的脚步。

学亮出差,在我这儿小住几天,说了些高中同学的情况,有上学时的,有毕业后的。他说的,我什么都不知道,仿佛我不是那个班的学生。我连我的同桌都记得不多了。

上学这些年,同学挺多的,终于都被我弄丢了。有时候,感觉没有朋友,现在终于明白,是我把他们都抛弃了。当一个人越是少的出现在一个圈子里,这个圈子里越多的人就忘记了他,如一缕青烟,越来越淡,终于不见。

至于为什么会这样,大概是自己过于拘谨,也可能是过于清明。“人至察则无徒”,真是这样。我并不自视清高,但却不屑于很多人为伍。

以前太傻了,与不同的人为伍,并不需要多大的忍让,何必拿自己的价值观去度量别人。求同存异,乃与人相交之道。

现在,凭此博客,记录琐屑之事,以免经年,空白一片。



不怕虎一样的敌人,就怕猪一样的战友! - [twitter]
Tag:

在小抄上看到这句话,太经典了,写在这儿,以免忘了。

“意大利为减伤亡,曾向塔利班缴纳巨额保护费”,这消息,还不知道真假,我已经太震惊了,意大利也太差劲了。

1. 德国兵不怕前线的对手进攻,就怕意大利军队撤退。

2. 意大利如果加入盟军,德国只用5个师就能收拾掉他;如果意大利保持中立,那么等于德国节约10个师。如果意大利加入德国一边,那么德国还的用20个师来保护他。

意大利的二战趣闻,摘自:http://world.people.com.cn/GB/1031/6654147.html

     一、1943年盟军在意大利登陆,有一个战场,盟军激战一早晨,无一伤亡,惟一的损失是自己的飞机把空降兵投到了大海里(把沙洲当成了滩头)。

  二、萨拉落登陆战中,盟军在滩头没有遇到抵抗,随军记者报道,盟军在滩头遭遇的最强的抵抗来自于当地动物园因为轰炸流落出来的一只美洲豹,咬伤了两名美军士兵。

  三、美军轰炸撒丁岛前面两个小岛,上面驻扎了1万多意大利人,但是最后盟军轰炸总共炸死了40多名意大利人,意大利就接受了美军飞行员的劝降。

  四、北非战争前期,一个意大利要塞在英军打了几梭子子弹后就打了白旗,意军指挥官一本正经地对英军指挥官说:“我们已经打完了最后一发子弹。”这时要塞里他的身边堆满了意大利制造的军火。

  五、在南斯拉夫,一名被游击队俘虏的德军军官十分惊讶地问:“你们哪来的反坦克炮啊?”当游击队员告诉他是从他们的盟军——意大利人手里缴获的后,他感慨不已:“唉!这些可爱的意大利人。”

  六、北非战役,英军坦克向意大利的反坦克炮阵地冲锋,数量不多,冲锋开始的时候,意大利人开炮还击,刚射击了两三分钟,突然停止抵抗,举了白旗,当英国人问及原因,意大利人理直气壮地说道:“因为我们的弹药箱没有撬棍打开,所以我们被迫投降。”

   七、1940年6月30曰,意大利驻利比亚总督巴尔博元帅在托卜鲁克上空被意大利自己的高射炮兵击落。意大利人为了掩饰这一惨重的不幸事件,便宣布元帅 是在同英国人进行空战中遇难的。格拉齐亚尼元帅成了他的继任者。这可能是意大利防空部队在二战中战果最辉煌的一仗了,可与美军猎杀山本五十六相媲美。顺便 说一句,巴尔博是二战中被误伤的军人中军衔最高的人。

  八、在北非,5000人的意大利军队遇到一个连的英军设下的路障后就地缴械了. 英军长官通过电台询问坦克手抓了多少个俘虏,得到的回答是1英亩军官,9英亩士兵。由于战俘太多,英军太不及造战俘营了,只要让军需官发给意大利战俘原材 料,让他们自己搭个战俘营把自己关起来。

  九、一个德军军官发现两个英军压着差不多一个连的意大利战俘,为了解救他们,向英军射击。结果意大利人终于跑起来了,不过是朝英军阵地跑去。

  十、拓扑路克之围时,隆美尔一大早巡视阵地,发现一个精锐的意大利火枪营的防区里空空如也,只有一地鸡毛。

 



这是在等红灯,不是堵车 - [twitter]
Tag:

别老是公交一停,就说是堵车。



公安部发出通知,严禁国庆期间在北京讲重庆话 - [群中那些事儿]
Tag:

今年9月初,两个重庆人到北京观光旅游,由于对北京的地理环境不熟悉,就在公交车上打开地图研究.
甲:“我们先杀到天安门,然后再杀到毛主席纪念馆,最后杀到中南海...”
乙:“要得嘛,我们就按到你说的路线一路杀过切。”
(注解:重庆和四川人说的杀是指去的意思)
不幸被同车群众举报,下车后即被扭送至公安机关,交代了若干小时情况后才被放出。
甲乙两人来到了天安门广场,看着人来人往,两人一时无语..........
甲忍不住:“你浪个不开腔(枪)喃?”
乙:“你都不开腔我浪个敢开喃?”
话音刚落,又被广场群众扭送至公安机关。
一周后两人走出了看守所大门,你看看我,我看看你.
甲说:“这哈安逸了,包包都遭整空了,哪点去搞点子弹嘛?”......门口的武警冲上来将两人按倒在地。(注解:子弹在重庆和四川方言里是钱的意思)

公安部发出通知,严禁国庆期间在北京讲重庆话!!!!!!



如果不能躲 - [小评]
Tag:

昨天在南方周末看到一篇书评,上写作者的母亲弥留之际说:“鬼子来了还能躲,运动来了往哪躲?”,感慨良多。比起外患,自己人祸害自己人的时候终究要多些,而我们还无处可躲。

较早一些时候,有同学在qq群上义愤填膺的说,“大家都不要上校内,校内被日本人收购了”,貌似帝国主义亡我之心不死。

我今天有点领悟:牢记历史,谨防旧事重演。相比被外人蹂躏,更应铭记的是被自己人侮辱。但是铭记,不是为了仇恨,而是为了防止旧事重演。



钱只是一方面--看南方周末说国家如何“吸引人才” - [小评]
Tag:

中国有很多留学生出去,都不回来了。我一直不明白为什么。看南方周末说,沙特用巨额薪金招聘的教授,后来都走了。我有点明白了。

原来不全是钱的问题,这是一个综合问题。除了钱,还有生活环境,文化环境,政治环境的缘故。



买醉 - [往昔]
Tag:

周末,老大请小组吃饭,大醉而归。

我的胃最近很糟糕,还在调养中。结果一顿饭,前些日子的调养都白搭了。老大很能喝,还找了位能喝的同事来陪酒(之前和他们吃饭,都不喝酒的)。不喝,就扫了大家的酒兴。只得豁出去了,畅饮一通。

我一直以为,人在江湖,可以按自己的意愿行事,没想到还是会身不由己。



香山,酸枣,美女 - [往昔]
Tag:

周六爬香山,同去者老沙,小飞。小飞是老沙的同事,是一位老香山了,他就住在香山脚下。

这次与往日不同,是下午5点开始的。其中更是多了些趣事。

半山之时,老沙与小飞聊到了酸枣。到了山顶,正好看见几株,两人的眼睛放出“绿光”,酸枣们惨遭“屠戮”。两人负责扒酸枣枝,我负责摘。

往前走了一段,发现一个美女在弹古筝,周围围着一群艺术爱好者。古筝弹的还不错,配合周围的风景,足以心旷神怡。

回去时,看见路边一位“奶奶”级的人物,坐在一把古筝前。她信手一拨,琴音不亚于山顶的美女。

我今天悟到,其实我也是艺术爱好者,“人体艺术”。



昨天运通118海淀桥北站北行方向一女士挤公交,把一双凉鞋挤掉,后弃之,随车而去。 - [twitter]
Tag:

昨天,海淀桥北站,人真的很多,乌洋洋的一片人。不明真相的人一定以为这是不明真相的群众在闹事。



了解自己使用的通讯协议 - [编程]
Tag:

错误:在通讯中使用协议不允许的字符。只有下列字符才能出现在xml 中 #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF],否则就是错误的。

使用REST接口,返回结果使用XML。有现成的库可以很方便的使用。当时为了编码方便,使用char表示0-255之间的数,这隐含着可能在通讯中使用了 HTTP+XML 不允许的字符。

因为使用的是包装好的库,更容易忽略这一点。



道人不是悲秋客,一任晚山相对愁 - [不如不遇倾城色]
Tag:

题淮南寺
程颢
南去北来休便休,白蘋吹尽楚江秋。
道人不是悲秋客,一任晚山相对愁。



std::string 连接字符的隐晦BUG - [c & c++]
Tag:

std::string s(1, 'a');
char c('b')
s += '|' + c;

我的本意是 s 应该等于 "a|b"。但是s.size()==2。原因是:s += '|' + c; 即是 s += ('|' + c); 后者先计算两个字符相加,结果是另外一个字符。



read socket 时僵死 - [编程]
Tag:

服务器A 通过F5 连 服务器B,当A已经连接上B,从B传数据时,F5和B因网络原因断开了。此时A依旧和F5保持连接,并且阻塞到read调用上,因为read没有设置超时,程序就僵死了。

这个程序的服务器端(即B服务器)是设置了超时的,通常情况客户端(这里是服务器A)没有超时也没有关系,但是这里还是出问题了。再次警示自己,“网络程序,一定要设置超时”。



邻家小孩儿记事 - [无题]
Tag:

我所住的地方,是北京的农村,聚集了形形色色的人,没有钢筋水泥的隔绝,很多都是多年的房客,彼此关系亲密很多,有点像老家农村。有的是带着孩子来做小生意的,有的是后来在北京生了孩子的。

去年底,邻居家得了个儿子,如今都会坐在童车里玩了。每次看见他,我都驻足片刻,“小伙子”越来越可爱了。他会抱着大苹果无处下口,也会抱着玉米棒乱啃,还会把牛奶喝的满脸都是。

还有几个7,8岁模样的小孩儿,虽然论年岁,感觉7,8岁也不小了,可是看他们,感觉好小啊(莫非是自己太老了)。今天两个小孩儿,从早市买了两只小鸡(刚孵化出来的小鸡),正找纸箱子给它们“安家”呢?看着他们摆弄着各式的纸箱子,有蒙牛的,有汇源的,有种回到小时候的感觉。

坐在童车里的那位也不安稳,伸出手去,像要抓箱子,又像要抓小鸡。可是他太小了,什么也够不着,看着他“努力”的样子,我忍不住直乐。

我一直觉得,虽然这里是北京,但有种亲切的感觉,类似童年的熟悉场面。我在想,小孩子应该在怎样的环境中成长呢?现代都市,全职太太很少了(全职二奶倒是挺多的),小孩子如果有爷爷奶奶带还好点,他们可以领着他(她)在附近溜达,如果交给保姆,整天呆在家里,对小孩子是不好的吧。还有稍大点,会自己跑动的时候,除了幼儿园,身边又没有同龄的孩子,童年岂不很乏味。

邻居家的这位,妈妈经常抱着在外面(她经营一家小商店),好奇的眼睛看着世界。房东太太,其它邻居,偶尔还抱抱他,连我都会对他示以微笑。比起待在“象牙塔”里的孩子,要欢乐很多吧。

兴许是我不了解当下,我希望现在的孩子,有欢乐和值得回味的童年。



第三年在北京“暂住” - [关于我, 关于某人]
Tag:

若不是每年办“暂住证”的提醒,我几乎忘了,我一直是在自己的祖国“暂住”。有很多彪悍的人,他们是不办暂住证的,我也想彪悍来着,可联想到“京郊采石场”,我就懦弱了,“还是老实点吧”。何况,我的房东不错,只要把东西交给她,她替我办好一切。

去年是史无前例的奥运,今年是伟大的60国庆,所以以我房东的话讲“办暂住证,可比买火车票难多了”,因为房东是托一个小伙子排的队,大概是凌晨12点就开始的。

前两年的暂住证是黄皮的,今年改红皮了。老实说,我还是喜欢那个黄皮的。

 



甲流在身边 - [甲流记事]
Tag:

随着时间的推移,大概发现甲流的“致命性”不强,感觉很多地方都疏忽了很多。隔离级别,也降低到了在家隔离。之前每有甲流病人确诊的消息传出,大家都唏嘘一阵,现在大家却习以为常。

直到今天,更确切的说应该是昨天。

昨天晚上和同事一起吃饭,消息称“公司19楼确诊一例甲流”。我稍微的心惊了一下。

今天来公司,北门已经封闭,南门有保安检查体温。看来甲流真的来了,但愿没有别的人感染。



让 http_load 支持 https - [编程]
Tag:

http_load 是支持 https 的,但是Makefile 要作些修改(具体看Makefile的注释),修改后可能会报链接错误,提示ssl 找不到 dlopen 等。

此时,需要继续修改Makefile

LDFLAGS =  -s $(SSL_LIBS) $(SYSV_LIBS)

改为

LDFLAGS =    -s $(SSL_LIBS) $(SYSV_LIBS) -rdynamic -ldl

如果使用dl*函数,需要-ldl



一段比较得意的 stl 代码 - [c & c++]
Tag:

#include <algorithm>
#include <functional>
#include <iterator>
#include <vector>
#include <iostream>

template <typename Tp>
class IfIn : public std::unary_function<typename Tp::value_type, bool> {
public:
    IfIn(Tp begin, Tp end) : begin_(begin), end_(end) {}
    IfIn(const IfIn &rhs) : begin_(rhs.begin_), end_(rhs.end_) {}
    bool operator()(const typename Tp::value_type &v) const {
        return std::binary_search(begin_, end_, v);
    }  
private:
    Tp begin_;
    Tp end_;
};

template <class Tp>
inline IfIn<Tp> ifIn(Tp begin, Tp end) {
    return IfIn<Tp>(begin, end);
}

int main() {

    char c1[4] = {'a', 'd', 'c', 'g'};
    char c2[5] = {'a', 'k', 'c', 'f', 'h'};

    std::vector<char> v1(c1, c1+4);
    std::vector<char> v2(c2, c2+5);

    std::sort(v2.begin(), v2.end());
    std::vector<char>::iterator end = std::remove_if(v1.begin(), v1.end(), ifIn(v2.begin(), v2.end()));
    v1.erase(end, v1.end());

    std::copy(v1.begin(), v1.end(), std::ostream_iterator<char>(std::cout, ","));
    std::cout << std::endl;

    v1.assign(c1, c1+4);
    v2.assign(c2, c2+5);

    std::sort(v2.begin(), v2.end());
    end = std::remove_if(v1.begin(), v1.end(), std::not1(ifIn(v2.begin(), v2.end())));
    v1.erase(end, v1.end());

    std::copy(v1.begin(), v1.end(), std::ostream_iterator<char>(std::cout, ","));
    std::cout << std::endl;

    return 0;
}



周末爬香山 - [往昔]
Tag:

周末爬香山,途中脑子突然灵光很多,想起很多之前背过的诗歌,虽然都是些片段,但是在山道之上,还是很兴奋的。

记得上次爬山,在一陡峭处,筋疲力尽,几欲放弃。这次又到了这儿,我精神很好,念叨一句“我来报仇了”,很轻松的就爬过了。

这次爬山,感觉没上次那么累了,难道是那些诗歌的作用!




Page共10页 1 2 3 4 5 6 7 8 9 10 下一页 最后一页
© Powered by BlogBus.Com. 2002-, All Rights Reserved.