;

Compliance testing

服从性测试 2019年11月6日
;

1. Doctype   目前,兼容性最好的Doctype是XHTML 1.0 Strict,事实上Gmail和Hotmail会删掉你的Doctype,换上这个Doctype。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">  <head>   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   <title>HTML Email编写指南</title>   <meta name="viewport" content="width=device-width, initial-scale=1.0"/>  </head> </html&gt…

html email 2019年11月5日
;

1.安装 npm install pm2 -g 后续执行pm2始终提示’command not found’ 执行whereis pm2查看安装位置,发现有多处软链接,逐个删除 sudo rm -rf /usr/bin/pm2 sudo rm -rf /usr/local/bin/pm2 为确保环境干净,同时删除pm2 npm uninstall pm2 -g 再次执行npm install pm2 -g 然后再执行whereis pm2无任何信息输出 whereis node发现node位置为 同时发现pm2被安装在了/usr/local/bin下并且文件夹名字很奇怪` 类似这样符号加空格,猜测此为安装过程中的临时文件 图片中红框中为pm2的安装路径,文件夹名称为何如此奇怪 无奈之下放弃使用全局安装,直接在/usr/local/bin下执行npm install pm2 接下来设置软链接ln -s /usr/local/bin/node_modules/pm2/bin/pm2 /usr/local/bin 参考链接: https://segmentfault.com/q/1010000014016820 https://blog.csdn.net/d597180714/article/details/82619735…

pm2进程管理 2019年11月5日
;

1. function sleep(duration) { return new Promise(function(resolve, reject) { console.log("b"); setTimeout(resolve,duration); }) } console.log("a"); var s = sleep(2000); setTimeout(function(){console.log("wait")},2000); s.then(()=>console.log("c")); 来源:https://blog.csdn.net/nana_9457/article/details/88224472 2. (function test(){ setTimeout(function(){ console.log(4); },0) new Promise(function(resolve){ console.log(1); for(var i=0;i<1000;i++){ i==999&&resolve(); } console.log(2) }).then(function(){ console.log(5) }); conso…

promise与setTimeout的执行顺序 2019年10月28日
;

如果在一段体验的高峰和结尾,体验是愉悦的,那么对整个体验的感受就是愉悦的。这一规律的发现,为经济研究、企业管理、政府决策打开一扇窗户,形成极具震撼力与影响力的服务模式。

峰终定律 2019年10月25日
;

一.什么是对象序列化?   对象序列化是指将对象的状态转换为字符串(来自我这菜鸟的理解,好像有些书上也是这么说的,浅显易懂!);   序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程(来自“百度百科—序列化“,学术性强,略显高端); 二.为什么会有对象序列化?   世间万物,都有其存在的原因。为什么会有对象序列化呢?因为程序猿们需要它。既然是对象序列化,那我们就先从一个对象说起: var obj = {x:1, y:2};   当这句代码运行时,对象obj的内容会存储在一块内存中,而obj本身存储的只是这块内存的地址的映射而已。简单的说,对象obj就是我们的程序在电脑通电时在内存中维护的一种东西,如果我们程序停止了或者电脑断电了,对象obj将不复存在。那么如何把对象obj的内容保存在磁盘上呢(也就是说在没电时继续保留着)?这时就需要把对象obj序列化,也就是说把obj的内容转换成一个字符串的形式,然后再保存在磁盘上。另外,我们又怎么通过HTTP协议把对象obj的内容发送到客户端呢?没错,还是需要先把对象obj序列化,然后客户端根据接收到的字符串再反序列化(也就是将字符串还原为对象)解析出相应的对象。这也正是”百度百科—序列化“中描述的两个作用——存储、传输。 三.JavaScript中的对象序列化   J…

JavaScript之对象序列化详解 2019年10月22日
;

1.ThinkPHP Model 与 Action 用法 一直听说ThinkPHP可以使用Model调取数据库,今日才会用Model,在Action中使用D方法条用Model中函数. D(“Model名字”)->函数名. 例:D(“User”)->getList(); 调用 UserModel.php 文件中 的 function getLiser() 函数,在Model下的函数使用 $this 代表实例化当前 Model名字的表,Model下文件一般以 数据库表名+Model.php 命名

thinkphp 2019年10月21日
;

Phantom 4可以帮助很多爱好飞行的小伙伴们在出游的过程中,纪录下沿路的美景。但是对于影视制作行业中的无人机航拍运用,显然和我们手握精灵4遥控器乱飞有着很大的区别。我们就来聊一聊在影视制作中,无人机航拍有哪些拍摄技巧。 寻找前景 寻找合适的景物作为前景有几个好处 1、 烘托拍摄氛围 2、 借助前景的变化,让镜头看起来更加动感,有节奏 航拍这类镜头前,首先需要提前确定焦点,其次是合适的构图。一切准备完毕,后面主要靠飞手飞出这个画面了。 对冲镜头 如何体现速度和冲击力,“对冲镜头”是最好的选择。顾名思义,对冲,是指飞行器和运动主体同时加速,相向飞行。穿越汽车、自行车、快艇等等,这样的拍摄最大的难度在于飞手如何判断飞行器与拍摄主体的距离,以及气流的影响。 航拍这类画面,需要飞行器距离主体十分近,通常飞行器与被拍摄物体擦身而过时,只有几厘米的高度。 如何拍出速度感? 一般的多轴飞行器最高速度在45km/小时,如果我们用多轴拍摄追车,结果会很惨。一方面如果汽车加速,飞行器追不上;另一方面,如果汽车减速,又拍不出来真实感。 我们通常的做法有两种。 1、 贴地飞行 这是为了通过地面增加前景的变化速度,提升感官的速度感 2、 使用中、长焦镜头 DJI inspire 1 Pro可以支持45mm的镜头,在4/3相机系统中,它的实际焦段大约在90mm左右,可…

为什么人家的航拍好,因为懂航拍技巧啊! 2019年10月20日
;

在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object”,“function”,“symbol” (ES6新增)七种。 对于数组、null、对象来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串。 要想区别对象、数组、函数单纯使用 typeof 是不行的,JavaScript中,通过Object.prototype.toString方法,判断某个对象值属于哪种内置类型。 在介绍Object.prototype.toString方法之前,我们先把toString()方法和Object.prototype.toString.call()方法进行对比。 toString()方法和Object.prototype.toString.call()方法对比 var arr=[1,2]; //直接对一个数组调用toString() arr.toString();// "1,2" //通过call指定arr数组为Object.prototype对象中的toString方法的上下文 Object.prototype.toString.call(arr); //"[object …

js中toString与Object.prototype.toString有何不同 2019年10月11日
;

顾名思义,双相兼有心境变高和变低两极性特点,是心境在正常,高涨(躁狂),低落(抑郁)之间往返摆动。

双相 2019年10月9日
;

1910年,德国行为学家海因罗特在实验中发现一个十分有趣的现象:刚刚破壳而出的小鹅,会本能地跟随在它第一眼见到的自己的母亲后面。但是,如果它第一眼见到的不是自己的母亲,而是其他活动物体,如一只狗、一只猫或者一只玩具鹅,它也会自动地跟随其后。尤为重要的是,一旦这只小鹅形成了某个物体的跟随反应后,它就不可能再形成对其他物体的跟随反应了。这种跟随反应的形成是不可逆的,也就是说小鹅承认第一,却无视第二。这种后来被另一位德国行为学家洛伦兹称之为“印刻效应”的现象. “印刻效应”现象,不仅存在于低等动物之中,而且同样存在于人类。比如,婴儿对电视就能产生一种负面的印刻效应。一个婴儿在耳朵基本上能听到声音了,眼睛也能看见东西了这种情形下,如果每天给婴儿看五六个小时的电视,那么到了两三岁的时候,孩子通常会有以下的表现:喜欢电视中的音乐、对母亲声音的反应迟钝,不能专心注视母亲的视线、无法安静、对事物不敏感等等。即使母亲给孩子耐心地讲或唱,孩子也会兴致索然,无动于衷。这些表现,说明孩子已经对电视产生了“印刻效应”。如果不加以及时地纠正,就很容易出现更加严重的心理障碍。几乎所有的心理学家和社会学家都知道,人类对最初接受的信息和最初接触的人都留有深刻的印象,他们用 “首因效应”等概念来表示人类在接受信息时的这种特征。 美国通用电气公司前任CEO…

印刻效应 2019年10月8日
;

全名“死亡之手系统”,也被称为“边缘系统”,其正式名字叫Perimeter,也有人叫它MertvayaRuka/死亡之手。这是最早在冷战时期由苏联于八十年代初建立,之后其他核大国陆续加入的自动化核反击体系,亦是核捆绑的主要组成部分。但是和核捆绑本身一样,其真实存在是存疑的。 死手系统旨在国家首脑与指挥机关以及直接执行核反击的基层操作人员均被消灭或失联的情况下,自动攻击预先设好的打击目标,而打击目标与是否是攻击方无关。也就是说,一旦国家受到饱和核打击而灭国,中央决策能力与核反击能力均被核突击消灭或瘫痪的话,“死手系统”将自动发出核密码及核打击指令,对全球所有拥核国甚至是常规工业国发动饱和核打击,这将进一步诱发其他核大国的死手系统,造成覆盖全球的全面核战争,进一步确保核大战中没有任何第三方获利者,以避免核大战后幸存势力之间的实力差距过大。 拥有强大的核武库以及成熟的核反击能力才能构筑死手系统,而死手系统的触发需要以遭到饱和核打击而灭国以及失去人工执行核反击的能力为前提条件,因此任何规模有限的核欺诈都无法触发核大国的死手系统。

核捆绑 2019年10月8日
;

平台默认的在发ajax请求是会显示进度条,这个进度条用的是loadingbar 如果要屏蔽loadingbar,修改/UI2/system/components/justep/loadingBar/loadingBar.js中constructor,start,stop这三个函数 在函数里面开始的时候直接return;如: start : function(isWithOverlay){ return; var self = this; } 修改js文件后要执行tools\dist\dist.bat,还要注意缓存的问题如何清除缓存 如何清除缓存? 用“启动BeX5运行平台.bat”或者到tomcat\bin下用startup.bat启动tomcat,运行找的是生成的缓存文件,修改了文件后要重新生成缓存才可以 方案一:找到.w对应的.cache和.release删除,并删除浏览器的缓存 方案二:修改UI2下自己应用的conf\ application.xml 中的版本号,然后重启tomcat服务 方案三:修改model同级的conf\server.xml文件中的version版本号,然后重启tomcat服务 具体的缓存机制可以参考http://doc.wex5.com/?p=5503其中UIServer\WEB-INF\justep.xml中的…

wex5隐藏loading条 2019年10月7日
;

1.查看版本 console.log(moment.version); 2. moment().format(‘YYYY-MM-DD’) // 当前日期:2019-10-13 moment().subtract(7, ‘d’).format(‘YYYY-MM-DD’) // 七天前:2019-10-06 moment().add(1, ‘d’).date() // 明天日期:14 moment().format(‘MM月DD日’) // 当前月日:10月13日

moment.js处理时间 2019年10月7日
;

1.创建项目 选择第一项,构建一个自由风格的软件项目 2.配置git 源码管理部分,选址git地址以及对应的认证信息 3.触发器 构建触发器,选择触发远程构建,输入身份验证令牌 浏览器中输入jenlins的访问路径/job/girea/build?token=上面输入的令牌即可触发 4.构建环境添加nodejs 系统管理—>管理插件—>搜索NodeJS并安装 系统管理—>Global Tool Configuration—>选择需要安装的nodejs版本—>保存 回到构建环境页面,此时多了一个Provide Node & npm bin/ folder to PATH 5.其它 工作目录对应的磁盘路径:/var/lib/jenkins/workspace/ 相关问题 构建部分shell执行npm install卡住,报错信息Jenkins Build step ‘Execute shell’ marked build as failure 解决,shell头部添加#!/bin/bash 参考链接:https://www.jianshu.com/p/0a865a321d78

Jenkins与gitea自动化打包 2019年10月3日
;

1.查看apache2已开启的模块 apachectl -M 2.根据情况开启相关模块 a2enmod rewrite a2enmod proxy a2enmod proxy_http 3.域名相关的虚拟主机文件内,追加如下内容 ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /proxy http://abc.com ProxyPassReverse /proxy http://abc.com 4.大功告成,重启 sudo service apache2 restart 访问http://willless.com/proxy展示的内容为http://abc.com 参考资料:https://www.2cto.com/shouce/ap2.2/mod/mod_proxy.html#access 官方文档:http://httpd.apache.org/docs/2.4/

apache2开启反向代理 2019年10月2日
;

如何让web页面更快,雅虎团队实践总结了7类35条规则,下面一一列出。 雅虎前端优化35条规则翻译 1. Content 1.1 Make Fewer HTTP Requests Minimize HTTP Requests减少/最小化 http 请求数。 到终端用户的响应时间80%花在前端:大部分用于下载组件(js/css/image/flash等等)。减少组件数就是减少渲染页面所需的http请求数。这是更快页面的关键。 减少组件数的一个方法就是简化页面设计。保持富内容的页面且能减少http请求,有以下几个技术: Combined files。合并文件,如合并js,合并css都能减少请求数。如果页面间脚本和样式差异很大,合并会更具挑战性。 CSS Sprites。雪碧图可以合并多个背景图片,通过background-image 和 background-position 来显示不同部分。 Image maps。合并多个图片到一个图片,一般用于如导航条。由于定义坐标的枯燥和易错,一般不推荐。 Inline images。使用data:url scheme来內连图片。 减少请求数是为第一次访问页面的用户提高性能的最重要的指导。 1.2 Reduce DNS Lookups 减少DNS查询。 就像电话簿,你在浏览器地址栏输入网址,通过DNS查询得…

雅虎前端优化35条规则 2019年10月1日
;

莱顿弗罗斯特现象(Leidenfrost Phenomenon)是指液体不会润湿炙热的表面,而仅仅在其上形成一个蒸汽层的现象,由科学家莱顿弗罗斯特在1756年发现。

莱顿弗罗斯特效应 2019年10月1日
;

整个流程涉及两次文件验证,各种平台密钥及id,账号关联操作,所用验证文件需放入自己的服务器对应目录 微信支付:https://pay.weixin.qq.com 1.商户号 2.获取api秘钥(私钥,自己本地生成后设置上去) 3.设置支付回调 4.账号关联,通过小程序AppID关联(产品中心-开发设置-APPID授权管理,关联小程序AppID) 5.生成支付相关的验证文件,微信支付商户平台证书,放入网站相关目录 /www/wwwroot/0915www.abc.cn/ThinkPHP/Library/Vendor/WxPay/lib/cert/ 微信公众平台:https://mp.weixin.qq.com 1.开发者ID(AppID) 2.开发者密码(AppSecret) 微信开放平台:https://open.weixin.qq.com 绑定小程序 小程序后台:https://mp.weixin.qq.com 1.AppID(小程序ID) 2.AppSecret(小程序密钥) request合法域名中需要加入https://api.mch.weixin.qq.com, 业务域名配置作用可以打开web-view标签链接,此时需要验证域名合法,将验证文件放入网站根目录 各种信息汇总 //微信公众平台: wxacd22e1524f32019 /…

微信小程序接入支付流程 2019年9月29日
;

“修昔底德陷阱”,指一个新崛起的大国必然要挑战现存大国,而现存大国也必然会回应这种威胁,这样战争变得不可避免。此说法源自古希腊著名历史学家修昔底德,他认为,当一个崛起的大国与既有的统治霸主竞争时,双方面临的危险多数以战争告终。

修昔底德陷阱 2019年9月27日
;

1.问题描述 代码调试,在ajax一返回立马打印,发现结果竟然是后续处理过后的 2.伪代码复现 var array = [1,2]; var obj = { a: 1, b: [1,2] } console.log(array); //[1, 2] 误,外部显示的[1, 2],点开箭头显示的[1,2,3] console.log(obj); //{a:1,b:[1,2,3]} array.push(3); obj.b.push(3); console.log(array); //[1,2,3] console.log(obj); //{a:1,b:[1,2,3]} 更正:打印结果中带三角箭头的地方需要展开查看最终结果,外部显示可能并不一致 3.产生原因 对象保存的是地址,引用同一片内存空间,后面发生改变,也会影响打印出来的值。 但凡是有个箭头出来的,可以认为是一个对象了,所以数值是实时的。三角形点开的时候才会拿着内存地址去取对象的值。 而你查看的时候,对象里的内容已经被改过了。所以这个直接log 对象或者数组的方式,并不能很好的体现内部值的一个实时性。 4.猜想 把push放入setTimeout延时5秒会怎样? var array = [1,2]; var obj = { a: 1, b: [1,2] } console.log(array…

console打印数据,发现打印结果并非初始ajax返回的值 2019年9月25日
;

1.父页面 Model.prototype.modelLoad = function(event){ window.callbroadcaster(‘123’); } 2.子页面 Model.prototype.modelLoad = function(event){ var $this = this; window.callbroadcaster = function(e){ $this.getGoodsFromCode(e); } }

wex5主页面触发子页面事件 2019年9月25日
;

1.问题快照 2.原因 查看本机ip发现变掉了 3.解决方案 重新打包即可

wex5真机调试报错‘UIServer错误’ 2019年9月25日
;

1.故事艺术中的3个极端形式(大情节、小情节、反情节)为故事宇宙勾画出一副三角形地图,将故事显现出的各种形式的可能性囊括其中。 2.经典设计(大情节):超越时间的原理,围绕一个主人公构建的故事,主人公为了追求自己的欲望,与主要来自外界的对抗力量进行抗争,通过连续的时间、在一个连贯而具有因果关联的虚构现实里,到达一个表现绝对、而变化不可逆转的闭合式结局。 如:《火车大劫案》、《贪婪》、《战舰波将金号》、《M就是凶手》、《公民凯恩》、《七武士》、《第七封印》、《江湖浪子》、《2001:太空漫游》、《教父2》、《销魂三人组》、《一条叫旺达的鱼》等各种题材和故事类型的电影。 3.小情节:对大情节的突出特性进行精炼、浓缩与修剪,在简约、精炼的前提下保持经典的精华,像大情节一样给予精美的处理,使影片仍然能够满足观众的期待:“多好的故事!”。 如:《北方的纳努科》、《战火》、《红色沙漠》、《温柔的怜悯》、《征服者佩尔》、《盗窃童心》、《大河恋》、《福利》(叙事性纪录片)等。 4.反情节:反,即反其道而行,否认传统形式,倾向于过度铺陈和自我意识的大肆渲染。 如:《一条安达鲁狗》、《午后的迷惘》、《八部半》、《假面》、《反斗智多星》等。 【每日一句】 作家的全部宇宙论,他们对现实和人生真谛所包罗万象的观点和看法,都包含在这个三角形里。要想理解你在这一宇宙中的位…

大情节 小情节 反情节 2019年9月24日