目前学习中
## 9 WJ目前研习中技术和思想
### 响应式布局
与传统的自适应布局对立并会逐步取代传统网页布局模式的新前端开发技术,伴随移动端时代到来而诞生。
有很多WEB支持响应式,常用的如Foundation,Bootstrap,我即将完全解析的是Bootstrap,目前只会使用官方基础版,做不了专业的自定义修改官方的特性,或者知道修改但有怕影响
简单的说将原有网页指定宽度和高度设计,层层内嵌,改为了必须按照规范的流式布局DIV为基础“框架”在里面写内容,这些流式布局DIV会按照页面的x轴宽度(之前说了PC和Mobile最大的区别就是y周,毕竟z轴几乎都是无限的)自动决定以当前x轴水平宽度可以放下几个DIV,这就是核心,所以开发书写页面必须按照规范
### 富文本
这里只说免费的,目前市面富文本都不好用,至少作者本人没遇到好用的
> 目前WJ使用过的富文本
1 ueditor 百度富文本 [JunWeb]有案例 很早就停止维护更新
控件多(私货多) script嵌入 有jar 多媒体类对方代理解析(这点最恶心) Api写的很不走心
源码中都有错拼写单词 对视频支持标签video诡异 视频不能居中 所见非所得(直接解析花费时间)
jeecms都没有集成这样的案例 官网也是 垃圾
2 simditor 轻量级富文本 [我的教程]有案例 国产 虽然很早停止维护 但全部是纯粹的前端特效 所见即所得 图片可转base64(实际上5M以上会保存,但超过加载流的限制) 适用于纯文本的轻量级,使用于无图模式的富文本,毕竟没有真正的图片服务,总有傻子传大文件搞事情
3 ckeditor [我的教程]有案例 未知 缺点是所有富文本使用同一套配置
但因为有人写了文件上传的接口[已看,可以盗走代码CKEditorImageController.java] 所以学籍上用的就是这个也支持上传图片,流媒体播放依旧很水
4 kindeditor [JunWeb]有案例 上传jar包现成的比较简单 使用也是
同时提供自定义接口拓展 Api丰富易懂 支持flash和media player播放(你PC得有装)
经测试仅后者能播放 勉强能用的唯一一个富文本
5 froala is a lightweight WYSIWYG 自认为是最好用的富文本 但是收费1999$
> 使用富文本主要关注的一些特性
1 侵入性 侵入代码的简介 是否直接继承name属性 这样表单提交会更方便
2 所见即所得 就是是否会存在 对数据库的富文本数据进行加载时二次解析,保存时二次解析(不是这种类型的会很恶心)
3 对数据的保存转码 和 初始化的转码 有部分是使用html进行转码 这个必须了解
4 文件上传一般好的工具自带 jsp net等版的上传demo,无视警告协议根目录下 放行链接 就可以直接用
5 熟读初始化方法 和 取值方法 各路大仙的实现思想千差万别
> 富文本为什么难
富文本基本上属于前端特效解析技术,开发的多是前端,所以对于图片,视频,文件的流处理多数都是些不靠谱的预留接口。其次富文本其实是个样式包,如果不用单独弹出而是内嵌在页面的模式,其内容解析会收到外层样式的破坏(特别是一些大公司的富文本都不好改)。
富文本对图片,文件等上传会破坏自己平台的安全性,上传接口写起来很麻烦。成熟富文本携带的产品私货比较多,不精简,有的富文本不支持用户自定义拓展接口,或者所以富文本一套配置;另外富文本往往要求比较高的JQ支持。
想着富文本正文中搞文件下载的人都吃P去(就没想过为什么往往一般都是,上文章,下下载的模式)
想着富文本在线播放视频的人也都吃P去,参照流媒体技术下的视频点播
### 做视频网站流媒体播放
> 关于流媒体的知识
1 由于富文本都是偏向前端 有的顶多提供图片上传,文件上传接口不做后端 更不用说考虑插入视频并播放,网页不花费代价播放视频是很难的,只能"限定媒体格式","限制播放环境","限制插件"使用
2 是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,流媒体文件一般定义在bit层次结构,因此流数据包并不一定必须按照字节对齐,虽然通常的媒体文件都是按照这种字节对齐的方式打包的
3 流媒体文件格式 https://zhidao.baidu.com/question/4292608.html
.AVI(n AVI)
.MPEG/.MPG/.DAT---MPEG文件
.RA/.RM/.RMVB---RealVideo文件
.MOV/.QT---QuickTime文件
.ASF/.WMV----MICROSOFT流媒体文件
ISO、BIN、IMG、TAO、DAO、CIF、FCD-镜像文件格式
> 我想不花成本但想在线播视频
1 html5的vedio audio标签
vedio支持 Ogg、MPEG4、WebM 浏览器兼容不同 同时对音频视频编码器都有要求
audio支持 wav, mp3, ogg, acc, webm,midi 因为版权问题(反而不是兼容问题)所有浏览器不能统一,不过有枚举写法
2 利用flash播放器 (浏览器支持flash)
使用embed标签 flash支持格式 swf,flv
3 利用window media player (本地有这个)
使用embed标签/Object标签 支持格式 swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,mp4
(如果MP4不行,考虑使用H264视频编解码器和AAC音频编解码器)
4 上传视频到优酷等网站直接粘贴其分享链接 (几乎所有富文本都支持)
> 我想用靠谱的视频服务器怎么办
1 花钱买啊
http://www.ruiboyun.net/privatecloud/index.html
2 自己搭建搭建视频服务器
http://www.easydarwin.org 开源
https://www.cnblogs.com/lidabo/p/7418505.html 开源
同时真正要实现视频网站,还需要改造后台视频流,以及要有视频转码技术。
### 短信服务器
目标:可拆卸热插拔,免费,支持日发短信数量大,尽量支持内容格式丰富,回调函数简单好用的短信服务器,甚至支持N天内退订;目前实际上我司已有,但未技术封装,未封装成WJ自己的。
### 邮件服务器
目标:可拆卸热插拔,免费,支持日发短信数量大,尽量支持内容格式丰富(邮件的本质是HTML代码不含恶意脚本),回调函数好用,支持批量群发,和一次多人抄送模式,甚至支持N天内退订;实际上我司已有,但未技术封装,未封装成WJ自己的。
### 在线聊天
在Layui见到的对方产品,Web登录后,类似web微信的小窗口,支持一对一,一对多的聊天,包括群聊,显示在线状态,属于web通讯类难度比较大,暂时后置。其实和消息总线类似,目的是用消息通知自己的用户处理事情,但做BS的就是这么尴尬,用户会随着关闭浏览器消失,即使是在用户登录后立即用缓存池的有效消息提示,但想实现提示后一键跳转也比较难,只能通过短信或邮件通知。所以消息总线不现实,比这个都不现实。
### 优化算法
注意区分算法和优化算法的不同,后者更专业和更难,统计、优化、预测属于属于数学建模中最重的三块(大数据也用这知识)。算法是用开发已知的逻辑和思路运行一次就得出方案,而优化算法最难的即使使用量子计算机用几个世纪都无法得到最优解。优化算法的核心是比起所有可能性方案穷举计算,而寻找一个寻优路,并且有寻优路算法可行理论支持,如蚁群算法,遗传算法,神经网络算法,模拟退火。对于只招侧重于BS和基础算法的企业,想实现优化算法实际上需要更专业的人才。例如排课系统其实考察的就是优化算法的功底。
### 平台公共日志服务器
平台目前的日志服务不足以满足追查操作人,操作错误,需要订一套需求,哪些可以记录,考虑系统性能,支持动态开关,日志文件自动删除,定时导出等功能。能追查所有平台的日志,即日志集成功能。
### 统一身份认证和单点登录
> CAS服务器说明
uwaysoft新版统一身份认证服务基于[CAS技术](https://www.apereo.org/),org.apereo.cas版本5.2.0作为CAS服务器使用JAR包,经过二次改造和开发形成了,rod_cas_server和rod_cas_center相互辅助使用的uwaysoft版CAS服务端
- rod_cas_server :web项目,主要与各子系统提供登录验证,登出注销等服务
- rod_cas_center:web项目,辅助rod_cas_server 做一些CAS应用注册,CAS用户管理等界面化的管理后台
> CAS客户端说明
1 正常WEB项目一般都有本地身份认证,开启CAS服务后,将使用远程的CAS服务器来作为身份验证的标准,认证通过后与本地身份认证进行协商,完成最后的验证,登入本地系统。即使用CAS服务器来作为用户1是否已登录的标准,以实现A系统登录后,B系统和C系统都不必登录可直接访问(单点登录),单点登出原理类似。
2 因而必须对本地身份认证进行CAS客户端接入改造,才能接入统一身份认证,也是本文档的重点
3 CAS客户端接入改造复杂度和本地身份认证使用的认证技术有关(Web认证,Shiro认证等)
> 公司自有平台客户端接入
- 北京新平台(NV4.0及以上产品),本地认证是Web认证,CasClient改造已有
- 武汉新平台(springboot),本地认证是Shiro认证,CasClient改造已有
> 第三方系统客户端接入
核心开发改造过程基本需要三步,更多具体详情参照后续文档
1 引入cas.client包,修改系统拦截器,使CAS身份认证拦截器优先级高于本地身份认证拦截器优先级
2 本地身份认证对于CAS票据的识别和改造(协商)
3 单点登出的改造
缺点:目前的统一身份认证center集成了太多不符合基础功能的东西,还有定制化的东西,HZ_HOME的门户包
还有什么想一键穿透系统功能的这种操作。
### 数据交换
专业人员用kettle它不香吗,非要做一个数据交换,反正客户又不会用,最终还是专业人员用,界面化的东西只是为了验收
### 自定义表单
我们BS招开发干什么,让他们(大部分)做建表建实体增删改查啊,那自定义表单呢,在WEB界面就可以做建表建实体增删改查,哦,那这技术真厉害,很多开发可以开除了。
现有的技术,建立基础表简单,建立子表还行,但是,但是,但是
字段间联动,高度定制自定义的输入校验,联动校验,这个字段关联其他子表,选择控件,表单展示形态,表单同一样式,表单提交时多种约束性不同的必填和非必填,子表人员不能重复,跨单元格运算,想这些都不花成本的做就是在想Peach(总有人想不花成本的想让牛学会飞行,吹牛皮的销售也许可以做到)
还有一点根本做不了的最核心问题,都以及开始运行产生使用实例了,用户还想改改改,简直就和历史的长河中你Ma生了三孩子,但你突然说将运行中的过去的你Ma改成另一个女的可以吗,这是对已产生数据的亵渎,解决这个问题可参照[引用模式和复制模式],但也是及其麻烦
即使上面做到了,这种功能依旧不是小白类可简单使用的,还是那群小管理
WJ评估,不靠谱不要指望太强功能,做问卷星调查或需求收集app还可行,做流程表单还是算了
### 自定义工作流
史上最大的坑,国内都没有好的完美的技术方案,甚至没有统一的流程需求方案,不想用力投入就想产出。
Activiti工作流引擎是外国的设计思想,不同于丑陋的中国领导层,干什么都想撤回(办事粗枝大叶尸位素餐),想不留痕迹的撤回(偷偷摸摸劣根性),想任意驳回(傲慢高于一切逻辑,甚至毁灭世界),但最大的问题是,外国人流程设计根本没驳回这种思想(不会让人肆意操作,即使是领导),人家设计思想是限定条件的流转,于是问题就在这里,驳回功能是非原生的,也是非原生支持的,所以目前的代码驳回理论是源于国内某人对其进行的一次变相实现,因为非官方,所以就会出现bug,实际上工作流只要不驳回,用原生的基本没问题,但因为国人的劣根性必须要做这个,所以这就是工作流最不稳定的要素之一。
其次,并行会签,串行会签,子流程,量子待办,负载均衡抢办,到底是几个意思,每个人的观点和理解不同,并行会签是N个人同时同意还是部分同意,通过率有没有,规范是什么。
还有不要拿你们现实中中纸质办公时代的流程让Activiti做,想看看市面上有没有流程做过这种SB业务
流程分化版本过多难以升级维护,向下兼容的代码和定制化代码越来越冗余