duangsuse::Echo
#js #lib #listing #gui https://editor.datatables.net/generator/ 🤔 想起了 #Qt Model/View 的 delegate 和 createEditor 什么的... 但其实从 row 建立可搜索、可排序、可编辑的 table 并不需要那么多名词吧 https://github.com/fiduswriter/Simple-DataTables 嘛,虽说是 lightweight ,其实连 Date format 都支持... htt…
Clusterize 那个真的不能再小了,才 300 行,大部分精力在做 interactive doc 上吧(这个 doc 也算是很有效了
当然 search, keep <thead> 什么的 还有固定大小 table-layout:fixed 要特殊处理
然后 #CSS counter (内部文本: 数数) 总结下咋支持的:
https://cdn.jsdelivr.net/npm/clusterize.js@0.18.1/clusterize.js
https://cdn.jsdelivr.net/npm/clusterize.js@0.18.1/clusterize.css 只有几条规则而已 魔改者最多只需覆盖1条
#js #ce 还支持 https://developers.google.com/closure/compiler 🤔 不知道这玩意会不会 inline constexpr (肯定不会
https://cdn.jsdelivr.net/npm/clusterize.js@0.18.1/externs.js 如果连 API 都要库作者手写的话,首先设计就有问题, Proguard 不需要
#DontKnow event delegation... scroller 覆盖了控件树,还是需要 delegate 才能听见吗
JQuery 也是比较成功, DOM 都封装好了而且支持 IE
当然 search, keep <thead> 什么的 还有固定大小 table-layout:fixed 要特殊处理
然后 #CSS counter (内部文本: 数数) 总结下咋支持的:
content_elem.style['counter-increment'] = 'clusterize-counter ' + (data.rows_above-1);
这么说 rows_above 始终不为 [] 了..? 应该 把索引0映射到&chunk[0]这样https://cdn.jsdelivr.net/npm/clusterize.js@0.18.1/clusterize.js
https://cdn.jsdelivr.net/npm/clusterize.js@0.18.1/clusterize.css 只有几条规则而已 魔改者最多只需覆盖1条
#js #ce 还支持 https://developers.google.com/closure/compiler 🤔 不知道这玩意会不会 inline constexpr (肯定不会
https://cdn.jsdelivr.net/npm/clusterize.js@0.18.1/externs.js 如果连 API 都要库作者手写的话,首先设计就有问题, Proguard 不需要
#DontKnow event delegation... scroller 覆盖了控件树,还是需要 delegate 才能听见吗
document.getElementById('contentElemId').onclick = function(e) {
e = e || event;
var target = e.target || e.srcElement;
if(target.nodeName != 'TR') return;
// do stuff with row
}
$('#contentElemId').on('click', 'tr', function() {})
JQuery 也是比较成功, DOM 都封装好了而且支持 IE
GitHub
Added support of CSS counters. Relates to #126 · NeXTs/Clusterize.js@0db86da
Tiny vanilla JS plugin to display large data sets easily - NeXTs/Clusterize.js
https://stackoverflow.com/questions/1134586/how-can-you-find-the-height-of-text-on-an-html-canvas #drawing #web #js #css
https://stackoverflow.com/questions/808826/draw-arrow-on-canvas-tag
https://stackoverflow.com/questions/808826/draw-arrow-on-canvas-tag
Stack Overflow
How can you find the height of text on an HTML canvas?
The spec has a context.measureText(text) function that will tell you how much width it would require to print that text, but I can't find a way to find out how tall it is. I know it's based on the ...
#recommend #design #css #drawing 很值得思考的重构🤔
本来只是想复用 CSS anim 的 time function 乃至 scheduler (当然不可能)
看来挖到宝了
https://1stwebdesigner.com/15-fun-and-inspiring-examples-of-css-animation/
https://mzh.moegirl.org.cn/LexBurner
(狭隘的个人观点)感觉 SCSS 和 LESS 好废啊…… 就只有这些基础功能吗,比 CPP 好一点而已啊 SCSS 一个 $var: def 一个 for $i from 0 through n {} 语法贼奇怪
而且还有人在用 -webkit-keyframes ,明明都在用 SCSS 了,是嫌代码不够长
本来只是想复用 CSS anim 的 time function 乃至 scheduler (当然不可能)
看来挖到宝了
https://1stwebdesigner.com/15-fun-and-inspiring-examples-of-css-animation/
https://mzh.moegirl.org.cn/LexBurner
(狭隘的个人观点)感觉 SCSS 和 LESS 好废啊…… 就只有这些基础功能吗,比 CPP 好一点而已啊 SCSS 一个 $var: def 一个 for $i from 0 through n {} 语法贼奇怪
而且还有人在用 -webkit-keyframes ,明明都在用 SCSS 了,是嫌代码不够长
1stWebDesigner
15 Fun and Inspiring Examples of CSS Animation - 1stWebDesigner
CSS is a powerful coding language that can give style and personality to HTML. CSS animations, in particular, are created by transitioning between various CSS configurations over a period of time. There are a lot of extremely practical cases for CSS animation…
https://blog.csdn.net/chzphoenix/article/details/77968756 #Android matrix 实现的百叶窗渐变动画
https://blog.51cto.com/283859701/1945248 同上但只有链接
https://www.cnblogs.com/i7758/p/4806251.html #CSS 十种动画 trick 集
https://blog.51cto.com/283859701/1945248 同上但只有链接
https://www.cnblogs.com/i7758/p/4806251.html #CSS 十种动画 trick 集
blog.csdn.net
Android魔法(第四弹)—— 一步步实现百叶窗效果_There is a Bug!!!-CSDN博客
本篇是基于AnimationListView框架的,这个框架在上一篇中详细的讲解了,建议阅读本篇前先熟悉一下。Android魔法系列:http://blog.csdn.net/chzphoenix/article/details/77962259项目的github地址:FastWidget4Android 很多炫酷的自定义效果,欢迎fork和star!1、
#math 如果你要在终端展示图片(RGB亮度->灰度),就需要将稠密的浮点切成区间编号。 绿 floor(x*a)/a 在a=2 时将0~1切成2份,a=10 相当于保留1位小数(1.0内含10阶),而 红 round 会切成4份,即数组a.
CSS1 仅支持VGA颜色,后来有了 X11-SVG 标准色集
CSS4 支持
相比之下,弱鸡的 #Java AWT 和 #Python PIL 就没有简单、统一可玩的API ,awt 只有光谱 CIE XYZ 这样低层的概念,
#cg 在「擦拭」位图A->B渐变里,t=0~1 , 当前帧=(1-t)A+tB ;先绘制A, 再以 mask(t) 叠上B
遮罩mask 内最黑的部分代表B最先出现部分,随着t递增 所有像素渐变到B
柔和度=0 时 mask 内只有0,1 二态,所以AB中间的线(如果mask=横向渐变)很锐利
=1 时会用尽alpha色域(一般256色)渐变
a[floor(v*n(a) )]
#CSS #web 提供了 #rgb
, #rrggbbaa
的 rgb(255,.)
,以及 hsl(Hdeg S%L%)
扇形选色方式,注意这不是冷知识.. color picker 都支持按色相、饱和、亮度选色, backdrop-filter:hue-rotate(1deg)
也是有的CSS1 仅支持VGA颜色,后来有了 X11-SVG 标准色集
CSS4 支持
rgba(r g b /a)
空格格式和浮点数相比之下,弱鸡的 #Java AWT 和 #Python PIL 就没有简单、统一可玩的API ,awt 只有光谱 CIE XYZ 这样低层的概念,
getHSBColor
和又能大写又能小写的 static RED 这些……emm#cg 在「擦拭」位图A->B渐变里,t=0~1 , 当前帧=(1-t)A+tB ;先绘制A, 再以 mask(t) 叠上B
遮罩mask 内最黑的部分代表B最先出现部分,随着t递增 所有像素渐变到B
柔和度=0 时 mask 内只有0,1 二态,所以AB中间的线(如果mask=横向渐变)很锐利
=1 时会用尽alpha色域(一般256色)渐变
duangsuse::Echo
http://tridiv.com/ 用 CSS + HTML 画三维物体的可视化编辑器。 你们……CSS 上脑的人好可怕……
#DontKnow 一如既往的Y-up 座标系(左手比枪xy, 中指z) 。 原来向y旋转是要改变x角度吗..向z旋转要改变y, 角度z 就是相对x了,对横长方体不明显..
正方体有6面,十字架展开 tp lt ft rt 凸字形:最上=顶面, bm bk 底和后,相信类似3D盒动画大家见过 --_- 。它们的 #CSS transform:
前后(2,-1) 移动轴=Z —只是前后次序
左右(1,-3) 轴=Y
当你正面(xy)正方体,它可以在X/Y=横纵 距一个外点旋转(xy位置改变),Z 就是四方本身的倾斜度
X不是横向旋转,而是“所有点绕X轴转”
然后通过 rt-lt{width} bk-ft{} 这些调参
它给每个对象创建CSS .cub-19 .face 我最佩服的..
https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d()
正方体有6面,十字架展开 tp lt ft rt 凸字形:最上=顶面, bm bk 底和后,相信类似3D盒动画大家见过 --_- 。它们的 #CSS transform:
rotateX(90deg) translateY(-50%)
rotateY(90deg) translateX(-50%)
translateZ(2em)
rotateY(-90deg) translateX(-50%)
rotateX(-90deg) translateY(-50%)
translateZ(-2em) rotateY(180deg)
顶底(i=0,-2) 的角度是对应的,轴=X前后(2,-1) 移动轴=Z —只是前后次序
左右(1,-3) 轴=Y
当你正面(xy)正方体,它可以在X/Y=横纵 距一个外点旋转(xy位置改变),Z 就是四方本身的倾斜度
X不是横向旋转,而是“所有点绕X轴转”
然后通过 rt-lt{width} bk-ft{} 这些调参
它给每个对象创建CSS .cub-19 .face 我最佩服的..
https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d()
https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Advanced_animations
woc, Moz 这太厉害了,加速率弹球动画、alpha拖影合成,还包含位图处理,不愧是最知名的MDN啊,还有一个500行(上面 Java 版本)的渲染器 raycaster !太牛了吧,而且也提到了 ZIM和P5.js ,梦幻联动
为啥动苏喜欢画图呢 🤔 因为图形里有许多参数是可以抽提比率增减的。尽管看起来很傻(用矢量图软件更好 没啥意义),却非常放松。
#css ninepatch 边角吗.. https://css-tricks.com/almanac/properties/b/border-image/ 虽然很可爱但莫名有点土 😂
woc, Moz 这太厉害了,加速率弹球动画、alpha拖影合成,还包含位图处理,不愧是最知名的MDN啊,还有一个500行(上面 Java 版本)的渲染器 raycaster !太牛了吧,而且也提到了 ZIM和P5.js ,梦幻联动
为啥动苏喜欢画图呢 🤔 因为图形里有许多参数是可以抽提比率增减的。尽管看起来很傻(用矢量图软件更好 没啥意义),却非常放松。
#css ninepatch 边角吗.. https://css-tricks.com/almanac/properties/b/border-image/ 虽然很可爱但莫名有点土 😂
https://caniuse.com/css-snappoints #web
#dontknow #CSS Scroll Snap
可以替换 splide.com 用js模拟的拖拽轮播图,可grid化,配合 anim-timeline:scroll(#id) 可实现滚轮ppt驱动动画 🌚👍
CSS 相比 YAML 把 03:01 解析为24小时制秒数😅就好得多https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
另外,DOM的resize和visible(Intersect) 也是有Observer 的
DOM和CSS就是多元化 #UI 实际上的标准
#dontknow #CSS Scroll Snap
可以替换 splide.com 用js模拟的拖拽轮播图,可grid化,配合 anim-timeline:scroll(#id) 可实现滚轮ppt驱动动画 🌚👍
CSS 相比 YAML 把 03:01 解析为24小时制秒数😅就好得多https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
另外,DOM的resize和visible(Intersect) 也是有Observer 的
DOM和CSS就是多元化 #UI 实际上的标准
Caniuse
CSS Scroll Snap | Can I use... Support tables for HTML5, CSS3, etc
"Can I use" provides up-to-date browser support tables for support of front-end web technologies on desktop and mobile web browsers.
duangsuse::Echo
修订文章的过程中,发现了一个有趣的事情 因为我有刻意去斟酌文字,希望尽可能让标点符号用的更符合直觉。 对 drakeet 的一些话(内联) 有一段话: “黑历史”是曾经不完美的见证,但它对自己而言也不是没有用处的,因为一个优秀的人时常要复习一下自己的黑历史、记住自己曾经的误解、不确定,来为自己的未来提供一个完整的排除名单。错误不再重复第二遍。 我给它的第一段修改成了 “黑历史”是曾经不完美的见证,但它对自己而言也不是没有用处的。 我做了一件事情: + “独立”了一个句子,把『因为』连词去掉 +…
http://jsbin.com/rubukabida #css 🌚突然心血来潮 复刻drakeet的知识星球之一
(没事玩玩 我也不记得他了。几年过去啦,也祝各位 #android 开发者越过越好 )
当然,web上是有1行完成的方法,但排版对齐不方便。我花6行
#code 我编程是自带框架的🌝,我不把可复用部分计入行数。总js有30行
大体10min 就写完了,移植paint花了半小时,兼容CSS花了4小时.. 确实, houdini.how 问题还不少.. 比如fill不能是线性渐变😅
TypedOM 支持上的问题让我对Chromium 的粉丝滤镜碎了一地.. 也可以说Firefox直接支持bg元素更好吧。 css4联动js上 常绿浏览器的支持都很烂
(没事玩玩 我也不记得他了。几年过去啦,也祝各位 #android 开发者越过越好 )
当然,web上是有1行完成的方法,但排版对齐不方便。我花6行
#code 我编程是自带框架的🌝,我不把可复用部分计入行数。总js有30行
大体10min 就写完了,移植paint花了半小时,兼容CSS花了4小时.. 确实, houdini.how 问题还不少.. 比如fill不能是线性渐变😅
TypedOM 支持上的问题让我对Chromium 的粉丝滤镜碎了一地.. 也可以说Firefox直接支持bg元素更好吧。 css4联动js上 常绿浏览器的支持都很烂
duangsuse::Echo
http://jsbin.com/rubukabida #css 🌚突然心血来潮 复刻drakeet的知识星球之一 (没事玩玩 我也不记得他了。几年过去啦,也祝各位 #android 开发者越过越好 ) 当然,web上是有1行完成的方法,但排版对齐不方便。我花6行 #code 我编程是自带框架的🌝,我不把可复用部分计入行数。总js有30行 大体10min 就写完了,移植paint花了半小时,兼容CSS花了4小时.. 确实, houdini.how 问题还不少.. 比如fill不能是线性渐变😅 TypedOM…
#web 此页思路:
0. Paint(f参数px和颜色集var), dragPin(ul, f_e_e0) 垫片
1. 用hsl(rand()turn 50% 70%) 🌈填色
2. tap 填N颜色,tap2s 给ul重排序乱序
3. rbRoll彩虹🌈卷 是靠N个梯形向下叠底 --lAng 底边更长 来倾斜。 #css 线性渐变就足够实现这个
4. drag f(e,e0) 会被保存,排完序自动重做用户排序😂: Bad在Good前,.
没错,[]上无需算法,全靠DOM。这逻辑2行实现,很普通的调用重做。靠 #py 都不会这么容易.. 学元编程很值
不然连1次 “f(a,b)” 如何记忆调用到[] 都不知道惹,有母语(JS)优势利于设计
另外,动苏对曾经伤害的人道歉。 就当是政治正确?🙏
把更多时间拿来思考、实现,而非写代码与争论
既然 #ai 把码字的工作抢了(是的..就训练集的质量来看 较冷门的lib 更大的项目 只要肯交流 也迟早能被半自动编程,人的工作本就是打磨设计啊🤪)
就好好享受生活(摸鱼)呗
我是喜闻乐见的🌝👍,中国存在着一些“你看不懂我NB”的特色现象,但读不懂也可能是读者sb,但由最擅长文字把戏的AI来教, 文章是否立论明确,以及低创文章的过滤 就不会碍眼了,从长远看 利于中文互联网
0. Paint(f参数px和颜色集var), dragPin(ul, f_e_e0) 垫片
1. 用hsl(rand()turn 50% 70%) 🌈填色
2. tap 填N颜色,tap2s 给ul重排序乱序
3. rbRoll彩虹🌈卷 是靠N个梯形向下叠底 --lAng 底边更长 来倾斜。 #css 线性渐变就足够实现这个
4. drag f(e,e0) 会被保存,排完序自动重做用户排序😂: Bad在Good前,.
没错,[]上无需算法,全靠DOM。这逻辑2行实现,很普通的调用重做。靠 #py 都不会这么容易.. 学元编程很值
不然连1次 “f(a,b)” 如何记忆调用到[] 都不知道惹,有母语(JS)优势利于设计
另外,动苏对曾经伤害的人道歉。 就当是政治正确?🙏
把更多时间拿来思考、实现,而非写代码与争论
既然 #ai 把码字的工作抢了(是的..就训练集的质量来看 较冷门的lib 更大的项目 只要肯交流 也迟早能被半自动编程,人的工作本就是打磨设计啊🤪)
就好好享受生活(摸鱼)呗
我是喜闻乐见的🌝👍,中国存在着一些“你看不懂我NB”的特色现象,但读不懂也可能是读者sb,但由最擅长文字把戏的AI来教, 文章是否立论明确,以及低创文章的过滤 就不会碍眼了,从长远看 利于中文互联网
duangsuse::Echo
#tool https://github.com/chaiNNer-org/chaiNNer #tool #web reactflow.dev 图片批处理流水线工具,卧槽有点牛逼啊🌚 话说 svgfilters.com 也 ffmpeg lavfi 的应该有一个web WASM 版编辑器 还有 cryptii.com nged: Houdini(GL) - Lisp #ai https://github.com/comfyanonymous/ComfyUI flowiseai.com asciiflow.com…
#cg #CSS https://splidejs.com/ 。WebGL( 远不如 #recommend #tool https://gl-transitions.com/editor/morph
https://d.design/ 3d
https://codepen.io/zadvorsky/pen/PNXbGo 小鱼
https://tympanus.net/Development/PolygonalTransitions/ 三角形
https://webgl-image-slider.webflow.io/demo-2 极座标
https://d.design/ 3d
https://codepen.io/zadvorsky/pen/PNXbGo 小鱼
https://tympanus.net/Development/PolygonalTransitions/ 三角形
https://webgl-image-slider.webflow.io/demo-2 极座标
Splidejs
Splide - The lightweight, flexible and accessible slider/carousel
Splide is a lightweight, flexible and accessible slider/carousel, written in TypeScript. No dependencies, no Lighthouse errors
#js #cg Scratch式demo canvas 绘制
顺便推荐开源函数图 + #css houdini.how (.. 入门2D绘制时实现过,当时啥SVG和GL都不懂
许多demo我做过.. 包括 Bezier曲线 我有1行实现版, Koch雪花, 弦图, Mandelbrot(隐函数,=距离函数)
(还有个2023版的 Bezier算法
sin,cos 可视化, 果冻状的扫把树, 太阳系Ring动画 也做过 🥳
— #statement
顺手翻了以前做事情的态度, 感觉曾经很热血,喜欢背书单(完全不像我),代码量很足。其实一直有热情是好事。
想起做过 C lib.so hook, asteroids,snake 这些街机游戏 , 觉得忘记的东西有点多
按曾经我的编程眼光,即便是在AIGC的革命下,也会觉得 Java 系的样板代码非常优美规范
像
现在的Web后端=给SQL语句注册HTTP路径和JSON验证 ,ORM=对跨语言RPC的窄化,已经失去创造力了……
但今天我是API的封装者、定义者,而不太做应用;大概这就是我加入编程的理由。我和独立开发者都不是为了“复现”而编程、不为了“理解”而写文,所以不像PL人,我乐意打发AI完成甚至所有的编写,毕竟我们追求的是高于代码的进步、和可持续创作的环境,而非持续把半条命摔在门槛上
“任何人都可以成为程序员” —黄仁勋
我敲代码,不是为了有“钱途”或拿到“特异技能点”,不是为了不“被替代”,仅仅是朝夕相伴。我甚至不觉得自己是程序员,但我很讨厌给工作造成麻烦的、计算机特有的无趣的概念
真希望有了更好的语言后,让这些几何与算法变成20行左右的片段,这样无论如何也不会忘记,甚至能像上面一样做成 Demo Gallery。唉
顺便推荐开源函数图 + #css houdini.how (.. 入门2D绘制时实现过,当时啥SVG和GL都不懂
许多demo我做过.. 包括 Bezier曲线 我有1行实现版, Koch雪花, 弦图, Mandelbrot(隐函数,=距离函数)
(还有个2023版的 Bezier算法
sin,cos 可视化, 果冻状的扫把树, 太阳系Ring动画 也做过 🥳
— #statement
顺手翻了以前做事情的态度, 感觉曾经很热血,喜欢背书单(完全不像我),代码量很足。其实一直有热情是好事。
想起做过 C lib.so hook, asteroids,snake 这些街机游戏 , 觉得忘记的东西有点多
按曾经我的编程眼光,即便是在AIGC的革命下,也会觉得 Java 系的样板代码非常优美规范
像
@Path("/posts") fun getPostsForUser(@Param("user") user: User )
这种把函数名删掉都不影响语义的框架..😆 现在的Web后端=给SQL语句注册HTTP路径和JSON验证 ,ORM=对跨语言RPC的窄化,已经失去创造力了……
但今天我是API的封装者、定义者,而不太做应用;大概这就是我加入编程的理由。我和独立开发者都不是为了“复现”而编程、不为了“理解”而写文,所以不像PL人,我乐意打发AI完成甚至所有的编写,毕竟我们追求的是高于代码的进步、和可持续创作的环境,而非持续把半条命摔在门槛上
“任何人都可以成为程序员” —黄仁勋
我敲代码,不是为了有“钱途”或拿到“特异技能点”,不是为了不“被替代”,仅仅是朝夕相伴。我甚至不觉得自己是程序员,但我很讨厌给工作造成麻烦的、计算机特有的无趣的概念
真希望有了更好的语言后,让这些几何与算法变成20行左右的片段,这样无论如何也不会忘记,甚至能像上面一样做成 Demo Gallery。唉
Telegram
螺莉莉的黑板报
https://omrelli.ug/g9/gallery/
几何画板 js
几何画板 js
https://github.com/cunarist/rinf
https://www.visioncortex.org/vtracer/
由螃蟹驱动的位图描边转矢量工具 #tool svg
https://www.lummi.ai/
https://github.com/adobe-webplatform/shaderdsl
有趣
有趣
http://topcoat.io
搞点传统的 #css
https://github.com/Web-Media-Foundation/infrastructure/blob/master/packages/ogg-polyfill/src/OggVorbisPage.ts #js #bin
隔壁实现完了 Vorbis 的解码前端(只带解编码元信息,不带解成 PCM 的部分),八百多行
https://t.me/im_RORIRI/17034
#statement
其实也不难,只要你知道你程序依赖的领域、最小的功能是啥,解决问题必须先确定范围;知道自己在干什么、与旧案有何区别、又为何不同,才配叫工程。
比如二进制吧,像bmp那样用一个struct就能parse的东西很少,因为C拿指针掩盖了带长数组、也无常量池等规范,但继续用 u/int32_t 那样的概念也没意义,不如叫 +-1 2 4 8 吧。甚至C bitfield也应该拿bitflags换了。
凡是用不到的专业概念,比如bitsize,全部抛弃掉,这样才有机会
避开前人留的坑
除了 read(bView, ['*', [4 4,'Num2 x y']]) 这样的带长数组,struct的json化也可以基于Proxy,以实现0copy序列化、push、sort啥的
总之就是确定最小问题是什么,然后组合、复用、降低复杂度来换算法的高效能
https://www.visioncortex.org/vtracer/
由螃蟹驱动的位图描边转矢量工具 #tool svg
https://www.lummi.ai/
https://github.com/adobe-webplatform/shaderdsl
有趣
有趣
http://topcoat.io
搞点传统的 #css
https://github.com/Web-Media-Foundation/infrastructure/blob/master/packages/ogg-polyfill/src/OggVorbisPage.ts #js #bin
隔壁实现完了 Vorbis 的解码前端(只带解编码元信息,不带解成 PCM 的部分),八百多行
https://t.me/im_RORIRI/17034
#statement
其实也不难,只要你知道你程序依赖的领域、最小的功能是啥,解决问题必须先确定范围;知道自己在干什么、与旧案有何区别、又为何不同,才配叫工程。
比如二进制吧,像bmp那样用一个struct就能parse的东西很少,因为C拿指针掩盖了带长数组、也无常量池等规范,但继续用 u/int32_t 那样的概念也没意义,不如叫 +-1 2 4 8 吧。甚至C bitfield也应该拿bitflags换了。
凡是用不到的专业概念,比如bitsize,全部抛弃掉,这样才有机会
避开前人留的坑
除了 read(bView, ['*', [4 4,'Num2 x y']]) 这样的带长数组,struct的json化也可以基于Proxy,以实现0copy序列化、push、sort啥的
总之就是确定最小问题是什么,然后组合、复用、降低复杂度来换算法的高效能
GitHub
GitHub - cunarist/rinf: Rust for native business logic, Flutter for flexible and beautiful GUI
Rust for native business logic, Flutter for flexible and beautiful GUI - cunarist/rinf
#parser #css concrete syntax tree。CST 与 AST 相比,它将完整包含源代码中所有的 token 与 trivia 信息。以上面的代码为例,CST 会包含 { } 等 token 信息,甚至是注释、空白都会有。这对于实现 formatter 来说无疑是极为方便的。
https://blog.gplane.win/posts/raffia-and-malva.html
https://blog.gplane.win/posts/raffia-and-malva.html
blog.gplane.win
Raffia 与 Malva 的故事 | Pig Fang
Raffia 为何而生?Malva 开发过程遇到了怎样的麻烦?
duangsuse::Echo
https://t.me/hyi0618/3476?comment=1182 突然想吐槽一句🌝 我要是尊重业界这群自以为专业,动辄几十k代码堆砌出「劳动成果」的魔法师 尊重这些搞笑的过度工程、这些空有篇幅,而无功能点的大class 谁去尊重那些不断被强制更新,软件体积耗电量不断翻倍,功能却越来越卡、慢的用户? 谁去为新程序员踩的坑熬的夜买单? 谁去为谦卑的Pythonic、和WebAPIs的正确道路添砖加瓦? > 你会买百公里耗油100升,甚至1000升的汽车吗?在软件行业,业界一直这么做。 > …
#statement os #design
程序员为了教条规范放弃常识,就是最大的形式主义。
幸亏我学了元编程,不必被那些文字游戏所蒙蔽,可以有自己的心智模型。
只要穷举了「设计模式」们的Reason,就能跳过所有空洞的抽象,稍加设计,代码结构才能直观反映用户的视角。
如果,我没有遇见Prolog(https://tomstu.art/hello-declarative-world)和numpy、没有对C ABI和lisp的认识、不会写解释器和DSL,不能将协程/Reactive/OOP等“新框架”与C语言的旧需求对比着看,我肯定要被业界不沾边的教条主义牵着走。
“优雅的程序与它读写的数据,在结构上直观对应——Daniel Friedman”
从前后端到终端,从红黑树到递归和DP.. 有哪种代码不需要拆分业务逻辑、计算各色的数据?无非是晦涩或明确、重复或简洁、充满机翻感或编程如写诗。
富有语意的代码,“免费”的序列化与各种绑定..注入..的魔法,在lisp的时代就已经初具雏形。
别忘了对象树与GC、靠lambda隐藏部分参数的这个概念,就是他们的首创。 Javaer设计了那么多模式,很少有Visitor,ProxyDelegate 这样能跨语言保持一致的东西;然而60年前的函数式操作符,所有主流语言里竟然都是一个样!
部分程序员弄出来的私货,终究是暂时的闪烁,只有纯粹为语意服务的 functionals ,才能成为永久的光明。
React之流的各类“榜一”,对前人的工作有尊重吗?不幸地,沉溺于重造webkit等上游的轮子的他们,不屑于接受软件工艺的点化。
幸亏我遇到了先贤们的示例代码和优雅范式,他们对技术「自顶向下」的reasoning,才是真正与读者的平等交流,让大家能「早点休息」
而不是把对方视为copycat或翻译AI。
可怕的不是草台班子,而是你依赖的草台班子,抄袭魔改了另一堆草台班子……
如果一个人话都说不利索,讲概念难以简明扼要、一语中的,凭什么他靠写“新语言”的代码就能突破? 封问题,一定是消而不灭,照猫画虎尔,搞出更多让人头疼的坑。所以要兜售“永续学习论”“知识价值”咯..
其实,就是库的设计者一代不如一代。说是你不聪明不正经,那是在逃避编程语言的天职。
C诞生50年了,它所能实现的预处理期计算、单函数读写结构、栈参数和this变量的同构、
os级协程、将bytes重解释为"Proxy对象"如结构体的变量绑定,依然是后继寥寥, 更别说ndarray、正反函数、跨语言调用对象的这类常理化接口了,在编程界基本不存在!
Can programming be liberated from C-like OOP style? 😒 How long will it take?
https://tonsky.me/blog/centering/ #css ...
程序员为了教条规范放弃常识,就是最大的形式主义。
幸亏我学了元编程,不必被那些文字游戏所蒙蔽,可以有自己的心智模型。
只要穷举了「设计模式」们的Reason,就能跳过所有空洞的抽象,稍加设计,代码结构才能直观反映用户的视角。
如果,我没有遇见Prolog(https://tomstu.art/hello-declarative-world)和numpy、没有对C ABI和lisp的认识、不会写解释器和DSL,不能将协程/Reactive/OOP等“新框架”与C语言的旧需求对比着看,我肯定要被业界不沾边的教条主义牵着走。
“优雅的程序与它读写的数据,在结构上直观对应——Daniel Friedman”
从前后端到终端,从红黑树到递归和DP.. 有哪种代码不需要拆分业务逻辑、计算各色的数据?无非是晦涩或明确、重复或简洁、充满机翻感或编程如写诗。
富有语意的代码,“免费”的序列化与各种绑定..注入..的魔法,在lisp的时代就已经初具雏形。
别忘了对象树与GC、靠lambda隐藏部分参数的这个概念,就是他们的首创。 Javaer设计了那么多模式,很少有Visitor,ProxyDelegate 这样能跨语言保持一致的东西;然而60年前的函数式操作符,所有主流语言里竟然都是一个样!
部分程序员弄出来的私货,终究是暂时的闪烁,只有纯粹为语意服务的 functionals ,才能成为永久的光明。
React之流的各类“榜一”,对前人的工作有尊重吗?不幸地,沉溺于重造webkit等上游的轮子的他们,不屑于接受软件工艺的点化。
幸亏我遇到了先贤们的示例代码和优雅范式,他们对技术「自顶向下」的reasoning,才是真正与读者的平等交流,让大家能「早点休息」
而不是把对方视为copycat或翻译AI。
可怕的不是草台班子,而是你依赖的草台班子,抄袭魔改了另一堆草台班子……
如果一个人话都说不利索,讲概念难以简明扼要、一语中的,凭什么他靠写“新语言”的代码就能突破? 封问题,一定是消而不灭,照猫画虎尔,搞出更多让人头疼的坑。所以要兜售“永续学习论”“知识价值”咯..
其实,就是库的设计者一代不如一代。说是你不聪明不正经,那是在逃避编程语言的天职。
C诞生50年了,它所能实现的预处理期计算、单函数读写结构、栈参数和this变量的同构、
os级协程、将bytes重解释为"Proxy对象"如结构体的变量绑定,依然是后继寥寥, 更别说ndarray、正反函数、跨语言调用对象的这类常理化接口了,在编程界基本不存在!
Can programming be liberated from C-like OOP style? 😒 How long will it take?
https://tonsky.me/blog/centering/ #css ...
tonsky.me
Hardest Problem in Computer Science: Centering Things
Somehow we forgot how to center rectangles and must find our way back
Rachel: #android #css #web
写过复杂 UI 的人肯定知道要在复杂业务场景里把动画优化到 60 帧有多难
duangsuse:
为什么 shadertoy.com 和 gl-transitions.com 用几行代码就能做到呢? 为什么@3b1b 一个人用py就能实现呢
还不是框架做得烂 https://t.me/dsuse/19124
同意,类型系统不就是对字面和编译期键值的Matcher嘛, 占篇幅纯属过度设计
要是我,直接把 def(a:str) 写成 def(a~"")
现在ui还不是有用gl加速,结果到头来连满挣都做不到,一大堆空洞的class写得还不如numpy的那些公式
如果专业是指「我们必须保留所有历史错误」,我宁可保持饥饿、保持愚蠢
至少,对用字面量取代类型标注上是这样。 泛型也一样啊,写成 a=set() assert{a.add("")} 而非Set[Str]
我有一整个系统来替代现在的OOP和静态类型/编译期计算理论。
你不觉得typescript的类型标注是过度工程吗?作为把sql row 填到forif模板里的一些业务。
他们有这样依赖补齐、检查,完全是因为API的风格太含糊
动态类型只是在运行时能进行修改和(同名符号的)链接,方便元编程。 例如 for: class: 这种结构就是无效的
致胜优点是免编译(交互式编程/所见即所得)、隐式类型!
还有,在生态上,没有被缺乏语意的设计模式(例如序列化和依赖注入 aka with强类型KV:)所绑架
在子类型多态上,未必比得过静态OOP
难以拆箱(栈上分配)本该是一种可以被类型推导消除的副作用
我看到的是有初学者用 Cursor 写出类似字幕搜索的高层应用
编程的工程化,作为限制生产力的繁文缛节,如果只是 make computer happy,理应从人应该学习的部分去掉
例如,javac 用那一套class{}语法定义一个编译期字典,我们应该是做IDE插件去生成样板代码吗??
多少技巧模式是从语言缺陷来的?
狸::
说着要开发效率,用着到处加字段,SQL两百行,不合理拆分接口全部Object返
duangsuse:
还有全部POST :)
这样,其实你完全可以用WebSocket收发json吧
不是动不动脑子,这种业务组件根本不该让人写
白用了个http,就是当做饼干罐和 /git/push?url= 那样的子命令微服务吧🥰
直接跟py那样 import fire ,什么http服务器哎,封装为函数路径和调用算了。
就像以前还写什么argparse,哈,完全是样板代码
写过复杂 UI 的人肯定知道要在复杂业务场景里把动画优化到 60 帧有多难
duangsuse:
为什么 shadertoy.com 和 gl-transitions.com 用几行代码就能做到呢? 为什么@3b1b 一个人用py就能实现呢
还不是框架做得烂 https://t.me/dsuse/19124
同意,类型系统不就是对字面和编译期键值的Matcher嘛, 占篇幅纯属过度设计
要是我,直接把 def(a:str) 写成 def(a~"")
现在ui还不是有用gl加速,结果到头来连满挣都做不到,一大堆空洞的class写得还不如numpy的那些公式
如果专业是指「我们必须保留所有历史错误」,我宁可保持饥饿、保持愚蠢
至少,对用字面量取代类型标注上是这样。 泛型也一样啊,写成 a=set() assert{a.add("")} 而非Set[Str]
我有一整个系统来替代现在的OOP和静态类型/编译期计算理论。
你不觉得typescript的类型标注是过度工程吗?作为把sql row 填到forif模板里的一些业务。
他们有这样依赖补齐、检查,完全是因为API的风格太含糊
动态类型只是在运行时能进行修改和(同名符号的)链接,方便元编程。 例如 for: class: 这种结构就是无效的
致胜优点是免编译(交互式编程/所见即所得)、隐式类型!
还有,在生态上,没有被缺乏语意的设计模式(例如序列化和依赖注入 aka with强类型KV:)所绑架
在子类型多态上,未必比得过静态OOP
难以拆箱(栈上分配)本该是一种可以被类型推导消除的副作用
我看到的是有初学者用 Cursor 写出类似字幕搜索的高层应用
编程的工程化,作为限制生产力的繁文缛节,如果只是 make computer happy,理应从人应该学习的部分去掉
例如,javac 用那一套class{}语法定义一个编译期字典,我们应该是做IDE插件去生成样板代码吗??
多少技巧模式是从语言缺陷来的?
狸::
说着要开发效率,用着到处加字段,SQL两百行,不合理拆分接口全部Object返
duangsuse:
还有全部POST :)
这样,其实你完全可以用WebSocket收发json吧
不是动不动脑子,这种业务组件根本不该让人写
白用了个http,就是当做饼干罐和 /git/push?url= 那样的子命令微服务吧🥰
直接跟py那样 import fire ,什么http服务器哎,封装为函数路径和调用算了。
就像以前还写什么argparse,哈,完全是样板代码