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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from dnaugsuz
唉,如果不是新事情多时间少,我想大概都是可以实现的,
我最近在尝试『猜测 API』,即在不见到实际编程接口的情况下利用之前的经验和记忆猜测会有怎么样的接口……
如果不是长期在一个什么也干不了的学校里,是不可能这样的,因为要记的东西太多我经常忘记,偶尔也会因为一段小代码不能在预期的时间内想出来而头疼不已

高三只有一个晚上…… 而且家人还不乐意了,说要去什么武汉,真是非常头疼,明明这位之前还笑话我哥『讨饭也到武汉讨』的,而且之前才说上不上大学无所谓的。
果然一个人的志向可以改变得比包子连任还快。

我真的不知道谁对谁错,或许他们是对的吧,我很奇怪,而且我不给自己做饭也以后不想学开车
或许我是对的吧,可我也未必能独善其身

明明知道,他们不能理解…… 我不是那种为了别人赞美而生活的人,也不想太着急。看来以后如果我能够写书的话,也应该诚实地不在序里面赞叹一番亲人的善解人意了吧。
明明什么都不明白,他们愿意看抖音也不看我刻意发 Qzone 的东西……
Forwarded from dnaugsuz
最近也在很努力的,虽然明明,感觉脑子也有点过度使用了吧…… 也可能是错觉,因为我不沾电脑的时间太多却总是想编程的问题

enum class Gender { BOY, GIRL }
enum class Person(val sex: Gender, var age: Int) {
duangsuse (BOY, 17)
}


fun <T: Number> List<T>.average() = this.sum() / this.size
inline infix fun <A, B, C> ((A) -> B).andThen(crossinline g: (B) -> C): (A) -> C = { x -> g(this.invoke(x)) }
inline fun <A, A1, A2, B> (A.(A1, A2) -> B).curry(x0: A1): A.(A2) -> B = fn@{ x1 -> return@fn this(x0, x1) }

类似这样的,我经常为了不能在 2s 内枚举出 sex 和 age 及类型而花两分钟的时间重复 N 遍,直到我觉得基本熟练了为止
其实我根本没有多快…… 只是希望自己很快罢了
dnaugsuz
最近也在很努力的,虽然明明,感觉脑子也有点过度使用了吧…… 也可能是错觉,因为我不沾电脑的时间太多却总是想编程的问题 enum class Gender { BOY, GIRL } enum class Person(val sex: Gender, var age: Int) { duangsuse (BOY, 17) } fun <T: Number> List<T>.average() = this.sum() / this.size inline infix fun <A, B, C> ((A)…
#book #statement 其实虽然也很努力,我没看太多书…… 我相信很多人都能理解,就像一个游戏打了一半的小孩突然被人要求去写作业一样,我当然没办法在写作业的过程中背套招啦…… 伤心处
总是感觉什么没有完成,所以喜欢看小说、睡觉什么的,也不会再去碰计算机科学、信息学、无线电、微电子几大件的书和资料啦(虽然我主要是想要编译原理和函数式编程…… 虽然函数式也蛮难)

就是这样,结果物理老师还不理解我了,因为当时在『睡觉』的我看起来不够努力?其实我在学校里也就把自己当个笑话看的……

我真的不是懒散惯了,是怕努力了还伤身体,而且无处可以努力啊…… 即便是熬夜到凌晨一点,如果是在『学习』的话大概有不少人会觉得很用功吧。那编程到凌晨呢? 😊
#CSharp ❤️ #Java 好耶! Microsoft<3
#FP 虽然我也不清楚 Strict 到底是怎么样的求值模式,我只认 Call-By-Name(lazy), Call-By-Value, Call-By-Need,不过 foldr 显然比 foldl 更适合 lazy 吧…… 考虑一下 foldl 可以 tco 而 foldr 必须保留栈
Forwarded from dnaugsuz
冰封的 QQ 裙还不够多吗?(跑
不过我的确不知道还有什么……

本群的确比较冷清
如果喜欢热闹的话欢迎关注 @dsuse 啊(跑
Forwarded from dnaugsuz
其实人少也没什么,向钱看的国内速成班、专科班学员真的一堆一堆出,不稀罕了(而且我也觉得没什么可稀罕的,因为这么做有点不利于平均的应用设计水准……

如果坐不下冷板凳,是不能当好程序员的,不少可称得上优秀的人在 GitHub 上不也没有多少 fo(编译原理的,R*RS 标准跟随者之一 Chez Scheme 的作者 fo 还没有五百个、讲过计算机网络的编程随想也没有一些网红培训班火),技术很高的博主关注者也往往很少,曲高和寡,虽然很酸但是也蛮正常

如果觉得人少了…… 可以试试先自己找/整点东西看看,比如计算机图形学和信号处理、机器学习
可以自己试着去维护点小框架什么的

优质而且志同道合的地方真的是很难得的…… 而且找到了也未必是你能待的地方…… 这和钱无关,心疼
Forwarded from dnaugsuz
好牛啊这…… 简直比 fun <T>(…) … when { true is T … } 这还……

之前我没见过为了优化代码风格而做的局部 operator fun
Forwarded from dnaugsuz
在 suspend fun 里引用啊(迫真
其实 suspend 的 closure 也可以,runBlocking 什么的……
协程不熟悉…… 我真的该多看书
Forwarded from dnaugsuz
怎么感觉你是想用 operator … unaryPlus()+MHE.ping…… 如果是局部的话应该就不能引用吧……
Forwarded from dnaugsuz
强烈推荐陈光剑的《Kotlin 极简教程》
对 Coroutine 讲得也很细
Forwarded from dnaugsuz
是指 +(::susFunc as /*suspend*/T.() -> Unit) 这样的,receiver 是为了调用 () -> Unitoperator unaryPlus

参数化多态再加上 bound 什么的看起来有点混乱,其实有时候感觉还是蛮有用的,毕竟可能最大限度泛化代码,而不止是 subtyping

> 一般带 receiver 的 lambda 是作为参数指定类型的吧,然后一般扩展函数的 receiver 用匿名类型,使用起来也会很别扭吧
(1) 的确是用来指定 receiver 的类型,虽然我相信很多人第一眼看到 init: A.() -> Unit … { (x as A).init() } 都会觉得很扎眼:咦? init 为什么跑到中间来了?
(2) 没看出来 MHE 是类型变量…… 泛化的话应该是可以用吧……
扩展函数定义类似 fun List<T>.sum() where T: … 这样的会很有用
Forwarded from dnaugsuz
好像只要 main thread 死了 JVM 也会 exit?之前在周志明《JVM 最佳实践》上好像看过似乎是 main thread 一死就全瓜瓜了
duangsuse::Echo
10_12
想今天先做 (2) 和 (3) 的一部分、(10) 🤔 我还是很想完成 Doku 库的,毕竟是一血前耻
a2i2a.cpp
1.3 KB
浪费了我很多时间,教会了我,其实有些东西不一定是你开始想的那样,然后是要懂得接受失败, 🙃 #CXX #Algorithm, 这个算法还是要写,不过明天要先纠正下理论的错误
duangsuse::Echo
a2i2a.cpp
咳咳,理论上呢…… 我昨天晚上洗澡的时候想到了,其实在我看到之前的设想失败时

一言以蔽之,就是我重新(当然是独立地)发明了取余进制换算……

开始我的思路是利用除法去取 (base**) n 位的数字 k (= rest / ones),比如给 100 的时候,我取 10**1 位 (100 / 10) = 10 也就是说第二位是 "10",我当时居然还觉得很正常,全然不顾它不在 (0, 10] 区间内了 🤪

直到不断 segfault 我才开始思考,于是就这样乱改代码(我也不会用 GDB,连 segv 的时候是哪一行我都问不出来,where 没用、info 太多、tstack 没用、show,list 的不是……)
我一直以为错在 CString 构造失败(存在末尾 \0 的问题),我怀疑是我把索引计算错了,所以就一直在 lstr-1, lstr-2 之间徘徊……(当然子程序只是要你给 nstr, 字符串长度……)

因为之前的这种智障想法,我甚至以为 XXXXX(eo {N+}) / base(=10) 就可以得到它的十进制长度…… 其实只是因为我举例子的时候全举的是 (10**n) 这种特例,然后我居然信了…… 😂
现在改成了浮点数(其实也可以用 !=0; /base 循环,不过还是开对数 lg 好) round(log10(n))+1 或者 ceil(log(n, base)) (肯定要 ceil,因为是开幂啊,只要有零头就是 1002 这类)
为了『修正』这个实际上是算法的问题,我祖传(其实真的不想用的,我不想面向 REPL 编程,很脑残)的 cout « 就开始了…… 结果当然是无功而返,碰了一鼻子灰,而且我甚至连 radare2 pd 都用上了,segv 的时候它在 movzx eax, byte [rax], 我不知道是在干什么(大概是在解引用 char* 吧)

所以我看到 1024 / 10 (/=2; =102) 的时候,绝对是崩溃的 😭
不过还好我立刻想到了:如果我用 1024 mod 10,就可以拿到第一位的 4 了,即便差了一位效果一样(于此同时我还想了被我否决的 (rest/base)-(rest%base) 等一大堆脑残思路)

于是,我可以写这个 #Haskell 程序

module Atoitoa(atoi, itoa) where
import Data.Char (digitToInt)

radix_K16 = "0123456789ABCDEF"
radix_K10 = take 10 radix_K16
radix_K2 = take 2 radix_K16

-- F**king GHC won't accept (itoa'' rx k0 k 0) branch
itoa'' rx k0 k n
|n == 0 = []
|otherwise = let d = (n `mod` k) in
(rx !! dIdx d) : itoa'' rx k0 (k * k) (n - d)
where
lastk = k `div` k0 -- k=1000, lastk=100
dIdx d = (d `div` lastk)

itoa' radix base = reverse . (itoa'' radix base base)

itoa = itoa' radix_K10 10
itoa_2 = itoa' radix_K2 2
itoa_16 = itoa' radix_K16 16
atoi base = foldl (\ac -> (ac*base +) . digitToInt) 0

我调试了半天,想了很久,但还是有问题
3 = 0b11
4 = 0b100
可为什么 itoa_2 = "000"
看来我之前想得还不假…… NP,真的是 to_ss 把我搞糊涂了…… char show[] 的 +1 不应该算在 nstr 里面,因为 to_ss 显然小于 actual size……