管理员

首先,要保证你把gitlite-admin仓库clone到本地,并有读写权限。

管理员用以下命令把自己的公钥传到服务器,如下,目录改成正确的目录:

scp ~/.ssh/id_rsa.pub user@server:/git_home_dir/git-admin.pub

然后git clone git@server:gitolite-admin.git把git管理仓库拿到本地。

添加开发成员

先叫开发人员用ssh-keygen命令生成公发给管理员,把它复制到gitlite-admin/keydir下,比如名字叫laonan.pub。

在gitlite-admin/conf下找到gitolite.conf,修正成如下样子,laonan就是新加进去的开发成员,注意这里的配置应该跟公钥的文件名相同。有读写删除等权限。

在gitlite-admin仓库把以上新增文件和改动push到服务器即可。

git add conf git add keydir git commit -m "added laonan." git push …

重装gitolite,配置了N遍,在取gitolite-admin的时候一直显示

FATAL: R any gitolite-admin git-admin DENIED by fallthru (or you mis-spelled the reponame) fatal: Could not read from remote repository.

相当郁闷,百无聊赖ls -a,把.git为前缀的隐藏文件(如.gitolite)一个个删除干净,居然TMD行了。

花掉一个小时,NND个胸。

/media/upic/2014/11/14/talky.png

最近在查关于在手机端上即时视频通话的资料,除了一些老牌的sip客户端如Linphone这些,google有项技术叫WebRTC,用意是直接使用Javascript调用实现实时视频通话,不少人也打主意把这东东移植到移动app里去。

查找过程中发现http://talky.io(复制这个网址粘帖到浏览器访问,最近这个博客的这个CKEditor抽风,不能直接写链接HTML,有空再改)基于WebRTC技术开发网站,在首页给对话取一个名,点击"Let's go"按钮进入,把网址发给别人,你们就可以不用安装任何插件进行视频聊天了。

古时候,当年读大学,没有微信,QQ没有群,好多人在要装插件的视频聊天室里眼巴巴等表演(你懂的),还要抢麦。。。

暂时只支持Chrome,Firefox以及Opera的高版本浏览器,又土又老又过时的IE玩不动,国产山寨浏览器也玩不动,那什么360极速浏览器跟Chrome是基于Chromium的,可以一试,我没试过,不知道。

分支

查看远程分支: $ 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) …