V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 43 页 / 共 177 页
回复总数  3531
1 ... 39  40  41  42  43  44  45  46  47  48 ... 177  
2020-10-10 22:58:22 +08:00
回复了 golp2000 创建的主题 Python 如何向 word 里面插入一个分页符?
我觉得很诡异的是楼主都用 win32com 了居然没发现 VBA 和 win32com 都只是 COM 的投影罢了。
2020-10-09 18:11:33 +08:00
回复了 chengxiao 创建的主题 Go 编程语言 Aes 加密 CBC 模式的 Nopadding 填充在 GO 里怎么实现啊
为了数据安全最好还是不要对接这个系统,使用非伪随机的密钥以及使用密钥相关的 IV,都会破坏 AES 所有的安全保证。
2020-10-09 07:44:21 +08:00
回复了 lifetimeporn 创建的主题 分享发现 Win10 默认图标
直接不设置图标不就行了,还可以自适应系统更新后的图标变化。
2020-10-06 17:24:46 +08:00
回复了 mart1nN 创建的主题 数学 函数在某一点连续能否推出在该点的邻域连续?
@geelaw #3 Oops,太久没练习都生疏了。黎曼函数是那个只保留分母的……我提到的那个累积概率函数是严格单调且在且仅在无理数点连续的函数。
2020-10-06 17:22:33 +08:00
回复了 mart1nN 创建的主题 数学 函数在某一点连续能否推出在该点的邻域连续?
@LaureatePoet #2 如果你说的是 xD(x),它只在 0 连续。仅在无理点连续的函数构造不那么简单,需要弄一个 Q 上每点概率都非零的概率测度,然后考虑它的累积概率函数。

极限存在和去心邻域连续是完全不同的概念,产生这样的错觉是非常严重的想当然。正确的直观:每个点的极限都只和这个点的去心邻域有关,而任意两个不同的点都可以找到分别的去心邻域使之不相交,特别地,这包括一个点的任意一个去心邻域里的任意一个点。因此一点处的极限不可能导出该点任何去心邻域里任何点的极限性质。
2020-10-06 17:12:49 +08:00
回复了 zxCoder 创建的主题 JavaScript 闭包为什么叫闭包
https://i.loli.net/2020/10/06/h6lNvGms2EU7DjS.png

另一个类比:匿名函数 = CPU (提供逻辑),匿名函数所捕捉的变量 = 主存等其他设备(提供环境),闭包 = 可以使用的电脑。
2020-10-06 05:35:50 +08:00
回复了 fuse 创建的主题 问与答 为了方便添加公钥到各个机器, 公布公钥有风险吗
@Mutoo #11 有不代表现在有人用。

@threebr #14 正确的说法是“我们不知道如何在合理时间内破解”。

@helloworld000 #17 不可以,反过来用会丧失所有安全性。如果你看了任何暗示公私钥可以交换的“科普”,最好忘记。

@fuse #23 即使是最 naive 的 80 位安全性,几千万应该也不够在 10 年之内破解出来。

公钥在使用过程中本来就可以公开的,放不放在 GitHub 上对真正对目标有兴趣的攻击者区别不大。比较大的问题是如何确保从互联网得到的公钥是自己想要加的那个,而不是篡改过的。GitHub 应该还是信得过,“其他便于获取”的地方就不一定了,得看哪儿。
请问你说的是 C++ 的 operator ()、C# 的委托、Python 的可调用类型、JavaScript 的 function 吗?
@lxilu #1 idiom
2020-10-03 20:58:22 +08:00
回复了 lxilu 创建的主题 C# Java Stream.iterate() generate() builder() C#怎么搞?
很简单,使用一个 struct 包装之,在优化全开的情况下可以做到零额外开销:

public static class Helper
{
public struct FluentList<T>
{
public readonly List<T> List;
public FluentList(List<T> that) { List = that; }
public FluentList<T> Add(T item) { List.Add(item); return this; }
// Add other methods as needed.
}
public static FluentList<T> AsFluent<T>(this List<T> that) { return new FluentList<T>(that); }
}

// Consumer
var list = new List<int>().AsFluent().Add(1).Add(2).List;

另外生成无限默认值比较好的方法是自己写一个实现,很简单:

public sealed class InfiniteStream<T> : IEnumerable<T>, IEnumerator<T>
{
public InfiniteStream<T> GetEnumerator() { return this; }
public IEnumerator<T> IEnumerable<T>.GetEnumerator() { return this; }
public IEnumerator IEnumerable.GetEnumerator() { return this; }

public void Reset() { }
public bool MoveNext() { return true; }
public T Current { get { return default(T); } }
public object IEnumerator.Current { get { return default(T); } }
public void Dispose() { }

private InfiniteStream() { }
public static readonly InfiniteStream<T> Instance = new InfiniteStream<T>();
}

如果需要也可以写一个 struct 版本的。
2020-10-03 19:54:25 +08:00
回复了 richards64 创建的主题 程序员 一个感觉难以理解的的 C#代码片段,想知道这是为什么
@lights #11 显然这里一共 new 了 5 个东西,一个是提供状态的对象(即编译器生成的),接下来每次赋值给委托的时候都 new 了一个 Action 。每个 Action 都引用了同一个状态对象的同一个方法,至于为什么同一个状态对象,这是因为 i 的 scope 只进入了一次。这里的 for 循环等价于

for (init; cond; next) body;

{ // 1
init;
while (cond)
{ // 2
body;
goto_continue:
next;
} // 2
} // 1

循环变量 i 的 scope 是 1,而 scope 1 只进入了一次,所以只有一个状态对象。

如果你改成

foreach (int i in new int[] { 0,1,2,3 })

则在较新的 C# 编译器下会得到 0 1 2 3,因为这等价于

{ // 1
var coll = new int[] { 0,1,2,3 };
for (int idx = 0; idx < coll.Length; ++idx)
{ // 2
int i = coll[idx];
foos[i] = () => Console.WriteLine(i);
} // 2
} // 1

因为 i 的 scope 变成了 for 的里面,所以会进入 4 次,因此有 4 个不同的状态对象被创建,每个 Action 都会引用各自状态对象的方法。
@liminghui #4 更好的方法是关掉所有客户端的“在发件箱保存副本”,因为几乎所有现代邮件提供商都会保存发信副本。如果关掉网页里的设置,会导致网页上发出去的邮件没有存档吧。
2020-09-26 11:43:14 +08:00
回复了 wensonsmith 创建的主题 问与答 菜单名称后面为什么要加三个点?
@daozhihun #6 这个理解是错误的。正确理解是 #2 ( Windows 的规则也是这样)。

另外楼主截图里的菜单不符合正确规则,例如 System Preferences 和 App Store 都不需要加省略号,因为这两个命令就是打开 System Preferences 和 App Store 。

一个更简单的理解是:需要省略号,当且仅当菜单名字没有完整描述命令,且未描述的部分由用户选择。比如 Force Quit (some app)、Restart (and possibly reopen apps afterwards)。
@kiko #6 用 VBScript 可以实现“如果已经打开则转到窗口”的功能,因为文件夹的“打开”命令就是这样实现的。
于是可以这么写:

Set shapp = CreateObject("Shell.Application")
shapp.Open WScript.Arguments(0)

保存,比如保存为 C:\ShellExecute.vbs 。
然后建立快捷方式 wscript.exe "C:\ShellExecute.vbs" "C:\文件夹路径",比如保存到桌面,命名为 打开文件夹。
接着可以修改快捷方式的图标、快捷键啦等等,也可以固定到任务栏。

这个代码实际上可以打开任意文件。也有 JScript 版本:

var shapp = new ActiveXObject("Shell.Application");
shapp.Open(WScript.arguments(0));

扩展名必须是 .js 才能被 wscript.exe 正确解读。
> 希望是一个永远存在的任务栏图标按钮,点一下就打开这个文件夹。

2 楼的方法即可。

> 任务栏设置了自动合并同类按钮,打开多个文件夹会合并在一起,希望能建一个独立的快捷方式,不会被合并到其他打开文件夹的按钮上。

这个是不可能做到的,除非你自己实现一个 IShellFolder 或者自己实现一个 explorer host 。分组是根据 AUMID 确定的,除了先前提到的两个方法,无法改变一个 explorer 窗口的 AUMID 。
父类方法是指用 super 调用的基类中方法(的版本)。

例如
class B { public void Foo() { } }
class D extends B { @Override public void Foo() { super.Foo(); } }
这里面 super.Foo 调用 B.Foo 是编译时决定的。
2020-09-20 01:24:56 +08:00
回复了 1ver 创建的主题 Windows Windows 有没有这样的软件,集成在任务栏搜索框的词典
没有,在 Windows 8/8.1 和早期 Windows 10 是有的,这个功能已经被砍掉了。

虽然新版的 Windows 10 不能集成 Cortana 了,但是可以使用 deskband,这个至少从 Windows XP 以来到最新的 Windows 10 都是支持的。

https://docs.microsoft.com/en-us/windows/win32/shell/band-objects#desk-bands
2020-09-19 14:40:40 +08:00
回复了 horseInBlack 创建的主题 问与答 windows 这阻止关机的功能到底是咋做的
Windows 会话非强制结束时会询问所有程序“你准备好被关掉了吗”,如果程序(在一定时间内)没有回答,或者回答“没准备好”,那么 Windows 就不会关机,并提示用户“有些程序阻止了关机”,用户可以强制关机或者取消关机并处理没准备好关机的程序。

记事本属于“没有回答”,因为记事本会问用户“你要保存吗”,这是一个模态对话框,记事本只有在这个对话框关闭之后才会回答系统它“准备好了吗”,但用户此时无法回答记事本的对话框。

推荐的做法是在系统提问的时候进行自动保存,然后下次启动后恢复。通常来说程序会等自动保存完毕,并且完毕后回答“我准备好了”。一旦程序回答了“准备好了”,Windows 就可以关闭它了,这个处理是对每个程序进行的而不用等所有程序都 OK,所以你会看到很多程序会在“还没准备好”列表里出现一下,然后消失,因为它们在你取消关机之前搞定了一切。

有些程序会无脑回答“准备好了”,结果就是丢数据。例如不久以前的 Chrome 有这个问题,现在已经修复。
用户输入密码后判断密码是否符合设置时的要求,如果不符合,不用传入服务器验证,直接提示用户不符合要求。

这样做的好处是最小化和现有界面的区别。
但我觉得这样不好,并不是说这样做不安全(这样做完全不会降低安全性),而是通常的程序都有奇奇怪怪的漏洞或者有一些历史遗留问题,难以保证所有用户的密码确实都符合强密码的要求。如果用户成功设置了弱密码,那么这个检查将导致用户永远无法正常登录。

一个折中的办法是提示用户尝试的密码不符合强密码策略,故不可能是正确密码,但不阻止用户尝试登录,即用户可以选择“仍然继续尝试登录”。
2020-09-19 12:04:18 +08:00
回复了 VioletTec 创建的主题 问与答 求教:使用 BrainF**k 实现加减乘除还有没有更好的实现思路
看了一下原来你的乘法和我的思路一样 - -
1 ... 39  40  41  42  43  44  45  46  47  48 ... 177  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1266 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 44ms · UTC 17:53 · PVG 01:53 · LAX 09:53 · JFK 12:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.