V2EX geelaw 的所有回复 第 1 页 / 共 188 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    geelaw    全部回复第 1 页 / 共 188 页
回复总数  3742
1  2  3  4  5  6  7  8  9  10 ... 188  
似乎是根据最近有过焦点的 Edge 的窗口大小的。

而且 Edge 设置 placement 有些 bug ,比如在全屏模式下 Ctrl(+Shift)+N 会得到错误大小的还原窗口。另外我还发现 Edge 似乎对多用户 (操作系统意义下的用户) 支持有问题……
建立一个新用户,是否有此问题?使用 Register-AppxPackage 在旧用户上重新注册应用包,是否依然有问题?

或许更好的做法是告诉大家之前对系统做了什么修改,不然有无数种方法弄坏 appx 程序。
@yulon #8 explorer.exe 是会对 WM_SETTINGCHANGE "Environment" 作出反应的,如果你需要重启 shell 才有效,说明改变环境变量的进程忘记广播此消息。
除了 PATH 以外都是用户先于系统,PATH 由 系统 > 用户 的顺序合成我不知道是什么时候开始的,但从 Vista 以来这个设计可以缓解一些 UAC 提权攻击。

假设 PATH 是 用户 > 系统 的顺序,那么在 Vista 上,管理员用户运行的非提权程序当然可以修改用户的 PATH ,这会导致重新登录后提权程序的 PATH 先搜索非提权程序指定的目录,是一种提权攻击的渠道。UAC 禁止提权的时候继承环境变量也是出于这个考虑。

反之,如果是 系统 > 用户,那么提权程序的 PATH 先搜索的目录只有提权时才能修改,不存在越权的问题。

如果提权程序搜索 PATH 的时候本来就无法从系统级 PATH 找到,那么这是提权程序的设计问题,无论哪种顺序都不安全,因此对决定 系统/用户 级别 PATH 谁优先不作贡献。
@datou #62 你说的(除了 no )和我说的是一回事儿。
@aprikyblue #3 楼主写的是 C 不是 C++,没有 enum class 。(当然,换成 C++ 似乎是比较好的选择。)这一点可以从这段代码可以编译知道(见下面第二点)。



几个可以挑剔的点:

一双下划线是保留标识符。

二是初始化的时候 constness 不合适,注意 const BizTypeRef 是 struct __BizType * const 而不是 struct __BizType const *,于是这里会丢失 const ,如果实现方(很容易无意间)尝试修改只读复合字面量的 .value 的话会有 UB 。

三是,如果实现方不需要数据,那么实际上没有必要使用 value ,用 non-const 复合字面量本身就可以确保几个表达式的对象不占据相同的位置(但是 const 复合字面量可能会是同一个对象)。



@ysc3839 #7 楼主的版本有不同的值,所以无法是同一个位置。在文件作用域的复合字面量是静态存储期。
4 天前
回复了 azzzzzz 创建的主题 反馈 可能是论坛的一个 BUG?
是自然归约导致的 UI/UX 问题,自然的设计是:如果你用第三方身份注册,那么设置密码之前不允许用密码登录,并且第一次设置密码必须重新做身份验证(这一点等同于登录后修改密码,依然要再输入一次密码做身份验证)。

自然的归约:把第三方身份注册的用户的密码设置为高熵随机串。

改进 UI/UX 的方法:后端记住用户是否设置过密码,如果没有,在登录后的“修改密码”页面提示用户从未设置过密码,并允许重新验证身份后设置密码。
>绝大部分网站不是为这种缩放比例设计的

抽象层级错误,网站的 px 和系统 DPI 缩放是独立的,在 100% 缩放下用浏览器反复 Ctrl + Plus 做缩放,在网站看来和更高的系统 DPI 加上浏览器不用 Ctrl + Plus 缩放,是一样的。

如果你看到的网站不正常,只能说明这个网站一开始就不正常。

缓解方法是系统高倍缩放下,按 Ctrl + Minus 缩小浏览器的缩放。
@realpg #8 能不能预览是有没有安装预览处理程序的问题(当然你用的软件可能只支持 Windows 11 ),预览处理程序是 Windows Vista 引入的。
自中古以来就是这样排序的,我自己记不得 Windows 98 的行为了,但根据 https://devblogs.microsoft.com/oldnewthing/20080804-00/?p=21383 的链接可以知道 2006 年的 Windows 已经对数字有特殊处理了,也就是至少 Windows XP 开始就是这样了。

根据 CompareString 的文档,至少从 Windows 95, Windows NT 3.1 开始就已经有不区分平假名和片假名的选项了,而且简体中文和繁体中文的规则也很不同(只有繁体中文会用笔画数)。总之,简单的答案是:Explorer 的 UI 排序是非常复杂的字符串比较。

用 ASCII 排序应该已经很久没有在 Windows 下 work 过了,普通用户并不期待

A-0.txt
Z-1.txt
a-2.txt

这样的顺序。
1. 熟悉如何用键盘开关 Mac 的设备,防止稍后的步骤死锁
2. 关掉所有指针设备,查看问题是否出现
3. 用安全模式启动 Mac ,查看问题是否出现

搜索 mac mouse pointer drifting even if no mouse is onnected ,可以找到一些资料:

https://www.reddit.com/r/MacOS/comments/16y4rbn/mouse_cursor_wiggling_on_external_screen_only_mbp/

1. 如果屏幕上正在播放动态内容,比如 YouTube 或者 Telegram 的动画表情,则可能有此问题
2. 此问题在使用外置屏幕时更容易发生,鉴于楼主用的是 Mac Studio ,可以考虑打开光标位置监测程序,拔掉屏幕,等待一段时间,重新接入,查看监测日志

@kome #5 这个理论应该不成立:首先是抽象层隔离的期待,即使有随机挪动屏幕内容的设置,光标位置是屏幕坐标系,和屏幕处于现实世界的位置是两件抽象层次不同的事情;其次是因为观察到的现象是光标一直向左移动,而不是随机变位置。
那答案是 Edge 的“删除下载文件”用的是 DeleteFileW ,也就是“删除”而不是“移动到回收站”。

>不知道这与我回收站位置改在 D 盘有无关联。
没有,而且回收站是每个盘有自己的回收站。

>现在导致我用浏览器删除文件到不了回收站。
它没想移动到回收站。

>还有不知道是不是幻觉每一次删除 c 盘可用容量好像也跟着减少。
时间上相近不代表因果关系,最简单的解释是程序运行的时候产生了新的临时数据。
或许您可以解密一下是如何用 Edge 浏览器删除文件的,按 Ctrl+O 然后在“打开文件”对话框里按 Delete ,还是下载了文件之后按 Ctrl+J 并点“删除”按钮删除下载的文件?
8 天前
回复了 wdssmq 创建的主题 Edge Edge 密码全丢的事也是遇上了
@patrickyoung #9 很有意思的信息,但是里面的内容表明 app-bound encryption 不过就是两层 DPAPI + 调用进程验证,所以 #4 大体还是对的,不过这次所有 EdgeSaved 都要再被 service user key (e.g., machine/SYSTEM key) 加密一次。

App-bound encryption 安全意义可以说没有,同等级进程可以随便注入,而且“打开文件”对话框里有无数个 shell extension 会自动启动。最大的作用大概是减少不理解安全模型的人反复制造无聊“新”闻。
8 天前
回复了 SGL 创建的主题 Go 编程语言 写屏障,概念混淆?
@geelaw #4 确保内存操作顺序。
8 天前
回复了 SGL 创建的主题 Go 编程语言 写屏障,概念混淆?
是两个正交的概念,三色标记 GC 里的 read/write barrier 是指读写 GC 管理的引用之前,编译器插入从而导致运行的代码(辅助 GC 算法),memory fence 是多线程程序里确保某些内存操作在多线程下可观测顺序的指令(因为 CPU 会乱序执行,通常只能保证结果在单线程下无区别,加入 memory fence 可以约束多线程下的内存操作顺序)。

并行 GC 肯定是需要一些同步操作的,可以用 lock/mutex ,这样就自带内存操作的同步,如果要写无锁的,也可以考虑用 memory fence 确保内存操作。因此一个 GC 里面可能会同时使用 read/write barrier 和 memory fence 。

最后,memory fence 也可以叫做 memory barrier 。



楼主引用的段落第一个分句就有严重的语病:

>内存屏障技术是一种屏障指令
>技术是指令

这句话的正确说法是

>内存屏障是一种指令

>内存屏障技术/技巧是利用特殊指令约束指令乱序执行和多线程下内存操作顺序的方法

然后我随便翻了一下那本书的前几页,真是惨不忍睹:

>发展到今天已经有过去了 10 多年

有、过去了 句式杂糅。

>目前的 Go 语言在国内外的社区都非常热门

第一个“的”不符合汉语使用习惯。

>很多著名的开源框架,例如:Kubernetes 、etcd 和 Prometheus 等都使用 Go 语言开发,近年来热门的微服务架构和云原生技术也为 Go 语言社区带来了非常多的活力。

冒号管辖范围错误。

>也坚定地认为这门语言未来的发展会越来愈好。

越来越、愈来愈 杂糅。

>很多文章都会陷入对不重要的细节,大量的篇幅都是复制的源代码,分析介绍的过程也没有分清主次,不能提供很好的阅读体验。

句式不符合汉语习惯,应该是“陷入对不重要的细节的纠结”。

我不确定这些充斥大量语病的内容是怎么出版出来的,作者、编辑、校对都没有上心?
9 天前
回复了 wdssmq 创建的主题 Edge Edge 密码全丢的事也是遇上了
每个新用户都有自己的 DPAPI 密钥,此密钥平时受用户的密码保护;建立新用户(包括新安装操作系统后建立用户)会生成新密钥;强行修改当前用户的密码(不知道旧密码的情况下)会导致旧密钥无法恢复; DPAPI 密钥可以备份还原,并且可以存在于域控制器中。

Edge 的密码是用 DPAPI 保护的,因此重装系统并且没有加域,即使建立同名账户,即使密码相同,即使把 AppData 里的数据复制过来,旧密码也无法读取。

不清楚 HackBrowserData 是否可以把保存的密码明文读出,理论上来说在原来的用户下当然可以,因为是原来的用户的身份。

用公式表示:

EdgeSaved = Enc(key = user key, plaintext = Web password)
InUserProfile = Enc(key = derived(Windows logon password), plaintext = user key)

每个新用户都对应一个不同的 user key ,所以朴素地重装 + 复制资料的结果是

Copy of EdgeSaved = Enc(key = user key 1, plaintext = Web password)
New InUserProfile = Enc(key = derived(Windows logon password), plaintext = user key 2)

然而要读取保存的密码,需要的是

Enc(key = user key 2, plaintext = Web password)

或者

Enc(key = derived(Windows logon password), plaintext = user key 1)
10 天前
回复了 gegeligegeligo 创建的主题 问与答 碰到一个很奇怪的问题
最简单的假设是:发生了自动更新,且 Settings | Accounts | Sign-in Options | Automatically save my restartable apps and restart them when I sign back in 和 Use my sign-in info to automatically finish setting up after an update 都是开启的状态。

如果此假设成立,那么“被关闭大部分”是因为大部分软件都没用使用 Restart Manager 让自己在安装更新后自动重启,而少部分看起来没有关闭的软件则是使用了 Restart Managr 且恢复得不错。
16 天前
回复了 jmliubiao 创建的主题 C# C#中异步相关的问题
@jmliubiao #6 oh wow 你应该看 #5 的信息,我记错了……

TestController 代码的效果只有无异常的情况下是一样的,考虑 new TsetService() 这个表达式产生异常的情况(比如内存不足,或者构造器抛出异常),那么 Get1Async 会同步得到异常,而 Get2Async 会把异常装进 Task<Student> 里面返回。

Task<int> M1(bool t) { if (t) throw new Exception(); return Task.FromResult(0); }
async Task<int> M2(bool t) { if (t) throw new Exception(); return 1; }

那么

try { M1(); } catch(Exception ex) { Console.WriteLine("caught M1"); }
M2(); Console.WriteLine("M2 succeeded");

的结果是

caught M1
M2 succeeded

因为 M2 的异常只有在 await 的时候才会浮现。但是 #5 说由于这个(异常总是异步的)优点所以应该尽量用 async/await 我就不知道了,我的感觉是最终使用的时候所有 Task 都要被 await ,此时包围之的方法必然是 async ,因此同步异常和异步异常最后都会浮现,时机不同,而且典型的代码里还会掺杂很多其他可能异常的语句,就看细抠异常语义是否有意义吧。
16 天前
回复了 jmliubiao 创建的主题 C# C#中异步相关的问题
@geelaw #3 所谓没有意思上的差别,是指假设有

Task<T> M();

那么

Task<T> M1() { return M(); }
async Task<T> M2() { return await M(); }

没什么区别,当然 TestController 里面 Get1Async, Get2Async 因为调用了 TsetService 里面不同的方法,实际的效果区别很大。
1  2  3  4  5  6  7  8  9  10 ... 188  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     879 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 42ms UTC 21:22 PVG 05:22 LAX 14:22 JFK 17:22
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