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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
语法由于 Nokogiri 那贫瘠的 API 非常难看且不简洁,由于我很累所以懒得优化
逻辑十分简单,但由于 Nokogiri 贫瘠的包装写得很难看

没有做容错处理,所以老是出现解析错误。
权当玩玩。本身也没什么复杂的逻辑
#life 好了,那又回到 duangsuse 的四日常(看问题讨论、说笔记、写文档做设计、写代码)之一了... 今天一行代码不写,最近一行代码都不写。主要还是逻辑弄明白... 🐸

Gekyll 啊、Pickle 啊、dio 啊
都不是今天的事,因为我最好不要熬夜,至少是目前
现在算是入门了吧... 入门即被踢出门?(
反正就是那种菜到爆炸的样子... 虽然别人往往都很菜吧... 或者说大佬都比我多一两年的经验
... 有什么意义呢... 自己还是很菜啊,身边的人是什么水平尚且不能了解,怎么能以别人菜为由给自己优越感呢? 😶

是呢... 反正就是那种大佬一大堆的情况下系统管理都不会 Docker 也不会 ReactiveX 也没了解过的样子,啥是 Flowable 啊,啥是 Observer 啊

GoF 的 23 种 OOP 模式我又记住了几种呢?创建型的模式,工厂、构建器、抽象工厂外... 还有至少 3 个没记住啊... 不是天才呢... 为什么不能是天才... 那样一下子就什么都想到了 什么都明白了... 太菜了
不是天才的话 1k 小时定律依然是有效的啊,只要一直努力用心的做某件事情,一定就能得到想要的效果吧...

虽然这一切精力啊,都要分散到超过 10 个的子科目,子知识范畴里面去呢... 那就要 10k 个小时呢,就是两年也没关系,只要能做到想要的水平
偶尔想回去看看曾经与 @drakeet 撕过的 B... 我真是无聊...

如果要这么做,内心肯定是抱着不服气并且想偷偷批判一番的情绪做的

因为啊,drakeet 可能是那个时候技术其实也不怎么样(当然现在也不怎么样)的我所觉得有点偏向「骄傲」的人呢...

... 好好想想,有什么意义呢?事实上我也没有做过这种事...
看不起就看不起嘛... 我不这么想就好了

其实后来发现我大概也是有错误的,没有了解他,人们各有各的性格,有些人受不了对自己的批评,有些人无法接受对自己软件的建议,可能有几个建议是错的就会比较恼火,实属正常。只不过自己不是这样的,就不容易交互角度思考

所谓大佬啊... 所谓神乎其技的「杂学」后端... 其实能活好,做到什么并没有什么差别?不过有些人想做一些其他方向更好的东西,就要学习一些可能是比较多、比较难理解或者由于谣传让人不敢碰的知识点,有何优越可言?都是一样的事情

算了算了开始说笔记(

(有人说晚上人们更偏向情绪化、感性化一些,果然如此?)跑
Forwarded from Drakeet
This media is not supported in your browser
VIEW IN TELEGRAM
说起来再来个老掉牙的推荐... 我上上周打印资料的时候也去那里过了,可惜没墨水了...

CTF Wiki,目前比 OI Wiki 完善

https://ctf-wiki.github.io/ctf-wiki/executable/elf/elf_structure/
我感觉这次再让我花个两天时间逆向 CoolApk 的 liba.so (密钥生成算法)已经不是问题了
#blog #share #cs #pl #plt #agda #recommended
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 的类型错误一样迷

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…
不过... 我觉得其实也没啥卵用嘛... 想不到有谁会怎么使用这个多出来的 b

a -> b 是匿名函数(可以认为是 Kotlin 里的 lambda)的参数,代码块返回 b

首先一步步看此递归函数... 猜类型

op (mfold init op xs) :: a x :: b :: b

... 那这就奇怪了,看起来 (mfold init op xs) 好像是 b 类型才对... 算了不看了,以后有的是时间
#life #school 唉... 现在真的是没时间啊... 我还什么都没说就 11 点了
明天早上又要上学
然后下周六才回来,我看这笔记队列要爆炸的,迟早药丸