分类 web相关 下的文章

PAC Manager在Debian 9 Stretch下连接ssh服务器卡死问题的解决办法

用上 Debian 9 (stretch)了,可惜用来管理SSH服务器的免费工具 PAC Manager 挂了,一连接ssh服务器就处于卡死状态。错误信息显示:

INFO: Using 'standard Gnome2' tray icon
unhandled exception in callback:
Can't locate object method "new" via package "Gnome2::Vte::Terminal" (perhaps you > forgot to load "Gnome2::Vte::Terminal"?) at /opt/pac/lib/PACTerminal.pm line 500.
*** ignoring at /opt/pac/lib/PACMain.pm line 1398.

搜索了一下,这里有个解决方案:https://sourceforge.net/p/pacmanager/bugs/286/

提供的方法如下:

I solved the problem on my Debian Stretch, perl 5.24:

1/ Install dependency
apt-get install libvte-dev libextutils-depends-perl libextutils-pkgconfig-perl

2/ Install dh-make-perl
apt-get install dh-make-perl apt-file
apt-file update

3/ Build Vte
dh-make-perl --cpan Gnome2::Vte --build

4/ Install the package
dpkg -i libgnome2-vte-perl_0.11-1_amd64.deb

5/ Remove embeded vte library from the pac directory
find /opt/pac/ -name "Vte.so*" -exec rm {} \;

在执行第3步的命令 dh-make-perl --cpan Gnome2::Vte --build 时,又遇到问题了。

Can't locate object method "get_user" via package "DhMakePerl::Command::make"

这问题解决办法可以参考这里https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=856532
具体操作很简单,就是设置一下环境变量DEBEMAIL或EMAIL,然后 就可以跳过遇到上面出现的代码分支。

解决后,执行完5个步骤,pac manager就可以正常工作了。

NodeJS在Windows下的简单安装及使用

NodeJS流行有段时间了,本着折腾的目的,试着在windows下用了用,的确是方便。

安装

其实安装异常简单,当然,最省事的方法就是下载安装包安装,但我希望能绿色一点,就直接下载zip包来使用,效果是一样的。

安装包的下载链接是:http://nodejs.org/download/,zip包的下载链接是http://nodejs.org/dist/latest/

下载node

直接下载最新版的链接是:http://nodejs.org/dist/latest/node.exe,把下载的node.exe放在d:\develop\nodejs目录下。

下载npm

npm是nodejs的模块管理工具,下载链接是http://nodejs.org/dist/npm/,注意,如果使用安装包安装已带npm,无须再自己安装npm了。目前的最新版是http://nodejs.org/dist/npm/npm-1.4.7.zip。下载后直接解压到d:\develop\nodejs目录下。

可以看到d:\develop\nodejs目录下的文件目录应该如下:

node_modules
node.exe
npm.cmd

安装nrm

nrm用来查看和切换当前使用的registry,国内的网络情况大家都懂,一般来说使用国内的nodejs库镜像是明智的。

开启一个cmd窗口,设置环境目录:
set path=d:\develop\nodejs;%path%

安装nrm

npm install -g nrm --registry=http://registry.npm.taobao.org

然后查看一下nrm所支持的镜像的位置:

nrm ls

可以看到:

* npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
  taobao - http://registry.npm.taobao.org/
  eu ----- http://registry.npmjs.eu/
  au ----- http://registry.npmjs.org.au/
  sl ----- http://npm.strongloop.com/
  nj ----- https://registry.nodejitsu.com/

缺省是使用官方的模块库,在国内我们应该选择cnpm或taobao

nrm use taobao
Registry has been set to: http://registry.npm.taobao.org/

再看一下:

nrm ls

  npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
* taobao - http://registry.npm.taobao.org/
  eu ----- http://registry.npmjs.eu/
  au ----- http://registry.npmjs.org.au/
  sl ----- http://npm.strongloop.com/
  nj ----- https://registry.nodejitsu.com/

好了,这样就可以用npm快速安装所需要的模块了。

nodejs的安装就算是完成了。

安装常用模块

如果想了解nodejs有哪些比较流行的模块,可以查看:
https://www.npmjs.org/browse/star

https://nodejsmodules.org/

一般来说,使用比较多的有:

  • express
  • grunt
  • socket.io
  • socket.io-client
  • mocha
  • underscore
  • connect
  • commander
  • coffee-script
  • uglify-js
  • mkdirp
  • forever

等等,对于常用的模块,可以安装成全局模块,这样,可以避免每个工程都下载安装一次。

关于网页中的meta标签

今天看了一下日志,发现有人访问了网站根目录的 browserconfig.xml 文件,一时好奇,查了一下,原来这是浏览器配置文件(browser configuration files)。

这是个XML文件,定义了浏览器在访问网站时的一些自定义信息和一些需要轮询获取更新信息的文件URI,这样可以方便浏览器知道什么信息在哪。从IE11开始,IE会自动去尝试找这个文件。如果网页需要指定这个文件内容,可以在meta标签中指明。

meta标签主要用于对网页基本信息(元信息)的描述以及网页自动更新频率等的控制。主要是方便搜索引擎对网页信息的检索,也方便浏览器能更便捷的获取网页基本信息,比如网页类型、文字所用字符集、过期时间、更新频率、网页内容描述、网页关键字、网页作者、网页创作工具等。

meta标签必须放在<head>和</head>之间。基本格式如下:

<meta name="xxx" content="xxx">
<meta http-equiv="xxx" content="xxx">
<meta scheme="xxx" content="xxx">

最后一个 scheme 在HTML5中已不再支持了。

其中 http-equiv 类信息包括:

content-type
expires
refresh
set-cookie
cache-control
content-language
date
last-modified
location
window-target

name类信息包括:

author
description
abstract
keywords
generator
revised
classification
copyright
distribution
expires
refresh
reply-to
robots
revisit-after
......
(其他你自己定义的信息类型)

各浏览器厂家定义了大量网页元信息,比如像上面微软的IE所支持的定义:

<meta name="msapplication-config" content="IEconfig.xml" />

当IE11在网页上没找到这个元信息时就会自动访问 browserconfig.xml 文件。在这里可以查看IE所支持的一些自定义元信息。

Debian7升级到Debian7.1 出现读写/run/initctl超时的解决办法

vps里运行

apt-get update&&apt-get dist-upgrade,

从Debian7升级到Debian7.1,升级过程的最后,出现如下提示:

sysvinit: creating /run/initctl
sysvinit: restarting...init: timeout opening/writing control channel /run/initctl
.init: timeout opening/writing control channel /run/initctl
.init: timeout opening/writing control channel /run/initctl
.init: timeout opening/writing control channel /run/initctl
.init: timeout opening/writing control channel /run/initctl
.init: timeout opening/writing control channel /run/initctl
.init: timeout opening/writing control channel /run/initctl
.init: timeout opening/writing control channel /run/initctl
 failed.

然后,就悲剧了,系统无法重启和关机了。

运行reboot 或halt 都会出现:

The system is going down for reboot NOW!
shutdown: timeout opening/writing control channel /run/initctl
init: timeout opening/writing control channel /run/initctl

然后,系统继续运行。

搜索一下,发现原来是dist-upgrade后缺省使用了新的sysvinit,在这里有说明。

一个临时的解决办法很简单,重新安装一下upstart即可:

apt-get install upstart

安装过程会自动移除sysvinit,并会提示你输入“Yes, do as I say!”,然后,系统就可以正常重启了。

IPv4中保留ip段

IPv4中的ip基本上分配完了,可是IPv6的普及看来还有些年头。

回顾一下IPv4中的保留ip段。

内部使用ip段

  • 10.0.0.0 - 10.255.255.255
  • 172.16.0.0 - 172.31.255.255
  • 192.168.0.0 - 192.168.255.255

好多人都以为172开头的全是内部使用ip段,其实不全是的。

内部使用ip段的rfc是RFC1918

自动配置ip段

  • 169.254.0.0 - 169.254.255.255

比如:windows下如果自动获取ip没找到dhcp服务器,就会分配一个这个ip段的ip先将就着用。

相关的RFC为 RFC 5735

本地环路ip段

  • 127.0.0.0 - 127.255.255.255

都是在本机里使用的,使用最多的就是127.0.0.1,一般缺省都会把它绑定在localhost上。

相关的RFC为 RFC 5735

不分配ip段

  • 224.0.0.0 - 239.255.255.255

这也是保留ip段,主要用于组播。

相关RFC为RFC 1112RFC 2236

Typecho更新了

Typecho终于开始更新了,在主要开发人员混蛋70几次折腾后,终于回到在老版本的基础上逐步改进这条路上。显然完全重构/重写要花费的时间精力和毅力是巨大的,但效果不一定会好。

现在发布的是0.9测试版。主要变动包括:

  • 后台从Mootools改为Jquery,
  • 修正了0.8.x版中的几十个小bug,
  • 后台风格重构了,
  • UI开始扁平化了,
  • 加入了Markdown编辑器。

可以直接升级,就是直接覆盖老代码,然后进后台升级更新数据库。但要注意,老版的插件可能大部分都不能用了。

typecho 0.9还只是一个测试版,主要更新的功能已经完成,接下来就是插件和模板的跟上了。