UNCATEGORIZED

自动排档期算法

博客已经遍地是草,今天来清一清。即将退出学生会,想给学校留下一个礼物,所以编写了一个学生的广播平台,方便学生互动,并提供一个师生交流的平台,预计校运会上线。

广播部OA系统的前端大部分自主开发,包括但不限于样式表、函数库;后端部分采用 Thinkphp 框架编写,因为学习成本低。

自动排档期的算法是整个程序略为复杂的一部分,我自己有两个方案。

CONFIG__

先总的介绍这一模块的数据表结构和配置:

bcs_schedule 所有工作日
bcs_schedule_day 单日节目安排表
bcs_schedule_song 节目信息

NOON_TIME = 1800 中午工作时间
AFTERNOON_TIME = 1800 下午工作时间
ALLOW_EXCEED = 185 允许超过时间

配置以秒为单位;bcs_ 为表前缀,下文省略

0x01__

我们的设定是最多安排到两周的节目,所以要设置 CRON 任务,每天凌晨一点自动创建第14天的工作日,以确保第14天的节目有工作日可安排。

当一个节目要进入单日安排表时,服务器首先计算节目的时间并转换为以秒为单位的时间量,其次在数据库查询最近一个工作日的安排情况 ( shedule_day ),若节目设置在中午播放,就计算该节目与当天中午其它节目的时间总和,若小于或等于 ( NOON_TIME + ALLOW_EXCEED )的和,则安排成功,否则安排失败,服务器将继续查询下一个工作日然后重复以上操作直至第 14 日。

0x02__

第二方案十月提出,与第一方案相比主要在于减少大量的数据库查询。

服务器按节目的需求进行安排,若安排在中午时段,就一次性查询近 14 个工作日中午节目的时间量。如果该节目时间量和近一个工作日中午节目的时间量之和小于或等于(NOON_TIME + ALLOW_EXCEED),则安排到这个工作日,否则该节目时间量与下一个工作日午间节目量相加,重复以上工作直至第十四个工作日。

Emmmm,大概就是这样,有什么比较可优化的方案欢迎留言。

QAQ 换了 WP,之前的评论我就懒得恢复了。

Standard
UNCATEGORIZED

更换 WordPress 之计划

妹blog 很少更新了,从卜卜的这个程序学到了挺多的东西,比如 AJAX 缓存和前端路由等等。现在看起来主题比较单调,所以想换 WordPress 作为博客程序,并自己写一个主题(可能收费)。

会对 原妹Blog 数据库和后端进行改造,使其与 WordPress 共用一个数据库,原程序仍保留。

##2017.08.29 更新

对现有主题添加了动画,修复直接访问文章页仍存在阴影的问题

Standard
UNCATEGORIZED

2018 百朗英语听力风暴

刚买的新听力书,上学期用了两本,《王陆雅思听力王》和《上海人事部口译中级教程》,后者中途放弃了,文章虽然听后能列个大纲,但题目一听就立刻懵逼,可以说是为自己装逼买单。

全国二级考试的听力与高考相似,练练耳朵,我是福建考生,说实话全国卷听力并不难。

Standard
CODE, UNCATEGORIZED

E-Ping 游戏服务器查询

提供 Source引擎、Minecraft 等多种游戏服务器详细查询

API:o1o.bid

 

Source 引擎游戏

单个查询

/source/query.php?ip={$ip}&port={$port}

多个查询

/source/query.php?data={$data}

$data 格式:

{
"servers": [
{
"ip": "域名/IP",
"port": 27015
},
{
"ip": "域名/IP",
"port": 27015
},
{
"ip": "域名/IP",
"port": 27015
}
]
}

Minecraft 服务器

单个查询

/mc/query.php?ip={$ip}&port={$port}

引用了以下项目

Standard
UNCATEGORIZED

碎碎念

很久没有写文章了,还是在忙高考~

前几天在杂志上读到当今时代的一个热点 —— 编程教育低龄化。

不错,现在学编程的门槛已经很低了,相关教学资源也越来越丰富,一个小学生用 HTML+CSS 写一个漂亮的网页已不足为奇,我家楼下小卖铺的小哥都在用慕课网自学 JavaScript。

说说自己为何学编程,主要还是兴趣。最早是在小学二年级,用了精易模块做(故意不用“写”)了一个 Discuz 的登录器,特别简单,就是自动填写表单然后提交;还有一个是用一个很大的窗口,然后放了一个几乎占据整个窗口的超文本浏览框,下面一个文本框和按钮,用于输入网址和确定,那时候很天真,编译出来以为自己造了一个“浏览器”,生不知其只不过调用了IE。

那时候一旦有人知道你“会”编程,不论是同龄人还是大人都会认为你是个“天才”之类,把自己捧得特别高,那是因为当时资源还比较稀缺,也没有一个完善的知识体系。

编程同时给学习、生活带来了一些便利,比如高二刚上唯物论、辩证法,我就尝试将 OOP 的思想运用到哲学上来,虽然有点狗屁不通,但是给自己的理解带来了帮助。

如今门槛低了,一批以此为“傲”的人产生了。在阿里云建个实例就是网络工程师、用一个现成的前端框架渲染一个模板就是前端工程师,刚会用 PHP 操作 MYSQL 数据库便是后端工程师…… 简直是要上天,中二病该治还得治。编程起步不算太难,但学编程和会编程不两个截然不同的概念。所以目前行业需要更多实际能力的人才,而不是一点自负狂傲造就的“工程师”。

Standard
CODE, PHOTO, UNCATEGORIZED

VSCO Personal

VSCO Personal 是一个个人图片发布平台,其内容包括 VSCO 导出的照片,但不限于我个人在学校的海报等相关作品,故不开放上传功能,也不会开放源码,为我个人所用。

这个项目在 16 年前半年就已经诞生了,主要和同学朋友一个圈子分享,但代码逻辑真心太差,几个月后就关闭了。之后 Vue.js 的兴起让我有想重构的动力,可拖了很久才开始,直至 11 月中旬基本重构完毕,其实这期间我早就打算不继续写了,毕竟由于学业的问题,无力兼并多面。

##上传

首先说说上传方面,也就这个比较值得细说。

初版的图片上传较为鸡肋,主要通过人工填写相关信息再存储到 JSON①,照片本体在新浪图床。首先在这个过程中,不用数据库保存任何数据,一旦操作修改就得重新解析 JSON,可是容易出错就要手动修复。其次该文件在版本管理中,每次更新就要再提交一个版本,久而久之便是多个毫无意义的版本提交。

事实上,初版的问题远远不止这两点,必然放弃!之前有想法把 Memcache 作为数据库,似乎有点奢侈,学生党不太伤得起。

后来发现 VSCO 导出的图片有滤镜符号,然而现在的版本好像阉割掉了原来的光圈、ISO 等信息。②不过即便 EXIF 有滤镜符号,还需要一段正则提取出来。最厌烦的就是正则了,就是不想写,我选择将数组中的 UserComment 字符串以空格分割成数组,这样第四项就是滤镜符号。

为了比较好的上传体验,预先在前端引入 EXIF.js 解析所上传图片的 EXIF 头信息,尝试匹配 VSCO 和滤镜符号,一旦不符则退回,省去不必要的带宽;若匹配成功,向服务器请求七牛③ Token,前端直传到七牛,这时七牛会向服务器发起回调请求,服务器解析信息返回到用户界面,待用户确认无误就保存到数据库。

##其它

还是有一些功能是没开发完的,比如点赞和分类,仍有一堆图片没有上传,可能要很长一段时间才会再来写了,毕竟学业为重。

##注释

① – 一个保存了所有图片滤镜、名称、链接的 JSON 格式文件,初版文件
② – 参见DEMO,该图片由 VSCO 导出
③ – 七牛每月免费流量都用不完,能蹭就蹭

http://www.vsco.cx

Standard