前段时间基于某几款开源产品做的SmartTable现在有了一个比较大的更新,这次的业务环境是这样的,部分的数据在一个维度的展现可能不容易看清,旧版本在如何实现纬度切换时只能从数据源做起,其实这些工作都可以交给JS去完成,所以新版本最大的变化就是这个,另外,新版本将对于其他开源JS包的引入进行了封装,现在仅需要引入一个smarttable的JS就能搞定所有的问题了。
开发团队管理人员绩效方案
跟随公司的大步伐,现在基层员工的绩效方案已经定稿了,现在改走下一步主管的绩效方案了,主管方案里有一项KPI指标,这个需要自己去想如何才能体现整体的管理水平,而且各艰巨的任务是抛给了各个主管的,对于开发人员的方案是个比较难搞的问题,在此基础上我设计了3个指标。
先来看一下大环境吧,目前我们部门存在两种开发模式
1:项目管理,这个可以理解为有计划的工作安排,使用的系统为Blog前面提到过的这套系统,并且这套系统在我的GitHub上也有。
2:运维工单,这个可以理解为无计划的工作安排,比如处理紧急BUG,临时小地方维护等等。
基于这两方面我一共设计了3个指标。
SmartTable基于一套数据源展示图形与表格
最近业务需要,弄了一套精简的表格与图形生成功能,命名:聪明的表格,基于一套数据源使用Ajax获取数据,并展现成表格与图像的形式,并且支持下载(思路源于talkingdata(名字也是借鉴他们的))
开源引入:
Bootstrap 3.0
Bootstrap respond (IE解决方案)
Jquery 11.02
dataTables
highcharts
table2CSV
集中认证实现(单点登录)
越看现在公司基于Thinkphp3.0的改版框架约不顺眼,先不说为了更改目录结构更改了其核心代码,光是RBAC的认证的冗余代码就让人很不舒服,并且这项目没人跟进,导致新项目用这套东西越来约中庸,现在我接手了团队,当然第一步要那这个开刀。
鉴于目前的团队成员一直都在用ThinkPHP,所以不好直接引入我前端时间做的CI的权限框架,所以还得拿ThinkPHP入手,官网一看都已经到3.2.2了,并且跟以前的差距很大,那就直接选这个了,整体的权限思路还是按照当初CI的来设置的,下面就还遇到了一个问题,目前公司里有自己的统一验证平台Ucenter,但是那几乎是上一代程序员的产物了,所以现在要重新设计,但是还要兼容旧的,所以就出现了现在的这套集中认证。
综合项目管理平台[整体设计&各模块用例图&类图]
周五下午突然来了思路,就用周末两天的时间来完成了整体的设计,整个的项目思路是我在作死了一版的项目管理基础上构思的,设计的原则是低耦合系统。
介于我们目前的项目管理体系在不断的变化中,可能一个小小的变化就导致整个系统从结构上进行推翻重来,为了解决这个问题,所以整体的原则为低耦合,模块分为工具与用户,其中工具模块可以允许非注册用户使用,非注册用户,则需要记住建立工具后的URI【这一点的思路主要是参照notepad.cc】,并且URI分为管理URI与只读URI,基本上满足管理人员&成员见的权限管理,然后基于工具模块的基础上构建用户模块,允许登录的用户将工具URI记录至自己的相应仓库方便以后查阅,最终可以根据仓库中的工具组装相应工具之间的关系来构建一个完整的项目。
此项目前半段为个人项目,后来推荐至公司使用,在这里我也是主要讲述这个项目的前半部分的内容,后半部分的内容是团队合作结果,我在这里就不介绍了。
技术:
框架:CI
RBAC:我设计的RBAC权限管理(详见以前文档)
缓存:MEMCACHE
先来看一下整体的架构思路
规范化流程开发实践-敏捷任务管理模块
有了流程的规范下一步项目管理系统就要开启了,暂时还没有一个整体的思路,但是关于敏捷模块(基于Scrum敏捷框架)倒是有了不错的想法,顺道使用制定的标准来尝试一个,如何从分析到实施完成一个模块。这个模块比较简单,思路就是预先设置好任务,然后每天对任务剩余的工作量进行更新,根据这些数据实时的画出燃尽图。
关于需求的整理是从用例开始,先看一下这个模块的用例。整体的思路是这个模块不与以后设计的任何模块结合即可单独使用。
基本上用户使用的就三个版面。新建面板/修改面板/展示面板。其中新建面板中需要填写面板名称,开始时间,结束时间,排除日期以及任务资料。
开发类项目实施规范指导
从实习到正式入职到现在已经2年,去年提为组长手下开始带人带领项目,可能是因为进入的是一个主要为运维为主的团队(我们开发组在其中占了1/4),对于开发类的规范非常的模糊不清,2年了也没有大的改观,从来到现在已经做过几版的项目管理系统(其中还死掉了一版),但那些基本上都是写任务管理系统,最近根据整体的开发流程与我们的现状,花了几天时间重新梳理的整个流程,大体上也通过了领导的评审,并且现在有部分开发类项目在用了,这里分享一下。
其实这我在这里制定了2套规范,一套是立项前明确开发计划,一套是立项后明确开发计划,其实我更倾向于后者,前者是应领导要求更加符合现在的实际,坏处就是在立项前就需要有大量的工作。
这里我主要讲一下立项后明确开发计划的模型
这里我就基本上按整体的章节顺序来讲
1. 使用范围
开发类项目
2. 流程规范
记一次悲剧的网站负载过高(被攻击?)的经历
从昨天开始,uptimerobot就一直在给我发我的某一个网站 currently DOWN (Bad Gateway) ,以前有过这样的情况,但一般也就是持续很短的时间,昨天以为也这样就没管,没想到今天了还是这样,没办法,得处理一下。
我的网站是一个需要频繁采集的网站,基本上每个请求都需要对外采集信息,而且买的是比较便宜的VPS,本来负载能力就不高,上面装的是lnmp.org提供的一键安装环境,其中mysql还没启(不在一台机子上),一般访问还是能抗住。
以前这个机子有过这样的经历,那次经过我N久的寻找,发现他们主机商提供的DNS挂了,从那以后就换成了8.8.8.8,这次当然第一步还是检测这个,然后发现不是这个问题。
当时突然想到这台机子还有我的一个简易监控脚本,上去一看吓一跳。
PHP字典序法获得排列组合
前段时间一次聚会闲聊时聊到一个问题,就是给你一排数组,例如1,2,3,4,5,如何能高效的获取上述数列的所有排列组合,正巧没事,研究了一下,一开始以为是个很简单的问题,就直接开始写代码了,后来发现怎么循环也不理想,基本上都有一些不必要的消耗,百度一下看到一个不错的算法,字典序法,顺便学习一下,然后记录之。
摘一段算法思想:
设P是[1,n]的一个全排列。
P=P1P2…Pn=P1P2…Pj-1PjPj+1…Pk-1PkPk+1…Pn , j=max{i|Pi<Pi+1}, k=max{i|Pi>Pj} ,对换Pj,Pk,将Pj+1…Pk-1PjPk+1…Pn翻转, P’= P1P2…Pj-1PkPn…Pk+1PjPk-1…Pj+1即P的下一个
例子:839647521的下一个排列.
从最右开始,找到第一个比右边小的数字4(因为4<7,而7>5>2>1),再从最右开始,找到4右边比4大的数字5(因为4>2>1而4<5),交换4、5,此时5右边为7421,倒置为1247,即得下一个排列:839651247.用此方法写出全排列的非递归算
个人专版PHP MVC框架(TZN Framework)
一直都在用别人的框架,虽说知道原理,但是没有实际去尝试写一个看看,下午没事看了一下CI的源码,确实短小精悍,萌生了自己尝试一下的念头,花了几个小时谢了一个超级简单的MVC框架,实现了基本的MVC,没有路由分发,没有安全验证,没有考虑扩展性,只支持Mysql等等等等,后期哥好好规划给整牛逼了,目前是0.0.1,嘿~
核心一共4个文件
Bootstrap.php
Controller.php
Model.php
View.php
先发上来让大家瞅瞅~