拉科鲁尼亚印象

五月14号到19号,我和老婆在西班牙拉科鲁尼亚(La Coruña)度了五天假。西班牙真是一个脚步缓慢,商店上午要午睡,打烊的神奇的国度。西班牙人从下午2点到5点,开始吃午餐,晚上居然9点后吃晚餐,这令人很不适应,但是这反而似乎很适合旅游度假的生活节奏。

拉科鲁尼亚 — 25万人口的小市镇,不仅是西班牙重要的港口,也是纺织业中心,它也是全球著名的成衣零售商Inditex(也是Zara的母公司)的总部[1]。

DSC04318DSC04392

海克力士塔(Tower of Hercules)拉科鲁尼亚的地标[2],也出现在市徽上。

DSC04288
Riazor beach,我们当时就住在图中最左边的Melia Maria Pita酒店。

DSC04275
地标之一位于市中心的方尖石碑(The Obelisk)。

DSC04382
这是我第一次看到大西洋。

DSC04343
Compass rose,位于海克力士塔旁 representing the different Celtic peoples[4]。

DSC04477
San Antón 城堡里的短枪展出。

DSC04570
市中心科学馆的甲虫展出。

DSC04601
超过一百年的历史拉科鲁尼亚足球队(西甲老牌劲旅)的主场Estadio Municipal de Riazor(里亚索),02/03赛季欧洲冠军杯历史上最不可思议的一次逆转——在里亚索4:0战胜上届卫冕冠军AC米兰[3]。

DSC04633
Zara在拉科鲁尼亚市中心的门店,平价奢华与快速流行[1],Zara成功秘诀。
参考:
[1]详见:遠見雜誌2006年12月號 第246期 http://www.gvm.com.tw/Boardcontent_12575_1.html
[2]详见:http://en.wikipedia.org/wiki/Tower_of_Hercules
[3]详见:http://zh.wikipedia.org/zh-cn/%E6%8B%89%E7%A7%91%E9%B2%81%E5%B0%BC%E4%BA%9A%E7%AB%9E%E6%8A%80
[4]详见:http://en.wikipedia.org/wiki/A_Coru%C3%B1a

发表在 生活 | 发表评论

紧耦合的DLL /松耦合的DLL?

Tightly coupled DLL, Loosely coupled DLL应该翻译成为紧耦合/松耦合的DLL? 我不知道,最近在stackoverflow上看到一个问题的很好的回答,这个回答也谈到了Tightly coupled DLL, Loosely coupled这个问题,这里做一个非常简单的翻译:

其实所谓的紧耦合的DLL(Tightly coupled DLL)也就是:DLL是建立具有完全相同的编译器版本,包装和调用约定设置,应用程序的库选项,两个动态链接到运行时库(/ MD编译器选项)。这可以让对象传递包括STL容器,从应用程序内部分配DLL对象,从其他模块中派生基类。但是其实也可以不使用DLL做到这些。紧耦合的DLL的缺点是,不可以让DLL设置独立于主应用程序(main application)。两者都必须一起构建。这里使用DLL仅仅只是提高的进程的启动时间,因为应用程序可以先启动运行,然后再加载的DLL(使用/delayload链接器选项)。构建时间也相对单一模块快,尤其是使用对整个程序的优化。但优化不会跨越应用程序的DLL边界。任何不特殊的变化仍然需要重新构建。

 

松散耦合(Loosely coupled DLL):应用程序不依赖于DLL中定义的对象类布局。这里只使用高度兼容的数据类型,例如:原始类型(primitive types),指针(pointers),函数指针(function pointers),或由这些元素组成的用户定义的类型。类只继承一个基类,这个基类定义了接口,并没有任何数据成员,并没有非虚函数(non-virtual functions)(这意味着没有构造体(constructors)和没有共享标准库的对象如std::string或CString)。所有的分配和创建对象,必须通过一个工厂函数(factory function)。内存必须对已分配的模块释放。代码和数据是分开的。头文件中明确规定每个导出的函数和调用约定,还有允许跨模块边界的每个包装结构。它的优点是DLL和应用程序可以完全独立的更新。可以重新构建一个DLL或应用程序并使用新的运行时库,或新的编译器版本,甚至使用一个全新的语言。

发表在 编程 | 发表评论

家里没有网就是最好的“信息斋戒”途径

刚搬新家,新家没有网,过了几天,突然发现最好的“对抗信息过载,信息斋戒”的方法就是,家里没有网,没有定报纸,没有电视,这绝对是做到真正的信息斋戒,真正成为信息社会的原始人,但是我有了更多时间进行运动,读书,还有做家务,我家现在是绝对的干净,呵呵。

“对抗信息过载,信息斋戒”次好的方法才是我以前提出的“信息斋戒法则”:
http://www.douban.com/group/209222/

物理隔绝,才是最好的信息斋戒方法啊!现在也不打算装网线了。

 

补充,继续提高效率实践的记录:

从这个星期起,我每天就只“真正”工作5个小时,和以前一样,还是每天只编4小时程序或者做研究4个小时,而将干其他杂事的时间从4个小时压缩到1个小时。以前每天居然要花4个小时做一些杂事,这绝对是浪费生命。对于杂事我希望先将目标和步骤要先规划好,然后一件件完成,一次只完成一件事。对于赢得的3个小时,我希望能再学一些新的东西。

发表在 生活, 思考, 杂谈 | 发表评论

旧办公室

今年可谓之有很大的变动,新年前两个月,连续经历了搬家,搬办公室。

一月底搬出了住了2年的宿舍,搬入了新家,相比以前的宿舍,现在的新家可谓是“豪宅”,有75平方米的使用面积,刚开始还真不习惯。

二月底,搬到另一个研究所,搬出了使用了一年的办公室,其实还是有点舍不得的。这个两人间的办公室大概有16平方米,我还是很喜欢的,特别是办公椅,不管坐多久都让人非常舒服的,据说这张椅子至少500多欧元,绝对是一分价钱一分货,一张好椅子对于提高程序员和工程师的工作效率绝对和重要。办公室的大落地窗非常不错,光线很好,春天夏天的时候风景还不错,有时还可以看到小松鼠。两人间的办公室很安静,但又不会太寂寞,其实挺好的。现在新研究所,我使用的是单人间的办公室(同时也是实验室),感觉就挺寂寞。

放上几张随手用手机拍的旧办公室的照片,以作纪念。

DSC00335 - Kopie

我的写字台。

DSC00333 - Kopie

窗外风景,现在是冬天,外面光秃秃的,写字台上原来堆了很多书,已经搬走了。

DSC00339 - Kopie

搬完后,整理完毕的写字台,重来没有这么整洁过Smile

发表在 生活 | 发表评论

Linux:如何在Eclipse中使用post build

 

以前写过“自动将Visual Studio编译生成的dll和lib文件放置到不同的路径中”这篇文章(其实就是使用了Visual Studio的post build),今天我想简单介绍一下如何在Linux下在Eclipse中使用post build的方法。

首先如下图所示,设置post build。

eclipse_post_build_configurations_1

eclipse_post_build_configurations_2

在post build 中我们使用script,以下是我使用的Bash script 例子:

#!/bin/bash

# copy the exe file, if exists
# find $1 -name ‘*.exe’

YOUR_BIN_PATH=$YOUR_BIN_PATH
YOUR_LIB_PATH=$YOUR_LIB_PATH

# Get the file extension to decide the target folder to copy.
file_ext=${filename##*.}

filename=$1

# Based on the file extension, we copy the file to different the target folder.
if [ $file_ext = "so" ]
then
    echo “Copying dynamic library file $contain_so”
    cp -v $filename $YOUR_LIB_PATH
elif [ $file_ext = "a" ]
then
    echo “Copying static library file $contain_sa”
    cp -v $filename $YOUR_LIB_PATH
else
    echo “Copying executable file $1″
    cp -v $filename $YOUR_BIN_PATH
fi

 

延伸阅读:

1. 如何编写bash script:http://linuxconfig.org/Bash_scripting_Tutorial

2. 也许你还有兴趣知道,如何设置Eclipse的Debug configurations中的Environment,如下图所示:

eclipse_debug_configurations

发表在 编程, 工具使用技巧 | 发表评论

图像Preprocessing使用FPGA, CPU, GPU

很久没有写“数字图像处理”系列的文章,今天非常简单的介绍一下Preprocessing使用FPGA, CPU, GPU的效能。

几乎所有的标准的Preprocessing函数都可以归入以下5个主要的类别中:

  • Pixel operations: (in)homogeneous
  • Histogram or LUT based functions
  • Neighbor operations
  • Random access operations
  • Geometrical transformations

Performance(效能)是我们这里所关心的,不同的architectures(架构)适用于不同的operations(运算),例如下表所示:

Operation CPU GPU FPGA
Pixel + ++ ++
Histogram / LUT ++ - ++
Neighbor / Kernel - ++ ++
Random Access ++ - -
Geometrical Transformations + ++ -
Architecture SISD SIMD SIMD MISD
发表在 数字图像处理 | 发表评论

一月中旬的小结

看这篇文章题目就像小学生作文。最近很忙,我的一些博文系列文章例如“电子工程师乱谈编程”,只能暂时停一阵子。但仍希望能坚持每隔一段时间写一个简单的小结。

我住的这个小城今年的冬天到现在居然只下了两场小雪。今天竟还是艳阳高照,零上2度。偷懒一下,窝在家里今天不去上班,其实也是因为想在家里专心把一篇拖了2个多星期的论文写完,希望这篇论文能被6月份的在澳大利亚的我现在研究这个领域一个顶级学术会议上被接受,其实到现在我也发过了几篇文章,但是都是二流的会议,顶级会议还没有试过,祝自己好运吧。

最近学了很多东西,什么PHP,JavaScript,Ajax,WPF,Silverlight,杂杂的乱学了一大堆,其实就是看看网上的教程,结合最简单的head first系列教材,简单入门学了一下,然后自己做搭个简单的网站和抄抄改改做一些小程序。

上个星期的大事就是和同事报名的一个比赛,写了一个4页纸的计划书,注册了两个网址。

上个星期还完成了一个项目的简单收尾工作,进行了一些测试,加了几个小特性,但还没完全完成。人们常说“读书百遍,其义自见”,我认为“读代码百遍,也是其义自见”,为了完成这个项目,我必须在一个师兄的两个项目上拓展,我大概把他的代码读了百遍吧,然后才彻底地理解了这两个项目的架构和所有细节还有使用的技术。

上周末还帮助一个在机械系读博的朋友写了一个小程序,突然很深切的体会到,其实很多东西都可以做到非常好的跨学科,例如计算机科学的一些新的算法,概念,可以延伸并使用在机械科学领域,电子科学领域上,然后会产生一些新的突破,看来做研究还是视野要广一些。

发表在 生活, 思考, 杂谈 | 发表评论