bilibili-get 开发吐槽笔记
新!发!布!
不需要过多解释,bilibili-get 就是这样一个工具。
bilibili-get 支持目前最为常见的几种 URL,还支持运用 cookie 让您享受大废员清晰度。
—— 我是开发(lao)笔记(sao)的分割线 (๑•̀ㅁ•́๑)✧
Emscripten
假期的最后两天,毛毛雨。打开 debugger 开始分析,协议逆向是个很杀时间的麻烦事,看着 Emscripten 生成的代码试图回忆编译原理的各种方法,最后还是放弃了这些非分之想。靠着土办法找到 cwrap
和 XB.addFunction
两个入口函数再从调用栈反向追踪得到参数变量的含义。提取整个 Emscripten 模块的代码。封库。
来来去去捣鼓了两三个小时,debugger 经常在 unwind 各种奇怪的调用栈的时候卡死(比如 Vue 的调用栈)刷新一次页面马上断点了往往要等几分钟才能把调用栈展开,仔细想想也许是因为用了调试器异步栈追踪的功能。
原生 C/C++ 程序运行速度约为 Python 的 10 到 100 倍。
结果来看,混淆方面 Emscripten 已经比 uglify 不知高到哪里去了,据说对比原生 C 程序也仅仅产生 50% 的性能损耗。这样的性能足够运行 ONScripter 和一些比较简单的游戏引擎,期待满满。
function* 的怪异美学
每每写 JavaScript 的时候总是纠结——
「用 generator 还是 async function 做异步流控制」
转眼都 8012 年了,问我资慈不资慈 ES7,结论当然是吼啊。像 destructing assignment、spread operator 这些新特性用起来简直不能再爽,可是一旦提到 async / await 就让人难受。
async / await 语义虽然更加正式,写法却并不怎么漂亮。
var f = async function () {
await f();
};
一方面 async function
表达不如 function*
紧凑,呆板的 async 关键字也比 function* 的星号少了几分精髓感。
var f = co.wrap(function* () {
yield f();
});
VB6 的函数是用 Function
定义的,而 Subroutine 简写成了 Sub
。
类似的感觉还有 Kotlin 和 Go 的 fun
,一个 tab 就补全的东西至于惜字如金么!就连 VB6 都没这么过分,皮这一下很开心是么!(真开心)
不过要是真写成 asynchronize function 这样非常 Java 的声明也不会有太多人喜欢,各人有各人的偏好,所以到底还是 function* 这种乍看不明所以,细品津津有味的感觉好。
axios vs. request-promise
如果有再给一次选择的机会,绝对选 request-promise。
第一次写 Node.js 爬虫(是的,不过是一个爬虫)想都没想用了比较熟悉的 axios,想不到马上就被坑了。遇到第一个坑的时候是有想法做点 contribution 帮别人填上的,又是一番捣鼓,想着把车胎补好总可以安心上路了,扑通,又一坑。
踩到第二个坑是真的生气了,这还造什么自行车嘛!换了!
至于坑在哪,不重要了。
以上,bilibili-get 开发吐槽笔记。祝您工作顺利,身体健康。