1作者: kayceeingram大约 1 个月前原帖
轻松为 React 组件添加音效,这些组件灵活可定制,并且完全支持键盘导航和内置触觉反馈。如果需要,内置合理的默认设置,提供开箱即用的体验,同时通过 API 提供音效,使其从一开始就能顺利运行。
1作者: nikolaynankov大约 1 个月前原帖
嗨,HN, 我是Nick,这个工具的灵感来源于我在iOS开发中与Apple Ads的经验。这是我为那些没有时间或市场营销知识的iOS开发者简化搜索结果广告操作的尝试。AdCider会研究并构建广告活动,同时监控并持续优化关键词和出价。 我完全专注于让自动化变得实用且无需过多干预,因此用户界面相对简单。 我今天刚刚推出了我的最小可行产品(MVP),如果你有任何想法,我会非常感激 :) 这是一个付费服务,提供14天的试用期。作为感谢你关注它的回馈,如果你觉得它有用,使用代码HN50可以在前3个月享受50%的折扣。
6作者: somecloud大约 1 个月前原帖
再过六个月我就要40岁了。感觉自己已经度过了超过50%的人生。虽然有一些成就,甚至是一些显著的成就,但我的生活大多数时候还是充满了挣扎和消极情绪。
1作者: monsieurleon大约 1 个月前原帖
宣布 readwise-vector-db:为您的 Readwise 库注入强大动力,实现本地语义搜索 大家好!经过几个月的调试,我很高兴地分享 readwise-vector-db——一个开源项目,它将您的 Readwise 高亮内容转变为一个快速、可自托管的语义搜索引擎。 为什么要这样做?我希望能有一种方式,能够用自然语言即时搜索我所有的阅读历史——书籍、文章、PDF,所有内容,而不仅仅是关键词。现在,通过夜间同步、向量搜索 API、Prometheus 监控指标以及为 LLM 客户端提供的流式 MCP 服务器,这一切都变得可能。 主要特点: • 对您的 Readwise 库进行全文语义搜索(本地、私密、快速) • 与 Readwise 的夜间同步——无需手动导出 • 提供 REST API,便于与您的工具和工作流程集成 • Prometheus 监控指标 • 为 LLM 驱动的应用提供流式 MCP 服务器 该项目基于 Python,开源(MIT 许可证),并且可以通过 Docker 或本地轻松运行。如果您想拥有自己的阅读数据,构建自定义工作流程,或尝试本地 LLM,欢迎试用。 期待您的反馈、问题和下一步的想法!
1作者: flfljh大约 1 个月前原帖
# 更新 Flutter 插件项目结构 # HarmonyOS 下一步 ## 更新摘要 - 在 Flutter 插件的 `ohos` 目录中,将 HarmonyOS 项目结构替换为模块结构 - 将所有引用的 HAR 文件整合到 `ohos/har` 下 - 更新后移除 OHOS 插件中过时的模块目录 ## 更新步骤 以 [integration_test](https://gitee.com/openharmony-sig/flutter_flutter) 为例进行演示: ### 1. 将 integration_test/ohos 从项目格式重构为模块格式 ```sh cd flutter_flutter/packages/integration_test mv ohos/ohos ./ohos2 # 备份原始结构 rm -rf ohos # 移除旧结构 mv ohos2 ohos # 重命名为标准模块格式 cd example flutter pub get # 刷新依赖 flutter build hap --debug # 验证构建 ``` > *注意*: 在此阶段运行 `flutter run` 将会失败,直到配置更新完成。 ### 2. 配置更新 #### 2.1 更新 integration_test/ohos/oh-package.json5 *更新前*: ```json { "name": "ohos", ... } ``` *更新后*(与 pubspec.yaml 中的插件名称匹配): ```json { "name": "integration_test", "license": "Apache-2.0", "dependencies": { "@ohos/flutter_ohos": "file:har/flutter.har" } } ``` #### 2.2 更新 integration_test/ohos/src/main/module.json5 *更新前*: ```json { "module": { "name": "ohos", ... } } ``` *更新后*: ```json { "module": { "name": "integration_test", ... } } ``` #### 2.3 更新 integration_test/ohos/hvigorfile.ts *更新前*: ```typescript import { appTasks } from '@ohos/hvigor-ohos-plugin'; export default { system: appTasks, plugins:[] } ``` *更新后*: ```typescript export { harTasks } from '@ohos/hvigor-ohos-plugin'; ``` ## 验证步骤 1. 在 DevEco Studio 中打开 `integration_test/example` 并配置签名 2. 运行示例: ```sh cd integration_test/example flutter run -d $DEVICE --debug ``` ### 关键 HAR 参考配置 HAR 文件现在位于 `ohos/har` 下 #### 更新 example/ohos/oh-package.json5 ```json { "dependencies": { "@ohos/flutter_ohos": "file:./har/flutter.har" }, "overrides": { "@ohos/flutter_ohos": "file:./har/flutter.har" } } ``` #### 更新 example/ohos/entry/oh-package.json5 *更新前*: ```json { "dependencies": { "@ohos/integration_test": "file:./har/integration_test.har" } } ``` *更新后*: ```json { "dependencies": { "integration_test": "file:../har/integration_test.har" } } ``` ## 常见问题排查 ### 1. ENOENT: 没有这样的文件或目录 *错误*: ```log hvigor ERROR: ENOENT: no such file or directory, stat 'xxx/flutter_flutter/packages/integration_test/ohos/build/default/cache/default/default@packageHar/ohos/oh_modules/@ohos/flutter_ohos' ``` *解决方案*: 手动删除错误信息中提到的路径。 ### 2. 操作不允许(符号链接错误) *错误*: ```log hvigor ERROR: ENOENT: operation not permitted, symlink 'xxx/webview_flutter_ohos/ohos/webview_flutter/oh_modules/.ohpm/@ohos+flutter_ohos@file+libs+flutter.har/oh_modules/@ohos/flutter_ohos' -> 'xxx/webview_flutter_ohos/ohos/build/default/cache/default/default@PackageHar/webview_flutter/oh_modules/@ohos/flutter_ohos' ``` *解决方案*: 移除旧结构中的遗留目录: ```sh rm -rf flutter_packages/packages/webview_flutter_ohos/ohos/webview_flutter rm -rf flutter_packages/packages/path_provider_ohos/ohos/path_provider rm -rf flutter_packages/packages/file_selector_ohos/ohos/FileSelector ```
1作者: flfljh大约 1 个月前原帖
# HarmonyOS开发基础 ## 数据存储 HarmonyOS应用程序提供多种数据存储选项: - *首选项(Preferences)*:用于简单数据的轻量级键值存储 - *SQLite*:用于结构化数据存储的关系型数据库 - *文件存储*:直接访问文件系统以进行自定义数据存储 ## 数组 数组是按索引访问的有序数据集合: ```javascript let numbers = [1, 2, 3, 4, 5]; console.log(numbers[0]); // 输出 1 ``` ## 函数 ### 常规函数 封装可重用的代码块: ```javascript function greet(name) { return "Hello, " + name; } console.log(greet("Alice")); // 输出 "Hello, Alice" ``` ### 箭头函数 简洁的函数语法: ```javascript const greet = (name) => "Hello, " + name; console.log(greet("Bob")); // 输出 "Hello, Bob" ``` ## 接口 定义对象结构的契约: ```typescript interface Person { name: string; age: number; greet(): string; } class Employee implements Person { name: string; age: number; constructor(name: string, age: number) { this.name = name; this.age = age; } greet(): string { return "Hello, I am " + this.name; } } ``` ## 对象和方法 属性和方法的集合: ```javascript let person = { name: "Charlie", age: 30, greet: function() { return "Hello, " + this.name; } }; console.log(person.greet()); // 输出 "Hello, Charlie" ``` ## 联合类型 可以是多种类型之一的值: ```typescript let age: number | string; age = 25; // 有效 age = "twenty-five"; // 也有效 ``` ## 枚举 命名常量集合: ```typescript enum Direction { Up, Down, Left, Right } let direction: Direction = Direction.Up; // 使用枚举值 ``` ------ ## UI开发概念与布局 ### 组件属性和方法 - *属性*:配置外观和行为 - *方法*:执行特定于组件的操作 ### 文本样式 - *文本颜色*:通过 `text-color` 属性设置 - *文本溢出*:通过 `text-overflow` 控制(例如,`ellipsis` 显示截断点) ### 图像组件 ```html <image src="path/to/image.png" width="100" height="100"></image> ``` ### 输入字段 ```html <input type="text" placeholder="Enter text here"></input> ``` ### SVG图标 直接嵌入或引用SVG文件: ```html <svg width="100" height="100"> <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" /> </svg> ``` ### 布局元素 组织UI组件的位置和大小 #### 边距 ```css .container { margin: 10px; /* 统一边距 */ margin: 5px 10px; /* 垂直 | 水平 */ margin: 5px 10px 15px; /* 上 | 水平 | 下 */ margin: 5px 10px 15px 20px; /* 上 | 右 | 下 | 左 */ } ``` #### 边框 ```css .box { border: 1px solid black; /* 宽度 | 样式 | 颜色 */ border-radius: 10px; /* 圆角 */ } ``` #### 自定义形状 ```css .special-shape { border-radius: 20px 10px 30px 5px; /* 自定义圆角 */ } ``` ### 背景 ```css .background { background-color: #f0f0f0; /* 纯色 */ background-image: url('path/to/image.png'); /* 背景图像 */ background-position: center; /* 图像定位 */ background-size: cover; /* 图像大小 */ background-repeat: no-repeat; /* 防止平铺 */ } ``` ### 线性布局对齐 ```css .linear-layout { display: flex; justify-content: center; /* 主轴对齐 */ align-items: center; /* 交叉轴对齐 */ flex-direction: row; /* 布局方向(行/列) */ } ```