<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-26775495</id><updated>2014-10-05T16:00:37.772+08:00</updated><category term='Text'/><category term='proxy'/><category term='jQuery'/><category term='css'/><category term='gql'/><category term='js'/><category term='SQLAlchemy'/><category term='python'/><category term='Javascript'/><category term='Kid'/><category term='div'/><category term='lightbox'/><category term='orm'/><category term='ActiveMapper'/><category term='Turbogears'/><category term='urllib'/><category term='Blogger'/><category term='thread'/><category term='gae'/><title type='text'>Open source for open soul ;;</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/full'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/full'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26775495.post-1364654277075556958</id><published>2008-09-04T00:39:00.000+08:00</published><updated>2008-09-04T00:47:59.922+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>用 jQuery 将填表单时的 enter 模拟为 tab 键</title><content type='html'>var input =&amp;nbsp; $("input");&lt;br /&gt;input.keydown(function(evt) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(evt.keyCode==13)&amp;nbsp; // 回车&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var inext = input.index(this)+1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var next = input[inext]?input[inext]:$("input:first");&amp;nbsp; // 移到下一个input,如果已经是最后一个则跳到第一个input&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next.focus();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next.select();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&amp;nbsp;&amp;nbsp; // 返回false使回车失效&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;});</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/1364654277075556958/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=1364654277075556958' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/1364654277075556958'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/1364654277075556958'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2008/09/jquery-enter-tab.html' title='用 jQuery 将填表单时的 enter 模拟为 tab 键'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-6610569715365302316</id><published>2008-08-07T09:10:00.002+08:00</published><updated>2008-08-07T09:44:29.862+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='gae'/><title type='text'>对 Google App Engine 中 datastore 的理解</title><content type='html'>GAE的datastore中，除了一般one-many, many-many的orm关系外&lt;br /&gt;还引入了entities group，&lt;span style="font-weight: bold;"&gt;key_name,&lt;/span&gt; parent等概念（其实我对orm也只是知道点皮毛而已，所以不知道这点是不是GAE的独创）&lt;br /&gt;&lt;br /&gt;原来一直觉得这些东西很多余，理解不了&lt;br /&gt;但当使用 &lt;span style="font-weight: bold;"&gt;Transaction &lt;/span&gt;读写数据时才发现只有同一entities group的entity才可以在一个事务中操作，也就是说所有在一个事务中操作的entity都可以追溯到同一个parent，在datastore关系中，被称为 &lt;span style="font-weight: bold;"&gt;root&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;明白了这点，要使用事务，就需要将原来一整套仅仅根据one-many, many-many关系建立的entity加入自己的parent关系（parent只能在entity未提交到datastore前建立，不管有没有制定，entity一旦提交就无法修改）&lt;br /&gt;&lt;br /&gt;在建立entities group时，key_name是一个很有用的属性，可以利用key_name建立一个unique的属性，在entities group中快速定位到想要的entity&lt;br /&gt;&lt;br /&gt;为了方便使用entities group，我定义了一个Person：&lt;br /&gt;class Person(db.Model):&lt;br /&gt;    user = db.UserProperty()&lt;br /&gt;    displayName = db.StringProperty()&lt;br /&gt;    lastVisted = db.DateTimeProperty(auto_now=True)&lt;br /&gt;&lt;br /&gt;在用户登录后，使用&lt;br /&gt;Person.get_or_insert(&lt;span style="font-weight: bold;"&gt;key_name=user.nickname()&lt;/span&gt;, user=user)&lt;br /&gt;为新用户创建属于自己的Person实体，为老用户获取Person实体&lt;br /&gt;然后使用这个entity作为其他与该用户相关的entity的root，就享受GAE datastore的事务处理了</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/6610569715365302316/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=6610569715365302316' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/6610569715365302316'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/6610569715365302316'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2008/08/google-app-engine-datastore.html' title='对 Google App Engine 中 datastore 的理解'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-1244244796432022216</id><published>2008-08-01T22:21:00.002+08:00</published><updated>2008-08-02T00:31:27.645+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gql'/><category scheme='http://www.blogger.com/atom/ns#' term='gae'/><title type='text'>几个 GAE 特有的特性</title><content type='html'>&lt;span style="font-weight: bold;"&gt;关于 GQL&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;类似 WHERE .. IN &lt;list&gt; 的sql只能通过 GqlQuery 实现&lt;/li&gt;&lt;li&gt;GqlQuery 通过多次查询遍历&lt;list&gt;&lt;/li&gt;&lt;li&gt;如果查询引用，应该使用 key 而不是实体的 list&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;待补充</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/1244244796432022216/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=1244244796432022216' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/1244244796432022216'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/1244244796432022216'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2008/08/gae.html' title='几个 GAE 特有的特性'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-6654708295024272611</id><published>2008-07-23T13:33:00.002+08:00</published><updated>2008-07-23T14:12:28.675+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='js'/><category scheme='http://www.blogger.com/atom/ns#' term='div'/><category scheme='http://www.blogger.com/atom/ns#' term='lightbox'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>lightbox 效果的实现原理</title><content type='html'>用一个单独的 div 作为 overlay&lt;br /&gt;这个overlay 有三个主要的属性&lt;br /&gt;&lt;ol&gt;&lt;li&gt;大于页面文件的width和height&lt;/li&gt;&lt;li&gt;合适的透明度(opacity)&lt;/li&gt;&lt;li&gt;display:none;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;在激活时，去掉display:none，这个overlay就成为了新页面的background</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/6654708295024272611/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=6654708295024272611' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/6654708295024272611'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/6654708295024272611'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2008/07/lightbox.html' title='lightbox 效果的实现原理'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-2928849414476020678</id><published>2007-06-06T03:01:00.000+08:00</published><updated>2007-06-06T03:01:34.209+08:00</updated><title type='text'></title><content type='html'>其实还是用到了matplot&lt;BR&gt; 主要是自己对绘图的算法不是很熟,而matplot的绘图效果一向比较欣赏&lt;BR&gt; &lt;BR&gt; &lt;A HREF=http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data TITLE=这个方法&gt;这个方法&lt;/A&gt;&lt;BR&gt; 需要自己build scipy把delaunay模块包含进去&lt;BR&gt; &lt;A HREF=http://scipy.org/Installing_SciPy/Windows TITLE=按照windows下的安装指南&gt;按照windows下的安装指南&lt;/A&gt;&lt;BR&gt; 手动build scipy还需要先安装ATLAS (3.6.0)/LAPACK库,而我用cygwin build的ATLAS没有任何作用-____-&lt;BR&gt; 还好在不考虑性能损失的情况下还可以使用LAPACK/BLAS的源码直接build&lt;BR&gt; &lt;BR&gt; 然后再次发现原来我下的0.4.8的scipy不包含delaunay....&lt;BR&gt; 残念...安装TortoiseSVN，go bed&lt;BR&gt; 明天用svn的scipy继续吧````忙乱的一天呀&lt;BR&gt; &lt;BR&gt; 更新:&lt;BR&gt; numpy编译不成功&lt;BR&gt; 于是用了wiki 上另外一个方法 &lt;A HREF=http://www.cdc.noaa.gov/people/jeffrey.s.whitaker/python/griddata.html TITLE=griddata&gt;griddata&lt;/A&gt;&lt;BR&gt; 下载后先编译其中的&lt;SPAN STYLE="FONT-FAMILY: monospace"&gt;c源码&lt;/SPAN&gt;&lt;BR&gt; setup.py build --compiler=mingw32 bdist_wininst&lt;BR&gt; 需要mingw或者cygwin,并且要把gcc的路径加入到环境变量中（或者直接在cygwin中编译）&lt;BR&gt; 然后运行&lt;BR&gt; setup.py install&lt;BR&gt; 就安装成功了&lt;BR&gt; &lt;BR&gt; 之后使用griddata提供的test.py测试一下好了&lt;BR&gt; &lt;BR&gt; 现在就可以用griddata将离散的值进行natural neighbor interpolation&lt;BR&gt; 并用matplotlib显示出来了~&lt;BR&gt; 效果不错:)&lt;BR&gt; &lt;IMG SRC=http://docs.google.com/File.aspx?id=bdgzp97js8f8r&gt;&lt;BR&gt; &lt;BR&gt; 接下来就是一些美化工作了&lt;BR&gt; 全都要靠自己了&lt;BR&gt; &lt;BR&gt; &lt;BR&gt; &lt;BR&gt; &lt;BR&gt; &lt;BR&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/2928849414476020678/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=2928849414476020678' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/2928849414476020678'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/2928849414476020678'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2007/06/matplot-matplot-build-scipydelaunay_06.html' title=''/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-496248108036902298</id><published>2006-10-08T19:58:00.001+08:00</published><updated>2006-10-08T19:58:35.686+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><title type='text'>The ABC of Blogger Template Tag</title><content type='html'>&lt;p&gt;国庆几天看了很多blogger模版修改的trick和tip，但看得越多就觉得越乱。只能是依葫芦画瓢，缺少自己的想法和思路。加上一直想加上一个AJAX的评论功能，所以今天下载了自己的Template开始好好研究。&lt;/p&gt; &lt;p&gt;总的来说，Blogger的Template也就是一种标示语言，在&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=46888&amp;useful=1&amp;amp;show_useful=1"&gt;Page Elements Tags for Layouts&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=46995"&gt;Widget Tags for Layouts&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=47270&amp;topic=9084"&gt;Layouts Data Tags&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;中已经说得很清楚了。&lt;/p&gt; &lt;p&gt;但是有几个小地方还是需要特别注意一下的;)&lt;/p&gt; &lt;p&gt;首先,  &lt;strong&gt;b:section&lt;/strong&gt; 和 &lt;strong&gt;b:widget &lt;/strong&gt;是定义页面的最基本元素(tag)，其中 &lt;em&gt;&lt;strong&gt;b:section&lt;/strong&gt; 的子元素只能是 &lt;strong&gt;b:widget&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;其次，&amp;lt;b:widget&amp;gt;的使用形如: &lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(199, 21, 133);"&gt;b&lt;/span&gt;:&lt;span style="color: rgb(128, 0, 0);"&gt;widget&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;"myList"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;'ListView'&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;pageType&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;"all"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;locked&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;"no"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;"My Favorite Things"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;其中最有意思的就是 pageType 属性了，通过设置成不同的值: "all," "archive," "main," or "item,"，可以指定这个widget在所有页面，存档页面，首页或单独的文章页面显示(&lt;strong&gt;暂时有问题,不能在模版中使用&lt;/strong&gt;)。&lt;/p&gt; &lt;p&gt;之后，&lt;strong&gt;b:widget&lt;/strong&gt;下面的元素就是 &lt;strong&gt;b:includable &lt;/strong&gt;和 &lt;strong&gt;b:include &lt;/strong&gt;了&lt;/p&gt; &lt;p&gt;&lt;strong&gt;b:includable&lt;/strong&gt; 和 &lt;strong&gt;b:include &lt;/strong&gt;的关系就像C语言中的函数声明与函数的调用。首先，每个 &lt;strong&gt;b:widget &lt;/strong&gt;里面都需要一个main主函数：&lt;/p&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(199, 21, 133);"&gt;b&lt;/span&gt;:&lt;span style="color: rgb(128, 0, 0);"&gt;includable&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;'main'&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;var&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;'this'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   [content]&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(199, 21, 133);"&gt;b&lt;/span&gt;:&lt;span style="color: rgb(128, 0, 0);"&gt;includable&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;id相当于函数名，而var则是变量。你还可以用不同的id声明其他 &lt;strong&gt;b:includable &lt;/strong&gt;，并通过&lt;/p&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(199, 21, 133);"&gt;b&lt;/span&gt;:&lt;span style="color: rgb(128, 0, 0);"&gt;include&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;'id_other'&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;data&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;'var_other'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;调用 &lt;strong&gt;b:includable &lt;/strong&gt;，并通过data属性传递参数。在其内部则通过 &lt;strong&gt;data:&lt;/strong&gt; 使用参数，如:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;data:var_other.title&lt;/p&gt;&lt;br /&gt;&lt;p&gt;除了"main"，可以使用 &lt;strong&gt;b:include &lt;/strong&gt;调用同一 section 内的任意 &lt;strong&gt;b:includable&lt;/strong&gt; 。而每个 &lt;strong&gt;:widget &lt;/strong&gt;自动调用其中的"main"  &lt;strong&gt;b:includable &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; 最后，不同的widget还有不同的 &lt;strong&gt;data:&lt;/strong&gt; ，可以在 &lt;a href="http://help.blogger.com/bin/answer.py?answer=47270&amp;topic=9084"&gt;Layouts Data Tags&lt;/a&gt; 找到不同 widget 对应的 &lt;strong&gt;data: &lt;/strong&gt;列表，列表里面的 &lt;strong&gt;data: &lt;/strong&gt;都是直接在"main" &lt;strong&gt;b:includable&lt;/strong&gt;中可见的。也就是&lt;em&gt;对"main" &lt;strong&gt;b:includable&lt;/strong&gt;来说，即使没有申明var属性，仍然可以直接得到widget传递的参数&lt;/em&gt;。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;BLogger的模版语言还有其他的tag, 比如 &lt;strong&gt;b:loop&lt;/strong&gt;, &lt;strong&gt;b:if&lt;/strong&gt;, &lt;strong&gt;b:else&lt;/strong&gt;, &lt;strong&gt;expr:&lt;/strong&gt;。主要用于控制flow，用法还算简单，具体还可以参考 &lt;a href="http://ecmanaut.blogspot.com/2006/09/blogger-beta-templates.html"&gt;ecmanaut: Blogger beta templates&lt;/a&gt;。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/496248108036902298/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=496248108036902298' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/496248108036902298'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/496248108036902298'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/10/abc-of-blogger-template-tag.html' title='The ABC of Blogger Template Tag'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-2282632891026269161</id><published>2006-09-18T21:46:00.000+08:00</published><updated>2006-09-18T22:08:48.729+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLAlchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMapper'/><title type='text'>ActiveMapper in SQLAlchemy</title><content type='html'>ActiveMapper 是SA里面很酷的extension&lt;br /&gt;简化了SA先定义表再mapping的繁琐，又能充分利用SA mapper 的特性&lt;br /&gt;&lt;br /&gt;下面是ActiveMapper最基础的用法。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;from sqlalchemy.ext.activemapper import ActiveMapper, column, \&lt;br /&gt;          objectstore, metadata, one_to_many, one_to_one, many_to_many&lt;br /&gt;&lt;br /&gt;metadata.connect('sqlite:///../idtest.db')&lt;br /&gt;metadata.engine.echo = True&lt;br /&gt;&lt;br /&gt;user_group = Table("user_group", metadata,&lt;br /&gt;                   Column("user_id", Integer,&lt;br /&gt;                           ForeignKey("tg_user.user_id"),&lt;br /&gt;                           primary_key=True),&lt;br /&gt;                   Column("group_id", Integer,&lt;br /&gt;                           ForeignKey("tg_group.group_id"),&lt;br /&gt;                           primary_key=True))&lt;br /&gt;&lt;br /&gt;class Group(ActiveMapper):&lt;br /&gt; class mapping:&lt;br /&gt;      __table__="tg_group"&lt;br /&gt;      group_id = column(Integer, primary_key=True)&lt;br /&gt;      group_name = column(Unicode(16), unique=True)&lt;br /&gt;      created = column(DateTime, default=datetime.now)&lt;br /&gt;&lt;br /&gt;class User(ActiveMapper):&lt;br /&gt; class mapping:&lt;br /&gt;      __table__="tg_user"&lt;br /&gt;      user_id = column(Integer, primary_key=True)&lt;br /&gt;      user_name = column(Unicode(16), unique=True)&lt;br /&gt;      password = column(Unicode(40))&lt;br /&gt;      created = column(DateTime, default=datetime.now)&lt;br /&gt;      groups = many_to_many("Group", user_group, backref="users")&lt;br /&gt;&lt;br /&gt;u = User()&lt;br /&gt;u.user_name = 'test'&lt;br /&gt;g = Group()&lt;br /&gt;g.group_name = 'admin'&lt;br /&gt;g.users.append(u)&lt;br /&gt;objectstore.flush()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;在mapper的使用上基本上与SA一般的用法没什么差别.&lt;br /&gt;要注意的就是在申明class的时候,使用one_to_many, many_to_many这些函数来定义各个表之间的关系。&lt;br /&gt;而与数据库的连接,则用sqlalchemy下面的 metadata, objectstore来进行&lt;br /&gt;metadata.connect()连接数据库&lt;br /&gt;objectstore.flush()将对对象的修改提交到数据库&lt;br /&gt;&lt;br /&gt;ps:&lt;br /&gt;现在activemapper有一个&lt;a href="http://groups.google.com/group/turbogears/browse_frm/thread/5c7ec49afadfe80a/9bd6c97a341ad45e?lnk=raot#9bd6c97a341ad45e"&gt;小bug&lt;/a&gt;就是，如果两个表是多对多的关系，&lt;br /&gt;那么不能在两个class下面同时申明many_to_many，&lt;br /&gt;而只要给many_to_many一个backref参数，这个属性就会自动添加到对应的class下</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/2282632891026269161/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=2282632891026269161' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/2282632891026269161'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/2282632891026269161'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/09/activemapper-in-sqlalchemy.html' title='ActiveMapper in SQLAlchemy'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-2823218601021599936</id><published>2006-09-18T10:29:00.000+08:00</published><updated>2006-09-18T10:56:59.356+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Text'/><title type='text'>Beautiful Soup with Chinese.</title><content type='html'>BS对unicode文档处理的基本流程是:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;首先判断 BeautifulSoup(html, fromEncoding=encoding)中指定encoding&lt;/li&gt;&lt;li&gt;如果没有指定 encoding，则调用 &lt;a href="http://chardet.feedparser.org/download/"&gt;chardet&lt;/a&gt; (如果已安装)，或是内置的unicodeDammit尝试探测编码&lt;/li&gt;&lt;li&gt;最后将编码转换为unicode，进行相关的解析&lt;/li&gt;&lt;/ul&gt;而输出字符的流程更为简单:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;通过__str__(coding) 或 renderContents(coding) 指定输出的编码:encode(coding)&lt;/li&gt;&lt;li&gt;如果coding没有指定，则以 'utf-8' 作为默认输出&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;所以，若是处理 "gbk" 的文档，需要这样使用&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;soup = BeautifulSoup(html_str, fromEncoding="gbk")&lt;br /&gt;print soup.__str__('gbk')&lt;br /&gt;# or&lt;br /&gt;print soup.__str__().decode('utf-8')&lt;iframe src="http://www.google.com/gn/static_files/blank.html" style="position: absolute; display: block; opacity: 0.7; z-index: 500; width: 17px; height: 21px; top: 26px; right: 348px;" id="gn_notemagic" frameborder="0"&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/2823218601021599936/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=2823218601021599936' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/2823218601021599936'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/2823218601021599936'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/09/beautiful-soup-with-chinese.html' title='Beautiful Soup with Chinese.'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-8544203754577285912</id><published>2006-09-15T23:30:00.000+08:00</published><updated>2006-09-16T00:24:03.279+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kid'/><category scheme='http://www.blogger.com/atom/ns#' term='Turbogears'/><title type='text'>Site-wide layout use KID template.</title><content type='html'>kid的 &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;py:match&lt;/span&gt;&lt;/span&gt; 和 &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;py:extends&lt;/span&gt;&lt;/span&gt; 结合使用&lt;br /&gt;可以方便的控制网站的整体页面布局:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;py:match&lt;/span&gt; 遍历当前文档以及使用 &lt;span style="font-weight: bold; font-style: italic;"&gt;py:extends&lt;/span&gt; 引用当前文档的文档，将满足条件的元素(element)及子元素使用声明 &lt;span style="font-weight: bold; font-style: italic;"&gt;py:match&lt;/span&gt; 的element替代&lt;br /&gt;&lt;br /&gt;要定义全局header和footer可以这样写 &lt;span style="font-style: italic;"&gt;layout.kid:&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&amp;lt;body match="item.tag=='{http://www.w3.org/1999/xhtml}body'" attrs="item.items()"&gt;&lt;br /&gt;&amp;lt;!-- Header --&gt;&lt;br /&gt;&amp;lt;div py:replace="[item.text]+item[:]"&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/div&gt;&lt;br /&gt;&amp;lt;!-- Footer --&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;其中item.tag是元素的tag，&lt;/span&gt;&lt;span&gt;{http://www.w3.org/1999/xhtml} 表明这个xhtml文档的名称空间，&lt;/span&gt;&lt;span&gt;[item.text]+item[:] 是被替换掉的body元素下的所有子元素&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;当 extend 包含body元素时，body元素将用上面的代码代替.并且原文档中body的内容将通过&lt;/span&gt;&lt;span&gt;得到保留&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;由此，我们可以在layout.kid中定义 header 和 footer，其他的文档只要加上&lt;br /&gt;py:extends=" 'layout' "&lt;br /&gt;就可以自动的加上头尾元素了&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/8544203754577285912/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=8544203754577285912' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/8544203754577285912'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/8544203754577285912'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/09/site-wide-layout-use-kid-template.html' title='Site-wide layout use KID template.'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115776818322424604</id><published>2006-09-09T10:16:00.000+08:00</published><updated>2006-09-09T10:16:23.230+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Thread in Short</title><content type='html'>&lt;p&gt;在python中要定义一个简单的线程，只需要下面几步&lt;/p&gt; &lt;ul&gt; &lt;li&gt;import threading&lt;/li&gt; &lt;li&gt;派生threading.Thread类，如TestThread&lt;/li&gt; &lt;li&gt;在__init__()中调用threading.Thread.__init__(self)&lt;/li&gt; &lt;li&gt;定义run()，并在其中加入线程要做的工作&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;而要运行这个线程，首先要将其实例化: t = TestThread()&lt;/p&gt; &lt;p&gt;其次是使用t.start()开始工作&lt;/p&gt; &lt;p&gt;如果想要母线程结束后子线程同时结束，可以在调用t.start()前，调用t.setDaemon(True)&lt;/p&gt; &lt;p&gt;tags: &lt;a href="http://technorati.com/tag/python" rel="tag"&gt;python&lt;/a&gt;, &lt;a href="http://technorati.com/tag/thread" rel="tag"&gt;thread&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115776818322424604/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115776818322424604' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115776818322424604'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115776818322424604'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/09/thread-in-short.html' title='Thread in Short'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115776727904754343</id><published>2006-09-09T10:01:00.000+08:00</published><updated>2006-09-09T10:05:28.683+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='urllib'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Use urllib make form submission.</title><content type='html'>&lt;h4&gt;使用urllib提交表单:&lt;/h4&gt;&lt;pre&gt;url = "&lt;span style="color: #8b0000"&gt;http://host/path/to/submit&lt;/span&gt;"&lt;br /&gt;&lt;span style="color: #0000ff"&gt;data&lt;/span&gt; = {submit: value}&lt;br /&gt;urldata = urllib.urlencode(&lt;span style="color: #0000ff"&gt;data&lt;/span&gt;)&lt;br /&gt;results = urllib.urlopen(url, urldata).&lt;span style="color: #0000ff"&gt;read&lt;/span&gt;()&lt;br /&gt;&lt;span style="color: #0000ff"&gt;print&lt;/span&gt; results&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;在提交时使用代理:&lt;/h4&gt;&lt;pre&gt;proxies = {'http': 'http:&lt;span style="color: #008000"&gt;//host:port'}&lt;/span&gt;&lt;br /&gt;url = "&lt;span style="color: #8b0000"&gt;http://host/path/to/submit&lt;/span&gt;"&lt;br /&gt;&lt;span style="color: #0000ff"&gt;data&lt;/span&gt; = {'submit': 'value'}     # fly100%&lt;br /&gt;opener = urllib.FancyURLopener(proxies)&lt;br /&gt;urldata = urllib.urlencode(&lt;span style="color: #0000ff"&gt;data&lt;/span&gt;)&lt;br /&gt;results = opener.&lt;span style="color: #0000ff"&gt;open&lt;/span&gt;(url, urldata).&lt;span style="color: #0000ff"&gt;read&lt;/span&gt;()&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;&lt;font face="Courier New"&gt;使用cookie的提交(待续):&lt;/font&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;tags: &lt;a href="http://technorati.com/tag/python" rel="tag"&gt;python&lt;/a&gt;, &lt;a href="http://technorati.com/tag/urllib" rel="tag"&gt;urllib&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115776727904754343/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115776727904754343' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115776727904754343'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115776727904754343'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/09/use-urllib-make-form-submission.html' title='Use urllib make form submission.'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115459951236451968</id><published>2006-08-03T18:00:00.000+08:00</published><updated>2006-08-03T18:05:12.413+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLAlchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='Turbogears'/><title type='text'>ActiveMapper make Turbogears easy to use SqlAlchemy.</title><content type='html'>&lt;p&gt;前几天第一次用了SA，感觉还是不错的&lt;/p&gt;&lt;br /&gt;&lt;p&gt;但是按他文档里面的方法，要先定义table，再定义一个类用于和这个table的邦定，最后还需要调用mapper()绑定，还是挺繁琐的&lt;/p&gt;&lt;br /&gt;&lt;p&gt;特别是当我用在tg中，加上在model.py中的定义和controller的调试就更烦了，不过利用sa最新的插件ActiveMapper，可以把这些繁琐的步骤通通抛掉&lt;/p&gt;&lt;br /&gt;&lt;p&gt;不过am相关的文档较少，用一个最简单的例子说明下使用吧&lt;/p&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;from sqlalchemy import *&lt;br /&gt;from sqlalchemy.ext.activemapper     import ActiveMapper, column&lt;br /&gt;class User(ActiveMapper):&lt;br /&gt;    &lt;strong&gt;class mapping:&lt;/strong&gt;&lt;br /&gt;        __table__ = "user_table"&lt;br /&gt;        id = column(Integer, primary_key=True)&lt;br /&gt;        name = column(String)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;首先定义一个以ActiveMapper为基类的class，再通过mapping类使得这个class能绑定到正确的表上&lt;/p&gt;&lt;br /&gt;&lt;p&gt;__table__定义的表名，表中的字段用column声明(具体的参数和SA的Column一样，SA的文档写得很清楚了)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;把User定义放入model.py中，在controller中import就可以使用了(基本上和SqlObject定义的class用法一样)&lt;/p&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;from fv.model import User as usr&lt;br /&gt;class index(controllers.Controller):&lt;br /&gt;    @expose(template="json")&lt;br /&gt;    def index(self):&lt;br /&gt;        res = usr.select()&lt;br /&gt;        return dict(res = res[0].name) &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;如果还想对结果排序还可以使用&lt;/p&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;res = usr.select(order_by=[asc(usr.c.name)])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;注意要先从sqlalchemy中import asc，更多的查询方式可以参照SA上面的 &lt;a href="http://www.sqlalchemy.org/docs/sqlconstruction.myt#sql_whereclause"&gt;Where Clause&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;现在ActiveMapper相关的文档还比较少，不过随着tg版本的推进和SA API的稳定，很快就会有更多相关的文档了&lt;/p&gt;&lt;br /&gt;&lt;p&gt;另外也希望AM这么灵活的ORM机制能在SA中发挥更大的作用&lt;br/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/ActiveMapper" class="ztag" rel="tag"&gt;ActiveMapper&lt;/a&gt;, &lt;a href="http://technorati.com/tag/SqlAlchemy" class="ztag" rel="tag"&gt;SqlAlchemy&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Turbogears" class="ztag" rel="tag"&gt;Turbogears&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a href="http://del.icio.us/tag/ActiveMapper" class="ztag" rel="tag"&gt;ActiveMapper&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/SqlAlchemy" class="ztag" rel="tag"&gt;SqlAlchemy&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/Turbogears" class="ztag" rel="tag"&gt;Turbogears&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115459951236451968/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115459951236451968' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115459951236451968'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115459951236451968'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/08/activemapper-make-turbogears-easy-to.html' title='ActiveMapper make Turbogears easy to use SqlAlchemy.'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115445789105605631</id><published>2006-08-02T02:40:00.000+08:00</published><updated>2006-08-02T02:46:18.883+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLAlchemy'/><title type='text'>WHERE clause in SqlAlchemy</title><content type='html'>&lt;p&gt;在以前使用SQLObject的时候，就对复合查询特别头痛，在邮件列表里面才了解到要怎样才能得到排序、限制查询个数这样的操作。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SqlAlchemy也有这样的问题，只是SA的文档比SO要想尽很多，&lt;a href="http://www.sqlalchemy.org/docs/sqlconstruction.myt#sql_whereclause"&gt;这里&lt;/a&gt;就介绍了WHERE语句在SA中的实现。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;逻辑关系: &lt;code&gt;or_()&lt;/code&gt; , &lt;code&gt;and_()&lt;/code&gt; , &lt;code&gt;not_()&lt;/code&gt; , &lt;code&gt;in_()&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;&lt;span class="python_name"&gt;c &lt;/span&gt;&lt;span class="python_operator"&gt;= &lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;select&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;or_&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;c&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;user_name&lt;/span&gt;&lt;span class="python_operator"&gt;==&lt;/span&gt;&lt;span class="python_literal"&gt;'jack'&lt;/span&gt;&lt;span class="python_operator"&gt;, &lt;/span&gt;&lt;br /&gt;&lt;span class="python_name"&gt;        users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;c&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;user_name&lt;/span&gt;&lt;span class="python_operator"&gt;==&lt;/span&gt;&lt;span class="python_literal"&gt;'ed'&lt;/span&gt;&lt;span class="python_enclosure"&gt;))&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;execute&lt;/span&gt;&lt;span class="python_enclosure"&gt;()&lt;/span&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;&lt;span class="python_name"&gt;c &lt;/span&gt;&lt;span class="python_operator"&gt;= &lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;select&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;and_&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;c&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;user_name&lt;/span&gt;&lt;span class="python_operator"&gt;==&lt;/span&gt;&lt;span class="python_literal"&gt;'jack'&lt;/span&gt;&lt;span class="python_operator"&gt;, &lt;/span&gt;&lt;br /&gt;&lt;span class="python_operator"&gt;        &lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;c&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;password&lt;/span&gt;&lt;span class="python_operator"&gt;==&lt;/span&gt;&lt;span class="python_literal"&gt;'dog'&lt;/span&gt;&lt;span class="python_enclosure"&gt;))&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;execute&lt;/span&gt;&lt;span class="python_enclosure"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;&lt;span class="python_name"&gt;c &lt;/span&gt;&lt;span class="python_operator"&gt;= &lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;select&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;not_&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;br /&gt;        &lt;span class="python_name"&gt;or_&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;c&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;user_name&lt;/span&gt;&lt;span class="python_operator"&gt;==&lt;/span&gt;&lt;span class="python_literal"&gt;'jack'&lt;/span&gt;&lt;span class="python_operator"&gt;, &lt;/span&gt;&lt;br /&gt;&lt;span class="python_operator"&gt;        &lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;c&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;password&lt;/span&gt;&lt;span class="python_operator"&gt;==&lt;/span&gt;&lt;span class="python_literal"&gt;'dog'&lt;/span&gt;&lt;span class="python_enclosure"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="python_enclosure"&gt;))&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;execute&lt;/span&gt;&lt;span class="python_enclosure"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;&lt;span class="python_name"&gt;c &lt;/span&gt;&lt;span class="python_operator"&gt;= &lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;select&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;c&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;user_name&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;in_&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span class="python_enclosure"&gt;        &lt;/span&gt;&lt;span class="python_literal"&gt;'jack'&lt;/span&gt;&lt;span class="python_operator"&gt;, &lt;/span&gt;&lt;span class="python_literal"&gt;'ed'&lt;/span&gt;&lt;span class="python_operator"&gt;, &lt;/span&gt;&lt;span class="python_literal"&gt;'fred'&lt;/span&gt;&lt;span class="python_enclosure"&gt;))&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;execute&lt;/span&gt;&lt;span class="python_enclosure"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;排序： &lt;code&gt;order_by&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;&lt;span class="python_name"&gt;c &lt;/span&gt;&lt;span class="python_operator"&gt;= &lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;select&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;order_by&lt;/span&gt;&lt;span class="python_operator"&gt;=&lt;/span&gt;&lt;br /&gt;&lt;span class="python_enclosure"&gt;        [asc(&lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;c&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;user_name)&lt;/span&gt;&lt;span class="python_enclosure"&gt;])&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;execute&lt;/span&gt;&lt;span class="python_enclosure"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;其中&lt;code&gt;asc()&lt;/code&gt;与&lt;code&gt;desc()&lt;/code&gt;可以指明排序的方式(升序/降序)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;限制查询的项数： &lt;code&gt;limit, offset, distintic&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre xml:space="preserve"&gt;&lt;br /&gt;&lt;span class="python_name"&gt;c &lt;/span&gt;&lt;span class="python_operator"&gt;= &lt;/span&gt;&lt;span class="python_name"&gt;users&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;select&lt;/span&gt;&lt;span class="python_enclosure"&gt;(&lt;/span&gt;&lt;span class="python_name"&gt;limit&lt;/span&gt;&lt;span class="python_operator"&gt;=&lt;/span&gt;&lt;span class="python_number"&gt;10&lt;/span&gt;&lt;span class="python_operator"&gt;, &lt;/span&gt;&lt;br /&gt;&lt;span class="python_operator"&gt;        &lt;/span&gt;&lt;span class="python_name"&gt;offset&lt;/span&gt;&lt;span class="python_operator"&gt;=&lt;/span&gt;&lt;span class="python_number"&gt;20, distintic=True&lt;/span&gt;&lt;span class="python_enclosure"&gt;)&lt;/span&gt;&lt;span class="python_operator"&gt;.&lt;/span&gt;&lt;span class="python_name"&gt;execute&lt;/span&gt;&lt;span class="python_enclosure"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/SqlAlchemy" class="ztag" rel="tag"&gt;SqlAlchemy&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a href="http://del.icio.us/tag/SqlAlchemy" class="ztag" rel="tag"&gt;SqlAlchemy&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115445789105605631/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115445789105605631' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115445789105605631'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115445789105605631'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/08/where-clause-in-sqlalchemy.html' title='WHERE clause in SqlAlchemy'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115419362871415512</id><published>2006-07-30T01:15:00.000+08:00</published><updated>2006-07-30T01:20:28.770+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Turbogears'/><title type='text'>今天又拿起了Turbogears</title><content type='html'>&lt;p&gt;发现maillist上面都在讨论&lt;a href="http://www.sqlalchemy.org/"&gt;SQLAlchemy&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;于是去看了下它的&lt;a href="http://www.sqlalchemy.org/docs/tutorial.myt"&gt;文档&lt;/a&gt;，虽然还没用过，但是直观的感觉就是比SqlObject灵活很多。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;现在对TG项目唯一的问题是，一些widgets是使用SqlObject的，在&lt;a href="http://www.sqlalchemy.org/"&gt;SQLAlchemy&lt;/a&gt;下无法使用。不过这对我暂时也不需要这些功能，&lt;a href="http://www.sqlalchemy.org/"&gt;SQLAlchemy&lt;/a&gt;还是很值得学习的。&lt;/p&gt;&lt;br /&gt;&lt;br/&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/Python" class="ztag" rel="tag"&gt;Python&lt;/a&gt;, &lt;a href="http://technorati.com/tag/SqlAlchemy" class="ztag" rel="tag"&gt;SqlAlchemy&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Turbogears" class="ztag" rel="tag"&gt;Turbogears&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a href="http://del.icio.us/tag/Python" class="ztag" rel="tag"&gt;Python&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/SqlAlchemy" class="ztag" rel="tag"&gt;SqlAlchemy&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/Turbogears" class="ztag" rel="tag"&gt;Turbogears&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115419362871415512/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115419362871415512' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115419362871415512'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115419362871415512'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/turbogears.html' title='今天又拿起了Turbogears'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115409569608373986</id><published>2006-07-28T22:03:00.000+08:00</published><updated>2006-07-28T22:08:16.116+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>css 在显示图片时的技巧</title><content type='html'>&lt;p&gt;为了实现网页的一些特效，常常要用到一些height很小的图片&lt;/p&gt;&lt;br /&gt;&lt;p&gt;而往往我们都是这样使用图片:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;html:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;&amp;lt;div id="container"&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;&amp;lt;img src="/path/to/image" /&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;css:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;#container {&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;position: absolute;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;left: 0px;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;top: 0px;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;但如果对位置要求较高就会发现这样的用法在显示高度值很小的图片(比如height=1)时会出现定位不准确。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;可以用这样的代码测试&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;&amp;lt;div style="position: absolute; left:0px; top:0px;"&amp;gt;&lt;br/&gt;&amp;lt;img src="vline.jpg" /&amp;gt;&lt;br/&gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;&amp;lt;div style="position: absolute; left:0px; top:0px;"&amp;gt;&lt;br/&gt;&amp;lt;img src="hline.jpg" /&amp;gt;&lt;br/&gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;&amp;lt;div style="position: absolute; left:0px; top:0px;"&amp;gt;&lt;br/&gt;图片&lt;br/&gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;按代码看似乎所有的元素都会从浏览器的左上角开始显示，但实际结果却是这样:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br/&gt;&lt;a href="http://lh5.google.com/lazycoding/RMoWhsO0ABI/AAAAAAAAACQ/Efs-o960Apo/css%20hack.jpg"&gt;&lt;img width="320" height="226" src="http://lh5.google.com/lazycoding/RMoWhsO0ABI/AAAAAAAAACQ/Efs-o960Apo/css%20hack.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;水平的直线hline.jpg显示在"图片"的下方而不是我们定义的&lt;code&gt;top:0px&lt;/code&gt;&lt;code&gt;!&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;解决方法就是在对应的div中加入&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;font-size:0;line-height:0;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;告诉浏览器这个block的字体和行高都为0&lt;/p&gt;&lt;br /&gt;&lt;p&gt;这样在里面的图片才能显示在我们通过position定义的位置上。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;update&lt;/strong&gt;&lt;/em&gt; : 发现这个问题出现在XHTML 1.0 Strict下，其他的未经过测试，但如果你也遇到了这个问题，不妨试试这个方法。&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/css" class="ztag" rel="tag"&gt;css&lt;/a&gt;, &lt;a href="http://technorati.com/tag/css%20hack" class="ztag" rel="tag"&gt;css hack&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a href="http://del.icio.us/tag/css" class="ztag" rel="tag"&gt;css&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/css+hack" class="ztag" rel="tag"&gt;css hack&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115409569608373986/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115409569608373986' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115409569608373986'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115409569608373986'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/css.html' title='css 在显示图片时的技巧'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115356899562455546</id><published>2006-07-22T19:45:00.000+08:00</published><updated>2006-07-22T19:49:55.656+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Hide scrollbar as your wish;)</title><content type='html'>&lt;p&gt;用css就可以轻松实现.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;在firefox下:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;body {&lt;br/&gt;overflow: hidden;&lt;br/&gt;}&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;IE下则是:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;html {&lt;br/&gt;overflow: hidden;&lt;br/&gt;}&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;以上代码在fx1.5, ie6.0下通过&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/css" class="ztag" rel="tag"&gt;css&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a href="http://del.icio.us/tag/css" class="ztag" rel="tag"&gt;css&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115356899562455546/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115356899562455546' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115356899562455546'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115356899562455546'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/hide-scrollbar-as-your-wish.html' title='Hide scrollbar as your wish;)'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115338741649842150</id><published>2006-07-20T17:19:00.000+08:00</published><updated>2006-07-20T17:26:56.976+08:00</updated><title type='text'>Javascript中的Event</title><content type='html'>&lt;p&gt;IE与Mozilla浏览器在处理js上有很多不同的地方，特别是对Event的处理上，根本就是两种理念。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Mozilla(包括Firefox)支持w3c的event模式，通过一个handler函数，以参数传递的方式得到event对象(非常符合大多数语言的习惯)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;而IE则通过window.event得到当前的event(ms的另类)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;所以，对我们来说，要想自己写的handler函数在这两种浏览器里都正常工作，需要使用类似这样的代码:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;function handler(evt) {&lt;br/&gt;var myEvent = window.event ? window.event : evt;&lt;br/&gt;};&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;恩，虽然说两家的js实现方法查了很远，但是解决方法还算简单:)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;更多的IE和Firefox的javascript问题可以关注mozilla的开发社区，特别是这篇 &amp;lt;&lt;a href="http://developer.mozilla.org/en/docs/Migrate_apps_from_Internet_Explorer_to_Mozilla#Event_differences"&gt;Migrate apps from Internet Explorer to Mozilla - MDC&lt;/a&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/hacks" class="ztag" rel="tag"&gt;hacks&lt;/a&gt;, &lt;a href="http://technorati.com/tag/ie" class="ztag" rel="tag"&gt;ie&lt;/a&gt;, &lt;a href="http://technorati.com/tag/javascript" class="ztag" rel="tag"&gt;javascript&lt;/a&gt;, &lt;a href="http://technorati.com/tag/mozilla" class="ztag" rel="tag"&gt;mozilla&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a href="http://del.icio.us/tag/hacks" class="ztag" rel="tag"&gt;hacks&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/ie" class="ztag" rel="tag"&gt;ie&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/javascript" class="ztag" rel="tag"&gt;javascript&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/mozilla" class="ztag" rel="tag"&gt;mozilla&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115338741649842150/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115338741649842150' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115338741649842150'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115338741649842150'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/javascriptevent_115338741649842150.html' title='Javascript中的Event'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115322816576414988</id><published>2006-07-18T21:05:00.000+08:00</published><updated>2006-07-18T21:18:21.643+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>URL形式的Javascript</title><content type='html'>&lt;p&gt;除了在&amp;lt;script&amp;gt;&amp;lt;/script&amp;gt;之间直接使用js，&amp;lt;script&amp;gt;里面使用src属性制定外部js文件外，还有一种js的用法就是在url中使用&lt;/p&gt;&lt;br /&gt;&lt;p&gt;具体的语法是在&lt;code&gt;Javascript:&lt;/code&gt; 后加上js语句&lt;/p&gt;&lt;br /&gt;&lt;p&gt;这个小小的功能，让js可以用在更多场合&lt;/p&gt;&lt;br /&gt;&lt;p&gt;比如我常用的，使用Bloglines订阅当前页面的feed，就是这样一个js: &lt;code&gt;javascript:location.href= 'http://www.bloglines.com/sub/'+location.href&lt;/code&gt; 由于这样的js等价于url，所以我们可以将之作为bookmark收藏到fx的bookmark toolbar，在浏览页面时方便的调用。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;当然, 还有一个更常用的:作为href的值定义在&amp;lt;a&amp;gt;中.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;但是要注意的是, url形式的js有一个特性:如果最后一条语句有返回值,会将最后一句的值产生新的页面.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;这个特性也曾经让我十分郁闷.有时在href使用javascript:时, 带有alert(sth)和没有这一句alert在最后的结果完全不一样.其实这正是因为alert()不会返回任何值，因此不会对当前页面产生任何影响。而如果没有alert()，如果最后一句正好返回了一个document对象，那么浏览器就会更新你的页面。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;要避免这样的情况，除了alert以外更好的方法是在url形式的js所有语句结束前加上&lt;code&gt;;return void&lt;/code&gt; 或 &lt;code&gt;;void 0&lt;/code&gt;&lt;br/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/Javascript" class="ztag" rel="tag"&gt;Javascript&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a href="http://del.icio.us/tag/Javascript" class="ztag" rel="tag"&gt;Javascript&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115322816576414988/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115322816576414988' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115322816576414988'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115322816576414988'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/urljavascript.html' title='URL形式的Javascript'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115320446191223241</id><published>2006-07-18T14:30:00.000+08:00</published><updated>2006-07-18T14:34:21.916+08:00</updated><title type='text'>pkblogs又恢复正常了</title><content type='html'>&lt;br /&gt;&lt;p&gt;不知道是不是暂时的&lt;/p&gt;&lt;br /&gt;&lt;p&gt;不过决定以后这里只是作为自己学习和实验的基地，自己有办法访问就ok啦~~~&lt;/p&gt;&lt;br /&gt;&lt;p&gt;好玩的东西还是放在&lt;a href="http://lazz.bloggerspaces.com/"&gt;Blogger Spaces&lt;/a&gt;上吧，相信上面的服务还是可以用一段时间的~链接我也会慢慢加上去的，最近天气太热，就让我偷偷懒吧:)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;ps:广告没什么，但是&lt;a href="http://lazy.bloggoing.com/"&gt;bloggoing&lt;/a&gt;的服务态度确实是个问题，只好罢手了.&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/blog" class="ztag" rel="tag"&gt;blog&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a href="http://del.icio.us/tag/blog" class="ztag" rel="tag"&gt;blog&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115320446191223241/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115320446191223241' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115320446191223241'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115320446191223241'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/pkblogs.html' title='pkblogs又恢复正常了'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115314999084428448</id><published>2006-07-17T23:22:00.000+08:00</published><updated>2006-07-17T23:26:30.856+08:00</updated><title type='text'>flickr&amp;WEBIMAGER</title><content type='html'>&lt;br /&gt;&lt;p&gt;最初在 &lt;a href="http://blog.bsdos.cn/archives/297"&gt;The sky of Daemon&lt;/a&gt; 那看到的介绍&lt;/p&gt;&lt;br /&gt;&lt;p&gt;原来想着 flickr 不欢迎截屏所以也没怎么注意，&lt;/p&gt;&lt;br /&gt;&lt;p&gt;但今天用了以后才发现这么好用的东西的东西是会上瘾的....&lt;/p&gt;&lt;br /&gt;&lt;p&gt;主页上还有flash的介绍，我就不多费唇舌啦&lt;/p&gt;&lt;br /&gt;&lt;p&gt;ps: 这个应该是小日本的东西，随便感叹下中国IT人的无奈，创造力都被急功近利所扼杀了&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://phpspot.net/php/flickr/"&gt;&lt;img width="415" alt="flickr and webimager application" height="294" src="http://phpspot.net/php/flickr/img/captured.jpg"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/blog%20tool" class="ztag" rel="tag"&gt;blog tool&lt;/a&gt;, &lt;a href="http://technorati.com/tag/flickr" class="ztag" rel="tag"&gt;flickr&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115314999084428448/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115314999084428448' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115314999084428448'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115314999084428448'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/flickrwebimager.html' title='flickr&amp;WEBIMAGER'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115314690187891918</id><published>2006-07-17T22:30:00.000+08:00</published><updated>2006-07-17T22:35:01.930+08:00</updated><title type='text'>[Podcast]中国队勇夺世界杯冠军</title><content type='html'>&lt;br /&gt;&lt;p&gt;&lt;object width="400" height="350"&gt;&lt;param name="movie" value="http://www.toodou.com/v/MgO3RzEpLo8"/&gt;&lt;br /&gt;&lt;embed width="400" height="350" type="application/x-shockwave-flash" src="http://www.toodou.com/v/MgO3RzEpLo8"/&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;中国球迷能不顶嘛!&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/Chinese" class="ztag" rel="tag"&gt;Chinese&lt;/a&gt;, &lt;a href="http://technorati.com/tag/football" class="ztag" rel="tag"&gt;football&lt;/a&gt;, &lt;a href="http://technorati.com/tag/podcast" class="ztag" rel="tag"&gt;podcast&lt;/a&gt;, &lt;a href="http://technorati.com/tag/worldcup" class="ztag" rel="tag"&gt;worldcup&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115314690187891918/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115314690187891918' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115314690187891918'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115314690187891918'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/podcast.html' title='[Podcast]中国队勇夺世界杯冠军'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26775495.post-115311618591608770</id><published>2006-07-17T13:58:00.000+08:00</published><updated>2006-07-17T14:03:05.920+08:00</updated><title type='text'>toodou.com - 刚发现的好网站</title><content type='html'>&lt;br /&gt;&lt;p&gt;&lt;object width="400" height="350"&gt;&lt;param name="movie" value="http://www.toodou.com/v/GWRefBsyKDs"/&gt;&lt;br /&gt;&lt;embed width="400" height="350" type="application/x-shockwave-flash" src="http://www.toodou.com/v/GWRefBsyKDs"/&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;速度真的很好&lt;/p&gt;&lt;br /&gt;&lt;p&gt;其他的自己看看吧:)&lt;/p&gt;&lt;br /&gt;&lt;p class="zoundry_bw_tags"&gt;&lt;br /&gt;  &lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;br /&gt;  &lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;a href="http://technorati.com/tag/youtube" class="ztag" rel="tag"&gt;youtube&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/115311618591608770/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=26775495&amp;postID=115311618591608770' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/26775495/posts/default/115311618591608770'/><link rel='self' type='application/atom+xml' href='http://lazycoding.blogspot.com/feeds/posts/default/115311618591608770'/><link rel='alternate' type='text/html' href='http://lazycoding.blogspot.com/2006/07/toodoucom.html' title='toodou.com - 刚发现的好网站'/><author><name>putt</name><uri>http://www.blogger.com/profile/04248072249636975160</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-mA5Bco4TIkc/UQIYcKMa13I/AAAAAAAAFec/EXDnmiHeXJ0/s32/_MG_8806.jpg'/></author><thr:total>0</thr:total></entry></feed>