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
Forwarded from Rachel 的消息发布站点 (Rachel 环刺海胆单推人)
博客新文章
《为什么我不推荐 LG Gram》
https://blog.stfw.info/articles/why-not-lg-gram/

「这篇文章基本成形于我 LG Gram 送至北京售后点维修的十天。这十天里,我碰不到 Steam,写不了大型工程,没有 Typora 甚至连 Markdown 都用得糟心,唯一能让我重温代码的居然是跑在 Termux 上的 code-server 。
但这次硬件故障本身却并不是我不推荐 Gram 的原因。倒不如说……」
#js yinwang的平滑滚动也是这思路,如果不想interval周期刷新 就只能取其半这样模拟函数 e=document.body,K="scrollTop", f=余=>setTimeout(()=>余<0?0: f(e[K]-=余*.7), 100);f(e[K])

噢我说错了,可以 渐变=(v01,f=t=> eK=v0+ease(t)*(v1-v0) ,timeout f(t+=0.1) ) f(0) 这样的,就靠t参数变
v1=0 的情况内联下代码。
jq.swing 曲线类似 y=sinx/2+.5,因为正常y是 -1~1 高2

完全摆脱js是不可能的,但肯定能仅head script[src],overflow scroll 好像是DOM的概念,CSS transaction和:hover碰不到,然后 @media(screen w>90px) 规则也是前端入门必修,反正我不想学web排版🌚就没学

jq就是简写DOM,感觉现在要么DOM要么vue这些的太乱了…… 调用链在kt已经被 User().apply{name=;age=} 取代了,除了语法统一真不知道这个 css(k,v?)比 o.k o.k= 有啥不一样
但是 .on(css,click,f) 的确有用哈😂
悄悄告诉你,vscode有大量事件代码含"Disposable"

要么只简写要么过度设计
这群人啊……
噢对了,jq对dom的额外支持就是内联HTML靠purify标签过滤免注入
和php escape()一副德行,分不清啥是val:String啥是Element🌚萌娘百科现在还有js是拼接html生成列表
当cloneNode(deep=1)不存在是吗

DOM的文本等价、双向更新是天才的设计,但inner/outer HTML被滥用了,以至于现在还有人以为innerText含<>也是注入..😵
不过最近 #java #security 的 log4j 2.x rmi lookup RCE漏洞倒是哈人😂原来 Log.i("emm:{}","{java.os}") 还能这么用

那么,爱escape()甚至仅http内转&lt;&gt; 的phper担心的就有理了,所有文本都是代码☺️👍javaee大佬牛逼,会咱不会写的东西呢
Forwarded from Rachel 的消息发布站点 (Rachel | 是糙汉子)
肝了会儿终于把 https://blog.rachelt.one 的 jQuery 去掉顺便重写「返回顶部」按钮和搜索的逻辑,目前前者除了一行 inline JS 做滚动外仅靠 CSS 就能跑(计划完全摆脱 JS),后者也做了点缓存和异步加载,奇怪的浏览体验变好了
duangsuse: #kotlin #Dontknow
dsl marker 是干啥的啊, top{ sect{fn()} } 里top的this不对sect起效? 就是说禁止外层隐式this?

平行线:
禁止隐式传递外层this,之前写gradle时候把minSdkVersion配置写buildType,结果实际调用的外部android层的this

duangsuse:
利用编译器处理解决流行问题是kt独有的
当然butterknife也是,但我觉得不算编译器
这些概念-变量绑定在动态语言和现在的 viewtree DSL 里不值一提

タナバタ カヤ:
官方都不推荐了

duangsuse:
对解释器嵌套作用域而言隐式this是特性,就像js with({a:1})a
所以要实现仅1层隐式this
dslmarker XLang
XLang class A{ fn top(FnOn<A>)
,sect }
拒绝A外的this变量,应该易想到

groovy就算了,早点让kts取代它

一群javaee 语序都写不顺的工程师,写几个exprlang就开始折腾简写语言,当然会落入设计不严谨的大坑
duangsuse::Echo
#js yinwang的平滑滚动也是这思路,如果不想interval周期刷新 就只能取其半这样模拟函数 e=document.body,K="scrollTop", f=余=>setTimeout(()=>余<0?0: f(e[K]-=余*.7), 100);f(e[K]) 噢我说错了,可以 渐变=(v01,f=t=> eK=v0+ease(t)*(v1-v0) ,timeout f(t+=0.1) ) f(0) 这样的,就靠t参数变 v1=0 的情况内联下代码。 jq.swing 曲线类似 y=sinx/2+.5,因为正常y是…
javaee日志库的那个代码执行漏洞真是太哈人了,原来还能 Log.i("emm:{}","{java.os}") 这么用🤣 可是给营销号整了波流量

#py f''-string (没有在语法上支持的字串内插):学我没学到精髓😎
#js shcat ${"a.txt"} 时我能知道{}里是参数
#kt 虽然内插没es6灵活, infix fun 也能做dsl
duangsuse: #kotlin #typescript #plt
应该是kt的计划
我倒希望安卓写完web也能用(
go好像是tcp层的应用比较多,jvm都在http乃至data-json层

kotlinnative的gc模块体积应该降低了吧
总感觉不够取代C,尽管能充当FFI

反正 语言就是工具 好用就用 不好用就不用

kt敌手:groovy+jb家ide (不是

Go的协程讲真不如Kotlin设计的好

duangsuse:
和lua比呢
嗯对lua是多虚拟机协程,kt是编译期suspend fun

冰封说kt协程是基于cps(调用尾步骤编程)的,陈光剑的书也说ktcoro有 Continuation 的概念,可是我只懂typescript function* 的状态机化

说不定这俩就是一回事 俩名字,我只认 函数协程=闭包+指令位置保留

iseki
go天天吹协程,结果就拉成这个样子
坐等Kotlin解决下调用栈的问题(但估计解决不了)

duangsuse:
是啊有啥了不起的,lua openresty 不厉害吗

Science Yuan:
Cps是延续体传递,不是调用suspend时自动产生一个回调函数
然后调用栈就没了(渐渐远离调试

duangsuse:
当然不是,可也没更好的方式理解
毕竟不能说 1+2+yield 是函数

可es6里func*是不包含调用栈,只有闭包变量状态的;通过__awaiter 执行每个Generator对象

所以我觉得func*都可写成Iterator对象形式

iseki |
kotlin是通过ContinuationImpl执行的吧我记得
里面也是把层拆了,一层一层迭代来着,所以调用栈完全裂开
duangsuse::Echo
虚假的公务员:某公司不承认合同,调解无效,引导xx依法维权(指摊手送客) 真正的公务员:大致事件应该是这样的:公司要小刘他们家拆迁,刚开始他们家不愿意,然后公司就说先给你18万安置费,你们自行拆除,拆完后再签协议,承诺赔四套房子,如果违约,赔偿160万。 然后他们家拿了18万就把房子拆了,拆完公司却没有履行协议,未赔付四套房子(160万),然后他们没地方住了就去售楼处,影响到了公司的生意,公司就找人把小刘的父亲打了,小刘的父亲原本就有残疾,被打之后失去了经济来源,但是公司在这时候宣布破产重组,成了老赖,…
我觉得这件事说明中国人并不是不知道某组管理的习惯,只是不想关心而已🌚 但是因为暴力强迫拆迁这样的严重事件 还是有不少人站出来,包括一些不太自媒体的写手

可惜呢,墙是系统性的,现在许多社媒都封杀了
如果只是批评其实意义不大,我觉得就事论事吧 这个..
总之我不知道这是否能算一个风向标,

今天一个威逼签订、老赖拒不履行的合同,能搞得两老一小家破人亡,而法律睁一只眼闭一只眼,甚至有人说“法律上没法给他 公道” “已经很照顾了”,就不担心未来稍微穷苦小众一点的人被某些人“含泪抄家”?

在中国涉及地皮的东西背负半辈子已经够了,如果合法权益也是“君子协议”,信访和稀泥乃至倒打一耙,真的不知道未来如何?又想到之前的蛋壳公寓,老赖真的就能为所欲为吗🌚 法院和公诉呢
《中国速度》
#java #kotlin 元编程
duangsuse::Echo pinned «我觉得这件事说明中国人并不是不知道某组管理的习惯,只是不想关心而已🌚 但是因为暴力强迫拆迁这样的严重事件 还是有不少人站出来,包括一些不太自媒体的写手 可惜呢,墙是系统性的,现在许多社媒都封杀了 如果只是批评其实意义不大,我觉得就事论事吧 这个.. 总之我不知道这是否能算一个风向标, 今天一个威逼签订、老赖拒不履行的合同,能搞得两老一小家破人亡,而法律睁一只眼闭一只眼,甚至有人说“法律上没法给他 公道” “已经很照顾了”,就不担心未来稍微穷苦小众一点的人被某些人“含泪抄家”? 在中国涉及地皮的东西…»
当“人永远也无法相互理解”第一次被提出时,就已经是真命题了 #statement 😒
月亮乃至星空、宇宙对只能看见井壁的人来说就是幕布的小挂件🌕,但对另一些人是努力奔赴的全部

「燕雀🐓安知鸿鹄🦅之志」是傲慢吗?其实不是。燕雀望得一生平稳安逸👌,鸿鹄望得历遍大江南北,只是付出目的不同,付出及方式不一定有高下之分😾——真正的傲慢是拒绝交流🤐、故意造不平衡🥴,而因为这种区别就随口评价归类、猜忌敌视😡,是对同道、以及领域最大的傲慢🙃。 领域可以是你的饭碗,但绝没有狭窄到能拿在手里肆意嘲弄👾
duangsuse:
这个是必须的,很多人没有意识到 best optimizations should be sound

所以就弄得大家一些写法不知道该不该用,等不等价

这是好事,掌握自己的代码比相信stdlib的好,标准库有时也烂, jdk DataInputStream 烂到家了

drop和take: #fp
for(x in xs)if(!p(x))break ;yield x
for(x in xs)if(p(x))yield x; else break

firsts ,意思是 dropWhile{it>1}.first()<=1 ,且如果 0,2,3 那2,3保留;首项是0
是这个意思
>我以为和removeIf是一样的效果

duangsuse:
因为没有 <1 来阻止消耗,所以结果是空行;如果末尾有0 就是[0]
这个函数不是很有用,模拟控制流的

std collections 的函数不都是一样有用,映滤排组归(map filter sort zip reduce)比较有用,这些只在惰性Sequence比较有用
比如 kbd.takeWhile{it.key!='q'} 这样,有人叫它Observer或ChainableEvent...

kt的 associate (List.toMap) 就很不直观,all/any/none 在写时我也常只试 exists, has 这种😂

噗,居然javaee配函数式fold..
为什么我一直听说『泛化类型』,但很多人都是用范型,模范类型?😒
之前我也常constructor=架构器...
想起来好像没毛病,因为没class就没oop『架构』😂

不需要 a取若(不空)归纳(x),it.then(it1)。 空则x
的, empty().fold(x)=x

此外用 reduce{a,b->} 就是不用初值的,相当于hsk的 (fold f v xs) (fold1 f xs)

你可以 val f:(Array<>) =::listOf 这样试吧,反正推不出就指定

可是接受所有Func的函数又能做什么.. 不就是反射
类型系统、<T>参数 的意义是限制,这样我们就能知道某变量能干什么
兼容无限大、意义无限小,所有人都爱听的话很相同 意义不大

此外是一致性传播,比如<T> T.let{T->T} as T 里T是一致的,此外 (x as A).let(f) as B 里
f是 Func1<?super A,?extends B> 即in A-out B这样,A=Int则f入高至Any, B=Int则f出低至Nothing,比如 (Any)->R 也是种 (Int)->R ,比如 TODO():Nothing 可以在如何地方出现, listOf(break,return) ... 噗😵

duangsuse:
泛型型变性 variance 的问题我也讲了几遍了,感觉越来越精简😊

其实let/also 也是我刚刚说兼容很大的情况,所以大家都把它当语法了;但它的意义是无关应用目标的,只是语序变更

kt里基本不需要考虑, class A<T>里若T只在结果位置,没有setter 就是outT

不写框架的、只写fun 的情况这些没区别,就是 Array<out String> 你应该见过,也就这样作用
#android adb 权限🤔
#plt 回复 @幻の上帝 :原来你认识冰封和LH_Mouse[doge] 显然是做编译器喽, 我也做(kamet-dse),但只会前端。或许你应该试试讲科普,对概念理解得就会更具体。科普的语言简洁、顺序分明最重要,或许能遇到新东西[doge] 我这不就是遇到了吗​

我对var的理解是 int i=1 这样显而易见的不必多打字,语言规范更多是种导向而非阻碍,如果类型足够含糊(如val x=a[i])大家是会标明的,规范不该太绝对;而且J11好像引入局部量推导了
抽象不该有什么目的,它是为实现目-易读易配置/扩展/移植的用的。
理解和关联代码的成本重点不在类型,而是表达方式。 自然语言的问题就是不精确,但未必只是类型不够强导致的,还有语序、多态、作用域的不严谨;kt这些语言弱化类型不也没造成你说的那种易错吗;对人类而言命名就是一切,如果符号能阐明目的,类型就可简略;如果人连程序目标都不知道,类型没有意义,因为它就是用来限制算式目的的

如果你看我最新一期视频,你会发现我对几何绘制都是用「物理命名法」,在js里使用这种单字母 类型优先的起名 不需要思索,它和隐式类型不冲突

intel没有movq/l/bi这些的确更照应;语法对可读性至少起到上限-VB或APL 对工具app开发、普通人有多可读?
Lua的1始数组我觉得就不太利于% ,<N这类计算,但其实现在很少人写i+1这些了,都是forEach,map 这样;但从易错不易辨来说,我觉得理解准确就不会有大量低级错误,所以可读性至上
Forwarded from dnaugsuz
vscode混乱得很特殊,它的开发团队一边用node和css/dom 、用ipc执行插件,一边不相信 dom ,它的文档结构和事件体系不仅冗得很,而且大量无用代码/重造轮子

最典型的是滚动明明有 scrollTop,最多监听一下懒加载吧,它利用css top: 手算..
代码高亮和minimap明明可以利用background-clip一块生成, 它非得折腾流行的bind 什么dom diff,感觉就像群不懂前端的人把winform移植到网页一样

一边视图树/组件一边ipc/parse一边函数式 ChainableEvent(全标的内存泄露不让用...),还搞一大堆Disposable 「设计模式」,最后还不是 selection, text insert,undo 这些概念流程,命名、词重率长破天

如果你检查它的源码,会发现基本DOM提供的它都包了一层,连键鼠事件都以全无元编程的方法弄出Standard ,远比keybind(还不是 code|= Ctrl,Alt,S 查表..)所需的多,我甚至搞不清某个函数是从DOM还是它自己靠reqAnimFrame的 event队列(控件还支持冒泡和捕获序..)调度的😵
当你按下 Ctrl V (paste命令),差不多要传递4个文件,比如textarea,CommandDelegate才能到 codeEditor控件(Monaco)

还是Atom 好,至少它不一会选 ClientRect一会用 canvas measureText😂 、一边学ace/codemirror 用增量行绑定一边手算 top:233px

最近又加了啥工作区信任..IDEA都没
当然我还是会用的,只是说VSCode 真是一些人拽烂俗技巧的大熔炉🤪
只要不是公开api,肯定命名死长、无关概念 不同写法 贼多
https://github.com/Mivik/GetDex/blob/master/app/src/main/cpp/include/getdex.h#L542 噢..原来在这里啊,decode 到art细节,然后
https://github.com/Mivik/GetDex/blob/master/app/src/main/cpp/getdex.cpp#L22 这里拿到代码,填成员结构/CodeItem
是有ExtJNIEnv的自定Thread 缓存,用互斥锁创建size不冲突的dex
access,flock 都不常用啊,看来C程序员真得会看man ioctl.h 🧐 #statement 不要背书
ndk_dlsym 是用来兼容高版安卓的
cydia不知道用没用

https://github.com/Mivik/GetDex/blob/master/app/src/main/kotlin/com/mivik/getdex/GetDex.kt#L63
clsLoader-path-dex元素-fix(内项)
只dump自己类加载器的项 https://github.com/Mivik/GetDex/blob/master/app/src/main/kotlin/com/mivik/getdex/MainHook.kt#L40
会用 Xposed hook 应用 api-framework 上下文创建的 attachBaseContext ,在JNI调用 ART api 转写出dex

https://github.com/Mivik/GetDex/blob/master/app/src/main/kotlin/com/mivik/getdex/MainActivity.kt#L142
果不其然C段弄安卓都会自己写框架..拒绝xml

只是不知道dex是怎么nopped 的,我只听说叫壳(解密加载),难道新虚拟机里类结构必须预定义了?

#reveng 然后是这个 https://github.com/Mivik/Reedle Riru so注入
https://github.com/Mivik/Riru-Il2CppDumper 支持.net基址和Method dump的原版。 Prefer维护的 UnityStudio 也挺好用的
duangsuse::Echo
https://github.com/Mivik/GetDex/blob/master/app/src/main/cpp/include/getdex.h#L542 噢..原来在这里啊,decode 到art细节,然后 https://github.com/Mivik/GetDex/blob/master/app/src/main/cpp/getdex.cpp#L22 这里拿到代码,填成员结构/CodeItem 是有ExtJNIEnv的自定Thread 缓存,用互斥锁创建size不冲突的dex access…
我是在找有梯度下降算法的项目.. 顺带多看几个
https://github.com/Mivik/tako/blob/main/src/main/kotlin/com.mivik/tako/phigros.kt jvm音游吗,完工了还是没有呢。。🤔感觉没渲染部分 只有chart

比我还少文档(我是尽量精炼),也是没办法了。大家的许多代码都不是用,更无法给人看的🙏
不可说,也不能说。

然后 mivik 现在也在弄一个缩小版的 kamet ,也支持concept(trait) ,语法上应该是扩充 val mut struct fun 那些基础了,但是cpp代码结构很精炼 #ce
https://github.com/Mivik/rin/blob/main/main/parser.cpp#L363

技术选择应该和ktkamet差不多,递归下降、peektake分词,尽量少用std::
https://github.com/Mivik/rin/blob/main/main/ast.cpp#L146 仍然是虚方法遍历cg

https://github.com/Mivik/rin/blob/main/main/function.cpp#L23
类C类型,支持函数主语和类型参数

https://github.com/Mivik/rin/blob/main/cli/main.cpp#L161 它还附了一个cli(无repl),没有llvm外的库

《我在怀疑华为方舟未来正不正经》
《一个没有假想客户的框架会在何时弄出仓颉呢》
《如果没有深刻认识自己的目标,靠照猫画虎只能当万年老二吧-胜于第一会是怎样,猜不到》
duangsuse::Echo
https://github.com/Mivik/GetDex/blob/master/app/src/main/cpp/include/getdex.h#L542 噢..原来在这里啊,decode 到art细节,然后 https://github.com/Mivik/GetDex/blob/master/app/src/main/cpp/getdex.cpp#L22 这里拿到代码,填成员结构/CodeItem 是有ExtJNIEnv的自定Thread 缓存,用互斥锁创建size不冲突的dex access…
感觉缺的太多了,大佬们真的是啥啥都会做,除了OI 基本CS的每个领域,从编译图形到网络,框架,调试工具,ML 全都会啊🤪 那么如果一个人比你小却比你牛,你就永远赶不上他了

所以为什么我们不在乎一些无关实事 的东西,因为非常清楚牛人真的太多了;科班套话外的牛人和技术侧面也太多了,大家都有自己的涉猎,真的没啥好比的,要比起来 这些 好像也不能加工资啊
那么为啥xx大厂就更牛呢。 #code