
编程于我不是游戏 里面有伤害 也有隐秘的幸福

编程于我不是游戏 里面有伤害 也有隐秘的幸福
周五下单订了一块带OLED的单片机模块,加钱寄了SF,于是周六就收到了东西。
之前用Python很快的就实现了整个算法,觉得还挺简单的。但是换到用C写就出了很多问题,没有了方便调用的库,所有的东西都得自己写。
于是我愉快地肝了一个通宵,终于手拍出了没有任何依赖的Hmac-sha1。以现在的情况来看,一切运转良好,只需要再加上一个RTC的功能就可以正常工作了。
另外,这个板子还自带Wifi和蓝牙的功能,打算等回家了试一试。
没有奇迹,全靠拼命。
今天周六睡了个懒觉,九点半起床洗澡,打算去公司等我昨天买的芯片到货。
然后在路上收到了好基友的消息,说是需要在Windows下面下载一个安装包。我看到那种不三不四的下载站其实是有点犯憷的,不过看基友急着要就偷懒没开虚拟机,直接下载了下载器,帮他拿到了dmg(结果最后那个还不是描述版本的)
安装过程中我已经看到了各种**卫士,**助手,**主页的安装选项框,一一点掉,但是我还是Naive呀,这帮黑产写了那么半天的猥琐套路,难道你说你不让他装,他就不装了?
于是不出我的预料,下载完后我在桌面上果然看到了熟悉的全家桶。找到了几处套路,但是奈何这东西实在太猥琐,还做了页面跳转,我自己实在也是有点力不从心,打算重装来着。
在重装前,我抱着最后一丝希望,搜索了一下解决方法,结果还真的发现了一个神器,一键式操作,分分钟找到了该删掉的东西。下面是软件:
AdwCleaner
因为公司的服务器有双因子登录,每次都需要输入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没有办法及时拿到货,就偷懒买了淘宝上的仿制品,结果坑多到让你怀疑人生。
这几天在B站做一个热度预测模型,项目中有大量的网络I/O交互。
项目很快撸完上线运行,开始没什么问题,但是过了几天之后,我发现App偶尔会挂掉。
于是我抽空看了一下日志,发现是消费一个内部Kafka的时候被Connect refuse了,观察了一下原因,感觉是因为负责那套系统的大哥正在拼命迭代系统,每次都会造成不可用。
于是我不得不给App加上异常处理。其实我平常不会这样做的,一直相信Let it Crash才是正道。加上自己写的异常重试处理之后,这个问题果然解决。
不过好日子没过几天,另外一个依赖系统的大哥也开始疯狂迭代了。这次的情况比上个问题要复杂一点,于是我就在网上找了找重试库,结果就愉快地发现了Retrying这个神奇的库。
由于只需要对函数使用装饰器,所以完全不会嵌入代码,造成代码结构的破坏。而且提供的功能也完全满足了我的需求。
非常开心。
这个板子其实已经买了很久,并且也被我蹂躏了很多次了。但是为什么说是上手呢?
因为我差不多已经忘完了……
我一直在尝试用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,如果我是一个二次元老粉的话,也许我还真的就留在这里不走了。
总之,你说情怀是什么?这玩意还真的可以当饭吃。
世界上有那么多的城镇,城镇中有那么多的酒馆,她却走进了我的。
–《卡萨布兰卡》
我发现就算是我不想结束我的大学时光,它也依旧会从我的指缝中溜走。
这个月初,我和大学里的几个好朋友来了一场毕业旅行,从西宁一直驱车到了敦煌,然后一路南下。
Continue reading
这个东西其实早在写《少数派报告——树莓派搭建Tor匿名站点》的时候就已经搭好了,但由于Tor网络不稳定,那个站点就没有继续做下去,这样内网穿透的服务也就用不上了。(Tor本身就可以提供内网穿透的,捂脸)
算算时间也过去了好几个月,一直想找个机会把搭建的流程记录在这里,免得以后时间长了忘记。正好今天没什么事情,正好测试一下之前按照的服务还可不可以用。
Continue reading
其实机器学习这个门我感觉我已经入了好几年了,但总是觉得没有找到精髓。
最近下了好几个冰激凌的血本买了西瓜书,发现可以系统的学一下这方面的芝士了。本开始打算在博客上面记录以下的,但看了几天书之后我发现,在markdown上写那些公式太麻烦了,我还是找个本子自己嗨吧。
过几天要毕业了,打算找个地方去自驾游。再往后就要考虑是不是gap一年的事情了,希望这两天可以有个好选择吧。