标签归档:原创

规矩

  1. 晚10点之后停止学习和玩游戏。
  2. 早6点起床,规划当天的事物。
  3. 百年树木,十年树人,不要短视,做好长期作战的准备。
  4. 反思该保持,日记该记时还得记。
  5. 为人第一,处事第二。以心为参照,顺心为大。

活着的意义

引言

这个问题是时常浮现在我脑海的。为此我经常放弃,往往在即将成功时我就质疑:我为什么要做这个?
我做这件事情的意义是啥?进而想到活着的意义是啥?

本能

我看狗是很开心的,他活的很自在。便想呀,狗真的开心么?有得吃很开心,天冷了找个暖和的地方很开心。这些是动物的本能,生存的本能。那人呢?
人除了本能驱使还会思考。
人除了生存的本能还有欲望。
欲望有性、金钱、权利等。
马斯洛的需求层次性可以描述人的需求。

马斯洛之人性需求

  1. 生理需求
    呼吸、水、食物、睡眠、生理平衡、分泌、性

除了性,其它几点都是生存的必须品。只有满足了这些,人才会去考虑其它方面。

  1. 安全需求
    人身安全、健康保障、资源所有性、财产所有性、道德保障、工作职位保障、家庭安全

马斯洛认为,整个有机体是一个追求安全的机制,人的感受器官、效应器官、智能和其他能量主要是寻求安全的工具,甚至可以把科学和人生观都看成是满足安全需要的一部分。当然,当这种需要一旦相对满足后,也就不再成为激励因素了

  1. 社交需求
    友情、爱情、性亲密

人人都希望得到相互的关系和照顾。感情上的需要比生理上的需要来的细致,它和一个人的生理特性、经历、教育、宗教信仰都有关系。

  1. 尊重需求
    自我尊重、信心、成就、对他人尊重、被他人尊重

人人都希望自己有稳定的社会地位,要求个人的能力和成就得到社会的承认。尊重的需要又可分为内部尊重和外部尊重。内部尊重是指一个人希望在各种不同情境中有实力、能胜任、充满信心、能独立自主。总之,内部尊重就是人的自尊。外部尊重是指一个人希望有地位、有威信,受到别人的尊重、信赖和高度评价。马斯洛认为,尊重需要得到满足,能使人对自己充满信心,对社会满腔热情,体验到自己活着的用处价值。

  1. 自我实现需求
    道德、创造力、自觉性、问题解决能力、公正度、接受现实能力

自我实现的需要是最高层次的需要,是指实现个人理想、抱负,发挥个人的能力到最大程度,达到自我实现境界的人,接受自己也接受他人,解决问题能力增强,自觉性提高,善于独立处事,要求不受打扰地独处,完成与自己的能力相称的一切事情的需要。也就是说,人必须干称职的工作,这样才会使他们感到最大的快乐。马斯洛提出,为满足自我实现需要所采取的途径是因人而异的。自我实现的需要是在努力实现自己的潜力,使自己越来越成为自己所期望的人物。

缺少欲望或恐惧

驱使人前进的两大动力:欲望和恐惧。
为什么我老怀疑做事的目的呢?因为我缺少欲望和恐惧,没有原始驱动力。

行为解释

厌恶加班:因为它侵犯了安全需求,会影响健康保障。–安全
没有工作的动力依然工作:实现安全的需求,财产所有性。–安全
宅家看小说:缺少社交需求,从书里寻找感动,平时社交交往中并没有得到友情和爱情。–社交
花时间学习:提高能力,实现尊重需求和自我实现需求 — 尊重&自我实现

改进

围绕着5个需求层次做。
缺乏基础,在没有满足社交需求的情况下,就开始追求尊重需求和自我实现需求。
这也是怀疑生活的意义的根源。
现在不那么缺钱,工作的动力基本等于无。
时间没有用在社交上,情感缺失。
多和人交流、相处是解决目前问题的根本解决办法。

追求自己想要的生活方式

你要先知道自己想成为什么样的人,然后才能成为什么样的人。

  1. 在某一领域成为世界级专家。
  2. 财务自由,不需要为生活发愁。
  3. 有一个不错的家庭。

你要先知道想要什么样的生活,然后就去追求吧。

  1. 早睡早起,5点起床
  2. 每天有学习、有进步
  3. 与科技为伍
  4. 每天能有时间放空自己,什么都不用去想。
  5. 有时间锻炼身体,保持健壮的体魄。

技术总监工作

技术总监的主要工作内容

  1. 团队管理,体现在招聘和团队状态管理,员工绩效考核
  2. 辅助公司方向决策。
  3. 运维管理,运维团队直接支撑公司服务稳定性和长期发展方向,需要主抓。
  4. 数据库设计。数据是最核心的。

其它事情都可以放开,让别人去做。

emacs 一文入门

引言

一直是用vim的,之前虽然知道有emacs,也知道emacs和vim之争,印象中只有一句话:”vim是编辑器之神,emacs是神的编辑器。” 那会试了下emacs,不知道怎么关闭,直接强关的终端。 看了《黑客与画家》后,看作者对lisp的推崇,产生了点兴趣,百科了下。发现说法看得我晕了,当时放弃了。之后又看到本书 《程序员的呐喊》,一个google工程师写的。也是比较推荐lisp。然后各种搜索看大家的看法。兴趣又调了起来。于是开始学习, 发现教程都是以emacs开始的,于是也学习了emacs,折腾了一天一夜,终于觉得可以开始实际用起来了。于是开始写这个笔记了。

阅读一年成为emacs高手

安装emacs配置

犯了个错误,用了很久的vim,为了安装evil花了点时间,其实配置里面已经有了。 平时会写php,所以搞了个 php-mode, 但是系统函数的自动补没有弄好。 大师的配置

阅读了一下emacs的使用手册。C-h t即可看手册,C-x C-c关闭emacs。(C在mac上是control,windows是ctrl?),懒得看手册的可以参考Emacs入门系列:3分钟学会Emacs基本操作

实践准备

org-mode 阅读

为了编辑做准备。平时用的印象笔记和wordpress都可以用这个格式统一管理。同时 也可以管理自己的todo list.org简明使用教程

安装evernote-mode 平时都是用印象笔记管理

evernote-mode安装的有两篇文章可以参考。evernote-mode参考1 在emacs中使用evernote

一是一直安装不成功,报错,权限受限。后来终于发现是mac的sip机制。

找到篇文章解释了这个问题,怎么关闭sip。 不过我没有选择关闭,而是brew install了一个ruby, path环境变量指向了新安装的ruby。

还是报错,并且错误一闪而过。状态栏一直有其它插件的状态更新。

想起来C-x C-b 可以选报buffer,终于找到错误,原来是evernote-mode.el写死了路径,我因为ruby路径不一样, 按实际的修改就可以了。

然后还是报错,gem install gdbm, gem install ffi, brew install gdbm 才好

安装org2blog,发表wordpress

其它待研究的

多窗口编辑,buffer

w3m怎么玩

怎么收发邮件

怎么远程登陆,是否可以记住密码

宏怎么玩

怎么自定义插件。

后记

学习的方法只有一个,提需求,然后想办法满足自己的需求。 推荐书箱: Learning GNU emacs, 作者:Eric Raymond 计算机程序的构造和解释,作者:Julie Sussman, 程序员可以看下,说是里面用lisp做的示例。 lisp 语言,作者:陈光喜

 

客户是谁?

产品满足了客户哪些需求,相对其它产品,你有什么优势?

客户是公司生存的基础,产品是公司发展的动力。

上驾校之前,道听途说的,说是叫买烟的,态度不好把人骂哭的。

万幸我遇到的教练没有以上毛病,相反,倒是一个非常值得敬佩的人。

我上科目二第一天就是他,恰逢他从考试队下来顶班。第一印象感觉他很稳重,当时就感觉靠谱。再接下来学习的时候感觉这样的教练真是少有,不得不说是我的幸运。

他是个爱车之人,为什么这么说呢。顶班第一天他就洗车,说车不干净。我在那踩离合玩,他就在那擦座位。

他不明着说,但做的事挺让人感动。

第一天开车,我右脚膝盖,老碰着钥匙,钥匙串上一个圆球,让我怎么放也感觉不舒服。我也没说,第二天,圆球消失了。

不知是车的问题还是我自己的问题,我松手刹的时候,左脚总要动一下,我说手刹不好拉。第二天,突然好了,我猜是打了油,看在眼里,记在心里,我也没问。

我个子比较矮,调座位时,得往前一些,第一天就感觉安全带不够长,拉不上。我得先系上安全带,再调座椅才行。第二天,没这事了。不用说,当然是教练看在眼里,记在心里,把问题解决掉了。

我之前听人说了教练的可能不好的地方。刘教练可没这毛病,这里介绍下。刘教练是海淀驾校的,电话是13552229670。如果你想学车,找刘教练相当靠谱。

我脸皮厚,不怕骂,但也担心教练不尽心。听了旁人的意见,也是打算买烟意思下。恰好开车的时候,外面一大妈拿着几包烟在推销,我想这是个机会,正要买时被教练拦住了,说不用。我当时还以为他不抽烟呢,后来发现他也抽,不过抽的很少。学车三天,我看见的,也就抽了两三根。

他是怎么样一个教学风格呢?一开始把要点说完,演示一把,就让我开。不是手把手那种,我爱瞎琢磨,按自己想的来,他也不说。只是当我错了时,指正一下。我老犯同样的错误,他就说,教你做的你不做,就一个人瞎琢磨。接着又说些道理,工作上,领导叫你做的,你不做,干些其他事,这样太吃亏。

他最爱说的就是开车是个危险行业。要小心。我方向盘大过了,他得说下。我油门踩急了,也得说下。总是强调开车太危险,得小心,万一出事了,就只能躺床上后悔去了。

车还在学,今天第三天,学完坡起,定点停车,又学倒库。送礼他又不收,我就写下这篇文章,表示对他的感谢。

 

 

delegate 之assign & retain讨论

作者QQ:415074476

QQ群:191280586

delegate 的property属性到底该用assign 还是retain?

 

网上有说法是该用assign.

但我在实际工作中时常遇到crash的情况(包括umeng,sian,tencent sdk)。另外,在cocoa的api中,异步方法调用时,delegate的retainCount会+1,说明,在这种情况下,其实是使用的retain.

 

本课题就是结合官方文档,官方api测试。自由Delegate设计测试,来给出一个最终答案。

 

首先谈谈网上的看法。

现在网上都是认为应该是assign. 避免循环计数。

这个很容易理解的。。

案例一:

对象A 持有对象B.

对象B有个delegate属性,指向的对象是对象C.

假设delegate为retain的,对象C是对象B本身。

 

描述下引用计数:

对象A 持有对象B.(对象B计数为1)

对象B有个delegate属性(retain),指向的对象是对象B本身.(对象B的计数为2).

 

Ok.现在对象A释放。调用dealloc方法。释放对象B。(对象B的引用计数减低为1).

然后呢?没有然后了。

 

因为delegate的释放是在对象B调用dealloc方法时。

-(void)dealloc

{

….

[delegate release];

[super dealloc];

}

 

明显对象B这个对象占的内存泄露了。

如果有读者用过umeng的Sdk,就会发现他们是怎么处理的呢。

在对象A的dealloc方法做了处理, 不光处理了对象B本身,还把他的delegate置为了nil. 否则会crash哦。

 

好吧。我给的这个案例。不把delegate置为nil,也不会crash的,只会有内存泄露。

 

大家使用cocoa api时,会在dealloc方法里,去把delegate置为nil么?不会。

所以,这种折中的方法显然行不通。挖苦点是太山寨,太不安全。

 

到底该如何设计?

既然上面的例子用retain不行,是不是说明网上的说法是正确的。Delegate的属性必须为assign, 不然会造成内存泄露。

 

好吧。我给出另一个案例:
对象A 持有对象B.

对象B持有 对象C.

对象C有个delegate属性(assign), 指向对象B 。delegate声明了方法callMe.

对象B实现方法callMe.

一般情况下, 以上代码不会有问题。

但在有异步调用就容易出问题了。

假设对象C 有个方法是start. 发起一个异步请求,获取到资源后,在调用callMe方法。

调用栈如下:

[B.C start];

[C.delegate callMe];

由于异步的关系。上述两行代码之间会发生什么事呢?

可能对象B释放掉了,并且它的内存被其它对象所占用。

那么

[C.delegate callMe]一定crash.

怎么办?加上if(delegate && [delegate respondsToSelector:@selector(callMe)])

{

//doSometing

}

 

很遗憾地告诉你。 这样是真不行, 照样crash.

怎么办?既然assign会因为对象的失去而crash, 那我retain呗。 问题回去了,又是内存泄露。

不信?看看:

对象A 持有对象B.(对象B引用计数1)

对象B持有 对象C.

对象C有个delegate属性(assign), 指向对象B.( 对象B引用计数2).

 

对象A调用dealloc.

对象B引用计数减少为1.

然后呢?没然后了。。泄露。

 

因为必须对象B引用计数减少为0时,才会调用dealloc方法。才会release对象C。然后对象在dealloc方法里release delegate.

 

都行不通啊。。

 

我认为assign是没错的。是下面的判断方法不对。

if(delegate && [delegate respondsToSelector:@selector(callMe)])

{

//doSometing

}

 

到底该如何判断呢?

NSObject协议有下面两个方法。

– (BOOL)conformsToProtocol:(Protocol *)aProtocol;

 

– (BOOL)respondsToSelector:(SEL)aSelector;

NSObject对象有下面这个方法:

–   (void)doesNotRecognizeSelector:(SEL)aSelector;

到底哪个方法是有效的呢?

一一测试下吧。

 

– (BOOL)respondsToSelector:(SEL)aSelector;

都不可行。

因为占据内存的可能是一个基本数据类型。

 

看来得分情况了。

一:同步方法用assign.

二:异步方法。在发请求时retain,响应时release. 这种情况就不应该用property属性。看下官方的异步方法里要传delegate参数的Api,是不是在头文件里,找不到delegate的property属性呢。

怎么设置呢? 传参。启动方法里传参。 这才是正确的方法。

有不同看法的,欢迎讨论。