2009年9月14日星期一
Windows下PostgreSQL启动失败故障排除一例
才接触PostgreSQL没几天,今天在没有停止Postgres服务的情况下,尝试编辑了一
下postgresql.conf文件,之后停止再启动,发现怎么也启动不了。打开Windows的
事件管理器,看到一连好几条PostgreSQL的错误,一条一条仔细看,
pg_ctl: PID file "C:/Program Files/PostgreSQL/8.4/data/postmaster.pid" does not exist
这条不明白什么意思,确实也没找到这个文件,原来正常启动的情况下,肯定是有
这个文件的。
继续往下看,时间最早的一条错误:
FATAL: syntax error in file "C:/Program Files/PostgreSQL/8.4/data/postgresql.conf" line 1, near token "-"
明白了,原来是postgresql.conf的第一行出现了问题,并且是靠近"-"字符的地
方。打开postgresql.conf一看,本来应该是
# -----------------------------
现在前面的#字号消失了。怪不得呢。
搞不懂了,我明明没有删除这个啊。加上再启动就好了。
--
陈永林 <vnresearch@gmail.com>
2009年9月7日星期一
从U盘安装Windows
Update: 此方法同样适用于RC和RTM,以及未来的SP1,SP2...
你可能想在上网本上安装Windows 7 Beta,但是上网本一般没有光驱,你很可能也没有为它另购外置光驱;另外你可能关注环保,不希望为下载的Windows 7 Beta ISO刻盘;或者你不喜欢从光驱安装的龟速和折腾。反正,Windows 7支持从USB移动硬盘或闪存盘安装。
所需设备:
U盘(闪存盘或硬盘) 1坨,自备
Windows 7 Beta 1安装DVD ISO文件 1坨,下载
Windows 7 Beta安装序列号 1坨,在下载页面申请
准备U盘(建启动分区):
在一台运行Windows的计算机上插入U盘,打开一个管理员权限的命令行并输入:
C:\>diskpart
DISKPART> list disk
辨别分配给你的U盘编号,这里假设是2
DISKPART> select disk 2 (注意你的编号可能不是2)
DISKPART> clean
DISKPART> create partition primary
DISKPART> select partition 1
DISKPART> active
DISKPART> format fs=fat32
DISKPART> assign
DISKPART> exit
复制Windows 7安装文件到U盘
解开、刻录、或挂载你的Windows 7 DVD ISO到某处,例如 x:\, 假设你的U盘是z:,然后下:
C:\>xcopy x:\*.* /s/e/f z:\
从U盘安装
xcopy完成后,把U盘插到要装机的计算机上并重启。使用BIOS设置或按某个热键选择从U盘启动。然后按屏幕指示进行安装。
--
陈永林 <vnresearch@gmail.com>
2009年8月22日星期六
让32位 RHEL5支持4GB以上大内存
rpm -Uvh kernel-PAE-2.6.18-8.el5.i686.rpm
rpm -Uvh kernel-PAE-devel-2.6.18-8.el5.i686.rpm
vi /boot/grub/grub.conf 把default=1修改成default=0,默认以kernel-PAE内核启动。
如需要以旧的内核模式启动,则在启动到GURB界面时选取旧的内核启动即可。
反而win 2003企业默认安装就支持马上支持16G。
在Linux下将windows文本格式转换为UNIX格式
在Linux下有一下这两条命令:unix2dos 和dos2unix
下面是演示:
[root@wwwtest ~]# cat -vt test
1
2
3
45
6
[root@wwwtest ~]# unix2dos test
unix2dos: converting file test to DOS format …
[root@wwwtest ~]# cat -vt test
1^M
2^M
3^M
45^M
6^M
^M
[root@wwwtest ~]# dos2unix test
dos2unix: converting file test to UNIX format …
[root@wwwtest ~]# cat -vt test
1
2
3
45
6
--
陈永林 <vnresearch@gmail.com>
2009年8月20日星期四
2009年8月16日星期日
GVIM配色方案随心所欲变换的小技巧
http://code.google.com/p/vimcolorschemetest/
作为新手,如果不知道哪一种最适合自己,或者拿不定主意,或者就是喜欢随时变换,那么在VIMRC中加入以下代码,可以在每次打开GVIM时随机选择一种配色方案:
function! Ranlook()
let colorfiles=[]
if empty(colorfiles)
for f in split(globpath(&rtp,"colors/*.vim"),"\n")
call add(colorfiles,get(matchlist(f,'\([^\\\/]*\)\.vim'),1))
endfor
endif
exe "colo" get(colorfiles,localtime()%len(colorfiles))
endfunction
command! Ranlook call Ranlook()
Ranlook
如果对当前的配色方案十分满意,希望以后一直使用它,可以输入以下命令看当前的配色方案的名称:
:echo g:colors_name
VIM多标签设置小技巧
在linux下可以这样打开
$gvim --remote-tab-silent filename
而在windows下,DOS下也可以象上面那样打开;而若是“双击”打开方式,则可以修改注册表
HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command将其键值修改为:
"C:\Program Files\Vim\vim72\gvim.exe" -p --remote-tab-silent "%1"
而若是用鼠标右键中的“用vim编辑”,先删掉注册表中的
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim,然后手工添加鼠标右键菜单,
两种方式:
a. 直接进入注册表,在HKEY_CLASSES_ROOT\*\shell下添加项“用 vim 编辑”,
再在项“用vim编辑”下添加子项“command”,在其右边窗口把其键值设定为
"c:\Program Files\Vim\vim72\gvim.exe" -p --remote-tab-silent "%1"
b. 把下面的内容保存为文件gvim.reg,并将之导入注册表
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Edit with &Vim]
[HKEY_CLASSES_ROOT\*\shell\Edit with &Vim\command]
@="\"c:\\Program Files\\Vim\\vim72\\gvim.exe\" -p --remote-tab-silent \"%1\""
另外,也可以添加到鼠标右键中的“发送到”,方法:
在Wiondows XP中,进入到目录c:\Documents and Settings\用户名\SendTo下,在Windows 7中进入到目录:C:\Users\用户名\AppData\Roaming\Microsoft\Windows\SendTo,“鼠标右键”-“新建”-“快捷方式”,然后通过对话框的“浏览”找到gvim安装位置,这样就建立gvim的一个快捷方式,右键单击这个快捷文件-属性-快捷方式,在“目标(T)”的地址栏写入:
"C:\Program Files\Vim\vim72\gvim.exe" -p --remote-tab-silent "%*"
注意:上面都是默认安装gvim的地址,若不是默认地址,请自行修改。
2009年7月19日星期日
2009年2月25日星期三
在MySQL中将IP地址转换为有符号整数存储
假设表名为"IP_RANGE","IPSTART"字段记录了某段IP的起始地址,"IPEND"记录了结束地址,"COUNTRY"为国家代码。
为了比较和查找IP地址段信息,我需要把IP转换为整数存储,幸好MySQL为我们提供了INET_ATON和INET_NTOA两个函数,前者把四节点段式IP地址转换为整数,后者把整数复原为点段式IP地址。INET_ATON函数转换后的结果是无符号整数,范围在0~2^32(0~4294967296)之间。不过为了把数据导出到ACCESS中去,我不得不把它变为有符号整数,对应Microsoft Access中的长整型(范围在-2^31~2^31-1,即-2147483648~2147483647),绞尽脑汁,求教高手手,我使用了一个IF表达式,代码如下:
SELECT
`IPSTART`,
`IPEND`,
`COUNTRY`,
IF((INET_ATON(`IP_RANGE`.`IPSTART`)<POW(2,31),INET_ATON(`IP_RANGE`.`IPSTART`),(INET_ATON(`IP_RANGE`.`IPSTART`) -POW(2,32))) AS `IP_START`,
IF((INET_ATON(`IP_RANGE`.`IPEND`)<POW(2,31),INET_ATON(`IP_RANGE`.`IPEND`),(INET_ATON(`IP_RANGE`.`IPEND`) -POW(2,32))) AS `IP_END`
FROM `IP_RANGE`
其中,两句IF表达式也可以这么写:
IF((INET_ATON(`IP_RANGE`.`IPSTART`) <= 2147483647),INET_ATON(`IP_RANGE`.`IPSTART`),(INET_ATON(`IP_RANGE`.`IPSTART`) - -(-(4294967296)))) AS IP_START,
IF((INET_ATON(`IP_RANGE`.`IP_END`) <= 2147483647),INET_ATON(`IP_RANGE`.`IP_END`),(INET_ATON(`IP_RANGE`.`IP_END`) - -(-(4294967296)))) AS IP_S
有意思的是,INET_ATON计算出来的结果减去4294967296时,连着使用了三个"-",如果使用一个的话,就会出错。
2009年2月14日星期六
VIM与编码有关的设置
vim7.2在windows下的编码设置。
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"解决consle输出乱码
language messages zh_CN.utf-8
"解决部分中文字符显示不完整
set ambiwidth=double
2009年1月23日星期五
如何获取最新、最全、最权威的全球IP地址分配信息?
区域互联网注册管理机构(Regional Internet Registry,RIR),是管理世界上某特定地区Internet资源的组织。Internet资源包括IP地址(包含IPv4和IPv6)和使用在BGP路由中的自治系统号(Autonomous System number)。
现在世界上有五个正在运作的区域互联网注册管理机构:
美洲互联网号码注册管理机构(American Registry for Internet Numbers,ARIN) [1] 管理北美和部分加勒比地区事务
欧洲IP资源网络协调中心(RIPE Network Coordination Centre,RIPE NCC) [2] 管理欧洲,中东和中亚地区事务
亚太互联网络信息中心(Asia-Pacific Network Information Centre,APNIC)[3] 管理亚洲和太平洋地区事务
拉丁美洲及加勒比地区互联网地址注册管理机构(Latin American and Caribbean Internet Address Registry,LACNIC) [4] 管理拉丁美洲和部分加勒比地区事务
非洲互联网号码注册管理机构(African Network Information Centre,AfriNIC) [5] 管理非洲事务
建立RIR的原因
每个连接到符合IP协议网络的设备都需要一个IP地址。IP地址和自治系统号是有限的资源。这意味着它们终有一天会消耗完。这就需要一个有效率和中立的管理机构来管理这些资源以确保能公平地分配IP地址和自治系统号,从而防止资源的囤积。
区域互联网注册管理机构和IANA之间的关系
互联网地址指派机构 (IANA)将网络资源委任区域互联网注册管理机构管理,然后相对的,为了未来能进一步地再委任ISP和最终用户的资源,区域互联网注册管理机构遵循着他们的区域政策。总体上来说,区域互联网注册管理机构和号码资源组织(NRO)[6]组成了一个整体,以代表他们的利益,并采取联合行动,协调它们在全球范围内的活动。 NRO与ICANN签订协议创立地址支持组织(Address Supporting Organisation),从而在ICANN的框架内开展协调全球IP寻址的政策。
亚太互联网络信息中心:
亚太互联网络信息中心(Asia-Pacific Network Information Centre,APNIC),全球五大区域性英特网登记处之一,负责亚太地区IP地址、ASN自治系统号的分配并管理一部分根域名服务器镜像。
它提供全球性的支持互联网操作的分派和注册服务。这是成员包括网络服务提供商、全国互联网登记,和相似的组织的一个非营利,基于会员资格的组织。APNIC负责亚洲太平洋区域,包含56个经济区。
亚太地区按国别的IPv4和IPv6地址分配概况表:
http://ftp.apnic.net/apnic/dbase/data/country-asn.lst
http://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst
http://ftp.apnic.net/apnic/dbase/data/country-ipv6.lst
该中心的每日的分配报告可以在以下目录查到:
ftp://ftp.apnic.net/pub/stats/apnic/
它根据详细程度不同,提供了三种格式的数据, 最新的文件在:
ftp://ftp.apnic.net/pub/stats/apnic/assigned-apnic-latest
权威的、最新的日本的IP地址分配详情:
http://ftp.apnic.net/apnic/dbase/data/jpnic.db.gz
日本的IP地地址分配详情更新得比较快。
非洲互联网号码注册管理机构:
ftp://ftp.afrinic.net/pub/stats/afrinic/
ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
拉丁美洲及加勒比地区互联网地址注册管理机构:
ftp://ftp.lacnic.net/pub/stats/lacnic/
例如:
ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
美洲互联网号码注册管理机构:
ftp://ftp.arin.net/pub/stats/arin/
ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
欧洲IP资源网络协调中心:
2009年的数据保存在:
ftp://ftp.ripe.net/pub/stats/ripencc/2009/
例如:
ftp://ftp.ripe.net/pub/stats/ripencc/2009/delegated-ripencc-20090401.bz2