莫提起,提起泪洒江河



昨天的“画时圆,写时方。冬时短,写时长。”还是比较简单,大家都能猜出是日。

这个题目来自小乐的寒假作业,说的是王安石给好朋友王吉甫出了一个谜,当然王吉甫并没有简单地回答,而是又回了一个谜:

东海有条鱼,

无头亦无尾。

去掉脊梁骨,

便是你的谜。

而同事也是如此,回了一个“早晨有,上午无,时间有,金钱无”,都是才子风范。

继续出一题,小乐的寒假作业中还有一篇,说的是一个秀才渡河,船工出了一个谜:

在娘家青枝绿叶,

到婆家面黄肌瘦。

不提它沉默不语,

一提它泪如雨下。

而秀才回的是:“忆往昔绿叶婆娑,看今天青少黄多,受尽了风浪折磨,一提起泪洒江河。”

这道题目同样出现在了同事的讲稿中,“少小时,绿鬓婆娑, 自入郎手青少黄多;经过几多磋磨, 经尽几许风波; 莫提起, 提起来, 泪满江河!”

看来也是经典谜题了,刚google了一下,出处应该来自苏曼殊,“想如今,绿叶婆娑,自归郎手,青少黄多,受尽多少,历尽多少风浪,莫提起,提起泪洒江河。”

不过版本好多,几乎没有一个字完全是一样的,比如下面的:忆昔时,绿叶婆娑。自归郎手,青少黄多。受尽了几多折磨,捱尽了不少风波。唉,莫提起,提起泪滴江河。

即使最后的这一句“莫提起,提起泪洒江河”,也有泪洒、泪满、泪滴,真不知原版的是什么了?

这个谜的谜底大家可以在图片上找,谜面描写的却是一位历尽沧桑饱受煎熬的妇女,令人慨叹和同情,而最后一句:“提起泪洒江河”,听了之后,在女子是悲伤哀怨;而在男子却是悲壮慷慨,也实在是一绝。

欢迎订阅讲述我和小乐成长中故事的微信账号: fuyunv

吾不如子房



看题目以为要讲历史故事的人就错了,今天要说的是猜谜。

事情的缘起是乐妈在朋友圈里发了一条:

不知怎么回事,从姐姐家混吃回来,就有失声迹象,唱一首《你的眼神》,恩很磁性,哥说“嗨,徐小凤呀”,哎,天生丽质,什么状态都能有不同味道,妹妹我真是百变女人,让人回味无穷呀

然后同事张大才子回了一句“吾不如子房”。这下乐妈就晕乎了,这啥意思呀?再问方知是一谜面,得猜出来才行。

前几天同事刚给了我他准备的《美妙而孤独的文字游戏——中华灯谜浅窥》的讲稿材料,当时看了就觉得真没看出这家伙还有这一手,要让小乐听听才行。没想马上就对了一个,我又翻出材料,果然谜底就在其上。

小乐听到我们的对话,在边上也急了:“你们说什么呀?”我大致说了一下。

“子房你知道是谁吗?”

“张良。”

“对的,这是刘邦说的。汉初有三杰,张良、萧何、韩信…”

“我知道这个故事的,在学校的故事书里看到过的。”

刘邦在讨论“吾所以有天下者何?”问题时说“夫运筹帷幄之中,决胜千里之外,吾不如子房;镇国抚民,给饷馈,不绝粮道,吾不如萧何;连百万之众,战必胜,攻必取,吾不如韩信。三者皆杰,吾能用之,此吾所以取天下者也。”

不说历史,回到这个谜语。答案又是什么呢?即使知道子房为张良,也还是好难啊。需要联系到乐妈发的话,“吾不如子房”——自我感觉良好,是不是还是很贴切呀?

说到了谜语,小乐的情绪也上来了,立马给我出了一题。

“一个白人和一个黑人生了一个孩子,牙齿是什么颜色的?”

我一想,这问题还想难住我呀,牙齿和白人、黑人有啥关系呀?还有黑人牙膏呢,骗三岁小孩呀。立马回答:“白色。”

“错了,刚生出来的孩子没牙齿。”

我倒!!!

“不过这是脑筋急转弯。”乐乐说:“我再出个谜语,你明天让张式勤叔叔猜猜。”

画时圆,

写时方。

冬时短,

写时长。

“好,我现在就给他。”

大家可以猜猜看,更多的谜语故事明天继续。

Objective C property



Objective C的属性定义时提供了一堆的修饰符,readonly, readwrite, assign, retain, copy, nonatomic,看代码都糊涂,看了一下《The Objective-C Programming Language》中有关属性定义的章节,节选如下:

Accessor Method Names 存取方法名称> 属性对应的getter, setter默认的方法名称是propertyName和setPropertyName:,比如属性“foo”的存取方法是foo和setFoo:。
>
>
getter=getterName 指定属性的get存取方法名称。对于布尔型值会用is作为get存取方法的前缀。
> setter=setterName 指定属性的set存取方法名称。如果属性是readonly,而指定了setter方法,会得到编译错误。
>
> 使用.是对getter和setter的简便的封装,两者是一致的。
Writablility 读写属性> readwrite: 默认。
>
readonly
>
> 在implementation块中使用@synthesize 自动生成getter/setter存取方法。

Setter Semantics setter方法语义> assign: 默认,表明setter使用简单的赋值,用于标量数据类型,如NSInteger, CGRect,或者不是你拥有的对象,比如delegate。retain和assign在GC模式下是一样的。
> retain:用于对象赋值。前一个值会被发送一个release消息。Mac OS X v10.6以前只针对Objective-C对象类型有效,不能用于Core Foundation对象;但在v10.6以后可以使用attribute关键字标明Core Foundation属性在内存管理上和对象同样对待,比如:
> > @property(retain) attribute((NSObject)) CFDictionaryRef myDictionary;
> > `
>
>
copy:表明对象的拷贝用于赋值,前一个值会被发送一个release消息,拷贝通过调用copy方法实现。只针对对象类型有效,并且必须实现NSCopying协议。
>
> 不同的约束依赖于你是否采用GC:
>
> 如果你没有使用GC,那么对于对象属性你必须严格标明是采用assign,retain或者copy,否则会得到一个编译器警告。(鼓励你想明白到底采用什么方式的内存管理。)
>
如果你使用GC,那么默认情况下不会得到警告,除非属性类是基于NSCopying。

Atomic 原子性> atomic,默认。存取方法在多线程环境中提供更安全的存取。如果使用了retain或copy,而没有表明nonatomic,那么在引用计数的环境中,get存取方法使用锁来保持和释放要返回的值,类似于:
> >
`
> > [_internal lock]; // lock using an object-level lock
> > id result = [[value retain] autorelease];
> > [_internal unlock];
> > return result;
>
> nonatomic,直接返回值,效率更快。
>
> 注意:属性的原子性并不等同于对象是线程安全的。
Manage Ownership> weak
>
strong: default。
>
> 这个要和assign, retain, copy整合在一起看看Objective C的内存管理机制才行。

朱元璋的小名



最近给小乐讲的是《明朝那些事儿》,在中间跳到海瑞和戚继光之后,重归开篇,从朱元璋开始讲起。

朱元璋的小名是朱重八,而有关这个名字的来历作者是这样说的。

在小朱五四出生一个月后,父母为他取了一个名字(元时惯例):朱重八,这个名字也可以叫做朱八八。我们这里再介绍一下,朱重八家族的名字,都很有特点。

朱重八高祖名字:朱百六;

朱重八曾祖名字:朱四九;

朱重八祖父名字:朱初一;

他的父亲我们介绍过了,叫朱五四。

取这样的名字不是因为朱家是搞数学的,而是因为在元朝,老百姓如果不能上学和当官就没有名字,只能以父母年龄相加或者出生的日期命名。


虽然听起来很有趣,不过这个说法靠谱吗?

先看重八的含义,是属于出生于八月八日呢?还是父母年两相加为88岁?

朱元璋出生于元文宗天历元年九月十八日(1328年10月21日),看来不符合出生8月8日的说法。而其出生时,以虚岁算,父亲(1281年出生)为48岁,母亲(1286年出生)为43岁,两者相加年龄为91岁,和88也不相符。看来重八的含义并非来于此。

再看《朱氏世德碑》:“先伯娶刘氏,生子四人:重一公、重二公、重三公生盱眙,重五公生钟离。先考君娶妻陈氏,泗州人,生子四:长重四公生盱眙,重六公、重七公生五河,某其季也,生迁钟离后,戊辰年。”。

以此来看,重八应是按兄弟辈分排名而来,当年明月在书中的说法并不成立。至于所说的元朝惯例,百姓如果不能上学和当官没有名字,虽有清代俞樾《春在堂随笔》云:‘元制:庶民无职者,不 许取名,止以行第及父母年齿合计为名。’但在元史中并没有考证。

陈高华:论元代的称谓习俗中的说法应该还比较靠谱,摘录如下:

元代还流行以数字为小名。最有名的是元末起义首领张士诚小名九四,他的兄弟张士德小名九六。(注:《明史》卷一二三《张士诚传》。)。後来成为明朝开国功臣的常遇春,曾祖名四三,祖重五,父六六(注:宋濂:《常开平王神道碑》,《宋文宪公全集》卷四。)。这种情况在元代是相当普遍的。为什以数字为名,有不同的说法,有的可能是父母或祖父母的年龄,有的可能用数字表示辈分和行序。有一种意见认为,用数字作人名元代独盛,这是不确的。元代这种现象很多,但唐、宋亦不少,可见由来已久。又有一种意见认为,元代“庶民无职者不许取名,止以行第及父母年齿合计为名”。也是不很准确的(注:见愈樾《春在堂随笔》卷五引《德清蔡氏家谱》,吴晗先生力主此说,见《朱元璋传》第2-3页,人民出版社1985年版。)。现存元代文献(如《元典章》)便记载了不少元代“庶民无职者”的大名(官名)(注:参看洪金富:《数目字人名说》,《史语所集刊》第五十八本第二分。)。从现有的文献来看,只能说,以数字为名者,以普通百姓居多,这应该是他们缺乏文化所致,并不是政府对此有专门的规定。

看来看书要考证一项内容实属不易,尤其是读史,在和小乐讲故事的当中,不敢轻下断言,使得自己也不断地又重新学习质疑和考证。

一款名叫“204分”的扑克游戏



和乐乐玩扑克牌比较少,24点算一个,不过大多是看着车牌算的,偶尔会拿扑克钓钓鱼。这段时间小乐生病,玩不了激烈运动,书呢,也不允许常看,所以间歇的时候就陪她玩一会扑克,小家伙算是知道了争上游的规则,有顺子,有连对,四个算炸弹。

玩牌的过程中,翻起了儿时的记忆,小时候我和老妹常玩一个扑克游戏,204分。于是就教给了小乐。

基本的规则:

游戏可以2~4人。 起手每人5张牌,按顺时针轮流。
每个人在轮到自己时,可以选择以下三种:> 先摸一张牌,再出一张牌放入牌堆;
> 如果牌堆中有牌,可以从牌堆中换牌,换牌的规则见下;
>
如果自己已经成牌,可以选择把手牌盖下,说“成”了。

换牌规则:如果牌堆中牌数小于5张,换牌必须将手上的牌和牌堆中的牌全部置换;如果牌堆中牌数为5张,可以选择全换或者仅换一张。如果牌堆中有5张牌,玩家选择摸牌,则这5张牌全部废弃。 成牌和计分规则:> 游戏的目标是每个人通过换牌和摸牌把牌组成,普通方式是5张牌均选择同一种花色,大小王为百搭,可以算任意花色。
>
当5张牌均为同一花色时,此时可以计分,2~10根据自己的点数算,J,Q,K和大小王均算10分,A算11分,一旦5张牌相加分数大于等于40分时,可以成牌。按点数计算,5张牌最大的分数为51分。
> 特殊分数1,如果5张牌是10, J, Q, K, A,则分数翻倍,为102分。
>
特殊分数2,如果5张牌是4张相同的牌,比如4个3,再外加一个A,则分数再翻倍,为最高分204分。(如果为4个A,则另一张牌可以为任意牌)
> * 一个人选择成牌后,其他人员依次选择“跟”或“反”(如果没有分数则无需选择),选择“跟”的表示双方各计各分;选择“反”,则双方需要比分数大小,分数大者通吃。一旦有人“反”,则其他人员必须选择“跟”的对象或者再“反”。如果出现相同分数,4个的按牌大小,非4个的按A,K,Q,J…大小依次相比。

这个游戏挺快能上手,并且有一定的趣味性(比钓鱼好玩;-),人数多时会更为有趣。一方面自己需要组好牌局,并混淆对方;一方面要防范或者破坏对方,比如快5张的时候故意丢弃对方需要的牌,使他无法置换。而在游戏最后的关头选择是“跟”还是“反”,也是需要思想斗争,如果碰到两强相遇,要站队也不是一件容易的事啊!

一直不知道游戏正式的学名该叫什么,记得小时就直接按分数204分来叫的,离开浦江后,在外面也没有接触到过,不知道其他地方是否有类似的游戏,刚才问乐妈,杭州似乎不见有这玩法的。建议做棋牌游戏的可以做一个。

BTW. 大家如果有有趣的扑克游戏,推荐一下,最好是能适合两个人也可以玩的。

Mac book Pro升级



虽然用了Tmpdisk将内存虚拟成临时存储,但整体性能还是没有提升,所以最后还是选择对自己的老机器做一次升级,将内存从4G到8G,并在光驱位上安装一个SSD硬盘。

首先确定自己的主机配置情况,我是搞不太清楚的。到Check Your Service and Support Coverage,输入我的序列号:XXXXXXXXXXXX,得到的结果MacBook Pro (13-inch, Early 2011)。然后在如何识别 MacBook Pro 机型中可以看到,“MacBook Pro(13 英寸,2011 年初)MacBookPro8,1 MC724xx/A 13.3”/2.7 i7/2x2GB/500-5400

MC700xx/A 13.3”/2.3 i5/2x2GB/320-5400”,我的机器是i5。

可以看到最大内存是4GBx2 DDR3,也就是只能到8GB,内存的安装和拆卸还是比较简单的,参见如何安装或拆卸内存

比较麻烦的是光驱位安装硬盘,先是选择硬盘,可以在关于本机的system report - system information中看到,Link speed 是6Gb,SATA3 的接口,选择了Toshiba的2.5 SATA3 128G

拆机安装前重点参考了两篇文章:

一是自行 DIY 打造 Fusion Drive 雙碟合一環境! 二是MacBook Pro 升级 SSD 全流程图解

我采用的也是Fusion Drive模式,把两个硬盘混搭,懒得自己去分别管理两个不同的硬盘。

安装基本还算顺利,注意的点是,卸下光驱的时候,在光驱左上角还有一颗隐藏的螺丝,不要硬拔。还有在安装完成后,使用Trim Enabler打开SSD硬盘的TRIM功能,以起到保护作用。

最后可以采用Disk Speed Test做一次磁盘读写的测试。这两天使用速度不错,感觉挺好。