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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
说到电子语音,国内某些辣鸡程序员的语音合成实现基本就是个自动控制的播放器,基本不涉及语音学和信号处理内容,质量非常辣鸡... 稍微好点的也不会用机器学习算法尝试让声音『自然』一点,还是简单调音高时长 shift
Forwarded from LetITFly News (LetITFly 让技术飞)
“考试合格”是这个世界上最动听的电子语音。(科目三)
https://github.com/duangsuse/MonkeyVM

炒冷饭,可能是目前为止我很少的 Rust 程序了,虽然还是两年前的...

说实在话,我觉得它不怎么样,因为那时候我真的什么都不懂,当时我也想根据一位大佬(coding 上某位写过目标为猴语言编译器的大佬,不过他没写 parser,而是直接用了 ECMAScript 语法解析库)的建议,把这玩意弄成 native 编译器(可是那时候我连内存是什么都不知道,甚至 malloc 是啥也不知道... 更别提 alloca、memmove 什么的了)

很可惜我当时是看不懂 x86 汇编的,更不理解 GNU AS 汇编器的功能,尝试自然是失败了

可见会 Rust 也未必是大佬啊!

所谓的越复杂越容易堆砌,大概就是这样,这个程序当时我堆砌了大概一个星期,9k 行代码,最后连二进制序列化的操作都有了...
可惜它到底有多么复杂的算法?我不清楚,但当时我的确是很菜。
#GitHub 炒冷饭,因为 duangsuse 私人帐号下全是黑历史和完全没有用的 repo,以后 duangsuse 会把有用的代码放

https://github.com/duangsuse-valid-projects

这里,自己帐号下之前的代码会 transfer、不属于自己而属于其他 org 的代码会直接 fork 一份。
Forwarded from duangsuse Throws
https://github.com/duangsuse-valid-projects

导入了 62 个 repo,但是还是感觉自己没底气,大概是因为 OO 抽象写得不如别人多、Android 平台不如别人熟悉
改日我有时间了多写点 Android 应用和封装 SDK 什么的的话会好一些
duangsuse Throws
https://github.com/duangsuse-valid-projects 导入了 62 个 repo,但是还是感觉自己没底气,大概是因为 OO 抽象写得不如别人多、Android 平台不如别人熟悉 改日我有时间了多写点 Android 应用和封装 SDK 什么的的话会好一些
本频道里的东西,比如 AlpineDepolyer Python 脚本和 RustPlayBot/PythonPlayBot 就暂时放着了(不过我给加了个频道链接,反正那些也不是什么不得了的东西)

不得不说,后来再看我的确很菜,我之前没有一个面向对象的(比如,Java 类)抽象是被正确构造的... 而放在别人那里就多很多,还用 Java 软件架构常用的结构,比如 Annotation

至少看到了所谓的应用程序设计吧,真的用了不少别人的抽象呢,所以说底气不足,大概是实践不够

就好象看到会玩魔方的别人而自卑一样,但自己不经过长时间的训练,又如何能与别人相比呢?这样的话要么然花时间学魔方矩阵操作模型和模式识别,多训练、重操作速度,不这样怎么知道自己有没有能力做到?或许还能做到更好呢?

当然现在都过去了,我现在有能力,而且只要有时间,我一定能做到比以前本质上的进步,甚至超越别人(至少在某些方面是肯定可以的,因为这些是所谓更高层次的知识,和可以通过看代码抄代码改代码得到的技能有本质性的区别,就是所谓的『理解理论和进行分析程度的能力』)

我不是只会 quick hack,而是因为没时间所以真的只能去 Quick hack

越复杂越容易堆砌,我以前有时间的时候不是没有堆砌过这种功能多一点的东西,MonkeyVM 就是一个例子,这个虚拟机连”二进制代码文件格式“都写出来了,可是这能证明我理解它了吗?它只是个复杂的玩具,看起来像是有点用处而已,实际上内部依然只是空虚没有什么意思的逻辑,这种逻辑即便多一点又能怎么样?也不能证明我比别人多了些什么特别的东西。

所以我开始写所谓简单但难于设计的程序,开始看各种工程或者理论性的书籍,开始信奉简洁优雅定义自己的逻辑,即便自己依然 可能不是真正理解也要这么做。

所以我现在听到他们说『duangsuse 什么都会』『duangsuse 大佬』(这是貌似的意思,我只是大概描述一下....)
的时候甚至会怀疑,是不是在讽刺我...

希望有一天会彻底消失,不过我知道会很慢,因为那一天我必须写过所有他们写过开源的程序才行,因为打算涉足所有(软件)领域,所以要把所有领域的人都视为竞争者呢。

我知道我有时间赶,从基本的软件架构、GUI 程序、编译原理、关系代数开始,到计算机图形学、信号处理、人工智能、电子和无线电、操作系统,是以后每天要准备开始写代码的日常呢。
那么大概就是这样吧 #GitHub 现在有 64 个,但我马上还是要写新的东西的
无聊的 C 实践中.... 话说,UNIX 系统编程不容易,说起来要顾虑的就有好多、通信、线程、同步、套接字、信号和定时器、文件系统...
糊涂啊,fread(buf, sizeof(...), count, fp) 的时候,我居然把 byte size 弄成 unsigned int 了,heap 直接爆炸,我还以为是自己分配错了...
Radare2 是最好的二进制编辑器 #bin
duangsuse::Echo
Radare2 是最好的二进制编辑器 #bin
https://www.fileformat.info/format/bmp/egff.htm

BMP Version 4

第一个版本很好读取,只需要 unpack 就可以了(看这里

>>> struct.unpack('<ccIIIIIIHH',bmp)
('B', 'M', 691256, 0, 54, 40, 640, 360, 1, 24)

从结果 54 (矩阵偏移量)开始:
一个 4 字节整数:Header 的字节数
一个 4 字节整数:图像宽度
一个 4 字节整数:图像高度
一个 2 字节整数:始终为 1
一个 2 字节整数:颜色数
Forwarded from dnaugsuz
<ruby>duangsuse <rt>/'dʊɔːŋ suːz/</rt></ruby>

写了个名字的(IPA1)音标,你们觉得对吗?我在 Synthesizer V 上试过

AB 里这个 [dʊɔːŋ] [suːz] 表示 [d uh ao ng] [s uw z]
汉语拼音里大概可以是 [d ua ng] [s yu s e](有变化,因为我不熟悉拼音... 改天写个 tokenizer?)
新名字 duangsuse /'dʊɔːŋ sjuːz/ | [⃪PROM, FP]

显得简单一些

| [⃪PLD, FPλ]

这样 PLD 和 FP 就不会被误读了(PLD 是,好像是 FPGA 更好,其实是说 duangsuse 感兴趣的低到嵌入式层面,可是如果熟悉电子设计一定会知道 Programmable Logic Device 的)
FP 后面加上 lambda 符号肯定是说函数式编程的 FP 呢
不得不说,这是大小端的问题非常喜感,我明明什么都没做,只是保存了一下文件... 就自动帮我反色了
duangsuse::Echo
不得不说,这是大小端的问题非常喜感,我明明什么都没做,只是保存了一下文件... 就自动帮我反色了
不,其实是我写错了... 好像多输出了一个字节,我都不知道从哪里来的,可是它影响了 BMP 矩阵的解释(shift 了一个位置,结果会导致这样的颜色值问题)...
前面的元数据一毛一样,可是后面的矩阵却被多写了一个字节
我只好注释掉了这个... 我觉得比较有用的流位置指定
duangsuse::Echo
我只好注释掉了这个... 我觉得比较有用的流位置指定
初步考证可能是由于 reader 程序对动态大小结构 DIB 的处理有问题,正在修复

表现的现象是读取矩阵时往前 seek 一个字节就不会出问题(不会影响颜色值的解释),但这么做输出的文件依然和源文件不同

我也在怀疑是不是索引格式的问题(零基和非零基什么的)
果不其然... DIP Header 把长度自己本身 4 字节的大小也算在里面了...