duangsuse::Echo
413 subscribers
3.85K photos
105 videos
574 files
5.15K links
duangsuse技术相干订阅
这是 @duangsuse 与技术有关的发布频道
duangsuse 的另外有 throws 闲杂频道
@dsuset
转载频道 @dsusep
duangsuse 有coding,github,gitlab帐号和bilibili帐号

极小可能会有批评zf的消息 如有不适可以退出

suse的小站:https://piped.stream
ps 另有别名 popf.rip
ʕ•̀ω•́ʔ✧ 🐶🍎🏠生死🐜
(>ω<)岂因祸福避趋之 一鿕
Download Telegram
#GitHub #tools 支持 commit 图片及保存 png 元数据的画图
#China #GitHub #Low 国内被驱逐歧视的「低端人口」对世界的认识就是这样,可惜了。 (被转发台不代表本频道立场)

补充:其实是钓鱼。 真爱国怎么会用像书单一样的排比句🌝
很难不资词👍

By:匿名投稿
#Github #九评早该封
#js #code [doge] 哈!手机上一次就写对了
const swap=(k,a,b)=>{ let va=a[k]; a[k]=b[k]; b[k]=va; },
hook=(o,op_tab)=>{
let old={};
for (let k in op_tab) { swap(k, old, o); let f=op_tab[k]; o[k]=function hooked(...args) {args.push(old); return f.apply(this, args)}; }
let attrs = Object.keys(op_tab);
function undo() { this.attrs.forEach(k => swap(k, old, o)); }
return {attrs, undo};
}

function add(a,b) {return a+b}
h=hook(window, {add: (a,b,old)=>{console.log(a);return old.add(a,b)}})

不过有个问题, 不能同时兼容 prototype ,没 bound
好耶!是元编程

const
swap=(k,a,b)=>{ let va=a[k]; a[k]=b[k]; b[k]=va; },
boundCopy=(!!Proxy)? (o,ks)=>self=>new Proxy({}, {get: (o1,k)=>o[k].bind(self)}) : (o,ks)=>self=>{ let bound={}; for (let k of ks) Object.defineProperty(bound, k, {get: ()=>o[k].bind(self)}); return bound; },
hook=(o,op_tab)=>{
let old={}, attrs = Object.keys(op_tab);
for (let k of attrs) { swap(k, old, o); let f=op_tab[k]; o[k]=function hooked(...args) {args.push(boundCopy(old, attrs)); return f.apply(this, args)}; }
function undo() { this.attrs.forEach(k => swap(k, old, o)); }
return {attrs, undo};
}


orig(this).fn 这样用:
let hooky = {
log(...ho) { hookAll(...ho, (...args,orig)=>{ console.log(args); let res=orig(this)[ho[1]](...args); console.log(res); return res; }); },
breakIf(p, ...ho) {},
stopIf(p, ...ho) {},
onValues(op, ...ho) {},
insts: {},
saveInstances(...ho) {}
}


妈耶…… 看来还是包装下比较好😓 这个代码不可能短

#GitHub 上找了半天最终发现 https://github.com/bnoguchi/hooks-jshttps://github.com/buddyspike/easy-intercept 是可以用的,另外还有三四个标准研究性的 intercept 和一大堆只能针对 XHR API 的🌚👍

https://github.com/search?p=4&q=JS+intercept&type=Repositories
你前端还是你前端,复用都懒得做🌝🤔

"JavaScript 能表达的程序最终都会被写出来"
前端娱乐圈
#php #js #web 双重傻逼就是傻逼两次。 第一次混淆 sql 代码和数据已经够弱智,第二次是暴露 http 不管传输层在应用层做脑残防护,三秒给你监听代码扬了。
https://github.com/w2sft/BrowserWAF #github #china #haha

“ 防自动化攻击: 如动画中,浏览器下方,开始时候密码输入框的id和name都为空,也就意味着通过识别元素id和name属性的方式,是无法被定位到的,那么也就无法进行自动赋值,也就无法进行暴力破解、撞库等攻击(burp嗅探重放式的除外)。

同时,注意有一个属性为hidden的input框。它是被随机插入在页面中的,这样也就可以防止使用xpath方式定位的攻击。

🌚???你还知道 xpath 啊,那你知不知道随机一个 <input hidden> 也能被自动过滤?
#github 雷神之锤
#Haha 十步口一人……千里不留行
2. #reveng N64 Fast3D 移植到OGL和DX3D
3. #opensource #github 🤔 封禁发行权…… 他是作者,但发行好像是社区问题……看到大佬就用的不在少数
#security #github #ai
1Password TOTP 网页右键-保留登录信息,再打开菜单,扫描二维码 就可添加2fa登录
OpenAI 有可能屏蔽或锁区 梯子 https://t.me/rynif/30302
lamda, palm, llama 架构里使用 SwiGLU,你会看到他的论文没解释为什么他非常适合&好用,因为作者也不清楚,反正发布了大家一起用
duangsuse::Echo
#py 周刊 #ts Mypy: 1.5 Mypy 是 Python 的静态类型检查工具,1.5 版本主要功能有: @overrride 、更灵活的 TypedDict(字面创建的 dataclass) 创建和更新、可显示错误代码的文档、改进了泛型函数的类型推断、__slots__ 的优化、步进 Python 3.12 #ai 整理和预处理pdf文件,让GPT访问 from bot import Retriever, llm_reply #backend 用 numpy, 线程池 优化数学区间求和函数…
#cpp #bilibili std::lists 谈恋爱, BV1ak4y137vf 音源

#github #ai bot Sweep: 用提issue的方式让AI生成项目文件、添加功能

#web #security Dashy 的作者开源 🕵️ Web Check:网站信息收集器 官网

#life Little Big World, 壮观的无人机延时摄影、移轴摄影(边缘模糊)「小人国大世界」的视频网站
将地球上最美丽、最有趣的地方变成了可爱的微型模型,里面有大量的国外不同城市的这种微型模型视频,很适合欣赏。

#tool Mac: “ • 三等奖(8 名):赤友数据恢复 Mac 一年版 / 赤友右键超人 一年版 / 熊猫吃短信 2 一年版 / 优效日历 一年版 / Air Explorer Pro 一年版 / Manico 专业版

#apple 作品🏆 SixD (SwiftUI & Interaction Design)的作者开发这款App来源于他自己的一个愿景:「创造一个设计师与开发者之间的桥梁」。

1️⃣ 通过交互式指南学习 UI 设计基础:
你能扮演一个 UI 设计师,帮助开发者 Nina 来完善论坛 App。这样,也能学习到很多 UI 相关的知识,如改变背景颜色、强调颜色,如何对齐元素,改变图标,改变字体设置、层级、间距,圆角、边距。

2️⃣ 在 SwiftUI Lab 中学习每个元素(例如颜色、字体、组建布局、导航、选择器等内容)的使用和 SwiftUI 代码
除此之外,App 还支持学习 Apple 的一些偏门 API 们的使用,例如 AR Quick Look,MapKit,PencilKit 等内容。
#github #js #news Babel 所用下载量平齐JQ的 CoreJS (用于解决 cani.use) 的全职维护者 zloirock.ru 收入腰斩很穷了,只有700刀每月还要养家
.非常好笑的是 fetch() 这单个的 polyfill 都比它的star多,而 NPM, Tidelift 自己都在使用CoreJS,但他们对全职工作视若无睹

呃,我看了一下他的 btoa(bytes) 实现 ,他的代码质量超过GPT3了 ;但是除了许多大企业的员工看到 npm install 上求捐款的消息('Also, ..is looking for a good job -) ' )赶来骂他,就连向polyfills提需求的 TC39 也在排挤他

他悲剧的缘由和 fakerjs 一样是突发事故,他开车撞到了醉酒爬在街上的行人,因此不得不努力挣钱
成千上万的开发人员侮辱他,以强调作者无权向他们寻求任何钱或精力上的帮助。

他真的好敬业,literally 每天都在交代码(尽管文章是今年2月发的,现在也没撤下)
可因为写的东西是标准库,在供应链上太早了, 又被 babel-polyfill 抢了名字,被人当作最不负责任的捣蛋鬼🤓和勒索者 😅

“(质量越高,支持越少) 错误不都会立即得到修复吗?那就是一个小库”
“polyfill 并不会影响到ESNext提案,TC39不知道为啥要关注它们”
“放弃你的开源,你这是纵容自己,请回到正常的工作。谁谁谁只做了一年程序员,他对开源几乎一无所知,他每天只工作几个小时,已经赚的是你的好几倍。”
“我不会以每小时2美元的价格为项目工作。我愿意继续以每小时至少80美元的价格,这正是eslint团队成员的收费标准。”
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验证, $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/cdrom
Ubuntu 的是 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 都不好意思了