Forwarded from dnaugsuz
如果你要做,还有更好的方法吗……
要这么写就别担心太多
为什么 html 是 var 啊…… 你应该写
为什么你要写
要这么写就别担心太多
为什么 html 是 var 啊…… 你应该写
val html: String = client.get(LOGIN_API).body?.string() ?: throw Errors.NetError() 不是么…为什么你要写
html!! 啊,而且如果你只 parse(resp.string()) 的话调用 string() 也没问题啊Forwarded from dnaugsuz
草生,你这么编程的话…… 在一段子程序里,是一类东西都可以叫一个名字了
用户的 1:1 宠物叫 val
如非必要,请别写
真正用 var 的情况往往是 for while 里循环更新变量,你这种完全可以内联的……
用户的 1:1 宠物叫 val
pat,用户 1:N 的寄养宠物也叫 for (pat in pats) ,然后你就可以把 pat 和 pat 变成一个 var 来“复用”废“好大脑力”编造的名字了,真棒……如非必要,请别写
var …… 你要明白有些 val 都是可以 inline 进引用处的,只不过为了简化代码提升可读性才拆开成不可变具名量,你用 var 语义就全毁了。真正用 var 的情况往往是 for while 里循环更新变量,你这种完全可以内联的……
Forwarded from dnaugsuz
#OCR #Java #code
float scale = 246f / 255;
Paint paint = new Paint() ;
ColorMatrix matrix = new ColorMatrix();
matrix.set(new float[] {
scale, 0, 0, 0, 0,
0, scale, 0, 0, 0,
0, 0, scale, 0, 0,
0, 0, 0, 1, 0,
});
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
paint.setColorFilter(filter);
getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, paint);
Forwarded from Hinnka Zhou
matrix.setScale(scale, scale, scale, 1);就可以
Forwarded from dnaugsuz
ColorMatrix.set(float[]) 是有一定 (float[]) 长度要求的吗 🤔scale 后面跟着4个0 是什么意思
最后一个 1,0 是什么意思
Forwarded from dnaugsuz
fun setupColorFilter(scale: Float = 246.0 / 0xFF) {
val matrix = floatArrayOf(
scale, 0,0,0,0,
0, scale, 0,0,0,
0,0, scale, 0,0,
0,0,0,1,0
)
val rgbaMatrix = ColorMatrix().apply { set(matrix) }
val filter = ColorMatrixFilter(rgbaMatrix)
val paint = Paint().apply { colorFilter = filter }
window.decorView.setLayerType(View.LAYER_TYPE_HARDWARE, paint)
}说实话,看到 #Ruby 关系式求解器 里作者实现了个
作者的实现方式也很奇怪, interleaveWith 就是
Iterable.interleave_with 我觉得挺奇怪的,真的是要 interleave? 总觉得可以 zipWith 什么的,但作者的水平又不可能不知道 zipWith作者的实现方式也很奇怪, interleaveWith 就是
(xs=[a, b], ys=[c, d]) res=[a, c, b, d] 而已,但他用的方式是一个 Array 不断 push pop 这么 cycle 下去的Forwarded from 开发者日报
GitHub is now free for teams
GitHub 刚才宣布,团队的私库也免费了。这就是说,GitHub 基本上是一个免费网站了,核心功能几乎都不要钱,只剩下企业版收费了。「分享自ruanyf」
GitHub 刚才宣布,团队的私库也免费了。这就是说,GitHub 基本上是一个免费网站了,核心功能几乎都不要钱,只剩下企业版收费了。「分享自ruanyf」
The GitHub Blog
GitHub is now free for teams
Every developer and team can now get private repositories with unlimited collaborators at no cost with GitHub Free, and we reduced prices for some of our paid plans.
Forwarded from Solidot
Stephen Wolfram 称找到了物理学基础理论的途径
Wolfram Research 创始人、Mathematica 软件的创作者、数学家/物理学家 Stephen Wolfram 发表博文,宣称找到了通往物理学基础理论的途径。Wolfram 称,1980 年代初他开始研究简单程序产生的计算宇宙时得到了一个惊人而重要的发现:即使一个系统的底层规则十分简单,总体上的系统行为能任意的丰富而复杂。这促使他思考:宇宙是不是也是以此方式工作的?我们在物理中所看到的丰富性和复杂性其底层是否是简单的规则。他因此写下了 100 页的《一种新科学》。现在,在年轻物理学家的督促下,他再次发表了 448 页的技术论文,描述了我们宇宙的物理属性从简单通用可计算的规则产生出来。Wolfram 表示这些属性与相对论和量子理论一致。其他人认为他的理论和弦论一样难以验证。Media
https://www.solidot.org/story?sid=64129
Wolfram Research 创始人、Mathematica 软件的创作者、数学家/物理学家 Stephen Wolfram 发表博文,宣称找到了通往物理学基础理论的途径。Wolfram 称,1980 年代初他开始研究简单程序产生的计算宇宙时得到了一个惊人而重要的发现:即使一个系统的底层规则十分简单,总体上的系统行为能任意的丰富而复杂。这促使他思考:宇宙是不是也是以此方式工作的?我们在物理中所看到的丰富性和复杂性其底层是否是简单的规则。他因此写下了 100 页的《一种新科学》。现在,在年轻物理学家的督促下,他再次发表了 448 页的技术论文,描述了我们宇宙的物理属性从简单通用可计算的规则产生出来。Wolfram 表示这些属性与相对论和量子理论一致。其他人认为他的理论和弦论一样难以验证。Media
https://www.solidot.org/story?sid=64129
为实现扒谱程序做了一点搜集
https://github.com/nwhitehead/pyfluidsynth 可以作为音阶合成库
https://github.com/vishnubob/python-midi 可以作为 MIDI 库
https://pypi.org/project/pyreadline/ 可以作为 CLI 监听库
MIDI 这个比较灵性,它不像 subtitle 那么简单,一个 MID 文件是由 events 构成的,如 NoteOn(tick,veloc,pitch), NoteOff(tick,pitch), EndOfTrack
程序的设计大概有两个过程
第一个过程利用数字键盘输入(
可以用 Delete 删除上个音阶、 C-R 重放一遍、 C-I 粘贴、 Enter 确认
第二个过程可配合进度条和时间
用 A 来创建音符事件(但不会改变音高流)、S 来迭代下一个音高(从保持按下的A键切分)
用 Delete 回溯 5s 的音符,用 Enter 确认
-note-base 是指简谱基础音高
-play music 是在 cliReadTimeline 时配合放的音乐文件
-hot 是个 flag,可以禁用 S 键并且让 A 键带有迭代音高的效果
https://github.com/nwhitehead/pyfluidsynth 可以作为音阶合成库
https://github.com/vishnubob/python-midi 可以作为 MIDI 库
https://pypi.org/project/pyreadline/ 可以作为 CLI 监听库
MIDI 这个比较灵性,它不像 subtitle 那么简单,一个 MID 文件是由 events 构成的,如 NoteOn(tick,veloc,pitch), NoteOff(tick,pitch), EndOfTrack
程序的设计大概有两个过程
def cliReadPitches(note_base=note.C) -> List[int]
def cliReadTimeline(mode="normal", seekback_ms = 5000) -> List[Subtitle] 第一个过程利用数字键盘输入(
[12] 这个语法可以输入高音阶 )可以用 Delete 删除上个音阶、 C-R 重放一遍、 C-I 粘贴、 Enter 确认
第二个过程可配合进度条和时间
用 A 来创建音符事件(但不会改变音高流)、S 来迭代下一个音高(从保持按下的A键切分)
用 Delete 回溯 5s 的音符,用 Enter 确认
-note-base 是指简谱基础音高
-play music 是在 cliReadTimeline 时配合放的音乐文件
-hot 是个 flag,可以禁用 S 键并且让 A 键带有迭代音高的效果
GitHub
GitHub - nwhitehead/pyfluidsynth: Python bindings for FluidSynth
Python bindings for FluidSynth. Contribute to nwhitehead/pyfluidsynth development by creating an account on GitHub.
import pyaudio, fluidsynth
RATE = 44100
pa = pyaudio.PyAudio()
stream = pa.open(RATE, 2, pyaudio.paInt16, output=True)
class NoteSynth:
def __init__(self):
self.synth = fluidsynth.Synth()
def setFont(self, path_sfont):
self.synth.program_select(0, self.synth.sfload(path_sfont), 0, 0)
def sampleNotePitch(self, pitch, n):
self.synth.noteoff(0, pitch)
self.synth.noteon(0, pitch, 100)
return self.synth.get_samples(RATE*n)
synth = NoteSynth()
synth.setFont("example.sf2")
stream.write(synth.sampleNotePitch(20, 5))