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

<channel>
	<title>Samson&#039;s Weblog &#187; Tips</title>
	<atom:link href="http://blog.samsonis.me/category/technique/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.samsonis.me</link>
	<description>天与弗取，反受其咎；时至不行，反受其殃</description>
	<lastBuildDate>Sun, 29 Jan 2012 13:53:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>SQL调优和SQL优化</title>
		<link>http://blog.samsonis.me/2011/10/sql-tuning-or-sql-optimization/</link>
		<comments>http://blog.samsonis.me/2011/10/sql-tuning-or-sql-optimization/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 07:11:31 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Share]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=3523</guid>
		<description><![CDATA[本文为译文i，翻译自原文 http://beginner-sql-tutorial.com/sql-query-tuning.htm sql语句可以用来从数据库取回数据。不同的sql查询语句有时可以得到相同的返回结果。如果考虑执行效率的话，选择使用最佳的查询语句至关重要，所以我们需要根据需求来优化sql查询。下面是一些我们平时经常使用的查询语句，以及如何优化它们以达到更好的执行效率。 SQL调优/SQL优化技巧: 1) 如果在SELECT语句里面用具体的column名而不是&#8217;*'，sql查询会更快。 例如，查询语句写成： SELECT id, first_name, last_name, age, subject FROM student_details; 比写成下面这样快： SELECT * FROM student_details; 2) HAVING字句是用来进一步过滤SELECT查询结果的，它就像一个过滤器。别把HAVING用作其它任何用途。 例如，写成： SELECT subject, count&#40;subject&#41; FROM student_details WHERE subject != 'Science' AND subject != 'Maths' GROUP BY subject; 而不是: SELECT subject, count&#40;subject&#41; FROM student_details GROUP BY subject HAVING subject!= 'Vancouver' AND subject!= 'Toronto'; 3) ...]]></description>
			<content:encoded><![CDATA[<p>本文为译文<sup><a href="http://blog.samsonis.me/2011/10/sql-tuning-or-sql-optimization/#footnote_0_3523" id="identifier_0_3523" class="footnote-link footnote-identifier-link" title="翻译的主要目的在于强化记忆和加深理解">i</a></sup>，翻译自原文 <a href="http://beginner-sql-tutorial.com/sql-query-tuning.htm" title="SQL Tuning or SQL Optimization" target="_blank">http://beginner-sql-tutorial.com/sql-query-tuning.htm</a></p>
<p>sql语句可以用来从数据库取回数据。不同的sql查询语句有时可以得到相同的返回结果。如果考虑执行效率的话，选择使用最佳的查询语句至关重要，所以我们需要根据需求来优化sql查询。下面是一些我们平时经常使用的查询语句，以及如何优化它们以达到更好的执行效率。</p>
<p><strong>SQL调优/SQL优化技巧:</strong></p>
<p><strong>1) 如果在SELECT语句里面用具体的column名而不是&#8217;*'，sql查询会更快。</strong></p>
<p>例如，查询语句写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> last_name<span style="color: #66cc66;">,</span> age<span style="color: #66cc66;">,</span> subject <span style="color: #993333; font-weight: bold;">FROM</span> student_details;</div></div>
<p>比写成下面这样快：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> student_details;</div></div>
<p><span id="more-3523"></span><br />
<strong>2) HAVING字句是用来进一步过滤SELECT查询结果的，它就像一个过滤器。别把HAVING用作其它任何用途。</strong></p>
<p>例如，写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> subject<span style="color: #66cc66;">,</span> count<span style="color: #66cc66;">&#40;</span>subject<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> subject !<span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Science'</span><br />
<span style="color: #993333; font-weight: bold;">AND</span> subject !<span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Maths'</span><br />
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> subject;</div></div>
<p>而不是:</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> subject<span style="color: #66cc66;">,</span> count<span style="color: #66cc66;">&#40;</span>subject<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details<br />
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> subject<br />
<span style="color: #993333; font-weight: bold;">HAVING</span> subject!<span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Vancouver'</span> <span style="color: #993333; font-weight: bold;">AND</span> subject!<span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Toronto'</span>;</div></div>
<p><strong>3) 有时候在主查询语句里面可能包含不止一个子查询语句。尽量减少子查询语句的数量有助于提高效率。</strong></p>
<p>例如，写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> employee<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#40;</span>salary<span style="color: #66cc66;">,</span> age <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> MAX <span style="color: #66cc66;">&#40;</span>salary<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> MAX <span style="color: #66cc66;">&#40;</span>age<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> employee_details<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">AND</span> dept <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Electronics'</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> employee<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> salary <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> MAX<span style="color: #66cc66;">&#40;</span>salary<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> employee_details<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">AND</span> age <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> MAX<span style="color: #66cc66;">&#40;</span>age<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> employee_details<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">AND</span> emp_dept <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Electronics'</span>;</div></div>
<p><strong>4) 恰当的使用EXISTS，IN和table joins。</strong></p>
<p>a) IN通常效率最低<br />
b) 当大多数过滤条件存在在子查询语句里面的时候，IN效率更高<br />
c) 当大多数过滤条件存在在主查询语句的时候，EXISTS效率更高</p>
<p>例如，写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> product p<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> order_items o<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> o<span style="color: #66cc66;">.</span>product_id <span style="color: #66cc66;">=</span> p<span style="color: #66cc66;">.</span>product_id<span style="color: #66cc66;">&#41;</span></div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> product p<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> product_id <span style="color: #993333; font-weight: bold;">IN</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> product_id <span style="color: #993333; font-weight: bold;">FROM</span> order_items</div></div>
<p><strong>5) 当join的两个表包含一对多关系时，优先使用EXISTS而不是DISTINCT。</strong></p>
<p>例如，写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> d<span style="color: #66cc66;">.</span>dept_id<span style="color: #66cc66;">,</span> d<span style="color: #66cc66;">.</span>dept<br />
<span style="color: #993333; font-weight: bold;">FROM</span> dept d<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'X'</span> <span style="color: #993333; font-weight: bold;">FROM</span> employee e <span style="color: #993333; font-weight: bold;">WHERE</span> e<span style="color: #66cc66;">.</span>dept <span style="color: #66cc66;">=</span> d<span style="color: #66cc66;">.</span>dept<span style="color: #66cc66;">&#41;</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">DISTINCT</span> d<span style="color: #66cc66;">.</span>dept_id<span style="color: #66cc66;">,</span> d<span style="color: #66cc66;">.</span>dept<br />
<span style="color: #993333; font-weight: bold;">FROM</span> dept d<span style="color: #66cc66;">,</span>employee e<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> e<span style="color: #66cc66;">.</span>dept <span style="color: #66cc66;">=</span> e<span style="color: #66cc66;">.</span>dept;</div></div>
<p><strong>6) 尝试使用UNION ALL来替换UNION。</strong></p>
<p>例如，写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details_class10<br />
<span style="color: #993333; font-weight: bold;">UNION</span> <span style="color: #993333; font-weight: bold;">ALL</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> sports_team;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> subject<br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details_class10<br />
<span style="color: #993333; font-weight: bold;">UNION</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> sports_team;</div></div>
<p><strong>7) 当在WHERE子句里面使用条件判断时，要小心。</strong></p>
<p>例如，写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> age <span style="color: #993333; font-weight: bold;">FROM</span> student_details <span style="color: #993333; font-weight: bold;">WHERE</span> age <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">10</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> age <span style="color: #993333; font-weight: bold;">FROM</span> student_details <span style="color: #993333; font-weight: bold;">WHERE</span> age !<span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">10</span>;</div></div>
<p>写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> age<br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> first_name <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'Chan%'</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> age<br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> SUBSTR<span style="color: #66cc66;">&#40;</span>first_name<span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Cha'</span>;</div></div>
<p>写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> age<br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> first_name <span style="color: #993333; font-weight: bold;">LIKE</span> NVL <span style="color: #66cc66;">&#40;</span> :name<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'%'</span><span style="color: #66cc66;">&#41;</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> age<br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> first_name <span style="color: #66cc66;">=</span> NVL <span style="color: #66cc66;">&#40;</span> :name<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">&#41;</span>;</div></div>
<p>写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> product_id<span style="color: #66cc66;">,</span> product_name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> product<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> unit_price <span style="color: #993333; font-weight: bold;">BETWEEN</span> MAX<span style="color: #66cc66;">&#40;</span>unit_price<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> MIN<span style="color: #66cc66;">&#40;</span>unit_price<span style="color: #66cc66;">&#41;</span></div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> product_id<span style="color: #66cc66;">,</span> product_name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> product<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> unit_price <span style="color: #66cc66;">&gt;=</span> MAX<span style="color: #66cc66;">&#40;</span>unit_price<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">AND</span> unit_price <span style="color: #66cc66;">&lt;=</span> MIN<span style="color: #66cc66;">&#40;</span>unit_price<span style="color: #66cc66;">&#41;</span></div></div>
<p>写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> name<span style="color: #66cc66;">,</span> salary<br />
<span style="color: #993333; font-weight: bold;">FROM</span> employee<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> dept <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Electronics'</span><br />
<span style="color: #993333; font-weight: bold;">AND</span> location <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Bangalore'</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> name<span style="color: #66cc66;">,</span> salary<br />
<span style="color: #993333; font-weight: bold;">FROM</span> employee<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> dept <span style="color: #66cc66;">||</span> location<span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'ElectronicsBangalore'</span>;</div></div>
<p>把非column表达式放在查询语句的一边，因为它们会被优先处理。</p>
<p>写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> name<span style="color: #66cc66;">,</span> salary<br />
<span style="color: #993333; font-weight: bold;">FROM</span> employee<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> salary <span style="color: #66cc66;">&lt;</span> <span style="color: #cc66cc;">25000</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> name<span style="color: #66cc66;">,</span> salary<br />
<span style="color: #993333; font-weight: bold;">FROM</span> employee<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> salary <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">10000</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #cc66cc;">35000</span>;</div></div>
<p>写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> age<br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> age <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">10</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> first_name<span style="color: #66cc66;">,</span> age<br />
<span style="color: #993333; font-weight: bold;">FROM</span> student_details<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> age <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">10</span>;</div></div>
<p><strong>8) 使用DECODE来避免重复扫描同一条数据或重复join同一张表。DECODE也可以用来替换GROUP BY或ORDER BY子句。</strong></p>
<p>例如，写成：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> id <span style="color: #993333; font-weight: bold;">FROM</span> employee<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> name <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'Ramesh%'</span><br />
<span style="color: #993333; font-weight: bold;">AND</span> location <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Bangalore'</span>;</div></div>
<p>而不是：</p>
<div class="codecolorer-container sql railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> DECODE<span style="color: #66cc66;">&#40;</span>location<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'Bangalore'</span><span style="color: #66cc66;">,</span>id<span style="color: #66cc66;">,</span><span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">&#41;</span> id <span style="color: #993333; font-weight: bold;">FROM</span> employee<br />
<span style="color: #993333; font-weight: bold;">WHERE</span> name <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'Ramesh%'</span>;</div></div>
<p><strong>9) 存储大二进制数据，首先将其存储在文件系统上，然后将其文件路径存储到数据库。</strong></p>
<p><strong>10) 遵守SQL标准规则。</strong></p>
<p>a) 对所有的SQL动词使用同一种大小写<br />
b) 所有的SQL动词放在新一行的开头<br />
c) 所有的单词用一个空格分隔<br />
d) 所有的SQL动词左对齐或右对齐首个SQL动词</p>
[Footnotes]<ol class="footnotes"><li id="footnote_0_3523" class="footnote">翻译的主要目的在于强化记忆和加深理解</li></ol>
	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2010/08/%e8%af%b4%e8%b0%8e/" title="说谎 (August 9, 2010)">说谎</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2011/01/%e8%8a%82%e9%80%89%e4%b8%a4%e6%ae%b5%e5%a5%a5%e5%b7%b4%e9%a9%ac2011%e5%9b%bd%e6%83%85%e5%92%a8%e6%96%87/" title="节选两段奥巴马2011国情咨文 (January 26, 2011)">节选两段奥巴马2011国情咨文</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/07/%e7%8b%ae%e5%ad%90%e5%ba%a7/" title="狮子座 (July 31, 2010)">狮子座</a> (16)</li>
	<li><a href="http://blog.samsonis.me/2010/02/%e6%9c%aa%e6%88%90%e5%b9%b4%e5%85%88%e5%88%ab%e5%84%aa/" title="未成年先别優 (February 23, 2010)">未成年先别優</a> (1)</li>
	<li><a href="http://blog.samsonis.me/2011/01/%e6%8e%a8%e8%8d%90%e4%b8%80%e4%b8%aareader-app%e5%92%8c%e4%b8%80%e4%b8%aagreasemonkey%e8%84%9a%e6%9c%ac/" title="推荐一个reader app和一个Greasemonkey脚本 (January 26, 2011)">推荐一个reader app和一个Greasemonkey脚本</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2011/10/sql-tuning-or-sql-optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python NameError: name &#8216;readline&#8217; is not defined</title>
		<link>http://blog.samsonis.me/2011/08/python-nameerror-name-readline-is-not-defined/</link>
		<comments>http://blog.samsonis.me/2011/08/python-nameerror-name-readline-is-not-defined/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 08:08:14 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Share]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[MacPorts]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=3386</guid>
		<description><![CDATA[Python 2.6.×已经装了有一定时日了，已经完全不知道python的世界都更新到什么境界了；标题这个issue在我更新到Lion之前就已经存在了，所以这不能算是Lion里才introduce的issue，这个还是得有一句说一句； 之前我在Snow Leopard一直没有找到fix的办法，当然主要的原因还在于我也没有那么急切的想fix它，至少对于一个几个月都基本不碰python的家伙而言，它的急迫性显然没有解决starcraft2破解版一联机就自动更新不能玩这个issue来的高，xd:) BTW, 我只玩战役模式，Blizzard及其各路partner已经完全将starcraft2的对战模式变成网游，虽然我很想支持暴雪买正版，但是网游的各种消耗对我来说是无法容忍的. 貌似又有跑题的趋势…… anyway…… 这个issue就是下面这样的，注意倒数第二行： ~ ➔ python Python 2.6.6 &#40;r266:84292, Sep 13 2010, 20:53:06&#41; &#91;GCC 4.2.1 &#40;Apple Inc. build 5646&#41; &#40;dot 1&#41;&#93; on darwin Type &#34;help&#34;, &#34;copyright&#34;, &#34;credits&#34; or &#34;license&#34; for more information. Module readline not available. Traceback &#40;most recent call last&#41;: &#160; File &#34;/Users/samson/.pythonrc&#34;, line 22, in &#60;module&#62; &#160; ...]]></description>
			<content:encoded><![CDATA[<p>Python 2.6.×已经装了有一定时日了，已经完全不知道python的世界都更新到什么境界了；标题这个issue在我更新到Lion之前就已经存在了，所以这不能算是<a href="http://blog.samsonis.me/2011/08/lion-ready/" title="Lion Ready?" target="_blank">Lion里才introduce的issue</a>，这个还是得有一句说一句；</p>
<p>之前我在Snow Leopard一直没有找到fix的办法，当然主要的原因还在于我也没有那么急切的想fix它，至少对于一个几个月都基本不碰python的家伙而言，它的急迫性显然没有解决starcraft2破解版一联机就自动更新不能玩这个issue来的高，xd:)</p>
<p>BTW, 我只玩战役模式，Blizzard及其各路partner已经完全将starcraft2的对战模式变成网游，虽然我很想支持暴雪买正版，但是网游的各种消耗对我来说是无法容忍的.</p>
<p>貌似又有跑题的趋势…… anyway……</p>
<p>这个issue就是下面这样的，注意倒数第二行：</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~ ➔ python<br />
Python 2.6.6 <span style="color: #7a0874; font-weight: bold;">&#40;</span>r266:<span style="color: #000000;">84292</span>, Sep <span style="color: #000000;">13</span> <span style="color: #000000;">2010</span>, <span style="color: #000000;">20</span>:<span style="color: #000000;">53</span>:06<span style="color: #7a0874; font-weight: bold;">&#41;</span> <br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span>GCC 4.2.1 <span style="color: #7a0874; font-weight: bold;">&#40;</span>Apple Inc. build <span style="color: #000000;">5646</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>dot <span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> on darwin<br />
Type <span style="color: #ff0000;">&quot;help&quot;</span>, <span style="color: #ff0000;">&quot;copyright&quot;</span>, <span style="color: #ff0000;">&quot;credits&quot;</span> or <span style="color: #ff0000;">&quot;license&quot;</span> <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #c20cb9; font-weight: bold;">more</span> information.<br />
Module readline not available.<br />
Traceback <span style="color: #7a0874; font-weight: bold;">&#40;</span>most recent call <span style="color: #c20cb9; font-weight: bold;">last</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>:<br />
&nbsp; File <span style="color: #ff0000;">&quot;/Users/samson/.pythonrc&quot;</span>, line <span style="color: #000000;">22</span>, <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">&lt;</span>module<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; readline.read_history_file<span style="color: #7a0874; font-weight: bold;">&#40;</span>historyPath<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
NameError: name <span style="color: #ff0000;">'readline'</span> is not defined<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span></div></div>
<p><span id="more-3386"></span><br />
主要的原因在于我起来的python cli会去读我home目录下.pythonrc <sup><a href="http://blog.samsonis.me/2011/08/python-nameerror-name-readline-is-not-defined/#footnote_0_3386" id="identifier_0_3386" class="footnote-link footnote-identifier-link" title="这个在环境变量$PYTHONSTARTUP里面设置">i</a></sup>，.pythonrc的前面几行则会试图去load readline或rlcompleter：</p>
<div class="codecolorer-container python railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">try</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">readline</span><br />
<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">ImportError</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Module readline not available.&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #ff7700;font-weight:bold;">else</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">rlcompleter</span><br />
&nbsp; &nbsp; <span style="color: #dc143c;">readline</span>.<span style="color: black;">parse_and_bind</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;tab: complete&quot;</span><span style="color: black;">&#41;</span></div></div>
<p>而诡异的是我明明装了readline，还装了两个（当然active的只有一个），这个python却始终很傻的说找不到：</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~ ➔ port installed <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> readline<br />
&nbsp; readline <span style="color: #000000; font-weight: bold;">@</span>6.1.000_1+darwin<br />
&nbsp; readline <span style="color: #000000; font-weight: bold;">@</span>6.1.002_0 <span style="color: #7a0874; font-weight: bold;">&#40;</span>active<span style="color: #7a0874; font-weight: bold;">&#41;</span></div></div>
<p>我曾试图upgrade python，但是问题仍旧存在，当然真相永远只有一个……</p>
<p>不废话也不卖关子，最后的解决办法非常吐血，不是upgrade python也不是去装py-readline，而是再install一遍readline (当然最后turns out readline也升级了)：</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~ ➔ <span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> readline</div></div>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~ ➔ port installed <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> readline<br />
&nbsp; readline <span style="color: #000000; font-weight: bold;">@</span>6.1.000_1+darwin<br />
&nbsp; readline <span style="color: #000000; font-weight: bold;">@</span>6.1.002_0<br />
&nbsp; readline <span style="color: #000000; font-weight: bold;">@</span>6.2.000_0 <span style="color: #7a0874; font-weight: bold;">&#40;</span>active<span style="color: #7a0874; font-weight: bold;">&#41;</span></div></div>
<p>problem solved:</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~ ➔ python<br />
Python 2.6.6 <span style="color: #7a0874; font-weight: bold;">&#40;</span>r266:<span style="color: #000000;">84292</span>, Sep <span style="color: #000000;">13</span> <span style="color: #000000;">2010</span>, <span style="color: #000000;">20</span>:<span style="color: #000000;">53</span>:06<span style="color: #7a0874; font-weight: bold;">&#41;</span> <br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span>GCC 4.2.1 <span style="color: #7a0874; font-weight: bold;">&#40;</span>Apple Inc. build <span style="color: #000000;">5646</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>dot <span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> on darwin<br />
Type <span style="color: #ff0000;">&quot;help&quot;</span>, <span style="color: #ff0000;">&quot;copyright&quot;</span>, <span style="color: #ff0000;">&quot;credits&quot;</span> or <span style="color: #ff0000;">&quot;license&quot;</span> <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #c20cb9; font-weight: bold;">more</span> information.<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span></div></div>
[Footnotes]<ol class="footnotes"><li id="footnote_0_3386" class="footnote">这个在环境变量$PYTHONSTARTUP里面设置</li></ol>
	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2010/08/terminal-app-use-option-as-meta-key/" title="Terminal.app use option as meta key (August 12, 2010)">Terminal.app use option as meta key</a> (14)</li>
	<li><a href="http://blog.samsonis.me/2011/03/terminal-app-echo-breaks-after-ctrl-c/" title="Terminal.app echo breaks after ctrl-c (March 18, 2011)">Terminal.app echo breaks after ctrl-c</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/09/sync-macports-ports-tree-using-subversion-over-http/" title="Sync MacPorts ports tree using Subversion (over HTTP) (September 13, 2010)">Sync MacPorts ports tree using Subversion (over HTTP)</a> (4)</li>
	<li><a href="http://blog.samsonis.me/2010/08/%e8%af%b4%e8%b0%8e/" title="说谎 (August 9, 2010)">说谎</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2011/01/%e8%8a%82%e9%80%89%e4%b8%a4%e6%ae%b5%e5%a5%a5%e5%b7%b4%e9%a9%ac2011%e5%9b%bd%e6%83%85%e5%92%a8%e6%96%87/" title="节选两段奥巴马2011国情咨文 (January 26, 2011)">节选两段奥巴马2011国情咨文</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2011/08/python-nameerror-name-readline-is-not-defined/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>google.com please</title>
		<link>http://blog.samsonis.me/2011/07/google-com-please/</link>
		<comments>http://blog.samsonis.me/2011/07/google-com-please/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 08:40:12 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Share]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=3267</guid>
		<description><![CDATA[访问google.com的时候被redirect？ Here is how to solve this problem in any browser, not only in google chrome . 截图于opera，但obviously，在各种浏览器里面都work. Related posts 推荐一个reader app和一个Greasemonkey脚本 (2) 说谎 (0) 节选两段奥巴马2011国情咨文 (0) 狮子座 (16) 未成年先别優 (1)]]></description>
			<content:encoded><![CDATA[<p>访问google.com的时候被redirect？ Here is how to solve this problem in any browser, not only in <a href="http://www.iamvip.net/blog/google/2234" title="如何让Google Chrome默认使用google.com？" target="_blank">google chrome</a> .</p>
<p>截图于opera，但obviously，在各种浏览器里面都work.</p>
<p><a href="http://blog.samsonis.me/wp-content/uploads/2011/07/google.com_.png"><img src="http://blog.samsonis.me/wp-content/uploads/2011/07/google.com_-300x187.png" alt="" title="google.com" width="300" height="187" class="alignnone size-medium wp-image-3270" /></a></p>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2011/01/%e6%8e%a8%e8%8d%90%e4%b8%80%e4%b8%aareader-app%e5%92%8c%e4%b8%80%e4%b8%aagreasemonkey%e8%84%9a%e6%9c%ac/" title="推荐一个reader app和一个Greasemonkey脚本 (January 26, 2011)">推荐一个reader app和一个Greasemonkey脚本</a> (2)</li>
	<li><a href="http://blog.samsonis.me/2010/08/%e8%af%b4%e8%b0%8e/" title="说谎 (August 9, 2010)">说谎</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2011/01/%e8%8a%82%e9%80%89%e4%b8%a4%e6%ae%b5%e5%a5%a5%e5%b7%b4%e9%a9%ac2011%e5%9b%bd%e6%83%85%e5%92%a8%e6%96%87/" title="节选两段奥巴马2011国情咨文 (January 26, 2011)">节选两段奥巴马2011国情咨文</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/07/%e7%8b%ae%e5%ad%90%e5%ba%a7/" title="狮子座 (July 31, 2010)">狮子座</a> (16)</li>
	<li><a href="http://blog.samsonis.me/2010/02/%e6%9c%aa%e6%88%90%e5%b9%b4%e5%85%88%e5%88%ab%e5%84%aa/" title="未成年先别優 (February 23, 2010)">未成年先别優</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2011/07/google-com-please/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Full Screen Mode for TextMate and MacVim</title>
		<link>http://blog.samsonis.me/2011/07/full-screen-mode-for-textmate-and-macvim/</link>
		<comments>http://blog.samsonis.me/2011/07/full-screen-mode-for-textmate-and-macvim/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 03:44:53 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Share]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[FullScreen]]></category>
		<category><![CDATA[fullscreen editor]]></category>
		<category><![CDATA[MacVim]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=3227</guid>
		<description><![CDATA[继续用wordpress的fullscreen mode写关于fullscreen的东西…… 不要怪我火星，你要允许孤陋寡闻的井底之蛙（比如我）慢慢发现以前一直很annoying的fulscreen mode原来可以真的让我相对focus一些，暂且不管这到底持续的时间能有多长…… For those who cares, it&#8217;s all about focus and productivity. (really? are you crazy?) [MacVim] 火星旅程开始，先别急着google，turns out 人家MacVim已经自带了这个功能，奈何我是眼睛大还是压根没注意… 打开MacVim，然后: Window -> Toggle Full Screen Mode You got it: [TextMate] TextMate默认不自带fullscreen功能，不过人家整整5年前便在讨论解决了…… So for all of you who patiently wait for this to become a native feature, now there is a workaround. 5年后的今天TextMate本身还是没有native的include这个feature，想必你对几乎所有用户所诟病的textmate更新慢的&#8221;feature&#8221;也可见一斑了吧，更新慢却又不开源，是很多曾经很fan却又最后放弃的很大原因，当然这是后话。 ...]]></description>
			<content:encoded><![CDATA[<p>继续用wordpress的fullscreen mode写关于fullscreen的东西…… 不要怪我火星，你要允许孤陋寡闻的井底之蛙（比如我）慢慢发现以前一直很annoying的fulscreen mode原来可以真的让我相对focus一些，暂且不管这到底持续的时间能有多长……</p>
<p>For those who cares, it&#8217;s all about focus and productivity. (really? are you crazy?)</p>
<p><span style="text-decoration: underline;">[MacVim]</span><br />
火星旅程开始，先别急着google，turns out 人家MacVim已经自带了这个功能，奈何我是眼睛大还是压根没注意…<br />
打开MacVim，然后:<br />
Window -> Toggle Full Screen Mode</p>
<p>You got it:</p>
<p><a href="http://blog.samsonis.me/wp-content/uploads/2011/07/macvim-fullscreen.png"><img src="http://blog.samsonis.me/wp-content/uploads/2011/07/macvim-fullscreen-300x264.png" alt="" title="macvim fullscreen" width="300" height="264" class="alignnone size-medium wp-image-3233" /></a><br />
<span id="more-3227"></span><br />
<span style="text-decoration: underline;">[TextMate]</span><br />
TextMate默认不自带fullscreen功能，不过人家<a href="http://blog.macromates.com/2006/full-screen-mode-via-megazoomer/" title="Full-screen Mode via Megazoomer" target="_blank">整整5年前</a>便在讨论解决了……</p>
<blockquote><p>
So for all of you who patiently wait for this to become a native feature, now there is a workaround.</p></blockquote>
<p>5年后的今天TextMate本身还是没有native的include这个feature，想必你对几乎所有用户所诟病的textmate更新慢的&#8221;feature&#8221;也可见一斑了吧，更新慢却又不开源，是很多曾经很fan却又最后放弃的很大原因，当然这是后话。</p>
<p>5年前的那个<a href="http://ianhenderson.org/megazoomer.html" target="_blank">workaround</a>的最后更新是09年9月，虽release notes里面明确指明了snow leopard和64-bit compatible，其不活跃的开发状态仍然让人不放心，怎么都一副德行……</p>
<p>最后还是在github上搜到了一个相对而言蛮新的 <a href="https://github.com/mads379/TextMate-Fullscreen-Plugin" title="TextMate-Fullscreen-Plugin" target="_blank">textmate plugin</a> , 最后更新在去年12月，且有专为Mac OS X Lion TextMate用户打造的<a href="https://github.com/enormego/EGOTextMateFullScreen" title="EGOTextMateFullScreen" target="_blank">版本</a>，你还能再奢求什么？</p>
<p>在<a href="https://github.com/mads379/TextMate-Fullscreen-Plugin/downloads" target="_blank">这里</a>下载最新版 (Beta-0.4)，解压双击安装后，你的TextMate也就有了MacVim一样的fullscreen mode.</p>
<p>Window -> Fullscreen (⌃ + ⌥ + ⌘ + F)</p>
<p><a href="http://blog.samsonis.me/wp-content/uploads/2011/07/textmate-fullscreen.png"><img src="http://blog.samsonis.me/wp-content/uploads/2011/07/textmate-fullscreen-300x264.png" alt="" title="textmate fullscreen" width="300" height="264" class="alignnone size-medium wp-image-3238" /></a></p>
<p>最后提一句，这两个editor的fullscreen mode都没有<a href="http://blog.samsonis.me/2011/07/%e5%86%8d%e6%9d%a5%e4%b8%80%e4%b8%aa%e6%9b%b4geeky%e7%9a%84fullscreen-editor/">之前提到</a>的writeroom给力，不过也总算聊胜于无吧……</p>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2011/07/%e5%86%8d%e6%9d%a5%e4%b8%80%e4%b8%aa%e6%9b%b4geeky%e7%9a%84fullscreen-editor/" title="再来一个更geeky的fullscreen editor (July 7, 2011)">再来一个更geeky的fullscreen editor</a> (1)</li>
	<li><a href="http://blog.samsonis.me/2011/05/vim-task-overhauled-with-native-vim-script-support/" title="Vim-Task overhauled with native vim script support (May 19, 2011)">Vim-Task overhauled with native vim script support</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/08/from-textmate-to-vim-macvim-installation/" title="From TextMate to MacVim: Vim installation (August 24, 2010)">From TextMate to MacVim: Vim installation</a> (2)</li>
	<li><a href="http://blog.samsonis.me/2010/09/from-textmate-to-macvim-markdown-file-editing/" title="From TextMate to MacVim: Markdown File Editing (September 15, 2010)">From TextMate to MacVim: Markdown File Editing</a> (2)</li>
	<li><a href="http://blog.samsonis.me/2010/09/from-textmate-to-macvim-introduce-vim-task-gtd/" title="From TextMate to MacVim: Introduce Vim-Task (GTD) (September 10, 2010)">From TextMate to MacVim: Introduce Vim-Task (GTD)</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2011/07/full-screen-mode-for-textmate-and-macvim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyGems 1.5.2 Manual Upgrade</title>
		<link>http://blog.samsonis.me/2011/02/rubygems-1-5-2-manual-upgrade/</link>
		<comments>http://blog.samsonis.me/2011/02/rubygems-1-5-2-manual-upgrade/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 07:02:04 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[RubyGems]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=2732</guid>
		<description><![CDATA[今天想更新RubyGems，突然发现 gem update &#8211;&#8211;system 貌似不work了： $ gem -v 1.5.0 $ gem update --system Updating RubyGems ERROR: &#160;While executing gem ... &#40;NoMethodError&#41; &#160; &#160; undefined method `version' for nil:NilClass turns out 这是 RubyGems 1.5.0 和 1.5.1 的一个bug，1.5.2 fix了这个issue。 Manual的Upgrade可以绕过 reinstall 的麻烦和繁琐，且更低碳环保： $ gem install rubygems-update Fetching: rubygems-update-1.5.2.gem &#40;100%&#41; Successfully installed rubygems-update-1.5.2 1 gem installed $ update_rubygems ...]]></description>
			<content:encoded><![CDATA[<p>今天想更新RubyGems，突然发现 gem update &ndash;&ndash;system 貌似不work了：</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ gem <span style="color: #660033;">-v</span><br />
1.5.0</div></div>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ gem update <span style="color: #660033;">--system</span><br />
Updating RubyGems<br />
ERROR: &nbsp;While executing gem ... <span style="color: #7a0874; font-weight: bold;">&#40;</span>NoMethodError<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
&nbsp; &nbsp; undefined method <span style="color: #000000; font-weight: bold;">`</span>version<span style="color: #ff0000;">' for nil:NilClass</span></div></div>
<p>turns out 这是 <a href="https://github.com/rubygems/rubygems/commit/9defc03d8d8b8c0703566aa851523006c41c3a70">RubyGems 1.5.0 和 1.5.1 的一个bug</a>，1.5.2 fix了这个issue。</p>
<p>Manual的Upgrade可以绕过 reinstall 的麻烦和繁琐，且更低碳环保：<br />
<span id="more-2732"></span></p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ gem <span style="color: #c20cb9; font-weight: bold;">install</span> rubygems-update<br />
Fetching: rubygems-update-1.5.2.gem <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
Successfully installed rubygems-update-1.5.2<br />
<span style="color: #000000;">1</span> gem installed</div></div>
<div class="codecolorer-container bash railscasts" style="border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ update_rubygems <br />
RubyGems 1.5.2 installed<br />
<br />
=== 1.5.2 <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000;">2011</span>-02-<span style="color: #000000;">10</span><br />
<br />
NOTE: &nbsp;RubyGems 1.5.0 and 1.5.1 have a broken <span style="color: #000000; font-weight: bold;">&lt;</span>tt<span style="color: #000000; font-weight: bold;">&gt;</span>gem update --system<span style="color: #000000; font-weight: bold;">&lt;/</span>tt<span style="color: #000000; font-weight: bold;">&gt;</span>.<br />
<br />
To upgrade you<span style="color: #ff0000;">'ll need to use the manual upgrade recipe. &nbsp;Using sudo/su as<br />
appropriate:<br />
<br />
&nbsp; $ gem install rubygems-update<br />
&nbsp; $ update_rubygems<br />
<br />
Bug Fixes:<br />
<br />
* Fixed &lt;tt&gt;gem update --system&lt;/tt&gt;. &nbsp;RubyGems can now update itself again.<br />
<br />
<br />
---------------------------------------------------------------------------<br />
<br />
RubyGems installed the following executables:<br />
&nbsp; &nbsp; /Users/samson/.rvm/rubies/ruby-1.9.2-p136/bin/gem</span></div></div>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2011/12/downgrade-rubygems/" title="Downgrade Rubygems (December 5, 2011)">Downgrade Rubygems</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/02/rubys-python-simplehttpserver/" title="ruby&#8217;s &#8220;python -m SimpleHTTPServer&#8221; (February 21, 2010)">ruby&#8217;s &#8220;python -m SimpleHTTPServer&#8221;</a> (2)</li>
	<li><a href="http://blog.samsonis.me/2010/02/ruby-gem-geoip-and-rack-geoipcountry/" title="Ruby gem geoip and Rack::GeoIPCountry (February 25, 2010)">Ruby gem geoip and Rack::GeoIPCountry</a> (2)</li>
	<li><a href="http://blog.samsonis.me/2010/02/list-performance-ruby-1-8-and-1-9-part-1/" title="List performance: ruby 1.8 and 1.9 (Part 1) (February 22, 2010)">List performance: ruby 1.8 and 1.9 (Part 1)</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2011/03/archlinux-rvm-ruby-rails-nginx-passenger-and-you/" title="ArchLinux, RVM, Ruby, Rails, Nginx, Passenger and You (March 30, 2011)">ArchLinux, RVM, Ruby, Rails, Nginx, Passenger and You</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2011/02/rubygems-1-5-2-manual-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sync MacPorts ports tree using Subversion (over HTTP)</title>
		<link>http://blog.samsonis.me/2010/09/sync-macports-ports-tree-using-subversion-over-http/</link>
		<comments>http://blog.samsonis.me/2010/09/sync-macports-ports-tree-using-subversion-over-http/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 09:45:30 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Share]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[MacPorts]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=2254</guid>
		<description><![CDATA[MacPorts默认用 rsync 同步 ports file tree，rsync默认使用端口873，在80%的公司内部估计要悲剧，在鄙人公司不用思考那是属于100%要悲剧的范畴。 有两种解决方法，第一种是用proxy，rsync支持用 RSYNC_PROXY 环境变量来设置proxy，不过只支持http proxy，很不幸这种方法仍旧无法穿越火线。 不过还是建议先尝试下此方法，毕竟方便快捷一些。 第二种方法是MacPorts官方提供的解决方案： https://trac.macports.org/wiki/howto/SyncingWithSVN 这个方法稍显繁琐，因为要用svn checkout 整个ports source tree（checkout完后的dir总共227M），并修改macports source，然后重新sync并建立index，整个过程可能会超过1小时。 当然好处也是有的，那就是一劳永逸并且99%的情况下应该能够work～ Related posts Python NameError: name &#8216;readline&#8217; is not defined (3) 说谎 (0) 节选两段奥巴马2011国情咨文 (0) 狮子座 (16) 未成年先别優 (1)]]></description>
			<content:encoded><![CDATA[<p>MacPorts默认用 <a href="http://www.samba.org/rsync/">rsync</a> 同步 ports file tree，rsync默认使用端口873，在80%的公司内部估计要悲剧，在鄙人公司不用思考那是属于100%要悲剧的范畴。</p>
<p>有两种解决方法，第一种是用proxy，rsync支持用 RSYNC_PROXY 环境变量来设置proxy，不过只支持http proxy，很不幸这种方法仍旧无法穿越火线。 不过还是建议先尝试下此方法，毕竟方便快捷一些。</p>
<p>第二种方法是MacPorts官方提供的解决方案：<br />
<a href="https://trac.macports.org/wiki/howto/SyncingWithSVN">https://trac.macports.org/wiki/howto/SyncingWithSVN</a></p>
<p>这个方法稍显繁琐，因为要用svn checkout 整个ports source tree（checkout完后的dir总共227M），并修改macports source，然后重新sync并建立index，整个过程可能会超过1小时。 当然好处也是有的，那就是一劳永逸并且99%的情况下应该能够work～</p>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2011/08/python-nameerror-name-readline-is-not-defined/" title="Python NameError: name &#8216;readline&#8217; is not defined (August 16, 2011)">Python NameError: name &#8216;readline&#8217; is not defined</a> (3)</li>
	<li><a href="http://blog.samsonis.me/2010/08/%e8%af%b4%e8%b0%8e/" title="说谎 (August 9, 2010)">说谎</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2011/01/%e8%8a%82%e9%80%89%e4%b8%a4%e6%ae%b5%e5%a5%a5%e5%b7%b4%e9%a9%ac2011%e5%9b%bd%e6%83%85%e5%92%a8%e6%96%87/" title="节选两段奥巴马2011国情咨文 (January 26, 2011)">节选两段奥巴马2011国情咨文</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/07/%e7%8b%ae%e5%ad%90%e5%ba%a7/" title="狮子座 (July 31, 2010)">狮子座</a> (16)</li>
	<li><a href="http://blog.samsonis.me/2010/02/%e6%9c%aa%e6%88%90%e5%b9%b4%e5%85%88%e5%88%ab%e5%84%aa/" title="未成年先别優 (February 23, 2010)">未成年先别優</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2010/09/sync-macports-ports-tree-using-subversion-over-http/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Terminal.app use option as meta key</title>
		<link>http://blog.samsonis.me/2010/08/terminal-app-use-option-as-meta-key/</link>
		<comments>http://blog.samsonis.me/2010/08/terminal-app-use-option-as-meta-key/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 15:25:04 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Share]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=2140</guid>
		<description><![CDATA[最近经常要在psql里输入很长很长很长很长的sql…要问有多长？答：很长，join多的都可以把hash-join temporary file搞到 “no space left on device” 的长…… ，然后蛋疼的case就是你写到很长的时候突然想修改句子中间的某个部分，注意是中间，不是开头也不是结尾，而你的光标还在行末朝你一闪一闪的… 你恨不得那时用鼠标能够点一下，但是很可惜这里是terminal，鼠标单击基本处于屏蔽状态；光标一个一个左移那是在考验你的毅力和忍耐力，你要时刻保持警惕不然就会漂移过头（一般此时容易睡着，所以那时我就很淡定的喝几口水，等光标移到后一般就可以去续杯了……）；后来想到可以一个一个word的移啊，怎么这么傻… 由于bash默认是emacs的key binding，查了一下往前和往后移一个word的shortcut key是Meta-f和Meta-b，查这些花了1分钟不到，但是接下来2个多小时我一直在找这个Meta key…… 后来终于总算被我一个一个这么排列组合试出来了…… 做梦也没想到竟然是ESC… 可以想象一下同时按esc和b来往后移一个word的那种发自内心的不协调。 不过，最后还是顺利解决了（不然就没有标题，亦没有此文了），Terminal.app提供了一个选项帮助用户map option (就是alt) 到meta key，esc虽然还是meta，但显然我们更喜欢用大拇指去按alt （编者注：只要玩warcraft的人都知道用大拇指去按alt查看生命值那是多么重要的操作，哈哈） 最后附图一张，以作纪念： Related posts Terminal.app echo breaks after ctrl-c (0) Python NameError: name &#8216;readline&#8217; is not defined (3) 说谎 (0) 节选两段奥巴马2011国情咨文 (0) 狮子座 (16)]]></description>
			<content:encoded><![CDATA[<p>最近经常要在psql里输入很长很长很长很长的sql…要问有多长？答：很长，join多的都可以把hash-join temporary file搞到 “no space left on device” 的长…… ，然后蛋疼的case就是你写到很长的时候突然想修改句子中间的某个部分，注意是中间，不是开头也不是结尾，而你的光标还在行末朝你一闪一闪的…</p>
<p>你恨不得那时用鼠标能够点一下，但是很可惜这里是terminal，鼠标单击基本处于屏蔽状态；光标一个一个左移那是在考验你的毅力和忍耐力，你要时刻保持警惕不然就会漂移过头（一般此时容易睡着，所以那时我就很淡定的喝几口水，等光标移到后一般就可以去续杯了……）；后来想到可以一个一个word的移啊，怎么这么傻… 由于bash默认是emacs的key binding，查了一下往前和往后移一个word的shortcut key是Meta-f和Meta-b，查这些花了1分钟不到，但是接下来2个多小时我一直在找这个Meta key…… 后来终于总算被我一个一个这么排列组合试出来了…… 做梦也没想到竟然是ESC… 可以想象一下同时按esc和b来往后移一个word的那种发自内心的不协调。</p>
<p>不过，最后还是顺利解决了（不然就没有标题，亦没有此文了），Terminal.app提供了一个选项帮助用户map option (就是alt) 到meta key，esc虽然还是meta，但显然我们更喜欢用大拇指去按alt （编者注：只要玩warcraft的人都知道用大拇指去按alt查看生命值那是多么重要的操作，哈哈）</p>
<p>最后附图一张，以作纪念：</p>
<p><a href="http://blog.samsonis.me/wp-content/uploads/2010/08/terminal_config.png"><img src="http://blog.samsonis.me/wp-content/uploads/2010/08/terminal_config-300x231.png" alt="" title="terminal_config" width="300" height="231" class="alignnone size-medium wp-image-2147" /></a></p>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2011/03/terminal-app-echo-breaks-after-ctrl-c/" title="Terminal.app echo breaks after ctrl-c (March 18, 2011)">Terminal.app echo breaks after ctrl-c</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2011/08/python-nameerror-name-readline-is-not-defined/" title="Python NameError: name &#8216;readline&#8217; is not defined (August 16, 2011)">Python NameError: name &#8216;readline&#8217; is not defined</a> (3)</li>
	<li><a href="http://blog.samsonis.me/2010/08/%e8%af%b4%e8%b0%8e/" title="说谎 (August 9, 2010)">说谎</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2011/01/%e8%8a%82%e9%80%89%e4%b8%a4%e6%ae%b5%e5%a5%a5%e5%b7%b4%e9%a9%ac2011%e5%9b%bd%e6%83%85%e5%92%a8%e6%96%87/" title="节选两段奥巴马2011国情咨文 (January 26, 2011)">节选两段奥巴马2011国情咨文</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/07/%e7%8b%ae%e5%ad%90%e5%ba%a7/" title="狮子座 (July 31, 2010)">狮子座</a> (16)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2010/08/terminal-app-use-option-as-meta-key/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Twitter Hosts</title>
		<link>http://blog.samsonis.me/2009/12/twitter-hosts/</link>
		<comments>http://blog.samsonis.me/2009/12/twitter-hosts/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 12:52:33 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=1372</guid>
		<description><![CDATA[上篇文章介绍过的修改hosts里面的那些twitter IP貌似现在已经不work了，原因据说是非https的访问过多造成的。 这个貌似还得大家一起努力，尽量避免误操作而使用http访问。没办法，旧的不去，新的不来嘛，douban上的twitter小组经常保持着可用hosts的更新，下次发现IP再被屏蔽，可以到那边看看，说不定会有收获的。 这回的更新：http://www.douban.com/group/topic/7964022/ Related posts Samson&#8217;s out (18) 退步原来是向前 (0) 欢迎报考围城 (0) 未成年先别優 (1) 微日记计划 (6)]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.samsonis.me/2009/12/samson-is-out/">上篇文章</a>介绍过的修改hosts里面的那些twitter IP貌似现在已经不work了，原因据说是<a href="http://www.williamlong.info/blog/archives/346.html">非https的访问过多</a>造成的。</p>
<p>这个貌似还得大家一起努力，尽量避免误操作而使用http访问。没办法，旧的不去，新的不来嘛，douban上的<a href="http://www.douban.com/group/topic/7964022/">twitter小组</a>经常保持着可用hosts的更新，下次发现IP再被屏蔽，可以到那边看看，说不定会有收获的。</p>
<p>这回的更新：<a href="http://www.douban.com/group/topic/7964022/">http://www.douban.com/group/topic/7964022/</a></p>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2009/12/samson-is-out/" title="Samson&#8217;s out (December 15, 2009)">Samson&#8217;s out</a> (18)</li>
	<li><a href="http://blog.samsonis.me/2010/05/%e9%80%80%e6%ad%a5%e5%8e%9f%e6%9d%a5%e6%98%af%e5%90%91%e5%89%8d/" title="退步原来是向前 (May 22, 2010)">退步原来是向前</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/06/%e6%ac%a2%e8%bf%8e%e6%8a%a5%e8%80%83%e5%9b%b4%e5%9f%8e/" title="欢迎报考围城 (June 7, 2010)">欢迎报考围城</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/02/%e6%9c%aa%e6%88%90%e5%b9%b4%e5%85%88%e5%88%ab%e5%84%aa/" title="未成年先别優 (February 23, 2010)">未成年先别優</a> (1)</li>
	<li><a href="http://blog.samsonis.me/2011/07/%e5%be%ae%e6%97%a5%e8%ae%b0%e8%ae%a1%e5%88%92/" title="微日记计划 (July 18, 2011)">微日记计划</a> (6)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2009/12/twitter-hosts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Samson&#8217;s out</title>
		<link>http://blog.samsonis.me/2009/12/samson-is-out/</link>
		<comments>http://blog.samsonis.me/2009/12/samson-is-out/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 17:01:29 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=1361</guid>
		<description><![CDATA[前两天看obama在复旦的演讲录像，里面提到twitter（人家特地让大使馆的人念问题，显然是有备而来的），不过不管你obama是有心还是无意，反正当时于我是心有戚戚焉了。 后来网上搜了下，发现原来改下hosts就能通过https访问了，好吧，out到火星自刎去了…… 无颜见江东父老了…… 以下是网上搜来的，且不唯一，也不知道有没有安全性的问题： 67.220.213.23 twitter.com 67.220.213.23 www.twitter.com 168.143.162.101 assets1.twitter.com 168.143.162.101 assets0.twitter.com 168.143.162.101 assets2.twitter.com 168.143.162.101 assets3.twitter.com 168.143.162.101 assets4.twitter.com 168.143.162.101 static.twitter.com PS：自刎之前请教大伙一个问题，在这个gfw横行到引起世界公愤的年代，大伙都是怎样上twitter的呢？ Related posts Twitter Hosts (2) 退步原来是向前 (0) 欢迎报考围城 (0) 未成年先别優 (1) 微日记计划 (6)]]></description>
			<content:encoded><![CDATA[<p>前两天看obama在复旦的演讲录像，里面提到twitter（人家特地让大使馆的人念问题，显然是有备而来的），不过不管你obama是有心还是无意，反正当时于我是心有戚戚焉了。</p>
<p>后来网上搜了下，发现原来改下hosts就能通过https访问了，好吧，out到火星自刎去了…… 无颜见江东父老了……</p>
<p>以下是网上搜来的，且不唯一，也不知道有没有安全性的问题：<br />
67.220.213.23 twitter.com<br />
67.220.213.23 www.twitter.com<br />
168.143.162.101 assets1.twitter.com<br />
168.143.162.101 assets0.twitter.com<br />
168.143.162.101 assets2.twitter.com<br />
168.143.162.101 assets3.twitter.com<br />
168.143.162.101 assets4.twitter.com<br />
168.143.162.101 static.twitter.com</p>
<p>PS：自刎之前请教大伙一个问题，在这个gfw横行到引起世界公愤的年代，大伙都是怎样上twitter的呢？</p>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2009/12/twitter-hosts/" title="Twitter Hosts (December 20, 2009)">Twitter Hosts</a> (2)</li>
	<li><a href="http://blog.samsonis.me/2010/05/%e9%80%80%e6%ad%a5%e5%8e%9f%e6%9d%a5%e6%98%af%e5%90%91%e5%89%8d/" title="退步原来是向前 (May 22, 2010)">退步原来是向前</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/06/%e6%ac%a2%e8%bf%8e%e6%8a%a5%e8%80%83%e5%9b%b4%e5%9f%8e/" title="欢迎报考围城 (June 7, 2010)">欢迎报考围城</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/02/%e6%9c%aa%e6%88%90%e5%b9%b4%e5%85%88%e5%88%ab%e5%84%aa/" title="未成年先别優 (February 23, 2010)">未成年先别優</a> (1)</li>
	<li><a href="http://blog.samsonis.me/2011/07/%e5%be%ae%e6%97%a5%e8%ae%b0%e8%ae%a1%e5%88%92/" title="微日记计划 (July 18, 2011)">微日记计划</a> (6)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2009/12/samson-is-out/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>git: &#8216;svn&#8217; is not a git-command</title>
		<link>http://blog.samsonis.me/2009/09/git-svn-is-not-a-git-command/</link>
		<comments>http://blog.samsonis.me/2009/09/git-svn-is-not-a-git-command/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 17:29:59 +0000</pubDate>
		<dc:creator>Samson Wu</dc:creator>
				<category><![CDATA[Technique]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[MacPorts]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.samsonis.me/?p=1200</guid>
		<description><![CDATA[诡异的事情天天有： $ git svn clone &#8230; &#8230; git: &#8216;svn&#8217; is not a git-command. See &#8216;git &#8211;help&#8217;. Did you mean one of these? &#160;&#160;&#160;&#160;fsck &#160;&#160;&#160;&#160;show svn是git command吗？不是git command吗？…… 搞了半天原来和前不久的curl localhost是同一个问题 ── port variants没装，好吧这回吸取教训了，下次再装port一定要养成习惯先看下variants…… 被depend到自动搞下来的port暂时还没找到办法，所以估计这种诡异的事情以后还是不能避免，就这点而言，archlinux下的pacman和ABS就做的相对好一点，至少surprise没那么多（好吧，有还是有的……） $ port variants git-core $ sudo port uninstall git-core $ sudo port install git-core +bash_completion +svn +doc Related posts 不能curl localhost？ (2) ...]]></description>
			<content:encoded><![CDATA[<p>诡异的事情天天有：</p>
<blockquote><p>$ git svn clone &#8230; &#8230;<br />
git: &#8216;svn&#8217; is not a git-command. See &#8216;git &#8211;help&#8217;.</p>
<p>Did you mean one of these?<br />
&nbsp;&nbsp;&nbsp;&nbsp;fsck<br />
&nbsp;&nbsp;&nbsp;&nbsp;show</p></blockquote>
<p>svn是git command吗？不是git command吗？……</p>
<p>搞了半天原来和前不久的<a href="http://blog.samsonis.me/2009/08/cannot-curl-localhost/">curl localhost</a>是同一个问题 ── port variants没装，好吧这回吸取教训了，下次再装port一定要养成习惯先看下variants……</p>
<p>被depend到自动搞下来的port暂时还没找到办法，所以估计这种诡异的事情以后还是不能避免，就这点而言，archlinux下的pacman和ABS就做的相对好一点，至少surprise没那么多（好吧，有还是有的……）</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ port variants git-core<br />
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> port uninstall git-core<br />
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> git-core +bash_completion +<span style="color: #c20cb9; font-weight: bold;">svn</span> +doc</div></div>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.samsonis.me/2009/08/cannot-curl-localhost/" title="不能curl localhost？ (August 21, 2009)">不能curl localhost？</a> (2)</li>
	<li><a href="http://blog.samsonis.me/2011/03/terminal-app-echo-breaks-after-ctrl-c/" title="Terminal.app echo breaks after ctrl-c (March 18, 2011)">Terminal.app echo breaks after ctrl-c</a> (0)</li>
	<li><a href="http://blog.samsonis.me/2010/09/sync-macports-ports-tree-using-subversion-over-http/" title="Sync MacPorts ports tree using Subversion (over HTTP) (September 13, 2010)">Sync MacPorts ports tree using Subversion (over HTTP)</a> (4)</li>
	<li><a href="http://blog.samsonis.me/2011/08/python-nameerror-name-readline-is-not-defined/" title="Python NameError: name &#8216;readline&#8217; is not defined (August 16, 2011)">Python NameError: name &#8216;readline&#8217; is not defined</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.samsonis.me/2009/09/git-svn-is-not-a-git-command/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

