SSH 认证失败 (从问题理解 SSH 认证)
问题描述&解决远端重置 SSH 后,连接失败,提示错误内容如下 1234567891011@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that the RSA host key has just been changed.The fingerprint for the RSA key sent by the remote host is...
F@!K P3P
今天反爬服务遇到一个问题,业务方的页面A中的iframe页面B引用了反爬JS但是B页面一直获取不到cookie信息而被反爬服务拦截,现象在IE容器内可以重现,一开始以为 form 表单提交在 IE 下造成的 (前不久遇到过 from 表单提交在 chrome49内核下遇到弹窗问题留下对 form 的阴影吧 …),之后定位到是页面B无法写入B域名的cookie。根本原因正是由于 隐私首选项 (Privacy Preferences Project) 这个协议,以下简称 P3P。 P3P 限制什么当前页面在跨域的请求中无法设置cookie,包括 iframe、script、img 具体场景如: A.html 中引用 iframe(B.html),B.html设置B域的cookie无效 P3P...
Number.EPSILON
今天介绍一个新的属性 - Number.EPSILON 用来表示 JS 中计算时的误差范围。 这个属性是 ECMAScript 2015 (6th Edition, ECMA-262) 开始支持的,兼容性上 IE 至今未支持.. EPSILON属性的值接近于 2^-52,表示1与大于1的最小浮动数之前的差值。 可以这么理解,它表示JS下进行计算时的最小精度,如果误差小于这个值可以认为没有意义。 利用 Numer.EPSILON 可以解决精度计算误差的问题,比如经典的 0.1 + 0.2 != 0.3 1234x = 0.2;y = 0.3;z = 0.1;equal = (Math.abs(x - y + z) < Number.EPSILON EPSILON(ε0)在数学中是序数,表示最小的数字 Q1. 精度运算问题中,为什么 0.1+0.2 != 0.3, 0.2 + 0.2 == 0.4 ? 这就涉及到计算机组成原理中关于数据存储的问题了,0.1+0.2 的计算步骤为 123456// 0.1 和...
Leancloud 快速搞定网站访问量统计
Hexo通过Leancloud快速方便实现阅读量/访问量统计,valine的阅读量统计支持
ZRender 使用记录
在使用 ZRender 过程中遇到的一些问题… 基础链接: ZRnder 文档 ZRender github textLineHeight 行高配置无效在家实测 4.0.7 已经修复了这个问题,在公司用的 4.0.4,看了下 commit 记录 官网是在 4.0.6 修复这个问题的,是由于代码中对传入配置优先级的取舍导致的 12不再维护{% codepen OqVgGb js,result 300 100% ldinglding dark %} 多行( \n ) + 超出省略( outerWidth ) 扶额 … 从测试代码看没有问题,可以实现多行时仅最后一行出省略符…的效果,那应该是我这块的宽度计算 outerWidth 有问题(我这边做的处理是根据传入的文本计算换行、自适应宽度、自适应高度、超出最大限制后出省略符) 12不再维护{% codepen LaVjMR js,result 300 100% ldinglding dark %} 事件到底如何使用上手的时候看文档是 zrender.Eventful.on ,就去查...
计算字的宽高
在不算多功能需求中,我们会遇到需要用JS来计算字宽高的情况,比如 canvas根据渲染文字计算换行、块的大小等 IE8及以下双行并且有省略符… 文字少的时候居中,文字超出的时候出省略符… 通常,我们采用建立伪节点来计算 123456789101112131415161718192021// 参数配置的形式function getTextSize (text, style = {}, container = document.body) { let dom = document.createElement('div') // dom.id = 'YOUR_SCOPE_measure' for (let attr in style) { dom.style[attr] = style[attr] } dom.style.opacity = 0 dom.style.display = 'inline-block' dom.innerText =...
如何打乱数组? (洗牌算法)
定义问题既然要让计算机打乱数组,我们得先定义下“打乱”是什么? 让一个数组内的元素随机排列 那么,你怎么定义 随机 ? 要知道在计算机软件层面只能通过各种算法产生伪随机数,真正的随机必须结合物理和硬件来实现,比如可以根据周围电磁场的噪音生成之类 所以稍稍修改下目标: 让一个数组内的元素随机排列,并且每种排列结果尽可能少偏差 制定方案我们有那些随机打乱数组的算法呢? 1. sort + random1arr.sort(function() {return .5 - Math.random()}); 运行结果 ↓(橙色正偏差,紫色负偏差,全部接近白灰最佳) 从结果看来这种算法并不好,究其原因,各浏览器 sort 的实现为了追求效率,并不会每两个元素都能进行比较和置换,那么可能性的分布就已经很不均了。 2. map + sort + random1234var random = array.map(Math.random);array.sort(function(a, b) { return...
同源策略(CORS)探究
一、有哪些场景 由 XMLHttpRequest 或者 Fetch 发起跨域 HTTP 请求 Web FONT (CSS @font-face) WebGL 贴图 canvas API 中的 drawImage CSS 中的资源请求 二、简单的 CORS 实现在跨域 AJAX 请求中, 浏览器端无需做任何操作,会自动在 header 信息中添加一个 Orgin 字段;如果是 Fetch ,则需要添加字段 mode: 'cors' 。 1234567891011GET http://square.10jqka.com.cn/usercenter/strategy/getrecommendlist HTTP/1.1Host: square.10jqka.com.cnConnection: keep-alivePragma: no-cacheCache-Control: no-cacheAccept: */*Origin: http://www.10jqka.com.cnUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64;...
Fetch 和 Ajax 有什么差别
首先让我们来现清理下概念 Ajax 最正确的概念应该是 异步 JavaScript 和 XML (Asynchronous Javascript And XML) ,是指通过核心对象 XHR (XMLHTTPRequest) 达到一种向服务器提出请求并处理响应而不阻塞用户的技术,为Web交互方向打开了新的大门。再后来,由于很多框架都封装了对应的 Ajax 方法,比如大名鼎鼎的 jQuery 中的 $.ajax(url, func),很多开发者开始直接称呼这类对 XHR (XMLHTTPRequest) 对象进行方法封装的方法为 Ajax 。 而 Fetch 这种新方法提供了一种简单,合理的方式来跨网络异步获取资源。 下面来了解下 Fetch 在使用中和 Ajax 的差别~ 一、Promise标准提到 Fetch 和 Ajax 最大的不同,应该是 Fetch 是基于标准 Promise 实现,支持...
VPS出事的又一天
今天 vps 又被禁了,记一下检查流程 ╮(╯▽╰)╭ S1.检查是不是机子挂了进行海外连接ip测试站长工具 ping.chinaz.com/ 选择“海外”进行测试 如果全部超时,机子挂了,解决方案: 可能搬瓦工机房服务器处于维修状态,这个页面 可以查看当前机房服务器状态,绿色是正常 重启 重装 提交工单,找客服 备用 ip 测试工具 http://ping.pe/ S2. 检查是否ip被禁进行国内连接 ip 测试 同S1, 选择所有国内站点进行测试,如果全部超时,ip被封无疑 更换ip 免费更换地址 登陆后,点击 Test ,如果 bwg 检查 ip 确实被封,可以免费换(现在是,每十周并且被封才能免费换) 收费更换地址 S3.检查是否端口被封 telnet IP 端口 如果不是 ssh 端口被封还好,把自己暴露的服务端口改下重启,麻烦的是要通知所有用你机子的人.. SSH 端口被封 修改配置文件,修改/添加端口号 1vim...