Sucha's Blog ~ Welcome

22年8月2日 周二 22:23

买了个 4K 显示器

前一阵子买了一个 4K 显示器,之前的 1080P 是用了快 10 年 DELL。

国产的友达屏幕,27 寸,1300 尼特,支持 HDR400,价格嘛,某东活动,不到 1.3K,香得很。黑苹果上面可以配置为高动态范围, 显示器这边把 HDR 打开,然后用 DP1.2 的线,能支持到 10bit 的色深。

话说 4K 的显示效果要比 1080 好太多了,之前在黑苹果上面字体模糊的,现在字体显示很锐利,还有之前保存了不少 1080 视频的, 在新屏幕上面看,效果打折了哈哈。

另外对比了 V 站的电影(1080 SDR 吧,大部分是这个),以及 B 站的 1080 高码率,B 站的好太多了,反正没有那种动作稍微快一点就 果冻的感觉,另外 B 站在 Chrome 上面能够打开 4K,效果也能感觉比 1080 高码率还要好。

在 Mac 的 Safari 上面,B 站的视频可以支持到 8K,不过 8K 的源太少了,我是没有感觉出来跟 4K 的差异,对比之下,4K 和 1080 差异还挺大的,当然 1080 高码率会好一些。

我尝试下载一些 4K 的视频,太大了,一部电影十几 G 收不住。如果是 1080 高码率的话,大概几个 G 吧,2、3 个小时的也就 5、6 G,对于我是能够接受的,然后分辨率在这个屏幕上面,感觉也很好。

另外也能看出苹果原生的播放器,跟 VLC 的差异,哈哈哈,就是这么神奇。

就像一位同学说的,只怪自己上 4K 显示屏太晚了,4K 太香了。

22年7月17日 周日 11:44

修改 SeedDMS 镜像上传文档大小限制

这里主要涉及到修改容器内部文件,以及将其保存为一个本地的修改镜像。另外,baidu 可以知道,SeedDMS 对于上传文档的限制,需要修改 php.ini。

我们先去容器看下文件具体在哪里:

$ docker exec -it seeddms /bin/bash
root@c31cfcd7168f:/# cd /
root@c31cfcd7168f:/# find . -name "php.ini"
./usr/local/etc/php/php.ini
root@c31cfcd7168f:/# exit
$ docker cp seeddms:/usr/local/etc/php/php.ini  php.ini

然后还是 baidu,看下需要修改 php.ini 的哪些配置:

对于手头的这个镜像,只需要修改后面 3 个就好了

然后将其拷贝回容器,并保存这个修改后的容器为镜像

$ docker cp php.ini seeddms:/usr/local/etc/php/php.ini
$ docker commit seeddms my_seeddms

停止之前的容器,使用新的镜像运行

$ docker stop seeddms
$ docker rm seeddms
$ docker run --name seeddms \
-d \
--restart=always \
-v /HOST/data:/var/www/seeddms/data \
-v /HOST/conf:/var/www/seeddms/conf \
-v /HOST/ext:/var/www/seeddms/www/ext \
-p 80:80 my_seeddms

这样就行了。

22年7月16日 周六 16:31

配置 SeedDMS

先说一个悲伤的故事,之前在百度网盘上面存了不少书籍,包括技术书籍以及小说等等,然后是用 QQ 账号登陆的,后来不记得是登陆后要绑定手机号还是干嘛,绑定完了之后,好多书都不见了!

也许我之前的手机号注册过了吧,然后导致账号合并了之类的,真的搞不懂。当时我是非常后悔没有做备份,因为之前网盘有做活动,永久 2T,怪不得 2T 永远用不完!

就想着搞一个文档管理系统,比如这篇文章介绍的

因为是个人使用,运行在类似 NAS 一样的小机器上,可以的话,就不需要跑起来类似 MySQL 或者 PostgreSQL 这样的 DB 了。实话说,是真的用不上牛刀。

于是试了一下 SeedDMS,PHP 搭建的,可以只用 SQLite。

后来才发现,我这一个前端开发,搞不懂 PHP 的安装,apache/nginx/openresty 难不倒我,但是 php 的安装难倒我了,你说有个 index.php 可是先要运行起来才能安装,但网站可不是那么简单就能运行的,先搞懂 pear 目录,简写意思是 PHP Extension Application Repository,然后呢,请使用 Composer,谢谢~

我这的魔怔了,无比怀念 go build 可以指定导出不同平台的 binary,然后配置问题不就是 YAML 或者 JSON 搞定,再说,我如果没有提供配置文件,就不能使用 default config running 吗,笑了。

于是就回到了其他的路子上,不再考虑自己源码安装了。试了几个 github 上别人提供的 docker 镜像,最后选了eraelpeha/docker-seeddms

$ docker pull eraelpeha/seeddms
$ docker run --name seeddms -p 8080:80 eraelpeha/seeddms

浏览器访问一下服务端的 8080 端口,应该可以看到提示了,然后就可以通过 8080/install 安装了。

因为后续网站配置,文档啥的还是要保存在 docker 容器之外的目录,所以先 docker cp 容器里面的配置文件出来,待会再挂载本地 volume 上去:

$ docker cp seeddms:/var/www/seeddms/data /HOST/data
$ docker cp seeddms:/var/www/seeddms/conf /HOST/conf
$ docker cp seeddms:/var/www/seeddms/www/ext /HOST/ext
$ chmod -R 777 /HOST/data /HOST/conf /HOST/ext

上面也将 data 目录配置到外面了。

使用 docker ps -a 查看运行的 image,stop 后,rm 掉,再运行一下看看,这里配置为启动 background 加载了,然后设置为 80 端口

$ docker run --name seeddms \
-d \
--restart=always \
-v /HOST/data:/var/www/seeddms/data \
-v /HOST/conf:/var/www/seeddms/conf \
-v /HOST/ext:/var/www/seeddms/www/ext \
-p 80:80 eraelpeha/seeddms

最后,设置 docker 开机启动吧

$ systemctl start docker

重启后,发现文档服务起来了,之前的设置也都还有效,这样就配置完了。

搞了一个下午,就感觉 php 太坑了,跟 go 的起步差了十万八千里。

22年6月26日 周日 15:02

MoocHelper 更新到 0.2.16

昨天说到 LuaHelper 已经更新到了 0.2.16,今天我也同步将 MoocHelper 更新上去了,主要的改动有

例子是

local foo = {}

function foo:test()
    local foo = {}
    self:bar()
end

function foo:bar()
end

之前当 hover 到 test() 函数中的 self:bar() 时,self 其实指向的是函数内的 local variable foo,而实际 Lua 语义是指向运行当前 function 的 table,毕竟 self 是作为当前 function 第一个参数传递进来的。

moocscript 的处理还特别一点,因为其 class/struct 是通过拼凑 AssignStat 来实现的,这种 : 函数在 class/struct 里面其实是实例函数,语法跟 Lua 不一样,没有 table name 前缀,得特别处理一下。

这里的特别处理是,需要在当前 AST 的位置,一直寻找 parent scope 到最近的 class scope,如果存在,拿到外层 local variable map 的同名变量定义(如上面例子的 foo),将变量定义的 Loc 作为 self 的 varStruct 描述,后面这个 Loc 的逻辑跟 Lua 侧是一样的。

大概这样吧。

22年6月25日 周六 22:30

MoocHelper 更新到 0.2.15

这个其实也是 5 月份的事情,之前也说过,因为一直都有用 MoonCake,自然就少不了 LSP 的支持。

这次是同步了 LuaHelper 的更新,自己这边添加了另外一些功能,比如对于非工程路径的支持, hover 到 require 库时,可以寻找过去,另外就是函数内部的 local 变量,我是默认不展示在 outline 的,我觉得这些变量太烦了。

另外刚看到 upstream 已经到了 0.2.16 了,等我后面有空再同步一下吧。

22年6月25日 周六 21:15

新台式电脑

上个月买了新的台式电脑,用了一个多月后,感觉还行吧。当时换台式机想了挺久,主要是之前那台 i5 一直停留在 10.12 升不了系统, 也用了好多年了,考虑再三,还是先换了吧。

之前还犹豫要不要买 Apple Silicon M1 的,因为工作中用的就是 M1,所以也算了解。最大 16G 的内存是软肋,即便是工作, 勉勉强强够吧,CPU 倒是还不错,这一两年都足够了其实,GPU 不参与评测。不过如果配上 512G 的 SSD,价格就很不香了。

还有因为平时绝大部分时间用的是 M1,真的不大想下班再用 M1 了,也是一个因素。

于是搞了一台黑苹果,CPU 用了 i7-12700,GPU 是基本入门款,因为平时极少玩游戏,反而内存直接到了 64G。规格上去之后, 机箱体积也小不了,虽然还是 Mini-ITX,还挺重的。

各种原因,显示屏还是 1080P 的,已经用了有 8 年了,因为租住的地方比较小,如果换成 27 寸 4K,感觉塞不下(真的有点挤), 而 M1 对 2K 屏幕支持很弱,我试过即便用了 GitHub 上的 HiDPI 脚本,还是不尽如人意,要上就只能上 4K,所以不如先不换。

直接上 64G 内存的原因,是之前编译一些稍微大一点的 Swift 工程,加上开了其他浏览器什么的之后,感觉内存都快满了情况, 所以不如一步到位 64G 了。

现在的感觉,性能毫无疑问是过剩的,结论我现在确实只是个参数党。

22年5月14日 周日 23:49

cmark-gfm 静态链接

默认情况下,cmark-gfm 是通过 cmake 编译为动态库的方式,但其实可以通过设置

$ cmake -DCMARK_SHARED=OFF ../
$ make

配置为静态链接,少一个依赖,如果能修改一下再链接到 musl libc,那就更进一步,不受限于系统版本了哈哈。

不过即便使用系统的 libc,也已经很不错了,毕竟也是向后兼容的,不担心未来的使用

$ otool -L src/cmark-gfm
src/cmark-gfm:
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)

如果是动态链接的话,会是下面这样

$ otool -L src/cmark-gfm
src/cmark-gfm:
	@rpath/libcmark-gfm-extensions.0.29.0.gfm.3.dylib (compatibility version 0.29.0, current version 0.29.0)
	@rpath/libcmark-gfm.0.29.0.gfm.3.dylib (compatibility version 0.29.0, current version 0.29.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)

编译后当然不会放到系统目录,而是随便丢到一个 PATH 能访问到的目录下用就好了。

22年5月14日 周日 21:16

倾我所有去生活

前一段时间在多抓鱼上买了这本二手书,之所以买,是因为一篇豆瓣上的文章《没有什么必须要说》1,作者苏美。

短篇记载的是一位女儿父亲的一生,从荣耀到低沉,从生机勃勃到病患缠身黯然神伤,这篇短篇的另外一条线是女儿跟父亲的关系,她们的关系算是父亲境遇的反映。

父亲年轻时是一位帕米尔高原的边防战士,在一片白茫茫的雪海里面恪尽职守,直来直往,追雪兔、打雪狼,莽莽撞撞,不言轻伤。直来直往的性格,也体现在跟女儿的关系上面。父亲威严,不允许孩子反驳,女儿为此挨了不少耳光。

画风一转。

可这又有什么用呢,父亲退伍转业,突然患病后身体状况急转而下,为了救命,不得不躺在手术台上,身体被医生划开,插满了管子,任人摆布。

冰天雪地上顶天立地的男儿不在,只剩下无法自理,得依靠儿女度过难关的一位凄惨病人,当时父亲才 49 岁。

父亲状态转好,但在更为复杂、广大的社会丛林里里的小角色,随时间流逝,生计慢慢成了问题,不得不依靠一些之前的狐朋狗友接济。

这位狐朋狗友丢给了父亲一份差事,表面上是管个小公司,实际上是帮摆平这位前辈的一个二奶,二奶啥都不懂,公司帐很乱。

女儿看到父亲这般情景,是恨不得给父亲这位朋友一个耳光。可这位朋友也算是女儿从小就认识的长辈,只能作罢。

故事从高光开局,进入接近死亡的威胁,身体转好的递进,来到社会丛林复杂关系的碾压,然后进入了尾声。

父亲年迈,在厨房里面为儿辈准备晚餐,唠唠叨叨,完全融入了家庭生活。

[1] 被删帖了,禁止网站 JS 能看到

22年5月8日 周日 23:16

Parallels 和 VirtualBox

cincau 开发了一个小站点,而 cincau 是支持使用定制的 luastatic 打包的,目标系统是 Linux。因为容器什么的我还不熟悉,所以其实最终拿到的是 luajit 包含了所有脚本 C 数据 + 一堆 shared library,tar 到一起的结果。

像上面说的,因为没搞容器,所以还是需要通过虚拟机上的 Linux 系统生成目标二进制,之前在 Mac 上我用的是 Parallels,也挺方便的,但是 Parallels 贵啊,非正规的也不好搞,这次新机器上的 Parallels 好不容易安装好了,结果网络怎么都用不了,我是相当郁闷,花了几个小时还搞不定,但是又确实不想花钱升级了。

于是试了一下 VirtualBox,发现同样一个版本,低至 10.12 的 Mac 也能安装,新 Mac 系统上面创建的虚拟机文件,拷贝过来后,直接用,不能更开心。

感觉不需要什么特别的配置,直接用就行,早知道我早早地使用 VirtualBox 好了,毕竟不是使用 Windows,对于虚拟化性能、3D、2D 什么我是一点都不在乎的,现在身边已经没有 Windows 机器了。

22年5月4日 周三 23:28

罗浮山一日游

3 号 7 点的时候,太阳已经把深圳晒得金黄,五一开头的冷雨天气正式结束,然后气温紧接着就上来了。我是计划好了去罗浮山,早买了票。

一路还挺顺利的,老地方惠州北站转华侨中学,为了吃到肠粉早餐,走了 3 站公交,然后上 268 到了罗浮山。

人巨多,门票相比之前便宜了,只要 ¥27,不知道是不是因为放假的原因。还有缆车升级了,之前一个筐 2 个人,全开放的结构,景观不能更好,就是有点危险,要脚踩加手扶着前面弹性的顶架,要不顶架会自动上翻,这种情况不敢想。拿着手机、相机拍照也得很小心,如果掉下去,要找回来估计难,没法刻缆求剑。

记得当时第一次坐这种缆车,看着树尖在脚底下过,风在耳边呼呼地吹,心跳有点快。

现在变全封闭的车厢了,挤满可以坐 8 个人,但一般只进去 6 个。运量是之前的 3 倍,然后周转速度也快了很多,排队也不焦躁了。不过单程贵了 10 块,双程现在上到 120 了。

人好多呀,几乎是排队上山,好多狭窄的小径,都要挤着才能过去。即便到了飞云顶,人一样多。山顶的小土堆、石头堆不见了,成了一个大土堆,之前石头堆上插着的五星红旗也不见了。

我是觉得罗浮山的山体好美,远看就像是拔地而起,山脉轮廓非常清晰。如果从山顶看,几个山脊各种曲线蜿蜒向下,墨绿色铺满了整座山,爱了爱了。

爬山中间有路过瀑布,景点叫分水坳,也许是刚停雨的原因吧,水流很大,哗哗地。旁边有卖甘蔗的,也不贵,6 块钱,我后悔只搞了一根,一边嚼着,一边看瀑布,吃完还可以洗个手冰凉一下。可惜下山路过的时候,发现卖完了。

晚上仍然是 268 到博罗后,转 L1A、L1B 到惠州市区。晚饭就在街边的推车小吃上,搞了牛肉杂碎煮物,还要了个煎饼果子。不过牛肉真的一般,我觉得太硬了,味道勉勉强强。

第二早又搞了一波肠粉,反正就是觉得比深圳的好吃,然后原路高铁返深了,排队核酸搞了快 20 分钟才出站。

22年4月5日 周六 01:28

改进侧边栏搜索

UI 交互没变化,也是方便之后如果想从站点、博客搜索内容的话,会方便一些,不过自己测试了一下,很多内容搜索不到,应该是小站点,搜索引擎照顾不了。

没名气的静态网页就这样的了,😌