#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 的类型系统名称
duangsuse::Echo
+ #oop 垃圾 duangsuse 才知道为什么 #Java 子类转型基类是类型安全的 简单点来说(我不讲什么面向对象的 is_a(class) 什么 can_do(interface)无关的): 我们知道,有一种类型理论叫做「Duck Typing(动态类型)」「一个动物走起来像鸭子、叫起来像鸭子,那它就是鸭子」 abstract class Animal { boolean is_sleeping = false; public Animal() {} public void sleep()…
#notes #daily #tech #cs #pl 又是一周的 duangsuse 随机瞎想集合
+ #China #life 重庆公交车坠江事件
http://www.sohu.com/a/271969492_398039
简|一女子坐公交坐过站要求司机往回开,司机开始好好解释但后来与女子争吵,女子与司机争夺方向盘。司机未能及时刹车导致公交撞上对面过来的小轿车,公交坠入江中。无人生还。
+ Sketch
这个词,只是我某次晚自习时突然忘记了当年 @drakeet 那个软件叫啥名字来着?叫啥名字来着???然后我就死想了两个小时... 居然想出来了,然后我就特激动... (SketchUp!!!!!!!!)🤔
没有别的事情了
当然,感触就是... 有些东西想想还是能想到的,不过花了俩小时...
+ 44 路公交车(短电影) #video #Low #China
https://movie.douban.com/subject/1308627/
推荐观看,看客精神杰出教材
+ 韩寒《他的国》 #China
我打算给你们拷贝一下人们围观跳楼那段场面的... 算了
+ 数学和直觉 #math
我的意思大概是数学的有些表述方式简洁不易懂,往往要经过非常特殊的专业训练才能懂...
+ 昨日青空 #media
主题曲比较好听,想做 vocaloid 合成曲
+ javax.stream 和 ReactiveX
Rx 是最开始 C# 的一个扩展,现在已经不只是 C# 的扩展了
它的目的是提供统一的流处理模式 API
当然,它也是很好的异步/消息(aka. 广播、事件)式编程函数库
这被称为
http://reactivex.io/documentation/operators.html
这是一种 Observable 的核心特征,实际上 RxJava 的 Observable 定义包括文档有 8k 行左右
Observable 上还允许发送集合处理消息(调用方法),类似
我只是想告诉你们它是做什么的(类似 Promise、Future)一样的工作
因为我之前根本懒得了解它...
+ 蓝真天白真云
一种 Yuda 表示法...
参考王垠博客「Surely I'm Joking」和游戏「崩坏 3」
+ Python 的独特语法
我以为是惰性数组?(跑
http://zetcode.com/lang/python/lists/
(其实是 Python 的语法糖,类似 Ruby
e.g.
<del>告诉你们一个你们不知道的 Python 语法</del>(迫真)
+ #China #life 重庆公交车坠江事件
http://www.sohu.com/a/271969492_398039
简|一女子坐公交坐过站要求司机往回开,司机开始好好解释但后来与女子争吵,女子与司机争夺方向盘。司机未能及时刹车导致公交撞上对面过来的小轿车,公交坠入江中。无人生还。
一站错过,二人争执,三秒互殴,四轮悬空,无人身还,六亲悲痛,生命再无重来机会
小公交,大社会,戾气愤怒的怨妇,激愤无脑的司机,沉默麻木的看客,诱发了一场不该发生的惨祸,到底谁之错,或无可以置身度外者
+ Sketch
这个词,只是我某次晚自习时突然忘记了当年 @drakeet 那个软件叫啥名字来着?叫啥名字来着???然后我就死想了两个小时... 居然想出来了,然后我就特激动... (SketchUp!!!!!!!!)🤔
没有别的事情了
当然,感触就是... 有些东西想想还是能想到的,不过花了俩小时...
+ 44 路公交车(短电影) #video #Low #China
https://movie.douban.com/subject/1308627/
推荐观看,看客精神杰出教材
+ 韩寒《他的国》 #China
我打算给你们拷贝一下人们围观跳楼那段场面的... 算了
+ 数学和直觉 #math
我的意思大概是数学的有些表述方式简洁不易懂,往往要经过非常特殊的专业训练才能懂...
+ 昨日青空 #media
主题曲比较好听,想做 vocaloid 合成曲
+ javax.stream 和 ReactiveX
Rx 是最开始 C# 的一个扩展,现在已经不只是 C# 的扩展了
它的目的是提供统一的流处理模式 API
当然,它也是很好的异步/消息(aka. 广播、事件)式编程函数库
这被称为
Observable 「可观测的」http://reactivex.io/documentation/operators.html
onNext(T)onError(Exception)onCompleted()这是一种 Observable 的核心特征,实际上 RxJava 的 Observable 定义包括文档有 8k 行左右
Observable 上还允许发送集合处理消息(调用方法),类似
map flatMap join zip merge concat 这种我只是想告诉你们它是做什么的(类似 Promise、Future)一样的工作
因为我之前根本懒得了解它...
+ 蓝真天白真云
一种 Yuda 表示法...
(blue == sky.color && white == sky.clouds.color)参考王垠博客「Surely I'm Joking」和游戏「崩坏 3」
+ Python 的独特语法
for ... in ... if我以为是惰性数组?(跑
http://zetcode.com/lang/python/lists/
(其实是 Python 的语法糖,类似 Ruby
puts while true 这种)e.g.
a = [1, 2, 3]
b = [4, 2, 6]
c = [str(i) for i in a if (i in b)] #=> ['2']
<del>告诉你们一个你们不知道的 Python 语法</del>(迫真)
Sohu
重庆公交车坠江瞬间视频曝光!事故女司机丈夫:我们是受害者_熊某
最新消息 重庆万州坠江公交车初步核实15人失联 这是事故发生时 后车行车记录仪拍下的画面 事故女司机丈夫:至今未见妻子 我们是受害者 公众在为公交车上驾…
duangsuse::Echo
#notes #daily #tech #cs #pl 又是一周的 duangsuse 随机瞎想集合 + #China #life 重庆公交车坠江事件 http://www.sohu.com/a/271969492_398039 简|一女子坐公交坐过站要求司机往回开,司机开始好好解释但后来与女子争吵,女子与司机争夺方向盘。司机未能及时刹车导致公交撞上对面过来的小轿车,公交坠入江中。无人生还。 一站错过,二人争执,三秒互殴,四轮悬空,无人身还,六亲悲痛,生命再无重来机会 小公交,大社会,戾气愤…
+ Java8 with Android 简单入门
我很想写一本关于这个的书... 后来 toc(Table of contents,目录)写着写着就变成杂学书了... 一会还扯到 CPU 应用层面的玩意... 还扯到了解释器什么求值顺序什么的
+ CABuild
我也忘记原义了,大概就是些构建(依赖型)系统啥的项目
+ RegularPP LALR
... 算了,LALR 那种大佬级别的解析算法我写不起啊,跟写红黑树一样的...
+ Kookle lang
这玩意是我打算写编译到 C 的语言... 当 C 的扩展吧,其实同样的东西大概有许多名字(maybe)
+ Haskell 模式匹配
我之前才知道... Haskell 的 function 貌似都是模式匹配定义出来的,也就是说其实我说的不在所有情况下全是对的(废话)(而且我说的错误往往比较多)
比如说
这个例子不好,而且你们最好不要在 REPL 上试... 可能会死机(Haskell 蜜汁 BigDecimal 实现?)
(而且堆栈的深度又不是无限的... 但在栈爆之前溢出的 Disk IO 就要把泥的 PC 撑炸)
我们举个栗子(使用
这就是所谓的模式匹配,Rust 里也有
+ naive bfs
呃,之前怀疑自己写的那个 naive bfs GC 是不是写错为 naive DFS GC 了,要真是那样我老脸可就真 naive 了 🐸
个人感觉深度优先搜索记录搜索路径并且要求深查找到顶端枝叶,广度的不需要记录路径
+ 线程同步与枪战游戏
教程灵感...
就是说现在的网游数据同步问题(当然不只是现在的)(当然现实生活一般不会考虑这个问题,有人处理)
e.g. 两个人同时捡起一个医疗包,但第一个人「a」捡起来的时候,第二个人「b」的设备不知道医药包已经被人捡走了,结果两个人都捡到了一个医疗包... 所以我们要想办法「同步」解决这个问题
结果嘛... 有很多种可能,数据竞争造成的后果一般比较迷
个人感觉这种抽象程度更低一些,所以会容易理解很多,本质上的东西「发布啊... 原子性啊...」是没有变的
就是教线程同步的... 大概 虽然我也不会
我很想写一本关于这个的书... 后来 toc(Table of contents,目录)写着写着就变成杂学书了... 一会还扯到 CPU 应用层面的玩意... 还扯到了解释器什么求值顺序什么的
+ CABuild
我也忘记原义了,大概就是些构建(依赖型)系统啥的项目
+ RegularPP LALR
... 算了,LALR 那种大佬级别的解析算法我写不起啊,跟写红黑树一样的...
+ Kookle lang
这玩意是我打算写编译到 C 的语言... 当 C 的扩展吧,其实同样的东西大概有许多名字(maybe)
+ Haskell 模式匹配
我之前才知道... Haskell 的 function 貌似都是模式匹配定义出来的,也就是说其实我说的不在所有情况下全是对的(废话)(而且我说的错误往往比较多)
比如说
factorial :: Int -> Int
factorial 0 = 1
factorial n = (factorial n - 1) * n
fac :: (Integral a) => a -> a
fac 0 = 1
fac n = n * fac (n - 1)
这个例子不好,而且你们最好不要在 REPL 上试... 可能会死机(Haskell 蜜汁 BigDecimal 实现?)
(而且堆栈的深度又不是无限的... 但在栈爆之前溢出的 Disk IO 就要把泥的 PC 撑炸)
lenList :: [x] -> Integer
lenList [] = 0
lenList (_:xs) = 1 + lenList xs
sumList :: Num n => [x] -> n
sumList [] = 0
sumList (x:xs) = x + (sumList xs)
main = print $ sumList [1..10]
我们举个栗子(使用
: 来表示列表「Cons」是另一种表示方式)sumList [1, 2, 3]
sumList 1 : (2 : 3) = 1 + sumList (2 : 3)
sumList 2 : (3) = 2 + sumList (3 : [])
sumList 3 : ([]) =
3 + sumList []
sumList [] = 01 + (2 + (3 + 0)) = 6
这就是所谓的模式匹配,Rust 里也有
+ naive bfs
呃,之前怀疑自己写的那个 naive bfs GC 是不是写错为 naive DFS GC 了,要真是那样我老脸可就真 naive 了 🐸
个人感觉深度优先搜索记录搜索路径并且要求深查找到顶端枝叶,广度的不需要记录路径
+ 线程同步与枪战游戏
教程灵感...
就是说现在的网游数据同步问题(当然不只是现在的)(当然现实生活一般不会考虑这个问题,有人处理)
e.g. 两个人同时捡起一个医疗包,但第一个人「a」捡起来的时候,第二个人「b」的设备不知道医药包已经被人捡走了,结果两个人都捡到了一个医疗包... 所以我们要想办法「同步」解决这个问题
<第一次同步>
[a] 捡拾医疗包(状态:医疗包存在)
[b] 捡拾医疗包(状态:医疗包存在)
[a] 捡到医疗包,请求删除对象
[b] 捡到医疗包,请求删除对象
<最终>
[a] [b] 获得医疗包
结果嘛... 有很多种可能,数据竞争造成的后果一般比较迷
个人感觉这种抽象程度更低一些,所以会容易理解很多,本质上的东西「发布啊... 原子性啊...」是没有变的
就是教线程同步的... 大概 虽然我也不会