V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  aristolochic  ›  全部回复第 2 页 / 共 4 页
回复总数  67
1  2  3  4  
2021-09-15 11:08:40 +08:00
回复了 mmdsun 创建的主题 程序员 有什么小众的语言或框架,是值得学习 ?
@popil1987 我倒是不太认为 Laziness 就能成为性能的保障。Haskell 自己也说了 Purity 是为了 Laziness,Laziness 是为了 Non-Strict,Non-Strict 学术上是为了区分于 Strict 的 ML 语言提供统一的实验阵地、实践上是为了写出 More composable code,不为了手动确保求值的流式而耗费太多脑力。

表现上就是可以写一个无尽的递归斐波那契数列,存储历史值使递归栈扁平化,且 GC 能够保证立刻清除不需要的历史数据,就像有一个超厉害的缓存一样。这点在 ghci 和 ghc 编译出来的运行行为不同能够体现,ghci 里运行递归的斐波那契到 1000 位,以后算 1-1000 位都是秒出,即使再要求算 1000+,也是从 999 和 1000 开始的。而 ghc 编译的话由于知道那些值需要,所以不需要的值会立即被 GC 掉。这在 Strict 的语言根本不可能,它们没办法用图来表达值的关系,最终还是面向栈的。

(怎么感觉变成安利 Haskell 了)

不过怎么说正常写的 Strict 程序再加上图灵机要求的可变性,是不会比 Non-Strict 加上 Lambda 演算和 Laziness 要求的 Purity 慢的,而且应该说是 Strict 程序往往更快(只要脑子不抽)。所以单从模型上看,使用了 Stream 的 Elixir 程序和 Haskell 写出来是一致的,要说性能有差别也是 BEAM 的开销和类型检查的开销。只不过 Haskell 好说歹说也是静态的、直接编译到机器码的系统语言,还是要和 C/C++啊 Java 啊 Go 啊打一打,这下 List 就到了极限了,才不得已要出“数组”,导致一个学术语言为了解决实践问题搞出了复杂程度堪比 Rust 的“字符串类型矩阵”,还需要常备 cheat sheet,引来了不少老学究的嫌弃。
2021-09-15 09:46:30 +08:00
回复了 aizya 创建的主题 JavaScript js 怎么判断用户关闭了浏览器
瞧这问题问的,要是用户用一个软件的 WebView 打开你的网站,你难道还想去监听这个用户是关了你的页面还是关了整个软件? Web 怎么可能让你知道那么多,岂不是反了天了。现在浏览器标准都是安全越收越紧,是绝对不可能再出一个 API 告诉你浏览器关了的。

说白了对于 Web 而言,网站是不应该也不可能 Native aware 的,且不说 Tab 这些概念不是所有浏览器都有,比如有那种就一个页面的浏览器( surf 就是,在平铺窗口管理器生态有一定市场),还有那么多 WebView 也是没有标签的,更不可能让你了解到原生的情况。

浏览器插件 /扩展倒是可以知道标签的状态,具体能不能知道浏览器关没关就没了解过了。

要想完全控制,老老实实套 Electron 。
2021-09-14 20:06:52 +08:00
回复了 css3 创建的主题 程序员 不同 terminal 中如何共享同步 snippets
我倒是理解你说的大概不能直接对应到 alias 或者函数,Termius 的 snippets 应该是那个点一下按钮在指定远程执行一条命令的那个功能吧?令我惊讶的是居然真的有用这个的,据我所知没几个终端有这种功能,毕竟新建个快捷方式就能干的事情为啥要花钱买一个付费软件(要买也是冲着别的功能去)。

至少桌面端的话不管是 Linux 还是 Windows 创建这样的快捷方式没什么障碍,Apple 用户估计更是直接加任务了。这么做或许最大的区别是运行结果反馈。

所以为了能跨终端行为一致,你可以把现有的 Termius snippets 迁移到所用 shell 的函数或 alias,然后把 snippets 里的实现改到对应的函数或 alias 。这样你在压根没有这种功能的终端至少也能用。
2021-09-14 14:19:06 +08:00
回复了 mmdsun 创建的主题 程序员 有什么小众的语言或框架,是值得学习 ?
@popil1987 自从 Cowboy 转向 HTTP 2 为中心的设计后,性能其实是下降了一些的。除此之外因为 Elixir 不可变,字符串处理也是个大麻烦,一些很简单的任务如果按照常规思路想的话会慢得离谱,内存也大得离谱(虽然 Haskell 也一样)。所以前几年出了 Stream,然后是 GenStage,然后是 BroadWay 。不过要说计算性能的话,真的会有能和基于图灵机模型的语言打的纯函数语言吗?毕竟都是基于 Lambda 演算的。(所以 Erlang/OTP 上的东西一大好处就是让我这样能力不行的人也能占满 CPU 核心

我比较喜欢 Elixir 的一点主要是工具链做的好。还有 Phoenix 这种看上去很完备但仍然比较轻量(大概是出于显式的考虑,习惯设计脚手架而非宏

用动态类型大概是因为 BEAM 里 Erlang 的印记太明显了(也不是没有别的静态 BEAM 语言),以及 Dialyzer 也算能用(逃

另外……Kernel.SpecialForms 是用 Erlang 实现了一个 pass 吧?那个模块只是模式匹配了一些不能 unquote 的,以及 quote 本身。它的宏模型基本和 Lisp 一致,Lisp 都算不上 SpecialForms 自己实现自己。
2021-09-08 13:26:46 +08:00
回复了 wangyzj 创建的主题 程序员 彦祖们, pg 还是 mysql? 到底该怎么选?
对于完全不说产品功能需求 /目标使用场景 /已选技术生态 /已有知识体系 /未来扩展方向的,理性的回答是:“用什么数据库,文件系统 /内存就够了”
(逃
2021-09-05 09:15:12 +08:00
回复了 DianQK 创建的主题 Linux 求推荐 Manjaro 兼容性比较好的轻薄本
我现在用 Arch WSL2,作为建议,Arch 系在 WSL2 下 iptables (官方库里有)和 ebtables ( AUR )用 legacy 就没问题,现在基于 nftables 的 iptables 实现有大问题完全用不了(以前试的,现在不知道咋样了)

剩下的除了一些 DMI 缺失外,就没啥了。嵌套虚拟化也一点儿问题没有,你甚至能用 libvirt 这种的装一个桌面巨卡的桌面发行版(毕竟显卡还是通不过去的)

图形上的话,官方库里的 mesa 一直没开 d3d12 选项,要用是从 AUR 构建 mesa-d3d12 。不过这个应该是只和 N 卡用户相关。开了以后的话,supertux kart 会快一点吧?(肉眼感觉,行为艺术)

所以 WSL2 用是能用的,而且还很爽,比起折腾桌面和驱动要简单多了。另外是日常劝诫:用 Arch 系,除非绝对确定自己从来不用 AUR,就不要用和 Arch 官方库进度不一样的发行版。
2021-08-21 17:37:23 +08:00
回复了 pocarisweat 创建的主题 程序员 看到「学什么新语言」这个问题,推荐这本书
好奇怪,为什么有人一看到把几个语言并列放在一起,脑子里第一时间想到的是接下来要排名列次,踩一捧一了。

> 真正的资深优秀的程序员基本上不会去讨论工具的好坏,也懒得分析这些东西
> 这些争论都只是一些毫无意义的事情

我没看出来楼主的分享中有任何形式的“讨论语言优劣”、“搞 语言好坏分析 宗教战争”,只是在说一些值得了解以扩展思路的语言,却惨遭扣上这种帽子。

就像出省出国旅游,去别的地方玩还要搞个 Benchmark/Questionary,头脑也太不活泛了吧。有那么多人,搞钱用一套方便搞钱的,自己玩用一套使用舒适的,甚至于自己看着不爽发明一套,也没见人家精神分裂。

图灵机和 Lambda 演算、Actor 和 CSP 、继承和组合、call/cc 和 Monad 、文本宏和 AST 宏……等等都能达成目的,但各有各的优势和劣势不假,长久以来各家也骂战是少数,相互吸纳才是主流。怎么别人告诉你吃苹果吃腻了可以试试我家的梨,你却要怀疑这梨有毒呢?也没一巴掌拍没你手上的苹果不让你吃啊。

毕竟还有很多人可是没见过梨的。
2021-08-19 18:27:44 +08:00
回复了 pigspy 创建的主题 Android 安卓该如何显示 slatejs 格式的数据?
Slate 的官方序列化示例就是 switch 判断 children.type 对应输出 html 片段+递归;期间只用到了 Text 类作为判断是否为文本节点结束递归的依据。
所以其实对着它的 spec 很快就能写出来,也不必要用它的 Text 类判断是否为文本,文本节点特征很明显嘛。
如果 case 不多的话,为了这个需求就启动一个 WebView 是不是有些 Overkill 了
2021-08-11 22:09:59 +08:00
回复了 Imindzzz 创建的主题 Node.js npm node_modules 为什么会是现在这样
有一部分原因应该和 Node 依照文件系统逐级查找,且一个包有很多种入口可能性,需要按照 Fallback 顺序检测直到完成加载的模块 Resolution 机制有关。这种模型包括 CommonJS 设计之初是基于文件系统的访问速度很快可以忽略不记的假设成立之上的。连它本身都这么设计,npm 也没有道理不一切从简,然后就出现了比黑洞更深,令 Windows 瑟瑟发抖的恐怖存在。谁能想到之后会如此复杂,npm 也不得不做出调整。包括 yarn PnP 设计的一大理由就是没有理由惯着 Node 这么粗放动态的模块 Resolution 机制。

如果你说的是充当前端构建工具的 Node,那个占硬盘、小文件多、慢也占不到用户头上,如果乐意的话构建前安装,每次构建完了就删,和 CI 的思路就一样了;前端需要解决的问题复杂度已经很多人说过了,这个实在是没办法。另外谁叫所有人都在写 SPA,或许是图方便大量程序员间的协调?不少人说前端卷,好像在想尽办法提升后来人的入门台阶。这个确实有,比如各种 KPI 开源项目,不过这顶帽子怎么也安不到 npm 和 node_modules 上。

如果你说的是当后端使的 Node,除了有很多框架原生支持 TypeScript 之外,似乎很少有听说过后端需要编译的。后端领域因为环境可控,不太可能会引入前端的那些 Polyfill/Shim, Transpiling, Purge 库和相关的 Bundle 工具链等等,node_modules 不会很夸张。所以 Node 作为所谓 Server Side JS,其实并没有后端生态( x

要说未来发展,听各位描述了一下 pnpm,似乎约等于 Node 版的 Bundler 啊。我还挺期待 yarn PnP 以后会是什么样子,毕竟 npm 抄过 yarn 的依赖扁平化,没道理不再抄一次。

不过私以为影响 Node (主要是前端)生态的最大问题是,再过几年可能所有人都去用 esbuild 这种压根不打包的工具( Elixir Phoenix 1.6 就已经决定把 Node 和 webpack 踢了,自己管理 esbuild 。这样用一个单一的二进制,所有进程都由 Erlang BEAM Port 管理还恰恰更加符合 Elixir Mix 的特色),除了老项目之外还有没有 Node 的事还不一定呢,所以干脆就别改了,现凑活凑活用过这几年算了吧(逃
如果能用 CSS 实现替换图片的话,直接用 @supports not ((-webkit-backdrop-filter: blur(1em)) or (backdrop-filter: blur(1em)))查询不就完事了(里面写 fallback 的样式),需要在 JavaScript 替换也有 CSS.supports('属性', '值'),干嘛非得关心具体浏览器?等哪天移动端火狐又支持了,难道你还要为了这个再提交一个新版本?

另外我一般做 backdrop-filter 的 fallback 只是降低透明度而已。如果有文本阅读需要还会将下层内容隐藏。能够使用静态图片替换的场景,用 filter 就行了,这个哪儿都支持。
@neiltroyer849 如果我没理解错的话,你说的是一级菜单。那个 Dev 是可以点的,点进去出现 Dev 、Beta 和 Release 三个分支。巨硬的 UX 一向做的脑瘫。如果你已经点进去还是只有一个的话……那估计巨硬又把门给关了?
@LANB0
Dev 通道今年出过一次开机后 explorer.exe 完全没法启动的恶行 Bug,还有 dwm 也工作不正常。表现起来就是黑屏,只能通过任务管理器启动应用。
就因为这个,现在巨硬放开了 Dev 通道的切换,我光速转 Beta 通道。
所以不追求新的特性比如 WSLg 之类的,还是算了吧。
2021-06-19 19:22:57 +08:00
回复了 nineyang 创建的主题 问与答 有大佬了解这种给模特「换衣服」技术是如何实现的吗?
https://legacy.imagemagick.org/Usage/distorts
http://im.snibgo.com/pntppl.htm
以上这两个是你想做得好些可以参考的

不过你发的这两个链接……视觉上靠分多个片做遮罩和加阴影和边缘光就够了,并不需要画 Mesh
仔细看还是能看出来的
2021-06-17 18:38:07 +08:00
回复了 einsdisp 创建的主题 程序员 Win10 的 WSLg 能否完美替代 Linux 下日常开发?
目前可公开的情报( x

以下仅针对 WSL2

GUI 的话 WSLg 倒是挺好用的,就是会设置奇怪的 XDG Runtime 目录环境变量,而且加了个库不是软链接,Arch 每次更新会提示比较烦;
Systemd 的话现在 Genie 已经比较成熟了,没遇到什么坑,除了需要放弃在 WSL 里挂载 Windows 文件系统的能力(说起来我用的 zsh 配置由于会高亮路径,要检查 Windows 的目录,结果就是输入有肉眼可见的延迟。用了 Genie 后由于没有 Windows 目录了,体验反而上升了,这才知道是什么原因。
USB 的话还得自己折腾网络方案,每次需要自己折腾 USB 的时候就想到之前 WSLg 没出的时候配置音频的痛苦,就觉得自己用 WSL 是为了省时间的,就放弃了;
嵌套虚拟化的话近期更新的内核默认开启了 KVM,但目前 Libvirt 是不行的,会嫌弃 WSL 没有设备信息(当然没有)然后 error,不知道其他怎么样,比如手动拼接 QEMU-KVM 命令能不能行,我是懒得折腾了。
2021-06-17 11:08:53 +08:00
回复了 piqizhu8 创建的主题 问与答 当前哪个编程语言适合用来开发新编程语言?
用函数式语言 /设计函数式语言优势实在是太大了。且不说 ML 语言的模式匹配,这些语言就算不是 Lisp 这种自己就是 AST 的,也大多十分愿意把 AST 暴露给你看,至少也是十分擅长操控 AST 。

看看 Elixir 的实现吧,基本思路是先用 Erlang 把 AST 设计出来,把 defmacro 实现一遍后,第二次迭代就能用 defmacro 把很多语法构件之外的宏( defmodule 自己、def 、if 、in,甚至|>都是啥?都是宏)都设计出来。至于词法 /语法解析也是用 Flex/Bison 那样的,只不过是 Erlang 生态的东西(叫 yecc,很明显了吧)。
剩下的工作就是用 defmacro 定义更多的宏、用 defmacro 实现不了的语法构件,写编译器 pass 实现(比如很基本的 cond 和 case )、编译 AST 、设计标准库,以及在十分必要的时候(比如 Elixir 引入新的中缀表达式|>)调整词法 /语法解析,等等。虽然工作量上没少,但开发维护起来清晰多了。

但其实考虑到 Elixir 是伪装成 Ruby 、蹭 Erlang 虚拟机和并发模型生态的真·Lisp,其实吧……设计自己的 Lisp 大概也是这个流程,还简单点儿?

(以上为胡言乱语,不过用函数式语言尤其是带有 ML 血统的语言来设计新语言是有历史的。
2021-06-16 20:24:24 +08:00
回复了 Cbdy 创建的主题 问与答 有什么好用的汉字转拼音方案推荐?
不限语言的话,基本组件 ICU 里面的 Transliteration 相关
有 ICU 绑定就能用
这个是 Java 的例子: http://www.avajava.com/tutorials/lessons/how-do-i-convert-chinese-characters-to-their-latin-equivalents.html

当然了这个还是太复杂了,如果就是为了生成 slug 的话,其实没啥必要
2021-06-11 19:51:04 +08:00
回复了 zxCoder 创建的主题 问与答 老是用别的语言习惯写 C/C++是不是不太好。。。
C 就算了,C++写成啥样都不奇怪( x
上面有人提到 Wordpress,那我来说说 Ruby on Rails 的。Rails 做法是正文放在带有多态关联的独立富文本表,附件表也是多态关联。Rails 集成到什么地步?这些东西开箱即用,在模型里标注就行。这样的好处是富文本和附件逻辑可复用,富文本能够做一些变换比如纯文本化之类的,我之前做搜索高亮就是把纯文本丢给 PostgreSQL,建立全文搜索索引,搜的时候由 PostgreSQL 生成<mark>标签。附件也不是硬编码而是有 Variants 的,比如如果你用对象存储的话可以设置有水印 /无水印、是正文用的高清还是列表用的缩略图,以及一些动态生成下载原图的临时链接啥的(本地文件存储也有)。劣势显而易见就是复杂,如果不是用高集成度的系统帮你处理这些复杂度,或者未来扩展空间不大的话,完全没必要。要说参考的话可以看看 sanitizing 是怎么做的(其实……就是记着做就行)。
2021-05-21 20:35:57 +08:00
回复了 HashV2 创建的主题 程序员 微信小程序可以让用户自己选服务器吗?
所以……就是 Multi tenant 呗
Web 实现的多租户还是太野了吧,就算有微信的绑定啥的
建议还是加个 API 网关吧。不加网关你的合法域名要加到多长啊,现在客户数量少,以后呢?
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2445 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 02:08 · PVG 10:08 · LAX 18:08 · JFK 21:08
Developed with CodeLauncher
♥ Do have faith in what you're doing.