geelaw 最近的时间轴更新
geelaw
ONLINE

geelaw

🏢  UW / 博士生
V2EX 第 202505 号会员,加入于 2016-11-22 23:09:06 +08:00
今日活跃度排名 10767
Clubhouse 真的很像不久以前我测试过的一个 app
分享发现  •  geelaw  •  2021-06-25 16:12:06 PM  •  最后回复来自 nullcoder
9
C# 泛型、duck typing、高效枚举
C#  •  geelaw  •  2020-09-28 04:59:01 AM  •  最后回复来自 good1uck
1
HTML 里的“词边界”
分享发现  •  geelaw  •  2020-02-25 05:22:00 AM  •  最后回复来自 geelaw
3
如何自动化“固定到任务栏”
分享创造  •  geelaw  •  2020-02-14 19:00:25 PM  •  最后回复来自 ysc3839
4
谨慎安装 Edge (Chromium) 稳定版
分享发现  •  geelaw  •  2020-02-21 22:00:12 PM  •  最后回复来自 ericguo
13
在 Windows 上轻量地隔离 app:以百度云管家为例
  •  1   
    分享创造  •  geelaw  •  2022-11-23 15:35:11 PM  •  最后回复来自 723X
    26
    刚刚 rm -rf ~ 了
    程序员  •  geelaw  •  2019-12-30 11:19:02 AM  •  最后回复来自 doveyoung
    8
    我的静态博客 BibTeX 插件完工啦~🎉
  •  1   
    分享创造  •  geelaw  •  2019-08-19 04:17:49 AM  •  最后回复来自 Or2
    1
    用 JavaScript 解析 BibTeX
    分享创造  •  geelaw  •  2019-08-23 23:10:00 PM  •  最后回复来自 hronro
    3
    geelaw 最近回复了
    首先,Windows 不可能要求 txt 文件一定按某种格式存储,或许你的 txt 文件里面只有三个字节。所谓 Windows 的换行是 \r\n 是指通常的 Windows 软件会这样存储换行,但如 VSCode 等代码工具可以配置换行方式。

    其次,这是 C 语言的抽象,任何平台的行分隔序列、行结尾序列,在文本模式下都会在通过 FILE 进入 C 语言时被变换为 \n ,并且 \n 会在通过 FILE 进入平台时换成平台特定的序列。要获得文件的字节内容,应该用二进制操作,即 rb 、wb 。
    3 天前
    回复了 xbleey 创建的主题 问与答 假护照是怎么离境的
    如果拿的是外国护照且该护照是真的,或者是真护照篡改而来且篡改前的护照没有被报失且篡改得很好,那么边检很可能无法意识到这一点。
    喔另外 Win32 的文件 API 是支持 \ 和 / 作为通常的路径分隔符的,实际上自从 MS-DOS 2.0 和 Windows 1.0 开始就一直支持两种方向。

    https://retrocomputing.stackexchange.com/a/28348
    会影响到传统 exe ,但补全导致的通常不会。

    考虑 a.exe /b 这里 a.exe 会优先解读 /b 为一个开关、选项。如果写 a.exe \b 则 \b 通常是指当前磁盘根目录下叫做 b 的文件。补全一般会得到带盘符的绝对路径,比如 a.exe C:/b 和 a.exe C:\b ,这两者都只能被解读为路径,所以没问题。

    另外我不太懂楼主设置的代码是否只在补全路径的时候才调用——有的时候按 Tab 补全的是参数的范围,此时贸然把 \ 替换为 / 是错误的。此外,还有 UNC path ,我不记得 UNC path 把 \ 改成 / 是否有效。
    14 天前
    回复了 rabbbit 创建的主题 C++ C++ 如何在函数中获取作为参数的数组的长度?
    @GeruzoniAnsasu #11 应该这样做可以改进可执行文件大小:

    void foo(int *array, size_t length);

    template <size_t length>
    void foo(int (&array)[length])
    { foo(array, length); }

    最终结果里面 foo 模板的实例应该都会内联从而完全消除。如果要支持实参传递则要实现为 functor……
    >虽然他是一个网页,但是它所有代码都是在你的浏览器里运行的,所以他是单机的。

    这个说法很怪,一般认为浏览存储在远程计算机上的静态网站也属于非单机活动。

    亲自演示即可证明楼主需要表达的,比如新建一个文件并重命名为 a.htm ,在里面写个 aaa 或者用 script 包裹一段调用 alert 的代码,然后双击这个文件,那当然就会在浏览器里打开并且看到,此时很明显是非联机。也可以用 Word 另存为 HTML 之类的。
    17 天前
    回复了 mmddisa 创建的主题 Windows Windows txt, docx(doc), xlsx(xls) 文件不显示缩略图
    最后,txt 文件在默认状态下没有 IExtractImage——这可以用 IQueryAssociations 发现,或者查看注册表 HKCR\.txt 以及 HKCR\txtfile 以及 HKCR\SystemFileAssociations\text 里面都没有 IExtractIcon, IExtractImage, IThumbnailProvider 的注册。OneDrive 会提供 .txt 的缩略图。
    17 天前
    回复了 mmddisa 创建的主题 Windows Windows txt, docx(doc), xlsx(xls) 文件不显示缩略图
    多嘴一句,为什么云文档需要特供的缩略图等 shell 功能?因为云文件不一定已经下载到本地,而为了显示缩略图或者文件预览下载文件是大忌,所以云文档的缩略图由云存储提供商准备。

    参考阅读 https://devblogs.microsoft.com/oldnewthing/20170503-00/?p=96105 另外提示链接里文章的 online 和 offline 的意思和当今常见的一种用法相反。
    17 天前
    回复了 mmddisa 创建的主题 Windows Windows txt, docx(doc), xlsx(xls) 文件不显示缩略图
    OneDrive 有缩略图是因为是 cloud file provider API 提供的,见 https://learn.microsoft.com/en-us/windows/win32/cfapi/build-a-cloud-file-sync-engine

    Word 文档必须保存缩略图才能被 IExtractImage 接口( Word 的实现是 CLSID = {355822FC-86F1-4BE8-B5F0-A33736789641})提取缩略图,开启这个功能有两种主要方法。

    第一种:在 Word 里随便新建一个文档,点功能区 File 选项卡,再点左侧的 Info 选项卡,再点 Properties 下来列表,点 Advanced Properties ,在 Summary 选项卡选中 Save Thumbnails for All Words Documents 复选框,点 OK 。

    第二种:在 Word 里按 F12 ,在 Save As 对话框里选中 Save Thumbnail 复选框,然后保存。
    >异步方法中根本没办法使用锁, 顶多用用信号量 Semaphore 来代替锁.
    >貌似也没法仅对非异步代码进行加锁, 因为同步异步代码是混杂在一块的, 没法单独对非异步代码进行加锁.

    规则是 lock 里面不可以有 await (可以实现,但是几乎总是错误的,因此语言层面拒绝这样做),在 async 方法中 lock 是完全 OK 的。

    ConcurrentDictionary 已经确保每次访问它的成员都是原子的,然而这不代表对它的访问逻辑就已经线程安全,比如一段代码里连续访问它的成员两次,那么在中途其他线程可能已经修改过了这个字典。说这点是预防针,楼主在 #14 提到这是为了确保 Device 存在 devices 里面的引用安全。

    要保证每个 Device 实例线程安全,最简单的思路是细粒度,比如操作每个 device 的时候 lock 之。如果操作过程需要异步,那么我想象中楼主说有多个线程查看 devices 并做一些事,意思是如果 A 线程处理了 device1 则 B 线程应该跳过并处理 device2 ,这种情况下因为 device 被占用时无需等待,所以可以用 interlocked operation 实现:

    1. 在 device 上加上一个 int 字段 InUse ,表示目前是否在处理它,初始化为 0 。
    2. 要访问一个 device ,先用 Interlocked.Exchange 查看 InUse 并设置为 1 ,如果 InUse 之前也是 1 ,则跳过。
    3. 否则 InUse 之前是 0 并且被原子设置为 1 ,此时当前方法认为自己接管该 device 并开始异步硬件 API 操作,在 await 结束、处理完 device 后,重新 Exchange 把 InUse 还原为 0 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5385 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 06:58 · PVG 14:58 · LAX 23:58 · JFK 02:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.