刚闪电入门了树莓派:斩获不止Python,Linux,goLang,还有架构,格局...
引子
前段时间有个项目需要一个IoT的微小Server,类似中继网关吧。成本被限制在300元人民币以内,愁是不管用的,只能考虑我那些吃灰好多年的树莓派了,其实派们进宫后,朕绝对是没有宠幸过,派们都没怀过孕!2代树莓派说,人家都老了,还是个雏!
如何以闪电的速度入门树莓派
原则是一定要拿软硬件都现成开源的简单的东西上手,那就是:
代码简单—— 一眼能看透因果,不用review那么多代码,就能预测结果。
教程详细、逻辑缜密——任何简单的东西对于没碰过的人来说,都会是很难的,每一个操作都会想到10000种可能,一个说不清楚的教程,是图财害命。
东西实用——练过手的东西实际项目还能用,就像是嫁给唐僧,玩烦了还能拿来吃肉。
按图索骥(上面的原则都是手中无贱,心里有贱,毕竟88年就开编Basic程序了)我看到了一枚小东西,人家叫TFOLED,就是集成了时钟,风扇控制和OLED屏显示的一个扩展板,28元,还不贵。极速用TFOLED某宝找了两个回来。
其实,我是在知乎上撸到的:https://www.zhihu.com/question/35801849/answer/1484766665
问题是:用树莓派做一个服务器是否可行?
其中有一句话:一个颠仆不灭、准确的时钟,是服务器应尽的义务。
让我知道了作者的段位,那一定是特别熟悉计算机网络架构的人才会这么肯定的说。段位在那里,弄得教程必然清晰,丝丝相扣,决不给你10000种试探的机会。我看回答的赞同过500个了。
获得了一个自己可掌控的Python程序
后面的事都是趸他的教程,这个教程在简书上(当然我可以搬到优快云来…可我手中无贱啊…)。
https://www.jianshu.com/u/9c64e438d428
树莓派的烧写,apt update upgrade时间有些长,但是只要想宠幸树莓派,换到国内镜像升级树莓派,那你是逃不掉这一个小时的,依旧是撸到教程文章弄的。
TFOLED教程其实,半个小时就弄完了,写作用词严禁,没有歧义。让我想起来一句诗:无为在歧路,儿女共沾巾。翻译过来是:你这教程,别说不清楚,就算有了歧义,那编程儿女也得哭死过去。
它的主程序是Python写的,用Linux的脚本启动了守护进程rc-local,用的是systemctl守护,老朽也是第一次了解这个Linux能够无人值守,不重启运行好多个月的神器,这真是Linux和Windows的软件架构的重大不同。
现在有了个模版就放心了,有个模版,去改,比一行一行想代码,那高级很多。
goLang说,我是来打酱油的!
我看到哪个介绍TFOLED文章说,能不改代码运行goLang,就让我做goLang的同事弄了个小程序,对Linux编译了,还就真能运行!
ipshow.go 文件内容:
package main
import (
"fmt"
"net"
)
func main() {
ips, err := FindLocalIPList()
if err != nil {
fmt.Println(err)
return
}
for _, ip := range ips {
fmt.Println(ip)
}
fmt.Println("END")
}
func FindLocalIPList() (ips []net.IPNet, err error) {
interfaces, err := net.Interfaces()
if err != nil {
return
}
ips = make([]net.IPNet, 0)
for _, x := range interfaces {
if (x.Flags & net.FlagUp) != 0 {
addrs, _ := x.Addrs()
for _, a := range addrs {
if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil {
ips = append(ips, *ipnet)
}
}
}
}
return
}
我还不会goLang,也没goLang的编译环境,让同事编译的,据说编译命令和他平时的编译命令只差两行:
SET GOOS=linux
SET GOARCH=arm
ipshow.go 编译成了ipshow
把ipshow这个文件SSH进树莓派改文件为可执行属性,命令行敲./ipshow,果真就把我后宫派们所有的IP都显示出来了。
高级了…
我们不是程序猿,我们是代码的搬运工…
后来我自己做了实验,还就真负责任地佐证下TFOLED作者的说法,goLang程序猿越过 Win-X86>>>Arm-Linux这个鸿沟,只有两行ASC码命令!
突然,想起了格局这个词。
格局都是逼出来的,急了跳墙过来的。
祝各位用码愉快!