2024年已过去 89.65%
Google 20年    @ 2018-09-29, 14:16

看了成立 20 年,Google 倡导的知识民主化现在看好像失败了,一个有感评论:

好像世界就是这个样子??热血终究会被现实冷却,屠龙少年终归变成了恶龙,整个物质世界构筑的秩序的力量强大到无人能够反抗。每次想到这些事情的时候,都会觉得很失望、很绝望,觉得人类无药可救。

但是今天看完这篇文章,忽然有了新的想法。就算所有的热血最终都会冷却,但在这冷却的过程中仍旧温暖了世界,哪怕谷歌最后变得“泯然众人”,这二十年里的坚持仍然推动着世界向着更好的方向前进了一点点。

相信每一份热血的存在,都在让冰冷的世界变得温暖一点点。

很高兴自从 2001 年接触到 Google 后,它于我而言从未离开过。

翻到 Google 6周年的时候(2004年)我也曾记录过。

很多人说,人终究会变成自己以前讨厌的样子,但我自觉我没有。我不愿意融入这个主流世界构筑的秩序,由此一直游离于主流秩序的边缘,但我很快乐,甚至感到自己是真实自由的。

胡言乱语 | 1 个评论 | 4,032 次阅读
简短地址:http://ncblog.net/1485/
Compiling Project V on merlin-arm-eabi    @ 2018-09-20, 23:39

要在一个刷了梅林系统的路由器上,编译 Project V

在安装了 entware 以及 opkg/gcc/binutils/bash/vim 等一系列必备环境后,因为 Free Pascal 最新版 3.0.4 没有提供 arm 版,所以下载 Free Pascal 3.0.2 arm-linux-eabi。解压后有 install.sh 安装脚本,但由于 BusyBox的 tar 参数有区别,需要将脚本中的 tar 的 --no-same-owner 参数删去,然后才能执行。安装完,fpc 即可正常运行了。

然后尝试用 fpc 编译 Project V,在连接阶段出错:

...
Linking out/proj_v
/opt/bin/ld: warning: out/link.res contains output sections; did you forget -T?
/opt/bin/ld: cannot find -lpthread
/opt/bin/ld: cannot find -ldl
/opt/bin/ld: cannot find -lc
proj_v.lpr(184) Error: Error while linking
proj_v.lpr(184) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /tmp/mnt/sda1/entware/bin/ppcarm returned an error exitcode

搜索 libpthread 文件后,将其所在的工具链目录加入编译选项

-Fl/tmp/mnt/sda1/entware/lib/gcc/arm-openwrt-linux-gnueabi/6.3.0/

重新编译,却得到了不同的错误信息:

...
Linking out/proj_v
/opt/bin/ld: warning: out/link.res contains output sections; did you forget -T?
/tmp/mnt/sda1/entware/lib/fpc/3.0.2/units/arm-linux/rtl/ucprt0.o: In function `_start':
(.text+0x50): undefined reference to `__uClibc_main'
/tmp/mnt/sda1/entware/lib/fpc/3.0.2/units/arm-linux/rtl/system.o: In function `SYSTEM_$$_SYSTEM_EXIT':
system.pp:(.text.n_system_$$_system_exit+0xc): undefined reference to `_haltproc_eabi'
proj_v.lpr(184) Error: Error while linking
proj_v.lpr(184) Fatal: There were 1 errors compiling module, stopping

错误提示说找不到 __uClibc_main 函数,可知编译器连接的 ucprt0.o 文件使用的是 uClibc,而不是 glibc。然后在 github 中找到了华硕梅林的工具链库,在其中的 am-toolchains/brcm-arm-sdk/hndtools-arm-linux-2.6.36-uclibc-4.5.3/lib 目录中,包含了 uClibc 的相关库,将此目录中的所有文件,放置在一个新目录(/tmp/mnt/sda1/entware/libuc),将之前添加的 fpc 编译参数改为:

-Fl/tmp/mnt/sda1/entware/libuc

再编译错误提示没有找到 libpthreadlibdl

/opt/bin/ld: cannot find -lpthread
/opt/bin/ld: cannot find -ldl

需要在 libuc 目录中为这两个库做软链:

$ln -s libpthread-0.9.32.1.so libpthread.so
$ln -s libdl-0.9.32.1.so libdl.so

再行编译,出现新的错误提示:

Linking out/proj_v
/opt/bin/ld: warning: out/link.res contains output sections; did you forget -T?
/tmp/mnt/sda1/entware/lib/fpc/3.0.2/units/arm-linux/rtl/system.o: In function `SYSTEM_$$_SYSTEM_EXIT':
system.pp:(.text.n_system_$$_system_exit+0xc): undefined reference to `_haltproc_eabi'
proj_v.lpr(184) Error: Error while linking
proj_v.lpr(184) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /tmp/mnt/sda1/entware/bin/ppcarm returned an error exitcode

这个错误提示着实令人郁闷了很久,做了很多尝试都失败了。幸好,Free Pascal 是开源的,看似无解的问题最终可以从源码上找答案。于是去下载了 fpc 3.0.2 的源码,在源码的 rtl/linux/system.pp 文件中,查找到 _haltproc_eabi 相关的部分:

{$if defined(CPUARM) and defined(FPC_ABI_EABI)}
procedure haltproc(e:longint);cdecl;external name '_haltproc_eabi';
{$else}
procedure haltproc(e:longint);cdecl;external name '_haltproc';
{$endif}

只知道了 _haltproc_eabi 定义在外部(不在此文件内)。然后在所有源码文件中搜索 _haltproc_eabi,在 rtl/linux/arm/ 目录中的四个 .as 文件(汇编源码)中找到,但该目录下实际有五个 .as 文件,而唯独之前打过交道的 ucprt0.as(也就是之前提到的调用 uClibcucprt0.o 的汇编源码)中没有 _haltproc_eabi 的定义,这样就能说得通了。通过对比 cprt0.as(使用 glibc 的版本)和 ucprt0.as,在 ucprt0.as 的第155行插入如下代码:

        .globl  _haltproc_eabi
        .type   _haltproc_eabi,#function
_haltproc_eabi:
        ldr r0,=operatingsystem_result
        ldrb r0,[r0]
        mov r7,#248
        swi 0x0
        b _haltproc_eabi

并将修改后的 ucprt0.as 放入 fpc 相应目录中 /tmp/mnt/sda1/entware/lib/fpc/3.0.2/units/arm-linux/rtl,使用 as 将其汇编

$as ucprt0.as -o ucprt0.o

再回到 fpc 编译 Project V,编译通过。

尝试运行,正常。

以上是摸索了不少时间后,整理出来的逻辑,看起来简单不少,但其实整个摸索过程却不会这样有条理。尤其最后将问题定位到 ucprt0.o,还是偶然通过查看连接过程中生成的 link.res 文件找到一丝线索的(link.res 文件明确指出了连接时使用的是 ucprt0.o)。

我爱 Pascal。

软硬兼施 | 3 个评论 | 5,413 次阅读
简短地址:http://ncblog.net/1483/
复刻    @ 2018-09-13, 16:46

作为一个有历史的人,在更新了个人网站之后,必须会要复刻它最初的样子的。

2001-2004年时候的样子:https://nicrosoft.net/nc-show-v1/

2004-2009年时候的样子:https://nicrosoft.net/nc-show-v2/

本站本身 | 评论已关闭 | 3,339 次阅读
简短地址:http://ncblog.net/1480/
更新    @ 2018-09-10, 22:35

ncblog 和 ncshow 的 这套 theme 还是在 2010年刚开始写 PHP 的时候写的了。这个周末抽空,按照现在的审美品位重新做了一版,大框架没改,改善了 CSS 和简化了一些设计,看起来大气一些了。不过,不是很熟悉 web 前端的技术,所以也不搞复杂了,没有响应式。就酱。

本站本身 | 评论已关闭 | 3,762 次阅读
简短地址:http://ncblog.net/1470/
我的静电容键盘折腾史    @ 2018-09-08, 21:38

2014年5月20日前,我一直是用机械键盘(青轴)的。

那时的某一天,在知乎上看到有人说,要解毒机械键盘,必须用更毒的静电容键盘。于是知道了静电容键盘这样一个物种,除开布局“怪异”的 HHKB,当时全球静电容键盘最主要的品牌就是日本的 Realforce,在2014年5月20日到手了 Realforce 的黑色分区压力104U。

所谓分区压力,是指 Realforce 键盘的一个特色:按键压力克数按照手指分区,小指按键区域为30克压力,ESC 和 NumLock 为55克压力,其余按键为45克压力。应该说这是一个相当人性化的一个特性。

在那之后,我就再也不会对机械键盘有任何兴趣了,真的彻底解毒。说到静电容与机械键盘的体验差异,其实是很难文字描述的。非要说的话,我个人体验是感觉静电容按键更像按在有足够弹性的肉肉上面,而机械键盘更像敲击在膝盖这样的关节骨头上。当然每个人可能会有不同的体验或者喜好,我也有朋友就是不喜欢静电容,这不奇怪。

对静电容的中毒之路当然不可能就此戛然而止,大半年后,在2015年2月1日,又入手了同样是 104U 的白色分区款。Realforce 的白色款相当的复古,但又让人觉得有点闷骚。

在有了黑白双煞之后(一把家里用,一把在公司用),安生了好久。

然而在 2015年9月,又意外发现新出了十周年纪念版的蓝灰配色的韩国定制版,顿觉销魂,但是只有80%款的 87U,没有小数字键盘部分。

心心念念,必有回响,当月下旬还是忍不住淘宝下单韩国代购,在 2015年国庆假期期间到了中国,来不及等 EMS 上班送货,10月3日便自己去邮局领取了。也于是在那个假期里,有了当时发的这个朋友圈,有了我的 blog 的这个副标题:

不过由于我的使用习惯,没有了数字小键盘感觉到相当地不方便,试着习惯了一个多月仍然不能忍。而后 Realforce 已经有了十周年的中国定制版,还推出了之前很罕见的104键的全域30克版本(也就是全部按键的压力克数都是30克)。于是在 12月14日,成功将 87U 在闲鱼上出手后,就下单了全域30克的 104 Pro。

次日就收到了货,红灰配色确实更骚气,但是发现一个重要问题是,之前对全域 30克的迷思,真的只是一种迷思。因为到手后,才实际感受到 30克太软了,之前我说的那种肉肉的感觉没有了。幸好老婆觉得还不错,于是就给了老婆在当时 Mera 公司里使用。而我在当天,也就是12月15日继续下单了代替刚出手的蓝灰配的 87U的,依然是蓝灰配色,但是是静音版、全键盘的 104U。我是个颜控,蓝灰配色在我眼中仍然是无敌的。

这样,我和老婆在家分别使用黑色和白色的 104U,在公司我用蓝灰色静音版的 104U,老婆用红灰色的 104Pro,由此置备下了四个 Realforce 静电容。

然而,我的蓝灰色 104U是静音版,所谓静音版就是在内部加了垫圈能降低30%的按键声音,但是却影响了手感,这就为后续的折腾埋下了伏笔。

使用静音版两周后,依然觉得远不如非静音版敲击起来那么爽快的感觉,这不能将就。但蓝灰配色又是那么销魂,怎么办?折腾没有局限,我把蓝灰色的键帽与家里的黑色104U的键帽对换了一下,于是产生了一把蓝灰色分区 104U,和一把黑色静音版 104U,并且把黑色静音在闲鱼上贱价转让了。虽然很亏,但是看着剩下的可能是全球唯一的,自行组合出来的,完美的,蓝灰色分区的104U,感到满足。

因为少了一把键盘,在家里老婆重新用起了茶轴,就这样保持了一长段时间,直到 Mera 项目结束,团队解散,从办公室搬回了家。从办公室撤回后,就又多出一把键盘,因为经济原因,2016年12月,在闲鱼上把全域30克的红灰版也转手了。

今年 2月到深圳参加即将入职CTO的长颈公司的年会,抽中了二等奖 Realforce 红灰色的全域45克版键盘,外观与之前拥有过的全域30克完全一样,区别只在压力克数都是45克,不像30克那么软,所以成了在深圳时使用的键盘。

从外观来说,当年拍的这张照片就是我现在拥有和使用的两把键盘。

老婆用的白色分区 104U,灰色键也给换成了我后来买的一套蓝色键帽了。

静电容的折腾应该就此为止了,折腾过程还是挺费钱的,现在对于身边的朋友,我都是推荐分区非静音的静电容键盘,这也是在我的折腾一大圈后得到的一个简单结论。全都试过了,知道自己喜欢什么想要什么了,就没有遗憾了。

软硬兼施 | 1 个评论 | 6,044 次阅读
简短地址:http://ncblog.net/1468/
慢生活    @ 2018-09-03, 14:06

又到 9月开学季,可乐初中入学了,也意味着夏天渐渐就快要结束,而后就是上海最舒服的秋天了。去年秋天去深圳 6周做顾问,开启了一段新的里程,转眼已快满一年,时间的流逝速度真的很吓人。

从 2009年细选网开始到 2016年 mera 失败,创业 8年多后,从去年开始,喜欢上了另外一种生活,不同于创业时总是马不停蹄、不知停歇,一种从容自若的慢生活。当然,有时候从容只是表面的,毕竟生活的经济上的压力还是存在的。很惭愧创业 8年多并没有实现财务自由,同时也错过了中国程序员参与互联网公司实现财务自由的可能性最大的黄金十年(2005-2015),甚至因为连续失败的创业而导致家庭收入入不敷出,创业期间的工资是很少的。但那种总是被“速度”逼着往前冲的担子卸下了,可以放慢脚步下来或者驻足停歇一下,却是实在的。

今年年初加入了长颈的公司,然后就开始了在深圳2周,在上海4周的循环日常,被朋友调侃为做2休4。其实在上海期间,肯定也是需要工作的,保持在线,参与公司技术方面的决策、与小弟们保持沟通主持一些工作以及自己维护的项目。

今年自己发起和维护的项目,除了为长颈个人做的 VA 之外,一个是 Project V,一个是 Inspire Writer。Project V 出于兴趣和实际需要,五月开始开发,六月底七月开始公司内小范围测试部署,八月已经全公司部署使用,代码量不多,目前为止运行完美。Inspire Writer 是去年开始的项目,去年7月发布后,改动不多,断断续续打一些小补丁。今年决心为它做更大程度的完善——支持通过云存储服务(比如 Dropbox)进行云同步,毕竟已经 2018年了,云同步已然成为了软件的标配。

这些项目的开发,都是在不紧不慢的步调中慢慢打磨,一部分出于自己兴趣,一部分出于自身实际需要,这样两者结合的驱动开发,是我作为程序员这个角色时所向往的。对于 Inspire Writer,我现在的想法就是将它细致打磨成一个精品,我相信慢慢会被很多人接受和认可的,即使可能需求是相对小众的。我相信,好产品是慢慢打磨出来的,我也喜欢以这样的方式去做自己想做的事情,不再急功近利,被时间逼着往前冲。

前几天看到一篇文章,标题是《创业之前,请忘掉你那该死的“完美主义”》,或许商业现实确实如此,但如今的我已经不愿意再以这样的方式来创业、做产品了。倒不是说这样做出的产品一定不好,只是我不再愿意这样了。

前些年创业时我的梦想是做出“成功”的产品,去纳斯达克敲钟实现暴富。经过最近这一年多的慢生活,我的梦想已经变成了,有一个房子,在家陪着老婆,每天写写代码、打扫卫生……

农码生涯 | 3 个评论 | 3,964 次阅读
简短地址:http://ncblog.net/1458/
莫干山三日游(三)    @ 2018-08-25, 23:37

第三日早晨起床,阳台外的夏日的晨光、朦胧的远山让人留恋山间生活的美好。

在清凉山庄的竹林中,享受静谧的早餐,虽然也很简单,却同样让人留恋山间生活的美好。

吃完早餐退房上车,继续行程。由于接近周末,车量增大,山上山路狭窄,所以一律改成了单行线。于是我们驾车朝向单一的方向,开始寻找剩下的目标。首先到达的是芦花荡,在芦花荡饭店的平台上,能非常近距离地直接眺望裸心堡(并非第一日我们进入的裸心谷),据说裸心堡(酒店)住一晚的费用在12000元人民币以上,可以看到其地理位置确实是异常优异,得天独厚。

随后从芦花荡走到了紧挨着的白云山馆,这里也是酒店和一些咖啡小馆,建筑颇有民国风。

继续徒步行走,来到了剑池,剑池据说是干将和莫邪铸剑的地方。此处竹林密布,有剑池、飞瀑、试剑石等地,山路上上下下,颇需要一些体力。

剑池的飞瀑据说是最出名的。

剑池之后,继续前往下一站,途中经过杜月笙公馆,本颇有兴趣游览一下,但其已经变成酒店并且高挂免扰牌,无奈作罢。再往前就到了蒋介石的官邸,这原本也是我很期待的一个点。不过,委员长的府邸并不大,尤其卧室更是小小一间,陈设简朴,看得出当年的基督徒主人是一个高度节制之人。

由于第三日已经没有了睡下午觉休息的机会,近一天下来稍有疲惫,于是在蒋府邸的楼下的宋美龄舞池处的小卖部买了些冷饮、饮料坐下小憩了片刻。随后的没有目的的徒步游走,感觉山景已经再无新意,时间也已到下午四点半,于是开始回程并且计划到山下再寻找晚餐地点。

下山时走的是与上山时不同的另一条山路,但依然是很多的发夹弯以及路程稍长。由于全部单车道,所以途中一旦有车跟在我们车后,我就不自觉会有压力,于是常常在有旁路停车的机会就停下让后车先走。其实,我的速度也不慢(压着限速30公里),但不知道为什么大家都很着急的样子。

下山后路遇一段溪流,可乐和妈妈、奶奶还兴致不错地玩了水,以及端了些水给马六擦了个身。

之后在路边寻找了一家小饭馆解决了晚饭,大约晚上七点半饭后启程回沪,却遇上第一个上高速的入口封道(原因不明,猜测可能有事故),然后多走了16公里在另一个入口得以上到高速,后一路顺利,回到家已经十一点。

(完)

游山玩水 | 评论已关闭 | 3,627 次阅读
简短地址:http://ncblog.net/1455/
莫干山三日游(二)    @ 2018-08-25, 22:22

第二日早晨在享用了简单的农家早餐后,驾车真正地进山(莫干山)了。莫干山是少数的几个(应该不是唯一吧?)能开车上山的旅游景点,非常适合自驾。第一次开盘山路,很多个发夹弯,倒没觉得太危险,反而感觉有几分好玩。当然,车速绝对不要快,否则很难保证没有意外,一路上看到不少“着急”的司机即使在连续急弯的时候都要跨道超车,十分佩服他们不要命的精神。

进入莫干山,门票成人100元,老人儿童半价,自驾的游客另加停车费10元。游玩之后你会觉得完全值回票价,因为除此之外,山上所有景点再无收费(当然,吃喝住宿除外),10元停车费也包含了在山上任何景点、酒店的停车费用了。

上山过程中,经过大教堂(会议厅)时,我们停车游览了一下。最初的大教堂,后来改成了会议厅,84年的莫干山会议,即在此召开。

继续上山后,入住了预订的清凉山庄,房间阳台的视野极好。

入住完成后,我们步行在清凉山庄附近随意走走看看。附近的南京军区的莫干山疗养院似乎已经废弃,但望向山外,依然是连绵起伏的群山,视野开阔,令人不禁想深呼吸。

下午回酒店稍事休息后,驾车继续往山上走,来到大坑景点。所谓大坑,就是在莫干山高处步行绕山一周,对于大坑的名称,我的理解是,由于一览众山小的感觉,望向四周无不如同大大的坑洞。

一个多小时的大坑一圈,可谓饱览了几乎所有的山景,之后再到平台远眺处,都不再有新鲜感。

游完大坑到了晚饭时间,我们去荫山街(相当于莫干山上的美食集中地了)吃晚饭。傍晚时分的荫山街月亮已经升空,晚霞又带来了另外一种山色。

前一日我们在民宿附近吃的农家菜,稍显粗糙(油多)不甚喜欢,荫山街的东吴酒家的食物却令人胃口大开,相当美味。个人认为,这才是浙江菜的代表,尤其是酱爆石蛙,至今令人回味。

饭后,已经天黑,月色更显迷人。

回到清凉山庄洗漱睡觉,阳台外月光如水,山野间鸟宿虫鸣,就这样,第二日行程在月色中结束。

游山玩水 | 评论已关闭 | 3,749 次阅读
简短地址:http://ncblog.net/1440/
莫干山三日游(一)    @ 2018-08-25, 17:25

趁着小升初的暑假结束前,带着可乐和可乐奶奶,22日到24日,全家出动自驾去莫干山游玩了三天。

三小时的车程(上海境内一小时),着实不远。按照老婆研究了攻略后安排的行程,第一天在莫干山镇的裸心谷附近的漫云山庄民宿入住,挺休闲的感觉。

在入住后,当天中午驾车随意探路,结果来到附近的石颐寺水库,碧水青山,是能想到的真真贴切的描述。

返回后,入住的民宿老板表示等天色稍微晚一些没午时这么热时,可以带我们进入裸心谷(民宿附近的占据了一个山头的高级度假村,非住客一般不能随意进入)。于是全家睡了个下午觉稍事休息后,在下午四点半时,我们进入了裸心谷。

裸心谷的客房别墅全部是依山而建,如同半挂在山坡上,相当惬意,另一边的山坡上种满了茶树。

当天因为有阵雨的关系,在上山过程中感到相当闷热,但在最终徒步走上裸心谷的最高处的平台时,无敌视野让人觉得一切都值了。

由于不喜赶行程式的旅游,所以我们的行程安排得比较松散与休闲,第一日的行程在下山出了裸心谷后就结束了。

游山玩水 | 评论已关闭 | 3,715 次阅读
简短地址:http://ncblog.net/1431/
Be with you, again    @ 2018-08-20, 23:47

应该是在 2005 年的时候,最早看了日版《借着雨点说爱你(Be with you)》,在 2008 年还推荐过,当时有了可乐之后重新看这部片,感受完全不同。一直很喜欢日、韩一些有别于好莱坞大片的那种情感细腻、画面唯美、表达含蓄的电影,就比如当时推荐的《假如爱有天意》、《借着雨点说爱你》。

今天看了孙艺珍演的韩国翻拍的新版 Be with you(2018),似乎是把《假如爱有天意》(孙艺珍主演)和《借着雨点说爱你》合二为一了。情感基调与日版类似,但感觉又有些不同,至少不会有东施效颦的感觉,值得一看。但有些原版的经典细节,比如妻子在雨季结束时消失的画面,表现得不如日版那么细腻,有些粗糙。这个版本是和可乐一起看的,可乐看到后半节哭得稀里哗啦的。

画面很美。

无酒无花 | 评论已关闭 | 3,169 次阅读
简短地址:http://ncblog.net/1424/