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
#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 的啊
喜感密码,前端泄露
插入项目队列,打算写个能做 这个 梗图的 DOM/JS 纯前端工具
如果成功,可能考虑独立项目。 🤔

+ 是一个脚本化图像处理软件,比之前的文字模板图功能强大、交互性弱,但希望覆盖其所有功能
+ 必须能被URL引用,主要定义能通过URL传递

+ 能从 URL 或上传文件加载图像、能生成并打包下载图像、支持 GIF 帧的拆装
+ 支持 CSS filters ,支持 vcat 同高组合图纵切,支持 crop
+ 支持单输入多输出,能把输出图片分组,能选择置顶图(方便拆人图、引用一部分)之类的
+ 能在图片组编辑,替换/增加/删除,能重新组合被解 vcat 的图片(这样就能编辑组合图片)

+ 能利用 canvas 或 CSS position:absolute 之类的,可以贴文字什么的 就能实现这种 图的制作
+ 能利用 each() ,实现模板图/整齐表情包制作功能;初步推论以 each(imgs(":"), &= text(center()+xy(1,1), "Hello world", Image(W,H,getcolor(it)(0,0) )) ) 这种方法, center() 负责对 text 求 rect 并且与 img 的(上层) w,h 进行结合
+ 上例的 font 属性,应该存在作用域里
以这种方法,就可以制作变量为/含图片的模板图了。
+ 所以作用域是覆盖/重置保护的动态作用域,可能允许函数调用和重叠名的枚举
+ 必须简单,不能有多余或复杂的代码,合理的框架性函数要简练
t+ 先不做好看的界面,如果后期独立项目则允许 UI 细节代码
+ 基础表情包资源和图床什么的辅助工具可以后面再加,可视化调参能做到什么程度呢 🤔

预期难点在 GIF 二进制 IO 和表达式语言框架的设计,以及可视化参数编辑方法
我觉得比较可行的办法是为表达式语言添加强行列号支持,然后用户编辑文本加 pick() 就能选择偏移量

图片分组觉得用 grouped(:name, vcat(img("http://host/a.png")))grouped(:pinned, let(:g, group(:name), &= each(range(0,2), &= g[i]) ))) 比较好,不用特例语法就应该比较可定制
duangsuse::Echo
插入项目队列,打算写个能做 这个 梗图的 DOM/JS 纯前端工具 如果成功,可能考虑独立项目。 🤔 + 是一个脚本化图像处理软件,比之前的文字模板图功能强大、交互性弱,但希望覆盖其所有功能 + 必须能被URL引用,主要定义能通过URL传递 + 能从 URL 或上传文件加载图像、能生成并打包下载图像、支持 GIF 帧的拆装 + 支持 CSS filters ,支持 vcat 同高组合图纵切,支持 crop + 支持单输入多输出,能把输出图片分组,能选择置顶图(方便拆人图、引用一部分)之类的 + 能在图…
吃饭的时候稍微细化了一下最简 prototype 的设计,只考虑皮卡丘的那张粘不定高 header 的情况。

group 可以做在 URL 参数里,像 ?src=url(:a.png)&g:parts=pattern(:vcat, 15)&g:pin=ary(parts[0],parts[1]) ,依然实现了「组合数据」与「用户可突出选项」的功能

参数没必要带上 img(), imgs() 这样的图片源,本来就是 filter chain 的模式,只需要做成 crop(x,y,w,h)vcat(other) 这样的参数化单项列表即可,本来带坐标的 filter(:grayscale)(x,y,w,h) 类描述可能要多括号,但如果用 10y15 这样的坐标形式和 10y15w5h5 的 rect 就没问题了

可编辑的问题,只需给 filters 的每一项加上 code 里的 arg offset ,允许访问 .argsptrCodeArgs() 能 set 就可以了
如果没有参数,自动在输入图显示每项类型(point,rect,select)编辑器, onchange 时重 render() ,添加编辑单个 filter 的菜单操作

组编辑的问题,要有 add/remove/replace 操作和多选,全反选(这个纯 UI 问题)

一切处理链都可重建,所以不需要特别判断最后一个操作到底是什么。重建操作存在于 output group 上,输出是 src= 里被自动命名的图片。对于可重建而言, crop() 做的相当于只让下部操作在特定区间执行,所以它在重建时只用把结果粘贴回原位。

接受 rect 的 crop() 可以 crop(0,5) 省略 wh 的这样用,也可 crop(,,0,-10) 的隐含 w/h 偏移量
(0,5) 这种东西实际上是 tuple。 考虑进一步拓展,如果用 xy 或 wh 变量的话,可以 crop()+xy+(1,2) 这么用
如果要 center 文字,可用的表达式似乎是 center(:D, text)+("black", "Hello")
它需要当前 wh 和 text 的 wh ,后者只能通过专门的 box_text 计算 🤔

不过这种函数的编辑器怎么兼容呢…… 好像需要适配 code pos