语法由于 Nokogiri 那贫瘠的 API 非常难看且不简洁,由于我很累所以懒得优化
逻辑十分简单,但由于 Nokogiri 贫瘠的包装写得很难看
没有做容错处理,所以老是出现解析错误。
权当玩玩。本身也没什么复杂的逻辑
逻辑十分简单,但由于 Nokogiri 贫瘠的包装写得很难看
没有做容错处理,所以老是出现解析错误。
权当玩玩。本身也没什么复杂的逻辑
#life 好了,那又回到 duangsuse 的四日常(看问题讨论、说笔记、写文档做设计、写代码)之一了... 今天一行代码不写,最近一行代码都不写。主要还是逻辑弄明白... 🐸
Gekyll 啊、Pickle 啊、dio 啊
都不是今天的事,因为我最好不要熬夜,至少是目前
Gekyll 啊、Pickle 啊、dio 啊
都不是今天的事,因为我最好不要熬夜,至少是目前
反正就是那种菜到爆炸的样子... 虽然别人往往都很菜吧... 或者说大佬都比我多一两年的经验
... 有什么意义呢... 自己还是很菜啊,身边的人是什么水平尚且不能了解,怎么能以别人菜为由给自己优越感呢? 😶
是呢... 反正就是那种大佬一大堆的情况下系统管理都不会 Docker 也不会 ReactiveX 也没了解过的样子,啥是 Flowable 啊,啥是 Observer 啊
GoF 的 23 种 OOP 模式我又记住了几种呢?创建型的模式,工厂、构建器、抽象工厂外... 还有至少 3 个没记住啊... 不是天才呢... 为什么不能是天才... 那样一下子就什么都想到了 什么都明白了... 太菜了
... 有什么意义呢... 自己还是很菜啊,身边的人是什么水平尚且不能了解,怎么能以别人菜为由给自己优越感呢? 😶
是呢... 反正就是那种大佬一大堆的情况下系统管理都不会 Docker 也不会 ReactiveX 也没了解过的样子,啥是 Flowable 啊,啥是 Observer 啊
GoF 的 23 种 OOP 模式我又记住了几种呢?创建型的模式,工厂、构建器、抽象工厂外... 还有至少 3 个没记住啊... 不是天才呢... 为什么不能是天才... 那样一下子就什么都想到了 什么都明白了... 太菜了
duangsuse::Echo
反正就是那种菜到爆炸的样子... 虽然别人往往都很菜吧... 或者说大佬都比我多一两年的经验 ... 有什么意义呢... 自己还是很菜啊,身边的人是什么水平尚且不能了解,怎么能以别人菜为由给自己优越感呢? 😶 是呢... 反正就是那种大佬一大堆的情况下系统管理都不会 Docker 也不会 ReactiveX 也没了解过的样子,啥是 Flowable 啊,啥是 Observer 啊 GoF 的 23 种 OOP 模式我又记住了几种呢?创建型的模式,工厂、构建器、抽象工厂外... 还有至少 3 个没记住啊...…
(第一次见抱怨自己不是天才的,hhhhhhhh
不是天才也能活啊,连 PC 是啥都不知道的人、把 Android 平板当成 iPad 的人、成天晚上偷偷开着班上教学一体白板给自己的充电宝充电的人、把顶撞老师哗众取宠作为自己爱好的人、兴奋好奇地围观别人跳楼的人,不都还活着么...
不是天才也能活啊,连 PC 是啥都不知道的人、把 Android 平板当成 iPad 的人、成天晚上偷偷开着班上教学一体白板给自己的充电宝充电的人、把顶撞老师哗众取宠作为自己爱好的人、兴奋好奇地围观别人跳楼的人,不都还活着么...
不是天才的话 1k 小时定律依然是有效的啊,只要一直努力用心的做某件事情,一定就能得到想要的效果吧...
虽然这一切精力啊,都要分散到超过 10 个的子科目,子知识范畴里面去呢... 那就要 10k 个小时呢,就是两年也没关系,只要能做到想要的水平
虽然这一切精力啊,都要分散到超过 10 个的子科目,子知识范畴里面去呢... 那就要 10k 个小时呢,就是两年也没关系,只要能做到想要的水平
偶尔想回去看看曾经与 @drakeet 撕过的 B... 我真是无聊...
如果要这么做,内心肯定是抱着不服气并且想偷偷批判一番的情绪做的
因为啊,drakeet 可能是那个时候技术其实也不怎么样(当然现在也不怎么样)的我所觉得有点偏向「骄傲」的人呢...
... 好好想想,有什么意义呢?事实上我也没有做过这种事...
看不起就看不起嘛... 我不这么想就好了
其实后来发现我大概也是有错误的,没有了解他,人们各有各的性格,有些人受不了对自己的批评,有些人无法接受对自己软件的建议,可能有几个建议是错的就会比较恼火,实属正常。只不过自己不是这样的,就不容易交互角度思考
所谓大佬啊... 所谓神乎其技的「杂学」后端... 其实能活好,做到什么并没有什么差别?不过有些人想做一些其他方向更好的东西,就要学习一些可能是比较多、比较难理解或者由于谣传让人不敢碰的知识点,有何优越可言?都是一样的事情
算了算了开始说笔记(
(有人说晚上人们更偏向情绪化、感性化一些,果然如此?)跑
如果要这么做,内心肯定是抱着不服气并且想偷偷批判一番的情绪做的
因为啊,drakeet 可能是那个时候技术其实也不怎么样(当然现在也不怎么样)的我所觉得有点偏向「骄傲」的人呢...
... 好好想想,有什么意义呢?事实上我也没有做过这种事...
看不起就看不起嘛... 我不这么想就好了
其实后来发现我大概也是有错误的,没有了解他,人们各有各的性格,有些人受不了对自己的批评,有些人无法接受对自己软件的建议,可能有几个建议是错的就会比较恼火,实属正常。只不过自己不是这样的,就不容易交互角度思考
所谓大佬啊... 所谓神乎其技的「杂学」后端... 其实能活好,做到什么并没有什么差别?不过有些人想做一些其他方向更好的东西,就要学习一些可能是比较多、比较难理解或者由于谣传让人不敢碰的知识点,有何优越可言?都是一样的事情
算了算了开始说笔记(
(有人说晚上人们更偏向情绪化、感性化一些,果然如此?)跑
说起来再来个老掉牙的推荐... 我上上周打印资料的时候也去那里过了,可惜没墨水了...
CTF Wiki,目前比 OI Wiki 完善
https://ctf-wiki.github.io/ctf-wiki/executable/elf/elf_structure/
CTF Wiki,目前比 OI Wiki 完善
https://ctf-wiki.github.io/ctf-wiki/executable/elf/elf_structure/
ctf-wiki.github.io
ELF文件基本结构 - CTF Wiki
duangsuse::Echo
不是天才的话 1k 小时定律依然是有效的啊,只要一直努力用心的做某件事情,一定就能得到想要的效果吧... 虽然这一切精力啊,都要分散到超过 10 个的子科目,子知识范畴里面去呢... 那就要 10k 个小时呢,就是两年也没关系,只要能做到想要的水平
不过啊,虽然现在偏向数学性、偏向理论性的一些东西还是不好理解,至少其他的都还不错,能用了,可喜可贺。上次对 Telegram $RICH 这个标签的分析就是一个例子,不管怎么样是不是天才(笑)技术进步都是在那里的(指背书)所以值得庆祝?((((不到能手写红黑树的程度绝不罢休
Telegram
duangsuse::Echo
(其实我一直以为 Telegram Desktop 源码结构维护得那么好的话,这种链接路由应该专门分一个文件实现的,但其实内联在链接点击里实现了?(其实只不过是在那个文件里实现,不是在点击事件函数里实现的
(说实话,我不是很了解他们是怎么找到这些黑科技一样的玩法的... 我都懒得玩这些呢... 🙈 (找 @lwl12 问问去
我们来分析一下相应的算法 #telegram #algorithm #frontend #qt #cplusplus #desktop #linux #tool
... 算了直接找我要用的吧,首先我们说说…
(说实话,我不是很了解他们是怎么找到这些黑科技一样的玩法的... 我都懒得玩这些呢... 🙈 (找 @lwl12 问问去
我们来分析一下相应的算法 #telegram #algorithm #frontend #qt #cplusplus #desktop #linux #tool
... 算了直接找我要用的吧,首先我们说说…
我感觉这次再让我花个两天时间逆向 CoolApk 的 liba.so (密钥生成算法)已经不是问题了
#blog #share #cs #pl #plt #agda #recommended
https://ice1000.org/lagda/
顺推一波冰封哥新出的 LAgda 博客,大部分代码都是用 Agda 写的,连文章目录都是 😶
「中间表示」博客维护良好,经常更新并且作者往往都全天在线
主要内容设计 Java/Kotlin、C/C++、程序设计语言理论、编译原理、静态分析、算法优化等...
大概内容主要可以由编译原理系的同学理解使用
https://ice1000.org/lagda/
顺推一波冰封哥新出的 LAgda 博客,大部分代码都是用 Agda 写的,连文章目录都是 😶
「中间表示」博客维护良好,经常更新并且作者往往都全天在线
主要内容设计 Java/Kotlin、C/C++、程序设计语言理论、编译原理、静态分析、算法优化等...
大概内容主要可以由编译原理系的同学理解使用
duangsuse Throws
数学上一些复杂的东西即便是尽可能使用简单具体而不是简洁短篇幅的语言描述,也是要花些功夫才能学会理解的 举个例子(orz 跑题了) 这是 foldl(fold aka. reduce) 在 ES6 的实现方式 function foldl(op, init, list) { let accumlator = init; for (let i of list) accumlator = op(accumlator, i); return accumlator; } foldl((a…
哦我突然想起来上次那个 foldl(其实是 foldr... 喷,我误解了,其实... wiki 上的是错的)
哦突然又想起来我还不知道啥是 Functor... 管他呢,会定义就好了
前面几个出错主要是因为我太蠢<del>萌</del> 了,少给自然递归传递了几个参数(当然因为 Currying 的原因不会说啥 arity mismatch 参数长度错误),结果 Haskell 弄出了个啥 Infinite type 错误,和 Kotlin 的类型错误一样迷
当然,把 b 换成 a 也可以通过检查... 之所以引入一个 b 大概是为了... 呃...
其实
因为... 更多限制?(算了还是上面那个限制最小
哦突然又想起来我还不知道啥是 Functor... 管他呢,会定义就好了
前面几个出错主要是因为我太蠢<del>萌</del> 了,少给自然递归传递了几个参数(当然因为 Currying 的原因不会说啥 arity mismatch 参数长度错误),结果 Haskell 弄出了个啥 Infinite type 错误,和 Kotlin 的类型错误一样迷
mfold init op xs = init然后我们知道
mfold init op (x:xs) = op (mfold init op xs) x
mfold 的类型(可以用 ghci 指令 :set +t 显示推导出的类型)肯定是mfold :: a -> (a -> b -> b) -> [a] -> b呃.. 第一个
a 是说 init
(a -> b -> b) 是说 op
[a] 是说 xs b 是说整个 mfold 的返回值...当然,把 b 换成 a 也可以通过检查... 之所以引入一个 b 大概是为了... 呃...
其实
a -> (b -> a -> b) -> [a] -> b 也可以... 总之,,, 怎么描述这种纯纯的自然递归类型呢... 我觉得还是 a -> (a -> b -> a) -> [a] -> a 好因为... 更多限制?(算了还是上面那个限制最小
duangsuse::Echo
哦我突然想起来上次那个 foldl(其实是 foldr... 喷,我误解了,其实... wiki 上的是错的) 哦突然又想起来我还不知道啥是 Functor... 管他呢,会定义就好了 前面几个出错主要是因为我太蠢<del>萌</del> 了,少给自然递归传递了几个参数(当然因为 Currying 的原因不会说啥 arity mismatch 参数长度错误),结果 Haskell 弄出了个啥 Infinite type 错误,和 Kotlin 的类型错误一样迷 mfold init op xs = init…
不过... 我觉得其实也没啥卵用嘛... 想不到有谁会怎么使用这个多出来的
首先一步步看此递归函数... 猜类型
... 那这就奇怪了,看起来
ba -> b 是匿名函数(可以认为是 Kotlin 里的 lambda)的参数,代码块返回 b首先一步步看此递归函数... 猜类型
op (mfold init op xs) :: a x :: b :: b... 那这就奇怪了,看起来
(mfold init op xs) 好像是 b 类型才对... 算了不看了,以后有的是时间
duangsuse::Echo
#life #school 唉... 现在真的是没时间啊... 我还什么都没说就 11 点了 明天早上又要上学 然后下周六才回来,我看这笔记队列要爆炸的,迟早药丸
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse::Echo
不过... 我觉得其实也没啥卵用嘛... 想不到有谁会怎么使用这个多出来的 b a -> b 是匿名函数(可以认为是 Kotlin 里的 lambda)的参数,代码块返回 b 首先一步步看此递归函数... 猜类型 op (mfold init op xs) :: a x :: b :: b ... 那这就奇怪了,看起来 (mfold init op xs) 好像是 b 类型才对... 算了不看了,以后有的是时间
这类分析应该有小窍门,但我现在还找不到好的方法... 据说 HM 类型推导很火,不知道是不是讲这个的
HM: Hindley-Milner,是 Haskell 的类型系统名称
HM: Hindley-Milner,是 Haskell 的类型系统名称