﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-天空是蓝色的</title><link>http://www.blogjava.net/bluesky/</link><description>做好软件为中国
#gcc -c helloworld.c -o helloworld.o //编译目标文件
#gcc helloworld.o -o helloworld //编译成可执行exe
#helloworld //运行exe</description><language>zh-cn</language><lastBuildDate>Sat, 17 May 2008 07:58:53 GMT</lastBuildDate><pubDate>Sat, 17 May 2008 07:58:53 GMT</pubDate><ttl>60</ttl><item><title>Extension Tapestry4`s restart service to clear my login cookies</title><link>http://www.blogjava.net/bluesky/archive/2008/03/24/188261.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Mon, 24 Mar 2008 07:34:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2008/03/24/188261.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/188261.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2008/03/24/188261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/188261.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/188261.html</trackback:ping><description><![CDATA[<p>接上篇,自定义一个logout service 把我的login cookies 清楚掉
<p>Tapestry .java
<p>package common.tapestry;
<p>public final&nbsp; class Tapestry {<br />
&nbsp; public static final String LOGOUT_SERVICE = "logout";<br />
}
<p>LogoutService.java<br />
package common.tapestry.engine;
<p>import java.io.IOException;
<p>import org.apache.tapestry.IRequestCycle;<br />
import org.apache.tapestry.engine.RestartService;
<p>import common.tapestry.Tapestry;
<p>public class LogoutService extends RestartService {<br />
&nbsp;private LoginCookiesManager loginCookiesManager;
<p><br />
&nbsp;public void setLoginCookiesManager(<br />
&nbsp;&nbsp; LoginCookiesManager loginCookiesManager) {<br />
&nbsp; this.loginCookiesManager = loginCookiesManager;<br />
&nbsp;}
<p>&nbsp;public void service(IRequestCycle cycle) throws IOException {<br />
&nbsp; loginCookiesManager.removeCookies();<br />
&nbsp; super.service(cycle);<br />
&nbsp;}
<p>&nbsp;public String getName() {<br />
&nbsp; return Tapestry.LOGOUT_SERVICE;<br />
&nbsp;}<br />
}
<p>hivemodule.xml<br />
&lt;?xml version="1.0"?&gt;<br />
&lt;module id="common.tapestry" version="1.0.0"&gt;
<p>&nbsp;&lt;!-- extends tapestry RestartService and clear the login cookies info--&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;service-point id="LogoutService" interface="org.apache.tapestry.engine.IEngineService"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;invoke-factory&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;construct class="common.tapestry.engine.LogoutService"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;set-service property="request" service-id="tapestry.globals.HttpServletRequest" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-service property="response" service-id="tapestry.globals.HttpServletResponse" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-object property="servletPath" value="app-property:org.apache.tapestry.servlet-path" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-object property="linkFactory" value="infrastructure:linkFactory" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-object property="loginCookiesManager" value="service:common.tapestry.LoginCookiesManager"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/construct&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/invoke-factory&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/service-point&gt;
<p>&nbsp;&nbsp;&nbsp; &lt;contribution configuration-id="tapestry.services.ApplicationServices"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;service name="logout" object="service:common.tapestry.LogoutService" /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/contribution&gt;
<p>&lt;/module&gt;
<p>in your Pages<br />
&lt;a jwcid="@ServiceLink" href="#" service="ognl:@common.tapestry.Tapestry@LOGOUT_SERVICE" target="_top"&gt;退出&lt;/a&gt;<br />
<br />
系原创<br />
作者其他blog&nbsp; <a href="http://oxyc.spaces.live.com">http://oxyc.spaces.live.com</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://hiok.blog.sohu.com">http://hiok.blog.sohu.com</a> <br />
<br />
</p>
<img src ="http://www.blogjava.net/bluesky/aggbug/188261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2008-03-24 15:34 <a href="http://www.blogjava.net/bluesky/archive/2008/03/24/188261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How to use cookies in tapestry4? my Tapestry4.1.5`LoginCookiesManagerImpl</title><link>http://www.blogjava.net/bluesky/archive/2008/03/24/188254.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Mon, 24 Mar 2008 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2008/03/24/188254.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/188254.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2008/03/24/188254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/188254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/188254.html</trackback:ping><description><![CDATA[<p>How to use cookies in tapestry4? my Tapestry4.1.5`LoginCookiesManagerImpl
<p>思路<br />
首先BasePage是需要登陆的 protected ,<br />
BasePage实现org.apache.tapestry.event.PageValidateListener方法,判断asm对象Visit是否已经登陆<br />
如没visit==null,去cookies找回用户名和密码从cycle中获得Login页面<br />
Login页面实现common.tapestry.IConstructVisit接口。LoginPage登陆时保存用户名密码到cookies中,并对cookies的值加密,<br />
cookies的key是baseUrl+key,取回时对cookies值解密,加密解密的password放到Application的meta信息中
<p>实现代码如下<br />
抽象接口LoginCookiesManager
<p>package common.tapestry.engine;
<p>public interface LoginCookiesManager {<br />
&nbsp;<br />
&nbsp;String APPLICATION_META_KEY_DEFAULT_COOKIES_IS_ENCRYPTION = "common.tapestry.default-cookies-encrypt";//是否需要加密,默认加密<br />
&nbsp;String APPLICATION_META_KEY_DEFAULT_COOKIES_ENCRYPTION_KEY = "common.tapestry.default-cookies-encryption-key";//加密的password
<p>&nbsp;public static final String COOKIES_KEY_LOGIN_USERNAME = "USERNAME";<br />
&nbsp;public static final String COOKIES_KEY_LOGIN_PASSWORD = "PASSWORD";<br />
&nbsp;<br />
&nbsp;/**<br />
&nbsp; * 将用户名和密码写入cookies<br />
&nbsp; * @param username<br />
&nbsp; * @param password<br />
&nbsp; * @param maxAge<br />
&nbsp; */<br />
&nbsp;void writeCookies(String username,String password,int maxAge);<br />
&nbsp;/**<br />
&nbsp; * 清除用户名和密码cookies<br />
&nbsp; */<br />
&nbsp;void removeCookies();<br />
&nbsp;/**<br />
&nbsp; * 从cookies中获得用户名<br />
&nbsp; * @return<br />
&nbsp; */<br />
&nbsp;String getUsername();<br />
&nbsp;/**<br />
&nbsp; * 从cookies中获得密码<br />
&nbsp; * @return<br />
&nbsp; */<br />
&nbsp;String getPassword();<br />
}
<p>LoginCookiesManagerImpl 实现
<p>package common.tapestry.engine;
<p>import org.apache.hivemind.ApplicationRuntimeException;<br />
import org.apache.tapestry.engine.IPropertySource;<br />
import org.apache.tapestry.services.AbsoluteURLBuilder;<br />
import org.apache.tapestry.services.CookieSource;<br />
import org.apache.tapestry.web.WebRequest;<br />
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;<br />
import org.jasypt.exceptions.EncryptionOperationNotPossibleException;
<p>public class LoginCookiesManagerImpl implements LoginCookiesManager {<br />
&nbsp;private static StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();<br />
&nbsp;private IPropertySource applicationPropertySource;<br />
&nbsp;private CookieSource cookieSource;<br />
&nbsp;private WebRequest request;<br />
&nbsp;private AbsoluteURLBuilder absoluteURLBuilder;
<p>&nbsp;public void setApplicationPropertySource(<br />
&nbsp;&nbsp;&nbsp;IPropertySource applicationPropertySource) {<br />
&nbsp;&nbsp;this.applicationPropertySource = applicationPropertySource;<br />
&nbsp;&nbsp;String encrypKey = getCookiesEncryptionKey();<br />
&nbsp;&nbsp;standardPBEStringEncryptor.setPassword(encrypKey);<br />
&nbsp;}
<p>&nbsp;private String decrypt(String value) {<br />
&nbsp;&nbsp;String tmp = value;<br />
&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;tmp = standardPBEStringEncryptor.decrypt(value);<br />
&nbsp;&nbsp;} catch (EncryptionOperationNotPossibleException e) {<br />
&nbsp;&nbsp;&nbsp;throw new ApplicationRuntimeException("please clear your cookies");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return tmp;<br />
&nbsp;}
<p>&nbsp;private String encrypt(String value) {<br />
&nbsp;&nbsp;return standardPBEStringEncryptor.encrypt(value);<br />
&nbsp;}
<p>&nbsp;private String getCookiesEncryptionKey() {<br />
&nbsp;&nbsp;String temp = applicationPropertySource<br />
&nbsp;&nbsp;&nbsp;&nbsp;.getPropertyValue(APPLICATION_META_KEY_DEFAULT_COOKIES_ENCRYPTION_KEY);<br />
&nbsp;&nbsp;return (temp != null) ? temp : "crypassword";<br />
&nbsp;}
<p>&nbsp;private boolean isCookiesEncryption() {<br />
&nbsp;&nbsp;String temp = applicationPropertySource<br />
&nbsp;&nbsp;&nbsp;&nbsp;.getPropertyValue(APPLICATION_META_KEY_DEFAULT_COOKIES_IS_ENCRYPTION);<br />
&nbsp;&nbsp;return (temp != null) ? Boolean.valueOf(temp).booleanValue() : true;<br />
&nbsp;}
<p>&nbsp;public void removeCookies() {<br />
&nbsp;&nbsp;String cookiesKeyLogin_username = generateApplicationCookiesKey_Login__Username();<br />
&nbsp;&nbsp;String cookiesKeyLogin_password = generateApplicationCookiesKey_Login__Password();<br />
&nbsp;&nbsp;cookieSource.removeCookieValue(cookiesKeyLogin_username);<br />
&nbsp;&nbsp;cookieSource.removeCookieValue(cookiesKeyLogin_password);<br />
&nbsp;}
<p>&nbsp;public void writeCookies(String username, String password, int maxAge) {<br />
&nbsp;&nbsp;writeCookiesValue_Login__Username(username, maxAge);<br />
&nbsp;&nbsp;writeCookiesValue_Login__Password(password, maxAge);<br />
&nbsp;}
<p>&nbsp;public String getUsername() {<br />
&nbsp;&nbsp;String value = cookieSource<br />
&nbsp;&nbsp;&nbsp;&nbsp;.readCookieValue(generateApplicationCookiesKey_Login__Username());<br />
&nbsp;&nbsp;if (isCookiesEncryption()) {<br />
&nbsp;&nbsp;&nbsp;value = decrypt(value);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return value;<br />
&nbsp;}
<p>&nbsp;public String getPassword() {<br />
&nbsp;&nbsp;String value = cookieSource<br />
&nbsp;&nbsp;&nbsp;&nbsp;.readCookieValue(generateApplicationCookiesKey_Login__Password());<br />
&nbsp;&nbsp;if (isCookiesEncryption()) {<br />
&nbsp;&nbsp;&nbsp;value = decrypt(value);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return value;<br />
&nbsp;}
<p>&nbsp;private void writeCookiesValue_Login__Username(String username, int maxAge) {<br />
&nbsp;&nbsp;String key = generateApplicationCookiesKey_Login__Username();<br />
&nbsp;&nbsp;String value = username;<br />
&nbsp;&nbsp;if (isCookiesEncryption()) {<br />
&nbsp;&nbsp;&nbsp;value = encrypt(username);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;cookieSource.writeCookieValue(key, value, maxAge);<br />
&nbsp;}
<p>&nbsp;private void writeCookiesValue_Login__Password(String password, int maxAge) {<br />
&nbsp;&nbsp;String key = generateApplicationCookiesKey_Login__Password();<br />
&nbsp;&nbsp;String value = password;<br />
&nbsp;&nbsp;if (isCookiesEncryption()) {<br />
&nbsp;&nbsp;&nbsp;value = encrypt(password);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;cookieSource.writeCookieValue(key, value, maxAge);<br />
&nbsp;}
<p>&nbsp;private String generateApplicationCookiesKey_Login__Username() {<br />
&nbsp;&nbsp;return generateApplicationCookiesKey(COOKIES_KEY_LOGIN_USERNAME);<br />
&nbsp;}
<p>&nbsp;private String generateApplicationCookiesKey_Login__Password() {<br />
&nbsp;&nbsp;return generateApplicationCookiesKey(COOKIES_KEY_LOGIN_PASSWORD);<br />
&nbsp;}
<p>&nbsp;private String generateApplicationCookiesKey(String key) {<br />
&nbsp;&nbsp;String contextPath = request.getContextPath();<br />
&nbsp;&nbsp;return absoluteURLBuilder.constructURL(contextPath + "/") + key;<br />
&nbsp;}
<p>&nbsp;public void setCookieSource(CookieSource cookieSource) {<br />
&nbsp;&nbsp;this.cookieSource = cookieSource;<br />
&nbsp;}
<p>&nbsp;public void setRequest(WebRequest request) {<br />
&nbsp;&nbsp;this.request = request;<br />
&nbsp;}
<p>&nbsp;public void setAbsoluteURLBuilder(AbsoluteURLBuilder absoluteURLBuilder) {<br />
&nbsp;&nbsp;this.absoluteURLBuilder = absoluteURLBuilder;<br />
&nbsp;}
<p>}
<p>hivemodule.xml配置
<p>&lt;?xml version="1.0"?&gt;<br />
&lt;module id="common.tapestry" version="1.0.0"&gt;<br />
&lt;service-point id="LoginCookiesManager" interface="common.tapestry.engine.LoginCookiesManager"&gt;<br />
&lt;invoke-factory&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;construct class="common.tapestry.engine.LoginCookiesManagerImpl" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-object property="cookieSource" value="infrastructure:cookieSource"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-service property="absoluteURLBuilder" service-id="tapestry.request.AbsoluteURLBuilder"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-service property="request" service-id="tapestry.globals.WebRequest"/&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-object property="applicationPropertySource" value="service:tapestry.props.ApplicationPropertySource"/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/construct&gt;<br />
&nbsp;&nbsp;&lt;/invoke-factory&gt;&nbsp;<br />
&lt;/service-point&gt;
<p>&lt;contribution configuration-id="tapestry.Infrastructure"&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;property name="loginCookiesManager" object="service:common.tapestry.LoginCookiesManager"/&gt;<br />
&lt;/contribution&gt;<br />
&lt;/module&gt;
<p>使用
<p>在BasePage中获得该service
<p>public LoginCookiesManager getLoginCookiesManager() {<br />
&nbsp;&nbsp;LoginCookiesManager svc = (LoginCookiesManager) getRequestCycle().getInfrastructure().getProperty("loginCookiesManager");<br />
&nbsp;&nbsp;return svc;<br />
&nbsp;}<br />
&nbsp;<br />
/**<br />
&nbsp; * 判断用户是否已经登陆<br />
&nbsp; * <br />
&nbsp; * @return<br />
&nbsp; */<br />
&nbsp;private boolean isUserLoggedIn() {<br />
&nbsp;&nbsp;Object asmVisit = this.getRequestCycle().getInfrastructure().getApplicationStateManager().get(ASM_VISIT);
<p>&nbsp;&nbsp;if (!(asmVisit instanceof IVisit)) {<br />
&nbsp;&nbsp;&nbsp;throw new ApplicationRuntimeException(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"The visit class must implements " + IVisit.class);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;IVisit visit = (IVisit) asmVisit;<br />
&nbsp;&nbsp;if (visit == null || (visit != null &amp;&amp; !visit.isLoggedIn())) {<br />
&nbsp;&nbsp;&nbsp;IPage loginPage = getRequestCycle().getPage(PAGE_LOGIN);<br />
&nbsp;&nbsp;&nbsp;if (loginPage instanceof IConstructVisit) {<br />
&nbsp;&nbsp;&nbsp; //从cookies中找回用户名和密码<br />
&nbsp;&nbsp;&nbsp;&nbsp;String cookiesLoginUsername = getLoginCookiesManager().getUsername();<br />
&nbsp;&nbsp;&nbsp;&nbsp;String cookiesLoginPassword = getLoginCookiesManager().getPassword();<br />
&nbsp;&nbsp;&nbsp;&nbsp;IConstructVisit constructVisit = (IConstructVisit) loginPage;<br />
&nbsp;&nbsp;&nbsp;&nbsp;visit = constructVisit.doConstructVisit(this.getRequestCycle(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookiesLoginUsername, cookiesLoginPassword);<br />
&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;throw new ApplicationRuntimeException("The " + PAGE_LOGIN<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ " class must implements " + IConstructVisit.class);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;if (visit == null)<br />
&nbsp;&nbsp;&nbsp;return Boolean.FALSE.booleanValue();<br />
&nbsp;&nbsp;return visit.isLoggedIn();<br />
&nbsp;}&nbsp;
<p><br />
Login类必须实现如下接口<br />
package common.tapestry;
<p>import org.apache.tapestry.IRequestCycle;
<p>public interface IConstructVisit {<br />
&nbsp;public IVisit doConstructVisit(IRequestCycle cycle, String username,String password);<br />
}
<p>&nbsp;<br />
系原创<br />
其他blog地址&nbsp; <a href="http://oxyc.spaces.live.com/">http://oxyc.spaces.live.com/</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://hiok.blog.sohu.com">http://hiok.blog.sohu.com</a></p>
<img src ="http://www.blogjava.net/bluesky/aggbug/188254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2008-03-24 15:26 <a href="http://www.blogjava.net/bluesky/archive/2008/03/24/188254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CheckBox选中所有的项[JavaScript]</title><link>http://www.blogjava.net/bluesky/archive/2006/06/23/54751.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Fri, 23 Jun 2006 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/06/23/54751.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/54751.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/06/23/54751.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/54751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/54751.html</trackback:ping><description><![CDATA[
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;<br />&lt;/title&gt;<br />&lt;body&gt;<br />&lt;form name="Form1"&gt;</p>
		<p>&lt;input name="allbox" type="checkbox" onClick="TA();" title="选中或清除选中所有的项目" tabindex="105"&gt;选中或清除选中所有的项目</p>
		<p>&lt;br/&gt;<br />&lt;span class="X"&gt;<br />&lt;input type="checkbox" name="ABC" class="A" onClick="TTA(this);"&gt;清明时节&lt;/span&gt;<br />&lt;br/&gt;<br />&lt;span class="X"&gt;<br />&lt;input type="checkbox" name="DEF" class="A" onClick="TTA(this);"&gt;长江水啊&lt;/span&gt;<br />&lt;br/&gt;<br />&lt;span class="X"&gt;<br />&lt;input type="checkbox" name="GHL" class="A" onClick="TTA(this);"&gt;嘿嘿测试&lt;/span&gt;<br />&lt;br/&gt;<br />&lt;/form&gt;</p>
		<p>&lt;script language="javascript"&gt;<br />var frm = document.Form1;<br />&lt;/script&gt;</p>
		<p>
				<br />&lt;script language="JavaScript"&gt;</p>
		<p>function TA(isO,noHL){<br /> var trk = 0;<br /> <br /> <br /> for(var i=0;i&lt;frm.elements.length;i++){<br />  var e=frm.elements[i];</p>
		<p>  if((e.name !='allbox') &amp;&amp; (e.type == 'checkbox')){<br />    e.checked = frm.allbox.checked;<br />   if (frm.allbox.checked){<br />    //e.parentElement.className = "H"; //.parentElement不兼容firefox浏览器 <br />    e.parentNode.className = "H";//调用设置父节点元素class改变背景色<br />   <br />   }else{<br />    e.parentNode.className = "X";//调用设置父节点元素class改变背景色<br />   }<br />  }<br /> }<br />}</p>
		<p>function TTA(CB,noHL){<br /> if (CB.checked){<br />  CB.parentNode.className = "H";<br /> }else{<br />  CB.parentNode.className = "X";<br /> }</p>
		<p> </p>
		<p> var TB=TO=0;<br /> for (var i=0;i&lt;frm.elements.length;i++){<br />  var e=frm.elements[i];<br />  if ((e.name != 'allbox') &amp;&amp; (e.type=='checkbox')){<br />   TB++;<br />  if (e.checked)<br />   TO++;<br />  }<br /> }<br /> frm.allbox.checked=(TO==TB)?true:false;<br /> //如果不是所有项被选中则allbox设定未被选中<br />}</p>
		<p>
				<br />&lt;/script&gt;</p>
		<p>&lt;style&gt;<br />.H{<br /> background: #ADD8E6<br />}<br />.X{<br /> background: #FFFFFF<br />}</p>
		<p>&lt;/style&gt;</p>
		<p>
				<br />&lt;/body&gt;&lt;/html&gt;</p>
<img src ="http://www.blogjava.net/bluesky/aggbug/54751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-06-23 17:51 <a href="http://www.blogjava.net/bluesky/archive/2006/06/23/54751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>记一段代码[PHP]迭代读取数据库</title><link>http://www.blogjava.net/bluesky/archive/2006/06/23/54594.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Thu, 22 Jun 2006 16:09:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/06/23/54594.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/54594.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/06/23/54594.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/54594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/54594.html</trackback:ping><description><![CDATA[
		<p>
				<br />&lt;style&gt;</p>
		<p>input, select {<br /> font-size: 14px; <br /> color: #333333; <br /> padding-left:3px; <br /> background:#f6f6f6; <br /> border: #CCCCCC 1px solid;}<br />&lt;/style&gt;<br />&lt;?php<br />require_once dirname(__FILE__) ."/headers.php";</p>
		<p>$i = 0;<br />  </p>
		<p>function category($category_parent_timestamp){<br />   global $db;<br />   global $i;<br />   $result = $db-&gt;get("{category_parent_timestamp} == " . $category_parent_timestamp,null,"categories",false,"category_time","desc"); <br />   sort($result);<br />  <br />   for($index=0;$index&lt;count($result);$index++){          <br />     echo "&lt;option&gt;";<br />     for($x=0;$x&lt;$i;$x++){<br />       echo "--";<br />      }      <br />     echo $result[$index]['category_title'];<br />     echo "&amp;nbsp;";  <br />     $sub = $db-&gt;get("{category_parent_timestamp} == " .$result[$index]['category_timestamp'],null,"categories",false,"category_time","desc"); <br />     if(count($sub)!=0){<br />       $i++;<br />       category($result[$index]['category_timestamp']);//迭代      <br />       $i--;<br />     }<br />     echo "&lt;/option&gt;";<br />   }<br />   <br />}    <br /> <br />echo "&lt;select&gt;";<br />category("0"); <br />echo"&lt;/select&gt;";<br />?&gt;</p>
<img src ="http://www.blogjava.net/bluesky/aggbug/54594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-06-23 00:09 <a href="http://www.blogjava.net/bluesky/archive/2006/06/23/54594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通讯名词解释</title><link>http://www.blogjava.net/bluesky/archive/2006/06/09/51613.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Fri, 09 Jun 2006 01:42:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/06/09/51613.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/51613.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/06/09/51613.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/51613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/51613.html</trackback:ping><description><![CDATA[<p>&nbsp; WCDMA：指直接扩频的码分多址复用方式，一种适用于数字蜂窝移动通信的新技术。 <br />
&nbsp; CDMA2000：指多载波的码分多址复用方式，一种适用于数字蜂窝移动通信的新技术。 <br />
&nbsp; GSM： 指一种蜂窝数字移动通信系统，起源于泛欧标准，是目前移动通信应用最多的技术体制。 <br />
&nbsp; ATM： 异步传输模式，ATM交换机是未来宽带综合业务数据网中的核心设备 <br />
&nbsp; CATV：指以有线的形式传输、分配电视、调频信号及其它信息给用户的系统。 <br />
&nbsp; IP：一种互联网协议，是分组的非面向连接的数据传输协议 <br />
&nbsp; STP： 信令转换点，在信令网中用于转接信令 <br />
&nbsp; SDH： 是一套可进行同步数字传输、复用和交叉连接的标准化数字信号传输体制 <br />
&nbsp; DWDM： 密集波分复用，指在光纤的同一窗口中信道间隔较小的光波分复用。 <br />
&nbsp; 3G：指第三代移动网络，在用户高速移动状态时的峰值速率可达144Kbps，处于步行状态时峰值速率可达384 Kpbs，处于静止状态时峰值速率可达2 Mbps，不过有些初始网络建设仅支持64 Kbps。ITU通过其IMT-2000项目和一些关键标准组织如3GPP和3GPP2来协调3G标准。&nbsp; <br />
&nbsp; ASIC：指专用集成电路，专门设计以执行一个或多个特定功能的集成电路。&nbsp; <br />
&nbsp; ATM：指异步传输模式，基于固定大小分组数据传输的网络技术。分组长度短小固定，使ATM设备能在同一网络中传输视频、话音和数据，防止任何一种数据信号霸占整个线路。 <br />
&nbsp; 骨干网：指网络中承载高密度大流量信号的组成部分。交换网络的骨干网一般包括主干线路由器和交换机，数据网络的骨干网一般包括本地环间的主链路。&nbsp; <br />
&nbsp; 宽带：指描述一个系统覆盖很宽的频率范围的词汇，比话音信道宽很多，亦称「宽频」。 <br />
&nbsp; BWA：指宽带无线接入，一种宽带点对多点无线通信业务，运行的频带在2GHz到60GHz之间，因应「最后一里」话音、数据和视频业务等高速业务进行优化，作为连接用户和运营商本地交换机的可选择的另一种进网技术。&nbsp; <br />
&nbsp; CDMA：指码分多址，是2G移动通信技术标准之一，属于扩频技术标准，对所有的话音和数据位分配一个伪随机（PN）码，通过扰码方式在空中发送编码话音，并按照原始格式对话音进行译码。对每个发射机分配一个独特的相关码，可以使多个对话共享同一频谱。&nbsp; <br />
&nbsp; CDMA2000 1x：指以CDMAOne标准提供增强话音容量的技术规格，峰值数据速率最高可达2 Mbps，相关的规格包括1xRTT（无线传输技术），1xEVDO（纯数据版）和1xEVDV（话音数据版）。&nbsp; <br />
&nbsp; DWDM：指密集波分复用系统，能够使一根光纤承载多个数据信道（或波长）。商用DWDM系统目前已经达到100个信道。&nbsp; <br />
&nbsp; DSL：指数字用户线，在本地环路或用户线上传送数字数据的技术，亦称xDSL，如ADSL、HDSL、VDSL、MDSL和RDSL。&nbsp; <br />
&nbsp; GPRS：指通用分组无线业务，一种ETSI GSM第2+阶段的数据分组无线接入技术规格，其无线接口支持共享媒介分组接入，而不同于GSM的专用信道拨号接入。GPRS是建设在已有的GSM网络架构之上，需要添加新的网络元素来连接核心网和公众分组网络。&nbsp; <br />
&nbsp; GSM：指起源于欧洲的一种全球蜂窝移动电话通信系统，已经在170多个国家建设网络，使用TDMA无线传播技术。&nbsp; <br />
&nbsp; NGN：指下一代网络，以数据分组为基础的网络，能够提供多种业务，利用多种宽带传送技术，支持用户无限制地接入到不同服务提供商，能够支持普通的移动方式，不间断的向用户提供业务。&nbsp; <br />
&nbsp; PCS：指个人通信系统，为本集团基于PHS技术的无线本地接入系统，目前被中国电信和中国网通采用。&nbsp; <br />
&nbsp; PSTN：指公共交换电话网，沿用已久的国际电话系统，利用铜缆通过电路交换连接传送话音和数据。 路由器：指一种通信设备，可在网络中选择数据的传送路径。&nbsp; <br />
&nbsp; 软交换：指软件交换的缩略语，是一种应用协议接口，用于连接传统的PSTN网和IP网络，并对包括话音、传真、数据和视频的流量进行管理。&nbsp; <br />
&nbsp; TD-SCDMA：指时分同步码分多址，是中国倡导的第三代移动通信技术，支持话音和数据。&nbsp; <br />
&nbsp; WCDMA：指宽带CDMA，是3G数字移动网络的UMTS标准，采用CDMA技术，提供增强的话音容量，理论上数据速率的峰值可到2 Mbps。&nbsp; <br />
&nbsp; 无线本地接入系统：指提供无线接入到固网的设备，支持局部范围内的有限移动。无线本地接入系统的命名根据不同生产厂商或采用的技术不同而有不同命名。如本集团称自身的无线本地接入系统为PCS设备（基于PHS技术而开发），但其它供货商可能称类似设备为PHS或者PAS设备。此外，无线本地接入系统还可以基于其它技术而开发，如CDMA450 WLL和SCDMA。 <br />
</p>
<img src ="http://www.blogjava.net/bluesky/aggbug/51613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-06-09 09:42 <a href="http://www.blogjava.net/bluesky/archive/2006/06/09/51613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>烦心事儿</title><link>http://www.blogjava.net/bluesky/archive/2006/06/06/50842.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Tue, 06 Jun 2006 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/06/06/50842.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/50842.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/06/06/50842.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/50842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/50842.html</trackback:ping><description><![CDATA[今天来上班的路上,刚下公交车,乌云密布就下开雨了.<br /><br />我新买的伞被风吹坏了两个撑,新伞啊,花了俺不少银子,买的还是质量挺好的伞,心疼.<br /><br />自己用东西太废了吧,不懂珍惜.<br /><br />小时候父母经常为这说我,说我用东西太废,什么笔啊,橡皮啊,本子啊,用不了多久就报销了.<br /><br />我的伞,回去修理一下吧.<img src ="http://www.blogjava.net/bluesky/aggbug/50842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-06-06 17:52 <a href="http://www.blogjava.net/bluesky/archive/2006/06/06/50842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++libs </title><link>http://www.blogjava.net/bluesky/archive/2006/06/01/49530.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Thu, 01 Jun 2006 04:48:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/06/01/49530.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/49530.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/06/01/49530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/49530.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/49530.html</trackback:ping><description><![CDATA[[c++libs]<a href="http://www.libsdl.org/"><br />http://www.libsdl.org/</a><br /><a href="http://www.wxwidgets.org/">http://www.wxwidgets.org/</a><br /><a href="http://www.fltk.org/">http://www.fltk.org/</a><br /><a href="http://www.boost.org/">http://www.boost.org/</a><br /><a href="http://www.zlib.net/">http://www.zlib.net/</a><br /><a href="http://expat.sourceforge.net/">http://expat.sourceforge.net/</a><br /><a href="http://www.eskimo.com/~weidai/cryptlib.html">http://www.eskimo.com/~weidai/cryptlib.html</a><br /><a href="http://glut.org/">http://glut.org/</a><br /><a href="http://gborg.postgresql.org/project/libpqxx/projdisplay.php">http://gborg.postgresql.org/project/libpqxx/projdisplay.php</a><br /><a href="http://www.sgi.com/tech/stl/">http://www.sgi.com/tech/stl/</a><br /><a href="http://stlport.org/">http://stlport.org/</a><br /><a href="http://sourceforge.net/projects/blitz/">http://sourceforge.net/projects/blitz/</a><br /><a href="http://www.cs.wustl.edu/~schmidt/ACE.html">http://www.cs.wustl.edu/~schmidt/ACE.html</a><br /><a href="http://www.sourceforge.net/projects/tinyxml">http://www.sourceforge.net/projects/tinyxml<br /></a><br /><br /><a href="http://www.tinybutstrong.com/">http://www.tinybutstrong.com/</a> [a php templates engine]<br /><img src ="http://www.blogjava.net/bluesky/aggbug/49530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-06-01 12:48 <a href="http://www.blogjava.net/bluesky/archive/2006/06/01/49530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>买不到6000元/㎡以下的房 政府发展商搏弈苦市民[zt]</title><link>http://www.blogjava.net/bluesky/archive/2006/06/01/49500.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Thu, 01 Jun 2006 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/06/01/49500.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/49500.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/06/01/49500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/49500.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/49500.html</trackback:ping><description><![CDATA[
		<a href="http://gz.eeju.com/secondhand/news/show_paper_10713.htm">http://gz.eeju.com/secondhand/news/show_paper_10713.htm</a>
		<br />
		<br />为什么政府明知住宅用地需求量大却不推出住宅用地呢？合富辉煌市场研究部首席分析师黎文江认为，因为政府考虑到开发商手中有大量住宅土地储备，希望开发商主动拿出来供应市场，而开发商感到2004年9月1日起政府开始严格控制土地出让，手上的土地显得珍贵无比，每一寸土地都要获取最大利润，因此用来开发中高档产品，而不愿开发中低档住宅，政府和开发商之间关于土地的搏弈直接导致了住宅产品的结构严重失衡。“广州市政府手上有大量的土地储备”，某业内人士表示，金沙洲有8.26平方公里，琶洲有6平方公里，广州氮肥厂及周边有3平方公里，白云新城2.1平方公里，员村1平方公里，此外番禺、花都、南沙、萝岗等区土地资源丰富，这四个区成为广州土地供应的重点区域。 <br /><br /><br />　　政府还通过多种途径增加后续土地储备，例如：收回市中心的闲置土地；搬迁旧城区内的国有企业；撤销41个开发区释放1.8万公顷土地；处理金融机构拥有的抵债土地等等。可见政府手中的土地相当充足，只是推出的时间和频率有所控制，以求尽量提升市区稀缺土地的潜在价值，并引导开发商按政府的城市发展规划方向开发。 
<h2>买不到6000元/㎡以下的房 政府发展商搏弈苦市民</h2><img src ="http://www.blogjava.net/bluesky/aggbug/49500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-06-01 11:30 <a href="http://www.blogjava.net/bluesky/archive/2006/06/01/49500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]XFree86学习笔记</title><link>http://www.blogjava.net/bluesky/archive/2006/06/01/49459.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Thu, 01 Jun 2006 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/06/01/49459.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/49459.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/06/01/49459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/49459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/49459.html</trackback:ping><description><![CDATA[
		<p>XFree86学习笔记<br />整理：Jims of 肥肥世家<br />&lt;<a href="mailto:yjnet@21cn.com">yjnet@21cn.com</a>&gt;</p>
		<p>Copyright ? 2004 本文遵从GPL协议，欢迎转载、修改、散布。</p>
		<p>第一次发布时间:2004年8月14日</p>
		<p>
				<br />--------------------------------------------------------------------------------</p>
		<p>Table of Contents</p>
		<p>1. X window 介绍<br />1.1. X 简介<br />1.2. 版本<br />1.3. XFree86项目介绍<br />2. XFree86系统介绍<br />2.1. XFree86安装<br />2.2. XFree86配置<br />2.3. XFree86的文件系统<br />2.4. XFree86字体<br />2.5. 启动X11<br />2.5.1. 启动方法<br />2.5.2. 启用多用户会话<br />2.5.3. 终止X会话<br />3. X11客户程序常用选项<br />3.1. X程序常用选项<br />3.2. 使用客户程序资源<br />4. X window的网络应用<br />4.1. 远程会话<br />4.2. 远程桌面<br />4.3. 安全问题<br />5. X系统客户程序介绍<br />5.1. 环境设置命令<br />5.2. 小工具<br />6. X11多媒体客户程序介绍<br />7. 显示管理器<br />7.1. xdm的配置<br />8. 窗口管理器<br />8.1. WindowMaker<br />8.2. fvwm\fvwm2\fvwm95<br />8.3. enlightenment<br />8.4. mwm<br />8.5. twm<br />8.6. icewm<br />8.7. Sawfish<br />8.8. blackbox<br />9. 桌面环境<br />9.1. GNOMN<br />9.2. KDE<br />9.3. CDE<br />10. X web<br />List of Tables</p>
		<p>2.1. XFree86文件系统目录清单<br />3.1. X程序常用选项<br />Chapter 1. X window 介绍<br />Table of Contents</p>
		<p>1.1. X 简介<br />1.2. 版本<br />1.3. XFree86项目介绍<br />1.1. X 简介<br />X window系统是一个很复杂的网络图形界面系统，它的开发始于1984年，它被应用已有近20年。X也是一个协议，它定义程序(客户程序)如何与另一个在远程机器上运行的程序(服务器程序)交换信息。它最早是由数字设备公司(DEC)的Jim Gettys与麻省理工大学(MIT)的Ron Newman和Bob Scheifler共同开发的。当时DEC和MIT想共同开发一种分布式的计算环境，X系统就是他们研究成果的一部分，这项工作叫作雅典娜工程。现在X的管理机构是X 联盟(<a href="http://www.x.org">www.x.org</a>)。X系统由三部份组成，它们分别是X Server、Xclient和X协议。</p>
		<p>X Server是控制输入输出的程序，它是和底层硬件直接通信的。它接收X client程序的请求做建立窗口、绘制图形等工作。</p>
		<p>X client是基于X Server的客户程序，它请求X Server在指定的窗口进行各种操作。它不负责显示，只是给X Server发送一个请求，由服务器完成动作。</p>
		<p>X 协议是X Server和X Client之间沟通的语言。Xlib库能完成这种通信功能，所以可以基于它进行X client程序的开发。</p>
		<p>以下是X系统的几点优势：</p>
		<p>可移植性。X系统可移植到几乎所有的计算机图形系统下。</p>
		<p>标准化。X window系统提供一个标准的函数库和功能调用集合，抽象了硬件层功能，使程序开发更标准更快捷。</p>
		<p>网络化。它是基于网络的图形界面系统。</p>
		<p>模块化结构。能方便进行功能扩展。</p>
		<p>不嵌入操作系统中，适用于几乎所有的操作系统，如linux、solairs、windows等。</p>
		<p>1.2. 版本<br />1986年发布X10.4版</p>
		<p>1987年9月15日发布X11R1版(X11第一次修订版)。源程序有19MB，可在4种主要的操作系统下运行。 </p>
		<p>1988年发行第二修订版X11R2。该版提供了很多压缩的矢量字体，以及第三方软件商提供的软件工具。</p>
		<p>1991年8月29日发布了X11R5版。为X window系统增加了国际化功能。</p>
		<p>1994年4月21日，X11R6发布。这一版改进窗口管理、资源共享、会话管理等功能。</p>
		<p>1996年3月5日发布了X11R6.1版，支持16种操作系统，包括linux内核1.2.11。</p>
		<p>1996年12月23日发布了X11R6.3版，它是X联盟转换到TOG(开放工作组，一个非盈利机构)前最后的一个X版本。TOG由200个新成员和很多X联盟的原创成员组成。</p>
		<p>1998年1月4日，TOG发布了X11R6.4版。TOG工作组改变X 系统免费的许可证政策，如果从销售X系统中盈利，就须交纳年度注册费，价格是每5万个用户7500美元，随后又增加到至65000美元。由于新许可政策的实施，导致开源社区组成一个XFree86工程公司(一个非盈利的机构)开发了一个基于Intel PC平台的免费X系统XFree86。1998年9月TOG也放弃新许可政策，把X11R6.4版的许可恢复到旧的麻省理工的版本。</p>
		<p>2000年8月15日，X11R6.5.1发布。源文件容量扩充以144Mb，包含8100多个文件、600多种字体、345个手册页、20个程序库、70个图象和60个客户程序。现在最新的版本是X11R6.7.0，可以到<a href="http://www.x.org">http://www.x.org</a>下载。</p>
		<p>1.3. XFree86项目介绍<br />XFree86项目成立于1994年3月19日。最早的开发工作始于1992年，由一个开发小组完成，实现了基于Intel PC平台的X系统。1994年5月18日发布的XFree86 2.1版是第一个支持linxu的XFree86版本。2000年5月7日XFree86 4.0版发布，它是XFree86最重要的一个发布版，增加了很多功能。XFree86的意思是“提供X服务，它是自由的(free)，它是基于Intel的PC平台”。现在最新的XFree86版是4.4.0。可以到<a href="http://www.xfree86.org">http://www.xfree86.org</a>下载。基于windows平台也有X window系统，如：X-Win32、Extra!X、Exceed等。</p>
		<p>Chapter 2. XFree86系统介绍<br />Table of Contents</p>
		<p>2.1. XFree86安装<br />2.2. XFree86配置<br />2.3. XFree86的文件系统<br />2.4. XFree86字体<br />2.5. 启动X11<br />2.5.1. 启动方法<br />2.5.2. 启用多用户会话<br />2.5.3. 终止X会话<br />2.1. XFree86安装<br />安装软件与其它软件大同小异，这里就不详细介绍了。</p>
		<p>2.2. XFree86配置<br />在XFree86中的配置文件是XF86Config-4，下面介绍几种配置的工具：</p>
		<p>xf86config是一个基于文本的配置工具。在控制台运行该命令后按提示配置就可以了。</p>
		<p>reconfig用以把旧版的配置文件转换成4.0.1版的配置文件格式。</p>
		<p>可以用$ XFree86 -configure命令由系统自动生成一个叫XF86Config.new的配置文件，可基于这个文件再修改。最后用$ XFree86 -xf86config XF86Config.new进行测试。如果成功将出现一个带“X”的窗口。最后把正确的配置文件拷贝成/etc/X11/XF86Config-4。</p>
		<p>在XFree86 4.0.1后，还可通过xf86cfg这个图形化程序来进行配置。</p>
		<p>在各linux的发行版中，还包含有各自开发的配置工具，redhat有Xconfigurator；Mandrake 有DrakConf；SuSE 有SaX。</p>
		<p>下面是一个完整的配置文件例子：</p>
		<p>Section "ServerLayout"  ==============配置标识区<br />        Identifier     "XFree86 Configured"<br />        Screen      0  "Screen0" 0 0<br />        InputDevice    "Keyboard0" "CoreKeyboard"<br /># PS/2 Mouse not detected<br />        InputDevice    "Serial Mouse" "CorePointer"<br /># USB Mouse not detected<br />EndSection</p>
		<p>Section "ServerFlags" =================X 选项配置区<br />        Option "AllowMouseOpenFail"  "true"  ====允许在鼠标配置失败的情况下启动X<br />        Option "DontZap"   "true"            ====不能使用Ctrl+Alt+Backspace组合键退出X<br />        Option "DontZoom"  "true"            ====不能使用Ctrl+Alt+小键盘+-来切换显示模式<br />        </p>
		<p>EndSection</p>
		<p>Section "Files"     =========================字体配置区<br />        RgbPath      "/usr/X11R6/lib/X11/rgb"<br />        ModulePath   "/usr/X11R6/lib/modules"<br /># Additional fonts: Locale, Gimp, TTF...<br />#       FontPath     "/usr/X11R6/lib/X11/fonts/latin2/75dpi"<br />#       FontPath     "/usr/X11R6/lib/X11/fonts/latin2/100dpi"<br /># True type and type1 fonts are also handled via xftlib, see /etc/X11/XftConfig!<br />    FontPath    "/usr/X11R6/lib/X11/fonts/misc:unscaled"<br />    FontPath    "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"<br />    FontPath    "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"<br />    FontPath    "/usr/X11R6/lib/X11/fonts/PEX"<br />    FontPath    "/usr/X11R6/lib/X11/fonts/cyrillic"<br />    FontPath    "/usr/X11R6/lib/X11/fonts/TrueType"<br />EndSection</p>
		<p>Section "Module"<br />        Load  "ddc"  # ddc probing of monitor<br />        Load  "dbe"<br />        Load  "dri"<br />        Load  "extmod"<br />        Load  "glx"<br />        Load  "record"<br />        Load  "xtt"<br />EndSection</p>
		<p>Section "InputDevice"     ================键盘配置区<br />        Identifier  "Keyboard0"<br />        Driver      "keyboard"<br />        Option      "CoreKeyboard"<br />        Option "XkbRules" "xfree86"<br />        Option "XkbModel" "pc105"<br />        Option "XkbLayout" "us"</p>
		<p>EndSection</p>
		<p>Section "InputDevice"    =================串口鼠标配置区<br />        Identifier  "Serial Mouse"<br />        Driver      "mouse"<br />        Option      "Protocol" "Microsoft"<br />        Option      "Device" "/dev/ttyS0"<br />        Option      "Emulate3Buttons" "true"<br />        Option      "Emulate3Timeout" "70"<br />        Option      "SendCoreEvents"  "true"<br />EndSection</p>
		<p>Section "InputDevice"    =================ps/2鼠标配置区<br />        Identifier  "PS/2 Mouse"<br />        Driver      "mouse"<br />        Option      "Protocol" "auto"<br />        Option      "ZAxisMapping"          "4 5"<br />        Option      "Device" "/dev/psaux"<br />        Option      "Emulate3Buttons" "true"<br />        Option      "Emulate3Timeout" "70"<br />        Option      "SendCoreEvents"  "true"<br />EndSection</p>
		<p>Section "InputDevice"    =================usb鼠标配置区<br />        Identifier      "USB Mouse"<br />        Driver          "mouse"<br />        Option          "Device"                "/dev/input/mice"<br />        Option          "SendCoreEvents"        "true"<br />        Option          "Protocol"              "IMPS/2"<br />        Option          "ZAxisMapping"          "4 5"<br />        Option          "Buttons"               "5"<br />EndSection</p>
		<p>Section "Monitor"       ==================显示器配置区<br />        Identifier      "Monitor0"<br />        Option  "DPMS"  "true"<br />        VendorName      "MAG"<br />        ModelName       "MAG9705"<br />        HorizSync 30-86# DDC-probed<br />        VertRefresh 50-160# DDC-probed<br />        # These are the DDC-probed settings reported by your monitor.<br />        # 1600x1200, 65.0Hz; hfreq=81.25, vfreq=65.00<br />        ModeLine "1600x1200"    175.50 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync<br />        # 1280x1024, 75.0Hz; hfreq=79.98, vfreq=75.03<br />        ModeLine "1280x1024"    135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync<br />        # 1280x960, 85.0Hz; hfreq=85.40, vfreq=85.00<br />        ModeLine "1280x960"     148.50 1280 1344 1504 1728  960  961  964 1011 +hsync +vsync<br />        # 1024x768, 85.0Hz; hfreq=68.68, vfreq=85.00<br />        ModeLine "1024x768"      94.50 1024 1072 1168 1376  768  769  772  808 +hsync +vsync<br />EndSection</p>
		<p>Section "Device"       ===================显卡配置区           <br />        ### Available Driver options are:-<br /># sw_cursor is needed for some ati and radeon cards<br />Option "sw_cursor"<br />        #Option     "hw_cursor"<br />        #Option     "NoAccel"<br />        #Option     "ShowCache"<br />        #Option     "ShadowFB"<br />        #Option     "UseFBDev"<br />        #Option     "Rotate"<br />        Identifier  "Card0"<br />        Driver      "nv"            =======如果不清楚可选svga或vga<br />        VendorName  "NVidia"<br />        BoardName   "GeForce2 MX DDR"<br />#       BusID       "PCI:1:0:0"<br />EndSection</p>
		<p>Section "Screen"     =====================屏幕配置区<br />        Identifier "Screen0"<br />        Device     "Card0"<br />        Monitor    "Monitor0"<br />        DefaultColorDepth 24  ============用24位色深 <br />        SubSection "Display"<br />                Depth     1<br />                Modes "1024x768" "640x480" <br />                Virtual 0 0<br />        EndSubSection<br />        SubSection "Display"<br />                Depth     4<br />                Modes "1024x768" "640x480" <br />                Virtual 0 0<br />        EndSubSection<br />        SubSection "Display"<br />                Depth     8<br />                Modes "1024x768" "640x480" <br />                Virtual 0 0<br />        EndSubSection<br />        SubSection "Display"<br />                Depth     15<br />                Modes "1024x768" "640x480" <br />                Virtual 0 0<br />        EndSubSection<br />        SubSection "Display"<br />                Depth     16<br />                Modes "1024x768"  <br />                Virtual 0 0<br />        EndSubSection<br />        SubSection "Display"<br />        SubSection "Display"<br />                Depth     24<br />                Modes "1024x768" "640x480" <br />                Virtual 0 0<br />        EndSubSection<br />        SubSection "Display"<br />                Depth     32<br />                Modes "1024x768" "640x480" <br />                Virtual 0 0<br />        EndSubSection<br />EndSection</p>
		<p>2.3. XFree86的文件系统<br />大多数程序，字体和文件都放在/usr/X11R6目录下，而其它组件和配置文件则放在/etc/X11目录下，一些始化程序如xfs字体服务器就放到系统初始化目录/etc/init.d目录下。下面是一个XFree86系统目录列表：</p>
		<p>Table 2.1. XFree86文件系统目录清单</p>
		<p>目录 描述 <br />/etc/X11 X配置文件 <br />/usr/X11R6/bin X程序 <br />/usr/X11R6/include X11程序开发所需的#include文件和图形 <br />/usr/X11R6/lib X程序共享库 <br />/usr/X11R6/lib/X11 配置文件，应用程序资源文件文档、字体及国际化文件 <br />/usr/X11R6/lib/modules XFree86模块(驱动程序、扩展文件、字体文件等) <br />/usr/X11R6/man X手册页 <br />/usr/X11R6/share 各种X客户程序共享的资源文件 </p>
		<p>2.4. XFree86字体<br />可以在本地或远程安装字体。单机上运行的linux的字体目录主要是在/usr/X11R6/lib/X11/fonts目录下。有几个工具用以管理字体，分别是：</p>
		<p>mkfontdir用来在字体目录下创建字体名数据库。</p>
		<p>xlsfonts用来列出已安装字体。</p>
		<p>xfontsel用来显示从字体集中选中的各种字体。</p>
		<p>xfd用来显示在X字体中的字符。</p>
		<p>xset -q可查看字体的路径</p>
		<p>在fonts目录下列有已安装的各种字体目录，如100dpi/、75dpi/、misc/等，每个目录下都有一个fonts.dir和一个fonts.alias文件。fonts.dir文件是字体列表数据库，X 和xfs字体服务器用这个文件查找字体；fonts.alias文件包含两栏信息：名字和别名。可以利用这个文件给已有的字体创建新名字。Encodings目录中的是Type1 (也称TrueType)的字体编码。这些信息用来在显示器上绘制可缩放字体。</p>
		<p>XFree86还可使用远程XFree86 服务器上的字体，从而减少本地的字体存储空间，主要通过配置字体服务器xfs完成。为利用远程服务器上提供的字体，可用xset +fp unix/remote.org:7100命令可把远程X 服务器提供的字体增加到当前显示字体路径中。在单机上运行xfs时，可以用一个单一的设置代替XF86Config文件中列出的字体列表:</p>
		<p>Fontpath "nuix/:7100"</p>
		<p>不过，具体操作还没测试过。</p>
		<p>Xresources文件位于/etc/X11目录下，该文件包含所有客户程序的默认资源管理信息。如emacs,vim。emacs*Background:DarkSlateGray表示把emacs程序的背景设置为灰色。这样任何用户在你计算机上启动emacs编辑器，将使用灰色的背景。除非用本地设置来使之失效。</p>
		<p>2.5. 启动X11<br />X window的启动过程是由xinit客户端程序控制的，先启动X Server,接着启动窗口管理器，最后启动用户应用程序。用户主目录下的.xinitrc文件就是控制xinit程序启动什么窗口管理器、显示管理器和程序的文件。一般启动X window的方法有如下几种：</p>
		<p>2.5.1. 启动方法<br />各种linux的发行版都把运行级别5定为x window模式，所以最简单的方式是修改/etc/inittab文件，把系统的默认运行级别定为5，重启系统就可以了。有关系统运行级别的设置方法和原理可参考有关资料或man手册页。</p>
		<p>我们也可以用startx脚本从shell中手动启动x window。启动startx后，它会进行一些环境变量的测试，它会搜查xclient的位置：$HOME/.xinitrc和/etc/X11/xinit/xinitrc，还有xserver的位置：$HOME/.xserverrc和/etc/X11/xinit/xserverrc。如果主目录有配置文件就会优先使用，首先，xinit先执行.xserverrc的内容，如果找不到该文件，则用/etc/X11/xinit/xinit/xserverrc，如果都没有，就执行 X :0，启动X Server。接着xinit就会执行用户主目录下.xinitrc配置文件的内容。如果没有则到/etc/X11/xinit/下找xinitrc文件，如果都找不到，则执行xterm -geometry +1+1 -n login -display :0。一个简单的.xinitrc配置文件如下：</p>
		<p>export LANG=zh_CN.GB2312               ======这两行是设置中文环境变量<br />export  LC_ALL=zh_CN.GB2312<br />export XMODIFIERS="@im=Chinput"        ======设置Chinput为中文输入法<br />chinput&amp;                               ======启动chinput输入法服务器<br />wmaker&amp;                             ======启动window maker窗口管理器<br />用startx启动X的过程就是这样的。</p>
		<p>还有一个程序叫X，它只是启动X Server进入X环境，所以可用它来测试X Server服务是否成功启动。启动X后，可按Ctrl+Alt+F7切换到X界面。</p>
		<p>2.5.2. 启用多用户会话<br />如果有足够多的内存，可以用startx命令启动多个X会话。首先我们要启动到非X多用户模式下，如运行级别3。运行以下命令：$ startx -display :0 -vt7启动第一个会话，运行$ startx -display :1 -vt8启动第二个会话，可用Ctrl+Alt+F7/F8进行会话切换。</p>
		<p>2.5.3. 终止X会话<br />一种方法是通过窗口管理器的注销功能或在终端中打入logout，一种是通过Ctrl+Alt+Fn切换到其它控制台，再用kill终止。</p>
		<p>Chapter 3. X11客户程序常用选项<br />Table of Contents</p>
		<p>3.1. X程序常用选项<br />3.2. 使用客户程序资源<br />3.1. X程序常用选项<br />Table 3.1. X程序常用选项</p>
		<p>命令行选项 描述 <br />-bg color or -background color 设置背景色 <br />-bd color or -bordercolor color 设置窗口边框色 <br />-bw n or -borderwidth n 设置窗口边框的宽度，n的单位是象素 <br />-fg color 设置前景色 <br />-fn font 设置字体 <br />-geometry 宽X高+/-X偏移量+/-Y偏移量 指定客户程序窗口的宽度，高度和在桌面上的位置 <br />-iconic 以最小化的状态启动客户端程序 <br />-title string 设置窗口标题 </p>
		<p>以上参数只是一些程序常用的，有些程序可能不支持，要详细了解可使用命令的-h或--help参数查询，如rxvt --help。</p>
		<p>3.2. 使用客户程序资源<br />可使用资源设置文件为客户程序设置各种默认的属性，如字体、颜色等。这些客户程序资源文件一般保存在/usr/X11R6/lib/app-defaults目录下。可用$ appres xclock的形式来显示xclock程序的资源文件内容。我们可以用editres程序来更改客户程序的资源。还可以用xrdb来配置系统级别的资源。</p>
		<p>Chapter 4. X window的网络应用<br />Table of Contents</p>
		<p>4.1. 远程会话<br />4.2. 远程桌面<br />4.3. 安全问题<br />X 系统的网络模型是基于客户机/服务器的体系结构。客户机能远程登录进来，进行各种图形显示应用。</p>
		<p>4.1. 远程会话<br />有两台X系统，一台A，一台B。通过X系统的远程会话可以把A的xclock应用程序显示在B的显示器上。具体的操作步骤如下：</p>
		<p>首先要在两台电脑上安装X系统。在A电脑上以不带-nolisten tcp选项启动X(在Xsession里设置)。并在B上执行$ xhost + A，允许A电脑访问。</p>
		<p>在A电脑上执行$ xclock -display B:0.0&amp;，B的显示器上就会显示xclock时钟。</p>
		<p>连接完成后在B上要用$ xhost -A，取消A的远程访问权限。</p>
		<p>利用该功能，我们也可以利用telnet或ssh登录到远程服务器，在远程服务器上运行应用程序，再把显示传回本地显示。</p>
		<p>上面介绍的是基于主机的认证会话方式，还有一种更安全的基于cookis的认证方式，它要用到xauth这个程序，用它可生成一个本机的cookis保存在.Xauthority文件中，要进行认证需把它拷贝到另一台机的.Xauthority文件中。这样两台机就有了相同的cookis，连接时就可用于认证。在xauth里有两个有用的程序，一个是extract用于把cookis导出成一个文件，merge用于把导出的文件导入.Xauthority文件中。</p>
		<p>4.2. 远程桌面<br />可以利用Xvnc软件，实现远程桌面应用。该软件包括服务器和客户端，能让你在一台linux客户机上登录远程系统的桌面。包括windows、Machintosh、Solaris等。Xvnc是由英国剑桥的AT&amp;T研究室研制。使用方法如下：</p>
		<p>在A电脑上运行$ vncserver -geometry 800x600，启动服务器。</p>
		<p>在B电脑上运行$ vncviewer A:1，连接A系统桌面，桌面大小是800x600。</p>
		<p>4.3. 安全问题<br />可利用xterm的安全键盘功能。操作方法如下：</p>
		<p>在本地X会话过程中启动用户系统，$ xterm&amp;。</p>
		<p>然后把光标移到终端窗口内空白地方，按下Ctrl+单击鼠标左键，在弹出的快捷菜单中选中“Secue Keyboard”。这时，终端窗口使用相反的前后景色。这样，只有这个窗口可以输入信息，其它任何程序和窗口都不能输入信息。</p>
		<p>为了加强安全，还可以使用xfwp设置一个X防火墙。</p>
		<p>Chapter 5. X系统客户程序介绍<br />Table of Contents</p>
		<p>5.1. 环境设置命令<br />5.2. 小工具<br />5.1. 环境设置命令<br />用xset进行个性化设置，可以设置屏保、鼠标，显示器的能源之星特性(DPMS)等<br />$ xset -q 可以显示当前设置。</p>
		<p>$ xset s on 打开屏幕保护。</p>
		<p>$ xset s 60 设置屏保激活的时间为1分钟。</p>
		<p>$ xset s off 关闭屏幕保护。</p>
		<p>$ xset m "1 6"，放慢鼠标移动速度，$ xset m "30 10"，加快鼠标移动速度，$ xset m "default"，重置鼠标移动速度。</p>
		<p>用xsetroot设置根窗口显示背景，鼠标图案等。<br />$ xsetroot -solid black，把窗口背景设置为黑色。</p>
		<p>$ xsetroot -bitmap /usr/X11R6/include/X11/bitmaps/test.bmp，用test.bmp作为桌面背景</p>
		<p>$ xsetroot -cursor_name xxx。设置鼠标图案。$ xsetroot -cursor_name X_cursor，重置鼠标图案。</p>
		<p>通过xmodmap来重新排列键盘上的按键。<br />要使用xmodmap这个程序，需要有一个.Xmodmap的配置文件，配置按键的位置。配置文件内容如下：</p>
		<p>remove Lock = Caps_Lock<br />remove Control = Control_L<br />keycode 0x42 = Caps_Lock<br />keycode 0x25 = Control_L<br />add Lock = Control_L<br />add Control = Caps_Lock<br />接着调用$ xmodmap .xmodmap进行设置。</p>
		<p>为了更好设置，可以调用xev程序进行键位测试。</p>
		<p>$ xmodmap -e "pointer = 3 2 1" 可以把鼠标的左右键对调。</p>
		<p>xhost用于控制网络上哪些主机允许存取本地显示屏幕。<br />$ xhost +，允许所有主机存取本机显示屏幕，这样是很不安全，请使用时注意。</p>
		<p>$ xhost -，禁止所有用户存取本机显示屏幕。</p>
		<p>$ xhost + test，允许test这台机存取本机显示屏幕，也可以用IP地址。</p>
		<p>5.2. 小工具<br />xwd and xwud可截取和显示屏幕画面<br />$ xwd -out test.xwd 按下回车后，光标变成一个卷发型，移动光标到要截取的窗口上，按左键就可以了。图形保存在当前目录下。</p>
		<p>$ xwd -root -display B:0.0 -out test.xwd，用-root表示截取整个显示内容。</p>
		<p>$ xwd &lt; test.xwd，显示图形。</p>
		<p>用xbiff提示电子邮件到达信息，用xeyes显示眼睛图像，用xlogo显示X标识，用xclock显示时间,用xmag放大区域。<br />$ xbiff -update 15 -volume 100 -geometry 100x100 -fg white -bg blue。</p>
		<p>$ xeyes -fg red -center yellow。</p>
		<p>$ xlogo -fg black -bg lightgreen。</p>
		<p>$ xclock -d -update 1 -fg black -bg lightgreen，-d表示显示数字时钟。</p>
		<p>$ xmag ，回车后，光标变成一个L型，然后，在你想放大的地方按鼠标左键，则会把该区放大。</p>
		<p>利用Pilot-xfer来与PDA通信。<br />详细内容请参考相关资料。</p>
		<p>xload可显示系统状态。<br />$ xload&amp;</p>
		<p>xman可显示手册页<br />$ xman</p>
		<p>editres可获得和修改Xclient程序的资源信息。<br />$ editres。</p>
		<p>xlsclients可列出当前X Server中运行的客户程序。<br />$ xlsclients</p>
		<p>Chapter 6. X11多媒体客户程序介绍<br />GIMP,一个图象处理软件。</p>
		<p>SANE(Scanner Access Now Easy)，一个扫描仪支持软件包。</p>
		<p>Gun OCR/JOCR，光学字符识别软件。</p>
		<p>gPhoto，数码相机支持软件，支持超过100种相机。</p>
		<p>Xine，xmms，mplayer，realplay，多媒体播放软件</p>
		<p>Krabber，mp3转换工具。</p>
		<p>Chapter 7. 显示管理器<br />Table of Contents</p>
		<p>7.1. xdm的配置<br />显示管理器是负责管理X会话和登录的，在GNOMN中的是gdm，在KDE中的是kdm，还有一个早期使用过的xdm。显示管理器的作用和xinit差不多，都是控制进行X Server时要执行的工作。但显示管理器有以下优势。我们完全可用显示管理器替代xinit。</p>
		<p>显示管理器可同时控制多个X Server。</p>
		<p>它是循环执行的，可确保我们始终以X window图形界面登录。</p>
		<p>它的可配置性很强。能为每个用户配置不同的系统环境。</p>
		<p>为用户提供一种简单的登录方式。</p>
		<p>7.1. xdm的配置<br />xdm的配置文件位于/etc/X11/xdm目录下，首先应查询xdm-config文件。系统会先读取该文件的配置信息。xdm-config文档的内容如下：</p>
		<p>! $Xorg: xdm-conf.cpp,v 1.3 2000/08/17 19:54:17 cpqbld Exp $<br />!<br />! $XFree86: xc/programs/xdm/config/xdm-conf.cpp,v 1.7 2001/01/17 23:45:24 dawes Exp $<br />!<br />DisplayManager.errorLogFile:/var/log/xdm.log            ====出错日志文件路径<br />DisplayManager.pidFile:/var/run/xdm.pid<br />DisplayManager.keyFile:/usr/X11R6/lib/X11/xdm/xdm-keys<br />DisplayManager.servers:/usr/X11R6/lib/X11/xdm/Xservers  ====X Server服务器启动的配置文件<br />DisplayManager.accessFile:/usr/X11R6/lib/X11/xdm/Xaccess  ====控制多个图形终端时的配置文件<br />DisplayManager.authDir:/var/lib/xdm<br />DisplayManager.willing:su nobody -c /usr/X11R6/lib/X11/xdm/Xwilling<br />! All displays should use authorization.<br />! X terminals may not be configured that way, so they will require<br />! individualized resource settings.<br />DisplayManager*authorize:true<br />! Scripts to start the server, start the user session, and reset the server<br />DisplayManager*setup:/usr/X11R6/lib/X11/xdm/Xsetup<br />DisplayManager*startup:/usr/X11R6/lib/X11/xdm/Xstartup<br />DisplayManager*reset:/usr/X11R6/lib/X11/xdm/Xreset<br />DisplayManager*resources:/usr/X11R6/lib/X11/xdm/Xresources  ====启动时的资源配置文件<br />DisplayManager*session:/usr/X11R6/lib/X11/xdm/Xsession      ====启动及周期配置文件<br />DisplayManager*authComplain:true<br />!<br />DisplayManager*userPath:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games<br />DisplayManager*systemPath:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11</p>
		<p>DisplayManager*loginmoveInterval:10</p>
		<p>! SECURITY: do not listen for XDMCP or Chooser requests<br />! Comment out this line if you want to manage X terminals with xdm<br />DisplayManager.requestPort:0</p>
		<p>Xservers中列出xdm所管理的X Server的列表。如：:0 local /usr/X11R6/bin/X -vt7</p>
		<p>Xresourdes中列出了资源的名单，在登录窗口启动之前被xrdb加载。如：可通过该文件修改登录窗口的属性。</p>
		<p>Xsession中列出在一个会话周期内所运行的程序。最后一行所执行的程序可以持续整个管理周期。当该程序结束，则周期结束。需要把除最后一行外的所有程序放在后台运行。如果不这样做，周期将可以会出挂起或出错。如：执行twm行省略了"&amp;"，则它后面的程序将不会运行，直到twm程序结束。另外，最后的一行程序必须是可执行的命令，因为它将不间断地执行且保持你的周期继续活动。如果你把它放在后台运行，虽然它同样会顺利地执行，但此周期程序执行至配置文件结束时将会中断，因而造成周期的结束。如果不用exec引导程序，而且省略“&amp;”。则最后一行的程序也将会顺利地执行且此周期将不断地持续工作，比如:xterm -geometry -0+50 -ls -C。-C表示使xterm成为一个控制台终端，使所有的系统信息在该窗口中显示。-ls表示使它的shell成为login shell。如果可使shell读入你的login或profile，所以你自已设定的环境变量会自动设定。</p>
		<p>Chapter 8. 窗口管理器<br />Table of Contents</p>
		<p>8.1. WindowMaker<br />8.2. fvwm\fvwm2\fvwm95<br />8.3. enlightenment<br />8.4. mwm<br />8.5. twm<br />8.6. icewm<br />8.7. Sawfish<br />8.8. blackbox<br />X Server只负责程序的运行和输入输出，窗口界面它没有定义和管理，它要靠一种叫窗口管理器的软件来负责。这也是X window灵活强大的功能之一。通过不同的窗口管理器，你可以定义出千变万化的窗口环境，突显你的个性，要多酷有多酷。下面对一些常用的窗口管理器进行简单的介绍。</p>
		<p>8.1. WindowMaker</p>
		<p>8.2. fvwm\fvwm2\fvwm95</p>
		<p>8.3. enlightenment</p>
		<p>8.4. mwm</p>
		<p>8.5. twm</p>
		<p>8.6. icewm</p>
		<p>8.7. Sawfish</p>
		<p>8.8. blackbox</p>
		<p>Chapter 9. 桌面环境<br />Table of Contents</p>
		<p>9.1. GNOMN<br />9.2. KDE<br />9.3. CDE<br />桌面环境是一种工作环境，里面有窗口管理器，有系统管理程序，有文件管理程序和一些工具软件的集合。所以它可以说一个集成的环境，用于办公、娱乐等。在linux下比较流行的桌面环境有两个，一个是基于GTK+的GNOMN(GNU Network Object Model Environment)和一个是基于Qt的KDE(K Desktop Environment)。</p>
		<p>9.1. GNOMN</p>
		<p>9.2. KDE</p>
		<p>9.3. CDE</p>
		<p>Chapter 10. X web<br />在X11R6.4中提供了一种基于Web的X window解决方案叫broadway。它能使X window系统具有通过Web协议访问X应用程序能力，即X web。X web的体系结构包括5个关健部分：</p>
		<p>远程执行---提拱远程启动X 应用程序的机制。</p>
		<p>一致性访问---集成X11R6.4和Http协议，提供独立于平台的一致性访问，使它具有广泛的可用性。</p>
		<p>Web浏览器插入---结合远程执行，提供在浏览器中显示应用程序执行结果的功能。</p>
		<p>安全机制---用区分可信(内部)和不可信(外部)应用程序的方法提供安全机制。它的实现包括3部分，第一是扩充的pc机X 服务器功能；第二是增加防火墙的X 代理功能；第三是为用户提供控制在可信和不可信程序间交换数据的界面。</p>
		<p>LBX(窄带X )---用于改进X在广域网和低速拔号网络上的性能，使用的技术包括高速缓冲、数据压缩和简化应答。</p>
		<p>X web是一种分布式的应用，这也是X window系统设计时初衷。但由于当时分布式计算技术环境的不完善，使得它的功能在当时的环境下实现不了。现在，随着计算技术的飞速发展，如低成本宽带网络的迅速扩张，高性，低成本的CPU的使用，操作系统功能的不断完善，开发工具和方法的不断改进等，分布式计算环境已较完善，X window的分布式应用已渐渐成为现实。</p>
		<p>X web是一种较新的技术，具体还没有测试过，有兴趣的朋友可到<a href="http://www.broadwayinfo.com">http://www.broadwayinfo.com</a>网站了解一下。<br /></p>
<img src ="http://www.blogjava.net/bluesky/aggbug/49459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-06-01 10:33 <a href="http://www.blogjava.net/bluesky/archive/2006/06/01/49459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>猎人带狗追捕，兔子刚跑80步，猎狗去追兔子，已知猎狗跑2步的时间兔子跑3步，猎狗跑4步的距离与兔子跑7步的距离相等。那么猎狗跑多少步可以捕获这只兔子？</title><link>http://www.blogjava.net/bluesky/archive/2006/05/19/47036.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Fri, 19 May 2006 05:11:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/05/19/47036.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/47036.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/05/19/47036.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/47036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/47036.html</trackback:ping><description><![CDATA[
		<p>猎人带狗追捕，兔子刚跑80步，猎狗去追兔子，已知猎狗跑2步的时间兔子跑3步，猎狗跑4步的距离与兔子跑7步的距离相等。那么猎狗跑多少步可以捕获这只兔子？ <br />距离80步<br />2a/x = 3b/y<br />-&gt; 2ay = 3bx<br />-&gt; x = 2ay/3b</p>
		<p>4*a = 7*b<br />-&gt;a = 7b/4</p>
		<p>带入x = 2ay/3b<br />x = 2*7by/12b<br />x = 7y/6</p>
		<p> </p>
		<p>b = 4a/7</p>
		<p>
				<br />(n*a - 80*b)/y = n*a/x</p>
		<p>n*a*x - 80*b*x = n*a*y<br />n*a*(x-y) = 80*b*x<br />n = 80*b*x<br />   ------------<br />    a*(x-y)<br />   =  80 *4a/7* 7y/6<br />   ----------------<br />   a* (7y/6 - y)</p>
		<p> = 80*4/7 *7y/6<br /> ---------------<br /> 1y/6<br /> = 80*4=320 </p>
		<p> </p>
		<p> </p>
		<p> </p>
<img src ="http://www.blogjava.net/bluesky/aggbug/47036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-05-19 13:11 <a href="http://www.blogjava.net/bluesky/archive/2006/05/19/47036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Minimal wxWidgets sample~~</title><link>http://www.blogjava.net/bluesky/archive/2006/05/15/46144.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Sun, 14 May 2006 16:00:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/05/15/46144.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/46144.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/05/15/46144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/46144.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/46144.html</trackback:ping><description><![CDATA[
		<p>/////////////////////////////////////////////////////////////////////////////<br />// Name:        minimal.cpp<br />// Purpose:     Minimal wxWidgets sample<br />// Author:      Julian Smart<br />// Modified by:<br />// Created:     04/01/98<br />// RCS-ID:      $Id: minimal.cpp,v 1.67 2005/02/20 16:14:03 JS Exp $<br />// Copyright:   (c) Julian Smart<br />// Licence:     wxWindows licence<br />/////////////////////////////////////////////////////////////////////////////</p>
		<p>// ============================================================================<br />// declarations<br />// ============================================================================</p>
		<p>// ----------------------------------------------------------------------------<br />// headers<br />// ----------------------------------------------------------------------------</p>
		<p>// For compilers that support precompilation, includes "wx/wx.h".<br />#include &lt;string&gt;<br />#include &lt;iostream&gt;<br />#include "wx/wxprec.h"</p>
		<p>#ifdef __BORLANDC__<br />    #pragma hdrstop<br />#endif</p>
		<p>// for all others, include the necessary headers (this file is usually all you<br />// need because it includes almost all "standard" wxWidgets headers)<br />#ifndef WX_PRECOMP<br />    #include "wx/wx.h"<br />#endif<br />// ----------------------------------------------------------------------------<br />// resources<br />// ----------------------------------------------------------------------------</p>
		<p>// the application icon (under Windows and OS/2 it is in resources and even<br />// though we could still include the XPM here it would be unused)<br />#if !defined(__WXMSW__) &amp;&amp; !defined(__WXPM__)<br />    #include "sample.xpm"<br />#endif</p>
		<p>// ----------------------------------------------------------------------------<br />// private classes<br />// ----------------------------------------------------------------------------</p>
		<p>// Define a new application type, each program should derive a class from wxApp<br />class MyApp : public wxApp<br />{<br />public:<br />    // override base class virtuals<br />    // ----------------------------</p>
		<p>    // this one is called on application startup and is a good place for the app<br />    // initialization (doing it here and not in the ctor allows to have an error<br />    // return: if OnInit() returns false, the application terminates)<br />    virtual bool OnInit();<br />};</p>
		<p>// Define a new frame type: this is going to be our main frame<br />class MyFrame : public wxFrame<br />{<br />public:<br />    // ctor(s)<br />    MyFrame(const wxString&amp; title);<br /> wxButton *WxButton1;<br />    wxTextCtrl *wxTextCtrl1;<br />        wxTextCtrl *wxTextCtrl2;<br />    // event handlers (these functions should _not_ be virtual)<br />    void OnQuit(wxCommandEvent&amp; event);<br />    void OnAbout(wxCommandEvent&amp; event);<br />void WxButton1Click(wxCommandEvent&amp; event);<br />private:<br />    // any class wishing to process wxWidgets events must use this macro<br />    DECLARE_EVENT_TABLE()<br />};</p>
		<p>// ----------------------------------------------------------------------------<br />// constants<br />// ----------------------------------------------------------------------------</p>
		<p>// IDs for the controls and the menu commands<br />enum<br />{<br /> ID_WXBUTTON1 = 1001,<br />    // menu items<br />    <br />    Minimal_Quit = wxID_EXIT,</p>
		<p>    // it is important for the id corresponding to the "About" command to have<br />    // this standard value as otherwise it won't be handled properly under Mac<br />    // (where it is special and put into the "Apple" menu)<br />    Minimal_About = wxID_ABOUT</p>
		<p>};</p>
		<p>// ----------------------------------------------------------------------------<br />// event tables and other macros for wxWidgets<br />// ----------------------------------------------------------------------------</p>
		<p>// the event tables connect the wxWidgets events with the functions (event<br />// handlers) which process them. It can be also done at run-time, but for the<br />// simple menu events like this the static method is much simpler.<br />BEGIN_EVENT_TABLE(MyFrame, wxFrame)<br />    EVT_MENU(Minimal_Quit,  MyFrame::OnQuit)<br />    EVT_MENU(Minimal_About, MyFrame::OnAbout)<br />    EVT_BUTTON(ID_WXBUTTON1,MyFrame::WxButton1Click)<br />END_EVENT_TABLE()</p>
		<p>// Create a new application object: this macro will allow wxWidgets to create<br />// the application object during program execution (it's better than using a<br />// static object for many reasons) and also implements the accessor function<br />// wxGetApp() which will return the reference of the right type (i.e. MyApp and<br />// not wxApp)<br />IMPLEMENT_APP(MyApp)</p>
		<p>// ============================================================================<br />// implementation<br />// ============================================================================</p>
		<p>// ----------------------------------------------------------------------------<br />// the application class<br />// ----------------------------------------------------------------------------</p>
		<p>// 'Main program' equivalent: the program execution "starts" here<br />bool MyApp::OnInit()<br />{<br />    // create the main application window<br />    MyFrame *frame = new MyFrame(_T("helloworld-test"));</p>
		<p>    // and show it (the frames, unlike simple controls, are not shown when<br />    // created initially)<br />    frame-&gt;Show(true);</p>
		<p>    // success: wxApp::OnRun() will be called which will enter the main message<br />    // loop and the application will run. If we returned false here, the<br />    // application would exit immediately.<br />    return true;<br />}</p>
		<p>// ----------------------------------------------------------------------------<br />// main frame<br />// ----------------------------------------------------------------------------</p>
		<p>// frame constructor<br />MyFrame::MyFrame(const wxString&amp; title)<br />       : wxFrame(NULL, wxID_ANY, title)<br />{</p>
		<p>    // set the frame icon<br />    SetIcon(wxICON(sample));</p>
		<p>#if wxUSE_MENUS<br />    wxMenu *fileMenu = new wxMenu;<br />    wxMenu *helpMenu = new wxMenu;<br />    helpMenu-&gt;Append(Minimal_About, _T("&amp;About...\tF1"), _T("Show about dialog"));</p>
		<p>    fileMenu-&gt;Append(Minimal_Quit, _T("E&amp;xit\tAlt-X"), _T("Quit this program"));</p>
		<p>
				<br />    wxMenuBar *menuBar = new wxMenuBar();<br />    menuBar-&gt;Append(fileMenu, _T("&amp;系统"));<br />    menuBar-&gt;Append(helpMenu, _T("&amp;帮助"));</p>
		<p>    // ... and attach this menu bar to the frame<br />    SetMenuBar(menuBar);<br />   <br />#endif // wxUSE_MENUS</p>
		<p>#if wxUSE_STATUSBAR<br />    // create a status bar just for fun (by default with 1 pane only)<br />    CreateStatusBar(2);<br />    SetStatusText(_T("helloworld-test"));<br />#endif // wxUSE_STATUSBAR<br /> wxPanel* p = new wxPanel(this, -1);<br />   wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );<br />   <br />   <br />/*    topsizer-&gt;Add(<br />    new wxStaticText( p, wxID_ANY, _T("An explanation (wxALIGN_RIGHT).") ),<br />    wxSizerFlags().Align(wxALIGN_RIGHT).Border(wxALL &amp; ~wxBOTTOM, 5));</p>
		<p>
				<br />  topsizer-&gt;Add(<br />    new wxTextCtrl( p, wxID_ANY, _T("My text (wxEXPAND)."), wxDefaultPosition, wxSize(100,60), wxTE_MULTILINE),<br />    wxSizerFlags(1).Expand().Border(wxALL, 5));</p>
		<p>
				<br />  wxBoxSizer *statsizer = new wxStaticBoxSizer(<br />    new wxStaticBox(p, wxID_ANY, _T("A wxStaticBoxSizer")), wxVERTICAL );<br />  statsizer-&gt;Add(<br />    new wxStaticText(p, wxID_ANY, _T("And some TEXT inside it")),<br />    wxSizerFlags().Center().Border(wxALL, 30));<br />  topsizer-&gt;Add(<br />    statsizer,<br />    wxSizerFlags(1).Expand().Border(wxALL, 10));*/<br />   <br />   <br />    wxGridSizer *gridsizer = new wxGridSizer(2, 5, 5);<br />    <br />    gridsizer-&gt;Add(new wxStaticText(p, wxID_ANY, _T("Label")),<br />                   wxSizerFlags().Align(wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL));<br />                   wxTextCtrl1 = new wxTextCtrl(p, wxID_ANY, _T(""));<br />    gridsizer-&gt;Add(wxTextCtrl1,<br />                   wxSizerFlags(1).Align(wxGROW | wxALIGN_CENTER_VERTICAL));<br />    gridsizer-&gt;Add(new wxStaticText(p, wxID_ANY, _T("Another label")),<br />                   wxSizerFlags().Align(wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL));<br />                   <br />                   wxTextCtrl2 = new wxTextCtrl(p, wxID_ANY, _T(""));<br />                   <br />    gridsizer-&gt;Add(wxTextCtrl2,<br />                   wxSizerFlags(1).Align(wxGROW | wxALIGN_CENTER_VERTICAL));<br />    gridsizer-&gt;Add(new wxStaticText(p, wxID_ANY, _T("Final label")),<br />                   wxSizerFlags().Align(wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL));<br />    gridsizer-&gt;Add(new wxTextCtrl(p, wxID_ANY, _T("")),<br />                   wxSizerFlags().Align(wxGROW | wxALIGN_CENTER_VERTICAL));<br />     topsizer-&gt;Add(<br />        gridsizer,<br />        wxSizerFlags().Proportion(1).Expand().Border(wxALL, 10));<br />        <br />     wxBoxSizer *button_box = new wxBoxSizer( wxHORIZONTAL );<br />  button_box-&gt;Add(<br />     new wxButton( p, wxID_ANY, _T("Two buttons in a box") ),<br />     wxSizerFlags().Border(wxALL, 7));<br />     <br />  <br />   WxButton1 = new wxButton(p, ID_WXBUTTON1, _T("WxButton1"), wxPoint(142,184), wxSize(75,25), 0, wxDefaultValidator, wxT("WxButton1"));<br />  <br />       button_box-&gt;Add(WxButton1,  wxSizerFlags().Border(wxALL, 7));<br />  button_box-&gt;Add(<br />     new wxButton( p, wxID_ANY, _T("(wxCENTER)") ),<br />     wxSizerFlags().Border(wxALL, 7));</p>
		<p>  topsizer-&gt;Add(button_box, wxSizerFlags().Center());</p>
		<p>  p-&gt;SetSizer( topsizer );<br />  </p>
		<p>      topsizer-&gt;SetSizeHints( this );<br />    </p>
		<p>}</p>
		<p>
				<br />// event handlers</p>
		<p>void MyFrame::OnQuit(wxCommandEvent&amp; WXUNUSED(event))<br />{<br />    // true is to force the frame to close<br />    Close(true);<br />}</p>
		<p>void MyFrame::OnAbout(wxCommandEvent&amp; WXUNUSED(event))<br />{<br />    wxString msg;<br />    msg.Printf( _T("helloworld-test.\n")<br />                _T("helloworld-test"));<br />                </p>
		<p>    wxMessageBox(msg, _T("About Minimal"), wxOK | wxICON_INFORMATION, this);<br />}<br />void MyFrame::WxButton1Click(wxCommandEvent&amp;  WXUNUSED(event))<br />{<br /> </p>
		<p>
				<br /> wxString n1 = wxTextCtrl1-&gt;GetValue();<br /> wxString n2 = wxTextCtrl1-&gt;GetValue();<br /> std::string nx = (std::string)n1;<br /> std::cout &lt;&lt; nx &lt;&lt;std::endl;<br /> wxString msg;<br /> msg.Printf( _T(n1));</p>
		<p>    wxMessageBox(msg, _T("About Minimal"), wxOK | wxICON_INFORMATION, this);<br />}<br /></p>
<img src ="http://www.blogjava.net/bluesky/aggbug/46144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-05-15 00:00 <a href="http://www.blogjava.net/bluesky/archive/2006/05/15/46144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用libpqxx总结</title><link>http://www.blogjava.net/bluesky/archive/2006/05/11/45612.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Thu, 11 May 2006 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/05/11/45612.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/45612.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/05/11/45612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/45612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/45612.html</trackback:ping><description><![CDATA[<p>Using libpq(c api) and libpqxx(c++ api) to connect postgresql-8.1.3 on WindowsXP<br />need MinGW Msys postgresql-8.1.3 source baggage<br />I use libpqxx-2.5.5 look at the libpqxx-2.5.5\win32\Intall.txt</p>
<p>--------------------------------------------------------------------<br />Getting Started with MinGW and MSYS<br />(based on contribution by Michael J. Pedersen, 2004-08-17)</p>
<p>MSYS is a Unix-like environment for Windows.&nbsp; Once you have this installed,<br />building libpqxx should be a lot more like it is under Unix except that the<br />locations of libraries and such aren't sufficiently standardized.</p>
<p>Packages to download if you don't have them already:<br />1) MinGW (<a href="http://www.mingw.org/">http://www.mingw.org/</a>), plus any updates.<br />2) MSYS (<a href="http://www.mingw.org/">http://www.mingw.org/</a>), again with any updates.<br />3) w32api (<a href="http://www.mingw.org/">http://www.mingw.org/</a>).<br />4) PostgreSQL (<a href="http://www.postgresql.org/">http://www.postgresql.org/</a>).<br />5) zlib (<a href="http://www.zlib.org/">http://www.zlib.org/</a>).</p>
<p>It is generally recommended to get the latest versions of these packages.</p>
<p>Compiling and installing PostgreSQL before you get to libpqxx:<br />1) Install MinGW (install to c:\mingw)<br />2) Install MSYS--but not into MinGW directory tree!<br />3) Run MSYS (Start-&gt;Programs-&gt;MinGW-&gt;MSYS-&gt;msys)<br />4) Extract, compile, and install zlib<br />&nbsp;&nbsp;&nbsp; # From main source directory of zlib:<br />&nbsp;&nbsp;&nbsp; <font color="#ff6600">./configure --prefix=c:/mingw/local &amp;&amp; make &amp;&amp; make install</font><br />5) Extract, compile, and install postgres<br />&nbsp;&nbsp;&nbsp; # From main source directory of PostgreSQL:<br />&nbsp;&nbsp;&nbsp;<font color="#ff0000"> ./configure --prefix=c:/mingw/local --with-includes=c:/mingw/local/include --with-libs=c:/mingw/local/lib&nbsp; &amp;&amp; make &amp;&amp; make install<br /></font>&nbsp;&nbsp; 重要:把C:\mingw\local\bin设置环境变量PATH中<br />6) Extract, compile, and install libpqxx<br />&nbsp;&nbsp;&nbsp; <font color="#ff0000">export LDFLAGS=-lws2_32 &amp;&amp;&nbsp; ./configure --prefix=c:/mingw/local --disable-shared --enable-static --disable-thread-safety &amp;&amp; make &amp;&amp; make install<br /></font>---------------------------------------------------------------------<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;Uing it in eclpise cdt<br />&nbsp;1、设置环境变量PATH C:\mingw\local\lib 使程序能连接到libpq.dll<br />&nbsp;2、&nbsp;-I &quot;C:\MinGW\local\include&quot; <br />&nbsp;&nbsp;-I &quot;C:\MinGW\libpqxx-2.5.5\include&quot;<br />&nbsp;3、&nbsp;-l&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;pqxx<br />&nbsp;&nbsp;&nbsp;pq<br />&nbsp;&nbsp;&nbsp;ws2_32<br />&nbsp;&nbsp;&nbsp;wsock32<br />&nbsp;&nbsp;&nbsp;注意顺序<br />&nbsp;&nbsp;-L&nbsp;<br />&nbsp;&nbsp;&nbsp;&quot;C:\MinGW\local\lib&quot;<br />&nbsp;&nbsp;&nbsp;&quot;C:\MinGW\lib&quot;<br />&nbsp;4、测试代码<br />&nbsp;pqlib C库 \postgresql-8.1.3\src\test\examples<br />&nbsp;pqlibxx C++ libpqxx-2.5.5\test&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; <br /></p><img src ="http://www.blogjava.net/bluesky/aggbug/45612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-05-11 10:52 <a href="http://www.blogjava.net/bluesky/archive/2006/05/11/45612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>use eclipse to develope c or c++ On Windows platform</title><link>http://www.blogjava.net/bluesky/archive/2006/05/09/45146.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Tue, 09 May 2006 01:40:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/05/09/45146.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/45146.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/05/09/45146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/45146.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/45146.html</trackback:ping><description><![CDATA[<p>use eclipse to develope c or c++ On Windows platform <br />of course you need j2sdk<br />1 download eclipse platform and cdt plugins from eclipse official site <a href="http://www.eclipse.org/">http://www.eclipse.org/</a><br />2 download GNU c/c++ compilers I use MinGW <a href="http://www.mingw.org">http://www.mingw.org</a> <br />I use the MinGW-3.1.0-1.exe <br />2.1 Install MinGW say:D:/MinGW<br />2.2 set environment<br />&nbsp;<br />&nbsp;Path D:\MinGW\bin;<br />&nbsp;C_INCLUDE_PATH D:\MinGW\include;<br />&nbsp;CPLUS_INCLUDE_PATH &nbsp;D:\MinGW\include\c++\3.2.3;D:\MinGW\include\c++\3.2.3\mingw32;D:\MinGW\include\c++\3.2.3\backward;D:\MinGW\include;<br />&nbsp;LIBRARY_PATH&nbsp;D:\MinGW\lib;<br />&nbsp;change the D:\MinGW\bin\mingw32-make.exe file name to make.exe<br />&nbsp;<br />3 also download the Msys from MinGW.org<br />3.1 Install Msys</p>
<p>4 downloads wxWidgets-2.6.3.zip from <a href="http://www.wxwidgets.org/">http://www.wxwidgets.org/</a>&nbsp;<br />4.1 building it<br />&nbsp;unzip it first say:D:\MinGW\wxWidgets-2.6.3<br />&nbsp;&gt; cd D:\MinGW\wxWidgets-2.6.3\build\msw<br />&nbsp; &nbsp;&gt; make -f makefile.gcc BUILD=release<br />&nbsp; &nbsp;&gt; cd D:\MinGW\wxWidgets-2.6.3\samples\minimal<br />&nbsp; &nbsp;&gt; make -f makefile.gcc BUILD=release<br />4.2 use wxWidgets-2.6.3 in eclipse <br />&nbsp;Properties for a c++ project<br />&nbsp;GCC C++ Compiler<br />&nbsp;&nbsp;Preprocessor(-D) &nbsp;_WINDOWS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WIN32<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__WIN95__<br />&nbsp;&nbsp;Directories&nbsp;&nbsp;&quot;D:\MinGW\lib\gcc-lib\mingw32\3.2.3\include&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;D:\MinGW\wxWidgets-2.6.3\include&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;D:\MinGW\wxWidgets-2.6.3\lib\gcc_lib\msw&quot;<br />&nbsp;GCC C++ Linker<br />&nbsp;&nbsp;Libraries<br />&nbsp;&nbsp;&nbsp;Libraries(-l)<br />&nbsp;&nbsp;&nbsp;&nbsp;wxmsw26_adv<br />&nbsp;&nbsp;&nbsp;&nbsp;wxmsw26_core<br />&nbsp;&nbsp;&nbsp;&nbsp;wxbase26<br />&nbsp;&nbsp;&nbsp;&nbsp;wxtiff<br />&nbsp;&nbsp;&nbsp;&nbsp;wxjpeg<br />&nbsp;&nbsp;&nbsp;&nbsp;wxpng<br />&nbsp;&nbsp;&nbsp;&nbsp;wxzlib<br />&nbsp;&nbsp;&nbsp;&nbsp;wxregex<br />&nbsp;&nbsp;&nbsp;&nbsp;wxexpat<br />&nbsp;&nbsp;&nbsp;&nbsp;kernel32<br />&nbsp;&nbsp;&nbsp;&nbsp;user32<br />&nbsp;&nbsp;&nbsp;&nbsp;gdi32<br />&nbsp;&nbsp;&nbsp;&nbsp;comdlg32<br />&nbsp;&nbsp;&nbsp;&nbsp;winspool<br />&nbsp;&nbsp;&nbsp;&nbsp;winmm<br />&nbsp;&nbsp;&nbsp;&nbsp;shell32<br />&nbsp;&nbsp;&nbsp;&nbsp;comctl32<br />&nbsp;&nbsp;&nbsp;&nbsp;ole32<br />&nbsp;&nbsp;&nbsp;&nbsp;oleaut32<br />&nbsp;&nbsp;&nbsp;&nbsp;uuid<br />&nbsp;&nbsp;&nbsp;&nbsp;rpcrt4<br />&nbsp;&nbsp;&nbsp;&nbsp;advapi32<br />&nbsp;&nbsp;&nbsp;&nbsp;wsock32<br />&nbsp;&nbsp;&nbsp;&nbsp;odbc32<br />&nbsp;&nbsp;&nbsp;Library search path(-L)<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;D:\MinGW\lib&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;D:\MinGW\wxWidgets-2.6.3\lib\gcc_lib&quot;</p>
<p>5 Install some libs tools on eclpise<br />ACE_wrappers build with Msys &nbsp;<a href="http://www.cs.wustl.edu/~schmidt/ACE.html">http://www.cs.wustl.edu/~schmidt/ACE.html</a><br />mysql++-2.1.1 build with makefile and need the mysql source src zip file&nbsp;<a href="http://www.tangentsoft.net/mysql++/">http://www.tangentsoft.net/mysql++/</a>&nbsp;<br />STLport-4.6.2&nbsp;<a href="http://stlport.org">http://stlport.org</a><br />STLsgi-3.3&nbsp;<a href="http://www.sgi.com/tech/stl">http://www.sgi.com/tech/stl</a><br />boost_1_33_1 &nbsp;&nbsp;<a href="http://www.boost.org/">http://www.boost.org/</a></p>
<p>look the readme file will help you build</p>
<p><br /><a href="http://www.freebyte.com/programming/cpp/">http://www.freebyte.com/programming/cpp/</a></p><img src ="http://www.blogjava.net/bluesky/aggbug/45146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-05-09 09:40 <a href="http://www.blogjava.net/bluesky/archive/2006/05/09/45146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual C++ ActiveX Control for hosting Office documents in Visual Basic or HTML</title><link>http://www.blogjava.net/bluesky/archive/2006/04/27/43457.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Thu, 27 Apr 2006 01:03:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/04/27/43457.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/43457.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/04/27/43457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/43457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/43457.html</trackback:ping><description><![CDATA[<a href="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q311/7/65.asp&amp;NoWebContent=1">http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q311/7/65.asp&amp;NoWebContent=1</a><img src ="http://www.blogjava.net/bluesky/aggbug/43457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-04-27 09:03 <a href="http://www.blogjava.net/bluesky/archive/2006/04/27/43457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Free C++ (and C)</title><link>http://www.blogjava.net/bluesky/archive/2006/04/24/42832.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Mon, 24 Apr 2006 06:54:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/04/24/42832.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/42832.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/04/24/42832.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/42832.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/42832.html</trackback:ping><description><![CDATA[<a href="http://www.freebyte.com/programming/cpp/">http://www.freebyte.com/programming/cpp/</a><br /><br />
<table cellspacing="20" width="720" border="0" class="maintable">
    <tbody>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.anjuta.org/" target="_blank"><font color="#660000">Anjuta</font></a></td>
            <td valign="top">Free open-source IDE for C and C++ on <strong>Linux</strong>/GTK/GNOME.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.borland.com/bcppbuilder/freecompiler/" target="_blank"><font color="#660000">Borland C++</font></a></td>
            <td valign="top">This well known compiler from Borland (for <strong>Windows</strong> and DOS) can now be downloaded for free (legally)!</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.codeblocks.org/" target="_blank"><font color="#660000">Code::Blocks Studio</font></a></td>
            <td valign="top">A freeware open-source C++ IDE for Windows and Linux. It supports these compilers: GCC (MingW / Linux GCC), MSVC++, Digital Mars, Borland C++ 5.5, Open Watcom.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.bloodshed.net/devcpp.html" target="_blank"><font color="#660000">Dev-C++</font></a></td>
            <td valign="top">A full-featured Integrated Development Environment (IDE) for the C/C++ programming language. Freeware for <strong>Windows</strong>.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.ibiblio.org/onebase/onebaselinux.com/About/features/developgo.php" target="_blank"><font color="#660000">DevelopGo</font></a></td>
            <td valign="top">For Linux. Over 11 Languages, 5 popular Integrated Development Environments, 4 GUI designers, 5 GUI toolkits, extensive language bindings, wide collection of offline documentation and with core Onebase support all in a Single LiveCD. After signing up for a $10 download account, have free access to all Onebase Products, including upgrades.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.digitalmars.com/" target="_blank"><font color="#660000">Digital Mars</font></a></td>
            <td valign="top">Free C and C++ Compilers and IDE's for Win32, Win16, DOS32 and DOS, command line and GUI versions, tutorials, sample code, online updates, Standard Template Library, etc.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.rhide.com/" target="_blank"><font color="#660000">djgpp</font></a></td>
            <td valign="top">A port of the GNU compiler and programming tools to MS DOS.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.eclipse.org/cdt/" target="_blank"><font color="#660000">Eclipse CDT</font></a></td>
            <td valign="top">C and C++ Integrated Development Environment (IDE) for the Eclipse platform implemented in Java. </td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://msdn.microsoft.com/mobility/othertech/eVisualc/" target="_blank"><font color="#660000">Embedded Visual C++</font></a></td>
            <td valign="top">Free Visual C++ compiler for Windows Mobile and Windows CE.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://gcc.gnu.org/" target="_blank"><font color="#660000">GNU C++/C Compiler</font></a></td>
            <td valign="top">GCC, the GNU Compiler Collection (freeware, open source, multi-platform), includes front ends for C, C++, Objective-C, Fortran, Java, and Ada. The GCC documentation section can be found <a href="http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/index.html" target="_blank"><font color="#660000">here</font></a>.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.intel.com/cd/software/products/asmo-na/eng/compilers/clin/219856.htm" target="_blank"><font color="#660000">Intel C++ compiler</font></a></td>
            <td valign="top">Free <strong>Linux</strong> C++ compiler from Intel. Freeware for non-commercial use. It uses either the command line or the optional Eclipse-based integrated development environment (Eclipse IDE runs on IA-32 only).</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.kdevelop.org/" target="_blank"><font color="#660000">KDevelop</font></a></td>
            <td valign="top">Free open-source IDE for <strong>Linux</strong>/KDE which supports many programming languages. </td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.cs.virginia.edu/~lcc-win32/" target="_blank"><font color="#660000">LCC-Win</font></a></td>
            <td valign="top">Free C compiler/IDE for Windows . Contains compiler, debugger, resource compiler, resource editor, etc etc. Freeware for non-commercial use only.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://developer.apple.com/tools/mpw-tools/" target="_blank"><font color="#660000">Macintosh<br />Programmer's Workshop</font></a></td>
            <td valign="top">Free C++ compilers, debuggers, assemblers, documentation and related tools for the <strong>MAC</strong> platform.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.mingw.org/" target="_blank"><font color="#660000">MinGW</font></a></td>
            <td valign="top">'Minimalist GNU for Windows'. A collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to produce native Windows programs that do not rely on any 3rd-party C runtime DLLs. MinGW comes with the GNU C++ compiler.<br />See also <a href="http://www.thisiscool.com/gcc_mingw.htm" target="_blank"><font color="#660000">GCC/GCJ for MingW</font></a>.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.parinyasoft.com/" target="_blank"><font color="#660000">MinGW Developer Studio</font></a></td>
            <td valign="top">An IDE for the GNU C/C++ Compiler. Freeware for Windows and Linux.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.openwatcom.org/" target="_blank"><font color="#660000">Open Watcom</font></a></td>
            <td valign="top">Freeware open source C++ (and Fortran) compilers for Windows. Plans for Open Watcom include porting the compiler to the Linux and FreeBSD platforms</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.smorgasbordet.com/pellesc/" target="_blank"><font color="#660000">Pelles C</font></a></td>
            <td valign="top">A complete development kit for Windows and Pocket PC. It contains an IDE, optimizing C compiler, a linker, a resource compiler, a message compiler, a make utility, a debugger, install builders and much more. For Windows and Pocket PC.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.fifsoft.com/relo" target="_blank"><font color="#660000">Relo</font></a></td>
            <td valign="top">A Windows C/C++ IDE for MinGW and Borland C++ compilers. Freeware, open-source for Windows.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.rhide.com/" target="_blank"><font color="#660000">Rhide</font></a></td>
            <td valign="top">An IDE with which you can develop and debug in C, C++, Pascal and other languages and compilers which can be called from Rhide. Suitable for Linux text-console and DOS / DJGPP.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://fabrice.bellard.free.fr/tcc/" target="_blank"><font color="#660000">Tiny C Compiler</font></a></td>
            <td valign="top">Freeware, small and fast C-compiler for Linux.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://upp.sourceforge.net/" target="_blank"><font color="#660000">Ultimate++</font></a></td>
            <td valign="top">Ultimate++ consists of Set of cross-platform <strong>Windows</strong> and <strong>Linux</strong> libraries (&quot;packages&quot;), widgets (user-interface elements) an IDE, a lay-out designer for designing dialogs, image designer for designing graphical elements, language editor for managing internationalized text strings, etc. </td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.objectcentral.com/vide.htm" target="_blank"><font color="#660000">V IDE</font></a></td>
            <td valign="top">Integrated Development Environment for the GNU g++ compiler, Borland C++ 5.5, and the standard Sun Java Development Kit. Suitable for Windows and Linux.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://lab.msdn.microsoft.com/express/visualc/" target="_blank"><font color="#660000">Visual C++ Express</font></a></td>
            <td valign="top">Free Visual C++ compiler for Windows by Microsoft.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://visual-mingw.sourceforge.net/" target="_blank"><font color="#660000">Visual-MinGW</font></a></td>
            <td valign="top">Freeware open-source IDE for Windows. An Integrated Development Environment for MinGW compiler.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.widestudio.org/EE/" target="_blank"><font color="#660000">WideStudio</font></a></td>
            <td valign="top">An open source, Integrated Development Environment for developing GUI applications based on the MWT(Multi-Platform Widget Toolkit). Supported platforms: Windows, WindowsCE, Linux, FreeBSD, SOLARIS, MacOSX, etc. </td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://wxdsgn.sourceforge.net/" target="_blank"><font color="#660000">wx-Devcpp</font></a></td>
            <td valign="top">wxWidgets form designer plugin for Dev-C++ which can help you to create Dialogs and Frames for <a href="http://www.wxwidgets.org/" target="_blank"><font color="#660000">wxWidgets</font></a> visually.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://developer.apple.com/tools/xcode/" target="_blank"><font color="#660000">XCode</font></a></td>
            <td valign="top">Integrated development environment (IDE) for creating <strong>Mac OS X</strong> Universal Binaries that run natively on PowerPC and Intel-based Macintosh computers. Freeware.</td>
        </tr>
    </tbody>
</table>
<br />
<table cellspacing="20" width="720" border="0" class="maintable">
    <tbody>
        <tr>
            <th valign="top" colspan="2">Non-free C++ Compilers and IDE's</th>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.codeforge.com/" target="_blank"><font color="#660000">Code Forge</font></a></td>
            <td valign="top">Professional Integrated Development Environment for Unix/Linux with project management features and edit/compile/debug support for over 30 programming languages. The IDE has preconfigured support for all major free and commercial compilers on the market today, such as GCC.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.newplanetsoftware.com/jcc/" target="_blank"><font color="#660000">Code Crusader</font></a></td>
            <td valign="top">IDE for Linux-Intel, Linux-PPC and Solaris. Supports over 30 programming languages. It comes with the JX GUI Application framework, which is built directly on top of Xlib.</td>
        </tr>
        <tr>
            <td colspan="2"><a name="freecppguilibraries"></a>&nbsp;</td>
        </tr>
        <tr>
            <th valign="top" colspan="2">Free C++ GUI Libraries</th>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.fltk.org/" target="_blank"><font color="#660000">FLTK</font></a></td>
            <td valign="top">A cross-platform C++ GUI toolkit for UNIX/Linux, Windows, and MacOS X providing modern GUI functionality without the usual bloat. It also supports 3D graphics via OpenGL and its built-in GLUT emulation.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.fox-toolkit.org/" target="_blank"><font color="#660000">Fox Toolkit</font></a></td>
            <td valign="top">Cross-platform C++ user-interface library, freeware, open-source.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.memecode.com/lgi.php" target="_blank"><font color="#660000">LGI</font></a></td>
            <td valign="top">Cross-platform C++ framework for abstracting out all the operating system dependencies that you can produce portable code. It handles all the graphical interface functions, threading and semaphores, network connectivity and lots of other bits and pieces to help build small, fast and reliable applications. </td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.trolltech.com/" target="_blank"><font color="#660000">Qt</font></a></td>
            <td valign="top">Cross-platform C++ GUI framework.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.scintilla.org/" target="_blank"><font color="#660000">Scintilla</font></a></td>
            <td valign="top">A free source code editing component. Freeware, open-source for Linux and Windows.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.geocities.com/SiliconValley/Vista/7184/guitool.html" target="_blank"><font color="#660000">The GUI Toolkit,<br />Framework Page</font></a></td>
            <td valign="top">A comprehensive reference on toolkits for building graphical user interfaces (GUIs), with emphasis on resources for Free Software (Open Source)</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.objectcentral.com/vgui/vgui.htm" target="_blank"><font color="#660000">V</font></a></td>
            <td valign="top">V is a free, multiple platform C++ graphical user interface framework designed to make it easy to write C++ GUI applications, commercial, shareware, or freeware. V is available for X Athena, X Motif/Lesstif, all Windows platforms, and OS/2.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://sourceforge.net/projects/whisper2" target="_blank"><font color="#660000">Whisper2</font></a></td>
            <td valign="top">C++ application framework for the Mac, Unix and Windows.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.wxwindows.org/" target="_blank"><font color="#660000">wxWidgets</font></a></td>
            <td valign="top">API for writing GUI applications on multiple platforms. Link with the appropriate library for your platform (Windows/Unix/Mac, others coming shortly) and compiler (almost any popular C++ compiler), and your application will adopt the look and feel appropriate to that platform. Additionally: online help, network programming, streams, clipboard and drag and drop, multi-threading, image loading and saving in a variety of popular formats, database support, HTML viewing and printing, etc. Freeware, Open Source</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://zoolib.sourceforge.net/" target="_blank"><font color="#660000">ZooLib</font></a></td>
            <td valign="top">A cross-platform application framework, enables you to write a single set of C++ sources and compile them to native executables to run on MacOS, Windows, BeOS or Unix/Linux.</td>
        </tr>
        <tr>
            <td colspan="2"><a name="freecppdatabaselibraries"></a>&nbsp;</td>
        </tr>
        <tr>
            <th valign="top" colspan="2">Free C++ Database Libraries</th>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.datareel.com/" target="_blank"><font color="#660000">DataReel</font></a></td>
            <td valign="top">A cross-platform C++ development kit used to build multi-threaded database and communications applications. Using DataReel you can build end-user applications, embedded systems, and reusable libraries for multiple operating systems.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.csse.monash.edu.au/~darrenp/diamondbase.html" target="_blank"><font color="#660000">DiamondBase</font></a></td>
            <td valign="top">C++ database engine which is available for free non commercial use, and is negotiable for commercial use.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.tangentsoft.net/mysql++/" target="_blank"><font color="#660000">MySQL++</font></a></td>
            <td valign="top">MySQL++ is a C++ wrapper for <a href="http://www.freebyte.com/programming/database/"><font color="#660000">MySQL's</font></a> API.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.sqlite.org/" target="_blank"><font color="#660000">SQLLite</font></a></td>
            <td valign="top">SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.</td>
        </tr>
        <tr>
            <td colspan="2"><a name="freecppcompressionlibs"></a>&nbsp;</td>
        </tr>
        <tr>
            <th valign="top" colspan="2">Free C++ Compression Libraries</th>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.kyz.uklinux.net/libmspack/" target="_blank"><font color="#660000">libmspack</font></a></td>
            <td valign="top">Portable C++ library which provides compression and decompression of some file formats used by Microsoft (.cab, .hlp, .chm, compress.exe, etc).</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.oberhumer.com/opensource/ucl/" target="_blank"><font color="#660000">UCL</font></a></td>
            <td valign="top">UCL is a portable lossless data compression library written in ANSI C. UCL implements a number of compression algorithms that achieve an excellent compression ratio while allowing *very* fast decompression. Decompression requires no additional memory.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.artpol-software.com/index_zip.html" target="_blank"><font color="#660000">ZipArchive</font></a></td>
            <td valign="top">Free zip/unzip C-library.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.zlib.net/" target="_blank"><font color="#660000">ZLib</font></a></td>
            <td valign="top">Free zip/unzip C-library.</td>
        </tr>
        <tr>
            <td colspan="2"><a name="freecppgraphicslibraries"></a>&nbsp;</td>
        </tr>
        <tr>
            <th valign="top" colspan="2">Free C++ Graphics and Game Libraries</th>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.amanith.org/" target="_blank"><font color="#660000">Amanith Framework</font></a></td>
            <td valign="top">A cross-platform (Linux, Win32, Mac OX X, FreeBSD, Linux and IRIX) open source C++ framework for 2D and 3D vector graphics that includes 2D curves, a 2D font engine, bitmap vectorizer, tessellator, and an OpenGL extensions manager.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.ogre3d.org/" target="_blank"><font color="#660000">OGRE 3D</font></a></td>
            <td valign="top">Open source 3D-graphics and game engine for Linux, MAC and Windows.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.opengl.org/" target="_blank"><font color="#660000">OpenGL</font></a></td>
            <td valign="top">Excellent high-performance cross-platform 3D graphics library. Elegant API. It can be used for a variety of purposes, such as: animations, virtual reality, game-programming, simulations, etc.</td>
        </tr>
        <tr>
            <td valign="top" nowrap="nowrap"><a href="http://www.oscilloscope-lib.com/" target="_blank"><font color="#660000">Real-Time Oscilloscope<br />DLL Library</font></a></td>
            <td valign="top">Freeware real-time Windows Oscilloscope DLL with an API for C++ , Delphi, MathWorks Matlab and Simulink.</td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/bluesky/aggbug/42832.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-04-24 14:54 <a href="http://www.blogjava.net/bluesky/archive/2006/04/24/42832.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]PHP开发框架总结</title><link>http://www.blogjava.net/bluesky/archive/2006/04/18/41654.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Tue, 18 Apr 2006 07:11:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/04/18/41654.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/41654.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/04/18/41654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/41654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/41654.html</trackback:ping><description><![CDATA[<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20050111_231555">http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20050111_231555</a><br /><br />相信每个PHP开发人员都见过很多的PHP开发框架，如<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20051220_110612" target="_blank">Symfony</a>、Blueshoes和最近比较火的<a href="http://cakephp.org/" target="_blank">Cake</a>等，本站也曾经介绍过不少这样的<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20050111_231555" target="_blank">开发框架</a><br /><br /><br /><span id="zoom">收集整理了一些主要的PHP开发框架和CMS系统平台，在此一并作个总结，或许以后会有补充。<br /><br /><span style="COLOR: orangered"><strong>开发框架</strong></span><br /><strong>WACT</strong> <a href="http://wact.sourceforge.net/" target="_blank">http://wact.sourceforge.net/</a><br />老牌的PHP编程框架，实现了很多企业级的开发模式<br /><br /><strong>Horde</strong> <a href="http://www.horde.org/horde/" target="_blank">http://www.horde.org/horde/</a><br />提供了一些常用类库，可以满足参数处理、数据压缩、浏览器检测、链接跟踪以及 MIME。需要PEAR类库的支持，提供了API参考。<br /><br /><strong>Seagull </strong><a href="http://seagull.phpkitchen.com/" target="_blank">http://seagull.phpkitchen.com/</a> <strong><span style="COLOR: orangered">推荐</span></strong><br />一个面向对象的PHP开发框架，使用了Pear类库，其主要特性有：运用组件方式、简化数据访问、错误处理机制和权限认证管理等。<br /><br /><strong>studs</strong> <a href="http://mojavelinux.com/projects/studs/" target="_blank">http://mojavelinux.com/projects/studs/</a> &nbsp;<strong><span style="COLOR: orangered">推荐</span></strong><br />Jakarta Struts结构移植过来的PHP开发框架，使用面向对象的开发结构和API，模拟了一个HTTP Servlet容器<br />和使用了PHP服务页面引擎技术<br /><br /><strong>InterJinn</strong> <a href="http://www.interjinn.com/" target="_blank">http://www.interjinn.com/</a><br />有很多扩展模块提供下载，可惜配置文件使用的是inc格式<br /><br /><strong>Php.MVC</strong> <a href="http://www.phpmvc.net/" target="_blank">http://www.phpmvc.net/</a><br />知名的PHP开发框架 ，基于Java的Struts<br /><br /><strong>Phrame</strong> <a href="http://phrame.sourceforge.net/" target="_blank">http://phrame.sourceforge.net/</a><br />虽然不大，但用的很多，也是基于Struts思想<br /><br /><strong>Ambivalence</strong> <a href="http://amb.sourceforge.net/" target="_blank">http://amb.sourceforge.net/</a><br />基于Maverick思想实现的PHP开发框架<br /><br /><strong>binarycloud</strong> <a href="http://www.binarycloud.com/" target="_blank">http://www.binarycloud.com/</a><br />使用了Smarty模板引擎，文档很完善<br /><br /><strong>Prado</strong> <a href="http://www.xisc.com/" target="_blank">http://www.xisc.com/</a><br />Zend获奖作品，基于事件驱动的PHP开发框架<br /><br /><strong>rwfphp</strong> <a href="http://www.rwfphp.org/" target="_blank">http://www.rwfphp.org/</a><br />面向对象和事件驱动的php开发框架<br /><br /><strong>Krysalis</strong> <a href="http://www.kompletecms.com/" target="_blank">http://www.kompletecms.com/</a> <br />把XML文档转换为XHTML文档的PHP系统<br /><br /><strong>FastFrame</strong> &nbsp;<a href="http://codejanitor.com/wp/apps/fastframe/" target="_blank">http://codejanitor.com/wp/apps/fastframe/</a><br />可以快速地实现表单提交<br /><br /><strong>Blueshoes</strong> <a href="http://www.blueshoes.net/" target="_blank">http://www.blueshoes.net/</a> <strong><span style="COLOR: orangered">推荐</span></strong><br />比较先进的一个framework，提供了很多GUI组件<br /><br />下面这些我也没有详细看<br /><strong>Cgiapp</strong> <a href="http://weierophinney.net/matthew/download" target="_blank">http://weierophinney.net/matthew/download</a><br /><strong>Fuselogic</strong> &nbsp;<a href="http://www.haltebis.com/index/wakka/main/FuseLogic" target="_blank">http://www.haltebis.com/index/wakka/main/FuseLogic</a><br /><strong>Copix</strong> <a href="http://copix.aston.fr/" target="_blank">http://copix.aston.fr/</a><br /><strong>logicreate</strong> <a href="http://www.logicreate.com/" target="_blank">http://www.logicreate.com/</a><br /><strong>booby </strong><a href="http://www.nauta.be/booby/" target="_blank">http://www.nauta.be/booby/</a> <br /><br /><strong><span style="COLOR: orangered">主要的CMS系统</span></strong><br /><strong>Drupal </strong><a href="http://www.drupal.org/" target="_blank">http://www.drupal.org/</a><br /><strong>Mambo</strong> <a href="http://www.mamboportal.com/" target="_blank">http://www.mamboportal.com/</a><br /><strong>Nucleus </strong><a href="http://nucleuscms.org/" target="_blank">http://nucleuscms.org/</a><br /><strong>Midgard</strong> <a href="http://www.midgard-project.org/" target="_blank">http://www.midgard-project.org/</a><br /><strong>Pmachine</strong> <a href="http://www.pmachine.com/" target="_blank">http://www.pmachine.com/</a><br /><strong>PostNuke</strong> <a href="http:///" target="_blank">http://www.post-nuke.net/</a><br /><strong>sitellite</strong> <a href="http://www.sitellite.org/" target="_blank">http://www.sitellite.org/ </a><br /><strong>eZPublish</strong> <a href="http://ez.no/" target="_blank">http://ez.no/</a><br /><strong>limb </strong><a href="http://limb-project.com/" target="_blank">http://limb-project.com/</a><br />PS：众多的Blog系统就不再这个范畴之内了，不再列出</span><img src ="http://www.blogjava.net/bluesky/aggbug/41654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-04-18 15:11 <a href="http://www.blogjava.net/bluesky/archive/2006/04/18/41654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP文本数据库引擎 </title><link>http://www.blogjava.net/bluesky/archive/2006/04/13/40827.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Thu, 13 Apr 2006 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/04/13/40827.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/40827.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/04/13/40827.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/40827.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/trackbacks/40827.html</trackback:ping><description><![CDATA[<a href="http://www.zengrong.net/25/">http://www.zengrong.net/25/</a><br /><br />
<p><a href="http://chibiguy.dotgeek.org/" target="_blank">txtSQL</a></p>
<ul>
    <li><a href="http://txtsql.sourceforge.net/content/demos/txtSQLAdmin/index.php" target="_blank">txtSQLAdmin</a> </li>
    <li><a href="http://chibiguy.dotgeek.org/docs/index.php" target="_blank">帮助文档</a> </li>
    <li><a href="http://chibiguy.dotgeek.org/pages/benchmarks.php?section=3" target="_blank">测试报告</a> </li>
</ul>
<ol>
    <li>速度快（有四个主要的文本数据库速度比较） </li>
    <li>基本上模拟了SQL的所有语法 </li>
    <li>强大的错误处理 </li>
    <li>完善的帮助文档 </li>
    <li>免费使用 </li>
</ol>
<p><a href="http://www.3ants.org/txtdb/" target="_blank">txtdb</a></p>
<p>国人开发的一个小型文本数据库系统。</p>
<p><a href="http://www.myupb.com/ourscripts_textdb.php" target="_blank">Myupb的TextDB</a></p>
<p><a href="http://www.c-worker.ch/txtdbapi/" target="_blank">txt db api</a></p>
<p><a href="http://sourceforge.net/projects/fsql/" target="_blank">Flat-File SQL</a></p>
<p><a href="http://textdb.sourceforge.net/" target="_blank">TextDB</a> </p><img src ="http://www.blogjava.net/bluesky/aggbug/40827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bluesky/" target="_blank">bluesky</a> 2006-04-13 10:58 <a href="http://www.blogjava.net/bluesky/archive/2006/04/13/40827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Maven的顺序</title><link>http://www.blogjava.net/bluesky/archive/2006/03/29/38008.html</link><dc:creator>bluesky</dc:creator><author>bluesky</author><pubDate>Wed, 29 Mar 2006 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/bluesky/archive/2006/03/29/38008.html</guid><wfw:comment>http://www.blogjava.net/bluesky/comments/38008.html</wfw:comment><comments>http://www.blogjava.net/bluesky/archive/2006/03/29/38008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bluesky/comments/commentRss/38008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bluesky/services/t