Visual Studio Code几款FTP插件使用总结

投入Visual Studio Code后,很久没有使用过sublime text了,也很久没有用过基于编辑器的ftp工具了,这次专门探索了一下Visual Studio Code几款FTP插件,并作了简单的总结,ftp-sync是最棒的!

平时要维护类似wordpress这样的网站,然后虚拟主机又不支持远程仓的版本管理。总而言之,只能通过下载到本地修改后再通过FTP上传的情况,每次修改后都要开启FTP进行代码提交,相当繁琐。因此就诞生了一些编辑器的FTP插件,其实以前用sublime text的时候还有款插件叫SFTP不错(如果配置好了连接不上可以参考SFTP连接超时),可惜VSCODE上面没有,截至目前(2018年1月17日)可以用的FTP插件如下图:

vscode的ftp插件
vscode的ftp插件

为了找出最合适的插件,我全部都一个个试过了(关于如何使用参考插件说明,十分简单就不多说了)。然后有以下感想:

  1. ftp-sync是测试中的唯一一个感觉还可以的,但是菜单为啥不全,感觉是一个BUG吧.希望后期能够优化.

    ftp-sync菜单
    ftp-sync菜单
  2. SFTP/FTP sync总是回莫名其妙的卡住(左下角提示transfer就不动了),而且相同文件好像也会再次覆盖,不会跳过.文件比较多的时候出问题,不建议使用.
  3. ftp-kr跟Simple FTP/SFTP一样没啥暖用,还不如就用ftp软件操作
  4. Simple FTP/SFTP没啥暖用,还不如就用ftp软件操作

感觉很惨,没有一个真正好用的,而且连ftp传输状态信息也没有.有时候比较惨的误操作了需要中断传输,貌似只能强制关闭编辑器…

最后感觉,还是用sublime text 的SFTP来维护会比较好一点.如果不怎么用sublime text的话,个人建议使用ftp-sync在VSCode上表现还是不错的,有潜力,期待作者进一步优化~

怎样找到当前页面发布日期的几种方法

为什么要搞清楚该网页内容的发布时间呢,有些网站作者的确很不友好,故意隐藏,目的是啥我也不知道。但是我觉得有时候的确很有必要知道正在查阅的内容,尤其是相对重要的内容的时候,他的发布日期对我来说很重要。

为什么要搞清楚该网页内容的发布时间呢,有些网站作者的确很不友好,故意隐藏,目的是啥我也不知道。但是我觉得有时候的确很有必要知道正在查阅的内容,尤其是相对重要的内容的时候,他的发布日期对我来说很重要。比如,遇到以下情况:

  • 有时候我们看到一些不错的文章或者新闻内容,分享给其他人后却被朋友嘲笑这都是老掉牙的内容了;
  • 还有时,查阅一些生活知识,或者时效性强的内容,比如你要补血,发现菠菜补铁促进生血,或者想多吃菠菜变成大力水手那样。其实现代科学证明没啥鸟用;
  • 再或者查找某些技术资料时,按照技术文章对应的方法实践的过程中发现有差异,或者无效的时候很气愤耽误了大量时间。

因此,我接下来要以知乎的某个文章有哪些高级笑话只有具备了一定的专业知识才能听懂?(我这里暂时不想去深究为啥知乎不公开提问日期)作为主要示例介绍一下如何能够找到网上的任何页面的发布日期的几种方法了。

继续阅读“怎样找到当前页面发布日期的几种方法”

Linux下无法正常安装(升级)和删除Nodejs的解决方法

Linux(CentOS6)下安装Nodejs,删除Nodejs,升级Nodejs遇到的一些问题,以及相关解决方案的介绍

接着上次说,自从买了VPS后就没闲着,总想要充分利用起来倒腾点东西。于是决定安装nodejs搭建web服务器等,如今nodejs稳定版本已经更新到8.x了,因此我就试着装一下8.x吧,没想到又遇到了坑,一搞搞了好几天。

我的操作系统是CentOS 6 64 Bit的,我查阅了Nodejs官方升级文档(包含各种可支持的系统),针对我的系统需要分别执行以下几条命令:

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs

当然你也许需要通过以下命令额外安装构建工具:

sudo yum install gcc-c++ make
# or: sudo yum groupinstall 'Development Tools'

如果其他系统则可以参考文档中其他内容。

在这里我就遇到坑了(可能存在该情况较少,所以稍后具体解决放在文章最后来说)。上面第一条应该是静默指定使用8.x的资源,便于安装时采用这个而不是yum自己原来的远程仓,不知道这个解释对不对。

我反复试过了,命令明明提示请执行 sudo yum -y install nodejs 来安装nodejs8.x,却一直安装的是6.x,难道是依赖问题?找不出原因的我,没有办法只能找其他安装途径,于是发现了第二种安装办法,手动获取最新的安装包,并进行解压缩安装,可能依赖Python2.7以上版本,我一步步来说。

如果是仅手动安装Nodejs8.x,执行以下命令:

yum install gcc-c++ openssl-devel
cd /usr/local/src
wget http://nodejs.org/dist/v8.9.4/node-v8.9.4.tar.gz
tar zxvf node-v8.9.4.tar.gz
(cd into extracted folder: ex "cd node-v8.9.4.tar.gz")
./configure
make
make install

顺利的话应该不会有什么问题,大概会过一段时间,稍微有点长,就提示安装好了,可以执行

node -v

来查看是否是8.x,如果好了,基本上关于安装部分就大功告成了。如果没好,太惨了,跟Python有关系的话,请查看Linux下Python安装升级心得

接着我们来看看删除,因为你已经安装了一个低版本,需要升级,那就是要先删除旧版本了,nodejs应该是向下兼容的,所以我就没有去研究可能闲着蛋疼才会去研究如果保存多个版本nodejs,当然在新版中可能会存在部分旧的功能废除而造成异常,虽然一般来说升级利大于弊,不过还是要考虑老项目环境是否要升级!如果你是闲着蛋疼的人,必有理由说服我,请在下方留言。差点跑题,删除命令简直是太简单了。

sudo yum remove nodejs

然后按提示输入y,回车后很快就删了。一切删除操作都是令人兴奋的。。。

其实,我在安装过程中远没有那么轻松,否则也不会折腾几天了,一个是版本错误,一个是Python升级。版本问题,后来差了很多资料才发现,原来是yum缓存问题导致。如果遇到和我类似的问题,请尝试以下命令:

rm -f /etc/yum.repos.d/nodesource-el.repo
yum clean all
yum -y remove nodejs
yum -y install nodejs

汇总下本文参阅的相关文章:

  1. Nodejs官方文档,通过包管理安装Nodejs
  2. Centos下手动安装Nodejs的方法
  3. 无法在Yum仓下安装正确的Nodejs版本(和刚才示例的代码类似,都是清除缓存,不过对我无效)
  4. CentOS下使用nodejs7.x的包进行安装却安装成了6.9.5(针对我的有效方案)
  5. 如何通过Linux命令删除Nodejs

所以我呢,其实就是应该遇到版本不对的情况就尝试清除缓存,再用官方命令进行安装就好了~

我想既然是Yum仓库缓存的问题,除了Nodejs,别的包也许也会有类似情况吧,如果也发现了选择了需要的版本后依然装的是旧版的,又和依赖没什么关系,就试试清除缓存吧 🙂

购买VPS后折腾小记

近日购买了个美国的VPS,为了愉快的查阅资料和关注一些不错的视频,搭了个梯子,自己种番茄,也从此走上了不归路,这是我近期玩VPS的一点点小感想~

由于多次购买番茄烂了,老板跑路,损失几百。于是决定自己搭架子种番茄。正巧碰上小熊前不久买了个VPS,简单看了下,还不错,关键是性价比极高,二话不说就买了。

按照服务器商家的购买流程,首选了Ubuntu 16.04系统,其实之前对VPS一无所知,也不知道是纯命令界面。读大学的时候就装过Ubuntu 10.xx不过那时候完全是好奇尝新,也没学到个啥。

购买完了,后台给了个IP,研究了下,就想着怎么折腾,不过这个后台太简单了吧,只有reboot,boot,shutdown和完全不知道干啥用的console什么的,去查了下,也没看懂,就先不管了。

此刻的我面对这个VPS后台,心想怎么操作呢= =,只玩过虚拟主机的我,感觉像是乡下来的土鳖,翻遍了整个服务商提供的页面,也没找到个什么所以然。只得百度一下VPS怎么玩,才知道原来一般来说只有SSH连接工具连接,纯命令操作。。。此刻一脸懵逼的我,下了个XShell,因为看到是共享软件,就去找了个绿色破解版,至此走上不归路。。。

其实刚开始用这个破解版的XShell都挺好,连接上了后,安装番茄工具,简单配置,一切顺利,晚上测了一下速度,棒棒哒,美滋滋。第一天夜晚很顺利,我就安心的睡了。直到第二天。。。

早上,想测测番茄发育良好不。发现咋突然烂了- -。这一晚上就挂了,然后开机发现服务器Offline了。怎么就无缘无故Offline了呢,手动Boot一下,好了,可是没过半分钟,又Offline了。完全无法正常使用,然后开始了一天ticket和客服对话中,很糟糕的客服体验,折磨了我两天,后来才知道,服务器遭到DDOS攻击,流量一晚上偷跑30多G,而且带宽只要一连接就处于满载状态,VPS自动进入休眠策略,这可咋办,我想利用每次连接不到1分钟的时间来搞防火墙等安全措施,基本上都失败了,一方面对网络安全不是很懂,另一方面也不熟悉Linux系统的相关命令,在纯命令行模式下操作对我来说是极大的挑战。所以对于这次DDOS攻击的防御战中,我是彻底失败了。最后和效率极低的客服终于沟通完了,重装了CentOS系统。之所以沟通很费劲,是因为客服回复效率超低,每次等1-3小时不等,而且他们没有给后台权限,就是用户自主决定重装系统的权限,他们有两个后台,以为我有,我其实没有,所以根本没法重装,就这样一脸懵逼的郁闷到了第三天。

Control Panel Permission Accessed Day简直爽歪歪,重装系统后,SSH操作也顺利得多了。不过好不容易搞明白apt-get,现在又来个yum,虽然差不多- -又开始折腾CentOS的路上,种番茄依赖Python等,然后还有各种版本的Python,网上资料大部分写的不够细致,或者不适合我的环境,经常在操作的过程中发生各种异常情况,结果系统似乎被我搞得一团糟。总结了流程和相关要点后,我再次重装了系统,采用了傻瓜式一键安装包。。。简直傻瓜得不能再傻瓜了,半小时不到就搞好了- -,看来我这种小白还是适合一键安装 😕

之后我的番茄地很稳定,没有什么异形攻击,除了我自己时不时在研究iptables和netstat命令以及kill -s搞毁了之外。。。

在之后,闲着无聊就测速。由于是OpenVZ构架的VPS,我又开始琢磨怎么加速,什么BBR加速之类的,又看了好多教程资料。鼓捣了一阵子,其实到底有没有效果我还真的没有确切的答案。反正差不多就这样了。

这几天又研究搞nodejs环境打网站了。。。感觉这几天玩VPS虽然有很多坑,但是还是挺开心的。还学会了不少Linux的操作,VIM操作(以前就知道vim觉得简直反人类,现在稍微用了下虽然还是感觉很反人类,但似乎感觉也挺有趣~)

由于Windows相关操作都很坑爹,比如ssh连接上就是让我掉进坑了,也算是我图省事,后来推测那个破解版的XShell估计有后门,所以连上后就被控制了。后来重装系统后我用了免费的PuTTy,其实这个足够使用了。

还有后来我试着部署一个博客系统Jekyll,windows下也是失败了,太繁琐,太麻烦了,linux上面则容易得多。突然有想买MacBook的冲动,不过穷战胜了我的欲望。我想了两天后就不想了。。。

还有什么没有提到的,大概就这些吧,这篇纯属是日记,所以也就没什么条理了~

 

PostCSS学习指南(二)

关于我最近学习PostCSS的一些相关心得和总结,主要介绍项目中可能用到的一些插件比如autoprefixer,postcss-partial-import,postcss-advanced-variables,cssnano,postcss-px2rem,precss等等

(推荐访问github上面的Markdown排版的介绍PostCSS学习指南(二))

继上一次PostCSS学习指南(一)后,渐渐开始在项目中应用。

这次决定主要讲解一些个人认为非常有帮助的PostCSS插件。

本期主要介绍以下几个插件和几个坑

  1. autoprefixer
  2. postcss-partial-import
  3. postcss-advanced-variables
  4. cssnano
  5. postcss-px2rem
  6. precss
  7. postcss-nestingpostcss-nested
  8. 坑( ఠൠఠ )ノ

autoprefixer

这个就不用多说了,必装插件之一。方便的写规范的css,它会为你提供非常完整的hack兼容方案的。当然这里需要了解一下的是,它的大部分兼容数据来源Can I Use,另外一个稍微需要了解的插件配置参数就是browsers,比如这样写:

module.exports = {
  plugins: [
    require('autoprefixer')({ browsers: 'last 2 versions' })
  ]
}

关于这个参数的详细介绍可以看看Browserslist Queries,文中说了,强烈建议将查询写入package.json(后面会告诉你为何要写在这里),而非配置postcss.config.js中autoprefixer的browsers参数。所以此处建议写法如下: 继续阅读“PostCSS学习指南(二)”

为了WordPress支持markdown…我重装了wordpress和theme,然而…

为了让wordpress支持markdown,重新升级了后台和主题还是没能像官方说明那样解决…最后才发现,那是给基于wordpress官方站点上创建的博客使用的…也真是醉了.

随着时代的推移,大部分文档开始使用markdown格式来编写了…我也打算把这些我排版好的markdown格式的文件直接弄到wordpress上面发表…我Google了一下,第一篇就是这篇文章Markdown — Support.

满怀欣喜的按照里面的说明找到设置 – 撰写, 却没有看到那个开启markdown的选项.

我有点不爽,难道是版本过低.对于每次进入后台都看到升级提示已经令我很不爽了…好吧我更新一下吧.折腾了大半天更新完了…也就是现在看到的博客的新样子…有2015主题换成了2016主题,本来想2017的,完全不懂头部的那张大图的设计含义…小心翼翼的保证一切主题修改的没出错(其实我也不知道到底出错没).主要是插件,主题的部分php修改,还有自己添加的代码高亮组件.反正瞎倒腾好了…再次满怀欣喜的找到设置-撰写发现根本就跟之前一样的时候…

我觉得我经历了绝望.这什么破玩意哦…遂去查找有没有相关的Markdown插件,貌似也没一个比较好用的…

这次大的更新,就当作是升级了一下…找了很多为什么没有刚才那个选项,后来说只有在他们服务器上面开的wordpress站点才支持,并非wordpress这个程序支持…于是我在我在wordpress上面创建的博客后台找到了…真是坑爹.

wordpress是不支持markdown的
wordpress是不支持markdown的

好吧,至此,如果实在是要的话,就只能用插件了…我不太想装插件,勉强就先这样了.如果你需要的话,据说比较好用的就是Jetpack了,大家自己尝试下下咯~

参考:

How to use markdown for wordpress posts

在Wordpress中如何使用MarkDown编辑博文?

页面内某元素到文档顶部的距离计算

之前写了一篇元素到网页顶部距离计算方法,其实分明有更好的方法,例如这个方法就不需要写那么复杂的循环了,这里再次总结一下。

2015年1月7日

之前写了一篇元素到网页顶部距离计算方法,其实分明有更好的方法,例如这个方法就不需要写那么复杂的循环了,这里再次总结一下。

请看下面代码,或者查看在线demo调试,看起来兼容性都是OK的。大家可以自己试试。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>the distance to top</title>
    <style type="text/css">
    div {margin:10px 20px;padding:5px;border:3px solid #aaa;position:relative;}
    .para {background-color:#ccc;}
    </style>
</head>
<body>
<div class="outer">
    <div class="outerWrap">
        <div class="header"></div>
        <div class="content">
            <div class="content-inner">
                <p class="para" id="para">
                    Hello, whidy! 这是一个获取当前元素距离网页顶部高度的计算demo.
                </p>
            </div>
        </div>
    </div>
</div>
<script type="text/javascript">
para = document.getElementById('para');
var y = para.offsetTop;
var y2 = para.getBoundingClientRect().top;
while (para = para.offsetParent) {
    var oStyle = para.currentStyle? para.currentStyle : window.getComputedStyle(para, null); //currentStyle兼容IE
    var borderTopWidth = parseInt(oStyle.getPropertyValue('border-top-width')); //border-top-width实际上用于被包父级层的边框值计算,因此本demo内header的边框值对此处不影响,取而代之的是直接计入content盒子距离outerWrap的高度
    if(borderTopWidth) { //如果有边框值则加上边框
        y += para.offsetTop + borderTopWidth;
    }
    console.log(y,'offsetTop');
    console.log(y2,'getBoundingClientRect');
}
</script>
</body>
</html>

参考资料: Element.getBoundingClientRect() – Web API 接口 | MDN

魅族手机MX2原生浏览器字体大小问题

今天要说的是我才发现的一个BUG.关于魅族手机MX2,MX3(其他机型未测试),固件版本均为3.7.3A稳定版原生浏览器,在测试页面的字体大小样式时无效,

都知道魅族的手机很坑了,我就不多说了.

今天要说的是我才发现的一个BUG.关于魅族手机MX2,MX3(其他机型未测试),固件版本均为3.7.3A稳定版原生浏览器,在测试页面的字体大小样式时无效,如果你的魅族手机有遇到类似问题,可以试试这个demo测试一下,顺便看下源码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>meizu mx2 stock browser bug with font size style</title>
<style type="text/css">
* {margin:0;padding:0;}
body * {/*height:150px;*/display: block;}
</style>
</head>
<body>
    <h1 style="font-size:60px;">h1 tag with a font-size 60px style!</h1>
    <p style="font-size:60px;">p tag with a font-size 60px style!</p>
    <span style="font-size:60px;">span tag with a font-size 60px style!</span>
    <strong style="font-size:60px;">strong tag with a font-size 60px style!</strong>
    <a href="#" style="font-size:60px;">a tag with a font-size 60px style!</a>
</body>
</html>

从这个代码中可以看出,所有元素应该都是60px字体大小.

但是又可以发现a标签的字体大小是比以上字体大,实际上a才是60px大小,而其他元素的字体大小则是一个默认值.为什么会这样,请问魅族开发人员!

我发现了一个现象,上面把高度给注释去掉了,也就是”hack”后,则字体大小显示正常,均保持了60px,见demo2…这是什么原因.

鬼才知道!

因此我们一致认为魅族原生浏览器坑爹.我不记得web标准是需要给设定了字体大小的元素加高度的吧…

IScroll的click单击事件变为双击多次触发解决

前阵子做WAP端的项目,用到了iScroll插件,结果发现有很多问题,起初并未用多个设备进行测试,以为并没有什么问题,结果进入项目尾声进行测试的时候,竟被这个插件折腾了好几天简直让人抓狂.

前阵子做WAP端的项目,用到了iScroll插件,结果发现有很多问题,起初并未用多个设备进行测试,以为并没有什么问题,结果进入项目尾声进行测试的时候,竟被这个插件折腾了好几天简直让人抓狂.其间收集了一些资料,但是苦于项目上线后一直都比较忙,也就没有什么时间总结这个iscroll插件的一些问题,距离项目上线已经有了半个月了,我下文写的不好还请见谅.

首先iscroll是为了让wap端页面的的某个层内能够固定滚动而特别制作的,我起初想这个东西使用好像还是比较广泛的,问题应该不多吧.之前同事也有使用过,不过基本上使用的是简单的功能,而我这次进行的更多是复杂的交互效果,因此,让我纠结了很久的就是android手机在不同系统版本上,在不同浏览器上以及不同系统版本和不同版本浏览器这三种情况都可能发生各种问题.

参考资料:

https://github.com/cubiq/iscroll/issues/674

https://github.com/cubiq/iscroll/issues/547


以上内容是一个月前写的…我已记不清了,大概是处理不同设备的click事件遇到了很多问题,,,这篇文章放在草稿箱许久了,是时候终结了!

这个iscroll插件的确有很多需要注意的地方,仔细阅读了文档重要部分好几遍,结果写的代码还是问题很多,本文就iscroll使用上的一些问题总结一下与大家分享分享.

我们先来看一个demo(从项目中提出可能有部分冗余代码),主要用于分类选择,菜单弹出功能,(实际应用效果见太平洋电脑网手机端产品库页面,当然后期可能改版,实际效果与demo略有差异)如,用到zepto库,iscroll插件.其中iscroll主要是处理固定高度的滑动效果,它能够自适应并兼容很多设备,所以我选择了插件.

当然每个可以上下滑动的区域都需要创建一个IScroll实例,只需要简单的一句话即可,但是要遵守它的HTML代码结构,详细可以参考官方文档.这里就不讲基本的使用方法了,底部有资料写的很清楚了.我就简要说一下关于这个DEMO中的注意事项.

首先是这是一个带有弹出层的页面,每次点击导航会有一个向下滚出的层,那么弹出后就会创建对应的一个或两个iscroll实例,当点击顶部收回的时候,容易忽略一点,刚创建的实例依然存在,假设收回不销毁新建的实例,就会出问题!

其次,iscroll内的的click事件处理,默认是false,这在ios系统的手机上会出现click执行两次,也就无效的情况,需要改成true,所以需要对创建的示例增加参数.但是问题在于兼容了ios后,android各个版本会出现同样的问题.解决方案,对不同的安卓设备采取不同的click属性值处理,但是经过大量机器测试,依然可能出现无法兼容的情况(实际上是通过一个正则处理的,见代码)

function iScrollClick(){ //设备识别来控制iscroll的click真假
    if (/iPhone|iPad|iPod|Macintosh/i.test(UA)) return true;
    if (/Chrome/i.test(UA)) return (/Android/i.test(UA));
    if (/Silk/i.test(UA)) return false;
    if (/Android/i.test(UA)) {
        var s = UA.match(/Android [\d+.]{1,5}/)[0].replace('Android ','');
        return parseFloat(s[0]+s[2]+s[4]) <= 442 && parseFloat(s[0]+s[2]+s[4]) > 430 ? true : false;
    } //测试大量机器总结的规律,可能会有极小部分机器在选择功能上依然出现问题
}

其实官方文档中有一个options.preventDefault的属性可以配置,但是不知道是哪里出了问题,经过反复测试都没起到作用.于是这个问题折腾了很久…直到有一天…

虽然早起处理这个问题的时候就知道有fastclick,或许可以解决,但是又是一个插件,毕竟一个项目中用太多的插件不好,所以未采纳,前几天研究移动端的touch事件和普通的pc端click等事件时,更清楚的明白了一些东西,例如事件冒泡等…反复琢磨测试,觉得fastclick或许也是可行的,既然之前的方案不够完美,不妨试试这个demo,去掉了iscroll对click的配置(即默认都是false),并添加了fastclick插件及全局配置后,测试了很多机器,发现,并未出现问题.那么目前来看针对iscroll出现的双击,穿透,或是点击延时等问题应该全部处理好了!

毕竟这个内容过去太久,凭借回忆来写的,可能有些混乱,建议有遇到类似问题的朋友仔细看看两个demo的区别,一个是正则处理iscroll的click属性的demo,一个是用fastclick插件的iscroll demo,只需要注意两个demo的js的区别即可!

最后附上相关参考资料:

官方资料: IScroll官方网站 IScroll PDF参考手册 IScroll Github

其他: iScroll 5 API 中文版


后来发现,原来这不是万金油,总会有些坑爹的情况.比如魅族原生浏览器,还有chrome…竟然也会出问题,太失望了.

也就是说,在魅族原生浏览器下,需要设置为click : true才能正常运作,魅族原生浏览器如果false则会出现两次点击,而产生意外情况.而chrome则是当false时,整个iscroll容器内的事件全部被阻止了..没有办法只得打补丁了.于是加了以下代码…

var clickBoolean = false;
if (/Chrome/i.test(UA)) clickBoolean = true;
if (/534.30/i.test(UA)) {
    if (/UCBrowser/i.test(UA)) clickBoolean = false; //覆盖同版本
    else clickBoolean = true; //魅族原生?
}

我本来想通过UA标识来区分魅族浏览器,因为我这个写了534.30来区分魅族的方法风险太大因为UC也是这个版本,所以又加了一条如果是uc还是要用false,想在魅族的UA上处理,但是魅族原生浏览器真的很坑,UA上面根本无法下手.只能临时采用下策了.

这几点是需要大家注意的…(2015年2月2日18:54:00)

更新至WordPress 4.0

花了两个晚上,总算升级到了4.0,本地测试了半天,最后还是没有重新安装而是直接升级.也不知道会不会出问题.

不得不说住在这里的电信太坑爹,玩炉石要挂代理,用个FTP工具也要代理!!!我空间服务商也是折腾了半天,才连上.

本来说早点睡,但是一整博客就没完,仔细对比了3.8.1的主题和4.0的2012年的主题,进行了修改,其中并没有太大的改动,我想可能主要是维护2014的主题吧.另外其他增加的功能也没什么测试的.

最近也是瞎忙,一直没更新博客,本来是200W排名,虽然不值一提,但是降到600多W也是很不爽的.准备有空最近再来整改一下博客,优化一下了.