回顾2017年,工作之余带着较强的目的性学习,接触到了很多新知识,故简记以便重温。
无线电
年中搬家后,门禁需要刷身份证,经常携带不便且容易丢失,故想着通过技术提高出入便捷性。
通过观察,发现门禁卡分为两类:
一类是租客使用的身份证,身份证只能刷特定门禁,比如开通时会选择租住的单元楼和小区大门。
另一类是房东使用的,普通IC卡(纽扣型)。
目标:使用IC卡/手机NFC刷卡
- 网上查阅相关资料,利用ACR122U可以复制IC卡,其实内部也是使用PN532芯片,推荐直接入手PN532,方便实惠。
- 使用libnfc开源工具进行读写卡测试,发现二代证是CPU卡,ISO14443 type B类型,网上查阅资料得知普通的身份证验证一般是读取UID验证,该方法无需读取到加密的信息,修改libnfc代码即可实现。
- 如果直接模拟二代证,与门禁交互UID,需要卡/手机支持ISO 14443 type B协议。网上只找到一家type B类型的卡,且价格较高,购买后还未折腾实现。
另外一种简单直接的方式是借用房东IC卡,直接复制一份即可。
Clojure
学习Clojure
是2016年就确定的目标,无奈无明确目标,学习进度缓慢,2017主要是刷4clojure
题库,回顾熟悉之前学习的基本语法。
无意间接触到了ClojureScript
,发现其可以直接编译生成js代码,随着深入了解,发现一些列好用的工具,比如reagent可以直接使用react,re-frame非常赞的前端开发框架,hiccup
让写html飞一般的感觉。自己也动手做了一个单页面应用,主要是查询Mongodb数据库,展示数据。
后端使用Clojure处理数据也非常棒,没有了面向过程的繁琐,代码简洁优美,就是调试时暂时未学习Debug工具,只是人肉打印调试,此处需要提高。
另外,遇到问题可以在slack
上提问题,非常高效的解决问题方式。
IoT
参加了内部举办的比赛,复用了毕设时做的室内定位,虽然遗憾未获奖项,但是确实见识了不少好玩的东西,也认识了很多IoT热爱者。
嵌入式开发
怀着一颗好奇的心,从零DIY设备,购买了STM32板子,DHT11传感器,边学边做。对嵌入式开发有了基本了解,同时知道了传感器与MCU的协作过程。
智能家居——IoT零基础入门篇
HomeAssistant
2017有2个东西相见恨晚,一个是mongodb,另一个非HA莫属。
智能家居平台,方便的加入,多协议支持,炫酷的DashBoard。
折腾了内网穿透、HTTPS、自开发设备MQTT协议接入等。
目前入手小米智能家居套件,折腾中,天猫精灵吃灰中,暂时没时间搞。HomeAssistant + HomeBridge + HomeKit + Siri
,完美的控制,后续可以考虑定制自动化场景。
工具
网络
vpn
/ss
折腾过,前者稳定性欠缺,用来做端口映射、内网穿透进程断线,后来发现了frp
,使得公网IP可以更加好用。Squid
, 配合SwitchyOmega
,chrome爬梯子太棒了。
画图
了解到了graphviz
,原理可以用代码生成流程图等。
知道有MetaPost
这个高级的工具可以画精确的图形,后续可以玩玩。
Ethtool
工作需要,尝试翻了下工具源码,将数据结构定义拉出来,利用python
按照c
实现方式,抓取网络带宽。
正则表达式
工作需要,括号匹配,原来有种方法可以实现:平衡组
, 递归匹配(嵌套匹配)
。
Mongodb
不得不说,了解mongodb主要是对NoSql的好奇,接触之后发现原来可以给工作带来这么多便捷。大部分使用数据结构是map,可以转为json存储,相见恨晚。
小结
相比较之前,2017年接触了很多知识,带着目的的学习效率非常高,能够迅速搜集信息,将学习和行动结合起来。
这种学习方法优点在于:
(1) 兴趣主导,能够利用业余时间做出想要的东西;
(2) 知识面扩展速度快,通过寻求解决方法,能够接触更多的技术;
同样,该方式也存在一些缺点:
(1) 目的为主导,学习的知识便有针对性,缺少系统性;
(2) 快速掌握,如果不及时温故,很容易忘记;
针对上述缺点,新一年的学习中需要注意改善。
每个项目及时反思总结,每个阶段的学习明确知识图谱中欠缺的部分。
加油!加油!加油!