2013年1月31日星期四

如何用javascript激活bootstrap的tab

进入正题前推荐cdnjs.com
类似Google CDN或者微软CDN服务,但是http://cdnjs.com/比他们上面提供的多很多,里面可以找到需要的大部分js。更好的是cdnjs上面不仅host,JavaScript还有CSS, SWF, images等等。


HTML代码,可以使用如下引用它们

<link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap.min.css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.min.js">
</script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.min.js">
</script>


<ul class="nav nav-tabs" id="myTab">
    <li class="disabled active"><a href="#no1">No.1</a></li>
10     <li class="disabled"><a href="#no2">No.2</a></li>
11     <li class="disabled"><a href="#no3">No.3</a></li>
12 </ul>
13  
14 <div class="tab-content">
15     <div class="tab-pane active" id="no1"><button class="btn-test btn" data-activate="#no2">Activate next tab</button></div>
16     <div class="tab-pane" id="no2"><button class="btn-test btn" data-activate="#no3">Activate next tab</button></div>
17     <div class="tab-pane" id="no3">
18         <button id = "finish" type="submit" name="finish_button" class="btn btn-primary">
19             <i class="icon-calendar icon-white"></i>
20             <span>Finish</span>
21         </button>
22       </div>
23
24 </div>
25

 


Javasctrip代码

 

function activateTab(selector) {
    $(selector).on('click.twbstab',function() { $(this).tab('show'); })
        .closest('.disabled').removeClass('disabled');
}


activateTab('#myTab a:first');


10 $(document).ready(function(){
11 $('.btn-test').on('click',function() {
12     var selector = '#myTab a[href="'+$(this).data('activate')+'"]';
13     activateTab(selector);
14   });
15 });
16
17
18 $(document).ready(function(){
19   $("#finish").click(function(){
20     alert(this.id);
21   });
22 });

现在到http://jsbin.com/上试试吧。

2013年1月21日星期一

再议“程序员每天只需编程4小时”(一年半实践)

我在一年半前写过一篇文章“程序员每天只需编程4小时”,经过一年半的实践,我是否做到了这点呢?其实我每天编程还不到4个小时,但是做出了更多的“可用,有用”东西。注意我这里说的是“可用,有用”,我的代码质量也得到了显著的提高。

如何在编程技巧上提高自己的效率呢,方法还是老三篇:

1. Keep It Simple, Stupid!
老调长谈,但是最为重要的的坚持并真正地做到:
http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

2. 不要重复自己
今天读到一篇好文,里面的一段话就很好的展示了这个观点。
“If you write something once, you should make it a method.  If you write it twice, you have to make it a method.  If you write something three times, you should stop programming!”  “如果你写出一些代码,你应该把它做成一个方法。如果你写了它两次,你应该把它做成一个方法。如果你写了它三次,那你就别去编程了!”

3. 写最少的代码
如何写出最少的代码,最为重要的一点就是要多思考。很多程序员总是有一种迷思,一年写几万行代码的人就是很强。错,我们所要做的其实尽量让软件的代码最少。代码越少越好,bug就更少,就越不需要重构。写最少的代码其实也是为了实现优雅的代码的前提条件。
其实这半年来我写的代码越来越少,但是进行了更多的重构,删除很多“过时的老”的代码,写了很多更新更少的代码。目标就是一个,写出整洁的代码。最近一直在重构以前的一个同事留下的代码,这些代码真是毫无美感可言,我这种具有强迫症的人,在重构之前,做的第一件事是将是代码对齐,增加换行,改名,先是得到“界面上的整洁的代码”,然后才是开始真正的重构,以得到“逻辑上的整洁的“少的”代码”。

2012年12月30日星期日

2012总结

读书和博客
又到2012年年终,每年年底都要总结一下,整个一年看书大约58本,但是11月和12月因为太忙一本书都没有读。读的书的总量比前几年少了很多。
太忙了,几乎是每月只写一篇博客,整年才写了14篇文章。

chart_douban_2012

工作
2012的工作可谓之异常艰辛
申请了一份专利被拒,年中申请的一份天使投资,年底被拒,年末的双重打击。
创业团队中也出现了各种问题,资金,任务分配,人事,目标规划等等。
但是也是有一点进步的。
勉强建起一个3人小创业团队。
进行了4个网站的建设。其中有两个已经上线。
两个科研为主的软件在年底是终于进入收尾。
项目中4个小型的软件正进行同步开发,有了雏形,并已经实现了一定的功能。
博士论文刚开题,2012只发表了1篇文章,实在是忙着搞开发,没空搞科研。

生活
搬了两次家,当然是越搬越好了,但是也花了不少精力和时间,今年的变动真的很多,我居然还搬了两次办公室。同时也做了几个投资,希望有所收获吧。生活中的亮点是今年抽空旅游,去了西班牙,希腊和法国,各去了一个星期。和往年一样11月份到北威州一个旅游区参加3天Workshop。还去了两次荷兰,当然就是去购物了。学车的理论考试过了,已经上车学了30多个课时了,实践考试还没有参加,希望明年初能搞定吧。

明年计划
驾照+买车
项目中的核心软件可以正式投入使用和测评
公司正式运营
在6月份拿到投资
全力支持老婆博士毕业
请家人来德国游玩

2012年11月18日星期日

德国工程师分布

今天看到一幅图,关于德国工程师分布,其中颜色越深代表那里工作的工程师越多。从这幅图可以读到很多信息,对于工业立国的德国而言,其实某个地方工程师越多,那个地方的工业就越发达,相对而言经济轻快就越好。延伸一下,这个图和当地的失业率还有房价也是正相关的,在德国,工业发达地方一般而言都有拥有工科的综合大学或理工大学。

Ingenieurdichte


图的原始资料来自2009年6月德国劳工局,由VDI Ingenieurkarriere制作。

2012年10月26日星期五

10月 生活小记

现在越来越懒,现在写博客的频率已经降到每月一篇了。整个10月份,都在享受美好的秋日,体验生活,学车,骑自行车,搞壁炉,买手机,去荷兰Outlets买衣服,朋友请我们到杜塞吃好吃的中餐等等,这个月工作放下很多。这个星期家里终于又可以上网了,换网络供应商,但是居然等了快2个月才装上,中间还被上门安装服务放了一次鸽子。


学车
30岁了,还不会开车,很汗颜,特别是在德国,一般人18岁就有驾照了。8月份考完理论后,9,10月份一有时间,就加紧上车,在驾校学车还是挺贵的,45分钟30欧,但是开的是大众Tiguan,还是不错的车,加速很有力,中间开了一次大众Golf,发现Tiguan大挺多,感觉上更好开,现在已经学了15节课了,大概会开,但是有很多小细节常常没有注意。


骑自行车
大概两个月前,晚上我把老婆的自行车停大学办公室楼下,就被偷了,德国治安其实也没有大家想象中那么好,一架状况很好的车。只好在上个月给老婆买了一架很不错的专业山地自行车,原价500欧元,因为特价还有就是因为是最后一架,大概半价买下,一份价钱一分货,我的自行车和其简直毫无可比性。秋高气爽,如果天气不错,我们就骑个3到4个小时,我们到了很多我们从来没有去过的地方。德国的秋天很短,但是可以用壮丽来形容,到处都是红色,黄色,很漂亮。但是扫院子就是一个很艰巨的劳动,我每天早上都要扫一次。


壁炉
新家有一个Hark牌的新式壁炉,为了维护这个壁炉还准备换上新的密封条,Türdichtung和Scheibendichtung,这样完全不会有任何烟,10月初壁炉检测工人来我们家检测一下烟囱的安全性,在德国如果家里有壁炉每年都要检测烟囱的安全性。10月初,网上订了3立方米的榉树木(Buche, 是一种不错的壁炉燃木Kaminholz),德国买壁炉燃木等大概都是30厘米左右长的干燥了两三年的硬木头,含水低于20%,相对应软木,硬木头烧的比较久。Kaminholz一般都是以一立方米为单位来卖的。网上订的壁炉燃木的商家就在离我们的家30公里的小村庄里。当天就送到了。每公里1欧的运费只收单程,一立方米大概是70欧,3立方米花了大概250欧。Holzbriketts(木材型煤)其实也是一个很好的选择,因为含水低于10%,每公斤可以4,8 千瓦时 到 5,5 千瓦时的热量,我也买了一些,在一般的建材市场(Baumarkt)就可以买到,大概是4欧左右10公斤。
壁炉的优点当然就是,可以省一些钱德国这几年能源价格上涨得厉害,但是壁炉燃木几乎都没什么上涨,据说可以节约20%到40%的暖气开支,它用的是可再生能源,保护环境,木材的燃烧或腐烂在森林中,被释放的二氧化碳(CO2)量,等于树的生长过程中通过光合作用吸收的二氧化碳(CO2)量。还有一个好处,就是可以拥有一个舒适的壁炉夜晚。


智能手机
老婆已经换了2台智能手机了,我这个信息时代的原始人直到这个月才买第一台智能手机,一直没有换是因为如果要换智能手机就要换手机合同加上网的合同,个人觉得每天用电脑上网就够了,没有必要多花钱去换合同,还有就是我那台老婆淘汰给我的索爱w810用了4年一直状况良好,除了电池已经不行了。虽然大学是学电子工程,但是个人对电子产品并不发烧,随便在网上查了一下,便宜的性价比比较高的,发现索爱(Sony Ericsson Live Walkman)在tchibo买才99欧元,tchibo的网也是O2的,它提供的上网合同也便宜8欧每个月(300mb,还有50分钟的电话,50分钟的sms),很适合我,马上就买了,后来才知道索爱在2012年2月15日被索尼收购,成为索尼全资子公司,这个Sony Ericsson牌的手机也绝唱了,所以才这么便宜。从查手机到决定买不到10分钟,其实我每次买任何电子产品还是其他东西(譬如买衣服,鞋等等)做决定都很快,如果我觉得有用想买马上就会查一下,然后简单看看数据对比一下,然后就会买了,其实我也不是非常重视性能,性价比等等,主要是看看是不是适合自己。

2012年10月2日星期二

九月 瞎忙 巴黎

九月 瞎忙

九月很忙,但是正经事没有做一件,闲事做了不少,项目的进度落后不少。九月读了不少书,给自己充充电。
九月上旬终于写完一个专利的申请,结果被退回,因为有些地方写不好,昨天重写了一部分,又寄出去。
九月中旬带了两个学生,给一些中学生做了4个多机器人的演示实验。
九月下旬做了三个简单的网站,php,css,html边学边练,实践真是最好的老师。
九月下旬老婆生病,照顾老婆,天天下厨。


九月 巴黎

只在巴黎呆了3天吧,非常简略的旅行。照片就不发了,网上巴黎的照片实在太多的。印象深刻的是吃了一个在欧洲吃过最难吃,品种最少的中餐自助,还点了一次最差劲的所谓的叉烧肉,为了补偿受伤的心灵,回到德国后,一下飞机就冲到杜塞市中心吃拉面,还到我最喜欢的中餐馆单纯点了一次叉烧。还住了在欧洲住过最小的三星级酒店的双人间。随便侃侃这三天的行程吧。


第一天,逛了中国人密度极高的老佛爷,逛了巴黎春天等等,还有那个很出名的名牌街,蒙泰涅街Rue Montaigne,反正是暴走了一天吧。坐船夜游塞纳河,在船上吃了一个晚餐,一点都不好吃的所谓的法国大餐。
第二天,因为时间有限,报了一个所谓的英文团的快速一日游(一人100欧,很不值,但是帮我们省下了很多排队买票的时间,就是那钱换时间吧),行程也就是速速在卢浮宫看了蒙娜丽莎的微笑和维纳斯的雕像还有几个比较出名的雕像和画,然后坐船在塞纳河上晃到巴黎铁塔,上塔,在上面吃了一个午餐,其实真的不贵,一个人才19欧,但是这个饭钱已经包含在这个一日游中,吃完午餐自己爬上塔的更上一层,然后照照相,下塔,继续坐船看河边的景点,景点太多了都记不住,最后去巴黎圣母院,逛了逛,一天就结束了。
第三天,其实这次在巴黎最大的收获就是去了迪斯尼的两个公园,Disneyland Park,Walt Disney Studios Park,个人比较喜欢Disneyland Park,其实去这个Disneyland Park就可以了。

2012年8月23日星期四

8月小记

过了生日,青春尾巴最后的一根毛都不剩了。这时的我居然拾起激情,联系了天使投资,开始创业,无论成败,这是我最不后悔的事情之一。

年纪大了,常常开始审视自己,觉得活这么多年来,最大的进步就是越来越能做到“活在当下”。

德国最近气温很高,超过30度。8月15日在高温下在搬家,打包整理,自己放了一个星期的假,搬家真是非常累的事情,今年居然搬了两次家。这次的新家比上一个又大了30%,非常简约的装修,但是装饰上比较用心,个人比较喜欢,以白黑红为主色。


最后在加一句,今天是七夕:
珍惜眼前人,朋友们,七夕快乐!

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
上面提到的直面大海的游泳池。