Posted on 15-12-2017
Filed Under (文化) by waterlin
这本书我有点看不下去,其中竟然放弃了好几次。最近一次重拾起来,一读就一发不可收拾,一口气读完了。写这个书评的时候,我竟然很纠结,应该赞美这本书呢,还是批评这本书呢,我竟然找不到合适的词语了。
这本书就写作手法来说,很牛叉,有耐心看的话,还是很不错,是一个奇妙的精神之旅;但是问题也出在这里,作者的道理和观点,其实用很简单的篇幅就可以介绍清楚了,非要用这么“动人”和“别致”的方法来介绍么?
书中讲的道理很简单,就是在古典的世界里,必须要用一种心如止水、注意力非常集中的方式来工作,对所有的东西都要有一个逻辑上的条理。相同的观点其实在《尽管去做》一书中有体现。
看完这本书,最佩服的人是这个书的翻译人员,水平好,关键是有毅力,把我们都快看不下去的书竟然翻译完了;要知道书中可是有一大堆喃喃自语的段落。
其它的就不多说了,摘录几段我比较有共鸣的文字,直接用作者的话来表达书的观点:
P148书摘,有关设计:
我发现有一部分设计得非常不妥,你必须把手册翻来覆去才能对照上下文和图片。我针对这一点严厉地批评,而狄威斯在一旁附和,克里斯则把手册拿去看是怎么一回事。
我严厉批评这种翻阅方式可能造成的误解,我说这不是狄威斯的问题,而是手册编写得不够顺畅,才使他毫无头绪。因为这种支离破碎的语法,对工程和技术人员来说十分熟悉,但是狄威斯却无法吸收。科学所要处理的是一些零零散散的东西,其中可能存在相关性;而狄威斯所能接受的则是一连串原本就相关的事物。他希望我批评的是其中缺乏艺术性的连贯,这一向是工程人员最忽视的东西。它和其他与科技相关的事物一样,经常出现在古典和浪漫的对立中。
……
后来我说:“我想说的是,我家里有一份说明书,它为科技方面写作的水准提升开拓了一个伟大的领域。手册一开头就写,组合日制自行车需要心平气和。
有关“心平气和”
“事实上,要心平气和并不简单。”我进一步解释说,“那是整个事情的灵魂,保养的良好与否就取决于你是否有这种态度。我们所谓机器运转是否正常正是心平气和的具体表现。最后考验的往往是你的定力。如果你把持不住,在你维修机器的时候,很可能就会把你个人的问题导入机器之中。”
“这是一种新观念,”我说,“但是它的来源却很传统。客观的物质,比如说,自行车或是烤肉架,本身无所谓对错,分子仍然是分子。机器没有感受力,除了人施加给它们的东西。要想测验机器的好坏,就看它给你的感受,没有别的测验方法。如果机器发出的声音很顺畅,就表示没有问题。如果声音不对,那就表示有问题,除非你或是机器任一方有改变。所以检验机器也是对你的一种检验。没有别的检验。
我回答:“这是自相矛盾的事。如果你真的不关心,你就不会发现它出问题了。所以发现它出问题就表示你关心它。”
有关科学和艺术的观点:
目前,我们的科学陷入了肓目搜集资料的状态,因为我们对科学的创意没有理智的认知。到处充斥着流行艺术—-非常贫痏的艺术,因为我们并没有融入艺术形式中。艺术家没有科学的知识,科学家也没有艺术的知识,两者都不重视精神的层次,这样导致的结果不但十分糟糕,简直是十分恐怖。艺术和科学的融合早就该开始了。
有关平静的观点,太对我的胃口了。这些观点都可以用在软件开发和修bug上:
在狄威斯家里的时候,我曾经谈到,工作的时候要保持内心的宁静,并因此被他们取笑,那是因为我表达得不够贴切。现在,我想回到这个主题上进一步讨论。
保持内心的宁静在机械工作上并不是一件小事,它是工作的核心。能够使你平静的就是高级的手艺,反之,则是低级的。规格说明、测量仪器、品质监督与最后阶段的品质检査,这些都是达到内心宁静的方法。而最后真正重要的,就是要达到内心的宁静,除此之外别无他物。因为只有内心宁静,我们才能觉察到良质的存在,它超越了浪漫和古典的认知,将两者融合为一。无论进行任何工作,都必须具有良质。要想具有鉴赏力,了解如何完成髙级的工作,体会和工作融为一体的感觉,就要培养内心的宁静。如此一来,良质才能出现在你的心中。
我所谓的内心的宁静,和外界的环境并没有直接的关系。出家人在打坐,士兵在隆隆的炮击声中,或者是机械人员正在做万分之一英寸的校准,都可能产生内心的宁静。它涉及到一种自然的态度,让人与周围的环境完全融合在一起。这种融合有许多等级,而宁静也有许多等级,你的功夫愈深,就愈了解它的深奥和困难度。事实上,很多成就都是只从某一种角度发现了良质,发现过程中必须有这种自然的态度,否则这些成就就相对没有意义,也很难达到;而自然和忸泥是完全不同的两回事,它来自于内心的宁静。
内心的宁静有三种等级,生理上的宁静虽然也有许多等级,但似乎是最容易达到的境界,印度神秘的修行者就曾经埋在地下好几天仍然活着。精神上的宁静,也就是消除个人的杂念,相对来说不太容易做到,但是仍然可以达成。至于价值方面的宁静,也就是一个人没有贪念,只是单纯地过着自己的日子,这一点似乎是最难的。
有的时候,我认为这种内心的宁静和钓鱼有些类似,这就是为什么钓鱼会受大众欢迎的原因。你只要坐在那儿,让线垂在水里,一动也不动,不必刻意去想什么,或是担心什么。如此一来,就可以消除内心的紧张情绪和挫折感,是它们使你无法顺利地解决问题,造成你行动上和思想上的障碍。
当然,你不一定要去钓鱼,你也可以去修摩托车,或是去喝一杯咖啡,或是到附近走一走。有的时候只要放下手中的工作,然后保持五分钟的安宁就够了。当你这么做的时候,你几乎可以感觉到自我正逐渐走向安宁。凡是背离它和良质的,表现出来的水准就不佳。但如果你能够亲近它,水准就会提升。亲近和背离的方法虽然数不胜数,但是目标却是一致的。
我想,一旦介绍了这个观念,并且将其视为机械工作的核心,之后在实际的工作当中,就能够融合古典和浪漫的良质。我是指,你能从技巧高超的技术人员身上察觉到这种融合。如果你不认为他们是艺术家,那就误解了艺术的本质。他们有耐心和关怀,也专注于自己的工作,伹是更让人感动的是,他们与手中的工作融合为一,因而产生了内心的宁静,能够独立处理自己的工作。在工作的时候,他的思想和工作都不断在改变,一直到作品呈现出它该有的形式。
另外,有关动手的技巧和艺术,和码农的工作实在是太像了:
我有两个技巧可以避免这种情况发生,尤其在拆卸一套非常复杂的组合之时,我会运用这两个技巧。
在这里要先插入一点。有些人认为,如果这个部件你不了解,而且又十分复杂,就不应当自行拆卸。你应该先接受训练,或者让专家去做这项工作。我真希望有一天这样的说法会消失。因为就是所谓的专家把我的车给修坏了。我的工作也包括编写手册让IBM的专家受训,他们很明白自己的本领并没有多么高强。第一次拆卸部件可能会有许多不利,因为你要花更多的时间和金钱去应付意外的损害。但是毫无疑问,下一回你就会远远超过专家了。虽然这个过程很辛苦,但是你对它已经有了感情,这是专家不可能拥有的。
不论如何,首先我们谈谈,避开陷阱的第一个技巧就是拿出你的笔记本,写下拆卸的每一个步骤,然后记下以后重新组合时可能产生的问题。这本笔记本上面一定会沾染许多的油污,但是几次下来之后,写在上面的一两个字虽然往往看似不甚重要,但却避免了许多麻烦,节省了不少的时间。写的时候,要特别注意各个零件安装的方式和颜色,还有电线的位置。而且,如果有某个零件磨损,正好记下来,以便以后一起采购。
第二个技巧就是在地上铺一张报纸,把所有的零件由左到右、由上到下排列整齐。这样一来,一旦要重新组合的时候,你可以由最后一步开始,许多小螺丝、垫圈还有扣针才不会被遗漏。
即使有这样周全的准备,可能仍然会出意外,这时你就要特别注意自己的士气。一定要静下心来。如果你想加紧脚步,弥补损失的时间,可能反而会错误百出,最后又得全部重新来一次。
通常是因为你缺乏某种信息,重新组合的顺序才会错乱。明确这一点很重要。常常,重新组合会变成一种试验性的技术,你把它拆解开,变化一下,然后组合起来,看变化之后是否仍能运转。
(0) Comments    Read More   
Posted on 09-12-2017
Filed Under (技术) by waterlin

Windows 下用 Python3 和 OpenCV3.3.1 来写算法,在生成 H.264 的视频的时候,碰到提示这样一个错误:

两个解决办法:

1. 修改生成视频的编码器类型,不要用 acv1 编码器,比如说可以试试 XVID 编码器。

2. 去 openh264 下载对应的版本,放到 PATH 目录里,这样让 python 能够正常加载这个动态库。

比如在我这里,就去下载 openh264-1.6.0-win64msvc.dll.bz2 这个版本,然后放到一个 PATH 包含的目录里,让这个库能正常加载。

如果你成功加载了这个 openh264 库后,即可在终端输出里看到这样的一句话:

这样就能在 Windows 下用 Python3 + OpenCV3.3.1 来生成视频了。

(0) Comments    Read More   
Posted on 09-12-2017
Filed Under (技术) by waterlin

在 Windows 下,如果需要使用 OpenCV、Dlib、Python3 来进行一些算法开发,整个环境配置起来还是有点麻烦的,摸索了一下,记录一下安装步骤。

1. 安装 cmake

直接从官方下载一个版本安装即可。

2. 配置 Boost 开发环境

Boost 的官网下载一个你需要的版本号,对于我这次来说,我下载的是 1.63 版本(需要和第3步里的 Boost Python接口版本号对应上),具体的安装方法可以参看这个教程。简单来说,就是在 Boost 的解压目录里,用下面的命令来编译 Boost 库:

安装好以后,需要设置对应的 Boost 的 Windows 环境变量:

3. 安装 Python 3.6 版本以及对应的 Numpy、SciPy、OpenCV 等工具库

对于 Windows 下,安装 Python3.6 很简单,从官方下载安装包安装即可。但是对于 Python 依赖的工具包,有的时候,安装起来就会比较麻烦。对于 AI 或是科学计算经常使用的库,比如说 numpy、SciPy 等,最好通过 Unofficial Windows Binaries for Python Extension Packages 下载对应的包来安装。

比如,对于我们的 Windows 和 Python3.6 版本来说,我就选用对应的 64 位版本来进行安装:

注意看一下 Boost 的版本号需要和第二步里的版本号对应上。

安装的命令很简单,比如说对于 numpy 来说,使用这个命令就可以了:

3. 编译和安装 dlib

下载 dlib-19.7 源代码包解压,再从 cmd 进去,如果上述配置正确的话,应该可以用下面的命令来进行自动编译和安装:

在这里的时候,我碰到一个问题,因为我的 Windows 是中文版本的系统,所以在运行上述命令的时候,提示了这么一个错误:

这是因为中文操作系统中 cmd 编码为 GBK 而不是 UTF-8 ,从而导致 Python3 编码错误的问题,安装前先修改 setup.py 文件,把第 274行的 sys.stdout.encoding 改成 GBK:

4. 安装 dlib Python 扩展包

最后,上述步骤完成后,再用

来安装 dlib。

上述步骤如果一切正确,现在就可以在 Windows 上正常的使用 dlib 库来做算法分析了。

(0) Comments    Read More   
Posted on 09-12-2017
Filed Under (技术) by waterlin

Boost 的官网下载一个你需要的版本号,按下面的步骤即可在 Windows 下安装编译 Boost 库:

1. 解压文件夹到指定目录;

2. 选择你想使用的 Visual Studio 版本来编译 Boost,如果机器上有多个 Visual Studio 版本,就从指定 Visual Studio 版本的 command prompt 进入 boost 的解压目录;

3. 运行 Boost 代码目录下的 bootstrap.bat 脚本;

4. 再跑下面的脚本来进行编译:

或是想用更多的参数可以像这样:

注意,上面的 address-model=64 是表示编码64位的,所以,如果要编译32位的,可以用 address-model=32。更多有关 b2 的命令行参数查阅这里

5. 最后编译好的东西,就放在 stage 里,一般来说用静态库就可以了。

6. 如果需要针对多个VS版本来进行编译,可以重新上述步骤,选择不同的平台,就会把库都编到同一个安装目录了。

注意,不管是对 32 位还是 64 位来编译,生成的库文件名,都是相同的,所以需要在编译完 32 位后,拷贝一份数据出来,再重新编译一份。

(0) Comments    Read More