duangsuse::Echo
712 subscribers
4.24K photos
127 videos
583 files
6.45K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#blender 4个官方Demo文件。 包含几何节点、2D pencil+NLA组动画

如果你用触摸板,在设置-输入里打开鼠标中键模拟,否则无法Alt拖动视图。
Blender的UI 由面板(标题/按钮+状态栏)组成,面板是可切分/合并/关闭的。在间隙十字光标-拖动就能切分新面板。 单击3D视图旁的加号开/拖拽关闭浮窗
Gizmo(Z-up 座标系小箭头)和选中高亮在3D视图状态栏右数第3 区开关,其他可在[视图]菜单调;(Shift)小键盘也可以调整视图座标
所有菜单项都能指定快捷键,往往还能在[Scripting]布局查看脚本宏

Shader节点可以用来定义纹理绘制/渲染后处理
duangsuse::Echo
什么最值得感恩
正确答案是一个也不选。因为这些全都值得感恩嘿嘿嘿😊
可能是来 #Telegram 太久,对党恩的习性越来越了解,类似的事情已经见怪不怪了。之后的中国只会越来越❤️

其实大家先讨论封不封时, 这首歌存在多少天都不重要了,泄民愤的目的达到了😒 然后再删,也就那样
Forwarded from 螺莉莉的黑板报
http://tridiv.com/

用 CSS + HTML 画三维物体的可视化编辑器。

你们……CSS 上脑的人好可怕……
#ce #plt 带步骤的四则计算器。递归逆波兰。22行代码
浅先=`;=;+ -;* / %`
流=(a, _s=[...a].values())=>()=>_s.next().value
切2D=(s,sp0,sp1)=>s.split(sp0).map(s=>s.split(sp1) )
{let t={},k; 切2D(浅先,';',' ').forEach((x,i)=>{for(k of x)t[k]=i}); 符深大=t}

符链=(s,l)=>{let a=[],add=x=>a.push(x),
o,x=()=>add(Number(s())),
one=ed=>{x(); let A,B;for(o=s(); (A=l[o])>=(B=l[ed]);)if(A!=B)one(o);else{add(ed);x();ed=o,o=s()} add(ed)}
one('');a.pop(); return a//深先. ^已优化:仅 l右>l现 递归.等价逆波兰, 注意o=s()只一次
}
{
B=document.body;B.innerHTML=`<input id=x> <b id=y>`
B.style.cssText=`display:flex;flex-direction:column; white-space:pre`
x.onchange=()=>{y.innerText=(this.expr=符链(流(x.value.split(/([-+*/%])\s*/g)), 符深大) ).join(" "); B.append('=',折叠(expr),'\n\n')}
}
折叠=(码,算=(st,k,a,b)=>{console.log(a,b,k,码); B.append(折叠([...st.slice(0,-2),a,b,k,...码],(_,k,a,b)=>a+k+b)+"\n");return eval(a+k+b)})=>{
let st=[],x;
while(null!=(x=码.shift()))(typeof x=='number')?st.push(x):
(i=> st.splice(i,2, 算(st,x,...st.slice(i)) ))(st.length-2)
if(st.length!=1)throw st; retu
#OOP #FP 可怜人的函数闭包是对象,可怜人用对象表示闭包,都很悲哀 :(
edit: 面向概念和面向动词各有所长,但我更喜欢FP, 语言只提供class会给复用带来很大的问题
Forwarded from 螺莉莉的黑板报
微信的炸屎是用 Unity + Webview 做的,QQ 里面的特效是用 UE 做的,他们都有美好的未来.gif
#web #tools remix.run 🤔这个 scroll 位置动画...
metademolab.com 能让表情包动起来
duangsuse::Echo
#ce #plt 带步骤的四则计算器。递归逆波兰。22行代码 浅先=`;=;+ -;* / %` 流=(a, _s=[...a].values())=>()=>_s.next().value 切2D=(s,sp0,sp1)=>s.split(sp0).map(s=>s.split(sp1) ) {let t={},k; 切2D(浅先,';',' ').forEach((x,i)=>{for(k of x)t[k]=i}); 符深大=t} 符链=(s,l)=>{let a=[],add=x=>a.push(x)…
#learn 首先来了解下中缀链优先级解析法
1+2*3 即 1+(2*3)
1*2+3 即 (1*2)+3 ,即前缀 (+ (* 12)3),+的优先比* 低,所以它离树根最近、最后计算。默认先算左边的

one=ed=>{x(); for(o=s(); l[o]>=l[ed];)one(o) add(ed)};
o是最新一算符、x()是读单项。每层会收纳级=它的算符链,1+2 *3 +4 时乘法深度往上攀升,就先add(*),然后才落回 +的层次继续 x()=4,直到 o=null 整个栈退出
one('')&a.pop()
初始是一个不可能出现(没有平级项)的算符,它add('') 后将这pop()掉
return a
//1 2 * 3 +

中缀记法是所有编程语言的必备文法,调用链也是中缀链。但括号代表啥呢?代表一个单独计算的整体(算术表达式Expr) 从而避免优先级争夺
除了 if,?: 等条件结构外,包括函数调用和{}都可以用栈表示,栈就是说
1 2 * 3 + 遇到数则记住,遇到符则把最近2数弹出来,算为1个数记回去,这样深深的递归eval() 就变成单层、可中断的了

然后是第二部分,如何显示求值步骤。其实看右侧你们也能发现栈机执行中 单次运算(k,a,b) 时 [*st[:-2] ,a,b,k=opcode,*代码][*st,*代码] 是执行前的代码副本
这个副本是随代码执行不断在缩小的,我们能拿到「当前步骤」的整体代码
而“toString计算栈”也是种 折叠(代码,二元计算) 操作。拿它显示代码正求值的步骤就OK了