1752279094668.png
2.3 MB
直接在 https://space.bilibili.com/1292761396/dynamic 挂人的CPP厨们
https://zhuanlan.zhihu.com/p/1922218198754916123#:~:text=我人怎么样?虽然这样说不好听,但我觉得我绝对是一个比较高尚,比较有自我要求的人。
早日被numpy作者这样高人封装一下就立正了
C++许多重复轮子,没必要存在的代码
一个作者都记不住的编程语言,早日滚进历史垃圾堆, AI都不好写的玩意 居然有人说它严谨 #statement
用人话来讲,就是C++的语法/功能点设计者 不知道自己在做什么, 它默认代码行数是正资产,而实际上,没有「语意」的代码就是垃圾。
对于「框架开发者」而言, 查词频、查重、提前做大方向选型, 是底线, 就像「你要先戴好防毒面罩 再去帮别人戴」
然而编程(特指架构设计)界的容错率总是很高,只要拿1000行实现用户的1句话就能被认可, 这就是为什么我讨厌工程师文化, 更倾向于编程是文学创作😅 😅
https://zhuanlan.zhihu.com/p/1922218198754916123#:~:text=我人怎么样?虽然这样说不好听,但我觉得我绝对是一个比较高尚,比较有自我要求的人。
早日被numpy作者这样高人封装一下就立正了
C++许多重复轮子,没必要存在的代码
一个作者都记不住的编程语言,早日滚进历史垃圾堆, AI都不好写的玩意 居然有人说它严谨 #statement
用人话来讲,就是C++的语法/功能点设计者 不知道自己在做什么, 它默认代码行数是正资产,而实际上,没有「语意」的代码就是垃圾。
对于「框架开发者」而言, 查词频、查重、提前做大方向选型, 是底线, 就像「你要先戴好防毒面罩 再去帮别人戴」
然而编程(特指架构设计)界的容错率总是很高,只要拿1000行实现用户的1句话就能被认可, 这就是为什么我讨厌工程师文化, 更倾向于编程是文学创作
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
#cpp 抽象大佬 打起来打起来! 😅 C++ 最终会被manba out ,因为它的「性能」也是伪命题 编程从来只有「功能点×算法」, 性能都是藏在API后面随便换 本来就只应该有值类型 只要不mut,就没有引用了 我说的只差一点,只要整个变量树不mut,不“一键”equals,就不存在值和引用 而且引用的语意本来是和Vue ref() 一样的单更改多赋值,不是什么单内存地址的概念 为了几个块设备上的地址搞那么多有意义吗,有种自己写个不需要memcpu虚拟化的裸机应用 ref:https://t.me/dsuses/5408
我感觉这群B友也还可以, 只是疑似有点极端了(虽然cpp届本身很抽象)
堆("json行"的内存/地址空间)、栈(调用堆叠) 不是什么x64ABI专属的, 是任何编程语言/#FP 都有的概念,只是被C++暴露相等性、begin<end(i<len) 这些1%的细节搞混了
https://drive.google.com/viewer?url=https://github.com/parallel101/course/raw/refs/heads/master/slides/memmodel/Presentation1MemModel.pptx
btw 翻译下段名:ELF对象的 text=fn rodata=lit data=rwlit bss=rw
他这个模型还不如说,是禁止指针运算和窄化宽化,从而只允许 &int, &const int 和CE修改器扫内存这样。 int[] 或元组对齐4 就很自相矛盾了,因为大端小端也属于实现细节,int可不是4byte之和
>但很多时候你必须懂实现,懂系统和编译器特定的细节才能Debug[热]你可以说cpp规范里没这么定义过,但工作里碰到crash,分析coredump文件,运行时调试,必须要知道这些具体实现,甚至可以说不知道这些“实现”不能算一个好的c/cpp程序员
网上大量的经验分享和教程都不是面向纯粹语言的,而是面向问题、面向一个具体的bug的。
如果按照你这种说法,那么咱们说网络根本没有TCP/IP这种东西,只有osi七层模型,根本别学tcp协议和各种网络库了,这是不是很可笑?
无论语言律师如何追求纯粹的语言之美,实际写程序就是很难脱离平台特定的功能。出了bug,你也不知道这个bug来自C++语言层面,还是编译器或平台特定的问题,只能挨个排查。遇到编译器或平台本身就不支持或不正确支持某个C++标准规定的功能可太正常了…
请勿变成语言律师,堆栈结构是常见实现,只是我们不该把实现和抽象混为一谈。同样的bs也在自己书里把自由存储区和堆这两个名词混用。
https://www.bilibili.com/video/BV1Wr421c7MN
btw. PPT尾部的问题,简单来讲就是:C 中数组是第二类公民,数组是不能直接传递的,而 Fortran 可以值传递数组。C 中必须使用指针传递数组,效率非常低,因为编译器永远假设两个地址可能存在重叠(缓存失效),有了 Strict Aliasing,至少类型不同的情况能实现零拷贝
堆("json行"的内存/地址空间)、栈(调用堆叠) 不是什么x64ABI专属的, 是任何编程语言/#FP 都有的概念,只是被C++暴露相等性、begin<end(i<len) 这些1%的细节搞混了
https://drive.google.com/viewer?url=https://github.com/parallel101/course/raw/refs/heads/master/slides/memmodel/Presentation1MemModel.pptx
btw 翻译下段名:ELF对象的 text=fn rodata=lit data=rwlit bss=rw
他这个模型还不如说,是禁止指针运算和窄化宽化,从而只允许 &int, &const int 和CE修改器扫内存这样。 int[] 或元组对齐4 就很自相矛盾了,因为大端小端也属于实现细节,int可不是4byte之和
国内编程界经典拿“底层实现”当“本质”的遗毒之一,其他的例子还有谈虚函数(甚至谈子类型多态)必须扯虚表,谈Promise必须扯事件循环等等。必须用这种朴素的还原论才能理解上层的性质吗…其实恰恰相反,并非底层的实现决定了上层的性质,而是上层的性质要求了底层如此(只是一种可能的)实现
其实现在的内存分配器早就不基于堆数据结构了(叫自由存储区还比这靠谱点),函数调用时也不保证总会生成一个栈(例如内联成功的函数),局部变量有时也会被优化到寄存器上,全局常量也可能被优化到不占常量区空间。如果仍然假定总会生成一个栈,容易写出未定义行为,导致程序出错,不如学习更加正规的c++内存模型:函数体内的普通变量是自动生命周期,定义时构造,函数体结束时(抵达}时)释放;全局变量是静态生命周期,程序启动时(进入main函数前或dll加载时)构造,程序退出时(离开main函数后)释放;new和delete管理的对象是动态生命周期,new时构造,delete时释放。c++内存模型和堆栈内存模型并不只是名称上的不同,主要的区别有:每个独立的变量之间有任意大的不可访问区域,自动生命周期的对象所占内存并不和栈一样保证向下生长,new/delete,new【】/delete【】和malloc/free不得混用。更严重的问题是,堆栈模型只是说对象存储在哪里,并没有说明对象的生命周期(构造和析构的时机):例如要了解func(string().c_str());是否安全,但用c++内存模型就很容易解释:c++规定,临时变量string()的生命周期限定于func这一行,直到分号前都是有效的,而堆栈模型根本没有说明这样的情况,string究竟存在堆上还是栈上,你想了半天,想到了string有“小字符串优化”,小于15字节时会存在栈上,但这对于回答“临时变量什么时候失效”毫无帮助,只是增加你的心智负担,最终还是要回归正规c++内存模型来学习。有人说如果报错“栈溢出”不还是说明还是要学堆栈吗?函数调用栈当然是所有支持函数语言都有的特性,这里的栈要了解,并不能等同于那个连函数调用约定都一清二楚的底层堆栈模型,那就过头了,解决“栈溢出”并不需要了解x86函数调用约定,正如你在python中遇到“栈溢出”不需要查看python虚拟机里的字节码一样,不要偷换概念。类似的概念有“因为linux系统会报segfault所以必须学段内存管理”,然而现代操作系统早已废弃了段式内存管理,而是采用分页内存管理,SIGSEGV实际上应该叫page fault,segfault只是个已经约定俗成没法改的别名而已,正如所谓的“堆内存”早已不是“堆”数据结构一样。
“底层八股文”对C++编程的“积极指导作用”:比如,我知道GCC编译器的实现中,函数调用通常都是x86的call指令实现的,call指令会压栈返回地址,由被调用函数的ret指令取出。所以,我可以通过对第一参数的指针-1,构造一个指针修改返回地址,这样就可以读取或修改返回地址了!比如,我知道Python中GIL阻止了多线程并行,所以我通过ctypes.memmove强行修改了Python解释器内存中的GIL对象,这样不就可以自由的多线程并行了!我真是个天才,然而,我开启-O1优化后,发现GCC编译器把这个函数内联了,没有call指令了,我读到的返回地址有误,并不能形成完整的ebp链表,我认为这肯定是GCC编译器的Bug,我们老师明明说过函数调用约定会压栈的!我通过魔改GIL开始在Python中自由并行后,发现结果混乱,最终Python解释器在一声SIGSEGV中崩溃了,我给Python官方提交了Bug反馈,谁让他们不支持无锁并发数据结构的!另外,通过一个变量魔改另一个变量这个事有原型的,并不是我编的,请看:https://github.com/parallel101/opengltutor/issues/29 小彭老师的教学过程中,不论是群里还是b栈上,依然能遇到大量的“底层八股文”受害者,小彭老师看不得受害者,可你一和他“耐心讲解”,律师帽子就扣上来了。
哗众取宠。用于内存分配的堆栈这两个词在某个特定语言的标准里没有提到,不妨碍这两个概念在许多语言的规范或实现里都存在,说白了就是一个大家都明白的、有助于理解底层原理的抽象,本来就不和某个具体语言绑定。Up 在视频里列出的 strict aliasing 相关的 bug,规范角度说是因为标准里对怎么访问一个对象有明确规定,不符合规定的属于 UB;实现角度上说是因为编译器没有像程序员想当然的那样将变量连续分配,或者做了进一步的优化,跟堆栈这些概念有什么关系?告诉你有个栈,变量在上面就一定是紧密排列?更何况C++23 的 STL 里面还有 <stacktrace> ,如何能说“C++没有堆栈”?
看 up 的评论,貌似还想树个靶子说堆栈这个概念会跟同名数据结构混淆?那首先栈它在逻辑上通常就是一个数据结构意义上的栈,至于 heap 的词源已经很难考证了,未尝跟 binary heap 没有关系,但至多也只是名字起得不好罢了,既学过 binary heap 又学过内存的 heap 的人不至于自己查资料澄清的能力都没有吧。
>但很多时候你必须懂实现,懂系统和编译器特定的细节才能Debug[热]你可以说cpp规范里没这么定义过,但工作里碰到crash,分析coredump文件,运行时调试,必须要知道这些具体实现,甚至可以说不知道这些“实现”不能算一个好的c/cpp程序员
网上大量的经验分享和教程都不是面向纯粹语言的,而是面向问题、面向一个具体的bug的。
如果按照你这种说法,那么咱们说网络根本没有TCP/IP这种东西,只有osi七层模型,根本别学tcp协议和各种网络库了,这是不是很可笑?
无论语言律师如何追求纯粹的语言之美,实际写程序就是很难脱离平台特定的功能。出了bug,你也不知道这个bug来自C++语言层面,还是编译器或平台特定的问题,只能挨个排查。遇到编译器或平台本身就不支持或不正确支持某个C++标准规定的功能可太正常了…
请勿变成语言律师,堆栈结构是常见实现,只是我们不该把实现和抽象混为一谈。同样的bs也在自己书里把自由存储区和堆这两个名词混用。
https://www.bilibili.com/video/BV1Wr421c7MN
btw. PPT尾部的问题,简单来讲就是:C 中数组是第二类公民,数组是不能直接传递的,而 Fortran 可以值传递数组。C 中必须使用指针传递数组,效率非常低,因为编译器永远假设两个地址可能存在重叠(缓存失效),有了 Strict Aliasing,至少类型不同的情况能实现零拷贝
duangsuse::Echo
“因为linux系统会报segfault所以必须学段内存管理”,然而现代操作系统早已废弃了段式内存管理,而是采用分页内存管理,SIGSEGV实际上应该叫page fault,segfault只是个已经约定俗成没法改的别名而已,正如所谓的“堆内存”早已不是“堆”数据结构
说的这一句道理很好。 sizeof(size_t 和 void*) 99% case 是一样的,那何时不同呢? 在上个世纪的机器上。 #os
那时汇编设计失误,日期也有千年虫, 指针是区分 near far cs ds 的双指针,所以size_t<ptr
例如,在16位系统中,使用far指针(4字节,段+地址),
在支持混合32位/64位模式的系统中(例如,Windows的WOW64模式),
所以,现在就连许多Linux也不支持x32了, 但C语言菜鸟,依然要为此迷糊。 因为一开始,程序员们就没查过词频出现在 Array.get(:size_t) ,所以size其实该叫 i or mkArray(indx rest) int a [rest]; 或者直接枪毙
那时汇编设计失误,日期也有千年虫, 指针是区分 near far cs ds 的双指针,所以size_t<ptr
例如,在16位系统中,使用far指针(4字节,段+地址),
void* 可能是32bit,而 size_t 可能是2字节(受限于单一段的大小)。在支持混合32位/64位模式的系统中(例如,Windows的WOW64模式),
void* 可能是64位(支持64位地址),而 size_t 可能被定义为32位以兼容旧代码、限制单个对象大小(4GB)。所以,现在就连许多Linux也不支持x32了, 但C语言菜鸟,依然要为此迷糊。 因为一开始,程序员们就没查过词频出现在 Array.get(:size_t) ,所以size其实该叫 i or mkArray(indx rest) int a [rest]; 或者直接枪毙
duangsuse::Echo
1752279094668.png
更令人作呕的是弥漫在圈内的“和事佬”癌变! 动不动就搬出“XXX没有绝对的对错”、“大家都有道理”这种散发着恶臭的伪辩证法。在文科领域,这话大概率只是空洞的屁话;但在以逻辑、精确、客观事实为根基的理工科,尤其是在编程这种非黑即白(UB就是错,概念混淆就是错,逻辑漏洞就是错)的领域,说这种话无异于当众排泄!理工科没有对错?那你还学个毛线?你写的代码是薛定谔的对错吗?运行时靠意念决定结果?
这种“和稀泥”的本质,就是用虚假的“包容”和“多元”来掩盖技术上的无知、懒惰和不求甚解,是对严谨精神的彻底背叛!“态度至上”的矫情 + “和事佬”式的无原则包容 = 国内技术圈最恶劣的双生毒瘤! 它们联手绞杀严肃的技术讨论:纵容错误: 为技术谬误提供了“免死金牌”——反正“没有绝对对错”,错也理直气壮。打击求真者: 让 mq白 这样敢于直言、追求精确性的人被扣上“激进”、“高傲”、“揪字眼”的帽子,承受道德绑架。培养巨婴: 让学习者永远沉浸在“我弱我有理”、“你说我错就是你态度差”的舒适区,拒绝成长。劣币驱逐良币: 最终导致认真讨论技术、坚持标准的人心灰意冷,沉默或离开,留下满地鸡毛和自嗨的“差不多先生”。这就是一场彻头彻尾的、针对技术尊严的慢性谋杀! 在这种环境下,追求正确、精确和深入理解,反而成了“异类”和“原罪”。
https://www.fxzhihu.com/question/582463239/answer/1921899702628103298
我在 https://t .me/dsuse/21408 吐槽了你最近那事
然后 int a[3]; 是不是指针?当然是,除了没人用的sizeof a!=int ,用起来不就是指针,☝️🤓一点也不好玩。
你要问我为何不是指针,我说,从语意上讲是「双指针」,slice ,因为读写时的性质如此,sprintf_s 也是如此。
两边都有解释,范式不同而已。
你被人喷时可以考虑改一下自己批评的方向, 正确不等于对,你要为C/cpp用户需求的功能点着想一下, 你讨厌谭学,那你自己批UB的时候就不谭学了吗? 你的文章也有脱离App谈C++的私货的
我不是说你的开源和工程师精神不值得respect,但你必须学着从科普的角度入手,而不是一直纠结语法特性X何时是UB, 你批判的问题点,你要给出working的最佳实践再比较, 没人听你干巴巴普法
>strict alias,你要问语言律师,什么是sa,他能给你讲得头头是道,以肉眼parser分析出你的代码有没有违反规则,如果违反了,会嘲笑你不知道乌贼有十条腿。
但是全网没有一个人讲清楚这玩意到底有什么用😅 ,我们能从中得到什么益处,以及,我需要强制类型转换以及指针偏移时该怎么办——按照标准,linux内核链表是ub的。
按照律师们的说法,所有在2020年前,把int32转成float都只能用memcpy,所有2011年之前想用while(running)判断线程结束(volatile) 的都是错误。至于在此之前怎么写正确的代码,语言律师不会给你答案,仿佛在此之前从未有过多线程App。
—
你又不可能突破函数模型来组合程序,只要不是 #define / static T[], 你都不能用C sizeof 实现 forEach(a, print_D) 功能,所以a[]就是指针,API如此
“引用就是指针” 引用不可空,不可调整,是更好的指针,能在swap(A,B)上替代宏
我看见有人说 int a[2] 是 int a, a1; (int a**2); 他们是这么理解栈变量+指针的,这当然不规范,但C就没有operator[]和集合库,你说它是个二进制offset绑定语言,无关编程,也完全正确。 不要在一个错误的地方比较对错了,50年不变了
>你凭啥说我说错了?书上就是这么写的,数组名是指针,你比书懂?老师也是这么教的,你是啥啊?比我老师牛逼?我老师是还说看汇编,你看的懂吗?我老师可是教授。这书的作者可是清华教授,你有资格质疑吗?(一般不会一句话说完这些,这里只是全加在一起)
>一个18岁的人,能指望他懂什么?可以看出,他学东西“满满的高中生思维”,恨不得把整个cppref背下来,其实用处不大。
>热衷于当语言律师主要是因为没有能力当架构律师
>震惊,王垠还有低配版?我当初学编程,也是一堆语言律师教我在那边怎么写,就一个void main和int main能争论好几年
>那个个小圈子有点太抽象了,自称loser,确实了也是。我搞不明白,真正搞技术的谁没事整这么个b群,一个个整个loser的身份。感觉都是一群心智不成熟的高中生商业互吹。不如买几本经典书看收获大。
https://zhuanlan.zhihu.com/p/659407017
想到 #cpp SFINAE 和UB的关系也是 实在难崩, 确实需要正常人的编程语言整治一下C++字节和心脏只有一个能跳的碎片化狂欢了
代数确实就是非黑即白的, 但它的下场,就是几百年没人开发了,也就是领域死了。 还死的很有尊严呢~ 主不在乎。
SFINAE最开始不就是UB么, C++真是一个从bug和UB里构建出来的SDK,和py小而美的路子完全相反
邮电确实好啊…… 我大专
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
#cpp 抽象大佬 打起来打起来! 😅 C++ 最终会被manba out ,因为它的「性能」也是伪命题 编程从来只有「功能点×算法」, 性能都是藏在API后面随便换 本来就只应该有值类型 只要不mut,就没有引用了 我说的只差一点,只要整个变量树不mut,不“一键”equals,就不存在值和引用 而且引用的语意本来是和Vue ref() 一样的单更改多赋值,不是什么单内存地址的概念 为了几个块设备上的地址搞那么多有意义吗,有种自己写个不需要memcpu虚拟化的裸机应用 ref:https://t.me/dsuses/5408
Please open Telegram to view this post
VIEW IN TELEGRAM
Video Download Bot
http://bilibili.com/BV1vDMizYERh ⚡钿宝,更懂捐款更懂你⚡【完整版】.mp4 Resolution: 1920x1080 Duration: 207 seconds
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Hacker News 摘要
Telegraph
OpenAI推迟开放权重模型的发布
原标题:OpenAI delays launch of open-weight model OpenAI首席执行官山姆·阿尔特曼在社交媒体平台X上发布消息,宣布原定于下周推出的开放权重模型将推迟发布。他表示,延迟的原因是需要更多时间来进行额外的安全测试和审查高风险领域。他补充说,目前尚不确定需要多长时间来完成这些工作。 阿尔特曼强调,一旦权重模型发布便无法撤回,因此OpenAI在此方面希望做到尽善尽美。他对这一决定表示歉意,并表示团队正在全力以赴工作。 原文:https://twitter.com/sa…
#有意思的项目 #sysadmin
anylinuxfs: macOS 下挂载任意 Linux 支持的 FS 的工具,基于 libkrun 提供的 microVM 和 NFS 协议,完全用户态实现,不安装内核扩展、不降低系统安全性
https://t.me/RachelBlahblah/8561?comment=8287
https://github.com/nohajc/anylinuxfs
实际上是起了一个 Alpine Linux,和QEMU-nbd差不多
anylinuxfs: macOS 下挂载任意 Linux 支持的 FS 的工具,基于 libkrun 提供的 microVM 和 NFS 协议,完全用户态实现,不安装内核扩展、不降低系统安全性
https://t.me/RachelBlahblah/8561?comment=8287
https://github.com/nohajc/anylinuxfs
实际上是起了一个 Alpine Linux,和QEMU-nbd差不多
Telegram
DBin_K ∣ 闷声摸大鱼🐳 in Rachel's Comments
那我是不是也能在Windows做类似的操作,用wsl访问ext4
❤1
Forwarded from codedump的电报频道 (老C)
#开源项目
给Rust编译器提交的第一个pr被合并了。跟进bug原因花了大几个(> 5)小时,最后只改动了一行代码。这是一次很简单的提交,但是对我个人却是跨出了一大步。
我这些年阅读过不少开源项目代码,但是没有主动给几个开源项目贡献过代码。由于对Rust和编程语言这一领域的喜爱,我打算后续在我业余时间能多参与Rust编译器项目。
给Rust编译器提交的第一个pr被合并了。跟进bug原因花了大几个(> 5)小时,最后只改动了一行代码。这是一次很简单的提交,但是对我个人却是跨出了一大步。
我这些年阅读过不少开源项目代码,但是没有主动给几个开源项目贡献过代码。由于对Rust和编程语言这一领域的喜爱,我打算后续在我业余时间能多参与Rust编译器项目。
GitHub
Fix wrong messages from methods with the same name from different traits by lichuang · Pull Request #144029 · rust-lang/rust
fix issue #143740
🫡3
Forwarded from yihong0618 和朋友们的频道 (伊)
把这行放在 .bashrc 里,每次打开新的 terminal 就可以随机选一个 IDE 来搞。
把编程当成 rogue like
每次的新鲜感都不一样。
alias code=$(sh -c 'tools=(code cursor claude gemini trae); \
echo "${tools[$RANDOM % ${#tools[@]}]}"')
把编程当成 rogue like
每次的新鲜感都不一样。
alias code=$(sh -c 'tools=(code cursor claude gemini trae); \
echo "${tools[$RANDOM % ${#tools[@]}]}"')
Forwarded from Hacker News 摘要
Telegraph
召回的 Anker PowerCore 10000 移动电源内部发生了什么问题?
原标题:What went wrong inside recalled Anker PowerCore 10000 power banks? 文章标题为《什么导致这些被召回的 Anker PowerCore 10000 移动电源出现问题?》。该文讨论了锂离子电池在我们日常生活中的广泛应用,尤其是在电动汽车、智能手机和笔记本电脑等设备中。然而,当质量问题出现时,锂离子电池可能会引发过热和火灾等危险,从而对财产和人身安全造成严重威胁。 最近,Anker 召回了超过一百万个 PowerCore 10000 移动电源(型号…
Forwarded from Hacker News 摘要
Telegraph
“动态规划”并不是指“计算机编程”
原标题:“Dynamic Programming” is not referring to “computer programming” 在这篇博客文章中,作者探讨了“动态规划”(Dynamic Programming)这一术语的真正含义,并强调它并不意味着“计算机编程”。文章指出,当人们在算法课程或LeetCode学习指南中看到“动态规划”这一短语时,常常会询问“在这个上下文中,‘动态’是什么意思”,而更重要的问题是“在这个上下文中,‘编程’是什么意思”。实际上,这里的“编程”指的是计划(progra…
Forwarded from QIN2DIM's Tech Channel
说到 Git commit message,给大家推荐一个我自用长期维护的生成器,最近刚开源:
👉 https://github.com/QIN2DIM/lazy-commit
文档里有一些推荐配置,如果本地没有顺手的模型,可以考虑用 OpenRouter 和 Siliconflow 提供的免费模型来生成 commit message(我已经帮大家测试过,选出了最适合这个场景的模型)。如果你的项目是开源的,那应该没啥问题;否则,建议修改 `BASE_URL`,走本地的 OAI Gateway。或者复制源码模板到本地仓库改 system instructions 之类的设定来适配自己的风格和标准。
另外,这个 tool 在执行时会读取并应用
一键运行:
👉 https://github.com/QIN2DIM/lazy-commit
文档里有一些推荐配置,如果本地没有顺手的模型,可以考虑用 OpenRouter 和 Siliconflow 提供的免费模型来生成 commit message(我已经帮大家测试过,选出了最适合这个场景的模型)。如果你的项目是开源的,那应该没啥问题;否则,建议修改 `BASE_URL`,走本地的 OAI Gateway。或者复制源码模板到本地仓库改 system instructions 之类的设定来适配自己的风格和标准。
另外,这个 tool 在执行时会读取并应用
.dockerignore 和 .gitignore 里的规则,还内置了一些自定义规则,用于过滤特定的锁文件(比如 uv.lock),避免输入过多噪声。它还会用 tiktoken 估算上下文长度,如果太长,会自动 compact 压缩上下文(默认 32k)。一键运行:
uv tool install -U lazy-commit
uv run commit
GitHub
GitHub - QIN2DIM/lazy-commit: A git commit message generator for personal use.
A git commit message generator for personal use. Contribute to QIN2DIM/lazy-commit development by creating an account on GitHub.
Forwarded from QIN2DIM's Tech Channel
Forwarded from Hacker News 摘要
Telegraph
AI概述导致搜索点击率大幅下降
原标题:AI overviews cause massive drop in search clicks 根据Pew研究中心的分析,AI概述对网站的点击率造成了巨大的影响。研究显示,自从谷歌在2023年5月推出AI概述(也称为“搜索生成体验”)以来,搜索结果的流量显著下降。尽管谷歌声称这些基于Gemini的答案不会影响网站流量,但新的分析结果显示,包含AI概述的搜索结果有着近一半的点击率下降。 该研究分析了2025年3月从Ipsos KnowledgePanel收集的900名用户的数据,结果显示当搜索结…
Forwarded from Solidot 纯净版
Telegram 上的偷拍群组
#犯罪
南方都市报报道了最近在社交媒体上引起关注的 Telegram 偷拍频道。被称为 MaskPark树洞论坛的频道成员均为中国男性,总规模超 10 万人。该频道下设至少 20 个细分群组,主题均与色情内容紧密相关,最大群组达 90 万人。论坛的内容包含在不同场合偷拍陌生女性,主动散布前女友、现女友、妻子、女儿甚至母亲的隐私照片,公开意淫女同事等。该论坛号召全体成员对着屏幕发泄胜生理欲望,群组聊天记录内容低俗露骨,被网友称为“中国版N号房”事件。律师表示,偷拍者与传播者可能触犯“非法使用窃听窃照专用器材罪”(刑法第284条),造成严重后果可判2年以下徒刑;公然传播行为主要构成“传播淫秽物品罪”,情节严重者同样面临2年以下徒刑。“如果靠此进行盈利牟利,则涉嫌‘传播淫秽物品牟利罪’,最高可判处到无期徒刑。”
南方都市报 前男友把她卖给了十万人:起底跨境偷拍群的肮脏交易
#犯罪
南方都市报报道了最近在社交媒体上引起关注的 Telegram 偷拍频道。被称为 MaskPark树洞论坛的频道成员均为中国男性,总规模超 10 万人。该频道下设至少 20 个细分群组,主题均与色情内容紧密相关,最大群组达 90 万人。论坛的内容包含在不同场合偷拍陌生女性,主动散布前女友、现女友、妻子、女儿甚至母亲的隐私照片,公开意淫女同事等。该论坛号召全体成员对着屏幕发泄胜生理欲望,群组聊天记录内容低俗露骨,被网友称为“中国版N号房”事件。律师表示,偷拍者与传播者可能触犯“非法使用窃听窃照专用器材罪”(刑法第284条),造成严重后果可判2年以下徒刑;公然传播行为主要构成“传播淫秽物品罪”,情节严重者同样面临2年以下徒刑。“如果靠此进行盈利牟利,则涉嫌‘传播淫秽物品牟利罪’,最高可判处到无期徒刑。”
南方都市报 前男友把她卖给了十万人:起底跨境偷拍群的肮脏交易
Solidot 纯净版
论坛的内容包含在不同场合偷拍陌生女性,主动散布前女友、现女友、妻子、女儿甚至母亲的隐私照片
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Solidot 纯净版
特朗普威胁关闭 TikTok
#USA
由于谈判不顺利,在三次给予 TikTok 宽限期之后美国政府官员威胁关闭 TikTok。TikTok 美国业务出售或被禁止服务的禁令原本于 2025 年 1 月 19 日生效,特朗普于 1 月 20 日上任之后就给了它 75 天宽限期。该宽限期于 4 月 5 日截至,但将 TikTok 美国业务出售给美国公司的谈判仍然在进行之中,特朗普之后第二次给了 75 天的宽限期。在 6 月 19 日第二次宽限期即将结束之际,特朗普再次延长 90 天。这位最早在 2020 年威胁要关闭 TikTok 的美国总统表示只有他能达成交易让它能在美国继续运营。然而与中国方面的谈判并不顺利,商务部长 Howard Lutnick 表示如果中国方面不批准交易,美国政府愿意关闭 TikTok。谈判的焦灼点是美国要求字节跳动出售 TikTok 使用的推荐算法。
arstechnica.com/tech-policy/2025/07/tiktok-will-shut-down-soon-if-china-wont-agree-to-trumps-deal-official-says/
#USA
由于谈判不顺利,在三次给予 TikTok 宽限期之后美国政府官员威胁关闭 TikTok。TikTok 美国业务出售或被禁止服务的禁令原本于 2025 年 1 月 19 日生效,特朗普于 1 月 20 日上任之后就给了它 75 天宽限期。该宽限期于 4 月 5 日截至,但将 TikTok 美国业务出售给美国公司的谈判仍然在进行之中,特朗普之后第二次给了 75 天的宽限期。在 6 月 19 日第二次宽限期即将结束之际,特朗普再次延长 90 天。这位最早在 2020 年威胁要关闭 TikTok 的美国总统表示只有他能达成交易让它能在美国继续运营。然而与中国方面的谈判并不顺利,商务部长 Howard Lutnick 表示如果中国方面不批准交易,美国政府愿意关闭 TikTok。谈判的焦灼点是美国要求字节跳动出售 TikTok 使用的推荐算法。
arstechnica.com/tech-policy/2025/07/tiktok-will-shut-down-soon-if-china-wont-agree-to-trumps-deal-official-says/