Skip to content

Commit

Permalink
增加文档
Browse files Browse the repository at this point in the history
  • Loading branch information
entropy-cloud committed Dec 12, 2023
1 parent 6da49b3 commit f51cb07
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,12 @@ mvn clean install "-DskipTests" "-Dquarkus.package.type=uber-jar"
quarkus.package.type参数是quarkus框架所识别的一个参数,指定它为uber-jar将会把nop-quarkus-demo等项目打包成一个包含所有依赖类的单一jar包。可以通过java
-jar XXX-runner.jar的方式直接运行。

## PowerShell乱码问题解决
可以将PowerShell的编码设置为UTF8
````
$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8
````

目前已经升级到quarkus3.0版本,用低版本maven运行nop-auth-app等模块可能会失败。建议升级到maven
3.9.3版本,或者使用nop-entropy跟目录下的mvnw指令,它会自动下载并使用maven 3.9.3。

Expand Down
13 changes: 12 additions & 1 deletion docs/dev-guide/codegen.md
Original file line number Diff line number Diff line change
Expand Up @@ -266,4 +266,15 @@ class _SqlTableSource extends EqlASTNode {...}
### 1. precompile和postcompile有什么区别
* precompile是在编译前执行,不能访问当前工程中的类和资源文件。
* precompile2是在编译前执行,但是可以访问当前工程中的资源文件。
* postcompile是在编译后执行,会检查IoC容器中bean的配置,并可以访问当前工程中的类和资源文件。
* postcompile是在编译后执行,会检查IoC容器中bean的配置,并可以访问当前工程中的类和资源文件。

### 2. 如何定制已有的模板,比如说ORM生成时只生成某些工程
* 增加一个模板目录
* 在其中增加一个a-impl.xrun文件。xrun表示只执行代码不生成文件。a-impl的名称可以随意取,可以通过文件名控制它的执行顺序,所有模板文件按照文本顺序排序。
* 在xrun文件中通过`gen:Render`标签来引用已有的模板
````xml
<c:unit>
<gen:Render template="/nop/templates/orm/{appName}-dao" targetDir="${targetResource.path.$filePath()}"
xpl:lib="/nop/codegen/xlib/gen.xlib" inheritCodeGenLoop="true"/>
</c:unit>
````
12 changes: 12 additions & 0 deletions docs/faq/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -271,3 +271,15 @@ xlib就是xpl模板语言的函数库,一般写在自己模块的xlib目录下
> (BizModel中函数的返回值会经过NopGraphQL引擎处理后得到返回值)

使用NopGraphQL,一般没有必要再区分Controller和Service,直接在Service上增加@BizModel注解(并注册在beans.xml)中即可直接将服务发布为Web服务。通过meta层可以进行返回结果增强和后处理等,即NopGraphQL本身提供了一个弹性适配层,很多情况下都没有必要再增加一个对象来实现适配。

## 4. Nop平台的重点发展方向到底是“领域语言工作台”,还是“低代码开发平台”,还是SpringCloud这种开发框架呢

Nop平台的发展目标是成为通用的领域语言工作台,其他都是附带的东西。因为可以快速开发和扩展领域语言,并自动推导得到设计器和解析器,因此内置一些领域模型后就可以作为低代码平台来使用,为了简化内部的实现,并且最大化可扩展性,重新按照可逆计算原理重新实现了一套底层开发框架,这是研发过程的一种副作用。最终会在20万行左右手写代码的规模性完成所有功能,其他代码通过代码生成来生成,基本在一个程序员个人可控的范围之内。

## 5. Nop平台对于低代码平台这类产品是怎么理解的,它和领域语言的联系是什么
我现在不关注低代码这种产品形态,而是从广义的描述式编程的角度去推进技术发展,不断扩大描述式编程的应用范围,同时实现描述式和命令式编程的无缝融合。低代码要怎么低,在我的文章 [从可逆计算看LowCode] (https://zhuanlan.zhihu.com/p/344845973) 有介绍,实际上低代码的实现途径本质上和模型驱动是一样的,模型序列化为文本就是DSL。可逆计算对于模型引入了差量化理解,对于模型的构造和扩展提出了新的技术手段。

图灵机能够实现图灵完备的根本原因在于图灵机可以被看作是一种虚拟机,它可以模拟所有其他的自动计算机器,而如果我们不断提升虚拟机的抽象层次,就会得到可以直接"运行"所谓领域特定语言(DSL)的虚拟机,但是因为DSL关注的重点是特定领域概念,它必然无法以最便利的方式表达所有通用计算逻辑(否则它就成为了通用语言),必然会导致某种信息溢出,成为所谓的Delta项。

在第一代、第二代、第三代程序语言的发展过程中,不断的提升抽象层次,但它们仍然都是通用程序语言,但是发展到第四代程序语言,我们很可能得到的不是另一种通用程序语言,而是大量领域特定语言所构成的DSL森林,通过它们我们可以形成对原有程序结构的一种新的表示和认知。

0 comments on commit f51cb07

Please sign in to comment.