2024年已过去 57%
AI 视频    @ 2024-06-18, 19:08

去年用 AI 画的小美女,今天能开口了,真正能做到“开局一张图”了。

(by Luma)

软硬兼施 | 没人评论 | 332 次阅读
简短地址:http://ncblog.net/2177/
4090 直出 1024×1024 大片    @ 2023-07-24, 16:10

换上 4090,果然出大片几率大增,1024×1024直出(无hires.fix,无upscale)

软硬兼施 | 评论已关闭 | 1,847 次阅读
简短地址:http://ncblog.net/2027/
研究 Stable Diffusion 的第二阶段性成果    @ 2023-03-11, 15:04

软硬兼施 | 评论已关闭 | 1,790 次阅读
简短地址:http://ncblog.net/1974/
Effie 本菲    @ 2023-03-04, 21:44

感觉用 Stable Diffusion 捏出了 Effie 本菲。

软硬兼施 | 评论已关闭 | 1,687 次阅读
简短地址:http://ncblog.net/1971/
天开始暖了,皮衣可以脱了    @ 2023-03-02, 23:00

继续研究 Stable Diffusion(有人说,这件皮衣是黄仁勋的 ?,那就脱了吧)

软硬兼施 | 评论已关闭 | 1,495 次阅读
简短地址:http://ncblog.net/1969/
研究 Stable Diffusion 的第一阶段性成果    @ 2023-02-28, 19:51

软硬兼施 | 评论已关闭 | 1,585 次阅读
简短地址:http://ncblog.net/1966/
新文件服务器(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 的选择,对于偶尔需要跑一些脚本(自己额外)的需求来说,也很重要。

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

软硬兼施 | 评论已关闭 | 2,287 次阅读
简短地址: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 个评论 | 3,492 次阅读
简短地址:http://ncblog.net/1932/
关闭微信广告的方法    @ 2019-08-04, 19:39

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

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

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

4、关闭相应广告选项:

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

软硬兼施 | 2 个评论 | 4,182 次阅读
简短地址: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 个评论 | 5,137 次阅读
简短地址:http://ncblog.net/1483/