开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

DITA 已死

最近在整理历史的研究文档的时候发现了还保有了一些有关 DITA 的文档。 随着技术的发展,DITA 显得非常臃肿了,并且编译处理并不是非常友好。 查询了下官方的版本历史:   已经有差不多 2 年没有更新了,由此看来 DITA 作为文档交付应该已经是日薄西山了。应该没有什么人通过写 XML 的方式来写文档了。 相反,MD 和 AsciiDoc 格式的文档却大行其道。 其主要原因是能够随意部署,并且文档结构少,约束少,更加容易写作和阅读。 作为文档来说,内容是最主要的,格式相对来说没有那么重要,如果有漂亮的格式,但是内容一团糟,又怎么会有人去看和使用呢。 回想一下曾经用过的 DITA,编译太复杂,PDF 生成问题太多,CHM 格式的文档很多时候大家都不愿意用,更多的都在使用 Github 上来写 MD 格式。 DITA 已死,就此留念。 超级复杂的文档格式。 因为是基于 XML 的,每一个段落的创作都非常复杂,你还需要考虑复杂的 XML 标签。让写作不是一种享受,简直是一种折磨。 相对 MD 格式就让人舒服多了,你只需要关注一些常用的标记,其他的都是以内容为主。 比如说 Discourse 这个社区使用的 MD 格式就非常简单,能够让所有人更多的关注内容而不是标记。 不管怎么样, DITA 也代表了人类文明出版中的小缩影。 https://www.ossez.com/t/dita-docbook/10050/2

2021年01月18日 0Comments 567Browse 0Like Read more
Computer Science

Java 线程暂停的简单代码

在我们处理 API 调用的时候,API 在很多时候可能不会允许你无限制的执行。 这个时候在 Java 有一个代码就比较好用了,就是: Thread.sleep(6000); 上面的代码的意思就是暂停线程 6 秒钟,为什么是 6000,因为这个参数使用的是毫秒。1 秒等于 1000 毫秒。 需要注意的是,你在这里需要捕获异常,或者向上抛出 InterruptedException 这个异常。 Thread.sleep() 是Thread类的一个静态方法,使当前线程休眠,进入阻塞状态(暂停执行),如果线程在睡眠状态被中断,将会抛出IterruptedException中断异常。 https://www.ossez.com/t/java/9081

2021年01月18日 0Comments 558Browse 0Like Read more
Computer Science

Discourse 如何设置 API 的 key

登录 Discourse 后台后,然后访问 API 标签。 在标签页中可以看到当前正在使用的 Key。 你可以单击创建新的 API Key 进行配置 在描述部分,你可以输入任何你需要的描述。 在用户级别部分,你可以为这个 API Key 设置为全局访问还是只能是针对一个特定的用户使用这个 key。 我们是比较建议针对特定的用户使用这个 Key ,以避免因为用户分享 Key 导致的很多安全性问题。 在随后的页面中就是对这个 key 进行授权了。 一般来说,你可以使用这个 Key 来创建主题,对用户进行管理等。 针对数据迁移的情况来看,我们使用了主要是对主题来进行操作和控制。 当完成上面的配置后,将会提示创建的 Key 的字符串。 请注意你需要马上拷贝创建的字符串,因为这个字符串只出现一次。 如果这个 key 字符串丢了的话,你需要重新进行创建。 https://www.ossez.com/t/discourse-api-key/8945

2021年01月18日 0Comments 575Browse 0Like Read more
Computer Science

CloseableHttpClient 调用 Post 的时候 StringEntity 字符集

在默认情况下 CloseableHttpClient 调用会使用 StringEntity 来设置字符串。 在设置好字符串后,我们会发送到远程 API 上进行执行。 比如说,我们可以先初始化 HttpPost 对象,然后设置 setEntity HttpPost httpPost = new HttpPost("https://www.ossez.com/posts.json"); httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8"); 下一步是初始化发送的 JSON 数据内容: StringEntity postingString = new StringEntity(new Gson().toJson(topicRequest), StandardCharsets.UTF_8); 然后将 JSON 数据内容设置到 HttpPost 实体中 httpPost.setEntity(postingString); 在这里有一个地方是需要注意的就是在设置 StringEntity 字符集的时候需要使用 UTF_8。 如果你不设置这个参数,默认是使用 ISO-8859-1 字符集的。     很多时候针对中文的环境都会使用到中文,ISO-8859-1 字符集是不能支持中文的,一般来说我们只要确保所有的发送数据都使用 UTF-8 就可以了。 https://www.ossez.com/t/closeablehttpclient-post-stringentity/8401

2021年01月18日 0Comments 542Browse 0Like Read more
Computer Science

Discourse 使用 API 进行数据恢复的时候提示行为 many times 错误

使用 Discourse API 进行从其他站点导入数据的时候,如果你是站点管理员或者拥有者的话,在运行 API 一段时间后,你的调用可能会返回错误: 2021-01-16 08:34:30.871 DEBUG --- [ main] com.ossez.edtestbank.tests.PostTest : >>>{"errors":["You’ve performed this action too many times. Please wait a few seconds before trying again."],"error_type":"rate_limit","extras":{"wait_seconds":1}}     这是因为 API 有连接和行为限制以保证系统不被恶意攻击。 但是管理员在导入大量数据的时候可能是希望取消这个限制的。 其实你是可以在控制台中设置,并且取消的。 解决办法 访问 Discourse 的控制台,然后搜索关键字:Rate Limit 将 rate limit create topic 设置为 0。 这个的意思是用户可以无限制的创建 rate limit create topic。     然后再尝试使用你 API 的调用,这时候应该不会提示上面的错误了。 https://www.ossez.com/t/discourse-api-many-times/4047

2021年01月16日 0Comments 605Browse 0Like Read more
Computer Science

Spring Boot 完成第一个程序后下一步应该做什么

希望这部分提供的内容能够帮助开始使用 Spring Boot 来构建你自己的应用程序。 如果你是一个任务驱动型的开发者,你可能希望进一步访问 spring.io 页面中的内容来获得有关 开始使用 的相关指南。 通过这些指南能够有效的帮助你理解 Spring Boot 可以做什么的问题。同时,你还可以访问 “[如何使用]” 的参考文档。 否则的话,按照 Spring Boot 的官方逻辑,下一步请阅读有关 [Using Spring Boot] 的相关文档。 如果你没有兴趣继续了解使用 Spring Boot ,或者你就想使用 Spring Boot 构建相关文档的话,你可以访问 [Spring Boot 特性(features)] 页面中的内容来了解有关 Spring Boot 的相关特性。     整体来说 Spring Boot 的文档组织结构是比较松散的,你可以随时开始任何你希望阅读的部分。 https://www.ossez.com/t/spring-boot/1112

2021年01月13日 0Comments 551Browse 0Like Read more
Computer Science

Spring Boot 创建一个可以执行的 Jar

我们希望将我们上面的程序打包成一个可以执行的 Jar,然后我们可以通过这个 Jar 部署到生产服务器上来运行。 可以执行的 Jar(Executable jars)有时候也会被称为 “fat jars”,这个 jar 中有你所有编译的类和所有运行这些类所需要依赖的 jar。换句话说就是将所有的依赖和你的代码打包成一个可以执行的文件,你可以通过命令行直接运行这个 jar,而不需要将这个 jar 部署到服务器或者容器中。 可执行的 jars 和 Java Java 并没有给提供一个标准的方案来载入所有需要的 jar 文件(有时候 jar 自己还会包含有其他的 jar)。 当你尝试分发可以自动运行的 jar 的时候,你可能会遇到一些问题,而导致自动运行的 jar 没有办法正常运行和启动。 为了解决这个问题,很多应用开发者使用 “uber” jars。 一个 uber jar 包中包括了所有应用程序运行所需要的类和依赖的类,然后将这些编译后的类打包到一个单独的归档文件中。 使用这种方式来部署你的引用的话,当你尝试通过部署的应用来查看需要的类还引入了那些包 或者 jar 的时候就变得非常困难。 同时,这种方式还有一些潜在的其他问题,比如说在不同的包中有相同名字的类。这种情况将会导致编译无法通过或者有丢失类的问题。 Spring Boot 采用了 其他的方法 同时能够让你能够访问 Jars 的目录。 为了在 Spring Boot 中创建一个可以执行的 jar,我们需要将插件 spring-boot-maven-plugin 添加到我们的 pom.xml 文件中。 将下面的代码插入到 dependencies 部分的后面: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>     spring-boot-starter-parent POM 包含有 <executions> 配置来绑定 repackage 的任务。 如果你没有使用 parent POM,你需要自行申明这个配置。 请参考 插件文档 来获得更多的详细信息。 保存更新过后的 pom.xml 文件,然后从命令行中运行 mvn package 命令,你将从命令行中看到下面的输出: $ mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myproject 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] .... .. [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject --- [INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:2.5.0-SNAPSHOT:repackage (default) @ myproject --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ 如果是第一次构建的话,会下载需要的插件,可能会需要耗费一点点时间。     当构建完成后,访问 target 目录,你在这个目录中应该能够找到一个 myproject-0.0.1-SNAPSHOT.jar 的文件。 这个文件的大小应该差不多有 10 MB 左右。 如果你想看看这个文件里面有些什么东西的话,你可以通过运行 jar tvf 命令来进行查看: $ jar tvf target/myproject-0.0.1-SNAPSHOT.jar 通过运行上面的命令后,你应该可以在 target 目录中看到小文件被命名为 myproject-0.0.1-SNAPSHOT.jar.original 。 这些文件就是 Maven 命令创建的。Spring Boot 会将上面创建的这些文件进行重新打包。     你可以通过运行 java -jar 命令来运行你的应用程序,输入上面命令后,你的控制台应该会有下面的输出: $ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.5.0-SNAPSHOT) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in…

2021年01月13日 0Comments 529Browse 0Like Read more
Computer Science

Spring Boot 第一个示例启动运行

当你完成所有上面的配置后,你的应用程序应该是能够正常的启动了。 因为我们添加了 spring-boot-starter-parent 依赖到 POM,然后你就可以使用 run 来启动你的应用程序了。 run 这个是可以使用 Maven 来运行的,你可以不需要是 IDE,从项目的结构中输入 mvn spring-boot:run 然后来启动应用程序。 在第一次启动的时候,Maven 可能还需要下载必须的依赖,因此可能会消耗一些时间,在第二次启动的时候就没有这个问题了。 在控制台界面中,你应该能够看到下面的输出: $ mvn spring-boot:run . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.5.0-SNAPSHOT) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.222 seconds (JVM running for 6.514) 当 Spring Boot 完成启动后,打开你的浏览器,在浏览器的 URL 地址栏中输入 localhost:8080 后回车,你的浏览器应该能够显示下面的内容: Hello World! 如果你想退出正在运行的应用程序,在 cmd 命令行中输入: ctrl-c,就可以退出了。 如果你的项目已经导入到 IDE 中了,在 IntelliJ IDEA 中,你可以直接启动命令行工具,然后在命令行工具中输入需要的命令。当然你也可以使用 IntelliJ IDEA 的运行命令直接运行。 下图显示了如何从 IntelliJ IDEA 中直接进行启动。     如果你不希望使用 IntelliJ IDEA 的命令行工具进行启动的话,你可以找到源代码的 main 函数。 然后直接进行启动。     通过左侧的运行,你可以直接启动。 https://www.ossez.com/t/spring-boot/1103

2021年01月12日 0Comments 609Browse 0Like Read more
Computer Science

Spring Boot 第一个示例 “main” 方法

示例程序的最后需要介绍方法就是main 方法. 针对一个应用程序,这个方法是标准的方法。在 Java 环境中,是需要使用 Main 方法来执行的。 在我们定义的这个 main 方法中有一行代码,这个代码就是被用来运行 Spring Boot 的 SpringApplication 类中的 run。通过这个 run,我们就可以运行 Spring Boot 应用了。 SpringApplication 将会引导我们的应用完成一系列的功能,包括有启动 Spring,开始自动配置 Tomcat Web 应用服务器。     在启动的过程中,我们需要将 Example.class 参数传递到 run 方法中,这样可以告诉 SpringApplication 哪一个是 Spring 的主组件,换句话说就是告诉 Spring Boot 从哪个类开始启动。 args 数组同时也被用来传递在命令行中需要告诉应用程序的所有参数。     main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 public static void 类型的,方法必须接收一个字符串数组的参数等等。 https://www.ossez.com/t/spring-boot-main/1102

2021年01月11日 0Comments 642Browse 0Like Read more
Computer Science

Spring Boot 第一个示例 @EnableAutoConfiguration 注解

在示例代码中的第二个注解是 @EnableAutoConfiguration。     这个注解告诉 Spring Boot 如何去 “猜测(guess)” 你是如何希望配置 Spring 的。这个所谓的猜测过程其实也不是真的猜,是根据你添加的依赖来确定的。 当添加 spring-boot-starter-web 依赖后,Spring 将会添加 Tomcat 和 Spring MVC 依赖。这个自动配置假定你将会部署一个 web 应用和设置 Spring 框架。     Starters 和 Auto-configuration 自动配置(Auto-configuration)被用来与 Spring 的 “Starters” 很好的协同工作。 但是如果你还有其他的一些选项的话,你 Spring 的自动配置也会尝试去进行配置。 你当然也可以选择 starters 之外的依赖。 Spring Boot 仍然将会尝试对你的应用进行自动配置。 https://www.ossez.com/t/spring-boot-enableautoconfiguration/1101

2021年01月11日 0Comments 627Browse 0Like Read more
1…45678
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (511)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1