Google Spanner資料庫內建訊息佇列,同筆交易處理AI代理資料更新與任務派送
iThome 新聞
Google替分散式資料庫Spanner加入原生訊息佇列功能,讓應用程式可以在同一筆資料庫交易中,同時更新資料並加入後續任務。兩個動作會一起成功或一起取消,避免AI代理已經改變資料狀態,後續工作卻沒有執行。
Балл: 57.02Уверенность: 54%
ПодробнееЗагружаем каталог…
НАВИГАТОР ПО ВОЗМОЖНОСТЯМ ИИ
Найдите свой ИИ-инструмент. Бесплатный доступ, пробные периоды и кредиты — в одном месте.
iThome 新聞
Google替分散式資料庫Spanner加入原生訊息佇列功能,讓應用程式可以在同一筆資料庫交易中,同時更新資料並加入後續任務。兩個動作會一起成功或一起取消,避免AI代理已經改變資料狀態,後續工作卻沒有執行。
Балл: 57.02Уверенность: 54%
Подробнее人人都是产品经理
9 月 GitHub 冒出的 20 个开源项目里,Archify 能把代码仓库画成交互式架构图,导出网页点节点就能看详情,月增约 3.34 万 Star;Ponytail 给 Agent 加了实现前的判断顺序,优先复用已有代码与标准库。 01 Archify:教 AI 画复杂架构画 Archify 这个 Skill 可以把一段系统描述或一个代码仓库画成交互式图表。 比如,你让它画出一次网页请求怎样经过接口、缓存和数据库。 图生成后,还可以继续要求它突出缓存未命中的路径,或者补上登录验证的步骤。 架构、流程、调用顺序和数据流向,都有对应的图表类型。 生成的结果是一个独立网页文件,发给同事后,对方用浏览器打开就能点节点、看详情、沿着路径理解整个过程。 需要放进文档时, 也可以导出图片和分享卡。 给新同事介绍项目,或者开会讨论一次架构调整,这种能逐步展开的图会比较方便。 当然,图中的关系要以准确的描述和代码为依据。 本月新增约 3.34 万 Star。 开源地址:https://github.com/tt-a1i/archify 02 Ponytail:让 Agent 少写不必要的代码 Ponytail 给 Agent 增加一套实现前的判断顺序,先找现有代码、标准库和平台原生能力,再考虑新增实现。 它会 优先复用已有能力,减少重复实现和过度设计, 同时保留必要的安全检查与错误处理。 月增约 3.12 万 Star。 开源地址:https://github.com/dietrichgebert/ponytail 03 God’s Eye View:在浏览器里看动态地球 God’s Eye View 把飞机、船舶、卫星和地震等公开数据做 成了一个 3D 地球网页, 做出卫星视角般的观察界面。 点击哪里看哪里,很炫酷呢。 月增约 3.11 万 Star。 开源地址:https://github.com/bilawalsidhu/gods-eye-view 04 i-have-adhd:让 AI 回答先给重点 i-have-adhd 会引导 Agent 先给下一步行动, 把多步任务编号,减少跑题和冗长铺垫。 想更快看到该改哪个文件、该执行什么操作,可以试试这套输出规则。 月增约 2.65 万 Star。 开源地址:https://github.com/ayghri/i-have-adhd 05 Hindsight:让 Agent 保存信息,也能回顾经验 Hindsight 给 Agent 增加长期记忆, 让它能够保存信息、找回相关内容,再基于积累的记录做分析。 存入一段对话时,它会提取里面的事实、人物、时间和关系。 下次需要这些背景时,可以结合内容含义、关键词和时间等线索寻找相关记忆。 比如,客服 Agent 保存用户过去的沟通内容后, 后续回答就能检索相关背景,减少让用户重复解释。 负责项目的 Agent 也能回顾积累的记录,分析还有哪些风险需要关注。 开发者可以按用户或项目建立独立的记忆空间,再接入自己的应用。如果你的 Agent 要长期服务同一批用户,这个项目值得仔细看看。 月增约 2.28 万 Star。 开源地址:https://github.com/vectorize-io/hindsight 06 Open Code Review:阿里开源的代码审查工具 Open Code Review 能读取代码改动,结合大模型生成定位到具体行的审查意见。 它会读取完整文件、搜索代码库,补充理解改动所需的上下文,也支持扫描完整文件。 它会先确定哪些文件需要检查, 把有关联的文件放到一起,再匹配对应的审查规则。 Agent 在这个范围内读取上下文、判断问题,最后给出具体的修改意见。 你可以让它检查刚写好的代码,也可以审查某次提交或两个分支之间的差异。 常规使用需要先配置模型。 如果已经在用 Agent 工具,也可以通过委托模式让现有 Agent 执行审查。 月增约 2.18 万 Star。 开源地址:https://github.com/alibaba/open-code-review 07 Paperclip:集中管理多个 AI Agent Paperclip 用 一个面板管理多个 Agent 的目标、任务和成本,支持为不同 Agent 选择模型和运行工具。 已经同时使用多个 Agent 的读者,可以用它跟踪谁在做什么,以及任务花了多少钱。 月增约 1.66 万 Star。 开源地址:https://github.com/paperclipai/paperclip 08 HyperFrames:把网页代码渲染成视频 HyperFrames 可以把 HTML、样式、媒体和动画渲染成 MP4 视频。 做产品介绍或字幕动画时, 可以让 Agent 写代码、预览效果,再继续调整内容和节奏。 月增约 1.22 万 Star。 开源地址:https://github.com/heygen-com/hyperframes 09 WeKnora:腾讯开源的知识库 WeKnora 把团队文档放进统一知识库,支持检索问答、多步任务和 Wiki 整理。 它适合把分散的内部材料整理 成可查询、可持续维护的知识,也支持本地或私有云部署。 月增约 1.08 万 Star。 开源地址:https://github.com/Tencent/WeKnora 10 OpenMAIC:生成课程,也能继续修改 OpenMAIC 可以围绕主题或上传材料生成课程,支持幻灯片、测验和互动课堂。 课程生成后, 还可以在 Agent 工作台里继续调整结构和内容,适合关注 AI 教育的读者。 月增约 9700 Star。 开源地址:https://github.com/THU-MAIC/OpenMAIC 11 FreeLLMAPI:把各家的免费模型额度接到一起 FreeLLMAPI 把多家模型服务的 免费额度整合到一个接口里 ,让应用通过统一入口调用模型。 把自己在相应服务商申请的密钥配进去之后, 它会管理可用模型和额度,再选择合适的服务处理请求。 某个模型触发限流或服务出现错误时,它可以尝试其他可用模型。 项目还提供管理面板,你可以看看密钥是否正常、调整模型顺序,也能查看使用情况。 服务商密钥会加密保存,应用通过统一入口访问。 对个人开发者来说,这样更方便比较不同模型、验证一个新想法。 不过,免费额度仍受各家服务商的限制,响应速度和可用模型也会变化,项目定位于个人实验。 月增约 6500 Star。 开源地址:https://github.com/tashfeenahmed/freellmapi 12 Cua:给 Agent 一台可以操作的电脑 Cua 为 Agent 提供桌面操作工具 ,让它能够查看界面、操作原生应用和浏览器。 处理更长的任务时,Agent 可以把代码执行、接口调用和界面操作结合起来。 开源项目里也提供本地虚拟机管理和操作评测工具,方便给 Agent 准备独立桌面,再检查它的操作过程和结果。 如果你准备让 AI 操作现有办公软件,或者研究桌面自动化,可以重点看这个项目。 使用前要选好对应组件, 不同组件的系统要求和权限配置有所区别。 月增约 5800 Star。 开源地址:https://github.com/trycua/cua 13 Octop:可自托管的多用户 AI 助手 Octop 支持多用户、多 Agent, 可以通过网页和飞书等聊天渠道使用,也能扩展知识库和外部工具连接。 月增约 5000 Star。 开源地址:https://github.com/TencentCloud/Octop 14 Context Mode:减少工具输出对上下文的占用 Context Mode 会先在隔离环境里处理大段工具输出,再把任务需要的结果交给 Agent,并保存会话事件供后续检索。 经常让 Agent 读日志、查大量文件的读者, 可以用它减少无关数据占用对话空间。 月增约 4700 Star。 开源地址:https://github.com/mksglu/context-mode 15 Financial Services:把金融工作流程做成 Agent 插件 Financial Services 是 Anthropic 面向金融服务工作的 Agent、Skill 和数据连接器集合。 它把行业研究、财报分析、模型搭建和账目核对这些工作,拆成了不同的插件。 比如,Market Researcher 可以围绕一个行业整理概况、竞争格局和同业比较。 Earnings Reviewer 则根据财报相关材料更新模型,起草分析笔记。 月增约 4000 Star。 开源地址:https://github.com/anthropics/financial-services 16 SkillSpector:安装 Agent Skill 前先检查一遍 SkillSpector 是 NVIDIA 开源的 Agent 技能安全扫描工具, 可以检查仓库、压缩包、目录或单个文件。 它会寻找提示注入、数据外传、危险代码和权限相关风险。 比如,某个技能在说明里夹带了向外部地址上传本地文件的指令, 这类内容就是它要检查的风险线索。 扫描结束后,可以查看报告里的风险等级、问题位置和建议,再决定怎样处理。 如果你经常安装第三方技能,或者负责整理团队的技能库,它适合放进安装前的检查流程。报告中的问题仍需结合具体文件和行为判断。 月增约 3500 Star。 开源地址:https://github.com/nvidia/skillspector 17 Treg:给 Agent 一个统一的工具入口 Treg 把 多种外部工具整理成可检索、可调用的目录,覆盖搜索、公司信息、图片和视频生成等任务。 比如,Agent 需要查一家公司的资料,可以先按用途搜索工具,看看输入要求和调用价格,再发起请求。 团队已经购买的服务,也可以把对应密钥和工具接进来,让其他成员复用。 调用时由服务端注入相应凭据,成员的 Agent 通过统一入口使用已共享的工具。 使用托管目录里的服务时,一部分调用会按次计费。 如果用自己的服务商密钥,上游费用仍由对应账号承担。 它也支持自托管,适合需要接入多种外部服务的 Agent 产品。 月增约 3100 Star。 项目地址:https://github.com/superdesigndev/treg 18 Knowledge Work Plugins:按岗位组织的办公插件 Knowledge Work Plugins 为 销售、客服、产品管理等工作提供技能 、连接器和操作入口,主要面向 Claude Cowork,也兼容 Claude Code。 你可以按岗位选择需要的插件,再根据公司的资料和做事方式调整。 月增约 2200 Star。 开源地址:https://github.com/anthropics/knowledge-work-plugins 19 Worktrunk:为多个 Agent 准备独立工作目录 Worktrunk 简化 Git worktree 的创建、切换和清理,让多个 Agent 各自在独立目录里开发。 同时处理几个分支的任务时, 它能减少多个 Agent 修改同一工作目录的干扰。 月增约 1950 Star。 开源地址:https://github.com/max-sixty/worktrunk GPUI Kit:用 Rust 做桌面应用的组件库 GPUI Kit 为 Rust 桌面应用提供现成界面组件,基于 GPUI 构建,支持 macOS、Windows 和 Linux。 按钮、表单和数据表格等常见界面,都可以使用组件库来搭建。 它还 提供可调整的面板布局、代码编辑器,以及 Markdown 和 HTML 内容展示能力。 比如,你准备开发一款数据工具,可以用表格显示记录,再把图表、编辑器和详情放进不同的面板。 面板可以调整大小,也能拖动组合,比较适合信息较多的桌面应用。 项目提供组件展示程序和应用示例,可以先看效果, 再参考怎样搭建自己的界面。 月增约 1950 Star。 开源地址:https://github.com/longbridge/gpui-kit 作者:逛逛GitHub 公众号:逛逛GitHub 本文由 @逛逛GitHub 原创发布于人人都是产品经理。未经作者许可,禁止转载 题图来自 Unsplash,基于CC0协议
Балл: 57.02Уверенность: 54%
Подробнее人人都是产品经理
简历投出去石沉大海?问题可能不在经历,而在写法。本文从招聘者视角出发,将简历筛选比作转化漏斗,拆解列表页10秒点击率背后的心理机制。通过真实案例对比,揭示优秀简历如何用精准标签与结果导向的描述,在信息流中脱颖而出,实现高效自我营销。 从一次改简历说起 最近帮几个同学改简历,有实习的,有应届的,也有社招的。改完发现一个共同问题,简单一句话:将简历写成了岗位介绍,偏于流水账。 从简历上看,他们的经历其实不差,项目都是真实项目,结果也有数字,有成绩,都能拿得出手。但仅看简历,都没有眼前一亮的感觉,给人的感觉是,这些项目经历换个公司、同样的职位,大家写出来都一样。 从根源上拆了下,我总结了几个原因: 归纳总结不够: 做了十分,只写出三分,而且写出来的是过程,不是结果。 用户分析不够: 简历是写给招聘者看的,但大多数人动笔时眼里只有”我做了什么”,没有”对方在看什么”。 结构化不好: 信息都在,但没有按招聘者的阅读路径组织,好料埋在第三屏。 行业动态分析不够: 不知道目标公司当下在为什么焦头烂额,自然不知道该突出什么 前几个原因其实是相互呼应的,用户分析不够 -> 没有刻意设计,归纳总结不够 -> 信息表达密度不够; 整体上带来了结构化问题。 01 换个视角:简历是一条转化漏斗 写简历的人,容易把简历当成”自我介绍的文档”。但站在招聘者那头,它其实是一条转化漏斗: 写简历 → 简历筛选(HR 粗筛)→ 简历筛选(专业面试官细筛)→ 面试 每一环都有流失,每一环都可以设计指标。有什么样的指标,就有什么样的策略。列表环节的核心指标是 点击率 :招聘者刷到你的卡片,愿不愿意点进来。详情环节的核心指标是 完播率 :点进来之后,读不读得完、记不记得住。 指标不同,打法策略完全不同。这也是很多人的简历输在起跑线的原因: 用详情页的写法,去做列表页的事。 02 还原招聘者的 10 秒 要提升点击率,先还原招聘者看简历的真实场景。 招聘者的目标,是尽快找到优秀的候选人。一天看几十上百份简历很正常,而且筛选简历不能占用太多正常工作时间。所以留给候选人的问题只有一个: 怎么让你的简历在最短时间内、最有效地展现出来。 我自己看简历,基本 10 秒内做初步判断。这 10 秒里看的是: 基本情况 :年龄、毕业院校、工作年限、几份工作、title如何、是否有荣誉。当然,毕业院校不好不意味着这个人不优秀,但从统计学上,它更大概率说明了上学期间的学习能力。 个人荣誉 则意味着这个人是否足够拼搏、是否有更强的事业心。这些信息是让招聘者的决策模型是否下一步的关键输入。 经历概览 :我不会每段都细看,一般是先看这个人都待过哪些公司、岗位是什么,初步判断和当前岗位的匹配度,然后快速看最匹配那段经历的细节,加强”是否匹配、是否足够优秀”的判断。 到这里,初步判断已经形成。接下来才是逐段打开看细节。这时看的是什么?我看的是描述里有没有 对事物的本质思考 。核心其实就一句话,候选人是否洞察了项目中的独特痛点,并采取了相对应的策略采取行动,并拿到了结果。在和候选人正式沟通之前 (排除有人背书推荐等场景),简历中的内容就是候选人和招聘者之间沟通的唯一界面。这部分经历千万不能注水,不能写成岗位通用职责,要基于项目经历、公司背景、个人达成过程做高度总结, 要有数字,要有独特的动作,而且这个动作要和项目中的问题高度相关 。 很多同学的写法是这样的(真实案例): 推动权益形态由单次红包/通用券升级为”三单阶梯任务”,参与券门槛、券力度、活动周期设计,同时规划专属承接频道及频道完整的券核销链路,包括活动入口、权益状态、商品承接、支付引导和退单权益回收等策略设计。 这段描述的问题:只停留在”做了什么”,过于通用,放到任何一家公司、同一个岗位都能用,没有任何亮点。它不是总结,是把岗位职责复制粘贴了一遍。 03 一份真实的考卷:Boss 列表谁会被点? 道理讲完,拿真实考卷检验。下面是 Boss 直聘简历列表里的 6 张卡片,换成你是招聘者,会点开哪份? 我的排序: 3 > 5 > 4、6、2 > 1 。 为什么我把第 3 份排第一? “ top1 互联网公司 “:用普世认知的标签给公司背书,再借公司给自己背书。”我在最优秀的公司,所以我也是最优秀的人才。” “ 3 年升 9 级 “:大厂晋升有固定节奏,一年升一级已经算优秀。3 年 9 级,平均每年 3 级、不断跨级,假设履历真实,那一定是优秀中的优秀。 “ 多次拿 bu 项目奖 “:给不断晋升补上奖项背书,成绩有出处,再次说明自己的优秀。 “ 扛把子 “:三个字总结自己,是打仗型人才,能扛事,能冲锋。 短短一行个人简介,每一句都在说”我优秀”。招聘者会产生强烈的冲动,想点进去细看这个候选人。 反面案例是第 1 份 :基本平平无奇,连个人优势都没做总结。招聘者愿意点它,大概率是奔着字节的名头。这个候选人可能真的很优秀,只是没急着找工作、没好好准备简历。但仅简历准备而言,在列表页的点击率上,这个简历已差了很多。简历筛选这件事很残酷: 读的人只有 10 秒,没人有义务替你脑补。 很多优秀的做事人,并没有花精力在简历上,这个从我自己的招聘经历上也多有印证,懒得写、不会写、差不多就行、酒香不怕巷子深、我有干货我有实力我怕啥,这种情况占了大部分。但从另一个角度看,小事反而能够体现一个人对事物本质的思考能力。商业社会,需要你对于事物运行的本质有洞察和分析的逻辑,才能更好的支撑你在商业逻辑中走的更远。 第 5 份可以单独说一下 。工作 2 年的候选人,从快速成长的角度阐述优势:”成长速度快,1 年从功能迭代成长为会场核心主 R,支持战略竞争项目。”这既是对个人过往的真实总结,更是用户分析维度的标准动作。为什么?因为招聘者招 3 年以下的人,看的就是 成长潜力和稳定性 :是否值得招进来培养一两年,成长为团队骨干。很少有招聘者指望招一个工作两三年的人直接当核心骨干,从常识和概率上都不现实。 中间三份(4、6、2):4 有具体的年限数字和跨业务经验,6 写了个人优势、方向也聚焦,2 描述全面但偏通用。都比第 1 份强,但都没做到”每句话都在替候选人说话”。 04 招聘者心理分层 对上面的内容做个简单总结,核心其实是把求职这个事从增长视角分析下,用户都是谁,他们都在哪里,如何让他们“更小成本”的知道我的产品,并使用我的产品?我们先把招聘者的心理做一个分析 所以从候选人的角度,要做的事情非常明确: 结合自身所处阶段,基于招聘者的招聘心理,总结自己和包装自己 ,让自己和对方的心理诉求匹配。 注意,是匹配,不是造假。包装的定义是:把真实经历里最契合对方诉求的部分,提炼出来、放到最前面。造假是把没有的写上去,那过不了细筛,也过不了背调。 回到漏斗。列表粗筛这一环,从指标维度拆解,可以拆解出有效曝光率,卡片点击率。有效曝光取决于平台的匹配算法,商业化流量服务等,这里我并不专业,所以不做拆解,简单的思路,基于平台的简历创建工具,用好标签,关键词,拆词等工具,让平台的算法尽可能的帮你匹配,将你推荐到招聘者面前。在卡片点击率上,其实是你需要重点关注并下功夫的,核心一句话:用最短的篇幅,给招聘者最准的信号。你的标签、你的数字、你的荣誉,都是为这 10 秒服务的。 简历的列表页,不是你经历的总目录,是招聘者信息流里的一条广告。 过了列表初筛,就进入简历详情。详情的整体逻辑同样用增长的逻辑去拆解,:设计好整体结构,基于招聘者的用户行为分析,来 提升简历阅读的完播率 。这一部分我会放到下一篇来介绍。 第三篇我计划再做个有意思的迁移:参考短剧的钩子设计来设计简历。短剧前 3 秒留不住人,观众就划走了;简历留不住人,招聘者就划走了。这两件事,本质其实是同一件事。 本文由 @闲碎唠增长 原创发布于人人都是产品经理。未经作者许可,禁止转载 题图来自Pixabay,基于CC0协议
velog
Thị trường chứng khoán không đơn thuần là một cỗ máy giao dịch các con số, biểu đồ kỹ thuật hay các báo cáo tài chính khô khan. Sâu thẳm bên dưới những biến động giá xanh đỏ từng giây chính là sự giằng co tột độ của tâm lý con người: lòng tham, sự sợ hãi, niềm hy vọng mù quáng và cả nỗi tiếc nuối tột cùng. Đã bao nhiêu lần bạn tự nhủ sẽ cắt lỗ khi cổ phiếu giảm 7%, nhưng rồi lại chần chừ hy vọng nó sẽ hồi phục? Đã bao nhiêu lần bạn hưng phấn lao vào mua đuổi một cổ phiếu vừa tăng trần để rồi phải ôm đỉnh trong cay đắng? Những câu hỏi đó phản ánh một thực tế không thể chối cãi rằng cảm xúc cá nhân đang chi phối phần lớn quyết định của nhà đầu tư, đặc biệt là những người mới bước chân vào thị trường. Để có thể tồn tại và kiếm được lợi nhuận bền vững trên thị trường tài chính khắc nghiệt này, việc thấu hiểu tâm lý học hành vi không chỉ là một lợi thế mà còn là chiếc khiên bảo vệ tài sản của chính bạn. Khi tham gia giao dịch, việc lựa chọn một nền tảng công nghệ hỗ trợ đứt đoạn cảm xúc bằng các công cụ đặt lệnh thông minh là vô cùng cần thiết, chẳng hạn như khi bạn tìm hiểu qua hướng dẫn mở tài khoản chứng khoán VPS để tận dụng hệ thống giao dịch tự động hoàn toàn bằng số hóa. Sự bùng nổ của công nghệ tài chính hiện đại ngày nay cho phép nhà đầu tư dễ dàng tiếp cận các sản phẩm dịch vụ tài chính đa dạng từ nhiều định chế uy tín khác nhau. Chẳng hạn, nếu bạn đang phân vân không biết nên bắt đầu hành trình đầu tư của mình ở đâu cho phù hợp với khẩu vị rủi ro và phong cách giao dịch cá nhân, việc tham khảo các phân tích chi tiết tại nên mở tài khoản chứng khoán ở đâu sẽ giúp bạn có thêm góc nhìn khách quan, đa chiều trước khi đưa ra quyết định rót vốn. Bên cạnh đó, việc trải nghiệm các hệ sinh thái giao dịch khác nhau trên thị trường cũng là một phương pháp hay để kiểm chứng tâm lý và tìm ra môi trường giao dịch tối ưu nhất cho bản thân, ví dụ như việc khám phá thêm dịch vụ tại Hướng dẫn mở tài khoản chứng khoán VPS để so sánh trực quan về biểu phí, tốc độ khớp lệnh cũng như các tiện ích hỗ trợ phân tích kỹ thuật chuyên sâu. Quay trở lại với bài toán tâm lý hành vi, tại sao bộ não con người lại thường xuyên phản ứng sai lệch trước những biến động của thị trường chứng khoán? Theo các nhà kinh tế học hành vi, tiến hóa sinh học đã trang bị cho bộ não chúng ta cơ chế "chiến hay chạy" để sinh tồn trước các mối nguy hiểm ngoài tự nhiên, nhưng cơ chế này lại hoàn toàn phản tác dụng khi áp dụng vào thế giới tài chính hiện đại. Khi thị trường sụt giảm mạnh, bản năng sinh tồn trỗi dậy khiến nhà đầu tư cảm thấy hoảng loạn tột độ, kích hoạt hành động bán tháo bằng mọi giá để bảo vệ phần vốn còn lại, ngay đúng thời điểm đáy của chu kỳ thị trường. Ngược lại, khi thị trường hưng phấn tột độ với những con sóng tăng điên cuồng, hiệu ứng tâm lý bầy đàn khiến con người ta sợ bị bỏ lỡ cơ hội, từ đó bất chấp rủi ro lao vào mua đuổi ở vùng giá đỉnh lịch sử. Chính những bẫy tâm lý này đã biến hàng triệu nhà đầu tư thành những nạn nhân của chính sự tham lam và sợ hãi của bản thân. Một trong những biểu hiện phổ biến nhất của tâm lý học hành vi trên thị trường chứng khoán chính là hiện tượng thiên kiến xác nhận, nơi nhà đầu tư chỉ tìm kiếm và tin tưởng những thông tin củng cố cho quan điểm sẵn có của mình, đồng thời phớt lờ hoàn toàn các dấu hiệu cảnh báo rủi ro rõ ràng từ thị trường. Ví dụ, khi bạn đã mua một mã cổ phiếu với kỳ vọng giá sẽ tăng gấp đôi, bạn sẽ tự động chú ý đến các bài viết phân tích tích cực trên các diễn đàn, các hội nhóm hô hào tăng giá, nhưng lại gạt bỏ các báo cáo tài chính kém sắc hoặc xu hướng kỹ thuật suy yếu của chính mã cổ phiếu đó. Thiên kiến này khiến tư duy trở nên cứng nhắc, mất đi sự khách quan cần thiết và dẫn đến hậu quả nặng nề khi doanh nghiệp thực sự gặp vấn đề cốt lõi trong hoạt động kinh doanh. Bên cạnh thiên kiến xác nhận, hiện tượng bám víu vào giá vốn cũng là một cạm bẫy tâm lý cực kỳ nguy hiểm. Nhà đầu tư thường có xu hướng neo giữ quyết định của mình vào mức giá mà họ đã mua cổ phiếu, thay vì đánh giá tiềm năng tương lai của doanh nghiệp ở thời điểm hiện tại. Nếu một cổ phiếu giảm giá sâu dưới giá vốn, họ chọn cách ôm lỗ dài hạn với tâm lý "chưa bán là chưa lỗ", trong khi nguồn vốn đó đáng lẽ ra nên được giải phóng để đầu tư vào những cơ hội sinh lời tốt hơn. Ngược lại, khi cổ phiếu vừa chớm có lãi một chút, họ lại vội vàng bán tháo để chốt lời non vì sợ lợi nhuận ảo sẽ biến mất, qua đó bỏ lỡ những con sóng tăng trưởng dài hạn bằng lần của những cổ phiếu siêu chu kỳ. Để khắc phục những điểm yếu chí mạng này của tâm lý con người, giải pháp duy nhất là xây dựng cho mình một hệ thống quy tắc giao dịch kỷ luật sắt đá và tuân thủ nó một cách máy móc như một cỗ máy. Hệ thống này bao gồm việc xác định rõ ràng tỷ lệ cắt lỗ và chốt lời trước khi xuống tiền mua bất kỳ mã cổ phiếu nào, quản trị tỷ trọng danh mục hợp lý để không bao giờ bị áp lực tâm lý đè nặng lên các quyết định hàng ngày, cũng như liên tục nâng cao kiến thức tài chính để nhìn nhận thị trường dưới góc độ xác suất thống kê thay vì cảm xúc thắng thua cay cú. Khi bạn đã làm chủ được tâm lý của chính mình, thị trường chứng khoán sẽ không còn là một sòng bạc đỏ đen đầy rủi ro và căng thẳng, mà sẽ thực sự trở thành một kênh đầu tư tài chính thông minh, giúp dòng tiền của bạn sinh sôi nảy nở theo thời gian một cách bền vững, an toàn và chuyên nghiệp nhất.
velog
Drive 인덱스를 새로 만들 때 기존 데이터를 지우고 새 파일 목록을 다시 넣는다. 이 작업이 중간에 실패하면 기존 데이터 삭제됨 새 데이터 일부만 저장됨 같은 상태가 될 수 있다. 그래서 인덱스 교체 부분을 트랜잭션으로 묶었다. transaction.executeWithoutResult(status -> { jdbc.update("DELETE FROM drive_file_index ..."); for (var file : files) { jdbc.update("INSERT INTO drive_file_index ..."); } jdbc.update("UPDATE drive_index_root_state ..."); }); TransactionTemplate 은 코드 안에서 직접 트랜잭션 범위를 정할 때 쓴다. 이번 구조에서는 중요한 게 하나 있었다. FMS API를 호출해서 파일 목록을 가져오는 작업까지 트랜잭션으로 묶지는 않았다. FMS 원격 조회 → 트랜잭션 밖 H2 기존 인덱스 삭제 + 새 인덱스 저장 + 상태 변경 → 트랜잭션 안 원격 요청은 오래 걸리거나 실패할 수도 있어서 DB 트랜잭션을 잡은 채 기다리지 않게 했다. 그리고 새 인덱스 저장 중 하나라도 실패하면 전체가 롤백된다. 즉 이번에 쓴 이유는 여러 DB 변경을 전부 성공하거나 전부 취소해야 할 때 → TransactionTemplate @Transactional 처럼 선언적으로 쓰는 방법도 있지만 트랜잭션이 필요한 구간을 코드에서 명확하게 좁히고 싶을 때 TransactionTemplate 을 쓸 수 있다.
Балл: 54.4Уверенность: 49%
Подробнееvelog
책 목록을 한 화면에 두 권씩 보여 준다고 하겠습니다. 다음 버튼을 눌렀을 때는 이어지는 두 권이 필요합니다. Pagination은 긴 목록을 여러 화면으로 나누어 읽는 방법입니다. 이번에는 앞에서 몇 행을 건너뛰는 방법과, 마지막으로 읽은 값을 기억하는 방법을 작은 표에서 확인하겠습니다. DB(Database)는 자료를 저장하고 찾는 시스템입니다. 표의 한 줄은 행, 가격이나 번호처럼 같은 종류의 값을 담는 항목은 열이라고 부릅니다. SQL은 DB에 작업을 요청하는 언어입니다. 아래 예제의 이름과 가격은 설명을 위해 만든 자료입니다. 먼저 결과 순서를 정하기 책 번호 가격(원) 1 100 2 200 3 200 4 300 5 400 6 500 가격이 같은 책 2와 3도 차례를 정해야 합니다. 여기서는 가격이 작은 순서로 읽고, 같은 가격 안에서는 책 번호가 작은 순서로 읽겠습니다. 서로 다른 행을 구분하는 번호까지 정렬 기준에 넣으면 이 예제의 차례가 하나로 정해집니다. ORDER BY 는 결과 순서를 지정합니다. LIMIT 는 반환할 행 수를 제한하고, OFFSET 은 결과 앞에서 건너뛸 행 수를 정합니다. 두 번째 화면을 읽으려면 두 행을 건너뛰고 두 행을 받습니다. 결과 순서를 정해 사용하는 이유는 PostgreSQL 18 LIMIT과 OFFSET 설명 에서도 확인할 수 있습니다. PostgreSQL은 DB 관리 프로그램입니다. 마지막 값으로 다음 화면 찾기 Keyset Pagination은 마지막으로 읽은 정렬 기준값을 기억하고, 그 뒤의 행을 찾는 방법입니다. 첫 화면에서 책 1과 2를 읽었다면 마지막 기준은 (가격 200, 번호 2) 입니다. 여기서부터 이어지는 두 행을 요청합니다. (price, id) > (200, 2) 라는 조건은 두 값을 왼쪽부터 비교합니다. 가격이 200을 넘는 행이 이어집니다. 가격이 200으로 같으면 번호가 2를 넘는 행이 이어집니다. 따라서 가격 200인 책 3도 다음 화면에 들어갑니다. SQLite 여러 값 비교와 목록 조회 그림의 세로 구분선은 첫 화면의 마지막 책을 표시합니다. 가격과 번호를 함께 기억하므로 같은 가격의 책도 이어서 읽을 수 있습니다. 그림은 결과의 차례를 보여 줍니다. 실제 저장 공간과 읽은 횟수는 별도 확인이 필요합니다. 같은 표에서 두 요청 실행하기 SQLite도 DB 관리 프로그램입니다. 이 실험에서는 실행 중 자료를 담는 Memory 공간에 새 SQLite DB를 만들었습니다. 다음 SQL을 같은 예제 DB에서 순서대로 실행합니다. CREATE TABLE book ( id INTEGER PRIMARY KEY, price INTEGER NOT NULL ); INSERT INTO book VALUES (1, 100), (2, 200), (3, 200), (4, 300), (5, 400), (6, 500); CREATE INDEX book_price_id_idx ON book(price, id); SELECT id, price FROM book ORDER BY price, id LIMIT 2; SELECT id, price FROM book ORDER BY price, id LIMIT 2 OFFSET 2; SELECT id, price FROM book WHERE (price, id) > (200, 2) ORDER BY price, id LIMIT 2; CREATE TABLE 은 표를 만들고, INSERT 는 행을 넣습니다. INTEGER 는 정수를 담는 열을 선언합니다. PRIMARY KEY 는 각 행을 구분하는 기본 열입니다. NOT NULL 은 값이 없음을 나타내는 NULL 의 입력을 제한합니다. CREATE INDEX 는 원하는 행을 찾는 보조 자료구조인 Index를 만듭니다. 여기서는 가격과 번호의 순서로 여러 열을 묶었습니다. SELECT 는 읽을 열을, FROM 은 읽을 표를 정합니다. WHERE 는 남길 행의 조건입니다. 첫 조회는 (1, 100) , (2, 200) 을 반환합니다. 뒤의 두 조회는 모두 (3, 200) , (4, 300) 을 반환합니다. 자료가 그대로인 이 시점에는 두 방법으로 같은 다음 화면을 얻습니다. 화면 사이에 책이 추가되면 첫 화면을 읽은 뒤, 가격 50원인 책 7이 추가됐다고 하겠습니다. 새 책은 가격순 목록의 맨 앞에 들어갑니다. 두 행을 건너뛰는 기준은 새 목록에 적용됩니다. INSERT INTO book VALUES (7, 50); SELECT id, price FROM book ORDER BY price, id LIMIT 2 OFFSET 2; SELECT id, price FROM book WHERE (price, id) > (200, 2) ORDER BY price, id LIMIT 2; 새 목록의 첫 세 행은 책 7, 1, 2입니다. OFFSET으로 두 행을 건너뛰면 책 2부터 시작합니다. 실제 결과는 (2, 200) , (3, 200) 입니다. 첫 화면에서 읽었던 책 2가 다시 나타납니다. 마지막 값 (200, 2) 를 조건으로 쓴 조회는 (3, 200) , (4, 300) 을 반환합니다. 앞에 추가된 책 7은 마지막 값의 앞쪽에 놓이므로 이 다음 화면에는 들어오지 않습니다. 이 예제는 행 추가 한 번을 다룹니다. 읽는 동안 기존 책의 가격이 바뀌거나 행이 삭제되면 필요한 화면 규칙을 다시 정해야 합니다. 모든 화면에서 같은 시점의 자료가 필요하다면 DB가 자료의 읽는 시점을 유지하는 방법까지 검토합니다. 마지막 값 하나를 기억하는 방법의 범위와, 전체 조회 시점을 유지하는 요구를 구분할 수 있습니다. 다음 화면의 기준 기록하기 Keyset 방식에서는 반환된 마지막 행의 가격과 번호를 함께 기록합니다. 정렬 기준에 쓴 값을 이어지는 요청의 조건에 그대로 사용합니다. 가격이 같은 자료가 있을 때 번호를 빼면 아직 읽지 않은 같은 가격의 행이 빠질 수 있습니다. 실제 요청에서는 정렬 방향, 빈 값의 처리, 사용자에게 보여 줄 범위도 함께 정합니다. 위 예제의 가격과 번호는 모두 값이 있고 작은 순서로 정렬합니다. 다른 조건을 넣을 때는 그 조건에 맞춘 반환 값을 다시 확인해야 합니다. 이번 실험은 결과 행을 확인했으며, 조회 시간은 측정하지 않았습니다. 확인 문제 첫 화면의 마지막 책이 (200, 2) 일 때 가격 200인 책 3은 다음 화면에 들어갈까요? 책 7이 앞에 추가된 뒤 OFFSET 2 조회가 다시 보여 준 책은 무엇일까요? 한 화면을 세 권씩 읽으려면 어떤 값과 기록을 바꿔야 할까요? 답과 해설 들어갑니다. 가격이 같고 번호 3이 마지막 번호 2의 뒤에 놓입니다. 책 2입니다. 새 목록에서 책 7과 1을 건너뛰면 책 2부터 읽습니다. LIMIT를 3으로 바꾸고, 그 결과의 마지막 행에 있는 가격과 번호를 함께 기록합니다. OFFSET 방식은 화면에 맞는 건너뛸 행 수도 정합니다. 오늘은 책 번호 여섯 개를 가격순으로 놓고 첫 화면의 마지막 값을 표시해보겠습니다. 하루 뒤에는 같은 가격의 책을 한 권 더 넣어 다음 화면을 예상해보겠습니다. 일주일 뒤에는 정렬 기준과 Index의 열 순서를 연결해 설명해보면 좋겠습니다. 자료 확인: 2026-10-07, SQLite 공식 문서와 PostgreSQL 18 공식 문서. 예제 검증 환경: Python 3.12.14, SQLite 3.53.1, 독립 :memory: DB. PostgreSQL에서는 문서의 정렬 규칙을 확인했습니다. 위 SQL의 실행 결과는 SQLite 실험의 범위입니다.
velog
오늘이 시험 당일이라니... 과연 이 사람은 붙을 것일까 떨어질 것일까 궁금하시죠 저도 궁금해요 submiter 가 withdraw 거둬들이다 취소하다 user 가 레코드를 submit for approval approver or submitter submitter 가 잠 나지금 거둬들일게 = withdraw 이거는 대부분 ui 에서 recall 버튼 임 누르면 recall actions 발동 ex . 누군가 approval process 요청 제출 - 생각해보니 번호 잘못 적음 아직 매니저가 승인/거부 안한 상태에서 본인이 거둬드림(withdraw) - recall vr에서 error condition formula 가 true 이면 무조건 누구나 블락 된 어드민도 못피함
Балл: 54.4Уверенность: 49%
Подробнееvelog
Thị trường chứng khoán từ lâu đã được ví như một tấm gương phản chiếu thu nhỏ của nền kinh tế vĩ đại, nơi hàng triệu dòng vốn gặp gỡ, đan xen và tranh đấu từng giây từng phút. Đối với những nhà đầu tư mới bước chân vào lĩnh vực tài chính, bảng điện tử chứng khoán (Bảng giá trực tuyến) thường hiện lên như một ma trận phức tạp với chi chít các con số xanh, đỏ, vàng cùng những ký hiệu viết tắt khó hiểu. Việc không biết cách đọc bảng điện tử chẳng khác nào một người mù đi giữa đêm tối, hoàn toàn bị động trước những biến động chớp nhoáng của thị trường và dễ dàng rơi vào trạng thái hoảng loạn hoặc kỳ vọng thái quá. Tuy nhiên, đằng sau sự nhảy múa liên tục của những con số ấy lại là một bức tranh sống động về cung cầu, về cuộc chiến căng thẳng giữa phe mua và phe bán, đồng thời hé lộ những dấu vết rõ nét của dòng tiền thông minh. Việc nắm vững kỹ năng đọc và phân tích bảng điện tử không chỉ là một công cụ kỹ thuật đơn thuần mà còn là nghệ thuật thấu hiểu tâm lý hành vi của đám đông trên thị trường tài chính. Khi bạn đã thuần thục việc giải mã từng bước nhảy của giá, từng khối lượng khớp lệnh bùng nổ hay sự dịch chuyển của các lô mua bán chủ động, bạn sẽ thấy thị trường không hề ngẫu nhiên hay hỗn loạn mà vận hành theo những quy luật tâm lý và cung cầu hết sức chặt chẽ. Bài viết này sẽ dẫn dắt bạn đi qua từng lớp lang của bảng điện tử chứng khoán, từ những khái niệm căn bản nhất cho đến các kỹ năng đọc vị dòng tiền chuyên sâu, giúp bạn tự tin xây dựng góc nhìn độc lập và sắc bén trong mọi quyết định đầu tư của mình mà không cần phải phụ thuộc vào những lời phím hàng hay tin đồn vô căn cứ trên các diễn đàn. Để có thể làm chủ bảng điện tử, bước đầu tiên và quan trọng nhất là bạn cần trang bị cho mình một tài khoản giao dịch tại các công ty chứng khoán uy tín, nơi cung cấp bảng giá trực tuyến mượt mà, tốc độ cập nhật dữ liệu thời gian thực chính xác cùng nhiều tính năng hỗ trợ phân tích kỹ thuật và đặt lệnh chuyên nghiệp. Bạn có thể tham khảo hướng dẫn chi tiết về quy trình và thủ tục để nhanh chóng sở hữu tài khoản giao dịch thông qua bài viết tổng hợp tại Hướng dẫn lập tài khoản chứng khoán với các bước thực hiện đơn giản, bảo mật tuyệt đối và hoàn toàn miễn phí trực tuyến. Bên cạnh đó, nếu bạn đặc biệt quan tâm đến hệ sinh thái giao dịch phái sinh, các chính sách ưu đãi phí giao dịch hấp dẫn cùng dịch vụ hỗ trợ khách hàng tận tâm hàng đầu thị trường, việc lựa chọn mở tài khoản tại các định chế tài chính lớn là một hướng đi vô cùng khôn ngoan; bạn có thể tìm hiểu thêm về cách thức gia nhập hệ thống này qua thông tin tại Hướng dẫn lập tài khoản VPS để không bỏ lỡ bất kỳ cơ hội lướt sóng ngắn hạn nào. Ngoài ra, đối với những nhà đầu tư theo trường lối đầu tư giá trị, ưa chuộng các giải pháp tự động hóa tài sản thông minh, tích hợp quản lý dòng tiền linh hoạt và các sản phẩm trái phiếu, chứng chỉ quỹ ưu việt, việc mở tài khoản tại ngân hàng đầu tư hàng đầu là lựa chọn tối ưu; hãy tham khảo ngay quy trình thiết lập tài khoản chuyên sâu tại Hướng dẫn chi tiết mở tài khoản TCBS để bắt đầu hành trình kiến tạo sự thịnh vượng tài chính một cách bài bản nhất từ hôm nay. Khi đã có trong tay công cụ giao dịch đắc lực, việc tiếp theo là chúng ta cần hiểu rõ cấu trúc cơ bản của một bảng điện tử tiêu chuẩn trên thị trường chứng khoán Việt Nam. Thông thường, bảng giá được chia thành các nhóm chính bao gồm nhóm cổ phiếu VN30 (những doanh nghiệp có vốn hóa và thanh khoản lớn nhất thị trường), nhóm cổ phiếu vừa và nhỏ, nhóm chứng khoán phái sinh, chứng quyền có bảo đảm và trái phiếu doanh nghiệp niêm yết. Mỗi mã chứng khoán sẽ được định danh bằng một mã viết tắt gồm ba chữ cái theo quy định của trung tâm lưu ký chứng khoán. Đi kèm với mã chứng khoán là một loạt các cột thông tin kinh điển như Giá tham chiếu, Giá trần, Giá sàn, bên cạnh đó là các mức giá mua tốt nhất, khối lượng mua tương ứng, mức giá bán tốt nhất cùng khối lượng bán tương ứng. Màu sắc trên bảng điện tử đóng vai trò như một hệ thống tín hiệu giao thông trực quan giúp nhà đầu tư nắm bắt xu hướng ngay lập tức mà không cần phải đọc từng con số chi tiết. Màu vàng biểu thị cho mức giá tham chiếu, tức là mức giá đóng cửa của phiên giao dịch ngày hôm trước, đóng vai trò là mốc chiếu để tính biên độ dao động trong phiên. Màu xanh lá cây thể hiện sự tăng giá so với giá tham chiếu, mang lại niềm vui cho các cổ đông nắm giữ mã cổ phiếu đó. Màu đỏ biểu thị sự sụt giảm giá so với tham chiếu, phản ánh áp lực bán đang áp đảo hoặc dòng tiền rút lui khỏi mã cổ phiếu đó. Đặc biệt, trên thị trường chứng khoán Việt Nam, chúng ta có thêm hai màu sắc vô cùng đặc biệt là màu tím và màu xanh lơ (hoặc màu xanh da trời tùy theo giao diện của từng công ty chứng khoán). Màu tím tượng trưng cho mức giá trần, là mức giá cao nhất mà cổ phiếu được phép giao dịch trong một phiên giao dịch, thể hiện sức mua cực kỳ khủng khiếp, vượt trội hoàn toàn so với lượng hàng bán ra và thường xuất hiện khi có những tin tức cực kỳ vĩ mô hoặc dòng tiền lớn đổ bộ vào một nhóm ngành nào đó. Ngược lại, màu xanh lơ tượng trưng cho mức giá sàn, là mức giá thấp nhất trong phiên, phản ánh lực bán tháo hoảng loạn, khi mà nhà đầu tư tìm mọi cách thoát hàng bằng được dù phải chịu mức giá chiết khấu sâu nhất trong ngày. Việc hiểu rõ ý nghĩa của biên độ dao động +/-7% trên sàn HOSE, +/-10% trên sàn HNX và +/-15% trên sàn UPCoM sẽ giúp bạn định hình được mức độ rủi ro cũng như biên độ lợi nhuận tiềm năng trong mỗi quyết định giao dịch của mình. Biên độ này không chỉ là những con số kỹ thuật khô khan mà nó còn là lồng sắt bảo vệ nhà đầu tư khỏi những cú sốc tâm lý quá lớn trong một phiên giao dịch, đồng thời là thước đo để kiểm tra sức mạnh nội tại của từng cổ phiếu khi đối diện với các biến động của thị trường chung. Đi sâu hơn vào cấu trúc của bảng điện tử, phần cốt lõi thu hút sự chú ý của mọi nhà đầu tư chuyên nghiệp chính là khu vực khớp lệnh, bao gồm mức giá khớp lệnh hiện tại, khối lượng khớp lệnh trong phiên và tổng khối lượng giao dịch tích lũy từ đầu ngày. Giá khớp lệnh là kết quả của cuộc gặp gỡ định mệnh giữa người muốn mua với mức giá cao nhất có thể chấp nhận và người muốn bán với mức giá thấp nhất có thể chấp nhận. Khi một lệnh mua khớp với một lệnh bán, giao dịch chính thức được thiết lập và ghi nhận vào lịch sử giao dịch của thị trường. Việc theo dõi sự biến động của giá khớp lệnh cùng với khối lượng khớp đi kèm trong từng phút sẽ cho chúng ta thấy được nhịp đập của thị trường. Nếu một cổ phiếu tăng giá đi kèm với khối lượng khớp lệnh tăng đột biến vượt xa mức trung bình 20 phiên gần nhất, đó là minh chứng không thể chối cãi cho thấy dòng tiền lớn (smart money) đang ào ạt đổ vào gom hàng. Ngược lại, nếu giá cổ phiếu tăng nhưng khối lượng khớp lệnh lại teo tóp, lèo tèo, đó thường là cái bẫy tăng giá (bull trap) do một nhóm nhỏ nhà đầu tư tạo lập hoặc đầu cơ kéo giá lên trong biên độ hẹp nhằm xả hàng tồn kho ra cho những nhà đầu tư thiếu kinh nghiệm bám đuổi. Khối lượng tích lũy trong phiên cũng là một chỉ số sống còn để đánh giá thanh khoản của doanh nghiệp. Những cổ phiếu có thanh khoản cao luôn là ưu tiên hàng đầu của các nhà đầu tư lớn, các quỹ đầu tư tổ chức bởi vì họ có thể dễ dàng giải ngân hàng triệu đô la mà không làm biến động quá mạnh đến giá vốn, đồng thời cũng có thể nhanh chóng thoát hàng khi thị trường chuyển biến xấu mà không sợ bị kẹt hàng do không có người mua. Ngược lại, những cổ phiếu có thanh khoản thấp, mỗi phiên chỉ khớp vài trăm hoặc vài nghìn cổ phiếu thường tiềm ẩn rủi ro thao túng giá rất cao bởi các nhóm lái cổ phiếu, nơi mà chỉ cần một lượng tiền nhỏ cũng có thể vẽ biểu đồ theo ý muốn, khiến nhà đầu tư cá nhân sập bẫy bất cứ lúc nào. Do đó, việc quan sát kỹ lưỡng cột khối lượng khớp lệnh kết hợp với dư mua và dư bán chính là chiếc kính lúp phóng đại mọi ý đồ của các nhà tạo lập thị trường, giúp bạn tránh xa những cổ phiếu "rác" và tập trung tài sản vào những doanh nghiệp có nền tảng cơ bản vững chắc cùng dòng tiền thực sự hậu thuẫn. Một khía cạnh cực kỳ quan trọng khác trên bảng điện tử mà ít người để ý đến chính là khu vực khớp lệnh thỏa thuận bên cạnh phương thức khớp lệnh định kỳ và liên tục. Phương thức khớp lệnh định kỳ (ATO và ATC) diễn ra vào đầu và cuối phiên giao dịch, nơi toàn bộ các lệnh mua và bán trong phiên được tập hợp lại để tìm ra một mức giá duy nhất có thể khớp được khối lượng giao dịch lớn nhất. Phiên ATO (Opening) mở cửa lúc 9h sáng trên sàn HOSE định hình tâm lý đầu ngày, phản ánh những thông tin vĩ mô hoặc quốc tế diễn ra trong đêm qua tác động trực tiếp lên kỳ vọng của nhà đầu tư. Trong khi đó, phiên ATC (Closing) diễn ra từ 14h45 đến 15h00 lại là chiến trường khốc liệt nhất của các quỹ đầu tư tổ chức, các quỹ ETF thực hiện việc tái cơ cấu danh mục hoặc chốt NAV định kỳ. Việc theo dõi diễn biến giá và khối lượng trong phiên ATC đòi hỏi một cái đầu lạnh và kinh nghiệm cực kỳ dày dặn, bởi vì đây là thời điểm mà các lệnh lớn được ẩn giấu và tung ra vào những giây cuối cùng nhằm tạo ra mức giá đóng cửa như ý muốn của các "tay to". Còn phương thức khớp lệnh thỏa thuận lại là nơi diễn ra các giao dịch có quy mô cực kỳ lớn giữa các cổ đông lớn, các quỹ đầu tư nước ngoài hoặc các lãnh đạo doanh nghiệp mà không làm ảnh hưởng trực tiếp đến biến động giá trên sàn khớp lệnh liên tục. Việc đọc hiểu bảng điện tử không dừng lại ở việc nhìn thấy con số xanh đỏ trước mắt, mà là khả năng kết nối chuỗi các sự kiện diễn ra trong suốt phiên giao dịch để phác thảo nên hành vi của các bên tham gia thị trường. Bạn cần phải tự đặt ra những câu hỏi phản biện liên tục khi nhìn vào bảng giá: Tại sao cổ phiếu này lại có dư mua giá sàn lớn đến vậy mà không ai bán? Tại sao có lệnh mua hàng triệu cổ phiếu kê ở giá tham chiếu ngay trước giờ ATC? Ai đang là người đứng sau những bước giá nhích lên đều đặn trong suốt phiên sáng nhưng lại bị bán úp ngược vào đầu phiên chiều? Chính sự tò mò mang tính phân tích này sẽ mài giũa tư duy của bạn, biến bạn từ một người chơi theo cảm tính trở thành một nhà đầu tư có tư duy chiến lược sắc sảo. Để nâng cao kỹ năng đọc bảng điện tử lên một tầm cao mới, chúng ta
velog
문제 설명 각 산은 밑변이 x축에 놓인 삼각형입니다. 양쪽 빗변은 밑변과 각각 45도를 이루므로, 봉우리 좌표 (x, y) 가 주어지면 산의 모양이 결정됩니다. 베시는 어떤 산의 봉우리가 다른 산의 내부나 경계에 있으면 그 산을 구별할 수 없습니다. 주어진 산들 중에서 다른 산에 가려지지 않는 산의 개수 를 구하면 됩니다. 예를 들어 봉우리 좌표가 다음과 같다면, (4, 6) (7, 2) (2, 5) (7, 2) 의 봉우리는 (4, 6) 인 산에 가려집니다. 나머지 두 산은 구별할 수 있으므로 정답은 2 입니다. 풀이 아이디어 1. 산을 밑변 구간으로 바꾸기 봉우리가 (x, y) 인 산을 생각해보겠습니다. 빗변의 기울기는 각각 1 , -1 이므로, 봉우리에서 x축까지 내려가는 동안 가로로도 y 만큼 이동합니다. 따라서 밑변의 양 끝점은 다음과 같습니다. 왼쪽 끝점: x - y 오른쪽 끝점: x + y 산 하나를 다음 구간으로 표현할 수 있습니다. [x-y, x+y] 모든 산의 빗변 기울기가 같으므로, 봉우리가 다른 산에 가려지는 조건을 밑변 구간이 다른 구간에 포함되는 조건 으로 바꿀 수 있습니다. 다른 산의 시작점 <= 현재 산의 시작점 현재 산의 끝점 <= 다른 산의 끝점 즉, 다른 구간에 포함되지 않는 구간의 개수를 구하면 됩니다. 2. 정렬 후 최대 끝점 확인하기 구간을 시작점 기준 오름차순으로 정렬합니다. 그러면 앞에서 확인한 구간들은 모두 현재 구간의 시작점 이하에서 시작합니다. 이 상태에서는 앞선 구간들의 최대 끝점만 기억하면 됩니다. 현재 끝점 <= 이전 최대 끝점 → 앞선 구간에 포함됨 현재 끝점 > 이전 최대 끝점 → 앞선 구간에 포함되지 않음 시작점이 같다면 끝점이 큰 구간을 먼저 확인합니다. 그래야 같은 위치에서 시작하는 작은 구간을 가려지는 산으로 처리할 수 있습니다. 코드 #include <bits/stdc++.h> using namespace std; bool cmp(pair<int, int> a, pair<int, int> b) { if (a.first == b.first) return a.second > b.second; return a.first < b.first; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N; cin >> N; vector<pair<int, int>> mnt; for (int i=0; i<N; i++) { int x,y; cin >> x >> y; mnt.push_back({x-y, x+y}); } sort(mnt.begin(), mnt.end(), cmp); int max_ed = INT_MIN; int ret=0; for (auto[st, ed] : mnt) { if (ed > max_ed) { ret++; max_ed = ed; } } cout << ret; return 0; } 풀이 흐름 산의 개수 N 을 입력받습니다. 각 봉우리 (x, y) 를 밑변 구간 [x-y, x+y] 로 바꾸어 저장합니다. 시작점 오름차순, 시작점이 같다면 끝점 내림차순으로 정렬합니다. 이전 구간들의 최대 끝점 max_ed 를 초기화합니다. 정렬된 구간을 앞에서부터 확인합니다. 현재 끝점이 max_ed 보다 크면 보이는 산으로 세고, max_ed 를 갱신합니다. 보이는 산의 개수 ret 를 출력합니다. 구현 포인트 1. mnt에 저장하는 값 vector<pair<int, int>> mnt; mnt 에는 봉우리 좌표가 아닌 산의 밑변 구간을 저장합니다. first = 밑변의 왼쪽 끝점 second = 밑변의 오른쪽 끝점 입력 단계에서 바로 좌표를 변환합니다. int x,y; cin >> x >> y; mnt.push_back({x-y, x+y}); 예제의 산들을 구간으로 바꾸면 다음과 같습니다. (4, 6) → [-2, 10] (7, 2) → [5, 9] (2, 5) → [-3, 7] 이렇게 바꾸면 삼각형의 겹침을 직접 계산하지 않고, 두 끝점으로 포함 관계를 확인할 수 있습니다. 2. 봉우리의 포함과 구간의 포함이 같은 이유 다른 산의 봉우리를 (X, Y) 라고 하겠습니다. 현재 봉우리 (x, y) 가 이 산의 내부나 경계에 있으려면 다음 조건을 만족해야 합니다. y + |x-X| <= Y 다른 산은 봉우리에서 가로로 1만큼 멀어질 때마다 높이가 1씩 낮아집니다. 따라서 현재 위치에서 다른 산의 높이는 Y - |x-X| 이며, 현재 봉우리의 높이 y 가 이 값 이하여야 합니다. 이 조건은 다음 두 조건으로 나눌 수 있습니다. y + x - X <= Y y + X - x <= Y 정리하면 다음과 같습니다. x + y <= X + Y X - Y <= x - y 이는 밑변 구간으로 보면 다음 조건입니다. 다른 산의 왼쪽 끝점 <= 현재 산의 왼쪽 끝점 현재 산의 오른쪽 끝점 <= 다른 산의 오른쪽 끝점 따라서 구간이 포함되면 해당 산의 봉우리도 가려집니다. 3. 시작점이 같으면 끝점 내림차순으로 정렬하기 bool cmp(pair<int, int> a, pair<int, int> b) { if (a.first == b.first) return a.second > b.second; return a.first < b.first; } 기본 정렬 기준은 시작점 오름차순입니다. 시작점이 같다면 끝점이 큰 구간을 먼저 배치합니다. 예를 들어 다음 두 구간이 있다고 하겠습니다. [1, 5] [1, 8] [1, 5] 는 [1, 8] 에 포함되므로 가려지는 산입니다. 작은 구간을 먼저 확인하면 아직 큰 구간을 보지 못했기 때문에 작은 구간도 정답에 포함할 수 있습니다. 따라서 다음 순서로 정렬합니다. [1, 8] [1, 5] 큰 구간을 먼저 확인하여 최대 끝점을 8 로 만들면, 작은 구간은 자연스럽게 제외됩니다. 4. max_ed의 의미 int max_ed = INT_MIN; max_ed 는 현재 구간을 확인하기 전에 처리한 모든 구간의 끝점 중 최댓값 입니다. 처음에는 확인한 구간이 없으므로 INT_MIN 으로 초기화합니다. 이를 통해 첫 번째 구간은 정답에 포함됩니다. 정렬 이후 앞선 구간들은 모두 현재 구간보다 왼쪽 또는 같은 위치에서 시작합니다. 따라서 앞선 구간 중 끝점이 현재 끝점 이상인 구간이 있다면, 그 구간은 현재 구간을 포함합니다. 이 조건을 확인하기 위해 앞선 구간들을 다시 순회할 필요는 없습니다. 가장 큰 끝점인 max_ed 만 비교하면 됩니다. 5. 끝점이 더 클 때만 정답에 포함하기 int ret=0; for (auto[st, ed] : mnt) { if (ed > max_ed) { ret++; max_ed = ed; } } st 는 현재 구간의 시작점이고, ed 는 끝점입니다. 시작점 관계는 정렬로 보장되어 있으므로 반복문에서는 끝점만 비교합니다. ed <= max_ed → 앞선 구간에 포함됨 → 정답에 포함하지 않음 현재 끝점이 더 크다면 앞선 어느 구간에도 포함되지 않습니다. ed > max_ed → 보이는 산 → ret 증가 → max_ed 갱신 끝점이 같은 경우에도 현재 구간은 앞선 구간에 포함됩니다. 문제에서는 경계에 있는 봉우리도 보이지 않으므로, 조건은 >= 가 아닌 > 입니다. 조건을 만족하지 않을 때는 현재 끝점이 기존 최댓값 이하이므로 max_ed 를 그대로 유지합니다. 6. 한 번 센 산을 나중에 취소하지 않아도 되는 이유 현재 구간을 정답에 포함했다면 앞선 구간에는 가려지지 않는다는 것을 확인한 상태입니다. 뒤에 나오는 구간의 시작점은 현재 시작점보다 크거나 같습니다. 시작점이 더 크다면 현재 구간 전체를 포함할 수 없습니다. 시작점이 같더라도 끝점 내림차순으로 정렬했으므로, 뒤에 나오는 구간의 끝점은 현재 끝점 이하입니다. 봉우리 위치가 같은 두 산은 없으므로 완전히 같은 구간도 없습니다. 따라서 뒤의 구간이 현재 산을 가릴 수 없으며, 한 번 증가시킨 ret 를 다시 줄일 필요가 없습니다. 7. 예시로 보는 동작 예제의 구간들을 정렬하면 다음과 같습니다. [-3, 7] [-2, 10] [5, 9] 첫 번째 구간을 확인합니다. ed = 7 7 > INT_MIN ret = 1 max_ed = 7 두 번째 구간은 끝점이 기존 최댓값보다 큽니다. ed = 10 10 > 7 ret = 2 max_ed = 10 세 번째 구간은 끝점이 기존 최댓값 이하입니다. ed = 9 9 <= 10 가려지는 산이므로 제외 따라서 최종 정답은 2 가 됩니다. 시간복잡도 각 산을 밑변 구간으로 변환하는 데 O(N) 이 필요합니다. 구간을 정렬하는 데 O(N log N) , 정렬된 구간을 한 번 순회하는 데 O(N) 이 필요합니다. 따라서 전체 시간복잡도는 O(N log N) 입니다. mnt 에 산마다 구간 하나를 저장하므로 공간복잡도는 O(N) 입니다.
velog
이 글은 제가 만든 유료 상품 이야기입니다. 9월 25일부터 Gumroad에서 "AI 크롤러 정책 자동 검사 배지"를 $19에 팔고 있습니다. 무료로 쓸 수 있는 것부터 적고 유료 부분은 뒤에 따로 적겠습니다. 9월 초에 robots.txt가 GPTBot·ClaudeBot을 실제로 막는지 보여주는 무료 점검기를 소개했습니다. 그런데 점검 결과는 탭을 닫으면 사라져서, 정책을 정해 둔 사이트가 그 상태를 남에게 링크로 보여줄 방법이 없었습니다. 그래서 검사 결과를 발급일로부터 365일 동안 이용하는 결과 주소와 작은 SVG 배지로 남기는 발급기를 만들었습니다. 판정 로직은 복제하지 않고 점검기의 공개 API 2개를 그대로 부릅니다. 검사까지는 무료입니다. 발급 화면에서 키 없이 "먼저 무료로 검사"를 누르면 아래 5개 항목의 결과가 나오고, 같은 결과를 /check?domain=example.com 경로에서 JSON으로 받을 수도 있습니다. 로그인은 없습니다. 배지는 5개 항목을 전부 통과해야 나옵니다. robots.txt가 있을 것(404·410이면 미통과) robots.txt가 512K자를 넘어 잘리지 않을 것 AI 크롤러 15종 모두에 적용되는 규칙이 있을 것(전용 그룹이든 User-agent: * 든) /llms.txt 가 HTML이 아닌 텍스트로 응답할 것 llms.txt 형식 오류 0건 세 번째는 막았는지가 아니라 정했는지를 봅니다. 허용과 차단 중 무엇이 옳은지는 판단하지 않습니다. 네 번째에서 HTML 응답을 미통과로 치는 건 없는 경로에 SPA 껍데기 HTML을 200으로 돌려주는 사이트가 많아서입니다. 9월 24일 외부 도메인 6곳을 돌려 보니 cloudflare.com·vercel.com·stripe.com·docs.perplexity.ai는 5/5, llmstxt.org는 4/5, anthropic.com은 3/5였습니다. 배지가 안 나온다고 사이트에 문제가 있다는 뜻은 아닙니다. 가장 오래 붙잡은 건 배지 문구였습니다. 배지는 기관 심사나 법적 판단처럼 읽히는 순간 문제가 됩니다. 그래서 SVG 안의 글자를 도메인과 "YYYY-MM-DD 자동 검사 통과" 두 조각으로 고정했고, 그렇게 읽힐 수 있는 표현 20개를 금지 목록으로 두어 하네스가 배지·결과 페이지·판매 문안을 전수 검사합니다. 결제 확인은 Gumroad 라이선스 키 하나로 합니다. 발급기는 워커 1개이고, 키와 도메인이 오면 Gumroad licenses/verify API로 확인합니다. 키가 없으면 403, 결제된 키가 아니거나 환불·차지백·분쟁 건이면 402, 결제는 됐어도 5개 중 미통과가 있으면 422로 발급하지 않습니다. KV에는 키 원문을 저장하지 않습니다. 배지 id는 도메인과 키의 sha256 해시를 비밀값으로 HMAC한 값의 앞 24자이고, 해시는 id를 만든 뒤 버립니다. 같은 계정의 다른 워커가 KV list 일일 상한 1,000회를 다 쓴 적이 있어 이 워커는 list() 를 부르지 않습니다. 이 배지가 다루지 않는 것도 적어 둡니다. 기관 심사 결과도 법적 판단도 아닙니다. 사이트가 공개한 두 파일만 보므로 크롤러가 그 규칙을 실제로 따르는지는 알 수 없습니다. 한 번 관측한 결과라 이후 파일이 바뀌면 반영되지 않고, 사이트의 품질·보안·개인정보 처리와도 무관합니다. 결과 페이지에 이 한계와 다시 검사하는 주소가 함께 적힙니다. AI 크롤러 접근 점검기(무료) — https://ai-crawler-checker.hdg-os.workers.dev/ 배지 발급 화면(검사는 키 없이 무료) — https://verify-badge.hdg-os.workers.dev/redeem AI 크롤러 정책 자동 검사 배지($19, 도메인 1개·365일) — https://maxhwang.gumroad.com/l/ai-crawler-badge 구매 후 확인 메일의 라이선스 키와 도메인을 발급 화면에 넣으면 배지 삽입 코드가 나옵니다. 언급한 크롤러·서비스 이름과 도메인은 각 소유자의 것이며, 이 글과 도구는 어느 곳과도 제휴 관계가 없습니다.
Балл: 54.4Уверенность: 49%
Подробнееvelog
최댓값 만들기(1) 문제 설명 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요. 주어진 코드 틀 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> // numbers_len은 배열 numbers의 길이입니다. int solution(int numbers[], size_t numbers_len) { int answer = 0; return answer; } 풀이 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> // numbers_len은 배열 numbers의 길이입니다. int solution(int numbers[], size_t numbers_len) { int answer = 0; for(size_t i = 0; i < numbers_len; i++) { for(size_t l = 0; l<numbers_len -i - 1; l++) { if(numbers[l] > numbers[l+1]) { int num = numbers[l+1]; numbers[l+1] = numbers[l]; numbers[l] = num; } } } answer = numbers[numbers_len -1] * numbers[numbers_len -2]; return answer; } 접근 방식 주어진 배열에서 제일 큰 값 2개를 곱하여 리턴할 것. 문제를 보고 max 값 2개를 무작정 뽑기보다 주어진 배열을 오름차순으로 정렬해서 뒤에 값 2개를 곱해주자는 방식으로 문제를 접근했다. 피드백 입력 변경 첫 번째 루프에서 i < numbers_len - 1 시작할 것. 후기 이번 문제에서는 정렬 중에서 버블 정렬을 이용한 문제이다. 여기서 내가 주의할 점이 정렬할 때 앞에 값과 비교하는데 이때 값을 잘 못 설정하면 범위에서 벗어난다. 특히 루프 돌 때 범위를 한 번 더 생각해주자. 버블 정렬: 인접한 두 개의 언소를 비교하여 크기가 순서대로 되어 있지 않으면 자리를 교환하는 방식의 가장 단순한 정렬 알고리즘
Балл: 54.4Уверенность: 49%
Подробнееvelog
FMS 파일 검색을 처음에는 매번 원격으로 했다. 근데 실적이 많아지면 같은 폴더를 계속 다시 탐색하게 돼서 파일 메타데이터를 H2에 따로 저장해두는 방식으로 바꿨다. FMS → 파일 목록 수집 drive_file_index → 검색용 파일 정보 저장 후보 검색 → FMS 직접 조회 X → H2 인덱스 조회 여기서 말하는 인덱스는 DB의 CREATE INDEX 랑은 조금 다르다. 이번에는 원본 데이터를 검색하기 쉽게 애플리케이션 쪽에 따로 만들어둔 검색용 데이터 저장소 에 가깝다. 원본 파일 → FMS에 그대로 존재 검색용 메타데이터 → Biz Assist H2에 저장 대신 실제 파일 선택이나 다운로드할 때는 H2 데이터만 믿지 않고 FMS를 다시 확인한다. 검색 → 인덱스 사용 실제 파일 존재 여부 / 권한 → 원본 FMS 확인 원격 데이터 조회가 무겁고 반복적일 때 검색용 정보를 따로 저장해두는 구조를 생각해볼 수 있다.
Балл: 54.4Уверенность: 49%
ПодробнееБалл: 57.01Уверенность: 54%
Балл: 54.4Уверенность: 49%
Балл: 54.4Уверенность: 49%
Балл: 54.4Уверенность: 49%
Балл: 54.4Уверенность: 49%