duangsuse::Echo
709 subscribers
4.23K photos
127 videos
583 files
6.44K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from dnaugsuz
我应该用递归下降法的
Forwarded from dnaugsuz
之前写的 lexer 也很草
Forwarded from dnaugsuz
说了这句话我就开始写,结果发现我自己其实也就是个弟弟
Forwarded from dnaugsuz
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from dnaugsuz
构造 Call(callee, param) 的时候突然发现自己扫 callee 的时候没存。
看来整个都没有用了,毕竟是递归结构……

我根本不清楚到底要写什么…… 一开始就给整的 generator,我都忘了本来是
# Expr = name '(' Expr {',' Expr}? ')' | name | digits
# predefined names: True, False, None
call_syntax.py
2.6 KB
本以为是个王者(迫真)最后发现是个菜鸡 #Python #code
草,不写了不写了我投降
call_syntax.py
3.2 KB
In [4]: parse(tokenize("dsds(True,False,None,dss(232))"))                                                           
Out[4]: Call('dsds', [Const(True), Const('False'), Const('None'), Call('dss', [Const(232)])])
又不是不能用(暴论
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from dnaugsuz
就因为 Iterator 没打算写 lookahead (因为我把这个当 feature,认真的)
然后这里又没有 ParserKt 的 contextual,就顺手用了 exception 来处理需要 lookahead 的 Name / Call…… 正常返回是 name、abnormal termination 是读到 ',' 了
结果就把 Expr {',' Expr} 写出了这种清奇的画风,又因为 toplevel() 也可能读到闭括号(我没做好读取数据处理域控制)
我就顺手给 toplevel() 加了个逻辑……

但是还是可以用,我就 ***了
大概就是想把 lookahead 变成在栈上 "lookbehind",结果失败了草(name 的后面一个 token 肯定是 '(' 或 ',' ,但应该取决于是不是在括号内才对啊……)

ParserKt 可以处理这种文法,不过是通过 Piped 解析器处理的,如果读完 Name 后还能找到 ( 的话就可以再继续读下一部分,否则直接返回无消耗,前提是 k=1

完全不支持 lookahead 真的可行吗……其实支持也不需要花多大力气
dnaugsuz
就因为 Iterator 没打算写 lookahead (因为我把这个当 feature,认真的) 然后这里又没有 ParserKt 的 contextual,就顺手用了 exception 来处理需要 lookahead 的 Name / Call…… 正常返回是 name、abnormal termination 是读到 ',' 了 结果就把 Expr {',' Expr} 写出了这种清奇的画风,又因为 toplevel() 也可能读到闭括号(我没做好读取数据处理域控制) 我就顺手给 toplevel()…
这个 name',' 的问题可以视为是一个代码复用性的问题。 #PLT #DontKnow

在 Toplevel 里, name '(' ;在 Call 里, name ','
可以预读 name 后面的 punctuation ,但是总有不像预期的 ( 那样的情况,这时就需要特殊处理
为了复用 Toplevel 解析器,就必须做到对非 expected token 情况的处理,比如把预取的东西放回去,看等下别的子解析器会处理——最简单的做法
否则的话,Toplevel 里有一套 disambigNameCall 、Call 里面的另一套不仅预取继承自 Toplevel 的,还得有为 ',' 时继续扫描下一个逗号切分项目的能力(可以用异常之类的传递,但那没法类型安全)

一般来说,lookahead 并不是一件特别难的事情好不好…… 这个文法就可以用 LL(1) 流,只需在读完 name 后看一下 peek 是不是 '(' 即可 disambiguate 了。

ParserKt 之所以可以用 Piped,是因为它的流本身带一个 peek(1) 的能力,相当于 lookahead-1 的文法都是支持的,但它没法优雅地支持更多 lookahead、更复杂的文法了。
Forwarded from Fan Dang
话说 vertx deploy 多个实例,为啥他们能共用一个 tcp 端口?(指 HTTP 服务
Forwarded from 神林| 我永远喜欢阿里云|AS45102
Windows下系统内核有专门的方法能自动帮你监听完了同时发给你两个软件,Linux下也是一样的原理
Forwarded from 神林| 我永远喜欢阿里云|AS45102
就好像你NGINX是主进程在收消息,子进程处理
🤔 #Kotlin ParserKt 的新一版也打算把 reversedMap() 给变成 asserted 模式,添加更多更“早期”的检查。
并且,把原先利用 Piped 的 integral.fractional 解分支+解析 给变成了 ContextualRight (顾名思义是),现在没列到 "PWOC SDRIES CCDPAC SJIT NLL" 里的有 MapPattern, TextPattern, LexerFeed, GreedyPattern, RangedGreedyPattern, ContextualRight (当然不包括 PairedTriePattern, DictPattern 什么的) 了(就可以完整利用预定义类来写 JSON 解析器了)

草,刚才发现 ContextualRight 还不如直接用 Piped 来得痛快呢……

我还是给它的 companion object 添加 Piped.ifSome 吧,免得每次对解析结果 it?.let {}

感觉 map 方法编写的标准流程是 clone + set transfrom get
#Cplusplus #CV 🤔 讲真,我真的不喜欢 OpenCV 的动态属性,它把本来可以轻易自动补齐的东西变成了还要查会文档、本来可以更强类型的东西做成了一堆 int
不仅使用动态属性,还不对常见 prop (比如 fps, position) 做些辅助属性……

In [1]: from cv2 import CAP_PROP_POS_MSEC 
CAP_PROP_POS_AVI_RATIO
CAP_PROP_POS_FRAMES
CAP_PROP_POS_MSEC


OpenCV 的 waitKey(block_ms) 比较魔性,它会像 getchar() 一样有一个缓冲区,是队列 pull 模式,而不是你不 waitKey() 击键就无效。
突然觉得对于 pull 事件来说,scanner 都可以用来做对 modifier key 的支持
说实在话,这个正常状态和暂停状态的处理,为了性能我用的是控制流而不是状态机。 为此代码复用有点不好做,毕竟有些 break return 什么的都得是 local 的,没有 macro 直接 inline return 什么的选项,不知道有没有更好的解决方案。 除了用 def+nonlocal 复用部分逻辑外,有没有办法直接把 key=='q': break 带到 paused 的控制结构状态里去,可能很难吧。
我刚才给 gui_crop_select.py 脚本添加了 timline seek/pause 的功能,并且在 paused 状态下也可以 <> 和 crop。
https://github.com/duangsuse/extract-subtitles/commit/a1f7927a481ee7a16a9dcb848286543beda41944
特性添加是为了使精准提取真正可能。
if miniseek in frame_ops: frame_ops[miniseek]() #of key-char [89]
草,本来想用 ord('9') - ord('8') 玩魔法的……