背景 使用Chrome观看B站的时候出现卡顿,具体现象为: 点开视频页面,使用html5播放器,视频仅加载前5-20秒,无法拖动进度条到后部分,刷新不可解决问题。 使用无插件的Chrome或其他浏览器无该问题出现。 解决方案 经过排查,定位到解决方案为: 关闭Tampermonkey插件 该插件运行时以上情况复现,关闭后问题解决。 然而每次看B站都…
背景 页面中的JavaScript是在单一线程中运行的。若页面代码的逻辑过于复杂、或者存在密集计算的情况,容易阻塞其他的方法运行。 对于目前大多数计算机都使用多核CPU,使用单线程模型浪费了许多计算资源。 而Web Worker给了我们一种新的解决办法。 开始 需要的依赖 * worker-loader * typescript * promise…
背景 前一篇文章中我谈到如何修改vue.config.js为Vue-CLI项目添加CDN,实现为静态资源加速的目标。 考虑到VuePress静态资源为数也不少,因此也尝试为其打包的结果做一下CDN。 目标 尽可能将静态资源请求到CDN上 正文 通过研究VuePress的文档,官方并没有向Vue-CLI那样提供一个path使得静态资源重定向到目标的U…
去年5月CUPOJ前端使用Vue进行了重构,因此使用Vue-CLI打包变成了每次发布新的变更必不可少的一个任务。 由于前端项目本身代码量较大,逻辑也比较复杂,打包起来对性能要求相对较高。平时都是在学校服务器直接打包后复制dist目录下的文件到指定文件夹来部署。 每次都执行同样的代码比较痛苦,便写了一个简单的脚本,把整个过程变成了一键部署。若是能够把…
经过进一步的打磨,CUP Online Judge的判题机终于独立于前后端,可以作为一个后台服务在系统运行了。 考虑到判题过程强依赖操作系统环境,因此整个过程我也打了docker-compose包,不想看下面冗长的部署内容,直接使用的可以前往CUP Online Judge NG Docker Judger体验懒人部署的快感。 系统要求 Ubunt…
由于HUSTOJ使用binary sha1以及BASE64加盐进行加密,我曾经尝试用crypto在Node.js上实现功能与之相同的模块。然而按照API 说明操作并不能成功生成对应的内容。经过对Buffer转码密文发现,在对BASE64密文进行解密时,应使用ASCII编码进行解密,而在对明文加密时,则应该用UTF-8进行加密。 实现如…
了解了WebSocket这个神奇的协议以后,发现Apache不原生支持WebSocket,只好在服务器端配置了Node.js & Socket.io用官方给的Demo搭建的实时聊天室。测试地址:http://test.haoyuan.info:3000
今天抽空花了一点时间把写好的代码整理成模板进行测试,测试完毕正式发布到GitHub上。 GitHub:https://github.com/ryanlee2014/HUSTOJ-Flat-UI-Theme 部分自己独立编写的登录模块和找回密码模块将会在以后发布
上个星期从大四学长手上接下学校服务器上面这个半残废的OJ到现在有一个半星期了。虽然我在自己的服务器上也安装了HUSTOJ,但是VPS本身是Ubuntu平台,之前我在CentOS上安装HUSTOJ就因为judged不正常工作以及CentOS对新版php和Apache不兼容让我投奔Ubuntu 14.04,但是学校这台CentOS可不能随便更改操作系统…
在查Java函数的时候偶然发现了一个不错的网站,为了以后开发方便在这里备份一下 http://www.howsoftworks.net/