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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
#js #dom #parsing 提问: DOM 里如何拿到 <h1>~<h6> 标题树? 假设所有 heading 都在 document.body.children 里 和解析 #Python, yaml 的缩进实质相同,我给两种方法(递归层宽、Int栈循环) 输出类似 ["# a", e2, e3, ["## b", ee2], e5] 这种 算法对输入数据的抽象有点问题,关键点两个: 1. 何时解析一个子节点(上面 "## b") 2. 获取头部深度及建设每层 [head, *items] 的函数…
ParserKt 的新简单版(因为之前说的又懒得写了...正好做个实用的子集 特性未必少) 估计会支持很甜但低开销的缩进 Block 支持,此外 operator parsing 也改进了贼多,从未深化制度的二叉树转为亲自管理逆波兰 List 惰性结构了(因为这次重设,leftRec 左递归最终还没出现就退役了…… 我们怀念它)
(另:冰封哥在上面引用的文章里说 Python 不支持多行 lambda 是因为 Pyteam 的人不了解如何解析可选 layout block,我不太赞同他,多行 lambda 在表达式,和 if: while: 等语句有点区别 会有碍排版整齐性,这点不少圈内人也认同) #plt #ce #parsing

待会这个 html 和昨天要重写的弄完了,就说说新版如何完整支持各种工业语言的解析,以及如何与编辑器建桥代码高亮。
duangsuse::Echo
怎么感染越多我心越荡 幻如一只乒毒随风自由的在传染 我要握紧手中岿然却又不动的权杖 我会变成巨人十里山路不换肩 怎么感染越多我心越荡 犹如一担小麦一天能游泳一千米 我要深埋心头上秉持等待枪毙的清单 一直往大风吹的方向倒车去 传啊传啊我的骄傲放纵传呀传不毁我萨格尔王 任毒传任它乱毁不灭是我头上的王冠 传啊传啊我无产不害怕传啊传啊无所谓批判我你看我在亲自的指挥 你看我在勇敢的去开脱啊 怎么感染越多我心越荡 犹如一件纱衣随风轻飘的在狂舞 疫情可以掀翻美国爸却不影响大中国 不惜了一切的代价莫缅怀他 传啊传啊…
开个小差( #Python #code https://paste.ubuntu.com/p/5kNyQYJXCK/ #linux #tools #cli
还记得之前的曲子吗?弄个简单的 lrc 歌词制作,不需要 async getchar() 。

from subprocess import Popen
from time import time

class LrcRepr:
def show(lines): return "".join([f"[%02d:%02d.%02d]%s" %(t/60, t%60, int(t%1*100), s) for (t, s) in lines])

from sys import argv
from os import getenv
def main(args = argv[1:], srep=LrcRepr):
(fpM, fpT) = sorted(args, key=lambda s:s[s.rfind('.')+1:])
sp = Popen([getenv("PLAYER", "ffplay"), fpM])
t0 = time(); ts = []
with open(fpT, "r") as f:
try:
for ln in f: input(); ts.append(time()); print(ln)
except KeyboardInterrupt: pass
sp.terminate()
f.seek(0); lines = [(t-t0, ln) for (t, ln) in zip(ts, f)]
print(srep.show(lines))
main()


亲自按键,亲自制作的演示可用 mpv 野子.ogg --sub-file=野习.lrc 命令播放(话说 Linux 上竟然没一个 music player 支持滚动歌词?!)
Audio
#bilibili #vocaloid #music 苏运莹版 歌: 幻晓伊
野习.lrc
1.7 KB
#txt 草( 录了四遍
#HTML #js #css #docs 如何创建分屏
[html - Split in half vertically and horizontally second flex item - Stack Overflow](https://stackoverflow.com/questions/49550792/split-in-half-vertically-and-horizontally-second-flex-item)
[How To Create a Two Column Layout](https://www.w3schools.com/howto/howto_css_two_columns.asp)
[How To Create A Split Screen](https://www.w3schools.com/howto/howto_css_split_screen.asp)
[Split.js](https://split.js.org/)
🤔今天才知道 CSS flexbox 不是用来创建 responsive 的,只是可以创建随意缩放而良好排版的嵌套盒
responsive 要靠 @media 指定覆盖条件,浏览器支持好

https://stackoverflow.com/questions/6014702/how-do-i-detect-shiftenter-and-generate-a-new-line-in-textarea 这个用 Selection/Keyboard API
<hr> <label> 这些标签和 resize, outline 的CSS熟悉 都是新学的啊,看来还是得做了才知道。
#javascript #ui #plt #js #web #tools https://rete.js.org/ 有意思,可视化编程框架,但仅仅是框架 写了点加减法、浏览器事件的例子
#cg #js https://threejs.org/editor/ ThreeJS 之前就听说过,没想到除了能弄 3D 动画,还有线上 Blender 式设计器…… 很高端
Forwarded from libra hall
好的内容,读者是随着时间来累积的,可能几十年后还有读者
Forwarded from libra hall
10万+的爽文,可能下周就无人记得了
Screenshot_20210115_010615.png
184.8 KB
估计jekyll还没好,睡了,好无奈(草怎么有错别字……
Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
dnspy 怎么被 archive 了
#statement #tech #flash #web
duangsuse:
Adobe 就不该完全禁止 Flash 内容运行,本来那么流行的二进制格式,他发布了,改变了万维网,现在就想抛弃完事?我看他那个EOL信息网页上全都是“如何删除”,没有“如何播放既有Flash”内容,无责任心至此

FENGberd #:
人家用了12年来抛弃Flash,12年你想不出个解决方案

Le Chevalier | デジタル パノプティコン:
至少几年前就在说要废弃flash

duangsuse:
那么如何转换格式?比如4399怎么办

FENGberd #:
为什么要转?重新写新的方案啊

duangsuse:
既有代码如何迁移?
关键它没说迁移到哪
既有的swf怎么办?不能用了?

Le Chevalier | デジタル パノプティコン:
(代码可以迁移到)adobe animation吧?

FENGberd #:
我做了个引擎 现在我不想维护了 还得给用户提供一套完整的迁移方案

Le Chevalier | デジタル パノプティコン:
播放器照样可以用吧

duangsuse:
不一样啊,这个影响太大
指(播放器播)本地的?

万维网上的东西,不兼容性更改影响都是很大的,我看官方的 EOL 页面也不给普通人一个替换方案,不能指望所有站点都积极更新啊

我是站在普通人视角看,为什么你们觉得这样没问题,是因为老早之前说了,现在就可以让用户直接卸了?

Le Chevalier | デジタル パノプティコン:
这么说吧,EOL又不是给end user看的,而是给用flash开发的作者看的

duangsuse:
打个比方吧,如果 Linux 的 systemd 或 DBus 因为作者无力维护,是不是他可以在警告后等几年,进入仅安全更新期,已有的代码就全部不管了,开发者自己重写(当然没人重写就不能用了),最后直接到期报废?

用户和开发者可能“smooth”地直接切换到其替代品吗?既有的 unit file 他不提供翻译帮助吗

但折中地,开发组可以整理一些工具链接,帮助使用者了解如何迁移啊,这是有社会影响的,最好还是有点意识

FENGberd #:
请不要道德绑架任何开发者 🌚
这样会让围观群众(比如我)感到不适

duangsuse:
Adobe不是单个开发者啊,它曾经因为flash平台得到了经济利益,现在EOL页面全是教你如何卸Player,那么访问一些老网站的人如何知道要用 ruffle.rs 这样的替代品呢?

FENGberd #:
为什么要用替代品...

这整个技术就应该被抛弃了

Le Chevalier | デジタル パノプティコン:
我巴不得这些网站全都被adobe flash的eol逼到不得不换h5

duangsuse:
因为要播放既有的 swf 文件……这是不可能回避的,二进制格式发布

FENGberd #:
那你到底有什么swf不能进行升级的

duangsuse:
唉,我本地安装的 Flash 是浏览器插件形式,播放本地文件也不行

算了不讨论了,我理解你们为什么觉得没问题了。

Nova:
嗯?原来现在一个js就能解决flash问题了么

duangsuse:
是的。加载 ruffle.rs 的 WASM 模块可以兼容 flash 内容
duangsuse::Echo
Screenshot_20210115_010615.png
Your site is having problems building: The tag {% on line 320 in Others/FillTemplate.md was not properly closed with %}. For more information
🌚弄了半天原来还是要写完原来的 LiteratePy... 草生
IntStack的解析算法在 performance.now() 上看起来并不比 Recursion 快,即便二者使用相当数量的[]栈🌚(估计换成 Python 才会体现差别吧)
可选缩进块估计要动态类型化 getHeadingDepth(): int|str 才行,但这个作为算法示例 封装得的确很烂😂

IntStack 的优点是靠 divmod,*+ 运算实现了整数栈,无需分配[]且实现级联收尾仅需循环。
缺点是它得把位长度分给其内项目,而每项的最大值亦有限(<limit),还有,栈是堆上分配的

如果性能真的好一点,或可设计成溢出就换算法的积极断言
🌝要是我像大部分 JS 开发者一样就好了,写了什么都立刻发布 npm ,emmm