#algorithm 动态规划 dynamic programming
eg. lcs公共子串, knapack背包最佳配重, edit-distance编辑距离
http://www.bilibili.com/video/BV1FJ4m1M7RJ
🌚这是连“二参记忆化递归”这个常识都没说出来啊。
其实DP的经典案例是fib f x=x if x<2 else f(x-1)+f(x-2)
转化为一维的 f=[0,0]; f.i=f.(i-1)+f.(i-2)
这样,动归比递归的主要难度,是确立基线,以及用抽象的2D数组.ij取代fib()思考「状态转移方程」
二者的相似,好比「积分傅里叶变换」与离散DFT
动归比 @memo def fib 只优化了常量时间
fib只需要朝0的方向计算两个子问题,可以 iter 优化
实现上,如 lcs
f(,)=0
f(a,ab)=1
f(b,ab)=1
来,可视化一个corner case!
\ a b
a 1 0
b 0 2
可见,参数网格
晦涩就对了,因为它等效这个:
lcs([A],[B])=A==B
lcs([A,a],[B,b])=
max(lcs(a,b) lcs(b,a))+(A==B? 1:0)
lcs([A,a],[B])= lcs(a)+(A==B? 1:0)
+2分支
f(a,ab)=1 直接匹配AaBb +1
f(b,ab)=1 则匹配ABb,居然也与表格等效
更易懂了吗?见仁见智,尤其是 (a,b)(b,a)是干啥? 当然,因为lcs本身就有交换律啊..
不过我要指出,这个语法是有问题的(尽管 #haskell 在红黑树/快排上比cpp可易读不止一半),如果专门对DP设计,一定有 np.einsum 那样更优雅的表述
DP教学总是涉及表格[i,j] 而可视化并不方便,不过解「编辑距离」,你总得先学diff(abc, aBc)=[1: -1+B] 怎么计算吧
* https://t.me/dsuses/5335 基于memo的lcs,人不如AI
* https://t.me/dsuse/18877?single fib流
只能先留个坑🌝触摸屏累死了
eg. lcs公共子串, knapack背包最佳配重, edit-distance编辑距离
http://www.bilibili.com/video/BV1FJ4m1M7RJ
🌚这是连“二参记忆化递归”这个常识都没说出来啊。
其实DP的经典案例是fib f x=x if x<2 else f(x-1)+f(x-2)
转化为一维的 f=[0,0]; f.i=f.(i-1)+f.(i-2)
这样,动归比递归的主要难度,是确立基线,以及用抽象的2D数组.ij取代fib()思考「状态转移方程」
二者的相似,好比「积分傅里叶变换」与离散DFT
动归比 @memo def fib 只优化了常量时间
fib只需要朝0的方向计算两个子问题,可以 iter 优化
实现上,如 lcs
f(,)=0
f(a,ab)=1
f(b,ab)=1
来,可视化一个corner case!
\ a b
a 1 0
b 0 2
可见,参数网格
r.(0 0)= A0==B0
r.(i j)= (Ai==Bj? 1:0)+
try max( r.(i-1) r.(j-1))
i==0: r.(0 j-1) #第0行没法再减
j==0: r.(i-1 0)
晦涩就对了,因为它等效这个:
lcs([A],[B])=A==B
lcs([A,a],[B,b])=
max(lcs(a,b) lcs(b,a))+(A==B? 1:0)
lcs([A,a],[B])= lcs(a)+(A==B? 1:0)
+2分支
f(a,ab)=1 直接匹配AaBb +1
f(b,ab)=1 则匹配ABb,居然也与表格等效
更易懂了吗?见仁见智,尤其是 (a,b)(b,a)是干啥? 当然,因为lcs本身就有交换律啊..
不过我要指出,这个语法是有问题的(尽管 #haskell 在红黑树/快排上比cpp可易读不止一半),如果专门对DP设计,一定有 np.einsum 那样更优雅的表述
DP教学总是涉及表格[i,j] 而可视化并不方便,不过解「编辑距离」,你总得先学diff(abc, aBc)=[1: -1+B] 怎么计算吧
* https://t.me/dsuses/5335 基于memo的lcs,人不如AI
* https://t.me/dsuse/18877?single fib流
只能先留个坑🌝触摸屏累死了
Bilibili
ACM 金牌选手教你动态规划的本质。力扣 No.72 编辑距离,真·动画教编程,适合语言初学者或编程新人。_哔哩哔哩_bilibili
虽然我没有写出来,但是你应该知道我要什么吧 XD, 视频播放量 33101、弹幕量 168、点赞数 1694、投硬币枚数 699、收藏人数 2134、转发人数 118, 视频作者 NotOnlySuccess, 作者简介 大一接触编程 2 次晋级 World Finals 并获最快解题奖;4 次 ACM亚洲区金牌;浙江省赛冠军;曾就职阿里、谷歌、微信,相关视频:边睡边学算法丨第一期,动态规划入门50题,10分钟彻底搞懂“动态规划”算法,【动态规划专题班】ACM总冠军、清华+斯坦福大神带你入门动态规划算法,Leetcode力扣…
duangsuse::Echo
#algorithm 动态规划 dynamic programming eg. lcs公共子串, knapack背包最佳配重, edit-distance编辑距离 http://www.bilibili.com/video/BV1FJ4m1M7RJ 🌚这是连“二参记忆化递归”这个常识都没说出来啊。 其实DP的经典案例是fib f x=x if x<2 else f(x-1)+f(x-2) 转化为一维的 f=[0,0]; f.i=f.(i-1)+f.(i-2) 这样,动归比递归的主要难度,是确立基线,以…
🌚 其实看完动画,我是有点想批评作者的。 这么用心做manim ppt 却依旧照搬谭氏备课,国内的 #CS 大概就是这样
然后下面把dfs和dp类比的,一看3小时,这是在悉尼歌剧院放的编程课吗!
完全无法理解《状态转移公式》是怎么得出来的,最好不是抄的。 因为对着答案出题、停留在魔改公式的程度,可不是人类该干的事
“
每当你想指点什么的时候,比比自己的条件和对方差什么——盖茨比大概想对砖家“高人”说”
然后下面把dfs和dp类比的,一看3小时,这是在悉尼歌剧院放的编程课吗!
完全无法理解《状态转移公式》是怎么得出来的,最好不是抄的。 因为对着答案出题、停留在魔改公式的程度,可不是人类该干的事
“
每当你想指点什么的时候,比比自己的条件和对方差什么——盖茨比大概想对砖家“高人”说”
https://t.me/dsuse/19830 #statement #book 「只给🔑不给🔒」 #china
😒莫名其妙把《kt元编程》看到 Compose, AtomFU 的部分了,占二成篇幅
不得不说,牢霍 这两张写得是最珍贵,但是最烂的。
@Composeable 上来就是说内部有啥结构啥流程和flag,报菜名
连期待编译出什么代码都没得
如果您是后端,不懂Compose在哪调用,为什么有 $changed 这些优化呢?不好意思,牢霍只负责教codegen,这个框架被设计来解决什么,比无魔法的Anko优越在哪,他是一点不关心。
纯流水账 ,基本只对同样要学八股的人有用。。
我在想, 自顶向下地编程和写文,是我用的唯一方法;它的好处是,一切代码都是有reasoning的,不服可以重写、重新选型,不是强加给你来死记硬背的
但是,迄今为止我阅读全部的中文资料,除了王银那种废话为主的低密度冷科普,没有这种「自顶向下」的作者。
为什么从根源认知一类问题, 从而区分本质与私货、明白为什么要这么写,对各种大牛就那么难呢?!
😒莫名其妙把《kt元编程》看到 Compose, AtomFU 的部分了,占二成篇幅
不得不说,牢霍 这两张写得是最珍贵,但是最烂的。
@Composeable 上来就是说内部有啥结构啥流程和flag,报菜名
连期待编译出什么代码都没得
如果您是后端,不懂Compose在哪调用,为什么有 $changed 这些优化呢?不好意思,牢霍只负责教codegen,这个框架被设计来解决什么,比无魔法的Anko优越在哪,他是一点不关心。
纯流水账 ,基本只对同样要学八股的人有用。。
我在想, 自顶向下地编程和写文,是我用的唯一方法;它的好处是,一切代码都是有reasoning的,不服可以重写、重新选型,不是强加给你来死记硬背的
但是,迄今为止我阅读全部的中文资料,除了王银那种废话为主的低密度冷科普,没有这种「自顶向下」的作者。
为什么从根源认知一类问题, 从而区分本质与私货、明白为什么要这么写,对各种大牛就那么难呢?!
Telegram
duangsuse::Echo
🌚 其实看完动画,我是有点想批评作者的。 这么用心做manim ppt 却依旧照搬谭氏备课,国内的 #CS 大概就是这样
然后下面把dfs和dp类比的,一看3小时,这是在悉尼歌剧院放的编程课吗!
完全无法理解《状态转移公式》是怎么得出来的,最好不是抄的。 因为对着答案出题、停留在魔改公式的程度,可不是人类该干的事
“
每当你想指点什么的时候,比比自己的条件和对方差什么——盖茨比大概想对砖家“高人”说”
然后下面把dfs和dp类比的,一看3小时,这是在悉尼歌剧院放的编程课吗!
完全无法理解《状态转移公式》是怎么得出来的,最好不是抄的。 因为对着答案出题、停留在魔改公式的程度,可不是人类该干的事
“
每当你想指点什么的时候,比比自己的条件和对方差什么——盖茨比大概想对砖家“高人”说”
#science #china 辩论 「200斤10里山路不换肩」
(Leonard 驳小岛大浪做的,和驳“十万里长征”差不多,都是对「宗教信仰世俗化」的批判)🌚😅
很难想象一个梗能被认真讨论,还是由离岸“碍国日子人”挑起来的
正说:
挑山工拍的视频说可以,而那个年代能吃苦,是为了生活,所以必然是能成功的
@三健客 的是死肌肉,不会四两拨千斤、接化发,不能证明体力不够
/只要重量低、连续时间短,<10km*100kg 就是有可能的
“不换肩”是方言里的不换人
“100kg”是浮夸风时期,亩产万斤的说法,实际也就二十几公斤
“10km山路”都是下山
没有说“一口气”,
所以可能是在山村的平路上挑了几天扁担。 扁担只能惯用肩挑,所以习的脖子歪
原话「下雨刮風在窯洞裏鍘草,晚上跟著看牲口,還要去放羊,甚麼活都幹,到後來扛200斤麥子,十里山路不換肩。」
反说:
“眾所周知,大多數支持中共的人士,粉紅,都是无神论者。因此,我經常用他們反感宗教的思维模式,做成迴旋鏢打回去,希望引起他們反思。😊”
根据常识,走10km尚且不容易,何况背着一个胖子上山?
根据信任,自称每天游泳1000米,却连拜登拉的弓都拉不开的人,不可信; 被曝姐夫事件的人,不道德
根据利益相关,小岛是新加坡籍,赚粉红的钱,有预设答案。 小岛不会被煽动起民粹恐怖主义袭击,小岛不需要爱中国人。
根据gpt4物理计算,这需要2.6Wh的能量,相当于让重2t的电动车行驶17km
https://m.youtube.com/watch?v=8LzaJHs-L5c&t=6m
扛200斤 體力問題
偏走山路 国力問題
死不換肩 智力問題
明明抗不起14亿,還不許別人幫忙,這不是一般小學生的正常反應
(Leonard 驳小岛大浪做的,和驳“十万里长征”差不多,都是对「宗教信仰世俗化」的批判)🌚😅
很难想象一个梗能被认真讨论,还是由离岸“碍国日子人”挑起来的
正说:
挑山工拍的视频说可以,而那个年代能吃苦,是为了生活,所以必然是能成功的
@三健客 的是死肌肉,不会四两拨千斤、接化发,不能证明体力不够
/只要重量低、连续时间短,<10km*100kg 就是有可能的
“不换肩”是方言里的不换人
“100kg”是浮夸风时期,亩产万斤的说法,实际也就二十几公斤
“10km山路”都是下山
没有说“一口气”,
所以可能是在山村的平路上挑了几天扁担。 扁担只能惯用肩挑,所以习的脖子歪
原话「下雨刮風在窯洞裏鍘草,晚上跟著看牲口,還要去放羊,甚麼活都幹,到後來扛200斤麥子,十里山路不換肩。」
反说:
“眾所周知,大多數支持中共的人士,粉紅,都是无神论者。因此,我經常用他們反感宗教的思维模式,做成迴旋鏢打回去,希望引起他們反思。😊”
根据常识,走10km尚且不容易,何况背着一个胖子上山?
根据信任,自称每天游泳1000米,却连拜登拉的弓都拉不开的人,不可信; 被曝姐夫事件的人,不道德
根据利益相关,小岛是新加坡籍,赚粉红的钱,有预设答案。 小岛不会被煽动起民粹恐怖主义袭击,小岛不需要爱中国人。
根据gpt4物理计算,这需要2.6Wh的能量,相当于让重2t的电动车行驶17km
https://m.youtube.com/watch?v=8LzaJHs-L5c&t=6m
扛200斤 體力問題
偏走山路 国力問題
死不換肩 智力問題
明明抗不起14亿,還不許別人幫忙,這不是一般小學生的正常反應
❤1👍1
《意识形态与经济形态》 #谈政事 #recommend
你去过美国吗? 美国欢迎世界人民的监督,但拒绝无端指责和恶意猜测。自己国的毛病自己站出来救。
甜甜圈们听媒体说,美国每天枪战水深火热,太过自由百姓疾苦,但墙外“无码”的多点:游泳池水深,烧烤架火热, 和张维维、陈平、司马夹头、马云、特供贪官周公子们做邻居,能淘到不含煤油和毒奶粉的食品水货,作家导演不用打英文拼音避讳。
这下是政商和谐,跨国资本控制资产阶级法权石锤了?
因为自由是有价的。 资本家剥削剩余价值,是为了你挑工作、选产品的自由;商贩投机赚差价,是为了新地区买产品的自由;老板压迫劳动价值,是为了消费者懒得直付小费的自由。
吃掉剩余价值,就像砍伐树苗、不留谷种
强硬稳定价格,就像节省饵料、驱逐大鱼
没收用人债主,就像产权易主、利息不变
有人却坚信,对着坏人恶行易施,不仅能让财富翻倍,还能让全人类步入少干多吃的乌托邦? 庞氏骗局。
忽视了大家的产能,资本家金库里的“提货单”废纸一张;赶走了精英的研发,“偷到台湾的金条”可买不来台积电与仁义礼智信的人情味。
撕毁了产权人权的社会契约,却指望自家的产权、消费权和安全照旧?你爸是李刚,还是你有几个师。
请问,整个社会里的职位和道德,该如何与“净资产是否为0”绑定?
没有什么是不能流通的,不必走关系换国籍--甚至跪求三代贫农户籍;只要能将资源分配给最“会产”的人和地区,哪怕他们出生寒门,也是双赢。 加入WTO“剥削者”之后,中国民生的飞跃,就是无声的证人。
或许,独立自由不比“免费面包”亮眼,但市场的参与者获取报酬,就像通过银行把钱借给急需的人,那是正当的。让多产者收益多,是必要之恶,是对经验的认可、对创业的鼓励;让少产者消费多,是必要之善,不然资本主义就会变成不攻自破与不修自正的联盟
这无关善恶,是市场本身的规律与法则。人渣是不分国共的。
没有什么是不能流通的,革命的朋友、国民的敌人,也一样。陈独秀为何被双开?拒绝武装保卫苏联(“特别军事行动”)。
嫉妒是民主的基础。损有余而补不足,天道也。
嫉妒也是民主们的法宝,让暴民歌颂慈禧或希特勒,却忘掉了崇权媚内才是战争和贫困的祸首;或者说,忘不掉“中式”政治正确?
只颠覆了主子和奴才,不「修正」奴隶制的阶级僵化,很能共贫穷,不能共产暴富。
暴力、权力、财力、能力,你们只能理解到“彼可取而代之”。人人生而无产,只是有人比你更无产、更碍国。内斗去吧,就像他们在那十年同归于尽后,和各省五千年积攒的文化瑰宝堆一起烧掉的囧样。
外汇钞票、换人选票、舆论传票、爱民税票,你们甚至连钞票都要没收,因为必须“财力平均”。那暴力呢。
拒绝个体价值,所产生的集体不仅是灰色,其胜利更是不能代表纳税人的利益!
“shzy者”,其实是一群最不思考社会运作的「个人主义者」。 共别人的产来提高自己的福利??恰恰证明了穷人也是自私的。脱离群众的人曾是群众。
“免费面包”扣了多少税,只有用资本和选票不断可视化,才能驱动社会进步;至于审判日那天才能看清的“社会最终形态”,就交给马列的教徒去辩经吧。 日子人可不能靠吃红书敬员神,撑过封城和三年饥荒。
你们许诺血海后的天堂,对被牺牲的我们,只是疯狂。
你去过美国吗? 美国欢迎世界人民的监督,但拒绝无端指责和恶意猜测。自己国的毛病自己站出来救。
甜甜圈们听媒体说,美国每天枪战水深火热,太过自由百姓疾苦,但墙外“无码”的多点:游泳池水深,烧烤架火热, 和张维维、陈平、司马夹头、马云、特供贪官周公子们做邻居,能淘到不含煤油和毒奶粉的食品水货,作家导演不用打英文拼音避讳。
这下是政商和谐,跨国资本控制资产阶级法权石锤了?
因为自由是有价的。 资本家剥削剩余价值,是为了你挑工作、选产品的自由;商贩投机赚差价,是为了新地区买产品的自由;老板压迫劳动价值,是为了消费者懒得直付小费的自由。
吃掉剩余价值,就像砍伐树苗、不留谷种
强硬稳定价格,就像节省饵料、驱逐大鱼
没收用人债主,就像产权易主、利息不变
有人却坚信,对着坏人恶行易施,不仅能让财富翻倍,还能让全人类步入少干多吃的乌托邦? 庞氏骗局。
忽视了大家的产能,资本家金库里的“提货单”废纸一张;赶走了精英的研发,“偷到台湾的金条”可买不来台积电与仁义礼智信的人情味。
撕毁了产权人权的社会契约,却指望自家的产权、消费权和安全照旧?你爸是李刚,还是你有几个师。
请问,整个社会里的职位和道德,该如何与“净资产是否为0”绑定?
没有什么是不能流通的,不必走关系换国籍--甚至跪求三代贫农户籍;只要能将资源分配给最“会产”的人和地区,哪怕他们出生寒门,也是双赢。 加入WTO“剥削者”之后,中国民生的飞跃,就是无声的证人。
或许,独立自由不比“免费面包”亮眼,但市场的参与者获取报酬,就像通过银行把钱借给急需的人,那是正当的。让多产者收益多,是必要之恶,是对经验的认可、对创业的鼓励;让少产者消费多,是必要之善,不然资本主义就会变成不攻自破与不修自正的联盟
这无关善恶,是市场本身的规律与法则。人渣是不分国共的。
没有什么是不能流通的,革命的朋友、国民的敌人,也一样。陈独秀为何被双开?拒绝武装保卫苏联(“特别军事行动”)。
嫉妒是民主的基础。损有余而补不足,天道也。
嫉妒也是民主们的法宝,让暴民歌颂慈禧或希特勒,却忘掉了崇权媚内才是战争和贫困的祸首;或者说,忘不掉“中式”政治正确?
只颠覆了主子和奴才,不「修正」奴隶制的阶级僵化,很能共贫穷,不能共产暴富。
暴力、权力、财力、能力,你们只能理解到“彼可取而代之”。人人生而无产,只是有人比你更无产、更碍国。内斗去吧,就像他们在那十年同归于尽后,和各省五千年积攒的文化瑰宝堆一起烧掉的囧样。
外汇钞票、换人选票、舆论传票、爱民税票,你们甚至连钞票都要没收,因为必须“财力平均”。那暴力呢。
拒绝个体价值,所产生的集体不仅是灰色,其胜利更是不能代表纳税人的利益!
“shzy者”,其实是一群最不思考社会运作的「个人主义者」。 共别人的产来提高自己的福利??恰恰证明了穷人也是自私的。脱离群众的人曾是群众。
“免费面包”扣了多少税,只有用资本和选票不断可视化,才能驱动社会进步;至于审判日那天才能看清的“社会最终形态”,就交给马列的教徒去辩经吧。 日子人可不能靠吃红书敬员神,撑过封城和三年饥荒。
你们许诺血海后的天堂,对被牺牲的我们,只是疯狂。
duangsuse::Echo
#sysadmin Arch #linux 一次滚挂历程(差一点) *原因:很久没滚,GNOME mutter wm莫名有了键盘焦点的bug。 未使用 -Syu 以至于为一些旧的包 --ignore icu 的升级,谁知xml依赖它呢?另外还 --overwrite'jupyterlab/*' *差点滚挂: 不能 systemctl restart display-manager ; pacman -S 启动不了!而且我的tty1开的是支持中文的 cage kitty (虽然不会bootloop 🙉 并非btrfs…
#sysadmin Arch #linux 一次莫名其妙的boot卡第一屏
ps. #tool #github https://chromewebstore.google.com/detail/webdevauthn 比那些付费垃圾TOTP(sha1 6b) 厉害多了 😅
经过PE验证,
没法直接从其他发行版iso照搬
一看Arch liveCD 都1G多了 😅就选择Alpine,但手里的U盘不方便直接dd,需要 isolinux 启动(应该使用 https://www.ventoy.net/cn/index.html 的)
众所周知, GRUB 采用 1vm+2init 执行Linux,第一次init在内存盘,第二次明明也可以让grub传指针进来(squashfs,iso9660) 却莫名其妙要指定/proc/cmdline 去 find .iso 以便
Ubuntu 的是
因此最终你要对.iso 敲两次代码……
然后在毫无文档的init fallback 上挂载
然后OpenRC依然会挂,而且连bash都没有(不能用 arch-chroot https://wiki.archlinuxcn.org/wiki/Chroot ) 😅😅
替换一下 $esp/init*,这样就不卡第一屏
gnome-control-center 也坏了,草,是我的 nm-iwd 导致的
靠这些垃圾发行版还不如USB cdc上网
最后说个冷知识: /dev 树并不是在内核里定义好的
而是由init脚本(udev)创建,在切到第二个init(systemd) 后,看起来就像内核搞的一样 😄
devtmpfs 只是 -o size=固定的 tmpfs
/dev/null 这些统称为内存设备: https://github.com/torvalds/linux/blob/master/drivers/char/mem.c#L696
完整列表见 device.rst
Linux内核的启动参数,主要是 root=/dev/ram0 ,通过pivot_root的新方式都是在可脚本环境下挂载/的
initrd由多个 .cpio.gz 构成,真希望能把.iso 与挂载脚本也加进内存去啊😅😅 为啥非要从u盘
https://run.tournament.org.il/extracting-multi-layered-initramfs/
https://github.com/owenson/tiny-linux-bootloader/blob/master/bsect.asm#L112
http://boot.ipxe.org/ 网络启动
#learn
https://wiki.archlinuxcn.org/wiki/Arch_的启动流程#Getty https://wiki.archlinuxcn.org/wiki/块设备持久化命名
https://mickyching.github.io/kernel/linux-vfs-introduction.html
https://kernel-tour.org/fs/devtmpfs.html
https://github.com/0voice/linux_kernel_wiki/blob/main/文章/设备驱动/Linux操作系统学习之字符设备.md#三-字符设备基本构成
魔数解析 https://ty-chen.github.io/linux-kernel-0x400000/
https://uniondong.github.io/docs/linux/linux_driver_develop_basic/一文秒懂linux字符设备驱动/#21-cdev
https://github.com/torvalds/linux/blob/master/fs/binfmt_script.c
手写fs https://linux-kernel-labs.github.io/refs/heads/master/labs/device_drivers.html
ps. #rust 😅 macro 是教你这么玩的么,简直是对元编程的侮辱
一个KV表写成这B样,唉 https://github.com/torvalds/linux/blob/master/net/9p/error.c 都不好意思了
ps. #tool #github https://chromewebstore.google.com/detail/webdevauthn 比那些付费垃圾TOTP(sha1 6b) 厉害多了 😅
经过PE验证,
$esp/boot/initramfs-linux.img #约40M 莫名其妙成了空文件,必须重新 https://wiki.archlinuxcn.org/wiki/Mkinitcpio -g initr.img没法直接从其他发行版iso照搬
一看Arch liveCD 都1G多了 😅就选择Alpine,但手里的U盘不方便直接dd,需要 isolinux 启动(应该使用 https://www.ventoy.net/cn/index.html 的)
众所周知, GRUB 采用 1vm+2init 执行Linux,第一次init在内存盘,第二次明明也可以让grub传指针进来(squashfs,iso9660) 却莫名其妙要指定/proc/cmdline 去 find .iso 以便
mount /media/cdromUbuntu 的是
boot=casper iso-scan/filename=/a.iso 但Alpine不吃这一套因此最终你要对.iso 敲两次代码……
#grub.cfg
menuentry "find iso" {
find --set=iso a.iso
}
menuentry "boot $iso" {
loopback l0 $iso
linux (l0)/boot/vm*
initrd (l0)/boot/initr*
}
然后在毫无文档的init fallback 上挂载
mount /dev/sda2 /tmp #反正不能直接从GRUB里传/dev号,不通用,也不能直接 find -d1 /media ,需要逐个mount..
mount -t iso9660 -o loop /tmp/a.iso /media/cdrom #不能自动探测loop0/cdfs,全默认fat
fdisk -l #输出是正常的,然而mount不是!然后OpenRC依然会挂,而且连bash都没有(不能用 arch-chroot https://wiki.archlinuxcn.org/wiki/Chroot ) 😅😅
for p in sys dev; do mount --bind /$p /mnt/$p; done
chroot /mnt /bin/bash <<OK
mkinitcpio -g a.img
OK 替换一下 $esp/init*,这样就不卡第一屏
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'Main.lookingGlass.toggle();'
gnome-control-center 也坏了,草,是我的 nm-iwd 导致的
靠这些垃圾发行版还不如USB cdc上网
最后说个冷知识: /dev 树并不是在内核里定义好的
而是由init脚本(udev)创建,在切到第二个init(systemd) 后,看起来就像内核搞的一样 😄
devtmpfs 只是 -o size=固定的 tmpfs
/dev/null 这些统称为内存设备: https://github.com/torvalds/linux/blob/master/drivers/char/mem.c#L696
完整列表见 device.rst
Linux内核的启动参数,主要是 root=/dev/ram0 ,通过pivot_root的新方式都是在可脚本环境下挂载/的
initrd由多个 .cpio.gz 构成,真希望能把.iso 与挂载脚本也加进内存去啊😅😅 为啥非要从u盘
https://run.tournament.org.il/extracting-multi-layered-initramfs/
https://github.com/owenson/tiny-linux-bootloader/blob/master/bsect.asm#L112
http://boot.ipxe.org/ 网络启动
#learn
https://wiki.archlinuxcn.org/wiki/Arch_的启动流程#Getty https://wiki.archlinuxcn.org/wiki/块设备持久化命名
https://mickyching.github.io/kernel/linux-vfs-introduction.html
https://kernel-tour.org/fs/devtmpfs.html
https://github.com/0voice/linux_kernel_wiki/blob/main/文章/设备驱动/Linux操作系统学习之字符设备.md#三-字符设备基本构成
魔数解析 https://ty-chen.github.io/linux-kernel-0x400000/
https://uniondong.github.io/docs/linux/linux_driver_develop_basic/一文秒懂linux字符设备驱动/#21-cdev
https://github.com/torvalds/linux/blob/master/fs/binfmt_script.c
#! 的由来手写fs https://linux-kernel-labs.github.io/refs/heads/master/labs/device_drivers.html
ps. #rust 😅 macro 是教你这么玩的么,简直是对元编程的侮辱
declare_err!(EPERM, "Operation not permitted.");.. 一个KV表写成这B样,唉 https://github.com/torvalds/linux/blob/master/net/9p/error.c 都不好意思了
Google
Chrome Web Store
Add new features to your browser and personalize your browsing experience.
Forwarded from Milkice's 我是高仿号我根本不懂中文
结合前两天折腾国产 Android ROM 的经历,随便聊聊 Android Webview 相关
在如今这个大部分 App 读作 native 实则写作 web 的年代,webview 逐渐成为非常关键的基础设施和黑白帽子们喜闻乐见的攻击面
AOSP 自带的 webview 都是编译 AOSP ROM 时同步编译的 Chromium webview 而来,由于是编译而来,因而该 webview 采用的都是厂商的签名,意味着如果系统不更新或是厂商不发布对应签名的 webview 更新版本,用户系统内置的 webview 将永远停在该版本;而在 Android 6 及之前版本,webview 的包名硬编码在了 framework-res.apk 之中,两者共同导致一旦厂商宣布停更,用户的 webview 也随之停更,直接导致 webview 版本碎片化
Google 后面也开始做事了,要求厂商内置Google webview(由 Google 签名并在 Play Store 上维护更新的 webview 版本),同时从 Android 7 开始在开发者选项中用户可自行切换 webview 实现,看似缓解了 webview 碎片化的问题,但是忘了最大又是最特色的市场——中国
很早很早之前在国内应用商店还是能比较方便地下载到 Chrome 及 webview,自从后面 App 开发者实名再加上备案机制隆重登场后,国内各大应用商店已经见不到这两者的踪影,系统自带的 webview 自然也是没人管没人更新了,到头来 webview 碎片化依旧严重,反正对于厂商来说,webview 版本老旧带来的安全隐患他们也根本不 care,合规才是第一要义
之前我还很反感一些国产 App 动不动自带个 webview,还会跟着酷安的教程强行把 App 改用系统 webview,但现在看来在 webview 碎片化如此严重的国产 Android ROM 市场上,App 厂商们这么做也无可厚非
当然我也不是为他们的行为洗地,实际上这些 App 自带的 webview 也是从远古 chromium 魔改而来,安全性不予评价
频道里的 Android 用家们还是定期检查下手机上的 webview 版本吧,可以戳 [这里] 查看是否有更新
题外话:考虑到用户如果同时安装了 Google webview 和 Chrome 就会导致系统里同时出现两个百兆级别的 webview,在 Android 10 后 Google 引入了 trichrome library,简而言之就是 Chrome 和 webview 直接共用一个 trichrome 内核避免双倍占用,在 Play 更新 Chrome 的同时会自动更新 trichrome
在如今这个大部分 App 读作 native 实则写作 web 的年代,webview 逐渐成为非常关键的基础设施和黑白帽子们喜闻乐见的攻击面
AOSP 自带的 webview 都是编译 AOSP ROM 时同步编译的 Chromium webview 而来,由于是编译而来,因而该 webview 采用的都是厂商的签名,意味着如果系统不更新或是厂商不发布对应签名的 webview 更新版本,用户系统内置的 webview 将永远停在该版本;而在 Android 6 及之前版本,webview 的包名硬编码在了 framework-res.apk 之中,两者共同导致一旦厂商宣布停更,用户的 webview 也随之停更,直接导致 webview 版本碎片化
Google 后面也开始做事了,要求厂商内置Google webview(由 Google 签名并在 Play Store 上维护更新的 webview 版本),同时从 Android 7 开始在开发者选项中用户可自行切换 webview 实现,看似缓解了 webview 碎片化的问题,但是忘了最大又是最特色的市场——中国
很早很早之前在国内应用商店还是能比较方便地下载到 Chrome 及 webview,自从后面 App 开发者实名再加上备案机制隆重登场后,国内各大应用商店已经见不到这两者的踪影,系统自带的 webview 自然也是没人管没人更新了,到头来 webview 碎片化依旧严重,反正对于厂商来说,webview 版本老旧带来的安全隐患他们也根本不 care,合规才是第一要义
之前我还很反感一些国产 App 动不动自带个 webview,还会跟着酷安的教程强行把 App 改用系统 webview,但现在看来在 webview 碎片化如此严重的国产 Android ROM 市场上,App 厂商们这么做也无可厚非
当然我也不是为他们的行为洗地,实际上这些 App 自带的 webview 也是从远古 chromium 魔改而来,安全性不予评价
频道里的 Android 用家们还是定期检查下手机上的 webview 版本吧,可以戳 [这里] 查看是否有更新
题外话:考虑到用户如果同时安装了 Google webview 和 Chrome 就会导致系统里同时出现两个百兆级别的 webview,在 Android 10 后 Google 引入了 trichrome library,简而言之就是 Chrome 和 webview 直接共用一个 trichrome 内核避免双倍占用,在 Play 更新 Chrome 的同时会自动更新 trichrome
#learn #cpp Redis 作者展示 https://yabzhang.github.io/posts/project/reading_smallchat/
作为一个展示样例,这端代码展示了如何处理内存管理、网络套接字的使用、多路复用、客户端连接的管理、消息和指令的处理等逻辑。除去注释只有短短两百多行,用来学习和理解服务端编程已经足够了 ———— 麻雀虽小五脏俱全。
>晚上逛 Github 发现个好用的项目(替代sftp分发),可以用于传输文本和二进制流,支持 curl 和浏览器端,可选 E2EE,支持自建中转服务器,用于在几台服务器之间临时传文件很方便
https://github.com/nwtgck/piping-server
>piping server的衍生项目,配合piping server可以实现用adb远程控制Android设备,前端功能相当丰富,包括文件管理/终端/scrcpy屏幕共享
Demo:https://piping-adb.nwtgck.org/
项目:https://github.com/nwtgck/piping-adb-web
该项目依赖的上游透过WebUSB让用户可以在网页端通过adb管理Android设备 https://app.tangoapp.dev/guide
#rust #meme https://github.com/lvkv/whenfs 通过base64存储图片,类似 youtubefs
#cg https://swiftcafe.io/2016/10/29/pdf
https://github.com/Losses/pdf-postprocess
用 headless chromium 把 svg 转成 pdf,这样样式就全都对了。
Typst 编译到 PDF 就是走的 svg,谁愿意写 postscript
作为一个展示样例,这端代码展示了如何处理内存管理、网络套接字的使用、多路复用、客户端连接的管理、消息和指令的处理等逻辑。除去注释只有短短两百多行,用来学习和理解服务端编程已经足够了 ———— 麻雀虽小五脏俱全。
>晚上逛 Github 发现个好用的项目(替代sftp分发),可以用于传输文本和二进制流,支持 curl 和浏览器端,可选 E2EE,支持自建中转服务器,用于在几台服务器之间临时传文件很方便
https://github.com/nwtgck/piping-server
>piping server的衍生项目,配合piping server可以实现用adb远程控制Android设备,前端功能相当丰富,包括文件管理/终端/scrcpy屏幕共享
Demo:https://piping-adb.nwtgck.org/
项目:https://github.com/nwtgck/piping-adb-web
该项目依赖的上游透过WebUSB让用户可以在网页端通过adb管理Android设备 https://app.tangoapp.dev/guide
#rust #meme https://github.com/lvkv/whenfs 通过base64存储图片,类似 youtubefs
#cg https://swiftcafe.io/2016/10/29/pdf
https://github.com/Losses/pdf-postprocess
用 headless chromium 把 svg 转成 pdf,这样样式就全都对了。
Typst 编译到 PDF 就是走的 svg,谁愿意写 postscript
yabzhang.github.io
smallchat 源码阅读
smallchat1 是 redis 作者 antirez 所写的一个聊天室的小程序;代码短小精悍,很有意思。据说作者以此例向前端朋友展示系统编程的趣味 😄 2~
这里记录下阅读源码所获。
首先从 main 开始:
/* The main() function implements the main chat logic: * 1. Accept new clients connections if any. * 2. Check if any client sent us some new message.…
这里记录下阅读源码所获。
首先从 main 开始:
/* The main() function implements the main chat logic: * 1. Accept new clients connections if any. * 2. Check if any client sent us some new message.…
Forwarded from MiaoTony's Box (MiaoTony 🐱)
#今天又看了啥 #security #Windows
搜狗输入法0day,绕过锁屏有手就行
搜狗输入法可绕过Window10锁屏,该方法目前仍然有效,且Win11复现成功,有些输入法存在“游戏中心”,有些输入法不存在,应该是版本问题。
https://mp.weixin.qq.com/s/naqT_o6Q-DHU9f6pJffAbg
TL;DR
在锁屏界面切换搜狗输入法,打开虚拟键盘,右键搜狗 logo 进入游戏中心,任意打开游戏弹出网页 QQ 登录界面,使用 QQ 下载拉起资源管理器,cmd 启动!甚至还是 system 权限!
震惊!Windows 2000 锁屏绕过又回来了!
搜狗输入法0day,绕过锁屏有手就行
搜狗输入法可绕过Window10锁屏,该方法目前仍然有效,且Win11复现成功,有些输入法存在“游戏中心”,有些输入法不存在,应该是版本问题。
https://mp.weixin.qq.com/s/naqT_o6Q-DHU9f6pJffAbg
TL;DR
在锁屏界面切换搜狗输入法,打开虚拟键盘,右键搜狗 logo 进入游戏中心,任意打开游戏弹出网页 QQ 登录界面,使用 QQ 下载拉起资源管理器,cmd 启动!甚至还是 system 权限!
震惊!Windows 2000 锁屏绕过又回来了!
#tool kotlin 命令加速器 https://gist.github.com/duangsuse/50937b30cbf24a6be0eb69da3a7231b3
灵感
结果 😅 实现监听就花了大篇,
在使用rePTY恢复REPL的标准流时,又发现好像和后台开个终端没区别
因此把焦点放在 main() 的static环境的缓存上,基于pipe实现请求响应
反射的调用省略,总之是单类应用
因为一些莫名其妙的上游bug花了一整天
./catdo bash #export JAVACMD=$PWD/catdo
time kotlin -e 1+1
2
VM .: jstack 331655
2
real 0m2.769s
real 0m3.121s
time kotlin a.main.kts
real 0m1.176s
real 0m1.397s
灵感
>make a mainClass invoker(argv[0]=fqName) in jshell, poll on fqName.txt(NUL-splitted, prepend argv[1:])
if exists, just rewrite fqName.txt, then run reptyr $(lsof -t fqName.txt)
sudo sysctl -w kernel.yama.ptrace_scope=0
use newWatchService to impl watch(Map<Str, Runnable>){}, minimal, in jshell
结果 😅 实现监听就花了大篇,
void main() {
watch(mk(c->{
c.put("a.txt", () -> System.out.println("File modified"));
}));
} 在使用rePTY恢复REPL的标准流时,又发现好像和后台开个终端没区别
因此把焦点放在 main() 的static环境的缓存上,基于pipe实现请求响应
反射的调用省略,总之是单类应用
因为一些莫名其妙的上游bug花了一整天
echo=lambda x:x[::-1]
def bind(f, u=open("a.txt",'wb+')):
while True:
while (ln:=u.read())==b'': pass # see also for fd,ev in select.poll():
u.seek(0); u.truncate(0)
u.write(f(ln)); u.flush() #echo >>
bind(echo)
#net 已注册2年 https://wojs.org/ by hostinger
wojs.org
币李李币(゜-゜)つ干杯~ - bililibi!
Forwarded from 科技圈🎗在花频道📮
博客园已收到赞助 对方称初学编程时受到博客园的帮助
博客园在8月1日发布针对自身网站的救援行动后,次日就收到了河南图奕网络科技有限公司的赞助。对方表示,其出手相救的理由自然而不简单:从我刚学编程的时候博客园就给我很大很大帮助。
更加可贵的是,河南图奕网络自己当前并不宽裕。
博客园
博客园在8月1日发布针对自身网站的救援行动后,次日就收到了河南图奕网络科技有限公司的赞助。对方表示,其出手相救的理由自然而不简单:从我刚学编程的时候博客园就给我很大很大帮助。
更加可贵的是,河南图奕网络自己当前并不宽裕。
博客园
👍2
#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, 视频作者…
👍1
🔮 奇闻异录 与 沙雕时刻 meme collection
#ChatGPT #GPT4 GPT4 的发布会 www.youtube.com/watch?v=outcGtbnMuQ 全程无尿点。但如果要挑出一段精华,我觉得是下面摘出来的这两分钟时间,演示的是: 1. 在草稿本上用纸笔画出一个非常粗糙的草图 2. 拍照告诉 GPT 我要做一个网站长这样,给我生成网站代码 3. 网站做完,总共历时十秒钟左右 source from weibo
YouTube
淘汰Websim! Claude Artifact:将截图变成可执行的应用程序|支持源代码下载|无代码开发|免费AI工具|
在本视频中,我分享了用Claude Artifact功能,通过无代码的方式,分别开发了应用,游戏和网页的过程!真正颠覆性的AI开发工具!支持源代码下载进行二次开发! #ai工具 #免费ai #claude #artifacts #websim #无代码开发
简中互联网废物大赏
Photo
https://m.youtube.com/watch?v=fq0HQtXrDiU #china 退休
令人心碎的 #facts
2050年,为了维持一个最底线的赡养率(例如税后工资7k者不会跌到4k)
假设经济、出生率、养老金不出巨大的恶化,特供体系没有膨胀,能实现50%工资替代率的老有所养
近两年,男女每年都要延迟几个月退休。男2 女4
起码都到65退休,这样才不会对年轻人和市场消费造成负担
但,延迟退休其实还有个潜在的问题,就是影响年轻人就业和上升空间
一方面是年轻人找不到工作,另一方面则是老年人不能退休
2:40 可视化对比欧美日韩,可怕的年龄分布图
所以“计划生育是中共作的最大的恶,而且将持续百年”
令人心碎的 #facts
2050年,为了维持一个最底线的赡养率(例如税后工资7k者不会跌到4k)
假设经济、出生率、养老金不出巨大的恶化,特供体系没有膨胀,能实现50%工资替代率的老有所养
近两年,男女每年都要延迟几个月退休。男2 女4
起码都到65退休,这样才不会对年轻人和市场消费造成负担
但,延迟退休其实还有个潜在的问题,就是影响年轻人就业和上升空间
一方面是年轻人找不到工作,另一方面则是老年人不能退休
2:40 可视化对比欧美日韩,可怕的年龄分布图
所以“计划生育是中共作的最大的恶,而且将持续百年”
YouTube
方脸说:延迟退休来袭,我们这代人什么时候能退休?从数据分析,当代人可能得退休年龄,65岁或许不是极限,70退休才有可能是我们的常态,最苦一代获将来袭!
00:00 延迟退休并非空穴来风
02:12 人口结构-赡养率问题
05:57 中国赡养率模拟-70岁退休可能才是出路
10:45 延迟退休可能得方式
17:12 如何看待延迟退休?
02:12 人口结构-赡养率问题
05:57 中国赡养率模拟-70岁退休可能才是出路
10:45 延迟退休可能得方式
17:12 如何看待延迟退休?