TGTGInsighttelegram intelligenceLIVE / telegram public index
返回频道列表
Hypercube's Channel avatar

TGINSIGHT CHAT

Hypercube's Channel

@SmartHypercube_channel

科技

@SmartHypercube 随便发最近关注的东西 欢迎找我私聊讨论 可以使用 Telegram 的转发功能转发消息

Subscribers218频道当前订阅规模
Tracked posts244频道帖子计数
Recent reach287最近帖子视图总和
Recent posts

最近帖子

第 21/21 页 · 共 244 条

发布 9月1日

Python 有一个 context manager 的概念,可以用来保证退出某个文法上下文时一定释放某个资源: with open('foo') as f: print(f.read()) 其原理是 with 语句在进入时调用 f.__enter__,如果成功,保证在退出时调用 f.__exit__。 类似地,Haskell 中有 bracket pattern 的概念: withFile "foo" ReadMode (\f -> do content <- hGetContents f putStr content) 其原理是构造了一个接受 f 的函数,表示 with 内要做的事情,把它传给 withFile,由 withFile 调用,并保证退出时关闭文件。 这两种设计有一个很大的区别:能否容易地写出一个安全的 context manager,它“包装”其他一些 context manager,保证每一层的语义都正确?Python 这样写是不对的: class Outer: def __init__(self): self.inner1 = Inner1() self.inner2 = Inner2() def __enter__(self): self.inner1.__enter__() self.inner2.__enter__() def __exit__(self, *exc): self.inner2.__exit__(*exc) self.inner1.__exit__(*exc) 因为如果 inner2.__enter__() 出错,inner1 将不会被关闭。如果想要写得安全的话,不应该手工调用 inner 的 __enter__ 和 __exit__,而应该利用绝对安全的 with 语句来管理 inner。但 __enter__ 和 __exit__ 是两个不同的函数,没法跨越文法上下文的边界使用 with 语句。 Haskell 的 bracket 风格的函数就很简单了,可以直接套起来: withOuter action = withInner1 (\a -> withInner2 (\b -> action a b))

90 views

发布 8月29日

今天学到的知识: apt install vim-gtk3 可以装上一个打开了 clipboard 支持的 vim(Debian 默认的 vim 编译时没开 clipboard) 然后 vimrc 中写: set clipboard=unnamedplus,autoselect,exclude:cons\|linux vim 就会用系统剪贴板了,和其他应用一样双向支持: - 在任何地方选中文字,在另一个地方点击鼠标中键粘贴到点击的位置(primary 剪贴板) - 在任何地方复制文字(对于 vim,删除命令也能复制),在另一个地方用粘贴功能粘贴(clipboard 剪贴板) - 额外地,在两个 vim 之间传输块状选区时,选区形状信息也会传输(和 vim 之外的应用交流时只支持纯文本)

96 views

发布 8月28日

最近 YouTube 有两点让我很不爽: 1. 现在所有视频打开时默认都不开字幕,需要手工点一下才行。以前几乎所有视频都会自动开启字幕的,除非字幕不是我想要的(比如是自动生成的字幕并且语言识别错了) 2. 只能选择默认低画质或高画质,不能选择默认某个具体画质。然而我习惯的画质介于“低”和“高”中间。

101 views

发布 8月28日

Channel created

views
12•••10•••192021
上一页第 21/21 页下一页