Gracece's Blog

生命不息,折腾不止。

六月网站折腾杂记

许久没有更新博客,博客都要长草了...
不知不觉又是一个学期,其实现在已经是复习周了为何我还是没有进入复习的状态啊。

前一阵子将班级网站的代码整理了一下,所谓整理,也就是把原来随意性很强的代码稍微整理下,或者包成一个函数,使它看起来不那么随意。其实结果还是差不多,没有学习如何管理一个项目(因为现在基本都是我和另一个同学在玩,写的东西也是互不干扰,所以基本没有团队分工合作可言),也没有具体看对于一个php的项目要怎样更好地组织代码,所以整体还是相当凌乱,有空还是得多学学啊。

除了整理代码,顺便把bootstrap的版本升了上去,按照 参考文档 中给的例子,把首页改成了响应式的布局,看起来比原来高级了不少。

再然后,把一直想做而没做的金币系统做了起来,增加了用户活跃度,同时也顺手把资源评论、每日签到、用户私信及提醒功能写了出来。总之那一段时间几乎都花在这上面了,现在看起来还是自我感觉良好的(虽然暗处可能还有数不清的bug)

上个图先 img对于我这种毫无艺术审美可言的人来说,能做到这种地步实在是感天动地啊(此处应有掌声) 下面说说我在这个过程中的一些感悟/收获/吐槽 等。

各种借用

很多东西如果要我自己写,应该也是写得出来(结果就是很难看),但考虑到群众观赏性问题,以及我自己的惰性,还是借用了不少现成的组件。

  • bootstrap

    首先当然是 bootstrap ,对于不懂美工的程序员来说实在是好东西啊,不用考虑太多美工的事情,先把功能实现出来, 同时外观也还不至于太难看。但话说回来,如果一点html/js 都不懂的话,你也没法用这玩意,所以自己多少还是要能写点css跟js才行。

  • unslider

    unslider 是个非常好用的轮播插件,不需要太多的设置,甚至几乎不用自己再写js跟css就能用(啊我真的好懒。。),同时浏览器兼容性也还不错,值得推荐

  • juqery

 强大的js库,不必多说

  • jQuery.Pin

    jQuery.Pin能将任意页面元素“钉”在某个容器顶部,而且在尺寸小的屏幕上能够自动禁用这种效果,把这个应用在了导航栏上,效果OK。

暂时就是这些,以后想到再补充。

金币系统平衡性问题

自己定下了金币的规则,主要是:

- 每人初始获取100计科币
- 下载扣取1计科币
- 每日签到随机获取1-8计科币,特别的,每日第一个签到者可获取15计科币
- 上传获取3计科币,资源每被下载一次,上传者再获取一个计科币(explore 除外)
- 上传资源被删除,扣取上传者10计科币
- 允许转让,收取25%手续费

然后再写出排行榜,每周奖励第一名的用户,同时扣取100金币。后来还开了个电影分区,上传电影分区的资源获取5,下载扣2。对于这一个系统,看起来好像是算比较和谐了,实际情况却是总是会出现暴富者。一部分原因当然是这部分用户上传了比较热门的资源,另外就是通过其他手段转账得来(让同学们多了点娱乐方式也还是不错的,课间可以听见 “你给我多少计科币,我帮你XXX” ,同学们玩得其乐融融)。规则无太大漏洞,只下载不上传不签到的用户当然只能是越来越少,而活跃上传的用户自然会不断聚集金币。虽无大漏洞,但也不能说是合理了,比如资源没有评级,一视同仁,这可能会打击用户上传的兴趣。还有更多的一些问题等待改进。

并发问题

每日的签到是很热闹的事情,但这也就导致了并发问题,也就是明明每天只有第一名可以获取15金币,结果同时点击的多个用户即使有细微时间,却还是被判断为都是第一名,这实在是个大bug,对于社区经济状况发展极为不利。试过用 SESSION 记录一个变量来阻止用户刷新式的抢签到,但后来发现这种手段对于脚本签到几乎是无能为力。试过用文件锁,但效果不佳。同时也试过用数据库锁,这会造成其他用户签到失败体验不佳。总之是个大难题,尚未能得到有效的解决。期末考试将近,同学们热情减小了一些,暂时先不管这个问题了。。

亘古不变的兼容性问题

还是得说这个问题,在一开始的时候,就想过了如果是高贵的IE浏览器(lt IE9)就直接跳转到提示页面鄙视一下。后来发现某些情况下确实是只能用IE登陆的,没法子,那就做个简陋无特效版本。再后来觉得要同时维护两种版本实在不是一件很科学的事情,还是调整了一下,加了IE兼容的东西,要考虑这些实在是恶心,即使都是CS的学生也无法避免或者说无法强求全部用户都能用现代浏览器访问。路漫漫,还是给个opera next的安装包吧(这里吐槽下chrome不给安装包,只能在线安装实在是不科学,另外opera next的安装速度真赞!)

其他

暂时没想到什么其他,想起来再补充吧。

好像完成任务般,我又水完了一篇博客,少年还是复习去吧~
blog comments powered by Disqus