Micropython 试用

前段时间在网上看到了一款可以运行Python的单片机–Pyboard。觉得很好玩,但是发现价格奇贵,而且需要海外发货,这样成本巨大,于是就转向了万能的淘宝,希望可以找到国内的定制板。
结果还真的不失所望,我找到了一个看起来做工不错,而且相对于PyBoard发布的PCB做了很多改良,整体结构更加紧密,而且还用一个很炫酷的扩展板,价格也是非常良心。由于国内做这个的还是少数,我觉得开发者还是会碰到一些坑的。于是我潜入了卖家的QQ群中,发现这个卖家回复问题都蛮及时的,而且回答看起来也比较专业。
然后我愉快的下了单,收到了板子,重新点燃了我对硬件的爱。摆好阵势,开始测试Micropython的Hello World。结果第一个LED就出了问题,我toggle Led1 ,板子的四个led居然都亮了,我以为是我不会玩,于是又是一阵捣鼓,最后确定这不是我的问题。
因为宿舍里没有万用表,但是有一个很吊的显微镜。我把这个板子在镜子底下狠狠的撸了一遍,发现是PCB沉金出了问题,连接扩展器的40pin排线全都粘在了一起,STM32芯片也有几个管脚粘在了一起,这是何等的2333?
手边没工具的我操起了生物老本行,拿着解剖针对着那块板子一顿疯狂输出,结果居然可以用了,LED测试完全正常,我当时一定在想,“哦!我真是个小天才~”。
于是我把扩展板装上,打算试一试总线和GPIO的功能。结果这一试可不得了,我发现这板子用来固定扩展板的两个螺丝很玄学,如果拧的太紧,板子不工作;如果拧的太松也不工作。经过了刚才焊点的问题,我居然还没有意识到这块板子的无药可救,居然又拿起了显微镜和解剖针找起了问题。结果我发现是有几个STM32的管脚处于一种非常微妙的虚焊状态,只要板子被螺丝稍微带弯曲一点,这几个点就碰上了。如果拧的太过,又会自己翘开。
之后不肯放弃作死的我又尝试了很多奇葩的解决方法,还是无法修复。于是联系群里的老板商量退货,顺便给他发了两张显微镜下面的电路图。结果还没等我接着说退货,老板自己就先炸了,表示他现在人在北京,工作室的人在他不在的情况下做出这种质量的东西来,狠狠的打了他的脸。还告诉我可以直接退货,板子也不用再寄回去了,2333~
经过这么一折腾,我对硬件的热情被浇灭了一大片。新买了一家的Micropython,现在基本沦为收藏品了。另外我还在我那一大堆板子里翻出来了一块联发科的Linkit One,但是SIM shield模块的VoiceCall一直有问题,谁可以告诉我这个函数(http://labs.mediatek.com/api/linkit-one/frames.html?frmname=topic&frmfile=LVoiceCallClass__voiceCall@char_@unsigned_long.html)怎么把音频信号加载进去,哪位大神要是熟悉硬件和Arduino,请一定不吝赐教,我现在这里谢谢您了!

似有故人来

很久没有写技术博客了。其实这段时间技术方面做得还是蛮多的。不过大多是硬件方面的东西,在博客上可能也没有办法很好的展示。
大学四年,这是我过的最轻松的一个学期。我没有任何他人强加给我的任务需要完成,一切都可以索性所欲,我知道这是最后的狂欢了,但是仍然希望可以控制住自己,多学点东西。
昨天晚上睡得很晚,做了很多梦,唯一记下来的那个是去入职的经历。我能感受到我当时是充满了喜悦和激情的,大概要是说起来,也是一段令人欣喜的回忆。
今天在健身房看手机的时候,无意中翻到了很久以前的相册,是我在腾讯和阿里时候的工牌照片,之后又看到了给fattty发的气话。他帮了我那么多,真是很不可思议我当时怎么那么犯浑,现在看到真的很后悔,很想找个机会可以跟他亲自说声对不起。回忆可能就是这样,我做错了许多事,也做对了许多事,希望可以吸取之前的教训吧。
最后,今天是母亲节,祝妈妈节日快乐,天天开心。

别急

Someone graduated at the age of 22,
But waited 5 years before securing a good job.
Someone became a CEO at 25,
and died at 50.
While another became a CEO at 50,
and lived to 90 years.
New York is 3 hours ahead of California,
but it does not make California slow.
Someone is still single,
while someone else got married.
Obama retires at 55,
but Trump starts at 70.
Abousolutely everyone in this world works based on their Time Zone.
People around you might seem to go ahead of you,
some might seem to be behind you.
But everyone is running their own RACE, in their own TIME.
Don’t envy them or mock them.
they are in their TIME ZONE, and you are in yours!
Life is about waiting for the right moment to act.
So, RELAX.
You’re not LATE.
You’re not EARLY.
You are very much ON TIME,
and in your TIME ZONE.

TCP BBR试用体验

Kernel 4.9 正式版本的发布带来了一些令人激动的特性以及一些驱动的更新。
其中来自 Google 的 TCP BBR 拥塞控制算法也在这个版本并入了主线。
                                                       ———— 背景

今天和大神聊天的时候知道了TCP BBR这个神奇的控制算法。遗憾自己以前的孤陋寡闻,我对此等神器居然一无所知。为了尽快弥补这个遗憾,我大晚上的搭了一台测试机对TCP BBR进行了测试。
首先需要一台linux 4.9内核版本以上的机器(现在居然已经出到4.10了,不过gregkh已经宣布4.9将是LTS版本),我搜刮了我所有的机器发现居然没有一台的内核达标。于是在Vultr上买了一台新的CentOS来测试。
要在 CentOS 上安装最新的内核版本,我们需要增加一个 ELRepo 源。首先,让我们添加 ELRepo GPG key:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

之后添加 CentOS-7的 源:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装fastestmirror (Vultr的镜像已经自带了,保险起见,可以确定一下)

yum install yum-plugin-fastestmirror

最后,安装 kernel 主线版本

yum --enablerepo=elrepo-kernel install kernel-ml

当然,将 kernel-ml 选为第一启动

grub2-set-default 0

重启后,通过 uname -a 查看内核是否已经切换到最新版

$ uname -a

在确定安装好了4.9以上版本内核之后,我们就可以开启TCP BBR了。

sudo echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
sudo echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

重启后,首先 uname -a 看下内核是否切换,然后执行下面明亮查看内核是否开启 TCP BBR

sudo sysctl net.ipv4.tcp_available_congestion_control
sudo sysctl net.ipv4.tcp_congestion_control

查看 tcp_bbr 模块是否加载

lsmod | grep tcp_bbr

如果已经加载成功,就可以愉快地开始测试了。实测发现TCP BBR确实可以有效提高上行速度,但效果没有网上其他的测评那么拔群,我这里差不多是200%的样子。

发挥所长 改变世界

这几天晚上睡得很晚,幸好总有一个我觉得很厉害的大神一直失眠,于是几乎每天都可以聊到天亮。
他的世界观就像他自己说的,确实很与众不同。在我目前短浅的人生阅历看来,那是彻底而纯粹的精英主义以及理想主义。与大众世界显得格格不入,但也正是因为如此,他也显得熠熠生辉。
我自己觉得我还是以利益为导向的。这里所说的利益可能更加倾向于普世价值,我是需要社会的认同感的,不然我会觉得很孤独。
最近的生活一直很“颓废“,过着黑白颠倒的生活,这可能是缺乏自我控制力吧。按老妈的话说,完全可以把晚上工作的时间移到白天来做的,我也知道这样会好一点,但是白天我就是不想写东西,摔~
学了将近一个月的机器学习了,感觉神经网络真的是一个巨大的宝藏,加上前辈们呕心沥血研发出来的各种工具,简直无往而不利。
这算是把这个月以来的生活回顾了一下,过两天有毕业设计的中期检查,打算检查完回家吃肉去,想想就很美好。

自由落体

那是一个很容易让人陷入其中的应用。
我可以在那里发现许多和我相同的人,仿佛在这个世界上我并不孤单。
但是同时我也知道,那里只是一个虚拟的世界。在现实中依旧没有我们的容身之所。
把虚拟世界带入现实是件恐怖的事情,我得好好调整一下了。

ofo vs mobike — 两大门派横向测评

最近一直在长沙,报了健身房。
由于住的地方离健身房有一段路程,所以就在考虑用哪一种代步工具会比较好。
权衡再三,最后选了自行车代步。反正是去锻炼,路上就当是热身了。
本来是想骑自己的山地车的,但是健身房里不能停车,而且停在外面也不是很安全。所以就打算试试共享单车了。
——————————————————————————————————————–
我一直都觉得共享单车是一个城市发展水平与市民素质整体作用的结果。体验最早也最好的是杭州的小红车,不仅有统一的停车位,而且有专业的管理。就冲这一点,我觉得杭州人民是幸福的。体验最差的要算是深圳的市政公共自行车了,当时腾大旁边有一个自行车泊车位,我一度有想下班以后骑车回家的冲动,结果发现不同区的公共自行车居然不是一家公司经营的,也就是说我把车骑回去了以后根本没法还车,摔~
——————————————————————————————————————–
Continue reading

《编程原本》读书笔记

这一学期确实很清闲。往日最令我头疼的上课任务没有了,但取而代之的是需要自己安排自己的时间了。
打算在这段gap semester里多做一点充实自己的事情。
手边有一本裘老翻译的《编程原本》,正好利用这段时间好好再刷一遍。
这书是12年底买的,当时买了就看了一遍,但确实有很多看不懂的地方。
大一开学的时候,手边也没有什么书,于是就又看了一遍。真心看出新感觉,给人一种豁然开朗的感觉。
想必这次再看,应该也会有所收获的。
程序背后的本原就是数学的各种概念、技术和方法,需要演绎、推导和证明,而绝不是模糊的想法和草率的编码以及蛮力调试。
                                                                                                 ————裘宗燕