#recommend #cs #dalao https://notes.tansongchen.com/中日韩统一表意文字/ UniHan
https://www.zhihu.com/question/596405042/answer/3568948103 Unicode NFC #py 全半角 兼容
#tool https://github.com/garywill/cc-visualize OpenCC 汉字同义可视化
https://unvcode.librian.net/ 同形异体 防和谐 高仿号 (非 hanguel filler)
为什么信息学大佬,还这么有品呢?
https://www.zhihu.com/question/596405042/answer/3568948103 Unicode NFC #py 全半角 兼容
#tool https://github.com/garywill/cc-visualize OpenCC 汉字同义可视化
https://unvcode.librian.net/ 同形异体 防和谐 高仿号 (非 hanguel filler)
为什么信息学大佬,还这么有品呢?
#tool #py https://github.com/pyheight/ttk-file-explorer
TkGUI: Declarative tkinter wrapper for Python, features quick prototype & codegen
https://github.com/duangsuse-valid-projects/TkGUI
TkGUI: Declarative tkinter wrapper for Python, features quick prototype & codegen
https://github.com/duangsuse-valid-projects/TkGUI
#tool #rust #py https://www.fxzhihu.com/question/512163948/answer/3318733849
https://www.zhihu.com/question/512163948/answer/2315470298
- viztracer 提供了 DevTools profile 页 #again
调试: 嵌入代码
https://quasiquotes.readthedocs.io/en/latest/#the-c-quasiquoter
https://arthurchiao.art/blog/how-does-ltrace-work-zh/
https://arthurchiao.art/blog/write-your-own-virtual-machine-zh/#82-输出单个字符output-character 手写 qemu..?
https://www.zhihu.com/question/512163948/answer/2315470298
- viztracer 提供了 DevTools profile 页 #again
调试: 嵌入代码
def goto(line):
breakpoint(commands=['n', f"j {line}", 'c'])
https://quasiquotes.readthedocs.io/en/latest/#the-c-quasiquoter
https://arthurchiao.art/blog/how-does-ltrace-work-zh/
https://arthurchiao.art/blog/write-your-own-virtual-machine-zh/#82-输出单个字符output-character 手写 qemu..?
duangsuse::Echo
#video #acg 《罗小黑战记》番外《晚安喵》中文彩色字符画版剪辑 [相关信息]
https://www.fxzhihu.com/question/4598614819/answer/37786364436 #bilibili 炒冷饭
我语文能力不好, 这个答主说的在理, TM 两行代码的东西,矩形片map成单字符像素的,Linux 小白都会玩(cowsay-alike),你抄抄抄……
我教 #py 都不敢写这么简单的例子,这垃圾功能也懒得用C凑字数
😅最崩不住的是,这撕还摁造了个高材理工男人设,git clone 都不会,MIT都不懂,贡献代码?也是奇葩
#code heart ASCII ❤️
https://asciinema.org/a/95472 ANSI粒子
https://zhangshuqiao.org/2018-05/有趣的Linux命令行工具/ 有天气预报
#tool curl -4 http://wttr.in
我语文能力不好, 这个答主说的在理, TM 两行代码的东西,矩形片map成单字符像素的,Linux 小白都会玩(cowsay-alike),你抄抄抄……
我教 #py 都不敢写这么简单的例子,这垃圾功能也懒得用C凑字数
😅最崩不住的是,这撕还摁造了个高材理工男人设,git clone 都不会,MIT都不懂,贡献代码?也是奇葩
#code heart ASCII ❤️
import os, cv2, time
from numpy import*
Nm=array; mix=interp
sh=lambda s: os.popen(s).read()[:-1]
def heart(P, k=.8):
t = mix(mod(iTime, k), [0, k], [0.3, k]) # Heartbeat
r = (P[1] - power(abs(P[0]), t))**2 + P[0]**2 - 1.0 # Grayscale function
return where(r < 0.3, mix(-r, [0, 0.3], [1, 4]), r)
grays = Nm([*" .-:", '\x1B[1;31m=\x1B[0m', *"+*%@#"])
GL=lambda w,h: Nm(meshgrid(linspace(0,1, w), linspace(1,0, h)))
def drawBW(g, wh=flip(int32(sh('stty size').split())), bg=grays):
a=(1-g(GL(*wh)*5-2-sin(iTime)))*256 if callable(g) else cv2.cvtColor(cv2.resize(g, wh) , cv2.COLOR_BGR2GRAY)
b=int8(mix(a, (0,256), (0,len(bg)-1) ))
print('\x1B[0;0H', '\n'.join(''.join(y) for y in bg[b] ))
try: #.: ipy -i
@get_ipython().pt_app.key_bindings.add('c-k')
def cropBW(F5):
g=cv2.imread(sh('zenity --file-selection'))
drawBW(g)
except:
for iTime in (x/100 for x in range(0, 600)): drawBW(heart); time.sleep(1/60)
https://asciinema.org/a/95472 ANSI粒子
https://zhangshuqiao.org/2018-05/有趣的Linux命令行工具/ 有天气预报
#tool curl -4 http://wttr.in
FxZhihu / Fixup Zhihu
如何看待哔哩哔哩up“老师好我叫何同学”最新视频无授权使用开源项目的代码? - @巨蜥拉卡 | FxZhihu
可能有很多吃瓜群众不知道这事儿的魔幻程度,这里专门解释一下这个ASCII-Generator的技术含量,业余python爱好者,大家看个乐子不要深究。 做ASCII字符画的形式有很多种,其中通过量化图像然后用不同“浓度”的字符来代替黑白对比度的这种方式,根据Wikipedia的说法 [1],是1960年代就有的事儿: [图片] 具体流程其实猜也能猜的到:图像是像素构成的,我把图像转成黑白的,分成若干小块,每个小块的像素亮度求个平均值,亮度高的,用点(.…
https://tttttt.me/solidot/25742 #linux #py #news 幽默狗官 🤡
>
Linux“现在就像是大型科技公司”——我 Kent Overstreet 不同意。Linux 25 年前的诞生并没有得到大厂的帮助。 科技公司来来去去,Linux 会比它们活得更久。它们只是过客。
面向社区、面向用户,培育工程文化。 靠威胁某人的职业生涯来让他们遵守规定?
用于开发人员之间交互的 CoC(Code contract) 是一 回事,但是在提供一个通用平台(即 Python 软件包存储库、LKML 讨论串)时,审查制度就变得更加值得怀疑,而绕过流程来删除它显然是越权行为!
没有任何透明度或公开声明 - 只是 Linus 的私人通知,根据 CoC,我的PR不会进入 6.13
几乎普遍情况下,只要出现权力真空,首个候补都是混帐——过于暴力,因为这就是他们掌权的方式。CoC 委员会如雨后春笋般涌现,以令人感到小题大做的方式掌握着「生杀大权」。
一种轻蔑的文化,想用宗教化的尊重屏蔽、带歪技术讨论的文化,比单纯的口水战更有害。
>Steve Jobs : 我喜歡和聰明人一起共事,因為完全不用考慮他們的自尊心。 你的時間有限,因此不要浪費在為別人而活上。要求知若渴,虛心若愚。
技术内容,还涉及 #rust kmalloc。 mm 维护者对错误处理迷恋的「技术政确」阻止了巧妙的"alloc_hooks(realloc)"内存分配分析,年前也妨碍他贡献单模块动态开关 printk() 调试调用: 👎
>内核现在有一项称为内存分配分析的功能:如果启用它,cat /proc/allocinfo 中将显示一个新文件,该文件按调用点列出分配的内存总量。这是我多年前自己构思出来的,而且它的开销很低:比 memcg 便宜,便宜到足以让分发内核默认启用。这很棒:我真的很喜欢那些成本低廉、可以一直打开的调试功能,这样用户就可以四处探索并发现一些东西(引起开发人员的兴趣!)
文尾他提到 #py https://www.patreon.com/posts/116412665#:~:text=happened%20in%20the%20Python%20community
>
https://discuss.python.org/t/for-your-consideration-proposed-bylaws-changes-to-improve-our-membership-experience/55696/18
Tim Peters 是 Timsort [1] 的发明者,Timsort 是 Python、Java、JavaScript(V8)和 Swift 中使用的内置排序算法。
提到诽谤是在讨论删除名为“slut”的 PyPI 包时。Tim 没有直接使用这个词,而是说: 因为它的文档反复使用了 Dan Akroyd 用来形容 Jane Curtin 的词(SNL)
他的回应似乎很正常,根本不应该被禁言。这几乎是卡通式的权力滥用。
应该有一个 SNL 西部小品,其中强盗和牛仔像 FOSS 软件开发人员一样行动和互动,围绕一个主题“同意我的社会框架并按我说的做,否则我就杀了你!”
>
Linux“现在就像是大型科技公司”——我 Kent Overstreet 不同意。Linux 25 年前的诞生并没有得到大厂的帮助。 科技公司来来去去,Linux 会比它们活得更久。它们只是过客。
面向社区、面向用户,培育工程文化。 靠威胁某人的职业生涯来让他们遵守规定?
用于开发人员之间交互的 CoC(Code contract) 是一 回事,但是在提供一个通用平台(即 Python 软件包存储库、LKML 讨论串)时,审查制度就变得更加值得怀疑,而绕过流程来删除它显然是越权行为!
没有任何透明度或公开声明 - 只是 Linus 的私人通知,根据 CoC,我的PR不会进入 6.13
几乎普遍情况下,只要出现权力真空,首个候补都是混帐——过于暴力,因为这就是他们掌权的方式。CoC 委员会如雨后春笋般涌现,以令人感到小题大做的方式掌握着「生杀大权」。
一种轻蔑的文化,想用宗教化的尊重屏蔽、带歪技术讨论的文化,比单纯的口水战更有害。
>Steve Jobs : 我喜歡和聰明人一起共事,因為完全不用考慮他們的自尊心。 你的時間有限,因此不要浪費在為別人而活上。要求知若渴,虛心若愚。
技术内容,还涉及 #rust kmalloc。 mm 维护者对错误处理迷恋的「技术政确」阻止了巧妙的"alloc_hooks(realloc)"内存分配分析,年前也妨碍他贡献单模块动态开关 printk() 调试调用: 👎
>内核现在有一项称为内存分配分析的功能:如果启用它,cat /proc/allocinfo 中将显示一个新文件,该文件按调用点列出分配的内存总量。这是我多年前自己构思出来的,而且它的开销很低:比 memcg 便宜,便宜到足以让分发内核默认启用。这很棒:我真的很喜欢那些成本低廉、可以一直打开的调试功能,这样用户就可以四处探索并发现一些东西(引起开发人员的兴趣!)
文尾他提到 #py https://www.patreon.com/posts/116412665#:~:text=happened%20in%20the%20Python%20community
>
https://discuss.python.org/t/for-your-consideration-proposed-bylaws-changes-to-improve-our-membership-experience/55696/18
Tim Peters 是 Timsort [1] 的发明者,Timsort 是 Python、Java、JavaScript(V8)和 Swift 中使用的内置排序算法。
提到诽谤是在讨论删除名为“slut”的 PyPI 包时。Tim 没有直接使用这个词,而是说: 因为它的文档反复使用了 Dan Akroyd 用来形容 Jane Curtin 的词(SNL)
他的回应似乎很正常,根本不应该被禁言。这几乎是卡通式的权力滥用。
应该有一个 SNL 西部小品,其中强盗和牛仔像 FOSS 软件开发人员一样行动和互动,围绕一个主题“同意我的社会框架并按我说的做,否则我就杀了你!”
Telegram
Solidot
Linux 6.13 将拒绝所有来自 bcachefs 作者的合并请求
2024-11-25 11:57 by 奇迹之夏
根据行为准则委员会的建议,Linux 基金会技术顾问委员会决定在 Linux 6.13 开发周期内拒绝所有来自 bcachefs 文件系统作者 Kent Overstreet 的合并请求。因为逞口舌之快,bcachefs 在内核的未来面临着不确定性。起因是今年九月初,Overstreet 在内核开发者邮件列表上人身攻击了 SUSE 的开发者 Michal Hocko,他建议对方检…
2024-11-25 11:57 by 奇迹之夏
根据行为准则委员会的建议,Linux 基金会技术顾问委员会决定在 Linux 6.13 开发周期内拒绝所有来自 bcachefs 文件系统作者 Kent Overstreet 的合并请求。因为逞口舌之快,bcachefs 在内核的未来面临着不确定性。起因是今年九月初,Overstreet 在内核开发者邮件列表上人身攻击了 SUSE 的开发者 Michal Hocko,他建议对方检…
#os #go #py 协程 https://lucumr.pocoo.org/2024/11/18/threads-beat-async-await/
作者似乎想用Scratch里没有await传染性的例子,说明return的自动回调化是骗局。 说真的,JVM和QuickJS应该有「有栈协程」,但程序员对它的控制太低。
IO异常耗时,应当被最小化、隔离,是很难理解的事情吗?
https://editor.p5js.org/p5/sketches/Image:_Load_and_Display_Image #code
回应式(Reactive)只是给你自己管理单核while(1)的机会,挂起到函续是为了灵活复用触屏鼠标等流资源,调用栈=函续链表,yield=将caller的(retAddr捕获到.then)的空函数。 前者是魔法是驱动,后者是回调,是数据值。
回应式>卡线程,就像@装饰器>C宏 ,默认final>默认mut ,理所当然的严谨,不留模糊的余地。 trust me, Thread.ofVirtual() 和点号前面那货有代沟! 60年代为编译器的,竟比y2k为UNIX的API强。
至于async所“严重”缺乏的waitGroup,实际轻得多,而且 Promise.all([]) 能返回[], try{} 可以捕获内部await, Thread.join() 却啥都没定义,这安全吗!
他们只是看不惯JSer们对「OS后端的专利」有所突破,打破了NonlocalJump的魔法次元壁,把IO、设备流信号、缓冲区为己所用,突破了轮询+回调地狱的框架而已。
作者似乎想用 neverSettle = wait4(f=> 'never f!') 证明回调的依赖倒置是错误的,是泄漏的,但谁都知道 longjmp()和fork() 坑更多、更慢。不知哪天设备信号或驱动syscall就把UI卡死了!
因为就连Linux长年的八股“非惊群”evpoll,也是DOM「Reactive富二代」玩剩下的。
他应该想说 https://lotabout.me/2020/Back-Pressure :
60fps达不到,是卡帧or丢帧; 网卡流丢了几个包,是等待TCP or 佛系UDP; cat|less 的端点SIGHUP了,由谁持有cat已print\n的行?或是让cat卡在SYS_write(),甚至直接panic?
对N:M task来说,线程池里每个Worker,比如它们的write/sendto(),都有瓶颈。这就像在2核CPU上 make -j8 ,最终不是慢在切来还去,就是内存占满。 用户态调用栈(async回调) 忽视了N资源M监听反会变慢。
作者批评了 asyncio writer.drain() 的不默认,和超过SQL瓶颈数量的并发(缺乏 CapacityLimiter API)
作者建议,在 HTTP 中,您可以发出 503,它还可以携带retry-after标头,告诉客户端何时重试
其实,受到速率异步问题困扰的不仅仅是 async await 代码。 例如, Dask是数据科学程序员使用的非async Python 并行库,仍有因拥塞而缓冲区耗尽的例子
值得一提的是,作者引用这篇把 go func() 证明为goto的Rustacean文。 这种思想(其实就是 Thread.join)也在 py async with: 和 kt coroutineScope{} 里
https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
https://docs.rs/async_nursery/latest/async_nursery/#basic-example
作者似乎想用Scratch里没有await传染性的例子,说明return的自动回调化是骗局。 说真的,JVM和QuickJS应该有「有栈协程」,但程序员对它的控制太低。
IO异常耗时,应当被最小化、隔离,是很难理解的事情吗?
https://editor.p5js.org/p5/sketches/Image:_Load_and_Display_Image #code
setup=(
cat=loadImage('assets/moonwalk.jpg'),
P=createVector(width,height).div(2)
)=> {
createCanvas(720, 400);
draw=async()=>{
for(; P.x<2000; P.x+=5, await sec(.1)) {
clear(); image(cat, P.x%width,P.y);
}
}
'BAD'?? (draw=()=>{
if(P.x<2000) P.x+=5, setTimeout(draw,100)
clear(); image(cat, P.x%width,P.y);
//如果用伪递归做 for x in range(0,2k) 这很自然!其实
})
}
wait4=f=>(...a)=>new Promise(ok=>f(...a, ok))
sec=wait4((n,ok)=>setTimeout(ok,n*1000))
回应式(Reactive)只是给你自己管理单核while(1)的机会,挂起到函续是为了灵活复用触屏鼠标等流资源,调用栈=函续链表,yield=将caller的(retAddr捕获到.then)的空函数。 前者是魔法是驱动,后者是回调,是数据值。
回应式>卡线程,就像@装饰器>C宏 ,默认final>默认mut ,理所当然的严谨,不留模糊的余地。 trust me, Thread.ofVirtual() 和点号前面那货有代沟! 60年代为编译器的,竟比y2k为UNIX的API强。
至于async所“严重”缺乏的waitGroup,实际轻得多,而且 Promise.all([]) 能返回[], try{} 可以捕获内部await, Thread.join() 却啥都没定义,这安全吗!
他们只是看不惯JSer们对「OS后端的专利」有所突破,打破了NonlocalJump的魔法次元壁,把IO、设备流信号、缓冲区为己所用,突破了轮询+回调地狱的框架而已。
作者似乎想用 neverSettle = wait4(f=> 'never f!') 证明回调的依赖倒置是错误的,是泄漏的,但谁都知道 longjmp()和fork() 坑更多、更慢。不知哪天设备信号或驱动syscall就把UI卡死了!
因为就连Linux长年的八股“非惊群”evpoll,也是DOM「Reactive富二代」玩剩下的。
他应该想说 https://lotabout.me/2020/Back-Pressure :
60fps达不到,是卡帧or丢帧; 网卡流丢了几个包,是等待TCP or 佛系UDP; cat|less 的端点SIGHUP了,由谁持有cat已print\n的行?或是让cat卡在SYS_write(),甚至直接panic?
对N:M task来说,线程池里每个Worker,比如它们的write/sendto(),都有瓶颈。这就像在2核CPU上 make -j8 ,最终不是慢在切来还去,就是内存占满。 用户态调用栈(async回调) 忽视了N资源M监听反会变慢。
作者批评了 asyncio writer.drain() 的不默认,和超过SQL瓶颈数量的并发(缺乏 CapacityLimiter API)
作者建议,在 HTTP 中,您可以发出 503,它还可以携带retry-after标头,告诉客户端何时重试
其实,受到速率异步问题困扰的不仅仅是 async await 代码。 例如, Dask是数据科学程序员使用的非async Python 并行库,仍有因拥塞而缓冲区耗尽的例子
值得一提的是,作者引用这篇把 go func() 证明为goto的Rustacean文。 这种思想(其实就是 Thread.join)也在 py async with: 和 kt coroutineScope{} 里
https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
https://docs.rs/async_nursery/latest/async_nursery/#basic-example
Armin Ronacher's Thoughts and Writings
Playground Wisdom: Threads Beat Async/Await
Musings about async await again and why I think virtual threads
#py #code #learn 协程
https://gist.github.com/BeautyyuYanli/0a6891d8959bcf06b5cd2e5bd30ef3d1
……利用了py本身就支持 yield&return 而已。 其实和 https://www.ruanyifeng.com/blog/2015/05/co.html 一模一样,加了个 await(1)不回调优化
如果编译器愿意,它也可以在有 await() 时自动把def变async,甚至用类型隐藏await,只是这样就不一致了
*仅仅对pyjs有效,因为它们的参数数量是可修改的, jvm的固定为class{}里的方法签名
besides, await 'val' 在js里本身就是可行且优化的
把 yield* fRED() 当await也是co.js的发明
https://gist.github.com/duangsuse/3674d747ec5ea8ca510add26295e5a7d
>没错,async就是允许你setTimeout(retAddr,0s)并return的空函数,你们叫它yield或await。
这样一切回调地狱都能用 await new Promise(ret=> timers.push(1s,ret)) 解决,不是吗?
能捕获当前语句/算式号为变量的(ret)叫函续。等返回值卡线程,if分1段执行不完,就必须用 div(10,5,ok), div.bind(10,0)(ok,err) 的回调链表代替调用-返回栈
#algorithm 以前的
https://gist.github.com/BeautyyuYanli/0a6891d8959bcf06b5cd2e5bd30ef3d1
……利用了py本身就支持 yield&return 而已。 其实和 https://www.ruanyifeng.com/blog/2015/05/co.html 一模一样,加了个 await(1)不回调优化
如果编译器愿意,它也可以在有 await() 时自动把def变async,甚至用类型隐藏await,只是这样就不一致了
*仅仅对pyjs有效,因为它们的参数数量是可修改的, jvm的固定为class{}里的方法签名
besides, await 'val' 在js里本身就是可行且优化的
把 yield* fRED() 当await也是co.js的发明
https://gist.github.com/duangsuse/3674d747ec5ea8ca510add26295e5a7d
>没错,async就是允许你setTimeout(retAddr,0s)并return的空函数,你们叫它yield或await。
这样一切回调地狱都能用 await new Promise(ret=> timers.push(1s,ret)) 解决,不是吗?
能捕获当前语句/算式号为变量的(ret)叫函续。等返回值卡线程,if分1段执行不完,就必须用 div(10,5,ok), div.bind(10,0)(ok,err) 的回调链表代替调用-返回栈
#algorithm 以前的
from itertools import accumulate,product as X
def generate(op, init, stop):
acc = init
while acc != stop: yield acc; acc = op(acc)
list(accumulate("是这样呢", lambda s,x: s+x))
_ == ['是', '是这', '是这样', '是这样呢']
list(generate(lambda s: s[1:], "不可能啊", ""))
_ == ['不可能啊', '可能啊', '能啊', '啊']
xz= X(*(s.split() for s in ["可乐 雪碧", "好喝 难喝"] ))
[*xz] #二层for, O(nn)
[('可乐', '好喝'), ('可乐', '难喝'), ('雪碧', '好喝'), ('雪碧', '难喝')]
permutations "abc" -> ["abc", "acb", "bac", "bca", "cab", "cba"]
//a是空数组,把每元素x放在a[i], i<n(a) 上,剩下的i同理
permut=a=> n(a)? a.flatMap((x,i)=> permut(a.toSpliced(i,1)).map(X=>[x, ...X]) ) : [[]]
n=a=>a.length
Gist
cwaitable.py
GitHub Gist: instantly share code, notes, and snippets.
yihong0618 和朋友们的频道:
#selected #py #ce
https://youtu.be/ltCNkcl9HGI
duangsuse:
省流: py 3.11~3.13 有三种解释
1. {.0: iter, k:0}
2. {k:0}
3. segfault
1. 里的'.0'是k=new cellvar(0) ,相当于创建闭包的def所占用的 this.0
也可能是因为[for]被优化外提为语句,语法糖展开创建的yield状态机
2. 是最好理解的,因为 for (local k) in 0 最先执行
3. 可能是因为(upval k) 被提前回收造成的。在js里 var k 的声明提前早被禁止了,py也有 nonlocal k 才能左值捕获的要求,不过 for x in .. 不涉及scope也是一种八股文题目
哦。。 1. 里的 .0==old_k
这正是3. 的for (local k) in 不新建scope造成的,因为 [for] 没有for的这个问题……
3. 报错是因为[for] inline 优化的bug,k 其实是 nonlocal,但[for]写入时改变了这层包装没更新meta,然后反射就挂了
还真是…… 屎,全用filterMap栏目答不就没这些破事
还真别说,用lambda建模scope可以实现 伪递归、同签名调用优化、在无需跳转时inline 等等,根本不会有py贪便宜学excel造成的 [for] for 语义差异和bug
#selected #py #ce
https://youtu.be/ltCNkcl9HGI
duangsuse:
省流: py 3.11~3.13 有三种解释
1. {.0: iter, k:0}
2. {k:0}
3. segfault
1. 里的'.0'是k=new cellvar(0) ,相当于创建闭包的def所占用的 this.0
也可能是因为[for]被优化外提为语句,语法糖展开创建的yield状态机
2. 是最好理解的,因为 for (local k) in 0 最先执行
3. 可能是因为(upval k) 被提前回收造成的。在js里 var k 的声明提前早被禁止了,py也有 nonlocal k 才能左值捕获的要求,不过 for x in .. 不涉及scope也是一种八股文题目
哦。。 1. 里的 .0==old_k
这正是3. 的for (local k) in 不新建scope造成的,因为 [for] 没有for的这个问题……
3. 报错是因为[for] inline 优化的bug,k 其实是 nonlocal,但[for]写入时改变了这层包装没更新meta,然后反射就挂了
还真是…… 屎,全用filterMap栏目答不就没这些破事
还真别说,用lambda建模scope可以实现 伪递归、同签名调用优化、在无需跳转时inline 等等,根本不会有py贪便宜学excel造成的 [for] for 语义差异和bug
YouTube
这五行Python程序的结果,谁都不可能猜得到
短短的五行程序都猜不到结果?这里面可有不少学问。从PEP 709到PEP 667,多少个改动凑到一起才触发了这个特殊的案例?
duangsuse::Echo
「只需更新1个矩形」 这样的批评或许很空洞,但淘汰了Atom编辑器的 VSCode Monaco 编辑框呢? F12一下,你会发现别说 CSS.hilight 了,它甚至没用DOM Scroll,而是拿js更新style=transform !
🤣 码聋魅力时刻|面向运气编程
明明是开源软件,却添加私货、防裁员代码
哪个老师教的?总觉得自己比比最广泛的框架还聪明 #statement
看到这种 API set 就想吐,真是不如AI写
我可能该为此抱歉,因为这是 #plt 和《编译原理》的傲慢造成的过度工程风气
一个个比DOM和SVG滤镜低级的体系,却写的比 #py #ai 更冗长,甚至看不出来哪些功能点是低频的
Guido 的Python真是笨到了点子上
明明是开源软件,却添加私货、防裁员代码
哪个老师教的?总觉得自己比比最广泛的框架还聪明 #statement
看到这种 API set 就想吐,真是不如AI写
我可能该为此抱歉,因为这是 #plt 和《编译原理》的傲慢造成的过度工程风气
一个个比DOM和SVG滤镜低级的体系,却写的比 #py #ai 更冗长,甚至看不出来哪些功能点是低频的
Guido 的Python真是笨到了点子上
duangsuse::Echo
1.5h
程序员写这样一个简单的逻辑有多难: #dev #cg
[0 0 1 0 2 3 5 ..] -takeFirsts: it==0
->[0 0]
无非就是在y轴上做模式匹配,算个矩形高度
- 没想到吧,视频px<屏幕px
- 没想到吧,你以为顶上算对了,它才是算错的那个。 dpi的bug正好弥补了这一部分……
- 没注意吧,不是因为视频x=某个值时黑色扎进去了,AI写的是横灰度平均
- 而这正是bug的2个根源之一…… 😑
- 搞了一个小时,四个黑边只支持检测俩, 还会被白水印欺骗😅😅
- https://tttttt.me/dsuse/18702 #py 5行烂苹果再次完胜js
我在想,如果我真的对canvas什么都不懂,还要再卡多久。 hf.co 的新AI确实聪明,他也没聪明到提醒我坐标系变换这回事……😅
vibe 个什么啊
[0 0 1 0 2 3 5 ..] -takeFirsts: it==0
->[0 0]
无非就是在y轴上做模式匹配,算个矩形高度
- 没想到吧,视频px<屏幕px
- 没想到吧,你以为顶上算对了,它才是算错的那个。 dpi的bug正好弥补了这一部分……
- 没注意吧,不是因为视频x=某个值时黑色扎进去了,AI写的是横灰度平均
- 而这正是bug的2个根源之一…… 😑
- 搞了一个小时,四个黑边只支持检测俩, 还会被白水印欺骗😅😅
- https://tttttt.me/dsuse/18702 #py 5行烂苹果再次完胜js
我在想,如果我真的对canvas什么都不懂,还要再卡多久。 hf.co 的新AI确实聪明,他也没聪明到提醒我坐标系变换这回事……😅
vibe 个什么啊
小红书一瞥
我承认Python水平不如战鹰🤡 #编程 #Python #围棋
#py #FP 入演算 挺简单的介绍..
https://gist.github.com/vakila/3d5cebaebf01c4c77b289b9a0388e3c8
栏目答是「任何语言代码」背后的核心, 而编程的核心是自顶向下的组合代换,就像从[原子Atom]、生物学,到医学和人。 forif, 对应列表处理的 filterMap 都可以用"她🐑"实现!
ps. 图灵完备和 Turing Award 无关,意思是可以把 QEMU.org 移植到某个编程语言里面去,但没有声音图形和点按设备。 这显然不是评价语法-语意表现力和融恰度的指标。
#tool #recommend
https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks 很好玩的 awesome-list !
#learn 纪念我在7年前的「编程入门」博客
https://gist.github.com/duangsuse/519411ab618ee57350ee2df93d33f58e
https://gist.github.com/vakila/3d5cebaebf01c4c77b289b9a0388e3c8
栏目答是「任何语言代码」背后的核心, 而编程的核心是自顶向下的组合代换,就像从[原子Atom]、生物学,到医学和人。 forif, 对应列表处理的 filterMap 都可以用"她🐑"实现!
data🐑𝛌 栏目答 = 算式Sexpr |
Sym | Abst [Sym] 栏目答 | Args 栏目答 [栏目答] — ({? (rand) exit quit} 1) 是有效的,不用 (..).call(,1)
data Sexpr = Ln [Sexpr] | Int | Str | ... # 非Line即Atom
有别于计算器的关键点是「Sym的地址」。它不能是全局表的"key",而是类似AST树洞、 x=await,可以放东西,无论是否“求值”、等多久靠谁“求值”、在编译期或调用堆叠上“求值”,只配合SDK/ABI即可实现App的运行。 Abst是Absent的缩写,求值=对单步化简(reduce)的深先替换。
栏目答喜欢宣传 Currying(颗粒化传参 A=>B=>A+B) 和 “用回调层数编码数字”,但那只是数学家的把戏。 也有人把第一层参数 (A) 称为this.A或nonlocal A ,那很有价值。官方翻译是 free vars, unbound 或 closure (module 私有)
栏目答一般用于代数(组合逻辑),它和无语句函数是等效的 (整个 callgraph /API 都不能有语句和{基本块}!因此,全局 vartree 也都没必要 let mut 了)。 JSON,XML loaddump, ...DSL 都可以用栏目答编写,有运行期/编译期template<> 的也可以! 😋
在 computation theory (类似WiFi vs 无线电理论) 上,栏目答并不太「图灵完全」 ,就像许多类型推理器,但它解决了仅为了沙箱化 while(1) 而多开线程的麻烦,越来越多工业语言在应用她。 死循环可以写 letrec 伪递归(调用 YCombinator polyfill 解决纯函数禁止全局赋值+取值自身的毛病)
f=栏目答 x: x+1
f=Abst(narg=1,nlet=0, [十(Arg$(1), Const(1)), ]) #, ...以(x+1)为参数继续调用
def Const(json)(stack): json
def Arg$(n=1)(stack): stack[-1][n]
def 十(A, B)(stack): A(stack)+B(stack) # jvm 直接把A,B默认bind到了求值栈上,这里写明,只是为了避免误解
十=(A,B)=> dumpOpcode('iadd', stack=>A(stack)+B(stack) ) # 协议的「语意」是用ID保证代码的跨端同一
@ https://tttttt.me/dsuse/21117
@ https://tttttt.me/dsuse/21179
@ https://tomstu.art/hello-declarative-world#functions-and-relations #sql 是关系式编程?
ps. 图灵完备和 Turing Award 无关,意思是可以把 QEMU.org 移植到某个编程语言里面去,但没有声音图形和点按设备。 这显然不是评价语法-语意表现力和融恰度的指标。
#tool #recommend
https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks 很好玩的 awesome-list !
#learn 纪念我在7年前的「编程入门」博客
https://gist.github.com/duangsuse/519411ab618ee57350ee2df93d33f58e
Gist
Anjana Vakil, "Mary had a little lambda", OSCON 2018 (https://conferences.oreilly.com/oscon/oscon-or/public/schedule/detail/67384)…
Anjana Vakil, "Mary had a little lambda", OSCON 2018 (https://conferences.oreilly.com/oscon/oscon-or/public/schedule/detail/67384) & EuroPython 2017 (https://youtu.be/7Bsf...
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
#py #aop 逆天 import spongepowered mixin sys.monitoring b23.tv/BV1TuKizyEPH 😅 😅
#py #aop https://tttttt.me/hyi0618/7777
从 3.7 开始的整个 gdb for python 支持 (libpython.py) 都可以直接重写了,那些基于栈搜索,寻找特定栈帧 _PyEval_EvalFrameDefault 的古代做法,将可以全部修改为基于 _PyRuntime 这个稳定 API。什么找不到栈帧、tstate/frame 变量被优化、被迫退化到从 rsp 开始暴力摸栈,的魅力时刻,全部扔掉!_PyRuntime 原地暴露所有线程的 tstate
既然 python --version 是稳定的获取 cpython 版本的 API,那 debugger 直接硬编码就行了
从 3.7 开始的整个 gdb for python 支持 (libpython.py) 都可以直接重写了,那些基于栈搜索,寻找特定栈帧 _PyEval_EvalFrameDefault 的古代做法,将可以全部修改为基于 _PyRuntime 这个稳定 API。什么找不到栈帧、tstate/frame 变量被优化、被迫退化到从 rsp 开始暴力摸栈,的魅力时刻,全部扔掉!_PyRuntime 原地暴露所有线程的 tstate
既然 python --version 是稳定的获取 cpython 版本的 API,那 debugger 直接硬编码就行了
duangsuse::Echo
可编程性就是从约定里来的
你们别看我经常写脚本,我的API思维没有被 #bash #py 带偏……🤔
给不懂开发的极客科普下「编程范式」的进化吧,比如说 C, Java, JS(Vue)和SQL
它们分别是 [面向过程POP] [面向对象OOP] [函数和关系式FP/Reactive]
#learn
三种范式,可以从语言学、指针宽度、类型广度 拆解比喻一下。
编程范式,就是看「如何把数据和代码绑在一起更好续写」? 实践上,语法和类型能够辅助思考。
Rust 是一个静态优化、支持预处理(码可揉)的OOP, 它的函数式能力不如pyJS,这是省略变量树GC的代价。
# 语言学: VSO,SVO,noVerb 🌐
以文件夹版本控制/网盘站 GitHub.com/:u/:repo 的 $ gh 工具为例
这个功能点所见即所得,那拿3种范式将其封装为函数。
坏处是无法管理多个账户,所以只能写写游戏脚本、按键精灵、爬虫。
很明显,这是因为账户和 $HOM/ 的配置文件耦合了,成为了 globalThis。把this配置参数化,我们不仅能多账号,还收获了json这种文档格式! C语言的 .o 对象,就缺乏局部键值,只有线程局部。
所以更OOP(但反直觉)的写法是:
OOP优秀的一点是调用链, Object也可以作为 context Subject 继续作联动(类似SQL JOIN)
不过,叠3层new就说明这框架不能用了,过度设计。
最后是FP,因为很多人高估了FP的语意,甚至用纯函数冗余来 “拉抬🐷价”,我要加个需求以彰显其意义:
login() 要支持OTP单次密码,而它必须在密码正确后才能输入,或者要多次重试…… 但 ()=>栏目答都能胜任:
FP对于 gh newRepo 这种业务也有加成,比如用 await Promise((ok,KO)=> callback=ok ) 自动回调化来避免嵌套的「闭包链表」,实现yield分块优化等等
假如,编程是让懒得点黑框框的人用电脑,元编程就是让看不懂花花代码的人用编程。 所以,编程范式的「组合穿搭」还是很重要的,并不是古生物学那样的冷门哲学
试想一下,如果就连框架作者、架构师用的语言和runtime你都知根知底, 你自己设计,或分析吐槽别人的作品,还困难吗? 基础领域并不是象牙塔,它与软件开发者的身心健康息息相关。
给不懂开发的极客科普下「编程范式」的进化吧,比如说 C, Java, JS(Vue)和SQL
它们分别是 [面向过程POP] [面向对象OOP] [函数和关系式FP/Reactive]
#learn
三种范式,可以从语言学、指针宽度、类型广度 拆解比喻一下。
编程范式,就是看「如何把数据和代码绑在一起更好续写」? 实践上,语法和类型能够辅助思考。
Rust 是一个静态优化、支持预处理(码可揉)的OOP, 它的函数式能力不如pyJS,这是省略变量树GC的代价。
# 语言学: VSO,SVO,noVerb 🌐
以文件夹版本控制/网盘站 GitHub.com/:u/:repo 的 $ gh 工具为例
gh login
gh new-repo $(rand).paradigm.org
这个功能点所见即所得,那拿3种范式将其封装为函数。
loginGh(id, secret): VO
newGhRepo(id): VSO
坏处是无法管理多个账户,所以只能写写游戏脚本、按键精灵、爬虫。
很明显,这是因为账户和 $HOM/ 的配置文件耦合了,成为了 globalThis。把this配置参数化,我们不仅能多账号,还收获了json这种文档格式! C语言的 .o 对象,就缺乏局部键值,只有线程局部。
gh=Gh.login(id,secret): SV
gh.newRepo: SVO
# 范式是跨语言的
(u= gh login root toor)=="gh badguy"
$u repo new (randProj)
这样才符合人类直觉: 不要光 call, 要 with 🥰
虽然他没有“优化掉”arg0(为全局 省字数),但因为全局是可以随便加的,class{} 键值是密封的,在开小号之外,我们又有了类型和补齐
所以更OOP(但反直觉)的写法是:
gh=Gh.new(id,secret): Snew
gh.Repo.new('jackass'): SnewO
Gh.static.setApiURL(): SgetsetO
这一条是不依赖登录的(静态函数)。
OOP优秀的一点是调用链, Object也可以作为 context Subject 继续作联动(类似SQL JOIN)
不过,叠3层new就说明这框架不能用了,过度设计。
最后是FP,因为很多人高估了FP的语意,甚至用纯函数冗余来 “拉抬🐷价”,我要加个需求以彰显其意义:
login() 要支持OTP单次密码,而它必须在密码正确后才能输入,或者要多次重试…… 但 ()=>栏目答都能胜任:
Gh.login(uid,secret, otp=> device._2fa.get(otp))
一般来说,FP 用户不会缺少对OOP的进阶理解,比如用 get(otp) 重载 db.otp.getKey(otp) 、用 atoi:Int=>[Int ValueError Mayfail],这种摘要性(或者说严谨)好的心智模型,而不是和JQ那样只懂起名和拼凑调用链的库一样。
Vue对单 ref() 多显示的理解也是靠起名无法实现的。
btw. 命名动词还是有意义的。 比如佐人经常区分「买」和「雇佣」,「赤字」和「借」,但事实上是一样的。 混淆视听会损失类比的空间。
FP对于 gh newRepo 这种业务也有加成,比如用 await Promise((ok,KO)=> callback=ok ) 自动回调化来避免嵌套的「闭包链表」,实现yield分块优化等等
# 指针宽度
指针就是超链接。 它的域名是你的内存,地址是一个64或32位的整数,有 rw, r, rx 三种经典鉴权段位。 对JVM和v8来说,并不是所有bit都用于标记一串byte元组(struct)的读写位置,至少x64上的void* 只有52个有效位。
C, Java, JS(Vue) 里本质上是指针(Any/interface{}类型) 的模型,信息量也不同。
C: 单个内存地址,比如x32就是2**32, 4G 随便存,x64就是天文数字 (但是没有意义,比如,连是 int, 普通struct, Umbrastr 都分不清,需要printf手写%d )
Java: this=data+funcs 双指针,把变量树和方法表存在一起,可以 override ,再比如用 args=Array[0:length] 取代 (argc,argv) 元组,也是头尾双指针
Vue: ref()= N个回调 多指针, 回调可用于赋值,可以随便组合数据与计算、业务逻辑;SQL外键同理,可以用于拆分表单,多处复用
# 类型系统
C: 基于sizeof,没有 range/str/list/kv(tuple set) 等(可变)容器, 没有 T::fun 等模块化
Java: 基于 obj.(type) ,类型存在于编译期和运行期,可以数据化(反射),可以像函数值字典的Builder一样写class{}
Vue: 因为领域不同,JS 更重视业务而不是可维护性。 类型只是IDE的工具,没有优劣,🤓 DOM 的宽广和稳固、框架的繁荣让JS无需类型即可安全高效
最后,在标志性「语言特性」上,自古以来是这样:
- biosC=x86nasm+函数和8种整数的超链接
- C=biosC+ld文件maps内存段+CPU分片 (作为"libc的JVM")
- PyJS=C+双指针和kw左值传参 [双指针fatPtr] ([len,] {type:}和{proto:{vtable}} {_树内硬链接refcount:0} 均占用16byte)
- FP=PyJS+单函数组合+正择解构再构 (谈UIUX框架,没有[轮询或卡线程pull]是evpoll&push、多监听取代不了的,只是,C的无闭包和while(1)死循环,禁止了回调链表新加异步栈)
假如,编程是让懒得点黑框框的人用电脑,元编程就是让看不懂花花代码的人用编程。 所以,编程范式的「组合穿搭」还是很重要的,并不是古生物学那样的冷门哲学
试想一下,如果就连框架作者、架构师用的语言和runtime你都知根知底, 你自己设计,或分析吐槽别人的作品,还困难吗? 基础领域并不是象牙塔,它与软件开发者的身心健康息息相关。