全部文章 | 第6页

【动机心理学、创造性】看书几个要素 = 理性 + 认真 + 动脑

一下截图是在《人类动机》一书中的节选,这是讲到关于创造性与感觉寻求者之间的一些关系(高/低感觉寻求着):

1

这一节选主要说的内容是创造性理论在某种动机内因(隐)解释下的说明;其内隐解释:

2

说白了,就是说如果我们把创造性解释为,我们已经任何了我们的创造性行为,那么我们将会想尽可能的办法去抵制/忍耐外界带来的负面影响(批评等)。

 

如果看书的时候,没有带着理性和跟随书讲述内容的思维一起走,很可能会被误入歧途。因为人的思维很容易出现先入为主的观点;或许大部分人通过阅读这一小节以后会认为,为了让自己有更好的创造性,就应该尽可能的有抗压或怀疑传统的行为。实际上不然,这只是本书中提到的一种解释(解释角度)而已。

【反思、困惑、】回首走过的这6年多!

这6年多大约经历了3家公司,算了算,属于跳槽较为频繁的人。

回顾一下这几年的情况:

— 技术层面 —

从最简单的代码填空,到有一定技术含量的代码模式编码(反反复复一种模式),再到现在的全新挑战。技术层面越来越难和深,同样也越来越有趣。算是一种小小的成功(保持技术能力的持续积累的前进)。

— 经历的同事 —

从各种小心眼同事,到明争暗斗的同事,再到各种混乱的局面。开了不少眼界。

— 心态 —

越来越烦,整个人看问题越来越淡。

 

为什么会这样?

1,年龄

2,经历

 

年龄暂且不用多说,任何人都会遇到这一个关卡。

还是说一说经历比较有意义:

— 自身角度 —

1,自我定位有问题

2,性格中的劣势克服不够

3,角色变换不及时,存在问题

4,存在一定的孤僻

5,心理抵制部分人和事情

 

— 非自身角度 —

1,公司制度与格局

2,奇葩同事(急功近利 或 好高骛远 或 狂妄 ,等等)

 

 

人最难的不是遇到一个非常难的技术点,而是遇到了很难打交道的人。

什么样的人难打交道?我觉得满足以下3个以上的条件的人就可以视为难打交道:

1,被动,凡事都等着被推动

2,不懂得内敛

3,没有大局观,一切利于从自身角度出发

4,野心勃勃,但无德或无才的人

5,不知道什么叫做沟通与好好说话,动不动就扯着嗓子吵架。

6,不知道退步,处处都要比别人强势,或任何便宜都要占尽

7,拦功推过

 

事实上,人一出生下来都有有棱角的,都是在社会上渐渐的磨砺才变的圆滑,无论是过去还是现今,我都一样至少有3个以上的条件是满足的;我也在一点一点的克制和改善。随着对自己心理和言行的关注度增加,也逐渐意识到了部分行为的动机和后果,人也开始迷茫起来。

 

有时候,人之所以会出现这么多劣势或问题,其根本并非是人性坏。而是蠢或认知有问题,出于理解的出发点去看,或许应该给予一定的宽容;但如果你给予一定的宽容对方又不能理解,反而自作聪明的变本加厉,这就是令人无奈的地方。

 

有时候感情因素带入的多了,理性的事情就会很难了;如果不带入感情因素的话,又会让人觉得没人情味。这就是这6年多活出来的结论!

【matlab、c++、0.499】关于matlab和c++在浮点数转整数的问题 – 四舍五入

当用c/c++做浮点数转换成整数时,处理一般都很简单,丢掉小数位置保留整数部分(没有看过具体的汇编,不清楚如果浮点数表达的位置太大,以至于整数溢出的情况)。

 

而在matlab中,浮点数转换成整数时候,会有四舍五入的规则,即:

uint8(0.499) = 0

uint8(0.5) = 1

 

所以在用matlab时,需要注意到数值转换与c/c++的不同。

迅雷极速版导致代理失败

突然迅雷回假死,卸掉以后再重装也没用,后来就想到了迅雷极速版。装上去以后,紧接着就是没法使用代理。

查了一下,才知道要执行

netsh interface tcp set global autotuninglevel=normal

当时没有注意tcp的参数是什么值。后续卸掉迅雷极速版本,不用了!

2016上半年回头看看

最近在看心理学的大学教材,起初动机主要是为了了解自身,以及能够了解他人。不过越看到后面,感觉研究人的心理也越有意思。

可能是成长的过程中,恰好遇到了一些正确且有恰到好处的信息,或者出于自身性格的亲和力;再看心理学这门教材时,发现尽管有时候自身走了错误的路,但至少有能够自己纠正回来。并逐渐养成某些看似很难的好习惯和好规律。

例如:

1,很多人都说我很多事情搞那么清楚做什么,你活着累不累。

2,试着反思过去

3,试着窥视未来

4,试着察言观色

5,试着调整自己的心态和计划

6,有规律的作息和行为

7,设立底线,并针对不同环境和不同时期进行不同的调整

8,改善自身心态的同时也在调整自身的一些行为。

 

 

实际上,通过以上8个方面的行动,这其实是加强自我意识与自我认知;在日常行为中能够很好的做出一些反应和应对。我也庆幸,遇到一些问题时,我没有选择逃避,而是硬着头皮解决并得到了成长。

尽管通过学习心理学的书以后,自身的很多行为和想法,得到了一些说明,并且能够通过“规律性”的东西去评价行为的后果,但实际上最近心理还是在犯嘀咕;是该回头看一看了。

 

按照惯例,还是从工作、生活两个角度入手。

— 工作 —

1,可信赖人越来越少:

1.1 由于性格因素,导致原先可信赖的人在逐渐远离自身,且这些人本身原来就不是100%可信赖

1.2 公司环境混乱,导致大部分人心态发生变化

1.3 本来就没几个可信赖的人

 

2,对前途有所迷茫:

2.1 不理解现在做的事情对未来的职业规划有何作用

2.2 不确定的事情太多

2.3 领导层完全有意或无意不讲清楚意图,导致无头苍蝇状态

2.4 劳动力市场变化太快,有时候跟不上。所谓的“风投”太喜欢造势了。

 

3,过度消耗生命:

3.1 想学习

3.2 神经紧张,怕多休息或多娱乐一分钟,就被淘汰

3.3 想换一个环境

3.4 有所压力和追求

3.5 工作在消耗生命

 

4,总是在试图理解或揣测领导层的意思,但又不明白到底有没有必要,身心都很累。

 

— 生活 —

1,暂时没有进入正轨,还有很多事情需要硬着头皮去解决掉

2,缺乏良好可持续的规律或习惯

3,想要的生活和现在的状态存在一定的不对应或者不一致的情况

 

 

通过上面的情况,可以看出,最近应该在处于弥漫与焦虑中。或者把手头给自己安排的事情抓紧一点,或许能够更快的走出这种状态来。毕竟有一些事情其实已经规划好了,只不过还未到时候,加快步伐可以让时机提前到来。

 

【Matlab、安装问题、路径问题、环境问题】安装完matlab后,出现各种命令未定义的情况

首次安装完matlab时,在导入授权后,打开发现一堆警告,各种命令不可用,大致内容如下:

Warning: C:\Program Files\MATLAB\R2012a\toolbox\local\pathdef.m not found.
Toolbox Path Cache is not being used. Type ‘help toolbox_path_cache’ for more info
Undefined function or variable ‘ispc’.
Warning: MATLAB did not appear to successfully set the search path. To recover for this session of MATLAB, type “restoredefaultpath;matlabrc”. To find out how to avoid this warning the next time you start MATLAB, type “docsearch problem path” after recovering for this session.
Warning: Duplicate directory name: C:\Program Files\MATLAB\R2012a\toolbox\local.
Warning: Initializing Handle Graphics failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup,
which should be resolved as soon as possible. Error detected was:
MATLAB:undefinedVarOrClass
Undefined variable “graphics” or class “graphics.internal.initializeMATLABRoot”.
Warning: Initializing Java preferences failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup,
which should be resolved as soon as possible. Error detected was:
MATLAB:UndefinedFunction
Undefined function ‘usejava’ for input arguments of type ‘char’.
> In matlabrc at 113
Warning: Failed to add default profiler filters.
> In matlabrc at 168
>> rtwintgt -setup
Undefined function ‘rtwintgt’ for input arguments of type ‘char’.

>> help toolbox_path_cache
Undefined function ‘help’ for input arguments of type ‘char’.

 

实际上是安装的时候路径出错,用管理员模式启动,然后执行这个命令:

restoredefaultpath;matlabrc

matlab执行环境变量恢复以后,系统正常可用。

【mysql、innodb】mysql启动失败,出现crash

不知道什么时候,vps上面的mysql不启动了,后来果断来了个apt-get upgrade。还是无解,发现mysql.err为空。怎么弄头看不明白。

后来查看/var/log/syslog,发现如下记录:

May 28 07:36:53 emhct mysqld: 160528 7:36:53 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. P$
May 28 07:36:53 emhct mysqld: 160528 7:36:53 [Note] /usr/sbin/mysqld (mysqld 5.5.49-0+deb7u1) starting as process 2208 …
May 28 07:36:53 emhct mysqld: 160528 7:36:53 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future$
May 28 07:36:53 emhct mysqld: 160528 7:36:53 [Note] Plugin ‘FEDERATED’ is disabled.
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: The InnoDB memory heap is disabled
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: Mutexes and rw_locks use GCC atomic builtins
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: Compressed tables use zlib 1.2.7
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: Using Linux native AIO
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: Initializing buffer pool, size = 128.0M
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: Completed initialization of buffer pool
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: highest supported file format is Barracuda.
May 28 07:36:53 emhct mysqld: InnoDB: The log sequence number in ibdata files does not match
May 28 07:36:53 emhct mysqld: InnoDB: the log sequence number in the ib_logfiles!
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: Database was not shut down normally!
May 28 07:36:53 emhct mysqld: InnoDB: Starting crash recovery.
May 28 07:36:53 emhct mysqld: InnoDB: Reading tablespace information from the .ibd files…
May 28 07:36:53 emhct mysqld: InnoDB: Restoring possible half-written data pages from the doublewrite
May 28 07:36:53 emhct mysqld: InnoDB: buffer…
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: ERROR: We were only able to scan the log up to
May 28 07:36:53 emhct mysqld: InnoDB: 16701665280, but a checkpoint was at 16701665306.
May 28 07:36:53 emhct mysqld: InnoDB: It is possible that the database is now corrupt!
May 28 07:36:53 emhct mysqld: 160528 7:36:53 InnoDB: Assertion failure in thread 3064944864 in file fut0lst.ic line 83
May 28 07:36:53 emhct mysqld: InnoDB: Failing assertion: addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA

 

mysql居然crash了,后来网上了一下,发现好像是innodb顺坏了,简单扫描了mysql官方文档,看的云里雾里。

最终,把mysql数据库存放目录下的ibdata1、ib_*文件删除后,mysql正常启动。

【任务处理模型、性能相关】windows上窗口循环、单一线程循环、iocp线程任务处理模型比较

下面图分别简易说明三种较常用的任务处理线程模型。

1

2

3

 

 

 

先说说为什么会来比较这三种任务线程模型,主要还得来于Chromium和手头工作中实际运用的特定问题;这三种任务线程模型在Chromium base的message_loop中都有过实现,且均用在不同的模块中(尽管message_loop中有大部分代码和boost中很像,或者就说直接拷过来的)。不过还是有必要值得讨论下这三种任务线程模型的特点。

 

  • 单一线程循环:

这种模型构造最为简单,除了循环线程外,一般由一个临界、一个事件、和一个可以存放任务的数组或者stl容器组成。

但只可以同一进程内使用,或者经过内存映射后的跨进程通讯(一般没人这么干)。

任何任务的投递均要经历:

1,获取临界

2,往任务池中投递任务

3,激活事件

 

循环线程一般流程:

1,获取临界

2,取出任务池中的任务/等待事件激活

3,处理任务

 

对于循环线程可能会产生态变迁位置:

1,获取临界(虽然临界是用户态对象,但有可能会导致线程挂起等) —>  用户态转内核态

2,等待事件  —>  用户态转内核态

3,事件被激活,线程准备恢复执行    —>  内核态转用户态

 

总结:简单,态切换较少,且可能存在较大的线程时间处于用户态。速度快

 

  • 窗口消息:

*对窗口消息了解不是很多,所以这里只说一下仅有的少量了解。

这种模型构造组成:窗口、消息循环线程、其他辅助(例如要传递一个大内存,可能会用到共享内存等)。

特点:了解windows消息机制就可以用,且可以方便的处理一些和windows消息有关的任务,利用窗口消息分发特点可以很容易的划分任务类型。跨进程。

 

任何任务的投递均要经历:

1,获取窗口真实句柄

2,投递消息给窗口

 

循环线程一般流程:

1,等消息

2,取消息

3,分发消息

对于循环线程可能会产生态变迁位置:

1,等消息  —>   用户态转内核态

2,取消息(可能会出现,因为消息队列是用共享内存实现的,不清楚要不要做加锁操作)     ->   用户态转内核态

3,分发消息(可能,由于一些消息是默认windows消息,或者是消息钩子链上的消息,需要把消息丢回消息链上,让其他进程进行处理)    —>  用户态转内核态

 

  • iocp:

*对iocp了解不是很多,所以这里只说一下仅有的少量了解。

这种模型构造组成:iocp模型、循环线程、其他辅助。

特点:可以方便的处理io相关的任务,内核态会创建一定量的线程数与用户态对应,需要做多次软中断;可跨进程。

任何任务的投递均要经历:

1,获取完成端口真实句柄

2,投递完成端口事件

循环线程一般流程:

1,等事件

2,取事件

3,处理事件

对于iocp线程可能会产生态变迁位置(实际上不全,因为在内核态还需要进行一次APC级别的软中断,iocp这种模型的一个任务流转过程,中断很频繁。详情请参考深入理解windows):

1,等事件  —>   用户态转内核态

2,取事件    ->   用户态转内核态

3,处理事件

由于手头有份代码,当初的作者可能为了简单或者什么原因,借鉴了boost的iocp模型,并形成一个单线程的底层驱动模型。

早在一年前,刚好要在这个模型上面添加一个及时性要求比较的功能时,发现任务处理的及时性不稳定。有时候任务处理很及时,有时候任务处理延时很重。每个任务的消耗都尽量保持在一个相对平均的水平。

在该模型中频繁堆叠较重的任务后,发现原来是该模型任务处理性能不稳定(被测电脑也是个性能较差的电脑)。后来将及时性任务从该框架中剥离出来以后,问题得到了较好的缓解。

最近在boost,刚好手里有代码,就做个简单的测试。简易代码在这

QQ图片20160517113906

QQ图片20160517113920

其中77s对应的图是release下iocp模型,空转1亿次的耗时

其中46s对应的图是release下简单线程模型,空转1亿次的耗时

可见如果只是比较简易线程和iocp模型的话,简易线程的性能会比iocp快不少,但由于特定使用情况,也不能过分的教条。

对写文档、写文章、文字类工作比较排斥的几点自我检讨

从小到大,我都比较排斥文字类工作(写文档、写文章)。最直接的原因就是觉得麻烦,自己写的东西别人看不懂,还要反反复复的修改;有时自己回头去看看也不一定能看懂。

凡事必有因,又因必有果。显然直接的原因也只是其他一些原因综合以后产生的另一个结果罢了,所以就要回过头去看看小时候,来寻找一下原因。目前找到的原因大约有几个:

 

1,启蒙教育没做好

2,读书时候没有认真学,导致不会写文章

3,性格

4,后续也没有对这类事情很在意

5,成长或工作的环境也没有这方面的机会,得不到相应的锻炼

 

接下来我就细细数落一下我自己!

— 启蒙教育没做好 —

在我读小学那个年代,我们还流行要读学前班。记得学前班主要是学讲话、识数、识符号。

由于出生日期和相应规定的计算方法的问题,所以我没有上学前班的机会,且家里也没有重视这个问题,所以我也就没有读学前班。

直到7岁的时候,才能送去读一年级。并且当时读书都是很难的一件事情(6年义务教育,教育经费也很紧张),七说八说终于学校放我进去读书了。

一年时,我的班主任是语文老师,而这位语文老师中专刚毕业(当时的中专含金量和现在的本科差不多)。计算一下么,大家就都很清楚了,这位班主任也和我一样其实都是小孩。

小孩教小孩,在我们那个年代是很常见,也是正常的事情。但问题不在这,问题的原因在于小孩的心智不成熟,而且当时教育体系里面没有对老师做足应该的心理教育和培训。

所以么,我就被歧视了!由于不会写汉语拼音,学习的时候又有点心不在焉。老师不耐烦了,就直接喷我:“这么笨,要么退学算了!”而且还留我下来叫家长,还是义正言辞的和我老妈说:“你家的小孩太笨了,而且还心不在焉,我教不来了,要么退学好了!”

然后就这么一次,我心里就烙下了阴影;虽然人在课堂上,但内心非常抵制语文课。好在我老妈放学接我回家的路上,会用它蹩脚的普通话教我。这么些年就勉勉强强熬过来了(小学期间),同时我也对这位语文老师以及她这次的行为形成了很深的记忆和影响(其实都是负面的)。

 

— 读书时候没有认真学,导致不会写文章 —

小学么,就不多说了;肯定不会好好学,况且小学我还住过2年的院。

到了初中和高中,我也没打算好好学。初中高中期间,我连最简单的记叙文都不会写,但由于两位负责人的语文老师,所以我的作文水平勉强回到了及格线。

不过我也是让老师头疼的那类人,因为怎么教我都不想认真去学,只打算勉勉强强就行,更何况勉勉强强是个什么样子的水平,我自己都不知道。

 

— 性格 —

性格上的惰性,以及对困难的回避特征。导致我每次满怀期望的写完作文以后,被老师以给个友情分的方式打回来时,心中受到了一万点暴击伤害。渐渐的也就形成了回避和懒惰的心理特征。

因此在中学时代,我基本是排斥各种语文类读物的。换句话说,当年风靡一时的两个同龄阶段的作家的书,我基本没看过。。。。。。

直到后来快要高考的时候,我觉得要靠自己的双手改变自己时,我才去看了一个印着清华的某本语文类读物(好像是高个子那个人写的)

 

— 后续也没有对这类事情很在意 —

在我的脑海里:“按理说,到了大学应该没有语文课了吧”。结果进入大学。。。。。。。还是有语文课。

不过大学里的语文课不同于以往,一般是名著赏析和读后感,也没有太多要求。

当时心里的想法也很简单:“哥是工科类,不会写文章也没事!”

然后关于语文类方面的能力和锻炼四年就这样过来了。。。。。

 

— 成长或工作的环境也没有这方面的机会,得不到相应的锻炼 —

这个就不需要解释了,没啥好解释的。

 

 

不过值得庆幸的是,通过一些技术类文档,和一些论坛的瞎转悠,以及受到一些大文豪的熏陶。虽然不会写文章,但至少学会了讲人话了。。。。。

【STL、C++】为减小编译后产生代码的体积做的一些妥协

好像从vs2010开始,vs自带的max宏就不再被推荐为C++中使用的首选,而是尽可能的改为std::max这个模板函数。

在effective c++中也讲到了max宏和std::max之间的差别(但有时使用起来,还是不如max宏来的方便,尤其是当max的入参不是同一个类型时。)

 

好了,说正事。

在vs2010中,std::max被定义为一个模板函数,其中函数的参数类型推导主要依赖于第一个参数;且std::max被inline修饰。在vs中,inline的强度并没有forceinline那么强,因此编译时,编译器即可能会让模板函数展开,也有可能不会让模板函数展开。

有时候有些开源项目中,大量的使用了std::max,这也会进一步的导致编译速度减慢,编译出来的文件变大;这里面除了inline还有一定的原因和模板的特性有关。

为了解决这类问题,有事不得不做出一些折中或妥协。即,当杜写一个公共函数,在该函数中将std::max进行特例化,以此来达到优化编译的目的。假设在不调整诸如fpo之类的优化参数时,编译器都会一定只会将std::max进行仅有的有限次实例化,且也可以控制函数是否进行inline。编译时不仅加快了编译速度,同时也减小了编译输出文件的大小。

所以在一些实际项目中,如果对编译产出的要求比较高,有时不得不牺牲代码设计和可阅读性来达到目的。

【图像处理、答题卡、图像识别】图像处理 之 初步分析答题卡上选择题的识别(一)

最近由于项目需要,需要做一个能够自动化阅客观题的东西,则答题方式为纸质答题卡。通过扫描仪或者其他方式,将图像拾取并转换成数字图像。

当然,我本身是拒绝的。实际上,在这一过程中,比较难几点有:

1,拾取后的图像如何做预处理、降噪、灰度化、二值化等问题

2,如何对图像进行抽象(识别)

 

好在目前关于纯粹识别的技术还是有的,所以就假定一个前提;即用户采集转变成的数字图像是噪点较少,且容易做灰度化和二值化的。

于是,在网上找到的一张某地区高考使用的答题卡(下图)。并对该答题卡做一个简单的分析。

 

datika_analyze

 

对该答题卡观察以后,发现答题卡顶部的黑块很可能被用作类似位置同步和校准用。于是得到了下列可能的结论:

1,有1和2字体的两个黑柱子,可能是用于某种标记(或者答题卡传输轨道同步)。

2,其他的小柱子之间的间距是分组,且不等距的。

3,通过结论1和2可得知,有可能能通过这些黑块生成答题卡坐标系,以此来进行图像变换或区域间的距离计算等。

 

通过以上的几个结论可以的出,实际上高考中使用的答题卡在进行识别(或批改)时,除了要找到学生涂黑的选项意外,还需要进一步的判断选项的有效、无效、未作答情况。看来判断答案的有效情况也将会是一个重点和难点。

【webrtc & h264】不小心又掉大坑里了

最近在看webrtc的最新分支代码,和手里正在跑的代码做了简单的比较以后,顿时发现我已掉入深坑。。。。。

 

我们手里目前正在跑的webrtc代码是2014年最后一个稳定版本。且我们在这个代码上做了一定的修改和二次开发,同时移入了openh264(当时不知道谁决定的)。

现阶段,发现新版本的webrtc已经和手头的webrtc有着天然之别了,大致内容如下:

1,代码框架有所改变。尤其是设备管理,编解码器相关的代码布局

2,和h264编解码器相关的代码,有一个简单实现。即,直接调用ffmpeg中的编码器来实现。但同样支持openh264,只不过工作量会大一些。

3,使用了大量的c++11特性

4,对windows sdk的要求不同。

5,编译难度的增加。虽然gclient能够完成工程配置,但这也严重导致了工程要移动到另外一台电脑上将会是很难的一件事情(工程配置。。。。)。就算运行gclient runhooks,可能也会存在一些乱七八糟的问题。

 

接下来可能需要一点一点去看看openh264和x264到底有多大区别,并有区分的使用。

【误区、精神、神经】精神和神经一直被混淆

一说到精神病和神经病,很多人都分不清这两者的区别;早在读书的时候,我的生物老师就纠正过我们这个问题。

从生物的角度去看,神经是人的一种组织,用于对外界进行感受并作出传导的组织,部分神经还会参与作出相应的反应(人身上的动物神经回路和植物神经回路)。最明显也最容易理解的神经组织就是大脑,大脑内部主要由大量的神经元组成,电子在撞击神经元的时候,神经元会做出相应的反应或不进行反应。

而精神,只一个比较综合的概念;换句话说精神这个概念比较偏向于宏观的概念。精神这个概念与一定的神经、心理有交集。

 

当说一个人有精神病的时候,那这个人不一定会存在神经上有病变。

但如果说一个人有神经病的时候,这个人的精神可能或多或少的会受到一定的影响。

【认知、行为】唤醒与注意的关系

前段时间,在和几个周围的聊天的时候,我偶然间听到了这样几种言论:

1,最近肠胃不是很好,就是在加班那段时间开始的,后面要注意一下身体了,不能蛮干了

2,最近总感觉没有什么成果,我并不是自甘堕落的人,所以应该是工作上的安排有问题

3,你们在用的这套框架是哪里来的?你都是负责维护代码的人,怎么连这套框架哪来的都不知道?

………

 

当听到上述几个言论时,我首先感到的是一种困惑和疑惑;怎么大家都往往这么容易下结论呢?而且我还能找出相当多的推理来说明,还有很多种可能性。况且结论和原因之间的关系并不是那么明显的因果关系。

今天正好正在继续看动机方面的文章,其中讲到高绩效、注意、唤醒有关的内容。下面对段话是关于唤醒和解释有关的方面一个简要概述。

===经不起解释的唤醒===
绩效理论家的核心问题之一在于应对经不 起解释的唤醒问题(Neiss,1988)。有大量的研 究表明,当人们能够解释唤醒的来源时,唤醒几乎没有什么心理学上的意义,否则,则具有重要的心理学意义(Schachter Singer, 1962)。例如,我正在跑步,若我知道心脏为什么快速挑动,我就不再关注自己的心率;然而,如果我注意到心脏剧烈眺动,且不知道为什么,那么我会立刻开始寻找原因,并且会处于高度警戒状态。
人们通常倾向于通过当前起作用的动机系统寻求解释。若和恋人在一起,我会将高唤醒的表现归于处于爱河中。若手上的事情使自己心惊肉跳,我会将高水平的唤醒归于自己的恐惧。

 

可见,当人对唤醒的原因不是很清楚的时候,人就会对唤醒造成的结果非常的在意。当人找到某个唤醒的唤醒源以后,大家就不会对该唤醒相关的事情太在意。

因此从这一点上,我们可以得到一个结论:由于人对唤醒的解释会影响到我们的注意和应对,假设当我们把唤醒的解释弄错了,那将会造成我们对源头判断的失误,由于对源头的判断失误可能会导致我们后续相关的思维和行为造成错误的结果(例如当唤醒源影响到我们的生存时,我们会做出一定程度的反应)。

要更应该重视唤醒源的解释是否正确。

flash弱交互和强交互中的好与坏

由于最近在做强交互的在线直播,所以不得不对flash这玩意产生各种新的实用性认识,这主要还是由于先流行直播和点播中对flash的滥用造成的。

 

首先我不敢说我是完整经历了flash 1.0但现在的人,但至少当年的<阿贵>我还是印象深刻的。

在以前,浏览器就像不怎么支持tiff 一样是完全不支持flash的。要想用flash那就需要装插件,ie和firefox都是如此。

如今的浏览器为了迎合大众,都默认捆绑了flash插件。

由于activex控件存在开发麻烦,跨平台等问题,所以flash也间接成为了一个网页上的音视频播放器。

 

正因为方式软件工业在操作系统,多媒体接口,音视频编解码等方面还没有现在这样的一致性相对较好和可靠,所以大家都转为用相对简单的东西去设计系统。

首先从播放器角度去看,flash就不是一个很好的播放器,性能低下过度依赖浏览器特性,以及自身的不开放加之兼容范围较小,很难做到高保真和高响应。

 

以现在主流的一些直播网站为例,他们采用的均是单向音视频直播,弱交互,rtmp+h.264+aac。仅仅从h.264上来说要做到高质量,势必要提高码率,按照2m-5m码率去测试,我一个i5 460m的u上仅仅解码就至少要吃点40%的性能,而且还不能开显卡加速,要不然花屏,绿屏的问题就来了。

然后再说说aac,这个音频编码本来就不是为低延时设计的,也没有对延时做过太多要求,虽然有低延时版的aac。

显然单向的直播模型是可以用flash这套东西的,因为他成熟且方便用户使用。

 

但由于有这样的一些网站在用这套体系,无形中绑架了那些要做强交互的在线直播。

通过我对少量在用flash做强交互,和我们自身用flash做强交互的同行们沟通情况来看,大家用flash主要原因是较低用户的学习成本,或简化客户端复杂度,或有web端。

 

确实在各种流氓转正的今天,要想在用户电脑上正常的安装一个相对规矩的软件还是蛮难的。另外,在业务的开发周期,开发难度上和灵活性上,web确实要比native app好很多。

所以现在大家就陷入了一场困境,大势所趋下,技术实力或市场地位不是很强的公司显然只能顺应大流。

事实上,无论选用flash还是native app做强交互的直播,都是没问题的。但问题就在flash并非一个专业的音视频播放采集器,配套的系统也不见得能很好的处理网络一些问题所造成的体验不佳的情况。

所以在强交互的直播上,我个人及其反对使用flash用在任何和音视频的有关的地方。相信音视频方面用过flash或相应开发的人,应该会深有体会,这坑有多大……