一点都不好笑

广东人说今天3度好冷!
山东人(傲慢地)笑了:我们这零下3度!
北京人也(非常傲慢地)笑了:我们这零下13度!
东北人听到(失去控制的)哈哈大笑:我们这零下30度。
广东人听完冷笑一声:我说的是室内温度…
山东人-_-?,北京人-o-!!,东北人-O-!!!

===== 极尽华丽之分割线 =====

当前就是在颤抖中留下这篇 blog。

思维的陷阱

前阵子遇到个问题,是在 Joomla 里升级组件的时候出现 “Failed to copy file” 的错误。我已经习惯了先 google 解决方案,跟随头几个方案,都说是文件或文件夹权限的问题,我满心欢喜地以为已经接近真相了。

几小时过去,哪几个文件夹,包括父文件夹都已经变成 777 了,还是一样报错。然后,开始想是不是姿势不对,还有几个可疑的地方,包括是不是应该先删除旧的组件,然后新安装;不要用上传 zip 包的方式,而改用直接用服务器上的文件进行安装;改用 ftp 的方式进行安装等等。多得有 git ,每次尝试完一种办法不可行之后,所有文件都可以恢复到初始状态。不过多次尝试未果之后,隐约觉得有点浪费生命了。

几天过去了,中间也重复过之前的尝试,每次都有一点点变化,希望找到突破口,也向身边的同行咨询,尝试过各种跟权限有关的方法,依然是未有进展。

事情开始变得吊诡起来。

又几天过去,浪费生命也得有个谱,思维才开始跳出这是一个权限问题的框框,立刻动手写了个小脚本,放在同一位置,用最简单的 API,对同样的文件进行操作,结果是令人震惊的,毫无权限问题。然后开始跟踪代码,系统比较大,对源码结构不是很熟悉,花了点时间才最终确认,由于一个程序配置的问题,导致文件复制的步骤总是返回失败。触摸真相的感觉依然是让人兴奋的。

回头再想,如果早一点开始翻查源码,会不会就能早点发现事实呢?

但问题是,为什么不早一点。

是因为这个陷阱太完美了么?还是因为自己的思维出现固定模式,感觉到同样的问题一定已经有不少人遇到了,而且很可能都已经解决了,只是还没有搜索到而已。源代码与搜索引擎这两个工具,我潜意识会更多地使用的是搜索引擎而不是源代码。也许是因为搜索引擎很多时候能更快的给出答案,不需要太多的思考,而阅读源代码注定要花比较多时间,要记忆流程思考其中的逻辑。问题不在于工具本身,而在于人在什么位置出发思考问题。

还有另外一个因素是时间,急于解决问题,于是求助于通常能快速解决问题的搜索引擎,越是急,越会优先选择快速方案而不是思考正确的方案。

Google Webmaster 索引历史丢失 (已解决)

刚刚发现一个奇怪的事情,下午的时候,Google Webmaster 里一个站点的索引历史好好的,还给别人看索引趋势,刚才再去观察的时候就全都没了。

被吓得赶紧用 site: 指令搜索一下,还好索引还在。只是历史丢了,也没收到什么警告邮件之类的。难道只是一时的数据丢失?

希望这些数据认得路回家。

===== 华丽的分割线 =====

Update: 睡了一觉之后,重新进入 Webmaster 里查看,站点地图里的编入索引数量和历史已经回来了,但是索引状态那里却依然是一条直直的线。

如下图↯
Google 索引显示为 0

Update: 经过一周之后,终于看见索引历史的曲线了。这个数据的更新周期大约是一周至二周,所以频繁的去观察这个数据是没有多大意义的。只要 sitemap 里索引数量正常就可以了。

有种自愿叫做被逼

昨日(7月14日)早上,因为担心政府出尔反尔,大批民众继续聚集,从东湖广场,“散步”到江门市府门口并停留。

如果说前两天的“散步”是为了表达诉求,那么今天的“散步”又是在表达什么呢?

回到核燃料项目本身,也许真的是很安全,而且经济效益极高,鹤山址山抢到这个项目也许就是中大奖一样的幸运。然而,民众在公示出现之后,反对声音由小变大,一波接一波,各种消息(知识)经由网络的高速传播,终于在公示的最后一天爆发了。(我自己观察是周二周三左右首次见到下周一起散步的微博,所以我感觉是提早爆发了)

据闻,公示最后一天晚上本来准备了个庆祝项目开工的活动。结果被早上的“散步”给枪毙了。

公示期间,我了解到的官方只是出了一个八问的统一答复,而且语气带点轻佻的感觉。也许就是这个八问统一答复进一步激发民情的也说不定。面对这样一个重大项目(鹤山 2012 年 GDP 在 200+亿,这一个项目 370 亿,大家感受一下),在面向大众进行宣传,进行科普说明,与民众沟通反馈等工作上面似乎都不愿意花更多的时间和精力。轻轻的签了约,收了地,带一小部分人去在役设施实地考察,还建了个气象观测塔(网友的说法是未立项先动工)。应该注意到一个细节,已经同意的案例里,其一开始也是不同意的,要经过一系列动作才慢慢接受的。这个几近于本能的反应,也是大家遇到这个话题的时候首先最容易表现出来的反应。在这个反应的基础上,再加上一系列的有扩大恐惧的疑问浮现:3月已经签约,征地不知道什么时候已经完成了,还已经动工了,公示期才10天,想咨询也不知道该往哪里咨询,想表达意见,哪个破热线一天打20次都打不进去,还不需要涉及到什么核燃料安全问题,核泄漏应急预案等技术性问题,在那么短的时间里面,传播得足够快的,只有恐惧,已经抛离理性好几圈了。

7月12日晚,鹤山方面新闻发布会,宣布延长公示10天。第二天早上,江门市长发表电视讲话,表示在没有达成共识之前,绝不立项,绝不建设。从这个讲话人们实在太容易理解出更多的意思了,疑似伏笔。随后 10点,鹤山市府再搞发布会,宣布不予立项申请。回应市民诉求也还真是挺快的。这个消息一出,起到很好的冷却作用。当日下午,网络上面平静了许多。这个时候就有些谣言冒出来了,诸如取消立项是烟幕弹,散步当中有无间道,秋后算账等等。这类谣言还是很好判断的。然而,暗涌开始出现,线索应该就是江门市长那疑似伏笔的讲话。第三天的“散步”在取消项目的消息已经上过头条之后继续进行,原因是担忧政府出尔反尔。

什么时候会出现这样一种情况?两小孩 A,B 一起做约定,然后 A 再三地向 B 确认关于约定的事。假设 A,B 都没有精神问题,那么显然,就是 B 曾经做得不够,导致 A 不放心。

我们知道就算是核电这样的高危项目,管理控制得好也是很安全的,就看谁来操刀了。我要怎样才能知道自己的利益不会遭受损害?我要怎样知道政府已经做好的充分的准备,而且能做的事情都做到最好了?

用邓卫东局长的话说:我们无法去做外围城市的工作。

这已经暴露了政府在处理大项目时的不成熟,而且缺乏思考。难得有一次超大规模的项目,而且是充满各种恐怖词汇的超大项目,难道就只需要做辖区内的工作?就不考虑周边的意见,不需要周边的配合?

我们不会无缘无故的相信一群人,更加不会在亲历了多次让人愤怒或者痛苦的体验之后选择继续相信。给出机会已经是最大的宽容了。当然机会是留给愿意思考的人。

担心,让很多人担心,是令民众上街的理由。有种自愿叫做被逼。

项目被取消,不是因为核燃料加工科学知识不足,而是群众心理学认识的肤浅。

这次的事件,有媒体用民意的胜利来做标题。的确,很吸引眼球,但我觉得那不是事实。事实是并没有赢家。民众不得不出来”散步“,政府不得不响应民意取消项目,这就是胜利了吗?民意要胜利,需要的是一个知识型的政府,它做足了充分的准备动作,能做的都已经做到最好,民众已经普遍理解是怎么一回事,有充分畅通的渠道表示支持或者反对。

jQuery SelectAll Plugin

这是一个处理 全部选中/不选 的插件。

这个插件节省不了你太多代码,但是能帮助你分离处理逻辑。通过在改变选择项时,向 controller 发送一个 “change:select” 事件(还附带 selected 和 total)来实现。这样你就可以灵活地选择在什么地方处理这个事件。

controller 不一定是 jQuery 对象,也可以是 Backbone.Events 的派生对象。

jquery-selectAll.js

Gitlab-shell 1.1.0 的 SSH 访问异常

GitLab 4.2 升级到 5.0,虽然 步骤 有点儿繁琐,但还算是一路绿灯,但最终却遇到了不能以 ssh 方式访问库的问题。搞了几个小时,找了所有能想到的地方,都搞不清楚究竟哪里错了,于是在 github 上给提了个 issue 3578

问题的情况简单来说就是,ssh -T 成功,但是 git clone/pull/push 却意外失败,另外 http 的方式是成功的,说明应该还是连接的问题。

唯一有可能存在疑问的地方,应该是 gitlab-shell 的版本。检查的时候会报告说需要 1.1.0,而事实根据升级指引中的操作结果是 1.2.0 的。但从 另一个 issue 的说明 看来,可以通过修改 check.rake 来实现“瞒天过海”。

暂停了 gitlab service,然后切换 gitlab-shell 的版本到 1.1.0

> cd /home/git/gitlab-shell
> git checkout v1.1.0
> git checkout -b v1.1.0

# 配置文件不需要改
> ./bin/install

重启 gitlab 后再试试 ssh -T git@mygitlab.com

结果却出错了!

/usr/local/lib/ruby/1.9.1/json/common.rb:148:in `parse': 743: unexpected token at '<html> (JSON::ParserError)
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>
'
     from /usr/local/lib/ruby/1.9.1/json/common.rb:148:in `parse'
     from /home/git/gitlab-shell/lib/gitlab_net.rb:24:in `discover'
     from /home/git/gitlab-shell/lib/gitlab_shell.rb:28:in `exec'
     from /home/git/gitlab-shell/bin/gitlab-shell:16:in `<main>'

为什么会出现这个错误,我没什么头绪,google 了一轮也没什么对症的答案。

要出现默认的 Nginx 页面,应该还是跟 Nginx 的配置有关,而哪个配置文件是从网上下载的,唯一就是指定了 IP 以及域名。就算直接用 IP 访问,也是可以看见 GitLab 的页面的,但是不会看见 Nginx 的默认页面。

这时,我想起之前曾经改过 /etc/hosts

127.0.0.1   mygitlab.com

如果在服务器端访问 http://mygitlab.com 的时候才会看见 Nginx 的默认页面。果断去掉这个 host 设定,然后再试,一切都正常了。

嗯嗯,具体什么原因要加这个 host 设定,不太清楚了,装 4.2 的时候的事情了。反正 gitlab-shell 1.1.0 跟它有冲突。不过应该算是 gitlab-shell 的问题,它不应该解析出域名的 IP 后直接用 IP 去访问,因为有可能一个 IP 上会挂好多个站点,默认的不一定就是 gitlab。

有时候指定 hosts 能解决一些问题,也有像这种帮倒忙的情况,能不加还是不加吧。

PS: mygitlab.com 不是一个真实的域名。

Update 17 Apr: Issue 3384: Gitlab can’t clone or push

转移 VirtualBox ubuntu.vdi 后的网络连接问题

由于磁盘空间的问题,需要迁移 vdi 文件去新的位置。关闭,转移,新建 Ubuntu 虚拟机直接引用转移后的 vdi,其它都保留原有的设置,一切都很好。

唯独启动后,ifconfig 一看就发现问题了,只有本地网络了。

一开始还是以为是 VBox 网络连接的问题,反复试了几次,问题依旧,而其它虚拟机同样的配置却可以正常运作。经过一翻 google,最终从 这里 得到启示。

> sudo mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.bak

删掉应该也是可以的,重启之后问题就解决了。

学什么语言工资最高?

这次要标题党一回了。如果是铁了心只跟随大风向的,请忽略下面的内容。

在 V2EX 上看到这么一个标题 学什么语言工资高?…,内容我也没看,只是纳闷,为什么现在的人都肤浅到这种程度,稍微有点常识也该知道,这种问题是最不该问的。

有印象是,曾经有人做这方面的调查,语言跟工资之间的关系研究,不过貌似统计的都是国外的,而且不知道具体是哪个国家的。如果,有人根据这些调查结果去指导自己的工作,我是实在很好奇但又不忍心看结果啊。

从我个人经验来看是,初工作时,用什么语言并不是自己决定的,而是实际项目决定的。读书的时候就学那么几招,真实的经验是在项目做的过程中累积的,当然还少不了项目以外,自己心血来潮做的各种尝试。用什么语言能带来多少工资,以及能带来多少价值,是没什么关系的。因为,在整个过程中,学到的并不紧紧是编程语言,还有许多其它的行业经验,设计原则等等,如果自己能紧紧把握住这些,那么会慢慢累积成自身的经验,这样带来的价值是长久的,并不是工资所能衡量的。除了实际价值,如果还能给自己带来快乐,那就更加美妙了。

每个人起点不同,但是如果硬把起点跟工资绑上关系的话,最终收获的可能仅仅是工资。我们可以把眼界放宽一些,在起步的时候多给自己几个机会,如果对编程有兴趣,绝对可以多学几门语言,多将编程用于解决生活的具体问题上。

我一直认为语言跟工资之间的关系研究,一方面是反映供求关系,一方面在说明,某种语言在改变世界方面的能力,或者说是影响力。而调查的结果是过去一段时间的人们所做出的努力和贡献,新的时期会有新的影响力格局。无论我们选择什么语言,我们只要用好它来实现改变,就是在累积新的影响力。

我不会煮什么鸡汤,只是把实际情况描述了下。

真的免费?

最近挺忙的,都没什么时间写文章,但是却有给 blog 换个 theme 的念头,刚好看到一篇标题是 14 Free WordPress Themes… 于是就点进去看了看(其实这种坑爹的文章,已经上当很多遍了,但还是无意识啊),还看中了两个,再点进去看,哦原来都是要钱,不过方式很不同。

一个是有三种套餐让你选择,免费那个套餐只是个皮,我需要的东西是要钱的。另外一个是说“付你想付的那部分”,这个概念更加虚,但足够把我吓跑了。这个的意思是,你可以自行选择付多少钱,只要是 0+ ,也就是允许你填 0 元,不过要填个电子邮箱。其实电子邮箱也是值钱的。

其它几个都没仔细去研究了,估计是大同小异,免费只是个招徕,其实没有全部意义上的免费。不过,想想这也对,怎么说也是别人的劳动成果,是应该得到尊重的。

就换 theme 这件事情来说,如果只是让你拿到代码,套在自己的 wp 里,这个还不够的,特别是英文排版的拿到这个中文博客里,多多少少需要点调整。而且,时间长了,总会有那么些东西会慢慢的让你不满意,这也是我总想换 theme 的原因。这个需要的其实是个长期的服务,很显然是有成本的。

看中的两个都有提供这种服务,我不选择的原因在于,他们不一定能搞定比如中文排版这种事。其实,我也不算什么高级用户,只是目前这个市场(指国内)都不被看好,选择几乎为零。

为你所选择的付费是很正常的,没有选择才是可悲的。