V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 2 页 / 共 172 页
回复总数  3427
1  2  3  4  5  6  7  8  9  10 ... 172  
首先,是“剪贴板”。

这个功能无法一般地实现,因为剪贴板的数据格式可以是任意的,并且剪贴板的数据可以非常非常大。剪贴板是 window station 级别的对象,因此注销再登录就会清空。

方案:弄一个程序,做成用户级别的服务,自动启动,启动时从磁盘中还原剪贴板数据,并且对注销作出反应,在注销的时候把常见的格式存下来。可能需要配置关机顺序,确保这个服务足够晚才被结束。

注意做成普通的自启动程序是不行的,因为用户点注销/关机/重启后,若有程序阻碍,则用户可以取消,但 Windows 结束普通程序的顺序是没有保证的,因此这个剪贴板程序很可能在用户点“取消”之前就已经结束了,此后用户重新注销自然就没法自动保存剪贴板数据了。

另外,这个方案无法存下任何延迟渲染的数据,因为持有该数据的程序几乎一定在服务退出之前就被结束了。
就是要找四个单位向量 abcd ,使 ad 、bc 正交且 ab 、ac 、bd 、cd 都是锐角。

很明显零维不行:没有单位向量。

很明显一维不行:两个单位向量从不正交。

很明显二维不行:令 ad 为 xy 轴,则 bc 必须都和坐标轴不重合,此时 abcd 中存在钝角。

三维,考虑 a=(1,0,0), d=(0,1,0), b=(1,1,sqrt2)/2, c=(1,1,-sqrt2)/2 ,所以可以。
要加到旧 commit 里面(“所有”版本控制作此理解的话)的话,先 git checkout -b new old_commit 然后把 new 调整到你希望的状态,再 git checkout -b new2 previous_current 再 git rebase new 。

当然如果希望新的历史还时刻反映忘记版本控制的文件在创造旧历史期间的变化,那当然无法自动完成,因为这些信息已经丢掉了,可以如上,但每个旧历史的 commit 都 cherry-pick 再修改到你希望的状态。

还有一种是在当前的 commit 上继续产生数个 commits ,用来表达对每个旧版的修正,然后 git rebase -i 重排、合并让历史看起来完美。
git add -f path/to/file
30 天前
回复了 JaxHome 创建的主题 Python 怎么便捷的运行写好的 py 文件
建立一个 python.exe 的快捷方式,然后修改命令行使其运行你的 Python 代码,然后设置快捷方式的快捷键。

快捷方式在桌面或者“开始”菜单文件夹里面的时候,它的快捷键会生效。
( Windows 11 上的位置应该类似,但我没用过 Windows 11 。) Windows 10 的 Settings 里面点 Time & Language ,里面的 Windows Display Language 决定

>windows 系统的窗口(比如文件夹管理器、控制面板,settings )是英文的;

里面的 Preferred languages 列表决定

>windows 自带的应用程序(比如画图板、截图工具)是中文的;

Microsoft Store 里的 app 如果支持多语言应该会自动下载各种语言资源,并采用最接近的语言。Office 的话是安装器决定了支持的语言,如果只安装了一种语言,则不受 Preferred languages 影响。

@busier #2
>然后点复制账户设置到欢迎屏幕、系统账户和新用户帐户

这个只会改变欢迎屏幕和新用户的语言,以当前用户身份运行的程序理论上不受影响,而 Microsoft Store 型 app 都是当前用户身份的。
@NewYear #8 可以把程序放在只有该用户有权限控制的位置,然后设置杀毒软件的忽略名单。我自己的某些用户用 PowerShell 作为 shell ,没有被修改过。另外就是 shell 的设置不值得病毒使用,因为想要做到开机自启有无数种办法(任务计划、Run 、RunOnce 等等等等),把自己设置为 shell 是非常麻烦的一种。
写一个自定义的 shell ,然后设置目标用户的 HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 里面的 Shell 值( REG_SZ 字符串)为你的 shell 的完整路径。

你的 shell 需要是一个 GUI 程序,并且 bitness 和系统相符,它调用 SHGetKnownFolderPath 获得用户的桌面文件夹,注意 dwFlags 应该设置 KF_FLAG_DONT_VERIFY ,然后等待这个文件夹可以被访问(或者超过固定时间),然后 CreateProcessW 启动 explorer.exe ,然后自己退出。

参考阅读:
https://learn.microsoft.com/en-us/previous-versions/windows/embedded/ms838576(v=winembedded.5)?redirectedfrom=MSDN
https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath
https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw
34 天前
回复了 royalknight 创建的主题 分享创造 写了个汉字转 hex 颜色的 js 库
kanji 是日语汉字,中文的汉字应该写 Chinese character 、hanzi 。
34 天前
回复了 meisa 创建的主题 问与答 关于美国免税州的疑问
那一栏叫做 taxes & surcharges ,并不是只有税额,另外 Oregon 的消费税是零,但无线通信税不是。看起来它代收的税额和 2024 年最新的规定不同(比法定额少)?

另外不要把“充值”和“消费”混为一谈:充值是借钱给电信公司,此操作不能代收税,因为本质上未发生交易;消费是客户支付对价获得服务,电信公司代收各种交易类型的税且计提收益,从而导致公司本身也需要交营业类型的税。
35 天前
回复了 LAMoon 创建的主题 问与答 字节跳动的 AI 标注实习生可以去吗?
数据标注是对科学进步有意义的工作,比如李飞飞教授的 ImageNet 项目,但标注工作本身的内容对学习知识和充实简历没有帮助。
https://github.com/GeeLaw/bio-site 支持 BibTeX ,设计比较朴素就是了
37 天前
回复了 CatBoy 创建的主题 Apple 你的账户已在 App Store 和 iTunes 中被禁用。
>账户余额都作废了

这很可能是违法的,中国人在中国用美国的信用卡和 Apple 交易,可能适用:中国、美国联邦、信用卡发卡地、绑定该信用卡时持卡人在美国的州、加州,的法律。我的理解是充值到 Apple 账户里的金额等同于 gift card ,在此理解下,美国联邦级别的法律禁止最后一次活动后五年内令充值余额作废,加州法律禁止余额作废。

最不济,你可以在线提交或者致信你的银行,要求他们撤销所有曾经用于该 Apple 账户的交易,至少余额部分是非常合理的,毕竟 Apple 未能完成它在此交易中承诺的对价。
改变思路,用一般关系而不是函数关系。
42 天前
回复了 ohayoo 创建的主题 数学 大佬们,一年级数学题帮忙看下
“再”是赘语,“过三天就知道结果了”和“再过三天就知道结果了”的意思是一样的,但后者可能暗示“已经等过了”并包含迫切感。确实是语文题,然后我相信我的汉语语言能力。

文心一言的答案是驴唇不对马嘴。

@Vegetable #13 配图真是措手不及!
@geelaw #9 没有超过 size_t (((φ(◎ロ◎;)φ))) 是 MSVC 只支持至多 2147483647 个元素。
new char[2,701,131,776] 会分配长度是 776 个元素的 char 数组,不是你期待的 2.51 GB 。

int main() { new char[2701131776] { }; }

这个程序在我的电脑上编译为 64 位的话可以正常运行,并且确实占用了 2.51 GB 内存,如果用 32 位编译器则编译失败,因为分配的数组规模超过了 size_t 。

抛出 std::bad_alloc 的意思就是分配失败,或许你的页面文件和实体内存不够大。

如果数据来自于文件,可以用内存映射文件,Windows 的文档是 https://learn.microsoft.com/en-us/windows/win32/memory/file-mapping
POSIX 的文档是 https://pubs.opengroup.org/onlinepubs/9699919799/functions/mmap.html
> C 语言中打印指针的值打印的是 OS 分配的虚拟地址的值吗?

不是,它打印的是这个指针的整数表示。没有要求指针的整数表示必须等于操作系统级别的虚拟地址。当然,最常见的实现里,指针的整数表示就是它指向的对象的内存位置的虚拟地址。

> 要怎么知道 OS 给这个 C 程序进程分配的虚拟地址的大小呢?

操作系统不给“C 程序”分配虚拟地址,“虚拟地址”的大小可能也不是你想要的那个答案。操作系统为每个进程提供虚拟内存,每个程序都以为自己占有全部寻址空间的虚拟内存,虚拟地址的大小和处理器有关。

有意义的问题是:一个进程如何知道自己的虚拟内存里有多少页是可读的、可写的、可执行的?这个问题无法从 C 语言的抽象层级回答,你需要操作系统的 API 。

> 并且如何知道哪一块内存大小是可以读可以写,以避免出现下面程序的 Segmentation Fault 呢?

在 C 语言看来,只有 malloc 等分配得到且未 free 、realloc 等的、取静态存储期对象的地址得到的、取自动存储期对象地址得到且该对象还未离开作用域的指针,以及它进行有定义算术运算得到的指针,才是有效的指针。解引用无效指针的效果是未定义行为,段错误仅仅是它的一种表现方式。

当然,结合操作系统 API 之后有更多获得有效指针的方式。但楼主本来的这个问题意义不明——如果你不知道一个指针怎么来的,使用它有什么意义呢?如果你知道一个指针怎么来的,那你当然知道这个指针是否有效。
43 天前
回复了 pig1984 创建的主题 Chrome Windows 下的 Chrome 玄学问题讨论
查看你的 Chrome 快捷方式的命令行是否有参数改变其行为。
@geelaw #2 更正:隐式声明是 int system();

#11 空白的参数列表的意思是没有提供参数列表信息,并没有对不上。
1  2  3  4  5  6  7  8  9  10 ... 172  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1768 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 00:40 · PVG 08:40 · LAX 17:40 · JFK 20:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.