程序员只应该考虑一件事情,就是脑子,就是要实现最重要的事情,最终对应到各种各样的抽象模型——时序、高阶流程控制、状态机、文件树、列表处理、数学计算、图形控件、2D画布,不是说七国语言精通各种运行环境和奇技淫巧,如果有,就让少数人解决、多数人享受解决方案。伺候什么构建系统啊?构建系统和依赖关系就该由工具解决,可工具偏偏还足够有『扩展性』弄得描述个软件包依赖都那么麻烦,什么 node_modules 啊、
automake.m4、configure.ac 啊。
/tmp/duangsuse.sock
这个等式就应该重构,为什么我们不先算每个 channel 的 byte length,再求总共的积?那样不是更符合正常思路吗?
说白了就是 (rate * size) * channel 还是 rate * (size * channel) 的区别。
之前没那么弄是因为它有一个特别蹩脚的生成循环,我不得不尝试抽提出 SoundBuffer。
之前没那么弄是因为它有一个特别蹩脚的生成循环,我不得不尝试抽提出 SoundBuffer。
我还以为可以有很多 QApplication 实例呢,原来这都是静态方法啊,还好 clang-tidy 指出了这一点。
真的搞不懂如此混淆,只为写短点是有什么好处,那么多本来是 unsigned type 的东西非得用 int,还不统一,真是让人费解,Rust 是解决了这一点。
真的搞不懂如此混淆,只为写短点是有什么好处,那么多本来是 unsigned type 的东西非得用 int,还不统一,真是让人费解,Rust 是解决了这一点。
就命名而言,我还是觉得 byte short int long 这样的命名方式好一些的,唯一的例外是 Rust 那样 i8 u32 的命名方式,CLR 和 Qt 这种 uint8 真的会让非英语母语的人很困扰的。
我讨厌把非关键的东西写长,一个字符也不行,所以我用 C++ 的 using(typedef) 给 Qt 的 core primitives 都起了 Rust 式别名
利用
shuf 弄混这些项目:#include <QTimer>解析器不成熟,所以不能有空行。真是浪费时间
#include <QIODevice>
#include <QScopedPointer>
#include <QByteArray>
#include <QLabel>
#include <QSlider>
#include <QAudioOutput>
#include <QMainWindow>
#include <QPushButton>
#include <QComboBox>
#include <QObject>
可悲的我终于又记起来了 print() 后直接退出程序不会刷新 stdout buffer 的。
不对,是我的 histogram 程序写错了,我还以为我记得住,不对是成功理解了的,真是令人悲伤的故事。
不对,是我的 histogram 程序写错了,我还以为我记得住,不对是成功理解了的,真是令人悲伤的故事。
[QTimer, QIODevice, QScopedPointer, QByteArray, QLabel, QSlider, QAudioOutput, QMainWindow, QPushButton, QComboBox, QObject]
QIODevice
QTimer
QAudioOutput
QObject
QScopedPointer
QByteArray
QMainWindow
QLabel
QComboBox
QPushButton
QSlider
修好 bug 后,本苏又觉得自己行了。
// audio: channel * sample
// sample: rate(sample pre sec) / size(bit size)
typealias Real = Double
typealias Sample = Double
abstract class SampleIterator: DoubleIterator {
final override fun hasNext() = true
final override fun nextDouble() = nextSample()
abstract fun nextSample(): Sample
}
typealias IndexedSampler = (Int) -> Sample
open class Wave(private val y: IndexedSampler): SampleIterator {
private var x = 0
override fun nextDouble() = y(x++)
}
open class RepeatWave(y: IndexedSampler, private val cycle: Real)
: Wave({ y(it) * cycle * ((i%cycle) /cycle) }) /*cycle realdiv (i%cycle)*/
object SinWave: RepeatWave({ sin(2*PI*it) }) 现在正在写