PostgreSQL 昨天,今天和明天(即其简介)(转帖)

   PostgreSQL 昨天,今天和明天(转自:http://www.pgsqldb.org/twiki/bin/view/PgSQL/PostgreSQL)

    * PostgreSQL 昨天,今天和明天

          o 1.简介

          o 2.前言

          o 3.历史

                + 3.1 出身名门

                + 3.2 创世纪——Ingres

                + 3.3 新项目 Postgres

                + 3.4 炎黄子孙的贡献 Postgres95

                + 3.5 国际化 PostgreSQL

          o 4. 特点

          o 5. 人物

                + 5.1 Tom Lane:

                + 5.2 Vadim Mikheev:

                + 5.3 Jan Wieck:

                + 5.4 Thmas Lockhart:

                + 5.5 Bruce Monjian:

                + 5.6 Marc Fournier:

                + 5.7 Peter Eisentraut:

          o 6. 展望

          o 7.后记

          o 8. 附录

                + 8.1 参考资料

                + 8.2 历史

                + 8.3 特性

          o 9. 注释:

1.简介

PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。请参看本站主要成员何伟平(BITBIRD)的文章“PostgreSQL的昨天、今天和明天—自由软件数据库PostgreSQL简介”。

PostgreSQL 的昨天今天和明--自由软件数据库 PostgreSQL 简介 v2.0

2.前言

今天,如果人们谈论起计算机操作系统,肯定有非常多的人会津津乐道自由软件操作系统Linux,毕竟,众人拾柴火焰高, 如今没有任何人敢于忽视 Linux 这个自由软件操作系统在我们星球的存在,就连国内比较特殊的环境下,也不断地有 各种各样的 Linux 秀出现让公众,甚至是那些对计算机知之甚少的群众都能意识到 Linux 的存在。但是,如果我们 说起数据库,可能绝大多数人只会记得有 Oracle,IBM DB2,Informix,Sybase,MS SQL Server,以及在互联网广为 使用的轻量级 Mysql,而提到 PostgreSQL 的名字,可能很多人都会皱起眉毛:“这是什么?”

“PostgreSQL 是一种特性非常齐全的自由软件的对象-关系性数据库管理系统(ORDBMS),它的很多特性正是当今许多商业数据库的前身” --摘自 PostgreSQL 手册。

为了让大家能够清楚的了解 PostgreSQL,请听我细细道来。

3.历史

3.1 出身名门

谈到 PostgreSQL,我们不得不谈 Berkeley,也就是中文中的“加州大学伯克利分校”这所大名鼎鼎的大学。 老实说,伯克利(BSD)对计算机科学的贡献可谓巨大,在整个计算机科学的发展史上,几乎到处都有这所学 校的研究人员和学生的足迹。只要稍微对计算机技术史有些记忆的人都会记得在 Unix 操作系统的发展里程碑 上 BSD 这三个字的分量,然而也许正是由于 BSD 在系统和网络领域里的光芒太耀眼,掩盖了 BSD 对计算机技术其他分支的贡献,而PostgreSQL 正是其中之一。

3.2 创世纪——Ingres

追本溯源地讲,PostgreSQL 最早开始于 BSD 的 Ingres 项目,这个项目主要是研究关系型数据库技术,早在 1970 年 E.F. Codd 就提出了关系模型,从那以后,人类在计算机领域的数据管理就进入了一个新的时期。从此人们开始用抽象的关系语句来描述自己的 数据,大大提高了人类对数据的抽象描述能力。而 Ingres 项目正是就此进行研究的,它始于 1977 年,到 1985 年结束,而其研究成果后来被一家叫 Relational Technologies 的商业公司拿去做成了商品软件,后来这家公司又被 Computer Associates(CA)收购,不知道 CA 的 JASMINE里面是否还有当年 Ingres 的影子?

3.3 新项目 Postgres

然后,从1986年开始,BSD 的 Michael Stonebraker 教授领导了称为 Postgres 的“后Ingres”项目, 其主要目的是数据库管理系统的更高级研究,因此而产生了 PostgreSQL 的直接前身,Postgres,而 PostgreSQL 的名字也是从 Postgres 项目继承过来的。 这个项目的成果是非常巨大的,在现代数据库的许多方面都做出的大量的贡献,比如,面向对象的数据库, 部分索引技术,规则,过程和数据库扩展等方面都走在了数据库管理系统的前列。而且,Stonebraker 教授还做出了一件造福全人类的事情, 那就是把 Postgres 放在了 BSD 版权的保护下,在这个版权的范围里,任何人几乎可以做任何事情,包括增强它和商业化等。条件只是把 BSD 的版权声明包括在软件的源程序里。

Postgres 在 1989 年发布了第一个版本,因为是BSD版权,所以很快在各种研究机构和一些公众服务组织里广泛使用起来, 由于 众多用户使 Postgres 的开发变得更多地是维护代码和打补丁,而日益背离了原先的数据库管理系统的研究的目标, 到了1994年 Postgres 在版本 4.2 的时候正式终止。而 Postgres 的许多成果则转化成一个商业公司 Illustra,后来 Illustra 被 Informix 收购。看到这里,想必大家应该对 Postgres 的影响有一些认识了吧。

3.4 炎黄子孙的贡献 Postgres95

Postgres 并没有因为 Postgres 项目的终止而停止发展,而是获得了一次新生:在1994年,两名伯克利的研究生在做研究生课题的时候, 向 Postgres 里增加了现代的 SQL 语言的支持。请不要奇怪,SQL 的祖宗是 E.F. Codd 的关系模型,但是 SQL 作为语言,一直到1992年 才形成真正的国际标准(还是草案),当时称为 SQL2,但是人们常称为 SQL92。而在那之前,所以查询语言都是由不同的数据库管理系统 自己实现的,比如,在 Postgres 里原来是用叫 Postquel 的查询语言;这两位研究生是 Andrew Yu 和 Jolly Chen,看了名字,大家可能会想:“很象中国人的名字嘛”,没错,他们就是黑头发黄皮肤的炎黄子孙,不过很可惜的是他们并没有在中国的(包括台湾省的)xx大学取得这样的成就。这样,Postgres 迎来了 1995年,大概 是受xxxxxxx95 的命名方法的“启发”吧,他们俩把这个版本的 Postgres 命名为 Postgres95,并且继续发布了几个版本,增强了一些特性。

3.5 国际化 PostgreSQL

到了 1996 年,Andrew Yu 和 Jolly Chen 相继离开 Postgres95 的开发队伍,(Andrew Yu 加入了 Informix, Jolly Chen 继续读书),而在一些自由软件黑客(注1)的发起下,Postgres 项目又开始了新的历程,最先是由几位加拿大黑客发起,开始了 PostgreSQL 项目,后来参与的人越来越多,逐渐成为了一个由近20个国家的近四十名黑客组成的团体共同开发的 自由软件项目。PostgreSQL 重新把版本号放到了原先 Postgres 项目的顺序中去,从 6.0 开 始(Postgres 本身到4.2,Postgres95 算5.0)。经过五年多的协作开发,PostgreSQL 可以说是目前世界上最先进,功能最强大的自由软件的数据库管理系统。

目前,PostgreSQL 的稳定版本到了 7.3,具有非常丰富的特性和商业级数据库管理系统的质量。而即将到来的 7.4 版本又将是一次飞跃, 将向高质量大型数据库管理系统的方向又迈进了一步。

在这里,先让我告诉您怎么念 PostgreSQL (的确很绕口):Post-gres-Q-L,大概因为大多自由软件开发人员把 SQL 念做:S-Q-L,而不是 IBM 常说的(squel)。

4. 特点

PostgreSQL 可以说是最富特色的自由数据库管理系统,甚至我们也可以说是最强大的自由软件数据库管理系统。事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。直到最近才有 Inprise 的 InterBase 以及 SAP 等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,目前的提交人员已经超过三十人, 而且在许多黑客的努力下,PostgreSQL 的质量日益提高,也从另外一个侧面上增加了人们使用 PostgreSQL 的信心,毕竟数据库管理系统不能象桌面操作系统那样 一天宕一次还让人觉得挺满意 :-P。

从技术角度来讲,PostgreSQL 采用的是比较经典的 C/S (client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式, 这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写, 由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如 ODBC,JDBC,Python,Perl ,Tcl,C/C++,ESQL 等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。

说完优点,不能不说几句缺点,不能因为是自由软件而偏袒 PostgreSQL,从 Postgres 开始,PostgreSQL 就经受了多次变化。

首先,早期的 PostgreSQL 继承了几乎所有 Ingres, Postgres, Postgres95 的问题:过于学院味,因为首先它的目的是数据库研究,因此不论在稳定性, 性能还是使用方便方面,长期以来一直没有得到重视,直到 PostgreSQL 项目开始以后,情况才越来越好,目前,PostgreSQL 已经完全可以胜任任何中上规模范围内的应用范围的业务。目前有报道的生产数据库的大小已经有 TB 级的数据量,已经逼近 32 位计算的极限。 不过学院味也给 PostgreSQL 带来一个意想不到的好处:大概因为各大学的软硬件环境差异太大的缘故,它是目前支持平台最多的数据库管理系统的一种, 所支持的平台多达十几种,包括不同的系统,不同的硬件体系。至今,它仍然保持着支持平台最多的数据库管理系统的称号。

其次,PostgreSQL 的确还欠缺一些比较高端的数据库管理系统需要的特性,比如联机热备份,数据库集群,更优良的管理工具和更加自动化的系统优化功能 等提高数据库性能的机制等。

但是,话说回来,PostgreSQL 拥有极其强大的扩展能力,你可以很容易地扩展数据类型,内部函数,聚集,操作符等等,而且,别忘了,你拥有所有的源程序, 理论上你可以做任何你可以做的事情。因此,很多缺点,在转瞬之间就会消失也是很正常的。

总而言之,PostgreSQL的特性已经完全可以满足绝大部分用户的需要,而且其质量和特性仍然在日新月异地进步着,所以, 我们有理由相信在不远的将来,PostgreSQL 肯定能够成为一种优秀的,自由的,商业数据库的替代产品。

5. 人物

对 PostgreSQL 做出巨大贡献的人物太多了,我在这里只能摘其一二而为之,

首先是伯克利,作为一个学院,好象不应该进入人物的范畴,但是如果没有 BSD 的优良的学术环境,创造出这样优秀的科学技术成果是不可能的, 只要想想我们的 5000 多所科研单位就能明白。(我是不是应该还要在这里感谢美国?:-P)。

然后是 Michael Stonebraker 教授,正是这位学究的开明才能让这样优秀的科技成果走向了公众,甚至到了“自由的对立面”的我们的手里, 而且是所有的东西,不仅仅是一堆二进制文件。

接下来有我们的同胞,Andrew Yu 和 Jolly Chen,他们为 PostgreSQL 走向现代做出了巨大的贡献。

最后是现在正在辛勤耕耘的黑客们,这些黑客以他们执着的精神和高超的技术,为 PostgreSQL的日益完善做出了不可磨灭的贡献。 黑客总共有数十人之多,我只好把核心成员挑出来介绍一下,而对于贡献了更多代码的其他重要黑客,只好暂且委屈他们一阵子了,如果有机会,我还会进一步介绍他们。

5.1 Tom Lane:

一位卡耐基梅隆大学(CMU)的电子工程学 ph.D(博士),是 PostgreSQL 的非常重要开发人员,其足迹遍部PostgreSQL 的每一个角落, 可以说对 PostgreSQL 的性能和稳定性以及特性的取舍有极其重要的贡献,在开始参加 PostgreSQL 项目之前,他已经有了十余年的自由软件开发经验, 可以说是老牌的自由软件程序员;

5.2 Vadim Mikheev:

一位来自俄国的黑客,其特点是专干大项目,比如 V6.3 里面的子查询,V6.5里面的多版本并行控制,以及 7.1 里面的预写式日志系统等, 可以说是 PostgreSQL 的开拓者;

5.3 Jan Wieck:

一位来自德国的黑客,有十余年的数据库开发经验,原先曾经为 SAP 等大型软件厂商工作,后来加入 PostgreSQL 的开发;他也是喜欢大项目, 不过兴趣是用户端的特性,比如外键,一些过程语言比如 pl/pgsql 等,7.1 版本中的 CLOB(文本大对象)的部分也是他的作品。

5.4 Thmas Lockhart:

一位毕业于加洲理工学院的美国黑客,主要负责文档和若干种数据类型(尤其是与时间相关的类型),SQL 语法的标准一致性,时间类型,以及完整性约束等。

5.5 Bruce Monjian:

来自美国,是一些文档和项目协调,以及许多完整性约束和 SQL 语法的标准等,比如 OUTER JOIN,同时维护 TODO 列表和 FAQ。

5.6 Marc Fournier:

加拿大黑客,主要的协调人,维护站点,邮件列表,以及发布版本等。

5.7 Peter Eisentraut:

德国/瑞典黑客,主要负责文档编写、完善,认证和权限管理,制作脚本和一些管理配置接口的制定,以及客户端交互工具 psql 等, 其作用日益突出,可以说在 7.2 版本的开发过程中是不可或缺的人物。

另外还有大量来自欧洲,澳洲和亚洲(日本)等地的黑客。实际上,有越来越多的黑客的作用变得日益重要,在邮递列表中每天都有来自不同黑客的 各种各样的补丁程序。所以,自由软件的特点就是,只要愿意,任何人都可以对它有足够的影响。也就是说,我们命运是真正掌握在自己手里的。

6. 展望

就目前而言, PostgreSQL 的前景非常好,目前的稳定版本是 7.3,这个版本在 7.2 版本的基础上再次做了大量的改进和提高。

7.1 是继 6.5 之后的又一个巨大的变化,她首先引入了预写式日志的功能。这样,事务就拥有了完善的日志机制,可以提供更好的性能, 以及还可以实现更优良的备份和灾难恢复的能力(比如联机热备份和宕机后的自动恢复)。其次是对文本类型的数据段的长度不再限制, 从而很大程度上解决了 PostgreSQL 的大对象的问题。尤其在如今的 web 应用盛行的环境下,这个功能几乎立即将 PostgreSQL 摆到了 可以与其他所有类型的数据库竞争的地位。而且在 SQL 标准上又有进一步的提高,比如 OUTER JOIN 的支持等等。

7.2 版本在 7.1 的基础上改进了原来的数据库定期清理工作中排它锁的过程,使数据库维护不再影响数据库的正常使用,同时增强了查询优化的智能, 使数据库对索引的使用更加准确;同时还消除了每个安装节点的免维护事务次数的限制;国际化;以及还有大量其他方面的增强。

7.3 版本在 7.2 版本的基础上,继续增强了许多特性,包括可返回结果集的用户函数,模式(schema)的支持,准备好的查询规划,DROP COLUMN 的支持, 以及vacuum的优化,更好的查询计划器,更好的权限管理系统等。7.3 版本在许多现实项目中得到了充分的证明和大量的应用。标志着 PostgreSQL 正式成为主流数据库产品之一。

在未来的 7.4 版本中,我们有望可以看到索引空间的重复利用,优化了的 IN 子句(大家不用为 IN 恶劣的性能发愁了),新的前后端协议,更优的聚集函数。 甚至还可能提供 windows 的本机移植版本和具有相当的热备份功能的 PITR (即时恢复)和很多人期待已久的表空间的功能。可以说 7.4 将是一个完全胜任 7x24 应用需求的真正的高端数据库,一个具有开拓企业级应用的数据库。我们有什么理由不欢呼呢?

7.后记

作为一种数据库管理系统,PostgreSQL 并不象 Linux 与某些商业操作系统相比那样,得到迅速广泛的承认,这一点是可以理解的,Tom Lan 曾经有一段话说得实在: “首先,商业数据库系统不象某些商业操作系统那样实在太烂,相反,商业数据库系统的质量还是非常高的,与之相比,PostgreSQL 仍然有一定差距”但同时他也相信 “我们已经达到商业级的数据库系统的质量......”

的确,自由软件的发展具有跳跃性,因为开发者大多是利用空余时间进行开发,当开发者云集的时候,新的东西可能一下子就增加上去;而如果在自由软件运动的低潮时, 因为缺少开发人员,所以可能会有一长段时间的沉寂,而后又会随着社会的发展而出现新的活动。也就是一种螺旋的上升。

因而,我们在面对自由软件的时候,一定要有一点:要相信自己和依靠自己,因为自由软件的发展的确需要每一个爱好者充分发挥自己的聪明才智, 同时,也只有自由软件给你提供了这样的机会——依靠自己的力量改变自己的命运。最后,也只有这样,自由软件之光才能真正照耀我们的世界。

8. 附录

8.1 参考资料

8.2 历史

http://www.daemonnews.org/199907/devhistory.html

http://www.postgresql.org/osdn/history.pdf

http://www.postgresql.org/osdn/tour.pdf

8.3 特性

http://www.postgresql.org/idocs/

http://www.pgsqldb.com/pgsqldoc-7.2c/index.html

9. 注释:

本文中黑客一词源于英文 Hacker,是指那些计算机尖子,对计算机及全人类都有贡献的创造者, 不是一般媒体上的“黑客” 概念,那是指 Cracker,也就是破坏者。

 

作者:何伟平 laser(at)pgsqldb(dot)org laser(at)zhengmai(dot)com(dot)cn

注:如要转载请注明作者和出处 www.pgsqldb.org 或 laser.zhengmai.com.cn

远程连接PostgreSQL服务器。

众所周知,Postgres 8.1 分别发行了 Linux和Windows 两个版本,

所以,介绍远程连接的主题时,也是分别介绍这两个系统上是如何实现的。

其实,windows版比linux版的步骤少一些。

一、实现远程连接Linux上的PostgreSQL服务器。

主要分两个步骤:

<1>要使Linux上的PostgreSQL打开 “unix的tcpip套接子”。

编辑 $POSTGRES/data/postgresql.conf 文件,

将tcpip_socket=off改成tcpip_socket=on即可。

<2>设置远程访问认证机制。

编辑 $POSTGRES/data/pg_hba.conf 文件,

这个文件上面一大堆都是介绍如何使用这个文件使进行配置的,

最下面才是真正让我们填写东西的地方。

其中,有一行注释:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

说明每一行有五个字段,

分别是:连接类型、可使用的数据库名、使用者、DIDR地址、和验证方法等五项。

下面,我只介绍一些针对每个字段常用的选项。

字段一:TYPE。

可以选择:local或host。

前者只能允许本地的用户登陆Postgres数据库;后者可以接受远程客户登陆。所以,

我们应该使用“host”。

字段二:DATWABSE。

连接用户可以使用的数据库名字。可以使Postgres的一个具体的

数据库名,也可以使用“all”来允许用户访问所有数据库。

字段三:USER。

可以指定某个具体的用户来连接Postgres数据库(还要结合后面的地址字段),

也可以使用“all”来允许所有用户连接数据库。

字段四:DIDR-ADDRESS。

这可能会让您不知所措,不知道它为何物。

其实,它就是IP地址与掩码的另一种表示方法而已。

Postgres是通过这个字段来了解,允许那些IP或IP网段连接此服务器。

它的格式是: IP地址/掩码。

这个掩码和子网掩码是一个道理,只不过是用一个小于等于32的正数来表示,

表示的正是子网掩码中高几位为1,

比如,255.255.255.0 就是“24”,说明高24位是1。

192.168.0.1/32 相当于 IP为192.168.0.1,子网掩码为255.255.255.255的网段,

很显然,这只表明192.168.0.1IP自己。

如果您对IP地址与子网掩码不太了解,请查看相关资料。

字段五:METHOD。

这是验证方法。可选的有:

reject:拒绝这个IP的用户访问;

md5:密码以md5作为hash编码;

password:密码作为明文传输(好恐怖!);

krb5:密码以krb5作为hash编码。

下面举一个例子,来说明如何进行设置:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

#允许IP为192.168.0.1的所有用户登陆到Postgres服务器的所有数据库,采用md5验证。

host      all                 all            192.168.0.1/32          md5

#允许用户testuser在192.168.0.XX的网段任意机器登陆Postgres服务器,

#只能使用数据库testdb,采用md5验证。

host      testdb           testuser 192.168.0.1/24          md5

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

二、实现远程连接Windows上的PostgreSQL服务器。

前面都已经看懂后,这个配置就很简单了,除了上面介绍的步骤<1>不用修改后,

只需要配置步骤<2>中介绍的东西即可。(因为winodws不会存在unix的tcpip套接子)。

安装PostgreSQL。

    现在最新版本的 Postgres 8.1 已经发行了 for windows 版本的发行包,

可以在官方网站得到 “http://www.postgresql.org/”。

   由于它最早出现在 *nix 系统上,

而且它的文档也多是使用 *nix 上的概念,

所以,这里介绍一下此软件在 Linux 下的安装。

(只要有在windows下安装软件经验的朋友,都可以在windows下顺利安装它)

  由于我使用的Linux是SlackWare,所以,有一些词语会涉及到SlackWare,不过,

对于其他发行版本的Linux也适用。

  1、在 http://www.postgresql.org/ftp/source/v8.1.3/ 这里下载 postgresql-8.1.3.tar.bz2 这个文件,

这就是我们要安装的发行包。

  2、顺序执行下面的命令,每个命令是一行:

<1>tar jxvf postgresql-8.1.3.tar.bz2 //解开发行包

<2>cd postgresql-8.1.3 //进入软件目录

<3>./configure --prefix=PREFIX //PREFIX是自己想安装到哪里的路径,比如/usr/local/postgres

<4>make //使用GNU make工具编译源代码

<5>make install //最后安装软件。

  3、起动Postgres不能使用root用户(Postgres不建议这样作),所以,接下来创建一个专门管理Postgres的用

户:

useradd -m postgres //追加一个叫postgres的用户, -m是为这个用户自动建立一个home目录。

passwd postgres //为这个用户修改密码,刚才添加用户时没有指定密码,所以现在只需输入新密码并确认密

码即可。其实,在useradd的时候也可以顺便设置密码的,感兴趣的话,自己研究一下吧!

  4、为了postgres用户可以正常使用postgres软件,下面将安装postgres软件的目录的拥有者改成postgres用

户:

比如安装在了/usr/local/postgres 这里,那么,以root身份执行

" chown postgres -R /usr/local/postgres "。

chown用于改变一个路径的拥有者, -R 用于将拥有者置于指定路径及其子目录。

  5、创建数据库集群:

<1>由于要管理postgres软件,所以,首先将用户改成postgres。执行命令 " su postgres ",如果是非root用

户执行这个命令,还要输入postgres用户的密码才行。

<2>进入postgres安装目录的bin文件夹。

<3>执行 " ./initdb -D /usr/local/pgsql/data "

  6、所有东西都准备好了,就该起动服务器了。

<1>执行“ ./pg_ctl start -l logfile ”。

<2>然后可以运行“ ./psql ” 来使用PostgreSQL软件了。

  7、每次都到$POSTGRES_HOME/bin中,执行“点”命令显得有点傻,所以,还是将Postgres的安装目录

加入到PATH环境变量中,使得每次启动机器,都可以使用其bin目录中的命令进行管理:

这里介绍一个简单的方法,编辑 "/etc/profile" 文件,在"export PATH"句(可能还包括其他环境变量)前面

加上一句:"PATH=$PATH:/usr/local/postgres/bin"(不含双引号,冒号后面适Postgres安装目录的bin目录)即

可。

  8、通常,需要在Slackware 起动的时候,自动起动PostgreSQL服务器,需要修改文件 /etc/rc.d/rc.local

,加入下面代码:

su - postgres -c 'postgres安装目录/bin/pg_ctl -D postgres安装目录/data -l ~/postgersql.log start'

例如:安装在 /usr/local/postgres 目录,就可以写成:

su - postgres -c '/usr/local/postgres/bin/pg_ctl -D /usr/local/postgres/data -l ~/postgersql.log

start'

由于SlackWare是BSD风格的linux,所以我采用了这种简单的方式,

如果您的linux属于SysV风格,也可以将启动脚本放到 /etc/rc.d/rc.3和/etc/rc.d/rc.5 目录下,

并作相应的设置。

不过,无论是BSD风格还是SysV风格的Linux,都可以使用我在(8)中介绍的方式实现开机启动Postgres的目的。

PostgreSQL学习计划。

PostgreSQL是一个非常优秀的开源数据库系统,

它是以加州大学伯克利分校计算机系开发的  POSTGRES 版本 4.2 为基础的对象关系型数据库管理系统(ORDBMS)。 POSTGRES 领先的许多概念只是在非常迟的时候才出现在商业数据库中。

使用它,应该不会让用户失望的。

让我们就一起努力学习它吧!

如何实现Windows 与 Linux文件系统共享(转帖2篇)

如何实现Windows 与 Linux文件系统共享(http://www.51cto.com/html/2005/1201/12824.htm)

http://www.51cto.com 2005-12-01 19:03 出处:Linux乐园

Linux的开放性与免费理念吸引了无数的计算机爱好者,越来越多的人加入了Linux的阵营。但Linux使用的文件系统为Ext2,和传统的Windows系列的FAT不同,如何沟通两者间的资源成为应用中的一大问题。下面就介绍几种解决该问题的方法。

(一)同一机器上文件系统的共享

1.Windows系统下访问Linux分区信息

网络上提供一些程序用于在Windows系统下访问Linux分区信息,可以在http: //uranus.it.swin.edu.au/~jn/linux/下找到相应软件;也可以在www.globalxs.nl站点下载程序 fsdext.zip,解压后依照说明将vext2d.vxd、tsdext2.vxd拷贝到c:\windows\system目录下,使用命令 mount /dev/hda2 g将Linux分区虚拟为新的盘符g,卸载也只需使用命令mount /u g即可轻松完成。

2.Linux系统下访问Windows分区信息

直接使用Linux 的mount 命令加配参数即可实现。

(二)不同机器间文件系统的共享

需要在Linux系统上配置NFS、Samba等服务进程以支持资源互访。下面介绍如何配置Samba服务进程。

Samba由两个守护进程smbd和nmbd组成,可由命令 /etc/rc.d/init.d/smb start 启动。启动时读取配置文件 /etc/smb.conf。查询是否启动可使用ps -ef |grep smbd命令;停止Samba可使用命令/etc/rc.d /init.d/smb stop。smb.conf文件主要包括以下部分:

1.Global (全局)参数

该部分设置整个系统的规则,定义了一些公共变量。

netbios name=web

定义Windows系统“网上邻居”中所见的机器名。

workgroup=SambaServer

定义服务器的工作组名。

server string=Samba Server

对主机的说明信息。

hosts allow=202.110.211.225

guest account=hgz

定义smb用户名称。

security=user

定义访问权限。访问权限由低到高有三种:share、user和server。其中share安全级别最低,user模式要求连接时输入用户名和口令,可由以下命令建立smb网络用户:

#dduser username 添加该用户为Linux用户。

#mbpasswd -a username 添加该用户为smb用户。

#mbpasswd username 修改smb账户的口令,最后与/etc/passwd中的口令一致。

server模式要求用户的认证由Samba服务器或NT服务器来完成。

encrypt passwords=yes

设置是否需要加密口令。因为Windows系列默认采用加密口令传输,而Linux默认采用非加密口令传输,为保证smb网络用户的正常登录,在user安全级下设置为加密,在share 安全级下可不设。

smb passwd file=/etc/smbpasswd

由命令cat /etc/passwd | mksmbpasswd.sh > /etc /smbpasswd产生。

interfaces=202.110.211.225/24

配置smb服务所使用的网卡IP以及子网掩码。A段网址为8, B段网址为16, C段网址为24。如果有两个以上网卡,要全部列出。

name resolve order=host dns bcast

设定smb服务时,从机器netbios名称到IP地址的解析方式,默认顺序为host lmhosts wins bcast。如果局域网内有DNS,可设置为host dns bcast。

wins support=no

设置是否有wins支持。

public = yes

为yes时,“网上邻居”中可见该资源,否则不可见。

browseable = yes

为yes时,“网上邻居”中可见该资源,否则不可见。

printing = bsd

指定Linux使用哪个打印机守护进程(bsd、sysv、hpux、aix、qnx、plp),同时向samba说明命令lpr和lpq的缺省值。

printcap name = /etc/printcap

定义了打印配置文件所处的位置。

load printers = yes

表明是否加载printcap 定义的所有打印机以供浏览。

2.Directory shares (目录共享部分)——包括标准[homes]部分

该部分通常定义了Linux机器上共享的目录资源,其名字可以由用户确定。段中的设置控制了每一个用户目录的共享权限。

Comment = Home Directories

设定在浏览本机资源时,出现在指定资源旁边的字符串。

Browseable = no

控制一项服务是否能够出现在网上邻居中,no意味着这个目录将在浏览时显示为要验证的用户名称,yes则显示 homes 和要验证的用户名称的共享目录。

Read only = no

控制是否允许通过验证的用户对主目录有写入的权限,但最终取决于该目录的 Unix 权限。无论 Unix 的权限怎样, 设置 read only = yes 后, 主目录只能是只读的。

3.Printer shares (打印共享)部分

Comment = All Printers

指定为哪些设备进行设置。

Browseable = no

指定是否能够浏览Windows 客户机的printcap 文件定义的全部打印机。

Printable = yes

指定是否允许不打印而去访问与打印服务相关的假脱机目录,例如:/var/spool/lpd/lp。

Public = no

指定未被Linux 用户名验证的Windows 客户机是否有权使用Samba 打印服务。

Writable = no

指定是否有权写假脱机目录。

Create mode = 0700

假脱机文件的缺省许可权限。

4.Public 部分,配置共享目录部分

Comment = Public Stuff ;说明部分

Path = / ;共享的Linux目录

Writable = no ;写权限

Printable = yes

配置文件设置完毕后,重新启动Samba,可以运行以下几个程序进行检测或共享Windows系统资源。

● 运行Testparm程序检测smb.conf的配置文件是否正确。

● 启动Samba2.0.3版本中的swat程序,就可以利用浏览器来配置smb.conf文件。编辑/etc/inetd.conf 文件,将其中swat前的注释去除,再由inetd 服务启动。重启后在Linux主机或相同的客户机浏览器的地址中输入http://Linux主机名或IP地址,就可以利用浏览器来进行smb.conf 文件的配置与管理工作。

● 运行Smbstatus程序显示Samba 当前输出的共享资源。

● 可以把Smbclient程序用作一个基于Linux的Microsoft(smb)的客户,提供FTP模式界面,便于进行调试。

例如:smbclient -L 主机名 <口令> <-U 用户名>

可以查看主机的共享资源信息。smbclient \\\\主机名\\共享目录名 <口令> <-U 用户名>可以连接网络共享资源。其用法类似ftp。

● Nmbclient是可以用来进行调试的程序。

● Smbfs程序是使用SMB协议工作的文件系统。

● Smbmount程序用于在Linux上安装smbfs。使用它可以将Windows共享目录安装在 Linux主机上。

例如:smbmount \\\\主机名\\共享目录名 <口令> -c ‘mount /mnt/smb’命令就可以将指定主机的共享名安装到本地的目录。

● Smbumount程序用于卸载Smbmount建立的共享资源目录。

● Smbtar是一段shell脚本程序,它通过Smbclient使用 tar格式备份和恢复一台远程Windows的共享文件。

有关 Blogger API、MetaWeblog API、MovableType API的转帖3篇

1、Blogger API(http://www.blogger.com/developers/api/1_docs/)

Blogger API

By Evan Williams, 8/7/01

Update: 8/13/01 -Ev.

Update: 6/27/03 -Jason Shellen

Welcome to the Blogger API. This site is for independent developers and partners who are interested in hooking into Blogger with other programs, interfaces, or environments.

Please Note: While we will continue to support the Blogger API we will not be developing it further. We are working along with others in the blogging industry to produce a new, more robust API. You can view the current state of the Echo Project here. For further updates, stay tuned to the bloggerDev mail list and www.blogger.com/developers/.

DISCLAIMER: The current state of this interface is experimental and alpha. I'm sure something's broken and other things will change. Your help in figuring these things out are appreciated, but no guarantees are made about reliability, robustness, or longevity. Use at your own risk.

Protocols

The Blogger API is currently implemented for XML-RPC. There may be others some day.

Methods

These are the available methods:

blogger.newPost: Makes a new post to a designated blog. Optionally, will publish the blog after making the post.

blogger.editPost: Edits a given post. Optionally, will publish the blog after making the edit.

blogger.getUsersBlogs: Returns information on all the blogs a given user is a member of.

blogger.getUserInfo: Authenticates a user and returns basic user info (name, email, userid, etc.).

blogger.getTemplate: Returns the main or archive index template of a given blog.

blogger.setTemplate: Edits the main or archive index template of a given blog.

More Info

There is a mailing list.

There is also a node in the XML-RPC directory pointing to implementations and such.

AppKeys

Good news, friends! We no longer require appkey registration to use the Blogger API. If you send us an appkey of 0123456789ABCDEF, then everything will work fine.

Each API request requires an application key ("appkey"), which is a unique identifier for each application using the interface. You can register an application and get a key with this form. You can distribute appkeys with source code that uses the API. Please use different keys for different apps. Appkeys will be used for tracking, stats, and, potentially, other stuff.

Acknowledgements

The Blogger API implementation uses the Helma XML-RPC library for Java. Also?: Tomcat. And lots of help from some of the people over here.

Copyright © 2001 Pyra Labs

2、有没有与网志交互的 Web Services APIs?(http://hanhan.blog.ccidnet.com/blog/ccid/do_showone/tid_18919.html)

有没有与网志交互的 Web Services APIs?

作者: hanhan11 发表日期: 2006-01-20 17:19 文章属性: 原创 复制链接 

许多网志引 擎都提供属于自己的 Web service 接口,通过编程与网志交互,但目前还没有出现一种标准化的东西。

.Text 和 dasBlog 两者都提供某些 .asmx 端点,可以通过 SOAP 来实现编辑功能,但其接口是不同的。Blogger.com 提供基于 XML-RPC 的交互式 API (Blogger API)。Userland Software 对Blogger API 的功能进行了增强,并把它叫做 MetaWeblog API。这些可能是当今公认的网志 APIs,但仍然不是所有网志引擎都支持的。还有一个用于添加评论的独力的 API 叫做 Comment API,同样,它也不是被普遍支持。

  Atom 组正在努力解决这些问题,Atom API 定义了一个标准的网志 API 用于发布和编辑网志内容。有关信息请参考 The Atom Project 网站。 

阅读全文(192) | 回复(0) | 推送 | 举报 

3、wordpress的XML-RPC开发(http://wuhongsheng.com/blog/archives/2006/268/)

February 5, 2006

wordpress的XML-RPC开发

Filed under: 技术 — 吴洪声 @ 11:17 pm

wordpress支持使用xml-rpc进行开发。但网络上很少有相关的资料。这两天在做一个离线写blog的东东,研究到了这个东西,顺便做一下记录。

wordpress的xml-rpc支持多种API,根据从xmlrpc.php里面提取的数据,支持的API有:

// Blogger API

‘blogger.getUsersBlogs’ => ‘this:blogger_getUsersBlogs’,

‘blogger.getUserInfo’ => ‘this:blogger_getUserInfo’,

‘blogger.getPost’ => ‘this:blogger_getPost’,

‘blogger.getRecentPosts’ => ‘this:blogger_getRecentPosts’,

‘blogger.getTemplate’ => ‘this:blogger_getTemplate’,

‘blogger.setTemplate’ => ‘this:blogger_setTemplate’,

‘blogger.newPost’ => ‘this:blogger_newPost’,

‘blogger.editPost’ => ‘this:blogger_editPost’,

‘blogger.deletePost’ => ‘this:blogger_deletePost’,

// MetaWeblog API (with MT extensions to structs)

‘metaWeblog.newPost’ => ‘this:mw_newPost’,

‘metaWeblog.editPost’ => ‘this:mw_editPost’,

‘metaWeblog.getPost’ => ‘this:mw_getPost’,

‘metaWeblog.getRecentPosts’ => ‘this:mw_getRecentPosts’,

‘metaWeblog.getCategories’ => ‘this:mw_getCategories’,

‘metaWeblog.newMediaObject’ => ‘this:mw_newMediaObject’,

// MetaWeblog API aliases for Blogger API

// see http://www.xmlrpc.com/stories/storyReader$2460

‘metaWeblog.deletePost’ => ‘this:blogger_deletePost’,

‘metaWeblog.getTemplate’ => ‘this:blogger_getTemplate’,

‘metaWeblog.setTemplate’ => ‘this:blogger_setTemplate’,

‘metaWeblog.getUsersBlogs’ => ‘this:blogger_getUsersBlogs’,

// MovableType API

‘mt.getCategoryList’ => ‘this:mt_getCategoryList’,

‘mt.getRecentPostTitles’ => ‘this:mt_getRecentPostTitles’,

‘mt.getPostCategories’ => ‘this:mt_getPostCategories’,

‘mt.setPostCategories’ => ‘this:mt_setPostCategories’,

‘mt.supportedMethods’ => ‘this:mt_supportedMethods’,

‘mt.supportedTextFilters’ => ‘this:mt_supportedTextFilters’,

‘mt.getTrackbackPings’ => ‘this:mt_getTrackbackPings’,

‘mt.publishPost’ => ‘this:mt_publishPost’,

// PingBack

‘pingback.ping’ => ‘this:pingback_ping’,

‘pingback.extensions.getPingbacks’ => ‘this:pingback_extensions_getPingbacks’,

‘demo.sayHello’ => ‘this:sayHello’,

‘demo.addTwoNumbers’ => ‘this:addTwoNumbers’

其中最后两个API为用于测试的DEMO。

根据XML-RPC的约定,客户端必须向服务器作以下post:

POST /RPC2 HTTP/1.0

User-Agent: Frontier/5.1.2 (WinNT)

Host: betty.userland.com

Content-Type: text/xml

Content-length: 181

<?xml version="1.0"?>

<methodCall>

<methodName>examples.getStateName</methodName>

<params>

<param>

<value><i4>41</i4></value>

</param>

</params>

</methodCall>

User-Agent和Host项是必须的。

Content-Type的值必须是text/xml.

Content-Length必须指定,而且必须是正确的值。

下面是一个例子:

POST /api/RPC2 HTTP/1.0

User-Agent: Java.Net Wa-Wa 2.0

Host: plant.blogger.com

Content-Type: text/xml

Content-length: 515

<?xml version="1.0"?>

<methodCall>

<methodName>blogger.newPost</methodName>

<params>

<param><value><string>C6CE3FFB3174106584CBB250C0B0519BF4E294</string></value></param>

<param><value><string>744145</string></value></param>

<param><value><string>ewilliams</string></value></param>

<param><value><string>secret</string></value></param>

<param><value><string>Today I had a peanut butter and pickle

sandwich

for lunch. Do you like peanut-butter and pickle sandwiches? I do.

They’re yummy. Please comment!</string></value></param>

<param><value><boolean>false</boolean></value></param>

</params>

</methodCall>

服务器返回的数据:

HTTP/1.1 200 OK

Connection: close

Content-Length: 125

Content-Type: text/xml

Date: Mon, 6 Aug 20001 19:55:08 GMT

Server: Java.Net Wa-Wa/Linux

<?xml version="1.0"?>

<methodResponse>

<params>

<param>

<value><string>4515151</string></value>

</param>

</params>

</methodResponse>

如果出现错误,服务器会返回以下内容:

HTTP/1.1 200 OK

Connection: close

Content-Length: 225

Content-Type: text/xml

Date: Mon, 6 Aug 20001 19:55:08 GMT

Server: Java.Net Wa-Wa/Linux

<?xml version="1.0"?>

<methodResponse>

<fault>

<value>

<struct>

<member>

<name>faultCode</name>

<value><int>4</int></value>

</member>

<member>

<name>faultString</name>

<value><string>java.lang.Exception: java.lang.Exception: Error:

AppKey is

invalid or inactive.</string></value>

</member>

</struct>

</value>

</fault>

</methodResponse>

wordpress, xml rpc

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

水准仪整平的要点

    在搬动仪器到下一站的途中,将三个脚螺旋调节到适中的位置。

    到达下一站后,基本固定两个脚架,确定高度和位置。然后用手抓住第三个脚架前后左右移动,使水准泡大概居中,在合适了的位置固定第三个脚架。三个脚架全部固定后,再调节脚螺旋使水准泡严格居中。

Red Hat Linux 9: Red Hat Linux 入门指南(转)

今天,在linux下访问windows分区查到此文,如法炮制成功。特此转载。(其中的16.4. 访问 Windows 分区)

http://www.chinalinuxpub.com/doc/manual/9.0/rhl-gsg-zh_CN-9/index.html

Red Hat Linux 9

Red Hat Linux 入门指南

版权 © 2003 Red Hat, Inc.

ISBN: N/A

目录

介绍

    1. 本书的变更

    2. 文档约定

    3. 在 X 下复制和粘贴文本

    4. 使用鼠标

    5. 我们需要用户的反馈!

    6. 注册支持

1. 起步准备

1.1. 设置代理

1.2. 术语介绍

1.3. 登录

    1.3.1. 图形化登录

    1.3.2. 虚拟控制台登录

1.4. 图形化界面

1.5. 打开 Shell 提示

1.6. 创建用户帐号

1.7. 文档和帮助

    1.7.1. 说明书页

    1.7.2. Red Hat Linux 的文档

1.8. 注销

    1.8.1. 图形化注销

    1.8.2. 虚拟控制台注销

1.9. 关机

    1.9.1. 图形化关闭

    1.9.2. 虚拟控制台关闭

2. 使用图形化桌面

    2.1. 使用桌面

    2.2. 使用面板

        2.2.1. 使用「主菜单」

        2.2.2. 使用小程序

        2.2.3. 使用通知区域

        2.2.4. 在面板上添加图标和小程序

        2.2.5. 配置桌面面板

    2.3. 使用 Nautilus

    2.4. 从这里开始

        2.4.1. 定制桌面

        2.4.2. 定制系统

    2.5. 注销

3. 配置日期和时间

    3.1. 时间和日期属性

    3.2. 时区配置

4. 软盘和光盘

    4.1. 使用软盘

        4.1.1. 挂载和卸载软盘

        4.1.2. 在 MS-DOS 软盘上存放 Linux 文件

        4.1.3. 格式化软盘

    4.2. 光盘

        4.2.1. 在你的文件管理器中使用光盘

        4.2.2. 在 shell 提示下使用光盘

    4.3. CD-R 和 CD-RW

        4.3.1. 使用 CD Creator

        4.3.2. 使用 X-CD-Roast

        4.3.3. 用命令行工具来使用 CD-R 和 CD-RW

    4.4. 其它资料

        4.4.1. 安装了的文档

        4.4.2. 有用的网站

5. 上网

6. 浏览万维网

    6.1. Mozilla

        6.1.1. 使用 Mozilla

        6.1.2. Mozilla 网页编辑器

    6.2. Galeon

    6.3. 万维网浏览器的快捷键

7. 电子邮件程序

    7.1. Evolution

    7.2. Mozilla Mail

        7.2.1. Mozilla 和新闻组

    7.3. 简单文本电子邮件客户

        7.3.1. 使用 mutt

8. 打印机配置

8.1. 打印机配置工具

8.2. 添加本地打印机

8.3. 选择打印机型号和结束

    8.3.1. 确认打印机配置

8.4. 打印测试页

8.5. 修改现存打印机

    8.5.1. 「队列名称」

    8.5.2. 「队列类型」

    8.5.3. 「打印机驱动程序」

    8.5.4. 「驱动程序选项」

8.6. 管理打印作业

8.7. 其它资料

    8.7.1. 安装了的文档

    8.7.2. 有用的网站

9. 文档操作

    9.1. OpenOffice.org 办公套件

        9.1.1. OpenOffice.org 的功能与特性

        9.1.2. OpenOffice.org Writer

        9.1.3. OpenOffice.org Calc

        9.1.4. OpenOffice.org Impress

        9.1.5. OpenOffice.org Draw

    9.2. 编辑文本文件

        9.2.1. Shell 提示文本编辑器

    9.3. 查看 PDF

10. 音频、视频、以及一般娱乐

    10.1. 播放音频光盘

    10.2. 播放数码音乐文件

        10.2.1. 使用 XMMS

    10.3. 声卡的故障排除

        10.3.1. 如果声卡配置工具不起作用

    10.4. 视频卡故障排除

    10.5. 游戏

    10.6. 在网上寻找游戏

11. 图像操作

    11.1. 查看图像

        11.1.1. 使用 Nautilus 来查看图像

        11.1.2. 使用 gThumb

    11.2. 使用 GIMP 来操作图像

        11.2.1. GIMP 基础

        11.2.2. 载入文件

        11.2.3. 保存文件

        11.2.4. GIMP 选项

    11.3. 其它资料

        11.3.1. 安装了的文档

        11.3.2. 有用的网站

        11.3.3. 相关书籍

12. 使用数码照相机

    12.1. 使用 gtKam

13. Shell 提示基本知识

    13.1. 为什么要使用 Shell 提示

    13.2. Shell 的历史渊源

    13.3. 使用 pwd 来判定你的当前目录

    13.4. 使用 cd 命令来改变所在目录

    13.5. 使用 ls 来查看目录内容

    13.6. 定位文件和目录

    13.7. 从命令行中打印

    13.8. 清除和重设终端

    13.9. 使用 cat 来操作文件

        13.9.1. 使用重导向

        13.9.2. 后补标准输出

        13.9.3. 重导向标准输入

    13.10. 管道和分页器

        13.10.1. more 命令

    13.11. 阅读文本文件的其它命令

        13.11.1. head 命令

        13.11.2. tail 命令

        13.11.3. grep 命令

        13.11.4. I/O 重导向和管道

        13.11.5. 通配符和正则表达式

    13.12. 命令历史和 Tab 自动补全

    13.13. 使用多个命令

    13.14. 所有权和许可权限

        13.14.1. chmod 命令

        13.14.2. 使用数字来改变权限

14. 管理文件和目录

14.1. 文件系统的宏观画面

14.2. 识别和使用文件类型

14.2.1. 压缩的和归档的文件

14.2.2. 文件格式

14.2.3. 系统文件

14.2.4. 编程和脚本文件

14.3. 文件压缩和归档

    14.3.1. 使用文件打包器

    14.3.2. 在 shell 提示下压缩文件

    14.3.3. 在 shell 提示下给文件归档

14.4. 在 shell 提示下操作文件

    14.4.1. 创建文件

    14.4.2. 复制文件

    14.4.3. 移动文件

    14.4.4. 删除文件和目录

15. 安装和更新 Red Hat Linux 软件包

    15.1. Red Hat 网络

    15.2. 勘误列表

    15.3. 安装光盘

    15.4. 下载软件包

16. 常见问题

    16.1. localhost 登录和口令

    16.2. 安装 RPM 时的错误消息

    16.3. 启动应用程序

        16.3.1. 编辑你的 PATH

    16.4. 访问 Windows 分区

    16.5. 快速寻找命令

    16.6. 使用命令历史的窍门

        16.6.1. 其它捷径

    16.7. 防止 ls 输出卷屏

        16.7.1. 打印 ls 的输出

    16.8. 忘记口令

    16.9. 口令维护

    16.10. 把启动时从控制台登录改变为从 X 登录

A. KDE:K 桌面环境

    A.1. 介绍 KDE

    A.2. 寻求帮助

    A.3. 使用桌面

    A.4. 使用面板

        A.4.1. 使用「主菜单」

        A.4.2. 使用小程序

        A.4.3. 在面板上添加图标和小程序

        A.4.4. 配置 KDE 面板

    A.5. 管理文件

        A.5.1. 导航面板

    A.6. 使用 Konqueror 浏览万维网

    A.7. 使用 Konqueror 来查看图像

    A.8. KMail

    A.9. 定制 KDE

    A.10. 从 KDE 中注销

B. 应用程序

C. DOS 和 Linux 常用命令的对比

D. 系统目录

E. 键盘的快捷操作

索引

后记

    前进

    介绍

在jsp页面中获取http请求头的代码(转)

转自:http://www.ericgiguere.com/tools/http-header-viewer.html

Header Viewer Source Code

In case you're wondering, here is the code that prints the headers:

<table width="100%" border="0" cellspacing="0"

       cellpadding="8" bgcolor="#EEEEEE">

      

    <tr><td><b>Name</b></td><td><b>Value</b></td></tr>

    <tr><td colspan="2" width="100%" height="2" bgcolor="#000000"></td></tr>

   

    <c:forEach var="hname" items="${pageContext.request.headerNames}">

   

        <c:forEach var="hvalue" items="${headerValues[hname]}">

            <tr><td valign="top"><c:out value="${hname}"/></td>

            <td valign="top"><c:out value="${hvalue}"/></td></tr>

            <tr><td colspan="2" bgcolor="#000000" width="100%" height="1"></td></tr>

   

        </c:forEach>

    </c:forEach>

</table>

 

As you can see, it's very easy to access the HTTP headers using the Java Standard Tag Library (JSTL), a powerful tag library for use with JavaServer Pages (JSP).

If you didn't realize that this page was built using JSP pages, See How This Site Works for the details.

孩子踢被子的解决方法(转帖2篇)

  昨晚,我和老婆把孩子夹在中间睡觉,预防她踢被子。我这个人睡眠不好,很容易醒,结果一晚上由于孩子踢被子醒了可能上10次来给她盖好。今天白天,人的精神很不好。我这才明白原来老婆一个人照顾孩子睡觉是很累人的。

今天,上网搜了一下,找到解决这个问题的两篇文章。

1、为什么小孩子睡觉总爱踢被子?怎么办呢?http://iask.sina.com.cn/browse/browse_detail.php?qid=2787290

为什么小孩子睡觉总爱踢被子?怎么办呢?

提问者:锋76112 回答:7 浏览次数:119 悬赏分:0 提问时间: 2005-10-31 08:07:41 | 评论(0) | 投诉 | 好象所有的孩子都会踢被子,天气冷了,很容易生病,好运位有什么好办法吗?

答案 回答者:小颖 级别:新手(2005-10-31 10:41:30) 我家宝宝八个月了,我是给她穿件内衣然后再穿件睡袍睡的,这样既使被子被踢了,她也不会着凉。

提问者对答案的评价:

我宝宝26个月,用睡袍可能不错:)谢谢

| 我来“揪”错 | 评论(0) | 投诉 |

其他回答

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

回答者:我爱末末 级别:学者 (2005-10-31 08:10:41) 不知您的孩子有多大了,我家的宝宝十个月了也是喜欢踢被子,现在我们就给宝宝用睡带了,这样的话宝宝就不会受凉了。

| 评论(0) | 投诉 |

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

回答者:彤彤妈妈 级别:新手 (2005-10-31 09:07:52) 我家的宝宝17个月了,谈一下我的经验。在他小的时候我在被子和褥子两侧各缝一根绳子,然后将同侧的绳子系在一起,这样宝宝就蹬不下去了。在他大一点有了一定的思维的时候,他经常“打把式”,有时候睡觉睡到了脚底下,那么他就不让你绑了,这个阶段没有别的办法只好随着他,因为无论你想什么办法他都会将其踢开,所以就只好辛苦妈妈了,晚上起床给他盖被子,但你不用担心宝宝会着凉,因为我家宝宝就是这样过来的,可她却从来没有因为这个而感冒。现在宝宝17个月了,我发现他不再象以前那样蹬被子了。

| 评论(0) | 投诉 |

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

回答者:爱与哀愁 级别:学姐 (2005-10-31 09:32:19) 没有什么好办法!

1.用睡袋,但是不方便,并且也会被踢

2.妈妈勤劳一些吧,多醒几次,为宝宝盖盖吧

| 评论(0) | 投诉 |

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

回答者:青苹果 级别:新手 (2005-10-31 09:33:33) 是啊,我家宝宝也爱踢被子,有时我就等她睡深了再给她盖,要是你怕他凉着,可以给他穿个兜肚。其实我的宝宝倒也经常晚上冻得冰凉,却从没因此感冒。

| 评论(0) | 投诉 |

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

回答者:笔颖333 级别:新手 (2005-10-31 10:26:08) 小孩子都喜欢踢被子,不要给宝宝盖得太厚了.天气冷时,不妨给宝宝穿件小背心睡.这样或许会好些.

| 评论(0) | 投诉 |

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

回答者:w330902 级别:学姐 (2005-10-31 11:51:40) 对策

1.被子要轻柔、宽松

有时你可能也觉得宝宝盖得太厚或者被子过重了,需要减轻一点,但真做起来却又会情不自禁地给宝宝多盖一些,所以你首先要战胜自己。

不妨做一个实验,看什么样的被子宝宝睡觉最安稳。第一天先按你的想法盖被子,四周严实;第二天稍减一些被子,四周宽松;第三天再减一些被子,脚部更轻松一些。每天等宝宝睡熟2-4小时后观察情况,你会发现,被子越厚,四周越严实,宝宝蹬得越快。所以,建议你给宝宝少盖一些,宝宝就会把被子裹得好好的,蹬被子现象自然消失。

2.去除引起宝宝睡眠不舒服的因素

除少盖一些让宝宝舒服外,还要注意睡觉时别让宝宝穿太多衣服,一层贴身、棉质、少扣、宽松的衣服是比较理想的。此外,宝宝睡觉时还应避免环境中的光刺激,要营造安静的睡觉环境,睡前别让宝宝吃得过饱,尤其是别吃含高糖的食物等等。总之,尽量稳定宝宝的神经调节功能,使宝宝少出汗,从而避免蹬被子。

3.对症治疗

对有佝偻病或贫血等疾病的宝宝,要在医生指导下进行治疗。

4.心智运动训练

对无上述原因,却蹬被子明显,尤其是同时伴有多动、坏脾气、适应性差和生活无规律等特点的宝宝,有可能是感觉统合失调的缘故。此时,需要以有效的心智运动来改善宝宝大脑皮层对睡觉体位和被子的感觉信息反应,发出正确的睡眠指挥信号。

具体方法:每晚睡觉前,先指导宝宝进行爬地推球15~20分钟,然后挺胸变换走步(有专门的脚步训练器)。你也可简单地在地板上画出红、蓝两条直线(两线距离以10厘米为宜),然后让宝宝沿线走20分钟以上(可选择两足交替走、单足跳行、双足直向跳行、双足横向跳行和双足前后向跳行等多种方式)。只要坚持引导宝宝做,就会有意想不到的大收获——你会发现,宝宝不仅不蹬被子了,而且多动、坏脾气、适应性差和生活无规律的现象也逐渐消失了。

2、解决小孩子睡觉踢被子的好方法!http://forum.taobao.com/forum-32/show_thread--1--3646681-.htm

解决小孩子睡觉踢被子的好方法!

发表回复 1 2 到第 页

解决小孩子睡觉踢被子的好方法! 2006-01-13 11:24

孩子睡觉时好踢被子,可能是玩得太累或临睡前玩剧烈的游戏,入睡后大脑皮层的兴奋状态还未消失。更多的原因是给孩子盖得过暖,裹得太紧,而小儿体温调节机能尚不完善,容易受热也容易出汗,结果两脚就使劲地把被子踢掉。

一般来说,小儿的免疫能力比成人差。睡着后皮肤表面的毛孔是张开着的,如果踢掉被子,身体受寒,细菌或病毒就容易乘机繁殖。有的孩子平时衣服穿得过多,睡觉时盖得过暖,又缺少体育锻炼,他们的抗寒能力不强,这样的孩子更容易着凉感冒。

为了防止孩子因踢被子而着凉,父母应采取措施。给孩子用的垫被和盖被不宜过厚过重,要用轻软的被褥,根据季节变换被子的厚薄;冬天,临睡前可用热水袋把被窝晤热,然后取掉,这样既使孩子感到暖和又不过分热。睡觉时给孩子穿宽大柔软的单衣裤,穿毛衣睡既不舒服又太热。最好给孩子一个人睡一条被子,盖被子时注意盖好两肩和两脚就可以了,裹得太紧孩子动弹不得反而容易踢被子。冬天给孩子睡睡袋的方法既方便,又不会着凉。

另外,睡觉前应使孩子安静下来,不要玩得太累,室内空气要流通;最好能开些窗睡眠,孩子睡得舒适就很少踢被子了。天气不是十分寒冷,孩子睡时手脚都不要盖没,也是一个好办法。

健康心愿、用心实现、安利雅姿彩妆护肤品、纽崔莱营养保健品、家庭护理系列、治疗近视、男女不孕不育、还有增强记忆-为高考加油!本店以质量赢生存、以薄利求发展!

您的健康美容顾问

卖家信用

买家信用

头衔:从九品

注册:2005-12-18

帖子:757

银币:67

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物

编辑推荐型男美女全球大搜捕我来挑战Rain!多图中国历史再次被"扭曲"究竟要不要买日货十年一梦 淘宝实现混血儿最性感真人秀!QQ号好坏的评分标准淘宝时尚之星火热Pk断奶让我一度失眠!狂丢手机的惨痛经历!淑女小草的写真集小心!这些减肥法别用!不到两小时 赚了11万流产让我长满皱纹感动中国的人Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 11:37:14 学习了,我儿子总爱踢被子,踢完腿还举着,呵呵,盖上了还踢

买韩妆,来看看再决定哦~~~~

zlsnow

卖家信用

买家信用

头衔:状元

注册:2004-12-29

帖子:413

银币:126

来自:辽宁 大连

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 11:54:09 你儿子很可爱哦 呵呵 不过要小心受凉

健康心愿、用心实现、安利雅姿彩妆护肤品、纽崔莱营养保健品、家庭护理系列、治疗近视、男女不孕不育、还有增强记忆-为高考加油!本店以质量赢生存、以薄利求发展!

您的健康美容顾问

卖家信用

买家信用

头衔:从九品

注册:2005-12-18

帖子:757

银币:67

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 12:09:18 老乡.我帮你顶帖子了

大家好.狗年吉祥! 汪!汪!汪! 旺!旺!旺! *丹尼熊* 童装 特惠新新上柜啦!~~~

4050wxfy

卖家信用

头衔:状元

注册:2005-10-14

帖子:484

银币:31

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 12:10:38 鼎鼎了!!!!!!!!!!

大家好.狗年吉祥! 汪!汪!汪! 旺!旺!旺! *丹尼熊* 童装 特惠新新上柜啦!~~~

4050wxfy

卖家信用

头衔:状元

注册:2005-10-14

帖子:484

银币:31

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 12:11:32 好帖子!!!!!

大家好.狗年吉祥! 汪!汪!汪! 旺!旺!旺! *丹尼熊* 童装 特惠新新上柜啦!~~~

4050wxfy

卖家信用

头衔:状元

注册:2005-10-14

帖子:484

银币:31

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 12:14:01 让孩子,带个肚兜可能回好点

大家好.狗年吉祥! 汪!汪!汪! 旺!旺!旺! *丹尼熊* 童装 特惠新新上柜啦!~~~

4050wxfy

卖家信用

头衔:状元

注册:2005-10-14

帖子:484

银币:31

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 12:15:07 楼主帖子好

大家好.狗年吉祥! 汪!汪!汪! 旺!旺!旺! *丹尼熊* 童装 特惠新新上柜啦!~~~

4050wxfy

卖家信用

头衔:状元

注册:2005-10-14

帖子:484

银币:31

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 12:27:28 我的宝贝,踢了给盖好还有意见,一脚给你再踢开,要悄俏地盖上,象个做贼的妈妈,睡眠不好,用了再多的化装品也不好,5555

特别漂亮的精品*狮子谷*童装,欢迎妈妈们光临 ~~~~~超漂亮春装闪亮登场~~~~~~

小米辣辣

卖家信用

买家信用

头衔:秀才

注册:2005-07-15

帖子:30

银币:7

来自:四川 绵阳

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 19:22:54 小子也爱踢被子,只好晚上起来几次帮他盖。

春夏新装全面上市,新货区八折,老顾客八拍包邮;其他区低价清货,多款童装一元拍,欢迎光临选购!

juaner_he

卖家信用

买家信用

头衔:状元

注册:2005-05-20

帖子:633

银币:191

来自:广东 珠海

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 19:37:46 我儿子都6岁了,还是爱是爱踢被子,买了睡袋也不行,他踢不掉,就更烦躁,后来就没用睡袋了.我和老公想了好久,想出了个办法,一直用到现在还蛮管用的.就是学着睡袋的样子我自己又做了个大的,让他感觉是睡在大被子里.但是我把睡袋两边和脚底都做成活扣的,这样他踢时就不会感觉到有约束感,天如果太冷了就在上面在盖个被子,一样效果很好.大家如果觉得可以,也试试,说不定你的孩子也会喜欢!:] <QQ:113834482>

lflqr

头衔:平民

注册:2006-01-12

帖子:8

银币:10

来自:

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 20:38:57 其实有更简单的解决方法的,到我店里看看,多功能体温监测器,其中一个功能久是宝宝踢被监测,一旦被子被踢开,温度降低,就会自动报警,声音不大,避免吵醒宝宝,这个可是冬天帮助妈妈看好宝宝的好帮手,还能体温监测,及早发现宝宝发烧,呵呵~~年轻的妈妈们!赶快去瞧瞧吧

chifeng20040901

卖家信用

头衔:平民

注册:2005-06-05

帖子:2

银币:10

来自:湖北 武汉

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 21:01:25 lflqr写到:

我儿子都6岁了,还是爱是爱踢被子,买了睡袋也不行,他踢不掉,就更烦躁,后来就没用睡袋了.我和老公想了好久,想出了个办法,一直用到现在还蛮管用的.就是学着睡袋的样子我自己又做了个大的,让他感觉是睡在大被子里.但是我把睡袋两边和脚底都做成活扣的,这样他踢时就不会感觉到有约束感,天如果太冷了就在上面在盖个被子,一样效果很好.大家如果觉得可以,也试试,说不定你的孩子也会喜欢!:]

哈,这个办法好!我的女儿踢被子不算,还会到处乱爬,现在4岁了,一点办法也没有,我要赶紧做一个这样的东东,谢谢你的好办法了!

夏装上架!春装又好又便宜!家居用品、地方特产代购区欢迎你!欢乐宝宝的地盘--小帐篷货已到!!!

嘉禾万兴

卖家信用

买家信用

头衔:从九品

注册:2005-12-06

帖子:982

银币:20

来自:广西 柳州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 22:44:10 学习中…………

美体内衣800元大红包快快进入本店领取!优惠销售儿童、亲子教育图书!凡一次购买1000元以上,可享受优惠价的九五折优惠!

sjgww

卖家信用

买家信用

头衔:榜眼

注册:2004-11-04

帖子:216

银币:23

来自:北京 北京

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 23:05:14 没有好办法啊。睡睡袋也不方便。怎么办啊?

店铺装饰★设计模板★店标签名★公告挂饰★图像处理★动画制作★开店咨询

花开谁人听

卖家信用

买家信用

头衔:状元

注册:2005-04-09

帖子:487

银币:19

来自:山东 曲阜

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-13 23:17:34 楼主真细心哦

儿童用品,内衣系列,网易一卡通

卡通gg

卖家信用

买家信用

头衔:秀才

注册:2005-11-15

帖子:31

银币:1

来自:河北 石家庄

赠送礼物

Re:解决小孩子睡觉踢被子的好方法! 2006-01-14 09:37:11 谢谢大家支持

健康心愿、用心实现、安利雅姿彩妆护肤品、纽崔莱营养保健品、家庭护理系列、治疗近视、男女不孕不育、还有增强记忆-为高考加油!本店以质量赢生存、以薄利求发展!

您的健康美容顾问

卖家信用

买家信用

头衔:从九品

注册:2005-12-18

帖子:757

银币:67

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-14 10:02:34 lflqr写到:

我儿子都6岁了,还是爱是爱踢被子,买了睡袋也不行,他踢不掉,就更烦躁,后来就没用睡袋了.我和老公想了好久,想出了个办法,一直用到现在还蛮管用的.就是学着睡袋的样子我自己又做了个大的,让他感觉是睡在大被子里.但是我把睡袋两边和脚底都做成活扣的,这样他踢时就不会感觉到有约束感,天如果太冷了就在上面在盖个被子,一样效果很好.大家如果觉得可以,也试试,说不定你的孩子也会喜欢!:]

好办法,学习,我家的也踢,

妈咪宝贝同乐居,祝所有的宝宝健康快乐成长,全场买即送,迪孚,星月,木制玩具,幼儿书籍,不间断一元拍,欢迎参与。星月太空船世纪娃罩衣,三保暖内衣一元拍。

浩阳宝儿

卖家信用

买家信用

头衔:九品

注册:2005-03-15

帖子:1264

银币:119

来自:天津 天津

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-14 10:22:50 呵呵 注意营养就能增强体质 孩子爱动是天性

健康心愿、用心实现、安利雅姿彩妆护肤品、纽崔莱营养保健品、家庭护理系列、治疗近视、男女不孕不育、还有增强记忆-为高考加油!本店以质量赢生存、以薄利求发展!

您的健康美容顾问

卖家信用

买家信用

头衔:从九品

注册:2005-12-18

帖子:757

银币:67

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-14 10:31:04 恩,晓得了,我小时候也经常踢被子,呵呵

印尼燕窝、雪蛤油、鱼翅、西洋参、冬虫夏草、鹿茸等…请随意挑选哦,不满意就退款☆

ppniao7

卖家信用

买家信用

头衔:从八品

注册:2005-03-20

帖子:2045

银币:12

来自:上海 上海

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-01-14 20:09:31 我儿子都6岁了,还是爱踢被子,买了睡袋也不行,他踢不掉,就更烦躁,后来就没用睡袋了.我和老公想了好久,想出了个办法,一直用到现在还蛮管用的.就是学着睡袋的样子我自己又做了个大的,让他感觉是睡在大被子里.但是我把睡袋两边和脚底都做成活扣的,这样他踢时就不会感觉到有约束感,天如果太冷了就在上面在盖个被子,一样效果很好.大家如果觉得可以,也试试,说不定你的孩子也会喜欢!:]

还有一点我没说详细,就是要把肩膀那里做成搭盖式的,手臂两边也是畅口的可以自由伸缩的,记住别把大睡袋做厚了,不厚不薄,宝宝睡着才舒服,如果感觉太冷了,就再在上面盖个被子就好!......呵呵,自己的一点小经验,希望对大家有用! :]

最后编辑此帖2006-01-14 20:12:02。

lflqr

头衔:平民

注册:2006-01-12

帖子:8

银币:10

来自:

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-02-03 13:49:07 呵呵孩子健康成长是我们的心愿

健康心愿、用心实现、安利雅姿彩妆护肤品、纽崔莱营养保健品、家庭护理系列、治疗近视、男女不孕不育、还有增强记忆-为高考加油!本店以质量赢生存、以薄利求发展!

您的健康美容顾问

卖家信用

买家信用

头衔:从九品

注册:2005-12-18

帖子:757

银币:67

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-02-03 14:44:49 学习中!~~~~

wooridoorijd

头衔:榜眼

注册:2005-09-06

帖子:289

银币:108

来自:上海 上海

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-02-04 11:36:13 没办法,我孩子三岁了,就没盖被子睡过觉,什么法就试过了,头疼!

您的每一次光临,我都感到莫大的荣幸,对于您的信任,我们只有抱以热情、真诚对待。请您相信,我们一直在努力!

bais2213

卖家信用

买家信用

头衔:秀才

注册:2005-04-19

帖子:33

银币:10

来自:河北 保定

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-02-04 20:11:41 呵呵 大多数的宝宝都要踢被子滴 不过偶家宝宝从小给他睡睡袋,想踢也踢不了,现在6岁了,还睡着呢,不过都是自制的睡袋哟,根据他的身高来定制滴,呵呵,没办法啊,不然晚上得醒好多次呢,这样大人孩子都睡的好!

小店全部YY清仓了,欢迎选购~

千钧一发45

卖家信用

买家信用

头衔:榜眼

注册:2005-11-10

帖子:263

银币:10

来自:江苏 南通

赠送礼物

发送站内信件 阅览会员资料 赠送礼物Re:解决小孩子睡觉踢被子的好方法! 2006-02-09 14:44:07 谢谢 支持

健康心愿、用心实现、安利雅姿彩妆护肤品、纽崔莱营养保健品、家庭护理系列、治疗近视、男女不孕不育、还有增强记忆-为高考加油!本店以质量赢生存、以薄利求发展!

您的健康美容顾问

卖家信用

买家信用

头衔:从九品

注册:2005-12-18

帖子:757

银币:67

来自:河南 郑州

赠送礼物

发送站内信件 阅览会员资料 赠送礼物