一些成功或者未成功的项目或者实验,一些奇思妙想一些烂尾的实践
如果要有一个标题的话就叫《我在日新打过的杂》

日新网手机客户端后台&接口

这是一个标准的带接口的CMS系统,附加了安卓的推送管理功能(接入第三方平台)。
赶上Laravel5发布,一开始准备用Laravel5完成整个项目,不巧dingo的API for Laravel不支持Laravel5,降级到Laravel4。后来一开始又死活注册不了Laravel的Service,项目时间紧急,改用Slim+LaravelORM实现。
这是第一次真正尝试使用Composer来管理包依赖、广泛使用开源库和使用Composer的autoload(那么这才算Laravel入门了吧Orz)。
LaravelORM用起来很爽,Composer也很方便。现在使用了越来越多的Laravel自带库,那么下一步还是用Laravel来重写整个项目吧。其实推送平台也可以考虑自己搭一个。
http://app.ecjtu.net/
http://app.ecjtu.net/admin/
https://github.com/EcjtuNet/AppServer

校图书馆辅助工具

这是一个Python+Flask实现的爬虫&数据再展现应用,目前核心功能所需的数据已经完全抓取到,就差前端了hhhhhhhhh
在做这个项目的过程中第一次系统学习了正则表达式,Python的正则用起来也很方便。抓HTTP包分析登录流程和搜索流程耗费了大量时间,这个过程中也学到了很多HTTP方面的知识。学校的图书馆网页查询一次几乎要耗费1秒以上时间,所以不得不针对用户的查询做了缓存。任务计划这一块还有点坑,什么时候填了吧。
这一套下来就目前的水平简单的模拟登录和爬虫抓取各种网页数据应该不成问题了。
https://github.com/EcjtuNet/lib_ecjtu_net

日新网用户中心

本来是想做一个单点登录(SSO)&OAuth的三方登录&用户中心,后来一再缩水成了单点登录+用户数据接口。
使用了最简单的单点登录方式,登录成功之后用得到一个Token存在Cookies里,*.ecjtu.net的应用直接读Cookies拿到Token去用户中心验证一下就ok了。
目前用户中心只被手机客户端使用了(本来就是用来干这个的),我也要退出日新了那么应该不会有人维护了,本来还想给做一套SDK装装逼的……
http://user.ecjtu.net/
https://github.com/EcjtuNet/UserCenter

一个nodejs的队列系统

受Teambition面试题的启发,想做一个基于nodejs的队列系统。https://github.com/teambition/Hire
主要考虑:

  1. 分布式
  2. 持久化
  3. 性能
  4. 内存

分布式没什么好说的,hash之后将请求分配给后端服务器就行。准备用C扩展来实现链表存储队列,毕竟可以手动回收内存。大致思路如下:

-------------------
| 内存中的队列 | --定时备份-->> 磁盘
-------------------
| 磁盘中的队列 |
-------------------
内存中的队列设置一个上下阈值例如2w-10w条,超过10w条自动写入后5w到磁盘中的队列,少于2w将磁盘中的队列读入5w。需要考虑磁盘写入和读取的性能。
通讯协议参考Redis的实现,快速而且人类可读。
本来想采用json作为数据结构存储,后来发现是作大死。考虑每条消息等长1K,便于IO操作,毕竟占用空间不重要,一条队列消息才多大点。
磁盘中的队列和内存中的队列备份到磁盘的数据其实是一样的,可以重用。

微信平台点餐系统

接外面的单子做的一个在线点餐系统,需求包括菜品展示、库存、预订、下单、结算、上传照片分享到朋友圈等。使用Laravel实现所有功能,用了一个WechatFilter获取用户信息(微信接口)。负责了除前端以外的所有工作(包括设计23333)。
这是一个非常普遍的电商系统,没什么特别的,但是完成了一个完整的项目心里面十分舒坦,解决技术问题和完成一个完整的项目果然是不一样的。
https://github.com/wtbhk/daqiangdiao

大江网智王活动微信服务端

一个微信的后端,当时刚接触nodejs就干脆直接上,不出所料果然写成了一个大金字塔。
线上运行良好,没出什么问题。
https://github.com/wtbhk/yzdd

日新失物招领的接口API

年少无知居然把数据库密码给传上去了,不过整个php文件两百行短小精悍写得还不错。
https://github.com/EcjtuNet/swzl_ecjtu_net/blob/master/api.php

饭卡、课表、成绩查询功能

从大二开始做的,各种乱七八糟已经不想管了。后来看到http://gotit.asia/,简直是榜样,准备合并重构成日新服务,顺便可以接入用户中心。

谷歌多国语言翻译

用来起名字ID的时候用的小工具,将原文翻译成拉丁系多国语言,没什么技术含量。原本托管在Sinaapp,后来谷歌被墙了就没管了。
https://github.com/wtbhk/createid

日新招新现场排号程序

脑洞类作品,也没什么技术含量。日新招新采用6人群面的方式,进场之后扫描二维码拿到排号,主持人按排号来点人面试。技术人员可以在场设置平均每组时间和当前组,用来预估每个人的面试开始时间。
这个程序还出了点乱子,主要是有人看到预估22:00就走掉了,等21:30回来发现面试已经结束233333,后来调整了一下各种参数第二天效果还行。

http://arranging.ecjtu.net/
https://github.com/EcjtuNet/arranging

图书馆荐购计划

校方似乎不大热情,2015还要不要开展……
https://github.com/EcjtuNet/Books-2014

用一个树莓派带整个日新网

我闭嘴