SpotMicro 一个开源机器狗项目

写在最前 最早看到这个项目已经是大半年前了,一直蠢蠢欲动,直到八月份看了这篇推送——用树莓派 DIY 波士顿机器狗,帮你省下 50 万:教程开源,人人皆可上手,才真正下定决心——做一个自己的机器狗。 这次选择的硬件方案是 来自 Nahuel Taibo 的 modifications v2.1;参考的软件方案是来自 来自 mike4192 的 spotMicro。 需要的材料清单: 树莓派/stm32 控制器 一台 3D 打印机/直接购买 3D 打印服务 PDI-HV5523MG 舵机 × 12(当时一次性下单 12 个,被店家追着问了不少,现在商品图上好像已经加上“机器人专用”了) 法兰球轴承 F625ZZ × 8 M3 螺丝(各种长度) 2S/3S 电池 5V 降压电路(LM2596/MP2482) PCA9685 舵机驱动板 LCD 显示器(可选) 防滑贴/减震垫(可选) 迷你路由器(可选) 本文包括树莓派上手、电路设计、3D 打印、SpotMicro 功能复现,希望对你有帮助。 3D 打印与组装 机器狗的机械结构部分参考了 来自 Nahuel Taibo 的 modifications v2.1,作者主要是修改了几个连接,加了身体的强度。在 Gitlab 逛逛会发现这个社区里有很多爱好者在分享自己的经验,“Open Source, Open Mind”。 下载到所有零件的 STL 文件后,只要自己切片一下就可以开始打了。原版是黄黑配色,这次做的是黑白的,可以提前在 KeyShot 里渲染一下,看看效果图选颜色。整个打印工作从 Nov....

December 16, 2020

可能是最好的 Git 分支管理教程

通俗易懂的可视化 Git 分支管理教程——Learn Git Branching. 特点:将知识点设计成关卡,每一步操作都有可视化效果展示,附带一个完全自由的沙盒调试玩耍。 具体操作就不谈了,非常容易上手,下文仅给自己做些笔记。 欢迎光临 主要 1.1 Git Commit Git 仓库中的提交记录保存的是你的目录下所有文件的快照。Git 希望提交记录尽可能地轻量,因此在你每次进行提交时,它并不会盲目地复制整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的差异打包到一起作为一个提交记录。 Git 还保存了提交的历史记录,父节点是当前提交中变更的基础。对于项目组的成员来说,维护提交历史对大家都有好处。 git commit创建一个新的提交记录。 1.2 Git Branch Git 的分支也非常轻量。它们只是简单地指向某个提交纪录 —— 仅此而已。所以许多 Git 爱好者传颂:早建分支!多用分支!这是因为即使创建再多的分支也不会造成储存或内存上的开销,并且按逻辑分解工作到不同的分支要比维护那些特别臃肿的分支简单多了。 在将分支和提交记录结合起来后,我们会看到两者如何协作。现在只要记住使用分支其实就相当于在说:“我想基于这个提交以及它所有的父提交进行新的工作。” git branch newImage创建一个名为 newImage 的分支。 分支名后带一个*表示当前分支,commit 的时候会基于当前分支提交。 git checkout <name>切换到新的分支上。 git checkout -b <name>创建一个新的分支同时切换到新创建的分支。 1.3 Git Merge 接下来咱们看看如何将两个分支合并到一起,就是说我们新建一个分支,在其上开发某个新功能,开发完成后再合并回主线。 第一种方法 —— git merge。在 Git 中合并两个分支时会产生一个特殊的提交记录,它有两个父节点。翻译成自然语言相当于:“我要把这两个父节点本身及它们所有的祖先都包含进来。” 假设当前分支为master(C3),使用git merge bugFix将bugFix合并到master里。 merge 方法 为了帮助学习理解,我引入了颜色搭配。每个分支都有不同的颜色,而每个节点(提交记录)的颜色是所有包含该节点的分支颜色的混合。 所以,C3、C4 是master分支的颜色,其他的节点则是master和bugFix分支颜色的混合。 git checkout bugFix; git merge master,再把master分支合并到bugFix。 因为master继承自bugFix,Git 什么都不用做,只是简单地把bugFix移动到master所指向的那个提交记录。 现在所有提交记录的颜色都一样了,这表明每一个分支都包含了代码库的所有修改!...

December 10, 2020

两个函数的地址怎么完全一样——关于函数调用栈

在测试 Python 变量引用顺序的时候,修修改改,写出了下面这样的测试代码: def plus(a, b): return 10 def test1(): def plus(a, b): return 20 return plus def test2(): def plus(a, b): return 30 return plus if __name__ == '__main__': demo1 = test1() demo2 = test2() print(plus) print(demo1) print(demo2) print(test1()) print(test2()) 对应输出结果: <function plus at 0x000002063B18B798> <function testa.<locals>.plus at 0x000002063B18B678> <function testb.<locals>.plus at 0x000002063B18B948> <function testa.<locals>.plus at 0x000002063B18B9D8> <function testb.<locals>.plus at 0x000002063B18B9D8> 可以发现,前面几句都很正常:“变量引用的时候先在本地符号表中查找,然后是闭包函数的符号表,接着是全局符号表,最后是内置符号表。”但最后两行,不同函数的内存地址竟然一样。 请教了一下专业人士,原来和函数栈结构有关。 参考 C 语言函数调用栈(一) clover_toeic,先复习一下函数调用时的具体步骤: 主调函数将被调函数所要求的参数,根据相应的函数调用约定,保存在运行时栈中。该操作会改变程序的栈指针。 注:x86 平台将参数压入调用栈中。而 x86_64 平台具有 16 个通用 64 位寄存器,故调用函数时前 6 个参数通常由寄存器传递,其余参数才通过栈传递。...

December 1, 2020

Textnow 收不到验证码?记得开启代理的 UDP 转发

之前为了注册美区 Apple ID,用 Textnow 开了一个虚拟号码,主要参考教程:2020最新注册美区 Apple ID 教程 | 无需Visa或MasterCard 支付方式,填报的身份是用网络生成的,来自 美国身份证生成。 但是虚拟号码呢,不交钱的话需要保持活跃度防止被销号。查到过一个基于 IFTTT 的定期收发短信方案,但是需要一个 SMS 模块(which 已经过期了)。所以只能卑微地手动收发短信来保持活跃度。 问题出现了,前几周切换账号的时候发现虚拟号码总是收不到 Apple 的验证码,短信或者语音形式都不行,一开始怀疑是不是被销号了,但手动发送短信还是可以成功的。 就这样疑惑了很久,今天上网冲浪的时候突然看到,语音电话这类流量可能是 UDP。 Q: 为什么玩游戏要开启 UDP UDP 是什么呀? A: 我们平时看视频看网页都是走的 TCP 流量,而一些游戏则需要使用 UDP 流量,所以需要 UDP 转发(SSR 服务端默认开启,SSR PC 客户端默认开启,安卓客户端需要手动选择开启)。至于 UDP 是什么,你可能去百度谷歌更好。 来自 https://doubibackup.com/6r9z6_wi-2.html 有一部分代理软件是不支持 UDP 的,我在 iPhone 端使用的代理软件是 Potatso,检查了一下,真的没找到 UDP 转发的开关,破案了。所以用 之前的办法,局域网下请 PC 端的 Shadowsocks 帮忙代理,顺利解决。

November 19, 2020

从 WordPress 到 Hexo——博客搬家记录

WordPress:所以爱会消失对不对 用 WordPress 写博客已经一年了,从最开始感叹 WordPress 的功能强大到现在抱怨各种小问题,感觉 WordPress 似乎不适合我。正好最近服务器该续费了,就考虑着换个平台。 慢,对服务器要求高 对个人博客来说太重了,难以定制化 插件很多很丰富,另一方面也不可避免存在各种冲突 缺乏版本控制 这次调研了一下 Typecho、Hexo、Hugo、Gatsby 几个平台,最后的选择是 Hexo。 去年搭博客的时候也考虑过 Hexo,当时第一眼觉得 Hexo 过于简陋,而且那时候对 Git 的使用还不熟悉,所以就放弃了。但现在用了 WordPress 之后,觉得 Hexo 可能才是最适合我的。 原生支持 Markdown 静态页面,不需要额外服务器 每个细节可高度定制化 轻,可以享受尽在掌握的感觉 向 WordPress 告别 如果你有一个不错的服务器,或是对 Git 不熟悉、更偏爱成熟的产品,那么 WordPress 还是一个很不错的选择,以下的一点点经验可能对你有用。 使用的主题 Adams 单栏,白底黑字,最简洁 Apex 双栏,顶部有个艺术字体 logo,使用时间最长 GeneratePress 双栏,比较常规 Twenty Fifteen 双栏,来自 WordPress 官方,也很喜欢 使用的插件 Autoptimize 通过优化 CSS、JS、图像、Google 字体等来加速网站,感觉优化效果一般。 BackWPup 可以备份数据库、插件等等,同时自动上传到 Dropbox 网盘上(Dropbox 有 2GB 的免费空间),推荐。虽然 WordPress 的安全性比较高,但网站备份还是很重要的。备份的数据暂时没用上,但看着就很安心。 BCD Upcoming Posts 可以在侧栏添加一个小部件,显示在草稿栏中的文章标题,用来做一个预告。...

November 11, 2020