Open Water Diver 开放水域潜水员

去年一次偶然的机会在山鹰户外看到潜水课程的介绍,好奇驱动之下踏入了潜水领域,去年就完成课程拿到PADI的OW证,在珠海附近玩过几次。今年8月份又去了菲律宾PG岛潜水度假,算起来也玩了20瓶气左右了,写点关于潜水的入门介绍,让有兴趣的朋友可以了解一下。

首先PADI是一个国际的潜水认证机构,参加他们的课程并且通过考核可以得到他们的潜水员资格证。OW就是OpenWaterDiver的缩写,是入门潜水资格证。类似的认证机构还有CMAS跟PSAI等,他们之间的区别就像是雅思跟托福之间的区别,就是不同的机构提供的课程以及认证。PADI算是最著名的,相应学费会贵几百块,不过无论哪一种都是国际通用的,他们之间也支持相互认证,例如PADI的OW可以考CMAS的2星(进阶)潜水证。所以其实哪个机构颁发的潜水证都一样,主要看课程设置和教练教学质量。

很多人对潜水这活动第一印象可能会觉得门槛有点高。装备是不是很贵?还没会游泳怎么潜?其实一开始了解潜水并不用花很多钱,一次体验潜水(教练抓着你带你潜)大概就500多,一套OW的课程就3千多,包括理论课程,平静水域(泳池)学习课程,开放水域(出海)学习考试费用以及期间装备的使用费用。不会游泳也没有关系,潜水课程会教你如何通过使用潜水装备漂浮游泳,借助潜水服蛙鞋呼吸管达到漂浮游泳是十分简单的事情,基本一个上午的练习就能掌握。普通人花3千块钱左右和几个周末的时间就能了解掌握潜水的基本知识、体验到潜水的乐趣并且得到一个潜水资格证,其实并不贵。当你了解潜水以后,如果想继续玩的话,买一整套装备大概需要八九千,也可以选择租潜水店的装备,租金通常是2百左右一天。

Continue reading

《后会无期》观后感

今晚去看了《后会无期》,这部电影完全没有给我意外,为什么这么说呢?因为这部电影跟《1988》架构是一样的,都是讲述主人公开车穿越中国,途径各个小镇荒漠遇到的人与事来展示社会现象与人生百态。甚至其中一些剧情(嫖妓被抓)、人物(披着军大衣睡沙发的女店员)和台词(包夜包日)都能在《1988》里面找到一模一样的。当然这是无可厚非的,毕竟是他自己的小说,而且也只是架构一样,内容还是很不同的,比直接搬小说上银幕的厚道多了。

但同时这是一部很意外的电影。因为电影该有的套路,情节跌宕,情感起伏、故事铺垫、起承转合,这些在这里都没有。即使参照公路电影来看,也没有公路电影应该有的主题:通过旅途中的事和遇到的人给予的感触从而带给主角改变甚至升华。电影中的三位上路者,第一天就丢了的胡生,旅途完依然天真;奋斗拼搏的浩瀚旅途完了依旧满怀理想的要去闯,而依旧不知道该闯什么。唯一有点改变的算是沉默规矩的江河,后面转变为文艺大师,抱得美人归,但我想这也是他本身坚持的性格所产生的结果,旅途只是给他一个机会。

要赞的是,这部电影与韩寒的小说一样,在许多细节中隐藏了好多东西供我们挖掘,总能在不经意间触动到心里的共鸣,在有意无意中给予很多的感触。就如同第一天就走丢的傻子,这看似很无厘头的设定,似乎就是隐喻我们在人生道路上最先丢掉的童真。而不同的人可以用不同的角度去解读和理解这部电影,里面有现实的残酷与无奈,也有转角的希望与真爱,有心灵鸡汤的滋润也有赤裸裸的耳光,有旅行者的收获与路上的风光,也有默默耕耘的回报与坚持的成功。只要你用心去发掘,总能找到你想要的东西,并且没有主体思想与正确解读。

当然也有不足的地方,就是各种鸡汤语句的乱入。单独拿出来看好像挺有意思的段子,写在QQ签名中装逼一下就算了,无节操的穿插到电影中就太生硬了。第一部电影的这毛病就跟他第一部小说《三重门》一样,乱丢书包,想到一些好像挺有意思的句子就要塞进来,生怕别人不知道,效果反而适得其反。为什么写小说都知道后面改掉这毛病了,转到电影上又这样了呢?是怕电影没有可宣传的点吗?

正路不正路,好的不好的分析了半天,还是说点自己的感受吧。看完以后我的心情是很沉重的。电影中总是有意无意的让你感受到现实的残酷与无奈。像努力上爬的蜥蜴最终摔落地板,那你是往上爬呢还是不爬?求而不得的卤蛋,最后却嫌弃了,那你是求呢还是不求?无惧风浪的信仰其实是抛家弃子的谎言,那你是信呢还是不信呢?维持十八年的纸上爱情原来是欺骗,那你是爱呢还是不再爱了?孤独骑士勇往直前的鼓舞原来只是欺骗,那你是前进呢还是退缩?都说人艰不拆,韩寒偏要拆,拆完了还精巧的包装起来戏弄你,逗你笑,但笑完了我却笑不出来了。

不过我还是对未来充满期待的,就算现实残酷,或者最终如同片尾曲一样是一条《平凡之路》,但人生就一次,后会无期,不用心的走走看看,我是不会甘心的。

 

六七月份忏悔录

六七月份都干了什么呢?为什么要忏悔?因为六七月什么都没干,所以要忏悔啊。

首先工作方面,六七月份都要求加班,每天朝九晚九,不过这个版本我手头上的工作不多,所以每天上班其实有很多时间可以利用得。本应用来看看书或者整理一下现有的代码,结果都没有做到,浪费了好多时光。

看书方面,之前一直在看《游戏编程精粹(一)》,挺好的一本书。讲解了一些游戏开发的成熟解决方案,一些通用的技巧,还有数学以及图形学方面的底层知识。虽然这本书出了十年了,好一些内容过时了,但还是具有很高的参考价值的。不过正如上面所说,六七月份读书进度基本没怎么开展,哎,罪过罪过…

自学Unity3D方面,之前效率还是挺高的。买了《Unity3D游戏开发》和蛮牛网出的《Unity权威指南》来看,两本讲得都是很基础的知识,其实只要看其中一本就可以了。看完后就开始上手做东西,还是学到挺多知识的,也对现有的开发模式有了一些思考,不过不在这里展开说了。到了六七月份,因为加班的缘故,回到家都晚上九点多十点了,周末又经常有事情,所以这方面也没什么进展。

锻炼身体方面呢,本来还可以坚持每周跑两次五公里的,但随着世界杯的开始,熬夜看球,平常又加班,本身人就好累了,结果基本一周只跑一次,有一两周还一次都没跑。真是好堕落啊。

Continue reading

C++ 数据对齐 问题

上一篇文章提到了数据对齐问题,那我们就来看看C++数据对齐的规则,举例分析一下,最后看一个由数据对齐引起的BUG,并思考其带给我们的意义。

首先为什么要数据对齐?现代的64位计算机,总线位宽为64个比特(bit),即8个字节(byte),CPU的寄存器也是8个字节大小,所以访问内存也总是以8个字节为单位。如果一份不足8字节大小的数据因为布局问题跨越了两个8字节单位,这样要读这份数据的时候,就要通过两次总线传输,传递16字节的数据,CPU也要分级缓存这16字节的数据,这实在是太糟糕了。同理,对于32位的系统,小于4字节的数据就不应该夸两个4字节空间,还有其他的平台可能数据访问一次只有2字节甚至1字节。综合这些,数据对齐就是要求数据应该排放在其大小的自然边界上,简单说就是大小为N(1,2,4,8,16,32)的数据不应该放在两个N格子之间,而应该放在一个单独的N格子之内。

上面解释了为什么要数据对齐,要对齐的情况好像还挺多的,也挺复杂的。我们把编译器关于数据对齐的策略总结为三条规则。

规则一:成员变量根据自己的大小来对齐。

规则一的意思就是,关于结构体内该成员是否要对齐,对齐到什么位置,不是看上一个变量,也不是看下一个变量,而是看自己。定义一个int,就要对齐到sizeof(int)整数倍的位置,定义一个double,就要对齐到sizeof(double)整数倍的位置。

规则二:结构体大小必须是最大成员变量大小的整数倍。

规则二定义的是结构体数组最后补齐的情况,如果一个结构体中定义了一个int与一个double,那么最大成员变量是double,大小为8。这时结构体虽然只有4(int) + 8(double)= 12字节大小,但会补齐为8的整数倍 16。这样做是为了处理结构体数组时,每一个结构体内的每一个成员变量都处于边界上。

结合规则一与规则二,我们就可以处理简单结构体的数据对齐了,先来看个例子:

Continue reading

利用C++特性 从内部成员地址索引外部对象

标题很纠结,来看看实际需求。我们经常说的class A 包含 class B有两种形式,一种是继承,一种是组合。对于这两种情况,假设我们现在得到class B 的地址,怎么通过这个地址反向找到class A 的地址呢?

首先来看看组合的情况:

wp1

对于GetExternalData()函数而言,它只拿到了内部成员MyClassB的地址,但想通过它访问外部的MyClassA的数据要怎么做到呢?首先我们要对于MyClassA的内存布局有一个概念:

Continue reading