整理一下除了工作项目外做过的个人项目,有的是解决问题的工具,有的是练手造轮子,有的是把灵机一动的idea实现出demo
在工作中解决痛点,一些提高效率的小工具,包括:
-
呆过的第一家公司刚开始做微服务转型,但是分布式系统的基础设施不完善,测试环境天天出问题。为简化测试环境问题排查,我写了个监控工具(其实是扫描器),定时多线程扫描公司内各个微服务,发现系统挂掉则邮件报警(使用Java)
-
加班打车/吃饭报销、到处找发票太麻烦,写过个电子发票收集工具,每次消费完了把发票发到指定邮箱后,工具会自动搜集指定邮箱下的发票、下载到电脑上的指定目录,一键批量打印。后来去了大厂发现内部有类似的服务,而且是和报销系统打通的
-
为简化生产环境问题排查,我写了个环境诊断组件,获得老板认可后集成进发布包。见博客:https://seeflood.github.io/%E5%A6%82%E4%BD%95%E6%8F%90%E9%AB%98%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5%E6%95%88%E7%8E%87-%E7%BB%99%E9%A1%B9%E7%9B%AE%E5%8A%A0%E5%85%A5%E4%BE%9D%E8%B5%96%E7%8E%AF%E5%A2%83%E6%89%AB%E6%8F%8F%E5%99%A8/
- chrome debug插件
https://github.com/seeflood/console.watch
刚工作的时候前后端都要写,感觉前端debug别人的代码/开源框架比较烦(很多前端代码写的和套娃一样,可读性不高),写过一个chrome插件,提供“当对象的属性被修改时,控制台进断点”。后来发现做爬虫、分析别人的网页的时候也能用上
-
自动生成sql建表语句的工具(Vue+jQuery);
拿vue当模板引擎做的,一个根据数据库表设计生成DDL建表语句的工具。
当然现在不用了,Visual Paradigm真香 -
自动生成前端埋点代码的工具(Vue+jQuery);
写前端的时候还得负责加埋点代码,很恶心,于是搞了个生成埋点代码的工具。
同样是拿vue当模板引擎,配下要拦截哪些ajax请求,能自动生成埋点代码(代码逻辑:拦截指定ajax请求、抠出来需要的字段、发到后端打日志)
生成的埋点代码不是这里加一句代码、那里加一句代码,而是一个独立的文件,拦截页面所有ajax请求、过滤出感兴趣的事件、做埋点逻辑。
代码放在了https://github.com/seeflood/easy-life/blob/master/src/main/js/recorder/template.html
后来换公司、不需要自己埋点了,这个就没再维护。现在看来这个思路可以优化:不仅可以拦截ajax请求,还可以拦截感兴趣的dom事件
自己造的一些轮子/玩具
-
PUA-RPC
https://github.com/seeflood/PUA-RPC
一个java的RPC框架,特点是具有PUA功能:每次RPC调用会打日志,日志中随机加入一条PUA语录以鼓励程序员,而如果出现了RPC调用失败/报错/性能问题等bad case,会在日志中加入批评程序员的话 -
分布式定时任务调度系统
毕业设计项目,使用Go语言实现的一个分布式定时任务调度系统,基于Etcd做存储,去中心化的调度(每台机器到了时间都去抢锁,谁抢到谁执行,没有中心化的调度节点),支持多种容错策略(at least once,at most once等)
做的过程中学了一些分布式系统的理论才意识到分布式系统中的时钟是非常不可靠的东西(除非用原子钟),所以这种去中心化调度其实是有很多问题的,因此不看好同样架构的Elastic-Job(一个开源的分布式定时任务调度框架) -
javascript容器库
https://github.com/seeflood/jContainer
javascript容器库,包含常用容器及相关算法 -
Copy-Paste-Data-Structures
https://github.com/seeflood/Copy-Paste-Data-Structures
一个java和Go的高级数据结构库,设计目标是任何数据结构都能单独复制粘贴出来、单独使用,文件和文件之间没有任何互相依赖,以便在打online-judge比赛(比如leetcode周赛,google比赛)的时候能够直接粘贴使用,或者把某个数据结构粘贴到自己的工作项目中做魔改。
- Advanced-Concurrent
https://github.com/seeflood/Advanced-Concurrent
一个java的并发库,刚开的坑,完成度不高,现在只实现了“图线程池”框架,用户只需描述任务之间的拓扑关系、由框架来自动进行多线程调度。
- 前端mvvm框架
学习vue的时候看了原理自己写了一个简易版的mvvm框架,时间太久代码找不到了……
核心就是个数据双向绑定,dom变了改内存变量,内存变量变了改dom
网友评论