Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
Ray Eldath | 计算机领域的三个重要思想:抽象,分层和高阶
https://ray-eldath.me/programming/three-important-ideas/
https://ray-eldath.me/programming/three-important-ideas/
Ray Eldath's Blog
计算机领域的三个重要思想:抽象,分层和高阶
昨晚看了点比较有意思的东西,于是决定写一篇文章简单讲一下。 本文致力于概括我对计算机界三个重要思想的体会和认识。我希望做的并不是简单的百科全书式的列举(“A 体现了抽象思想;B 体现了分层思想…”),而是从这些思想中选取几个我个人较有体会(或者是我单纯觉得十分有趣)的侧面拿来细讲。这些侧面仅仅能覆盖这些思想应用范围中十分微小的一部分,它们并不是最有代表性的、亦非最为重要的——仅仅因为,我个人对这点
Forwarded from 没有字的回音 ♪️
&'a ::rynco::UntitledChannel
Ray Eldath | 计算机领域的三个重要思想:抽象,分层和高阶 https://ray-eldath.me/programming/three-important-ideas/
咳咳, #ce #PLT #math
前章说了作者最开始的一些见闻和误解,比如抽象代数是PLT必须前置知识什么的。
50% 的篇幅是写作者和 PLT/FP 函数式领域一个学者(他的偶像)的一次来信,皆包含中英文本。总体而言记述性内容多
也谈了 Monad 是不是 operational semantic 的问题,学者的回答好像规避了具体的回答,只是说对高效的程序猿不必看得太重但理论联系也很值得学习。
后面讲了 compile/interpret, currying, partial application 等问题的相关侧面。
我记性比较差就不赘述了,提点关键词 爱看的看吧
动苏是相对较重视实践的,而我目前在这个领域可以说没有什么实质进步,必须先写点什么能用的才好啊。
前章说了作者最开始的一些见闻和误解,比如抽象代数是PLT必须前置知识什么的。
50% 的篇幅是写作者和 PLT/FP 函数式领域一个学者(他的偶像)的一次来信,皆包含中英文本。总体而言记述性内容多
也谈了 Monad 是不是 operational semantic 的问题,学者的回答好像规避了具体的回答,只是说对高效的程序猿不必看得太重但理论联系也很值得学习。
后面讲了 compile/interpret, currying, partial application 等问题的相关侧面。
我记性比较差就不赘述了,提点关键词 爱看的看吧
动苏是相对较重视实践的,而我目前在这个领域可以说没有什么实质进步,必须先写点什么能用的才好啊。
#日常精神分裂 #沙雕
A: 看完《转生史莱姆》旧集命名一段我突然冒出个问题,如何杀死一只史莱姆?史莱姆有核吗?
B:史莱姆无限可分,无法杀死(
A: 说到物质无限可分…… 我想到了毛泽东的“原子无限可分”了。 其实不论身份的话,这个论断也是一种合情理的猜想吧。
B: 反对的都蹲大牢去了,你觉得怎么样。
A: 毕竟对普通人来说自然界的什么东西有极限就显得很奇怪,就像爱因斯坦的「上帝不可能掷骰子」?那如果不从问题本身讨论,就问怎么「劝」一个持这种常识的人相信「原子不能再分」呢?
B: 我觉得可以这么比喻吧,「人体可以无限拆分,但是拆到一定程度就会分崩离析,失去原有性质,不能再叫人体的子部分」,再为了贴合毛泽东的理解套一下实例,再给他个台阶下(之前的理解部分正确 但有一个微小细节),应该就能被接受了。
A: 不讨论这个了,你觉得 GNOME 的「自然滚动」滚轮视图而非内容,怎么样,怎么实现 Android 等触摸手势上的「末滚动动画」?
B: 反向滚动我觉得就是个 trick,末滚动动画的话需要知道单次滚动的速度,必须有 onTouch Start/End 事件和一个 t0 ,必须能读写 pos 。
A: 触摸滑(滚)动就是一个动画,为什么要有 on start/end?
B: 你可以把它理解为 window 上 drag 的实现,必须有 point0 才能知道 pos 的单次偏移量,至少要记录按下状态,并不是说 onPointerMove 就够了
A: 看完《转生史莱姆》旧集命名一段我突然冒出个问题,如何杀死一只史莱姆?史莱姆有核吗?
B:
A: 说到物质无限可分…… 我想到了毛泽东的“原子无限可分”了。 其实不论身份的话,这个论断也是一种合情理的猜想吧。
B: 反对的都蹲大牢去了,你觉得怎么样。
A: 毕竟对普通人来说自然界的什么东西有极限就显得很奇怪,就像爱因斯坦的「上帝不可能掷骰子」?那如果不从问题本身讨论,就问怎么「劝」一个持这种常识的人相信「原子不能再分」呢?
B: 我觉得可以这么比喻吧,「人体可以无限拆分,但是拆到一定程度就会分崩离析,失去原有性质,不能再叫人体的子部分」,再为了贴合毛泽东的理解套一下实例,再给他个台阶下(之前的理解部分正确 但有一个微小细节),应该就能被接受了。
A: 不讨论这个了,你觉得 GNOME 的「自然滚动」滚轮视图而非内容,怎么样,怎么实现 Android 等触摸手势上的「末滚动动画」?
B: 反向滚动我觉得就是个 trick,末滚动动画的话需要知道单次滚动的速度,必须有 onTouch Start/End 事件和一个 t0 ,必须能读写 pos 。
A: 触摸滑(滚)动就是一个动画,为什么要有 on start/end?
B: 你可以把它理解为 window 上 drag 的实现,必须有 point0 才能知道 pos 的单次偏移量,至少要记录按下状态,并不是说 onPointerMove 就够了
Forwarded from Yuuta 🎀 | clrd enroute
跟着 apue 实现了个简单的 shell,我寻思跑几个程序测试一下吧.. 然后就跑了 poweroff,想着反正没 sudo,然后.. 就关机了。
我忘记自己有权限了。
我忘记自己有权限了。
Forwarded from im� 🍩🍭🍋🐇🏚️☕🍵🥞🦋🌱➕1⃣🤖🔕📳🎶🎧 | LTE🈚latency>1024767ms � via @donnakkabot
<-dm wm 分不清
duangsuse::Echo
再说说 ParserKt 新版解决的 "StickyEnd" 和 LexerFeed 问题。 StickyEnd 是造成 TriePattern—PKT 的 keyword tokenizer 无法应用于整个输入(fullmatchPattern)的元凶 所谓 sticky end ,是 fullmatch 的逻辑是,无论 pat 是否匹配成功(没成功就往 StringBuilder 里填一字继续尝试),必须 match 到输入末尾,但这就有个问题——不能判断当前是否 EOF ,结末的异常会被 pat 视作…
#parser 🤔今天又想了下,解除了一个很傻的误会
假设有 try {} 也有 tryDo {} ,前者是 Try 块而后者是一个函数调用,如果说 keyword 完全是由 Trie 前缀解析的,会把 tryDo 分词为 try Do 从而造成问题
其实关键字本来就是在 Name 的基础上做的,应该弄个 Piped 组合器,来做到 name 和 kw 结构的区分。
其实一个组合解析器框架要走上实用还有些细节吧…… 除了 /* 和除号区分、输入流和输出结构、系统忽略空格、容错等问题
之前说 StickyEnd 导致 Trie 分词不能“greedy”的问题明白了,就是把一段文本分成 plain-关键词-plain-... 的形式
我的方法是
如果视为没符合,流结末时就会无限循环(再看 trie 结果 也可能是真不符合任何关键词)。
如果视为流结末,再去看 trie 的结果,也不能分出是怎样
正确做法显然是展开调用,如果流结末就直接返回…… 属于老问题没写好
😒下次我会试着利用 inline 和 -1 的,异常的确该说不至于,因为 Repeat 组合器很多,但只有最上一层会真收 EOF
假设有 try {} 也有 tryDo {} ,前者是 Try 块而后者是一个函数调用,如果说 keyword 完全是由 Trie 前缀解析的,会把 tryDo 分词为 try Do 从而造成问题
其实关键字本来就是在 Name 的基础上做的,应该弄个 Piped 组合器,来做到 name 和 kw 结构的区分。
其实一个组合解析器框架要走上实用还有些细节吧…… 除了 /* 和除号区分、输入流和输出结构、系统忽略空格、容错等问题
之前说 StickyEnd 导致 Trie 分词不能“greedy”的问题明白了,就是把一段文本分成 plain-关键词-plain-... 的形式
我的方法是
takeWhile{it !in trie.routes} ,如果这么简单的话区分不出结果 isEmpty() 到底是真的没符合呢,还是输入流结末了呢?没办法判断。如果视为没符合,流结末时就会无限循环(再看 trie 结果 也可能是真不符合任何关键词)。
如果视为流结末,再去看 trie 的结果,也不能分出是怎样
正确做法显然是展开调用,如果流结末就直接返回…… 属于老问题没写好
😒下次我会试着利用 inline 和 -1 的,异常的确该说不至于,因为 Repeat 组合器很多,但只有最上一层会真收 EOF
Forwarded from Hacker News
Nodes.io – a new way to create with code (Score: 100+ in 2 hours)
Link: https://readhacker.news/s/4Gbpk
Comments: https://readhacker.news/c/4Gbpk
Link: https://readhacker.news/s/4Gbpk
Comments: https://readhacker.news/c/4Gbpk
nodes.io
Nodes – a new way to create with code | https://nodes.io
Nodes is a new way to create with code.
#web #js #api
https://stackoverflow.com/questions/4386300/javascript-dom-how-to-remove-all-events-of-a-dom-object
iframe 标签可用 .contentDocument
Node 可用 .getRootNode() 获得 # document
本来打算用 ev=>ev.stopImmediatePropagation() 禁用 onpaste 的,没想到被加在最后…… querySelector 的列表也不对,窗口也定时刷新
学习通的网页
当然如果预加载脚本 AOP 就可以拿到 UEditor plugins["paste"] 配置对象或实例直接配置了,可是不能…… 粘贴事件是在 beforepaste 被否决的,但好像不是 DOM event ,居然自己弄了个同名的……
对了 Firefox 没法枚举事件监听更不能前置插入监听, setAttribute(onpaste 也不能前置监听,但仅就这个「无法粘贴」问题而言,可以把之前 preventDefault 的逻辑改回来:
这个涉及 Clipboard(Event)? 和 DataTransfer API #web 🙊
https://stackoverflow.com/questions/4386300/javascript-dom-how-to-remove-all-events-of-a-dom-object
iframe 标签可用 .contentDocument
Node 可用 .getRootNode() 获得 # document
window.getEventListeners().click[0].listener() 可以枚举事件监听本来打算用 ev=>ev.stopImmediatePropagation() 禁用 onpaste 的,没想到被加在最后…… querySelector 的列表也不对,窗口也定时刷新
学习通的网页
当然如果预加载脚本 AOP 就可以拿到 UEditor plugins["paste"] 配置对象或实例直接配置了,可是不能…… 粘贴事件是在 beforepaste 被否决的,但好像不是 DOM event ,居然自己弄了个同名的……
对了 Firefox 没法枚举事件监听更不能前置插入监听, setAttribute(onpaste 也不能前置监听,但仅就这个「无法粘贴」问题而言,可以把之前 preventDefault 的逻辑改回来:
e.onpaste=(ev)=>ev.target.append(ev.clipboardData.getData("text/plain")) 这个涉及 Clipboard(Event)? 和 DataTransfer API #web 🙊
Stack Overflow
Javascript/DOM: How to remove all events of a DOM object?
Just question: Is there any way to completely remove all events of an object, e.g. a div?
EDIT: I'm adding per div.addEventListener('click',eventReturner(),false); an event.
function eventReturne...
EDIT: I'm adding per div.addEventListener('click',eventReturner(),false); an event.
function eventReturne...
Forwarded from Solidot
Linus Torvalds 警告不要 Linux 5.12-rc1
2021-03-08 10:32 #Linux
Linus Torvalds 在邮件列表上 紧急呼吁用户 不要使用最近释出的 Linux 5.12-rc1。他表示,在公开的 git 树上,v5.12-rc1 的标签被重命名为 v5.12-rc1-dontuse, dontuse 意味着不要使用,因为该版本破坏了交换文件 swapfile 的处理,会导致文件系统无法使用。当内核将内存中的内容交换写入到磁盘上,数据会随机写入 swapfile 所在的相同磁盘和分区,它不仅会覆写现有文件的数据,而且还会覆写破坏元数据,可能导致整个文件系统无法挂载和使用。Torvalds 称,如果你不使用交换文件,或者使用的是交换分区而不是交换文件,那么你不会受到影响。
2021-03-08 10:32 #Linux
Linus Torvalds 在邮件列表上 紧急呼吁用户 不要使用最近释出的 Linux 5.12-rc1。他表示,在公开的 git 树上,v5.12-rc1 的标签被重命名为 v5.12-rc1-dontuse, dontuse 意味着不要使用,因为该版本破坏了交换文件 swapfile 的处理,会导致文件系统无法使用。当内核将内存中的内容交换写入到磁盘上,数据会随机写入 swapfile 所在的相同磁盘和分区,它不仅会覆写现有文件的数据,而且还会覆写破坏元数据,可能导致整个文件系统无法挂载和使用。Torvalds 称,如果你不使用交换文件,或者使用的是交换分区而不是交换文件,那么你不会受到影响。
Forwarded from 层叠 - The Cascading
Git 是一个不错的版本管理系统。它本身和代码关系不太大,门槛算是比较低。而 SourceTree、GitKraken 等一系列软件的出现又使 Git 的易用性更为提高。对不是程序员的用户而言,Git 仍然可以十分有用。
作为例子,雅诗列出了几个小有名气的「代码无关」的 Git repository。它们可能没有用到 Git 的全部功能,但也能说明 Git 不止对程序员有作用:
* https://github.com/komeiji-satori/Dress - 用户发表自己的女装图片,这本身并没有利用许多 Git 相关的特性(除了 Git LFS)。
* https://gitlab.com/SCLeo/wearable-technology (NSFW) - 一本官能小说。
另外补充一点 SFW 的例子:
* https://github.com/github/dmca/ - GitHub 的 DMCA 请求存储区。
* https://github.com/progit/progit2 - 书籍《Pro Git》的源代码。在 Git 上托管书籍源码的行为并不罕见。
* https://github.com/qiusj759039257/LKSUB - 轻之国度字幕组的字幕存档。(各种文本内容都可以受益于 Git 的版本控制功能。)
* https://github.com/ppy/osu-wiki - 音乐游戏 osu! 的 wiki 文本。
src: https://twitter.com/kagurazakayashi/status/1367681094644998146
作为例子,雅诗列出了几个小有名气的「代码无关」的 Git repository。它们可能没有用到 Git 的全部功能,但也能说明 Git 不止对程序员有作用:
* https://github.com/komeiji-satori/Dress - 用户发表自己的女装图片,这本身并没有利用许多 Git 相关的特性(除了 Git LFS)。
* https://gitlab.com/SCLeo/wearable-technology (NSFW) - 一本官能小说。
另外补充一点 SFW 的例子:
* https://github.com/github/dmca/ - GitHub 的 DMCA 请求存储区。
* https://github.com/progit/progit2 - 书籍《Pro Git》的源代码。在 Git 上托管书籍源码的行为并不罕见。
* https://github.com/qiusj759039257/LKSUB - 轻之国度字幕组的字幕存档。(各种文本内容都可以受益于 Git 的版本控制功能。)
* https://github.com/ppy/osu-wiki - 音乐游戏 osu! 的 wiki 文本。
src: https://twitter.com/kagurazakayashi/status/1367681094644998146