V2EX w568w
 w568w 最近的时间轴更新
w568w

w568w

V2EX 第 415660 号会员,加入于 2019-05-26 08:16:51 +08:00
今日活跃度排名 31
2 G 81 S 23 B
w568w 最近回复了
一直觉得手机护眼是个伪需求。

看了一下 OP 之前的帖子,主要是要阅读吧。为什么不直接买墨水屏的电纸书或手机呢?
(我主要写 C ,没写过 C++,所以下面一部分说法可能不准确。)

这个问题其实有系统级和语言级的两层,一是 Linux 对 C/C++ 依赖的管理没有明确的定义,各个发行版自立山头;二是 C/C++ 的包管理本身确实很乱。

1. 对于前者,可以认为在依赖管理这件事上,Linux 没有规定什么做法是标准的,所以「每个系的发行版都是完全独立的体系」,不应该像 Windows 7/8/10/11 那样当成同一血脉的系统来看待。

尽管大家可以找出一些最大公约数(比如大多遵循 FHS 、使用 pkg-config 和 gcc ),但在实现上会有非常多细微的差别。大部分差别在开发过程中可以消解掉(例如使用 CMake 的 find_library/package 过程)但不是全部,而在打包和分发过程中则完全需要各个区别对待(比如 Debian 系、Gentoo 系和 Redhat 系,在分割软件包的粒度和指定依赖的方式上,做法都完全不同)。

此外,Linux 本身又是极度依赖 source-driven 的,需要时刻考虑用户利用现有环境进行开发的可能性。这就是为什么 Linux 下很难有 vcpkg 这样一个独立的、和系统无关的 C/C++ 包管理器。或者说即使有了,也不会好用,因为你最终还是要为每个发行版、编译器和依赖组合付出额外的成本去适配。

2. 对于后者,你的例子其实就是很好的典型。「通过 pacman 下载的 boost 似乎没有提供 .pc 文件」,是因为 boost 这个库本身只提供了 CMake 模块。你用 pacman -Ql boost 就能看到,boost 提供的是 /usr/lib/cmake/Boost-xxx/BoostConfig.cmake 配置文件,而不是 pkg-config 文件。

这种四世同堂的局面很多,不是每个包都会提供 pkg-config 来兜底(从功能性上来说,CMake Modules 无疑是更先进的)。这其实也是生态碎片化的体现:开发中的选择一旦多起来,开源作者都会习惯性选择自己最习惯的,而不是兼容性最好的。你问「有没有办法用统一的方式导入」,其实就和前端问「有没有办法在我的 React 项目里导入其他 UI 框架的控件」是一样的。当然这边的问题至少理论上是 solvable 的。

----


所以我能给的建议是什么呢?

1. 如果你专为某个发行版开发程序:完全本土化。使用那个发行版和系统包管理器,完全遵循那个发行版的逻辑。系统提供什么就使用什么方式引入;

2. 如果你为所有发行版开发程序:防御性编程,减少假设。同上,但是尽可能不要依赖某些假设(例如「一定有 pkg-config 」)。CMake 的 https://cmake.org/cmake/help/latest/guide/using-dependencies/index.html 介绍了通用的建议,主要是 尽可能使用 find_package 来引入依赖、使用 FetchContent 来从源码编译依赖 及 不要使用 FindPkgConfig 。
纯境内或境外的部分,你怎么折腾都可以。关键是从境内到境外这一步。你用 OpenVPN 、Tailscale 这些常规的、不专为反审查设计的协议,多半是秒封禁的。

目前反审查能力比较强的协议主要是

1. VLESS (内层代理协议)+ REALITY (将 TLS 握手特征伪装成可信网站)+ Vision-XTLS (消除 TLS-in-TLS 特征)
2. VLESS + REALITY + XHTTP (传输协议,将流量上下行分离,包装成 HTTP 上传下载请求)
3. NaveProxy (直接使用 Chromium 的网络栈来消除指纹特征)

我自己一直用的是 VLESS + REALITY + Vision-XTLS ,没有任何中转,直通境外。已经两年了,依然没有受到封禁或审查。

不过这几种协议都比较小众,目前只有 sing-box 、mihomo 以及各自的自家代理客户端支持。我没用过 Surge 不是很清楚是否能用。除此之外还有一个备选项 Trojan ,大概相当于以上协议的简化版,抗审查能力弱一些,但客户端兼容性更强
3 天前
回复了 qdwang 创建的主题 游戏 请问一下欧卡 2 玩家
欧卡 2 基本是按照真实存在的高速公路路网来建造的。考虑到工作量和游玩体验,城市内部和高速公路应该分别是按照 1:4 (我忘记具体数字了)和 1:15 的比例来设计的。也就是说游戏里高速上开一公里 = 现实中 15 公里。

城市内部简化的多少取决于这个城市的地位和开发商加入区域的时间。

如果城市不太重要(不是首都/重要物流枢纽……),一般就会做得很简陋,甚至有些地方的「城市」会变成只有一两条路的村庄;但各国的首府通常规模会更大,大概相当于现实中一般城镇的大小(肯定不可能做到真实城市那么大)。

另外就是开发商的建模水平也是逐年提升,大体来说越新发布的区域,建模精细度就越高。免费(无 DLC )开放的区域,像是英国,做得最早,还原度也是最烂,能别去就别去。

欧卡 2 主要还是处于给玩家带来一些熟悉感的程度,比如一些重要的城市地标建筑或大型商业中心都会做建模,至少能让你认出这是哪个城市的水平。
4 天前
回复了 ysyah2019 创建的主题 程序员 第一次开源,欢迎大家指正。
不错。但图片占位符有更好的方案: https://github.com/woltapp/blurhash
span class="fade" title="2025-11-20 15:43:57 +08:00">4 天前
回复了 moment082 创建的主题 程序员 Prisma 7 重磅发布:告别 Rust,拥抱 TypeScript,性能提升 3 倍
看了下博客,放弃 Rust 主要是下面几个原因:

1. 任何原生语言(包括 Rust 、C 和 C++)和 Node.js 交互都需要在介面处频繁做序列化/反序列化。在大量数据 I/O 的情况下,多花费的额外时间几乎抵消了原生语言带来的性能增益;

2. 需要维护两套代码,更难吸引外部贡献者、编译工具链更复杂、Debug 定位问题原因更麻烦,且部署也要携带原生二进制,对不同 npm-like 的包管理器( pnpm ,yarn ,bun ,deno……)都需要单独做兼容;

3. I/O 密集的场景,TypeScript 这种有第一方异步运行时支持的语言,反而比 Rust 更有吞吐量优势。

另外「性能提升 3.4x 」的说法,基本可以完全归因于移除了 序列化/反序列化 过程。
另外,看你的写入量也不大,多半是硬盘本身的问题。有质保的话尽快找售后吧
> 网上查到的说由于磁盘上的重要媒体文件发生错误所以自检失败,我想知道是否和我在安装过程中直接对整个硬盘进行分区的操作有关(在分区后有按照教程进行格式化,之前是在磁盘有几百 G 数据的情况下直接分区的)?
> 是否也是和磁盘分区操作有关?

应该没关系,这个问题大多是固件或硬件问题。

> Media and Data Integrity Errors 38228 这个数值是否异常

异常。这个数字只要大于 0 ,就应该视为硬盘报废了。几万非常严重了。建议立刻停止使用、备份重要数据,然后找售后
"dependencies": {
"jsnes": "^1.2.1",
...

老哥,这叫直接调库
@jhdxr 没找到回复的对象,才发现早就 block 了。

用不着和这人犯气,纯口嗨的,有 Rust 关键词出现的帖子必来踩一脚,辩不过就玩消失,下个贴子继续骂

关键是骂的有道理( Rust 黑点不少)也就罢了,每次还都是一句话也说不到点上,句句都是南辕北辙的爆典,屁股代替大脑,键盘代替思考了属于是
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     872 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 26ms UTC 21:00 PVG 05:00 LAX 13:00 JFK 16:00
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86