返回首页
最新
嗨,HN,
我们过去几年一直在开发 [OOMOL](https://oomol.com) —— 一个为开发者打造的工作流自动化平台。
与 Zapier 或 n8n 不同,OOMOL 在容器化环境中本地运行,支持完整的 Python 和 Node.js(以及第三方库),并为您提供与编写真实代码相同的灵活性。它就像是 VS Code 与工作流自动化的结合。
关键点:
- 本地优先(无云锁定)
- 支持 Python 和 Node.js(您可以混合使用两者!)
- 开箱即用的 Pip/npm 库支持
- 完全可视化,带可编程节点
- 以容器或子流的形式分享和重用工作流
我们仍处于早期阶段,非常希望获得 HN 社区的反馈。欢迎随时提问!
我几年前在这里发布了NumPad v1,当时它不过是我编写的计算器引擎的一个简单CodeMirror封装。<p>现在我已经将其重写为一个渐进式Web应用(PWA),支持多个文档,并将其持久化到IndexedDB,同时为付费用户提供同步服务。同步功能在后台由Automerge[1]处理,这应该使得文档共享的实现相对简单。<p>[1] <a href="https://automerge.org/" rel="nofollow">https://automerge.org/</a>
HarmonyOS 5 新闻应用日历事件管理实现
摘要
本文介绍了在 HarmonyOS 5.0 新闻应用中实现日历事件管理功能的过程,包括绑定弹出窗口、添加日历事件和显示事件详情。该功能使用 ArkTS 语言实现。
代码实现
1. 绑定弹出组件
```javascript
.bindSheet($$this.isShow, this.AccountDetailBuilder, {
height: 500
})
```
2. 实现添加日历事件的功能
```javascript
async addCalendarEvent(title: string) {
await this.currCalendar?.addEvent({
title: title,
startTime: Number(new Date('2025-12-12 19:00:00')),
endTime: Number(new Date('2025-12-12 21:00:00')),
reminderTime: [0, 5, 10, 60],
type: calendarManager.EventType.NORMAL
})
this.currCalendarEvents = await this.currCalendar?.getEvents() || []
}
```
3. 构建账户详情组件以显示事件列表
```javascript
@Builder
AccountDetailBuilder() {
Column({ space: 15 }) {
Text(this.currCalendar?.getAccount().displayName)
.fontSize(24)
.fontWeight(500)
Column({ space: 15 }) {
Button('订阅 CNN 新闻')
.onClick(() => {
this.addCalendarEvent('订阅 CNN 新闻')
})
Button('订阅 BBC 新闻')
.onClick(() => {
this.addCalendarEvent('订阅 BBC 新闻')
})
}
Text('我的订阅 : ')
List({ space: 15 }) {
ForEach(this.currCalendarEvents, (event: calendarManager.Event) => {
ListItem(){
Column({ space: 5 }){
Text(event.title)
Text(new Date(event.startTime).toString())
}
.padding({ left: 15, right: 15 })
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Start)
.width('100%')
.height(60)
.borderRadius(12)
.backgroundColor('#DDDDDD')
}
})
}
}
.padding(15)
.alignItems(HorizontalAlign.Start)
}
```
HarmonyOS 5 新闻应用程序日历账户管理实现
摘要
本文介绍了在 HarmonyOS 5.0 新闻应用程序中日历账户管理功能的实现。它包括添加特定类型日历账户的按钮以及删除日历账户的构建器。使用 ArkTS 语言实现账户的添加和删除操作。
1. 实现账户添加按钮组件
```javascript
Column({ space: 15 }){
Button('添加体育新闻账户')
.onClick(async () => {
await this.addAccount('体育新闻', '#006699')
this.list = await this.calendarMgr.getAllCalendars()
})
Button('添加国际新闻账户')
.onClick(async () => {
await this.addAccount('国际新闻', '#ffaa00')
this.list = await this.calendarMgr.getAllCalendars()
})
}
.margin(15)
```
2. 实现账户删除构建器
```javascript
@Builder
DeleteBuilder(calendar: calendarManager.Calendar) {
Text('删除')
.fontSize(24)
.width(120)
.textAlign(TextAlign.Center)
.height('100%')
.onClick(async () => {
await this.calendarMgr.deleteCalendar(calendar)
this.list = await this.calendarMgr.getAllCalendars()
})
}
```
我在TCP方面卡了很多小时。感觉整体概念还没完全理解。虽然我觉得自己明白大部分内容,但还是有些困惑……目前我在学习回退重传和类似的内容。滑动窗口……数据包格式的记忆不算难。我想深入理解内部的基础设施工程。
大家好,我想请教一下你们的意见。
我们建立了 vykee.co 作为一个入职工具。我们的想法是通过隐藏高级功能来让 SaaS 界面更易于理解,特别是针对新用户。
其中一个主要功能是标签系统,允许 SaaS 公司对元素进行标记,并将多个元素组合成一个功能。基本上,我们在前端建立了一个用户界面层(每个元素和功能都有独特的标识符和注释)。
我认为这个用户界面层对大型语言模型(LLMs)可能非常有用:如果我们将所有这些用户界面信息放在一个简单的 llms.md 文件中(类似于 robots.txt,但针对 LLMs),它们将能够比解析 HTML 或依赖截图更好地理解界面。
不过,这对基于浏览器的代理才有帮助。
我们曾经讨论过,有人认为与其押注于基于浏览器的代理,不如押注于 MCP,因为 MCP 是标准且更广泛采用的。这个想法是建立一个 MCP,并将其连接到标记的前端元素。
你们认为继续押注于基于浏览器的代理还有意义吗?
谢谢!