/tmp/duangsuse.sock
JavaScript 不加点框架简直不能用 懒得加框架了 ES6 都很差劲呢,你都不能 list.map(keyTranslation::getValue) 壮哉我大 Kotlin
我才想起来,JavaScript 的 Object 语法 o[k] 是不可重载的,只能是访问 property 的语义,所以 set 调用没有替代的方法……
Object.prototype.asIterator = function() {
return this[Symbol.iterator]();
} 这个东西一 define 可以让 LeanCloud SDK 爆炸…… #web
/tmp/duangsuse.sock
Object.prototype.asIterator = function() { return this[Symbol.iterator](); } 这个东西一 define 可以让 LeanCloud SDK 爆炸…… #web
模型:Record(place:Str, name:Str, status:Bool)
操作:updateOrInitRecord、destroyRecord、findAllRecordOfPlace、findRecord(place, name)
操作:updateOrInitRecord、destroyRecord、findAllRecordOfPlace、findRecord(place, name)
Forwarded from Deleted Account
但是科比的传奇是谁都知道的
而且他也很努力,『你见过凌晨四点的洛杉矶吗?每天洛杉矶早上四点仍然在黑暗中,我就起床行走在黑暗的洛杉矶街道上。』
世界上又少了个天才
而且他也很努力,『你见过凌晨四点的洛杉矶吗?每天洛杉矶早上四点仍然在黑暗中,我就起床行走在黑暗的洛杉矶街道上。』
世界上又少了个天才
Forwarded from Deleted Account
我帮你把 structure 整理一下吧,还是看你自己,我看番。
它实际上是记录一个时间,但也可能没有(代表未编辑的情况),我们用
如果你要使用 Telegram 一样的设计,那势必要加上一个时间轴,就不是上面的那种形式了
另外
读起来找感觉的时候,先把注意力放在
关于
如果你写不出来,可以先看看我老早之前的东西 Timelines。
祝好,另外,许多人在写得出来任何东西之前都会经过看起来「即得易见平凡」写起来「混沌难解NP完全」的问题,解决困难的最好方法是面对更多困难,坚持下去、多读书,奥力给!
interface ChatObject {
constructor(user, msg, replyTo)
val sendAt: Time
val id: ObjectID
val user: UserId
val msg: String
val replyTo: ObjectID
val edited: EditedInfo
fun delete()
fun revise(newMsg: String) //edit
interface EditedInfo {
val edited: Boolean
val editedTime: Time
}
}
interface ChatObjectsCenter {
val db: Database
val replies: Replies get
interface Database { // CRUD
fun register(id: ObjectID, value: ChatObject) //Create,Update
fun query(id: ObjectID) //Read
fun unregister(id: ObjectID) //Delete
}
fun setReplyTo(target, m)
fun search(info: SearchFields)
interface SearchFields {
val user: UserId?
val msgPattern: Pattern?
}
}个人建议,反正我们只记录最近一次编辑,EditedInfo 整个可以用特殊值设计
它实际上是记录一个时间,但也可能没有(代表未编辑的情况),我们用
Optional<Time> 就可以表达了。如果你要使用 Telegram 一样的设计,那势必要加上一个时间轴,就不是上面的那种形式了
另外
setReplyTo(target, m) 是『设m的 replyTo 为 target』的意思,这是一种比较不符合直觉的表达法,读起来找感觉的时候,先把注意力放在
setReplyTo(target, ... 这一部分,再轻读后面的 m,你就熟悉了。关于
SearchInfo,你也可以分 type 来建模,参考我的这条如果你写不出来,可以先看看我老早之前的东西 Timelines。
祝好,另外,许多人在写得出来任何东西之前都会经过看起来「即得易见平凡」写起来「混沌难解NP完全」的问题,解决困难的最好方法是面对更多困难,坚持下去、多读书,奥力给!
Telegram
duangsuse::Echo
#dev #PLT 给大家讲个有趣的事情:
🐔鸡你太美。
我在网易云音乐找这个东西的时候,对两首歌特别可心。
其一是原版《只因你太美》、其二是一个纯音乐 remix。
我们知道,原版(SWIN) 的是有歌词的(只因你太美……)
可是 remix 版只有重复的『鸡你太美……实在是太美』这样类似词穷的东西,我们认为它是纯音乐,没有唱词。
如果你是网易云的工程师,尝试用 #Kotlin 这样的『面向对象』编程语言给这样可能有歌词的歌曲建模,你会怎么建呢?
——
首先,我想到的办法是类似这样,
val…
🐔鸡你太美。
我在网易云音乐找这个东西的时候,对两首歌特别可心。
其一是原版《只因你太美》、其二是一个纯音乐 remix。
我们知道,原版(SWIN) 的是有歌词的(只因你太美……)
可是 remix 版只有重复的『鸡你太美……实在是太美』这样类似词穷的东西,我们认为它是纯音乐,没有唱词。
如果你是网易云的工程师,尝试用 #Kotlin 这样的『面向对象』编程语言给这样可能有歌词的歌曲建模,你会怎么建呢?
——
首先,我想到的办法是类似这样,
val…
Forwarded from Deleted Account
如果你对自制语言感兴趣的话,可以看看我那三个
https://duangsuse-valid-projects.github.io/Share/Others/essay-kotlin-parser
https://github.com/duangsuse-valid-projects/jison/blob/master/src/commonMain/kotlin/org/jison/JsonParser.kt
https://github.com/duangsuse-valid-projects/Share/blob/master/%E5%AF%B9drakeet%E7%9A%84%E4%B8%80%E4%BA%9B%E8%AF%9D/DefLang/DefLang.js
很快你就会发现自己的语言可能会有写错但因为它本身没被形式化,所以找不出来的问题比较多了。
缩排很好,不过写起来有点麻烦,解析器只需要加一个
不过恕我直言你现在想写应该有点困难,还是先写个 JSON 解析器练手吧。
https://duangsuse-valid-projects.github.io/Share/Others/essay-kotlin-parser
https://github.com/duangsuse-valid-projects/jison/blob/master/src/commonMain/kotlin/org/jison/JsonParser.kt
https://github.com/duangsuse-valid-projects/Share/blob/master/%E5%AF%B9drakeet%E7%9A%84%E4%B8%80%E4%BA%9B%E8%AF%9D/DefLang/DefLang.js
很快你就会发现自己的语言可能会有写错但因为它本身没被形式化,所以找不出来的问题比较多了。
缩排很好,不过写起来有点麻烦,解析器只需要加一个
layoutSpaceCountStack 就可以了,每层一个 layoutSpaceCount。不过恕我直言你现在想写应该有点困难,还是先写个 JSON 解析器练手吧。
Share
看完这段 Kotlin 代码后我哭了
🐕 duangsuse’s shared files(e.g. productive software projects, documents)
Forwarded from Deleted Account
关键是,有些东西比较容易眼高手低
理论很重要,但实践指导理论往往更重要,因为理论经常有瑕疵,必须靠实践去打磨、靠测试去验证
所以说简单列一下数据结构就可以了,重要的还是写出来,写不出来就继续往底层抽象,抽象到对接 Browser、Node、Filesystem 和底层框架的 API 为止。
理论很重要,但实践指导理论往往更重要,因为理论经常有瑕疵,必须靠实践去打磨、靠测试去验证
所以说简单列一下数据结构就可以了,重要的还是写出来,写不出来就继续往底层抽象,抽象到对接 Browser、Node、Filesystem 和底层框架的 API 为止。
Forwarded from Deleted Account
两年前以来我写的 Specification 可以认为是比你多了,甚至我还弄出了 GeekSpec
可是我也没实际得到什么,所以说,Specification,够用就行,没必要太重视。就像有些 Java 程序员喜欢吹设计模式和 UML,其实吹到头了什么都没有,就像 Eclipse 一样,十年如一日。
这个应用,我花了六个小时才写出来,但设计的时候我就想了一个
对应到 Android 上 input, textarea 就是 EditText、button 就是 Button,table 我不知道,反正知道了写出来就可以,实践会慢慢往上堆…… 不对,不能堆,要经常简化和归纳。
可是我也没实际得到什么,所以说,Specification,够用就行,没必要太重视。就像有些 Java 程序员喜欢吹设计模式和 UML,其实吹到头了什么都没有,就像 Eclipse 一样,十年如一日。
这个应用,我花了六个小时才写出来,但设计的时候我就想了一个
data class Record(val place: String, val name: String, val status: Boolean)
Map<PlaceId, Map<StudentID, Boolean>>
至于 findIn(place, name), findAllIn(place), runSubmit(data) 上面的 CRUD 操作(虽然我不太喜欢这个名词)都是后来动手的时候想的,我只需总结一下用到的 tag 有 <input placeholder value> <textarea> <button onclick> <table> <thead> <tbody> <tr> <td> 就好了,对应到 Android 上 input, textarea 就是 EditText、button 就是 Button,table 我不知道,反正知道了写出来就可以,实践会慢慢往上堆…… 不对,不能堆,要经常简化和归纳。
GitHub
duangsuse-valid-projects/GeekApk
GeekApk, the dying SpringBoot(a.k.a. Sping initializr) server for GeekApk(a.k.a 极安) (R - duangsuse-valid-projects/GeekApk
Forwarded from Deleted Account
代码复用也是很重要的,我讲不清楚,这两张图可以拿作例子。
导入导出数据的操作,也是由
没有魔法,就是 JavaScript ES6 而已。
runRefresh 渲染视图,用的是很 legacy 的方法,但我加了两个函数看起来就好很多了(第二幅 49 行)导入导出数据的操作,也是由
enableDataConvert 函数执行的,假设我要再支持导入导出 YAML 也很简单,只需要在对这个函数的调用里加行代码就够了,而不是改完 HTML 再加 onclick listener没有魔法,就是 JavaScript ES6 而已。
Forwarded from Deleted Account
这是谁滥用权限设计比较开放
越过我加的验证码,三秒钟就给删完了
就是批评我的验证码不够有用也不必这么搞吧 过分了
越过我加的验证码,三秒钟就给删完了
就是批评我的验证码不够有用也不必这么搞吧 过分了