Inspire v2.3    @ 2018-12-01, 18:05

11月重新进入全时在家 soho 的状态后,Inspire 的开发成为日常。尤其下半月,忙活了半个月,完成了一次比较大的升级,而11月也就在不知不觉中这样过去了~

东日软件 | 1 个评论 | 167 次阅读
简短地址:http://ncblog.net/1541/
风吹仙袂飘飘举    @ 2018-11-23, 16:31

又是连续的阴雨后的一个好天气。最近写代码都基本上到三四点才睡,到中午才起,所以还是和老婆下午就近在新江湾城湿地旁走走。心中有从容,处处是风景。很喜欢自己现在的状态,和生活。

点滴随笔 | 2 个评论 | 211 次阅读
简短地址:http://ncblog.net/1527/
又可以临时起意了    @ 2018-11-13, 17:33

连着几天阴雨,今天出了太阳。本来中午在睡觉,为了对得起这天气,被老婆说动进城看看,于是就有了进城看看。

回归上海 | 没人评论 | 222 次阅读
简短地址:http://ncblog.net/1524/
大侠,请重新来过吧    @ 2018-11-06, 01:42

过了12点,就40周岁了。

去年此时,人在深圳,以顾问身份认识了一群优秀的年轻人,那是近一年来的工作重心的起点。彼时,我说四十不惑,是能越来越坦然面对所有的遗憾。在一年后的此刻,我说四十不惑,是之所以能越来越坦然面对所有的遗憾,是因为明白所有遗憾是对自己追求的和选择的,所必须付出的代价。

一直以来,我是一个兴趣驱动的人,事业上一直任性地做着自己喜欢和想做的事情,无论是大学毕业时选择金山毒霸,还是后来投身共享软件开发成为 micro ISV,还是后来连续地创业。兴趣驱动时,即使面对巨大压力,也会甘之如饴,反之则会感到无所适从与煎熬。

长颈说:我是想不明白,为什么赚钱一定要和爱好捆绑在一起。
我说:我也想不明白,为什么赚钱一定要和爱好分开。

我明白,这其实没有对错,只是每个人有不同的选择。是的,世人大多把赚钱与爱好分得很彻底,他们也未必不快乐,毕竟可能大多数人赚钱了就快乐了。可惜我知道了自己做不到。我明白他们,但他们不明白我,不明白兴趣驱动的人,对想做和喜欢做的事情的执着,竟然会超过赚钱的欲望。我不愿意融入这个世俗构筑的主流秩序——爱好是爱好,职业是职业。由此一直游离于主流秩序的边缘,但我很快乐,甚至感到自己是真实自由的。

在40周岁来临的时候,这个月开始,我选择回归自由,做自己喜欢做的事情——重新成为 micro ISV——已然梦回2005。是的,花了十年,饶了一大圈,终于还是决定回归最适合自己的生活和工作方式,和某新合伙人。

此时想对深圳的那群优秀的年轻人们说一声“感谢”,是你们让我知道我依然年轻,这一年有你们,真好,离开你们,不舍。

大侠,请重新来过吧”,这句曾频繁出现在20年前玩仙剑时的屏幕上的话,这句5年前表格给我留下的评论,正是现在我想对自己说的。毕竟,依然年轻。

点滴随笔 | 4 个评论 | 377 次阅读
简短地址:http://ncblog.net/1498/
Inspire v2    @ 2018-10-22, 02:06

这个周末基本完成了 Inspire v2 的开发和测试,新版支持以 Dropbox 之类的云存储服务作为媒介进行多 PC 之间的同步,并且高度优化了写作体验和性能(不再有卡顿)。

准备提交上线,很令人期待,由此要开启新一阶段的生活和工作了——月底将正式辞别年初入职的深圳朋友公司的 CTO 职位。

东日软件 | 2 个评论 | 360 次阅读
简短地址:http://ncblog.net/1495/
岁月静好    @ 2018-10-11, 22:03

感觉上,许久没有如春天时那样常常来小河边了,这两天降温了,真正的秋天来了。中午和老婆步行到小河边,非周末的中午,几乎没有人。坐在木椅上,耳边只有鸟啼风鸣,和枝叶摩擦的声响,仿佛世界都只属于我们。

回归上海 | 没人评论 | 327 次阅读
简短地址:http://ncblog.net/1494/
高中也没了    @ 2018-10-01, 23:50

我的小学、初中的学校,多年前就消失了,现在轮到我的高中了。我的高中(上海市同济中学)的体育馆,原是民国时期的旧上海市图书馆,现在身份还原,变身杨浦区图书馆。今天 10.1 正式开放,可乐和妈妈一起去看了,我并没有忍心去。照片中的这些景物,对我而言,是既熟悉又陌生的。熟悉的特别有感的,是那些曾经踢完球流着汗走过的地方。

回归上海 | 没人评论 | 419 次阅读
简短地址:http://ncblog.net/1491/
Google 20年    @ 2018-09-29, 14:16

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

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

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

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

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

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

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

点滴随笔 | 1 个评论 | 482 次阅读
简短地址: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 个评论 | 602 次阅读
简短地址: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/

时光隧道 | 评论已关闭 | 350 次阅读
简短地址:http://ncblog.net/1480/