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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from 0x1fff
hook神器
Forwarded from 0x1fff
比xposed还强
Forwarded from dnaugsuz
人家都 root 了你对抗个毛啊…… 这里知道这个工具的人估计都少
去 StackOvf / Stack Exchange 或者 SegFault 什么的看看? 🤔
Kotlin 果然不支持这个 operator invoke 直接引用的,看来 funcly-parserkt 还是只能用 p::pat 引用函数了
我尝试着建模一下 Firefox 的 Copy Tab URLs 插件:

templates = {
"Markdown": "[%t](%l)"
}
function fill(text, values) { return text.replace(/%(\d+)/, it => values[it]) }
function copier(urls) {
return Object.fromEntries(...templates.map(it => [it, () => copy(urls.map(tl => fill(it, tl)).join("\n") ) ]) )
}

let ctxMenu = {}
browser.locationbar.contextMenu = ctxMenu

ctxMenu["Copy Tab URL"] = copier(() => browser.tabs.current.location)
const toURLs = (get) => () => [...get().map(it => it.location)]
ctxMenu["Copy Other Tab URLs"] = copier(toURLs(() => { let tabs = [...browser.tabs]; tabs.remove(browser.tabs.current); return tabs }))
ctxMenu["Copy Tab URLs"] = copier(toURLs(() => browser.tabs))
Forwarded from dnaugsuz
说到区间我就想到之前写的 RangeMap (虽然不是 kotlin.ClosedRange 开区间上的)

这个玩意是用 JDK collections framework 的 TreeSet 弄二分查找的,所以只有 jvmMain 有 TreeRangeMap 实现

/** The greatest element in this set ≤ [target] */
protected fun searchMaxLE(target: N): Ray<N, T>? = tree.floor(edgeAt(target))
protected fun edgeAt(start: N) = Ray.Blank(start)
实现起来主要就一个函数,太草了
Forwarded from dnaugsuz
嗯,这个的确不好理解
就是假设把 0..1, 10..15 这些 Range 里的所有数各自映射到某个值的话,用 Map<Int, V> 实在是太浪费了,可以用特化的 RangeMap
比如 intRangeMapOf(7+1990..2020 to "🇨🇳")[2000] == "🇨🇳"

然后查找法就是一条直线数轴, 所谓的 "Ray" 是其上的射线(右无端点),它的定义是由 searchMaxLE (某点的最大左部值)确保的;这些 Ray 的 Comparable 实现也都是由其左端点 Int 值来代理

数轴上有 Ray(pos, value) 保存值 和 White(pos) 标记左 Ray 结束 两种项,就构成了 TreeRangeMap
Forwarded from dnaugsuz
感觉 Gradle 写死的 Kotlin 插件版本真是害死人,偶尔换个老的工作环境,忽然发现 Gradle configure project 卡死了…… 害得我以为 IDEA 不能用了,草生

现在基本记住 G:A:V, project, plugin, buildscript; repositories, dependencies, implementation=runtime, api=compile, task 之类的 Gradle 构造了,手写 buildscript 和用 shadow minize 也能行
不过一般都复制粘贴自己既有项目的,感觉这些结构真是无聊……
dnaugsuz
感觉 Gradle 写死的 Kotlin 插件版本真是害死人,偶尔换个老的工作环境,忽然发现 Gradle configure project 卡死了…… 害得我以为 IDEA 不能用了,草生 现在基本记住 G:A:V, project, plugin, buildscript; repositories, dependencies, implementation=runtime, api=compile, task 之类的 Gradle 构造了,手写 buildscript 和用 shadow minize…
之前一直对 Gradle 的 module, project hierarchy 和 sourceSet, dependency scope 感到困惑 🤔
尤其是 Kotlin Multiplatform 可以用 src/jvmMain/kotlin(java) 而不是 src/kotlin/jvmMain , 我就思量着是不是 SourceSet 可以嵌套……

突然明白过来, jvmMain 什么的其实是子 Module ,也就是和 rootProject 同样级别的东西,所以可以有 kotlin/ java/ 什么的…… 噢,,
#Python emmm... Kotlin 都有il
Forwarded from Solidot
Python 3.9 发布

Python 语言释出了 3.9 版本。从 Python 3.9 开始,项目从 18 个月发布一个大版本改为每年发布一个大版本。3.9 发布之后并不是 4.0 而是 3.10,Python 3.10 相对于 3.9 以及 3.9 相对于 3.8 都是渐进式改进版本。Python 3.9 的主要变化包括:新的字典合并操作符 | 和 |=;放宽对 Decorators 的语法限制;新的字符串方法 removeprefix() 和 removesuffix() 简化从字符串数据中移除不需要的前缀或后缀;新的解析表达式语法取代了 LL(1);类型提示泛型,等等。Media

https://www.solidot.org/story?sid=65730
#PL #CS https://github.com/duangsuse-valid-projects/Share/tree/master/Others/CommentBot/vertxBusGen#模板语言的语法解析器
Templator : Tests
好不容易实现完了这门 模板语言,不得不用非 Feed 结构实现 peek(2) ,感觉真是难受死了…… 非得处理完所有输入,没有无 hasNext/nextToken 的流式结构
为了实现这个还得有 expect() lastToken 的函数,感觉勉勉强强糊弄了吧,还是不优雅,但模板语言能用
#Phys #Math 动量 🤔 不知道设计 2D 物理系统用不用得到?
反正我不会物理也不会数学
Forwarded from Math notes | 数学笔记 (Harry Ying)
Momentum.pdf
2.3 MB
#cs #project #tools 经历了好事多磨后,我的第一个脚本语言实践终于成功啦~ 而且支持 lexical scoping ,看这里。 (上图 LexicalScope 的定义,真古怪呢)
duangsuse::Echo
How can something be so nice? 为何这能如此之好? Yet so shocking, yet so nice. 既令人吃惊,又让人叫好 How can something be so new? 为何这能如此之新? Yet so known but yet so new? 虽很常见,仍耳目一新 Ohh, one two, three, the time has gone. 哦一、二、三,时光飞逝 Problematic things undone. 问题仍然没解决 How can…
尝试翻译了一下,可能会有很多错误。how can something be so nice
这是很强的东西
yet so shocking yet so nice
又强又令人震惊
how can some thing be so new
这是很新的东西
yet so known but yet so new
又新又声名远扬
Oh one two three the time has gone
时间在悄然流逝
problematic things are done
问题已烟消云散
how can something be so groove
振奋人心的歌声
yet so warm but yet so groove
又欢快却又如此的温暖

try to find from the different side
尝试去寻找新的方向
get the choose where to look back
回望过去的抉择
resolve what others can't do for now
就现在,做到别人做不到的事
what the beautiful way to fix all wrong things
什么好方法可以修好全部的错误
evolve future generations of work teams
这是走向新时代的工作团队
but tell me why's that fear of yours
然而告诉我,你在害怕什么。
cause you know it is going to work
因为你知道,它将开始工作。
let's start from now stay tuned you're halfway through
现在,让我们开始期待,你已经成功一半了。

break it crash it take if farther
撞击它,毁灭它,让我们走的更远
making something even smarter
让它变得更聪明
do it start it make it happen
开始吧,努力吧,让他出现
stab in statements screaming louder
打破现实,大声喊:

#bilibili https://b23.tv/BV1y4411P74E/p1

这是此视频下歌词的一个翻译。
还有我的评论:

回复 @LinR隐卫-v1Tuner :我从导出的 mid 里的音标序列还原的歌词,一开始想的不是 groovy, cool 而没怀疑直接是 cruel 。

想想作者创造一个新东西的时候,其实这个过程并不好受。 有发现的惊喜也有费解和绝望,这些都是一个创造者所会经历的事情,并非旁人看起来那么光辉或者轻松,我们所信仰的东西真的对自己又温暖又残酷。[撇嘴]

https://synthv.fandom.com/wiki/Sub:Eleanor_Forte/Demos/Something_New
duangsuse::Echo
尝试翻译了一下,可能会有很多错误。how can something be so nice 这是很强的东西 yet so shocking yet so nice 又强又令人震惊 how can some thing be so new 这是很新的东西 yet so known but yet so new 又新又声名远扬 Oh one two three the time has gone 时间在悄然流逝 problematic things are done 问题已烟消云散 how can something…
这个曲子很平常, SynthV 的作者也没对它有进一步的解释,不过我真的感同身受。

我了解部分作者的经历,但我和他们真的不是一路人,但作为同样的探索者,我第一次就很喜欢这个歌词。

How can some-thing be so nice?
为何这能如此好?
Yet so sho-cking, yet so nice.
既很强大又很好
How can some-thing be so new?
为何这能如此新?
Yet so known but yet so new?
很常见却[耳目]一新
Ohh, one two, three, the time has gone.
哦一、二、三,时光飞逝
Prob-le-ma-tic things un-done.
问题仍然没解决
How can some-thing be so cruel?
为何这如此残酷
Yet so warm but yet so cruel?
虽存温度,[仍很]残酷
Try to find from a different sight,
试着从[不同][角度]寻找
Get to choose where to look back,
选个地方回头看
Resolve what others can't do for now...
去解决,他人所不能及
What a beautiful way to fix all wrong things.
真是解决一切问题的妙法
Evolve future generations of work teams.
带来新一代工作组的进化
But tell me why's that fear of yours,
但告诉我[你在]怕什么?
'Cause you know it is going to work... (keep it up)
你明-白它-会起作用(继续做)
Let's start from now, stay tuned, you're half way through!
立刻开始,期盼,只剩一半!
Break it, crash it, take it farther
突破常规,更进一步
Making something even smarter.
做点更智能的事物
Do it, start it, make it happen,
开始做吧,让它存在
Stab in statements screaming louder.
在概念之中大声叫喊
How can something be so nice?
为何这能如此好?
Yet so shocking, yet so nice.
既很强大又很好
How can something be so new?
为何这能如此新?
Yet so known but yet...
虽很常见,但…
IT'S SOMETHING NEW
它是新的


其中, #statement
Ohh, one two, three, the time has gone.
哦一、二、三,时光飞逝
Prob-le-ma-tic things un-done.
问题仍然没解决
How can some-thing be so cruel?
为何这如此残酷
Yet so warm but yet so cruel?
虽存温度,仍很残酷

SynthV 的作者 Kanru Hua 可以说是天才,小学就会拼各种电子器件了,而且开始编程以来 graphviz, latex, 统计学/模糊编程/数据编码 等对数学要求严格的子科都没有问题;我当然和他没有可比性。

但是,SynthV 对他也就相当于 ParserKt 对我,虽然它不能代表作者的技术巅峰,作者也确实是对它倾注了自己所能达到的顶峰。(别喷PKT目前没包装,我只是举个例子,而且以后你们会看到的)

用户在看应用的时候,往往是看到它比同类多什么特性,可其创造者在看的时候除了享受它好的方面,也会深刻地记住在还没有它的以前自己是怎么做的,为什么它会这样出现,以及为了它自己又付出了什么。

我们为成品倾注了那么多,在实现它的价值的同时也实现了自身的价值,但一个真正对自己的事用心的创造者是不会忘记自己付出了什么的,这些终究是难忘或感慨的历史。

与其说新事物是引领潮流,不如说它们在创造历史——每个新东西总是能改变些什么,而它们也并不是凭空产生的,其中有机缘巧合亦有数十载的不懈努力、有天才的灵感乍现亦有常人的勤能补拙,最终造就了它们,让过去成为历史,因为领域总有历史、总有因果先后,事物都有源头、都有最初的直觉,世界上本无没有『道理』的事情;能不能看到这些,我想是创造者和重复者最大的不同。

我明白那种焦躁头疼、无所适从的感觉,所以说我想到的是 "cruel" 而不是 cool 或 groove ;因为设计本来就是有时辛苦有时甜,但我们不会因为苦就不再做,像是自虐一样,有些人一碰上就无法自拔。
并不是因为他们能吃苦,或许只是因为他们更能感受到甜罢了。

1,2,3 时光飞逝,说的可能是 1s, 1h 这种时间,但对于比较复杂或系统性的问题,这 "1" 可能就是一天、一周,甚至一个月,时光飞逝,甚至在烦躁中三四十分钟就过去了,毫无进展,你们想象不到那样的感觉——单在应用层做一些完全能靠查资料、用复用库/框架、甚至复制粘贴的东西,是不常遭受这种痛苦的,因为你们总是有同行者和已曾完成的人。

从大体上看大家都在创造,在组织自己的逻辑;可有些人解决一个问题、有些人为更多解法服务,好比计算机编程应用与计算机科学。
而在架构的前沿孤独的前行者啊,或许荆棘会划破你的衣服,或许你会怀疑自己前行的目的和意义;你或许想放弃(甚至真的做了),但终有一天会重新拾掇、再次出发。

毕竟, 5 次技术架构的迭代才能构筑出一个好引擎, RUCE, -DNN, LLSM ,我们看到了三次,但这背后作者所付出的是无法想象的时间和精力。
只是正巧他关注了、他从新的角度发现了,当然也没有忘记回首自己来的地方。所以,他能找到这个绝妙的方法,去改进自己想改的“惯例”。

Break it, crash it, take it farther
突破常规,更进一步
Making something even smarter.
做点更智能的事物
Do it, start it, make it happen,
开始做吧,让它存在
Stab in statements screaming louder.
在概念之中大声叫喊


在旁人看来 "groove", "cool" 的东西,感觉正是因为始终记得它们和自己以前难看的样子,才会分外不一样吧。

对作者而言,追寻答案的过程其实和答案本身一样激动人心,并不是非得 "done", "groove", "easy", "warm" 才会觉得有意思,所谓花未全开月未全圆,满了、结束了,就无可修饰、不能锦上添花了,不叫完美,反而应该说是“盖棺定论”了,死了。

---
ParserKt 在封装上是很菜的,很大一部分是我的前端技能和项目构建管理能力不行,但它也是前前后后经历了 10 次、5 门语言的重写才有了现在的模样——还并不是最终完成,可以想象在这些看起来简单的模式、用法后我想了多少,对技术的用心是无法单纯用算法复杂或简单来评判的。