iovxw

Chez Scheme Version 9 User’s Guide

LaTeX 依赖好麻烦

闲得没事自己编译了下,有一块竟然还要手动写日期,一堆依赖真是麻烦

Github: https://github.com/iovxw/csug9

PDF: https://iovxw.net/csug9/csug.pdf

HTML: https://iovxw.net/csug9/csug.html

Clojure Thread/sleep 在 core.async 里的坑

文档为何没标注

给 Telegram 写的一个 RSS Bot 总是随机出现大量重复推送更新的 BUG,还以为是数据库或者 RSS 对比的问题,然而逻辑上根本没问题

百思不得其解

直到发现了自己在 loop 用的是 Thread/sleep 来进行定时的,它是 Thread 啊!

「速报」世界上最好的 Scheme 编译器开源了

还没试

当然最好的不是我说的,是王垠说的 (冤有头债有主,别打我)

十二天前,Cisco 的 github 上新建了一个 repo,就是大名鼎鼎的 (被王垠吹上天的) ChezScheme

不过只有一个 README 和 LICENSE

而就在十分钟之前,终于推了源码上去了

HTML5 离线缓存两个需要注意的地方

笔记

这两天用 ClojureScript 弄了个 Todo List

在线版本: https://iovxw.net/text-todo-list/

为了能离线使用, 试着用了下 HTML5 加的 Application Cache, 效果当然是不错的

不过中间看文档不仔细导致白折腾了半天

不要去评价一门你没真正用过的编程语言

人类是无法互相理解的

只要是个程序员,肯定就陷入过这个话题中

究竟哪个语言更好?

一般这种话题开始后,只有三种结果

关于 Lisp

一些废话

有人奇怪我为啥会喜欢这么一个没人用的语言

还有人认为这是为了装逼(对于这种人,真想打一顿)

本来是想回答:

反正我喜欢用,又没安利给你,你管得着吗

不过还是谈一下 Lisp 这个 充满圆括号的 语言吧

再次更新模板

还是自己写的

这次又写了一个模板, css 加起来才 200 行
大概算是极简主义吧

如果你发现顶栏的 Search 是灰色的,或者没有加粗
那么请换一个现代浏览器

以及再次迁移回 github page, 因为发现 Kloudsec 提供了一个 免费 HTTPS CDNgithub page
当然国内速度就不指望了

顺带一提有没有发现这篇文章没有 Read More... ?
因为文章总共就这么长啦

使用 Clojure 为 Minecraft 编写 Bukkit 插件时出现 Could not locate clojure/core__init.class or clojure/core.clj on classpath 的解决方法

标题太长短不了

09:10:17 [SEVERE] Could not load 'plugins/watershipdown-0.1.jar' in folder 'plugins': 
java.lang.ExceptionInInitializerError
	at clojure.lang.Namespace.<init>(Namespace.java:34)
	at clojure.lang.Namespace.findOrCreate(Namespace.java:176)
	at clojure.lang.Var.internPrivate(Var.java:149)
	at net.jonnay.watershipdown.WatershipDown.<clinit>(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131)
	at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:285)
	at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:200)
	at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:156)
	at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:132)
	at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:52)
	at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:148)
	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:407)
	at net.minecraft.server.ThreadServerApplication.run(SourceFile:465)
Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: Could not locate clojure/core__init.class or clojure/core.clj on classpath: 
	at clojure.lang.Util.runtimeException(Util.java:165)
	at clojure.lang.RT.<clinit>(RT.java:319)
	... 15 more
Caused by: java.io.FileNotFoundException: Could not locate clojure/core__init.class or clojure/core.clj on classpath: 
	at clojure.lang.RT.load(RT.java:430)
	at clojure.lang.RT.load(RT.java:398)
	at clojure.lang.RT.doInit(RT.java:434)
	at clojure.lang.RT.<clinit>(RT.java:316)
	... 15 more

Linux 下将 .jar 制作为可直接执行文件

大概是通用的

一般终端环境下要运行一个(有入口的) jar,需要 java -jar xxxx.jar

桌面环境则需要选择指定 java 来运行,需要设置默认。都不是很方便

通常都是写一个脚本来执行 java -jar,但是这样就变成两个文件了,强迫症不舒服

解决方法很简单,把这俩拼成一个文件就行了

Let's Encrypt 证书申请/签发流程

HTTP

Let's Encrypt 的自动工具很方便,但也让人搞不清过程。其实就是一个 ACME (Automatic Certificate Management Environment,自动证书管理环境) 的客户端实现,相关规范可以看这里

这篇博文相当于是个笔记,只讲最简单(暴力)的验证方式,就是靠 HTTP 验证。其他还有用 DNS 和 TLS SNI 等进行验证的。