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的冲动,不过穷战胜了我的欲望。我想了两天后就不想了。。。

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

 

Chrome启动关联程序的协议链接误操作被禁用后如何修改设置重新开启

由于误操作,造成Chrome启动关联程序的协议链接被禁用,那么怎么重新修改设置,启动相关的程序呢,这里将为大家解答!

该文章适用于Windows 7 x64下Chrome版本 62.0.3202.94(正式版本) (64 位)的设置,其他设备不明。也许WIN10也可以,但是可能会由于Chrome版本区别而不可用。

今天回到宿舍,要用百度云盘下载点东西,结果,手误,勾选记住后,点了不要打开,为什么要高亮不要打开,泪奔。。。界面是这样的:

百度云的链接协议设置protocol settings

继续阅读“Chrome启动关联程序的协议链接误操作被禁用后如何修改设置重新开启”

这一天的你在电脑上都做了些什么!?

是否有那么一款软件可以统计到每天在电脑上都干了些什么。简单来说就是,统计当前程序窗口在最前端运行的时间~当然有,如此专业的我还是很快找到了几款,这次我来介绍下这个小巧的软件Personal Activity Monitor!

最近工作上并不是很忙,每天在工作上的空余时间虽然也会自己做点学习,但是感觉效率很低。然后突然想到,是否有那么一款软件可以统计到每天在电脑上都干了些什么。简单来说就是,统计当前程序窗口在最前端运行的时间~

要说这样的软件很难利用关键字查询,不过如此专业的我还是很快找到了几款。甚至包含iOS的和Android,当然这次主要是推荐一款Windows下使用的程序,它就是Personal Activity Monitor百度网盘下载),想象不到,这居然是一个Codeplex上的开源程序!不过开发似乎早就终止了,最新计划版本1.6到最后也没有发布,于是下载了最后一次发布的0.1.5的版本,这是2012年的一个程序,不知道在Win10 x64下运行如何,试试看~

Personal Activity Monitor(后面简称PAM)十分轻量,不到1M的大小。下载安装后,点击桌面的小时钟,哇噢~如图:

继续阅读“这一天的你在电脑上都做了些什么!?”

森海塞尔MX686G个人评测

亚马逊有一款森海塞尔的安卓耳机特价,MX686G。大品牌,平时都是卖400左右的,现在200就能拿到,心想音质等各方面应该不会太差吧。

自从换了小米6,一直在寻寻觅觅着一款耳机,之前的苹果耳机适配不好就扔一边了。看了看type-c的耳机,实在是太少了。蓝牙耳机,又担心音质太差,预算是200元左右。正巧看到亚马逊有一款森海塞尔的安卓耳机特价,想来想去,还是买了个需要用type-c转3.5mm的才能用的普通安卓耳机MX686G。心想,毕竟是大品牌,虽然也是200左右买的,但是平时都是卖400左右的,音质各方面应该不会太差吧。期盼了很久,终于等来。试听了几天,最大的感受就是不想再用这款耳塞了 🙁 。

森海塞尔 mx686g
森海塞尔 mx686g

继续阅读“森海塞尔MX686G个人评测”

关于罗技G系列(G500)鼠标USB频繁丢失故障分析解决

我的G500服役三年多了,终于也出现了一些问题。这里介绍一下G系列,比如我的G500鼠标USB频繁丢失故障分析解决办法

我的G500服役三年多了…它的外观如同艺术品深深的吸引着我,于是早早就爱上了…一直喜欢罗技的产品,只因为他的设计的确很不错,再就是我喜欢大而重的鼠标.

https://forums.logitech.com/t5/Logitech-G-Mice/Logitech-G500-disconnecting-and-reconnecting/td-p/637106

http://xim4.com/community/index.php?topic=36313.0


以上内容是2016年4月编辑的。。。存放已久的草稿,其实我的之前的那个问题是没得救了。基本上算硬件故障了。

后来拿去售后,他直接给我换了个G500S,还挺好现在还在用,没什么问题,就是一开始不太适应,左右晃动鼠标,总是感觉有东西没固定,习惯一阵子就好了。罗技的售后还是挺不错的~

罗技G930耳机经常自动断开重连等问题解决方案及使用感受

罗技G930,配置强大,7.1环绕,还有不错软件驱动支持,使用过程中,也遇到了些一问题,比如,经常无故断开重连,软件电量指示不准,无法作为次要设备不休眠使用等等。

一直想买个PC的无线耳机,因为之前买的罗技带麦克风的摄像头,每次打游戏他们都说很吵。。。

正巧(四个月前)碰上亚马逊海外购的活动,买了这款罗技G930,配置描述超级强大,外观超酷炫,7.1环绕,还有强大的软件驱动支持,一心动就拿下了,等了半个月到了迫不及待试试,过程中,也遇到了些一问题,比如,经常无故断开重连,软件电量指示不准,无法作为次要设备不休眠使用等等。就这几个问题我简单聊聊。

经常无故断开重连,困扰了我很久,也是严重影响我的使用体验的。每次语音团战,突然听不到了。很闹心,查了大量资料似乎很多人都有这种情况。我总结下可能存在的原因:

  • 无线设备干扰,比如WiFi干扰,蓝牙干扰,设备过多造成影响,有人说把路由信道调整一下,我觉得不太靠谱。我尽可能的关闭了无线设备,似乎未见好转。
  • USB供电不足导致蓝牙接收器信号不稳定,我前面后面都插了似乎没见过什么改善。
  • 驱动版本问题,似乎有点效果,也不知道是偶然的,我试过很多个版本的驱动(因为我用了多个罗技设备,其中有个版本的罗技设备管理软件,似乎切到耳机设备就会报错,莫名其妙呢!?)。

继续阅读“罗技G930耳机经常自动断开重连等问题解决方案及使用感受”

表单中readonly的input等标签,禁止光标进入(focus)的几种方式

在做移动端页面,表单内的部分元素如果设置了readonly=”readonly”,CHROME模拟移动端是看不出问题的。而手机上虽然表单元素不能编辑内容,但是会出现闪动的光标以及页面底部有一条系统自带的控制bar。这样的体验很差,于是我总结了几个方案。

在做移动端页面,需要在订单页面中显示表单数据,由于UI统一,所以就依旧采用form的结构来写结构,只读数据的标签自然要加readonly=”readonly”,以为这样就行了,CHROME模拟移动端是看不出问题的。手机上一看,虽然表单元素不能编辑内容,但是会出现闪动的光标以及页面底部有一条系统自带的控制bar。

表单readonly元素依然有光标
表单readonly元素依然有光标,底部还有BAR,感觉不好

这种情况对我来说并不好。于是网上找了一些解决方案,现在总结一下:

方案一(JS):

<input type="text" value="test" onfocus="this.blur()" readonly="readonly">

这个很好理解就是进入的时候自动跳出。但是缺点是一方面js处理没有css好,二是如果需要在该元素上绑定其他事件,其他人开发不留意可能会造成事件覆盖。

方案二(CSS):

[readonly="readonly"] {
  user-select: none;
}

这是个新的实验性属性,具体说明及兼容性可参考user-select MDN
用起来感觉很好,但是同样有两个问题:一,非标准属性(请尽量不要在生产环境中使用它!);二,如果用户想要复制该表单内容就不行了,这个问题个人感觉很严重!

方案三(CSS):

[readonly="readonly"] {
  pointer-events: none;
}

这个是我感觉比较适合我的,因此最后我采纳了该方案,当然也是有弊端的,绑定在只读表单元素的所有事件将无法生效。除此之外都表现完美,就我目前需求来看,也不需要什么事件。因此采用了~

当然,如果你也遇到相似的问题,可以根据情况选择对应的方案,当然,如果你也有更好的方法也欢迎留言~