2016年12月26日星期一

2016年小结

和往年一样,在2016年年底的小结一下本年的情况。

a. 业余活动

根据在豆瓣上的记录,在2016年我总共读了10本书,但有些书没有记录,大多数都是计算机和机器人方面的书籍,大概也读了10本,读书的明显太少了。观影:20部,大部分都是在汉莎来回德国中国途中看的。如果有空,我还喜欢看看皇马还有曼联的比赛,开始看曼联的比赛因为我最喜欢的穆里尼奥去了曼联。欧洲杯看了不少比赛,特别是葡萄牙队的,他们夺冠很励志。因为回国创业,呆在北京的时间不少,我买了不少小米的产品,这是我最2016年喜欢的品牌,在国内我也是支付宝,微信,京东的忠实用户,非常喜欢国内方便的网上支付和网络购物的优秀体验。2016居然没有写博客,但我实现了2015年底定下的目标,写了一本技术科普书,在年中出版了,而且书中部分章节也刊登在一份不错的商业杂志上。

b. 旅游

因为工作的关系回了7次北京,在国内还去了天津三次,济南两次,上海一次,但是都是在公司或者合作伙伴那里埋头苦干,12月份陪了父亲去了一次颐和园,算是14年前的故地重游。12月份和女儿和老婆还有岳母去了西班牙的Fuerteventura,呆了一个星期,算是唯一的一次度假。对了,2016年在国内和欧洲品尝了不少美食。

c. 工作

国内的公司在今年3月底正式成立,在公司上投入了绝大部分的精力。在北京认识了大量新朋友,结交了不少行业内的大牛。9月份代表公司在汉堡参加的展览会。11月18日顺利地完成了公司的第一轮融资。2017年公司的主力产品完成了5次迭代,5月份搭建好了公司实验室,11月份完成公司办公室的装修,也搭建好了公司基于云端的IT环境。在和公司一起成长的过程中,学习了大量的知识,获取的许多经验,得到了很多见识,我希望未来可以把这些东西整理起来,也写一本书。2016年花了很多时间,讨论公司的发展,定好了公司的文化,包括Vision,Mission和Value。

d. 生活

更加进入了父亲的角色,2016年12月底又要搬家,因为女儿需要更大的空间,还有为了迎接未来的宝宝。

2016年对我来说是一个充满挑战的一年,我认为绝大部分的挑战我都完成的很好,但是也有一些不足的地方。

2017年,希望新公司一切都顺利吧,核心团队建设完成,公司年中能够成功完成新一轮的融资,并且产品上市。如果时间允许的话,我希望可以再写一本书。

2015年12月31日星期四

2015年小结

和往年一样,在2015年的最后一天分几个部分小结一下本年的情况。

a. 业余活动

根据在豆瓣上的记录,在2015年我总共读书:25本,平均:14.44天读一本书,读书的时间明显太少了,因为今年很少坐火车,对我来说坐火车的时候是阅读的最好时间。观影:62部,平均:5.82天看一部电影。2015年博客也写的非常少,只有5篇。2月份3月份,我和老婆喜欢上骑自行车,常常每天骑30到60公里。没事的时候,我还喜欢看看皇马还有切尔西的比赛。


b. 旅游

虽然去的地方很多,特别是北德去了不少地方,但是都是一天内的走马观花的看看,但是几乎没有真正的旅游。柏林连续去了3次,但是都是公事。2月份回了趟中国,给一家公司做培训。


c. 工作

今年彻底从研究所辞职不干了。因为精力有限,退出了一家和以前校友共同合股的公司,将所有的股份都转让了,在这家公司的创业过程中没有赚到任何钱,还搭上了大量的精力,但是收获都很多,经验和眼光都得到很大的提升。一整年都集中精力在做自己的公司的事情,拿到了一些天使投资,正还在筹备做一家科技创业的公司,准备明年初在国内成立,2015年底真是非常忙。6月份花了一个月的时间将机器人的部分控制系统编写完成。7月份,努力了一个月将博士论文的一个部分的代码重写,加入了新的东西。博士论文还是有一搭没一搭的做着。8月份做了一个简单的演讲介绍了一下进度,博士论文还差一个重要的部分需要研究,但是因为实在太缺时间了,不知道什么时候可以最终完成。8月份准备了一个项目的实物演示。9月份带着这个项目的实物演示在德国参加了一个小型展览会,我们的展台很受瞩目,得到了一些小小的进步,增强了我对我们现在做的项目的信心。10月到11月,两个月将所有时间都用在我们国内成立公司的各种事情上。


d. 生活

2015年对我来说最大的事情和最大的成就是,我的女儿年底出生了,我终于升级成爸爸了。因为老婆工作的关系,我们在北德的一个小城租了一个小房子,4月份我花了一个月的时间买家具,进行简单的装修,我们的小房子才终于可以住起来很舒服了,我们一年中有一半的时间住在那里,那里还是挺舒服的,城市不大但是挺漂亮的。



2015年对我来说是一个很折腾又很欢乐的年,搬家,长时间的编程,大量的机器人调试,准备新公司,迎接家庭新成员。

2016年,希望新公司一切都顺利吧,可以完成我的博士论文,然后抽时间写一本中文的技术书,这件事已经想了很久了,希望明年可以做到。

2015年7月15日星期三

最好的"关于什么是回调函数"问题的解答

今天在翻stackoverflow,看到一条解答,差点笑喷,实在牛逼,史上最好的关于什么是回调函数Callback的解释(links),如果你熟悉,Carly Rae Jepsen的Call me maybe这首歌。


2015年5月12日星期二

关于C#连接local database的方法

今天就上一图 关于C#连接local database的方法,这图中包括了代码和VS 2012上如何找到Connection String的方法。


2015年5月11日星期一

使用Emgu CV不要忘记加入OpenCV Libs

记录一个小经验。使用的是Emgu CV 2.410版本,如果编译CameraCapture这样的小程序,我们需要Emgu.CV.dll,Emgu.CV.UI.dll和Emgu.Util.dll加入Project的Reference中去。这样就可以执行这个小程序。



有时候在VS2012中运行编译后的程序有可能会出现上图所示这个问题,可能的原因 1. 没有OpenCV Libs,如果编译成x86,我们就需要把x86的目录放入Debug和Build生成exe的文件夹里面,可以x86这个文件夹从C:\Emgu\bin里面找到。2 也有可能设置Debug和Build的路径问题,只需要确认是否正确设置就可以了。

2015年5月6日星期三

C++中的vector快速拷贝

今天编程中发现新写的程序运行速度很低,经过一番查找才发现是的vector拷贝的效率问题。

//[1] 方法1
vector vec = vec_src;

//[2] 方法2
vector vec(vec_src);

//[3] 方法3
vector vec(vec_src.size());
std::copy( vec_src.begin(), vec_src.end(), vec.begin() );

// 使用的是OpenCV的方法用来测试运行的时间
double t = (double)getTickCount();
t = ((double)getTickCount() - t)/getTickFrequency();
// some codes
cout << "Times passed in milli seconds: " << t * 1000 << endl;

方法3最快,在我的笔记本上用VS2012在32bit中居然比第一种和第二种方法快近10倍,当然了也可以使用memcpy,但是其效率不会比std::copy高多少。

2014年12月31日星期三

2014年小结

在2014年的最后一天分几个部分小结一下本年的情况.

a. 业余活动

刚刚看了阅读DNA对我在豆瓣上的记录统计:
我在2014年共读过58本书,五星好书11本,11月最勤快读了20本,平均:6.28天读一本书.
大概是这个数吧,有时候忘记统计了,有时候想起来的时候一个月把前几个月读过的书都在豆瓣上加上,其实11月没有读20本.平均:6.28天读一本书,大概一个星期读一本书,速度不快不慢.刚刚好,刚刚发现其实在2012年,我也是读了58本书.除了专业的书,2014年我个人比较推荐的五星好书为<房噬>和<费雪论创富>.看来如果即使今年工作很忙的阶段,每个星期读一本书还是可以保证的,把每周零散的看书的时间集成在一起大概有3个小时.

看了46部电影,其中五星电影4部,9月最消遣看了9部,平均:7.91天看一部电影.大部分在家看的,到电影院大概10几次吧,平均每个月一次.只有四部我评为5星<星际穿越><布达佩斯大饭店><纸牌屋 第二季>.加上没有记录的美剧,平均起来的时间,大概也就是每个星期看一部电影看一集美剧,大概每周不到3小时.

读书看片大概是我比较重要的业余消遣,读书其实很多时候读的还是工作上的专业书.大概每周花6个小时来读书看片.加上每周2个小时左右的运动.这个8个小时就是我平时最重要的业余消遣活动.

对了,2014年博客写的也不多,加上这篇才12篇,每月一篇,都是一些技术上的简单记录.希望2015年能有更多的时间来写博客.

b. 旅游

真正的旅游就是2014年春天到西班牙的Teneriffa呆了一个星期吧,满满的美好记忆.其他都是很多很多的德国境内的短途旅游,大多数都是去不同的城市工差办事.

c. 工作

简单提一下2014工作的情况吧:
一个已经做了3年的项目2014年有一个比较大的突破,终于做出了一个可以使用,用户满意的前端版本,从9月底开始了用户使用测试,进行的不断的迭代和纠错,现在用户有了一个相对不错的稳定的硬件平台和相对应的软件.后端程序还是有很多东西需要进一步开发,2014年开发后端程序的时候走了不少弯路,经历了许多方向性错误,经过不停的修正,经历了一个无比痛苦的过程,现在终于走上的正轨,希望在2015年初有一个稳定的后端版本可以推出.个人目标为2015年中可以彻底结束这个项目.

二月底成立了一家新公司.2014年7月艰难地开始一个筹划很久的项目,这个项目年底得到一个小的投资,正式开始.有可能2015年2月前可以得到一个比较大的投资.

2014年可以说是艰苦积累的一年,2015年项目上了轨道,应该会更忙,有可能会经常出差,希望一切顺利吧.

d. 生活

总体上都还行吧,老婆6月底毕业,年底请岳母来德国玩了3个月,生活中的一些新的计划也在有条不紊的进行.

2014年12月23日星期二

关于CLR的runtime的一个小记录

如果在.NET项目中使用Common Language Runtime Support (/clr)编译C++项目,如下图所示,如果使用VS2012会默认使用,.NET framework 4.5:



如果我们使用引用这个通过CLR编译的dll,查看它的属性,也会发现,如下图所示的,这个dll的Runtime Version是v4.0319。



如果我们的项目使用的不是.NET framework 4.5,使用上面所述的CLR编译的项目中的namespace就会出现下面的报错:
Error 492 The type or namespace name 'XXX' could not be found (are you missing a using directive or an assembly reference?)
最简单的解决的方法就是修改我们项目的Target Framework,将其改为4.5就可以了。

2014年9月11日星期四

使用QNetworkAccessManager下载文件的一个问题

今天发现一个问题,使用Qt的QNetworkAccessManager进行下载,将其放入一个QPushButton的clicked()的slots,但是无法正确执行下载文件,想了半天,还是没有搞明白,最后在stackoverflow在找到这个问题的解决方法,才明白,因为QNetworkAccessManager是非同步的,它需要一个event loop去开始下载,而我们执行clicked()这个slots,它会给一个control back给event loop,但是QNetworkAccessManager以及被销毁了,没有时间去做QNetworkAccessManager的下载文件。

解决方法:如果加入一个QMessageBox,这样就会启动另一个event loop在这个slot里面,这样QNetworkAccessManager就会有机会完成下载文件这个工作。

链接:
http://stackoverflow.com/questions/7870017/how-can-i-download-file-from-the-internet-in-qt

2014年9月8日星期一

OpenCV放大或者缩小图像的速度

使用OpenCV放大或者缩小图像,我们比较熟悉的是下面的function:
cv::resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )¶
http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html
关于它的Interpolation method(插值方法),其中:

INTER_NEAREST 最近邻插值,是最快的method并且创建blocky images并选择1个pixel去替代几个pixels,这样做得到图像的结果效果比较差。
INTER_AREA 也是一个快速计算方法,它取几个pixels的平均值,所以它比较适合缩小图像,而不是放大图像。
INTER_LINEAR 使用双线性的插值去改变图像尺寸,组成几个pixels在一起(在很多情况下是比较好的选择,但是计算速度比较慢)。
INTER_CUBIC 使用的是双三次的插值,但是计算机量比较大,所以运行速度慢,而且有时候结果看起来比较好,有时候比较差。

非常简单地,不完全正确地说,在速度上:
INTER_NEAREST > INTER_AREA > INTER_LINEAR > INTER_CUBIC
但是放大或者缩小图像后的效果上一般而言INTER_LINEAR是相对最好的。

其实,也可以使用Opencv的cv::pyrUp(使用Gaussian 金字塔分解对输入图像向上采样)和cv::pyrDown(使用 Gaussian金字塔分解对输入图像向下采样),关于使用这两个function去放大或者缩小图像,具体信息可查阅下面链接:
http://docs.opencv.org/doc/tutorials/imgproc/pyramids/pyramids.html
但是cv::pyrUp和cv::pyrDown的运算速度其实也并不高。