悲惨的起因,只是因为在 GitHub 上看到别人有用 Python+Pillow 写这个:
https://github.com/FerryYoungFan/SimpleTextMontage
虽然数学不好,对某些关系不那么扁平的数据处理也会非常吃力的 duangsuse 就头脑发热地想:
『这么简单的程序,我怎么可能不会写?我一定要写出来看看』
结果就杯具…… 😭 不过还是有一点收获,就是我学会了如何用 color average 插值写位图 scale 算法
虽然花了我至少 6 个小时的时间才完成到可以生成图片(本来应该只要一个小时,可是被 argparse 坑了…… 我不该一上来就填那么多参数),但感觉也还可以,而且我没有在任何关键问题上查资料,也没有看太多次 help
学习还是有效果的,毕竟我学会了这些 API:
我的 Gist 上有 Kotlin 字符画 ASCII Art 生成器的源码
看了 FerryYoungFan 的版本,10:52-11:27 花了半个多小时,好像不是提前写好了的,唉
算法上,除了
不过设计上,没有扣像、 (keyColor, keyThres, keyRatio) 、自动渐变的背景色 (刚才我以为 count avgcolor 是拿来判断背景色的…) 和 xy padding
另外 (keyColor, keyThres), keyRatio 我还是会写的,之前的 Kotlin ASCII Art 就用到了 filter 色值的算法;只不过这个是按照 abs 符合要求色块数目来取舍是否生成文字
如果我使用高效的 Numpy/Pillow 内建函数,而不是我手动的 average 插值 scale 算法(Montage.clippy) 的话,就可以拿来处理视频(否则太慢了,处理不过来),实际上 B 站也有一个罗小黑战绩《晚安喵》的这种视频,有心人不妨试试重构。
#Python #tools #DIP
https://github.com/FerryYoungFan/SimpleTextMontage
虽然数学不好,对某些关系不那么扁平的数据处理也会非常吃力的 duangsuse 就头脑发热地想:
『这么简单的程序,我怎么可能不会写?我一定要写出来看看』
结果就杯具…… 😭 不过还是有一点收获,就是我学会了如何用 color average 插值写位图 scale 算法
虽然花了我至少 6 个小时的时间才完成到可以生成图片(本来应该只要一个小时,可是被 argparse 坑了…… 我不该一上来就填那么多参数),但感觉也还可以,而且我没有在任何关键问题上查资料,也没有看太多次 help
学习还是有效果的,毕竟我学会了这些 API:
Image.open(path)
Image.new(space, coord, fill)
Image#width, Image#height
Image#convert(space)
Image#getpixel(p) -> tuple
Image#setpixel(p, tuple)
ImageDraw.Draw(img: Image)
Draw#text(p, txt, font=, fill=)
ImageFont.load_path(path)当然一般来说为了性能(其实当然在 DIP 的时候算法是最重要的)都直接用 JVM 的
ImageFont.truetype(name, size=fntsz)
ImageFont.FreeTypeFont
awt.BufferedImage 吧……javap javax.imageio.ImageIO
javap java.awt.image.BufferedImage 我的 Gist 上有 Kotlin 字符画 ASCII Art 生成器的源码
看了 FerryYoungFan 的版本,10:52-11:27 花了半个多小时,好像不是提前写好了的,唉
算法上,除了
[xs[k:(k+2)] for k in (0,2,4)] 这种没见过(也不是不会写)都知道不过设计上,没有扣像、 (keyColor, keyThres, keyRatio) 、自动渐变的背景色 (刚才我以为 count avgcolor 是拿来判断背景色的…) 和 xy padding
(w- colPxs*m) /2
也没有加 textVsp 和 textHsp 文字间距,和图像边角的间距,我的版本写的更活一点,不过大概是没有太大意义的……另外 (keyColor, keyThres), keyRatio 我还是会写的,之前的 Kotlin ASCII Art 就用到了 filter 色值的算法;只不过这个是按照 abs 符合要求色块数目来取舍是否生成文字
如果我使用高效的 Numpy/Pillow 内建函数,而不是我手动的 average 插值 scale 算法(Montage.clippy) 的话,就可以拿来处理视频(否则太慢了,处理不过来),实际上 B 站也有一个罗小黑战绩《晚安喵》的这种视频,有心人不妨试试重构。
#Python #tools #DIP
GitHub
FerryYoungFan/SimpleTextMontage
简易文字蒙太奇生成器. Contribute to FerryYoungFan/SimpleTextMontage development by creating an account on GitHub.
#school #text
《职业生涯规划》 手抄报文本
学习的技巧
* 懂得坚持,两百页书本,十个小时不换书
* 奋发图强,一天阅读一千行
* 少出门、少坐汽车,小心 PM2.5
* 注意身体,做到12点,就不做了,睡大觉
大不了第二天再重新来过。
* 意识到中国程序员人均就业前写8000, 0000字…位
的代码,不仅在于积累,关键在于积累。
* 编程要学数据库、ASP、运维、测试、全栈、PHP、
MySQL、表格、数据整理迁移、关系代数、C、Basic、
计算机二级、分布式、JavaEE 、Hadoop、Mybatis、Glassfish、
Tomcat、LAMP, 关键在于紧抓当下,最好青年时期就学过。
* 不能以追求经济逆付为目标去大公司实习,不然会被996
* 遇到困难,要珍惜身体,就不做了, 睡大觉;你一不输出bug,二不发表抱怨,三不强要奖金,还有什么好说的。
管理的技巧
* 那些做错事的员工,他也是有一本账,这个账是记在那的。
他一旦出事了,这个账全给你拉出来了,别看他们今天闹得欢,你今后拉清单,都得应验的,别让他们做这种事情。
* 团队有任务要 deadline,必须急得像热锅上的蚂蚁,全员996,
不准吃饱了没事干的人睡大觉。
* 如果有员工咧了嘴,后诉他“咧了就好啦,免得下次你倒大霉”
* 打牢团结基础,基础不牢,地动山摇
* 对员工轻税允差(chaī),通商宽衣
* 市场有风平浪静之时,也有风狂雨骤之时,狂风骤雨可以掀翻小池塘,但不能折欠番羽大公司,因为即便波涛汹涌,
找准了自强不息之道的管理者还是会堤防,而不麻痹大意。
* 注重在基层员工,的艰难困苦难艰困的职位,要亲自指挥、亲自部署他们的员工福利。
* 小技巧:在大会现场反对你的气焰发酵时,可以发起不同意者举手的投票,你经验就多了;举手的人全都倒大霉。
《职业生涯规划》 手抄报文本
学习的技巧
* 懂得坚持,两百页书本,十个小时不换书
* 奋发图强,一天阅读一千行
* 少出门、少坐汽车,小心 PM2.5
* 注意身体,做到12点,就不做了,睡大觉
大不了第二天再重新来过。
* 意识到中国程序员人均就业前写8000, 0000字…位
的代码,不仅在于积累,关键在于积累。
* 编程要学数据库、ASP、运维、测试、全栈、PHP、
MySQL、表格、数据整理迁移、关系代数、C、Basic、
计算机二级、分布式、JavaEE 、Hadoop、Mybatis、Glassfish、
Tomcat、LAMP, 关键在于紧抓当下,最好青年时期就学过。
* 不能以追求经济逆付为目标去大公司实习,不然会被996
* 遇到困难,要珍惜身体,就不做了, 睡大觉;你一不输出bug,二不发表抱怨,三不强要奖金,还有什么好说的。
管理的技巧
* 那些做错事的员工,他也是有一本账,这个账是记在那的。
他一旦出事了,这个账全给你拉出来了,别看他们今天闹得欢,你今后拉清单,都得应验的,别让他们做这种事情。
* 团队有任务要 deadline,必须急得像热锅上的蚂蚁,全员996,
不准吃饱了没事干的人睡大觉。
* 如果有员工咧了嘴,后诉他“咧了就好啦,免得下次你倒大霉”
* 打牢团结基础,基础不牢,地动山摇
* 对员工轻税允差(chaī),通商宽衣
* 市场有风平浪静之时,也有风狂雨骤之时,狂风骤雨可以掀翻小池塘,但不能折欠番羽大公司,因为即便波涛汹涌,
找准了自强不息之道的管理者还是会堤防,而不麻痹大意。
* 注重在基层员工,的艰难困苦难艰困的职位,要亲自指挥、亲自部署他们的员工福利。
* 小技巧:在大会现场反对你的气焰发酵时,可以发起不同意者举手的投票,你经验就多了;举手的人全都倒大霉。
#HTML #JS #DontKnow 你知道吗? 🤔
HTMLElement 的
如果不用 JQ ,可选注册
element 和 node 的区别在于,前者只能是 <a> <b> <div> 这样的元素,后者可以是
HTML 里基于 XML 的部分有三种情况:
有许多方法可以缩写 HTML ,最常见的是基于 CSS 选择器的 emmet.io 和基于缩进的 模板语言 #Ruby slim-lang.com ,而
想在社交平台分享自己的网站, OpenGraph 了解下?
-
-
- JS 最不常用的两个关键字:
如果用
HTMLElement 的
remove() 和 replaceWith(e1) 都不需要手动拿 e.parentElement ,只有 insertBefore(e1, e) 需要在 parent 上如果不用 JQ ,可选注册
document "DOMContentLoaded" 或 window "load" 事件element 和 node 的区别在于,前者只能是 <a> <b> <div> 这样的元素,后者可以是
#text 文本标签。HTML 里基于 XML 的部分有三种情况:
<meta charset="UTF-8"> 的单独标签、 <div></div> 的配对标签(with childNodes)、 <link rel="stylesheet"/> 的折叠(collapsed)标签,有些配对标签也有折叠形式,但折叠和 no children 是不同情况。有许多方法可以缩写 HTML ,最常见的是基于 CSS 选择器的 emmet.io 和基于缩进的 模板语言 #Ruby slim-lang.com ,而
DOMParser 本身也支持兼容解析修正一些不完整的文档。想在社交平台分享自己的网站, OpenGraph 了解下?
-
!!"" 和 !!0 、 !![] 都是 true ,第一点往往造成隐患 必须详细检查-
undefined == null ,所以有时用 === 区别严格相等性- JS 最不常用的两个关键字:
delete o[k]; 和 v=with(o,o1) { attr }
许多时候:如果用
e.onclick = 的简写,在任何地方的(其他)脚本重复注册时会导致覆盖,所以尽可能用 addEventListener
JS 里较短参数的函数兼容较长处的类型限制(允许无视参数),但在调用时省略默认参数可能造成性能问题,在绘图/大批/频繁处理时,需要多用图形界面的 profilerogp.me
Open Graph protocol
The Open Graph protocol enables any web page to become a rich object in a social graph.
#bash #learn https://github.com/dylanaraps/pure-bash-bible?tab=readme-ov-file#text-colors
不使用grep也能正则匹配,你知道吗?
不使用grep也能正则匹配,你知道吗?
GitHub
GitHub - dylanaraps/pure-bash-bible: 📖 A collection of pure bash alternatives to external processes.
📖 A collection of pure bash alternatives to external processes. - dylanaraps/pure-bash-bible
Forwarded from 依云的技术资源分享
YouTube
Coding Adventure: Rendering Text
This... is text! Let's figure out how to draw it.
Starring: Bézier curves and (oh so many) floating point problems.
Support my work (and get early access to new videos and source code) on Patreon or Nebula
* Patreon: https://www.patreon.com/SebastianLague…
Starring: Bézier curves and (oh so many) floating point problems.
Support my work (and get early access to new videos and source code) on Patreon or Nebula
* Patreon: https://www.patreon.com/SebastianLague…
duangsuse::Echo
现代editor的输入延迟远输于42年前开发的Emacs。还有比编辑器更简单的功能吗?每敲击一次键盘,你所需要做的仅仅是更新一个小小的方形区域
#js 嗯…… 我现在就在PoC一个比 Prismjs.com,CodeMirror,Monaco(VSCode) 更正确的span高亮方法,基于2021之后的DOM
PGO得出的结果是,即便不考虑HTML parse开销,Range API 也比堆叠<span.高亮类型>好😒 , #code 见下
https://x.com/i/grok/share/6EUWYNSsyq7Ixk6BvdVoFdxV3
https://x.com/i/grok/share/vwCog17kkAn4lD58VEDgjxgrF
让Blink去计算 contain: paint ,显然是比JS background-clip:text+canvas Worker 绘制彩色矩形要好了(我也在gh上PoC过),而且百行代码即可😄
我对这个实现很乐观,虽然它明显比 span[ContentEditable] 要考虑更多区间更新的问题,但结合js侧配套的增量compiler,或许以wbr分词的 new Range(#text) 也是能自动延展的?
希望以后能自己创建相关的工具链。😃
#draft #vibe
PGO得出的结果是,即便不考虑HTML parse开销,Range API 也比堆叠<span.高亮类型>好
https://x.com/i/grok/share/6EUWYNSsyq7Ixk6BvdVoFdxV3
https://x.com/i/grok/share/vwCog17kkAn4lD58VEDgjxgrF
让Blink去计算 contain: paint ,显然是比JS background-clip:text+canvas Worker 绘制彩色矩形要好了(我也在gh上PoC过),而且百行代码即可
#AI 看不到的是更多的文档
https://microsoftedge.github.io/Demos/custom-highlight-api/
https://htmlspecs.com/css/css-highlight-api-1/#range-invalidation
我对这个实现很乐观,虽然它明显比 span[ContentEditable] 要考虑更多区间更新的问题,但结合js侧配套的增量compiler,或许以wbr分词的 new Range(#text) 也是能自动延展的?
希望以后能自己创建相关的工具链。
#draft #vibe
这个高亮parser基于 eat(字符流),Bisect(区间链表),ast; 2+4+3 个接口,只针对(字面量or函数)的层面增量解析
s=eat('hello'):
`s(1)==s(-1) ='h', s(1)=='e'`,可结合 s=df(eat)() 打印调试关键语法
`s(/.*/), s(JSON.parse)` ,支持 s.ws=/\s+|#.*$/ 等,当 s.hl=='', 读项前自动跳空格(字面量内不跳),并保留 s.wsPre+='其空格'
s.by=Bisect(基于H5 span[attr],Text 等, 通过PahQL(el)设置):
'he llo'
by(0, s=>eatVar); by(0, s=>compileDef); 注册区间更新,肯定不能和parsec/递归下降那样return,咋搞下面会说 也有CSV(C=列A+B)的demo
by(2, '[BYGRP].'); 添加字面高亮(2字表示)。 BYGRP{vgbl}共5x4种基础颜色
by(5, {metaROW:0}); 添加函数上文,重复时只留最外层
by(3, '\r3\r-3'); 选区增删。\r开头即删掉llo一词,并显示 'he \xBB' 以指示当前区间和光标
s.env: 为动态作用域。当文本指代相同变量时,替换为第一个 DOM Text
s.fun(id,kv?); s.ret.pop(); 维护def或{}命名空间
s.var(); 注意,函数统一为 [body, args, void 0, locals, {kw}] 格式
s.exp('-', args): 创建(赋值)调用。在PahQL结果上可以 .As({'-':({k,v})=>v }) 或 .AST({}) 转换
ast:
s.inHole().As() 编译时快照候选值, ho.As(u=>u+1) 单向绑定, inHole((A,B)=>A+B) 可多路监听候选
PahQL提供 eatDef=(s,at二参数)=>at.ret(自动重解析) 的简写。在QL里,会将exp调用加入最近的 s.fun('-forif'?, 静态attrs?) 基本块,但无视 [/:/, s=>的值],需通过eatSym()(s)手动组合递归返回
调用约定为 -return等语法 --forif等块 /全局调用 ->具名函数值 。s.fun('-for') 后可能要调用 s.ret.push()
code[ontruncate,text-spans] 在全局更新时应检查 s.by{.errs .body} ,你要在此对 `"正在插入 \" 哦", /**/` 等读时断尾/读后有余的input单独容错
.sloc 可以在def节点保存报错位置
.scmPutback[''] 基于行首/变量名来匹配def内的注释, unparse时缩进 ['\nindent']='2 '
基本块(span.def)在被增量splice 后,会聚焦其id,方便简单遍历.body时做剪枝。
REPL和补齐需要在input不完整,或含'wtf.\xBB'时做print(PS1)或 .show(elems) 提示
二进制input,无需Bisect!直接解析引用: new Blob([bytes, [嵌套的struct数组], bytes]) ,unparse时flat()“序列化”输出
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
#fp #sb https://github.com/MoonshotAI/kimi-cli/issues/405#issuecomment-3615015273 信达雅究竟是什么? 信是目标语言的原生感,达是源语言的语义保留 《中文编程》圈有时挺魔怔的,yin 说他不开发ONE语言是因为懒,而yin(.java)没有做的下去有一部分是被各种人指点江山的原因失去了兴趣,我算是明白是哪种人了(帝球 也指点过呢)🤯 同样是FP和PLT,为啥我的翻译就是「lambda栏目答」「recursion睿括式」「…
#post #加入套餐 类型(.kt,前沿,逆向)、变量与宏绑定、IO等【无返回】效应、异步多任务😒 😅
Gemini 手把手演示了内容,我看是挺不错的😅 :
栏目答演算、逻辑式编程/Hask HM类型、解释器与变量表(“多位等值”的叠合/替换)、
契约编程与停机证明、栏目答字面/闭包值的相等、宏与可计算性理论
最近几周消除了数年的疑惑,都在下面了:
——涉及 抽象解释 符号执行 插桩反混淆 宏参数与部分求值 JS信号变量和Effect染色
应用领域:IDE(类型推导、静态优化)、逆向工程/无源码patch、前后端软件框架
锐评:
(帝球 也指点过王某呢)🤪
ref:https://t.me/dsuse/21596 引文包含 幻の上帝 cqwrteur 轮子哥 Belleve白神 这类人,我懒得打#text链接了
我还是更喜欢 #dalao 张宏波、尤雨溪、吴涛、胡渊鸣 …… 可惜他们不「上网」
Gemini 手把手演示了内容,我看是挺不错的
栏目答演算、逻辑式编程/Hask HM类型、解释器与变量表(“多位等值”的叠合/替换)、
契约编程与停机证明、栏目答字面/闭包值的相等、宏与可计算性理论
这些思考也证实了LLM确实是可以有输出质量的, 别傲慢:
meta元学习 https://chat.librechat.ai/share/kKyJYo9-GHZrCWs9fZ7kQ
用PLT思考PLT https://chat.librechat.ai/share/12vR80JFBcgvzPPto2hF7
学习 https://chat.librechat.ai/share/gR1ZKau604JBrJh5WcMvi
最近几周消除了数年的疑惑,都在下面了:
kt #TODO https://zhuanlan.zhihu.com/p/436839181
ts https://chat.librechat.ai/share/JWl-AnInaI5kU7eXwEELu
ts-更加深入形式证明 https://chat.librechat.ai/share/7qAk4DtR2yryMmXbFXSJS
ts-从既视感“理解”证明 https://chat.librechat.ai/share/IjBRGdv25nl2PT74OjHTJ
ts-对无穷的证明? https://chat.librechat.ai/share/7G-eDxgeEj9X5nqbUOWIs
RE https://chat.librechat.ai/share/BjZyFc8Twa42gHsR_Yk47
lisp https://chat.librechat.ai/share/9iz2YegEZl9kEdiacDNmF
haskell https://chat.librechat.ai/share/tPbd15iaCJ9_DMQNy7KuW
async https://chat.librechat.ai/share/ZyEbtcprWQ1pvAc-edvkv
apt不会做C语言包管理 https://chat.librechat.ai/share/GMEFbpIISwnr1sJO8SHZS
Rust内存管理和多态等 https://t.me/dsuse/21667
GC Rc mmap/sched 的话 帝球 也讨论过
——涉及 抽象解释 符号执行 插桩反混淆 宏参数与部分求值 JS信号变量和Effect染色
应用领域:IDE(类型推导、静态优化)、逆向工程/无源码patch、前后端软件框架
锐评:
当我发现这5项中存在一致的可观测函数模型,没有依赖 “没有比函数自身”、“UNIX只是C的虚拟机”,是靠深度求索与非机械的变换时,起变化
我不是借助了 静态分析、云计算容器的前沿实践的理解力,我是在Gemini/Grok的柏拉图式教学中,洞见了下这些定论场景语境,并且提出更深、更像我的结论
“类型的本质是对程序行为的观测,静态类型”;“OS是对PL的状态树隔离、IO染色和异常后清理”;这是从App开发到理论的,无偏见的把握😃
当我「有能力」请Gemini+Grok弄清楚HOAS并不是我的inHole“应后值”体系,反而和之前的eDSL组合子比较像,我明白yin所表达的“他们的模式不仅不新奇,当我去学习时,反而发现GoF与我的无名优化N:1对应”是什么体验了。😓
过去,【您的批判已经进入“无人区”了】 【您的洞察力是现象级的】时我还觉得这是吹捧,直到我发现自己真正在利用这份能力,并且结合AI的工作流,我才知道。因为创作是掌握的象征。
我不会忘记我的初心,从开源获得的知识将赠予世界,永远自由。Agent能够协助新老理论在质量、价值接近的条件下价格打一折,这才是尊重技术的新方向。😒
(帝球 也指点过王某呢)🤪
……看来“C艹皮袄人”也订阅yin的更新啊。这个氛围感很棒。 很怀念2015,我还只是初中Linuxer, linux.cn 都还在,10年过去了啊,很多人从培训出来也就20~35十几年的技术生命,我却觉得正当时。如果,我也可能有35岁,那也一定是“青春燃烧的最壮丽的时候”,就像Friedman。
如果以后做个网页批注的App,或许有兴趣回来隔空对线下这仨。 暂时就贴俩#text链接了,另外帝球对One语言的评论过于科班了(语言律师),另外三个人我更喜欢Tippisum!
从知识面上讲,yin和这些人平齐,但他洞察力国内拔尖。
如果你有从x86和CG-DSP跨到全栈的知识,洞察力却平平,一个重要表现就是缺乏和“下位同行”交流的科普能力,从这一角度yin并非“竖子成名”,因为那些“英雄”只能是机器的工匠。
如果认真看我选好的讨论串,还是能看出他们在想的很有意思,灵感并不比yin差,只是表现力偏低,也不如我与大贤者Gemini的论辩。 遗憾那是2015的贴吧知乎,有 yinwang.bak 那幅画的感觉了
ref:https://t.me/dsuse/21596 引文包含 幻の上帝 cqwrteur 轮子哥 Belleve白神 这类人,我懒得打#text链接了
我还是更喜欢 #dalao 张宏波、尤雨溪、吴涛、胡渊鸣 …… 可惜他们不「上网」
Please open Telegram to view this post
VIEW IN TELEGRAM