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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#kt #code 😊之前,v8 blog说Promise就是Continuation(含续体的回调),我还觉得多此一举
和Kotlin“强大”的API一比,我却要变成ES6吹了。Web的先驱者们简直是先知啊! 代码越复杂,成品功能越简陋。这就是为什么安卓app体积不断膨胀,功能却越来越卡。

interface Promise_<R,T> {
fun then(ret:OrErr<R>) //delay() 后应该这么做,那之前只需调用它并return。它通过cpu{}排队,另一种排法是yield Promise
//launch(ctx=Main+CoroName("val")) Map状链表DSL。Job等元素
var cpu:(Runnable)->Unit; name=""
fun go(:T?):R
fun stop(:ErrStop)
stdState=0,1完成,2取消
//不要使用截获器和Key环境变量。组合优于继承,go 的WaitGroup比不伦鸡肋的scope明确多了,Android的curl比js的fetch流更复杂吗?
}
type OrErr<R>=Or<R,Err>, Err=Exception
val OrErr<R>.!!: R
sealed Or<out A,B> {
data A(:A) data B(:B)
fun as(A->R?, B->R?={null}): R?
val A:A? val B:B?
}
fun T?.as(R, T->R):R
fun T?.as(T->R):R?


😊顺带把阿K没有统一的err/null错处也搞了,还要什么 o?.x?.y ?: 1
https://www.bennyhuo.com/book/kotlin-coroutines/12-why-so-called-lightweight-thread.html

上面说协程=Thread.asCallback() 只是一种go/lua的罕见情况,好理解嘛。
kt里协程是通过retAddr()作为参数,实现的链表化调用栈,其第0项一般是 runBlocking{}或thisCPU.nextJob
这样可以在主循环注册任意个delay()或flow{}的回调,优化 Promise.all。这是虚拟线程所不擅长的
https://www.bennyhuo.com/book/kotlin-coroutines/13-implementations.html
duangsuse::Echo
duangsuse: #kt #book 元编程 http://www.bilibili.com/video/BV1XH4y1w7mT https://drive.bennyhuo.com/zh-CN/talks/2018.11.17-%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B_final.pdf https://weread.qq.com/web/reader/f7632a00…
duangsuse:
此callback非彼回调
这个cb是编译器自动生成的class

web apis从一开始就线程无关
有什么平台和语言敢说自己的异步API比Promise经受更多用户考验?

那个是动态语言所必须的,kt有编译期,完全可以不染色
然而只有suspend fun是和正常函数完全相同的,业务上完全没有比js优秀
https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/
algebra effect https://t.me/dsuse/19174

coroutine这个词不需要存在,即便是在脚本里,最多需要await和numpy的真正并发并行计算

而且即便存在,霍老也不应该说什么magic
不过就是把return()变成值,通过callLater{delay.then(me)}构成链表,要么就简单到 Thread.asCallback

可以知道,Coroutine(而非Closure), Dispatcher/awaiter 都只是为确保函数return后能正常复活的东西,和调用栈完全一致
强调它们不同的,不是蠢就是坏

堆栈互转的玩意,说的跟迷因似的术语一大堆,严重被高估了。OOP构造函数同理
还有元编程、xml ,完全是语法太复杂导致的无效学习。你看 compose DSL需不需要拖拽设计器

coroutine是在搞特殊,因为linux的read() write()就是自己的await和yield,linux没有说协程
多线程是为了IO多路(evpull)和分块计算之类的,linux没法掩藏这些细节,但语言不掩藏就是语言愚蠢了

反倒是lua以后那么多年没有语言跟进,都在回调地狱,这是问题。

lisper 在把 @Adder(x=2) 生成为 (unquote '(+ 1 x)) 时可不会觉得是魔法
他们写 (let '([x y] ary)) 时也很清楚,这不过是一种list(str) 的循环处理
kt写inline也不会觉得很难理解

也罢,毕竟字符串模板目前还是ES6的专利,php都还在sql注入呢
所以java语法比嵌套的括号还低端吗

我是说无缝RPC其他语言脚本的这回事
sql``select ${1} 是不会注入,那为啥sql里有个 ?参数的概念呢?

PHP通过ORM和prepare语句确实不会注入,那么php跨语言调用js脚本呢?
只能用reflect.invoke那种API吧?

ES6可以随便调用任何py js rb JSON接口而无惧注入

不仅如此,js还可以靠eval('var ..') 自己注入自己,顺带实现codegen

想不想注入,都是开发者说了算😊🤓

#statement 我一开始就说了啊,讨厌magic

作者在后面的章节明明有更大体的理解,却不懂知识重构
反而把这些含语言设计者私心的API拿来讲课

两句话说明白的东西,何必浪费读者时间。后面讲Channel,sequence,flow 时读者懵是不是还要复习一遍?

最讨厌与语言、与CS术语耦合的私货了。 谈算法不离编程语言的,两句话不离语意模糊的术语的,可能是称职的程序员,但绝对没有准备好设计优秀的框架

这让我怀念 coolshell.cn 的耗子,虽然他过劳死了,但不到50不写书的工匠精神确实值得钦佩,因为知识布道者确实要这样谨慎。
要是编译原理/元编程界的多数人都这么有格局,lua zig的这些优点也不会雪藏那么多年, http连双端绑定都做不到的框架也不会活那么久

duangsuse:
#kt coroutine 和现在js async func* 的情况一样,一开始没有flow,后来加进去就是。。一言难尽

我不觉得把分页数组和Reactive混为一谈是好的
就像现在flow也需要buffered()或只留最后一项
这不太能统一化缓冲区

🌚flow模仿数组好像也说得过去,但总觉得有点像C数组或指针,是在搞混淆

flow如果和sequence{}统一就更好了,使用可调的默认bufsize而不是yield一次一个值。

这样和linux的iostream就合体了,而且也能实现vue ref()的效果,两个不耽误
太过重视调度线程是在模糊要点
Forwarded from Programmer Jokes
https://coolshell.cn/articles/22320.html #linux #learn 内核/libc AOP 技术介绍

#ai 生成结果不错,晚点 #todo
分别举例用 strace;stap 监控文件打开

分别举例用 strace;stap 监控htop进程的文件打开

分别举例用 frida;ebpf 监控htop进程的文件打开

使用 criu 休眠和恢复 htop进程,进程状态存储为 a.zip
重新把 /proc/$pid 的标准流对接到一个虚拟终端,就像fg job

编写脚本,使用overlayfs和chroot模拟fakeroot,在退出时将更改保存到 a.tar.xz 且允许再次打开

用Luanitik 编写文件系统驱动 nullfs.lua,返回空目录
#design #tool https://fixupx.com/stammy/status/1815800758199361629?s=46
https://www.freefaces.gallery/
https://motherfuckingwebsite.com/
https://keyboardsimulator.xyz/

http://interface.watch
https://www.elmo.chat/ #ai
https://github.com/bugbakery/audapolis tts
https://github.com/trholding/llama2.c/blob/master/runq.c
拒绝一切 neofetch #linux
拒绝 NV显卡,非炼丹术士,用不上
拒绝一切 lib32 ( 禁用 multilib ),所以咱和 wine 八字不合
拒绝一切 拖家带口的软件,相比直接安装 shellcheck 会带上一大堆 haskell ,我更喜欢直接去 GitHub 拿二进制文件来用

话说 AUR 源和 homebrew 类似,提供的是食谱,是 midi,不是 wav,不是 bin
所以清华 TUNA 放弃 AUR 没啥问题,反正真正阻止你用 AUR 的是开盲盒般的 GitHub 访问体验

Arch 实际上体验成本不高,archinstall 已经非常可用了,不过在愉快地设置安装前推荐去 /etc/pacman.d/mirrorlist 里把国外源都干掉,国内源留一两个 https 的就足够

pacman 一开始接触会觉得非常反人类
常用的首字母就俩 :
S 从网上
Q 从本地
后面就可以开始叠 buff 了 :
i 列出包信息
y 更新缓存
l 列出包文件
s 找包
还有俩特殊的 :
Rs 删 Rd 忽略依赖地删
F 通过文件找包 Fy 前文 + 更新缓存

炸 grub 不怕,因为压根不用 grub
systemd 的魔爪已经
用 systemd-boot 取代了 grub
用 systemd-networkd 取代了 NetworkManager
grub 引导挂了从启动盘启动,按 gentoo 方法把系统挂上,重新 grub-install 一下问题就解决了​
https://t.me/kotlin_cn/110568 #故事会
Forwarded from dnaugsuz
#java oop 面试题 https://www.bennyhuo.com/2023/08/29/new-book-metaprogramming/#more

哈哈😄,这个好玩
1.(final T)在Gradle里是开发规范,但和final var一样对性能无影响 凑字数
final class是常用法,有些人在使用了虚方法(=构造期传函数)时会对其他项打final,幸好kt里是非open var即封闭、不可变

2final的类名上变量支持常量折叠如 if(DEBUG)
3 JVM.utf16文本相当于动态创建的enum,也就是低速拼接换高速equals,它的值不可替换,就像List.of().add()在运行时不可变,因此final不像rust,管不着Object函数内的重赋值
4lang.reflect.Field,Unsafe,Xposed可以
5直接共享,避免转移所有权
6可以装箱到堆上,例如AtomicInt,这样就能被非局部赋值了。 但更应该使用inline fun
py里 for 0~9: timer(it, lambda: say it) 只打印9,是它必须手写的原因
Forwarded from Bardos News
🕊 InfoQ
将AI部署成本降低8倍!Yandex 发布LLM极限压缩方法:Llama 2 只需1个GPU 即可运行
🦜📖:近日,Yandex Research、IST Austria、KAUST和Neural Magic研究团队开发出两种压缩大型语言模型(LLM)的新方法:加性量化语言模型(AQLM)和PV-Tuning。这两种方法可在不影响模型性能的前提下实现极限压缩,并在零样本任务中表现优异。PV-Tuning框架解决了模型压缩过程中可能出现的误差问题。结合使用这两种方法,可实现最佳效果,即使模型被压缩至12.5%,答案质量仍保持在95%。这些方法已得到开源模型如LLama 2、Mistral和Mixtral的验证。新方法为开发和部署专有语言模型和开源LLM的公司节省资源,并使离线部署模型成为可能,为智能手机、智能音箱等设备开辟新使用场景。
dnaugsuz
#java oop 面试题 https://www.bennyhuo.com/2023/08/29/new-book-metaprogramming/#more 哈哈😄,这个好玩 1.(final T)在Gradle里是开发规范,但和final var一样对性能无影响 凑字数 final class是常用法,有些人在使用了虚方法(=构造期传函数)时会对其他项打final,幸好kt里是非open var即封闭、不可变 2final的类名上变量支持常量折叠如 if(DEBUG) 3 JVM.utf16文本…
duangsuse:
nonlocal x=的那条? 总比在C++里到处[]() 或move||要好

大家都不知道闭包捕获引用这些,这首先就要把那些XXer 的SAM类变成函数,然后才有非局部赋值问题

java虽然总八股值和引用,但大家总是不重赋值或深拷贝
我举那个py的例子算是好的,因为py这个畜生是直接把局部创建的cell()给捕获了。。
for a[0] in range 是有效的,许多人搞不明白

duangsuse:
orm就是把class 带上where sort 绑定到sql TABLE
基本上还应该带pager

Spring负责把http路径转到类路径,绑定个函数签名

理论上,pgsql 应该直接回应http请求的😂
90%的代码不过是做鉴权这样的中间件AOP
这一切,都是从PHP和XMLHttpRequest开始
唉,万能http

所以说AOP啊,pre post一加
你看有多少不是纯CRUD

不少小公司和C#的都是直接调用sql函数,不用后端
结果最后还是让程序员充当aigc了是吧。。

那些代码看一眼都算码农啊。。
怎么能容忍90%都是跨端复制的逻辑呢?

你不写,他们也会以合规为由要求写
jpa难道不能和sql模板打配合?

graphql.io 好,百度也有个json ql叫啥 https://baidu.github.io/amis/zh-CN/components/crud?page=1
凑字数能力很强

#sql 可垃圾着呢,我还写过生成sql的查询语言 https://t.me/dsuse/17740
读着自然?都是骗人的, SQsu 都比它更“人类”

select id from 狗 where (月龄>6 and 高>40);
aka 取狗(月龄>6 and 高>40)

正宗的关系式写法是:
狗(id,高,月龄), 月龄>6, 高>40

区区filterSort的模板不值得从ORM,CMS,低代码 这些里面分出个后端开发来
http路径就是类路径,类结构就是方便转码和校验sql数据

绝大部分的app并不需要后端框架,只要pg支持http风格的sql语句和json化,加个鉴权分页什么的。
如果不是pg存储过程的语法垃圾没类库,它就登顶了

#haha #bilibili
pg的存储函数没有类库,也不好 json io, java 才充当了这个协议转换垫片
因此许多SaaS对象存储都是NoSQL的,因为这种RPC架构冗余代码太多🌚

然而在EE程序员逆天才的智锐随变下,无论是生成xml或暴露路由表对象的服务器,绑定函数的方法都非常冗余, demo的匮乏程度更是让人叹为观止
甚至连五星逼格的rust都不禁这样评价:

它们好像连classpath就是URL模板的这回事都搞不清楚,方法签名绑定也做不好,还@什么原神数据来codegen😋
很牛逼吗?fastapi,django, 正常语言到处都在用,放javakt就是高手了,这是🐮逼还是装嫩?

完全无法理解MyBatis为什么比jpa流行,还煞有介事的搞面试题
一个 sql``${} 调用模板罢了
一个被专门做来AI生成的语言,那肯定是垃圾

甚至,ORM都是一种浪费,因为70%的字段根本不会被访问,只是复制到数据库,又复制回js或php式模板侧

连最基本的程数同构都没学过,compose 后才开始搞DSL,更谈何避免Header绑定和分页参数的重复、PUT DELETED POST三方法的多态融合,更别说理解http调用与sql、与bash命令行的同质了。

人家import fire可是0代码就能提供命令行,甚至colab UI。
java元编程能吗?逆天 才EE程序员没那个心智模型!🌝
iOS 18.0 beta 4 附带的中国电信 58.6.0 版本的运营商配置文件支持 VoWiFi 了

与此同时大部分国产 Android 厂商当初支持了几个机型后,到现在都还未全面推送电信 VoWiFi 支持,不知道在干什么
#cs #asm 一个极小的2byte指令和数据RISC(int=i8)
GP寄存器: R0~RE
mov RF, setInterval
smem 0x800, 输出
lmem 0x802, 输入
地址总线u16 通过RD:RE访问

#book Computer Science: An Overview http://v8cpu.qinyue.world/instruction-set.html
https://github.com/chyyuu/v8-cpu/tree/master/examples
https://github.com/vsergeev/v8cpu/blob/master/v8cpu_isa.txt

汇编期计算:
brElse: fn ;if{}else{fn} then..
addI R0,0xFA,R0 ;+=250
jumpL R0,'A' ;if(ch==0x41)
rodata_XX: db "Hello" ;常量池指针

ALU(fn Ra Rb Rw):
addi .+
addf d+
and .&
or .|
xor .^

MCU(fn Ra lit):
jumpl b.lt
jump b.eq
move .= Ra Rw
halt b.thread
rot .>>

ldst内存读写指令,在x86上从来都是mov多写法
loadm lconst "wtf"
loadb lconst_0
loadp larg, aload 0
1
Forwarded from 螺莉莉的黑板报
【本报讯】瑞士要求所有政府软件开源

瑞士通过了《履行政府任务使用电子手段的联邦法》(EMBAG),要求公部门使用开源软件(OSS),并公开其开发的软件源代码,除非涉及第三方权益或安全问题。此举旨在提高政府运作的透明度、安全性和效率,并减少供应商锁定,降低IT成本。

法案的实施历经十多年,始于2011年瑞士联邦最高法院发布开源法律应用程序Open Justitia。尽管面临法律和政治上的挑战,EMBAG最终于2023年通过。

除了开源软件,EMBAG还要求公开非个人和非安全敏感的政府数据,推动数字主权和创新。瑞士联邦统计局(BFS)负责法案的实施,具体的组织和财务细节仍需明确。

欧洲其他国家也在支持开源,例如法国和欧盟,而美国在这方面的支持力度相对较弱。瑞士的这一立法举措为全球开源运动树立了榜样。

Source
#kt #歪点子 inline class 来了,const fun 就端上来罢🤓🤏 https://youtrack.jetbrains.com/issue/KT-14652
https://kotlinlang.org/docs/inline-classes.html


const val x = encrypt("password")
const val hash = md5(File("config.file")

val routes = arrayOf(
get("/hello", (req, res) -> "Hello World");
get("/fizz", (req, res) -> "bazz");
);
dispatch(routes); //2* if

const val MEMORY_SIZE = 640.kb //fails now
const fun p(num: Int) = it == 0
typealias Zero = Int / ::p
//现在的带验证类型
value class Even(val num: Int) {
companion object {
operator fun contains(num: Int) = num % 2 == 0
}
}
& being able to use the return value of a constexpr function as an annotation


replies Andrey Breslav:
The main use-case is 'documentation'. See the resent example of discussion for "nameof" here: https://discuss.kotlinlang.org/t/nameof-to-get-names-of-program-elements/1518/4

https://github.dev/rust-lang/rust/tree/master/library/std

there are apparently 990 functions in their stdlib that have been converted as const fns

https://tech.youzan.com/java-metaprograming/ #learn 元编程是什么?为什么js人搞JSON不需要靠元编程?

编程,就是用SDK给的套路解决问题。
元编程,就是突破病态类型(仅编译期可见的静态类型) 的桎梏,编写能写代码的代码,即codegen函数,从而实现编译器没有自带的功能,例如打印“class指针”里的内容

☺️我有一个绝妙的点子替掉 https://square.github.io/kotlinpoet/ ,只是手里的屏幕有点小,写不下
https://github1s.com/bennyhuo/Kotlin-Trim-Indent/blob/master/trimindent-compiler/src/main/java/com/bennyhuo/kotlin/trimindent/compiler/TrimIndentIrGenerator.kt#L34-L81

瞄了一眼,发现截获覆盖字面量调用是挺简单的
#parser #css concrete syntax tree。CST 与 AST 相比,它将完整包含源代码中所有的 token 与 trivia 信息。以上面的代码为例,CST 会包含 { } 等 token 信息,甚至是注释、空白都会有。这对于实现 formatter 来说无疑是极为方便的。
https://blog.gplane.win/posts/raffia-and-malva.html
duangsuse::Echo
duangsuse: 草,虽然技术不怎么但例子还是值得一看 正好在外地就买来读 很久没读过纸质书,视力下降很大 https://www.bennyhuo.com/book/kotlin-coroutines/ 协程那本我就懒得买了,再说一个把yield 外提为语句,变成 let then=回调=()=>switch{} 里的编号这样简单的堆栈互换特性 也不值得学习 问题都是应用层们乱搞api,唉 在一些比较负责的sdk里,例如Lua和Duktape js,Thread是完全不需要await asyn…
🤓🖕 咳特灵元神书到货了
自古以来不会拒绝元!编程

Jun: #android
还是compose写的舒服,看到rv的繁琐adapter会感到生理不适了

Perol:
rv算是命令式的场景下封装的比较好的了

以至于listview都没人用了,面试也不考了

见过那种在recycleview上封一层,让开发者用dsl的方式再写业务逻辑的,但是终究是拿实例去set的方式, compose好几个版本的lazycolumn性能都比不上rv,现在不知道啥情况了

duangsuse:
幽默安卓,还是跟随js的进步
listview也不会有性能问题,React每次渲染重新new整个树也不见得比微信卡啊
duangsuse::Echo
#china https://m.youtube.com/watch?v=8wZp1l05pbY 有位脫北者到了中國,非常震驚中國人居然拿肉餵狗,北韓人幾乎沒什麼機會能吃到肉,感嘆人不如狗,這位老先生的感嘆同理呀 不配當中國人 !!!! 多棒的讚美 11:00 什么是逻辑性
#china #谈政事 #science 今年,我们都是图中伟大的“小白鼠”

中国人讨厌独行侠,喜欢“万众一心”,殊不知,统治者就是利用这种心理破坏团结,让人民互斗。

为啥罪犯讨厌日本车,却砸废了中国人?
为啥牢大恨日本的军国主义,却对着七八岁的小朋友献上恐怖?
为啥公众对骚扰零容忍,却集体对手撕和服风情街美女的城管默不作声?
为啥法律想禁止美国间谍上“因特网”,却没收了避暑山庄程序员一年的劳动所得?

为啥爱国企业,要消费者去削足适履,而不爱国民?
为啥爱国账号爱的,永远不是河南、山东、哈尔滨、海参崴、地沟油那些真正需要关注的地方,却不断给富得流油的城市里不能更繁华的地区流量??

关于中华,毛太俎可是分的很清楚,蒋、日、我,三国志。 日纳粹带飞我打赢了,要感谢它们。分得清一点:爱蒋介石的国,知识越多越反动
当年留美海归喽,徐志摩和胡适儿子喽,老舍,不得善终。 批斗时不会跟你中国人。 你又不配了!

那它有多感谢侵略者呢?不要战争赔偿! 中国打赢了个假仗
当然,日本也不可能厚脸皮到不反思的,改开后中日友好医院、中日通商小学、基建借款也有在建。

中国人不骗中国人
中国人不打中国人,那长城是怎么来的?靠好吃好喝伺候着竣工的?

要小心那些歌颂人民、赞美劳动、以百姓为中心的圣人,他们只是不想多给报酬,不想被监督!
千万别被人类这种动物说成是无私奉献。 如果人之间要互相尊重的话,为小白鼠造的“高尚墓碑”请拿真金白银预先说好吧。

“你那么无私,为啥不能容忍我自私呢?”
Forwarded from Solidot
CrowdStrike 的 10 美元代金券引发争议

2024-07-25 23:34 by 遗忘之海

在导致全世界 850 万台电脑蓝屏死机之后,美国安全公司 CrowdStrike 向受影响的客户提供了 10 美元 UberEats 代金券,以用于购买咖啡或夜宵,在忙得不可开交之际休息下。对受影响的客户而言,此举被视为是嘲笑而不是道歉,他们认为这根本不可能弥因蓝屏死机导致的损失。CrowdStrike 承认该公司向客户提供了代金券,它同时还承认,由于代金券使用量太大被 Uber 标记为欺诈。对于这起史上最严重的安全事故,美国国会已经要求 CrowdStrike CEO 前来作证。

https://www.bbc.com/news/articles/ce58p0048r0o
https://www.crowdstrike.com/falcon-content-update-remediation-and-guidance-hub/

#Idle