{
name: "unicode",
namespace: "dup.common.utility",
deps: {},
toDecode: function(t) {
var e = [];
if (t instanceof Array) {
for (var i = 0; i < t.length; i++) { var n = t[i]; e.push(this.decode(n)) } return e } return "string" == typeof t ? this.decode(t) : void 0 }, toEncode: function(t) { var e = []; if (t instanceof Array) { for (var i = 0; i < t.length; i++) { var n = t[i]; e.push(this.encode(n)) } return e } return "string" == typeof t ? this.encode(t) : void 0 }, decode: function(t) { return unescape(t.replace(/\\(u[0-9a-fA-F]{4})/gm, "%$1")) }, encode: function(t) { return escape(t).replace(/%(u[0-9A-F]{4})|(%[0-9A-F]{2})/gm, function(t, e, i) { return e && "\\" + e.toLowerCase() || unescape(i) }) } }

{
name: "storage",
namespace: "dup.common.utility",
store: null,
isAvailable: !1,
$storage: function() {
try {
this.store = window.localStorage, this.store && this.store.removeItem && (this.isAvailable = !0)
} catch (t) {}
},
available: function() {
var t = !1;
return this.store && this.store.removeItem && (t = !0), t
},
setItem: function(t, e, i) {
if (this.store) {
e = i ? encodeURIComponent(e) : e;
try {
this.store.setItem(t, e)
} catch (n) {}
}
},
getItem: function(t, e) {
if (this.store) try {
var i = this.store.getItem(t);
return e && i ? decodeURIComponent(i) : i
} catch (n) {
return null
}
return null
},
addItem: function(t, e, i) {
if (this.store) {
e = i ? encodeURIComponent(e) : e;
var n = this.getItem(t) || "";
n += (n && "|") + e;
try {
this.setItem(t, n)
} catch (o) {}
}
},
removeItem: function(t) {
this.store && this.store.removeItem(t)
},
spliceItem: function(t, e, i) {
if (this.store) {
e = i ? encodeURIComponent(e) : e;
var n = this.getItem(t) || "";
if (n = n.replace(new RegExp(e + "\\|?", "g"), "").replace(/\|$/, "")) try {
this.setItem(t, n)
} catch (o) {} else this.store.removeItem(t)
}
}
}


{
name: "cookie",
namespace: "dup.common.utility",
deps: {
lang: "dup.common.utility.lang"
},
get: function(t, e) {
var i = new RegExp("(^| )" + t + "=([^;]*)(;|$)"),
n = i.exec(document.cookie);
return n ? e ? decodeURIComponent(n[2]) : n[2] : ""
},
set: function(t, e, i, n) {
var o = i.expires;
document.cookie = t + "=" + (n ? encodeURIComponent(e) : e) + (i.path ? "; path=" + i.path : "") + (o ? "; expires=" + o.toGMTString() : "") + (i.domain ? "; domain=" + i.domain : "")
},
remove: function(t) {
var e = new Date;
e.setTime(e.getTime() - 86400), this.set(t, "", {
path: "/",
expires: e
})
}
}

最近用BT面板做了一个网站,添加SSL证书后,发现无法加入云观测,百度也经常抓取失败,站长之家工具更是无法访问网站。

通过分析后发现

在新版本的BT面板中SSL配置项为


ssl_certificate ****/fullchain.pem;
ssl_certificate_key ****/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
#SSL-END



#ssl_protocols TLSv1.1 TLSv1.2;

修改为

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

延伸
https://blog.csdn.net/mrpre/article/details/77978293

最近被人安利了一个虚拟货币,Ulord.

官方给的执行程序执行后发现

/lib64/libc.so.6: version `GLIBC_2.14' not found 

这种错误表明程序运行需要GLIBC_2.14,但是系统中却并不存在。

在你准备升级GLIBC库之前,你要好好思考一下,
你真的要升级GLIBC么?
你知道你自己在做什么么?

http://baike.baidu.com/view/1323132.htm?fr=aladdin

glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现…
总的来说,不说运行在linux上的一些应用,或者你之前部署过的产品,就是很多linux的基本命令,比如cp, rm, ll之类,都得依赖于它。
网上很多人有惨痛教训,甚至升级失败后系统退出后无法重新进入了。

wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz
tar -xvf glibc-2.15.tar.gz
tar -xvf glibc-ports-2.15.tar.gz
mv glibc-ports-2.15 glibc-2.15/ports
mkdir glibc-build-2.15
cd glibc-build-2.15
../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install

如果提示install成功,去看glibc所在的共享库:
可以看到2.12的旧库文件还在,多了2.15版本的库文件,而且软链接文件全部指向了2.15版本。