﻿<?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-zlpgm</title><link>http://www.blogjava.net/zlpgm/</link><description>丰富自己的灵魂！</description><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 22:47:29 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 22:47:29 GMT</pubDate><ttl>60</ttl><item><title>window.showModalDialog刷新父窗口和本窗口的方法及注意</title><link>http://www.blogjava.net/zlpgm/archive/2010/05/12/320670.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Wed, 12 May 2010 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2010/05/12/320670.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/320670.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2010/05/12/320670.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/320670.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/320670.html</trackback:ping><description><![CDATA[<p>window.showModalDialog刷新父窗口和本窗口的方法及注意：<br />
&nbsp;<br />
一.刷新父窗口的方法：<br />
&nbsp;&nbsp; A.使用window.returnValue给父窗口传值，然后根据值判断是否刷新。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在window.showModalDialog窗口页面中用window.returnValue方式设置返回值；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比如：window.returnValue='refresh';<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; B。在写window.showModalDialog弹出窗口函数时，定义个变量，然后根据变量值进行操作父窗口的操作；<br />
&nbsp;&nbsp; 例如：var winPar=window.showModalDialog(urls,'ERPWINDOWS','dialogWidth='+widths+'px;dialogHeight='+heigths+'px;status=no;center=yes;scroll=no');<br />
&nbsp; if(winPar == "refresh")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.location.reload();//当window.showModalDialog窗口关闭时执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winPar为A步骤给showModalDialog窗口设置的返回值</p>
<p>&nbsp; 总结：由于window.showModalDialog函数打开一个IE的模式窗口(就是打开后不能操作父窗口,只能等模式窗口关闭时才能操作),<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以想要刷新父窗口只能在模式窗口关闭后执行。用window.returnValue可以向父窗口传值，这样一来可以用从模式窗口向父窗口传递值，<br />
&nbsp;<br />
&nbsp;然后根据值判断操作父窗口的方式来刷新。这样在任何关闭了模式窗口后父窗口都会自动刷新.</p>
<p>二.刷新模式本窗口<br />
&nbsp;&nbsp; showModalDialog窗口与window.open打开的窗口刷新本窗口时不同，showModalDialo窗口也不能用F5刷新，也没有右键操作<br />
&nbsp;&nbsp; A. 在模式窗口页面中加入：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;base target="_self"&gt; //在html和body之间<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a id="reload" href="本页面url" style="display:none"&gt;&lt;/a&gt;</p>
<p>&nbsp;&nbsp; B. 在需要执行刷新操作的地方执行以下js:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reload.click();//reload为A中隐藏a标签的id,当然可以换成其它名称</p>
<p><br />
三。注意事项</p>
<p>&nbsp;&nbsp;&nbsp; 在点击window.showModalDialog窗口的链接的时候会打开新窗口，想要阻止打开新窗口，需要在窗口页面中的html和body之间<br />
&nbsp;&nbsp;&nbsp; 加入： &lt;base target="_self" /&gt;即可</p>
<img src ="http://www.blogjava.net/zlpgm/aggbug/320670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2010-05-12 10:28 <a href="http://www.blogjava.net/zlpgm/archive/2010/05/12/320670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Java 写文件时内容编码处理</title><link>http://www.blogjava.net/zlpgm/articles/319068.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Thu, 22 Apr 2010 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/articles/319068.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/319068.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/articles/319068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/319068.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/319068.html</trackback:ping><description><![CDATA[<p>在工作中需要用到生成文件及写入文件内容的，开始时使用FileWriter写入文件内容，在使用生成的文件时，发现编码不正确，于是找FileWriter怎么设置编码，找遍了所有的FileWriter方法都没有设置编码的。于是乎，想到换其它方式解决。现在找到了一种替代的方式。方式如下：</p>
<p>OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(sFilePath),"UTF-8");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;out.write(sContent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;out.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;out.close();</p>
<p>使用FileWriter写入文件内容的代码为：</p>
<p>&nbsp; FileWriter fw=new FileWriter(sFilePath);<br />
&nbsp; fw.write(sContent);<br />
&nbsp; fw.close();</p>
<p>总结：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; FileWriter在写文件的时候在中文win下encoding基本是gb2312，在en的win下基本是iso-8859-1，总之不是utf-8。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;所以要创建一个utf-8的文件，用FileWriter是不行的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;目前不知道如何更改FileWriter用来写文件的编码方式，因此对于创建utf-8文件使用OutputStreamWriter方式来代替。</p>
<img src ="http://www.blogjava.net/zlpgm/aggbug/319068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2010-04-22 10:00 <a href="http://www.blogjava.net/zlpgm/articles/319068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向大家介绍一种很不错，也是Linux中的权限管理算法。(转载)</title><link>http://www.blogjava.net/zlpgm/archive/2009/12/24/307134.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Thu, 24 Dec 2009 04:39:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2009/12/24/307134.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/307134.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2009/12/24/307134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/307134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/307134.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 向大家介绍一种很不错，也是Linux中的权限管理算法。<br />
<br />
定义a^b为：a的b次方<br />
假如，我们为每一个操作设定一个唯一的整数值，比如：<br />
<br />
删除Ａ－－－0<br />
修改Ａ－－－1<br />
添加Ａ－－－2<br />
<br />
删除Ｂ－－－3<br />
修改Ｂ－－－4<br />
添加Ｂ－－－5<br />
。。。<br />
<br />
理论上可以有Ｎ个操作，这取决于你用于储存用户权限值的数据类型了。<br />
<br />
这样，如果用户有权限：添加Ａ－－－2；删除Ｂ－－－3；修改Ｂ－－－4<br />
那用户的权限值 purview =2^2 2^3 2^4＝28，也就是2的权的和了<br />
化成二进制可以表示为11100<br />
如果要验证用户是否有删除Ｂ的权限，就可以通过位与运算来实现。<br />
在Ｊａｖａ里，位与运算运算符号为＆<br />
即是：int value = purview &amp;((int)Math.pow(2,3));<br />
你会发现，当用户有操作权限时，运算出来的结果都会等于这个操作需要的权限值！<br />
<br />
原理：<br />
位与运算，顾名思义就是对位进行与运算：<br />
以上面的式子为例：purview &amp; 2^3 也就是　28&amp;8<br />
将它们化成二进制有<br />
11100<br />
＆ 01000<br />
-------------------<br />
01000 == 8(十进制)　＝＝　2^3<br />
同理，如果要验证是否有删除Ａ－－－0的权限<br />
可以用：purview &amp;((int)Math.pow(2,0));<br />
即：<br />
11100<br />
＆ 00001<br />
------------------------<br />
00000 == 0(十进制)　　！＝　2^0<br />
<br />
这种算法的一个优点是速度快。可以同时处理Ｎ个权限，设置Ｎ种角色．<br />
如果想验证是否同时有删除Ａ－－－0和删除Ｂ－－－3的权限<br />
可以用purview&amp;(2^0 2^3)==(2^0 2^3)?true:false;<br />
设置多角色用户。根据权限值判断用户的角色。。。<br />
<br />
下面提供一个java的单操作权限判断的代码：<br />
<br />
<br />
//userPurview是用户具有的总权限<br />
//optPurview是一个操作要求的权限为一个整数（没有经过权的！）<br />
public static boolean checkPower(int userPurview, int optPurview){<br />
int purviewValue = (int)Math.pow(2, optPurview);<br />
return (userPurview &amp; purviewValue) == purviewValue;<br />
}<br />
当然，多权限的验证只要扩展一下就可以了。<br />
几点注意事项：首先，一个系统可能有很多的操作，因此，请建立数据字典，以便查阅，修改时使用。其次，如果用数据库储存用户权限，请注意数值的有效范围。操作权限值请用唯一的整数！Java的int类型最多可以储存11个权限和．如果超过，可以选择其它数据类型，而且建议不同模块，使用多个权限变量．<br />
<br />
<br />
<img src ="http://www.blogjava.net/zlpgm/aggbug/307134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2009-12-24 12:39 <a href="http://www.blogjava.net/zlpgm/archive/2009/12/24/307134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Django model字段类型</title><link>http://www.blogjava.net/zlpgm/archive/2009/08/31/293317.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Mon, 31 Aug 2009 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2009/08/31/293317.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/293317.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2009/08/31/293317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/293317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/293317.html</trackback:ping><description><![CDATA[<p class="section">Django model<a id="id5" name="id5">字段类型</a>:</p>
<div class="section">
<dl class="docutils">
<dt><span class="pre"><span style="font-family: Courier New">AutoField</span></span>
<dd>一个 <span class="pre"><span style="font-family: Courier New">IntegerField</span></span>, 添加记录时它会自动增长. 你通常不需要直接使用这个字段; 如果你不指定主键的话,系统会自动添加一个主键字段到你的 model.(参阅 _自动主键字段)
<dt><span class="pre"><span style="font-family: Courier New">BooleanField</span></span>
<dd>A true/false field. admin 用 checkbox 来表示此类字段.
<dt><span class="pre"><span style="font-family: Courier New">CharField</span></span>
<dd>
<p class="first">字符串字段, 用于较短的字符串.</p>
<p>如果要保存大量文本, 使用 <span class="pre"><span style="font-family: Courier New">TextField</span></span>.</p>
<p>admin 用一个 <span style="font-family: Courier New"><span class="pre">&lt;input</span> <span class="pre">type="text"&gt;</span></span> 来表示此类字段 (单行输入).</p>
<p class="last"><span class="pre"><span style="font-family: Courier New">CharField</span></span> 要求必须有一个参数 <span class="pre"><span style="font-family: Courier New">maxlength</span></span>, 用于从数据库层和Django校验层限制该字段所允许的最大字符数.</p>
<dt><span class="pre"><span style="font-family: Courier New">CommaSeparatedIntegerField</span></span>
<dd>用于存放逗号分隔的整数值. 类似 <span class="pre"><span style="font-family: Courier New">CharField</span></span>, 必须要有 <span class="pre"><span style="font-family: Courier New">maxlength</span></span> 参数.
<dt><span class="pre"><span style="font-family: Courier New">DateField</span></span>
<dd>
<p class="first">一个日期字段. 共有下列额外的可选参数:</p>
<blockquote>
<table class="docutils" border="1">
    <thead>
        <tr>
            <th class="head">Argument</th>
            <th class="head">描述</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><span class="pre"><span style="font-family: Courier New">auto_now</span></span></td>
            <td>当对象被保存时,自动将该字段的值设置为当前时间.通常用于表示 "last-modified" 时间戳.</td>
        </tr>
        <tr>
            <td><span class="pre"><span style="font-family: Courier New">auto_now_add</span></span></td>
            <td>当对象首次被创建时,自动将该字段的值设置为当前时间.通常用于表示对象创建时间.</td>
        </tr>
    </tbody>
</table>
</blockquote>
<p class="last">admin 用一个文本框 <span style="font-family: Courier New"><span class="pre">&lt;input</span> <span class="pre">type="text"&gt;</span></span> 来表示该字段数据(附带一个 JavaScript 日历和一个"Today"快键.</p>
<dt><span class="pre"><span style="font-family: Courier New">DateTimeField</span></span>
<dd>
<blockquote>一个日期时间字段. 类似 <span class="pre"><span style="font-family: Courier New">DateField</span></span> 支持同样的附加选项.</blockquote>
<p class="last">admin 用两上文本框 <span style="font-family: Courier New"><span class="pre">&lt;input</span> <span class="pre">type="text"&gt;</span></span> 表示该字段顺序(附带JavaScript shortcuts).</p>
<dt><span class="pre"><span style="font-family: Courier New">EmailField</span></span>
<dd>一个带有检查 Email 合法性的 <span class="pre"><span style="font-family: Courier New">CharField</span></span>,不接受 <span class="pre"><span style="font-family: Courier New">maxlength</span></span> 参数.
<dt><span class="pre"><span style="font-family: Courier New">FileField</span></span>
<dd>
<p class="first">一个文件上传字段.</p>
<p>要求一个必须有的参数: <span class="pre"><span style="font-family: Courier New">upload_to</span></span>, 一个用于保存上载文件的本地文件系统路径. 这个路径必须包含 <a class="reference" href="http://docs.python.org/lib/module-time.html#l2h-1941">strftime formatting</a>, 该格式将被上载文件的 date/time 替换(so that uploaded files don't fill up the given directory).</p>
<p>admin 用一个``&lt;input type="file"&gt;``部件表示该字段保存的数据(一个文件上传部件) .</p>
<p>在一个 model 中使用 <span class="pre"><span style="font-family: Courier New">FileField</span></span> 或 <span class="pre"><span style="font-family: Courier New">ImageField</span></span> 需要以下步骤:</p>
<ol class="last arabic simple">
    <li>在你的 settings 文件中, 定义一个完整路径给 <span class="pre"><span style="font-family: Courier New">MEDIA_ROOT</span></span> 以便让 Django在此处保存上传文件. (出于性能考虑,这些文件并不保存到数据库.) 定义 <span class="pre"><span style="font-family: Courier New">MEDIA_URL</span></span> 作为该目录的公共 URL. 要确保该目录对 WEB 服务器用户帐号是可写的.
    <li>在你的 model 中添加 <span class="pre"><span style="font-family: Courier New">FileField</span></span> 或 <span class="pre"><span style="font-family: Courier New">ImageField</span></span>, 并确保定义了 <span class="pre"><span style="font-family: Courier New">upload_to</span></span> 选项,以告诉 Django 使用 <span class="pre"><span style="font-family: Courier New">MEDIA_ROOT</span></span> 的哪个子目录保存上传文件.
    <li>你的数据库中要保存的只是文件的路径(相对于 <span class="pre"><span style="font-family: Courier New">MEDIA_ROOT</span></span>). 出于习惯你一定很想使用 Django 提供的 <span class="pre"><span style="font-family: Courier New">get_&lt;fieldname&gt;_url</span></span> 函数.举例来说,如果你的 <span class="pre"><span style="font-family: Courier New">ImageField</span></span> 叫作 <span class="pre"><span style="font-family: Courier New">mug_shot</span></span>, 你就可以在模板中以 <span style="font-family: Courier New"><span class="pre">{{</span> <span class="pre">object.get_mug_shot_url</span> <span class="pre">}}</span></span> 这样的方式得到图像的绝对路径. </li>
</ol>
<dt><span class="pre"><span style="font-family: Courier New">FilePathField</span></span>
<dd>
<p class="first">可选项目为某个特定目录下的文件名. 支持三个特殊的参数, 其中第一个是必须提供的.</p>
<blockquote>
<table class="docutils" border="1">
    <thead>
        <tr>
            <th class="head">参数</th>
            <th class="head">描述</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><span class="pre"><span style="font-family: Courier New">path</span></span></td>
            <td>必需参数. 一个目录的绝对文件系统路径. <span class="pre"><span style="font-family: Courier New">FilePathField</span></span> 据此得到可选项目. Example: <span class="pre"><span style="font-family: Courier New">"/home/images"</span></span>.</td>
        </tr>
        <tr>
            <td><span class="pre"><span style="font-family: Courier New">match</span></span></td>
            <td>可选参数. 一个正则表达式, 作为一个字符串, <span class="pre"><span style="font-family: Courier New">FilePathField</span></span> 将使用它过滤文件名. 注意这个正则表达式只会应用到 base filename 而不是路径全名. Example: <span class="pre"><span style="font-family: Courier New">"foo.*\.txt^"</span></span>, 将匹配文件 <span class="pre"><span style="font-family: Courier New">foo23.txt</span></span> 却不匹配 <span class="pre"><span style="font-family: Courier New">bar.txt</span></span> 或 <span class="pre"><span style="font-family: Courier New">foo23.gif</span></span>.</td>
        </tr>
        <tr>
            <td><span class="pre"><span style="font-family: Courier New">recursive</span></span></td>
            <td>可选参数.要么 <span class="pre"><span style="font-family: Courier New">True</span></span> 要么 <span class="pre"><span style="font-family: Courier New">False</span></span>. 默认值是 <span class="pre"><span style="font-family: Courier New">False</span></span>. 是否包括 <span class="pre"><span style="font-family: Courier New">path</span></span> 下面的全部子目录.</td>
        </tr>
    </tbody>
</table>
</blockquote>
<p>这三个参数可以同时使用.</p>
<p>我已经告诉过你 <span class="pre"><span style="font-family: Courier New">match</span></span> 仅应用于 base filename, 而不是路径全名. 那么,这个例子:</p>
<pre class="literal-block">FilePathField(path="/home/images", match="foo.*", recursive=True)
</pre>
<p class="last">...会匹配 <span class="pre"><span style="font-family: Courier New">/home/images/foo.gif</span></span> 而不匹配 <span class="pre"><span style="font-family: Courier New">/home/images/foo/bar.gif</span></span></p>
<dt><span class="pre"><span style="font-family: Courier New">FloatField</span></span>
<dd>
<p class="first">一个浮点数. 必须 <strong>提供两个</strong> 参数:</p>
<blockquote>
<table class="docutils" border="1">
    <thead>
        <tr>
            <th class="head">参数</th>
            <th class="head">描述</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><span class="pre"><span style="font-family: Courier New">max_digits</span></span></td>
            <td>总位数(不包括小数点和符号)</td>
        </tr>
        <tr>
            <td><span class="pre"><span style="font-family: Courier New">decimal_places</span></span></td>
            <td>小数位数</td>
        </tr>
    </tbody>
</table>
</blockquote>
<p>举例来说, 要保存最大值为 999 (小数点后保存2位),你要这样定义字段:</p>
<pre class="literal-block">models.FloatField(..., max_digits=5, decimal_places=2)
</pre>
<p>要保存最大值一百万(小数点后保存10位)的话,你要这样定义:</p>
<pre class="literal-block">models.FloatField(..., max_digits=19, decimal_places=10)
</pre>
<p class="last">admin 用一个文本框(<span style="font-family: Courier New"><span class="pre">&lt;input</span> <span class="pre">type="text"&gt;</span></span>)表示该字段保存的数据.</p>
<dt><span class="pre"><span style="font-family: Courier New">ImageField</span></span>
<dd>
<p class="first">类似 <span class="pre"><span style="font-family: Courier New">FileField</span></span>, 不过要校验上传对象是否是一个合法图片.它有两个可选参数:<span class="pre"><span style="font-family: Courier New">height_field</span></span> 和 <span class="pre"><span style="font-family: Courier New">width_field</span></span>,如果提供这两个参数,则图片将按提供的高度和宽度规格保存.</p>
<p class="last">该字段要求 <a class="reference" href="http://www.pythonware.com/products/pil/">Python Imaging Library</a>.</p>
<dt><span class="pre"><span style="font-family: Courier New">IntegerField</span></span>
<dd>
<p class="first">用于保存一个整数.</p>
<p class="last">admin 用一个``&lt;input type="text"&gt;``表示该字段保存的数据(一个单行编辑框)</p>
<dt><span class="pre"><span style="font-family: Courier New">IPAddressField</span></span>
<dd>
<p class="first">一个字符串形式的 IP 地址, (i.e. "24.124.1.30").</p>
<p class="last">admin 用一个``&lt;input type="text"&gt;``表示该字段保存的数据(一个单行编辑框)</p>
<dt><span class="pre"><span style="font-family: Courier New">NullBooleanField</span></span>
<dd>
<p class="first">类似 <span class="pre"><span style="font-family: Courier New">BooleanField</span></span>, 不过允许 <span class="pre"><span style="font-family: Courier New">NULL</span></span> 作为其中一个选项. 推荐使用这个字段而不要用 <span class="pre"><span style="font-family: Courier New">BooleanField</span></span> 加 <span class="pre"><span style="font-family: Courier New">null=True</span></span> 选项.</p>
<p class="last">admin 用一个选择框 <span class="pre"><span style="font-family: Courier New">&lt;select&gt;</span></span> (三个可选择的值: "Unknown", "Yes" 和 "No" ) 来表示这种字段数据.</p>
<dt><span class="pre"><span style="font-family: Courier New">PhoneNumberField</span></span>
<dd>一个带有合法美国风格电话号码校验的 <span style="font-family: Courier New"><span class="pre">CharField``(格式:</span> <span class="pre">``XXX-XXX-XXXX</span></span>).
<dt><span class="pre"><span style="font-family: Courier New">PositiveIntegerField</span></span>
<dd>类似 <span class="pre"><span style="font-family: Courier New">IntegerField</span></span>, 但取值范围为非负整数(这个字段应该是允许0值的....所以字段名字取得不太好,无符号整数就对了嘛).
<dt><span class="pre"><span style="font-family: Courier New">PositiveSmallIntegerField</span></span>
<dd>类似 <span class="pre"><span style="font-family: Courier New">PositiveIntegerField</span></span>, 取值范围较小(数据库相关)
<dt><span class="pre"><span style="font-family: Courier New">SlugField</span></span>
<dd>
<p class="first">"Slug" 是一个报纸术语. slug 是某个东西的小小标记(短签), 只包含字母,数字,下划线和连字符.它们通常用于URLs.</p>
<p>若你使用 Django 开发版本,你可以指定 <span class="pre"><span style="font-family: Courier New">maxlength</span></span>. 若 <span class="pre"><span style="font-family: Courier New">maxlength</span></span> 未指定, Django 会使用默认长度: 50. 在以前的 Django 版本,没有任何办法改变 50 这个长度.</p>
<p>这暗示了 <span class="pre"><span style="font-family: Courier New">db_index=True</span></span>.</p>
<p>它接受一个额外的参数: <span class="pre"><span style="font-family: Courier New">prepopulate_from</span></span>, which is a list of fields from which to auto-populate the slug, via JavaScript, in the object's admin form:</p>
<pre class="literal-block">models.SlugField(prepopulate_from=("pre_name", "name"))
</pre>
<p><span class="pre"><span style="font-family: Courier New">prepopulate_from</span></span> 不接受 DateTimeFields.</p>
<p class="last">admin 用一个``&lt;input type="text"&gt;``表示 <span class="pre"><span style="font-family: Courier New">SlugField</span></span> 字段数据(一个单行编辑框)</p>
<dt><span class="pre"><span style="font-family: Courier New">SmallIntegerField</span></span>
<dd>类似 <span class="pre"><span style="font-family: Courier New">IntegerField</span></span>, 不过只允许某个取值范围内的整数.(依赖数据库)
<dt><span class="pre"><span style="font-family: Courier New">TextField</span></span>
<dd>
<p class="first">一个容量很大的文本字段.</p>
<p class="last">admin 用一个 <span class="pre"><span style="font-family: Courier New">&lt;textarea&gt;</span></span> (文本区域)表示该字段数据.(一个多行编辑框).</p>
<dt><span class="pre"><span style="font-family: Courier New">TimeField</span></span>
<dd>
<p class="first">A time. Accepts the same auto-population options as <span class="pre"><span style="font-family: Courier New">DateField</span></span> 和 <span class="pre"><span style="font-family: Courier New">DateTimeField</span></span>.</p>
<p class="last">admin 用一个 <span style="font-family: Courier New"><span class="pre">&lt;input</span> <span class="pre">type="text"&gt;</span></span> 文本框表示该字段保存的数据(附加一些JavaScript shortcuts).</p>
<dt><span class="pre"><span style="font-family: Courier New">URLField</span></span>
<dd>
<p class="first">用于保存 URL. 若 <span class="pre"><span style="font-family: Courier New">verify_exists</span></span> 参数为 <span class="pre"><span style="font-family: Courier New">True</span></span> (默认), 给定的 URL 会预先检查是否存在(即URL是否被有效装入且没有返回404响应).</p>
<p class="last">admin 用一个 <span style="font-family: Courier New"><span class="pre">&lt;input</span> <span class="pre">type="text"&gt;</span></span> 文本框表示该字段保存的数据(一个单行编辑框)</p>
<dt><span class="pre"><span style="font-family: Courier New">USStateField</span></span>
<dd>
<p class="first">一个两字母的美国州名缩写.</p>
<p class="last">admin 用一个 <span style="font-family: Courier New"><span class="pre">&lt;input</span> <span class="pre">type="text"&gt;</span></span> 文本框表示该字段保存的数据(一个单行编辑框)</p>
<dt><span class="pre"><span style="font-family: Courier New">XMLField</span></span>
<dd>
<p class="first last">一个校验值是否为合法XML的 <span class="pre"><span style="font-family: Courier New">TextField</span></span>,必须提供参数: <span class="pre"><span style="font-family: Courier New">schema_path</span></span>, 它是一个用来校验文本的 <a class="reference" href="http://www.relaxng.org/">RelaxNG</a> schema 的文件系统路径.</p>
</dd></dl></div>
<img src ="http://www.blogjava.net/zlpgm/aggbug/293317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2009-08-31 15:16 <a href="http://www.blogjava.net/zlpgm/archive/2009/08/31/293317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐很好的python Django框架学习资料</title><link>http://www.blogjava.net/zlpgm/archive/2009/08/25/292536.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Tue, 25 Aug 2009 09:44:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2009/08/25/292536.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/292536.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2009/08/25/292536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/292536.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/292536.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; <br />
一.&nbsp;翻译<a href="http://www.djangobook.com/">www.djangobook.com</a>系列文章<br />
&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.javaeye.com/wiki/Django-book?show_full=true">http://www.javaeye.com/wiki/Django-book?show_full=true</a><br />
<br />
二. django简单的入门例子&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://canofy.javaeye.com/blog/377154"><a href="http://canofy.javaeye.com/blog/377154">http://canofy.javaeye.com/blog/377154</a><br />
</a>
<img src ="http://www.blogjava.net/zlpgm/aggbug/292536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2009-08-25 17:44 <a href="http://www.blogjava.net/zlpgm/archive/2009/08/25/292536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows xp + Apache 2.2.6 + Python 2.5.1 配置Python web服务器</title><link>http://www.blogjava.net/zlpgm/archive/2009/08/22/292201.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Sat, 22 Aug 2009 08:59:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2009/08/22/292201.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/292201.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2009/08/22/292201.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/292201.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/292201.html</trackback:ping><description><![CDATA[开始学Python，先写一下这两天配置Python Web服务器的方法：
<p><br />
1、安装Python2.5.1
<p><br />
2、安装Apache2.2.6
<p><br />
3、安装Mod_Python,注意选应安装的Mod_Python和你具体安装的Python、Apache的版本有关,<br />
在安装过程中会选择Python、Apache的安装目录.<br />
安装完后，在Apache 的conf/httpd.conf文件中添加一行 LoadModule python_module modules/mod_python.so (在安装Mod_Python 的时候会提示你添加这行代码）
<p><br />
4、htdocs目录下存放静态Html文件，cgi-bin 目录下存放.py python文件。<br />
.py文件在Linux第一行为#!/usr/bin/python，在windows xp下第一行为#!C:\Python25\Python.exe(Python.exe 所在的目录
<p><br />
转至：<a href="http://blog.sina.com.cn/s/blog_4d9ce0e10100804t.html~type=v5_one&amp;label=rela_prevarticle">http://blog.sina.com.cn/s/blog_4d9ce0e10100804t.html~type=v5_one&amp;label=rela_prevarticle</a> </p>
<img src ="http://www.blogjava.net/zlpgm/aggbug/292201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2009-08-22 16:59 <a href="http://www.blogjava.net/zlpgm/archive/2009/08/22/292201.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python和Django的详细安装步骤</title><link>http://www.blogjava.net/zlpgm/archive/2009/08/21/292092.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Fri, 21 Aug 2009 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2009/08/21/292092.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/292092.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2009/08/21/292092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/292092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/292092.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;前前后后学习python基础语法有段时间了，主要看的<a href="http://www.woodpecker.org.cn:9081/doc/abyteofpython_cn/chinese/index.html">《简明 Python 教程》</a>和<a href="http://www.woodpecker.org.cn/diveintopython/toc/index.html">《深入 Python :Dive Into Python 中文版》</a>电子教程。今天有项目忙完了，准备开始Python的Web编程学习。用的是Django框架。以下介绍下Python和Django的安装步骤（Windows系统），其实都很简单。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<p><span style="color: #0000ff"><strong>1.Python安装步骤</strong></span></p>
<p>　　Python的安装非常简单，跟安装exe的软件一样，就是下一步下一步，直到完成。然后在环境变量的Path中添加Python的安装路径，如</p>
<p>　　我的Python的安装路径是D:\Program Files\Python26，只要把路径追加到环境变量Path的值后面就可以了。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后运行cmd--》python 出现了pyhon版&nbsp;&nbsp;&nbsp;&nbsp; 本号等信息说明python已经安装成功。<br />
</p>
<p><span style="color: #0000ff"><strong>2.Django安装步骤</strong></span></p>
<p>　　 Django的安装就更简单了，先把下载下来的压缩包解压，然后在命令行中使用命令cd进入到Django的文件夹下，执行命令：</p>
<p>　　python setup.py install</p>
<p>　　如果这时错误信息提示你python不是什么什么内部命令的话，说明你的环境变量没有配置好。命令运行正常的时候会列出一大堆的文件</p>
<p>　　信息，其实是它把这些文件复制到Python/Lib/site-packages的目录下。</p>
<p>　　弄好后再配置一下环境变量的Path变量，追加Python安装目录下的Scripts文件夹路径，如我的路径是D:\Program Files\Python26\Scripts。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK，这样Django也安装好了。现在让我们创建一下项目验证一下吧。先把命令行关了再打开，不然会找不到新追加的环境变量。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后cd进到要创建项目的文件夹了，输入命令：django-admin.py startproject mysite，运行正常时会在当前文件夹下创建一个mysite的文件夹，</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 里面还有几个Python的文件，如果提示你django-admin.py不是什么内部命令的话，说明你的环境变量还没有配置好，或者是没有重新打开命令&nbsp;&nbsp; 行&nbsp;&nbsp;&nbsp; 窗口，</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 更或者是你根本就没有安装Django。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看书---&gt;动手操作-----&gt;思考-----&gt;看书----&gt;动手操作----&gt;思考 .........是学习编程的最好步骤</p>
<img src ="http://www.blogjava.net/zlpgm/aggbug/292092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2009-08-21 14:18 <a href="http://www.blogjava.net/zlpgm/archive/2009/08/21/292092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python应用领域介绍</title><link>http://www.blogjava.net/zlpgm/archive/2009/08/20/291997.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Thu, 20 Aug 2009 13:13:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2009/08/20/291997.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/291997.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2009/08/20/291997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/291997.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/291997.html</trackback:ping><description><![CDATA[python应用领域介绍<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Python作为一种功能强大且通用的编程语言而广受好评，它具有非常清晰的语法特点，适用于多种操作系统，目前在国际上非常流行，正在得到越来越多的应用。<br />
<br />
<br />
&nbsp; 下面就让我们一起来看看它的强大功能：<br />
<br />
&nbsp; Python（派森），它是一个简单的、解释型的、交互式的、可移植的、面向对象的超高级语言。这就是对Python语言的最简单的描述。<br />
<br />
&nbsp; Python有一个交互式的开发环境，因为Python是解释运行，这大大节省了每次编译的时间。Python语法简单，且内置有几种高级数据结构，如字典、列表等，使得使用起来特别简单，程序员一个下午就可学会，一般人员一周内也可掌握。Python具有大部分面向对象语言的特征，可完全进行面向对象编程。它可以在MS-DOS、Windows、Windows NT、Linux、Soloris、Amiga、BeOS、OS/2、VMS、QNX等多种OS上运行。<br />
<br />
&nbsp; 编程语言<br />
<br />
&nbsp; Python语言可以用来作为批处理语言，写一些简单工具，处理些数据，作为其他软件的接口调试等。Python语言可以用来作为函数语言，进行人工智能程序的开发，具有Lisp语言的大部分功能。Python语言可以用来作为过程语言，进行我们常见的应用程序开发，可以和VB等语言一样应用。Python语言可以用来作为面向对象语言，具有大部分面向对象语言的特征，常作为大型应用软件的原型开发，再用C++改写，有些直接用Python来开发。<br />
<br />
&nbsp; 数据库<br />
<br />
&nbsp; Python在数据库方面也很优秀，可以和多种数据库进行连接，进行数据处理，从商业型的数据库到开放源码的数据库都提供支持。例如：Oracle,Ms SQL Server等等。有多种接口可以与数据库进行连接，至少包括ODBC。有许多公司采用着Python＋MySql的架构。因此，掌握了Python使你可以充分利用面向对象的特点，在数据库处理方面如虎添翼。<br />
<br />
&nbsp; Windows编程<br />
<br />
&nbsp; Python不仅可以在Unix类型的操作系统上应用，同样可以在Windows系统里有很好的表现。通过添加PythonWin模块，就可以通过COM形式调用和建立各种资源，包括调用注册表、ActiveX控件以及各种COM等工作，最常见的例子就是通过程序对Office文档进行处理，自动生成文档和图表。<br />
&nbsp; 通过Python，还可以利用py2exe模块生成exe应用程序。还有许多其他的日常维护和管理工作也可以交给Python来做，从而减少维护的工作量。利用Python，你还可以开发出象VB,VC,Delphi那样的GUI程序，但却可以在多个平台上执行。这在许多方面并不逊色于Java。<br />
<br />
多媒体 <br />
&nbsp; <br />
&nbsp; 利用PIL、Piddle、ReportLab等模块,你可以处理图象、声音、视频、动画等，从而为你的程序添加亮丽的光彩。动态图表的生成、统计分析图表都可以通过Python来完成。另外，还有OpenGL。利用PyOpenGl模块，你可以非常迅速的编写出三维场景。<br />
<br />
&nbsp; 科学计算 <br />
&nbsp; Python可以广泛的在科学计算领域发挥独特的角色。有许多模块可以帮助你在计算巨型数组、矢量分析、神经网络等方面高效率完成工作。尤其是在教育科研方面，可以发挥出独特的优势。<br />
<br />
<br />
<br />
&nbsp; 网络编程<br />
&nbsp; Python可以非常方便的完成网络编程的工作，提供了众多的解决方案和模块，可以非常方便的定制出自己的服务器软件，无论是c/s，还是b/s模式，都有很好的解决方法。<br />
<br />
&nbsp; 工具集: <br />
&nbsp; Soket编程 <br />
&nbsp; CGI,Freeform <br />
&nbsp; Zope,CMF,Plone,Silva,Nuxeo CPS... <br />
&nbsp; WebWare <br />
&nbsp; Twisted <br />
&nbsp; CherryPy <br />
&nbsp; SkunkWeb <br />
&nbsp; Quixote <br />
&nbsp; 4Suite Server <br />
&nbsp; Spyce <br />
&nbsp; Albatross <br />
&nbsp; Cheetah <br />
&nbsp; mod_python<br />
<br />
&nbsp; 协议: <br />
&nbsp; http <br />
&nbsp; ftp <br />
&nbsp; gopher <br />
&nbsp; XML-PRC <br />
&nbsp; SOAP <br />
&nbsp; POP <br />
&nbsp; SMTP<br />
<br />
&nbsp; 图形用户界面<br />
&nbsp; <br />
&nbsp; Python可以非常方便的实现GUI编程，通过Tkinter,wxPython,QT等等模块，你就可以根据需要编写出强大的跨平台的用户界面程序。<br />
<br />
开发环境与编辑器<br />
<br />
&nbsp; Python程序的开发工具比较多，目前主要的工具既有IDLE,PythonWin这样的免费工具, 也有一些商业性的工具。通过这些工具，可以让你更为快速的完成工作。<br />
<br />
&nbsp; 集成开发环境(IDE)： <br />
&nbsp; IDLE：这是Python里边自带的，基本上可以满足一般开发需要，请参考cnIDLE。 <br />
&nbsp; PythonWin：这是基于Windows平台的编辑开发环境，基本上可以满足一般开发需要。 <br />
&nbsp; PythonWorks Pro <br />
&nbsp; Wing IDE <br />
&nbsp; Komodo <br />
<br />
代码编辑器： <br />
&nbsp; LEO:完全由Python编写的程序代码编写辅助工具，可运行在多种操作系统中，支持独特的程序代码管理方式。 <br />
&nbsp; gVim:相当专业的代码编辑器，可运行在多种操作系统中，支持Python扩展。<br />
&nbsp; Emacs：Unix系统中常用的工具。 <br />
&nbsp; SciTE:简单易用的代码编辑器,支持unicode编辑。<br />
<br />
&nbsp; 嵌入和扩展 <br />
<br />
&nbsp; Python可以嵌入到其它应用程序中，也可以通过C/C++编写扩展模块，从而可以提高程序的运行速度或者完成只有通过C/C++才能完成的工作。现在Python已经可以和C#相结合，并且结合到Visual Studio里边，实现微软的.Net思想。如果你会C语言，再学习Python，这将是一个非常棒的一种选择。<br />
<br />
如果你掌握了Python,想在Java里应用它，你可以采用Jython。Jython是采用Java语言实现的Python。这样，你只要按照Python的语法，就可以调用Java的各种类库，快速的编写出基于Java的程序。也就是通过Jython，编写Java程序。这样就可以更为快速的实现Java的功能。Python在面向对象方面和Java是相通的。<br />
<br />
&nbsp; 除了c/c++和java, Python 目前还可以和Delphi、VB结合。<br />
<br />
&nbsp; 游戏编程 <br />
<br />
&nbsp; Python在很早的时候就是一种游戏编程的辅助工具。在《星球大战》中扮演了重要的角色。在&#8220;阿贝斯(Abyss)&#8221;、&#8220;星球之旅(Star Trek)&#8221;、&#8220;Indiana Jones&#8221;超级大片中担当特技和动画制作的工业光魔公司(Industrial Light)就采用Python制作商业动画。目前，通过Python完全可以编写出非常棒的游戏程序。<br />
<br />
&nbsp; 企业与政务应用 <br />
&nbsp; <br />
&nbsp; 目前，Python已经成功的实现企业级应用，在全球，已经有很多公司采用Python进行企业级软件的开发和应用，比如：ERP和CRM这样的应用。同时，通过Python技术，成功的实现了许多政务应用。<br />
<br />
&nbsp; 用Python写的较大的系统有：<br />
<br />
&nbsp; Zope：一个应用程序服务器，具有内容管理、团队开发、XML、面向对象、SOAP接口等一系先进特性，且开放源码。参见：<a href="http://www.zope.com/" target="_blank">www.zope.com</a>。<br />
<br />
&nbsp; Gadfly：一个用Python写的面向对象关系型数据库，具有小巧、快速、可移植性好，具有大部分SQL语言特性，且开放源码。参见：<a href="http://www.chordate.com/gadfly.html" target="_blank">http://www.chordate.com/gadfly.html</a>。<br />
<br />
&nbsp; 还有一些比较有名的公司也在用Python进行原型的开发，如Microsoft、IBM等，还有：<br />
<br />
&nbsp; 红帽(Red Hat )曾用Python和Tk一起成功开发配置和管理操作系统的可视界面。整个系统可以全面控制Linux操作系统，并根据用户选择对配置文件作自动更新。<br />
<br />
&nbsp; Infoseek在其公用搜索引擎使用了Python。该公司还用Python对其软件进行定制，使最终用户能对该网站内容进行方便下载。&nbsp; <br />
<br />
<img src ="http://www.blogjava.net/zlpgm/aggbug/291997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2009-08-20 21:13 <a href="http://www.blogjava.net/zlpgm/archive/2009/08/20/291997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为什么用Python开发桌面应用程序</title><link>http://www.blogjava.net/zlpgm/archive/2009/08/17/291572.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Mon, 17 Aug 2009 14:58:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2009/08/17/291572.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/291572.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2009/08/17/291572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/291572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/291572.html</trackback:ping><description><![CDATA[<br />
<br />
1）wxWidgets是一个比MFC优雅的库，TortoiseCVS用wxWidges而不用MFC，就是因为wxWidgets好用，而不是为了可以移植。<br />
2）Python的面向对象脚本语言编程适合快速界面开发<br />
3）Python在服务器端和客户端都非常有前途，可以形成一个统一的解决方案，这一点明显比Java有优势<br />
4）Python桌面应用程序可以完全编译为本地代码，脱离Python运行环境，这一点比dotnet winforms都有优势<br />
5）Python可以不受限制的任意调用Windows32 API，所以凡是VC6可以做的事情，Python就可以做 <br />
<br />
试想一下，现在我们开发桌面应用程序有什么要求？<br />
一、不要附带一个JRE或者CLR的累赘<br />
二、可以快速开发<br />
三、性能要有保证<br />
四、方便的远程方法调用支持<br />
此外如果能够跨平台就最好了 <br />
<br />
Java前三点都不符合；dotnet winforms不符合一；VC6不符合二和四，VB6不符合三和四；Delphi7符合前四点；Flash RIA不符合三；Python全部都符合！并且请记住Python是一个完全开源免费的方案！
<img src ="http://www.blogjava.net/zlpgm/aggbug/291572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2009-08-17 22:58 <a href="http://www.blogjava.net/zlpgm/archive/2009/08/17/291572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 编程感悟</title><link>http://www.blogjava.net/zlpgm/archive/2008/08/15/222265.html</link><dc:creator>枫叶飘零</dc:creator><author>枫叶飘零</author><pubDate>Fri, 15 Aug 2008 07:22:00 GMT</pubDate><guid>http://www.blogjava.net/zlpgm/archive/2008/08/15/222265.html</guid><wfw:comment>http://www.blogjava.net/zlpgm/comments/222265.html</wfw:comment><comments>http://www.blogjava.net/zlpgm/archive/2008/08/15/222265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlpgm/comments/commentRss/222265.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlpgm/services/trackbacks/222265.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 从编程中悟出八个字：1专 2静 3谦 4筹 5悟 6慎 7透 8恒 &nbsp;&nbsp;<a href='http://www.blogjava.net/zlpgm/archive/2008/08/15/222265.html'>阅读全文</a><img src ="http://www.blogjava.net/zlpgm/aggbug/222265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlpgm/" target="_blank">枫叶飘零</a> 2008-08-15 15:22 <a href="http://www.blogjava.net/zlpgm/archive/2008/08/15/222265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>