WWW.YOUINFO.SITE
标签聚合 第二

/tag/第二

v2ex · 2026-06-12 11:32:46+08:00 · tech

回顾 去年 在 V2EX 推广茶叶 的时候,心里挺忐忑的。一年过去了,今年因为很多事情耽搁,来晚了些,先和大家说声抱歉。 去年线上销售百余份,结交了很多茶友,截至目前,暂无退货和差评记录,非常感谢大家的包容和支持。虽然规模不大,但有越来越多的朋友认可,父亲很自豪自己的茶能飞到天南海北,今年做了全面的农残检测(下附报告),希望让大家更放心。 抽奖 抽奖数量:12 份 奖品内容:谷雨前霍山黄芽 1 罐( 12x8x12cm 下图有实拍) 截止时间:2026 年 6 月 20 日(周六) 22:00 参与方式:回复本帖即可 抽奖方式:统计参与楼层, 去重后随机抽取 12 位用户 发奖方式:开奖后在本帖公布中奖楼层,联系客服核实信息后包邮寄出 广告 茶叶名称:霍山黄芽 见 百度百科 ,茶汤清爽鲜醇。 茶叶风格:接近绿茶,咖啡碱和茶多酚含量相对较高,能提神醒脑、消除疲劳,适合学习、办公或招待朋友。 下面有具体价格,会为每位 V 友准备 10g+试喝小包 (约可泡 2~5 次,建议根据个人口味 debug ,茶叶用量越多,茶汤越醇厚),不合口味可 随时退货 。目前有两种渠道购买: 扫左侧直接 领券购买 、扫中间 PDD 店铺,可联系客服领取 减 50 元的券 ,抵用后均与下表相同。 扫右侧可添加我夫人的微信,负责咨询和售后,也可以直接 微信购买 。 更多 今年的农残检测报告 一些过程产物 今年茶园的航拍 五一回去的时候用朋友的 DJI 飞了一小圈 致谢 再次感谢你读到这里。一年过去,我还在,山也在,欢迎来坐坐,喝杯茶、看看山。

LinuxDo 最新话题 · 2026-06-12 11:20:16+08:00 · tech

现在是工作的第二年,之前读大学,因为家庭不怎么富裕,我这又是民办的本科,学费两万一年,所以一直过的比较节俭。后面自己出来工作了,第一个月6K的工资就买了大学心心念念的XSX,虽然是个二手。半年后攒了点钱,给爸妈换了新手机,给哥哥买了meta的VR眼镜当生日礼物,后面搬家叫我拿去咸鱼了,后面赚钱了,想给老哥买了苹果的那个VR产品。 出来工作两年,工资没有多少,总共两家,第一家从6K到8K,第一年存了两万。第二家试用10K,转正12K。快转正了。我想买一台macbook,满足一下自己,原来大学的电脑有点卡了,也可能是自己独立有钱了,单纯想买。我有好多好多想买的东西,但是我又很克制。在上一家时就想买了,直到换一家了,涨工资了,才真的想买。。。出来工作了,给自己花钱时,还是斤斤计较,对自己是不是太苦了。。。小的时候,有很多东西人家小孩有的,我都没有。我嘴上说不在乎,但是我老感觉我一直记着。出来工作自己有钱了,但是又感觉买过来也没有当时的感觉了。所以很多事都讲究一个当下,错过了就真的错过了,人和事都这样 10 个帖子 - 9 位参与者 阅读完整话题

v2ex · 2026-06-12 11:17:27+08:00 · tech

回顾 去年 在 V2EX 推广茶叶 的时候,心里挺忐忑的。一年过去了,今年因为很多事情耽搁,来晚了些,先和大家说声抱歉。 去年线上销售百余份,结交了很多茶友,截至目前,暂无退货和差评记录,非常感谢大家的包容和支持。虽然规模不大,但有越来越多的朋友认可,父亲很自豪自己的茶能飞到天南海北,今年做了全面的农残检测(下附报告),希望让大家更放心。 抽奖 抽奖数量:12 份 奖品内容:谷雨前霍山黄芽 1 罐( 12x8x12cm 下图有实拍) 截止时间:2026 年 6 月 20 日(周六) 22:00 参与方式:回复本帖即可 抽奖方式:统计参与楼层, 去重后随机抽取 12 位用户 发奖方式:开奖后在本帖公布中奖楼层,联系客服核实信息后包邮寄出 广告 茶叶名称:霍山黄芽 见 百度百科 ,茶汤清爽鲜醇。 茶叶风格:接近绿茶,咖啡碱和茶多酚含量相对较高,能提神醒脑、消除疲劳,适合学习、办公或招待朋友。 下面有具体价格,会为每位 V 友准备 10g+试喝小包 (约可泡 2~5 次,建议根据个人口味 debug ,茶叶用量越多,茶汤越醇厚),不合口味可 随时退货 。目前有两种渠道购买: 扫左侧直接 领券购买 、扫中间 PDD 店铺,可联系客服领取 减 50 元的券 ,抵用后均与下表相同。 扫右侧可添加我夫人的微信,负责咨询和售后,也可以直接 微信购买 。 更多 今年的农残检测报告 一些过程产物 今年茶园的航拍 五一回去的时候用朋友的 DJI 飞了一小圈 致谢 再次感谢你读到这里。一年过去,我还在,山也在,欢迎来坐坐,喝杯茶、看看山。

LinuxDo 最新话题 · 2026-06-11 22:42:04+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 前言 本教程的环境基于 jdk8 + langchain4j 0.35 教程源码放在这里了: github.com GitHub - worenbudaoni/rag-study-helper: 一个学习检索增强生成的全流程助手 一个学习检索增强生成的全流程助手 文章内容 因为内容比较多,我会从下面三个文章进行讲解,后续发布后会贴出来,这节讲: 接入飞书WIKI文档 RAG实现全流程 : 【开源、教程】RAG全流程实现(java+完整代码):第一弹 接入飞书WIKI文档 : 【开源、教程】RAG全流程实现(java+完整代码):第二弹 接口限流:令牌桶 + AOP 强烈建议先看完第一弹,不然后面代码有可能看不懂 实现逻辑 后面会有图文讲解的,这里就相当于大概介绍一下,看个大概就好,有不了解的不要先去搜,我后文都会讲,如果讲漏了麻烦评论一下,我改正 飞书开发者平台 : 1、去飞书开发者平台创建一个应用 2、给应用赋予权限(权限管理 菜单) 3、给应用赋予机器人能力(添加应用能力 菜单) 4、发布(版本管理与发布 菜单) 5、获取应用的app-id、app-secret(凭证和基础信息 菜单) 飞书app : 1、创建一个群聊 2、把机器人给拉进去 3、点击左边菜单的更多找到知识库,新建知识库(下面统一称为 WIKI) 4、添加群聊(机器人)为管理员:点 WIKI 进去会打开一个网站,左下角有个设置点进去,在成员设置->角色与权限->管理员,添加管理员,搜索我们刚才创建的有机器人的群聊并添加 5、在页面的连接处找到space-id,如: https://kcnvw23rzo5r.feishu.cn/wiki/settings/666666(666666就是我们要的space-id) 项目 : 1、创建一个job,用来定时获取文档(下面为job启动后的流程) 2、通过app-id、app-secret获取tenant_access_token和expire 3、通过tenant_access_token和space-id获取文档信息(名字、更新时间、documentToken 等等) 4、通过documentToken去获取文档的内容(字符串) 5、走 【开源、教程】RAG全流程实现(java+完整代码):第一弹 的入库流程 一、飞书开发者平台 app-id、app-secret 是啥 app-id :应用的唯一标识 app-secret :应用的密钥,在创建应用时由平台生成,可用于获取app_access_token 1、飞书开放平台创建企业应用 开发者后台 - 飞书开放平台 这里注意的是创建好应用后需要审核、启用,所以企业级的应用权限在领导手上,我们可以创建一个个人版的飞书账号来做实验 2、给应用赋予权限 (权限管理菜单) 直接复制我的也行 { "scopes": { "tenant": [ "bitable:app:readonly", "docx:document:readonly", "drive:drive:readonly", "drive:file:readonly", "wiki:wiki:readonly" ], "user": [] } } 3、给应用赋予机器人能力 (添加应用能力菜单) 4、发布 (版本管理与发布菜单) 创建好后发布就行 5、获取应用的app-id、app-secret(凭证和基础信息菜单) 二、飞书app space-id是啥 就是飞书知识库(WIKI)所对应的空间ID,我们找到这个空间就可以找到下面的文档 打个比方就是图书馆的书架,书架有个唯一标识(小说),我们根据这个书架ID(小说)去找下面所有的书 1、创建一个群聊 2、把机器人给拉进去 3、点击左边菜单的更多找到知识库,新建知识库(下面统一称为 WIKI) 4、添加群聊(机器人)为管理员 点 WIKI 进去会打开一个网站,左下角有个设置点进去,在成员设置->角色与权限->管理员,添加管理员,搜索我们刚才创建的有机器人的群聊并添加 5、在页面的连接处找到space-id 如: https://kcnvw23rzo5r.feishu.cn/wiki/settings/666666(666666就是我们要的space-id) 三、项目 这里就不按照上面实现逻辑写的走了,我就按照代码里的讲解 1、job总览(步骤拆解在后面) FeishuSyncService.java // 没想加重框架,如果用xxl-job什么的,自己搬一下就行了 @Scheduled(cron = "${app.feishu.cron}") public void syncWiki() { log.info("Starting Feishu wiki sync for space: {}", spaceId); try { // 获取全部文档信息(通过app-id、app-secret、space-id) // 这里逻辑后面会讲 List<WikiNode> nodes = feishuClient.getWikiNodeTree(spaceId); log.info("Found {} nodes in wiki", nodes.size()); // 成功数量,跳过数量(如果数据存在了关系型数据库且没有更新就跳过),失败数量 int synced = 0, skipped = 0, failed = 0; for (WikiNode node : nodes) { // 后缀 String objType = node.getObjType(); // 文档令牌 用来获取 文档内容 String nodeToken = node.getNodeToken(); // 更新时间判断是否需要跳过 long updateTime = node.getUpdateTime(); // 是否入库 Documents doc = documentsMapper.selectOne( Wrappers.<Documents>lambdaQuery() .eq(Documents::getFeishuNodeToken, nodeToken) ); // 文档是否更新是否需要跳过,这个更新时间不在where条件里面是因为后续要继续用到这个数据 if (doc != null && doc.getFeishuUpdateTime() != null && doc.getFeishuUpdateTime() == updateTime) { skipped++; continue; } try { // 文档内容 String content; // 获取文件名 String fileName; switch (objType) { case "doc": case "docx": // 获取文档内容 // 这里逻辑就不讲了,我后面扔给飞书的文档,照着对接或者看我源码就好 content = feishuClient.getDocumentContent(node.getObjToken()); fileName = node.getNodeTitle() + "_文档"; break; case "sheet": content = feishuClient.getSheetContent(node.getObjToken()); fileName = node.getNodeTitle() + "_表格"; break; case "bitable": content = feishuClient.getBitableContent(node.getObjToken()); fileName = node.getNodeTitle() + "_多维表格"; break; default: skipped++; continue; } // 如果是更新,先删旧向量和映射记录 if (doc != null) { // 查询旧文档相关的向量映射 List<DocumentChunks> oldChunks = documentChunksMapper.selectList( Wrappers.<DocumentChunks>lambdaQuery() .eq(DocumentChunks::getDocumentId, doc.getId()) ); // 有两张表 // 第一张为文档库:记录文档标题、更新时间、创建人等信息 // 第二张为分片库:记录向量数据库插入后的向量ID // 向量ID List<String> vectorIds = oldChunks.stream() .map(DocumentChunks::getVectorId) .collect(Collectors.toList()); // 删除向量 embeddingStore.removeAll(vectorIds); // 删除映射记录 documentChunksMapper.delete( Wrappers.<DocumentChunks>lambdaQuery() .eq(DocumentChunks::getDocumentId, doc.getId()) ); // 删除文档 documentsMapper.deleteById(doc.getId()); } // RAG 入库流程 (第一篇文章中亦有记载(跟第一章代码有些许出入,看完第一章后,直接看源码更佳)) ingestionService.ingestFeishuDocument(fileName, content, nodeToken, updateTime, objType); synced++; log.info(" Synced: {} ({})", node.getNodeTitle(), nodeToken); } catch (Exception e) { log.error(" Failed to sync node: {} ({})", node.getNodeTitle(), nodeToken, e); failed++; } } // 清理远程已删除的文档 // 这里的逻辑是 // 第一次job执行:查询飞书wiki给了 A、B、C 三个文档入库 // 后面有人在wiki中删了 C 文档 // 第二次job执行:只有查询出 A、B 两个文档 // 这时就要去数据库中和向量库中删除多余的 C 文档 List<String> remoteTokens = nodes.stream() .map(WikiNode::getNodeToken) .collect(Collectors.toList()); if (!remoteTokens.isEmpty()) { // MySQL 查出本地多出的记录,只遍历需要删除的 List<Documents> toRemove = documentsMapper.selectList( Wrappers.<Documents>lambdaQuery() .isNotNull(Documents::getFeishuNodeToken) .notIn(Documents::getFeishuNodeToken, remoteTokens) ); for (Documents removed : toRemove) { log.info("Document removed remotely, cleaning up: {} ({})", removed.getDocumentName(), removed.getFeishuNodeToken()); List<DocumentChunks> chunks = documentChunksMapper.selectList( Wrappers.<DocumentChunks>lambdaQuery() .eq(DocumentChunks::getDocumentId, removed.getId()) ); List<String> vectorIds = chunks.stream() .map(DocumentChunks::getVectorId) .collect(Collectors.toList()); // 向量数据库 删 embeddingStore.removeAll(vectorIds); // 关系型数据库 分片库 删 documentChunksMapper.delete( Wrappers.<DocumentChunks>lambdaQuery() .eq(DocumentChunks::getDocumentId, removed.getId()) ); // 关系型数据库 文档库 删 documentsMapper.deleteById(removed.getId()); } } log.info("Feishu wiki sync complete: synced={}, skipped={}, failed={}", synced, skipped, failed); } catch (Exception e) { log.error("Feishu wiki sync failed", e); } } 2、递归获取知识库所有文档节点 FeishuClient.java 这里其实没什么特别好讲的点,就是参考飞书文档,然后请求并解析 我在源码里也标记了文档的地址,所以这里放一个总体的查询地址 开发文档 - 飞书开放平台 /** * 获取 tenant_access_token(内部自动缓存和刷新) */ public synchronized String getAccessToken() throws IOException { if (cachedToken != null && System.currentTimeMillis() < tokenExpireAt) { return cachedToken; } String json = "{\"app_id\":\"" + appId + "\",\"app_secret\":\"" + appSecret + "\"}"; // https://open.feishu.cn/document/server-docs/authentication-management/access-token/tenant_access_token_internal Request request = new Request.Builder() .url(baseUrl + "/open-apis/auth/v3/tenant_access_token/internal") .post(RequestBody.create(JSON, json)) .build(); try (Response resp = httpClient.newCall(request).execute()) { JsonNode body = objectMapper.readTree(resp.body().string()); if (body.get("code").asInt() != 0) { throw new IOException("Failed to get access token: " + body); } cachedToken = body.get("tenant_access_token").asText(); // tenant_access_token 的最大有效期是 2 小时 // 7200 是秒 int expire = body.get("expire").asInt(7200); // 防御性编程 免得刚好过期 由于网络延时 造成接口调用失败 tokenExpireAt = System.currentTimeMillis() + (expire - 60) * 1000L; return cachedToken; } } /** * 递归获取知识库所有文档节点。 */ public List<WikiNode> getWikiNodeTree(String spaceId) throws IOException { List<WikiNode> allNodes = new ArrayList<>(); collectNodes(spaceId, null, allNodes); return allNodes; } private void collectNodes(String spaceId, String parentNodeToken, List<WikiNode> result) throws IOException { List<WikiNode> currentLevelNodes = new ArrayList<>(); String pageToken = null; do { // https://open.feishu.cn/document/server-docs/docs/wiki-v2/space-node/create StringBuilder url = new StringBuilder(baseUrl + "/open-apis/wiki/v2/spaces/" + spaceId + "/nodes"); if (parentNodeToken != null) { url.append("/").append(parentNodeToken).append("/children"); } url.append("?page_size=50"); if (pageToken != null) { url.append("&page_token=").append(pageToken); } Request request = new Request.Builder() .url(url.toString()) .header("Authorization", "Bearer " + getAccessToken()) .get() .build(); try (Response resp = httpClient.newCall(request).execute()) { JsonNode body = objectMapper.readTree(resp.body().string()); if (body.get("code").asInt() != 0) { log.error("Wiki API error for URL [{}]: {}", url, body); break; } JsonNode items = body.path("data").path("items"); for (JsonNode item : items) { WikiNode node = new WikiNode(); // 节点token node.setNodeToken(item.path("node_token").asText()); // 对应文档类型的token,可根据 obj_type 判断属于哪种文档类型。 node.setObjToken(item.path("obj_token").asText()); // 文档类型,对于快捷方式,该字段是对应的实体的obj_type。 // 可选值有: // doc:旧版文档 sheet:表格 mindnote:思维导图 bitable:多维表格 file:文件 docx:新版文档 slides:幻灯片 node.setObjType(item.path("obj_type").asText()); // 文档标题 node.setNodeTitle(item.path("title").asText()); node.setParentNodeToken(parentNodeToken); // 是否有子节点 node.setHasChild(item.path("has_child").asBoolean(false)); // 文档最近编辑时间 String editTime = item.path("obj_edit_time").asText(); node.setUpdateTime(Long.parseLong(editTime.isEmpty() ? "0" : editTime)); currentLevelNodes.add(node); } pageToken = body.path("data").path("page_token").asText(null); } } while (pageToken != null && !pageToken.isEmpty()); // Add all nodes from this level, then recurse into children result.addAll(currentLevelNodes); for (WikiNode node : currentLevelNodes) { if (node.isHasChild()) { collectNodes(spaceId, node.getNodeToken(), result); } } } 四、测试 1、导入文档 还是拿这个 补鸡稻 作为测试案例 2、配置 app-id、app-secret、space-id和sync-enable 我这里通过 jvm 运行参数注入,免得又把 apikey 给上传到 github 了 sync-enable 记得为 true,不然不注册 spring bean 3、运行时发现文档可以查询到,并且入库了 4、提问 5、测试结束,完结撒花 2 个帖子 - 2 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-11 19:48:23+08:00 · tech

分享一次自己的踩坑经历,给大家提个醒。 我明天的 Business 套餐就要进行第二次续费了,目前用的是泰区优惠订阅。因为明天就是下个月套餐的更新时间,我想着提前看一下是不是需要手动充值,于是打开了结算界面。 结果看到里面有一个“额度余额”之类的入口,我当时误以为这是后续自动续费用的钱包或者账本,于是就往里面充了 1300 THB(折合快300 RMB)。充完之后越想越不对劲,去网上一查才发现,这个余额并不是会员套餐续费用的,而是当前套餐调用超额之后,类似 Codex 等额外用量产生费用时才会扣的额度。 当场泪目 。 更难受的是,这个余额好像还有 12 个月有效期,过期就没了。也就是说,如果后面不用到这些额外额度,这笔钱基本就亏麻了,呜呜。 所以提醒大家,以后一定要注意:Business 套餐续费只要绑定的信用卡里有足够支付下个月扣款的金额就行,不要看到“额度余额”就以为是续费账户,更不要随便往里面充值。 看到这里的陌生人,可以留下一个赞 安慰一下我吗?帮我飞升一下 3 级,感激不尽 。 3 个帖子 - 2 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-11 10:11:15+08:00 · tech

升级的时候,第一次绑卡扣款138新币,然后秒退,但显示已拒绝。 第二次绑卡就直接显示:您的信用卡已被拒绝。请编辑您的付款方式以提供有效的信用卡。如果仍然出现错误,请联系银行并确保您的账户配置为接受在线交易。 卡是中国银行莫奈万事达借记卡 这种情况是不是只能换新卡了,我看了下卡也没限额啥的 1 个帖子 - 1 位参与者 阅读完整话题

V2EX - 技术 · 2026-06-10 22:48:47+08:00 · tech

以前总觉得秒回是一种职业素养,生怕慢了一步显得不上心,怠慢了工作。结果呢,饭吃到一半盯手机,睡前刷消息到凌晨,周末随时待命——工资没多一分,焦虑倒是涨了不少。 后来某天晚上十一点,领导又在群里 @我确认一件明早才用得上的事,我回完之后躺在床上想:这件事等到明天八点五十九分回,有任何区别吗?没有。从那天起,下班就关通知,彻底关,不是静音,是关。 说实话真的没出过什么大事。真正的紧急情况,会打电话。那些非要当晚回的消息,十条里有九条其实都可以等。下班后的时间是自己的,不是廉价的隐形加班。边界,得自己划。

V2EX - 技术 · 2026-06-10 22:48:47+08:00 · tech

以前总觉得秒回是一种职业素养,生怕慢了一步显得不上心,怠慢了工作。结果呢,饭吃到一半盯手机,睡前刷消息到凌晨,周末随时待命——工资没多一分,焦虑倒是涨了不少。 后来某天晚上十一点,领导又在群里 @我确认一件明早才用得上的事,我回完之后躺在床上想:这件事等到明天八点五十九分回,有任何区别吗?没有。从那天起,下班就关通知,彻底关,不是静音,是关。 说实话真的没出过什么大事。真正的紧急情况,会打电话。那些非要当晚回的消息,十条里有九条其实都可以等。下班后的时间是自己的,不是廉价的隐形加班。边界,得自己划。

V2EX - 技术 · 2026-06-10 21:48:47+08:00 · tech

以前总觉得秒回是一种职业素养,生怕慢了一步显得不上心,怠慢了工作。结果呢,饭吃到一半盯手机,睡前刷消息到凌晨,周末随时待命——工资没多一分,焦虑倒是涨了不少。 后来某天晚上十一点,领导又在群里 @我确认一件明早才用得上的事,我回完之后躺在床上想:这件事等到明天八点五十九分回,有任何区别吗?没有。从那天起,下班就关通知,彻底关,不是静音,是关。 说实话真的没出过什么大事。真正的紧急情况,会打电话。那些非要当晚回的消息,十条里有九条其实都可以等。下班后的时间是自己的,不是廉价的隐形加班。边界,得自己划。

LinuxDo 最新话题 · 2026-06-10 21:21:54+08:00 · tech

ScienceAlert – 9 Jun 26 A Commonly Used Sleep Aid May Have a Dangerous Side Effect Around 1 in 5 US adults are thought to struggle with sleep health, and for many of us, the search for rest eventually leads to medication. [!quote]+ 喹硫平(以思瑞康的名义销售)是一种抗精神病药物,被批准用于治疗精神分裂症和双相情感障碍等疾病,但研究表明它可以改善睡眠质量,而且经常以较低剂量作为失眠的 "标签外 "治疗处方。 在一项 10 分钟的精神运动警觉性测试中,与服用安慰剂后相比,服用喹硫平的参与者反应更慢。他们在测试中的注意力缺失也从服用安慰剂后的中位数2次增加到服用喹硫平后的10次。 在模拟驾驶中,与服用安慰剂相比,服用喹硫平后,参与者偏离车道中心的距离平均增加了 33%。 就模拟器中的实际碰撞而言,与安慰剂相比,喹硫平的碰撞率几乎翻了一番,尽管这项研究的样本量相对较小,这意味着统计效果有限(这可能是偶然因素造成的)。 "法斯卡说:"尤其令人担忧的是,有些人虽然在客观测试中表现较差,但第二天并没有感到特别困倦。 “人们的感觉与实际功能之间的这种不匹配会带来严重的安全风险,尤其是在驾驶时”。 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-10 20:56:40+08:00 · tech

给大家提个醒,看看有没有类似情况。 之前5月10日使用了第一波的澳洲 firstfocus 优惠码上了车,当时是 A$70-$45 = $25 (但是最终金额要加10%的GST,所以是A$27.5),一切正常。 我在5月14日为了更优惠一点,把我的账单从月账单切换到了年账单,记得当时看到仍然是有优惠的,不过我没有截图。 今天6月10日收到了第二张账单的扣款通知,金额为 A$739.20 这就是原价 A$336 x 2 = $672, 再加10% GST 最终为 $739.2 每席位和月账单35*12 比,年账单336相当于8折优惠(20% off) 原本以为再进一步优惠点,结果踩了这个坑 已经通过在线聊天联系了 support 不知道最后结果如何,请各位佬友查看自己的账单免得有惊喜。 6 个帖子 - 5 位参与者 阅读完整话题

V2EX - 技术 · 2026-06-10 20:48:47+08:00 · tech

以前总觉得秒回是一种职业素养,生怕慢了一步显得不上心,怠慢了工作。结果呢,饭吃到一半盯手机,睡前刷消息到凌晨,周末随时待命——工资没多一分,焦虑倒是涨了不少。 后来某天晚上十一点,领导又在群里 @我确认一件明早才用得上的事,我回完之后躺在床上想:这件事等到明天八点五十九分回,有任何区别吗?没有。从那天起,下班就关通知,彻底关,不是静音,是关。 说实话真的没出过什么大事。真正的紧急情况,会打电话。那些非要当晚回的消息,十条里有九条其实都可以等。下班后的时间是自己的,不是廉价的隐形加班。边界,得自己划。

V2EX - 技术 · 2026-06-10 19:48:47+08:00 · tech

以前总觉得秒回是一种职业素养,生怕慢了一步显得不上心,怠慢了工作。结果呢,饭吃到一半盯手机,睡前刷消息到凌晨,周末随时待命——工资没多一分,焦虑倒是涨了不少。 后来某天晚上十一点,领导又在群里 @我确认一件明早才用得上的事,我回完之后躺在床上想:这件事等到明天八点五十九分回,有任何区别吗?没有。从那天起,下班就关通知,彻底关,不是静音,是关。 说实话真的没出过什么大事。真正的紧急情况,会打电话。那些非要当晚回的消息,十条里有九条其实都可以等。下班后的时间是自己的,不是廉价的隐形加班。边界,得自己划。

V2EX - 技术 · 2026-06-10 18:48:47+08:00 · tech

以前总觉得秒回是一种职业素养,生怕慢了一步显得不上心,怠慢了工作。结果呢,饭吃到一半盯手机,睡前刷消息到凌晨,周末随时待命——工资没多一分,焦虑倒是涨了不少。 后来某天晚上十一点,领导又在群里 @我确认一件明早才用得上的事,我回完之后躺在床上想:这件事等到明天八点五十九分回,有任何区别吗?没有。从那天起,下班就关通知,彻底关,不是静音,是关。 说实话真的没出过什么大事。真正的紧急情况,会打电话。那些非要当晚回的消息,十条里有九条其实都可以等。下班后的时间是自己的,不是廉价的隐形加班。边界,得自己划。

V2EX - 技术 · 2026-06-10 18:48:47+08:00 · tech

以前总觉得秒回是一种职业素养,生怕慢了一步显得不上心,怠慢了工作。结果呢,饭吃到一半盯手机,睡前刷消息到凌晨,周末随时待命——工资没多一分,焦虑倒是涨了不少。 后来某天晚上十一点,领导又在群里 @我确认一件明早才用得上的事,我回完之后躺在床上想:这件事等到明天八点五十九分回,有任何区别吗?没有。从那天起,下班就关通知,彻底关,不是静音,是关。 说实话真的没出过什么大事。真正的紧急情况,会打电话。那些非要当晚回的消息,十条里有九条其实都可以等。下班后的时间是自己的,不是廉价的隐形加班。边界,得自己划。

v2ex · 2026-06-10 18:07:50+08:00 · tech

TA 叫 Yore (优尔) — 你的第二记忆,为你记住一切重要的事。 用 AI 理解、整理,并在合适的时候提醒你,让每一条重要记忆都不会错过。 Yore ,意为「昔日、往昔、曾经的时光」,它象征那些容易被遗忘,却依然珍贵的记忆。 灵感来自于 OPPO 自带的小布记忆。 本次更新: [增加] 纯语音版本快捷指令 [增加] 左滑删除, 右滑置顶 [增加] 点击记忆 TAG ,查看相关 TAG 记忆 [增加] 提醒事项 APP 可选择不同提醒事项列表,而不是默认 Yore [增加] 关闭删除关联数据,删除记忆的时候,弹窗确认删除哪些。 [增加] 设置页,提醒增加是否显示角标开关 [训练] Ai ,兼容麦当劳取餐码 [训练] Ai ,邮件内容记忆,优先显示邮件标题为记忆标题 [训练] Ai ,识别到邮件记忆,去除签名内容 [修复] Ai 质量模式,灵动岛不显示的 BUG [修复] 没数据,乱显示角标的 BUG [优化] 部分文档说明 [优化] 部分 UI ,提升细节 注意: 纯语音版本快捷指令只支持 iOS 17+ 打开 App Store 下载

v2ex · 2026-06-10 18:07:50+08:00 · tech

TA 叫 Yore (优尔) — 你的第二记忆,为你记住一切重要的事。 用 AI 理解、整理,并在合适的时候提醒你,让每一条重要记忆都不会错过。 Yore ,意为「昔日、往昔、曾经的时光」,它象征那些容易被遗忘,却依然珍贵的记忆。 灵感来自于 OPPO 自带的小布记忆。 本次更新: [增加] 纯语音版本快捷指令 [增加] 左滑删除, 右滑置顶 [增加] 点击记忆 TAG ,查看相关 TAG 记忆 [增加] 提醒事项 APP 可选择不同提醒事项列表,而不是默认 Yore [增加] 关闭删除关联数据,删除记忆的时候,弹窗确认删除哪些。 [增加] 设置页,提醒增加是否显示角标开关 [训练] Ai ,兼容麦当劳取餐码 [训练] Ai ,邮件内容记忆,优先显示邮件标题为记忆标题 [训练] Ai ,识别到邮件记忆,去除签名内容 [修复] Ai 质量模式,灵动岛不显示的 BUG [修复] 没数据,乱显示角标的 BUG [优化] 部分文档说明 [优化] 部分 UI ,提升细节 注意: 纯语音版本快捷指令只支持 iOS 17+ 打开 App Store 下载