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
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.
2.
3. children, firstChild, prevElementSibling 不会获取到 text node 而 childNodes, parentNode, nextSibling 会
4.e.onXXX 的 event handler 里 return true 可以停掉链传播
5. event handler 都是函数值,函数不必真的有名字,只需持有函数的引用,并不一定真是带 name 的 (感觉写得好废啊
6.
7.
8. AJAX 是异步 JS/XML
9. 设置 inner/outter HTML 的速度没有
10.
11.
12. JS 支持
14. 许多浏览器的控制台的 CSS warning 默认不显示,你可以启用它。 除了
15. Cookie 是 HTTP API 用户登录 session 的主要实现方法,被持久化的登录信息,一般存储在
在浏览器插件里,
此外浏览器插件利用
16.
17. (un)?
18.
19. 很多人都用
20. JQ 比较意思的地方除了链式调用、选择器 expr 支持,还有它封装的 Animation 、 Tween, easing 与队列。
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.
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)可能就要用 decodeURI18.
document.execCommand("copy") 能复制已选内容,一般结合 Form 元素 input 的 select() 操作19. 很多人都用
<script defer src=""></script> 取代 JQ 的 $(op) 或者说 document.addEventListener("DOMContentLoaded",op); 20. JQ 比较意思的地方除了链式调用、选择器 expr 支持,还有它封装的 Animation 、 Tween, easing 与队列。
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 预处理应该是这样
对比:
—
如果允许省略 tagName 等于 div 的话(RegExp 匹配..),最后一行是
我觉得十分有必要增加 define, include 和 for, if 语句 🤔 可以用作简化版宏调用 进一步避免模板化
对比:
%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 语句 🤔 可以用作简化版宏调用 进一步避免模板化
duangsuse::Echo
#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 增加了个带 : 无换行、缩进。 如果允许省略…
#Android https://t.me/AndroidDevCn/186068 UX MotionEvent
https://t.me/AndroidDevCn/186106 xmlhttp aop
https://t.me/AndroidDevCn/186106 xmlhttp aop
Telegram
TigerBeanst | 想去沙漏双星 in [CN] Android Dev
在做一个长按录音的功能的时候,发现短按一下触发 MotionEvent.ACTION_DOWN 然后 MotionEvent.ACTION_UP,这个正常。但是一旦长按了就变成 MotionEvent.ACTION_DOWN 后一直 MotionEvent.ACTION_MOVE,导致录音没法结束(既无法进到 MotionEvent.ACTION_CANCEL 也无法进到 MotionEvent.ACTION_UP)(本身 MotionEvent.ACTION_MOVE 是识别后用于上滑取消录音的,类似于微信语音)