<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BlogJava</title>
	<atom:link href="http://blog.donews.com/yahoo163/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.donews.com/yahoo163</link>
	<description>研究、学习Java的地方</description>
	<lastBuildDate>Fri, 02 Feb 2007 06:29:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>oracle IMP 命令详解</title>
		<link>http://blog.donews.com/yahoo163/archive/2007/02/02/1124486.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2007/02/02/1124486.aspx#comments</comments>
		<pubDate>Fri, 02 Feb 2007 06:29:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
				<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2007/02/02/1124486.aspx</guid>
		<description><![CDATA[<p><font size="2">原文地址：<a href="http://www.bokee.net/bloggermodule/blog_viewblog.do?id=465310">http://www.bokee.net/bloggermodule/blog_viewblog.do?id=465310</a></font></p>
<p><font size="2">Oracle的导入实用程序(Import utility)允许从数据库提取数据，并且将数据写入操作系统文件。imp使用的基本格式：imp[username[/password[@service]]]，以下例举imp常用用法。 </font></p>
<br />
<p class="postText" align="left"><font size="2">1. 获取帮助 </font></p>
<div twffan="done">
<pre><font size="2"> imp help=y</font></pre>
</div>
<p class="postText" align="left]]></description>
			<content:encoded><![CDATA[<p><font size="2">原文地址：<a href="http://www.bokee.net/bloggermodule/blog_viewblog.do?id=465310">http://www.bokee.net/bloggermodule/blog_viewblog.do?id=465310</a></font></p>
<p><font size="2">Oracle的导入实用程序(Import utility)允许从数据库提取数据，并且将数据写入操作系统文件。imp使用的基本格式：imp[username[/password[@service]]]，以下例举imp常用用法。 </font></p>
<p></p>
<p class="postText" align="left"><font size="2">1. 获取帮助 </font></p>
<div twffan="done">
<pre><font size="2"> imp help=y</font></pre>
</div>
<p class="postText" align="left"><font size="2">2. 导入一个完整数据库</font></p>
<div twffan="done">
<pre><font size="2"> imp system/manager file=bible_db log=dible_db full=y ignore=y</font></pre>
</div>
<p class="postText" align="left"><font size="2">3. 导入一个或一组指定用户所属的全部表、索引和其他对象</font></p>
<div twffan="done">
<pre><font size="2"> imp system/manager file=seapark log=seapark fromuser=seapark imp </font></pre>
<pre><font size="2"> system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)</font></pre>
</div>
<p class="postText" align="left"><font size="2">4. 将一个用户所属的数据导入另一个用户</font></p>
<div twffan="done">
<pre><font size="2"> imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy</font></pre>
<pre><font size="2"> imp system/manager file=tank log=tank fromuser=(seapark,amy)</font></pre>
<pre><font size="2"> touser=(seapark1, amy1)</font></pre>
</div>
<p class="postText" align="left"><font size="2">5. 导入一个表</font></p>
<div twffan="done">
<pre><font size="2"> imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)</font></pre>
</div>
<p class="postText" align="left"><font size="2">6. 从多个文件导入</font></p>
<div twffan="done">
<pre><font size="2"> imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) </font></pre>
<pre><font size="2">log=paycheck, filesize=1G full=y</font></pre>
</div>
<p class="postText" align="left"><font size="2">7. 使用参数文件</font></p>
<div twffan="done">
<pre><font size="2"> imp system/manager parfile=bible_tables.par</font></pre>
</div>
<blockquote class="postText">
<p align="left"><font size="2">bible_tables.par参数文件：</font></p>
</blockquote>
<div twffan="done">
<pre><font size="2"> #Import the sample tables used for the Oracle8i Database Administrator's </font></pre>
<pre><font size="2">Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import</font></pre>
</div>
<p class="postText" align="left"><font size="2">8. 增量导入</font></p>
<div twffan="done">
<pre><font size="2"> imp system./manager inctype= RECTORE FULL=Y FILE=A</font></pre>
<pre>
<pre>
<div class="diaryContent" id="diary650062" twffan="done">
<h5 class="postTitle"><a href="http://blog.csdn.net/adijava/archive/2004/07/28/54573.aspx"><font color="#007799">Oracle imp/exp</font></a> </h5>
<p class="postText" align="left"><font face="Verdana" size="2">C:Documents and Settingsadministrator&gt;exp help=y</font>
<p class="postText" align="left"><font face="Verdana" size="2">Export: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:04:43 2004</font>
<p class="postText" align="left"><font face="Verdana" size="2">Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.</font>
<p class="postText" align="left"><font size="2"> </font>
<p class="postText" align="left"><font face="Verdana" size="2">通过输入 EXP 命令和用户名/口令，您可以后接用户名/口令的命令:</font>
<p class="postText" align="left"><font face="Verdana" size="2">例程: EXP SCOTT/TIGER</font>
<p class="postText" align="left"><font face="Verdana" size="2">或者，您也可以通过输入跟有各种参数的 EXP 命令来控制&ldquo;导出&rdquo;按照不同参数。要指定参数，您可以使用关键字:</font>
<p class="postText" align="left"><font face="Verdana" size="2">格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)或 TABLES=(T1: P1,T1: P2)，如果 T1 是分区表</font>
<p class="postText" align="left"><font face="Verdana" size="2">USERID 必须是命令行中的第一个参数。</font>
<p class="postText" align="left"><font face="Verdana" size="2">关键字  说明(默认)        关键字      说明(默认)--------------------------------------------------------------------------USERID   用户名/口令           FULL         导出整个文件 (N)BUFFER   数据缓冲区大小         OWNER     所有者用户名列表FILE       输出文件 (EXPDAT.DMP)  TABLES       表名称列表COMPRESS   导入到一个区 (Y) RECORDLENGTH IO 记录的长度GRANTS  导出权限 (Y)           INCTYPE      增量导出类型INDEXES    导出索引 (Y)         RECORD       跟踪增量导出 (Y)DIRECT     直接路径 (N)            TRIGGERS     导出触发器 (Y)LOG        屏幕输出的日志文件  STATISTICS   分析对象 (ESTIMATE)ROWS    导出数据行 (Y)        PARFILE      参数文件名CONSISTENT 交叉表的一致性 (N) CONSTRAINTS  导出的约束条件 (Y)</font>
<p class="postText" align="left"><font face="Verdana" size="2">OBJECT_CONSISTENT    只在对象导出期间设置为读的事务处理 (N)FEEDBACK             每 x 行的显示进度 (0)FILESIZE             每个转储文件的最大大小FLASHBACK_SCN        用于将会话快照设置回以前状态的 SCNFLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间QUERY                用于导出表的子集的 select 子句RESUMABLE            遇到与空格相关的错误时挂起 (N)RESUMABLE_NAME       用于标识可恢复语句的文本字符串RESUMABLE_TIMEOUT    RESUMABLE 的等待时间TTS_FULL_CHECK       对 TTS 执行完整的或部分相关性检查TABLESPACES          要导出的表空间列表TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)TEMPLATE             调用 iAS 模式导出的模板名</font>
<p class="postText" align="left"><font face="Verdana" size="2">在没有警告的情况下成功终止导出。==================================================</font>
<p class="postText" align="left"><font face="Verdana" size="2">C:Documents and Settingsadministrator&gt;imp help=y</font>
<p class="postText" align="left"><font face="Verdana" size="2">Import: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:06:54 2004</font>
<p class="postText" align="left"><font face="Verdana" size="2">Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.</font>
<p class="postText" align="left"><font size="2"> </font>
<p class="postText" align="left"><font face="Verdana" size="2">可以通过输入 IMP 命令和您的用户名/口令后接用户名/口令的命令:</font>
<p class="postText" align="left"><font face="Verdana" size="2">例程: IMP SCOTT/TIGER</font>
<p class="postText" align="left"><font face="Verdana" size="2">或者, 可以通过输入 IMP 命令和各种参数来控制&ldquo;导入&rdquo;按照不同参数。要指定参数，您可以使用关键字:</font>
<p class="postText" align="left"><font face="Verdana" size="2">格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N或 TABLES=(T1: P1,T1: P2)，如果 T1 是分区表</font>
<p class="postText" align="left"><font face="Verdana" size="2">USERID 必须是命令行中的第一个参数。</font>
<p class="postText" align="left"><font face="Verdana" size="2">关键字  说明（默认）        关键字      说明（默认）--------------------------------------------------------------------------USERID   用户名/口令           FULL         导入整个文件 (N)BUFFER   数据缓冲区大小         FROMUSER     所有人用户名列表FILE     输入文件 (EXPDAT.DMP)    TOUSER       用户名列表SHOW     只列出文件内容 (N) TABLES      表名列表IGNORE   忽略创建错误 (N)    RECORDLENGTH  IO 记录的长度GRANTS  导入权限 (Y)           INCTYPE      增量导入类型INDEXES 导入索引 (Y)          COMMIT       提交数组插入 (N)ROWS    导入数据行 (Y)        PARFILE      参数文件名LOG      屏幕输出的日志文件   CONSTRAINTS  导入限制 (Y)DESTROY                覆盖表空间数据文件 (N)INDEXFILE              将表/索引信息写入指定的文件SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)FEEDBACK               每 x 行显示进度 (0)TOID_NOVALIDATE        跳过指定类型 ID 的验证FILESIZE               每个转储文件的最大大小STATISTICS             始终导入预计算的统计信息RESUMABLE            在遇到有关空间的错误时挂起 (N)RESUMABLE_NAME         用来标识可恢复语句的文本字符串RESUMABLE_TIMEOUT      RESUMABLE 的等待时间COMPILE                编译过程, 程序包和函数 (Y)STREAMS_CONFIGURATION  导入 Streams 的一般元数据 (Y)STREAMS_INSTANITATION  导入 Streams 的实例化元数据 (N)</font>
<p class="postText" align="left"><font face="Verdana" size="2">下列关键字仅用于可传输的表空间TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)TABLESPACES 将要传输到数据库的表空间DATAFILES 将要传输到数据库的数据文件TTS_OWNERS 拥有可传输表空间集中数据的用户</font>
<p class="postText" align="left"><font face="Verdana" size="2">成功终止导入，但出现警告。</font>
<p class="postText" align="left"><font size="2"></font>
<p class="postText" align="left"><font size="2"></font>
<p class="postText" align="left"><font size="2"></font>
<h2 class="diaryTitle" align="left"><font size="2">oracle的imp和exp的一些用法- -</font></h2>
<p class="postText" align="left"><font size="2">                                       </font>
<p class="postText" align="left"><font size="2"></font>
<p class="postText" align="left"><font size="2">Oracle8i/9i EXP/IMP使用经验  一、8i EXP常用选项 </font>
<p class="postText" align="left"><font size="2">1、FULL，这个用于导出整个数据库，在ROWS=N一起使用时，可以导出整个数据库的结构。例如： </font>
<p class="postText" align="left"><font size="2">exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y </font>
<p class="postText" align="left"><font size="2">2、BUFFER和FEEDBACK，在导出比较多的数据时，我会考虑设置这两个参数。例如： </font>
<p class="postText" align="left"><font size="2">exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT </font>
<p class="postText" align="left"><font size="2">3、FILL和LOG，这两个参数分别指定备份的DMP名称和LOG名称，包括文件名和目录，例子见上面。 </font>
<p class="postText" align="left"><font size="2">需要说明的是，EXP可以直接备份到磁带中，即使用FILE=/dev/rmt0(磁带设备名)，但是一般我们都不这么做，原因有二：一、这样做的速度会慢很多，二、现在一般都是使用磁带库的，不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。 </font>
<p class="postText" align="left"><font size="2">如果你真想使用EXP直接到磁带，你可以参考Metalink文章&ldquo;EXPORTING TO TAPE ON UNIX SYSTEMS&rdquo;（文档号：30428.1），该文中有详细解释。 </font>
<p class="postText" align="left"><font size="2">4、COMPRESS参数将在导出的同时合并碎块，尽量把数据压缩到initial的EXTENT里，默认是N，一般建议使用。DIRECT参数将告诉EXP直接读取数据，而不像传统的EXP那样，使用SELECT来读取表中的数据，这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。 </font>
<p class="postText" align="left"><font size="2">5、如何使用SYSDBA执行EXP/IMP？ </font>
<p class="postText" align="left"><font size="2">这是一个很现实的问题，有时候我们需要使用SYSDBA来执行EXP/IMP，如进行传输表空间的EXP/IMP，以及在9i下用SYS用户来执行EXP/IMP时，都需要使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP： </font>
<p class="postText" align="left"><font size="2">exp &quot;'sys/sys as sysdba'&quot; file=1.dmp tables=gototop.t rows=n </font>
<p class="postText" align="left"><font size="2">6、QUERY参数后面跟的是where条件，值得注意的是，整个where子句需要使用&quot;&quot;括起来，where子句的写法和SELECT中相同，如果是UNIX平台所有&quot;和'都需要使用u26469屏蔽它们的特殊含义： </font>
<p class="postText" align="left"><font size="2">exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query=&quot;where c1=20 and c2=gototop&quot; </font>
<p class="postText" align="left"><font size="2">如果是windows平台，则使用下面的格式： </font>
<p class="postText" align="left"><font size="2">exp </font><a href="mailto:c/c@ncn"><font color="#007799" size="2">c/c@ncn</font></a><font size="2"> file=c.dmp log=c.log tables=t query=&quot;&quot;&quot;where id=1 and name='gototop'&quot;&quot;&quot; </font>
<p class="postText" align="left"><font size="2">二、8i IMP常用选项 </font>
<p class="postText" align="left"><font size="2">1、FROMUSER和TOUSER，使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。 </font>
<p class="postText" align="left"><font size="2">2、IGNORE、GRANTS和INDEXES，其中IGNORE参数将忽略表的存在，继续导入，这个对于需要调整表的存储参数时很有用，我们可以先根据实际情况用合理的存储参数建好表，然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引，如果想使用新的存储参数重建索引，或者为了加快到入速度，我们可以考虑将INDEXES设为N，而GRANTS一般都是Y。 </font>
<p class="postText" align="left"><font size="2">另外一个EXP/IMP都有的参数是PARFILE，它是用来定义EXP/IMP的参数文件，也就是说，上面的参数都可以写在一个参数文件中，但我们一般很少使用。 </font>
<p class="postText" align="left"><font size="2">三、Oracle9i EXP功能描述 </font>
<p class="postText" align="left"><font size="2">Oracle9i EXP在原有的基础上新增了部分新的参数，按功能主要分为以下几个部分： </font>
<p class="postText" align="left"><font size="2">1、OBJECT_CONSISTENT - 用于设置EXP对象为只读以保持对象的一致性。默认是N。 </font>
<p class="postText" align="left"><font size="2">2、FLASHBACK_SCN和FLASHBACK_TIME - 用于支持FLASHBACK功能而新增。 </font>
<p class="postText" align="left"><font size="2">3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用于支持RESUMABLE空间分配而新增。 </font>
<p class="postText" align="left"><font size="2">4、TTS_FULL_CHECK - 用于在传输表空间时使用依赖性检查。 </font>
<p class="postText" align="left"><font size="2">5、TEMPLATE - 用于支持iAS。 </font>
<p class="postText" align="left"><font size="2">6、TABLESPACES - 设置表空间导出模式。个人觉得对于一般用户而言，这个才是新增参数中最实用的一个，可以让用户在原来的FULL、OWNER、TABLES的基础上多了一种选择，使得EXP更加灵活。 </font>
<p class="postText" align="left"><font size="2">四、不同版本的EXP/IMP问题？ </font>
<p class="postText" align="left"><font size="2">一般来说，从低版本导入到高版本问题不大，麻烦的是将高版本的数据导入到低版本中，在Oracle9i之前，不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决： </font>
<p class="postText" align="left"><font size="2">1、在高版本数据库上运行底版本的catexp.sql； </font>
<p class="postText" align="left"><font size="2">2、使用低版本的EXP来导出高版本的数据； </font>
<p class="postText" align="left"><font size="2">3、使用低版本的IMP将数据库导入到底版本数据库中； </font>
<p class="postText" align="left"><font size="2">4、在高版本数据库上重新运行高版本的catexp.sql脚本。 </font>
<p class="postText" align="left"><font size="2">但在9i中，上面的方法并不能解决问题。如果直接使用底版本EXP/IMP会出现如下错误： </font>
<p class="postText" align="left"><font size="2">EXP-00008: ORACLE error %lu encountered </font>
<p class="postText" align="left"><font size="2">ORA-00904: invalid column name </font>
<p class="postText" align="left"><font size="2">这已经是一个公布的BUG，需要等到Oracle10.0才能解决，BUG号为2261，你可以到METALINK上去查看有关此BUG的详细信息。 </font>
<p class="postText" align="left"><font size="2">BUG归BUG，我们的工作还是要做，在没有Oracle的支持之前，我们就自己解决。在Oracle9i中执行下面的SQL重建exu81rls视图即可。 </font>
<p class="postText" align="left"><font size="2">CREATE OR REPLACE view exu81rls  </font>
<p class="postText" align="left"><font size="2">(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)  </font>
<p class="postText" align="left"><font size="2">AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,  </font>
<p class="postText" align="left"><font size="2">decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')  </font>
<p class="postText" align="left"><font size="2">|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')  </font>
<p class="postText" align="left"><font size="2">|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')  </font>
<p class="postText" align="left"><font size="2">|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),  </font>
<p class="postText" align="left"><font size="2">r.check_opt, r.enable_flag,  </font>
<p class="postText" align="left"><font size="2">DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)  </font>
<p class="postText" align="left"><font size="2">from user$ u, obj$ o, rls$ r  </font>
<p class="postText" align="left"><font size="2">where u.user# = o.owner#  </font>
<p class="postText" align="left"><font size="2">and r.obj# = o.obj#  </font>
<p class="postText" align="left"><font size="2">and (uid = 0 or  </font>
<p class="postText" align="left"><font size="2">uid = o.owner# or  </font>
<p class="postText" align="left"><font size="2">exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')  </font>
<p class="postText" align="left"><font size="2">)  </font>
<p class="postText" align="left"><font size="2">/  </font>
<p class="postText" align="left"><font size="2">grant select on sys.exu81rls to public;  </font>
<p class="postText" align="left"><font size="2">/  </font>
<p class="postText" align="left"><font size="2">五、其他问题 </font>
<p class="postText" align="left"><font size="2">本文只讨论了Oracle8i和9i中的EXP/IMP的一些情况，对于之前的版本，在8.0.X中，除了QUERY参数不能用外，其它差别不大。针对没有QUERY的情况，我们可以先在数据库中使用查询条件建立临时中间表，然后使用EXP导出这个中间表即可。至于Oracle7因为目前使用的人较少，gototop不打算在此做详细解释了，如果读者朋友有需求，你可以参考Metalink文档：&ldquo;Overview of Export and Import in Oracle7&rdquo;（文档号：61949.1）。关于EXP/IMP的详细参数信息你可以通过EXP/IMP HELP=Y来获得。 </font>
<p class="postText" align="left"><font size="2">另外关于传输表空间的更多信息可以参考下面的Metelink文档，本文不再详述。 </font>
<p class="postText" align="left"><font size="2">[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.  </font>
<p class="postText" align="left"><font size="2">[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.  </font>
<p class="postText" align="left"><font size="2">在进行并行EXP/IMP的时候，如果IMP过程建索引的话不建议同时运行5个以上的IMP，如果你想加快速度</font>
</div>
</pre>
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2007/02/02/1124486.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>软件项目管理中的用户</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/30/1105379.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/30/1105379.aspx#comments</comments>
		<pubDate>Sat, 30 Dec 2006 03:17:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
				<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/30/1105379.aspx</guid>
		<description><![CDATA[&#160;&#160;&#160; 软件项目的各个阶段要面对不同的用户。对于作IT的人来说，尤其是作软件项目。可能把软件中的用户定义为最终操作软件的人。这也没什么不对，但是不够全面。按照软件工程的角度来说，用户至少应该分为3种：<br />决策者、投资人和最终用户。这3个用户在软件开发和实施个过程中都非常重要，有时候决策者和投资者可能是一个人。但是我们往往只注重最终用户的需求和意见，忽略了前者。]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp; 软件项目的各个阶段要面对不同的用户。对于作IT的人来说，尤其是作软件项目。可能把软件中的用户定义为最终操作软件的人。这也没什么不对，但是不够全面。按照软件工程的角度来说，用户至少应该分为3种：<br />决策者、投资人和最终用户。这3个用户在软件开发和实施个过程中都非常重要，有时候决策者和投资者可能是一个人。但是我们往往只注重最终用户的需求和意见，忽略了前者。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/30/1105379.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>轻松一下，有关乌龟的故事:P</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/29/1104711.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/29/1104711.aspx#comments</comments>
		<pubDate>Fri, 29 Dec 2006 03:32:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
				<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/29/1104711.aspx</guid>
		<description><![CDATA[1.乌龟的屁股 谜底：规定 ；<br />2.乌龟倒立 谜底：上面有规定； 　　 <br />3.乌龟翻筋斗 谜底：一个又一个规定； 　　 <br />4.大乌龟背上背个小乌龟 谜底：上面又有新规定！ 　　 <br />5.三只乌龟，中间那只忽然便便了。谜底：哎呀，中央的规定又变了！ <br />6.乌龟盖了间房子然后爬了进去 谜底： 盖中盖； <br />7.乌龟爬出来把房子拆了又盖了一间爬了进去 谜底：新盖中盖；<br />8 .乌龟又爬出来拆房子盖房子爬进去 谜底：巨能盖！<br />9.乌龟碰到了一只鳖　谜底：黄金搭档 <br />10.乌龟打架 谜底：规定有冲突&#160; <br />11.乌龟穿龙袍 谜底：黄金甲<br />&#160;12.所有的乌龟都穿龙袍 谜底：满城尽带黄金甲！]]></description>
			<content:encoded><![CDATA[<p>1.乌龟的屁股 谜底：规定 ；<br />2.乌龟倒立 谜底：上面有规定； 　　 <br />3.乌龟翻筋斗 谜底：一个又一个规定； 　　 <br />4.大乌龟背上背个小乌龟 谜底：上面又有新规定！ 　　 <br />5.三只乌龟，中间那只忽然便便了。谜底：哎呀，中央的规定又变了！ <br />6.乌龟盖了间房子然后爬了进去 谜底： 盖中盖； <br />7.乌龟爬出来把房子拆了又盖了一间爬了进去 谜底：新盖中盖；<br />8 .乌龟又爬出来拆房子盖房子爬进去 谜底：巨能盖！<br />9.乌龟碰到了一只鳖　谜底：黄金搭档 <br />10.乌龟打架 谜底：规定有冲突&nbsp; <br />11.乌龟穿龙袍 谜底：黄金甲<br />&nbsp;12.所有的乌龟都穿龙袍 谜底：满城尽带黄金甲！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/29/1104711.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>客户需要什么样的软件</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/20/1099514.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/20/1099514.aspx#comments</comments>
		<pubDate>Wed, 20 Dec 2006 02:39:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
		
		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/20/1099514.aspx</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160;&#160;  我在一个不大的公司作项目经理，作IT的人一定都知道，在这样的公司项目经理通常要负责软件的需求、设计等工作。作软件这么多年了，对客户到底需要什么样的软件有一些自己的想法。我认为一个成功的软件必须具备下面几点特征：1、功能性&#160;&#160;&#160;&#160;&#160;  正确的功能性说明软件可以做到用户他作的事，但是要达到这一点对分析和设计人员来说是一个挑战，有的时候客户并不能清楚的表达他们需求，又或者他们根本不知道自己到底需要什么，所以很多软件之后作出来之后客户才会不断的提出他们的需求，而这对于软件的设计和开发无疑存在很大的风险。所以说，为什么很多公司希望招聘到有经验的开发设计人员的原因也在这里（将可能的风险控制到最小）。有时候设计人员会陷入一种自以为是的&#8220;催眠状态&#8221;，他们常常会自言自语&#8220;是的，客户要的一定是这个功能&#8221;，&#8220;我的设计充分考虑了所有的可能&#8221;等等，这个时候你需要问问自己&#038;ld]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  我在一个不大的公司作项目经理，作IT的人一定都知道，在这样的公司项目经理通常要负责软件的需求、设计等工作。作软件这么多年了，对客户到底需要什么样的软件有一些自己的想法。我认为一个成功的软件必须具备下面几点特征：<br />1、功能性<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  正确的功能性说明软件可以做到用户他作的事，但是要达到这一点对分析和设计人员来说是一个挑战，有的时候客户并不能清楚的表达他们需求，又或者他们根本不知道自己到底需要什么，所以很多软件之后作出来之后客户才会不断的提出他们的需求，而这对于软件的设计和开发无疑存在很大的风险。所以说，为什么很多公司希望招聘到有经验的开发设计人员的原因也在这里（将可能的风险控制到最小）。有时候设计人员会陷入一种自以为是的&ldquo;催眠状态&rdquo;，他们常常会自言自语&ldquo;是的，客户要的一定是这个功能&rdquo;，&ldquo;我的设计充分考虑了所有的可能&rdquo;等等，这个时候你需要问问自己&ldquo;客户要的真的是这个吗？&rdquo;，&ldquo;我没漏掉什么吧？&rdquo;。正确把握程序功能性的一个有效的手段就是找来一个客户代表，当然他必须是熟知业务过程的（不是所有的客户都明白自己的业务：P），又或者是请一个行业专家，比如他以前就开发过类似的软件。总之，作为一个IT开发设计人员，最大的弱点就是只懂得软件开发，其他行业的业务缺知之甚少，所以，这里我们要作的就是，多听，多问，取长补短。<br />2、直观的界面<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  有了正确（尽量正确）的功能性，之后马上面临的就是为客户提供直观的界面，这一点是不容小视的。这一点也体现在软件的易用性上。你的软件虽然具备了所有的功能，但是如果用户打开你的软件感觉一头雾水，不知从何下手，那么这个软件也是失败的。我的一个客户曾经跟我说过这样的话&ldquo;你开发的软件要越简单越好，最好是我对着屏幕说一句话他就把活干完了&rdquo;，呵呵，当然这样的软件估计目前还无法作出来，但是起码他体现了客户对软件易用性的一种心态。我的经验是如果用户在没有你培训的前提下通过菜单和按钮的提示就可以完成软件30%的操作，那么你的软件就是成功的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  这里还要提到另外一种情况，就是软件的升级，这种升级可以是对自己产品的升级，也可以是对其他厂商产品的替代。人都有惯性，对于以前熟悉的东西是不会轻易改变的。所以在你对产品升级的时候一定要注意，保持和原有软件界面的连贯性，对于操作习惯和界面显示不要作太大的改动，否则你的用户可能是无法接受的。<br />3、健壮性<br />&nbsp;&nbsp;&nbsp;  健壮性可能更多的体现在软件的架构设计上，近些年来不断涌现的各种新技术比如Struts,EJB,Hibernate,JSF等等都是为了在一定程度上提供一宗易于扩展的架构。所以我们在作设计的时候最好要考虑好业务逻辑的分层，不要把什么都放在一起。健壮性还体现在程序的稳定性和性能等方面，你的软件平均故障时间越长（MTBF），你的软件越&ldquo;健壮&rdquo;</p>
<p>好了，今天就现说到这里吧，后事如何下回分解：P</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/20/1099514.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Json 牛刀小试</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/19/1099099.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/19/1099099.aspx#comments</comments>
		<pubDate>Tue, 19 Dec 2006 09:35:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
		
		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/19/1099099.aspx</guid>
		<description><![CDATA[<p><strong>JSON</strong>(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于<a href="http://www.crockford.com/javascript">JavaScript Programming Language</a>,  <a href="http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf">Standard  ECMA-262 3rd Edition - December 1999</a>的一个子集。 JSON采用完全独立于语言的文本格式，但是也使用了类似于C语言家族的习惯（包括C, C++, C#, Java, JavaScript, Perl, Python等）。 这些特性使JSON成为理想的数据交换语言。</p>
<p>JSON建构于两种结构：<br /></p>
<ul>
    <li>&#8220;名称/值&#8221;对的集合（A col]]></description>
			<content:encoded><![CDATA[<p><strong>JSON</strong>(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于<a href="http://www.crockford.com/javascript">JavaScript Programming Language</a>,  <a href="http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf">Standard  ECMA-262 3rd Edition &#8211; December 1999</a>的一个子集。 JSON采用完全独立于语言的文本格式，但是也使用了类似于C语言家族的习惯（包括C, C++, C#, Java, JavaScript, Perl, Python等）。 这些特性使JSON成为理想的数据交换语言。</p>
<p>JSON建构于两种结构：</p>
<ul>
<li>&ldquo;名称/值&rdquo;对的集合（A collection of name/value pairs）。不同的语言中，它被理解为<em>对象（object）</em>，纪录（record），结构（struct），字典（dictionary），哈希表（hash table），有键列表（keyed list），或者关联数组 （associative array）。 </li>
<li>值的有序列表（An ordered list of values）。在大部分语言中，它被理解为数组（array）。 </li>
</ul>
<p>这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。</p>
<p>下面是一个小小的例子：<br />&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;<br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt; New Document &lt;/TITLE&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br />&lt;!&#8211;<br />function getnumber(){<br />var myjsonobj={&quot;test&quot;:[{&quot;x&quot;:1,&quot;y&quot;:2}]};<br />&nbsp;alert(myjsonobj.test[0].x);<br />}<br />//&#8211;&gt;<br />&lt;/SCRIPT&gt;<br />&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p>&lt;INPUT TYPE=&quot;button&quot; value=&quot;test&quot; onclick=&quot;getnumber()&quot;&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;</p>
<p>先不说JSON的性能如何，光是这种简单的解析方式就让人爱不释手了:)</p>
<p>&nbsp;</p>
<p></p>
<p>&nbsp;</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/19/1099099.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSF 指南之 装饰响应状态</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/13/1095465.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/13/1095465.aspx#comments</comments>
		<pubDate>Wed, 13 Dec 2006 03:32:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
				<category><![CDATA[JSF指南]]></category>
		<category><![CDATA[Java应用]]></category>

		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/13/1095465.aspx</guid>
		<description><![CDATA[在这个状态，所有的过程都已经被框架和应用程序处理完毕。装饰请求状态的目的就是把所有的返回结果显示给用户，这也是它主要完成的功能。这个状态的另一个功能是保存视图的状态，这样就可以在<span style="font-style: italic;">重现视图状态</span>中 在用户需要的时候将页面重现显示。通常的应用中视图的状态是保存在客户端的，那么为了达到重现视图的目的在JSF中视图的状态是保存在服务器端的，大多数 情况下视图状态被保存在用户的会话(session)中。记住，JSF不是一个专门用来进行页面显示的技术，因此我们还有其他几种方式来显示返回的结果：<br />
<ul>
    <li>     &#160; 只使用视图中提供的控制方法输出结果   </li>
    <li>     &#160; 结合视图中的控制方法和应用程序代码输出结果   </li>
    <li>     &#160; 使用静态模版资源输出结果   </li>
    <li>     &#160; 使用动态方法输出结果，就像JSP那样。   </li>
</ul>
所有JSF的实]]></description>
			<content:encoded><![CDATA[<p>在这个状态，所有的过程都已经被框架和应用程序处理完毕。装饰请求状态的目的就是把所有的返回结果显示给用户，这也是它主要完成的功能。这个状态的另一个功能是保存视图的状态，这样就可以在<span style="font-style: italic;">重现视图状态</span>中 在用户需要的时候将页面重现显示。通常的应用中视图的状态是保存在客户端的，那么为了达到重现视图的目的在JSF中视图的状态是保存在服务器端的，大多数 情况下视图状态被保存在用户的会话(session)中。记住，JSF不是一个专门用来进行页面显示的技术，因此我们还有其他几种方式来显示返回的结果：</p>
<ul>
<li>     &nbsp; 只使用视图中提供的控制方法输出结果   </li>
<li>     &nbsp; 结合视图中的控制方法和应用程序代码输出结果   </li>
<li>     &nbsp; 使用静态模版资源输出结果   </li>
<li>     &nbsp; 使用动态方法输出结果，就像JSP那样。   </li>
</ul>
<p>所有JSF的实现最终都必须被描述为一个唯一的标签。在我们前面的例子中这个标签的名字是&ldquo;/hello.jsp&rdquo;。JSF也可以使用其他非JSP的方式显示视图，随后的讲解中会列出其他非JSP方式的显示。<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 编码过程在每个组件中都存在，<span style="font-style: italic;">转换器</span>会在最终的结果中将组件的值转换为字符串显示到客户端。所以在我们前面的例子中HtmlTextIput的Integer值最终被转换成了字符串。<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 总之，装饰响应状态是JSF中的最后一个状态，一旦他完毕，那么所有经过处理的结果将最终显示在客户端的浏览器中。经过前面一系列的讲解，你对JSF的每个状态都已经清楚了。随后我们会讲到其他一些JSF的基础知识。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/13/1095465.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oracle job 计划调度的执行</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/13/1095365.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/13/1095365.aspx#comments</comments>
		<pubDate>Wed, 13 Dec 2006 01:10:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
				<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/13/1095365.aspx</guid>
		<description><![CDATA[每天临晨执行的任务：<br />&#160;declare&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; jobnum&#160;&#160;&#160;&#160; integer;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; begin&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dbms_job.submit(&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; job=&#62;jobnum,&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; what=&#62;'gentTmpdate2;',&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;]]></description>
			<content:encoded><![CDATA[<p>每天临晨执行的任务：<br />&nbsp;declare&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jobnum&nbsp;&nbsp;&nbsp;&nbsp; integer;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbms_job.submit(&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; job=&gt;jobnum,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; what=&gt;&#8217;gentTmpdate2;&#8217;,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next_date=&gt;trunc(sysdate)+23.9/24,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interval=&gt;&#8217;trunc(sysdate+1)+23.9/24&#8242;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; commit;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;&nbsp; <br />每月最后一天临晨执行的任务：<br />declare&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jobnum&nbsp;&nbsp;&nbsp;&nbsp; integer;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbms_job.submit(&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; job=&gt;jobnum,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; what=&gt;&#8217;sp_invoice_zz;&#8217;,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next_date=&gt;trunc(last_day(sysdate))+23.9/24,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interval=&gt;&#8217;trunc(last_day(add_months(sysdate,1)))+23.9/24&#8242;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; commit;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/13/1095365.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pyhon2.5 增加了hashlib</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/12/1095020.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/12/1095020.aspx#comments</comments>
		<pubDate>Tue, 12 Dec 2006 07:01:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Python 问与答]]></category>

		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/12/1095020.aspx</guid>
		<description><![CDATA[&#160;&#160; 新的hashlib已经加入到pyhon2.5中，这个模块是由Gregory P. Smith完成的。原来的md5和sha仍然可以使用。新的hashlib增加了附加的更安全的混淆选项（SHA-224, SHA-256, SHA-384, and SHA-512）。新的hashlib和原来的md5以及sha使用非常类似。区别比较大的地方是他们的构造函数发生了变化。比如<br />原来版本：<br />
<pre>h = md5.md5()   <br />h = md5.new()  <br /><br />或<br />h = sha.sha()   <br />h = sha.new()   <br />新版本的：<br />h = hashlib.md5()<br />或<br />h = hashlib.sha1()<br /><br />一旦hash对象被创建，那么其他方法就和以前的版本是一样的。</pre>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp; 新的hashlib已经加入到pyhon2.5中，这个模块是由Gregory P. Smith完成的。原来的md5和sha仍然可以使用。新的hashlib增加了附加的更安全的混淆选项（SHA-224, SHA-256, SHA-384, and SHA-512）。新的hashlib和原来的md5以及sha使用非常类似。区别比较大的地方是他们的构造函数发生了变化。比如<br />原来版本：</p>
<pre>h = md5.md5()   h = md5.new()  

或h = sha.sha()   h = sha.new()   新版本的：h = hashlib.md5()或h = hashlib.sha1()

一旦hash对象被创建，那么其他方法就和以前的版本是一样的。</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/12/1095020.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决oracle 没有监听器的办法</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/12/1094872.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/12/1094872.aspx#comments</comments>
		<pubDate>Tue, 12 Dec 2006 03:28:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
				<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/12/1094872.aspx</guid>
		<description><![CDATA[项目开发完毕，准备在自己的机子上搭建开发环境。装完oracle后发现 net8Configration没办法连接到刚建好的数据库。提示no listener 。看了一下net assistant，发现已经配置了lintener。但是为什么提示没有呢？<br />再到服务中看一下，晕，竟然没有TNSListener服务这一项，后来在网上找了一篇文章，说是可以通过修改注册表来加上这个服务。试了一下还是不行。最后还是用老办法command解决了。<br />具体如下：<br />执行：lsnrctl<br />然后start <br />接下来终于看到我的监听器启动了。晕死！但是为什么windows服务中没有监听器这一项呢？奇怪，这个问题还没有解决。]]></description>
			<content:encoded><![CDATA[<p>项目开发完毕，准备在自己的机子上搭建开发环境。装完oracle后发现 net8Configration没办法连接到刚建好的数据库。提示no listener 。看了一下net assistant，发现已经配置了lintener。但是为什么提示没有呢？<br />再到服务中看一下，晕，竟然没有TNSListener服务这一项，后来在网上找了一篇文章，说是可以通过修改注册表来加上这个服务。试了一下还是不行。最后还是用老办法command解决了。<br />具体如下：<br />执行：lsnrctl<br />然后start <br />接下来终于看到我的监听器启动了。晕死！但是为什么windows服务中没有监听器这一项呢？奇怪，这个问题还没有解决。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/12/1094872.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WxPython 之 Frame(二)</title>
		<link>http://blog.donews.com/yahoo163/archive/2006/12/03/1089497.aspx</link>
		<comments>http://blog.donews.com/yahoo163/archive/2006/12/03/1089497.aspx#comments</comments>
		<pubDate>Sun, 03 Dec 2006 07:32:00 +0000</pubDate>
		<dc:creator>BlogJava</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.donews.com/yahoo163/archive/2006/12/03/1089497.aspx</guid>
		<description><![CDATA[<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US">Window styles<o:p></o:p></span></strong></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US"><o:p>&#160;</o:p></span></strong></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span lang="EN-US" style=""><span style="">&#160;&#160; </span></span><span style="font-family: 宋体;">说道窗口就必须说说窗口的风格。如果你以前用过</span><span lang="EN-US" style="">delphi,vb</span><span style="font-family: 宋体;">开发，那么一定记得每个窗]]></description>
			<content:encoded><![CDATA[<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US">Window styles<o:p></o:p></span></strong></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US"><o:p>&nbsp;</o:p></span></strong></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span lang="EN-US" style=""><span style="">&nbsp;&nbsp; </span></span><span style="font-family: 宋体;">说道窗口就必须说说窗口的风格。如果你以前用过</span><span lang="EN-US" style="">delphi,vb</span><span style="font-family: 宋体;">开发，那么一定记得每个窗口都可以设置，诸如是否有关闭按钮、是否可以最大化、最小化等等。那么</span><span lang="EN-US" style="">WxPython</span><span style="font-family: 宋体;">中是怎么设置的呢？答案是</span><span lang="EN-US" style="">Window Styles<o:p></o:p></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">在我们前面讲述</span><span lang="EN-US" style="">wxFrame</span><span style="font-family: 宋体;">的构造函数时有一个</span><span lang="EN-US" style="">style</span><span style="font-family: 宋体;">参数。对了，就是设置这个，下面的表格列出了所有窗口的风格。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
<table cellspacing="0" cellpadding="0" border="1" style="border: medium none ; border-collapse: collapse;" class="MsoTableGrid">
<tbody>
<tr style="">
<td width="209" valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">参数</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">解释</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxDEFAULT_FRAME_STYLE</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">这是每个窗口的缺省风格，包含标题、可调节大小的边框，最大最小化按钮、关闭按钮和系统菜单。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxICONIZE</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">最小化时显示图标（只适用于</span><span lang="EN-US" style="">Windows</span><span style="font-family: 宋体;">平台）</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxICONIZE</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">设置窗口标题</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxMINIMIZE</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">与</span><span lang="EN-US" style="">wxICONIZE</span><span style="font-family: 宋体;">相同</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxMINIMIZE_BOX</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">最小化按钮</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxMAXIMIZE_BOX</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">最大化按钮</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxCLOSE_BOX</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">关闭按钮</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxSTAY_ON_TOP</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">置顶窗口</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxSYSTEM_MENU</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">是否显示系统菜单</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxRESIZE_BORDER</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">是否科研调整窗口大小</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxFRAME_TOOL_WINDOW</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">窗口最小化时，是否在</span><span lang="EN-US" style="">Windows</span><span style="font-family: 宋体;">（</span><span lang="EN-US" style="">GTK+</span><span style="font-family: 宋体;">）工具栏中显示。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxFRAME_FLOAT_ON_PARENT</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">窗口是否显示在最上层，与</span><strong><span lang="EN-US">wxSTAY_ON_TOP</span></strong><span style="font-family: 宋体;">不同，它必须有一个父窗口。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxFRAME_EX_CONTEXTHELP</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">是否有联机帮助按钮。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><strong><span lang="EN-US">wxFRAME_EX_METAL</span></strong><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">如果时在</span><span lang="EN-US" style="">MacOS</span><span style="font-family: 宋体;">中，这个属性用于是否显示&ldquo;金属风格&rdquo;</span><span lang="EN-US" style=""><o:p></o:p></span></p>
</td>
</tr>
<tr style="">
<td width="209" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 156.9pt;">
<p class="MsoNormal"><span lang="EN-US" style=""><o:p>&nbsp;</o:p></span></p>
</td>
<td width="359" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 269.2pt;">
<p class="MsoNormal"><span lang="EN-US" style=""><o:p>&nbsp;</o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p style="margin-left: 18pt;" class="MsoNormal"><span lang="EN-US" style=""><o:p>&nbsp;</o:p></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">下面这段代码演示了窗口风格的使用</span><span lang="EN-US" style=""><o:p></o:p></span></p>
<table cellspacing="0" cellpadding="0" border="1" style="border: medium none ; border-collapse: collapse;" class="MsoTableGrid">
<tbody>
<tr style="">
<td width="568" valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 426.1pt;">
<p class="MsoNormal"><strong><span style="font-family: 宋体;">窗口风格代码示例</span><span lang="EN-US"><o:p></o:p></span></strong></p>
</td>
</tr>
<tr style="">
<td width="568" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 426.1pt;">
<p class="MsoNormal"><strong><span lang="EN-US">import wx<o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US">class StyleFrame(wx.Frame):<o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>def __init__(self):<o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>wx.Frame.__init__(self,None,-1,&quot;This is a style   fram&quot;,size=(400,300),style=wx.SYSTEM_MENU|wx.MINIMIZE_BOX|wx.CLOSE_BOX|wx.CAPTION)<o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US">if __name__==&quot;__main__&quot;:<o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>app=wx.PySimpleApp()<o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>frame=StyleFrame()<o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>frame.Show(True)<o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>app.MainLoop();<o:p></o:p></span></strong></p>
</td>
</tr>
</tbody>
</table>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US"><o:p>&nbsp;</o:p></span></strong></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span style="font-family: 宋体;">窗口的成员函数</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span lang="EN-US" style=""><o:p>&nbsp;</o:p></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span lang="EN-US" style=""><span style="">&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体;">前面的章节我们讲了窗口的各种属性，目前看来一进足够了。下面我们来看看窗口有哪些成员函数。前面已经讲过了一个构造函数，下面看看还有哪些构造函数。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US">void</span></strong><span lang="EN-US"> <strong>Centre</strong>(<strong>int</strong><em> direction = wxBOTH</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">这个函数用于定义窗口居中，其中</span><span lang="EN-US" style="">direction</span><span style="font-family: 宋体;">参数有三个选项</span><tt><span lang="EN-US" style="font-size: 12pt;">wxHORIZONTAL</span></tt><span lang="EN-US">, </span><tt><span lang="EN-US" style="font-size: 12pt;">wxVERTICAL</span></tt><span lang="EN-US"> </span><span style="font-family: 宋体;">或者</span> <tt><span lang="EN-US" style="font-size: 12pt;">wxBOTH</span></tt><tt><span style="font-size: 12pt;">。顾名思义，第一个时水平居中，第二个时垂直居中，最后一个是水平和垂直居中。<span lang="EN-US"><o:p></o:p></span></span></tt></p>
<p><strong><span lang="EN-US">bool</span></strong><span lang="EN-US"> <strong>Create</strong>(<strong>wxWindow* </strong><em>parent</em>, <strong>wxWindowID </strong><em>id</em>, <strong>const wxString&amp; </strong><em>title</em>, <strong>const wxPoint&amp;</strong><em> pos = wxDefaultPosition</em>, <strong>const wxSize&amp;</strong><em> size = wxDefaultSize</em>, <strong>long</strong><em> style = wxDEFAULT_FRAME_STYLE</em>, <strong>const wxString&amp; </strong><em>name = &quot;frame&quot;</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">这个函数用于动态创建窗口，其中的参数和构造函数相同，这里就不讲了。</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US">virtual wxStatusBar*</span></strong><span lang="EN-US"> <strong>CreateStatusBar</strong>(<strong>int</strong><em> number = 1</em>, <strong>long</strong><em> style = 0</em>, <strong>wxWindowID</strong><em> id = -1</em>, <strong>const wxString&amp;</strong><em> name = &quot;statusBar&quot;</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">前面我们说过，一般的窗口都会有一个状态条，尤其是主窗口，中国方法就是用于创建状态条的，这里先不细讲，在后面专门讲解状态条的部分将详细描述。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
<p><strong><span lang="EN-US">virtual wxToolBar*</span></strong><span lang="EN-US"> <strong>CreateToolBar</strong>(<strong>long</strong><em> style = wxNO_BORDER | wxTB_HORIZONTAL</em>, <strong>wxWindowID</strong><em> id = -1</em>, <strong>const wxString&amp;</strong><em> name = &quot;toolBar&quot;</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">每个窗口尤其是主窗口一般都会有一个工具栏，上面放一些快捷按钮等，这个方法用于创建工具条。</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US">wxMenuBar*</span></strong><span lang="EN-US"> <strong>GetMenuBar</strong>() <strong>const<o:p></o:p></strong></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">获得菜单对象的方法。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US">wxStatusBar*</span></strong><span lang="EN-US"> <strong>GetStatusBar</strong>() <strong>const<o:p></o:p></strong></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">获得状态条对象。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US">wxToolBar*</span></strong><span lang="EN-US"> <strong>GetToolBar</strong>() <strong>const<o:p></o:p></strong></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">获得工具栏对象的方法。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><strong><span lang="EN-US">void</span></strong><span lang="EN-US"> <strong>ProcessCommand</strong>(<strong>int </strong><em>id</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">模拟菜单命令的方法，其中的</span><span lang="EN-US" style="">id</span><span style="font-family: 宋体;">参数为</span><span lang="EN-US" style="">Menu</span><span style="font-family: 宋体;">对象的</span><span lang="EN-US" style="">ID</span><span style="font-family: 宋体;">属性。</span><span lang="EN-US" style=""><o:p></o:p></span></p>
<p><strong><span lang="EN-US">void</span></strong><span lang="EN-US"> <strong>SetMenuBar</strong>(<strong>wxMenuBar* </strong><em>menuBar</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">创建菜单对象的方法，其参数为</span><span lang="EN-US">wxMenuBar</span><span style="font-family: 宋体;">对象。</span></p>
<p><strong><span lang="EN-US">void</span></strong><span lang="EN-US"> <strong>SetStatusBar</strong>(<strong>wxStatusBar*</strong><em> statusBar</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">设置状态条对象，其参数为</span><span lang="EN-US">wxStatusBar</span><span style="font-family: 宋体;">对象。</span></p>
<p><strong><span lang="EN-US">virtual void</span></strong><span lang="EN-US"> <strong>SetStatusText</strong>(<strong>const wxString&amp; </strong><em>text</em>, <strong>int</strong><em> number = 0</em>)</span></p>
<p>设置状态条的文字。<span lang="EN-US"><br /> <strong>virtual void</strong> <strong>SetStatusWidths</strong>(<strong>int</strong><em> n</em>, <strong>int *</strong><em>widths</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">设置状态条文字的宽度。</span></p>
<p><strong><span lang="EN-US">void</span></strong><span lang="EN-US"> <strong>SetToolBar</strong>(<strong>wxToolBar*</strong><em> toolBar</em>)</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">设置工具栏对象，其参数为</span><span lang="EN-US">wxToolBar</span><span style="font-family: 宋体;">对象。</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">示例代码：</span></p>
<table cellspacing="0" cellpadding="0" border="1" style="border: medium none ; border-collapse: collapse;" class="MsoTableGrid">
<tbody>
<tr style="">
<td width="568" valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 426.1pt;">
<p class="MsoNormal"><span style="font-family: 宋体;">包含工具栏、菜单和状态条的窗口</span></p>
</td>
</tr>
<tr style="">
<td width="568" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 426.1pt;">
<p class="MsoNormal"><span lang="EN-US">import wx</span></p>
<p class="MsoNormal"><span lang="EN-US">ID_New =wx.NewId()</span></p>
<p class="MsoNormal"><span lang="EN-US">class StyleFrame(wx.Frame):</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>def __init__(self):</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>wx.Frame.__init__(self,None,-1,&quot;This is a style   fram&quot;,size=(400,300),style=wx.SYSTEM_MENU|wx.MINIMIZE_BOX|wx.CLOSE_BOX|wx.CAPTION)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>menu=wx.Menu()</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>menu.Append(ID_New,&quot;&amp;New&quot;)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>menubar=wx.MenuBar()</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>menubar.Append(menu,&quot;&amp;File&quot;)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>self.SetMenuBar(menubar)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>self.CreateStatusBar();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span><span style="">&nbsp;&nbsp;&nbsp;&nbsp;</span>tb = self.CreateToolBar(   wx.TB_HORIZONTAL</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|   wx.NO_BORDER</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>| wx.TB_FLAT</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>| wx.TB_TEXT</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>tsize = (16,16)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>new_bmp =<span style="">&nbsp;   </span>wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_TOOLBAR, tsize)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>tb.AddSimpleTool(10, new_bmp, &quot;New&quot;, &quot;Long help for   &#8216;New&#8217;&quot;)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span></span></p>
<p class="MsoNormal"><span lang="EN-US">if __name__==&quot;__main__&quot;:</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>app=wx.PySimpleApp()</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>frame=StyleFrame()</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>frame.Show(True)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>frame.Center()</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;   </span>app.MainLoop();</span></p>
</td>
</tr>
</tbody>
</table>
<p style="margin-left: 18pt;" class="MsoNormal"><span style="font-family: 宋体;">好了。今天就讲到这里。基本上所有有关窗口的属性和方法都介绍完了，当然还有</span><span lang="EN-US">MDI</span><span style="font-family: 宋体;">窗口不过没什么大的区别，在以后的例子中我将逐步对其进行介绍。</span></p>
<p style="margin-left: 18pt;" class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/yahoo163/archive/2006/12/03/1089497.aspx/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

