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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
当前端太困难了,我太难了,我想回去…… 还是写 Kotlin 好了,连个循环加载都做不到,import 居然能是『Statement』,各种 workaround,服了
这实在是 太 不 摩 登 了!!!原来 import 会被『自动提升』???那你为什么不告诉我不能加分号?为什么不提醒我把 import 提到上面去???这是没官方 REPL 的 TypeScript 啊?!!
This media is not supported in your browser
VIEW IN TELEGRAM
以后干脆拿 Kotlin/JS 写前端好了,省得麻烦
乍一看大家会觉得它太冗了,虽然的确很冗,但具有可维护性、可扩展性,而且其复用可能性更大、给新人阅读理解也较容易。
不断地修改和抽提,也是我每写一个应用基本都会对应地弄出一个复用库的原因,所以我根本不愁写不出来『框架』,我写点应用都能写出『框架』来,只是时间真的不能保证……
duangsuse::Echo
乍一看大家会觉得它太冗了,虽然的确很冗,但具有可维护性、可扩展性,而且其复用可能性更大、给新人阅读理解也较容易。
看起来冗,但可以举个例子:如果要再兼容某个类似 KotlinPlaygound 的东西,要怎么样?
这个『冗长』 的版本只需修改 playgroundDefaults、literateCodeFilter、LiterateKtMagics.KotlinPlaygroundId 对应的几个逻辑就可以了,而如果写得更『精简』,没那么方便了。
再比如,很多本来可以通过面向对象继承提出的逻辑,如果不写『冗』一点,也是感受不出的。
再比如,如果你要写一个复用库,最好的方法就是边写边用!这时候没有『把结构写「复杂」』的觉悟,是很难完成同时编写应用和复用库的任务的。

总之,冗长的好处只有用过它的人才能完全体会得到。

那,如果模块化使得项目结构更复杂,让新人难以理解了怎么办???
所以要写好 README.md 啊…… 没人告诉我们,只有 project root 可以放 README 吧。
Forwarded from duangsuse Throws
#dev #PLT 给大家讲个有趣的事情:
🐔鸡你太美。

我在网易云音乐找这个东西的时候,对两首歌特别可心。
其一是原版《只因你太美》、其二是一个纯音乐 remix。

我们知道,原版(SWIN) 的是有歌词的(只因你太美……)
可是 remix 版只有重复的『鸡你太美……实在是太美』这样类似词穷的东西,我们认为它是纯音乐,没有唱词。

如果你是网易云的工程师,尝试用 #Kotlin 这样的『面向对象』编程语言给这样可能有歌词的歌曲建模,你会怎么建呢?
——

首先,我想到的办法是类似这样,

val NO_LYRICS: Lyrics = TODO()
data class Song(/*...*/, val lyrics: Lyrics)

比如,如果我们以链接(URI)的方式“存储”歌词,那么没歌词的情况:
const val NO_LYRICS = "nolyrics:"

有点类似 libc 的『特殊返回值』,比如函数 ioctl 如果返回 (-1) 表示请求出错。
但是这不是很规范,而且容易给数据维护制造问题,所以:

data class Song(/*...*/, val lyrics: Lyrics?)

这样我们也可以同时表达有歌词的『只因你太美』和没歌词的『只因你太美(remix)』

可是,如果除了歌词外还有别的东西可能有出入,或者觉得『一首歌可能有歌词也可能完全没有、但居然还要存 null』该如何?

sealed class Music(/*...*/) {
data class Song(/*...*/, val lyrics: Lyrics): Music(/*...*/)
}

然后,我们在取的时候判断 music is Song,或者 (music as? Song)?.lyrics ?: "无歌词" 就可以了。
#dalao https://github.com/spieglt/nestur
这个真心不错啊,APU 和 PPU 是啥…… 我只知 ALU(Arithmatic Logic Unit) 毕竟是游戏机处理平台啊!还能跑超级玛丽!只用底层的 SDL 绘图
#English Prometheus 是『普罗米修斯』的意思……
#PLT https://clarus.github.io/coq-of-js/ 有意思,我还以为 Coq 是逻辑式了,看起来至少没关系式抽象,类似 #Haskell 和 CaML
要继续写 Literate Kotlin 的项目生成和关于 Relational Programming 的 LiterateKt 文章,但我觉得不如先…… 休息一下,写点简单的东西 🤔
#CI #dev #web #JavaScript 我哭了,果然除了码代码都好累啊
这次还比较『可复用』,可是又有什么暖用呢?
艹,写代码的,bug 躲不掉。
才体会到工程的难度,原来测试不过不能 push 是真的!我刚才发布了一个 v1.2 一上来就是修完 bug 没修好,不能用的版本!
一个新版本居然不能用??就发布了??工程管理不善??太难了!!!