V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  CLMan  ›  全部回复第 1 页 / 共 7 页
回复总数  133
1  2  3  4  5  6  7  
"更多优秀",但是并没有指名道姓的说出来,太敷衍了。
4 天前
回复了 RabbitQ 创建的主题 程序员 小白想请教一个跨源 post 的问题
因为 fetch 和 超链接跳转 是两种不同的跨源网络访问,对浏览器而言,会采取不同的跨源安全访问限制策略。前者由脚本触发,后者由用户点击跳转,所以浏览器对于前者会更严。

更细节的需要爬文档: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS 。以及多做测试,CORS 涉及到安全,不同品牌的浏览器在一些细节上存在差异,需要自己整理。
4 天前
回复了 JackHong 创建的主题 Windows 拯救者清完灰自动重启
我自己修过(指替换零件、毕竟修主板还是得专业人士)、清理过几个笔记本,倒是总结出一些经验。

相变片没用过,硅脂不是越厚越好,硅脂的作用在于填补铜片与 CPU/GPU 接触面的缝隙,你只需要表面保证完全覆盖薄薄的一层,拧紧螺丝就行了。

拧散热器螺丝要讲究技巧,按照 X 的交叉方式先拧几圈固定螺丝,然后循环这样的方式,直至把所有螺丝拧紧,这样是避免硅脂不均匀分布。

现代笔记本的散热模组都是一体化的,可能散热模组老化或者你清灰过程中造成了物理破坏,最好的方式是淘宝买 2 个新的,一个替换,一个备用。

拆机前最好看下视频和教程,避免遇到坑,别自己蛮干。
6 天前
回复了 yujianwjj 创建的主题 Go 编程语言 go 程序结构的探讨
模式 1 ,定义了一堆 interface ,模块执行逻辑在 New 里面,间接在 run 里面。
模式 2 ,定义了一个通用的 Module 接口,模块实现 Module 接口,模块执行逻辑在 Run ,由 Manager 在 run 里面调用。
模式 3 ,定义了一个通用接口 Stage ,以及定义了一堆 interface ,模块实现 Stage 接口以及自身的接口,模块执行逻辑在 Run ,由 Manager 在 run 里面调用。

所以你这 3 种模式,无非就是抽取了一堆接口,有点 Java 了,代码的可读性没有任何区别。

首先,模式 1 的将模块执行触发丢在 New 里面,通常是不建议的,因为多模块系统是由模块组装得到的,最后再走启动的流程,模块提前执行是不合适的。

其次,除非真有必要,Go 是很少上来就抽取一堆 interface ,建议先写下原型,根据实际需要再抽取接口。
至少 Google 一下 Flutter 和 Dart 的历史吧。

是 Chrome 团队先发明了 Dart ,试图取代 JS 用于 Web 开发,但是由于市场接受度不高,因此暂时沉寂。

但是代码/编程语言对于 Google 来讲就是资产,只要有合适的场景就会翻出来拿来使用,毕竟都是真金白银换来的积累。

随后,Google 与 Oracle 陷入了关于 Andorid 使用 Java 的官司,Google 一方面和 Oracle 在法院扯皮,一方面在软件层面准备了 JB 的 Kotlin 和 Chrome 团队的 Flutter 方案,因为 Chrome 团队正好在 UI 上积累了很多经验,之前开发的 Dart 也很适合来干这件事情。

对于 Google 这种大公司,给自己操作系统(Android)编写 GUI ,其使用的语言必然是自己的,苹果为啥要发明 Swift ,微软为啥要发明 C#这个和 Java 同生态位(至少早期如此)的语言,因为自主才能掌控全局不然处处受制于人,不是很简单的道理。
13 天前
回复了 ota 创建的主题 Python 求 Python 初学者书籍推荐
"Python 初学者",错,“编程初学者”,对。

其实你是基本对编程没有什么概念,因为对于有编程经验/思维的人来说,Python 入门也就一个下午的事情。因为你也不用来写什么复杂东西,Python 看个语法部分就算入门了。

用 math adventures 来入门是你想多了,里面的 Python 内容不成体系,里面的数学内容也不成体系,你不是数学专业出生的,哪来的背景知识看,看天书吗?

我读大学的时候,大一基础课之一就是 C 语言编程,这种教育依然是灌输式的教育,典中典的谭浩强 C89 ,坑害了多少人。不知道现在大学的培养方案变更没,这类课程的目的,其实就是要教会学生编程思维。

如果要推荐,CS61A 应该是合适的,包括视频,基于 Python ,讲解编程思维。
14 天前
回复了 vyuai 创建的主题 Java 大佬们, 关于 Java 后端空判断
因为前面已经过滤 null 了,后续就不需要再检查 null ,所以你改得没啥问题。其次这代码本身就怪怪的,分页查询返回的 List 包括 null 元素(难道是返回固定长度的 List?)

感觉你应该没有太多编程经验,去看这种后台管理项目,去扣它的业务逻辑细节,实际上是走入了误区,想得太多写的太少。这种项目就是用来二次开发的,你自学根本没有实际的需求,看这种只有皮而无肉的空架子代码,那自然会陷入“这里要不要检查 null”,“这里为啥用 Throwable 而不是 Exception”等基本上没啥意义的实现细节。

我的看法是,真正能够有所收获,建立信心的是写自己的项目。你去找一个自己感兴趣且熟悉的领域,找到切入点,写一个至少能用的应用,不需要功能多丰富,实现多完美,至少其是自洽的,麻雀虽小,五脏俱全。比如你的求职目标是 Java 后端,那就去仿一个网站,从需求分析、数据库设计、后端实现、前端实现、应用部署一步步做起,并且去相关垂直领域宣传,给别人使用。
@xxss0903 你这涉及到字体等资源文件了,我只用 TypeScript 写过传统的逻辑库和 web 应用,没写过 web 组件库。

你可以参考与你项目类似的 pdf.js: https://www.npmjs.com/package/pdfjs-dist ,看它是怎么打包资源文件的。
16 天前
回复了 gosky 创建的主题 前端开发 如何最简化化前端开发?
当代软件开发都是需要包管理器的,学习包管理器就和学习编程语言一样,概念都是一通百通。npm 学习成本并不高,只不过在国内需要配置代理这项额外学习成本,建议用 pnpm 。
@CLMan 之前没看你项目源码,看了下,引入 vite-plugin-dts 是正确答案。
vite 是开发 web 应用的脚手架,你只是开发模块/库,如果不需要使用 web 页面进行辅助开发和测试,是不需要上 vite 的。

当然上了也不是什么错,毕竟可以利用其默认配置,比如 eslint 、prettier 相关默认设置。但是需要额外的配置,因为 vite 是面向 web 应用设计的,你用来开发库,其构建目标就和默认情况发生偏差,你需要添加额外的构建配置。

前面楼层提到的 package.json 里面的`exports`,`import`,`types`等字段,应该由构建工具来修改,不建议手动修改。

ESM 现在是主流的模块解决方案,webpack 这样的旧时代构建工具很少被使用了,构建工具有 rollup ,也包括前面提到的 tsup ,vite 是基于 rollup 的,所以你没必要引入额外的构建工具,当然你硬要用 tsup 也不会存在什么问题,只是 rollup 与 vite 集成度更高而已。

如过你使用 rollup ,就需要添加 rollup 的相关配置来构件库。你需要阅读 rollup 官网文档,以及 vite 官网的 rollup 部分的文档,了解如何添加构建库的配置。

这就是你这问题的相关解决思路。
16 天前
回复了 yanque 创建的主题 前端开发 关于 GUI 开发
个人只对桌面 GUI 跨平台有些了解。

wails 和 tauri 都是基于桌面系统自带的 webview ,优点是不需要像 electron 那样每个应用带一个运行时,但较老的 Windows 系统,得自带运行时的安装包或者下载器,或者让用户手动安装运行时。webview 的缺点就是性能较差,首屏加载有 0.5s~1s 的延迟。

如果对桌面 GUI 的性能有追求,那用 flutter 不错,磁盘占用、内存占用、性能都很优秀。

Compose Multiplatform 本质上就是 Java GUI ,试用过两个基于其开发的产品,内存占用和磁盘占用表现较差。
23 天前
回复了 hez2010 创建的主题 Windows Windows on ARM 的现代待机体验太牛了
用过第一代 surface pro ,后来当泡面盖子了,对我个人而言没啥用。触控笔对于写程序的用处不大,其实际体验对于使用者的手写能力要求较高(比如专业绘画等),对个人而言不如键盘打字。

个人还是习惯传统笔记本,追求键盘手感。
29 天前
回复了 xiaozhu317 创建的主题 输入法 后悔学双拼了
不喜欢就放弃呗,又不是非学不可。我就尝试过 1 个月,后面就放弃了。
blake 部分原文指的应该是对用户明文进行 hash ,而你所指的是对派生密码进行 hash ,所以强度来讲确实没什么问题。

火狐的办法确实巧妙,因为它是拿用户明文生成的加密密钥,自然是不能上传明文密码,所以最好在客户端使用 KDF 。
37 天前
回复了 chenjia404 创建的主题 奇思妙想 一个抗脱库的密码哈希方法
@chenjia404 我懂你的意思了,因为 hash 函数的特点,1:N 这种对应关系,其中 N-1 个是无效值,即碰撞就是白费力气,那你的方案确实有趣。当然由于没有知识背景,我无法判断这种说法是否正确。
38 天前
回复了 chenjia404 创建的主题 奇思妙想 一个抗脱库的密码哈希方法
自从加盐哈希流行以后,安全界为啥还要建议使用 Bcrypt 、argon2 这些密码存储专用的哈希算法呢,无非是担心现有及以后的硬件暴力破解通用哈希算法太快。至于彩虹表,已经是上个过时版本了。

而你认为设计很好的点“ auth_hash 与 user 并非一一对应”,反而是最大的漏洞,因为它们其实是 N:1 的关系( N 指 auth_hash 表的大小),意味着暴力破解时,可以碰撞的哈希值有 N 个。“这个表数据越多越好”,意味着破解的难度越低。

很多人以为,密码存储哈希值是避免用户的明文密码泄露,其实不然,是避免应用的明文密码泄露。如果是前者,那客户端密码 hash 早就流行开来了,还不至于成为开发者之间的争论点。对于后者,客户端密码 hash 毫无作用。
@liuidetmks 补充 @,内容见上一楼。
你这错得有点离谱,密码存储引入 hash 的历史原因有两个:

- 避免数据泄露,导致攻击者获得本应用的所有账户和明文密码
- 避免被拿去撞库

第一个是重中之重,影响了公司的生死存亡。第二个只能说是附带的,毕竟自己活着才最重要。

因为第一个原因,所以密码存储才经历了通用哈希算法、通用哈希算法+盐、标准密码哈希算法的技术演进。

而客户端 hash ,仅有的作用就是避免第二个原因,尚且属于程序员群体的争论点,并非最佳实践,大部分互联网公司都没有这么做。

现在你为了一点性能,将标准密码哈希算法丢到客户端,而服务端居然使用上古的通用哈希算法解决方案,连盐都舍不得加,不是捡了芝麻丢了西瓜。

事实上,你只要阅读一下你所推崇的 blake2 的官网,就会看到它根本不推荐将 blake2 用作密码存储:“Q: So I shouldn't use BLAKE2 for hashing user passwords?”,而是建议使用标准密码哈希算法。
111 天前
回复了 nerkeler 创建的主题 信息安全 一种安全且不容易遗忘的密码思路
你说的文件作为密码(或者说种子),KeePass 很早就支持用文件(Key File)了。

你如果是说文件、MD5 、base64/md5/sha256/自己的加密方案都属于生成主密码的前置步骤,那你加入的前置步骤越多,遗忘的概率越大。

“加密的方案只有自己知道”,从学院的角度来讲这会降低安全性,从现实的角度来讲,军用加密算法是非公开的、魔改的。但要实现类似后者的效果,你得有较深的密码学背景,不然就是前者描述的那类人。
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2792 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 13:24 · PVG 21:24 · LAX 05:24 · JFK 08:24
Developed with CodeLauncher
♥ Do have faith in what you're doing.