Forwarded from YuutaW 鱼塔
终于发觉 妙啊 这个 App 的亮点在哪了 😅
写了一天程序很累,编译安装的时候可以休息会眼睛,正好 WiFi 慢,安装也慢,用 妙啊 能在安装完了及时提醒,太棒了!
写了一天程序很累,编译安装的时候可以休息会眼睛,正好 WiFi 慢,安装也慢,用 妙啊 能在安装完了及时提醒,太棒了!
#regex 其实蛮好学的啊?只要记下 ^$+*|?[]{}\ 几个元字符就好很多了,很符合直觉很有用 推荐 Regex tutorial
www.regular-expressions.info
Regular-Expressions.info - Regex Tutorial, Examples and Reference - Regexp Patterns
At Regular-Expressions.info you will find a wide range of in-depth information about a powerful search pattern language called regular expressions.
永久封存 | Yuuta 台 | 😷 #Pray4Wuhan
https://t.me/TooruchanNews/19022 妈耶 Python 强制缩进差评 Kotlin 我也不太清楚,按换行?
Kotlin 你可以参考 ANTLR v4 Grammars — Kotlin
这个规则抽象的 Kotlin 版本(我相信)应该是 Kotlin 1.2+
相关语法规则:
Hello ...
world
—
Hello; world
—
Hello
;
world
—
;;; println("abc") ;;; println("def")
—
anysemi(3) Some<Stmt<println("abc")> anysemi(3) Some<Stmt<println("def")>>(1)>
作为比较,Kotlin 的
import foo.a.b.bar.*;
import foo.a.b.bar.* as van.fuckingdeep
anysemi 和 semi 的确有定义上的区别,但不大,这里不说。
这个规则抽象的 Kotlin 版本(我相信)应该是 Kotlin 1.2+
相关语法规则:
statements: anysemi* (statement (anysemi+ statement?)*)?;
semi: NL+ | NL* SEMICOLON NL*;
// SEMICOLON: ';' ;
anysemi: NL | SEMICOLON; // NL: '\u000A' | '\u000D' '\u000A' ;
semi 规则匹配类似 (多个换行) 或者 (无换行或多个换行) ";" (无换行或多个换行)
For Example:Hello ...
world
—
Hello; world
—
Hello
;
world
—
anysemi 则匹配一个换行或者分号 ";"
statements: anysemi* (statement (anysemi+ statement?)*)?;
Kotlin 是这么看语句的,类似 JavaScript 直至 ES2019 的版本:;;; println("abc") ;;; println("def")
—
anysemi(3) Some<Stmt<println("abc")> anysemi(3) Some<Stmt<println("def")>>(1)>
作为比较,Kotlin 的
import 语法importHeader: IMPORT identifier (DOT MULT | importAlias)? semi?;
import foo.a.b.barimport foo.a.b.bar.*;
import foo.a.b.bar.* as van.fuckingdeep
anysemi 和 semi 的确有定义上的区别,但不大,这里不说。
GitHub
antlr/grammars-v4
Grammars written for ANTLR v4; expectation that the grammars are free of actions. - antlr/grammars-v4
duangsuse::Echo
😿 时间总是不够用,为了健康所以不得不早点睡觉了。 其实这周本来还计划用 HTML + CSS + JS /MDUI, echart 写本频道的折线统计图的,还包括诸如过滤、消息转发回复 stickers files 什么的分析、hashtags, links, hosts, telegram xref 的统计页面什么的 可惜果然没有时间了(我早知道,所以即使开始想的时候比较大但是我一直要求自己简化它 — 没时间写太大的、必须保证能完整理解快速记忆所有结构的程度才可以),真的时间不够啊。 其实本来还打算继续写…
看来我只能花时间尝试完成 GeekSpec 了... 那两个留着吧。
#www #web #JavaScript 我们来复习一下 HTTP/1.1 协议:
RFC 编号是 2616
[method] [url] HTTP/1.1 [cr] [lf]
{[Header-Name]: [Header-Value] [cr] [lf]}
[Body]?
🤔
ApplicationPath, HttpMethod/GET/POST/PUT/DELETE/OPTIONS/HEAD, PathParam/QueryParam/CookieParam/HeaderParam/FormParam/MatrixParam/DefaultValue, Cosumes/Produces/Encoded
我们来复习一下 JSON:
[1, 2, "hello"] array
{ a: 1, b: 2; c: 3 } object
1.2 2 -10 9e1 10E-17 number
"hello" string
true boolean
null object
"\\ \b \f \n \r \t \u0007 \\ \/ \" "
RFC 编号是 2616
[method] [url] HTTP/1.1 [cr] [lf]
{[Header-Name]: [Header-Value] [cr] [lf]}
[Body]?
🤔
GET /helloworld HTTP/1.1[cr][lf]然后考虑 JAX-RS 的一些抽象
Host: duangsuse.me
ApplicationPath, HttpMethod/GET/POST/PUT/DELETE/OPTIONS/HEAD, PathParam/QueryParam/CookieParam/HeaderParam/FormParam/MatrixParam/DefaultValue, Cosumes/Produces/Encoded
我们来复习一下 JSON:
[1, 2, "hello"] array
{ a: 1, b: 2; c: 3 } object
1.2 2 -10 9e1 10E-17 number
"hello" string
true boolean
null object
"\\ \b \f \n \r \t \u0007 \\ \/ \" "
https://github.com/duangsuse/GeekApk/blob/master/geekapk_v1b_api.geekspec #GeekApk
GeekApk 的 GeekSpec 规范即将准备制定 v0.2 新版本,新的规范使用了宏预处理和 Markdown,将支持使用 SPEC 语言进行控制器编程(所以可以将能自动生成的逻辑尽可能自动生成)
🤔
GeekApk 的 GeekSpec 规范即将准备制定 v0.2 新版本,新的规范使用了宏预处理和 Markdown,将支持使用 SPEC 语言进行控制器编程(所以可以将能自动生成的逻辑尽可能自动生成)
🤔
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
duangsuse::Echo
https://github.com/duangsuse/GeekApk/blob/master/geekapk_v1b_api.geekspec #GeekApk GeekApk 的 GeekSpec 规范即将准备制定 v0.2 新版本,新的规范使用了宏预处理和 Markdown,将支持使用 SPEC 语言进行控制器编程(所以可以将能自动生成的逻辑尽可能自动生成) 🤔
GitHub
duangsuse-valid-projects/GeekSpec-GeekApkv1.0b
📝 GeekSpec 0.2 document for GeekApk API 1.0 beta. Contribute to duangsuse-valid-projects/GeekSpec-GeekApkv1.0b development by creating an account on GitHub.
duangsuse::Echo
https://github.com/duangsuse/GeekSpec-GeekApkv1.0b 正在重写逻辑
This media is not supported in your browser
VIEW IN TELEGRAM
https://github.com/duangsuse/GeekSpec-GeekApkv1.0b/blob/master/geekapk-1.0beta-zh_CN/model.api.md
将要写完 Model 部分了... 我真的是写了一天
将要写完 Model 部分了... 我真的是写了一天
GitHub
duangsuse/GeekSpec-GeekApkv1.0b
📝 GeekSpec 0.2 document for GeekApk API 1.0 beta. Contribute to duangsuse/GeekSpec-GeekApkv1.0b development by creating an account on GitHub.
duangsuse::Echo
Model 部分基本完成
由此大家可以看出,GeekApk 即使是 v1.0b 也是蛮大的东西,和那些评论系统、微型博客什么的不可同日而语... 至少是逻辑上要实现的东西多得多了。
今天我会完成并且检查 Model 部分,然后我会尝试写一个 JSON 解析器和一个计算器,可能要支持 Java 反射
今天我会完成并且检查 Model 部分,然后我会尝试写一个 JSON 解析器和一个计算器,可能要支持 Java 反射
duangsuse::Echo
这些东西都要改天写个 Markdown Parser 再弄个基于 Markdown 的结构提取检查器来解决... 问题是宏系统我还不是特别有设计... 目前用了一个 See [](fileLink) 自动嵌入预处理
我希望比较线性的逻辑编写,利用宏系统可以这样,真正意义上的『汉语编程』,而且说不定能跨开发平台:
_ClassName_ ServerController
_UseStatic_ ServerOperations
#### _implement_
_ClassName_ UserController
_UseStatic_ UserOperations
#### _implement_
_Define_ 创建用户(name)
已经创建实体(用户)
#### _implement_
_Define_ 有权限(b)
『删除用户(uid);实体已经删除(uid)』,
否则『权限验证失败(校验错误)』
🤔 一不小心弄了个中文编程出来....
_ClassName_ ServerController
_UseStatic_ ServerOperations
#### _implement_
serverDescription
_Define_ 服务器描述 serverDesc
写(服务器描述!)_ClassName_ UserController
_UseStatic_ UserOperations
#### _implement_
createUser username_Define_ 创建用户(name)
makeUser(name)
设置『用户』为『创建用户(username)』已经创建实体(用户)
#### _implement_
deleteUser uid_Define_ 有权限(b)
b == null
_Define_ 删除用户(uid) deleteUser(uid)
_Define_ 检查权限:用户(uid) checkByUserId(request, uid)
假若『有权限(设置『校验错误』为『检查权限:用户(uid)』)』则,『删除用户(uid);实体已经删除(uid)』,
否则『权限验证失败(校验错误)』
🤔 一不小心弄了个中文编程出来....
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse::Echo
Model 部分基本完成
那么就到这里了,这的确是一种不错的方法,可惜花的时间也是比较长...
https://github.com/duangsuse/GeekSpec-GeekApkv1.0b/blob/master/geekapk-1.0beta-zh_CN/models/comment.api-inline.md#entity-relation-comment
Entity Relation comment
Belonging to User by author
on delete set -1
Belonging to App by app
on delete set -1
Belonging to Comment by replies
observes delete onParentCommentDeleted
Has many Comment "reply" by Comment.replies
observes attach onNewReply
从这里就可以很明显地看出,如果一个用户删除了自己的帐号,他的评论默认不会删除,而是设置到一个保留的 『Ghost』 帐号下
如果一个应用被删除了,它的所有评论会被保留并且移动到一个『垃圾箱』应用下,不过这个行为应该改改的,我想想...
如果一个评论被删除,则它的所有子评论会被移动到系统新建的保留评论下... 不过 replies 字段是不可变的,应该修改以满足这种使用方式
如果评论有新的回复,则应该通知它的所有者
https://github.com/duangsuse/GeekSpec-GeekApkv1.0b/blob/master/geekapk-1.0beta-zh_CN/models/comment.api-inline.md#entity-relation-comment
Entity Relation comment
Belonging to User by author
on delete set -1
Belonging to App by app
on delete set -1
Belonging to Comment by replies
observes delete onParentCommentDeleted
Has many Comment "reply" by Comment.replies
observes attach onNewReply
从这里就可以很明显地看出,如果一个用户删除了自己的帐号,他的评论默认不会删除,而是设置到一个保留的 『Ghost』 帐号下
如果一个应用被删除了,它的所有评论会被保留并且移动到一个『垃圾箱』应用下,不过这个行为应该改改的,我想想...
如果一个评论被删除,则它的所有子评论会被移动到系统新建的保留评论下... 不过 replies 字段是不可变的,应该修改以满足这种使用方式
如果评论有新的回复,则应该通知它的所有者
GitHub
GeekSpec-GeekApkv1.0b/geekapk-1.0beta-zh_CN/models/comment.api-inline.md at master · duangsuse-valid-projects/GeekSpec-GeekApkv1.0b
📝 GeekSpec 0.2 document for GeekApk API 1.0 beta. Contribute to duangsuse-valid-projects/GeekSpec-GeekApkv1.0b development by creating an account on GitHub.