colorful

zc qq:1337220912

 

postgresql安装


下载postgresql-9.1.3.tar.bz2
解压tar -vxf postgresql-9.1.3.tar.bz2

安装
./configure –without-readline –without-zlib
make
su
make install

设置
mkdir /home/zc/postgresql/data
chown postgres /home/zc/postgresql/data
su - postgres

/usr/local/gpsql/bin/initdb -D /home/zc/postgresql/data
/usr/local/gpsql/bin/postgres -D /home/zc/postgresql/data >logfiel 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test    // 这里修改postgres的密码,
test=# ALTER USER postgres WITH PASSWORD ‘postgres’;
test=# \q

修改系统用户postgres的密码(注意,上面的是数据库用户,这个是debian用户, 将它们密码设为相同的)
root@ubuntuserver:~# sudo passwd -d postgres
root@ubuntuserver:~# sudo -u postgres passwd

修改配置文件
cd /home/zc/postgresql/data
vim postgresql.conf
找到listen_address=’localhost’, 将前面的注释去掉,并把’localhost’该为’*’。
vim pg_hba.conf
在后面加上
host   all all 192.168.0.0/24   password
这句的意思是:同网络中192.168.0.*的机器可以以密码的形式使用所有的数据库。更具体的参数意义直接看该配置文件中的注释就可以了

配置好后重起数据库
/usr/local/pgsql/bin/pg_ctl stop -D /home/zc/postgresql/data
/usr/local/gpsql/bin/postgres -D /home/zc/postgresql/data >logfiel 2>&1 &

Ok
查看是否有开启监听
netstat -plunt | grep 5432

-----------------------------------------------------------
mkdir -p /data/postgres
ln -s /data/postgres/ /home/
groupadd postgres
useradd -d /home/postgres -g postgres postgres
chown -R postgres:postgres /data/postgres/
su - postgres -c "/usr/local/services/postgresql/bin/initdb -A md5 --locale=en_US.utf8 --lc-ctype=en_US.utf8  -E UTF-8 -W /data/postgres"

mkdir /data/postgres/pg_log
chown -R postgres:postgres /data/postgres/pg_log


posted @ 2012-05-30 16:48 多彩人生 阅读(419) | 评论 (0)编辑 收藏

图文教程:手把手教你用U盘安装Ubuntu

作为ubuntu的爱好者,第一次制作ubuntu安装教程,多有不足,还望包涵,呵呵~11.04因为还在测试阶段,我就不折腾了,就做个10.04的用U盘安装的教程吧。

说到ubuntu,有接触linux的童鞋都应该听过,用wubi安装只是像在电脑上安装一个软件,可以轻松体验ubuntu,不过毕竟性能会打折扣,所以本人是比较喜欢直接安装在硬盘上的。

这种方法只适合用desktop下进行安装,不能在文本模式下,本人试过,没安装成功,具体原因没有去理了,呵呵。

废话不多说,开始需要准备一些东西

1、从官网下载一个ubuntu10.04的镜像

2、一个大于等于1G的支持启动的U盘

3、UltraISO最新版

4、可以上网的电脑一台。

接下来是安装和设置的步奏,比较长,希望大家能够耐心看下去。

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu 

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu 

图文教程:手把手教你用U盘安装Ubuntu 

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu 

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu 

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu 

图文教程:手把手教你用U盘安装Ubuntu

图文教程:手把手教你用U盘安装Ubuntu 

图文教程:手把手教你用U盘安装Ubuntu 

图文教程:手把手教你用U盘安装Ubuntu

posted @ 2012-05-29 19:58 多彩人生 阅读(273) | 评论 (0)编辑 收藏

Debian 6解决中文乱码

DEBIAN下中文显示

一.首先检查LOCALE情况

说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在。

1.挂载ISO文件包,前8个ISO包就可以(这里不在讲述)。

2.启动终端

#apt-get install locales

3.重新配置LOCALE

#dpkg-reconfigure locales

在所有的语言包选择en_US.ISO-8859-1和zh_CN.GBK。其他en_US和zh_CN打头的也选上。然后选择zh_CN.GBK为默认的LOCALE,则系统为中文界面(这里也可以选en_US.ISO,使系统为英文界面)。

3.运行LOCALE命令检查当前的LOCALE环境

#locale

正确配置下会显式

LANG =zh_CN.GBK 

........................以下显示略过

 


============================================================================

Debian 6解决中文乱码

解决办法:打开终端,切换至root帐号。  

 
执行以下命令:

apt-get install ttf-wqy-zenhei(安装字体)   
apt-get install ibus ibus-gtk ibus-pinyin(安装输入法)

-------------------------

设置本地化 Locale
如果我们在安装 Debian
系统时,语言选择了英语呢?进入系统后看到全是英文,是不是有点郁闷。那么我们怎样设置成简体中文呢?
#如果你安装系统时选择的就是简体中文,可以跳过这段,只安装中文字体就行了。当然你也可以修改成其他的语言。

打开终端,执行命令:
dpkg-reconfigure locales

把 带 zh_CN 字样的全部选上,然后选择 OK 确定,在弹出的对话框中,选择系统的 locale ,选择zh_CN.UTF-8。


安装时选择的是英语,会缺少中文字体,用以下命令安装字体:
apt-get install xfonts-intl-chinese wqy*

下次重起机器,在GNOME登录介面下方的Language,登录语言选择:汉语(中国)

设置字体
对着桌面猛击右键 ===> 更改桌面背景 ===> 字体
#
选择自己喜欢的字体,比如:文泉驿点阵正黑或文泉驿微米黑


输入法
选择喜欢的输入法,比如: ibus scim
# 注:fcitx 输入法在debian unstable
软件源里才有,如果需要的话,只能自行下载安装了。或者添加 Debian unstable 的软件源。
apt-get install
ibus-pinyin ibus-table-wubi #安装IBUS五笔和拼音

设置输入法
系统 ===> 首选项 ===> IBus 设置
#设置快捷键和添加输入法到列表。

浏览器
Iceweasel浏览器简体中文组件 # Iceweasel是Debian中Mozilla
Firefox浏览器的一个再发布版
#英语很菜,所以浏览器菜单也要是中文的
apt-get install
iceweasel-l10n-zh-cn

运行浏览器,然后点击
浏览器菜单 ===> 编辑 ===> 首选项 ===> 内容
# 设置浏览器字体


谷歌开源浏览器Chromium
# 不喜欢用这个的,也可以安装 Chrome 浏览器
apt-get install
chromium-browser chromium-browser-l10n


Flash插件
执行命令:
apt-get install flashplugin-nonfree
#嫌手动安装官方Flash插件麻烦的,直接安装这个吧

手动安装官方Flash插件
# 注意如果你已经用上面的命令安装了flashplugin-nonfree,最好先卸载掉。
#
可能是为了避免冲突吧,不然浏览器不知道用哪个插件,我不清楚原因。

源里的flash插件和官方的正式版的flash插件,在我这里播放在线视频时,全屏会卡。我安装的是测试版的flash插件

先下载两个软件包,不然装好了Flash插件也用不了。装源里的 flashplugin-nonfree 会自动安装这两个文件。
apt-get
install ca-certificates libcurl3-gnutls


到下面网址下载 Flash Player 的压缩包
http://labs.adobe.com/downloads/flashplayer10.html

Download plug-in for 32-bit Linux (TAR.GZ, 4.7 MB) ← 下载这个

然后解压下载下来的压缩文件,解压出来
libflashplayer.so

切换到普通用户创建存放 Flash 插件的目录
mkdir -pv ~/.mozilla/plugins

进入存放 libflashplayer.so 的目录
cp -v libflashplayer.so ~/.mozilla/plugins

Chromium安装Flash插件
su
cp -v libflashplayer.so
/usr/lib/chromium-browser/plugins


影音播放器
#Mplayer和播放前端SMplayer
apt-get install mplayer smplayer

设置QT程序字体
# 在Debian GNOME桌面中QT程序的字体不清析,所以要设置一下

先备份 /etc/fonts/conf.d/49-sansserif.conf
cp -v
/etc/fonts/conf.d/49-sansserif.conf{,.backup}

修改 /etc/fonts/conf.d/49-sansserif.conf

把文件倒数第4行中:
sans-serif
↓↓
文泉驿微米黑

# 把sans-serif替换成文泉驿微米黑,前提你得先安装文泉驿字库

PDF阅读器
Foxit # 如果觉得系统自带的不好用,就下载这个吧
http://www.foxitsoftware.com/downloads/index.php
#找到
Foxit Reader 1.1 Build 20090810 for Desktop Linux(bz2),下载后解压运行目录下的foxit就可以用。


CHM阅读器
如果有Windows下的CHM文档资料要看,那么就安装chmsee吧
apt-get install
chmsee

星际译王
# 星际译王是 GNOME 中的国际化的词典软件
# 本人英文单词不会几个的,所以是必配的词典软件
apt-get
install stardict

#词典下载,下载地址如下,下载tarball包,解压后,复制到 /usr/share/stardict/dict/
目录下,
#最好在这个目录下新建文件夹来分类存放词典。
http://stardict.sourceforge.net/Dictionaries_zh_CN.php


截图工具shutter
#默认情况下,Debian没有安装gnome-screenshot,可以下载功能更强大的shutter
apt-get
install shutter
apt-get install libgoo-canvas-perl # 编辑功能插件

解压缩软件
apt-get install unrar
apt-get install unzip
apt-get install
p7zip-full


安装基本编译环境
# 有时可能自己想编译软件
apt-get install gcc
apt-get install
linux-headers-`uname -r`
apt-get install make
apt-get install automake

虚拟机VirtualBox-OSE
# 使用 Linux 或多或少都要用虚拟机吧,如果不喜欢OSE版,可以到官方去下载。
apt-get
install virtualbox-ose

VirtualBox 官方主页:
http://www.virtualbox.org/


FTP上传下载工具
# gFTP是X Window下的一个用Gtk开发的多线程FTP客户端工具
apt-get install
gftp


LINUX下的“电驴”
# aMule 是基于eMule的“全平台”P2P客户端
apt-get install amule


BT下载工具
Transmission是一种BitTorrent客户端
apt-get install
transmission

posted @ 2012-05-28 18:07 多彩人生 阅读(23577) | 评论 (0)编辑 收藏

Ubuntu下Postgresql8.4安装配置

注意事项:由于wordpress会自动将半角单引号转换为全角单引号,引用代码时需要手动修改为单引号

第一步:在Ubuntu下安装Postgresql

[代码内容]
root@ubuntuserver:~# sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4
[代码说明]
安装服务端和命令行客户端psql。
[功能说明]
/usr/lib/postgresql/8.4/              存放postgresql相关的二进制文件
/usr/lib/postgresql/8.4/bin/        可执行文件
/usr/lib/postgresql/8.4/lib/         共享库文件
/etc/postgres/8.4/main/              存放postgresql配置文文件
/var/lib/postgresql/                    postgres用户的主文件夹

第二步:修改PostgreSQL数据库的默认用户postgres的密码(注意不是linux系统帐号)

[代码内容]
root@ubuntuserver:~# sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD ‘postgres’;
postgres=# \q
[代码说明]
‘#’和’#’之前的字符是系统提示符,’postgres=#’是psql客户端的提示符,红色字符为输入命令(本文其它部分亦如此);
第一行:运行psql,psql是一个标准的postgressql客户端,也可以使用”sudo su postgres -c psql”,效果是一样的;
第二行:修改postgres的密码为postgres,不要忘记添加分号(回车后分号之前的sql语句才会立即执行)
第三行:退出psql客户端
[功能说明]

PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,我人需要修改为指定的密码,这里设定为’postgres’。

第三步:修改linux系统的postgres用户的密码(密码与数据库用户postgres的密码相同)

[代码内容]
root@ubuntuserver:~# sudo passwd -d postgres
root@ubuntuserver:~# sudo -u postgres passwd
[代码说明]
第一行:删除密码
第二行:创建密码
[功能说明]
PostgreSQL数据默认会创建一个linux用户postgres,通过上面的代码修改密码为’postgres’(这取决于第二步中的密码,只要与其相同即可)。

现在,我们就可以在数据库服务器上用 postgres帐号通过psql或者pgAdmin等等客户端操作数据库了(暂时还不能远程访问)。
第四步:修改PostgresSQL数据库配置实现远程访问

[代码内容]
root@ubuntuserver:~# sudo vi /etc/postgresql/8.4/main/postgresql.conf
—>改变行:#listen_addresses = ‘localhost’
—>修改为:listen_addresses = ‘*’
—>改变行:#password_encryption = on
—>修改为:password_encryption = on
root@ubuntuserver:~# sudo vi /etc/postgresql/8.4/main/pg_hba.conf
—>文件末添加行:# to allow your client visiting postgresql server
—>文件末添加行:host all all 0.0.0.0 0.0.0.0 md5
root@ubuntuserver:~# sudo /etc/init.d/postgresql-8.4 restart
[代码说明]
第一行:修改postgresql.conf的目的是修改连接权限;
第二行:修改pg_hba.conf的目的是设置谁才可以操作数据服务器;
第三行:重启postgresql数据库的服务程序,以使上面的配置生效。
详细解释一下”host all all 0.0.0.0 0.0.0.0 md5
host表示允许的类型是主机;
第一个all是允许的数据库名字;
第二个all是允许的用户;
第一个0.0.0.0是允许访问的ip address;
第二个0.0.0.0是允许访问的subnet mask;
最后的md5表示密码的加密方式,如果将md5改成trust则可以让指定范围的主机数据库的时候不需要提供密码。
关于ip address和subnet mask,你也可以修改为你的机器IP地址(如10.13.19.53)和子网掩码(如 255.255.255.255),这样就只有你自己的主机可以远程访问数据库了。 如果要使用一个IP地址范围,只需要把子网掩码设置成合适的值,如果子网掩码设置成0.0.0.0,则所有主机均可以访问数据库(IP可以任意设定),如 果将md5改成trust则可以让指定范围的主机访问指定的数据库的时候不需要提供密码。
[功能说明]
实现远程访问

第五步:创建用户和数据库

[代码内容]
root@ubuntuserver:~# psql -U postgres -h 127.0.0.1
postgres=# create user “IamJiwan” with password ‘IamJiwan’ nocreatedb;
postgres=# create database “mydatabase” with owner=”IamJiwan”;
[代码说明]
第一行:运行psql客户端,并指定用户为postgres主机为127.0.0.1,执行此行后需要输入密码’postgres’,如不指定则默认用户为linux系统当前登录用户,默认数据库服务器为本机;
第二行:添加数据库用户“IamJiwan“;
第三行:添加数据库“mydatabase”并设定所有者为”IamJiwan”;
用户名和数据库名称加上引号后才区分大小写,否则会自动转换成小写;
双引号作用:创建对象的时候,对象名、字段名加双引号,则表示严格区分大小写,否则都默认小写;
单引号作用:标识字符与数字的区别,并不区分大小写。
[功能说明]
创建用户和数据库
[备注内容]
postgres还提供了命令行创建用户和数据库的方法:
root@ubuntuserver:~# sudo -u postgres createuser -D -P mynewuser
root@ubuntuserver:~# sudo -u postgres createdb -O mynewuser mydatabase
第一行:-D该用户没有创建数据库的权利,-P提示输入密码,后面的选项都可以省略,命令执行的时候会提示用户选择yes或者no
第二行:-O设定所有者为mynewuser

第六步:如何安装和使用pgAdmin3客户端操作postgresql数据库

[代码内容]
root@ubuntuserver:~# sudo apt-get install pgadmin3
[功能说明]
安装图形客户端pgAdmin3

posted @ 2012-05-26 16:30 多彩人生 阅读(1289) | 评论 (0)编辑 收藏

postgresql源码安装

http://cuojuan.com/
http://cuojuan.com/review/26


使用的Linux发行版是ubuntu server 6.06,ubuntu 自带版本最高只有8.1,为了尝鲜,同时8.2.0已经对基于windows平台的兼容性进行了改进,便于平台的转换。同时源码安装可以自己制定一些参数 和设置,ubuntu虽然有很好的易用性和兼容性,并且部分特性也较新,但是同window有些相像,减少也封闭了很多细节问题,让开发人员没有机会也不 用尝试去理解一些程序的安装过程和参数,对于程序开发来说,并不一定是件好事。

一 安装Postgresql8.2.0

1. 下载源码。
到postgresq.org下载最新的源码。

2 解压。
tar -vxf postgresql*.tar.gz
3 配置,进入解压目录后可以用./configure –help来查看可用的参数。我使用的是:

# ./configure –prefix=/home/shaken/postgresql –without-readline –without-zlib

前一个参数是把循照惯例把自己的软件安装到/opt目录下,后面两个参数是因为我的系统里没有安装readline和zlib,其实安装一下就可以了。

在ubuntu中这样可以去掉后面的两个–without参数:
# apt-get install libreadline5-dev zlib1g-dev
解决在ubuntu安装postgresql时,configure出现的问题。

4 编译后并安装:

# make

# make install

5 增加Postgresql数据库的最高用户postgres并设置密码:

# adduser postgres
# mkdir /home/shaken/postgresql/data
# chown postgres /home/shaken/postgresql/data

最好再这样:
# chown -R postgres /home/shaken/postgresql

6 以用户postgres登陆:

# su – postgres

7 初始化数据库:
$ /home/shaken/postgresql/bin/initdb -D /home/shaken/postgresql/data

8 运行数据库服务器:

$ /home/shaken/postgresql/bin/postmaster -D /home/shaken/postgresql/data>logfile 2>&1 &

9 创建一个数据库:

$ /home/shaken/postgresql/bin/createdb test

10 在本机上运行客户端进行管理:

$ /home/shaken/postgresql/bin/psql test

这就要求你对基础的sql语法要熟悉了。

到这里Postgresql就算安装完成了。但是为了能远程使用该数据库—比如说我要在网络上另外一台Windows电脑上使用pgAdmin来管 理 使用该Postgresql服务器—则还需要进行一些修改,这些修改主要包括两方面的修改,一是修改Postgresql的两个配置文件,二是修改数 据库的一些用户权限:

11 修改Postgresql的配置文件Postgresql.conf,该文件在数据目录/home/shaken/postgresql/data下,将其中的一句:

listen_address=’localhost’

前面的注释去掉,并把’localhost’该为’*’。

12修改Postgresql的配置文件pg_hba.conf,该文件在数据目录/home/shaken/postgresql/data下,在文件后面加一句:

host   all all 192.168.0.0/24   password

这句的意思是:同网络中192.168.0.*的机器可以以密码的形式使用所有的数据库。更具体的参数意义直接看该配置文件中的注释就可以了。

这里一定要配置正确,否则无法在远程连接postgresql数据库。

13 重新启动postgresql服务器:

$ /home/shaken/postgresql/bin/pg_ctl stop -D /home/shaken/postgresql/data

停止原来的服务器

$ $ /home/shaken/postgresql/bin/postmaster -i -D /home/shaken/postgresql/data >logfile 2>&1 &

再次启动,加一个-I参数

14 一些数据库用户权限的简单配置,以下是在psql中使用

# create userwen1 password ‘123456’;

创建一个用户并设置密码

# createdatabase data1 owner wen1;

创建一个数据库

# create tablewen11(name varcha(10))

创建一个数据表

# alter table wen11 owner to wen1;

修改数据表的属主。

现在可以在局域网内的其他电脑使用其他postgresql客户端工具,以用户名wen1打开data1数据库了。

还需要改进的一些问题:

1 中文支持的问题:使用encoding=’UTF-8’创建数据库好不好?

2 系统启动时自动启动postgresql的问题:完全可以参考Debian的相应启动脚本。

二 phppgadmin的安装配置(可选的过程)

为了管理配置我的数据库服务器,对于我这样的postgresql生手,需要一个方便的管理程序。这样的管理工具很多,考虑自己以前使用mysql 有一个 便利的phpmyadmin,我选择了phppgadmin。   phpPgAdmin是一个充分地功能基于互联网的postgresql管理实用程序。它处理所有基本的功能并且某个先进的功能譬如触发器, 视图等,是一个基于B/S模式的管理软件,必须安装在服务器端。

具体的安装过程为:
1 下载源码,现在的最新版本为4.0.1
# cd
# wget http://……./phpPgAdmin-4.0.1.tar.gz
2 解压:
# tar zxvf phpPgAdmin-4.0.1.tar.gz
3 检查系统是否已经安装好apache+php以及php对postgresql的支持,如果没有,以下为安装:
# apt-get install apache php4 php4-pgsql
注意修改apache的配置文件以使apache支持php。
4 使phpPgAdmin在客户端可用,我一般是在apapche目录下建立符号连接:
# ln -s /root/phpPgAdmin-4.0.1 /var/www/pgadmin
5 修改phpPgAdmin的配置文件 config/config.inc.php,其中必须要修改的参数有:
$conf['servers'][0]['host']=’localhost’;
标明数据库服务器在本机
$conf ['extra_security'] = false;
允许使用postgres帐号登陆。
6 在客户端使用浏览器,输入地址:
http://……/pgadmin
就可以进行postgresql数据库的管理了。

三 安装postgis

1 最好先安装proj4和OGR,我偷懒没有安装,应该只是性能上打折扣吧,并不影响安装使用。
Debian下可以这样:安装postgis的时候,先:
#apt-get install proj libgeos libgeos-dev

2 下载源码。

3 解压进入目录。

4 配置:

# ./configure –prefix=/opt/postgis –with-pgsql=/home/shaken/postgresql/bin/pg_config

意思很明显

5 编译、安装:

# make

# make install

6 之后的一些工作:

$ /home/shaken/postgresql/bin/createdb data1

$ /home/shaken/postgresql/bin/createlang plpgsql data1

$ /home/shaken/postgresql/bin/psql-d data1 -f lwpostgis.sql

$ /home/shaken/postgresql/bin/psql-d data1 -f spatial_ref_sys.sql

注意找到并进入包含后面那两个sql文件的目录再进去执行。

下面可以使用postgis了,先试试Postgis提供那两个转换shape文件和postgis数据的小程序吧。

四 PostGIS的初步使用

网络上关于PostGIS的使用的文章不多,而且说得不够详细,今天经过一番摸索,得到一些基本应用的经验,希望能减少一些大家入门的周折。

以下假设我要把一个test.shp文件(实际上完整的应包含三个文件)的数据导入到Postgresql数据库data1中的test数据表,为 了安全 起见,数据库Data1及相关的数据表的属主都设置为wen1,然后在GIS客户端如QGIS uDig等使用这个PostGIS数据。详细的过程为;

1 假设PostGreSQL数据库服务器和PostGIS都安装好。(见另文”源码安装Postgresql8.1.3+PostGIS1.1.2″)
2 以数据库的超级用户postgres进入psql:
# /home/shaken/postgresql/bin/psql         (注意路径)
以下的操作都是在psql控制台。
3 基本设置:
# create user wen1 password ‘123456’;        创建一个用户并设置密码
# create database data1 owner wen1;            创建一个数据库
# alter table spatial_ref_sys owner to wen1;
# alter table geometry_columns owner to wen1 ; 这两句修改两个postgis相关的表的属主为wen1,很重要,一般文章中似乎没提到这两点。
4 数据转换,以下工作退出psql,在shell界面进行。
先把三个test.shp文件复制到/opt/postgis/bin目录下并转到该目录下,注意路径,注意目录和文件的权限—也许退出postgres用户到root用户简单一些。
# /opt/postgis/bin/shp2pgsql test test data1 > test.sql
# /home/shaken/postgresql/bin/psql -d data1 -f test.sql
注意参数都要写对,不明白的话一定要用–help参数查看。
5 在客户机器上打开QGIS,依次选择”图层”–>”添加PostGIS图层”–>”新建”,然后设置好正确的服务器IP,数据库名data1,用户wen1及密码,再点击”连接”,然后下方会出现test图层的名字,选择就可以了。
uDig的使用也大同小异。

一点体会:
1 要先弄懂PostgreSQL的使用,尤其是各种权限的概念和关系,这是一般从Windows下转移来的人很缺乏的。
2 最好选择一个好的PostgreSQL客户端工具来帮助调试,推荐使用PgAdmin。

posted @ 2012-05-26 15:13 多彩人生 阅读(1858) | 评论 (0)编辑 收藏

使用proto 时犯的一个错误

自己定义的 #define CMD_ID_SERVER  1000

然后在proto文件里定义了
enum CMD_ID
{
      CMD_ID_SERVER = 20000;
}

得到下面的错误
Error    7    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int    e:\zc\test\doloio\package\hello\hello.pb.h    46
Error    9    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int    e:\zc\test\doloio\package\hello\hello.pb.h    46
Error    10    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int    e:\zc\test\doloio\package\hello\hello.pb.h    47
Error    13    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int    e:\zc\test\doloio\package\hello\hello.pb.h    47
Error    20    error C2447: '{' : missing function header (old-style formal list?)    e:\zc\test\doloio\package\hello\hello.pb.h    51
Error    27    error C2447: '{' : missing function header (old-style formal list?)    e:\zc\test\doloio\package\hello\hello.pb.h    431
Error    17    error C2440: 'initializing' : cannot convert from 'const int' to 'const std::string &'    e:\zc\test\doloio\package\hello\hello.pb.h    51
。。。。。。。。。。

------------------------------------------
其实根据错误信息应该很容易发现错误所在,但因为我心急,没能静下心来看错误信息以至浪费了更多的时间和精力于无谓的猜测试验


posted @ 2012-05-22 18:00 多彩人生 阅读(825) | 评论 (1)编辑 收藏

跨平台开发连载(6_跨平台IO的影响因素)

http://blog.csdn.net/wqf363/article/details/1420554

如果你正在写从文件或网络读写数据的跨平台C/C++代码,那么你必须明白有些问题是因语言,编译器,平台而不同的。 主要的问题是数据对齐,填充类型大小字节顺序默认状态char是否有符号
对齐
特定机器上,特定的数据被对齐于特定的边界。如果数据没有正确对齐,结果可能是效率降低甚至崩溃。 当你从I/O源读取数据的时候,确保对齐是正确的。详细内容参考本人另一篇blog: 字节对齐的影响因素
填充
"填充" 是数据集合中不同元素之间的间隔, 一般是为了对齐而存在。不同编译器和平台下,填充的数量可能会不同。 不要假设结构的大小和成员的位置在任何编译器和平台下都是相同的。 不要一次性读取或者写入一整个结构体,因为写入的程序可能会使用和读取的程序不同的填充方式。对于域也同样适用。
类型大小
不同数据类型的大小随编译器和平台而不同。 在C/C++中, 内置类型的大小完全取决于编译器(在特定范围内). 不要读写大小不明确的数据类型。也就是说,不要读写bool, enum, long, int, short, float, 或者double类型.(译者注:linux下要使用下面跨平台符号,要加载头文件<arpa/inet.h>,此外在C99已经增加了一个头文件stdint.h,支持标准的,可移植的整数类型集合,此文件被包含在<inttypes.h>)
用这些
替代这些...
int8, uint8
char, signed char, unsigned char, enum, bool
int16, uint16
short, signed short, unsigned short, enum
int32, uint32
int, signed int, unsigned int, long, signed long, unsigned long, enum
int64, uint64
long, signed long, unsigned long
int128, uint128
long long, signed long long, unsigned long long
float32
float
float64
double
 
Data Type Ranges
C/C++ recognizes the types shown in the table below.
Type Name
Bytes
Other Names
Range of Values
int
*
signed,
signed int
System dependent
unsigned int
*
unsigned
System dependent
__int8
1
char,
signed char
–128 to 127
__int16
2
short,
short int,
signed short int
–32,768 to 32,767
__int32
4
signed,
signed int
–2,147,483,648 to 2,147,483,647
__int64
8
none
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
char
1
signed char
–128 to 127
unsigned char
1
none
0 to 255
short
2
short int,
signed short int
–32,768 to 32,767
unsigned short
2
unsigned short int
0 to 65,535
long
4
long int,
signed long int
–2,147,483,648 to 2,147,483,647
unsigned long
4
unsigned long int
0 to 4,294,967,295
enum
*
none
Same as int
float
4
none
3.4E +/- 38 (7 digits)
double
8
none
1.7E +/- 308 (15 digits)
long double
10
none
1.2E +/- 4932 (19 digits)
 
    The long double data type (80-bit, 10-byte precision) is mapped directly to double (64-bit, 8- byte precision) in Windows NT and Windows 95.
    Signed and unsigned are modifiers that can be used with any integral type. The char type is signed by default, but you can specify /J to make it unsigned by default.
    The int and unsigned int types have the size of the system word. This is two bytes (the same as short and unsigned short) in MS-DOS and 16-bit versions of Windows, and 4 bytes in 32-bit operating systems. However, portable code should not depend on the size of int.
    Microsoft C/C++ also features support for sized integer types. See __int8, __int16, __int32, __int64 for more information. Also see Integer Limits.
       此外,显示个32位与64位平台之间的差异示例:
对于 Linux on POWERILP 32 模型用于 32 位环境中,而 LP64 用于 64 位环境中。这两种模型之间的区别在于长整型和指针的大小。
系统中可以有两种不同的数据类型:基本数据类型和衍生数据类型。
基本数据类型是 C C++ 语言规范定义的所有数据类型。下表对 Linux on POWER Solaris 中的基本数据类型进行了比较:
4:基本数据类型
 
Linux on POWER
Solaris
基本类型
ILP32
LP64
ILP32
LP64
char
8
8
8
8
short
16
16
16
16
init
32
32
32
32
float
32
32
32
32
long
32
64
32
64
pointer
32
64
32
64
long long
64
64
64
64
double
64
64
64
64
long double
64/128*
64/128*
128
128
5. 衍生数据类型
OS
gid_t
mode_t
pid_t
uid_t
wint_t
Solaris ILP32 l
long
unsigned long
long
long
long
Solaris LP64
int
unsigned int
int
int
int
Linux ILP32
unsigned int
unsigned int
int
unsigned int
unsigned int
Linux ILP64
unsigned int
unsigned int
int
unsigned int
unsigned int
 
字节顺序
字节顺序,就是字节在内存中存储的顺 序。 不同的处理器存储多字节数据的顺序是不同的。小端处理器由低到高存储(换句话说,和书写的顺序相反).。大端处理器由高到低存储(和书写顺序相同)。如果 数值的字节顺序和读写它的处理器不同,它必须被事先转化。同时,为了标准化网络传输的字节顺序,定义了网络字节顺序。详细内容参考本人另一篇blog:  网络通讯中字节排列顺序转化
char - 有符号还是无符号?
一个鲜为人知的事实,char默认可以是有符号的也可以是无符号的-完全取决于编译器。结果导致你从char转化为其他类型的时候(比如int),结果会因编译器而不同。 例如:

char   x;
int    y;
read( fd, &x, 1 );   // 读取一个byte值为0xff
y = x;               // y 是 255 或者 -1, 依赖编译器

不要把数据读入一般的char。明确指定是有符号或者无符号的

posted @ 2012-05-19 09:51 多彩人生 阅读(393) | 评论 (0)编辑 收藏

指令关键字volatile

就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。

见百度百科
http://baike.baidu.com/view/608706.htm

posted @ 2012-05-18 11:31 多彩人生 阅读(217) | 评论 (0)编辑 收藏

LocalAlloc,VirtualAlloc,malloc,new的异同

   首先明白几个概念:虚拟内存是从硬盘置换出来的,堆本身就是内存,程序运行时,可用内存=物理内存+虚拟内存。虚拟内存一般用文件来保存数据,虚拟内存的 出现主要是因为以前内存不够(16M的内存刚出来的时候可是天价啊),磁盘相对便宜一些,所以聪明的系统设计者就把设计了虚拟内存,在程序运行的时候把那 些很久没有被访问过的(可能以后也不会用到)内存映射到文件里面去(以后需要的时候再读进内存),把内存腾出来给真正需要执行的代码和数据,这样看起来可 用内存就比物理内存多了。
       HeapAlloc()是堆分配内存函数,查看c,c++的malloc,new函数的代码,可以看到就是对HeapAlloc()函数的封装,在堆上可以动态分配内存。
1. 首先我们来看HeapAlloc:
MSDN 上的解释为:HeapALloc是从堆上分配一块内存,且分配的内存是不可移动的(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的 空间利用起来,从而导致分配失败),该分配方法是从一指定地址开始分配,而不像GloabalAlloc是从全局堆上分配,这个有可能是全局,也有可能是 局部。函数原型为:
LPVOID
HeapAlloc(
    HANDLE hHeap,
    DWORD dwFlags,
   SIZE_T dwBytes
    );
hHeap是进程堆内存开始位置。
dwFlags是分配堆内存的标志。包括HEAP_ZERO_MEMORY,即使分配的空间清零。
dwBytes是分配堆内存的大小。
其对应的释放空间函数为HeapFree。
2. 再看GlobalAlloc:该函数用于从全局堆中分配出内存供程序使用,函数原型为:
HGLOBAL GlobalAlloc(
UINT uFlags,
SIZE_T dwBytes
);
uFlags参数含义
GHND   GMEM_MOVEABLE和GMEM_ZEROINIT的组合
GMEM_FIXED   分配固定内存,返回值是一个指针
GMEM_MOVEABLE   分配活动内存,在Win32中,内存块不能在物理内存中移动,但能在默认的堆中移动。返回值是内存对象的句柄,用函数GlobalLock可将句柄转化为指针
GMEM_ZEROINIT   将内存内容初始化为零
GPTR   GMEM_FIXED和GMEM_ZEROINIT的组合
一 般情况下我们在编程的时候,给应用程序分配的内存都是可以移动的或者是可以丢弃的,这样能使有限的内存资源充分利用,所以,在某一个时候我们分配的那块 内存的地址是不确定的,因为他是可以移动的,所以得先锁定那块内存块,这儿应用程序需要调用API函数GlobalLock函数来锁定句柄。如下: lpMem=GlobalLock(hMem); 这样应用程序才能存取这块内存。所以我们在使用GlobalAllock时,通常搭配使用GlobalLock,当然在不使用内存时,一定记得使用 GlobalUnlock,否则被锁定的内存块一直不能被其他变量使用。
GlobalAlloc对应的释放空间的函数为GlobalFree。
3. LocalAlloc:该函数用于从局部堆中分配内存供程序使用,函数原型为:
HLOCAL LocalAlloc(
UINT uFlags,
SIZE_T uBytes
);
参数同GlobalAlloc。
在 16位Windows中是有区别的,因为在16位windows用一个全局堆和局部堆来管理内存,每一个应用程序或dll装入内存时,代码段被装入全局 堆,而系统又为每个实例从全局堆中分配了一个64kb的数据段作为该实例的局部堆,用来存放应用程序的堆栈和所有全局或静态变量。而 LocalAlloc/GlobalAlloc就是分别用于在局部堆或全局堆中分配内存。
由于每个进程的局部堆很小,所以在局部堆中分配内存会受到空间的限制。但这个堆是每个进程私有的,相对而言分配数据较安全,数据访问出错不至于影响到整个系统。
而在全局堆中分配的内存是为各个进程共享的,每个进程只要拥有这个内存块的句柄都可以访问这块内存,但是每个全局内存空间需要额外的内存开销,造成分配浪费。而且一旦发生严重错误,可能会影响到整个系统的稳定。
不 过在Win32中,每个进程都只拥有一个省缺的私有堆,它只能被当前进程访问。应用程序也不可能直接访问系统内存。所以在Win32中全局堆和局部堆都 指向进程的省缺堆。用LocalAlloc/GlobalAlloc分配内存没有任何区别。甚至LocalAlloc分配的内存可以被 GlobalFree释放掉。所以在Win32下编程,无需注意Local和Global的区别,一般的内存分配都等效于 HeapAlloc(GetProcessHeap(),...)。
LocalAlloc对应的释放函数为LockFree。
4. VirtualAlloc:该函数的功能是在调用进程的虚地址空间,预定或者提交一部分页,如果用于内存分配的话,并且分配类型未指定MEM_RESET,则系统将自动设置为0;其函数原型:
LPVOID VirtualAlloc(
LPVOID lpAddress, // region to reserve or commit
SIZE_T dwSize, // size of region
DWORD flAllocationType, // type of allocation
DWORD flProtect // type of access protection
);
VirtualAlloc 可以通过并行多次调用提交一个区域的部分或全部来保留一个大的内存区域。多重调用提交同一块区域不会引起失败。这使得一个应用程 序保留内存后可以随意提交将被写的页。当这种方式不在有效的时候,它会释放应用程序通过检测被保留页的状态看它是否在提交调用之前已经被提交。
VirtualAlloc对应的释放函数为VirtualFree。
5.Malloc:malloc 与free是C++/C语言的标准库函数,可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用 malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是 库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
6.New:new/delete 是C++的运算符。可用于申请动态内存和释放内存。C++语言需要一个能完成动态内存分配和初始化工作的运算符new, 以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。C++程序经常要调用C函数,而C程序只能用malloc /free管理动态内存。new 是个操作符,和什么"+","-","="...有一样的地位.
        malloc是个分配内存的函数,供你调用的.
        new是保留字,不需要头文件支持.
        malloc需要头文件库函数支持.new 建立的是一个对象,
        malloc分配的是一块内存.
        new建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间
        malloc分配的是一块内存区域,就用指针访问好了,而且还可以在里面移动指针.
内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的。而malloc返回的都是void指针。

posted @ 2012-05-18 10:29 多彩人生 阅读(492) | 评论 (0)编辑 收藏

Stopwatch类

提供一组方法和属性,可用于准确地测量运行时间。

posted @ 2012-05-17 14:18 多彩人生 阅读(375) | 评论 (0)编辑 收藏

仅列出标题
共25页: First 13 14 15 16 17 18 19 20 21 Last 

导航

统计

常用链接

留言簿(3)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜