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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
#Cplusplus #CV 🤔 讲真,我真的不喜欢 OpenCV 的动态属性,它把本来可以轻易自动补齐的东西变成了还要查会文档、本来可以更强类型的东西做成了一堆 int 不仅使用动态属性,还不对常见 prop (比如 fps, position) 做些辅助属性…… In [1]: from cv2 import CAP_PROP_POS_MSEC CAP_PROP_POS_AVI_RATIO CAP_PROP_POS_FRAMES CAP_PROP_POS_MSEC OpenCV…
之前记下的 API 都是什么情况…… 要完成这些,我必须得到按 行/字 迭代每帧像素的方法
https://docs.opencv.org/4.5.0/d8/dfe/classcv_1_1VideoCapture.html 找到官方文档了(话说一般 CV 都是 #Python 写应用……
https://docs.opencv.org/4.5.0/d3/d63/classcv_1_1Mat.html 还有这个,单帧图像接口

看了半天找到 opencv2/videoio.hpp, highgui/highgui.hpp 和 imread/imwrite, empty, cvNamedWindow,waitKey, CV_WINDOW_AUTOSIZE, imshow, VideoCapture, read, operator>>, Mat ,channels, at, Scalar,uchar,Vec3b,val[] 这样的符号 #cplusplus #api #doc 🤔
Mat img(/*.rows*/1920, /*.cols*/1080, CV_8UC3);
typedef cv::Point3_<uint8_t> Pixel;
for (int i=0; i<img.rows; i++) { // raw access
Pixel *p = image.ptr<Pixel>(i, 0), *p1 = p + image.cols;
for (; p!=p1; p++) { *p.x = 255; }
}
for (Pixel &p : cv::Mat_<Pixel>(img)) { p.x = 255; } // mat iter
img.forEach<Pixel>([](Pixel &pixel, const int* position) { p.x = 255; }); // parallel forEach
//C++11 lambda, old:
struct Operator { operator()/*^above*/ }
好了,找到了 Video 的 nextImage 和 Image 的 n[row/col], pixelAt 操作我就可以写了……

相关链接:
[Linux Terminal has the capability of displaying 8-bit colour, so why not play something on it?](https://gist.github.com/Trumeet/fd4e93d69d78dc4ac14d5cac42dfff7e)
[OpenCV - Colored Images to GrayScale - Tutorialspoint](https://www.tutorialspoint.com/opencv/opencv_colored_images_to_grayscale.htm)
[OpenCV: cv::VideoCapture Class Reference](https://docs.opencv.org/4.5.0/d8/dfe/classcv_1_1VideoCapture.html)
[Tutorial 6 - Assessing the pixel values of an image OpenCv C++ | ProgTpoint](https://progtpoint.blogspot.com/2017/02/tutorial-6-assessing-pixel-values-of.html)
[duangsuse-valid-projects/Essay-DIP-BMP-SIMD-Operation: C11 BMP Image Reading / Writing, SIMD using GCC xmminstric.h operations like AND / XOR / Dense](https://github.com/duangsuse-valid-projects/Essay-DIP-BMP-SIMD-Operation#my-machine)
[duangsuse-valid-projects/Essay-CSharp-DIP.Performance.Parallel: 🐔 versus 👨🏻‍🎓: WHO is faster? Is CSharp &quot;slow&quot;?](https://github.com/duangsuse-valid-projects/Essay-CSharp-DIP.Performance.Parallel/)
#web #js #api
https://stackoverflow.com/questions/4386300/javascript-dom-how-to-remove-all-events-of-a-dom-object

iframe 标签可用 .contentDocument
Node 可用 .getRootNode() 获得 # document
window.getEventListeners().click[0].listener() 可以枚举事件监听

本来打算用 ev=>ev.stopImmediatePropagation() 禁用 onpaste 的,没想到被加在最后…… querySelector 的列表也不对,窗口也定时刷新
学习通的网页

当然如果预加载脚本 AOP 就可以拿到 UEditor plugins["paste"] 配置对象或实例直接配置了,可是不能…… 粘贴事件是在 beforepaste 被否决的,但好像不是 DOM event ,居然自己弄了个同名的……


对了 Firefox 没法枚举事件监听更不能前置插入监听, setAttribute(onpaste 也不能前置监听,但仅就这个「无法粘贴」问题而言,可以把之前 preventDefault 的逻辑改回来: e.onpaste=(ev)=>ev.target.append(ev.clipboardData.getData("text/plain"))

这个涉及 Clipboard(Event)? 和 DataTransfer API #web 🙊
duangsuse::Echo
#js #web #DontKnow DOM 小提示! 😘 1. with(e.parentNode){ insertBefore(e1, e); removeChild(e) }可以用 e.replaceWith(e1) 替换 2. e.remove() 等于 e.parentNode.removeChild(e) 3. children, firstChild, prevElementSibling 不会获取到 text node 而 childNodes, parentNode, nextSibling…
#html #dom #API #doc #dontknow
https://duangsuse-valid-projects.github.io/Share/HTMLs/school/ 🌝新写了个弹球动画,我真是 HIGH 到不行,赛高哩HIGH哒≈

https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats

还有之前的剪贴板我也查了
document.querySelectorAll("[contenteditable]").forEach(e=>e.onpaste=(ev)=>{ e.execCommand("paste",false,ev.clipboardData.getData("text/plain")); })

[在线Html编辑器粘贴过滤技术详解(一)_weixin_33910460的博客-CSDN博客](https://blog.csdn.net/weixin_33910460/article/details/89910701)
[JavaScript如何获取粘贴事件的剪贴板数据(跨浏览器)? - 问答 - 云+社区 - 腾讯云](https://cloud.tencent.com/developer/ask/186776)

另外在找的时候我发现一个 1k star 的 JS DOM 变动静态库,思想挺有意思的,不用 MutationObserver 和 NodeIterator,TreeWalker (document.createXXX(e).nextNode() ) 什么的,而是利用了自定义 @keyframes 的事件 animationStart 。 API 类似 inotify , on(selector,op) 这样

https://github.com/muicss/sentineljs
然并暖,到 DevTools events/debugger 面板看看 DOM Events 的归类就能发现有一大堆 DOM 变动的事件支持嵌套次序🌚
$0.addEventListener("DOMSubtreeModified",console.log); $0.getRootNode().body.setAttribute("contenteditable","")
稍有常识的人不难看出,如果我们的 API 继续前进,类似的魔法还能有价值吗?
tg侧边栏的落雪特效: 每.5s/100 移动 P=随机点 随机(雪花,白球) .5s P+随机xy
前几天做的粒子动画实验,隔2状态随机1次 就很合适,可惜点赞不够 我懒得做 [xy,+-雪/白球 透明];而且雪花咋画呢.. 但tg客户端代码质量真不行,我估计它为这写了一个文件,但其实客户端交互动画挺多的。

#windows #api #hack https://tttttt.me/yscschan/6968
Win32 窗口置顶zIndex问题.任务栏开始菜单 都是窗口
Win8+的Band层z序最大如果想在任务栏上显示UIAccess或注入CreateWInBand /SetWBand (shell32常规是注入?..
ysc发现有key EnableAMAccess (w32kfull.sys活动管理) 后可以使用后者自由提升窗口,key限取一次,SetShellWindow 登录时 pcshell.dll 管理,只能重启explorer.exe hook NtUserAcquirel 获取key ;好奇怪的私有API

窗口置底问题.Win8+ 桌面图标可独立窗口,只要 SendMessage 0x52C 给某窗口,它变成最底;再将 shelldll_DefView 图标下方 WorkerW 隐藏,ffplay --noborder xy=00wh=屏幕宽高 这样的播放器就是动态桌面
ShowWin(,SW_) SetParent(w,w0)
EnumWindows(f(w,argv)) FindWindow(k,fl=0) -Ex(in_w?,next?,k,fl)
SendMessageTimeout(w,k, 3x, dt, fl)

#py 计划
100粉的头图黏合Py PIL生成。为啥不是canvas或OCV或Java? Pillow Image.open/new/resize 和 getpix, Draw(im) 的API想必是熟悉了,这次我们要用100张图片 拼出小宽高的灰度图,流程是:mask.png w h *.png
若mask不存在,求得(x,y,cp) 网格排布 绘制。输出 mask 再编辑
否则,对 a=mask (x,y,resize(1,1)lum亮度) 和 b=cycle(im list) 共同 sort, imOut.paste(bim,axy) 后高亮图肯定在高亮mask点
#api #web 波形可视化 https://collab-project.github.io/videojs-record/demo/audio-only.html

c=player.wavesurfer().surfer //play , handlers.audioprocess (所有播放器都在tick时重绘进度条, finish
b=c.backend.buffer, c.drawBuffer() //展示所录制的音频波形
b.length, b.getChannelData(0) //一般 %44100 pps, float 格式

#oi #math 这个就不是信号处理的FT了,它是针对多项式 各项系数/x-y联立 表示 ,一个分治法,一般用来加速高精度乘法
系数转点值的算法叫DFT(离散傅里叶变换)
https://blog.csdn.net/Flag_z/article/details/99163939 }

FFT 令原 Pk=f(t)*e^-i2pik dt ,P=震幅相位,k=频率。用sum写是 Pk=Sum[i=1~N]f(i)*e^-i2pik *(1/N) #math #algorithm
先把 e^-i2pik*(i/N) =cos,sin缓存为Wi=Wn ..
算法的核心是ωn矩阵和fn数组(列矩阵)做矩阵乘法运算,因为ωn是复数,所以运算出结果也是个复数rval + i * ival,最终频域的值其实上是其模值,但为什么模值需要乘以个bSi 是为平滑
e^{ix} = cos x + isin x; ωn = e^{-2πik/n} = cos(2πk/n) - i * sin(2πk/n)
然后for(k N/2)for(i nBuf)x+=cos*buf,y sinbuf
频谱的信号只需要分析N/2就可以了,另一半是共轭的。 总之是算一个频时把exp(kt)缓存(把圆N等分 就不迭t0~1) 且同频宽的计算量/2

https://www.cnblogs.com/RabbitHu/p/FFT.html
https://zhuanlan.zhihu.com/p/197450738 JS fft

高精度乘法是 10e6 以上位,longlong 都能溢出的整数乘法,可用 a[i-1]+a[i]/10,a[i]%=10 手动进位法。i in"1",j in "2" a[i+j]=parse(i+j) 后迭 i+1-2 次(倒位相乘处理进位,再倒回来)
也可做<10e6常量优化,不致溢出就机器乘;溢出6位数才竖式计算

FFT蝶形系数换位 0~7 到 04261537 打表偶奇数|分割 实际是个 a[i]=a[~i] 的置换,向上还原
多项式每层(+)都要分为等长2部分,最高次项一定2幂
conj是自带求共轭复数。当复数模长为1时,共轭复数等于倒数
https://blog.csdn.net/zccz14/article/details/51592893 这里还有个咱方法的

(抱怨一句,同时我也感到数学的闲散了, 你说=xy点=向量还图示,不如直接说复数=向量,什么加减法则啊abcd废话都莫说了,直接说乘法咋用;还什么膜长,幅角,余数非得说是模数 还不挑明,还 modular math(转钟计算) ,还共轭复数(相反向量),好像数学能模块化 还co-sine 余弦.. 叫竖弦咋样?噢带横竖就不可配不严谨。文绉绉的,好像只有数学家会看函数图一样,a+bi 哪有Pxy易读,非得入侵人家的领域表达法,带来不少无聊问题,起个名词 Complex(real,imag) ,复杂呵呵,一点语义都莫得,无意义的“运算符重载”,计算机没有real数,要SP却仍要拜数学为师了;它一装逼,下游应用名词全乱起来
一些废话说它何用,好像最后阅文的是机器,然鹅数学代码高亮都没得,记法和作用域混乱到机器用不了,还得人来翻译,可真两边不是人了,难怪被”憨蛋“们抱怨,啥事都插足包装,太爱整无意义担心了
复数给C引入了“向量计算”,我是不是还得谢谢数学啊 🌚 这么多文章天书一样重复的符号,看烂代码已经够累,还要看草记版公式上下标,数学的招牌。请问我的阅读顺序是 lr-tb 还是 tl-br 啊?我不是天才 真没精力了!

http://watmough.github.io/jsFFT/Example.html http://www.storiesinflight.com/jsfft/visualizer/index.html 那个 dsp.js 1.6k star
duangsuse::Echo
#AI #statement 我发现 R1-32B 和 claude.ai/Sonet 202406 完全不能帮我完成框架设计😡 目前看来,它们的独立作业能力, 甚至比 docs by example 略低,但是对单一科班任务,尤其是游戏开发、全栈模板、UIUX 等全凭信息差任务,依然能很便利的完成, 尤其是在选型阶段能demo出很多有用的可拼接snippet,但需求稍微有点大化(比iOS脚本复杂点的那种) 就丢三落四,给你巨大的甲方压力, 很多程序员并不喜欢为这样的小问题反复修改chat上文的…
#news

省流:iPhone 16e
阉完了,全都阉完了,60 Hz 屏幕,灵动岛砍成刘海,拍照键砍了,UWB 砍了,WiFi 7 砍了,连 MagSafe 都没了

https://youtu.be/c3rmWlHY9Uo 来看看突破区的科普是如何讲解的熟电池返生的。

yihong0618 和朋友们的频道:
#tech
https://www.tisonkun.org/2024/01/26/devrel-qualified-leads/

我的经验是去 twitter,linkedin 上搜最近项目相关的 post,去 github 上搜最近包含项目名字的 issue 和 commit,再有就是去搜关联项目的 slack、telegram 频道里有没有相关的聊天记录。尽可能用这些人的主动信息来获取项目情况。

#api
https://blog.jcix.top/2024-03-11/minio_s3fs/

Dante's Limbo:
#ai #技术垄断

近代思想史上最重要的一件事是启蒙,按平克的说法,启蒙三大支柱之一就是人本主义。LLM 是否在倾覆(或者说至少在改变)人本主义?

https://tttttt.me/danteslimbo/4396

duangsuse:
人本主义是尊重人的权益,为了尊重而尊重

如果说网约车司机取代马车夫,叫做没有人本主义,那就不应该投资科技,因为以后行行业业都是这样的案例

反而是社会形态需要适应科技进步,不然就会失衡
👍1