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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from Yuuta 🎀 | clrd enroute
DE 坏,来 i3wm
Forwarded from Yuuta 🎀 | clrd enroute
?sddm 不是 display manager 吗
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-... 的形式

我的方法是 takeWhile{it !in trie.routes} ,如果这么简单的话区分不出结果 isEmpty() 到底是真的没符合呢,还是输入流结末了呢?没办法判断。

如果视为没符合,流结末时就会无限循环(再看 trie 结果 也可能是真不符合任何关键词)。

如果视为流结末,再去看 trie 的结果,也不能分出是怎样

正确做法显然是展开调用,如果流结末就直接返回…… 属于老问题没写好

😒下次我会试着利用 inline 和 -1 的,异常的确该说不至于,因为 Repeat 组合器很多,但只有最上一层会真收 EOF
🤔 gl, audio 之类的节点图效率还不低
#python #cv #lib 🤔 支持 multi filter/out 和自定义的 ffmpeg bind ,作者看起来很有见识,还会画 DAG 无环图
#web #js #api
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 🙊
#info #bug #linux 🌝swapfile 位置写错悲剧!
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 称,如果你不使用交换文件,或者使用的是交换分区而不是交换文件,那么你不会受到影响。
#doc #life #tech Git 文件库版本控制软件
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
#huawei #doc https://t.me/berd_channel/2618?single 5G 秘诀:搜索设置项 "SA" (GLES MSAA 抗锯齿) 🌝🤔
duangsuse::Echo
#web #js #api 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.sto…
#js #web #DontKnow DOM 小提示! 😘
1. with(e.parentNode){ insertBefore(e1, e); removeChild(e) }可以用 e.replaceWith(e1) 替换
2. e.remove() 等于 e.parentNode.removeChild(e)
3. children, firstChild, prevElementSibling 不会获取到 text node 而 childNodes, parentNode, nextSibling 会
4. e.onXXX 的 event handler 里 return true 可以停掉链传播
5. event handler 都是函数值,函数不必真的有名字,只需持有函数的引用,并不一定真是带 name 的 (感觉写得好废啊
6. document.body.contentEditable=true 你会发现浏览器就像 HTML 编辑器!(designMode 亦可) ⭐️
7. document.elementFromPoint(x,y) 你会发现想实现 Ctrl+Shift+C 很简单!
8. AJAX 是异步 JS/XML XMLHttpRequest open send 的缩写,已被 fetch("http://").text() .json() Promise API 取代;PJAX 是 pushState JS/HTML 的缩写,意为能控制 navigator history API ,实现跨页播放器可用它
9. 设置 inner/outter HTML 的速度没有 createElement 快!请不要靠拼接 HTML 渲染视图,而要靠它做缓存等工作
10. e.setAttribute(attr,v) 是忽略大小写的,否则也可直接用 e[attr]=v
11. createElementNS 主要用于创建 SVG namespace 下的 tag ,这些 tagName 是不能按平常方式 create 的

12. JS 支持 (new Date).getTime() 语法,这个调用类似 performance.now()
13. cloneNode(true) 可以只复制节点 HTML ,相当于 outterHTML=outterHTML
14. 许多浏览器的控制台的 CSS warning 默认不显示,你可以启用它。 除了 console.log 还有 info, debug 等其他 logging 方法 ⭐️
15. Cookie 是 HTTP API 用户登录 session 的主要实现方法,被持久化的登录信息,一般存储在 localStorage ; 是 Storage.prototype
在浏览器插件里, chrome.storage.sync 是能被自动同步的配置,与单页的只能 localStorage 相对。
此外浏览器插件利用 chrome.runtime.sendMessage 能在 background 与被注入的 pagescript 之间交换数据
16. alert(); prompt("title", "默认"); confirm(); print() 往往不被推荐使用,因为 UI 框架往往有更漂亮的非阻塞替代 ⭐️
17. (un)? escape(), encode/decode URI (Component)? 是常见的编解码 API ,如果你要拼接/解析 URL ,必须用后者来兼容 &name=(含等号,&,? 等特殊符内容) 这种参数;如果你要让 URL 更可读(像解码 Unicode)可能就要用 decodeURI
18. document.execCommand("copy") 能复制已选内容,一般结合 Form 元素 input 的 select() 操作
19. 很多人都用 <script defer src=""></script> 取代 JQ 的 $(op) 或者说 document.addEventListener("DOMContentLoaded",op);
20. JQ 比较意思的地方除了链式调用、选择器 expr 支持,还有它封装的 Animation 、 Tween, easing 与队列。
#China #hk 老 生 常 谈 (大人,已经 2021 年了 总之希望一切都能重回正轨吧。
Forwarded from Yuuta 🎀 | clrd enroute
https://zh.wikipedia.org/zh-cn/%E4%B8%80%E5%9B%BD%E4%B8%A4%E5%88%B6

关于近期某新闻,我随手查了一下。
duangsuse::Echo
#日常精神分裂 #旧事重提 #Java #JS #PLT #cplusplus #project A: 啊真的很头疼呢, JPlayer 的 fix 和 depth.html 附赠的 Myson 数据描述语言…… B: 像往常一样,我们一起想想吧。 A: 首先说 JPlayer ,这个原先是作为重写 Yuuta 大佬项目的东西,变的蛮多的,后来也有完全的 C++ 重写。 这个东西最后也是长期熬夜 timedout ,失败点是为优化性能加的 Ringbuffer 队列缓冲区利用有瑕疵,导致最后一次缓冲的内容没放完退出…
#Ruby https://haml.info/ 按现在的计划那个 HTML 预处理应该是这样
对比:
%section.container
%h1= post.title
%h2= post.subtitle
.content
= post.content


section class=container
h1: =post.title
h2: =post.title
div class=content: =post.content

增加了个带 : 无换行、缩进。
如果允许省略 tagName 等于 div 的话(RegExp 匹配..),最后一行是 class=content: =post.content
我觉得十分有必要增加 define, include 和 for, if 语句 🤔 可以用作简化版宏调用 进一步避免模板化
#Rust 🤔 try 不是 Rust 的新语法,而是宏展开规则
Rust 宏在词法检查后语法检查前展开,这个示例写了含无效代码的宏调用/不匹配的 macro_rules! whichever_compiles! 会被自动忽略

不对…… Rust 宏的语法怎么改了
name! { Rules } 就可以了吗,还真是挺 breaking 的啊