2013年3月18日星期一

生产力的低谷

虽然工作很多但是最近真是我生产力的低谷,工作上没有兴奋,让人充满力量和期待的感觉。计划很多进度很慢。深入某个领域去调查,很难,很难。
最近进行了很多讨论,很多的计划,试着去寻找问题,毕竟创业就是


“The essence of a startup lies in the process of discovering a problem shared by many people and trying to solve it.”). (本话原文http://tomtunguz.com/the-value-of-startup-research)


在生产力的低谷,干不了很多“正事”,一直在思考公司产品新规划。
什么是真正的产品(看到一篇文章很符合我的思考,比我想得完善http://coolshell.cn/articles/7617.html


真正的产品应该是有一个端到端的一个解决方案
真正的产品应该是有价值的。这种价值表现在——你可以从中获得有价值的内容,并且你也可以通过他创造对你有价值的东西。
真正的产品应该是和社会有交互并能自我进化的
真正的产品应该是体现品质的。所谓有品质的意思是,你能从使用这个产品中获得一种感觉,一种档次的提升的感觉。


下个月汉诺威的工业展也许是不错的活动,可以开开眼界,看看在我脑中的我们的产品和现实世界的差距。

2013年2月24日星期日

随感记录

写报告时的感悟
最近在给上司写3个项目的阶段性报告,突然发现自己做了不少事,一直以来都是少说话,多做事,直到写报告的时候才发现做了不少事情,自豪一下。
读了两年半的博士,感觉很充实,做了很多职责范围内的事情不仅仅只是做研究,还带练习课,带学生论文,参加创新比赛,申请成立公司,写一个商业计划书,找资金,同时参与3个项目的开发,做分外之事的同时也学到很多新的东西,接触了很多新的领域。一直以来都是以开放的心态去尝试各种机会,两年的努力,最近得到了一些不错的机会。


移动商业智能(BI)软件应用
刚刚和在某知名IT质询公司的校友通了一个多小时的电话,现在移动商业智能(BI)软件应用很火热,在最近几年会持续一阵子。大部分的公司还是处于走向移动商业化的探索路程中,执行和实现公司商业移动策略的过程中,存在了很多的商机。


在的失败软件项目中掘金
今天和一个在德国北部创业的校友通了电话,今天打了不少电话,其实很有目的性,了解和交换了不少信息,同时也碰撞出不少好主意,譬如在的失败软件项目中掘金这个主意。


项目的解决方案
还是和一个学长的通话,了解提供项目的解决方案的重要性和其盈利前景,受益匪浅。

2013年2月5日星期二

如何在SlickGrid中使用json

SlickGrid: https://github.com/mleibman/SlickGrid真是一个很不错的快速,轻量的表格控件js库。

在它上面使用json也是很方便的,employees.php:

function get_json(&$dyn_event) {
    $query = mysql_query("SELECT *  FROM `users` WHERE `type` = '0'");

    $i = 0;
    while ($row = mysql_fetch_array($query, 0)) 
    {
        $dyn_event[$i]['ID'] = $row["12"];
        $dyn_event[$i]['firstname'] = $row["3"];
        $dyn_event[$i]['lastname'] = $row["4"];
10         $dyn_event[$i]['email'] = $row["5"];
11         $dyn_event[$i]['account'] = '10';
12         $dyn_event[$i]['start'] = '01/01/2013';
13        
14         $i++;
15     }
16
17     return true;
18 }
19
20 function output_json_employees() {
21     $array_json = array();
22     get_json($array_json);
23     echo str_replace('\/','/',json_encode($array_json));   
24 }

我们所需要保证的是输出的格式为:

1 "ID:0,firstname:Patricle,lastname:Jane,email:jane@test.com,account:10,start:01/01/2013"

employees_manage.php,中的js代码,其中最重要的是第29和30行,调用employees.php中输出json的function-output_json_employees()给js变量data:

<script>
  function requiredFieldValidator(value) {
    if (value == null || value == undefined || !value.length) {
      return {valid: false, msg: "This is a required field"};
    } else {
      return {valid: true, msg: null};
    }
  }

10   var grid;
11   var data = [];
12   var columns = [
13     {id: "ID", name: "ID", field: "ID", width: 120, cssClass: "cell-title", editor: Slick.Editors.Text, validator: requiredFieldValidator},
14     {id: "firstname", name: "Firstname", field: "firstname", width: 100, editor: Slick.Editors.LongText},
15     {id: "lastname", name: "Lastname", field: "lastname", width: 100, editor: Slick.Editors.LongText},
16     {id: "email", name: "Email", field: "email", width: 200, editor: Slick.Editors.LongText},
17     {id: "account", name: "Account", field: "account", minWidth: 140, editor: Slick.Editors.LongText},
18     {id: "start", name: "Start", field: "start", minWidth: 140, editor: Slick.Editors.Date},
19   ];
20   var options = {
21     editable: true,
22     enableAddRow: true,
23     enableCellNavigation: true,
24     asyncEditorLoading: false,
25     autoEdit: false
26   };
27
28   $(function () {
29     <?php include 'employees.php';?>   
30     data = <?php output_json_employees();?>;

31                
32     grid = new Slick.Grid("#myGrid", data, columns, options);
33
34     grid.setSelectionModel(new Slick.CellSelectionModel());
35
36     grid.onAddNewRow.subscribe(function (e, args) {
37       var item = args.item;
38       grid.invalidateRow(data.length);
39       data.push(item);
40       grid.updateRowCount();
41       grid.render();
42     });
43   })
44 </script>

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%,非常简约的装修,但是装饰上比较用心,个人比较喜欢,以白黑红为主色。


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