duangsuse::Echo
这几天也没啥可干🌚 队头就是二进制绑定、kd树等探索和..绝句编译器前的验收 这个我不急 #project 这样并不泛泛的实例,或许也有助于我提升web前端水平 请大家有空时了解下这个科普项目吧 ..虽然现在还在讨论 我这次的文章是 OOP 结合 awt.Graphics 绘制印花,扩充是UI参数化 支持 px,% 单位,以及 Android Painter 移植 形式是带canvas TIY编辑(只有JS伪码部分) 教学目的: 区间迭代、边界情况、子类继承、数据分类型 碎碎念:请看下节!列表处理…
TIY编辑器的代码片段执行。 对于py所有片段均可运行,对J含 class{void run() 的可以
在第一行加上路径可以更改打开文件(运行时可引用文章源码集),最终可下载的代码就是完整的
对于复杂的框架,只能用Mock对象/API来模拟,验收学生的理解
关于 Java 分文件(class)支持,好像可以逐个
javax.tools.ToolProvider.getSystemJavaCompiler()
getTask(err, fm,diag,conf,clz,src)
src是fm内JavaFileObj ,可以从文本提供。
diagnostics 有 start-end,src,message
https://www.cnblogs.com/strongmore/p/13350587.html 实现了一个 in-mem 的多class加载,我应该不需要通过删除 package;import 定义来解决 classpath问题😂
CheerpJ是JVM的离线实现,可以加载字节码;他们还移植了Swing
Py的话就是在 sys.path 添加 StringImporter.find_module(k,path)
Pyodide 是 #wasm 上 CPy 的移植
关于它的可交互控件,在一节课头部,首先是像基本操作一样,敲出提示词播放音效
然后是按 def test(v,*arg): 的要求编写 app()函数,比如顺序查找、语法学习。js侧可拿到调用计数、二者结果等,给用户打分
这是配合课后静态问卷做的
在第一行加上路径可以更改打开文件(运行时可引用文章源码集),最终可下载的代码就是完整的
对于复杂的框架,只能用Mock对象/API来模拟,验收学生的理解
关于 Java 分文件(class)支持,好像可以逐个
javax.tools.ToolProvider.getSystemJavaCompiler()
getTask(err, fm,diag,conf,clz,src)
src是fm内JavaFileObj ,可以从文本提供。
diagnostics 有 start-end,src,message
https://www.cnblogs.com/strongmore/p/13350587.html 实现了一个 in-mem 的多class加载,我应该不需要通过删除 package;import 定义来解决 classpath问题😂
CheerpJ是JVM的离线实现,可以加载字节码;他们还移植了Swing
Py的话就是在 sys.path 添加 StringImporter.find_module(k,path)
Pyodide 是 #wasm 上 CPy 的移植
关于它的可交互控件,在一节课头部,首先是像基本操作一样,敲出提示词播放音效
然后是按 def test(v,*arg): 的要求编写 app()函数,比如顺序查找、语法学习。js侧可拿到调用计数、二者结果等,给用户打分
这是配合课后静态问卷做的
Cnblogs
java中的CompileAPI入门及使用 - strongmore - 博客园
介绍 java5之前我们可以通过java提供的tools.jar来操作java编译器,java6提供了新的API,让我们可以更方便的调用。包名为javax.tools。 使用 通过文件编译 Strin
#os 冷知识
0. 旧闻 在中国熟悉二进制和流媒体的工程师,月薪5k https://tttttt.me/haneko_daily/2030
1. gcc 编译出 APE格式的sh脚本能在win下执行
2. 支乎程序员全平台添加截屏隐水印 ,和B站BV号、抖音禁粤语有的一拼 #党八股
3. Flash 模拟器 Ruffle.rs 对 AS3 SWF 的支持迅速增长 ref
4. 大数据杀熟,中国人专画中国人 https://tttttt.me/shudongcomin/7743
5. https://tttttt.me/rynif/30235 #dev 缩进风格
#sql 冷知识
1. 非要用MySQL 结果制造很多工作 于是玩hack
2. Postgres 的纯js #WASM 和 Node 实现
3. 不用datetime 怎么存时间
int(11)中的 int 决定了存储空间,11 则是和 ZEROFILL 配合的,只影响显示
4. pgsql 扩展程序 #bing
https://tttttt.me/haneko_daily/2224?comment=562
5. sql合成音乐 https://tttttt.me/rynif/30327
0. 旧闻 在中国熟悉二进制和流媒体的工程师,月薪5k https://tttttt.me/haneko_daily/2030
1. gcc 编译出 APE格式的sh脚本能在win下执行
2. 支乎程序员全平台添加截屏隐水印 ,和B站BV号、抖音禁粤语有的一拼 #党八股
3. Flash 模拟器 Ruffle.rs 对 AS3 SWF 的支持迅速增长 ref
4. 大数据杀熟,中国人专画中国人 https://tttttt.me/shudongcomin/7743
5. https://tttttt.me/rynif/30235 #dev 缩进风格
#sql 冷知识
1. 非要用MySQL 结果制造很多工作 于是玩hack
2. Postgres 的纯js #WASM 和 Node 实现
3. 不用datetime 怎么存时间
int(11)中的 int 决定了存储空间,11 则是和 ZEROFILL 配合的,只影响显示
4. pgsql 扩展程序 #bing
https://tttttt.me/haneko_daily/2224?comment=562
5. sql合成音乐 https://tttttt.me/rynif/30327
Telegram
羽毛的小白板
#rust #gui 🤔Yew 是 #wasm 的前端框架 https://tttttt.me/dsuses/5232
Tauri.app #js 很流行,能够打包到600K 但看起来它只是和html调用rust的工具,或模板引擎
Dropbox,CF 已经应用 Tauri 实现高性能的网页端计算
“我还是搞不太懂技术栈对电量损耗的影响,Native 会比 Web 省电吗?Python 会比 Node 省电,但是 Python + PyGames 会比 Node + Libyue 省电吗?Dart 比 JS 省电,但是带上 Flutter 呢?
https://tttttt.me/im_RORIRI/10799
Tauri.app #js 很流行,能够打包到600K 但看起来它只是和html调用rust的工具,或模板引擎
Dropbox,CF 已经应用 Tauri 实现高性能的网页端计算
“我还是搞不太懂技术栈对电量损耗的影响,Native 会比 Web 省电吗?Python 会比 Node 省电,但是 Python + PyGames 会比 Node + Libyue 省电吗?Dart 比 JS 省电,但是带上 Flutter 呢?
https://tttttt.me/im_RORIRI/10799
Telegram
duangsues.is_a? SaltedFish
当然,请参考以下链接获取有关 Rust 中流行的 UI 框架的更多信息:
1. Yew - Yew 是一个现代化的 Rust 框架,用于构建基于 WebAssembly 的前端应用程序。它采用类似于 React 的组件模型和虚拟 DOM,提供强大的状态管理和事件处理功能。Yew 的官方网站提供详细的文档、示例和指南。
2. Iced - Iced 是一个简单高效的跨平台 GUI 库,专注于构建桌面应用程序。它提供易于使用的 API 和功能强大的 UI 组件,使用函数式反应式编程风格。在项目的 GitHub…
1. Yew - Yew 是一个现代化的 Rust 框架,用于构建基于 WebAssembly 的前端应用程序。它采用类似于 React 的组件模型和虚拟 DOM,提供强大的状态管理和事件处理功能。Yew 的官方网站提供详细的文档、示例和指南。
2. Iced - Iced 是一个简单高效的跨平台 GUI 库,专注于构建桌面应用程序。它提供易于使用的 API 和功能强大的 UI 组件,使用函数式反应式编程风格。在项目的 GitHub…
duangsuse::Echo
#java 看到一篇维基挺有趣 'T'物 泛型类 造于 此刻, 值 可变<T> - 读=值 - 写(:T) 值=它 - 方法1 泛型类<数>, 写(5);说(我去读) - 方法1 泛型类<N>, 写(5.5);读() (说) 绝句不使用“元类”。 T同名例、T 的变量域是隔开的(T上没有“静态”),类型保存在TYPE里 物 值() .地址 “函数,管道 等对象不能是key” - 特征码 数 - =(:值?) $YN 类 地址 …
#PLT #zhihu #wasm Moonbit 月兔编程语言alpha(reScript 作者的续作), 提供了许多算法(HAMT tire map, AVL tree) 的 code playground
语法有点像Go+Rust,支持List/Array,模式匹配和推导,但非常轻量,而且和Go一样易用,编译到WASM❤️。
本来想答一下的…… 但最近还有框架在设计,因为没发现比绝句更多的功能或更清晰的模型就不想再分析了
自己在设计的框架和业界差别太大…… 看着这满屏的
现在我不关心那些即便“学会了”,也对设计没啥价值的技术细节
——
就在刚才,我发现即便作为一个前端框架,也是可以用“递归下降”的思想做数据绑定、配合“逻辑式编程”做表单验证, 而这种的递归下降,便拥有了CSS选择器的扩充
EQ 模板函数应该接受3种情况:
都会注册相应的KV和监听变量,从而实现爬虫、列表节点复用的功能, 按顺序解构,就是基于“编译原理”里特有的技术 - 其实就是树遍历而已
节点变量
算法世界的原理,是做不到和现有框架、和其他算法如此深度的联动的;不仅让应用更灵活, 连算法也更简单了
对我而言,(编程语言的价值== 它所提供“设计体系”的价值) ,我是没有在意“编译”到什么的
Ruby 和PHP的衰落证明,没有成体系的语法糖,没有扼要的对象接口模型,代码越多就越难增添、难复用;框架术语越多,精力的内耗就越大
就是因为心智模型能提前消灭绝大部分的问题,把本质相同的功能整合到单一写法上, 我才把这么多精力放在编程前的设计。
对代码仁慈就是对用户和程序员残忍……
语法有点像Go+Rust,支持List/Array,模式匹配和推导,但非常轻量,而且和Go一样易用,编译到WASM❤️。
本来想答一下的…… 但最近还有框架在设计,因为没发现比绝句更多的功能或更清晰的模型就不想再分析了
自己在设计的框架和业界差别太大…… 看着这满屏的
let,self,func
觉得,在定稿前,我不想太仔细的看其他API。我想保持自己的术语体系现在我不关心那些即便“学会了”,也对设计没啥价值的技术细节
——
就在刚才,我发现即便作为一个前端框架,也是可以用“递归下降”的思想做数据绑定、配合“逻辑式编程”做表单验证, 而这种的递归下降,便拥有了CSS选择器的扩充
EQ 模板函数应该接受3种情况:
div(p(), p(), html`${变量}.txt`) (doc.body 添加 | .childNodes[i++] 解构 | .querySelector 匹配)
都会注册相应的KV和监听变量,从而实现爬虫、列表节点复用的功能, 按顺序解构,就是基于“编译原理”里特有的技术 - 其实就是树遍历而已
节点变量
when(x(x=>[x==0, true]), [b(x), i(x) ])
甚至能反过来执行,验证粗体显示的只能是0 (虽然我不清楚有啥用,但2行代码 1个功能点 挺值的)when(class { User(age) {age=rn(18,99) } })
可以定义强类型表单,避免在 sel(age)
的程度上暴露<input>
的概念,这种“低代码”不是以设计降级为代价,它也提升了数据验证&输入的一致性,容许服务端再次验证JSON格式的表单算法世界的原理,是做不到和现有框架、和其他算法如此深度的联动的;不仅让应用更灵活, 连算法也更简单了
对我而言,(编程语言的价值== 它所提供“设计体系”的价值) ,我是没有在意“编译”到什么的
Ruby 和PHP的衰落证明,没有成体系的语法糖,没有扼要的对象接口模型,代码越多就越难增添、难复用;框架术语越多,精力的内耗就越大
就是因为心智模型能提前消灭绝大部分的问题,把本质相同的功能整合到单一写法上, 我才把这么多精力放在编程前的设计。
对代码仁慈就是对用户和程序员残忍……
duangsuse::Echo
#py 周刊 - Excel 支持 import pandas, statsmodels, matplotlib / seaborn 了, Guido 亲自推广(可能是云计算,要订阅) - PowerToys添加“可交互”的截图 - Google 等各种大公司的技术blog #list - #apple #design 设计师法则 - #learn 看美军的脏话官话(F-words)学英语 。 - 单靠 #sql 如何保存数据 - APL 里有的 py 基本列表处理式 - FastAPI 最佳实践 list…
#py 周刊
HackerNews 等新闻聚合
本该辅助思维的工具,如何异化我们
pysentation: 在终端展示你的py代码
js anti-debug: 尝试阻止全编程界最优秀的 DevTools,
https://github.com/theajack/disable-devtool/blob/master/src/detector/sub-detector/func-to-string.ts
v0.dev: 生成预览和迭代HTML设计
Mojo 🔥 Linux版本可用, 自带 Tensor(nd),DType 支持
(ps. 这人怎么 parser 都不会写啊, (1+ 换行 1) 时解析失败,等待下一行不就行了吗? 他只是写了个众所周知的hint
这个 let var 是干嘛啊(还有Java式的 class Benchmark..),Python 简洁的优势都丢了
🤖 Falcon 作为当前最大的开源大模型,有 180B 参数,在 3.5 万亿词的 TII RefinedWeb 上训练
jieba的替换: pkuseg-python , hanlp
#wasm #plt 500行迷你C编译器
🥧 半手工绘制 plt.极座标直方图
📈 #algorithm min/maxHeap 有序列实现
#bin Bloom filter 集合 位运算实现 —性质类似WeakSet, 非常快
🐳 用Podman部署py包 [维护pip包]
📝 使用 Protobuf message{} 储存和传输
compress:基于个人语料库的快捷输入工具
gpt_academic #zh gui : 为 ChatGPT/GLM 提供实用化交互界面
GPT 学术优化,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持 Python 和 C++ 等项目剖析&自译解功能,PDF/LaTex 论文翻译&总结功能
HackerNews 等新闻聚合
本该辅助思维的工具,如何异化我们
pysentation: 在终端展示你的py代码
js anti-debug: 尝试阻止全编程界最优秀的 DevTools,
https://github.com/theajack/disable-devtool/blob/master/src/detector/sub-detector/func-to-string.ts
v0.dev: 生成预览和迭代HTML设计
Mojo 🔥 Linux版本可用, 自带 Tensor(nd),DType 支持
这个 let var 是干嘛啊(还有Java式的 class Benchmark..),Python 简洁的优势都丢了
🤖 Falcon 作为当前最大的开源大模型,有 180B 参数,在 3.5 万亿词的 TII RefinedWeb 上训练
jieba的替换: pkuseg-python , hanlp
#wasm #plt 500行迷你C编译器
🥧 半手工绘制 plt.极座标直方图
📈 #algorithm min/maxHeap 有序列实现
#bin Bloom filter 集合 位运算实现 —性质类似WeakSet, 非常快
🐳 用Podman部署py包 [维护pip包]
📝 使用 Protobuf message{} 储存和传输
protoc --python_out=. .\music.proto
from music_pb2 import Library
Library().add(music).K=V
lib.SerializeToString()
lib.ParseFromString(f.read())
compress:基于个人语料库的快捷输入工具
gpt_academic #zh gui : 为 ChatGPT/GLM 提供实用化交互界面
GPT 学术优化,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持 Python 和 C++ 等项目剖析&自译解功能,PDF/LaTex 论文翻译&总结功能
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#19:Mojo 终于提供下载了!
🦄文章&教程
1、Mojo🔥 终于提供下载了!
2、我们能从 PEP-703 中学到什么?
3、用 500 行 Python 代码写一个 C 语言编译器
4、简单介绍如何用 Python 作协议缓冲区编程
5、用 Python 和 matplotlib 创建漂亮的极坐标直方图
6、布隆过滤器图解与 Python 实现
7、Python 中的堆数据结构:最小和最大堆实现
8、Python 容器化部署教程…
Python 潮流周刊#19:Mojo 终于提供下载了!
🦄文章&教程
1、Mojo🔥 终于提供下载了!
2、我们能从 PEP-703 中学到什么?
3、用 500 行 Python 代码写一个 C 语言编译器
4、简单介绍如何用 Python 作协议缓冲区编程
5、用 Python 和 matplotlib 创建漂亮的极坐标直方图
6、布隆过滤器图解与 Python 实现
7、Python 中的堆数据结构:最小和最大堆实现
8、Python 容器化部署教程…
duangsuse::Echo
#PLT #zhihu #wasm Moonbit 月兔编程语言alpha(reScript 作者的续作), 提供了许多算法(HAMT tire map, AVL tree) 的 code playground 语法有点像Go+Rust,支持List/Array,模式匹配和推导,但非常轻量,而且和Go一样易用,编译到WASM❤️。 本来想答一下的…… 但最近还有框架在设计,因为没发现比绝句更多的功能或更清晰的模型就不想再分析了 自己在设计的框架和业界差别太大…… 看着这满屏的 let,self,func…
提到 #wasm , moonbit , wa-lang 是几门国内维护的语言设计
🤔“ 凹语言对贡献者之外的人有什么意义?不知道——正如刚才提到的:作品对受众的意义,从来不是作者可以定义的
——硬要给出一个猜测的话,大概率是:“对大多数开发者来说,没有任何意义”。但那又如何呢,
程序员在总人口中只占相当小的比例,这意味任何一门编程语言,哪怕它已经被广泛使用,大多数地球人顶多听它的名字而已,完全没法体会它对自己有什么意义;
我重写了WA的几条示例。现在绝句的无关键字流控感觉…… 总之有与整个编程界分道扬镳的倾向
比较糟心的一个,是我误解了React,Nextjs 的流式SSR。 我以为是要把客户端状态变量上传,但其实主流SSR依然是添加事件监听的 (它们说是基于“同构”blabla, 其实EQ就是同构 所以不能止步于此),相当于在httpd上开个浏览器去路由并加载。
不过现在靠服务端S(x=>匿名函数) 就避免下发html了,好像比事件上传更灵活
🤔“ 凹语言对贡献者之外的人有什么意义?不知道——正如刚才提到的:作品对受众的意义,从来不是作者可以定义的
——硬要给出一个猜测的话,大概率是:“对大多数开发者来说,没有任何意义”。但那又如何呢,
程序员在总人口中只占相当小的比例,这意味任何一门编程语言,哪怕它已经被广泛使用,大多数地球人顶多听它的名字而已,完全没法体会它对自己有什么意义;
我重写了WA的几条示例。现在绝句的无关键字流控感觉…… 总之有与整个编程界分道扬镳的倾向
- main(n=30)
say("$n 以内质数")
(2~n):[x]
(2~log2(x)) { x%this!=0 }:
say(this, end= (!=n-1){", "}{""})
- main
N2(.07,.15).delta: plot(0+~1.5 dx, 0+~1.5 dy):[x y]
at a=x*x+y*y -1
a**3<x**2+y**3
^now
- plot(X:Rn,Y:Rn, fn:Fn2<N N Bool>)
Y:[y]say(); X:[x]say(end=fn(x,y) {"@"}{""})
不过,我把太多精力耗在基建和标准库上了,都不打算做WA那种真正的编译器…… 而且我这几周都在收尾EQ的接口体系,删了又改真的很让人头痛啊比较糟心的一个,是我误解了React,Nextjs 的流式SSR。 我以为是要把客户端状态变量上传,但其实主流SSR依然是添加事件监听的 (它们说是基于“同构”blabla, 其实EQ就是同构 所以不能止步于此),相当于在httpd上开个浏览器去路由并加载。
不过现在靠服务端S(x=>匿名函数) 就避免下发html了,好像比事件上传更灵活
wa-lang.org
灵魂拷问 | 凹语言
针对 WASM 平台设计的通用编程语言
#wasm #os #linux
https://telegra.ph/Linux-中-RISC-V-的-mmap-的重大问题-01-29
冷知识Q&A
> RISC-V Linux 内存页表(vm_area)适配问题在供应链的什么层级?
首先man 上写的支持sv48,但代码支持不到 且语义错误 这不符合Linus的严谨度
答:在JVM,gcc-libs 层级,影响交叉编译
mmap还用于0copy fwrite() ,拒绝在用户态搞 IO Buffers
brk 是ELF体系下自带的内存池,暂存碎片化的小对象(4K分页后 lazy分配的)。其实 open() fd 也是个Refcount对象,因此,rm -rf 不像NT总提示文件未close()拒绝访问(还有内存不能BE READ ,坐和放宽,哈哈)
> x64 等ISA更费内存吗
确实,每个指针都占8byte,.so.text 段也会膨胀,只是整数计算和GPU无需这么高精度。(.rodata/bss 段不会,因为依然 int=i32,char=u8 , 另外这些段Addr<heap)
这不利于嵌入式,每条指令都耗电的。但SSE等特性、游戏的流畅度需要大量内存,所以32转64是种进步,更何况小白用户眼里下载 1G值1刀啊
.so段可以用
> 47bit?
在 webVM.io 试玩Linux(su密码是 password)是查不了这种运维命令:它只实现 ext2fs(on http byterange) 和 net 的沙盒
> 寻址?
对CPU和内存分时复用(并发,容器化..统一设备格式API)是kernel的基本功。
btw. sshfs,squashfs,overlayfs,snap 不是必须链接到FUSE,这只是微/宏内核之辩,类似于Android的反GPL C/S架构: system_server-AIDL-HAL.sysfs.dts
https://xiaolincoding.com/os/2_os_structure/linux_vs_windows.html#linux-的设计
线程,就是完全共享内存的多进程,使用strace 就会发现main()线程只是个进程组。免root gdb 据此实现AOP
内存段,能下载内存条~如swap分区就是时间换空间,反义词是ramdisk=rd
WinXP 启用/PAE后多进程可以突破4G内存限制。在分段寻址数组的DOS, size_t < void*
获取堆起始只需在putenv,asprintf,. 前调用 sbrk(0)。 stack可以在 gdb cat 里看 bt; 或
tcmalloc等堆分配器不会比GC简单。它们不会线性地查找4~?KB空闲链表或建正好够大的块,从而减少难以复用的碎片。这里不是说二叉"堆"算法,但它涉及 Hash桶,BitSet,Trie,线段树,SortedSet(RBt)—反正 Doug Lea 都会!
> BIT(38)?
作者希望一直使用sv48 MMU 模式,和x86一致
不然就需要先if(mmap) 一下,看是否支持sv57,我猜的
AI: 当 mmap 的文件大小超过虚拟地址空间的大小时,RISC-V 会返回 -ENOMEM 错误,而其他架构会返回成功。可能会给 RISC-V 的软件移植带来一些灾难问题。
> mmap() 到的bytes比read()更快吗?
从编程范式来讲,read+write(另存为式) IO 反而是最FP、最全拷贝的做法,而 mremap(mount,但挂载是对象树) 更适合随处+单次修改增长
FP的性能都很差。mmap 除了对碎片(npm,pip缓存..) 慢,不适合 line/request-buffered 等IO 需求(.sock vs SHM),它可以表示任何文件格式
只有从 load即拷贝+dump(csv/ini/bytes) 统一为单YAML编辑指针,才能完全避免
说人话: Linux 内存分页器和 FAT 等文件系统间只是算法的差异。今天,睡休眠已经取代开关机,内存和磁盘何必隔着序列化?像CRIU那样进程快照如何? C对数据结构的僵化早该退场了
#暴论 OSdev一点不比各语言的stdlib人聪明。 Linux内存段本该是C对象(不止有bytes)、而进程本该是C协程(不止能exit0),你看 ps|head 就知道那是
async 说白了,就是拿retAddr闭包"链表"当线程栈用,手动
只是DOM把内核允许死循环的洞补好罢了,让parallel,SIMD被严谨的 numpy,ForkJoin(PySpark~多线下载) 取代,用
DOM渲染器和linux/sched就是一类东西。如果学习WASM拒绝int指针,检查每次索引越界,userspace 内存地址完全隔离有鬼用?直接拿inode改文件内容,核内核外大和谐
反正Android,Web框架也必须做权限和apt管理,fd,cookie那就是RPC句柄嘛。SQL注入不就本来是想传bool函数来RPC,无奈PHP的operator重载力(DSL悟性)太差 只好去eval代码致RCE。 markdown 渲染杀死了评论区XSS。剩下的复杂性就是libs表现欲过剩,矫枉过正。我这就是唱Powershell 打POSIX
再比如eBPF抓包,这种程度的AOP,ruby js DevTools 玩烂了的东西,换API集 换到 globalThis=ld-linux(ver.so) 就变科技了,其实就是工具链烂 语法丑 👎
C 编译器总是做能截断struct val 的访问,做不检查接口的union{}多态,暴露不含size的list(美其名曰buffer&支持多返回),CLR和Go可没有,RESTful 则更加安全。py只靠ctypes+Rc 就干爆了strcat和各种野指针
C也没有匿名函数,所以
如果我们摒弃所有术语,只从语意和用户需求,自顶向下地谈,IT和CS的技术,往往只是被不断地跨端复制 👎
btw. so文件是 Singleton Object 的缩写 \: section-segment 则是常量池和堆。 gcc -static 只会打包有符号表的.o 汇编,是做tar 不涉及ld导出表
https://telegra.ph/Linux-中-RISC-V-的-mmap-的重大问题-01-29
冷知识Q&A
> RISC-V Linux 内存页表(vm_area)适配问题在供应链的什么层级?
首先man 上写的支持sv48,但代码支持不到 且语义错误 这不符合Linus的严谨度
答:在JVM,gcc-libs 层级,影响交叉编译
glibc.malloc() 会请求 brk(<128KB)或 mmap(-1=/dev/mem)
py.mmap(*fpage, access=PROT_EXEC); fpage=fd+len+offset
mmap(vaddr+len, PROT_EXEC, MAP_PRIVATE, fd+offset); MAP_FIXED=dup2=replace
mmap还用于0copy fwrite() ,拒绝在用户态搞 IO Buffers
brk 是ELF体系下自带的内存池,暂存碎片化的小对象(4K分页后 lazy分配的)。其实 open() fd 也是个Refcount对象,因此,rm -rf 不像NT总提示文件未close()拒绝访问(还有内存不能BE READ ,坐和放宽,哈哈)
> x64 等ISA更费内存吗
确实,每个指针都占8byte,.so.text 段也会膨胀,只是整数计算和GPU无需这么高精度。(.rodata/bss 段不会,因为依然 int=i32,char=u8 , 另外这些段Addr<heap)
这不利于嵌入式,每条指令都耗电的。但SSE等特性、游戏的流畅度需要大量内存,所以32转64是种进步,更何况小白用户眼里下载 1G值1刀啊
.so段可以用
readelf -Sd; ldd
查询, Termux.dev waydro.id MSYS2.org 能够跨 glibc,bionic,msvc libc 平台, just like webVM.io 😋 #recommend > 47bit?
2**32 /1024**3 =4GB, fat32单文件最大
2**47 /1024**4 =128TB, linux v6.6 单进程最大工作集
cat /proc/cpuinfo
可以看到CPU最大寻址范围在 webVM.io 试玩Linux(su密码是 password)是查不了这种运维命令:它只实现 ext2fs(on http byterange) 和 net 的沙盒
> 寻址?
对CPU和内存分时复用(并发,容器化..统一设备格式API)是kernel的基本功。
sudo cat /proc/self/maps|grep ]
里,地址从低到高是 heap(brk) stack vsyscall(类似 fakeroot,libfuse 等AOP)btw. sshfs,squashfs,overlayfs,snap 不是必须链接到FUSE,这只是微/宏内核之辩,类似于Android的反GPL C/S架构: system_server-AIDL-HAL.sysfs.dts
https://xiaolincoding.com/os/2_os_structure/linux_vs_windows.html#linux-的设计
线程,就是完全共享内存的多进程,使用strace 就会发现main()线程只是个进程组。免root gdb 据此实现AOP
内存段,能下载内存条~如swap分区就是时间换空间,反义词是ramdisk=rd
WinXP 启用/PAE后多进程可以突破4G内存限制。在分段寻址数组的DOS, size_t < void*
获取堆起始只需在putenv,asprintf,. 前调用 sbrk(0)。 stack可以在 gdb cat 里看 bt; 或
info proc all
tcmalloc等堆分配器不会比GC简单。它们不会线性地查找4~?KB空闲链表或建正好够大的块,从而减少难以复用的碎片。这里不是说二叉"堆"算法,但它涉及 Hash桶,BitSet,Trie,线段树,SortedSet(RBt)—反正 Doug Lea 都会!
> BIT(38)?
作者希望一直使用sv48 MMU 模式,和x86一致
不然就需要先if(mmap) 一下,看是否支持sv57,我猜的
AI: 当 mmap 的文件大小超过虚拟地址空间的大小时,RISC-V 会返回 -ENOMEM 错误,而其他架构会返回成功。可能会给 RISC-V 的软件移植带来一些灾难问题。
> mmap() 到的bytes比read()更快吗?
从编程范式来讲,read+write(另存为式) IO 反而是最FP、最全拷贝的做法,而 mremap(mount,但挂载是对象树) 更适合随处+单次修改增长
FP的性能都很差。mmap 除了对碎片(npm,pip缓存..) 慢,不适合 line/request-buffered 等IO 需求(.sock vs SHM),它可以表示任何文件格式
只有从 load即拷贝+dump(csv/ini/bytes) 统一为单YAML编辑指针,才能完全避免
malloc(手动"黏包"BUFSIZE)
和样板代码。但最前沿的,JSON的增量性序列化库 tree-sitter 都不好用。 为了0拷去用strcat,printf()
而拒绝模板字符串亏大了说人话: Linux 内存分页器和 FAT 等文件系统间只是算法的差异。今天,睡休眠已经取代开关机,内存和磁盘何必隔着序列化?像CRIU那样进程快照如何? C对数据结构的僵化早该退场了
#暴论 OSdev一点不比各语言的stdlib人聪明。 Linux内存段本该是C对象(不止有bytes)、而进程本该是C协程(不止能exit0),你看 ps|head 就知道那是
def pipe(): yield line
,再比较下 Promise.{all,race}
与O_NONBLOCK的 epoll 呢?async 说白了,就是拿retAddr闭包"链表"当线程栈用,手动
for(;;)getEvListeners(events.poll轮询)()
跑这些小线程,只为了更轻量(隔绝于竞态的 SIGINT等抢占式异步)只是DOM把内核允许死循环的洞补好罢了,让parallel,SIMD被严谨的 numpy,ForkJoin(PySpark~多线下载) 取代,用
job或yield(x).then(回调自身)
而无所谓"线程" "阻塞" 🐴DOM渲染器和linux/sched就是一类东西。如果学习WASM拒绝int指针,检查每次索引越界,userspace 内存地址完全隔离有鬼用?直接拿inode改文件内容,核内核外大和谐
反正Android,Web框架也必须做权限和apt管理,fd,cookie那就是RPC句柄嘛。SQL注入不就本来是想传bool函数来RPC,无奈PHP的operator重载力(DSL悟性)太差 只好去eval代码致RCE。 markdown 渲染杀死了评论区XSS。剩下的复杂性就是libs表现欲过剩,矫枉过正。我这就是唱Powershell 打POSIX
再比如eBPF抓包,这种程度的AOP,ruby js DevTools 玩烂了的东西,换API集 换到 globalThis=ld-linux(ver.so) 就变科技了,其实就是工具链烂 语法丑 👎
C 编译器总是做能截断struct val 的访问,做不检查接口的union{}多态,暴露不含size的list(美其名曰buffer&支持多返回),CLR和Go可没有,RESTful 则更加安全。py只靠ctypes+Rc 就干爆了strcat和各种野指针
C也没有匿名函数,所以
pthread_create(fn,必须绑定arg)
。对象和闭包都是代码+数据 是双指针。OOP就是FP,class是共享构造参数的多函数如果我们摒弃所有术语,只从语意和用户需求,自顶向下地谈,IT和CS的技术,往往只是被不断地跨端复制 👎
btw. so文件是 Singleton Object 的缩写 \: section-segment 则是常量池和堆。 gcc -static 只会打包有符号表的.o 汇编,是做tar 不涉及ld导出表
Telegraph
Linux 中 RISC-V 的 mmap 的问题
目前RISC-V Linux的mmap出现了一个和x86/arm都不一样的行为,我提交了一个patch希望得到一些Linux Kernel开发者声援,比较希望得到关注尽快合并进6.8 Kernel,否则可能随着sv48/sv57的机器越来越普及,rv的软件移植会带来一些灾难问题,也会影响一些内存需求较大的软件在RISC-V平台上的使用。 之前在linux v6.6的时候有人交了一个patch希望把rv上的mmap默认返回47bit以内的虚拟地址空间,因为一些JIT翻译的应用可能使用虚拟地址指针的高位用于…
duangsuse::Echo
#wasm #os #linux https://telegra.ph/Linux-中-RISC-V-的-mmap-的重大问题-01-29 冷知识Q&A > RISC-V Linux 内存页表(vm_area)适配问题在供应链的什么层级? 首先man 上写的支持sv48,但代码支持不到 且语义错误 这不符合Linus的严谨度 答:在JVM,gcc-libs 层级,影响交叉编译 glibc.malloc() 会请求 brk(<128KB)或 mmap(-1=/dev/mem) py.mmap(*fpage…
#os malloc 空闲链表讲解 https://youtu.be/CulF4YQt6zA?t=106
ref:
https://hackliza.gal/en/posts/r2heap/ 调试器最懂OS
#wasm https://github.com/thi-ng/tinyalloc
https://github.com/microsoft/mimalloc 用8k行(jemalloc 10%) 可实现高性能, 不压缩碎片的GC
kwd: Zig heap memScoped
ref:
https://hackliza.gal/en/posts/r2heap/ 调试器最懂OS
#wasm https://github.com/thi-ng/tinyalloc
https://github.com/microsoft/mimalloc 用8k行(jemalloc 10%) 可实现高性能, 不压缩碎片的GC
kwd: Zig heap memScoped
YouTube
i wrote my own memory allocator in C to prove a point
Malloc sucks. Memory leaks, use after free? What ELSE is there to say? Instead of suffering through using malloc, I decided to write my own heap.
Heaps are, interesting. I learned alot here. Lets find out more together.
🏫 COURSES 🏫 Learn to code in C at…
Heaps are, interesting. I learned alot here. Lets find out more together.
🏫 COURSES 🏫 Learn to code in C at…
橘橘橘子汁 & 🍊
https://zhuanlan.zhihu.com/p/707493606 虽然确实是可行的但是这是什么玩意😇
#您知道吗? #cs #dnn #wasm 计科长青树一瞥:递归下降、梯度下降 (1)
*编程的赞歌就是(组合compose)的赞歌,软工的伟大就是(复用reuse)的伟大!*
复用就是腾讯嘛!但,什么是组合?流行乐队是组合?
在《几何原本》里有这样一条公理:“整体”是由部分构造堆上去的。 无论物理的原子分子、化学的单质单剂、生物的组织系统、儿童编程的二分查找,甚至您编写的{语句}(算式) 定义表(),总少不了分治算法的影子;而与递归对应得最直观的树,除了带kwarg的视图描述树XML、文件夹管理和正则匹配的前/后缀树Trie、OIer的必修KMP图(: Trie+FailGoto),更有梗图里常被实现为SortedSetOrMap的红黑树RBTree(: AVL) --作为按int KHash()预分组K-V查找的一种补充。
不过,今天咱调戏的不是高深的算法或数理化,而是程序员的自我修养:表达式、解释、编译、类型检查和推理。
🤓不少语法看似是ES6,Kotlin,Java20+,C++里高深莫测的新特性,其实,只是因为它们的设计混乱带来的大误会! 软件工程界的基岩,原本很简单?
- 计算器🧮("1+1"):数据值 是不支持forif或(vars)=>函数/JSON文档的解释器,最简单的理解是 x=1; eval[+,1]。对内存的利用方式过于单一,就像🔑C语言的.o .so 只是靠LD互调用的object{static{}},或者VB一代难加函数的"红石命令",毫无扩展性还要另写头文件 自然被淘汰
- 解释📠("expr(1+1)"):值或行为 程序员唯一必须调用的接口。tree-walk(递归遍历算式)非解释器的专利、VM不是编译器的秘技。对x86汇编的执行也叫硬件解释,旧安卓通过转译arm汇编.so库到x86做兼容,就像IKVM对“JVM汇编”仍能再次转译到IL
- 编译 就是解释器的缓存📑:记住自顶向下遍历时的套路,直接自底向上组装值(lisp转RPN),很像二叉树vs(堆,一种树状数组)!这除了要重新实现重复/判定/ret&&break跳转的流控,还可将RPN栈指令集优化为局部读写-按类型复用。
要求手动编译的语言均属慢速原型,会标注或推理出类型签名,从而🔑以限界实现提速和多态(重写重载、记住变量名的指针,即担保栈size恒定)。 ANTLR等“状态机”编译器的输出便是自底向上,正好颠倒于主动read()流到js栈的PEG,不过,它们其实是慢的虚拟机。
类型的本质是简洁的🔑常量「黑盒测试」,它与表达式同构,执行方法也相同!
- 类型检查 就是只解释 def f(x:T):R 里":右侧"的算式,以插入 (f T R) 这样的SQL行。x编译后是arg[0]:一个空悬指针,但T.fns却是有血有肉的"反射"常量。把每个 x:T=1 换为 x=T!
x+x 的语意为查询 (+ T T)、1+"" 查找函数签名 (+ int str)、 u.id (.id User Ret?) 便能检查误拼写和空指针
不难发现,这些都是效仿numpy重载个运算符就能实现的,并不需要学编译原理写解析器!这也是 hamcrest.org http Test库断言组合器的原理
泛型class/fn/var和赋值 的推理规则是一样的。
例如把 <TR> as([Box, T], T=>R):R 与 as(Box(1), str) 深度重合时,新建两个TypeVar(void),它们会在 Int==T, R==str 的检查时被向上赋值,从而填充[Box,int]里的类型T、as调用里的R,并照顾到 i32->i64等转换及子类规则
同为编译期遍历,你还可以思考下 let[x0,x1]=a 如何被实现的,以及在运行期是否能模拟?
学习元编程有何好处🌝?因为可以从根源理解yield/await、纯函数、模式匹配、模板宏等“新”特性,凭什么能简化旧实践!
- 闭包和协程closure&coro 便是编译比解释好实现的两个特性。 compiler 通过{let;}的动态作用域(原型链..) 区分符号的LEGB来源(Local Enclosed外层局部 Global Builtin常量),从而能把 (x=>y=>x+y) 化为对象值 f_y=((x,y)=>).bind(x);Lua能查出跳转到表达式的指针,y=yield x 便能在return前,把函数的局部栈保存回 g.next/pr.then
- 模板constexpr 让闭包关于常量创建,如何? ((x,y)=>x+y).bind(1) 就是 1+y, ((k,s)=>s[read+k]() ).bind("Int") 就是readInt,*[map(print,0~9)] 就是循环展开,这些就是预处理的价值!反射和const只是对eval(并缓存)之「二段求值」的阉割
- 副作用effects #FP bros异常抨击print这种“无法被值存储的、有非局部干扰的赋值”并推广他们的赎罪券:Monad……这却是因为他们并不懂「定义式编程」!
React signal(x=0) (1) 就是一个不纯的赋值,但,它导致的x=1却能被广播为参数、被保存和复现!🔑这还能叫“状态变更泄露难题”么?
并且,它还偷走了"FP独有的模式匹配"。对赋值副作用的录制,更是bash,vimrc类格式经久不衰的原因
说准点,这些都是 #SQL 的老大Prolog所原创并推崇的-:变量作为值,逻辑式编程!
*整体大于局部;与另一结构重合的结构,之中的值相等 --几何原本*
⏳在通读本文时,也可以参考以下实例:
coroutine=由用户run()的线程
*调用栈是数组,协程栈是回调构成的链表
诸分治排序可视化
手动babel脱糖一个async函数
知乎:分词解析vs解释
实现一个HTTP DSL
Var(signalObj)如何跨越进程和网络:句柄、登录cookie、JWT
def(): return this 是何方神圣?
在解释时缓存代码的Tk GUI
Trie们和字典输入法的实现
关于class Visitor {se(e:Add_AB), se(e:Int)} 和Eval/Dump接口的融合
实现文本流递归下降、四则运算逆波兰、 JSON.org
Prolog binop #parser
计科原神:认识WASM/LLVM IR和JIT, webVM.io
*编程的赞歌就是(组合compose)的赞歌,软工的伟大就是(复用reuse)的伟大!*
复用就是腾讯嘛!但,什么是组合?流行乐队是组合?
在《几何原本》里有这样一条公理:“整体”是由部分构造堆上去的。 无论物理的原子分子、化学的单质单剂、生物的组织系统、儿童编程的二分查找,甚至您编写的{语句}(算式) 定义表(),总少不了分治算法的影子;而与递归对应得最直观的树,除了带kwarg的视图描述树XML、文件夹管理和正则匹配的前/后缀树Trie、OIer的必修KMP图(: Trie+FailGoto),更有梗图里常被实现为SortedSetOrMap的红黑树RBTree(: AVL) --作为按int KHash()预分组K-V查找的一种补充。
不过,今天咱调戏的不是高深的算法或数理化,而是程序员的自我修养:表达式、解释、编译、类型检查和推理。
🤓不少语法看似是ES6,Kotlin,Java20+,C++里高深莫测的新特性,其实,只是因为它们的设计混乱带来的大误会! 软件工程界的基岩,原本很简单?
- 计算器🧮("1+1"):数据值 是不支持forif或(vars)=>函数/JSON文档的解释器,最简单的理解是 x=1; eval[+,1]。对内存的利用方式过于单一,就像🔑C语言的.o .so 只是靠LD互调用的object{static{}},或者VB一代难加函数的"红石命令",毫无扩展性还要另写头文件 自然被淘汰
- 解释📠("expr(1+1)"):值或行为 程序员唯一必须调用的接口。tree-walk(递归遍历算式)非解释器的专利、VM不是编译器的秘技。对x86汇编的执行也叫硬件解释,旧安卓通过转译arm汇编.so库到x86做兼容,就像IKVM对“JVM汇编”仍能再次转译到IL
- 编译 就是解释器的缓存📑:记住自顶向下遍历时的套路,直接自底向上组装值(lisp转RPN),很像二叉树vs(堆,一种树状数组)!这除了要重新实现重复/判定/ret&&break跳转的流控,还可将RPN栈指令集优化为局部读写-按类型复用。
要求手动编译的语言均属慢速原型,会标注或推理出类型签名,从而🔑以限界实现提速和多态(重写重载、记住变量名的指针,即担保栈size恒定)。 ANTLR等“状态机”编译器的输出便是自底向上,正好颠倒于主动read()流到js栈的PEG,不过,它们其实是慢的虚拟机。
类型的本质是简洁的🔑常量「黑盒测试」,它与表达式同构,执行方法也相同!
- 类型检查 就是只解释 def f(x:T):R 里":右侧"的算式,以插入 (f T R) 这样的SQL行。x编译后是arg[0]:一个空悬指针,但T.fns却是有血有肉的"反射"常量。把每个 x:T=1 换为 x=T!
x+x 的语意为查询 (+ T T)、1+"" 查找函数签名 (+ int str)、 u.id (.id User Ret?) 便能检查误拼写和空指针
不难发现,这些都是效仿numpy重载个运算符就能实现的,并不需要学编译原理写解析器!这也是 hamcrest.org http Test库断言组合器的原理
泛型class/fn/var和赋值 的推理规则是一样的。
例如把 <TR> as([Box, T], T=>R):R 与 as(Box(1), str) 深度重合时,新建两个TypeVar(void),它们会在 Int==T, R==str 的检查时被向上赋值,从而填充[Box,int]里的类型T、as调用里的R,并照顾到 i32->i64等转换及子类规则
同为编译期遍历,你还可以思考下 let[x0,x1]=a 如何被实现的,以及在运行期是否能模拟?
学习元编程有何好处🌝?因为可以从根源理解yield/await、纯函数、模式匹配、模板宏等“新”特性,凭什么能简化旧实践!
- 闭包和协程closure&coro 便是编译比解释好实现的两个特性。 compiler 通过{let;}的动态作用域(原型链..) 区分符号的LEGB来源(Local Enclosed外层局部 Global Builtin常量),从而能把 (x=>y=>x+y) 化为对象值 f_y=((x,y)=>).bind(x);Lua能查出跳转到表达式的指针,y=yield x 便能在return前,把函数的局部栈保存回 g.next/pr.then
- 模板constexpr 让闭包关于常量创建,如何? ((x,y)=>x+y).bind(1) 就是 1+y, ((k,s)=>s[read+k]() ).bind("Int") 就是readInt,*[map(print,0~9)] 就是循环展开,这些就是预处理的价值!反射和const只是对eval(并缓存)之「二段求值」的阉割
- 副作用effects #FP bros异常抨击print这种“无法被值存储的、有非局部干扰的赋值”并推广他们的赎罪券:Monad……这却是因为他们并不懂「定义式编程」!
React signal(x=0) (1) 就是一个不纯的赋值,但,它导致的x=1却能被广播为参数、被保存和复现!🔑这还能叫“状态变更泄露难题”么?
并且,它还偷走了"FP独有的模式匹配"。对赋值副作用的录制,更是bash,vimrc类格式经久不衰的原因
说准点,这些都是 #SQL 的老大Prolog所原创并推崇的-:变量作为值,逻辑式编程!
*整体大于局部;与另一结构重合的结构,之中的值相等 --几何原本*
⏳在通读本文时,也可以参考以下实例:
coroutine=由用户run()的线程
*调用栈是数组,协程栈是回调构成的链表
诸分治排序可视化
手动babel脱糖一个async函数
知乎:分词解析vs解释
实现一个HTTP DSL
Var(signalObj)如何跨越进程和网络:句柄、登录cookie、JWT
def(): return this 是何方神圣?
在解释时缓存代码的Tk GUI
Trie们和字典输入法的实现
关于class Visitor {se(e:Add_AB), se(e:Int)} 和Eval/Dump接口的融合
实现文本流递归下降、四则运算逆波兰、 JSON.org
Prolog binop #parser
计科原神:认识WASM/LLVM IR和JIT, webVM.io
#os #wasm #backend https://www.bilibili.com/video/BV1oE421w7Vt
猜猜为什么jvm里没有malloc这种概念,只提供了 byte[N]?
因为C语言允许从随机的整数构造指针, 导致每次读写数据结构都像SQL注入一样不安全,各种能越过内核鉴权
C还没有标准的序列化手段(除了 criu.org 按mmap来封送),一个Rc归还内存被cpp弄出魔法的效果
哪怕send(一个bytes[]) 到tcp都要序列化,而C对此的实现,居然是\0结尾字符串😅
不过呢,C struct是和二进制文件对应最好的,指针紧随数据,免重定向就类似于序列化了,但是C没有利用好这个等价关系,那至少需要sizeof的值
这么弱智的数据模型,所以只能用一些4K page实现虚拟地址了,越界就要中断,约等于内核vma就是虚拟机,哈哈。把一个越界检查和union多型整成了页表映射那么臃肿
WASM的JIT就完全不需要这种概念,app和内核驱动一样安全,线程和协程一样轻量
unikernel.org 还不是能跑起来
猜猜为什么jvm里没有malloc这种概念,只提供了 byte[N]?
因为C语言允许从随机的整数构造指针, 导致每次读写数据结构都像SQL注入一样不安全,各种能越过内核鉴权
C还没有标准的序列化手段(除了 criu.org 按mmap来封送),一个Rc归还内存被cpp弄出魔法的效果
哪怕send(一个bytes[]) 到tcp都要序列化,而C对此的实现,居然是\0结尾字符串😅
不过呢,C struct是和二进制文件对应最好的,指针紧随数据,免重定向就类似于序列化了,但是C没有利用好这个等价关系,那至少需要sizeof的值
这么弱智的数据模型,所以只能用一些4K page实现虚拟地址了,越界就要中断,约等于内核vma就是虚拟机,哈哈。把一个越界检查和union多型整成了页表映射那么臃肿
WASM的JIT就完全不需要这种概念,app和内核驱动一样安全,线程和协程一样轻量
unikernel.org 还不是能跑起来
Bilibili
虚拟内存是什么? Lunaix内部设计之再论虚拟内存(上)_哔哩哔哩_bilibili
欢迎来到系列《Lunaix内部设计》的第一期视频。这个系列不算是一个全新的系列,相反,这是对我的另一个系列:《从零自制操作系统》的拓展与延伸,起到一个互补的作用。“再论虚拟内存” - 是该系列的第一集内容,主要是带大家走进 Lunaix 内核中虚拟内存模型的设计,以及背后的动机和理论。而本视频是上半部分,我们将会从头回顾虚拟内存的概念,阐述我们的动机,以及介绍对页表层级的抽象。LunaixOS源代, 视频播放量 2999、弹幕量 1、点赞数 179、投硬币枚数 74、收藏人数 147、转发人数 6, 视频作者…
duangsuse::Echo
看最近几条逆天,我要聊哲学 #CS 操作系统不就是4片3口虚拟化么 时间内存存储程序,网口线口板口 #os #plt #embed #recommend win,*nix,mac, aosp ios ;哪个不是只有这么点API和差异化 🦄?为了音视频和回应事件弄那么多框架外链新语法,不如3行 #web js。 像 bellard.org 那样的通才终究少数,搞出\0结尾无长度字串,连{}[]{type:}都没建模的libc算什么API啊?在位运算位flag上都被人打败 也配教人数据结构算法? 。 为这…
https://tttttt.me/solidot/27034?comment=146342 #rust #recommend
https://tttttt.me/dsuse/19854
C的选择本就是错误,C++更是拿锤子拔钉子
系统开发,不需要系统性反思吗? #wasm 或许有一点🤔
但是,我需要的是文内举例的,无论形式如何,实质都保持一致的编程哲学
而不是狂拽酷炫的hack。
https://tttttt.me/dsuse/19854
C的选择本就是错误,C++更是拿锤子拔钉子
系统开发,不需要系统性反思吗? #wasm 或许有一点🤔
但是,我需要的是文内举例的,无论形式如何,实质都保持一致的编程哲学
而不是狂拽酷炫的hack。
Telegram
duangsuse in Solidot Unofficial
内存安全 #rust 其实就是 bytes reference 的泄露和广义越界检查,也涉及结构体、null
因为C就不是memsafe的, C对象的后缀名是 .so ,C bytes(1024) 被系统开发者称为 segment ,C协程被认为是线程,引起了许多WebAPI+numpy异构计算没有的冲突问题
C,ld.so 和Linux就是个降级的bytecode与JVM, 不反思这个生态位,设计新概念来「升级」Refcount&for-iter 解决泄露越界问题也是弊大于利。
算了,反正不…
因为C就不是memsafe的, C对象的后缀名是 .so ,C bytes(1024) 被系统开发者称为 segment ,C协程被认为是线程,引起了许多WebAPI+numpy异构计算没有的冲突问题
C,ld.so 和Linux就是个降级的bytecode与JVM, 不反思这个生态位,设计新概念来「升级」Refcount&for-iter 解决泄露越界问题也是弊大于利。
算了,反正不…
#ai #tool 🌠🔍⏫ 半年前就笔记下了,没想到没发到频道,害我搜半天 😅
#WASM
https://real-cugan.animesales.xyz
https://cappuccino.moe/
[RIFE 60fps](https://github.com/nihui/rife-ncnn-vulkan#download) ps. 可能过时了,毕竟AI视频也是经历过没有控帧,每帧闪一下的时期的
再次感谢 [Nihui](https://github.com/nihui) [腾讯优图] 打包诸多nCNN应用的电脑端,用户运行很方便!
https://tttttt.me/opensuse_cn_offtopic/101130 😱 #dalao
https://tttttt.me/c/1206812331/449739
#WASM
https://real-cugan.animesales.xyz
https://cappuccino.moe/
[RIFE 60fps](https://github.com/nihui/rife-ncnn-vulkan#download) ps. 可能过时了,毕竟AI视频也是经历过没有控帧,每帧闪一下的时期的
再次感谢 [Nihui](https://github.com/nihui) [腾讯优图] 打包诸多nCNN应用的电脑端,用户运行很方便!
https://tttttt.me/opensuse_cn_offtopic/101130 😱 #dalao
https://tttttt.me/c/1206812331/449739
real-cugan.animesales.xyz
动漫图片超分辨率 Real-CUGAN
realcugan-ncnn-assembly - 通用动漫图像超分辨率处理