轻松理解 Monad(Lua 描述)
轻松理解 Monad(Lua 描述)阿楠 2021-11-15
引子这些年看过不少介绍 Monad 的文章,不过前段时间看到的一篇感觉是所有文章里面最容易理解的。然而最近我试图回想里面的内容,发现还是只记得一些残破的碎片。于是准备再温习一遍。想了想,干脆这次尝试一下根据自己的理解来转述一下,这样印象更深一些,毕竟教才是更好的学的方式~
顺便也改用我目前的主力开发语言 Lua 来进行描述。之前看过 Haskell、OCaml、Kotlin、Javascript 等版本的 Monad 介绍了,我也提供一个 Lua 版本吧。刚好我在知乎上开的专栏 “Lua 实验室” https://www.zhihu.com/column/lua-lab 也好久没有更新过了,可以发上去充个数~ :P
我第一次接触 Monad 这个概念,是在学习 Haskell 的时候。确实,Monad 在 Haskell 里更为常见,因为 Haskell 中仅允许纯函数。在纯函数的环境下,很多操作都要依赖 Monad 来实现。
大部分语言里并没有这种限制,但是自觉的尽量使用纯函数常常也是很有用的,有利于程序的优化和理解,使 ...
解决龙骨工程图片较多时编辑器卡顿的问题
解决龙骨工程图片较多时编辑器卡顿的问题问题最近发现龙骨编辑器经常卡顿,特别是切换一下窗口之后就又卡很久,很影响使用。经过排查发现是跟项目资源库中的图片数量和图片大小有关,图片越多越大的话,卡顿就越严重。
解决用的龙骨编辑器是最新的 v5.6.2.0001 版本,没有源码,于是尝试用反编译swf的工具来直接修改,用了 JPEXS Free Flash Decompiler v.14.4.0 。之前也简单用过这个工具,还挺好用的。
从龙骨编辑器的安装目录中找到 DragonBonesPro.swf,用 JPEXS 打开进行分析。
可以从二进制数据中导出定义本地化字符串的 locales 的 xml。方便从提示的字符串反查字符串ID,再用于搜索相关的代码。
经过测试分析,感觉是编辑器在程序窗口获得焦点时,触发了重新扫描资源库的逻辑,从而引起卡顿。
经过一番研究和尝试之后,想到一个思路是找到窗口获得焦点事件的响应函数,避免执行不必要的会引起卡顿的逻辑。
通过在代码中搜索 Event.ACTIVATE,可以找到 _555.LibraryPanelController 类中的 _1576() 方法 ...