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
https://lingdong.works/ #life #tech #cs 真的好无奈,这些前端类大佬,虽然并不真正了解你的领域,但基于数据结构算法的基础也可以轻松做一个能用的玩具出来,这能灵活利用他们的智商。
而且他们的行动力超强,即便是这种麻烦的设计,也是在他们眼中“不起眼”的小把戏,好打击自信呢。
This media is not supported in your browser
VIEW IN TELEGRAM
#reveng 草,之前听到过,不过不知道可以动态 hook 各种函数…… 当时不理解它说的 "magic" 是啥玩意,我运行过测试但啥输出没有
Forwarded from 0x1fff
frida有啥好的对抗方式吗
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