主页劫持恢复作业

今天周六睡了个懒觉,九点半起床洗澡,打算去公司等我昨天买的芯片到货。
然后在路上收到了好基友的消息,说是需要在Windows下面下载一个安装包。我看到那种不三不四的下载站其实是有点犯憷的,不过看基友急着要就偷懒没开虚拟机,直接下载了下载器,帮他拿到了dmg(结果最后那个还不是描述版本的)
安装过程中我已经看到了各种**卫士,**助手,**主页的安装选项框,一一点掉,但是我还是Naive呀,这帮黑产写了那么半天的猥琐套路,难道你说你不让他装,他就不装了?
于是不出我的预料,下载完后我在桌面上果然看到了熟悉的全家桶。找到了几处套路,但是奈何这东西实在太猥琐,还做了页面跳转,我自己实在也是有点力不从心,打算重装来着。
在重装前,我抱着最后一丝希望,搜索了一下解决方法,结果还真的发现了一个神器,一键式操作,分分钟找到了该删掉的东西。下面是软件:
AdwCleaner

Google Authenticator

因为公司的服务器有双因子登录,每次都需要输入Token,这就很麻烦了,于是就打算抽空做一个实体化的Token出来。
话说最核心的部分就是需要利用Secret Key计算出当前时间的Token, Google已经开源了这套算法,看了一下不难,就用python改写了一个出来,打算给树莓派或者MicroPython的板子用。

import hmac, base64, struct, hashlib, time
def get_hotp_token(secret, intervals_no):
    key = base64.b32decode(secret, True)
    h = struct.pack(">Q", intervals_no)
    o = hmac.new(key, h, hashlib.sha1).digest()
    t = ord(o[19]) & 15
    p = (struct.unpack(">I", o[t:t+4])[0] & 0x7fffffff) % 1000000
    return p
def get_token(secret):
    return get_hotp_token(secret, intervals_no=int(time.time())//30)

其实一直想做一个辉光管的显示器的,但是上某宝看了一下价格后想想还是算了…然后打算找个贴片的数码管做,又觉得效果不会太好。现在想到的方案是用MicroPython来做主控,上个集成的数码管就好。
另外,经过无数次被国产的板子坑的经历,我强烈建议如果你想要入门学习硬件,千万不要图便宜选一个国产的仿制版。真的是一分价钱一分货,我当时因为原装的MicroPython没有办法及时拿到货,就偷懒买了淘宝上的仿制品,结果坑多到让你怀疑人生。

python – retrying 重试库

这几天在B站做一个热度预测模型,项目中有大量的网络I/O交互。
项目很快撸完上线运行,开始没什么问题,但是过了几天之后,我发现App偶尔会挂掉。
于是我抽空看了一下日志,发现是消费一个内部Kafka的时候被Connect refuse了,观察了一下原因,感觉是因为负责那套系统的大哥正在拼命迭代系统,每次都会造成不可用。
于是我不得不给App加上异常处理。其实我平常不会这样做的,一直相信Let it Crash才是正道。加上自己写的异常重试处理之后,这个问题果然解决。
不过好日子没过几天,另外一个依赖系统的大哥也开始疯狂迭代了。这次的情况比上个问题要复杂一点,于是我就在网上找了找重试库,结果就愉快地发现了Retrying这个神奇的库。
由于只需要对函数使用装饰器,所以完全不会嵌入代码,造成代码结构的破坏。而且提供的功能也完全满足了我的需求。
非常开心。
 

MicroPython 上手

这个板子其实已经买了很久,并且也被我蹂躏了很多次了。但是为什么说是上手呢?
因为我差不多已经忘完了……
我一直在尝试用Xshell去连接PyBoard的串口,但是不知道为什么Xshell识别不出系统的串口信息,所以就只能下载了一个上世纪神器——PuTTy。
看到熟悉的PuTTy界面,然后选择设备串口(可以在设备管理器中查看),最后记得修改串口传输速率,就可以愉快和PyBoard的玩耍了。
打开MicroPython的官方Document,发现现在手头上啥也没有,能玩的只有板载的LED了。于是写了一个简单的跑马灯,布灵布灵的。

for i in range(1000):
    led = LED(i%4 + 1)
    led.toggle()
    time.sleep(1)

多言数穷 不如守中

大学已经毕业了将近两个月的时间了,这算是第一篇毕业后的文章。相比起我之前写博客的轻松心态,这次其实是有点忐忑的。
临近离校的时候无意中看到了一个B站招人的帖子,觉得好玩就去试了一下。成功入职B站之后,圈子里的朋友自然是一阵嘲讽全开,这帮家伙都觉得B站是家小作坊,但无一例外都觉得妹子挺好,我笑而不语 ^-^
最近分到的任务是做一套CDN分发的预测系统,这个我之前是真的没有做过的,完全是摸着石头过河的状态,每天都有无数Idea冒出来,但仔细一想很多都无法实际使用。所以心情多少是有一点起伏的。
这几天在B站的感觉非常好,没有那么多的工单流程需要去找,也没那么多的规矩需要去遵守,自己可以随意发挥真的很棒。而且我觉得福利什么的也完全不输AT,如果我是一个二次元老粉的话,也许我还真的就留在这里不走了。
总之,你说情怀是什么?这玩意还真的可以当饭吃。

Sigo sí o sí

世界上有那么多的城镇,城镇中有那么多的酒馆,她却走进了我的。
                                                                                                           –《卡萨布兰卡》
我发现就算是我不想结束我的大学时光,它也依旧会从我的指缝中溜走。
这个月初,我和大学里的几个好朋友来了一场毕业旅行,从西宁一直驱车到了敦煌,然后一路南下。
Continue reading

树莓派使用Ngrok进行内网穿透

这个东西其实早在写《少数派报告——树莓派搭建Tor匿名站点》的时候就已经搭好了,但由于Tor网络不稳定,那个站点就没有继续做下去,这样内网穿透的服务也就用不上了。(Tor本身就可以提供内网穿透的,捂脸)
算算时间也过去了好几个月,一直想找个机会把搭建的流程记录在这里,免得以后时间长了忘记。正好今天没什么事情,正好测试一下之前按照的服务还可不可以用。
Continue reading

机器学习入门

其实机器学习这个门我感觉我已经入了好几年了,但总是觉得没有找到精髓。
最近下了好几个冰激凌的血本买了西瓜书,发现可以系统的学一下这方面的芝士了。本开始打算在博客上面记录以下的,但看了几天书之后我发现,在markdown上写那些公式太麻烦了,我还是找个本子自己嗨吧。
过几天要毕业了,打算找个地方去自驾游。再往后就要考虑是不是gap一年的事情了,希望这两天可以有个好选择吧。

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发的气话。他帮了我那么多,真是很不可思议我当时怎么那么犯浑,现在看到真的很后悔,很想找个机会可以跟他亲自说声对不起。回忆可能就是这样,我做错了许多事,也做对了许多事,希望可以吸取之前的教训吧。
最后,今天是母亲节,祝妈妈节日快乐,天天开心。