2022年已过去 74.7%
新文件服务器(NAS)    @ 2022-07-17, 19:28

台机更新升级完成后,文件服务器成了家里唯一“大个头”的机器了。前两年一直想把它换成群晖之类的成品 NAS,但群晖的四盘或者更多盘的 NAS 价格实在没什么性价比,配置又差强人意,实在下不去手。nate 去年淘汰了一个群晖的 DS216se 给我,放了两块盘做了一个同步盘,取代 Dropbox,但取代不了文件服务器。这次趁着这股折腾劲,决定把闲置的一个旧 ITX 小板和一块第三代 i3 做一个新的小型化的文件服务器。

淘宝上 Tank 家的 NAS 机箱,在去年年初做第一批货的时候,我就看上并下单预定了的。但由于时间太久又担心第一批货不成熟,又对 1U 电源稍微有点抗拒,所以后来取消了。这次在机箱选择上,最后仍然选择了 Tank 家的,因为支持热插拔六盘位,而且这次可以选配海韵的 1U 电源,据说挺安静的。

机箱到手后,颜值确实很高(虽然很多人说有点像微波炉),现在似乎也到了量产成熟阶段,做工很精致。

把主板、CPU 塞进去后,硬件部分就完成了。

把原先的文件服务器(技嘉主板)的硬盘拆下,塞进新的机器(华擎主板),启动系统,然后 Kernel Panic 了。

2010年从 Gentoo 入门开始玩 Linux,随着云服务器的使用越来越多,接触 Gentoo 越来越少。至今好像只有 Linode 还提供 Gentoo,其它的云服务商几乎已经见不到 Gentoo。唯独我的文件服务器,一直坚持 Gentoo,即使 Gentoo 时不时总会带来一些麻烦,比如升级依赖包冲突。而这个 Gentoo 的内核,也一直是祖传的,自己根据硬件编译的,每次硬件升级,都可能需要重新编译内核。

可能年纪确实大了,实在懒得再折腾编译内核了,直接把系统换成了 Ubuntu Server,这次算是彻底告别 Gentoo 了。

相比群晖等成品 NAS,自己装的机器系统虽然多少需要折腾一些,但自由度高得多,性能、配置也高得多。群晖 2G 内存就算高端机了,自己装的至少 16G 起吧,何况 CPU 的选择,对于偶尔需要跑一些脚本(自己额外)的需求来说,也很重要。

好了,“数据中心”搞定。

软硬兼施 | 没人评论 | 551 次阅读
简短地址:http://ncblog.net/1940/
换新机    @ 2022-07-13, 13:51

最初,说封控四天,于是也就没有把公司的 Windows 笔记本带回家。后来封控的两个月中,在 Windows 平台的开发工作,都只能在自家的 2011年配置的 i7-2600K 电脑和 1080P 显示器上完成。

封控结束后,萌发了换显示器的念头,下手了一台 LG 最新的 27GP95R 的 4K 高刷显示器。这台显示器购买过程也是一波三折,前后都因质量问题(或有黑点,或有划痕,或有蓝线)换了三次货,直到第四台才换到一台完美屏。这个型号良品率看起来很低,幸好是京东自营,换货除了费点时间,其它也没什么。

换了显示器之后,老电脑的显卡(9750)的 DP 口是1.2的,显示器刷新率只能达到60Hz,不能跑满144Hz。于是更新主机的需求也就浮出水面,毕竟也是11年前的机器了,确实该换代了。

换机过程起始于机箱,分形工艺 ERA(蓝色)机箱其实在我购物车里躺了近两年了,垂涎已久。既然要换新机,选型首先确定的就是这个机箱。7月4日在闲鱼上半价淘到一个,成色非常好。后续就把CPU/主板/内存/SSD/电源一一配齐,分享个清单:

  • 机箱(分形工艺 ERA ITX)
  • 主板+CPU(ROG B660-I / i5-12600K)
  • 内存(三星DDR5 4800 16Gx2)
  • SSD(三星 970 EVO Plus 1T)
  • 水冷(利民 Frozen Magic 240 冰封幻境)
  • 电源(Tt 钢影 Toughpower SFX 450)

装完后的样子:

内部走线按高标准来说,只能说一般般,没有扎带什么的。不过,盖上盖子,依然是个美丽成品:

看我折腾新机的朋友中,总会有人问,为啥不搞个 Mac?这其实是很奇怪的问题,我只能回答“不喜欢”。这些年的氛围和主流意见似乎是,所有程序员都应该喜欢 Mac。我不喜欢 Mac,我不喜欢所谓的苹果生态。我的一些“果粉”朋友其实有时候也会有意无意透露出,自己被 iCloud“绑架”了,这就是生态吧。

我自己,只有在开发 Mac/iOS 应用时,不得已才会使用 Mac 系统,以及 Xcode(顺便提一句,Xcode 作为一款优秀的 IDE,我是喜欢的)。平时,尽量还是在 Windows 10上,虽然现在的 Windows 也远谈不上多好。

软硬兼施 | 1 个评论 | 1,200 次阅读
简短地址:http://ncblog.net/1932/
关闭微信广告的方法    @ 2019-08-04, 19:39

1、访问 https://privacy.qq.com/advertisement.htm

2、点击页面上的“管理”:

3、点击微信登录并扫码登录:

4、关闭相应广告选项:

5、如你所看见,只能关闭六个月,六个月后需要再来一次。

软硬兼施 | 2 个评论 | 3,266 次阅读
简短地址:http://ncblog.net/1718/
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 个评论 | 3,980 次阅读
简短地址:http://ncblog.net/1483/
我的静电容键盘折腾史    @ 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 个评论 | 4,350 次阅读
简短地址:http://ncblog.net/1468/
Visual Studio Code    @ 2018-07-29, 02:03

6月底在深圳时,由于主要工作平台成了 Macbook Pro,而 Lazarus 在 Mac 平台上几乎不可用,于是写 Pascal 代码时就不得不用其他编辑器取代。之前用的 Atom 已经实在臃肿不堪,越来越无法忍受,于是放弃了 Atom 转投了 Visual Studio Code。

配置完 vsc 后,对比之下,Atom 实在差太多了。不说运行速度与轻巧的感受,单单扩展插件的丰富与完善程度,就值回票价。尤其在对 Pascal 语言的支持上,OmniPascal 扩展支持自动完成、声明跳转、语法着色等基本功能,还能直接调用 Free Pascal 编译器编译,对不涉及 GUI 的代码,写起来毫无阻力。Numbered Bookmarks 扩展更是让我在 Delphi 之外唯一能找回 Ctrl+数字 来为代码做书签快速跳转的功能。由此,我在 Mac 上也能愉快地编写 Pascal 代码了。

软硬兼施 | 评论已关闭 | 3,464 次阅读
简短地址:http://ncblog.net/1416/
坏了一块硬盘    @ 2018-04-25, 23:44

从细选网时代至今,工作了整整六年的一块硬盘挂了,于是工作室墙上多了一个挂饰。

软硬兼施 | 评论已关闭 | 2,959 次阅读
简短地址:http://ncblog.net/1380/
GitLab(社区版)    @ 2016-07-23, 17:51

陆陆续续折腾了一周,终于把 GitLab 部署完善并且用于改善公司内部开发流程管理了。

GitLab (社区版)本质上就是一个可供自行 host 的 GitHub 的克隆,将项目的人员权限管理/需求管理/bug 管理/开发分支管理/里程碑管理/自动化测试、build/项目wiki 全部集成。很爽,基本复刻了 90% 以上的 GitHub。适合不想在 GitHub 花钱托管私有项目或者希望自行 host 代码库的中小团队,而且社区活跃,开发进展速度极快,强烈推荐。

软硬兼施 | 评论已关闭 | 5,221 次阅读
简短地址:http://ncblog.net/1227/
phpRedisAdmin    @ 2013-08-01, 09:14

自从使用redis以来,一直在试图寻找一个redis的数据浏览工具,使用redis-cli命令行方式毕竟不够方便以及直观。

前阵子找到一个(貌似也是目前我能找到的唯一一个)基于web的redis数据浏览工具 phpRedisAdmin

给工作学习带来了极大方便,我和我的小伙伴们都惊呼了。

软硬兼施 | 评论已关闭 | 7,030 次阅读
简短地址:http://ncblog.net/1092/
不要再碰virtualbox    @ 2013-06-04, 23:18

又浪费了一晚上时间。以后不要再尝试virtualbox! :evil:

软硬兼施 | 3 个评论 | 13,640 次阅读
简短地址:http://ncblog.net/1085/