排课神器重新上线

排课神器

写在最前

  • 我对你的密码不感兴趣
  • 这玩意不会替你抢课

地址

点此打开

常见问题

为什么要输入 MYSISE 密码?

导入课表用的。

我就是不想输入 MYSISE 密码怎么办

自己手动录入。

就是怕密码怎么办…

别转头,立刻拔掉电脑插头,横着走出宿舍。千万别回头看后面,真的。

故事一

12月14日上线后,第二天陆续看到反馈说看到的是别人的课表…

串号了。

翻 LeanCloud 的 SDK,在 avos-express-cookie-session 里看到这么一段代码:

user = new AV.User;
user.id = uid;
user._sessionToken = sessionToken;
AV.User._saveCurrentUser(user, true);

在主 SDK 中:

/**
 * Persists a user as currentUser to localStorage, and into the singleton.
 */
_saveCurrentUser: function(user) {
  if (AV.User._currentUser !== user) {
    AV.User.logOut();
  }
  user._isCurrentUser = true;
  AV.User._currentUser = user;
  AV.User._currentUserMatchesDisk = true;

  // ...
},

醉了。

马上开工单,然后自己写了个中间件临时救急。

app.use(function (req, res, next) {
  if (!req._avos_session || !req._avos_session._uid) {
    return next()
  }

  var user = new AV.User()
  user.id = req._avos_session._uid
  user._sessionToken = req._avos_session._sessionToken
  user.fetch().then(function () {
    req.user = user
    next()
  }, next)
})

PS:@sdjcw 童鞋看来和我一样有 。。。 和中西文之间加空格的强迫症,哈哈。

故事二

排课神器去年原本部署在自己的服务器。考虑到要节省流量,前端库能用 CDN 的都用 CDN 解决。一开始用的是 staticfile.org,挺全的,版本也挺新。没问题。

今年移到 LeanCloud 上去了。考虑到去年有同学听说有人被盗号后,用尽了自己毕生所有电脑知识来教育我「你可能被入侵了」「你可能被监听了」「你可能被……」顺手上 HTTPS。

本地调试,开发环境调试,没问题。

上线到生产环境,玩命加载中。开控制台,CDN 的内容全部没载进来。

手动打开 CDN 的库,呵呵,七牛你特么逗我

@ideaseed: 1 cdn.staticfile.org 并没有开通https加速。 2 cdn的加速节点多个域名是共用IP的,但一般一个IP 只能有一个https证书,这个节点同时也给12306加速,443端口证书也是12306。 3 如果使用https 加速,请到portal.qiniu.com 申请自己的空间,并开通dn-yourdomain.qbox.me的https 加速

隔壁家用的又拍云就有,你们不会感到着急么……

考察一圈:

找到国外有个 cdnjs.com,不错,试试……稳定性差。国内有人搭了个 cdnjs.cn?Bootstrap 还是老版本……

好吧,全部丢自己托管,反正跑在 LeanCloud 上……