2016 年 11 月

在本地使用git做版本管理

此前一直在用乌龟svn做本地版本管理,最近认识了一帮伙伴,都在github上倒腾,我一开始只会在web上编辑,慢慢发现不方便,也好像有点低级,就也装了本地的git客户端。随后,鼠标右键的东西太多了,琢磨能否把乌龟svn删掉,这下发现,git做本地的版本管理,真是神器也,再简单不过了,有些网文写的过于复杂,其实就一句话:

在目录上执行git init,或者右键创建新的repo,然后,就可以愉快的开始提交(commit)了。

给非程序员使用,我觉得可以进一步简化,比如一键全部提交,因为很多人只是怕改来改去忘记了,可以随时回滚而已。当然,在本地做一些小项目,还可能需要创建一个dev分支,在这上改,改差不多了再merge一下。至于remote,push,pull这些东西,本地管理是不需要的,这与svn是根本不同的,一开始逻辑没拧过来,总想push上去。只要.git目录不强行删掉,其包含所有文件的snapshot,就是一个完整的版本控制系统,随时可以回溯到任何版本。实在要模拟远程,创建一个bare库即可。

由于是从svn转换过来,我期望可以完整的保存所有的记录。这里走了一些弯路:

  1. svn需要有trunk目录,如果没有,新建一个挪进去;
  2. 我用subgit这个工具import一键生成只有空文件,不好使;
  3. git svn clone是好使的;

git没法像svn那样checkout或者提交某个目录,而需要用subtree来创建一个分支,但这个分支是悬浮状态,从图形上看是凭空出来的一个点,后续的提交拉取感觉也奇怪。看了几个知名项目的git图形,聚沙成塔,聚人成精,模块单独拉出来都不会是长期分支,更不是subtree,再看看我一点点可怜的代码,还搞什么subtree分开闹革命,就都放在一起吧。

git客户端,首推git for windows portable 和 gitExtensions的组合,再有一个sourcetree备用就足够了。gitExtensions回朔文件历史的方式似乎比其他git客户端更为先进,不论是改名,换目录,他会尽力去找到源头,对初始规划不完善的业余人士非常有利,同时,看代码也非常方便,sourcetree窗口的布局不利于看代码。没有一个客户端能完整取代git命令本身,或多或少都有支持不足。

不清楚大规模项目实操中svn和git各如何,但在本地,显而易见git是更容易的选择。

不懂就要被骗

大部分中国人,活得累的一个原因是几乎所有的事情都得懂,落后就要挨打,不懂就要被骗。

比如家人生病,医院其实并不能像电视剧里那样,提供真正的医疗和护理服务,必须得抽出一个人来陪护,雇佣护工,给多少钱能找到好人呢,比你的工资高的时候才可以,这样悖论又出来了。甚至,给钱多了,也极难有专业的优质的省心的服务。还比如教育,姑且不说水平高低,学校完全实现不了托管孩子的作用,老师整天把家长弄到微信群里点来点去,这倒是强项。政府就更不必说,在东北,跑一个事儿不去三趟以上是摸不清门路的,纳税再多,也么有啥子服务不服务,南方能好到哪里去呢。中国的医院,学校,政府,只是把病人,孩子,纳税人圈养起来的机构,实际上省心的服务极少能够提供,这真的很奇怪,但放眼一看,各行各业,莫不如此。

在地产行业,不管是不是EPC合同,很多时候,甲方干的是总承包单位的活儿,总包干的是分包,分包干的是劳务,甚至有时候初始管理不到位,后来甲方把所有劳务和供应商的活儿都得兼着管了。又比如装修这档子事儿,没有个懂行的,要么是你自己,要么是朋友,盯在那里,给多少钱都保不齐不偷工减料,装修一次,从材料到人工,都得成专家。多年的经验表明,钱给够或者不给够,不是决定性因素。当你愿意多付钱买省心的时候,人家好像在玩德州扑克,鱼来了,傻子来了,只会钻各种空子宰你,而并不会提供专业的服务。

试多几次花钱买罪受,整个社会的风气就成了不愿意多花钱,或者,愿意出国去花钱。

人心浮躁,到底怎们能打破这个局面呢?互联网企业扛起了解决痛点的大旗,结果呢,帮人省钱的互联网企业一堆一堆的,提升品质的,除了神州专车,神州租车,不是我给神州洗地,真没有了。大部分互联网企业说白了就是网上中介,英文叫O2O显得牛逼了,要么压榨下游,要么压榨上游,最终是提升整个社会的成本,降低整个社会的品质,原来10元的煎饼,10元的盒饭,10元打的出租,现在互联网平台要抽成20%,互联网煎饼价格变成了12元,品质与他们无关,让下游抢单,让客户评价,钱到手。靠这种思路,只能是互联网公司在风口上圈钱走人,于社会并无助益。

大家都在钻钱眼,赚快钱,都在抱怨别人,而没有把手头的事情,做的专业,做的足够好,结局就是大家都不好。形成专业的圈层,提供省心的服务,相互愿意花钱买服务,这是推高并维持住人力价格的本质,如果专业人士都不能整体富裕的话,国家不可能跨越中等收入陷阱。互联网和软件行业走在前面,其他的行业里,机会是无限的,但愿我有生之年,能赶上这波大潮,国民能真正富裕,不懂不再被骗。

 

对云时代的小恐惧

前天打开许久没用的滴答清单,提示“免费用户可以创建9个清单”,此前是意识到这个数量对于GTD而言只能实现最基本的配置,要单列几个计划都无法实现,而且,一旦在整理清单的时候,删掉了,又没有深刻理解数量上限的意义,再添加时,就需要购买付费版,当前涨价到139元/年,涨幅40%。不能说这是在作恶,因为本来人家是免费提供给你的,但是,让人觉得不舒服,这有点trap。印象里一流互联网企业不会这么做,至少不会动老用户的奶酪。在国内,免费用户有点像是免费测试的,成熟了就一脚踹开,留下愿意付费的。对比一下wunderlist,从权限上是非常厚道的,而且实际上包括文件上传也没有实际限制。对比一下doitim,现在仍然是100元/年,没有涨价,而且是全功能GTD,不仅仅是清单。

(wunderlist我这里上不去了,无法登陆。C2C&GFW,不愧是中国互联网行业的的两大法宝。)

不是说不愿意付,十年来一直在支持正版软件和开源软件,此前,也断断续续的给滴答清单付费过。在刚毕业的几年内,付费过很多GTD软件,有一些大版本号都更替几代了。可能由于工作性质吧,忙的时候是数不清的事情推着你,闲的时候就想随性而为少做安排,此外,尽管我努力推介任务管理,但老板并没有支持,在传统行业,work smart是遭鄙视的,不足以体现劳动人民的拼搏精神的,宁可开视频会到半夜,也不会去读写公共文档,连电邮都很少用到,任务委派和co-work就太复杂了。最终,个人管理和团队管理两个方面,都不需要重度使用GTD以及相关软件,就这么成了断断续续的用户。

大家可以观察到,在PC时代不愿意付费的用户,在这云的时代,在各种掌上设备上开始付费了。有一些仍然是,我付钱,你把二进制码给我,我在本地运行。各大小软件厂,更在向云端租赁(订阅)app在迈步,这是一条赚钱的好路子,例如微软,本来OFFICE并不需要总是买买买,现在通过office365,提供云端存储和云端app,一旦迈了进去,当企业或个人形成依赖后,就需要每年付费,这种依赖比本地的文档更难脱开,而且,无法盗版。对于软件企业,这种模式能保护知识产权,培养用户根基;对于用户,也不错,减少了一次性投入,也不用购买大量的高性能计算机,TOC应该是下降的。

麻烦的是,因为不是一次性提供二进制码,订阅合同是需要续订的,以前是在大版本升级的时候,需要交钱,现在是续订的时候,如果厂家涨价,或降低同档次服务,一旦形成垄断,用户是没有办法的。举个极端例子,百度云盘,现在很多人当仓库,如果其他的云盘都死掉了,你有2T的文件在上面,突然宣布,需要付费才能读取,你能不给钱吗?更极端一点,如果不给钱,就公开在云上,你怎么办?不是说百度会做这样的事儿,而是在云时代,这成为了一种可能,尤其在伟大祖国,没有隐私权立法,连CDMA都拆掉了加密协议,所有人都是赤裸的,在BAT面前都是待宰的羔羊。

比较靠谱的方案,是在家里建立私有云,不依赖公有云。有个朋友,把除了电子邮件的所有的网络工具全部删掉了,在互联网上抹去了所有痕迹的,也不会出现在任何云上,这几年也一样活得很潇洒,也许这样,能避免所有来自云的恐惧吧。

当然,还有一种办法,趁早付费,把需要的云服务都订阅上,尽可能的多买一些年头。不论是doitim,还是dida365,其实都是值得付费的应用。

树莓派3b安装archLinux

万事怕折腾^^

用noobs安装默认系统,桌面是开箱即用了,但是问题来了:

  1. 没有二进制软件源,官方推荐的那几个都没有充足和比较新的,在x86上有的很多没有;
  2. 初代的时候,SD卡只有4G没所谓,现在的TF卡都16G起,空间太浪费了;
  3. noobs默认配置没有多分区,即便手工配置,也不是很方便。

这时我们的老朋友archLinux浮出了水面,什么,gentoo?nonono,这个派的小cpu要编译到啥时候去。arch兄是出了名的软件丰富,在arm领域就更出名了,ArchLinuxArm,简称alarm。我是很奇怪PI没有选择和archLinux合作,而是在debian基础上开发了raspbian,而且,曾经推荐的alarm镜像,竟然删除了,现在只有手工安装这一条路了。

起初我尝试了直接在raspbian下直接重新分区,弄了一下halt掉了,算球。现在不像读书的时候,随手一抓就是Linux主机,只好抓起了vitualbox,下载这个arch迷你镜像,或者gentoo的迷你镜像应该是也可以,分配尽可能多的内存(1G以上最好1.5G,反正临时用一下),不分配硬盘,直接从iso启动,在启动界面,选择安装i686或x64都行,然后直接退出安装,回到控制台。我从笔记本自带的读卡器没有办法读取,有一个杂牌的USB读卡器倒是好使,插上去识别为sda。

在控制台下安装过程参看官方文档,或者中文文档。可以多分几个区,bsdtar用tar替代应该也没问题。搞完直接插回到RPI3上,就可以有显示器启动了。没有网线的,执行wifi-menu,选择wifi,输入密码,这时会自动在/etc/netctl/下生成配置档,类似于wlan0-myhome。然后,参看这篇文章,让wifi自动连接。其实就是执行:

# 
# 需要su后执行,这时候系统里没有sudo
# 默认用户密码是alarm:alarm,root:root
systemctl enable netctl-auto@wlan0.service
# 也可能没有wpa_actiond这个包,会无法启动wifi
pacman -S  wpa_actiond

不改成和wifi档名称一致,照抄就行。重启后,忽略dmesg一点错误,拔掉所有外设可以用了。

# 都需要在su后执行
# 编辑mirrorlist
nano /etc/pacman.d/mirrorlist

# 下面这行添加到上面文件的最顶端
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/$arch/$repo

# 添加后执行
pacman -Syy

# 也可以整个更新一下(要慎重)
pacman -Syu

花了几分钟安装桌面系统,然后就放弃了,难怪PI Foundation也放弃了。

这时,整个开源世界打开了,x86的荣光再现。如果要搞python:

#
# 安装python和notebook

pacman -S python
pacman -S jupyter
pacman -S jupyter-notebook

包的依赖处理的不错,版本都是各自最新的release版本,在raspbian中要落后两三个版本,在anaconda-arm里要落后的更多。不是说多么赶潮流,而是要实现和x86的版本基本一致,避免特性的不兼容。如果不是对外做服务器或者做高清播放机,树莓派上archLinux真是比较好的选择。

好吧,主要是,又可以折腾了。

如果要设置中文

#
# 设置时区
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

nano /etc/locale.gen
# 保留 zh_CN.UTF-8 UTF-8

# 生成中文locale文件
locale-gen

nano /etc/locale.conf
# 不要有空格 
# LANG=zh_CN.UTF-8

# 重启后就是中文了,现在的中文完善的不要不要的
export
# 查看LANG是否为zh_CN.UTF-8

(这里的ArchLinux并不支持64位arm8特性,PI官方没有支持,再说1G内存玩啥子64位哦~)

树莓派3b和noobs2.0

前几天心血来潮,添置了一个树莓派3b的玩具,今天到货,很快就用了起来。简单记在下面:

  1. noobs2.0现在支持wifi,也就是说可以用noobs lite在wifi下来执行网络安装;
  2. 即便支持wifi,在国内速度几乎为零,最后还是用了完整版的noobs2.0来安装;
  3. 默认的debian jessie系统,自带了realvnc server,也就是说,用免费的realvnc viewer就可以连接,不必像老的文档一样去安装其他的vnc server,此外,其他的vnc viewer不支持realvnc的认证方式;设置成启动到桌面(需要登录),并在设置里打开vnc,就会自动加载了。
  4. 中文只要在桌面环境里设置成zh中文,就很好的支持了,不需要其他设定;输入法我没有试。
  5. 修改debian源为国内镜像后,速度很快,但我看包的机制和很多年前没有什么改变,upgrade难保不出问题,大多数情况是没必要的,要慎重。
  6. 3b的性能远远超过初代,又有了官方外壳,可以随身携带,非常好。

(3)的配置档  sudo nano /boot/config.txt   无头的配置参考文档

hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080 	 
hdmi_group=2
hdmi_mode=16

(5)的配置档 sudo nano /etc/apt/sources.list  参考文档

deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main contrib non-free rpi