分类 默认分类 下的文章

以防万一有人不记得(笑死,搞得跟真的有人看一样),本站第一个域名是esperz.tk

.tk域名暴雷一事,在2023年中就初见端倪。当时在某交流频道里看到有人说注册的.tk域名无缘无故被收回,当时我还在想这人肯定是拿域名做了什么,然后在跟大伙春秋笔法。然后下半年freenom的名声就开始不对劲了,说是因为域名滥用问题在跟ICANN扯皮,新域名都不让注册了。还好这个时候已经把本站域名的有效期延长到24年了,在freenom没倒之前先将就着用吧。

然而不出意外的话,也该出意外了。24年,也就是今年春节,在家里用自己域名测试网络的时候,突然发现打不开网站了。对,不是提示证书过期,直接找不到网站了;nslookup一查,一个大大的Non-existent domain直接拍在我脸上。在freenom上确认发现,域名变成了PENDING状态,不能再进行任何操作了。好嘛,这下我就知道freenom是真的摆烂,开始拿用户数据乱玩了。

然后就准备开始找下家,来到了经典的eu.org环节。一看,哦豁,也是23年底因为请求太多处理不过来,不让申请新域名了。至此,可靠的白嫖手段用尽,不得不进入花钱环节了。在TLD-List上逛了半天之后,最终还是选择向钱包屈服,搞了个长期的.top域名,也就是现在的esperz.top。依稀想起了数年前室友怂恿我搞个.top域名玩,哎,最终还是没能逃出真香定理。

涨价(应该是)不可能涨价的,希望.top域名不要轻易倒闭吧,不然到时候还要去加价买.cc一类的野鸡域名了QAQ

这一年中也没玩太多新花样,主要是花了不少精力把bustub的lab做完了,但因为没搞新域名就一直搁置了,有时间整理下把思路和心得拿出来分享下吧。

之前用CentOS,试图使用fftw-mpi的时候,报出了奇怪的符号symbol不存在的问题,稍加思索发现,居然是库版本不匹配的问题。自带的AppStream仓库有fftw,而fftw-mpi则没有,因而选择了使用第三方的OKey源来提供fftw-mpi

结果编译的时候还是出了问题(好像是openmpi的),选择自己手动编译安装fftw的依赖库。

然后注意到,在使用dnf安装fftw的时候,允许同时安装多精度的库版本,而自己编译的时候似乎没有看到类似的选项。翻查fftw的文档后发现,官方预想到了这种情况,提供了一条道路( http://www.fftw.org/fftw2_doc/fftw_6.html#SEC69 )。然而这个文档提供的是fftw2的编译教程,与现在使用的fftw3肯定是有差距的,例如里面的--enable-type-prefix选项就并不能用,configure会警告说是未定义的选项。

后来简单参考了一下configure自带的帮助内容,发现有一系列参数,叫--program-什么的,可以修改生成的目标库/头文件的命名,prefix就是加前缀,suffix就是加后缀。这里使用suffix实现和包管理器提供的相同效果,将双精度版本设置为默认的话,就直接configuremakemake install一把梭,其余版本则在声明精度之后,使用--program-suffix=修改文件名。比如编译float版本的时候,加入--enable-float的同时,添加--program-suffix=f,这样编译出来的库的名字是libfftw3f.so,就可以和原版的libfftw3.so相区别开来。

例如,命令行:

./configure --prefix=/usr/local/ --enable-shared --enable-mpi
./configure --prefix=/usr/local/ --enable-shared --enable-mpi --enable-float --program-suffix=f

可以编译出两个精度不同,但可以共存的、支持mpifftw库,第一个后续可以生成libfftw3.so(双精度版),第二个可以生成libfftw3f.so(单精度版)。

C4P持续更新中。

这次是看到转义字符列表里,对问号?也提供了转义序列\?,但是并没有解释其来由。当时就比较好奇,直接开了个源文件,试了一下,发现不论是printf还是cout,都直接正常地输出了问号字符。

后来在CSDN论坛上发现,有人也提出了相同的问题,下面的解答中提到了三字母词trigraphs这个概念。

以下介绍摘自中文wiki:

因为法国标准AFNOR NF Z 62010-1982把码位0x7c(ASCII码的 | )定义为ù,用法文键盘就难以输入C语言的位或运算符|;码位0x7e(ASCII码的~)定义为¨(即分音符),法文键盘就难以输入C语言的位非运算符~

加拿大法语标准CSA Z243.4-1985中把码位0x5e(ASCII码的^)在定义为É,导致难以输入C语言的异或运算符^

为解决上述的C语言源代码输入问题,C语言标准规定预处理器(C preprocessor)在扫描处理C语言源文件时,替换下述的3字符出现为1个字符:

三字符组 替换为
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~

不过现在,各国经济水平发达了,这种问题只需要通过在键盘上多加几个按键就能解决(纯属口胡,有误欢迎指正),所以现在的编译器默认都不会开启三字母词,输入??=的输出也还是??=,不过会给出如下提示:

warning: trigraph ??= ignored, use -trigraphs to enable [-Wtrigraphs]

亦即,想要开启三字母词的话,在编译命令加上-trigraphs即可。

今天突发奇想去Internet Archive搜了一下自己的网站,发现在过去的短短半个月内竟然被收录了(虽然似乎只有首页),而且还快照了六次。震惊。

也不知道这些网络爬虫用的是什么原理,建站一年多,网站链接在GitHub挂了有半年多都没被被收录,结果最近突然就收录了。

不胜荣幸.jpg

算是小小的庆祝一下吧,顺便看下这篇文章什么时候会被收录

(十年老站的第一步,任重而道远啊)