<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_茶亦醉人何必酒，书能香我无须花!</title><subtitle type="text">张帆风顺破重浪，兰幽山间心坦荡。斌礼厚徳创伟业，志壮凌云走四方！</subtitle><id>http://feed.cnblogs.com/blog/u/13226/rss</id><updated>2012-02-25T15:24:17Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/13226/rss"/><entry><id>http://www.cnblogs.com/abeen/archive/2012/02/25/2368239.html</id><title type="text">[Database]sql server 2008 不允许保存更改，您所做的更改要求删除并重新创建以下表 的解决办法</title><summary type="text">启动SQL Server 2008Management Studio工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改 取消勾选即可。</summary><published>2012-02-25T15:24:00Z</published><updated>2012-02-25T15:24:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2012/02/25/2368239.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2012/02/25/2368239.html"/><content type="html">&lt;p&gt;启动SQL Server 2008&amp;nbsp;Management Studio&lt;/p&gt;&lt;p&gt;工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改&amp;nbsp; 取消勾选即可。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2368239.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2012/02/25/2368239.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/10/20/2218914.html</id><title type="text">[Misc] Putty 无法连接本机 VMWare 问题的解决</title><summary type="text">本机系统XP sp3 使用putty 无法连接本机的 VMWare Linux 系统，互相能ping通,而且VM和XP都能和网内的其它电脑用putty等工具互连。折腾了好些时间，原来是本机网卡配置造成的，汗啊~~</summary><published>2011-10-20T06:12:00Z</published><updated>2011-10-20T06:12:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/10/20/2218914.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/10/20/2218914.html"/><content type="html">&lt;p&gt;问题：&lt;/p&gt;&lt;p&gt;本机系统XP sp3 使用putty 无法连接本机的 VMWare Linux 系统，互相能ping通,而且VM和XP都能和网内的其它电脑用putty等工具互连。&lt;br /&gt;折腾了好些时间，原来是本机网卡配置造成的，汗啊~~&lt;br /&gt;&lt;br /&gt;解决方案：&lt;br /&gt;本地连接 --&amp;gt; 属性 --&amp;gt; 配置 --&amp;gt;&amp;nbsp; 高级 --&amp;gt;&amp;nbsp; 硬件校验和 : 　"值" 修改为 "关闭"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;得好好补补这块的知识了.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2218914.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/10/20/2218914.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/10/10/2205640.html</id><title type="text">[Dynamic Language] Python OrderedDict 保证按插入的顺序迭代输出</title><summary type="text">Python 2.7 中的OrderedDict 可以在迭代字典Items的时候保证按每项插入的顺序输出。当删除某项再用同样的key写入时，此项排在迭代的最后，同样是插入顺序排列的。</summary><published>2011-10-10T07:25:00Z</published><updated>2011-10-10T07:25:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/10/10/2205640.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/10/10/2205640.html"/><content type="html">&lt;p&gt;Python 2.7 中的OrderedDict 可以在迭代字典Items的时候保证按每项插入的顺序输出。&lt;br /&gt;当删除某项再用同样的key写入时，此项排在迭代的最后，同样是插入顺序排列的。&lt;br /&gt;可以用popitem的last=True/False来控制pop进返回最近插入的还是最早插入的，实际上就是维护了一个双向链表。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;abeen@localhost:~$ python2.7&lt;br /&gt;Python 2.7.2 (default, Oct  9 2011, 20:20:38)&lt;br /&gt;[GCC 4.4.3] on linux2&lt;br /&gt;Type &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;help&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;copyright&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;credits&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;or&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;license&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; more information.&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; collections &lt;span style="color: #0000ff;"&gt;import&lt;/span&gt; OrderedDict&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d = OrderedDict([(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;,1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 2), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)])&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 2), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;] = 4&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;]&lt;br /&gt;4&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;span style="color: #0000ff;"&gt;del&lt;/span&gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;] = 4&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;&lt;p&gt;控制pop返回&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;gt;&amp;gt;&amp;gt; d = OrderedDict([(x,0) &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; x &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; range(10)])&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem()&lt;br /&gt;(9, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem()&lt;br /&gt;(8, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem(last=True)&lt;br /&gt;(7, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem(last=True)&lt;br /&gt;(6, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem(last=False)&lt;br /&gt;(0, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem(last=False)&lt;br /&gt;(1, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(2, 0), (3, 0), (4, 0), (5, 0)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;&lt;p&gt;字典项的迭代情况&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;In [1]: d = dict([(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;,1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 2), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)])&lt;br /&gt;&lt;br /&gt;In [2]: d&lt;br /&gt;Out[2]: {&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 1, &lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 3, &lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 2}&lt;br /&gt;&lt;br /&gt;In [3]: d.items()&lt;br /&gt;Out[3]: [(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 2), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1)]&lt;br /&gt;&lt;br /&gt;In [4]: d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;] =4&lt;br /&gt;&lt;br /&gt;In [5]: d&lt;br /&gt;Out[5]: {&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 1, &lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 3, &lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 4}&lt;br /&gt;&lt;br /&gt;In [6]: d.items()&lt;br /&gt;Out[6]: [(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1)]&lt;br /&gt;&lt;br /&gt;In [7]: &lt;span style="color: #0000ff;"&gt;del&lt;/span&gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;]&lt;br /&gt;&lt;br /&gt;In [8]: d.items()&lt;br /&gt;Out[8]: [(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1)]&lt;br /&gt;&lt;br /&gt;In [9]: d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;] = 4&lt;br /&gt;&lt;br /&gt;In [10]: d.items()&lt;br /&gt;Out[10]: [(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1)]&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2205640.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/10/10/2205640.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/09/14/2176360.html</id><title type="text">[Misc]IE浏览器真正全屏幕操作技巧</title><summary type="text">在桌面另外建立一个新的 IE快捷方式，在桌面空白的地方，按鼠标右键，选“新建→快捷方式”，在建立快捷方式的这个对话框中，指令行请输入： “C:Program FilesInternet ExplorerIEXPLORE.EXE” -k 提示：如果你的IE主程序不在这个位置可以自行修改，再次提醒双引号不要忘记喔！另外在 “-k”之前加一空格。 现在你双击这个新快捷方式，IE就会激活到这个非常特殊的全屏幕下，屏幕上除了IE滚动条外，什么都没有。 也可以去掉IE 滚动条:&lt;body scroll="no"&gt; 去掉滚动条&lt;body style="over</summary><published>2011-09-14T08:18:00Z</published><updated>2011-09-14T08:18:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/09/14/2176360.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/09/14/2176360.html"/><content type="html">&lt;p&gt;在桌面另外建立一个新的 IE快捷方式，在桌面空白的地方，按鼠标右键，选&amp;ldquo;新建&amp;rarr;快捷方式&amp;rdquo;，在建立快捷方式的这个对话框中，指令行请输入：&lt;/p&gt;&lt;p&gt;&amp;ldquo;C:Program FilesInternet ExplorerIEXPLORE.EXE&amp;rdquo; -k&lt;/p&gt;&lt;p&gt;提示：如果你的IE主程序不在这个位置可以自行修改，再次提醒双引号不要忘记喔！另外在 &amp;ldquo;-k&amp;rdquo;之前加一空格。&lt;/p&gt;&lt;p&gt;现在你双击这个新快捷方式，IE就会激活到这个非常特殊的全屏幕下，屏幕上除了IE滚动条外，什么都没有。&lt;/p&gt;&lt;p&gt;也可以去掉IE 滚动条:&lt;/p&gt;&lt;p&gt;&amp;lt;body scroll="no"&amp;gt; 去掉滚动条&lt;br /&gt;&amp;lt;body style="overflow-y:hidden"&amp;gt;去掉垂直滚动条&lt;br /&gt;&amp;lt;body style="overflow-x:hidden"&amp;gt;去掉水平滚动条&lt;/p&gt;&lt;p&gt;由于常用的工具按钮和菜单都没有了，我们需要借助IE的快捷键，以下是常用到的快捷键：&lt;/p&gt;&lt;p&gt;Alt + 左箭头：上一页&lt;/p&gt;&lt;p&gt;Alt + 右箭头：下一页&lt;/p&gt;&lt;p&gt;Ctrl + D：加到我的收藏夹&lt;/p&gt;&lt;p&gt;Ctrl + H：开启历史文件夹&lt;/p&gt;&lt;p&gt;Ctrl + B：开启整理收藏夹&lt;/p&gt;&lt;p&gt;Ctrl + L：输入网址，开启新网页&lt;/p&gt;&lt;p&gt;Ctrl + N：开新窗口&lt;/p&gt;&lt;p&gt;Ctrl + R：刷新(或按 F5)&lt;/p&gt;&lt;p&gt;Ctrl + W：关闭目前的窗口(或按 Alt+F4)&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2176360.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/09/14/2176360.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/07/16/2108427.html</id><title type="text">[DotNet]利用反射自动将Web前台传递的数据初始化到对象中</title><summary type="text">Web程序的前后台数据传递一直比较繁琐，最简单的方式可能是form提交后台提取信息进行判断。用 Python 开发习惯了Dict 格式参数的方便。最近帮朋友处理一个 DotNet 程序的时候，突然感觉这些数据传递处理别扭了。前台传递过来的数据后台需要一个个的对应到ORM对象中，实在是太麻烦了。 有没有更好更方便的方式呢？ 于是有了下面的思路。 假设做一个约束，将Web Html中元素的ID 、 Name和后台对象字段名一至， 然后利用DotNet反射提取对象字段值和Form提交来的名称对应赋值，就自动完成了对象数据的初始化。代码测试一下，还是挺好用的 呵呵，如果处于安全考虑，Web Form.</summary><published>2011-07-16T13:40:00Z</published><updated>2011-07-16T13:40:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/07/16/2108427.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/07/16/2108427.html"/><content type="html">&lt;p&gt;Web程序的前后台数据传递一直比较繁琐，最简单的方式可能是form提交后台提取信息进行判断。用 Python 开发习惯了Dict 格式参数的方便。最近帮朋友处理一个 DotNet 程序的时候，突然感觉这些数据传递处理别扭了。前台传递过来的数据后台需要一个个的对应到ORM对象中，实在是太麻烦了。&lt;/p&gt;&lt;p&gt;有没有更好更方便的方式呢？ 于是有了下面的思路。&lt;br /&gt;&lt;br /&gt;假设做一个约束，将Web Html中元素的ID 、 Name和后台对象字段名一至， 然后利用DotNet反射提取对象字段值和&lt;br /&gt;Form提交来的名称对应赋值，就自动完成了对象数据的初始化。&lt;br /&gt;代码测试一下，还是挺好用的 呵呵，如果处于安全考虑，Web Form提前可以用js进行数据校验，后台赋值时也可以跟&lt;br /&gt;据数据类型进行校验，同样可以DoubleCheck 呵呵。。。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;示例代码&lt;/p&gt;&lt;p&gt;&lt;strong&gt;HTML部分&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;form &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="form1"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="form1"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;table &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;border&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="1"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; cellspacing&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="0"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; cellpadding&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="0"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="addlm"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="first"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;colspan&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="5"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="thead boldblue"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;添加权限&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;权限名称：&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Name"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Name"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;  class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="onelinetext"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;=""&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btnCreate"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="button"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="bgsubmit"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="确定"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;form&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;JS部分&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;/ 创建栏目&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; CreatePermission() {&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; validate &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Validate().validate(&lt;br /&gt;        {&lt;br /&gt;            Name: { min: &lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, message: &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;名称不能为空!&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; }&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (validate) {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; per &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Permission();&lt;br /&gt;        per.create($(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;#form1&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;).serializeArray());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;--------------&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 创建&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        prototype.create &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(permission, callback) {&lt;br /&gt;        &lt;br /&gt;            $.post(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;/Permission/DoCreatePermission&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, permission,&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(data) {&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (data &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;Success&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            alert(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;创建成功!&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                        }&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;                            alert(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;创建失败!&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                        }&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;isUndefinedOrNull(callback)) callback(data.Result);&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (data &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;Success&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) TextBoxAllClear();&lt;br /&gt;                    });&lt;br /&gt;        };&lt;/span&gt;&lt;/div&gt;&lt;p&gt;DotNet部分&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #000000;"&gt;var per &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.GetArguments(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Permission(), &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Request.Form); // 调用&lt;br /&gt;&lt;br /&gt;// 示例&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 获取参数值&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="key"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt;&lt;span style="color: #000000;"&gt; T GetArguments&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;T&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;(T t, System.Collections.Specialized.NameValueCollection form)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 提取所有Key值，并转化成小写&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; keys &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (var k &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; form.AllKeys)&lt;br /&gt;            {&lt;br /&gt;                keys.Add(k.ToLower());&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 构造实例类型，并设置属性值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (PropertyInfo pi &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; t.GetType().GetProperties())&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (keys.Contains(pi.Name.ToLower()))&lt;br /&gt;                {&lt;br /&gt;                    var value &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Convert.ChangeType(form.Get(pi.Name), pi.PropertyType);&lt;br /&gt;                    pi.SetValue(t, value, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; t;&lt;br /&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2108427.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/07/16/2108427.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/06/20/2085185.html</id><title type="text">[Database] mongodb mongodump and mongorestore</title><summary type="text">mongodb mongodump and mongorestoreabeen@localhost:/program/mongodb-1.4/bin$ mongodump --helpoptions: --help produce help message -h [ --host ] arg mongo host to connect to -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) -u [ --username ] arg username -p [ --</summary><published>2011-06-20T05:55:00Z</published><updated>2011-06-20T05:55:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/06/20/2085185.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/06/20/2085185.html"/><content type="html">&lt;strong&gt;mongodb mongodump and mongorestore&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;abeen@localhost:/program/mongodb-1.4/bin$ mongodump --help&lt;br /&gt;options:&lt;br /&gt;&amp;nbsp; --help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; produce help message&lt;br /&gt;&amp;nbsp; -h [ --host ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mongo host to connect to&lt;br /&gt;&amp;nbsp; -d [ --db ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; database to use&lt;br /&gt;&amp;nbsp; -c [ --collection ] arg&amp;nbsp; collection to use (some commands)&lt;br /&gt;&amp;nbsp; -u [ --username ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp; username&lt;br /&gt;&amp;nbsp; -p [ --password ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp; password&lt;br /&gt;&amp;nbsp; --dbpath arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directly access mongod data files in this path,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instead of connecting to a mongod instance&lt;br /&gt;&amp;nbsp; -v [ --verbose ]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; be more verbose (include multiple times for more&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; verbosity e.g. -vvvvv)&lt;br /&gt;&amp;nbsp; -o [ --out ] arg (=dump) output directory&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 1 #!/bin/sh&lt;br /&gt;&amp;nbsp; 2&lt;br /&gt;&amp;nbsp; 3 rm -rf /home/abeen/z_abeen_back/database_back/*&lt;br /&gt;&amp;nbsp; 4 cd /program/mongodb-1.4/bin&lt;br /&gt;&amp;nbsp; 5 ./mongodump -h 192.168.1.3 -d test -o /home/abeen/z_abeen_back/database_back&lt;br /&gt;&amp;nbsp; 6 exit 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;abeen@localhost:/program/mongodb-1.4/bin$ mongorestore --help&lt;br /&gt;usage: /usr/lib/mongodb/mongorestore [options] [directory or filename to restore from]&lt;br /&gt;options:&lt;br /&gt;&amp;nbsp; --help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; produce help message&lt;br /&gt;&amp;nbsp; -h [ --host ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mongo host to connect to&lt;br /&gt;&amp;nbsp; -d [ --db ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; database to use&lt;br /&gt;&amp;nbsp; -c [ --collection ] arg collection to use (some commands)&lt;br /&gt;&amp;nbsp; -u [ --username ] arg&amp;nbsp;&amp;nbsp; username&lt;br /&gt;&amp;nbsp; -p [ --password ] arg&amp;nbsp;&amp;nbsp; password&lt;br /&gt;&amp;nbsp; --dbpath arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directly access mongod data files in this path,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instead of connecting to a mongod instance&lt;br /&gt;&amp;nbsp; -v [ --verbose ]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; be more verbose (include multiple times for more&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; verbosity e.g. -vvvvv)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;mongorestore -h 92.168.1.3 --directoryperdb /home/abeen/z_abeen_back/database_back/test&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2085185.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/06/20/2085185.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/05/18/2050000.html</id><title type="text">[Linux] Vim 中使用自定义模板来创建文件</title><summary type="text">在用 VIM 新建文件时可以引用自定义模板，来避免重复的数据格式处理化费太多时间。</summary><published>2011-05-18T06:18:00Z</published><updated>2011-05-18T06:18:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/05/18/2050000.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/05/18/2050000.html"/><content type="html">&lt;p&gt;在用 VIM 新建文件时可以引用自定义模板，来避免重复的数据格式处理化费太多时间。&lt;br /&gt;&lt;br /&gt;其实方法很简单：&lt;br /&gt;1. 在.vim/template下填加对应语言目录(如python、html)&lt;br /&gt;2. 在对应该目录放入自己的模板文件(如pythonconfig.py、 htmlconfig.html)&lt;br /&gt;3. 在vim的.vimrc配置中加入对应该的模板文件引用，如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp; autocmd BufNewFile *.py 0r ~/.vim/template/python/pythonconfig.py&lt;br /&gt;&amp;nbsp;&amp;nbsp; autocmd BufNewFile *.html 0r ~/.vim/template/html/htmlconfig.html&lt;br /&gt;&lt;br /&gt;在vim中新建对应格式的文件时，就会引用已定义的对应模板来创建文件。&lt;/p&gt;&lt;p&gt;遗憾的是：未发现在模板中使用动态数据的方法，如动态生成日期。若知道请告知一下喽~~&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2050000.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/05/18/2050000.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/05/12/2044916.html</id><title type="text">[招聘] Python 研发工程师、 前端研发工程师</title><summary type="text">公司在北京研发团队，主要从事搜索引擎和云计算业务。长期招聘技术职位。 Python 工程师 (5人) 1. 熟悉 Linux 基本使用。 2. 熟悉 Linux 上常用服务软件的安装、配置和优化。 3. 熟悉 Python 语言，有一定的开发经验。 4. 熟悉 Python 标准库库使用。 5. 熟悉 Python Tornado、Django、SQLObject/SQLAlchemy 等常用框架。 6. 熟悉 mongodb 数据库。 7. 熟悉 JavaScript jQuery 等。 职位要求：学历不限，两年以上工作经验，能阅读基本英文资料。 工资待遇：6000.00 ~ 8000...</summary><published>2011-05-12T15:28:00Z</published><updated>2011-05-12T15:28:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/05/12/2044916.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/05/12/2044916.html"/><content type="html">&lt;p&gt;公司在北京研发团队，主要从事搜索引擎和云计算业务。长期招聘技术职位。 &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;Python 工程师 (5人) &lt;/strong&gt;&lt;br /&gt; &lt;br /&gt;1. 熟悉 Linux 基本使用。 &lt;br /&gt;2. 熟悉 Linux 上常用服务软件的安装、配置和优化。 &lt;br /&gt;3. 熟悉 Python 语言，有一定的开发经验。 &lt;br /&gt;4. 熟悉 Python 标准库库使用。 &lt;br /&gt;5. 熟悉 Python Tornado、Django、SQLObject/SQLAlchemy 等常用框架。 &lt;br /&gt;6. 熟悉 mongodb 数据库。 &lt;br /&gt;7. 熟悉 JavaScript jQuery 等。 &lt;br /&gt; &lt;br /&gt;职位要求：学历不限，两年以上工作经验，能阅读基本英文资料。 &lt;br /&gt;工资待遇：6000.00 ~ 8000.00 （税前，13个月工资） &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;UI 前端开发工程师(５人) &lt;/strong&gt;&lt;br /&gt; &lt;br /&gt;1. 熟悉 CSS+DIV 布局网站，能熟练手写 CSS 和 HTML 代码。 &lt;br /&gt;2. 熟悉 HTML 、XHTML 、 CSS，懂得 WEB标准与规范化网站建设。 &lt;br /&gt;3. 熟悉 Javascript 脚本语言，能熟练的编写修改 js 页面脚本文件。 &lt;br /&gt;4. 熟悉JQuery、MooTools等常用框架。 &lt;br /&gt;5. 熟悉掌握Dreamweaver/Photoshop/Illustrator/Fireworks 等常用图形图像处理软件。 &lt;br /&gt; &lt;br /&gt;职位要求：学历不限，两年以上工作经验。 &lt;br /&gt;工资待遇：5000.00 ~ 7000.00 （税前，13个月工资） &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;工作地点：北京知春路 &lt;br /&gt;联系方式：abeen_8298@msn.com (EMAIL/MSN)&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2044916.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/05/12/2044916.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/05/08/2040326.html</id><title type="text">[JavaScript] jQuery 表单值相关操作</title><summary type="text">jQuery 表单值相关操作</summary><published>2011-05-08T06:02:00Z</published><updated>2011-05-08T06:02:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/05/08/2040326.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/05/08/2040326.html"/><content type="html">jQuery 表单值相关操作&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置值&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;选中多选下拉框&lt;br /&gt;$('#selid').val(['1982','1983','1988']);&lt;br /&gt;&lt;br /&gt;选中下拉(框单选)&lt;br /&gt;$('#selid').val(['1982']);&lt;br /&gt;&lt;br /&gt;选中radio&lt;br /&gt;$('input[name="rad"]').val(['3']);&lt;br /&gt;&lt;br /&gt;选中checkbox&lt;br /&gt;$('input[name="chk"]').val(['3','4','6']);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;获取值&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;radio&lt;br /&gt;$("input[name='items']:checked").val();&lt;br /&gt;&lt;br /&gt;radio,checkbox，select被选中项的值&lt;br /&gt;var item = $('input[name=items][checked]').val();&lt;br /&gt;&lt;br /&gt;被选中项的文本&lt;br /&gt;var item = $("select[name=items] option[selected]").text();&lt;br /&gt;&lt;br /&gt;select下拉框的第二个元素为当前选中值&lt;br /&gt;$('#select_id')[0].selectedIndex = 1;&lt;br /&gt;&lt;br /&gt;radio单选组的第二个元素为当前选中值&lt;br /&gt;$('input[name=items]').get(1).checked = true;&lt;br /&gt;&lt;br /&gt;文本框，文本区域&lt;br /&gt;$("#txt").attr("value")；&lt;br /&gt;&lt;br /&gt;多选框checkbox&lt;br /&gt;$("#checkbox_id").attr("value")；&lt;br /&gt;&lt;br /&gt;单选组radio&lt;br /&gt;&amp;nbsp;$("input[type=radio][checked]").val();&lt;br /&gt;&lt;br /&gt;下拉框select&lt;br /&gt;&amp;nbsp;$('#sel').val();&lt;br /&gt;&lt;br /&gt;清空内容&lt;br /&gt;$("#txt").attr("value",'');&lt;br /&gt;&lt;br /&gt;填充内容&lt;br /&gt;$("#txt").attr("value",'abeen');&lt;br /&gt;&lt;br /&gt;多选框checkbox未选中&lt;br /&gt;$("#chk1").attr("checked",'');&lt;br /&gt;&lt;br /&gt;多选框checkbox选中&lt;br /&gt;$("#chk2").attr("checked",true);&lt;br /&gt;&lt;br /&gt;判断是否选中&lt;br /&gt;if($("#chk1").attr('checked')==undefined)&lt;br /&gt;&lt;br /&gt;设置value=abeen的项目为当前选中项&lt;br /&gt;$("input[type=radio]").attr("checked",'abeen');&lt;br /&gt;&lt;br /&gt;设置value=abeen的项目为当前选中项&lt;br /&gt;$("#sel").attr("value",'abeen');&lt;br /&gt;&lt;br /&gt;添加下拉框的option&lt;br /&gt;$("&amp;lt;option value='1'&amp;gt;1111&amp;lt;/option&amp;gt;&amp;lt;option value='2'&amp;gt;2222&amp;lt;/option&amp;gt;").appendTo("#sel");&lt;br /&gt;&lt;br /&gt;清空下拉框 &lt;br /&gt;$("#sel").empty()；&lt;img src="http://www.cnblogs.com/abeen/aggbug/2040326.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/05/08/2040326.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/02/13/1952916.html</id><title type="text">[Linux] Ubuntu 下部署 Nginx Flup Django</title><summary type="text">Nginxnginx：("engine x") 是一个高性能的 HTTP 和 反向代理 服务器，作用和apache的类似。它可以处理一些静态文件的请求，而对于动态的文件的请求，它可以通过fastcgi方式，来分发请求给不同的动态语言处理。</summary><published>2011-02-12T16:15:00Z</published><updated>2011-02-12T16:15:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/02/13/1952916.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/02/13/1952916.html"/><content type="html">&lt;strong&gt;Nginx&lt;/strong&gt;&lt;br /&gt;nginx：("engine x") 是一个高性能的 HTTP 和 反向代理 服务器，作用和apache的类似。&lt;br /&gt;它可以处理一些静态文件的请求，而对于动态的文件的请求，它可以通过fastcgi方式，&lt;br /&gt;来分发请求给不同的动态语言处理。&lt;br /&gt;&lt;br /&gt;安装nginx&lt;br /&gt;apt-get install nginx&lt;br /&gt;全新安装 apt-get --purge remove&lt;br /&gt;&lt;br /&gt;启动nginx&lt;br /&gt;sudo /etc/init.d/nginx start&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;django &lt;/strong&gt;&lt;br /&gt;基于python的一个web框架，它可以我们做一些基础性的东西，比如cookie，session管理，模板机制，权限管理等等。&lt;br /&gt;&lt;br /&gt;安装django&lt;br /&gt;wget -c http://www.djangoproject.com/download/1.0.2/tarball/&lt;br /&gt;tar xzvf Django-1.0.2-final.tar.gz&lt;br /&gt;cd Django-1.0.2-final&lt;br /&gt;sudo python setup.py install&lt;br /&gt;&lt;br /&gt;测试django&lt;br /&gt;cd ~&lt;br /&gt;django-admin.py startproject shanshan&lt;br /&gt;cd shanshan&lt;br /&gt;python manage.py runserver 192.168.1.18:8000&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Flup&lt;/strong&gt;&lt;br /&gt;本身是一个使用python写的web服务器软件，它可以接受nginx发来的请求，执行相应的python代码，将结果返回给nginx。&lt;br /&gt;&lt;br /&gt;安装 flup&lt;br /&gt;sudo apt-get install python-flup&lt;br /&gt;&lt;br /&gt;以fastcgi运行django&lt;br /&gt;python manage.py runfcgi method=threaded host=192.168.1.18 port=8000&lt;br /&gt;&lt;br /&gt;配置nginx&lt;br /&gt;&lt;br /&gt;在/etc/nginx 目录下增加一个fastcgi_params.django的文件&lt;br /&gt;内容如下:&lt;br /&gt;fastcgi_param&amp;nbsp; QUERY_STRING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $query_string;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; REQUEST_METHOD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request_method;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; CONTENT_TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $content_type;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; CONTENT_LENGTH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $content_length;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; PATH_INFO&amp;nbsp;&amp;nbsp;&amp;nbsp; $document_root$fastcgi_script_name;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SCRIPT_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $fastcgi_script_name;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; REQUEST_URI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request_uri;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; DOCUMENT_URI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $document_uri;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; DOCUMENT_ROOT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $document_root;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_PROTOCOL&amp;nbsp;&amp;nbsp;&amp;nbsp; $server_protocol;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; GATEWAY_INTERFACE&amp;nbsp; CGI/1.1;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_SOFTWARE&amp;nbsp;&amp;nbsp;&amp;nbsp; nginx/$nginx_version;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; REMOTE_ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_addr;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; REMOTE_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_port;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $server_addr;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $server_port;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $server_name;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;修改/etc/nginx/sites-enabled/default&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass 192.168.1.18:8000;&amp;nbsp;&amp;nbsp;&amp;nbsp; #端口自己定义&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root /home/user/www/testdjango; #django项目路径&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include /etc/nginx/fastcgi_params.django; #导入上面生成的文件 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;然后 启动 manage.py runfcgi host=192.168.1.18 port=8000&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/1952916.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/02/13/1952916.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
