All posts by Igotit

我们怒转的是真相吗?

说真相前,先讨论一下什么是谣言。我们常常会谴责谣言,但谣言实际是个宽泛的概念,一个陈述可以是彻底是假话,这自然是谣言,但一个陈述可能只展现事情的部分,从而形成误会、偏见、乃至故意的误导,这也是谣言的一种。实际上,谣言更多是以后一种形式存在,因为后者并没有编造谎言,传播的的确是事实的一部分,这很容易让受众形成确信感,只是因为不全面,而可能产生了与完整的事实相偏离甚至相背离的效果而已。

事件图片一昨天网上广州城管大战小贩母女的事情传得沸沸扬扬,开始的照片里,作为母亲的女小贩,被威武的城管队员掐脖子、扭胳膊、反手拷住,旁边的小女孩吓得直哭,最后一张照片小女孩抱着手被反拷的妈妈,更是令人动容。我想正常人看到这组照片的第一反应一定是愤怒,因为从这些冲击力极其强烈的照片里,传达出来的指向性非常明确。而小女孩的哭泣,更是令人想起前两天长春发生的杀婴惨案,未消的余怒自然会被更加放大。

所以我看到不少微博上的大V都开始介入,高声声讨政府管理部门,质询这样野蛮执法的公正性何在。其中尤其以@郑渊洁 的这篇微博被转发地较多(链接):

“3月6日,记者黎湛均在广州街头拍摄到这样一组照片:一位带着两岁左右孩子的母亲在摆摊时被执法,执法人员当着两岁孩子的面掐其母的脖子并上铐。女孩儿大哭。母亲被带上警车前,她蹲下和惊恐万状痛哭的女儿拥抱告别,她的手由于被反铐而无法抱自己的孩子。有手却不能抱自己的孩子,3月,你怎么了?”

截止这篇博客写就,已经转发352186次,评论107200次。

大家的“怒转”充分表明了对此事的看法,我想这也跟这些年城管在所有人心中的印象有关,网上各种有关城管的段子层出不穷,这次眼见如此野蛮执法的现场照片,更是一图胜千言,无须再多说。

后来,政府部门在官方网站以及微博上发布了事情的说明(链接),这份说明把事情的经过较为详细地作了叙述,其中提到:

“…对我街执法人员进行辱骂,并用其摆卖的水果、铁秤砸打执法人员。当事人继续辱骂、推打、脚踹执法人员,致使一名队员衣袖被撕烂,腿被踢伤。随后,城管执法人员实施了报警。”

事件图片二在说明的最后,也公布了另外两张女小贩的照片。照片从图像上来看,应该是现场视频的截图,现在城管执法过程中一般会有专人现场录像,我认为上面的描述和图片反映出来的情况是一致的。

除此之外,一位叫@DragonMark 的网友也出来做了说明(链接):

“这次我在现场,真的要帮城管洗脱一下罪名。那女的随地乱摆乱卖,影响社会秩序,城管没收其工具,她立马像疯了似的,还横卧在广州大道中间,造成交通阻塞。结果,就出现了照片上的那一幕了。现在的记者真会避重就轻报道哦!受教了…”

注,原帖已被作者删除,这条是@今晚报 的原文转述。

有了各方的陈述,我想对整件事情的看法就不应该再像开始那样一边倒了。的确,城管队员在执法过程中攻击女小贩,无论如何都说不过去,何况还有未成年的小女孩在旁边,执法人员的执法应该更加文明和有策略一些,从政府部门的说明中也表达了这样的观点,同时相关人员也受到停职的处分。但另一方面,如果小贩的确有不冷静的行为,我们也不该视而不见,小贩占道经营等本身对城市管理的影响,也不应该被完全忽略。

回到我们自己,当我们在看到类似的微博出现后,是应该第一时间就怒转声讨呢,还是应该先对事情了解个全貌呢?

其实这样的事情早不是第一次出现,当大家的正义感和同情心被一次次调动起来后,如果事情的发展总发生转变,那么以后再有真正需要大家去怒转的事情发生的时候,大家反而会没有了动力。当再真有弱势群体受到伤害的时候,大家对自己的同情心的付出就会提防和小心。这伤及的公信力,要弥补起来同样很难。比如下次@郑渊洁 老师再发一条类似的微博出来,我想肯定会有相当多的人,不再简单地把他的愤怒转达出去。

但指望每个人都在第一时间去做个调查记者,去把所有事情都调查清楚,这显然不靠谱。我觉得我们可以转发各种信息,但不应该简单化地做结论判断,尤其是这种强弱对比明显的。因为事实的全貌,我们尚不知悉,简单的道德化判断、政治化判断只会让我们的判断力下降,正义感被滥用。如果在事情的发展中,对事实有了全面的了解,那么就应该对此前的判断加以补充,而不是任其将偏就偏、将错就错。

回到这件事情上,到我写完这篇博客前,@郑渊洁 老师也并没有转述过另一方陈述的事情经过。如果他能用他的影响力,让事实更完整地呈现在他的几百万粉丝面前,那该多好啊。

最后,附一张图片,大家感受一下:

it's media

五笔与联想

昨晚研究五笔输入法的专利和版权问题,无意间却发现了王码和联想的陈年纠葛。原来柳传志当年和王永民有一过场相当激烈的对抗,并最终几乎打垮了对手。

以现在的观点来看,联想和一堆生产汉卡的公司的侵权行为几乎是无需争辩的事实,但考虑到当时的版权观念、法律制度、市场环境,联想等公司二审翻盘似乎又不那么奇怪。所谓的外资和民资在联想等代表的“国资”面前,在当年多多少少都会有些被“妖魔化”。而联想当年似乎又总能将身上披着的“民族大旗”,换得政府的政策支持和民间的心理支持。所以即便换作是更厉害的微软,似乎也并未在中国针对如联想这种体量的IT公司发起激烈的诉讼进攻。

所以我感觉王码公司当年的诉讼策略有些过于意气用事了。即使是20年后现如今的中国的法律制度下,涉及与知识产权保护相关的法律,在执行的力度和效果方面都还相当之糟糕。而王码公司在当年就敢下重注,打大仗,不妥协,斗争到底,实在有些对风险估计不足。如果当时能充分考量联想等“倒王联盟”的“运作能力”和“公关手段”,而选择适当的妥协与合作,也许后面的结果就会有些不一样。当然,不是当时的亲历者,很难完整地获知当时的情境,包括那些描述法律外的纠葛与斗争的话语,看起来也很难考证,毕竟已经是20年前的事了,恐怕连当事人也说不清,或也不再纠结了吧。

时过境迁,柳传志成了一代企业教父,联想也早不再生产什么汉卡,而王永民在2007年也获得了国家科学技术奖,五笔输入法在新时代的拼音输入法冲击下似乎也还能坚守阵地。

那些远去的时代、故事、人物,偶尔读来总是回味深长,不知道《联想风云》那本书的内容的准确性有多高,有点想完整翻翻了。

参考阅读:

  1. “中国第一软件”王码五笔专利败诉内幕
  2. 震动中国的“知识产权第一案”
  3. 《联想风云》

记首次骑行刷北京二环

今晚终于完成了一直以来的夙愿,骑车绕北京二环线一圈,总行程41.6公里,耗时2小时32分。

其实北京二环线的标准长度只有32.7公里,但因为二环线不是标准的环型,在辅路上走,以及走错路都会增加不少距离。由于车的性能有限(200块钱的普通自行车),耗时长了点,不过也反而延长了运动时间、加大了运动量。

完整路径大概是这样,从公安大学正门出发,沿白云路上复兴路,从复兴门桥开始正式上二环线外环辅路,向南经过西南二环(西便门桥-天宁寺桥-广安门桥-白纸坊桥-菜户营桥)转上南二环,然后沿南二环(右安门桥-开阳桥-陶然桥-永定门桥-景泰桥-玉蜒桥-左安门桥)一路直奔东二环,再沿东二环(光明桥-广渠门桥-东便门桥-建国门桥-朝阳门桥-东四十条桥-东直门桥-东直门北桥)北上,接上北二环(小街桥-雍和宫桥-安定门桥-钟楼北桥-德胜门桥-积水潭桥),再转回西北二环(西直门桥-官园桥-阜成门桥-月坛北桥-月坛南桥),最后回到复兴门桥。

由于是初次刷二环,中间在西直门桥那里果然还是走错了路,误拐上了西直门北大街,还好发现得快,在文慧桥下面调了个头又骑回了西直门。南二环最东面的玉蜒桥也有点诡异,过那个桥的大弯后,完全失去了方向判断,我一度还以为走错了路,沿北去了,结果用导航一看,发现还在向东前行,并没乱。

整圈下来,发现陶然桥附近的绿化是最好的,显然是沾了陶然亭公园的光,不过哪怕是路南面的小区也有不少树,感觉很好。骑行最顺的是东二环,如果没记错,红绿灯出现的次数最少,尤其后段,辅路基本上就挨着主路,自行车道也不用拐进拐出得折腾。北二环过了安定门桥后有一段沿着护城河的单独的自行车道非常赞,完全不受汽车的影响,但可惜过了德胜门桥后,就没有这么好的事情了。

从去年常刷奥园(一圈大概是10公里)开始,今年慢慢增加了骑车的长度。今年沿长安街-前门大街线已经走了好多次,尽量每次走得远一些再回转,最长的一次刷了25公里。西三环-西外大街-西二环-复兴路线(15公里)也刷了一次,感觉良好。8月4号那天一口气沿长安街-东三环-平安大街-西三环-长安街刷了一圈,35公里,基本上感觉刷二环已经是不在话下了,于是今天就一口气拿下了二环。

接下来的目标就是刷三环了。以前开车绕三环线走过一圈,大概是50公里的样子,其实比今天的行程多了不到10公里而已,相信拿下基本上不成问题。至于四环、五环、六环嘛……得要考虑是不是要鸟枪换炮来个全碳纤维的跑车再去攻了。

在局域网内用Git同步代码分支

Git是分布式的SCM工具,但为了代码分享、多人协同,大家也会像SVN一样,用一个服务器库来集中存储。这样不管在哪个地方开发的代码,最后都可以push到服务器,再让大家fetch/pull回去。

不过有时我们一个人就会有多台机器,比如一台用于主力开发的Mac mini和一台用于流浪开发的Macbook air。在不同的机器上分别写了一些代码后,又并不想立即push到服务器。那么,是否可以在局域网内先合并代码,等在某台机器上终于完成开发后,再push到服务器端呢?答案是肯定的,只要加以简单的配置,就可以将代码同步了。

以上面的两台Mac为例,大致的场景是这样的:每一次回到mini上时,都先从air上fetch回所有新的提交,加以合并以后再继续开发。而离开mini前,则用air将mini上的新提交fetch过来,然后再离开。这样一来,不管是在mini或air上,完成开发后,都可以将完整的修改push到远端服务器上去。

为了叙述方便,我假设你已经对git的基本配置和使用有所掌握,并且在两台主机上

  • 都已将公钥id_rsa.pub和私钥id_rsa放在了~/.ssh目录
  • 工作目录都在~/project
  • 用户名都是igotit
  • mini的局域网固定IP是192.168.10.100,air的局域网固定IP是192.168.10.199

注意如果局域网IP不是固定的,建议先到路由器中设置静态IP分配。

首先配置air主机。先将公钥添加到authorized_keys中

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

然后到System Preferences – Sharing – Remote Login中,打开远程登录。这里可以看到提示,ssh igotit@192.168.10.199。

然后回到mini主机上,先将air的IP地址加到hosts中

sudo vim /etc/hosts

添加一行

192.168.10.199 air

保存退出,然后将air上的项目地址添加为远程库

cd ~/project
git remote add air air:~/project

然后配置一下ssh的config

vim ~/.ssh/config

添加上

Host air
Hostname air
User igotit
IdentityFile ~/.ssh/id_rsa

保存退出,然后就可以用

git fetch air

来从air主机上抓取分支,抓完后用

git branch -a

来查看一下,除了通常的remotes/origin,现在多了个remotes/air,将来合并代码时,注意要将远程分支写正确。

接下来,想要从air主机上git fetch mini,则只需要将上面的配置反向再来一遍就可以了。

至此实际上已经完成了配置。为了安全性,这里用ssh的公私钥来完成远程登录的验证,但其实如果要想简单,是可以直接用用户名和密码来访问的,不过我并不建议那样做。相反地,为了安全考虑,最好修改一下配置,强制用公私钥来完成ssh的验证,而禁用掉密码验证。同时,最好还要将ssh的端口作一下修改,不使用默认的22。

sudo vim /etc/sshd_config

将这几行设置一下:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

保存退出,验证就已经改为强制密钥验证了。

接下来修改默认端口

sudo vim /etc/services

找到ssh这两行

ssh              22/udp     # SSH Remote Login Protocol
ssh              22/tcp     # SSH Remote Login Protocol

在下面添加

ssh2              12345/udp
ssh2              12345/tcp

端口可以自己选一个合适的,但注意不要和系统其它服务的端口冲突。

继续修改

sudo vim /System/Library/LaunchDaemons/ssh.plist

找到

<key>SockServiceName</key>
<string>ssh</string>

修改为

<key>SockServiceName</key>
<string>ssh2</string>

改完端口,还要把另一台机器的~/.ssh/config更新一下,在Hostname行下面添加上:

Port 12345

都设置好以后,回到System Preferences中先关闭再打开Remote Login,一切搞定。

上面所述均为Mac的配置,如果是Linux环境,有的地方配置可能会有区别,这里就不一一详述了。

Google Drive终于来了


昨天Google Drive如期而至,第一时间到它的主页提交了申请。很快,今天凌晨就收到了开通邮件。

其实关注Google的人,应该5年前甚至更早前,就不断地在听说关于Google Drive的各种传闻。我当年还用过一个叫GMail Drive Shell Extension的工具,它可以把GMail改造成一个网络硬盘,映射在“我的电脑”中,非常精彩。当时想象中的Google Drive,大概也就是这个样子。但这么多年过去了,真正的Google Drive会是怎样,始终还是没人知道。

没有Google Drive的这些年,网络存储市场风起云涌,网盘的概念也已经并不新鲜,甚至已经做烂。直到Dropbox横空出世,才真正又重新定义了云存储的基本概念。乔布斯一度想收购Dropbox未果,于是苹果的iCloud也加入了战场。而就在前天,微软也更新了自己的SkyDrive,以一种更加Dropbox-style的多平台桌面同步工具的方式参与竞争。

Google Drive是不是也就是这样一个简单的Dropbox knockoff呢?

安装完桌面端的应用后,第一感觉的确这就是一个速度飞快、空间只有5GB、功能还不如Dropbox的同步工具。但真正了解了Google Drive的功能,并上手用了一天后,我觉得Google的目标远不止于此。

Google Drive其实是Google Docs的升级版,如今再打开后者的主页会跳转到前者。但与以前只能打开doc,xls,ppt,pdf等文件不同,现在的Google Drive在此基础上开放了api,给第三方应用打开了门路。访问Chrome Web Store里的这个页面,可以看到已经有一系列的第三方应用提供了各种文件的浏览及编辑支持,比如照片、视频、思维导图、Balsamiq Mockups等等。

也就是说,Google Drive其实是在给基于Web的应用提供文件存储的基础架构。在一个充分网络化的环境下,当操作各种文件的应用都不再是装在本地的桌面软件,而是在线的应用时,你其实根本不需要再将文件同步到桌面,然后用桌面软件去打开、编辑、保存,将来这些操作全部可以在浏览器里进行。不论你在哪一家公司的在线应用里编辑哪种格式的文件,最终都可以存储到Google Drive中来。

更重要的是分享将变得更为简单,协同编辑也将更加普遍。以后你不再需要和老板在往复的Email中附上不同版本的文档作为附件,而只需要附上一份在线文档的链接,所有的修改、点评、对比都能集中进行,并且可以实时同步编辑同步更新。

所以Google Drive远不是一个Dropbox knockoff,而更是一个潜在的网络基础设施。跳出传统的桌面环境思维,它与其它“网盘”的区别顿时清晰可见。

同步后的Google Drive文件夹里原来的在线文档被命名为.gdoc,表格则是.gsheet。如果你双击它们,就会打开Chrome浏览器访问熟悉的Google Docs编辑页面。不过通过Chrome Web Store安装好Balsamiq Mockups应用后,在本地似乎还没有与.bmml文件关联,目前还只能通过网页里的文件列表来打开。但我想不久后的将来,各种文件格式就会通过Chrome来关联到在线应用了吧。