感谢您打开这个页面来了解我~ 90后, 现居广州, 本科就读于广州大学, 痴迷于计算机技术.

1. 初中和高中

1.1 VB 和批处理入门

初一接触计算机, 看到一本计算机教材 << 信息技术 >> , 如获至宝! 翻了一遍又一遍, 家里买了电脑之后, 就开始了宅在电脑前的生活:

最初接触了 VB 语言, 发现能写 GUI 程序, 很简单, 拖控件在事件添加代码, 觉得非常神奇... 然后歪点子出来了: VB while 死循环 MsgBox (无脑弹窗). 看到桌面的 一键清理垃圾.bat 的脚本, 右键编辑 (当时是XP系统), 记事本打开后看了代码, 百度搜索后才知道这玩意叫批处理, 然后又学到了 shutdown 命令, 把身边的朋友整了一下下哈哈 (关机).

1.2 农场外挂

再后来, 整个世界都是 QQ 农场的天下, 当时涌出了很多外挂软件, 比如 QQ 伴侣啊, QQ 农夫三全之类的. 我好奇它的原理, 苦于没人教, 到处找代码, 看到一大堆的 Windows API 调用声明, 从入门到放弃.

看到 QQ 农夫三全 (应该没记错) 泄露了一份源码, 是 Delphi 写的, 恰巧当时搜索的时候, 经常听到 Delphi 7 这个曾经风靡一时的 IDE , 下载下来安装破解, 感觉比 VB 好多了, 装了 CnPack 插件, 开始学习 Delphi 的 VCL, 那时候我应该在读高中了.

之后又开始拖控件之路: 在网上找控件, 安装, 切换皮肤, 非常有成就感. 过后也可能因为平时看的东西太多, 开始捣鼓 Linux: 装 Ubuntu 10.04, 装 Debian 5 (还是6) , 瞎折腾了很长的一段时间...

说句实话, Debian 真心好用, 当时捣鼓了 Ubuntu 的界面啊, 经常会出现内部错误, 印象中那个时候有 3D 桌面了. 换了 Debian, 搭载 KDE, 真的很美, 用了很长的一段时间.

有了 Linux, Delphi 又不能跨平台, 然后又找到了 Lazarus. 这玩意很厉害, 虽说远达不到工程级, 但是人家跨平台啊, 耐折腾...在 Linux 下, 你可以编译成 Qt 的 GUI, 也可以编译成 Gtk 的...后面不就人家还有安卓版本...

我拿它折腾过 Windows CE 程序, 为我家里的导航仪做一个引导器, 可以读取配置文件, 显示图标, 点击图标就可以加载地图程序. 不过可能是 FPC 这个编译器的原因, 记得当时编译出来的程序, 体积大, 而且运行起来不够流畅, 可能是比较吃内存...

初中高中, 一直在折腾, 却学都没学进去, 泛而不精. 还记得 Delphi 7 是没有 JSON 类库的, 要自己下载, 当时的 SuperObject 非常流行, 打开源码发现看都看不懂. 现在知道原来就是编译原理里面的状态机词法分析, 逐个字符解析...那个年代, XML 好像很流行, JSON 还没大规模普及? 太久了, 近 10 年前的事情...

回忆起看农场外挂写外挂的时光, 当时对我来说完成一个外挂软件真的是不可能的. 需要考虑的东西太多太多, 书看得太少, 很多知识都不懂. 倒是学会了调试 QQ 空间的登录 js, 逐行调试, 然后写出了很挫的代码, 链接在此 (居然还能找到) :

https://www.cnblogs.com/lofanmi/archive/2012/03/24/2415405.html

登录完, 还有个更难搞的. 农场外挂有一个很关键的地方, 就是对服务器的请求数据都需要做校验, 游戏的做法是在里面写死一个变量 farmKey , 请求偷菜这些接口需要有 farmKey 去计算出一个值提交到服务器上. farmKey 本身是一串无规律的字符串, 大小写字母和标点符号混合, 只能反编译 Flash 去寻找. 如果没有及时更新的话, 那很可能是会被封号的.

https://www.cnblogs.com/lofanmi/archive/2010/08/27/1810124.html

CommonData.getKey = function () : String{
    var _loc_1:String = "g@iG6im^&Ado&*igYn!azh1";
    var _loc_2:* = CommonData.serverTime.toString();
    var _loc_3:* = parseInt(_loc_2.substr((_loc_2.length - 1)), 10);
    var _loc_4:* = _loc_1.substr(_loc_3);
    return _-SF._-S6(_loc_2 + _loc_4);
}// end function
uses
  DateUtils, IdHashMessageDigest, StrUtils;

 function GetFarmKey(Time: TDateTime): string;
 var
  md5: TIdHashMessageDigest5;
  keystring, farmtime, substr: string;
 begin
  keystring := 'g@iG6im^&Ado&*igYn!azh1';
  farmtime := IntToStr(DatetimeToUnix(Time - 8 / 24));
  substr := RightStr(keystring, (Length(keystring) - (StrToInt(farmtime) mod 10)));
  md5 := TIdHashMessageDigest5.Create;
  Result := LowerCase(md5.AsHex(md5.HashValue(farmtime + substr)));
  FreeAndNil(md5);
 end;

1.3 偷老师 PPT 课件

期间还写过一些程序, 在老师上课的电脑后台运行, 一插入 U盘 , 然后打开 PPT 课件的时候, 把老师的 PPT 偷下来放到某个文件夹中...现在想想自己太坏了哈哈哈...

还有为了解决装机用的小工具, 把暴风影音的解码器打包之类的...

2. 大学

2.1 哪有

我的大学是在代码中度过的.

一次偶然的机会, 看到了学校的 失物招领平台 页面报错, 最后找到管理员修复错误. 或许是缘分, 后来得知是一个创业团队, 我约了他们一起谈心喝饮料, 就这样加入了.

团队的老大叫我学习 PHP , 我看了 2 天, 他就开始丢东西给我做. 当时觉得很兴奋, 每天晚上在工作室待到 11 点才回宿舍洗澡, 有空就 9点多 跑过去研究, 相比 GUI 程序, PHP 结合 HTML, CSS 和 JavaScrpit, 做起东西实在太快了...

就这样, 我们开发出了全广州大学最牛逼的公众号, 哪有. 它是一个校园服务平台, 涵盖了大学生活中的方方面面. 你可以在上面查成绩, 查课表, 查四六级, 查公交, 查学校办公电话, 还有吐槽的地方... 嗯, 学校的每个人, 可以说都关注了. 也因为名气特别大, 我们当时也接了挺多广告, 捞了不少钱.

目前, 公众号还在运营, 几个月前我用 Go 重写了一遍, 具体可以看我的 GitHub, 链接在这里:

前端程序: https://github.com/Lofanmi/v3nayou-spa
后端程序: https://github.com/Lofanmi/v3nayou

大学期间, 也做过挺多外包, 中国移动, 学校的图书馆, 还有订餐小程序等等...零零散散, 也算是学到了不少的业务经验.

这个团队给我收获很多, 我们相处得特别愉快! 真的感谢这几位师兄师姐~

2.2 ThinkPHP

大学期间, 由于经常接触 ThinkPHP 框架, 尝试阅读其中的源码, ThinkPHP 3 的结构上确实是不太好, 刚好过后 ThinkPHP 的创始人 流年 , 打算重新开发 ThinkPHP 5 (其实是版本 4), 或许是兴趣, 在我不断的 Pull Request 下, 一次又一次的提交代码请求合并分支, 坚持下来, 我加入了 top-think 组织.

没加入之前, 我一直主导着 ThinkPHP 5 的单元测试, 每个 class , 我都给出了非常完善的单元测试. 每一个语句, 分支, 循环, 异常, 特殊输入, 从不放过, 争取达到 100% 的覆盖率. 项目的覆盖率不断提升, 受流年邀请, 加入了 ThinkPHP 的开发 QQ 群, 加入 top-think 组织共同维护 ThinkPHP.

毕业后由于工作, 很少去维护了, 但有时间还是会看一看, 刷刷群里讨论的问题, 试着给出解决方案.

2.3 前端

可能大学期间做外包和参与的缘故, 我学习了前端的知识, 学页面布局, 写页面. 我还接触了 Vue.js , 再后来工作接触前端的同事, 学习了 ES 5 / 6 / 7 , 不得不说, JavaScript 越来越强大了, 写起来也是越来越舒服, 最喜欢的新特性, 第一个是 箭头函数, 第二个是 反引号的字符串...

3. 反思

想想吧, 自己活得太潇洒, 好像接触了很多东西, 但实际上却很多深层次的东西都不了解. 工作的时候, 发现自己看的书太少, 也在试着慢慢补回来.

嗯, 像网卡, TCP/UDP 这些计算机网络知识, 数据库原理, 还有上面提及的编译原理, 甚至是计算机的组成原理, 数字电路, 算法和数据结构等等, 我得多多补充这方面的知识. 很多文章比喻说, 这是内功, 需要程序员好好修炼.

4. 目标

  • 努力运用技术给用户和社会带来价值
  • 更熟悉计算机底层技术与架构
  • 学习更多的前沿技术: Docker, k8s容器技术, 分布式, 高可用集群, 数据库等
  • 阅读更多类型的书籍而不仅仅是技术书籍
  • 学会理财投资
  • 坚持写作
  • 学吉他学尤克里里

学还是要有所精, 我得继续努力! 除了PHP之外, 多多阅读其他方面的书籍, 接触更多的技术.

5. 我常常出没的地方

GitHub: https://github.com/Lofanmi
伊猫: base64/bG9mYW5taUBnbWFpbC5jb20=

6. 致谢

谢谢您, 全部看完了 ^_^ !

仅有一条评论
  1. 椰子水
    椰子水 :

    大佬的这个个人网站有开源吗?想借鉴学习下