Nuxt 中 useSeoMeta 与 useHead 的区别
掘金
在 Nuxt 3 中,页面标题和 SEO 元信息可以通过 useSeoMeta() 或 useHead() 设置。两者功能有重叠,但定位不同:useSeoMeta() 专注于 SEO 元标签,useH
Балл: 57.08Уверенность: 54%
ПодробнееЗагружаем каталог…
НАВИГАТОР ПО ВОЗМОЖНОСТЯМ ИИ
Найдите свой ИИ-инструмент. Бесплатный доступ, пробные периоды и кредиты — в одном месте.
掘金
在 Nuxt 3 中,页面标题和 SEO 元信息可以通过 useSeoMeta() 或 useHead() 设置。两者功能有重叠,但定位不同:useSeoMeta() 专注于 SEO 元标签,useH
Балл: 57.08Уверенность: 54%
Подробнее掘金
OmniGame 技术白皮书:从零依赖到 WebRTC P2P,重新定义网页小游戏的工程上限 一、为什么我们要做 OmniGame 1.1 传统网页小游戏的三大痛点 在浏览器游戏这件事上,行业已经走了
Балл: 57.06Уверенность: 54%
ПодробнееiThome 新聞
網路應用與資安業者F5調查全球排名前100萬個網站,發現其中54%的網站已支援後量子密碼學(Post-Quantum Cryptography,PQC)金鑰交換,但這波PQC採用成長主要受到CDN效應推動。Cloudflare、Fastly等大型CDN與邊緣服務平臺已預設啟用PQC金鑰交換;排除Cloudflare託管的網站後,PQC金鑰交換支援比例僅剩22%。
Балл: 57.05Уверенность: 54%
Подробнее掘金
本文讲解MySQL InnoDB并发控制原理,以快照读、当前读为主线,介绍事务隔离级别、MVCC与锁机制,解析幻读等常见问题,分析长事务带来的线上风险,阐述MVCC与悲观锁如何平衡一致性与并发性能。
Балл: 57.04Уверенность: 54%
Подробнее掘金
Flutter Riverpod 3 支持自动重试,但缺少统一日志时,Provider 出错与重试过程难以追踪。本文通过 ProviderObserver 和全局 retry 配置,统一记录异常、堆栈
Балл: 57.04Уверенность: 54%
Подробнее掘金
一个四节点集群跑了半年没重启过,版本落后两个小版本。升级这件事真正的难点是出了事怎么退回去,把新二进制放上去那一步反而不难。RustFS 官方的二进制升级页给的流程很短,但里面那两条备份命令才是整个流
Балл: 57.03Уверенность: 54%
Подробнее人人都是产品经理
房产经纪人提出“给公共房源加标记”,产品经理却最终做成了小程序消息提醒。从“加标记”到“发提醒”,中间藏着产品经理的核心判断链路:理解问题、分析需求、推进方案、参与验收、复盘迭代。本文通过真实案例,拆解产品经理的五项职责如何环环相扣,帮你建立从问题到结果的完整工作框架。 “在电脑端房源列表上,给公共房源加一个醒目的标记。” 房产经纪人提出这样一条需求,听起来很简单:调整样式,补一个标签,交给开发实现。但接到需求的产品经理发现,系统明明已经有一个专门查看公共房源的页面。用户为什么还要在另一个列表里找它们? 这个问题追下去,最后做出来的功能变了:团队在小程序里增加了房源转为公共房源的消息提醒。 这是一个很典型的产品现场。从“加标记”到“发提醒”,中间那段看不见的判断,恰恰是理解产品经理工作的起点。做了多年产品后,我把这份工作看成一条连续的链路: 弄清用户的问题,分析需求并取舍,形成方案并推进协作,参与验收上线,再根据结果决定下一步。 不同团队会有不同分工,但每一项都需要留下可供下一步使用的结论。 一、先弄清问题,再决定做什么 第一项职责,是理解用户及其所处的业务。 在这个房产系统里,房源可以按归属分为私有和公共,也可以按是否能够交易来分类。经纪人平时查找可交易的房源,因此默认列表中同时显示私有和公共房源;如果只想找公共房源,也可以切换到专门的页面。 按这个逻辑,“把公共房源标得更醒目”似乎没有解决一个新的查找问题。 关键线索藏在房源归属的变化里。 原来,系统有一条规则:经纪人超过规定时间没有跟进,私有房源就会转为公共房源,俗称“跳公盘”。系统已有消息通知,但经纪人经常外出带客户看房,很少留意电脑端的系统消息。等到发现时,自己的房源可能已经转公了。 所以,用户真正担心的是:自己的房源发生了归属变化,却没有及时获知。醒目的标签是他能想到的解决办法。 这时再比较方案,差别就清楚了。列表加标记,需要经纪人先回到电脑前、打开列表、认出房源;消息提醒则可以通过日常使用的手机告知他变化。这个案例最后把方案落到了小程序的微信消息推送上。 产品经理在这一环节要留下的,至少包括使用者、业务规则、问题发生的场景,以及已有办法为什么没有奏效。缺少这些信息,团队只能围绕一个标签的颜色和大小讨论,很难判断这件事是否值得做。 第二项职责,是分析需求,确定目标和范围。 理解了问题,也不意味着用户提出的每个相关功能都要进入本期版本。还要确定:这次准备改善哪件事,方案覆盖哪些情况,要付出什么实现成本。用户影响、业务价值与开发投入,都应进入取舍依据。 沿着房源案例往下看,“让经纪人及时获知归属变化”和“让公共房源更容易被找到”,就是两个不同目标。前者要检查通知是否触达了相应的人;后者要检查查找过程是否顺畅。两种功能可能都有用,却不能用同一套理由证明它们必须同时做。 如果本期要解决的是消息遗漏,讨论就应围绕提醒发生的时机、接收对象和相关使用场景展开。至于列表是否需要整体改版,需要另有证据支持,不能顺手扩大范围。这里是在说明如何判断取舍,原案例并未披露团队的完整排期和资源评估。 需求分析的交付物因此不能只有一个功能名称。它还要让团队知道:本期解决什么问题,为什么采用这个方向,以及哪些事情暂时不在范围内。 二、把判断变成团队能实现的方案 第三项职责,是把方案讲清楚,并和团队一起推进实现。 另一个需求来自财务人员,来自财务人员:希望电脑端的报销单据详情能够全屏显示。原来的单据在小窗口中打开,窗口可以最大化,底部有打印和取消按钮。 追问之后才发现,财务人员遇到的困难有两个: 报销审批节点很多,横向排列后,小窗口装不下,需要拖动横向滚动条才能看完整。 看完以后,财务还要把单据打印出来归档。 团队随后调整了审批节点的展示方式。例如,原先分散排列的部门审批、店长审批,可以按所属的门店层级组织显示,使审批关系更容易辨认。打印流程也增加了预览:先看预览,再确认打印。 这个案例的价值,在于方案已经落到了具体操作中:哪部分内容难读,怎样组织显示,打印前多了哪一步。只有“优化体验”四个字,设计和开发无法据此判断该改什么。 继续把这类方案交给团队实现,还会出现更细的问题。 将节点合并展示,是否仍能看见每个节点的审批状态? 展示层级变化,会不会让人误以为审批步骤也被删掉了? 预览中的内容与实际打印内容如何对应? 这些是沿方案需要进一步确认的规则,不能靠各个岗位自行猜测。 产品经理要根据问题选择表达方式:操作顺序可以用流程图说明,页面布局用原型表达,权限、状态和异常处理则写进规则。文档写得多并不自动代表方案清楚;同一个问题在原型、需求文档和会议结论里说法不同,反而容易造成返工。 协作也从这里开始。业务方确认方案有没有遗漏工作要求,设计师判断信息怎样呈现,研发评估实现条件,测试检查规则是否足够明确。讨论改变了方案,就需要把结论同步到相关材料;仍未解决的问题,也要明确由谁补充、何时给出判断。具体开几次会、怎样安排评审,要根据团队节奏调整,但“结论有人确认、变化有人同步”这件事不能省。 这一项职责最终要交付的,是团队可以据此开展工作的方案,以及实施过程中持续有效的产品判断。 三、上线前,把业务路径走完整 第四项职责,是参与验收和上线准备,检查实现是否满足约定。 上述房产案例记录了问题和处理方案,并未公开完整的验收、上线效果数据。 沿着这两个方案,可以进一步看清产品验收应该检查什么。 对于房源转公提醒,验证到“系统发出了一条消息”就结束,仍然不够。需要核对消息是否对应那条发生变化的房源、是否发给应当知晓的人,以及接收者能否从内容中理解发生了什么。触发时机和使用条件,要以团队确认的业务规则为准。 对于报销单,页面变得紧凑,也只是其中一项变化。还应按财务人员的工作顺序,查看审批关系、辨认节点状态、进入打印预览、确认打印内容。某个按钮能够点击,不等于这条工作路径已经成立。 这些检查需要产品、业务和测试共同参与。产品经理负责澄清业务预期、判断实现是否偏离方案;测试对质量进行专业验证;技术发布条件则需要研发、运维等相应负责人判断。发现问题以后,产品经理还要说明它影响哪些用户、是否阻断关键操作,供团队决定修复、延后还是调整上线范围。 上线准备中还容易漏掉两件事:使用者是否知道流程变了,产品团队是否有办法看到上线后的表现。 例如,打印流程增加预览步骤,使用说明和相关业务沟通就需要与之对应。如果上线后准备检查提醒的使用情况,所需的数据记录也要在开发时考虑,不能等到复盘才发现没有记录。验收、运营沟通、数据记录和反馈渠道,应该在上线前就逐项确认。 需求沟通时就想清楚怎样检查效果,后面才不会只剩下“功能已经做完”这一条结论。这也解释了为什么五项职责是一条相连的工作链:上线后要回答的问题,往往需要在需求阶段就留下条件。 四、回到最初的问题,判断下一步 第五项职责,是观察使用结果、复盘问题,并形成下一轮决定。 继续用房源提醒说明:提醒发送成功,只能证明发送环节完成;是否帮助经纪人及时获知归属变化,还需要结合触达、使用和用户反馈来判断。不能直接把发送量当作需求已经解决的证据。 报销单也是如此。打印预览的使用次数,能说明有人进入这个环节,却不足以单独证明财务工作更顺畅。还需要回看最初的困难:审批信息是否更容易读懂,打印内容是否符合归档需要,是否出现了新的操作障碍。 这些都是应当验证的问题,并非原案例已经公布的改善结果。若要进一步判断“节省了多少时间”,还需要上线前后的可比记录,说明观察对象和任务条件;没有数据,就不能把功能完成写成效率提升。 复盘也要分清两条线。一条看交付过程:评审遗漏了什么,需求为何变更,信息有没有同步,哪些依赖影响了上线。另一条看产品结果:实际使用与原先预期有什么差异,用户的问题有没有得到缓解。 过程顺利而结果不好,可能需要重新检查问题判断或方案;使用效果有改善,但团队反复返工,则需要修正协作与交付方式。两种情况不能用一份“项目已完成”的记录一笔带过。 回到开头,经纪人要一个醒目的标记,产品经理需要先理解他为什么提出这件事。做出提醒以后,还要继续检查提醒是否在他的工作场景里起作用。职责从一个具体问题开始,也应当在这个问题的实际变化中接受检验。 本文由 @Lucas 原创发布于人人都是产品经理。未经作者许可,禁止转载 题图来自Unsplash,基于CC0协议
人人都是产品经理
单点汉堡 20 元、可乐 8 元、薯条 12 元,加起来 40 元;套餐只要 25 元,于是你几乎下意识地点了套餐。作者从这杯可乐讲起:它的毛利率能到 80% 到 90%,真正撑起快餐利润的其实是饮料,而不是汉堡本身。 你去麦当劳、肯德基点餐,有没有遇到过这种情况。 本来只是想随便吃个汉堡,站在点餐屏前扫了一眼菜单,突然就被套餐吸引住了。 单点一个汉堡,20 块,单点一杯可乐,8 块,薯条,12 块。你心里下意识算了一下,三样加起来要 40。 这时候,你的余光瞥见了旁边的超值套餐,汉堡+薯条+可乐,只要25块。 你的大脑开启了飞速运转模式,单点总和40块,套餐只要25块。虽然比只吃汉堡贵了5块钱,但你多得到了一杯可乐和一份薯条。哪怕那杯可乐喝两口扔了,这波操作也是血赚啊! 于是,你几乎是下意识地点了套餐,内心甚至涌起一种薅到资本主义羊毛的窃喜。 但真相是,当你为了划算而端起那杯冰可乐的时候,你以为是你占了便宜,实际上,你已经精准地掉进了一个由食品巨头精心设计了半个世纪的顶级商业圈套。 01 真正赚钱的不是汉堡,是可乐 如果你只看菜单,很容易产生一个错觉,汉堡卖 20,肯定是最赚钱的;可乐才 8 块,充其量是个配角。但在快餐店的账本里,恰恰相反。 而真正撑起利润的,恰恰是你以为顺便带上的那杯可乐。 首先,让我们谈谈这杯“快乐水”的真实身价。 这杯碳酸饮料,剥去品牌的溢价,其物理本质极其简单:大量的水、二氧化碳,以及一点点浓缩糖浆。 在餐饮业内部,这是一个公开的秘密,你手里那杯售价8块钱的可乐,最昂贵的成本部分,往往不是可乐液体本身,而是那个印着Logo的纸杯和那根吸管。 一杯零售价8-10元的可乐,其毛利率可以惊人地达到80%甚至90%。在商业世界里,这简直可以称为“液体黄金”。 你去宜家买过可乐吧?几块钱给你一个杯子,随便喝,甚至有人自带杯子去接,服务人员看都不看。如果成本很高,宜家不可能这么干,既然这么干了,说明边际成本几乎为 0。 其次,是关于8块钱的心理战术——锚定效应。 单点汉堡 20 块,是第一个被放到你眼前的数字,它的作用只有一个,成为你判断价格的锚。 而那杯 8 块钱的可乐,本质上是一个稻草人,它站在那里的唯一意义,就是让你在看到 25 块的套餐时,产生一种极其强烈的对比感,40 对 25,看起来像是毫无悬念的选择。 你不是被说服了,你是被那个稻草人忽悠了。一旦你点了套餐,事情就完成了。 商家成功地将那杯几乎零边际成本的糖水塞到了你手里。你看似赚到了巨大的差价,但对商家而言,他们成功地把你原本只打算掏的20块钱,拉升到了25块钱。 这多出来的5块钱,不需要额外的烹饪时间,不需要复杂的供应链,几乎全是纯利润。用一杯低成本的水,撬动25%的客单价增长,这就是商业杠杆的极致。 02 汉堡和可乐,是商业史上最成功的绑定CP 汉堡与可乐的形影不离,背后隐藏着全球食品工业两大巨头之间最深层的默契。这组CP的牢固程度,超越了单纯的口味搭配,更像是一场写进教科书的商业联姻。 观察一下快餐界的版图,你会发现一个雷打不动的定律,麦当劳的餐桌上永远摆着可口可乐,而肯德基的机器里流出的永远是百事可乐。 这绝非偶然,更是两大阵营在领地划分上达成的某种终极契约。 以麦当劳与可口可乐为例,双方的关系早已超越了普通的供需合作。早在1955年,双方就缔结了可以说是终身制的伙伴关系。麦当劳作为可口可乐全球最大的单一客户,享受着帝王般的待遇。 可口可乐为麦当劳提供的是特供的不锈钢糖浆运输罐。这种特殊容器能更好地隔绝温度和空气,只为了确保你在麦当劳喝下的第一口可乐,气泡感最足,口感最凛冽。 从商业结构上看,快餐店在这笔交易里赚的,并不只有你点餐的钱。每卖出一杯可乐,背后都伴随着来自饮料公司的渠道回报、返利、市场支持,甚至是品牌共建资源。 于是,一家快餐店的角色发生了变化。它表面上在卖汉堡和薯条,实际承担着饮料巨头在城市里的分销节点功能。 密集的门店网络、稳定的客流、强制性的套餐设计,让可乐可以被源源不断地倒进消费者的杯子里。 你喝下去的那一口气泡水,既是味觉体验,也是两家跨国公司在供应链和资本层面的紧密握手。 这层绑定关系越牢固,汉堡配可乐这件事,就越难被打破。 03 生理成瘾:一场针对大脑的神经暴击 如果说商业绑定是外部的推手,那么生理上的极致诱惑,才是你无法拒绝这杯可乐的内在动因。快餐店的饮料机里明明有红茶,也有咖啡,为什么只有可乐能稳坐“汉堡伴侣”的头把交椅? 原因藏在味觉和神经系统里。 汉堡的口感基调是咸香与高脂肪,油脂带来的满足感伴随着高热量,吃多了极易产生油腻与厚重感。此时,可乐中的磷酸与高糖分恰逢其时地登场。 酸味物质能够迅速切断油脂在舌尖的附着感,起到刮油解腻的化学作用;而高甜度的糖水又能中和汉堡的咸味。 这种咸与甜、油与酸的交织,在味蕾上形成了一种极具张力的动态平衡。 更妙的设计在于温度的对冲。热乎的汉堡肉饼,遇上加满冰块的可乐,这种极致的温差会猛烈地刺激口腔内的三叉神经。大脑在瞬间接收到强烈的感官信号,翻译过来就是一个字——爽! 更关键的还在后面。 当高糖和高脂同时进入身体,大脑伏隔核会快速释放多巴胺。 这是一套非常原始、非常高效的奖励机制,原本用于鼓励人类在稀缺环境下摄取高能量食物。在现代工业食品的加持下,这套机制被无限放大。 单独吃汉堡,满足感有限。单独喝可乐,刺激转瞬即逝。两者叠加时,快感强度会被明显拉高,而且来得又快又直接。快乐水这个称呼,实则是对生理反应的直观总结。 这已经超出了简单的口味搭配,进入到了神经系统层面的双重刺激。这也是为什么,哪怕你一开始并没打算喝饮料,最终那杯可乐还是会出现在你的托盘上。 04 默认效应 试着回想一下,你人生中第一次决定吃汉堡必须配可乐,是在哪个具体时刻?是你经过深思熟虑后的味觉探索吗?大概率不是。这个决定,早在你走进餐厅之前,就已经被外界植入了你的潜意识。 回看好莱坞电影,主角大快朵颐时手边总是放着一杯冒泡的深色饮料;看看身边的社交场景,从小伙伴到同事,所有人都在重复同一个动作。 经过几十年的广告轰炸与流行文化的洗礼,商家成功地将汉堡+薯条+可乐塑造成了一种不可撼动的文化图腾。 这种力量,在点餐的那一刻达到了顶峰。当你抬头看向菜单,占据视觉C位的永远是搭配好的套餐,单品汉堡往往被挤在不起眼的角落。这种视觉设计在不断暗示你,汉堡配可乐,就像吃饭配菜、豆浆配油条一样,是天经地义的自然法则。 这就是心理学中的默认效应。 在这种强大的隐性秩序面前,人类的决策机制表现出了极强的路径依赖。当所有人都这么做,当环境提供了最顺手的默认选项,我们的大脑会本能地停止思考,选择那条阻力最小的道路。 人类最难对抗的,从来都不是味觉上的偏好,而是深入骨髓的习惯。商家甚至不需要强迫你,他们只需要把那个选项放在你手边,你就会乖乖拿起它。 我剖析这杯可乐,想聊的其实不仅仅是一顿快餐。 汉堡与可乐的组合,堪称现代商业社会的一个微缩隐喻。它完美展示了商业力量是如何通过价格锚定、资本结盟、生理刺激以及文化塑造,全方位地接管了我们的决策权。 这让我们不得不面对一个略显尴尬的现实,我们引以为傲的自由意志,在精心设计的商业模型面前,往往脆弱得不堪一击。我们以为自己在做选择,实际上只是在执行商业巨头们预设好的程序。 生活中也充满了这样的套餐:买手机时,是不是觉得必须配个耳机才完整,办健身卡时,是不是觉得私教课才是标配,甚至在规划人生时,是不是也觉得房贷+车贷+打工是唯一的默认路径? 商业文明的极致,就是让一切变得顺理成章,让你在舒适区里交出钱包,甚至交出思考的权利。 本文由人人都是产品经理作者【寻空】,微信公众号:【寻空的营销启示录】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载 题图来自Unsplash,基于 CC0 协议
velog
앞선 글에서는 Raspberry Pi Pico 2 W를 Mac에 연결하고, BOOTSEL 모드와 USB Serial을 이용해 보드가 정상적으로 인식되는지 확인했다. 이번에는 실제로 Pico 2 W에서 Python 코드를 실행할 수 있도록 MicroPython 개발환경 을 구축해본다. 이번 글에서 구성할 개발환경은 다음과 같다. Mac │ │ USB ▼ Raspberry Pi Pico 2 W │ │ MicroPython Firmware ▼ Thonny IDE │ ▼ Python 코드 작성 및 실행 최종적으로 다음과 같은 코드를 Pico 2 W에서 실행하는 것이 목표다. print("Hello, Pico 2 W!") 1. Pico 2 W에서는 일반 Python이 아닌 MicroPython을 사용한다 Raspberry Pi 5에서는 Raspberry Pi OS 위에서 일반적인 Python을 실행할 수 있다. Raspberry Pi 5 ↓ Linux ↓ Python 3 반면 Pico 2 W는 Linux 운영체제를 사용하는 컴퓨터가 아니라 RP2350 기반 마이크로컨트롤러 보드 이다. 따라서 일반적인 Python 대신 마이크로컨트롤러용으로 만들어진 MicroPython 을 사용할 수 있다. Pico 2 W ↓ RP2350 ↓ MicroPython Firmware ↓ Python 코드 MicroPython은 Python 3 문법을 기반으로 하면서 GPIO, ADC, PWM, I2C, SPI 등의 하드웨어를 직접 제어할 수 있도록 만들어진 구현체이다. Raspberry Pi 공식 문서에서는 MicroPython이 Pico와 같은 임베디드 하드웨어에서 직접 실행되며 USB Serial을 통한 REPL과 자체 파일 시스템을 제공한다고 설명한다. 2. 필요한 것 이번 개발환경 구축에는 다음이 필요하다. Raspberry Pi Pico 2 W 데이터 통신이 가능한 Micro USB 케이블 Mac MicroPython UF2 Firmware Thonny IDE 특히 USB 케이블은 충전 전용 케이블이 아니라 데이터 통신이 가능한 케이블 이어야 한다. 3. MicroPython Firmware 다운로드 먼저 Pico 2 W에서 실행할 MicroPython Firmware를 준비한다. 반드시 자신의 보드에 맞는 Firmware를 사용해야 한다. 이번에 사용하는 보드는 Raspberry Pi Pico 2 W 이므로 Pico 2 W용 MicroPython Firmware 를 받아야 한다. MicroPython 공식 다운로드 페이지에는 Pico 2 W용 펌웨어가 별도로 제공된다. 2026년 10월 기준 최신 안정 버전은 MicroPython v1.29.0 이다. 다운로드하는 파일의 확장자는 .uf2 이다. 예를 들면 다음과 같은 형태다. RPI_PICO2_W-XXXXXXXX-v1.29.0.uf2 버전에 따라 실제 파일 이름은 달라질 수 있다. 항상 Pico 2 W용 최신 안정 Release를 사용하는 것을 권장한다. 개발 중인 Preview Build는 특별한 이유가 없다면 처음 사용하는 단계에서는 피하는 것이 좋다. 4. Pico 2 W를 BOOTSEL 모드로 진입시키기 MicroPython Firmware를 설치하려면 Pico 2 W를 BOOTSEL 모드 로 진입시킨다. 먼저 Pico의 USB 케이블을 분리한다. 그다음 다음 순서로 진행한다. 1. BOOTSEL 버튼 누르기 ↓ 2. BOOTSEL을 누른 상태에서 USB 연결 ↓ 3. Mac이 Pico를 인식할 때까지 잠시 기다리기 ↓ 4. BOOTSEL 버튼 놓기 정상적으로 진입했다면 macOS Finder에 새로운 USB 드라이브가 나타난다. Pico 2 계열은 일반적으로 RP2350 이라는 이름으로 표시된다. Raspberry Pi 공식 문서에서도 Pico 2 계열은 BOOTSEL 모드에서 RP2350 Mass Storage Device로 나타난다고 설명한다. 5. MicroPython UF2 설치 Finder에서 RP2350 드라이브를 연다. 앞서 다운로드한 .uf2 파일을 RP2350 드라이브 안으로 복사한다. MicroPython UF2 │ │ 복사 ▼ RP2350 파일 복사가 끝나면 Pico 2 W가 자동으로 재부팅된다. 이 과정에서 Finder의 RP2350 드라이브가 갑자기 사라질 수 있다. 이것은 오류가 아니라 정상적인 동작 이다. UF2 복사 ↓ Firmware 기록 ↓ Pico 자동 재부팅 ↓ MicroPython 실행 ↓ RP2350 드라이브 사라짐 즉, 이후 일반적인 MicroPython 실행 상태에서는 RP2350 드라이브가 Finder에 보이지 않아도 정상이다. 6. Thonny IDE 설치 MicroPython 코드를 작성하는 방법은 여러 가지가 있지만 처음 Pico를 사용할 때는 Thonny IDE 가 가장 간단하다. Thonny는 Python 및 MicroPython 개발을 위한 가벼운 IDE이며 macOS에서도 사용할 수 있다. Raspberry Pi의 Pico-series Python SDK에서도 Pico의 MicroPython 개발환경으로 Thonny를 사용하는 방법을 공식적으로 설명하고 있다. 설치 후 Thonny를 실행한다. 7. Pico 2 W를 Mac에 연결 이번에는 BOOTSEL 버튼을 누르지 않는다. 그냥 USB 케이블을 연결한다. Mac │ │ USB ▼ Pico 2 W MicroPython Firmware가 정상적으로 설치되어 있다면 Pico는 USB Serial 장치로 인식된다. 8. Mac Terminal에서 Pico 연결 확인 Thonny를 설정하기 전에 Mac에서 Pico가 Serial 장치로 잡혔는지 확인할 수 있다. Terminal을 실행한다. 다음 명령어를 입력한다. ls /dev/cu.usbmodem* 정상적으로 연결되어 있다면 예를 들어 다음과 같이 표시될 수 있다. /dev/cu.usbmodem1101 또는 /dev/cu.usbmodem101 숫자는 Mac과 연결 상태에 따라 달라질 수 있으므로 똑같지 않아도 된다. 장치가 여러 개 있어서 헷갈린다면 Pico 연결 전후를 비교한다. Pico 연결 전: ls /dev/cu.* Pico 연결 후: ls /dev/cu.* 새로 추가된 /dev/cu.usbmodemXXXX 장치가 Pico일 가능성이 높다. 9. Thonny에서 MicroPython Interpreter 선택 Thonny를 실행한 뒤 Pico에서 코드를 실행하도록 Interpreter를 변경해야 한다. 기본 상태에서는 Mac에 설치된 일반 Python이 선택되어 있을 수 있다. 예를 들어 Python 3.x 처럼 되어 있다면 코드는 Pico가 아니라 Mac에서 실행된다. 따라서 Interpreter를 MicroPython으로 변경한다. Thonny 하단의 Interpreter 표시 부분을 클릭하거나 Tools → Options → Interpreter 로 이동한다. Interpreter에서 Raspberry Pi Pico용 MicroPython을 선택한다. 환경과 Thonny 버전에 따라 메뉴 이름이 조금 다를 수 있지만 핵심은 MicroPython + Raspberry Pi Pico 계열 Interpreter를 선택하는 것이다. Raspberry Pi 공식 Pico Python SDK에서도 Thonny에서 기존 Python Interpreter를 Pico용 MicroPython Interpreter로 변경하도록 안내한다. 10. Pico의 Serial Port 선택 Interpreter 아래에서 사용할 포트도 설정할 수 있다. 예를 들어 Mac에서 Pico가 /dev/cu.usbmodem1101 으로 인식되었다면 해당 포트를 선택한다. 보통은 Thonny가 자동으로 Pico를 찾아준다. 자동으로 선택되지 않는다면 앞서 Terminal에서 확인했던 /dev/cu.usbmodemXXXX 를 지정하면 된다. 설정을 완료한다. 11. MicroPython REPL 확인 Pico와 정상적으로 연결되었다면 Thonny 아래쪽의 Shell 창에서 다음과 같은 표시를 확인할 수 있다. >>> 이것을 REPL 이라고 한다. REPL은 Read Evaluate Print Loop 의 약자다. 쉽게 말하면 MicroPython 명령어를 한 줄씩 바로 입력하고 결과를 확인할 수 있는 환경이다. 예를 들어 Shell에 print("Hello, Pico 2 W!") 를 입력한다. 결과: Hello, Pico 2 W! 다시 >>> 가 표시되면 MicroPython이 정상적으로 동작하고 있는 것이다. 12. 현재 MicroPython 정보 확인 REPL에서 다음 코드를 입력한다. import sys print(sys.implementation) MicroPython 구현 정보와 버전을 확인할 수 있다. 좀 더 간단히 보드 정보를 확인하고 싶다면 import sys print(sys.implementation._machine) 을 실행한다. Pico 2 W용 MicroPython Firmware를 정상적으로 설치했다면 출력에서 Pico 2 W 또는 RP2350과 관련된 정보를 확인할 수 있다. MicroPython 버전이나 Firmware에 따라 출력 형식은 조금 달라질 수 있다. 13. 첫 번째 Python 파일 작성 이번에는 REPL이 아니라 실제 Python 파일을 만들어본다. Thonny 편집기에 다음 코드를 작성한다. print("Hello, Pico 2 W!") print("MicroPython is running!") 상단의 실행 버튼을 누른다. 또는 일반적으로 F5 키를 이용해 실행할 수 있다. Shell에 다음과 같이 출력되면 성공이다. Hello, Pico 2 W! MicroPython is running! 14. 코드를 Mac에 저장하는 것과 Pico에 저장하는 것은 다르다 Thonny에서 파일을 저장하면 저장 위치를 선택할 수 있다. 대표적으로 This computer 와 Raspberry Pi Pico 가 있다. 둘은 완전히 다른 위치다. This computer ↓ Mac 저장공간 Raspberry Pi Pico ↓ Pico 내부 Flash 저장공간 따라서 개발하면서 이 둘을 구분해야 한다. 예를 들어 Mac에 프로젝트 원본을 보관하고 싶다면 This computer 에 저장한다. Pico 자체에서 코드를 실행하고 싶다면 필요한 파일을 Raspberry Pi Pico 에 저장한다. 15. main.py 가 중요한 이유 MicroPython에서는 Pico가 시작될 때 특정 파일을 자동으로 실행할 수 있다. 가장 중요한 파일이 main.py 이다. 예를 들어 Pico 내부에 다음 파일을 저장했다고 하자. # main.py print("Pico 2 W started!") USB 전원을 분리했다가 다시 연결하면 MicroPython이 시작되면서 main.py 가 실행된다. Pico 전원 ON ↓ MicroPython 시작 ↓ main.py 확인 ↓ main.py 자동 실행 따라서 나중에 센서 측정이나 Wi-Fi 연결 프로그램을 자동으로 시작하고 싶다면 최종 프로그램을 main.py 로 구성할 수 있다. 16. boot.py 와 main.py MicroPython 프로젝트에서는 다음 두 파일을 자주 볼 수 있다. boot.py main.py 일반적인 실행 순서는 다음과 같다. Pico 부팅 ↓ boot.py ↓ main.py boot.py 는 부팅 과정의 초기 설정에 사용하고, main.py 는 실제 애플리케이션 프로그램을 실행하는 데 주로 사용한다. 처음 MicroPython을 공부할 때는 boot.py 를 굳이 수정하지 않고 main.py 위주로 개발하는 것이 좋다. 17. 실행 중인 프로그램 중단 프로그램이 무한 루프에 들어가 있다면 Thonny Shell에서 Ctrl + C 를 누른다. 예를 들어 다음 코드가 실행 중이라고 하자. while True: print("Running...") 계속해서 Running... Running... Running... Running... 이 출력된다. 이때 Ctrl + C 를 누르면 실행이 중단되고 >>> REPL로 돌아온다. 18. Soft Reset MicroPython REPL에서 Ctrl + D 를 사용하면 Soft Reset 을 수행할 수 있다. 정리하면 Ctrl + C → 현재 실행 중인 프로그램 중단 Ctrl + D → MicroPython Soft Reset 이다. Raspberry Pi Linux에서 사용하는 sudo reboot 와는 다른 개념이다. 19. Thonny 없이 Mac Terminal에서 직접 연결할 수도 있다 Thonny가 반드시 필요한 것은 아니다. Mac Terminal에서도 Pico의 MicroPython REPL에 접속할 수 있다. 먼저 포트를 확인한다. ls /dev/cu.usbmodem* 예: /dev/cu.usbmodem1101 그다음 다음과 같이 접속한다. screen /dev/cu.usbmodem1101 115200 연결 후 >>> 가 나타나면 MicroPython REPL에 들어온 것이다. 테스트: print("Hello from Terminal!") 결과: Hello from Terminal! 초기 개발 단계에서는 Thonny가 훨씬 편하지만, 나중에 Terminal이나 VS Code 중심의 개발환경으로 넘어갈 때 USB Serial의 구조를 이해하는 데 도움이 된다. 20. Terminal의 screen 종료 Mac Terminal에서 screen /dev/cu.usbmodem1101 115200 으로 연결한 경우 단순히 exit 을 입력하는 것이 아니다. 다음 순서로 종료한다. Ctrl + A 그다음 K 를 누른다. 확인 메시지가 나타나면 y 를 입력한다. 즉, Ctrl + A → K → y 순서로 종료하면 된다. 21. Pico 2 W에는 sudo poweroff 를 사용하지 않는다 일반 Raspberry Pi와 Pico를 같이 사용하다 보면 종료 방법이 헷갈릴 수 있다. Raspberry Pi 5에서는 sudo poweroff 를 이용해 Linux를 정상적으로 종료한다. 하지만 Pico 2 W에는 Linux가 없기 때문에 sudo poweroff 명령도 존재하지 않는다. MicroPython 프로그램 실행을 끝내고 파일 쓰기나 Firmware 업데이트 작업이 진행 중이지 않다면 USB 전원을 분리할 수 있다. 일반적인 개발 종료 흐름은 다음과 같다. Ctrl + C ↓ 프로그램 중단 ↓ 파일 저장 완료 확인 ↓ Thonny / Serial 연결 종료 ↓ USB 분리 특히 UF2 Firmware를 기록하거나 파일을 Pico 내부 Flash에 저장하고 있는 도중에는 USB 케이블을 분리하지 않는 것이 좋다. 22. 개발환경이 정상인지 최종 확인 지금까지 설정한 환경이 정상적으로 작동하는지 한 번에 확인해본다. Thonny에서 다음 코드를 실행한다. import sys print("Hello, Pico 2 W!") print() print("MicroPython information:") print(sys.implementation) print() print("Machine:") print(sys.implementation._machine) 정상적으로 출력된다면 Mac ↓ USB ↓ Pico 2 W ↓ MicroPython ↓ Thonny ↓ Python 코드 실행 까지 전체 개발환경이 정상적으로 구성된 것이다. 23. 개발환경 구조 이해하기 전체 구조를 다시 정리하면 다음과 같다. ┌──────────────────────────┐ │ Mac │ │ │ │ Thonny IDE │ │ │ │ └──────────┼───────────────┘ │ │ USB Serial ▼ ┌──────────────────────────┐ │ Raspberry Pi Pico 2 W │ │ │ │ MicroPython │ │ │ │ │ RP2350 │ │ │ │ │ GPIO / ADC / PWM ... │ └──────────────────────────┘ 여기서 중요한 것은 Python 코드가 Mac에서 실행되는 것이 아니라 Pico 내부의 MicroPython에서 실행될 수 있다는 것 이다. Thonny는 그 코드를 작성하고 Pico에 전달하는 개발도구 역할을 한다. 24. Raspberry Pi 5와 비교 앞으로 Raspberry Pi 5와 Pico 2 W를 함께 사용한다면 다음 차이를 확실히 이해하는 것이 좋다. 항목 Raspberry Pi 5 Pico 2 W 종류 Single Board Computer Microcontroller Board 운영체제 Raspberry Pi OS / Linux MicroPython Firmware 프로세서 Application Processor RP2350 MCU 개발 접속 SSH USB Serial Python Python 3 MicroPython 터미널 Linux Shell MicroPython REPL 파일 시스템 Linux 파일 시스템 MicroPython Flash 파일 시스템 부팅 프로그램 Linux 서비스 등 boot.py , main.py 종료 sudo poweroff 별도 OS 종료 없음 주 용도 데이터 처리, 서버, AI 등 GPIO, 센서, 실시간 하드웨어 제어 25. 자주 발생하는 문제 Pico가 Thonny에서 인식되지 않는 경우 먼저 Terminal에서 확인한다. ls /dev/cu.usbmodem* 아무것도 나오지 않는다면 다음을 확인한다. USB 데이터 케이블인지 확인 ↓ 다른 USB 포트 사용 ↓ MicroPython Firmware 설치 확인 ↓ Pico 재연결 RP2350 드라이브가 보이지 않는 경우 BOOTSEL 버튼을 누른 상태에서 USB를 연결했는지 확인한다. USB 분리 ↓ BOOTSEL 누르기 ↓ USB 연결 ↓ BOOTSEL 놓기 Firmware 설치 후 RP2350 이 사라진 경우 정상이다. UF2 설치 후 Pico가 자동으로 재부팅하면서 USB Mass Storage 모드에서 MicroPython 실행 모드로 변경된다. 코드가 Pico가 아니라 Mac에서 실행되는 경우 Thonny의 Interpreter를 확인한다. 일반 Python 이 아니라 MicroPython (Raspberry Pi Pico 계열) 이 선택되어 있어야 한다. 프로그램을 멈출 수 없는 경우 Shell에서 Ctrl + C 를 사용한다. 그래도 문제가 있다면 Pico를 다시 연결하거나 Soft Reset을 시도할 수 있다. Ctrl + D 26. 처음 개발할 때의 기본 루틴 앞으로 Pico 2 W를 사용할 때 기본적인 개발 과정은 다음과 같다. 1. Pico 2 W USB 연결 ↓ 2. Thonny 실행 ↓ 3. MicroPython Interpreter 연결 확인 ↓ 4. Python 코드 작성 ↓ 5. 실행 ↓ 6. 결과 확인 ↓ 7. 수정 ↓ 8. 다시 실행 ↓ 9. 완성된 코드를 Pico에 저장 이를 반복하면서 GPIO, 센서, 통신 기능 등을 하나씩 추가하게 된다. 27. 꼭 기억해야 할 핵심 MicroPython Firmware 설치: BOOTSEL → USB 연결 → RP2350 → Pico 2 W용 UF2 복사 → 자동 재부팅 USB Serial 확인: ls /dev/cu.usbmodem* MicroPython 정보 확인: import sys print(sys.implementation) 보드 정보 확인: print(sys.implementation._machine) 프로그램 중단: Ctrl + C Soft Reset: Ctrl + D Pico 부팅 시 자동 실행할 프로그램: main.py 28. 정리 이번 단계에서 구축한 환경은 다음과 같다. Mac ↓ Thonny ↓ USB Serial ↓ MicroPython ↓ Raspberry Pi Pico 2 W ↓ RP2350 이제 Pico 2 W에서 MicroPython 코드를 직접 작성하고 실행할 수 있게 되었다. 하지만 아직 Pico의 가장 중요한 기능인 GPIO를 직접 제어하지는 않았다. 다음 단계에서는 Pico 2 W의 GPIO 구조를 간단히 알아보고, 가장 기본적인 하드웨어 제어 실습인 내장 LED Blink 부터 시작한다. 다음 글 → 04. Pico 2 W GPIO와 내장 LED 제어 참고 Raspberry Pi MicroPython 공식 문서 Micro
velog
props와 children — 쉽게 말하면 적는 자리가 다릅니다. 그리고 사실 children도 props의 하나입니다. 별종이 아닙니다. 이미 HTML에서 평생 써오신 구분입니다. <a href="/memo">메모 보기</a> href 가 props고, 메모 보기 가 children입니다. 태그 안쪽에 속성으로 적는 것 이 props, 여는 태그와 닫는 태그 사이에 끼워 넣는 것 이 children입니다. React가 새로 만든 개념이 아니라 HTML의 그 구조를 그대로 가져온 것입니다. <MemoCard title="첫 메모"> {/* title 은 props */} <small>3일 전</small> {/* 이게 children */} </MemoCard> 진짜로 같은 물건이라는 증거는, function MemoCard(props) 로 받으면 props.title 과 props.children 을 똑같은 방식으로 꺼내 쓴다는 점입니다. children 은 이름이 예약돼 있을 뿐입니다. 그럼 뭘 기준으로 나눠 쓰느냐 — 컴포넌트가 그 값을 가지고 무슨 일을 해야 하면 props, 그냥 그 자리에 놓기만 하면 children 입니다. title 은 카드가 "이걸 h3 로 그려라" 하고 쓰는 값이니 props입니다. <small>3일 전</small> 은 카드가 뭔지 알 필요도 없고 그 자리에 놓기만 하면 되니 children입니다. 액자로 생각하시면 편합니다. 테두리 색이나 크기는 액자 설정(props)이고, 액자에 넣는 사진은 내용(children)입니다. 액자는 사진이 뭔지 몰라도 됩니다. 그래서 레이아웃·모달·카드처럼 "감싸는 것"들이 children을 씁니다. 안에 글이 오든 표가 오든 상관없이 똑같이 동작하니까요. 상태 끌어올리기 — 쉽게 말하면 형제끼리는 값을 주고받을 수 없으니, 그 값을 둘의 공통 부모로 옮기는 것 입니다. props는 위에서 아래로만 흐릅니다. 옆으로 가는 길이 없습니다. 그래서 검색창과 목록이 같은 검색어를 봐야 하면 이렇게 됩니다. (안 되는 상태) SearchBar [state: keyword] MemoList [state: keyword] 서로 모른다. 값이 두 개다. (끌어올린 뒤) MemoPage [state: keyword] ← 진짜 값은 여기 하나 ├ SearchBar keyword + onChange ← 바꾸는 쪽 └ MemoList keyword ← 읽는 쪽 값이 아래(자식)에 있던 걸 위(부모)로 올리기 때문에 "끌어올리기"입니다. 핵심은 "불편해서 옮긴다"가 아니라 "값이 두 개면 어긋난다"입니다. 검색창이 자기 keyword 를 들고 목록이 또 자기 keyword 를 들고 있으면, 그건 같은 검색어가 아니라 서로 다른 값 두 개 입니다. 한쪽만 바뀌는 순간 화면이 거짓말을 합니다. 백엔드 하시던 감각으로는 정규화와 똑같습니다. 같은 데이터를 두 테이블에 중복 저장하면 언젠가 어긋나니, 한 곳에만 두고 나머지는 참조하게 만들잖아요. 그 "한 곳"이 공통 부모고, 참조가 props입니다. 진실은 한 군데만 있어야 한다는 것, 그게 전부입니다. 올리는 높이는 그 값을 쓰는 컴포넌트들의 가장 가까운 공통 부모까지만 입니다. 더 위로 올리면 상관없는 컴포넌트까지 같이 다시 그려지고, 덜 올리면 형제가 못 씁니다. 올릴 곳이 너무 멀어서 props를 네다섯 단계씩 내리꽂아야 하면 그때가 Context를 쓸 때입니다.
Балл: 54.4Уверенность: 49%
Подробнееvelog
Raspberry Pi Pico 2 W 는 Raspberry Pi 4나 Raspberry Pi 5와 사용 방법이 다르다. Raspberry Pi 5는 Linux 운영체제를 실행하는 Single Board Computer(SBC) 이지만, Pico 2 W는 RP2350 마이크로컨트롤러 기반의 개발 보드 이다. 따라서 Pico 2 W에서는 다음과 같은 Linux 명령을 사용하지 않는다. ssh ls cd sudo apt update sudo reboot sudo poweroff hostname -I 즉, Raspberry Pi 5 → Linux 컴퓨터 → SSH 접속 가능 Raspberry Pi Pico 2 W → 마이크로컨트롤러 → USB Serial 등을 통해 프로그램 작성 및 실행 으로 구분하면 된다. Raspberry Pi Pico 2 W는 RP2350을 사용하며 Wi-Fi와 Bluetooth 기능이 포함된 Pico 2 계열 보드이다. 1. Mac에 Pico 2 W 연결하기 Pico 2 W 상단의 Micro USB 포트 와 Mac을 USB 케이블로 연결한다. Mac │ │ USB ▼ Pico 2 W 여기서 중요한 것은 충전 전용 케이블이 아니라 데이터 통신이 가능한 USB 케이블 을 사용하는 것이다. 전원만 공급되는 케이블을 사용하면 Pico의 LED나 전원은 들어오더라도 Mac에서 장치를 인식하지 못할 수 있다. 2. BOOTSEL 모드로 Pico 2 W 연결 확인 Pico 2 W가 제대로 연결되는지 가장 확실하게 확인하는 방법 중 하나가 BOOTSEL 모드 이다. 먼저 Pico 2 W의 USB 케이블을 분리한다. 그다음 보드의 BOOTSEL 버튼을 누른 상태에서 USB 케이블을 Mac에 연결한다. 연결된 후 BOOTSEL 버튼에서 손을 뗀다. 1. Pico USB 분리 ↓ 2. BOOTSEL 버튼 누르기 ↓ 3. 버튼을 누른 상태로 USB 연결 ↓ 4. BOOTSEL 버튼 놓기 정상적으로 인식되었다면 macOS Finder에 USB 저장장치처럼 나타난다. Pico 2 계열은 BOOTSEL 모드에서 일반적으로 RP2350 이라는 이름의 Mass Storage Device로 나타난다. 기존 RP2040 기반 Pico 계열은 RPI-RP2 로 나타날 수 있다. 따라서 Pico 2 W를 처음 연결했을 때 RP2350 드라이브가 나타난다면 USB 연결과 BOOTSEL 기능이 정상적으로 작동하고 있다고 볼 수 있다. 3. Mac 터미널에서 Pico 2 W USB 연결 확인 Finder뿐 아니라 Terminal에서도 확인할 수 있다. 먼저 Mac Terminal을 실행한다. USB 장치 정보를 확인하려면 다음 명령어를 사용할 수 있다. system_profiler SPUSBDataType 연결된 USB 장치 목록이 출력된다. 출력이 너무 길다면 다음과 같이 검색할 수도 있다. system_profiler SPUSBDataType | grep -i pico 또는 system_profiler SPUSBDataType | grep -i rp2350 4. MicroPython 설치하기 Pico 2 W에서 Python을 사용하려면 일반 Python이 아니라 MicroPython 을 사용한다. MicroPython은 마이크로컨트롤러에서 동작하도록 만들어진 Python 구현체이다. 설치 과정은 다음과 같다. Pico 2 W BOOTSEL 모드 진입 ↓ Mac에 RP2350 드라이브 표시 ↓ Pico 2 W용 MicroPython UF2 다운로드 ↓ UF2 파일을 RP2350 드라이브로 복사 ↓ Pico 자동 재부팅 ↓ MicroPython 실행 반드시 Pico 2 W용 MicroPython UF2 를 사용해야 한다. Raspberry Pi 공식 문서에서도 Pico 2 W용 MicroPython UF2를 별도로 제공한다. UF2 파일을 복사하면 Pico가 자동으로 재부팅하면서 Finder에서 RP2350 드라이브가 사라질 수 있다. 이것은 정상적인 동작이다. 5. BOOTSEL 모드와 일반 실행 모드의 차이 여기서 처음 사용할 때 많이 헷갈리는 부분이 있다. BOOTSEL 모드 BOOTSEL 누른 상태에서 USB 연결 Mac에서 RP2350 드라이브로 나타난다. 이 모드는 주로 MicroPython 설치 UF2 프로그램 설치 펌웨어 교체 등에 사용한다. 일반 실행 모드 BOOTSEL 버튼을 누르지 않고 그냥 USB를 연결한다. USB 연결 ↓ Pico에 설치된 프로그램 실행 ↓ MicroPython 등의 USB Serial 연결 가능 MicroPython이 정상적으로 설치되어 있다면 이때는 RP2350 저장장치가 Finder에 나타나지 않아도 정상이다. 6. Mac에서 Pico 2 W Serial 포트 확인 MicroPython이 설치되어 있다면 Pico 2 W는 USB Serial 장치로 사용할 수 있다. Mac Terminal에서 다음 명령어를 실행한다. ls /dev/cu.usbmodem* 정상적으로 인식되었다면 다음과 비슷한 장치가 나타날 수 있다. /dev/cu.usbmodem1101 또는 /dev/cu.usbmodem101 뒤의 숫자는 Mac이나 연결 상황에 따라 달라질 수 있다. Raspberry Pi의 공식 문서에서도 macOS의 USB Serial 장치가 /dev/cu.usbmodemXXXX 형태로 나타날 수 있다고 설명한다. 7. 연결 전후 비교해서 Pico 찾기 USB 장치가 여러 개 연결되어 있다면 Pico가 어떤 장치인지 헷갈릴 수 있다. Pico를 연결하기 전에 ls /dev/cu.* 를 실행한다. 예: /dev/cu.Bluetooth-Incoming-Port 그다음 Pico를 연결하고 다시 ls /dev/cu.* 를 실행한다. 예: /dev/cu.Bluetooth-Incoming-Port /dev/cu.usbmodem1101 새롭게 추가된 /dev/cu.usbmodem1101 이 Pico일 가능성이 높다. 8. Terminal에서 MicroPython REPL 접속하기 MicroPython이 설치되어 있고 USB Serial 포트를 확인했다면 Mac Terminal에서도 Pico에 직접 접속할 수 있다. 예를 들어 포트가 /dev/cu.usbmodem1101 이라면 screen /dev/cu.usbmodem1101 115200 을 실행한다. 연결 후 아무것도 나타나지 않는다면 Enter 를 누르거나 Ctrl + C 를 눌러본다. 정상적으로 MicroPython이 실행되고 있다면 다음과 같은 REPL 프롬프트가 나타난다. >>> 이제 Mac Terminal에서 직접 MicroPython 명령을 입력할 수 있다. 예: print("Hello Pico 2 W!") 결과: Hello Pico 2 W! 9. Pico 2 W 보드 정보 확인 MicroPython REPL에서 현재 보드와 펌웨어 정보를 확인하려면 다음을 입력한다. import sys print(sys.implementation) 또는 좀 더 간단하게 import sys print(sys.implementation._machine) 을 사용할 수 있다. 설치된 MicroPython 펌웨어가 Pico 2 W용이라면 출력에서 Pico 2 W 및 RP2350과 관련된 보드 정보를 확인할 수 있다. MicroPython 버전에 따라 출력 문자열의 세부 형식은 달라질 수 있다. Raspberry Pi 공식 문서에서도 sys.implementation 을 이용해 어떤 보드용 MicroPython 펌웨어인지 확인하는 방법을 안내하고 있다. 10. RP2350인지 확인하기 MicroPython에서 다음과 같이 확인한다. import sys print(sys.implementation._machine) Pico 2 계열은 RP2350 마이크로컨트롤러를 사용한다. 따라서 출력 정보에서 RP2350 관련 정보를 확인할 수 있다. Pico 2 / Pico 2 W ↓ RP2350 반면 1세대 Pico와 Pico W는 RP2040 기반이다. Pico / Pico W ↓ RP2040 Pico 2 / Pico 2 W ↓ RP2350 11. Pico 2 W의 Wi-Fi 기능 확인 Pico 2 W의 가장 중요한 특징 중 하나가 Wi-Fi 기능이다. MicroPython REPL에서 다음 명령을 실행할 수 있다. import network 그리고 print(hasattr(network, "WLAN")) 실행 결과가 True 라면 현재 설치된 MicroPython 펌웨어에 WLAN 기능이 포함되어 있다는 뜻이다. Raspberry Pi 공식 MicroPython 문서에서도 network.WLAN 존재 여부를 통해 무선 기능이 포함된 펌웨어인지 확인하는 방법을 안내한다. 다만 이것은 현재 설치된 MicroPython 펌웨어가 WLAN 기능을 지원하는지 확인하는 방법 이다. 실제 보드 모델 확인은 보드 인쇄와 sys.implementation._machine 정보도 함께 보는 것이 좋다. 12. 실제 Wi-Fi 인터페이스 생성해보기 다음 명령으로 WLAN 인터페이스를 생성할 수도 있다. import network wlan = network.WLAN(network.STA_IF) print(wlan) Wi-Fi를 활성화하려면 wlan.active(True) 현재 활성화 상태 확인: print(wlan.active()) 결과: True 이 단계까지 정상적으로 동작하면 이후 Pico 2 W를 Wi-Fi 네트워크에 연결하는 프로젝트로 넘어갈 수 있다. 13. Pico 2 W 프로그램 중단하기 MicroPython에서 프로그램이 계속 실행되고 있다면 Ctrl + C 를 누른다. 예를 들어 while True: print("running") 같은 코드가 계속 실행되고 있다면 Ctrl + C 로 중단할 수 있다. 중단되면 다시 >>> REPL 프롬프트로 돌아온다. 14. Pico 2 W의 Soft Reset MicroPython REPL에서는 Ctrl + D 를 누르면 Soft Reset을 실행할 수 있다. 즉, Ctrl + C → 현재 프로그램 중단 Ctrl + D → MicroPython Soft Reset 으로 기억하면 편하다. 일반 Raspberry Pi의 sudo reboot 와는 개념이 다르다. 15. screen 연결 종료하기 Mac Terminal에서 screen /dev/cu.usbmodem1101 115200 으로 Pico에 접속한 경우 일반적인 exit 명령으로 종료하는 것이 아니다. screen 세션을 종료하려면 Ctrl + A 를 누른 다음 K 를 누른다. 그러면 다음과 비슷한 확인 메시지가 나타날 수 있다. Really kill this window [y/n] 여기서 y 를 입력한다. 정리하면 Ctrl + A → K → y 이다. 그러면 다시 Mac의 일반 Terminal로 돌아온다. 16. Pico 2 W는 sudo poweroff 가 필요할까? 필요하지 않다. Pico 2 W는 Raspberry Pi 5처럼 Linux 운영체제를 실행하는 컴퓨터가 아니다. 따라서 다음과 같은 명령은 사용하지 않는다. sudo poweroff sudo shutdown -h now sudo reboot Pico 2 W에는 Linux의 시스템 종료 과정 자체가 없다. 일반적인 MicroPython 개발 중이라면 프로그램 실행이나 파일 저장 작업이 끝난 것을 확인한 후 USB 전원을 분리하면 된다. 예를 들어 Ctrl + C ↓ 실행 중인 프로그램 정지 ↓ 파일 저장/전송 완료 확인 ↓ Serial 프로그램 종료 ↓ USB 케이블 분리 와 같이 사용하면 된다. 특히 UF2 파일이나 MicroPython 파일을 쓰고 있는 도중에는 USB 케이블을 분리하지 않는 것이 좋다. 17. Raspberry Pi와 Pico 2 W 종료 방법 비교 구분 Raspberry Pi 5 Pico 2 W 종류 Single Board Computer Microcontroller Board CPU/MCU Application Processor RP2350 MCU 운영체제 Raspberry Pi OS/Linux MicroPython/Firmware SSH 가능 일반적으로 사용하지 않음 터미널 접속 SSH USB Serial/REPL ls , cd Linux 명령으로 사용 Linux 명령으로 사용하지 않음 sudo 사용 사용하지 않음 재부팅 sudo reboot Reset/Soft Reset 종료 sudo poweroff 별도 OS 종료 과정 없음 전원 제거 OS 종료 후 프로그램/쓰기 작업 종료 후 Wi-Fi 지원 Pico 2 W 지원 Bluetooth 지원 모델에 따라 Pico 2 W 지원 18. Raspberry Pi 5와 Pico 2 W를 같이 사용할 경우 두 장치를 같이 사용하면 역할을 구분하는 것이 중요하다. Mac │ │ SSH ▼ Raspberry Pi 5 │ │ USB / UART / Wi-Fi ▼ Pico 2 W │ ▼ 센서 / LED / 모터 / ADC / GPIO 예를 들어 Raspberry Pi 5는 데이터 처리 Python AI 데이터 저장 네트워크 웹 서버 Git 등을 담당하고, Pico 2 W는 센서 측정 GPIO ADC PWM 실시간 제어 모터 제어 LED 제어 등을 담당하도록 구성할 수 있다. 즉, Raspberry Pi 5 = 상위 제어 및 데이터 처리 Pico 2 W = 하드웨어 제어 및 데이터 수집 형태로 사용할 수 있다. 19. Pico 2 W 연결 확인 최소 루틴 Pico 2 W를 처음 받았다면 다음 순서대로 확인하면 된다. Step 1. BOOTSEL 확인 BOOTSEL 누르기 ↓ USB 연결 ↓ RP2350 드라이브 확인 정상이라면 USB 연결과 MCU의 BOOTSEL 기능이 정상이다. Step 2. MicroPython 설치 Pico 2 W 전용 .uf2 파일을 RP2350 드라이브에 복사한다. Step 3. USB Serial 확인 Mac Terminal: ls /dev/cu.usbmodem* 예: /dev/cu.usbmodem1101 Step 4. REPL 연결 screen /dev/cu.usbmodem1101 115200 Step 5. MicroPython 확인 print("Hello Pico 2 W!") Step 6. 보드 정보 확인 import sys print(sys.implementation._machine) Step 7. Wi-Fi 기능 확인 import network print(hasattr(network, "WLAN")) 결과: True Step 8. 연결 종료 실행 중인 프로그램이 있다면 Ctrl + C screen 을 종료하려면 Ctrl + A → K → y 그다음 필요한 경우 USB 케이블을 분리한다. 20. 꼭 기억해야 할 핵심 명령 Mac에서 USB Serial 확인 ls /dev/cu.usbmodem* MicroPython REPL 접속 screen /dev/cu.usbmodem1101 115200 Pico 2 W 정보 확인 import sys print(sys.implementation._machine) WLAN 지원 확인 import network print(hasattr(network, "WLAN")) 실행 중인 MicroPython 프로그램 중단 Ctrl + C MicroPython Soft Reset Ctrl + D Mac screen 종료 Ctrl + A → K → y 21. Raspberry Pi와 Pico 2 W의 가장 큰 차이 마지막으로 가장 중요하게 기억할 내용은 다음과 같다. Raspberry Pi 5 = 컴퓨터 = Linux = SSH = sudo poweroff 반면 Raspberry Pi Pico 2 W = 마이크로컨트롤러 = Firmware / MicroPython = USB Serial = 별도의 Linux 종료 명령 없음 따라서 Raspberry Pi를 사용하다 Pico 2 W를 처음 사용하면 SSH로 어떻게 접속하지? 라고 생각하기 쉽지만, Pico 2 W는 기본적으로 SSH로 접속하는 장치가 아니다. 개발할 때는 Mac ↓ USB ↓ Pico 2 W ↓ MicroPython REPL ↓ GPIO / Sensor / Wi-Fi 라는 구조로 이해하는 것이 가장 쉽다.
velog
서버리스 개발자가 서버 인프라를 직접 관리하거나 설정할 필요가 없는 클라우드 컴퓨팅 모델 개발자는 코드 작성과 비즈니스 로직에만 집중할 수 있음 서버가 없다는 뜻이 아니다! AWS Fargate AWS의 서버리스 컴퓨팅 서비스 EC2처럼 인스턴스를 직접 프로비저닝/관리할 필요 없이 컨테이너를 바로 실행할 수 있게 해줌 Docker가 내장되어 있음 SSH( .pem )같은 방식으로 서버 내부에 접속할 수 없음 서버가 존재는 하지만, 관리할 수 없음 반드시 Fargate가 더 좋은 것은 아님! 간편하게 백엔드 앱을 띄운다면: Fargate 게임 데디케이트 서버 등: EC2 다른 AWS 서버리스 서비스 AWS S3 AWS Lambda AWS DynamoDB Amazon Aurora Serverless AWS EventBridge ...
Балл: 54.4Уверенность: 49%
ПодробнееБалл: 56.99Уверенность: 54%
Балл: 56.96Уверенность: 54%
Балл: 54.4Уверенность: 49%
Балл: 54.4Уверенность: 49%