首先这几天安装配置环境编译opencv什么的,感觉折腾坏了。但是最大的收获第一就是成就感(虽然弱爆了),第二就是一意识到一个科学的方法体系。
先来说说跟编程有关的,这几天在跑ML的算法也好,还是运行图像的分类识别。总会遇到一些错误,然后第一反应就是不管三七二十一的瞎搜,瞎折腾。浪费了很多的时间,而且挫折感巨大。
我觉得如果再遇到问题,第一先看错误提示很有用。然后可以看看错误的结果。再想一想可能是哪里出错了,就像之前thinkpython的 Allen介绍的那样,要一步步来排查,做一个系统的debug的。(反正原文不是这么说的,但是我就当这个意思了。)
之前的 Kmeans出错,分别排查,很轻松的就到处来是迭代的第一部分归类写错了。不是算法错误,就是程序各种错,这也反映了index总是用i,j就傻傻分不清楚,整个程序要是用a,b,c不得把人累死。这种方法很轻松的嫁接到和同学讨论他EM算法为什么总是把4类迭代到两类。因为他在初始化的时候发生了错误。
之前尝试在ASUS的Windows上,怎么也进不去好久之前的那个MySQL instance。。。。总提示错误,我就以为是密码忘记了。。。。后来仔细看咯错误提示,原来是自己的MySQL的服务器未启动。。。摔,在网上看了好多教程都叫启动之后,blablabla,怎么改密码。我竟然把自己的思维绕死了。
本来觉得SQL的环境要配置一下,应该很简单才对,就先配置了MySQL,
#!bin/zsh brew install mysql
然后很轻松的就能打开mysql.server。之后安装了GUI界面的WorkBench。
接着就雷同的配置的了PostgreSQL,也是一样用的HomBrew。期间我又仿照MySQL安装,想要安装一个Postgres的GUI,然后无脑安装了那个连同服务器一起的GUI安装包,并设置了密码。
尝试Terminal启动postgres服务。PassWord输入。
错误。。。
错误。。。
然后就崩溃了,在像是不是和MySQL那样,需要重启呢。然后Restart。。。。。为什么多了一个PostgreSQL的用户!!!
各种密码也是不对。。。。彻底崩溃。。。。。
晚上和同学商量用Mac的Xcode来做Opencv。按照之前他配置好的路径来尝试,然后。。。。Error。。。
到家以后,手边就有这么几个错误,PostgreSQL的密码到底是哪个?Xcode为什么之前可以,现在会出现错误?
内心深处要配置成功的冲动叫我必须搞定它们。
首先搞一下PostgreSQL的密码,通过反复重装,其中也参考了postgresql.org官网的教程,最终方案:用HomeBrew装了postgresql的9.3.5版本,然后GUI界面下装了pgadmin的单独安装包。尝试了一下,HomeBrew的安装的postgresql并没有给定密码,我使用的是之前GUI界面设定的密码,应该是因为本机配置的pgsql的服务器密码写在一个文件里,通过pgadmin也看了,而且密码是经过MD5加密的的,但是HomeBrew安装以后,你的UsresGroup的里面就会多一个PostgreSQL的Standard用户,这个密码并不是我之前的密码,但是没关系,反正我们是Admin,我直接就删除了。如果以后遇到问题,我会补充的。
终于搞定了一个。下面就是研究Opencv为什么不可以了。
纠结了一晚上。。从12点搞到5点。。。。期间也配置来eclipse C++的opencv。
然后原因很简单。。。。蠢哭了
Mac Xcode:首先是LibrarySearchPath的路径搞错了。。。。。通过下面两个命令能很好定位OpenCV的路径,当然别的也可以
#! bin/zsh pkg-config --cflags opencv pkg-config --libs opencv
一个返回include需要的路径,另外一个就是LibrarySearchPath的了。
然后工程也就是IDE上的错误,应为导入的是VS环境声称的一套。Project的名字没对。。。。。。竟然是名字没对!!!
Eclipse: 各种无脑opencv.org官网的一套。然后不成功。。。。。
最后的问题是Mac版的Eclipse的GUI和Linux的稍微有些不同,我在DisplayImage的Project下创建了一个DisplayImage的Folder然后Build之后提示 nothing to be done for "all"。
简直无语了,感觉这两个错误就是自己的C++IDE和基本原理的不熟悉。以前总是忽略这些,也不重视起来,到了工程上,把自己搞的乌烟瘴气。
总结:解决问的方法有时候很简单,从基本问题着手,一点点的分析,再测试。
Ps.回忆起当是用windows的prompt来编译java。其实好处还是蛮多的,用多了python,js这种,都忘记最简单的了。还需要努力啊