people doing office works

什么是 Hackathon 以及在 Hackathon 当中取得更好的名次的小技巧

这个分享是我在 2024 年 5 月份的飞书 AI 训练营的分享,我觉得这个 PPT 的内容可以完美的诠释我对于 Hackathon 的态度,所以除了视频,我将文字稿也完整的撰写出来,希望让这篇文章对 Hackathon 感兴趣的你,能够有些帮助。

视频版可以在 BilibiliYoutube 找到。


什么是 Hackathon?

5e70b9cc82dbaf59c5fbfb19c1c488ce

Hackathon 是一个起源于美国硅谷地区的创新技术活动,来自不同背景、技术各异的天才开发者们会现场组队,在 24 小时内进行代码开发、创造新的产品,以解决某一个具体的行业难题或痛点。

当然,得益于技术基建的发展,Hackathon 不再是工程师、开发者们的专属,借助于各种 Low Code、Zero Code 工具,非技术人员也可以打造出一个产品,来解决一个具体的问题。

Hackathon 的三大特点

7463ba38c49de8883d69ee00a93adb06

Hackathon 有三个非常显著的特点,也是我个人非常喜欢 Hackathon 的原因:

  1. 短时高强度:Hackathon 往往是有时间限制的,一般是 24 ~ 72 小时之间。这个是我认为 Hackathon 最重要的特性。
  2. 开放:Hackathon 会更加的开放,无论你是什么背景,都可以在这里找到合适的队伍参与到其中。即使你的 Day Job 是一个设计师,但在 Hackathon 里,你一样可以是一个产品经理。
  3. 从零到一:Hackathon 一个很大的好处是给了大家一个从 0 到 1 的机会,你可以从 0 到 1 的打造一款产品,这对于在公司里往往只能做 1~100 中的某一小部分增量价值的打工人来说,颇为难得,可以帮助你获得在企业中无法获得的经验和视角。

我进一步解释一下我为什么认为短时高强度是 Hackathon 的精髓。

如果你做过力量训练,就知道有效的力量训练是让你在短时间内做最大力量的练习,以让你的肌肉发力,直至断裂的效果,并通过休息来让肌肉组织重新生长和链接。而Hackathon就有类似的效果,让你在一个很短的时间内去做一个看似不可能的事情,通过在这个极短时间内做事,来实现锻炼的效果。当你完成 Hackathon 之后,就可以复盘自己在 Hackathon 中的所作所为,并一次优化自己的下一步动作。

而且,因为Hackathon 本身的开放性,你可以在不同的 Hackathon 当中去锻炼不同的能力,第一场可以锻炼开发能力、第二场锻炼产品能力、第三场锻炼运营能力,以此类推,逐步把自己的各项能力的短板完成补上。

短时高强度另外的一个好处,便是沉默成本可控。我每次参加 Hackathon 的时候,都抱着:大不了这两天就浪费了的心态参加 Hackathon,因为就算我这次 Hackathon 一无所获,我也不过是浪费了 24 小时,周末在家躺平刷抖音也是浪费 24 小时,又会亏到哪里呢?而实际上,当我抱着这样的心态去参加 Hackathon,再配合自己多次参加 Hackathon 的经验进行一些基础的设计,我大部分时候都是有所收获的,甚至是大有所收获。

为什么“你”应该参加 Hackathon

上面说了 Hackathon 的特点,接下来说说“你”为什么应该参加 Hackathon

为了学习新的技能

  • Hackathon 是一个很好的学习新技能的机会:因为没有人会预期你会做的特别牛逼,反而能够让你放下自己内心的戒备,以空杯心态,认真学习新的技能。同时, Hackathon 因为是从 0 到 1,你可以试一试一些新的产品、技术方案。
  • Hackathon 是一个很好锻炼自己的创新思维的机会:Hackathon 不是日常工作,会让我们跳出当下的工作,抬头看路,看看还有什么新的可能性。而且,当你做一件事的事情被限制在一个特定的时间内,为了达成目标,你可能会爆发出你自己难以想象的潜力。
  • Hackathon 是一个很好的探索自己边界的机会:Hackathon 当中的组队只有分工,没有职位,你完全可以在 Hackathon 当中,试着去换不同的岗位来做事。比如你的日常工作是工程师,那不妨在 Hackathon 当中试着去做一个产品经理,换个视角来做事。
  • Hackathon 是有奖项的,如果可能的话,赢得一个奖项,也是不错的收获。随着 Hackathon 在国内的大行其道,不少的投资团队也会参与到 Hackathon 当中,你的项目甚至有可能会被投资人看中,给你一笔钱,让你全职做这个项目。
  • Hackathon 可以帮助你建立新的友谊关系:在平日里,我们扩展朋友的机会可能不多,Hackathon 是一个很好的机会,你可以认识新的人,了解不同人的思维风格和习惯,并通过 Hackathon 共同协作,达成战斗友谊。比如我自己之前和一个伙伴合作,参加了一次 Hackathon(当然,也拿了奖),在Hackathon 结束之后,我们又合作了一次,搞出了一个新的项目,数据还非常不错。如果没有 Hackathon,我们可能从一开始就不会认识,更别提合作项目了。

如何选择 Hackathon 主题

当你确定要参加一场 Hackathon 之后,马上就会面临组队和选题的问题了。组队不多说,每个人都有自己的风格,你可以选择强强联合,也可以选择百花齐放,自己喜欢就行,也往往不会成为大家困扰的内容。

而选主题往往会成为大家最困扰的问题,毕竟日常的工作当中,我们往往是在做命题作文,很少让你去自主命题。但 Hackathon 往往是不预设主题的,你需要自己去研究、发现,找到合适的主题。

从我自己的经验而言:

  • 如果你没有主题和想法,那么首先可以选择在日常工作中困扰你的主题,这类主题很适合在 Hackathon 当中解决掉。如果你搞定了但没拿奖,至少可以提升自己的工作效率;如果你搞定了且拿到奖,那就是双喜临门!
  • 其次,是选择那些你自己特有的、细分的、具有行业 Know How 的问题,这比你去解决一些更通用的问题产生的价值会更大,且你能够做的更好。如果一个医学背景和一个计算机背景的人同样去做一个医学领域的问答工具,那么医学背景的人肯定会比计算机同学做出来的东西更有价值,因为他更懂行业中到底有什么问题。
4ede7b9387234f30a091401d39586a5d

当然,找到这些问题可能不代表你马上会选择,很多时候,我们会担心自己选择的问题很小,不值得我们去解决。这里我的观点是:问题大小并不是关键,关键在于这个问题是否有价值,以及你是否能够在 Hackathon 的时间范围内解决它。毕竟没有人预期你会在一个 Hackathon 当中解决光刻机的问题。

当你真的打算去解决这个问题的时候,如果无法判断自己的问题是否有价值,一个最简单的方法是,先想清楚自己要解决谁的问题,然后找到符合这个画像的人,去问问他,给他提供这样的解决方案,是否可以满足他的问题。

77d11b8c3e5a43447b006c763082e175

Hackathon 中的项目管理

对于没有项目管理经验的人来说,Hackathon 是一个完美锻炼自己项目管理能力的试炼场。因为这是一个资源有限(3~5个人,24~72小时,满打满算 15 人天),同时 DDL 明确、目标明确的项目。

你需要在项目的开始时,找到项目最重要的P0、P1、P2,并安排好人、事物,让大家知道自己在什么时候应该做什么事情。此外,你还需要为项目规划合理的 Milestone,以便于检查项目的执行情况,降低风险,并尽早的发现风险点位,解决风险。

当你能够做好一个 Hackathon 项目的项目管理,那么对于一些小团队内部协作的项目管理,你便有了基础的经验,下次自己去做项目的时候,也就不会那么的焦虑。

5cf6bc1ed7aeb1dab4e4d37d6d0e3c4b

Hackathon 中的项目路演

在 Hackathon 的最后,一般是项目的路演。对于路演,我只有一句忠告:“项目路演很重要,要当成一件事来规划”。

我们在 Hackathon 的前半程都是在设计和实现产品,是一个”做产品“的过程,而路演,则是”卖产品“的过程,你要让评委 Buy in,让你的目标受众 Buy in。在 Hackathon 当中,你即要能做产品,也要能卖产品。毕竟,现在是一个酒香也怕巷子深的时代

把路演当成一件事,提前规划和留出时间做你的演示文稿,可以有效降低你在路演过程中的风险,同时如果可以的话,至少演练 1~2次你的演示文稿,以确保每个视频\动图\文字都是正确且易于理解的。

在你的路演过程中,如果有一些演示,可以用录制好的动图、视频,这样可以从整个过程中“偷时间”,将真实的产品演示放在最后,这样如果你的路演还不错,评委会给你时间让你演示完,以查看实际的效果,你就有了更多的时间去表达自己的主张。

以及,提前想想,假设你是评委,你会怎么挑战自己的项目?这样提前做好准备,就能更好的去应对评委的提问。

总结

以上的这些,是我自己参加 Hackathon的一些经验分享。希望能帮到你,同时,也希望你能享受 Hackathon,感受 Hackathon 的魅力,把 Hackathon 当成一种生活方式来体验。

empty hospital bed inside room

住院须知

最近因为锁骨上的取出,住了一次院。虽然我自己在同一家医院住过,但依然还是犯了不少的错。因此把我自己认为的一些需要注意的住院须知记录下来,希望帮助到从未住院过的你。当然,如果可以,别住院。

为什么要住院?

实际上住院有很多种不同的情况,一般来说,两种:

  1. 突发意外:这种情况下你往往是通过 120 / 突发事件住院的,你的病情可能不足以支撑你再回家好好准备一下具体的东西,那么就直接看下面的 Checklist,美团外卖采购吧。
  2. 计划住院:不管是从门诊转住院还是复查转住院,意味着你都是有计划有节奏的住院,那就做好准备,带好必要的东西,再来住院吧!

两种不同的情况意味着你可能遭遇的问题和需要准备的物资不同,但有两个东西大概率是相同的:

  1. 身份证 / 社保卡:医院需要建档,所以这些东西必不可少。
  2. 钱 / 现金:医院里可能会有各种开支项目(和医保无关的),所以需要准备点钱,最好手头还有个 100~200 现金。

住院会用到哪些东西?

从我自己的经验来看,我认为住院你需要带的东西如下:

  1. 一套衣服:(入院的时候穿半天,出院的时候穿半天),当然,也可以带两套,反正不会特别占地方。办理完住院手续后,一般情况下你会有病号服,护士也会要求你穿病号服,所以你自己带的衣服大概率是穿不到的。所以,衣服不用带太多。
  2. 拖鞋:住院期间,你是会起床走动的(腿部有病的另说),你需要一个拖鞋,这样你在住院期间就无需总是频繁的穿鞋拖鞋,直接套在脚上就能走。
  3. 不锈钢饭盒:住院期间,你可能会选择吃医院的病号饭,那么你就需要一个不锈钢饭盒,以便于去打饭(因为并不是每个医院都提供一次性餐具的)。当然,现在其实外卖也非常方便,你完全可以餐餐点外卖,只是这个有个前提(你得有人能出住院区去取外卖,一般是陪护人员)。
  4. 卫生纸 & 普通手口湿巾(无酒精):卫生纸是上厕所、擦桌子可能用到,湿巾则是你擦自己的身子用的,毕竟在医院里,如果你住院了,身上有伤口,大概率是没办法洗澡的,这意味着你需要时不时用湿巾擦擦身子,以保持身体的清爽。
  5. 酒精湿巾:酒精湿巾主要的目的是消毒,比如你在吃饭前,拿酒精湿巾擦一遍你的不锈钢饭盒,可能会对于你自己的饮食安全提供一层保障。
  6. 充电器:你去医院不玩手机么?如果玩,就带上。记得把你的手机、手表、耳机之类的充电器都带上,别遗漏。
  7. 降温/保温产品:医院的空调往往都是照着大众的体感来调整的,同一间病房可能会面对有的人热有的人冷的问题。如果你怕热/怕冷,别忘了带一些降温/保温的产品,以便于无法微调时,满足自己的需要。

除了上述用品之外,根据你的病症可能还会有不同的选择,比如如果你无法下床,那么可能意味着你需要买尿壶,以及成人尿垫,以便于自己在无法起身的情况下完成排泄。但这些当你真正需要住院的时候,问一嘴医生,大概率也会告诉你。

除了上述的这些住院期间能用到的物品,还推荐你带一个文件袋,这样当你入院的时候,可以把押金条之类的东西放在这个文件袋里,方便出院的时候找。同时当你出院的时候,可以把收据、详单之类的放在这个文件袋里,后续用的时候好找。

当然,你也可以选择全程用钱开道,外卖平台上买就完了。

silver mercedes benz emblem on blue surface

解决因为 SSL 导致的 WordPress 后台无限 Redirect 的问题

在使用 CapRover 并配置域名为 HTTPs 域名时,在你访问管理后台时,可能会导致触发Chrome 自己的无限 Redirect 的问题。

之所以出现这个问题,是因为 CapRover 的架构导致的:CapRover 在最外层是一个 Nginx,SSL 证书也是在这一层完成的。而 CapRover 的默认配置,在将请求向后转发时,透传的域名会是不含 HTTPs 的协议标识的,导致 WordPress 认为发来的请求是非加密的。

d2b5ca33bd970f64a6301fa75ae2eb22 18

而 WordPress 识别到你的请求未加密,就会返回 302 让你进入 HTTPS的链接。但新的请求并不会带上 HTTPs 的标识,导致进入无限循环。

解决这个问题的一个简单处理的方式是 — 在你的 wp-config.php 中加入如下代码,来告诉 WordPress,这个请求已经是 HTTPs 保护的了,你直接处理就好。

/* for ssl in docker */

define('FORCE_SSL_LOGIN',true);

define('FORCE_SSL_ADMIN',true);

$_SERVER['HTTPS'] = 'on';
Code language: PHP (php)

a close up of a computer screen with a purple background

给孩子用的 AI 工具

今天参加一个线下活动,和朋友聊起来对于 AI 的恐惧和焦虑,问我该不该引导孩子去接触这一轮的 AGI 工具、接触这些 AI 工具。

我给了一些建议:首先,我认为我们应该给孩子接触 AI 工具。AI 的大趋势是不可逆的,基于这个前提,我们不应该抗拒孩子去接触 AI,甚至应该尽早的让孩子去建立 AI 的认知,知道什么是 AI 能做的,什么是 AI 不能做的,已经应该明确 AI 和 人类的价值边界。

用法

在聊天过程中,我们聊到了如何用 AI,我自己的观点是:

我们需要让孩子知道如何提问,以及区分出它是工具还是目的。工具掌握用法,并要明确我们的目的是什么。

剩下的,让他自己去玩就好啦。

工具

基于上述的认知,我认为现在可以推荐的工具如下:

ChatGPT

如果可以,当然是给孩子用最好的。但这个有门槛,以及作为家长,你可能要考虑 ChatGPT 本身是有风险的,可能会输出一些你不希望的内容(比如色情、暴力之类的)。

推荐程度: 5 🌟。

Perplexity

AI 搜索,体验很不错。如果孩子有搜索和探索的欲望,那么这个可能会比 Google 会是一个更好的体验。

推荐程度:5🌟

MetaSO

秘塔搜索的研究模式,比较适合孩子做一些方向的研究。可以让孩子在日常学习和生活过程中,有问题,提问。

推荐程度:5🌟。

Other things

在和这个家长聊的时候,发现现在缺乏一个 For 家庭教育场景下的GPT产品。这个产品的客户是家长,用户则是孩子。

和标准的大模型 、 产品之类的区别,是提供一些家长控制能力,这样会让家长们减少焦虑。

但我内心的另外一个声音告诉我:真的做出来,可能孩子也不会用,更好的办法是在现有的产品上加入家长控制模式。

white One Touch at 6.7 remote

鱼跃 Anytime CT 15 血糖监测仪体验 & 个人心得分享

本文内容仅作为个人体验分享,不作为任何医疗建议提供。如已有相关疾病,建议尽快就医咨询医生。

CGM(Continuous glucose monitor)是指持续血糖检测仪,在下文中,指我自己购买的鱼跃 AnyTime CT15 血糖监测仪。

个人使用体验

在详细介绍我和 CGM 的故事之前,我想和你聊聊个人的使用体验。

这 14 天的持续监测,对我来说是很不一样的,我经历过一开始的恐慌期(一开始因为适应的原因,导致我把自己吓了一跳)到小心翼翼期(担心胖胖的自己把设备给压坏了、担心洗澡会让设备失灵)再到无所谓期(把 CGM 当成日常来使用,不再担心会影响到 CGM 设备)心态变化还是挺大的。

在使用整个 CGM 的过程中,我自己的认知也得到了更新,比如:过去我一直以为我的血糖是稳定在一个点位上(毕竟空腹血糖也只取一个点),但实际上,血糖是在不断波动的,只不过是在安全的范围内不断波动。经过佩戴 CGM 的这 14 天,我也变得能够更加坦然地和自己的血糖和谐相处的过程(当然,我的血糖其实没啥问题hhh,倒也没有到病的阶段)。

作为一个个体,在经历过 CGM 的体验后,我认为:

  • 如果持续使用 CGM,那么他只适用于糖尿病患者:这句看似是废话,但我想表达的是,绝大多数人的血糖波动范围,完全没必要关注血糖波动。现有的 CGM 的设计基本上也是服务于糖尿病患者的保命需求的。普通人用起来可能没啥太大的感觉。糖尿病患者使用 CGM 主要也是因为扎手指太疼、有感染风险、没办法比较高频采集数据,不然其实指尖采血也挺好的。从痛感的视角来看,CGM 的痛感更轻,且只需要痛一次,更适合持续使用。
  • 如果是体验 CGM 的话,那么我推荐你可以买一个试试:血糖的监控就如同血压、体温、心率等一系列监控,可以给你提供一个不同的指标。特别是肥胖率日渐增长的中国,监控一下自己的日常饮食会给自己的身体带来的变化,对于你更好的理解自己的饮食有很大的帮助。¥299 的价格,属于可以考虑尝试一次的范围。

对于我自己而言,我这一次使用了 CGM,短时间我可能不会继续购买 CGM 设备了(如我上面所述),但如果我再需要监测我自己的血糖的时候,我想来也不会对于 CGM 有太多的恐惧,可以坦然面对使用 CGM。


过程全记录

缘起

作为一个曾经撰写《自我量化指南》的人,对于自身数据、各项指标的探索从未止步。我长期佩戴 Apple Watch,便是为了追求自身的各项指标的收集。最近在听无人知晓的 EP34 ,孟岩对话顾中一这一期时,孟岩提到了,他自己在佩戴持续血糖检测仪(CGM),让我产生了好奇心和兴趣:我是不是也可以使用这样的工具来检测自己的血糖?

d2b5ca33bd970f64a6301fa75ae2eb22 1

我并不是全无接触过血糖检测设备,实际上我过去曾购买过鱼跃的血糖检测仪,但我之前购买的是采用指尖采血的血糖仪,需要你有毅力给自己的指尖破一个小洞,采血并进行检验。从自我量化的视角来看,倒也并非不可接受 —— 我并不需要那么多的血糖数据埋点,对么?但毕竟要出血,且要带酒精棉片、采血针等一系列设备,属实麻烦。所以这个血糖仪如今也在我的医疗箱里吃灰。

CGM 作为一个可以持续佩戴的产品,让我想要试试,刚好这次听播客被勾起了兴趣。那就试试吧!

购买

既然已经决定了要购买,那说买就买。在经过一番搜索和研究之后,我最终选择了鱼跃(Yuwell)家的动态血糖仪 CT15 。虽然在这个领域,更加专业的可能是雅培,国内的也有三诺、微泰等企业,但对于我来说,最重要的是 鱼跃的 App 可以和 Apple Health 打通,将数据透传给 Apple Health。这样未来我就可以把我自己的各种数据都汇总起来进行分析和消费。

做出了选择,接下来就很简单,我在拼多多上下单了鱼跃 CT15 血糖仪,并在 4.24 日拿到了这个设备(然后在当天给自己装上了它)。

d2b5ca33bd970f64a6301fa75ae2eb22 7

安装鱼跃 CT15

收到货后,拆开快递后,我拿到了两个设备,一个是有点像 Airpods 的 蓝牙发射器 & 充电底座;另外一个则是真正插入体内的传感器及其辅助发射器。

5vvd4g
收到的设备

拆开后,大概是这样的:

d2b5ca33bd970f64a6301fa75ae2eb22 8
蓝牙发射器 & 底座
d2b5ca33bd970f64a6301fa75ae2eb22 9
传感器 & 辅助植入设备
d2b5ca33bd970f64a6301fa75ae2eb22 2
传感器底部的标签

安装不复杂:

  1. 先在手机上下载安耐糖的 App;
  2. 确认你自己要安装的部位,你可以选择手臂后方或腰部。根据自己的习惯选择即可。我最终选择的是手臂后方(主要是我有趴着睡的习惯,放在腰腹部担心压坏)。
  3. 链接 App & 蓝牙发射设备。
  4. 对植入部位使用酒精消毒。
  5. 使用辅助植入器植入设备。
  6. 将蓝牙发射器和传感器组装起来。

更加详细的安装过程,我直接把官方的视频搞下来了,你可以看这个视频快速了解安装的链路。

安装完成后,大概是这样的:

d2b5ca33bd970f64a6301fa75ae2eb22 10

数据监测 ing

设备安装好后,接下来就是持续性监测这个数据 & 指标了。

坦白来讲,设备装上的第一天我是把自己吓到了,因为监测到了我有史以来最高的血糖值 — 11.6(我差点就给自己确诊糖尿病了),在给自己上 CGM 的那个晚上,我看了不少的二型糖尿病防治指南(放在最后了hhh)。

9232b01d0fb1ad6abf7e9b947b94e4d7
第一天记录到的 11.6 的巨高数据

不过,经过一天的适应,在第二天,我的血糖进入了常规的阶段,慢慢的,我的心态也没有那么慌了(所以提醒大家,即使 CT15 这样不需要额外校准的设备,也有可能会存在初期数据不准的问题,如果看到了一个非常夸张的数字,不要慌让他再抓一些数据看看。

d2b5ca33bd970f64a6301fa75ae2eb22 12
第一天的血糖
d2b5ca33bd970f64a6301fa75ae2eb22 14
第二天的血糖

接下来的每天的日常就是让他自己跑数据,监测一下自己的血糖变化。安耐糖的 App 提供了血糖变化数据,方便你看到你的数据变化范围,是否在你预设的血糖范围内等一细节数据,方便你快速了解自己的血糖情况。

b555bc2dba39cab693734ece65408b1e 1
安耐糖的主界面

取出设备

当时间走到 5 月份时,我佩戴 CGM 也满 14 天了,就必须要取下设备(设备的设计监测周期是 14 天),取下的过程非常简单,先按下传感器的卡扣,取下蓝牙发射器,然后去除传感器周围的胶布拔下传感器即可。

在没有取下来之前,我对于 CGM 的体内植入深度没啥感觉(虽然说明书上已经说了 5~10 mm),但当你真的看到这个探针,并意识到这个探针已经在你体内 14 天时,还是有点惊悚的...

d2b5ca33bd970f64a6301fa75ae2eb22 15

数据分析

数据采集只是手段,归根结底,我们是希望用数据指引我们做决策。血糖分析也是如此。一方面, 你可以直接查看安耐糖上的一些数据来观测自身的指标,另一方面,安耐糖也提供了官方的报告解读的服务。

当你的设备取下后,官方会拉个微信群给你做一下基本的报告解读,简单分析一下你的情况,会得到如下的报告内容。

nafg1c

一些你可能关注的问题

误差?

CGM 的原理是基于组织液的数据采集 + 算法的方式来计算出你的实时血糖。这个原理决定了它的数据注定不是真正意义上的精确值。刚好在最后几天,我参加了中关村的四高共管项目,基于指尖采血血糖仪的数据,和 CGM 的数据做了对比。在实际测试过程中发现,CGM 和指尖血糖仪的数据大概有 0.5 左右的误差。

但,作为一个可以持续监测的设备,0.5 的误差在我看来是可接受的范围。毕竟可以帮助我们监控自己的血糖,了解不同食物带来的影响,还是有其价值的。

洗澡?

从我自己的体验来看,洗澡(淋浴)是完全不影响 CGM 的,你可以放心的购买 & 使用。也合理,毕竟要在身上放 14 天,厂商也需要考虑这个问题。

按压?

安装上之后,基本上不会有什么问题,直接用即可。我自己体验下来看,只要不是硬破坏,其实没那么容易出问题。

感染?

坦白来讲,CGM 是存在感染的风险的。毕竟是有创的,我们能做的是尽可能降低感染的风险,比如在植入前用酒精棉擦拭植入区域;比如擦拭完就赶快植入,别等着。

创口?

CGM 的探针比较细,所以创口和痛感也都不强烈。从我自己的个人体感而言的话,比指尖采血的疼痛度还要小一点。

d2b5ca33bd970f64a6301fa75ae2eb22 17

医用胶布使用指南

你可能会担心,传感器容易掉怎么办?从我自己的体验来看,不太会容易掉,此外,安耐糖会送一个加固胶布,你配合上加固胶布,基本上没有掉下来的可能性。

持续使用成本

在上面提到,CGM 智能连续使用 14 天,对于一个日常监测的人来说,必然是每两周要更换一次的,所以就需要持续购买耗材,传感器作为一次性用品,每个买下来大概是在 250 元,一年持续监测下来的话,成本还是比较高的,一年需要 250 * (52/2) = 6500 元左右,批量购买可能可以控制在 6000 以内,成本不低。但考虑到这玩意是用来保命的,倒也合理。

d2b5ca33bd970f64a6301fa75ae2eb22

二型糖尿病防治指南

延展阅读

https://sspai.com/post/77324

https://sspai.com/post/77348

person holding sticky note

Chinese-Calendar: 一个帮助你判断今天是不是工作日的 Pypi 包

在开发过程中,你可能会需要实现某些和工作日相关的特性(比如,工作日才发某些通知 /推送),这个时候,你可以借助于 chinese_calendar 这个包,来查看当前是否是工作日,你可以引入 chinese_calendar 这个包,来实现判断今天是否是工作日。

可以参考如下代码,is_workday_today 返回 True 时,就是工作日,就需要执行某些特定的逻辑。

from datetime import datetime
from chinese_calendar import  is_workday

# https://github.com/LKI/chinese-calendar
def is_workday_today():
    today = datetime.now();
    return is_workday(today)
Code language: Python (python)
pile of assorted-title books

介绍一下 Read it!

每年我都会给自己开一些新的坑,用于探索新的技术方向、新的领域。2024 年,我的新项目是 —— Read it!

Read it! 是一个用于分享我自己觉得不错的文章、网站的地方, 你可以在这里看到我日常浏览网页过程中发现的不错的网站、文章。

我会在分享链接的过程中,加上一些我自己的看法、总结。

如何使用 Read it!

  • 网页浏览: Read it! 是一个网站,所以你只需要打开浏览器,访问 readit.ixiqin.com,就可以看到我分享的网站。
  • RSS 订阅:作为一个古早 RSS 爱好者, 你可以直接在你的 RSS 里订阅 Read it! ,将 https://readit.ixiqin.com/rss/bookmarks/ 贴在你的 RSS 阅读器里,就可以查看到它。

为什么会有 Read it!

我是湾区日报的读者,也很喜欢湾区日报的形式。包括过去也尝试过用 WordPress 之类的系统来搭建类似的形态。但,繁琐的操作会消磨我分享的耐心。

最近又在整理书签,加上也开始进行一些大模型应用的开发,所以决定借助大模型来帮助我自己完成一些工作,就重新搞起了 Read it! 这个项目。

Read it! 目前的工作模式挺简单的,我找到觉得不错的文章,直接在 IM 里发给他,他会自动解析我的意图,并将解析出来的结果录入到系统当中,给大家看。想来这样的交互可以让这个项目活得更久一些~

d2b5ca33bd970f64a6301fa75ae2eb22 15
流程说明

Read it! 会分享什么?

Read it! 可以理解为是我自己再看的各种文章,所以并不会局限领域、方向,只要是我自己看的觉得有收获的,我都会分享。后续会考虑提供分标签的订阅方式,这样你可以选择只订阅自己喜欢的文章。

34456427bc43e44f517b4eece861c6f5

CapRover 如何停止服务,并进行硬盘扩容/维护

在一开始使用 CapRover 时,我使用的是一个 10 GB 的数据盘,但在部署了诸多应用后,10GB 的数据盘已经无法满足我的需求,于是我就对其进行了扩容,扩容至 20GB。在完成扩容 & 重启后,仍需要执行 Linux 的扩容命令 resize2fs 来扩容硬盘。

但由于 CapRover 中运行的服务跑在这个数据盘上,并没有办法直接在这个数据盘上进行扩容(进程会持续读取文件),因此,需要先将 CapRover 上的服务暂停,暂停后进行扩容,并重新启动服务。

CapRover 底层是使用 Docker Swarm + Nginx 来进行的,因此,我们只需要使用 Docker Swarm 的命令,来停止服务运行即可。

1. 获取服务名称

首先,你需要先获取到当前所有在跑的服务,以便于稍后去暂停。执行 docker service ls 来获取到具体的服务名称。

d2b5ca33bd970f64a6301fa75ae2eb22 13

2. 拼接所需的命令

在 Docker Swarm 当中,并没有直接的 Start or Stop 概念,而是通过将 Replica 设置为 0 来实现关闭的能力。这个命令可以通过 docker service scale 服务名=服务数 来实现。因此,你需要将对应的服务设置为 0 来解决这个问题。你可以先行把开启和停止的命令拼接好,从而实现快速的启动和关闭,尽可能的减少宕机时间。

如果是有多个服务,可以直接拼接在后面,从而实现一次关闭 / 开启多个服务。

# docker service scale service_name=1 service_name_2=0
# 停止命令
docker service scale srv-captain--blog-ixiqin-com=0 srv-captain--mysql-8-production-db=0 srv-captain--pgsql-16-production=0 srv-captain--redis-server-production=0
# 启动命令
docker service scale srv-captain--blog-ixiqin-com=1 srv-captain--mysql-8-production-db=1 srv-captain--pgsql-16-production=1 srv-captain--redis-server-production=1
Code language: Bash (bash)

3. 执行命令,扩容硬盘

你可以先执行停止命令,然后执行扩容命令。完成扩容后,重新启动,即可完成整体的扩容。

34456427bc43e44f517b4eece861c6f5

使用 CapRover WebHook 获得类 Vercel 部署体验

我在开发前端应用的时候,基本上使用的都是 Vercel ,究其原因,主要是以下几个点:

  1. Vercel 可以方便的与 Github 整合,提供简单易用的部署方式:写完代码,测试完成后推送到 Github ,就会自动部署到线上。对于小型项目来说,可以简化部署的流程。
  2. Vercel 提供了自定义域名和自动配置的 SSL,提供了简单的配置方式:在现在 SSL 成为标配的模式下,在 Vercel 你只需要把域名解析到 Vercel ,并在你的 Project 当中绑定域名,就会自动完成域名绑定和 SSL 申请和续期。
  3. Vercel 提供了 FaaS 环境:写应用的时候,很多时候不只有前端的需求,这个时候, Vercel 自身的提供的 FaaS 环境可以帮助你完成基本逻辑的编写。

但 Vercel 毕竟是以前端为主,且函数运行时长也有限制,对于一些比较重的场景下,Vercel 还是不太够用。刚好最近我把服务部署从传统的 LAMP 换成了 Docker Based PaaS,我使用的 CapRover 提供了类似的体验。

使用 Cap Rover 你能获得的体验:

  • 上传代码后,自动部署到 Production
  • 绑定域名后,自动配置 SSL 证书,且可以配置其他域名转发到主域名

具体操作步骤见下:

安装 CapRover

CapRover 的安装我就不再赘述,跟随官方的说明安装即可。

绑定根域名

当你登录 CapRover 时,CapRover 会让你绑定一个泛域名解析,你可以根据自己的需要,绑定一个二级或者三级域名,然后在 DNS 解析一个 * 到这个服务器上。这样后续部署的服务就会自动解析一个 服务名.你的域名 ,用于服务的初步访问(类似于 xxx.vercel.app)。

d2b5ca33bd970f64a6301fa75ae2eb22 6

上传代码至 GitHub

在 Github 上创建一个代码仓库,并把你自己的项目部署上去。如果你有已经写好的 Dockerfile,可以一并上传上去。如果没有的话,则可以选择参考 CapRover 提供的 Sample App ,里面提供了常见语言的部署参考。

创建容器并配置环境

完成代码上传后,你可以进入到 CapRover 后台,创建一个新的 App。这里可以输入你喜欢的名字,方便后续查找即可。

d2b5ca33bd970f64a6301fa75ae2eb22 7

创建完成后,点击下方列表中的应用名称,进入应用的配置页面,并切换至 Deployment 页面。

d2b5ca33bd970f64a6301fa75ae2eb22 8

在这个页面,可以找到 Method 3 : Deploy From GitHub/ Bitbucket/Gitlab,填写你的仓库信息、分支名、用户名。密码你可以选择直接使用你的密码,也可以选择创建一个 Personal Access Token ,或者是在仓库里配置一个 Deploy SSH key 均可。

d2b5ca33bd970f64a6301fa75ae2eb22 9

配置完成后,会自动给你生成一个 Webhook 地址,复制这个 Webhook 地址。

d2b5ca33bd970f64a6301fa75ae2eb22 10

配置 Github 上的 WebHook

复制上方的 Webhook 地址,并进入到 Github 你的仓库 - Settings - webhooks 页面,新增一个 Webhook。

d2b5ca33bd970f64a6301fa75ae2eb22 11

粘贴你刚刚复制的 URL,Content Type 选择 application JSON,并在下方选择触发部署的时机。

d2b5ca33bd970f64a6301fa75ae2eb22 12

点击报错。

等待自动部署

接下来你就可以通过提交代码,来让其自动完成部署,从而享受类似于 Vercel 的推送即部署的体验~。