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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
Download Telegram
Kotlin 可以用 sequence,ParserKt不是handle这种情况的,虽然可以写
Forwarded from 羽毛的小白板
新时代 HTTP request message parser。状态机化是为了解析遇到 buffer 不足时可以等待扩充并回到之前的位置重试
enum class State(val no: Int) {
Begin(0), Method(1), RequestUri(2), Version(3),
Header(4), Body(5), End(-1);
inline val hasNext: Boolean get() = no != (-1)
inline val next: State get() = State.values()[no.inc()]
}

internal fun parseRequest(data: ByteIterator) = sequence {
var state = State.Begin
while (state != State.End) {
var currentItem = when (state) {
State.Method -> ::parseMethod
State.RequestUri -> ::parseRequestUrl
State.Version -> ::parseVersion
State.Header -> ::parseHeader
State.Body -> ::parseBody
else -> impossible()
} (data)
//if (currentItem == null) throw InvalidHttpRequest()
if (currentItem != null) yield(currentItem)
else throw InvalidHttpRequest()
if (state != State.Header)
state = state.next
}
}


注意,上面的用的是 Kotlin 的 sequence 和 ByteIterator
不是可以自定义切片(Slice)的 SpanView(ReadOnlySpan)

如果需要等待也可以用 sequence 子解析器

新的修复版本:

enum class State(val no: Int) {
Begin(0), Method(1), RequestUri(2), Version(3),
Header(4), Body(5), End(-1);

val hasNext: Boolean get() = no != (-1)
val next: State get() = State.values()[no.inc()]
}
internal fun parseRequest(data: ByteIterator) = sequence {
var state = State.Begin
while (state != State.End) {
var currentItem = when (state) {
State.Method -> parseMethod(data)
State.RequestUri -> parseRequestUrl(data)
State.Version -> parseVersion(data)
State.Header -> parseHeader(data)
State.Body -> parseBody(data)
}
if (currentItem != null)
yield(currentItem)
else throw InvalidHttpRequest()
if (state.hasNext) state = state.next
}
}
我写解析流的状态机基本都是带 position 的,然后 consume 什么的每个子解析器都可以使用,consumed,slice 这些细节封装在父类里
羽毛的小白板
新时代 HTTP request message parser。状态机化是为了解析遇到 buffer 不足时可以等待扩充并回到之前的位置重试
把 consumed 抽提到 abstract class StateParser(protected var position: Cnt) 也可行
这种情况,consumed 就不需要靠 Parse 方法维护了,删去 consumed += currentConsumed、ParseMethod 里面的 return n 给换成 position += n 即可
Parse 方法解析完一个项目需要维护 data view 变量,可以向超类的逻辑要 view = data.slice(position),就是面向对象的行为继承。

解析不了直接抛异常好了,面向对象设计也别太在乎异常费时间,有优化的

不过用 sequence 抽象没法在结束的时候返回解析成功失败,用 generateSequence 也是到返回 null 的时候停下
Forwarded from dnaugsuz
Kotlin 真的很有用,我现在看到 int a=1; while (a<=5) {...a++;} 都会自动综合出 a in 1..5 -> ... 了,看那些Java程序员的代码毫无难度,不存在+1 -1的问题
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta ⠀)
有个 CS 同班同学,电脑很差,关系蛮好的,要我作业,我把自己的代码人工混淆一波给他(坏笑.jpg
#Haha #PL #life #inm 🤣哈哈哈哈哈 还有Duck typing
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (加藤日向 ∣ 有害垃圾)
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (加藤日向 ∣ 有害垃圾)
#Android #China #coolapk 很久没见人间烟火的duangsuse喜闻乐见
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta ⠀)
挂个人,PeterCxy,俗称虾大。以前我第一印象觉得这人还行,然后今天手机刷机,有个问题由于自己知识浅薄不懂,他也正好是这个帖子的维护者,我就问了一下他(谨慎起见还特意注明自己不懂),没想到他直接给我 Block 了。我真不知道我哪里得罪恁了。各位以后小心和此人相处。
永久封存 | Yuuta 台 | 😷 #Pray4Wuhan
挂个人,PeterCxy,俗称虾大。以前我第一印象觉得这人还行,然后今天手机刷机,有个问题由于自己知识浅薄不懂,他也正好是这个帖子的维护者,我就问了一下他(谨慎起见还特意注明自己不懂),没想到他直接给我 Block 了。我真不知道我哪里得罪恁了。各位以后小心和此人相处。
讲个笑话,他就是看不起你,所以怎么看你都傻逼。
要是一开口/dev/,kmodule,coreutil,说不定还不至于block,当然也说不定。

我也经常看不起一些人的,不过我觉得这是不应该的,所以我不会表现出来,也会努力克制,今后也会努力克制的。
其实啥东西,老是分什么高端低端,就纯属搞错重点了。大家玩技术,开心就好,也不要总管弄出个什么玩意来。
能给建议的给点建议,不要把自己放得太高,不要对别人提太高要求,好好学习、好好创作、努力试着去向『传播者』的方向走就行了。
哎呀,其实我早就想给我的 pr.py 加上 -srand 选项的,可惜最后没去弄
Forwarded from dnaugsuz
欸,看来还是机器学习/CV能做到的事情有趣,忍不住想再抱怨一下自己数学不好……
Forwarded from dnaugsuz
NLP和哪怕是基本ANN模型比起来都太简单了,就是我们PLT解析器那一套,当然大部分人都把形式化语言归为算法,也就是计算机科学那套,不是程序设计语言理论……
Forwarded from dnaugsuz
就是 For = for (lparen Expr rparen) Stmt 这种嘛,自然语言加上词类直接模式匹配,当然这是死的却也可以用,分词器上也可以做ML(machine learning)。
然后现在用的NLP高级很多…… 就和PLT那套没太大关系了(形式化语言还总是说什么succ pred token(FIRST/FOLLOW)、top-down, bottom-up、什么 BNF, EBNF, 还有 LL(k), recursive descent, LR, 还有 LALR, PEG, ANTLR、CFG, DFA, NFA 什么玩意的),但基本理论也就一两样,LLVM Cookbook 一书的译者还不是要学NLP转过来的
一位dalao说过,在神经网络架构中
神经网络就是一个含未知参数的程序
正向传播就是运行这个程序的过程
反向传播就是寻找最优的这些参数的过程

然后就要对权重w求导、梯度下降、可非线性逼近
还有什么J=E(J)的,不知道是啥玩意的公式,E(_)是能量?

神经网络就是由一堆抽象神经元构成的网络
神经元是一堆 y = f(wx+b)
递推计算公式是
y^{k} = f(\sum^n_{i=1} w^k_{i} * x^{k-1}_{i} + b^{k})
然后 k=0 是输入层