返回首页
最新
我已经花了几个月时间在这个项目上,最初是因为我对使用大型语言模型(LLMs)学习的方式感到沮丧。你会得到一大堆文本,这些内容会消失在聊天记录中。而维基百科则是完全相反:无尽的无结构的知识深渊。我想要的是两者之间的东西。
Periplus生成的课程是相互关联的Markdown文档,量身定制以适应你的水平。它会提前问你几个问题,构建一个课程大纲,每个概念都链接到相关的内容。点击一个你不理解的术语,它会在旁边打开一个新的文档。
这个项目受到了Obsidian的强烈启发——图形视图类似,如果你想将笔记保存在本地,还有Obsidian导出功能。
它还可以从任何文档生成测验和抽认卡,这有助于解决我在被动阅读中总是遇到的遗忘问题。
技术栈:React、Node/Express、Postgres(使用pgvector)、Sonnet 4.5用于生成。图形使用D3,并结合了我制作的WASM优化的多体模型[1]。
还有很多细节需要完善!我非常希望能收到关于课程质量的反馈,目前我主要测试的是技术主题。
[1]: [https://www.npmjs.com/package/d3-manybody-wasm](https://www.npmjs.com/package/d3-manybody-wasm)
我是一名软件工程师,意外地成为了我们团队的Kubernetes专家,并最终成为每个Helm图表PR的瓶颈。
我开发了Chart Preview,这样审查者就可以在不等待我的情况下查看Helm图表的更改。
几年前,我们团队需要为一个现有产品实现高可用性,这意味着要在Kubernetes和OpenShift上进行部署。我花了几个月的时间学习Kubernetes、Helm及其相关生态系统。之后,Kubernetes在团队中基本上成了“我的事”。
后来,我们为该产品发布了公共Helm图表,客户开始提交PR。这些PR往往会搁置几个月——并不是因为更改不好,而是因为测试它们意味着需要手动启动一个Kubernetes集群,使用提议的更改部署图表,运行测试场景,并与产品和QA协调验证。由于我是一位能够可靠地设置这些环境的人,因此一切都得等我。
我一直在想:如果PR本身就能展示更改的效果,那会怎么样?如果审查者只需点击一个链接就能看到它被部署,那又会怎么样?
这个想法变成了Chart Preview。
Chart Preview在你打开PR时将你的Helm图表部署到一个真实的Kubernetes集群中,为该PR提供一个独特的预览URL,并在PR关闭时自动清理所有内容。
我开始时是解决我个人遇到的问题,而不是一开始就调查整个市场。在我构建更多功能时,我查看了现有的预览工具,注意到虽然有针对容器应用程序的良好预览解决方案,但Helm特定的工作流程引入了不同的挑战——图表依赖关系、分层值文件和有特定结构的图表。这促使我将Chart Preview的重点放在Helm原生上,而不是将容器预览工作流程适配到Helm。
在底层,它是用Go语言构建的,使用Helm v3 SDK。架构是一个API服务器,工作进程从PostgreSQL队列中提取任务——没有Kubernetes操作员,只有服务直接与Kubernetes API通信。每个预览在其自己的命名空间中运行,具有拒绝所有的网络策略、资源配额和限制范围。GitHub集成通过GitHub应用程序进行检查运行和Webhook,GitLab则通过REST API支持。
在这个过程中遇到了一些有趣的挑战。将预览主机名注入Ingress资源而不破坏清单需要几次迭代。Helm卸载并不总是能清理所有内容,因此删除整个命名空间被证明是最安全的后备方案。处理对同一PR的快速推送需要构建编号,以确保最新的推送始终胜出。尽管Helm SDK功能强大,但文档不足——我花了很多时间阅读Helm的源代码。
我已经用Grafana、podinfo和WordPress等真实图表构建和测试了几个月,以验证工作流程。虽然还处于早期阶段,但它确实有效,现在我正在尝试了解其他团队是否也有我曾经遇到的痛点。
你可以通过在这里安装GitHub应用程序来尝试它:
<a href="https://github.com/apps/chart-preview" rel="nofollow">https://github.com/apps/chart-preview</a>
我希望能收到一些反馈:
这是否解决了你们团队的真实问题,还是共享的预发布环境“足够好”?
还有什么缺失的功能会让你真正使用它?
是否有Helm图表不适用?(集群范围的资源是故意被阻止的。)
欢迎就实现方面的问题进行咨询。
嘿,YC
我来这里是因为我们正在构建一个我们认为非常酷的东西,并希望找到一些创始人来测试并给我们诚实的反馈。
我们是技术创始人。我们讨厌内容营销,但我们需要有机增长,因此我们构建了一个完整的系统来为我们处理这些事情。
我们研究了流行的关键词和竞争对手,主动排定了主题,撰写了针对搜索引擎优化(SEO)和大型语言模型(LLM)优化的内容,直接发布到内容管理系统(CMS),并跟踪排名情况。我们加大了对有效内容的投入。
这使我们的流量在六个月内增长了6000%。
现在,我们将整个工作流程打包成Averi——一个为那些更愿意专注于产品发布而不是写博客的创始人提供的内容引擎。
它的功能包括:
→ 为您研究和排定主题
→ 撰写针对谷歌和LLM引用优化的内容
→ 发布到您的CMS
→ 跟踪排名和表现
→ 推荐下一步该创建的内容
您可以批准(如果愿意,还可以与您的团队协作编辑)。它会自动运行,带来更好的可见性。
我们希望找到大约50位创始人来测试这个产品,然后再公开发布。您将获得完全免费的全面访问,如果您愿意,我们可以安排一次电话会议来为您演示。
我们唯一的要求是:告诉我们什么有效,什么有问题,以及缺少什么。
感兴趣吗?请在下方评论或给我发私信。非常希望听到您的想法!
了解更多信息的链接:https://www.averi.ai/workflows/your-ai-content-engine
# Dragonlang
<p>一种基于行的小型语言,具有一个最小的解释器,位于 `__main__.py` 中。</p>
## 文件扩展名
<p>源文件使用 `.dragon` 扩展名。解释器也接受没有扩展名的文件名,如果存在,会尝试 `<name>.dragon`。</p>
## 运行
<p>文件模式:</p>
```bash
python __main__.py path/to/program.dragon
```
<p>REPL 模式:</p>
```bash
python __main__.py
```
<p>输入 `exit` 或 `quit` 以退出 REPL。</p>
### 文件解析
<p>当路径参数没有扩展名(名称中没有 `.`)时,解释器会首先尝试 `<path>.dragon`,如果存在的话。</p>
## 执行模型
- 解释器一次处理一行。
- 没有多行语法、块结构或语句分隔符。
- 解析基于简单的子字符串检查,而不是词法分析或语法分析。
### 匹配顺序
<p>行的检查顺序如下,首先匹配的优先:</p>
1. `+`(加法)
2. `-`(减法)
3. `print`
4. `on error`
5. 精确的变量查找
6. 回退错误
<p>这意味着包含 `+` 或 `-` 的行将永远不会达到 `print` 或 `on error` 处理,即使这些词出现在行中。</p>
## 语法和行为(基于 `__main__.py`)
<p>每行独立处理。解析是最小的,基于子字符串检查,而不是正式的语法。</p>
### 打印
<p>打印字符串字面量:</p>
```dragon
print "hello"
print 'world'
```
<p>如果 `print` 后的文本与解释器环境中的变量名匹配,则打印其值。(变量尚不可赋值。)</p>
<p>注意:</p>
- `print` 可以在行的任何位置被检测到,而不仅仅是在开头。
- 解释器会去掉 `print`,然后修剪两端的空格和引号(`"`,`'`)。没有转义处理。
### 整数数学
<p>支持整数的加法和减法:</p>
```dragon
2+3
10-4
```
<p>运算符周围允许有空格。</p>
<p>注意:</p>
- 解释器在看到的第一个 `+` 或 `-` 处分割。
- 两边的内容会被修剪并在解析前在环境中查找。
- 非整数值会引发 `ValueError`,并作为通用错误报告。
### 变量(只读)
<p>如果变量已存在于解释器环境中,可以读取变量。目前没有语法来赋值新变量。变量存储在 `__main__.py` 中的 `env` 字典中。</p>
### "on error"
<p>有一个特殊的行前缀 `on error`,该前缀会被解析,但目前不会产生输出。它会去掉前缀,如果环境中存在,则查找剩余文本,然后返回而不打印。</p>
## 错误行为
- 文件模式:`run()` 中的任何异常都会打印 `Error in line: <line>`。
- REPL 模式:捕获异常,但当前代码打印异常类对象,而不是实际的错误信息。
## 示例程序
```dragon
print "hello"
2 + 3
10-4
```
## 当前限制
- 尚不支持变量赋值(环境为只读)。
- 没有条件语句、循环或函数。
- 没有注释、字符串转义或多行语句。
- 错误报告为 `Error in line: <line>`。
- `on error` 行被解析但没有可见效果。
## 保留字
<p>以下单词在解释器中使用:</p>
- `webcollect`
- `list`
- `open`
- `system`
- `shutdown`
- `warn`
- `go to`
- `enter`
- `info`
- `time`
- `pause`
## 使用 `pause`
```dragon
pause <amount>
```
这里是Oli,<p>我32岁,远程工作,每天坐在桌子前工作10个小时,<p>这慢慢地但确实在摧残我(还有你),它不仅伤害了我的身体,也影响了我的工作效率,所以这是我尝试解决这个问题的方法:<p>连接你的日历,Movely会找到空闲时间,并在其中添加5分钟的微休息(力量训练、灵活性、减轻眼睛疲劳或压力),<p>每周日晚上,我会运行一个任务,根据你可用的时间段创建下周的会议,<p>如果你想知道我的技术栈:
* 单一代码库:Nx(前端/后端/市场营销 + 共享库)
* 前端:Next.js、Tailwind、Radix UI、Zustand
* 后端:NestJS、PostgreSQL(Prisma)、Redis(BullMQ用于调度任务)<p>如果你有任何意见、对产品的疑问或改进建议,或者觉得调度功能是否有帮助或让人感到打扰,我非常希望能收到直接的反馈 :)<p>感谢你的阅读!