FFMpeg 2.8 在 Visual Studio 2015 下使用时,提示了如下错误:
模块对于 SAFESEH 映像是不安全的。
错误详细信息如下:
严重性
代码
说明
项目
文件
禁止显示状态
错误
LNK2026
模块对于 SAFESEH 映像是不安全的。
MetaEncoder
E:\liumangxuxu\code\30kernel\VideoClipper\shadow\MetaEncoder\swscale.lib(dixcbs00009.o)
1
可以把 SAFESEH 这个选项关掉:
图像 1
把这个SAFESEH关掉。
说明:这个是 Visual Studio 2015 里引入的一个新东西,一般来说,旧版本的 Visual Studio 创建的库,在 2015 里要链接起来的时候,就会提示类似的问题。
如果是使用 cmake 来生成工程时,需要关闭 SAFESEH 这个选项,可以直接使用下面的代码:
IF(${_MACHINE_ARCH_FLAG} MATCHES X86)
  SET (CMAKE_EXE_LINKER_FLAGS “${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO”)
  SET (CMAKE_SHARED_LINKER_FLAGS “${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO”)
  SET (CMAKE_MODULE_LINKER_FLAGS “${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO”)
ENDIF()
(0) Comments    (143) Views    Read More   
Posted on 25-03-2016
Filed Under (技术) by waterlin

按如下步骤可以把旧电脑上的 Foxmail 客户端邮件存档迁移到新电脑上:

  1. 先把旧电脑上的 Foxmail 安装目录下的 Storage 目录下的数据拷贝出来备份一下;
  2. 在新电脑上安装好 Foxmail,然后设置好之前的邮箱服务器,并成功连接上;
  3. 在 Foxmail 能成功拉取邮件后,即可退出 Foxmail;
  4. 在 Storage 目录下,看一下是不是已经有了这个邮箱的文件夹了?把原来对应的邮箱文件夹拷贝到 Storage 目录里覆盖掉新的;
  5. 重新打开 Foxmail,应该就看到原来的邮件了。
(1) Comment    (195) Views    Read More   
Posted on 16-02-2016
Filed Under (文化) by waterlin

前前后后花了估计有一年半的时候,中间读读停停好几次,终于把多看阅读版本的《金瓶梅》看完了。随便写写自己的感想,顺便吐槽一下,多看阅读上的《金瓶梅》为啥有那么多字显示不出来呢?

  1. 对里面小脚女人实在描写太多。为什么中国古人会对小脚如此痴迷?这是一种病态的特征。现代人,已经迷恋于健美的身材。

    我觉得中国人身体素质一直不好,估计和妇女一直小脚有关。妇女无法行动自如,生的小孩,你觉得能强壮么?另外,中国文化就是喜欢安静的。

  2. 这本小说,语言表达能力极强。能把生活中的琐事,通过人物的对话表达得如此生动。这点语言功力,得让现在写网络小说的人好好学习一下。如果有好的小说情节,写起来当然可以吸引人。但是对于这种富裕家人的平常生活变化,能用语言生动的描述出来,需要很深的功力。就像你有山珍海味,要做一桌好菜,很容易,因为材料好嘛;但是你全是青菜豆腐,要让大家吃得流连忘返,估计得颇费一番功夫。
  3. 现代中国虽然技术上有着突飞猛进的地步。但是整个社会体系,依然如几百年前的宋朝明朝,办事情依然需要托关系,当官的自然比有钱的高一等。所以种种文化,依然没有丝毫变化。一部几百年前的生活百科全书,放到今天,依然适用,可悲可叹~~

    其中有关人情冷暖,男女感情之事,描述得太真实了,活脱脱一部心理学著作呀。

    这本书想看的人估计很多,可是真能看完的估计没几个,能从中读出味道的来的估计更加寥寥无几。抱着看黄色描写的人,估计要失望,整篇就没多少值得研究的内容,倒是批判现实主义的色彩比较浓厚。

  4. 这是一部普通人的历史,比起《水浒传》、《三国演义》,《金瓶梅》更讲的是日常人的生活。放心好了,这不是淫书,你想想多看上能下到的书,怎么可能会是色情的呢?就像《龙门镖局》里那个谁谁谁说的,这是研究明朝文化的经典文献啊,哈。
  5. 能把日常生活写成一部经典,也是牛叉。这就是像能把小葱伴豆腐做得比山珍海味更好吃,更加考验大厨的功力;就像能写出人工智能识别程序很牛逼,但是能写出一个Google一样的东西,更加造福人类。
  6. 语言很有特色,看过网上有不少模仿《金瓶梅》语言风格写的小段娱乐文字,真是大呼过瘾啊。

看到结局让人嘘嘘不已,估计又是一个轮回。当个小说看完后,不禁对里面的淫乱场面没啥好留恋的,更好看的反而是文字与情节,还有世态炎凉这种。

金瓶梅里的色情描写很重要,就像美国大片里的色情镜头一样,是作品的一部分,怎么可以剪掉呢?可惜啊,已经找不到完整版的《金瓶梅》了。

看完这本书后,激发起了我看《红楼梦》的兴趣了。诸君等我看完《红楼梦》再来写上一 笔。

(1) Comment    (230) Views    Read More   

在使用 CMake 来生成 OpenCV 的工程时,可以通过设置 OpenCV_DIR 这个环境变量来指定 OpenCV 的 OpenCVConfig.cmake 所在目录,从而实现对 OpenCV 的版本选择。这样,可以对同一套代码,灵活使用不同的 OpenCV 版本,同时不用去 Visual Studio 的工程属性里手动设置该版本对应的 include 和 library 目录

比如说,如果你要使用2.4.9版本,则可以使用下面的代码:

if ( WIN32 )
    SET(OpenCV_DIR G:/setup_files/OpenCV/Windows/OpenCV-2.4.9/build)
endif( WIN32 )

如果需要使用 2.4.3 版本,则只需要把上面代码里的目录修改掉重新 cmake 一把就可以了。

(0) Comments    (271) Views    Read More   
Posted on 18-11-2015
Filed Under (文化) by waterlin

最近看完了这本《费马大定理:一个困惑了世间智者358年的谜》,书翻译得很好,赞一下译者。

在我看来,这本书除了描述清楚了费马大定理的历史渊源以及相关证明求解的思维过程,最重要的是,教会了我们一直以来在数学教育中最缺乏的数学理念教育。本书对于大部分人来说,最有价值的地方在于简明扼要地论述了数学和一般科学(主要是指物理)的区别,直接引用书本里“绝对的证明”一节里的话:

费马大定理的故事以寻找遗失的证明为中心。数学证明比我们在日常用语中非正式使用的证明概念,甚至比物理学家或化学家所理解的证明概念都远为有力和严格。科学证明和数学证明之间的差别既是极细微的,又是很深奥的。这种差别是理解自毕达哥拉斯以来每个数学家的工作的关键点。

经典的数学证明的办法是从一系列公理、陈述出发,这些陈述有些可以是假定为真的,有些则是显然真的;然后通过逻辑论证,一步接一步,最后就可能得到某个结论。如果公理是正确的,逻辑也无缺陷,那么得到的结论将是不可否定的。这个结论就是一个定理。

数学证明依靠这个逻辑过程,而且一经证明就永远是对的。数学证明是绝对的。为了正确地判断这种证明的价值,应该将它们与比其差一些的同类证明,即科学证明做一比较。在科学中,一个假设被提出来用以解释某一物理现象。如果对物理现象的观察结果与这个假设相符,这就成为这个假设成立的证据。进一步,这个假设应该不仅能描述已知的现象,而且能预言其他现象的结果。可以做实验来测试这个假设的预言能力,如果它再次继续成功,那么就有更多的证据支持这个假设。最终,证据的数量可能达到压倒性的程度,于是这个假设被接受为一个科学理论。

科学理论的证明永远不可能达到数学定理的证明所具有的绝对程度:它仅仅是根据已得到的证据被认为是非常可能的。所谓的科学证明依赖于观察和理解力,这两者是容易出错的,并且仅仅提供了近似于真理的概念。正如伯特兰·罗素(Bertrand Rus-sell)指出的:“虽然这有点像是悖论,然而所有的精确科学都被近似性这个观念支配着。”甚至被人们最为普遍地接受的科学“证明”中也总有着一点儿可疑成分。有时候,这种怀疑会减少,尽管它永远不会完全消失;而在另一些场合,这种证明最终会被证实是错的。科学证明中的这个弱点导致用一种新的理论替代原来曾被认为是正确的理论的科学革命,这种新理论可能只是原有理论的进一步深化,也可能与原有理论完全相反。

接下来的一段结论:

科幻小说作家和未来学家阿瑟·C. 克拉克(Arthur C. Clarke)曾这样写道:如果一个有名望的教授说某事毫无疑问是正确的,那么有可能下一天它就被证明是错误的。科学证明有不可避免变化的不定和假冒。另一方面,数学证明是绝对的,无可怀疑的。毕达哥拉斯至死仍坚信他的这个在公元前500年是对的定理将永远是对的。

科学是按照评判系统来运转的。如果有足够多的证据证明一个理论“摆脱了一切合理的怀疑”,那么这个理论就被认为是对的。在另一方面,数学不依赖于来自容易出错的实验的证据,它立足于不会出错的逻辑。

本书最后“第八章 大统一数学”的“计算机证明”一节里,还有一段特别值得大家深思的话,在计算机使用越来越广泛的今天,下面这一段,永远值得刻在所有的码农脑子里:

这个奖到底是不是会被认领还是件有争议的事,但可以肯定的是计算机证明总不如传统证明那样发人深省,相比之下它显得空虚。数学证明不仅回答了问题,它还使人们对为什么答案应该如此有所理解。把问题送进一个黑匣子然后从另一端收到一个答案,这增加了知识但没有增进理解力。

看,只增加了知识,但是没有增进理解力!

(0) Comments    (534) Views    Read More   
Posted on 13-11-2015
Filed Under (技术) by waterlin

在 Android 中,要实现动画效果,要么通过循环调用 canvas.draw 系统方法,要么通过调用 Opengl ES 中的 GLSurfaceView.Renderer,通过实现方法 onDrawFrame 来进行绘制。

canvas 画图确实要简单得多,但要实现更好的性能最好还是调用 OpenGL 方法,因为它的性能相对来说要好一些。

实现动画的关键就是实现 GLSurfaceView.Renderer 接口内的方法,最重要的一个就是 onDrawFrame,这个方法的原理是 Android 系统会开起一个线程,在此线程内不断的调用 onDrawFrame,以实现动画效果。因此只要在 onDrawFrame 方法里实现你自己需要重复绘制的内容即可。

可以通过 GLSurfaceView 的 setRenderMode 这个方法来设置是通过其它地方的消息来刷新 onDrawFrame,抑或让系统自动刷新 onDrawFrame 这个函数。

在我的测试结果下,如果让系统自动调用 onDrawFrame 函数,会精确地 20 毫秒刷新一次。

另外,如果需要限制 onDrawFrame 的速度,可以在 onDrawFrame 函数里使用 Thread.Sleep 来延长一下线程的执行时间,不过这个时间需要精确计算一下才能达到控制一秒刷新若干帧的要求,需要考虑到当前线程周期里已经消耗的时间等因素。

(0) Comments    (855) Views    Read More   
Posted on 06-11-2015
Filed Under (技术) by waterlin

本文摘自《费马大定理:一个困惑了世间智者358年的谜》“第三章数学史上暗淡的一页”中的部分内容,主要是介绍一下密钥和公钥的数学原理,摘录于下,备查。

虽然质数的无穷性使早期证明费马大定理的希望破灭,但质数的这种性质的确在诸如谍报活动和昆虫进化等别的领域具有比较积极的意义。在回到寻求费马大定理的证明之前,稍微研究一下质数的正常使用和滥用是值得的。

质数理论是纯粹数学中已经在现实世界中找到直接应用的少数领域之一,它在密码学中有直接应用。密码学涉及将需要保密的信息打乱,使得只有接收者才能整理出它们,而别的任何可能截获它们的人都无法做到这一点。这种打乱的过程需要使用密钥,而整理这些信息按惯例只需要接收者反过来使用密钥就行了。在这个程序中,密钥是保密环节中最薄弱的一环。首先,接收者和发送者必须约定密钥的详细内容,而这种信息的交流是一个有泄密风险的过程。如果敌方能截获正在交流的密钥,那么他们就能译出此后所有的信息。其次,为了保持安全性,密钥必须定期更改,而每一次更改时,都有新的密钥被截获的危险。

密钥的问题围绕着下面的事实展开:它的使用,一次是打乱信息,另一次是反过来整理出信息,而整理信息几乎与打乱信息同样容易。然而,经验告诉我们:在许多情况中整理要比打乱困难得多——打碎一个鸡蛋是相对容易的,而重新拼好它则困难得多。

在20世纪70年代,惠特菲尔德·迪菲(Whitfield Diffie)和马丁·海尔曼(Martin Hellman)提出了这样的思想:寻找一种按一个方向很容易进行,而按相反方向进行则不可思议地困难的数学程序。这种程序将会提供十分完美的密钥。举例来说,我可以有自己用的、由两部分组成的密钥,并且在公用指南中公开它的用于打乱信息的那部分。

于是,任何人都可以向我发送打乱过的信息,但是只有我知道密钥中用于整理信息的那一半。虽然人人都了解密钥中关于打乱信息的那部分,但是它和密钥中用来整理信息的那部分毫无联系。

在1977年,麻省理工学院一群数学家和计算机专家罗纳德·里维斯特(Ronald Rivest)、艾迪·沙米(Adi Shamir)和伦纳德·阿德里曼(Leonard Adleman)认识到质数可能是易打乱、难整理过程的理想的基础。为了制成我自己的私人密钥,我会取两个大质数,每一个多达80个数字,然后将它们乘起来得到一个大得多的非质数。为了打乱信息所需要的一切,就是知道这个大的非质数,然而要整理信息则需要知道已经被乘在一起的原来的两个质数,它们称为质因数。现在我可以公开大的非质数,也即密钥中打乱信息的那一半,而自己保存那两个质因数,即密钥中整理信息的那一半。重要的是,即使人人都知道这个大的非质数,他们要判断出那两个质因数却仍然非常困难。

举一个简单的例子,我可以交出非质数589,这可能会使每个人都能代我打乱信息。然而,我将保守589的两个质因数的秘密,结果只有我能够整理信息。如果别的人能判断出这两个质因数,那么他们也能整理我的信息,但是即使是对这个不大的数,两个质因数是什么也不是显而易见的。在589这个情形中,在台式电脑上只要花几分钟就可算出两个质因数实际上是31和19(31×19=589),所以我的密钥的秘密不会持久。

然而,实际上我公布的非质数将会有100位以上的数字,这就使找出它的质因数的任务变得几乎是不可能的。即使用世界上最快的计算机来将这个巨大的非质数(打乱信息的密钥)分解成它的两个质因数(整理信息的密钥),也要花几年时间才能得到答案。于是,为挫败外国间谍,我仅仅需要每年一次更改我的密钥。每年一次我宣布我的巨大的非质数,任何人要想尝试整理我的信息,就必须从头开始设法算出这两个质因数。

除了在谍报活动中发现应用外,质数也出现在自然界中。在昆虫中十七年蝉的生命周期是最长的。它们独有的生命周期开始于地下,蝉蛹在地下耐心地吮吸树根中的汁水。然后,经过17年的等待,成年的蝉钻出地面,无数的蝉密集在一起,一时间掩盖了一切景色。在几个星期中,它们交配,产卵,然后死去。

除了在谍报活动中发现应用外,质数也出现在自然界中。在昆虫中十七年蝉的生命周期是最长的。它们独有的生命周期开始于地下,蝉蛹在地下耐心地吮吸树根中的汁水。然后,经过17年的等待,成年的蝉钻出地面,无数的蝉密集在一起,一时间掩盖了一切景色。在几个星期中,它们交配,产卵,然后死去。

有一种理论假设蝉有一种生命周期也较长的寄生物,蝉要设法避开这种寄生物。如果这种寄生物的生命周期比方说是2年,那么蝉就要避开能被2整除的生命周期,否则寄生物和蝉就会定期相遇。类似地,如果寄生物的生命周期是3年,那么蝉要避开能被3整除的生命周期,否则寄生物和蝉又会定期相遇。所以最终为了避免遇到它的寄生物,蝉的最佳策略是使它的生命周期的年数延长为一个质数。由于没有数能整除17,十七年蝉将很难得遇上它的寄生物。如果寄生物的生命周期为2年,那么它们每隔34年才遇上一次;倘若寄生物的生命周期更长一些,比方说16年,那么它们每隔272(16×17)年才遇上一次。

为了回击,寄生物只有选择两种生命周期可以增加相遇的频率——1年期的生命周期以及与蝉同样的17年期的生命周期。然而,寄生物不可能活着接连重新出现达17年之久,因为在前16次出现时没有蝉供它们寄生。另一方面,为了达到为期17年的生命周期,一代代的寄生物在16年的生命周期中首先必须得到进化,这意味着在进化的某个阶段,寄生物和蝉会有272年之久不相遇!无论哪一种情形,蝉的漫长的、年数为质数的生命周期都保护了它。

这或许解释了为什么这种假设的寄生物从未被发现!在为了跟上蝉而进行的赛跑中,寄生物很可能不断延长它的生命周期直至到达16年这个难关。然后它将有272年的时间遇不到蝉,而在此之前,由于无法与蝉相遇它已被赶上了绝路。剩下的是生命周期为17年的蝉,其实它已不再需要这么长的生命周期了,因为它的寄生物已不复存在。

(0) Comments    (270) Views    Read More   
Posted on 30-10-2015
Filed Under (技术) by waterlin

MPEG-4 Part 2 或是 MPEG-4 Visual 是指 MPEG4 标准集里有关视频/可视化物体编码的部分。MPEG-4 Part10 是指 H264 或是我们平常说的 AVC。H264 是由ITU-T 和 MPEG 联合开发的:H264 是 ITU-T组织的叫法,MPEG-4 AVC 是 MPEG 组织的叫法。

MPEG4 Part2 编码器的主要实现有:DivX, Xvid,H264 编码器的实现主要有 x264 等。

两者的编码方法和原理有着本质的不同, part2 是使用了分层的 object 模型来进行数据压缩的,而 H264 更多的是宏块的计算与偏移。由于 part2 和 part10 这样的名称原因,并且都是用于视频压缩,很多人会想当然地以为 part10 是 part2 的改进,但是实际上 part10 和 part2 没半毛钱关系,完全是两个东西。

Part2 的目标是用来编码不同种类的可视化物体如视频、3D 模型等,而 part10 的目标则单纯得多,就是为了提供一种高效率和高质量的视频编码标准。

可以这么说,H264 是为了降低 MPEG-4 Part2 的码率而诞生的,用它压缩的视频,在同样的效果下有着更低的码率。在互联网应用以及高清视频下,H264 是一个更好的选择。在现在的当下,对于视频压缩来说,基本上都是选择 H264,因为有着更高的压缩效率、更多的硬件支持、更多的平台支持、更多的开源项目。

另外,对于大多数人喜欢笼统地说“使用 MPEG-4 编码的视频”,一般来说,是指使用 MPEG-4 Part2 来编码的视频。出于习惯,人们喜欢把 MPEG-4 Part2 直接称为 MPEG-4。由于历史原因,这个在广播电视里用得比较多。

一般来说,碰到类似含糊不清的句子,你可以强调地问一句:是使用 part2 还是使用的 part10 来压缩视频的?

MPEG4 标准还提供相关的很多其它部分,比如说 Part 12 和 Part15 就是定义了一种名叫 .mp4 的文件格式,用来存放 Part10(即H264)的视频内容和 Part3(例如 AAC) 的音频内容。

(0) Comments    (261) Views    Read More   
Posted on 01-06-2015
Filed Under (技术) by waterlin

以下示例声明了一个指向 float 的指针:

float *powerPtr;

因为 powerPtr 变量的类型是指向 float 的指针,所以读者可能会将代码写成:

float* powerPtr;

这样写没有问题,编译也会通过,但不是好的代码风格。

C语言允许在一行代码中声明多个变量。例如,要声明变量 x、y和 z,可以将代码写成:

float x, y, z;

以上三个变量的类型都是 float。

再看下面这段代码,b 和 c 变量分别是什么类型?

float* b, c;

答案可能会出乎读者的意料。b 是指向 float 的指针,但 c 的类型却是 float。如果需要将 a 和 b 都声明为指针,就必须在每个变量前都加上*:

float *b, *c;

在这种情况下,将 * 写在变量名这边,能让声明看上去更清楚。

摘录自《Object-C 编程》122页。

(0) Comments    (708) Views    Read More   
Posted on 21-05-2015
Filed Under (技术) by waterlin

增强现实(以下简称 AR)在三四年前是非常热闹的一个移动 App 发展方向,可是过了这么多年,现在依然是不愠不火,不管是商业上还是技术上,感觉也没有什么太大的突破。把之前的旧笔记整理一下,分享给大家,感觉接下来类似的应用在中国多少会有一点突破啊,起码是一个不错的信息载体和发现平台。

1. 标识识别类 AR 应用

  • Junaio,AR浏览器,准备作为一个 AR 的展示出台
  • int13,专门制作 AR 游戏的厂商
  • apetrus argirl,专门制作游戏的厂商
  • iButterfly,在屏幕实景上显示出蝴蝶,娱乐产品

2. 地理信息类 AR 应用

有一些 AR 应用,显示的内容都是基于 LBS 技术的应用,只不过展示用的是 AR 技术。

  • Layer,详情可以查看这篇文章
  • Wikitude

    根据手机的 GPS 坐标获取相应的 POI 信息,还可以指定从几个网站获取相应的 POI 信息;Wikitude 类似 Layar 的系统架构,提供内容频道。

    但是系统模型不如 Layar 科学,数据内容也不如 Layar 丰富。

    提供 Android,iPhone, Symbian 平台客户端。还提供了一个 SDK,可以集成到自己的 AR 应用里,还是基于地理位置的 AR SDK。

  • TagWhat
  • Augmented Car Finder,增强现实技术的停车场汽车查找器

3. 与硬件搭配的游戏

  • ARDrone

    AR Drone这款玩具,相信对有的童鞋来说已经不是什么新鲜事了。早在年初拉CES 2010(国际消费电子展)上,由法国巴黎的 Parrot 公司展示了这款能用 iPhone 操作的直升机玩具就大放异彩夺得电子游戏硬件创新奖。

    这款遥控直升机通过 4 个螺旋桨飞行,而机身上的摄像头可以让玩家透过屏幕,实时观赏沿途飞行的风景。通过 Wifi 连接到 iPhone 或者 iPod Touch,控制 AR Drone 作出各种飞行动作。而通过其摄像头以及 AR 技术实现的多人虚拟对战游戏功能,在屏幕上直升飞机前会出现虚拟的敌人(屏幕上看到的游戏场景是真实的摄像头拍摄场景与虚拟环境的叠加),可以让玩家有逼真的空战体验。Parrot 还开放了开发平台,希望更多的开发商参与到 AR Drone 的发展,带来更多不同体验的有趣游戏。

(0) Comments    (422) Views    Read More