2012年8月3日星期五

本机搭建yiiframework的步骤

因为工作需要,最近在学习使用yiiframework来构建网站,今天记录一下本机搭建yiiframework的步骤。


1)下载并安装WampServer (Apache, PHP, MySQL on Windows)
http://www.wampserver.com/en/
安装到譬如,H:\wamp\


2)下载并安装yiiframework
http://www.yiiframework.com/download/
将下载完成的安装包,解压到WampServer的WWW文件目录,譬如H:\wamp\www
并改名为yii,H:\wamp\www\yii\demos可以看到其demos例程


3)使用Yii Requirement Checker,
它可以用来来查看server的configuration是否符合Yii Web applications的要求
在浏览器中输入:
http://localhost/yii/requirements/index.php


4)yiic工具使用前的设置
如果Requirement Checker一切ok,为了运行yiic工具(这个工具可以快速创建yii应用),需要修改系统环境变量,在PATH中添加PHP所在目录地址,譬如:H:\wamp\bin\php\php5.3.13


5)使用yiic工具
使用CMD,进入我们的framework的目录,譬如为H:\wamp\www\yii\framework

输入/yiic webapp
我们这里使用在WampServer的WWW文件夹,H:\wamp\www\test,Yii会自己创建新文件,test应用生成了,使用浏览器打开http://localhost/test/,可以看到刚刚创建的应用

2012年7月18日星期三

闲聊几句

又快一个月没有更新博客了,最近实在很忙,现在更新博客的速度从每周一篇下降到每月一篇,SIGH,今天在家里用微博的方式闲聊几句。

退一步海阔天空
这是一句n年前就我就知道的大道理,但是直到快30岁才真正体会,因为最近真正退了一步,突然发现世界其实不是我一直看到的那样。退一步,反而视角更广,同时可以换个角度去审视自己的目标,个人的现况。过去两年我几乎都扎在科研中,几乎没有认真听听自己内心的声音。


不要浪费时间了
这个月常常和一些人协同做一些工作,发现很多人都工作非常没有效率,仔细观察一下,正如很多文章都谈到的:“工作缓慢的人,通常都会在不作也可以与不太重要的事情上,没完没了地浪费时间。”


问题具体化的力量
问题具体化方法相必很多人都知道,也就是“面对重大困难的的问题,先将问题具体化,再逐一解决。”


对付拖延或逃避问题者
据我最近观察很多人的工作方式,发现他们遇到大的问题是,总是选择拖延或逃避,而不是直面问题。遇到这种人只有两种方法,一是把他们踢出项目(最佳方法),如果无法把他们踢掉,其二就是,我们来做“问题具体化”的工作,找出解决的方案,然后置换成几个非常小目标,给他们限定时间让他们完成这些小目标。


CPM: Critaial Path Method 要经法
最近在实践CPM,也就是“找出最花时间的地方,一开始先从那里着手。”

2012年6月23日星期六

我也去了爱琴海

6月4日到9日我和老婆到希腊的Crete(克里特岛)的Chania小城呆了一个星期。第一次感受到了那个在中国很出名的“爱琴海”,突然想起来,我当年拍结婚照的摄影楼也叫“爱琴海”。

说来也挺有趣的,我们居然在一个月内去的西班牙和希腊,两个“欧债危机”最最严重的国家度假。
其实相对德国而言这两国的物价也并不低,当地居民的消费力相对西欧来说比较低一些,看到路上跑的汽车就可以感受的很明显了。这两个国家感觉上,生活节奏较慢,气候非常好,人们也比较热情,有那么好的天气和自然风光当然人们也就比较懒散。与西班牙人不同的是,希腊人的英语普遍很好,特别是旅游区的人。


在这两个国家的确感受到一些的经济危机的影子,在西班牙看到一些烂尾楼和一些空房,可能就是所谓的房地产泡沫破裂,房地产泡沫破裂之后银行体系肯定会出现问题,所以最近德国的电视上常常提到西班牙银行的问题,西班牙的银行在寻求援助。在希腊看到一些关门的小型地区银行,个人感觉西班牙和希腊都没有什么的国际竞争力,但是西班牙还有例如Zara之类的著名集团,而希腊的竞争力就更差了。如此差的竞争力,又有高外债,高失业率,其实这两个国家走出危机的可能性几乎为零,这两个国家苦的日子就快到了。

 

爱琴海海水很清,Crete岛的沙滩还算不错吧。但作为一个从小在海边长大的人来说,海岛风光没有任何新鲜感,其实大概都是这样。
这次住的酒店非常棒,应该是我住过最漂亮的酒店,虽然是4星的。酒店直面爱琴海,内有3个大露天游泳池,我住的房间打开落地窗,就是面对大海的游泳池,我天天游泳,回来后发现自己黑了一大圈,这就是这次度假的一大“收获”。
这次度假的另一收获就是我终于有整块的时间好好读一些一直未读的书,一口气读了12本书。

上一些照片吧。

DSC04748

小教堂。

DSC04773DSC04741
上一些吃的照片,希腊烧烤,海鲜,其实个人感觉也一般吧。

DSC04784
海边的酒吧,和希腊人一起看了欧洲杯揭幕赛,希腊队对波兰,照片的时间是希腊刚刚扳平比分。

DSC04684
Chania小城的地标灯塔。

DSC04715DSC04732
Chania小城的内湾。

DSC04760DSC04794
爱琴海。

DSC04660
上面提到的直面大海的游泳池。

2012年5月28日星期一

拉科鲁尼亚印象

五月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

2012年4月22日星期日

紧耦合的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或应用程序并使用新的运行时库,或新的编译器版本,甚至使用一个全新的语言。

2012年3月6日星期二

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

刚搬新家,新家没有网,过了几天,突然发现最好的“对抗信息过载,信息斋戒”的方法就是,家里没有网,没有定报纸,没有电视,这绝对是做到真正的信息斋戒,真正成为信息社会的原始人,但是我有了更多时间进行运动,读书,还有做家务,我家现在是绝对干净,呵呵。
“对抗信息过载,信息斋戒”次好的方法才是我以前提出的“信息斋戒法则”:
http://www.douban.com/group/209222/
物理隔绝,才是最好的信息斋戒方法啊!现在也不打算装网线了。

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

2012年3月4日星期日

旧办公室

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

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

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

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

DSC00335 - Kopie

我的写字台。

DSC00333 - Kopie

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

DSC00339 - Kopie

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

2012年2月21日星期二

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

2012年2月14日星期二

图像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

2012年1月16日星期一

一月中旬的小结

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

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

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

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

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

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