Forwarded from Solidot
国际C语言混乱代码大赛庆祝 40 周年将重启
2024-12-30 21:02 by 灵魂骑士
国际 C 语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际程序设计赛事,旨在写出最有创意和最让人难以理解的 C 语言代码。从 1984 年开始,该赛事基本每年举办一次,但有过多次中断,过去四年就中断了举办。组织者在 Mastodon 上宣布了纪念 40 周年的 IOCCC28 竞赛,报名始于 2024-12-29 23:58:13.213455 UTC 截止日期 2025-04-01 23:29:31.374143 UTC。
https://www.ioccc.org/
https://developers.slashdot.org/story/24/12/29/1730224/international-obfuscated-c-code-contest-will-relaunch-celebrating-40th-anniversary
https://fosstodon.org/@ioccc/113735481893798661
#程序
2024-12-30 21:02 by 灵魂骑士
国际 C 语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际程序设计赛事,旨在写出最有创意和最让人难以理解的 C 语言代码。从 1984 年开始,该赛事基本每年举办一次,但有过多次中断,过去四年就中断了举办。组织者在 Mastodon 上宣布了纪念 40 周年的 IOCCC28 竞赛,报名始于 2024-12-29 23:58:13.213455 UTC 截止日期 2025-04-01 23:29:31.374143 UTC。
https://www.ioccc.org/
https://developers.slashdot.org/story/24/12/29/1730224/international-obfuscated-c-code-contest-will-relaunch-celebrating-40th-anniversary
https://fosstodon.org/@ioccc/113735481893798661
#程序
Forwarded from Solidot
Mozilla 发布 Firefox AI 助手 Orbit
2024-12-31 14:21 by 电波骑士
现代浏览器不能没有 AI 助手,至于用户想要不需要是另一回事。Mozilla 发布了 Firefox AI 助手 Orbit。Orbit 是通过扩展形式提供给 Firefox 用户,用户可选择使用,它可用于在不牺牲用户隐私的情况下帮助汇总电子邮件、文档、文章和视频。目前版本的 Orbit 使用的是托管在 Mozilla GCP 实例中的 Mistral LLM (Mistral 7B),适用的网站包括了 Gmail、维基百科、纽约时报、YouTube 等,使用 Orbit 不需要创建账号,不会使用用户信息训练,也不会保存用户访问的网页内容。
https://orbitbymozilla.com/
#人工智能
2024-12-31 14:21 by 电波骑士
现代浏览器不能没有 AI 助手,至于用户想要不需要是另一回事。Mozilla 发布了 Firefox AI 助手 Orbit。Orbit 是通过扩展形式提供给 Firefox 用户,用户可选择使用,它可用于在不牺牲用户隐私的情况下帮助汇总电子邮件、文档、文章和视频。目前版本的 Orbit 使用的是托管在 Mozilla GCP 实例中的 Mistral LLM (Mistral 7B),适用的网站包括了 Gmail、维基百科、纽约时报、YouTube 等,使用 Orbit 不需要创建账号,不会使用用户信息训练,也不会保存用户访问的网页内容。
https://orbitbymozilla.com/
#人工智能
https://news.ycombinator.com/from?site=maskray.me #dalao #ce LLVM
https://maskray.me/blog/2024-12-31-summary
👇歺厅玻玏,油㲺喷咀。粘土动画,门靣设计。仃车标识,诚伩优恵。
“聚众” 取乑, 乑形似背靠背, 仅在眾里出现
“羽翼” 羽異, 異声旁
https://maskray.me/blog/2024-12-31-summary
👇歺厅玻玏,油㲺喷咀。粘土动画,门靣设计。仃车标识,诚伩优恵。
“聚众” 取乑, 乑形似背靠背, 仅在眾里出现
“羽翼” 羽異, 異声旁
MaskRay
2024年总结
一如既往,主要在工具链领域耕耘。 Blogging I have been busy creating posts, authoring a total of 31 blog posts (including this one). 7 posts resonated on Hacker News, garnering over 50 points. (https://news.ycombinato
Forwarded from &'a ::rynco::UntitledChannel (NAVI)
无水印高清晰度版《第二次汉字简化方案(草案)》- 知乎
王谢杨
《第二次汉字简化方案(草案)》现在虽已废止,但对该草案感兴趣的研究者仍然不少。…笔者扫描过一个清晰的版本,现公开出来供广大学者研究、参考。笔者扫描的是上海人民出版社 1977 年 12 月的重印版。
原始扫描版为 24 位全彩扫描,清晰度为 1200 DPI,格式为 TIFF。为了方便使用,笔者还制作了图片格式的压缩版和 PDF 格式的电子书版,读者可根据需求选择下载的版本。
#二简
王谢杨
《第二次汉字简化方案(草案)》现在虽已废止,但对该草案感兴趣的研究者仍然不少。…笔者扫描过一个清晰的版本,现公开出来供广大学者研究、参考。笔者扫描的是上海人民出版社 1977 年 12 月的重印版。
原始扫描版为 24 位全彩扫描,清晰度为 1200 DPI,格式为 TIFF。为了方便使用,笔者还制作了图片格式的压缩版和 PDF 格式的电子书版,读者可根据需求选择下载的版本。
#二简
#china #school 预制人
https://www.fxzhihu.com/question/664633989/answer/3599668696
>如果一个东西分不出来好坏或者大家都有,那就不叫好,东亚人就觉得没意思。比如说今天,大家都能吃上猪脚饭,喝上可乐,刷上抖音,过上古代人觉得神仙般的日子了。那么对于东亚人而言,这种快乐就从真空中蒸发了!东亚神教就是这么牛逼。
很多人抱怨“为什么长大后游戏不好玩”了,今天我告诉你为什么,因为你信了东亚这个宗教了。你经历了完整的20多年的社会化生活后,终于成了这个宗教的一名最虔诚的信徒。
https://www.fxzhihu.com/question/664633989/answer/3599668696
>如果一个东西分不出来好坏或者大家都有,那就不叫好,东亚人就觉得没意思。比如说今天,大家都能吃上猪脚饭,喝上可乐,刷上抖音,过上古代人觉得神仙般的日子了。那么对于东亚人而言,这种快乐就从真空中蒸发了!东亚神教就是这么牛逼。
很多人抱怨“为什么长大后游戏不好玩”了,今天我告诉你为什么,因为你信了东亚这个宗教了。你经历了完整的20多年的社会化生活后,终于成了这个宗教的一名最虔诚的信徒。
FxZhihu / Fixup Zhihu
如何评价贞观文章《一个外地女孩,死在了我出租的公寓里》? - @李笑川经理 | FxZhihu
东亚人表面上不信仰任何宗教,但实际上是一系列顽固人生观念的信徒。 对于信徒而言,上不了天堂跟死了没有区别。 对于东亚人而言,这个天堂说白了,就是 人有我无。至于什么是人有我无,说白了就是,在任何可以分出高低优劣的事上分出高低优劣,然后胜的就是人上人。 如果一个东西分不出来好坏或者大家都有,那就不叫好, 东亚人就觉得没意思。比如说今天,大家都能吃上猪脚饭,喝上可乐,刷上抖音,过上古代人觉得神仙般的日子了…
#china #tw #statement
春晚是不是又给咱人矿喂💩了啊? 听了半个小时台湾👂都磨出饺子了
首先,一个中国是文化概念的话,两岸同文同种已经统一了,所以还在那台独台独叫个毛?
而如果是秦始皇压榨六国民生的那个概念,统一,就和城管、小贩、电瓶车 这仨一家亲大团圆一样,和水滴筹孝子、高干病房、特供食油卫生巾一层楼一样,混淆是非,荒唐至极。 说啥场面话都改变不了台湾学生的超国民待遇、香港人从婆罗门到莫名被贬、 河北人与京爷沪✌甚至鹅跌三六九等的现实
一个连自己国内法律劳权、医疗、就业、退休、结社迁徙的权利,什么城镇城乡双非双轨双标,各个阶层都割席的泾渭分明、四分五裂到毫无标准和底线的宗教国家; 对活的「同胞」恶语相向,对死的战争守节招魂,把同一个人都精分成为两面派,竟又有脸谈什么统一大义,真是把老祖宗的仁义礼智信都丢干净了!
春晚是不是又给咱人矿喂💩了啊? 听了半个小时台湾👂都磨出饺子了
首先,一个中国是文化概念的话,两岸同文同种已经统一了,所以还在那台独台独叫个毛?
而如果是秦始皇压榨六国民生的那个概念,统一,就和城管、小贩、电瓶车 这仨一家亲大团圆一样,和水滴筹孝子、高干病房、特供食油卫生巾一层楼一样,混淆是非,荒唐至极。 说啥场面话都改变不了台湾学生的超国民待遇、香港人从婆罗门到莫名被贬、 河北人与京爷沪✌甚至鹅跌三六九等的现实
一个连自己国内法律劳权、医疗、就业、退休、结社迁徙的权利,什么城镇城乡双非双轨双标,各个阶层都割席的泾渭分明、四分五裂到毫无标准和底线的宗教国家; 对活的「同胞」恶语相向,对死的战争守节招魂,把同一个人都精分成为两面派,竟又有脸谈什么统一大义,真是把老祖宗的仁义礼智信都丢干净了!
❤2
http://www.bilibili.com/video/BV16eqDYVEzQ #news 润人 精神领袖
>
我去,讲师快实现美国梦了啊,生活稳定,收入稳定,有住处有宠物,就差一个伴侣了,绝了[笑哭]
羡慕讲师的,先搞清楚人家的身份,流浪只是噱头,人家是全网小百万粉丝的网红.你先看看能不能做到油管15万粉丝再说吧.
讲师是找茬挨打拿的受害者签证,解决了合法身份问题,又避免了政治问题,可以说非常高明。很多人谈的绿卡问题,实际上受害者签证是最难拿绿卡的的签证,挨一顿打就可以,太简单了以至于前面排队排了几十万人[笑哭]
>
我去,讲师快实现美国梦了啊,生活稳定,收入稳定,有住处有宠物,就差一个伴侣了,绝了[笑哭]
羡慕讲师的,先搞清楚人家的身份,流浪只是噱头,人家是全网小百万粉丝的网红.你先看看能不能做到油管15万粉丝再说吧.
讲师是找茬挨打拿的受害者签证,解决了合法身份问题,又避免了政治问题,可以说非常高明。很多人谈的绿卡问题,实际上受害者签证是最难拿绿卡的的签证,挨一顿打就可以,太简单了以至于前面排队排了几十万人[笑哭]
Bilibili
[12月11号更新]:尽管要被分配永久住房但是打野不能松懈_哔哩哔哩_bilibili
-, 视频播放量 468112、弹幕量 457、点赞数 3463、投硬币枚数 142、收藏人数 344、转发人数 719, 视频作者 丁胖子金牌讲师精选, 作者简介 视频内容:剪辑自YTB@丁胖子金牌讲师
频道将会定时更新讲师润美日常生活,欢迎大家讨论和关注,相关视频:住进九楼大别墅,楼下打野区,老佛爷我又立功了,半夜女人敲门,没有把握住(吃垮漂亮国/第二季48集),甜甜圈饿得吐酸水了,讲师的狗大鱼大肉!,洛杉矶大火把我烧活了,继续打野要饭 金牌讲师,讲师怒斥甜甜圈反贼,讲师和泡芙小可爱!,我给老墨…
频道将会定时更新讲师润美日常生活,欢迎大家讨论和关注,相关视频:住进九楼大别墅,楼下打野区,老佛爷我又立功了,半夜女人敲门,没有把握住(吃垮漂亮国/第二季48集),甜甜圈饿得吐酸水了,讲师的狗大鱼大肉!,洛杉矶大火把我烧活了,继续打野要饭 金牌讲师,讲师怒斥甜甜圈反贼,讲师和泡芙小可爱!,我给老墨…
Forwarded from Newlearnerの自留地 ( 初学者 | Newlearner365)
#years
┏━━┓┏━━┓┏━━┓┏━━┓
┗━┓┃┃┏┓┃┗━┓┃┃┏━┛
┏━┛┃┃┃┃┃┏━┛┃┃┗━┓
2024, 感谢陪伴 ! Happy New Year !
┃┏━┛┃┃┃┃┃┏━┛┗━┓┃
┃┗━┓┃┗┛┃┃┗━┓┏━┛┃
┗━━┛┗━━┛┗━━┛┗━━┛
频道:@NewlearnerChannel
┏━━┓┏━━┓┏━━┓┏━━┓
┗━┓┃┃┏┓┃┗━┓┃┃┏━┛
┏━┛┃┃┃┃┃┏━┛┃┃┗━┓
2024, 感谢陪伴 ! Happy New Year !
┃┏━┛┃┃┃┃┃┏━┛┗━┓┃
┃┗━┓┃┗┛┃┃┗━┓┏━┛┃
┗━━┛┗━━┛┗━━┛┗━━┛
频道:@NewlearnerChannel
duangsuse::Echo
#linux #algorithm 嵌入式 链表 在内核中,我们不能用定长数组(pid这些东西是经常增删、完全遍历的),首尾相接 双向链表 + inline优化 是Linus的选择 IntList* 只能保存int, 但嵌入式链表能包含多个子类,都可以遍历查表,再以 container_of 解指针。 Lua 以这种做法实现 int tag; union{} 这和C的 struct T{ char tail []} 很像,被用于保存 len+ptr\0 字符串 https://www.zhihu.c…
Netcan on Programming
重写 C++ 标准库的价值?
众所周知,标准库中的算法容器是普通人很难手写超越的,因为这归功于 C++ 的模板、编译时计算特性,它拥有零成本抽象能力,也就是说无论使用模板机制做多少层抽象,最后生成的代码和手写 C 代码一样高效,这就是为何 C++ 相对于 C 来说拥有 易用 的接口,并且不会导致性能损失。 但本文章的主题不在于模板编程,而在于探讨重写标准库的价值。在这之前需要声明下,C++ 标准中自定义了标准库的接口,以及
duangsuse::Echo
https://github.com/mirtlecn/chaizi-re?tab=readme-ov-file#汉字拆字字典修订 #school https://zh.wikipedia.org/wiki/中日韓統一表意文字#漢字等同 🙄 作为一个「语言人」,我非常遗憾, 关于中文的一切开发 (Unicode CJK, IDS统一表意..),竟然与大陆本土无缘,且完全没有如 jpdb.io 般惠及中文学习。 只有拼音和五笔,这些为机器服务的层是中国人为营利想出来, 为学习者的,是完全没有。 乃至二简字,都是好大喜功不成气候…
#blog https://dieken.github.io/posts/chinese-input-methods/
>输入法界,俗称码圈,在 2024 年的今天,毫无疑问是个小众圈子
(1) 做码人,或称算码人、字圈,喜欢研究汉字拆分和字根的键盘布局,(2) 跟打人,或称赛文人、赛圈,喜欢竞速跟打,以手快为荣,可谓武玩,(3) 其它人,菜鸟龙套捧哏普通用户,可谓文玩。三个小圈子之间以及内部少不了日常逗乐拌嘴,反正有人的地方就有江湖,很感慨的是,八九十年代的万「码」奔腾到如今的万「码」齐喑、十「码」互踢
>形码可以打整句吗?习惯了拼音整句后,突然发现形码要人肉分词,可真是「一夜回到解放前」,搞不好就碰到打词打空了,非常恶心,因此码圈大佬们的建议是要么记住小词库谨慎打词,要么索性只打单字,极端点就是不要简码只打全码单字。
>岁寒输入法:就我而言,我做的第一版输入法,全世界都没人会用,只有我一个人会用;我做的第二版输入法,别人也会用了,但是没有人用;我做的第三版输入法,终于有人愿意用了。
在设计完岁寒输入法的布局和输入规则后,我惊奇地发现岁寒输入法呈现出一种非常重要的特性——输入声韵的无二义性。简单地说,就是任何一条滑行路径都明确地指向某一个声母或者韵母,不会存在歧义,不依赖于已经输入的信息,经常用于处理无声母的拼音。「xian」不可能是「xi'an」,「gang」不可能是「gan'g」,这个特性是全拼和双拼输入法都不具备的。
ps. 智能选词使用的 #algorithm HMM 比DNN难懂不少,用途也窄,不知道现在的智能拼音都在用什么算法,还是马尔可夫链?
https://shurufa.app/ chaifen.app
https://dieken.github.io/posts/some-words-about-chinese-input-method-circle/
>输入法界,俗称码圈,在 2024 年的今天,毫无疑问是个小众圈子
(1) 做码人,或称算码人、字圈,喜欢研究汉字拆分和字根的键盘布局,(2) 跟打人,或称赛文人、赛圈,喜欢竞速跟打,以手快为荣,可谓武玩,(3) 其它人,菜鸟龙套捧哏普通用户,可谓文玩。三个小圈子之间以及内部少不了日常逗乐拌嘴,反正有人的地方就有江湖,很感慨的是,八九十年代的万「码」奔腾到如今的万「码」齐喑、十「码」互踢
>形码可以打整句吗?习惯了拼音整句后,突然发现形码要人肉分词,可真是「一夜回到解放前」,搞不好就碰到打词打空了,非常恶心,因此码圈大佬们的建议是要么记住小词库谨慎打词,要么索性只打单字,极端点就是不要简码只打全码单字。
>岁寒输入法:就我而言,我做的第一版输入法,全世界都没人会用,只有我一个人会用;我做的第二版输入法,别人也会用了,但是没有人用;我做的第三版输入法,终于有人愿意用了。
在设计完岁寒输入法的布局和输入规则后,我惊奇地发现岁寒输入法呈现出一种非常重要的特性——输入声韵的无二义性。简单地说,就是任何一条滑行路径都明确地指向某一个声母或者韵母,不会存在歧义,不依赖于已经输入的信息,经常用于处理无声母的拼音。「xian」不可能是「xi'an」,「gang」不可能是「gan'g」,这个特性是全拼和双拼输入法都不具备的。
ps. 智能选词使用的 #algorithm HMM 比DNN难懂不少,用途也窄,不知道现在的智能拼音都在用什么算法,还是马尔可夫链?
https://shurufa.app/ chaifen.app
https://dieken.github.io/posts/some-words-about-chinese-input-method-circle/
dieken.github.io
中文输入法
Forwarded from Solidot
2024 年 X.Org Server 的开发活跃度达到 10 年来的峰值
2025-01-02 15:56 by 特辖军的一天
可能出乎很多人的意料,正面临被 Wayland 取代的 X.Org Server 项目,其开发活跃度达到了 10 年来的最高水平。X.Org Server 在 2024 年共收到 708 次 commits,过去十年这一数字仅次于 2014 年的 952 次。2024 年 X.Org Server 增加了 11,998 行新代码,删除了 14,680 行代码,远高于过去几年 5~6k 行的代码变更。X.Org Server 的开发主要围绕着 XWayland 项目,以及开发者 Enrico Weigelt 以一己之力对项目的维护工作,他一个人的 commits 就占到了总数的 63%。
https://www.phoronix.com/news/X.Org-Server-2024-GitStats
#X
2025-01-02 15:56 by 特辖军的一天
可能出乎很多人的意料,正面临被 Wayland 取代的 X.Org Server 项目,其开发活跃度达到了 10 年来的最高水平。X.Org Server 在 2024 年共收到 708 次 commits,过去十年这一数字仅次于 2014 年的 952 次。2024 年 X.Org Server 增加了 11,998 行新代码,删除了 14,680 行代码,远高于过去几年 5~6k 行的代码变更。X.Org Server 的开发主要围绕着 XWayland 项目,以及开发者 Enrico Weigelt 以一己之力对项目的维护工作,他一个人的 commits 就占到了总数的 63%。
https://www.phoronix.com/news/X.Org-Server-2024-GitStats
#X
另外,我刚又又设计了一种新的元编程方式: QuineQuoted (馈硬是一种 eval(s)==s 的测试,它和FP系的ast宏还有点区别: qq需要编译器支持, QQ自己就是编译器) #plt #kt
https://github.com/mame/quine-relay
我几年前用这类技术弄了Tk的DSL,forin展开 https://github.com/duangsuse-valid-projects/TkGUI ,但没有意识到值:名替换 是把运算符重载变成编译器的要点 : 首先
想必是比XML魔法优雅不少吧……
这样Kt的循环展开可以这么写:
看起来相当简单,而且和Proxy({}, {get:genFn}), 和lang.invoke属于同款! 但是,因为能处理左值,创建函数、修改class{}字典也是可能的。 运行时反射,编译时留字面,运行即编译,但比起JIT所有不知名的「编译优化」,eval后留字面可不是魔法,只是元循环函数而已,就像numpy和taichi 的"C DSL"
Quine比之poet等EL就像SpringBoot比SpringXML一样, 不需要切出本语言的思维,就可以突破 o.key() o."key"() 的隔离, 避免了人们关于「静态类型」一直以来的一个很大的误会
但我就从来没见「最佳实践」们用过…… kt 在用仅能自动import而且个性贼大的poet。 lombok 甚至重造javac的轮子,就为了显得自己懂栈字节码了
和我那个拟态类型不谋而合,相信再强化下反射API,很快就能替代TS了!? 🤔
Lisp也有类似的能力,Haskell系的 quasi-quote 准引用 ,包括Rust!()也是这个意思,不过它们都是简单的eval(comptime eval 又怎样?不成熟),甚至搞一些因为反射API不稳定、母语语法空洞而贫瘠,而使用的模式匹配重新造parser,还有递归限制
C++ template<T> 扩充的#define呢,类型体操(比如printf的静态检查)呢,也是这个意思,但它们非常丑陋,它们总是让上下游在 💩味的代码和代码味的💩间二选一,明明试图用解构匹配重新实现调包和# define就能解决的任务,还自我感觉良好,仿佛一眼概况程序的能力已输给AI,但只要Tab补齐的类型写对了,就能强化自己的正确率似的。 丑陋的黑魔法只会诞生丑陋,没有例外。
Quine就不一样了。它揭示了函数的本质只是复用了几个变量的计算树,和JSON一样是跨平台的, 借此允许我们审视和消灭重复的类型签名,创造更好的SWIG、rustdoc、lint、minify等工具,甚至是[拟态评判lityping]这样更直观的检查与推理
这一切都不需要魔法,它和Proxy+getMethod一样是自举的,可以在任何编程语言-尤其是在缺乏this支持(并且傲慢地唯独不支持this隐写)的pyjs里发生。 这是最重要的点,我的跨语言RPC新JSON需要这种codegen框架。 解决一种问题,肯定要把所有上游复杂性全消灭掉,对不对?
https://github.com/mame/quine-relay
我几年前用这类技术弄了Tk的DSL,forin展开 https://github.com/duangsuse-valid-projects/TkGUI ,但没有意识到值:名替换 是把运算符重载变成编译器的要点 : 首先
kstSel=Fn(2, ([A,B])=> KST? A:B ) 就可以用read自源码+值名替换 生成出 "(A,B)=>{" "A" "}"想必是比XML魔法优雅不少吧……
这样Kt的循环展开可以这么写:
val [T Array].constFor = F.PASTE { op: (T)->pass/*[T pass F.n1]*/ ->
indices { i -> quote { op(`$`(this).get(i)) } }
//(this as KtScope).quote "op(x1.get(1))"
//(this as KtScope).quote "op(x1.get(2.. ))"
// str += " inlineOp(${arr}.get(${2})) " 是否和 quote { op($this[i]) } 雷同? Java STR|SQL. 提案的真正面貌来了。
//也可以来return repr(字面量均可序列化), inline("bin/file")... 宿主有多强,宏就有多强。不在五行之中,却不会生成非法结构
} 看起来相当简单,而且和Proxy({}, {get:genFn}), 和lang.invoke属于同款! 但是,因为能处理左值,创建函数、修改class{}字典也是可能的。 运行时反射,编译时留字面,运行即编译,但比起JIT所有不知名的「编译优化」,eval后留字面可不是魔法,只是元循环函数而已,就像numpy和taichi 的"C DSL"
Quine比之poet等EL就像SpringBoot比SpringXML一样, 不需要切出本语言的思维,就可以突破 o.key() o."key"() 的隔离, 避免了人们关于「静态类型」一直以来的一个很大的误会
但我就从来没见「最佳实践」们用过…… kt 在用仅能自动import而且个性贼大的poet。 lombok 甚至重造javac的轮子,就为了显得自己懂栈字节码了
和我那个拟态类型不谋而合,相信再强化下反射API,很快就能替代TS了!? 🤔
val $T_Array.constFor = F.PASTE(n=1) { op:any -> when(var T,){ this typ([T Array]) && op typ([T pass F.n1]) -> pass
else -> TypeError("某些人觉得很厉害的编译原理和OOP,唉,还是比eval和原型链棋差一着")
//把for/if 这些函数的语意,重载成只执行1遍/2侧都执行就够了, 这是Lisp说的道理:语言们没什么语法,只有传参法、求值序、回调或栈的区别罢了。 类型检查和webpack什么的,何必呢,直接在编译期黑盒测试:TDDtc调试运行即编译!
//Kt 不太能按inferDFS(T)分重载,你 val=::print 就一目了然,方程的形式就只有 {T:?0, R:?1} 这样的解构匹配而已,却卡的要死,真不懂是JVM拖了K2的后腿吗? 还是某些预制人比起为用户着想,更爱虚伪的代数呢?
//因此以上代码已经是JB级别的 type inference 了,Prolog数据库的helloworld而已。 F(n1,T,pass). v(this,T,array):-is(T,any?),F(n1,T,pass). >>> v(变量名,...模板参数)
//btw. Kt 没 match{case+} 也不是大问题,如果支持真正纯函数式的解构匹配,怕是val和var语法和那高开低走的@Compose都要退役了。 Svelte的rune、C的返回到指针都不会抄,还真是仅此一家别的不看了
}}Lisp也有类似的能力,Haskell系的 quasi-quote 准引用 ,包括Rust!()也是这个意思,不过它们都是简单的eval(comptime eval 又怎样?不成熟),甚至搞一些因为反射API不稳定、母语语法空洞而贫瘠,而使用的模式匹配重新造parser,还有递归限制
C++ template<T> 扩充的#define呢,类型体操(比如printf的静态检查)呢,也是这个意思,但它们非常丑陋,它们总是让上下游在 💩味的代码和代码味的💩间二选一,明明试图用解构匹配重新实现调包和# define就能解决的任务,还自我感觉良好,仿佛一眼概况程序的能力已输给AI,但只要Tab补齐的类型写对了,就能强化自己的正确率似的。 丑陋的黑魔法只会诞生丑陋,没有例外。
Quine就不一样了。它揭示了函数的本质只是复用了几个变量的计算树,和JSON一样是跨平台的, 借此允许我们审视和消灭重复的类型签名,创造更好的SWIG、rustdoc、lint、minify等工具,甚至是[拟态评判lityping]这样更直观的检查与推理
这一切都不需要魔法,它和Proxy+getMethod一样是自举的,可以在任何编程语言-尤其是在缺乏this支持(并且傲慢地唯独不支持this隐写)的pyjs里发生。 这是最重要的点,我的跨语言RPC新JSON需要这种codegen框架。 解决一种问题,肯定要把所有上游复杂性全消灭掉,对不对?
Forwarded from Dante's Limbo (Dante At2814)
#security #ruby tcpdump https://ruby-china.org/topics/43886
https_instrument 还只是一个玩具,我只测试了一个最简单的例子。对我来说,写这样的工具是一件很有趣的事情。 许多公司的开发机,没有 root 权限,它毕竟也不是科技公司。。。
相比 eBPF ecapture,这种方法除了不用 root 权限外,开发起来也更容易,不需要额外的支持,但 eBPF 是单独的内存空间,操作复杂的 Go 数据结构就极其困难,比如 hash map。
可以用 LD_PRELOAD 替换动态连结库的方法,相应代码。我之前的文章也有相关的介绍。
用 Ruby 构造请求,并用 stack profiling tool 查看请求了哪些方法,从而缩小范围。我用的是 https://github.com/yfractal/sdb
LD_PRELOAD,虽然可以 instrument openssl,但没法改程序本身的代码。理论上,通过改 binary,比如在相应的地址插入 int3,生成新的 bianry,应该可以达到类似的效果,或者直接在编译的时候做相应操作,再或者改 ELF。
相比 eBPF ,个人更喜欢 function Interposing 这种方法
https_instrument 还只是一个玩具,我只测试了一个最简单的例子。对我来说,写这样的工具是一件很有趣的事情。 许多公司的开发机,没有 root 权限,它毕竟也不是科技公司。。。
相比 eBPF ecapture,这种方法除了不用 root 权限外,开发起来也更容易,不需要额外的支持,但 eBPF 是单独的内存空间,操作复杂的 Go 数据结构就极其困难,比如 hash map。
可以用 LD_PRELOAD 替换动态连结库的方法,相应代码。我之前的文章也有相关的介绍。
用 Ruby 构造请求,并用 stack profiling tool 查看请求了哪些方法,从而缩小范围。我用的是 https://github.com/yfractal/sdb
static int Real__SSL_read (void *ssl, void *buf, int num) { return SSL_read (ssl, buf, num); }
extern int __interpose_SSL_read (void *ssl, void *buf, int num);LD_PRELOAD,虽然可以 instrument openssl,但没法改程序本身的代码。理论上,通过改 binary,比如在相应的地址插入 int3,生成新的 bianry,应该可以达到类似的效果,或者直接在编译的时候做相应操作,再或者改 ELF。
相比 eBPF ,个人更喜欢 function Interposing 这种方法
ruby-china.org
无 root 权限、证书查看 Ruby HTTPS 请求内容
Introduction 本文的代码在 https://github.com/yfractal/sdb/tree/main/sdb-shim 在开发或者排查问题的时候,时常会需要查看请求内容。比如著名的 tcpdump 可以查看 ht...
duangsuse::Echo
另外,我刚又又设计了一种新的元编程方式: QuineQuoted (馈硬是一种 eval(s)==s 的测试,它和FP系的ast宏还有点区别: qq需要编译器支持, QQ自己就是编译器) #plt #kt https://github.com/mame/quine-relay 我几年前用这类技术弄了Tk的DSL,forin展开 https://github.com/duangsuse-valid-projects/TkGUI ,但没有意识到值:名替换 是把运算符重载变成编译器的要点 : 首先 kstSel=Fn(2…
https://www.fxzhihu.com/question/528403706/answer/73201328199 #ts
再见了,丑陋的类型体操
通过在JS上使用eval留字面的二段求值,任何这样支持反射的语言,都可以有编译期的预处理器,和# define一样简单
再也不需要理解类型了,解释即编译
再见了,丑陋的类型体操
通过在JS上使用eval留字面的二段求值,任何这样支持反射的语言,都可以有编译期的预处理器,和# define一样简单
再也不需要理解类型了,解释即编译
Inc=F.QUINE((quote,x)=>(quote`${{x}}+=${1};`, x))
acc=2; dd=Inc[acc]
//dd=Inc.scop(s=>eval(s)).MEMO1(acc)
//dd=((x)=>{x+=1; return 3 })(acc)
//展开结果
acc=2; dd=3FxZhihu / Fixup Zhihu
为什么 TypeScript 会有「类型体操」? - @酱紫君 | FxZhihu
TypeScript 聪明反被聪明误, 处于一种微妙的位置. 类型系统比 TS 烂的, type 比 term 少太多原语, type level 压根无法表示复杂逻辑, 也就没这种烦恼 类型系统超越了 TS, 达到 DT 级别的, 此时 term 就是 type, type 就是 term, 也不用写两遍. 只有 TS 不上不下, 夹在中间, type 和 term 有同样能力的原语, 但是 type 和 term 却不等同 于是一模一样的逻辑 term level 写了一遍, type level 又要写一遍…