V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ksedz  ›  全部回复第 3 页 / 共 11 页
回复总数  216
1  2  3  4  5  6  7  8  9  10 ... 11  
2023-06-20 11:27:00 +08:00
回复了 ksedz 创建的主题 程序员 原来还有可以 poll 不可以 epoll 的 fd
@codehz 原来是这个意思,那直接成功就没什么问题了。
2023-06-20 10:46:35 +08:00
回复了 ksedz 创建的主题 程序员 原来还有可以 poll 不可以 epoll 的 fd
@codehz get_random_bytes_user 里还是可能失败的吧

static ssize_t get_random_bytes_user(struct iov_iter *iter)
{
u32 chacha_state[CHACHA_STATE_WORDS];
u8 block[CHACHA_BLOCK_SIZE];
size_t ret = 0, copied;
if (unlikely(!iov_iter_count(iter)))
return 0;
/*
* Immediately overwrite the ChaCha key at index 4 with random
* bytes, in case userspace causes copy_to_iter() below to sleep
* forever, so that we still retain forward secrecy in that case.
*/
crng_make_state(chacha_state, (u8 *)&chacha_state[4], CHACHA_KEY_SIZE);
/*
* However, if we're doing a read of len <= 32, we don't need to
* use chacha_state after, so we can simply return those bytes to
* the user directly.
*/
if (iov_iter_count(iter) <= CHACHA_KEY_SIZE) {
ret = copy_to_iter(&chacha_state[4], CHACHA_KEY_SIZE, iter);
goto out_zero_chacha;
}
for (;;) {
chacha20_block(chacha_state, block);
if (unlikely(chacha_state[12] == 0))
++chacha_state[13];
copied = copy_to_iter(block, sizeof(block), iter);
ret += copied;
if (!iov_iter_count(iter) || copied != sizeof(block))
break;
BUILD_BUG_ON(PAGE_SIZE % sizeof(block) != 0);
if (ret % PAGE_SIZE == 0) {
if (signal_pending(current))
break;
cond_resched();
}
}
memzero_explicit(block, sizeof(block));
out_zero_chacha:
memzero_explicit(chacha_state, sizeof(chacha_state));
return ret ? ret : -EFAULT;
}


满足 iov_iter_count(iter) <= CHACHA_KEY_SIZE 并且 copy_to_iter(&chacha_state[4], CHACHA_KEY_SIZE, iter) 返回 0
2023-06-19 18:39:42 +08:00
回复了 ksedz 创建的主题 程序员 原来还有可以 poll 不可以 epoll 的 fd
@codehz 我是跟 openssl 1.0.2 的时候跟踪到的,在 RAND_poll 中调用了对相应设备的 poll 。项目要求所有的 select / poll 都要转为 epoll 集中处理,就遇到了这个问题。
查资料 /dev/urandom 在极端情况下会失败,那虽然它不阻塞,还是要去 poll/epoll 的。但如果设备驱动没有实现对应 poll 方法这就很尴尬了,只能直接在 hook 里让它调用成功了。谢谢讲解。
2023-06-19 18:18:56 +08:00
回复了 ksedz 创建的主题 程序员 原来还有可以 poll 不可以 epoll 的 fd
@pagxir 完全知识盲区了,之前一直以为 epoll 是可以覆盖 select/poll 的功能的。谢谢解答,我补补知识点。
海外项目用 next.js 挺正常的,原因挺多的
1. 无后端服务发展好,js/ts 成了项目的首选甚至唯一语言
2. react 生态
3. 顺手支持 seo ,很划算
4. vercel 使用方便 + 免费额度
2023-06-15 14:13:10 +08:00
回复了 ReinerShir 创建的主题 生活 各位的衣服一般都是从哪里买的?
为什么我觉得优衣库的款式和质量还不如便宜得多的快鱼?
2023-06-14 19:53:59 +08:00
回复了 ksedz 创建的主题 哔哩哔哩 为什么 B 站直播息屏后打开要按时间顺序一条条加载弹幕?
对啊,有的时候就是一直听着,听到有趣的地方看看大家的反应,结果弹幕一直刷啊刷的。
不知道对应什么需求,想看之前的弹幕加个上拉不就行了吗。
2023-05-19 17:09:08 +08:00
回复了 robbaa 创建的主题 程序员 找不到好用又便宜的笔记软件,又想造轮子了
@xiaochuaner emacs + orgmode + github ,这是我唯一能坚持使用的笔记组合,不会动不动想着换笔记软件。就很神奇,我也没想明白为什么。
2023-05-09 18:37:47 +08:00
回复了 taosimple 创建的主题 程序员 2023 年独立开发者这条路还能走下去吗
“通用型” 就是最大的问题,越通用越难以找到用户。
2023-05-04 18:31:29 +08:00
回复了 anson0370 创建的主题 程序员 做了个 IntelliJ 主题,让我再也不想用 JetBrains 的 IDE 了
> 众所周知,IntelliJ 的样式分成 theme 和 schema 两部分,theme 控制 UI ,而 schema 则控制 editor 的内容。(这里就要给 vscode 磕一个了,它就不分,开发 theme 的体验非常舒爽)

VSCode 不区分么,上次想做个自己的高亮主题,支持一些冷门语言,发现无法同时实现词法语法分析和自定义主题。
2022-12-26 12:16:08 +08:00
回复了 Salticey 创建的主题 生活 现在怎么没人讨论转基因食品的问题了
@tuding 雾霾是肉眼可见的少了(北京),不是一回事。
分母
2022-11-22 21:42:54 +08:00
回复了 andyJado 创建的主题 程序员 为什么我们不用 git 当数据库呢?
有类似思想的数据库
https://irmin.org
A distributed database built on the same principles as Git

SQL 还是强在足够表达力的基础上标准化程度高吧
2022-10-19 15:52:43 +08:00
回复了 yuhuanxi 创建的主题 软件 用过很多笔记,最终回到了 obsidian
orgmode + github
2022-09-20 20:29:49 +08:00
回复了 tsingke 创建的主题 程序员 单元测试有落地效果好的团队吗?
在上家公司的时候推过,指标是代码的行覆盖率。
个人感觉实际用起来能发现不少问题,对功能的正确性更有信心了,明显减少了维护时间。
可能对强类型语言的效果有限。
分母 +1
我向她科普了值班工作的辛苦所在,不一定需求多难,难在 oncall ,让人身心俱疲。
当然她是不听的,还是得吵。
39
2022-08-31 17:09:00 +08:00
回复了 wenzaiquan199 创建的主题 问与答 为安全问题,早上公司热烈讨论
有必要的,中间人可以拿到数据。
虽然如果能中间人了加密不加密对这个应用没什么影响,但是用户可能不同应用使用相同的密码,加密可以保护用户其他应用账户的安全。
2022-07-22 14:17:05 +08:00
回复了 binhb 创建的主题 程序员 Deno 这个调查问卷有点调皮😝
问卷在哪,我要填 nextjs
1  2  3  4  5  6  7  8  9  10 ... 11  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2310 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 01:10 · PVG 09:10 · LAX 17:10 · JFK 20:10
Developed with CodeLauncher
♥ Do have faith in what you're doing.