初识 BLE 协议以及微信小程序

手头有个项目,涉及到 app 端蓝牙连接。硬件开发伙伴给到了 BLE 协议,完全一头雾水 最近忙的没空推进 Go 的学习,想着博客至少不能落下更新,不管怎么样也要逼自己写一篇水文。 什么是 BLE 首先得知道什么是蓝牙(Bluetooth) 小时候肯定有人好奇为什么要叫 Bluetooth,无奈好奇心还不够,只停留在发起 why,今天才是真的解惑。 不出意外是和人名有关,他是Harald Bluetooth(哈拉尔德·蓝牙王) 他是丹麦国王,功绩差不多是统一了分裂的丹麦与挪威。90 年代蓝牙技术的研发小组以其名号期许新技术能集成各大资通品牌的标准。蓝牙的 logo 也是如此 卢恩字母 (Hagall,ᚼ)和 (Bjarkan,ᛒ)的组合,也就是Harald Blåtand的首字母HB的合写。 蓝牙技术规范由蓝牙技术联盟 (Bluetooth Special Interest Group, SIG) 制定,版本现如今已经更新到 第六代了 其中第四代开始,支持了本文的主角,也就是蓝牙低功耗 (Bluetooth Low Energy, BLE) 目前蓝牙最为普遍使用的有两种规格: 蓝牙基础率/增强数据率 (Bluetooth Basic Rate/Enhanced Data Rate, BR/EDR): 也称为经典蓝牙。常用在对数据传输带宽有一定要求的场景上,比如需要传输音频数据的蓝牙音箱、蓝牙耳机等; 蓝牙低功耗 (Bluetooth Low Energy, BLE): 从蓝牙 4.0 起支持的协议,特点就是功耗极低、传输速度更快,常用在对续航要求较高且只需小数据量传输的各种智能电子产品中,比如智能穿戴设备、智能家电、传感器等,应用场景广泛。 BLE 大概是什么 大概分成三个核心维度来了解 BLE:架构(Stack)、连接机制(GAP-Generic Access Profile) 和 数据交互(GATT-Generic Attribute Profile)。 BLE 的分层架构 (Protocol Stack) BLE 协议栈主要分为两大部分:控制器 (Controller) 和 主机 (Host)。 ...

January 19, 2026 · 2 min · 374 words · Ray

OpenCode 初体验

我是如何爽用OpenCode的 - 开发调优 - LINUX DO OpenCode 确实听说有一段时间,但是由于手头 codex+claudecode 以及cursor 三个工具配合使用对我而言vibe coding的体验已经算是不错的了。gemini3 出世以来 虽说强,但是没用过gemini cli,antigravity使用体感不佳(也许是用的太早了?)至少觉得简中交互不佳。 那受佬友这篇文章的启发,怎么说我也要尝尝咸淡。 什么是OpenCode GitHub - anomalyco/opencode: The open source coding agent. The open source coding agent. 感谢开源贡献者。 怎么用 我的开发工具是 家中的windows+wsl 和公司的mac 写本文时在家里,那么就在vscode+wsl 里面实践一下 官方的安装方式 1 2 3 4 5 6 7 8 9 10 11 12 # YOLO curl -fsSL https://opencode.ai/install | bash # Package managers npm i -g opencode-ai@latest # or bun/pnpm/yarn scoop bucket add extras; scoop install extras/opencode # Windows choco install opencode # Windows brew install anomalyco/tap/opencode # macOS and Linux (recommended, always up to date) brew install opencode # macOS and Linux (official brew formula, updated less frequently) paru -S opencode-bin # Arch Linux mise use -g opencode # Any OS nix run nixpkgs#opencode # or github:anomalyco/opencode for latest dev branch Vscode插件市场可以直接找到Opencode 的插件,安装一下,(ok 我以为这个就是完全体,原来只是个类似之前的 cc for vscode一样的东西) 那还是执行 curl -fsSL https://opencode.ai/install | bash,在点击运行。 ...

January 9, 2026 · 1 min · 180 words · Updated: January 10, 2026 · Ray

怎么使用uv来管理 python 环境

依稀记得大一寒假打开 小甲鱼 python教程的一周后就认识了 Anaconda 这个解放我安装python 依赖的工具,至今已经过去了六年了,conda 似乎也做了一些商业收费的举措之类的,让很多大公司用上了新的环境管理工具,由于习惯我还一直用着conda,以至于我对 python 自己的 pyenv 都不是很了解(Damn!!!太丢人了) 那么这次就来用用 uv这个所谓的 超高速python工具链 uv 安装 uv macOS / Linux / WSL curl -LsSf https://astral.sh/uv/install.sh | sh Windows(PowerShell) irm https://astral.sh/uv/install.ps1 | iex 验证: uv --version 常见用法 1. 创建项目并指定python版本 在空目录或者指定目录创建项目 1 2 # 创建新目录并初始化项目 uv init my-app 或者你当前在一个空目录下: uv init 结果: uv 会生成一套基础文件,例如: 1 2 3 4 5 my-app/ ├── pyproject.toml # 项目配置(依赖/元数据) ├── .python-version # 记录 Python 版本 ├── README.md ├── main.py (示例入口) 如果指定了应用名 my-app,uv 也会生成对应样板代码和README.md。 ...

January 7, 2026 · 2 min · 307 words · Updated: January 24, 2026 · Ray

tmux是什么

本文大大大大量参考 阮一峰老师的博客,虽然我在之前的使用中没有翻阅他的文章,不过哪怕是抄,我也觉得应该抄个优秀的。 Tmux 使用教程 - 阮一峰的网络日志 这我没想到这篇写在19年,比我上次看的那个 async 要小很多了 Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。 我常用是因为两个情况 懒得开多个窗口 远控服务器经过堡垒机 一、Tmux是什么 1.1 会话与进程 命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session) 。 会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。 也就是初学的时候,连上虚拟机或者ssh连上Linux之后部署运行程序是直接在这个窗口中运行的。当窗口关闭时程序也随之关闭,在当时接触了解了nohup 和 screen 。 一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。 history能存上一次执行的命令,这里回头一定要学习一下,因为我也不知道什么情况才会存进history中 为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。 1.2 Tmux 的作用 Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。 (1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。 (2) 它可以让新窗口"接入"已经存在的会话。 (3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。 (4)它还支持窗口任意的垂直和水平拆分。 类似的终端复用器还有 GNU Screen。Tmux 与它功能相似,但是更易用,也更强大。 二、基本用法 2.1 安装 Tmux 一般需要自己安装。 1 2 3 4 5 6 7 8 # Ubuntu 或 Debian $ sudo apt-get install tmux # CentOS 或 Fedora $ sudo yum install tmux # Mac $ brew install tmux 2.2 启动与退出 安装完成后,键入tmux命令,就进入了 Tmux 窗口。 ...

January 7, 2026 · 3 min · 520 words · Ray

《2025》

我想写年度总结,但是我打开Obsidian的时候左思右想翻来覆去也挖不出一点内容,脑子里空空,肚子里装得满满(不是墨水,是三个生蚝一个汉堡一个鸡翅一个鸡腿八个寿司两杯橙汁)。那就从头开始回看一下吧。 要说2025围绕的几件事情,其实第一个想到的是大模型,从部署到微调到应用,从去年底就开始了,这一年常常倒着时差在关注着另一个白天的发布会,常常和朋友感慨,我获取这些前沿消息的及时性已经快和测评博主齐平了,远远快过搞新闻的,区别是我在发布会后倒头就睡,测评博主需要测和评,而我第二天早上睁眼窃取他们熬夜的劳动成果,在公司群里发出来获得一些简单的满足感和虚荣感。但是后来看到一位网友的说法,说他今年也是如此,一直追着最新的技术,不停换着各种工具,体验各个产品,本来还有一些优越感的,但是后来发现身边的一些朋友,虽然获得的信息延后且被筛选,但是也省去了他们自己筛选和试错的时间,他这么一说,又动摇了我的想法,不过,我喜欢在关心的领域处在上风口。 题外话,从年初到年底,几乎几周就会迎来一次革新,每次一个阶梯也已经来到了新的楼层。LLM的应用应该会在今年开出遍地的花。 我还换了个手机,翻了翻旧手机的相册,实在没有很多内容,既是因为旧手机拍照不好看,也是因为天天上班我拍甜妹啊。25年总计出游似乎不出双手,还真是,年初去了香港、不久后公司去穿越东西涌、回家过年算出游否?后来去爬了梧桐山、国庆回了趟家,again,同时杭州宁波舟山几日游。不是很有滋味呢,至少觉得不够尽兴,因为不管怎么算。更多的时间都扑在了工作上。 上班还行,尽管不可能天天愉快轻松,但是上班应该是实现自我价值的,不然还能干嘛呢,又没有金山可以坐吃。今年开始了几个好习惯,年初搭了博客,虽说进度一至断断续续,但是好歹到现在还在更新,虽欠了一些呢,但是日拱一卒!漏一天那就隔一天再拱一卒!虽然有一些隔了挺久,但是无所谓!补上就是胜利!这是这两天学到的新心态,通俗来讲就是坚持!但不是那种要死要活的咬牙坚持,而是把一些想坚持的事情,如染料般一点点浸入自己的生活日常,这也不容易哈。 说到坚持,年底的两个月还看起书来,说不知道为什么,但是是从凡人修仙传开始看的。买了一些书发现没有想象那么好看,后来看了一本海边的卡夫卡,看村上的书总感觉又坐回高中教室,其实我一直不是特别能懂村上的书,看完后总想搜一搜书评,又发现谁讲的都好像想到过,便又觉得乏味,但是村上的书就像那种酒一样的感觉,我喝不明白啊,也许不那么好喝,但是微醺的后劲终究会来,且是悄悄的来,后来开始看起来明朝那些事儿,那是真好看,看历史使人心胸宽广气质雄厚, 三千年读史不外乎功名利禄,九万里悟道终归诗酒田园 为此还买了微信读书的会员,参加21天打卡活动,结果昨天最后一天没有打开过APP泡汤了,沮丧了好一会儿。希望新的一年能满足我25年补充的24年没有完成的23年的年初计划,嘿嘿。 凡人修仙传是今年看的一部印象很深刻的动画片了,可以说是国漫近几年看的最满意的动画了,前期建模虽粗糙,但是制作组诚意满满,不断重制,优秀的改编,当我阅读完小说后回头看动画,不得不感慨改编的完美。当然今年还有罗小黑,灵笼,带着980看了巨人,看了2077,看了剑来,看了牧神记等等。年底还有怪奇物语。 今年也是偶尔会有些模仿文人感叹的时候,奈何库存实在少的可怜,搜刮来搜刮去尽都是些网络用语,丢人的很。让GPT5.2总结我的一年,他说我今年更明白了什么叫持续,说我允许自己接受节奏的不稳定,接受自己可以反复校准方向,我不知道他说的对不对,我只是想努力做好一些事情罢了。我也希望成为他描述的人。 知行合一的人。 今年胖了许多,打工很快满两年了,加在一起快胖出超市一袋米了。体检也是处处过胖的红灯,年底开始少量的运动,慢慢开始减肥了,减肥倒是曾有一些经验,不过,确实不容易坚持,尤其不是一个人的时候,更容易放纵。 今年常去980家吃饭,几乎隔周一次,每次都会觉得有一道门在向我靠近。 今年比去年更想家了。 今年想学,想多赚点钱的欲望更多了,下半年打游戏时间总和几乎只有几个小时,有时候都不是事情逼着我,是我觉得累了,我觉得这太不健康了,是那种毫无精力的空虚麻木。也许工作状态该好好调整了。 我很想像大佬们一样,总是引经据典,信手拈来,言简意赅的几句道过。我做不到,我本来想喝点酒的,对了,年底还买了俩尊美醇、常和980在家微醺。喝点酒也许迷糊的时候更适合这种碎碎念。我刚搭建博客的时候取名是 Ray的碎碎念,后面那个主题太花哨了无法接受(实则是懒得配置过多东西)挺好的。今年常遵循的原则是 KISS 原则,无论是生活和工作,当然,工作更多,生活还是喜欢锦上添花的。如果有人看到这里不知道我说的 KISS 什么意思,诶嘿,你去搜一搜吧,不想解释。这篇文章不是解惑的。 我也想像大佬们一样,文绉绉的满口,而不是各种网络用语满肚子,不行,脑子里开始放库里库里。 今年还买了个十年的域名,哈哈,长期计划嘛。 我还给十年后?还是多少年后的自己写了一封邮件,到今天为止已经忘记了邮件的内容,无非一些不礼貌的问候罢了,毕竟是给自己的,已经2026了,十年前我刚上高中,不行,说到这鼻子会酸了,美好的青春啊!一去不复返咯,不全是惋惜过去,而是对当下的怜悯。 突然海马效应了一会儿,也许是困了,不到夜半憋不出半句骚话,那我也就不接着搜肠刮肚了,抄几句骚话结束吧。 由于读《海边的卡夫卡》,再次看到了《挪威的森林》的摘句,这本书是我高中花了两节课偷偷看完的,是我看村上的入门书,对我影响很大应该,虽然剧情都快忘了,回头再看一遍,抛开里面奔放的剧情不说,整书实在适合我当下的心境,我再找了出来 “我也二十岁了,有点儿像开玩笑似的。”直子说,“我,一点儿也没做二十岁的准备,挺纳闷儿的,就像谁从背后硬推给我的一样” 时间无情的推着我往前走,他不会管我有没有做好准备,挺纳闷的。我问 gpt 我今天的年度总结应该怎么取标题,他说我月下小札的气质不适合写什么“年度”,“总结”,搞得像汇报一样, 更应该像一页在夜里合上的书。 那么,我将合上2025这一本咯, 翻开2026的第一页,内容还是由我亲笔来写。

January 1, 2026 · 1 min · 33 words · Ray