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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
🐻 Sticker
修改已经完成!以后就可以照着它的基础继续设计了! #PLT #jueju

接下来可以写 Kotlin 关系式系统的实现了…… 还好有最新的 Literate Kotlin 脚本。

之后就是彻底重写这个规范了,也包含加入人称文法规范的直白定义这种工作。
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse::Echo
😋 Sticker
我也想先写关系式的 Kotlin 博文,可是它依赖的 LiterateKt 不得不先完成,既然这样不如就先完成 LKT 吧,也不难。
我突然觉得我真是没事找事,还封装得那么烂
……实在是太没劲了
has life 的人不要看太多 HTML,真是无聊
TS 的几十万行 dom lib 都是自动生成的
或许我只是想了解一下 HTML 具体怎么写吧。其实我连 XML 甚至 SGML 都不会写,而我会写 JSON 解析器,真是搞不懂他们。
unused_dom_types.ts
3.7 KB
#JavaScript #web 艹,我不用了,而且 TypeScript 还不支持,因为它只能 keyof……
稍微解决了一点代码模板化的问题,差强人意。
尽管 JavaScript 把赋值 (=) 也做成了有值的模式,Kotlin 的 Configure Block 比这个更厉害、更优雅
import { element, configured, withDefaults, withClasses, withAttributes, withText } from './lib/dom';

let showCodeBtn: Element,
codeDiv = element("div", withClasses(playground),
showCodeBtn = element("button", withText(`Kotlin Code${describe}`))
);
突然感觉暂时没必要写 Literate Kotlin 的另一个工具了,明天就先写关系式吧……
duangsuse::Echo
尽管 JavaScript 把赋值 (=) 也做成了有值的模式,Kotlin 的 Configure Block 比这个更厉害、更优雅
declarative 的风格真的好棒啊,比之前手动 appendChild 什么的好多了!至少现在不必把所有本来该『立刻』初始化好的元素放在控制流里顺序构筑了!
或许我不该写得这么莫名其妙的,但既然能用,而且只是难看了一点,算了…… (主要是这么写理论上没有任何问题)
https://webpack.js.org/concepts/

不得不安装 WebPack 来…… 解决 JavaScript 模块的打包问题

话说这 WebPack 的理念还真多啊,而且连告诉用户,它需要用 CLI npm install -g webpack-cli 都懒得讲。
npm install --save-dev webpack
真是啰嗦,说好的不需要任何配置呢?
我讨厌 node_modules,真是智障缓存方式
不愧是 WebPack 呢,连 TypeScript 都分不清
duangsuse::Echo
或许我不该写得这么莫名其妙的,但既然能用,而且只是难看了一点,算了…… (主要是这么写理论上没有任何问题)
不是难看了一点,难看的东西都有问题!

我今天早上吃饭时想了一会,基本熟悉了它的工作方式:
+ no-dependencies = null
+ have-dependencies = each-dependency-with-their-dependencies ?? [itself]

后来我一想,不对啊

xs?.concat(x) ?? [x] 这不是等于 (xs ?? []).concat(x) 吗?
再一想,自己早在还没弄自动依赖解析之前就已经犯了这个错误,但那时候是情有可原,因为没 depend DOM Attribute 就的确是『没有依赖』,但现在不行啊!
deepDependencies 本来就应该返回 Array<Element> 而非 Array<Element>?
艹,如果是 Kotlin 我肯定不会犯这种错误!都怪 TS 不区分可 null 与否!

然后我发现这是因为没有完全重写,误会了 (??) operator 导致的一个设计问题…… 其实 deepDependencies 的基线完全可以是 [] 而非 null,手生了……
duangsuse::Echo
不是难看了一点,难看的东西都有问题! 我今天早上吃饭时想了一会,基本熟悉了它的工作方式: + no-dependencies = null + have-dependencies = each-dependency-with-their-dependencies ?? [itself] 后来我一想,不对啊 xs?.concat(x) ?? [x] 这不是等于 (xs ?? []).concat(x) 吗? 再一想,自己早在还没弄自动依赖解析之前就已经犯了这个错误,但那时候是情有可原,因为没 depend…
#JavaScript #Algorithm #web
而且我还想到一个问题,就是现在的依赖关系不能递归,但貌似我们拼接 Kotlin File 的方式是必须可以的,依赖不存在顺序。

或者说,我们要处理的『依赖图』,不一定是有向图,但目前的递归 deepDependencies 会 max call stack exceeded,我无法允许这种出错的可能。

所以可以用 DFS 啊,既然我们认为 a-b “a依赖b” 是互相的关系,那最终的完整依赖也可以视为一个集合,只需在添加 dependencySet 和 bfsQueue 前现判一下是不是已经有了就好了。
如 a-b 的循环依赖
scan a -> add, queue b
scan b -> add, queue a
scan a -> continue
finish [a, b]


此外,这两种(递归、BFS广度优先搜索)的依赖集合算法本身都是很泛化的『算法』,不该在某个特定的模块里针对特定抽象数据实现,可以抽象出关于类型 <T>deepDependencies(root: T, links: (T) => Iterable<T>): Array<T> 从而在更多数据结构上运行
#TypeScript 没有 in, out* 真是不如 #Kotlin 好啊!还是 Kotlin 设计有创意……