这个嵌入式工程师一次次被github警告!原来如此。。。

640?wx_fmt=jpeg

小编按

世纪伯乐是嵌友的老朋友了,年前他再一次收到了来自github的警告邮件,这到底是怎么回事呢?一起听他来说说。。。


有好多朋友很好奇,上次已经有一波被github警告的事儿了,我是怎么又被github封号了的。。。


640?wx_fmt=png


640?wx_fmt=png


正好外面下着鹅毛大雪,让我慢慢来谈谈这个小故事。代码和数据我都已经下架了,这里就算我故事的结尾,冒个泡装个逼,算是个技术分享吧。

640?wx_fmt=png

事情要从当年美工怀孕生小孩去了说起,公司美工还是个能画图,能ps,能敲html、css、js,懂php,能上linux的大牛,这边公司项目催着赶工,没有美工的我只能硬着头皮用美工留下的素材,自学html、css、js,在3天内赶工上项目。


毕竟临时抱佛脚,画图和ps肯定是不行的,身为一个嵌入式程序猿,学习html,css,js还是很快的。接着很长一段时间,我就这么硬着头皮顶上了公司的前端美工,虽然css代码我肯定调不了,但是我可以去github上抄啊~


640?wx_fmt=jpeg

身为一个做底层的,记不住那么多html小细节的情况下,很快,研究前端代码的注意力就放在了js上,而做了很多之后也开始震惊,现在的前端代码一点都不简单,各种强大的前端框架,我就是来顶包几十天,那些框架我肯定是不会去看的。但抛开前端框架不谈,html5+css3+es6的原生前端代码,能实现的事情就已经快顶上整套站点了。支持元编程技术和eval的JavaScript,超高的灵活性和自定义语法的玩法,根本就是一个几乎媲美lisp复杂度的东西。尤其在了解了websocket和websql之后,如果再配合一个严格意义上不属于前端工作的chrome插件代码。我发现整套站点甚至可以在完全不使用后端代码的情况下实现出来。


因为很早期就学习过lisp语言,读过《SICP》,学过scheme和common lisp。而JavaScript语言,几乎是一个模仿C风格的lisp,玩lisp的时候,代码生成器、宏语言、多级宏代码早就玩得很顺了。在不使用任何后端语言辅助的情况下,用JavaScript语言编写整套站点,思维方式与lisp模型一样,我只是需要多几层预处理器。js作为一个C风格的lisp语言,相当多的地方都有着eval的影子,那这事儿就好办了。


然后后面就是我第一次被github发邮件警告的故事了。github pages功能可以支持github库里的数据http推送服务,而且使用官方提供的接口,可以转挂一个域名到github pages。我先使用github pages功能,纯静态的html5+css3+es6的写法,写了一个纯静态站点。因为需要让js拿到数据,当然就不能走常规的html标签请求数据。而因为我从最一开始就没准备接触任何前端框架,虽然我也知道ajax,但我选用的还是js原生代码,xmlhttprequest做js跟http协议数据通信的入口,github pages当然就是按部就班地把库里的数据按照文件系统的路由结构推送给我。我这里玩的一个小花样就是通过js编写一个类似eval模型的另外一套语言模型的小型解释器,解释器语法设定则是读取资源文件的路径,通过路径命名和文件命名、文件名的分隔符、分隔符位置的方式解析该文件资源的定位。这样只要文件系统的路径和文件名按照我设定的语法规则起名,一个简单的github pages静态数据库就实现出来了。


接下来就是站点该展示些什么呢?玩了一点小玩意儿,把腾讯漫画和网易漫画的库爬了下来。然后按照我设定的路径命名模型,通过一个脚本,将所有漫画图片资源按照该语法模型重组了一下。这其实就是一个简单的预处理工作,然后分到不同的项目,不同的库,上传到github上。毕竟拖了几百GB的数据,一个库还是承担不了的,哪怕一次git push都会不停地超时中断。熟悉我的会了解到,有一段时间我一直在发一个我自己写的漫画小站,我也没什么好推广的。毕竟基于github pages的http静态推送服务,整套站点后台没有服务器,没有数据库,仅靠前端代码就支撑了整个站点。我是没有维护成本,也不花一分钱的。


做过前面的工作后,很长时间里github都没有多说什么,我也没收到什么警告。而之后我得寸进尺的第二步操作,就是大家了解的我被github警告的第一个事儿了。


现在的视频网站大体上都使用两种视频加载方式,使用adobe flash player插件,或者使用html5原生的video标签。如果能将静态视频资源放到github pages的http推送上,其实这事儿并没有那么困难。但是github项目就不允许单个文件超过5MB,如果个别文件超过5MB会给警告,超过10MB直接无法上传。无法存放大文件,我怎么用静态代码写站点呢。经过很长时间的摸索,通过我自己编写预处理代码,将视频数据分片的方式,提前将单个视频文件分片数据,一个视频是一堆碎片保存到一个文件夹里的方式。再添加一套跟上面套路一样的针对视频文件处理的路径命名规则,添加js的处理代码。


这样我就能在没有后端代码的情况下,没有后台服务器,没有公网ip,没有本地存储,不需要维护流量带宽,仅支持http静态数据推送的环境,写出了一个按流播放的视频站点。


这个站点上就没有去爬谁的数据了,单纯是我收藏的电影、动漫、视频等,我拿他当随时随地播放的云盘来用了。速度还每秒5MB多起,简直爽翻了~


当然,后面的故事你们就清楚了,我被github发信警告删资源,当时我上传的视频资源已经达到470GB多了。迫于资本主义的淫威,我屈服了,然后就删库删代码了~


既然漫画这种大量的图片资源不让我放,视频这种很大的二进制资源不让我放,我用别人的资源总行了吧。就这样,我又写了一个漫画小站,这次我只有代码,没有图片,图片链接使用别的网站的图片链接。写完这样一个非常传统的山寨漫画网站之后,我感觉非常无趣,一点技术含量没有,链接经常失效,我又没兴趣维护,本来就是来玩的,也不准备挂广告卖钱。再说了,我这么一个没有后端的畸形站点,广告貌似都挂不上吧???


停滞了一段时间之后,我想到了一个新玩法,首先是盯上了我经常上的黑白漫画等几个质量不错,没什么太多垃圾,而且后台没有使用cookie,没有使用签名时效等的小山寨漫画网站。简单分析了一下他们的前端代码。写了一个简单的爬虫,不爬资源,只爬数据列表和资源结构。再稍微多上一步,在我自己家里的服务器上写了一个对所有漫画列表的重新爬取和图片资源验证是否404等简单的,类似登录验证的工作。最后再通过间隔时间验证,验证后通过配置好证书的'git add-A; git commit -m "自动生成备注"; git push'自动提交站点更新。通过这样,成功实现了一个没有服务器,没有后台,没有后端代码,甚至没有任何图片资源的漫画站点。因为验证代码的存在,我的漫画站点是没有打不开的那种垃圾链接的,而且站点也会自动更新,盯着的几个站点自动更新,我甚至后来自己都忘了这事儿了,程序默默地在我家里的服务器上跑着,我自己都很久没进过自己做的那个站点了。


本以为又没有大资源,而且还都是写辅助的数据列表,都是github那边能看到的文本数据,不至于找我麻烦了吧。


结果还是来找我麻烦了,这好几个小站的数据列表更新,再加上我后台程序的定期git push,好几千次,近万次的git push还是引起了github官方的注意。让我删项目来了。。。


项目已删,本来后来那个站点我自己都没怎么进过了,这里面除了折腾和技术研究,只有收获,也没什么损失。基本都是算法在处理,我也没在数据处理和维护上花过太多的精力,只能说,很多事儿哪怕技术上能完成,“人”的问题才是真正的瓶颈。


我还会继续折腾出一些更好玩的玩法的,虽然免费的不让玩了,正经做收费项目的时候,这些积累早晚还都是用得上的嘛~


If it's not fun? why do it?

640?wx_fmt=jpeg


640?

1.2019年第1期《单片机与嵌入式系统应用》电子刊新鲜出炉!

2.如何评判STM32各个MCU的性能?

3.连好莱坞都在讨论物联网。。。

4.我是MCU开发者,内存屏障和我有关吗?

5.从业15年的电源工程师转身后的哀叹。。。

6.想去Dialog拿2019年终奖不?

640?wx_fmt=gif


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介 本书论及了嵌入式工程师职业生涯的方方面面。首先分析了嵌入式工程师必备的技能条件,讲述了掌握这些技能的学习途径。然后结合实际讨论了设计小型嵌入式系统时经济使用的自底向上方法和设计大型嵌入式系统时经常使用的自顶向下方法。最后讲述了嵌入式工程师的3 种职业道路—做自由职业者、为小公司工作以及为大公司工作,分别讨论了每种职业道路的优热和风险,为嵌入式工程师的职业选择提供了理论指导和借鉴参考。 本书不仅适合各层次嵌入式技术人员阅读,而且对于想要成为嵌入式工程师的其他职位人员,甚至是在校学生,都具有实际的指导意义。 目录 第1章 引言 1 1.1 关于本书 1 1.2 什么是嵌入式工程师 2 第2章 学习与教育 4 2.1 进入嵌入式工程领域的传统教育模式 4 2.2 非传统教育模式进入嵌入式工程领域 9 2.3 如果想编写嵌入式软件,那么至少要学习多少电子学知识 18 2.4 教育方面的陷阱、死胡同,以及必须规避的培训骗局 21 2.5 必需掌握的实践技能 25 第3章 自学自底向上的设计方法(小型嵌入式系统) 28 3.1 目标读者 28 3.2 intel 8051微控制器及其变种 31 3.3 atmel avr微控制器 39 3.4 ti msp430微控制器 46 3.5 microchip picmicro微控制器 52 3.6 满足特殊需求的异常架构微控制器 58 3.7 我应该学习什么编程语言呢?c++、c、汇编语言在小型嵌入式系统中 61 3.8 防盗版开发工具简介 65 3.9 基于avr微控制器和免费工具的8位嵌入式项目实例 67 第4章 自学自顶向下的设计方法(大型嵌入式系统) 93 .4.1 目标读者 93 4.2 嵌入式x86解决方案 94 4.3 arm处理器 103 4.4 powerpc 112 4.5 linux操作系统 114 4.6 ecos操作系统 121 4.7 面向大型嵌入式系统开发,应该学习什么编程语言 123 4.8 处理器选择的最后建议 124 第5章 做自由职业者 127 5.1 你适合做自由职业者吗?其中的风险与好处 127 5.2 从兼职工作到自由职业者——记账、纳税与工作量 128 5.3 寻找并维护客户的方法 130 5.4 迭代式项目:无休无止的噩梦 133 5.5 适当地为自己的服务定价 136 5.6 为自己建立良好的工作实践 138 5.7 不仅仅是握手:合同的重要性 140 第6章 在小公司工作 143 6.1 分析自己的目标:小公司的优势和风险 143 6.2 如何获得一份工作 144 6.3 小公司里的责任和压力 146 6.4 在小公司里的个人原动力 148 6.5 严格管理有限的资源 149 6.6 任务细目分类:一周的典型工作 153 第7章 在大公司工作 154 7.1 分析自己的目标:大公司的优势与风险 154 7.2 如何获得一份工作 155 7.3 全球化:项目外包与临时工作签证 157 7.4 管理规程与个人:不要触犯了公司的管理规程 162 7.5 管理与营销的关系 166 7.6 任务细目分类:一周常见工作 168 第8章 结束语 170
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值