1作者: gilesjb大约 2 个月前原帖
Jam 是一个构建系统。更准确地说,它是一个具有持久结果缓存的 Java/Kotlin 函数记忆化工具,这实际上是构建系统所需的大部分功能。 为了演示记忆化,我们可以使用一个可执行的 Kotlin 脚本,如下所示: ```kotlin #!/usr/bin/env kotlin -Xjvm-default=all -cp build/jam-0.9.jar interface FibonacciExample : Project { fun fib(x: Long): Long = if (x < 2) x else fib(x - 1) + fib(x - 2) fun demo() { println("fib(10) = ${fib(10)}") } } Project.run(FibonacciExample::class.java, FibonacciExample::demo, args) ``` 然后运行它: ``` % ./fibonacci.kts [compute] demo [compute] fib 10 [compute] fib 9 [compute] fib 8 [compute] fib 7 [compute] fib 6 [compute] fib 5 [compute] fib 4 [compute] fib 3 [compute] fib 2 [compute] fib 1 [compute] fib 0 [current] fib 1 [current] fib 2 [current] fib 3 [current] fib 4 [current] fib 5 [current] fib 6 [current] fib 7 [current] fib 8 fib(10) = 55 ``` Jam 运行时日志显示了 fib(x) 调用的递归过程,直到达到 fib(1) 和 fib(0) 的基本情况,并且还展示了如何通过从缓存中返回记忆化结果来消除重复调用。 当脚本完成时,缓存会保存到本地文件。如果我们再次运行相同的脚本,结果已经准备好: ``` % ./fibonacci.kts [compute] demo [current] fib 10 fib(10) = 55 ```
1作者: matthewtse大约 2 个月前原帖
嘿,HN, 上个周末我编写了一个很酷的网站,让你可以轻松进行DNS记录查询。 我知道你可以使用dig或nslookup,但很多时候我懒得记住语法,还有一些不太懂技术的用户需要管理DNS条目,但对命令行不太熟悉。 我们在ImprovMX经常调试客户的DNS问题,通常会链接到像mxtoolbox.com这样的工具来指出DNS记录的问题。但那些工具看起来相当臃肿,像是2000年代的产物。我想要一个超级简洁和简单的工具,并且有一些我认为在使用上非常必要但缺失的功能: - 没有令人困惑的下拉菜单或DNS查询语法,只需输入你的域名或子域名 - 所有值都可以一键复制 - 头部链接,以便我们可以提供URL,直接引导其他用户到确切的域名和我们想要引用的记录 这真是超级有趣的编程体验! 前端几乎是用lovable一气呵成的。AI在使用最新流行框架(如react、tailwind、shadcn等)时表现得如此出色,真是令人惊叹。接下来的几个小时我又进行了小的调整。 后端是一个非常简单的Python Flask服务器。 这两个部分都托管在render.com上,我喜欢render.com的简单和价值导向。当我想要快速上线并忘记一切时,它总是让我最少头疼的提供商。 试试看吧,告诉我你的想法!