分支

查看远程分支: $ git branch -a 查看本地分支: $ git branch 创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支 切换分支:$ git checkout [name] 创建新分支并立即切换到新分支:$ git checkout -b [name]

远程仓库相关

检出: $ git clone [url] …

之前虽然知道使用python虚拟环境是一个好习惯,但是主要是基于python2.7以及Django框架,没太使用Virtualenv。最近半年加入Flask等别的框架,以及发现最新版本的ubuntu都已经默认是python3.0了,所以,还是用Virtualenv吧。

创建虚拟环境:

virtualenv [虚拟环境名称]

启动虚拟环境:

cd [虚拟环境目录] source ./bin/activate

退出虚拟环境:

deactivate​

更详细说明可参考:http://liuzhijun.iteye.com/blog/1872241

先用下面命令生成*.pub公钥,拷贝到/home/git/repositories/gitosis-admin.git/gitosis-export/keydir/目录下

ssh-keygen -t rsa

然后修改authorized_keys文件,加入你的公钥内容。

done.

/media/upic/2014/09/17/android-animation-hd-sony-xperia-z1.jpg

Android L虽然早在6月份的Google I/O大会上就已经介绍了,但到实际开发估计还有几个月,在伯乐在线看到一篇介绍Android L动画的文章,嗯,挺有意思,就是不知道流畅度如何,相比iOS,Android的动画流畅更是需要担忧的。

http://blog.jobbole.com/77015/

FaceBook的一个弹性动画框架,使用很简单,把jar包复制到libs里,直接引用。

https://github.com/kelc/rebound

第一个坑,django-ckeditor引发,

File "manage.py", line 10, in execute_from_command_line(sys.argv) File "/Library/Python/2.7/site-packages/Django-1.7-py2.7.egg/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/Library/Python/2.7/site-packages/Django-1.7-py2.7.egg/django/core/management/__init__.py", line 354, in execute django.setup() File "/Library/Python/2.7/site-packages/Django-1.7-py2.7.egg/django/__init__.py", line 21, in setup apps.populate(settings.INSTALLED_APPS) File "/Library/Python/2.7/site-packages/Django-1.7-py2.7.egg/django/apps/registry.py", …

有一亩田,田边有棵树,树下有张桌子,桌子上有台电脑,我种田累了可以写程序,写程序累了可以去种田。 --- 符老七

去中信67楼开家公司,没事就使劲在地板上跳(微软广州分公司以前在广州中信大厦66楼)。 --- 阿岛

找个大屁股女人结婚。 --- 小强

/media/upic/2014/08/14/smart_home_1.jpg

自从决定立项做智能家居产品,需求探索过程中,慢慢产生一个问题,那就是:什么样的家用电子产品,能在这个时代,对得起“智能”这个称呼?

我们国家的新产品设计思路有一点是有共性的:功能越多越好,功能多,又便宜,那才好卖出去。我不知道这个特点是甲方合同导向带来的,还是工程师思维(工程师有时候很无辜,因为不善辩论,明明是产品经理不到位,也把罪状加到工程师头上去)?我们常常看到的国内IT开发外包谈判分成什么“内容发布系统”,“客户管理系统”,“广告管理平台”,“论坛”,“留言板”,“博客系统”,“客服系统”....而这一堆“系统”,只是为了一个报价2万块的旅行社官网。

现在想想很好理解:为了报价单。报价单上有各种明细,每一项明细有一个价格,总价为这些价格之和。

基于传统的占便宜思维,甲方往往也只是在报价明细的单项上压价,而不是认真去考虑什么是自己要的,什么是不要的。原因也很简单:多数情况下甲方没有产品经理,而把自己的需求分析指望乙方来完成,这好比房地产开发商指望建筑工程队来帮自己规划楼盘。当然,现在比前几年有所改观,但依旧是一个普遍现象。

然后,我们现在把注意力从软件外包回到产品研发上来,国内这种环境,好多时候产品往往不是产品经理调研分析出来的需求导向,而是营销导向。早年间我在当一线工程师的时候,整天被市场部的同事奚落:你们做技术的思想太呆板,做产品要跟得上市场,闭门造车怎么行?那时候产品经理不像现在这么风行,没有产品(项目)经理的过滤,工程师直接面对客户或者市场,比现在惨得多:界面太丑,功能太复杂难操作,界面太花哨,功能太简单没有卖点,全怪技术部的工程师们。

好吧,吐槽完工程师思维,要向市场看齐,我们来听听一般市场人员是怎么对需求理解的:

功能要多,不然用户觉得太贵,当然,要价格能更便宜更好。 界面要漂亮,大气,简洁,你看XXX产品?(小时候读书,总有个“人家的孩子”,工作后,总有个“人家的产品”)。 操作要简单,傻瓜式的,明白不?用户不是程序员! 客户要求这。 客户要求那。 客户是上帝。 有冲突是不?你们怎么逼事这么多?那好了,我要求不那么高,你能不能做成用户自定义?你们要把功能做得灵活点,不要这么死板行不?

除了业务员急于签订单,以及应付客户的压力(有些订单后续过程需要业务员来面对客户)上的小心思,某种角度来说,业务员确实是最接近用户表层需求的人。注意,是“表层需求”,真实的深层次需求,是依赖产品经理去挖掘和分析的。对于没有产品经理,或者产品经理不合格的产品团队来说,看到这些需求,头都要炸了:功能又要多,功能又要简单,傻瓜式操作,还要自定义,我艹,你们知道什么叫基本逻辑不?乔布斯如果生在中国,被强制实现这样子自相矛盾的需求,我估计他复活了还能再死一次。

老板再补一刀:要快,要好,要省钱,下个月第一个版本能出来不?

开发团队(无论有没有产品经理的)肚子里骂了N遍娘之后嘟囔:好吧,我尽力。开发团队累死累活消极对待出来的产品一般是这个样子的,哇,功能好多,哇,真TMD难用,哇,怎么这么多bug,哇。。。

于是客户骂业务员,业务员去找开发者:你们怎么做成这样子?开发者掰手指开始数:你看,A功能,你说要的吧,做出来了。B功能,也是你说要的吧,做出来了。C功能。。。

最后就会发现祖国大地上,到处是一个产品N多种眼花缭乱的功能的繁荣景象。比如我前面博文说的,可视门铃上有视频点播之类的功能。

点名时间 demohour.com

在小陈同志的介绍下,发现这个网站,据说是国内做得最好的众筹网站。但是他们自己自称是"中国最大智能新品,限时预购"网站,对众筹这个模式没兴趣,但对里面介绍的各种产品有兴趣,做产品过程可以那啥,它山之石攻一下玉?小陈同志的另外一种思路是:就算你不想从这上面筹到钱,展示你的产品原型看用户反应,总可以吧?

国外一些较知名的众筹网站:AngelList, Kickstarter, Indiegogo

中国智能家居网 smarthomecn.com

搜索引擎上排名挺高,传统媒体性质,具有中国特色的智能家居垂直门户网站。

/media/upic/2014/07/22/skybell.jpg

在浏览关于nest labs被google收购的文章时,无意发现这个叫skybell的智能家居产品。

功能很简单,有一个可转动摄像头,麦克风和按钮,以wifi跟手机连接。按下门铃时手机或平板给出提醒,可与访客互动,无论在不在家,并且支持多用户。

就算有人经过不按门铃,也可收到手机提醒并查看视频。

没提供直接用手机开锁的功能,不知道是不是基于安全考虑。

除了它官网上介绍的应用场景之外,可扩展的需求场景:

 

帮哥们躲前女(男)友,我一哥们,当年一起开皮包公司的,跟前女友闹分手,对方直接追到另一个朋友家里,如果有这产品,可以提前看到门口站的是谁来决定谁躲到衣柜里去。

不出门拒绝上门推销。

基于安全的录像,比如被查水表时录下作为证据。

反向偷窥,开party的时候事先知道谁跟谁暗地有一腿。

 

从其官网上的报价来看,199美刀,不便宜,拿到中国估计除了太贵这个问题,还有一个,这个产品显然是为house而不是apartment设计的,市场份额太小。

官网:http://www.skybell.com/

最近在国内网站看到的一款类似产品:

案例1:

甲方:给我定制开发一车子,要快点开发出来,质量要好,要便宜,最好花2万左右能搞定。 乙方(拿出小本子和笔,做认真倾听状):能谈谈您的需求吗? 甲方:当然要可以遮风挡雨的,敞篷的不实用,坏了很麻烦,前段时间成都一哥们,你在网上见过没?笑死我了,开着敞篷被淋一身。油价太高,要低功耗,要有很好的安全设计,唉,停车好难,停车费好贵,如果能随时停车不被抄牌,也不要钱的话多好。小X,你觉得特斯拉怎么样? 乙方:X总,特斯拉不现实,人家毕竟是全世界最尖端的blablabla,但是电力驱动我觉得是个好主意,我们可以先实现这个,以后再考虑朝那个方向靠拢。 甲方:好吧,先这样,给你一周时间够不够? 乙方:至少两周。 。。。。 甲方:你妹,你弄一电动三轮车搭个雨棚给我。。。 乙方(尼玛,2万块,你还想怎么样?):要不这样,我再给增加续航能力,后面外接三块电池?

听起来很荒谬是不是?我十多年的职业生涯中,常常有人用低于10万块的预算跟我谈要做一个携程,一个天猫出来。严格来说这不是甲方的错,而是我们国内这个糟糕的软件外包市场里,甲方对于软件开发成本是毫无概念的,不良乙方又常常从中搅局,劣币驱良币的事时有发生。

而另外一个常被搞偏的概念是,某成功互联网产品,当初是极低的成本实现的,比如豆瓣,最初就杨勃一个人写出来的啊,你们凭什么动不动收几十万上百万的开发费?这里混淆了几个事实:

a)从概率上来说,豆瓣是成千上万个个人网站死掉之后,幸运地冒出来的。 b)豆瓣发展了多少年才到今天这样子?时间成本比看得见的金钱成本,更难估算。现在豆瓣的开发维护成本是多少?有人清楚么?

案例2:

另一个甲方:我听说,有人2万块能弄一辆像特斯拉的电动车出来。 另一个乙方:X总,我们1.5万,怎么样? 另一个甲方:好,先预付你5000,合作愉快。 另一个乙方:合作愉快。 。。。。 另一个甲方:你妹,给我一个三轮电动车加个雨棚再在前面搞个山寨特斯拉塑料不干胶Logo。。。 另一个乙方:(我听不见,我听不见,听不见,不见,见。。。。)

案例3:

/media/upic/2014/07/15/untitled-1.jpg

好久不写Android程序,恰逢某甲方需要一个类似烟花绽开一样的菜单。github上看了半天,最著名的是ArcMenu,看了下源码,要改成固定坐标的话,还不如直接布局来实现,就是View太多了点。。。

不包装了,需要类似的效果的话,直接到github看看,不过这只是个demo,就只有图标飘来飘去,啥地图背景,毛玻璃效果啥的,你是看不到的。

/media/upic/2014/07/15/thumb_qh.jpg

1、机场书店里的成功学书籍,貌似分解转到微信朋友圈了。一个个在拼标题,看谁取得耸人听闻“美国人疯传十万次的视频:xxxx”“美国人揭秘的惊天真相/内幕”“xxxx的十条真理”“受用一生的十条真理”“价值x亿的一篇文章”,嗯,相当有趣。

2、健身效果不明显,貌似还重了1kg,这两天腰痛的不行,教练叫歇两天,先到跑步机上慢跑两天过渡。

3、组建团队的难度越来越大。。。那谁说来着,技术总是在短期被高估,长期被低估。组建团队也一样,没项目时怕养着,多贵啊,凭啥这帮人领这么高的工资在瞎写一些谁也看不懂的东西,一有项目,傻眼了,临时上哪找这么些人去。小公司通病,但愿早日跨过去。

4、貌似现在资本比前段时间活跃了,几个朋友都得到了个人的或机构的投资,连搞教育的杨博士都连找我几个晚上,像地下工作者一样,谈怎么接受现在要进来的一笔投资,以及会不会改变组织结构的高大上问题。

5、市场,设计,产品,开发,好吧,这帮人注定会一直相互吐槽到死,别拦他们。

6、过穷日子的时候总想着回到做外包拿现钱的时代,但是,挺住,再不以产品为主就要老得不举了。

7、青海挺漂亮,比我2006年去漂亮。

从家里面扫墓回来已经有一段时间了,组建新技术团队,产品及技术外包立项,忙得团团转。躺床上玩了下iPhone的语音识别,发现识别率还挺高,试试看这样能不能记下一点东西。

到县城,雾很大,搭老蒋借胡土豪的车,我哥和我一起去石洞镇扫墓,山路蜿蜒,能见度非常低,并且时不时下雨。

清理坟上杂草,烧香烧纸,放鞭炮。

因为下雨,父亲没有一起来,我哥我俩第一次独立扫墓,毛手毛脚。中途,堂兄西装革履,皮鞋,头戴斗笠,挑着一对箩筐过来,加入我们。

可能是因为村里人都出外打工的缘故,墓地旁边的土地灌木丛生,寂静无比,除了我俩哥哥的寒暄,只听到雨声。这跟我小时候的情形,大相径庭,那时候这座山头,有人种土豆,有人种红薯,欢声笑语,脏话满地。

我撑着雨伞,有那么一点恍惚起来。

扫完墓,开车路过我的老屋,我跟我哥提议下去看看,我俩走到房子旁边,一个村妇开门探出头来,用侗语问,你们找谁呢?我哥用侗语作答,这是我家。

我一个人绕着房子转了几圈,终究还是谢绝了村妇的邀请,没有进屋。

只是发现我以前住的那间房外面,又多了几个燕子窝的痕迹。

屋后我常躺在下面看书的那棵树,早已不见踪影,杂草丛生。

再后来,驱车县城,到贵阳,去重庆,然后,深圳。

发自我的iPhone

/media/upic/2014/05/01/dapenxichong-1.png

西涌(这字念chong,第一声)去了很多次,老龚抱怨多次说把她骗来深圳后就不带她去海边,想想周六周日堵车堵得不行,决定周五晚上披星戴月去。先打电话问西涌蓝湾湾海边民居旅馆的老板娘还有没有房间,对方回复有,并表示要搭便车一起去,于是到梅林关接上老板娘,老板娘的老娘,老板娘的外甥,再加上老龚,一行人茫茫夜色中绝尘而朝西涌方向去也。

去西涌的路上杨老板娘推荐说明天可以去下校场尾,我心想这是啥地方,打靶的吗?想着想着就在快到西涌的时候错到什么鬼核电站去了,掉头回去找路口,到西涌时晚上11点过。

见到老龚的初中老师,晚上被蚊子咬得到处是包之类的先按下不表。

第二天早上,吃了杨老板娘的母亲亲手做的早餐后,直奔海滩。

西涌的海滩号称是全深圳最干净的海滩。

观景台是军事管理区,有瞭望塔。

女人都爱小清新。

从西涌观景台下来,突然发现没地儿可去,有点凉,又下不了海。想起晚上杨老板娘讲的校场尾,说,得,去看打靶去。

根据GPS的指示,到了目的地,发现一个在半施工的酒店,一个拓展基地,老龚我俩傻了眼,这是啥地儿?坐在拓展基地旁边看了半天比亚迪的小伙伴们没事把自己吊到半空中,一个个憋的小脸通红。

上车,说,走吧。

上哪儿?不知道。

沿着路瞎开了一会儿,突然看起前面有一个牌子写道“大鹏古城景区”,于是,左转,进了停车场。

在一台服务器上使用pycurl时,碰到如下异常:

pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)

解决方法:

pip uninstall pycurl export PYCURL_SSL_LIBRARY=nss pip install pycurl

参考:http://pycurl.sourceforge.net/doc/install.html

下午发现一个问题,通过filter查找数据时,找不到了,但数据库里明明是有的。

Something.objects.select_related().filter(create_datetime__year=year, create_datetime__month=month)

settings.py的设置为

TIME_ZONE = Asia/Shanghai USE_TZ = True

搞半天不得其解,重建mysql timezone table,重设linux时区,blabla。。。无效。

追踪sql语句:

...EXTRACT(MONTH FROM CONVERT_TZ(`Sometable`.`create_datetime`, 'UTC', 'CST'))....

有点怀疑,但是CST也可以算是中国标准时间,一查如下: Central Standard Time (USA) UT-6:00 Central Standard Time (Australia) …

/media/photologue/photos/Old_Time_Bicycle_by_khairulrahman_2.jpg 无意中翻到一篇旧文,2007-06-30 21:13

不知道赖克这外号是怎么来的,非正式说法是以前有人讲他Like母猪,英文应该叫Like吧,但据我所知,叫他Like他很乐意,叫Like母猪他要翻脸。

赖克是我高中最好的哥们之一,高三之前,我从来没见过真正的红绿灯,不过10年过去,现在我们县城也有红绿灯了。

第一次高考落榜之后,赖克让我有了第一次见红绿灯的机会,他跑到邻居湖南怀化去转了转,来游说我一起到怀化一中去复读,后来我们一起去了怀化读了一年。

刚去的时候,我看见赖克朝地下吐痰,我批评他,咋这么乡巴佬呢,在城市里还吐痰,赖克很无辜,他讲,我是看前面那个人吐我才敢吐的。

他过马路跟在我们那个小县城一样,很嚣张地慢慢踱过去,身后喇叭声一片,我在马路这边叫他,那个乡巴佬快点过来。

人生地不熟,周围都是湖南佬,我们在一起踢球,周末跑到录相厅去看毛片,在一起讨论关于女人关于性的话题。

那时候赖克还是处男,有一天他跟一个湖南同班同学一起不知道从哪本书看到说男人包皮裹着龟头不好,有包皮垢,容易有这样那样的毛病,他俩痛下决心,去水房一人提了半桶水,把那玩意小心翼翼翻了出来,洗干净后,穿上裤子去上晚自习,那天我走在他俩后面,那姿式我这一生也忘记不了,两个人叉着腿,撅着屁股,很艰难地朝教室移过去,那湖南佬一边走一边唱“我把包皮翻了过来”。。。

赖克回头对我说,麻...麻得很,然后辅以一个痛苦的表情。

同宿舍一小子打完球回来,经常用别人的桶和盆之类的洗脸,我看过他很多次用赖克他们拿洗龟头的那桶洗脸,一边洗,一边呼呼嘴里吐气。

再后来,我去东北念书,他去湖南念书,他给我发过一次邮件,讲别人带他去KTV的事,他说,只摸了几下而已,我什么也没干。

03年我在上海的时候,通过一次电话,那时候他在遥远的齐齐哈尔,刚毕业就已经结婚,不是处男了,我当时在公司刚刚被提拔上来,雄心勃勃,滔滔不绝地跟他说了一堆远大理想,他安静听完后说,我这辈子就平平淡淡过完算了,不想别的了,兄弟,你好好干。

我们一起离开贵州之后,再也没见过面,一别十年,坐在南京路这栋豪华的建筑下面,人来人往,我很想念乡巴佬赖克。

本博客程序从1.5升级到1.6.2,so easy,就修改了tinymce下的urls.py,把django.conf.urls.defaults改成from django.conf.urls import patterns, include, url。

That's all.

妈妈和女朋友再也不用担心我今晚熬夜了:) Yeah!

据江湖传言,如果是从1.4.x升级,就有点麻烦喽,江湖传言在这里,有链接有真相:http://django-china.cn/topic/368/

在urls.py里设置好接口地址,并在微信公众号里面也配置好,如果一切顺利,显示配置成功的话,接下来我们就打算干点实际的东西了,接受事件推送。

当用户在关注,取消关注等行为时,微信服务器会把相关的数据post到你配置好的接口地址上,下面实现一下用户关注(订阅)你的公众号时,你给用户一条欢迎信息的功能。

因为微信给你post的数据是xml格式的,所以要引进lxml这个包来解析,如果是centos,可以这么安装:

$yum install libxml2 $yum install libxml2-devel $yum install libxslt-devel

别的操作系统,请自行google之

接收微信服务器post过来的数据的python代码如下:

if request.method == 'POST': str_xml = request.body xml = etree.fromstring(str_xml) msg_type = xml.find('MsgType').text …