V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Jirajine  ›  全部回复第 72 页 / 共 213 页
回复总数  4259
1 ... 68  69  70  71  72  73  74  75  76  77 ... 213  
2022-09-07 21:46:37 +08:00
回复了 Al0rid4l 创建的主题 分享创造 [Tampermonkey] 受隔壁帖子启发, 整了一个油猴脚本
“没有黑暗的地方” 是指灯火通明的审讯室吗?😅
2022-09-07 21:16:38 +08:00
回复了 fantasticlw 创建的主题 问与答 如何入门学习财经知识。
@ruxuan1306 不知道你描述的观点是你自己的推论还是源于你推荐的教材,人文社科也是科学,如果教材里面充斥着大量应该( should )这种代表主观观点的论断,建议直接扔进垃圾桶。
2022-09-07 14:19:33 +08:00
回复了 kaiki 创建的主题 分享创造 ♿说的道理♿ 人人都可以用的古神语翻译器
@kaiki 这样啊,不过这个名字和形式,应该也和克系衍生有点关系吧。没有批判的意思,只是看到 古神语 这个词,想到的另一种符合设定的形式而已。
2022-09-07 13:55:01 +08:00
回复了 kaiki 创建的主题 分享创造 ♿说的道理♿ 人人都可以用的古神语翻译器
@learningman 怎么尴尬了,完全符合 cthulhu 衍生文化中 正常人(三观正确的人)看到后 san 值狂掉、公开场合提及会遭来灾祸(封号喝茶)的设定,总不能只允许你们一种理解吧,我造个心梗不行吗。
因为 IM 不便监管的特性,微信是不允许有竞争的。不同于各种公开的社交网站,审查跟不上可以直接约谈。而 IM 这种私下的信息传播渠道,两人私聊只要没人举报监管部门根本没法发现和监管,从而服务商也就没有动力去投入更多的成本进行审查。
2022-09-07 12:41:04 +08:00
回复了 kaiki 创建的主题 分享创造 ♿说的道理♿ 人人都可以用的古神语翻译器
这算个毛的古神语,古神语应该至少要有不可名状不可提及的特性吧,建议把敏感词列表和伟大领袖及其亲属的名字等作为编码字符集。
2022-09-06 23:17:15 +08:00
回复了 LnTrx 创建的主题 宽带症候群 IPv6 环境下一机多 IP 玩法的讨论
@cnbatch 你还想要多自动,写个 launcher 脚本,然后修改你想要的程序的服务文件 /快捷方式 把启动命令用 launcher 脚本包装一下不就完了。
@aloxaf 屎上雕花 这个形容太贴切了。bash 确实比 zsh 简单不少,但特性也不少(当然是必要的),不同的是 bash 是在 POSIX sh 上雕花,而 zsh 是同时在 POSIX sh 、bash 、ksh 上雕花。可能因为使用 bash glob 的时候还得同时考虑怎么 quoting 、是否含空格,我才感觉它复杂吧。
@wxf666 shell 的 变量 expansion 可以说是最糟糕的设计之一,一个变量的值,与如何引用它有关。而 IFS 就是控制如何引用变量的方式,所以非常易错。每当你引用含空格字符串的时候,都得设置 IFS ,包括变量赋值、复制等,操作其他字符串的时候还得再改回去。
elvish 在这方面和所有正常的编程语言一样:变量的值是固定的,不允许在引用变量时自定义各种奇奇怪怪的 evaluate 的方式,因而和 Python 等正常编程语言一样,evaluate 时不需要 quoting 。

elvish 不会更改你的变量内容,只是为了让使用传统*nix 命令行工具的 byte 输入输出格式更方便,很多接受多个 string 对象管道输入的命令(包括 (..) 输出捕获),也会接受 byte 流,并默认将 byte 流按换行符分割后作为多个 string 输入。其实这也是传统*nix 命令行工具约定俗成的格式,只不过 evlish 里真正有类型了而已。默认相当于 from-lines ,对于需要其他格式的输入则可以用 from-json (从 byte 流读取输入并反序列化 json 成结构化对象)、slurp (从 byte 流读取所有数据并存入一个 string 对象里输出)等等。
@wxf666 上下文敏感的 parser ,ls -al 是调用命令还是 算术表达式取决于上下文,这种不一致性在复杂情况下结果可想而知,变量名拼写错误会执行外部代码。

jq 就是糊字符串,简单读取一些 json field 倒还好,稍微复杂点的 group_by ,结构变换等就麻烦了,当然做肯定能做,毕竟 jq 自己也有一套“高级”的 dsl 。
脚本里有一大堆 ad-hoc 的 parse 和拼接字符串的代码,难写难读易错还不安全,远远不如直接操作结构化数据。

go/rust 的正则库都是从 RE2 来的,这种设计安全、高效、不会 overflow 、线性匹配时间,详见 https://swtch.com/~rsc/regexp/regexp1.html
Unicode script 和 lazy 匹配都是支持的,不支持的只有涉及 look around 和 backreference 的特性,完全不必要而且 overload 的字符更多让正则更难读。
quoting hell 指一次 evaluation 的结果再次被另一种相同或不同的规则 evaluate ,所以需要同时为多种规则 quoting 和转义。如:
ssh host touch 'my file.txt'
会创建 my 和 file.txt 两个文件。

bash 就是语言表达能力不足,才不得不把 glob 做的更复杂,另外涉及兼容性等原因有时开了有时又没开更加剧碎片化,zsh 在这方面更为尤甚。

这就是 IFS 和 word splitting 糟糕的地方,数据(变量值)影响语义,在代码的不同地方处理、存储、复制、传递含空格字符串,并保证结果正确是非常麻烦且恶心的。
bash 的 array 不是一般的难用,比如复制 array 到另一个变量:
a=('file 01.txt' 'file 02.txt')
b=$a
b=${a[*]} b="${a[*]}" b=${a[@]} b="${a[@]}"
b=( $a )
b=( ${a[*]} ) b=( "${a[*]}" ) b=( ${a[@]} )
以上这些 b 的值都是什么?
2022-09-06 08:00:52 +08:00
回复了 LnTrx 创建的主题 宽带症候群 IPv6 环境下一机多 IP 玩法的讨论
@cnbatch 操作系统当然支持,ipvlan 配合 netns 就可以做到。不过正常来说也不是完全必须隔离开,如果 host 上的程序都是你可控的话,直接给网卡加个 IP 然后让特定应用绑定,自行注意避免[::]就行了。
@zhoudaiyu 应该是使用 buildx 构建多平台镜像之前也需要设置好 bin_fmt 。所以你用了这个之后可以用 buildx 构建多平台镜像也可以直接基于 arm 的镜像正常构建。
可以用 https://github.com/multiarch/qemu-user-static ,然后直接基于 arm 镜像构建。
@wxf666 所以说它不是一个新语言,充其量只能算是类似 ipython 的 ui 。

结构化数据肯定只能在语言内部用,但 bash 是语言内部都没有结构化数据,你就得一直拿字符串糊过来糊过去。
ip --json addr | all (from-json) | each {|i| echo $i[ifname] $i[addr_info][0][local]}

正则搞得太“高级”,不符合 do one thing and do it well 的理念,这些功能自己写代码实现可读性和心智负担都更好,这也是 go/rust/cpp 等语言的正则库只实现一部分特性的原因。

quoting hell 了解一下,如果转义字符也需要转义。。

多打几个字符不代表复杂,看文档长度就知道哪个复杂了,elvish 可没有 extended glob ,特殊字符也很少。

word splitting 我举个最简单的例子:
一个目录里有两个文件:
Record.txt
Record 02.txt

a=$(ls) ; file $a # 这里是写$a 还是"$a"呢?
(我知道 ls 不该这样用,这里是演示处理含空格字符串)

日常使用结构化数据非常有用,尤其是数组,上面那个例子在 elvish 里就没有任何问题:
var a = (ls) ; file $a

word splitting 和 IFS 就是早年 sh 没有数组而发明的 trick 。

其他不需要 IFS 的语言怎么切割,这还用说吗?就像所有高级编程语言一样,用 str:split 函数啊。

另外 elvish 不会对结果做任何分割,是 (...)表达式本身可以 evaluate 成多个值,就像 golang 的多返回值一样。
1 ... 68  69  70  71  72  73  74  75  76  77 ... 213  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1066 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 22:40 · PVG 06:40 · LAX 14:40 · JFK 17:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.