<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Tingan's Weblog</title>
	<atom:link href="http://tingan.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tingan.wordpress.com</link>
	<description>ubuntu, drupal,php,mysql,apache,javascript,xml,web</description>
	<lastBuildDate>Sat, 07 Nov 2009 12:01:07 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='tingan.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/a0fffee2378a7f9018ebfd256bf7334b?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Tingan's Weblog</title>
		<link>http://tingan.wordpress.com</link>
	</image>
			<item>
		<title>URL Encoding</title>
		<link>http://tingan.wordpress.com/2009/11/07/url-encoding/</link>
		<comments>http://tingan.wordpress.com/2009/11/07/url-encoding/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 12:01:01 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/11/07/url-encoding/</guid>
		<description><![CDATA[(or: &#8216;What are those &#8220;%20&#8243; codes in URLs?&#8217;)= Index DOT Html by Brian Wilson =



     Main Index &#124; Element     Index &#124; Element Tree &#124;     HTML Support History


RFC 1738 &#124;    Which characters must be encoded and why    How [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=119&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h1 align="center"><span class="pagetitle">(or: &#8216;What are those &#8220;%20&#8243; codes in URLs?&#8217;)</span><br /><font size="2">= <span class="sitetitle">Index DOT Html</span> by <a href="http://www.blooberry.com/indexdot/misc/email.htm">Brian Wilson</a> =</font></h1>
<table cellpadding="5" cellspacing="0" border="3">
<tbody>
<tr>
<td align="center"><font size="2">     <a href="http://www.blooberry.com/indexdot/html/index.html">Main Index</a> | <a href="http://www.blooberry.com/indexdot/html/tagindex/a.htm">Element     Index</a> | <a href="http://www.blooberry.com/indexdot/html/tree/htmltree.htm">Element Tree</a> |     <a href="http://www.blooberry.com/indexdot/html/supportkey/a.htm">HTML Support History</a></font></td>
</tr>
<tr>
<td align="center"><a href="http://www.blooberry.com/indexdot/html/topics/urlencoding.htm#rfc1738">RFC 1738</a> |    <a href="http://www.blooberry.com/indexdot/html/topics/urlencoding.htm#whatwhy">Which characters must be encoded and why</a><br />    <a href="http://www.blooberry.com/indexdot/html/topics/urlencoding.htm#how">How to URL encode characters</a> | <a href="http://www.blooberry.com/indexdot/html/topics/urlencoding.htm#rollown">URL    encode a character</a></td>
</tr>
</tbody>
</table>
<table cellpadding="3" width="90%">
<tbody>
<tr>
<td colspan="3">
<hr size="1" /></td>
</tr>
<tr>
<td colspan="3" align="left">     <a name="rfc1738"></a>  <big><b class="mainheading">RFC 1738: Uniform Resource Locators (URL) specification</b></big><br />
<hr size="1" width="30%" align="left" />     The specification for URLs (<a href="http://www.rfc-editor.org/rfc/rfc1738.txt">RFC 1738</a>,     Dec. &#8216;94) poses a problem, in that it limits the use of allowed characters     in URLs to only a limited subset of the US-ASCII character set:<br />
<blockquote class="quotation">&#8220;&#8230;Only alphanumerics [0-9a-zA-Z],        the special characters &#8220;$-_.+!*&#8217;(),&#8221; <b>[not including the quotes -        ed]</b>, and reserved characters used for their reserved purposes may        be used unencoded within a URL.&#8221;</p></blockquote>
<p>      HTML, on the other hand, allows the entire range of the     <a href="http://www.blooberry.com/indexdot/html/tagpages/text.htm">ISO-8859-1 (ISO-Latin)</a> character set     to be used in documents &#8211; and HTML4 expands the allowable range to include     all of the <a href="http://www.blooberry.com/indexdot/html/tagpages/text.htm#unicode">Unicode character     set</a> as well. In the case of non-ISO-8859-1 characters (characters above     FF hex/255 decimal in the Unicode set), they just can not be used in URLs,     because there is no safe way to specify character set information in the     URL content yet [<a href="http://www.rfc-editor.org/rfc/rfc2396.txt">RFC2396</a>.]     </p>
<p>     URLs should be encoded everywhere in an HTML document that a URL is     referenced to import an object (<a href="http://www.blooberry.com/indexdot/html/tagpages/a/a-hyperlink.htm">A</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/a/applet.htm">APPLET</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/a/area.htm">AREA</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/b/base.htm">BASE</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/b/bgsound.htm">BGSOUND</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/b/body.htm">BODY</a>,     <a href="http://www.blooberry.com/indexdot/html/tagpages/e/embed.htm">EMBED</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/f/form.htm">FORM</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/f/frame.htm">FRAME</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/i/iframe.htm">IFRAME</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/i/ilayer.htm">ILAYER</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/i/image.htm">IMG</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/i/isindex.htm">ISINDEX</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/i/inputtext.htm">INPUT</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/l/layer.htm">LAYER</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/l/link.htm">LINK</a>,     <a href="http://www.blooberry.com/indexdot/html/tagpages/o/object.htm">OBJECT</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/s/script.htm">SCRIPT</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/s/sound.htm">SOUND</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/t/table.htm">TABLE</a>,      <a href="http://www.blooberry.com/indexdot/html/tagpages/t/thtd.htm">TD</a>, <a href="http://www.blooberry.com/indexdot/html/tagpages/t/thtd.htm">TH</a>,      and <a href="http://www.blooberry.com/indexdot/html/tagpages/t/tr.htm">TR</a> elements.)     </p>
<p> <a name="whatwhy"></a>  <big><b class="mainheading">What characters need to be encoded and why?</b></big><br />
<hr size="1" width="30%" align="left" />
<table>
<tbody>
<tr>
<td colspan="3"><b class="subheading">ASCII Control characters</b></td>
</tr>
<tr>
<td rowspan="2">&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td valign="top"><b class="l3heading">Why:</b></td>
<td>These characters are not printable.</td>
</tr>
<tr>
<td valign="top"><b class="l3heading">Characters:</b></td>
<td>Includes the <a href="http://www.blooberry.com/indexdot/html/tagpages/text.htm">ISO-8859-1         (ISO-Latin)</a> character ranges 00-1F hex (0-31 decimal) and 7F         (127 decimal.)</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td colspan="3"><b class="subheading">Non-ASCII characters</b></td>
</tr>
<tr>
<td rowspan="2">&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td valign="top"><b class="l3heading">Why:</b></td>
<td>These are by definition not legal in URLs since they are not in             the ASCII set.</td>
</tr>
<tr>
<td valign="top"><b class="l3heading">Characters:</b></td>
<td>Includes the entire &#8220;top half&#8221; of the             <a href="http://www.blooberry.com/indexdot/html/tagpages/text.htm">ISO-Latin</a> set 80-FF hex             (128-255 decimal.)</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td colspan="3"><b class="subheading">&#8220;Reserved characters&#8221;</b></td>
</tr>
<tr>
<td rowspan="2">&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td valign="top"><b class="l3heading">Why:</b></td>
<td>URLs use some characters for special use in defining their syntax.             When these characters are not used in their special role inside a             URL, they need to be encoded.</td>
</tr>
<tr>
<td valign="top"><b class="l3heading">Characters:</b></td>
<td>
<table cellpadding="3" cellspacing="0" border="1">
<tbody>
<tr>
<th>Character</th>
<th>Code<br />Points<br />(Hex)</th>
<th>Code<br />Points<br />(Dec)</th>
</tr>
<tr>
<td nowrap="nowrap" valign="top">&nbsp;Dollar (&#8220;$&#8221;)<br />             &nbsp;Ampersand (&#8220;&amp;&#8221;)<br />             &nbsp;Plus (&#8220;+&#8221;)<br />             &nbsp;Comma (&#8220;,&#8221;)<br />             &nbsp;Forward slash/Virgule (&#8220;/&#8221;)<br />             &nbsp;Colon (&#8220;:&#8221;)<br />             &nbsp;Semi-colon (&#8220;;&#8221;)<br />             &nbsp;Equals (&#8220;=&#8221;)<br />             &nbsp;Question mark (&#8220;?&#8221;)<br />             &nbsp;&#8217;At&#8217; symbol (&#8220;@&#8221;)</td>
<td valign="top" align="center">24<br />26<br />2B<br />2C<br />2F<br />3A<br />3B<br />3D<br />3F<br />40</td>
<td valign="top" align="center">36<br />38<br />43<br />44<br />47<br />58<br />59<br />61<br />63<br />64</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td colspan="3"><b class="subheading">&#8220;Unsafe characters&#8221;</b></td>
</tr>
<tr>
<td rowspan="2">&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td valign="top"><b class="l3heading">Why:</b></td>
<td>Some characters present the <em>possibility</em> of being              misunderstood within URLs for various reasons. These characters             should also always be encoded.</td>
</tr>
<tr>
<td valign="top"><b class="l3heading">Characters:</b></td>
<td>
<table cellpadding="3" cellspacing="0" border="1">
<tbody>
<tr>
<th>Character</th>
<th>Code<br />Points<br />(Hex)</th>
<th>Code<br />Points<br />(Dec)</th>
<th>Why encode?</th>
</tr>
<tr>
<td>Space</td>
<td align="center">20</td>
<td align="center">32</td>
<td valign="top">Significant sequences of spaces may be lost in some                 uses (especially multiple spaces)</td>
</tr>
<tr>
<td nowrap="nowrap">Quotation marks<br />&#8216;Less Than&#8217; symbol (&#8220;&lt;&#8221;)<br />                 &#8216;Greater Than&#8217; symbol (&#8220;&gt;&#8221;)</td>
<td align="center">22<br />3C<br />3E</td>
<td align="center">34<br />60<br />62</td>
<td valign="top">These characters are often used to delimit URLs                 in plain text.</td>
</tr>
<tr>
<td nowrap="nowrap">&#8216;Pound&#8217; character (&#8220;#&#8221;)</td>
<td align="center">23</td>
<td align="center">35</td>
<td valign="top">This is used in URLs to indicate where a fragment                 identifier (bookmarks/anchors in HTML) begins.</td>
</tr>
<tr>
<td nowrap="nowrap">Percent character (&#8220;%&#8221;)</td>
<td align="center">25</td>
<td align="center">37</td>
<td valign="top">This is used to URL encode/escape other characters,                 so it should itself also be encoded.</td>
</tr>
<tr>
<td nowrap="nowrap"><b>Misc. characters:</b><br />                 &nbsp;&nbsp;&nbsp;Left Curly Brace (&#8220;{&#8220;)<br />                 &nbsp;&nbsp;&nbsp;Right Curly Brace (&#8220;}&#8221;)<br />                 &nbsp;&nbsp;&nbsp;Vertical Bar/Pipe (&#8220;|&#8221;)<br />                 &nbsp;&nbsp;&nbsp;Backslash (&#8220;\&#8221;)<br />                 &nbsp;&nbsp;&nbsp;Caret (&#8220;^&#8221;)<br />                 &nbsp;&nbsp;&nbsp;Tilde (&#8220;~&#8221;)<br />                 &nbsp;&nbsp;&nbsp;Left Square Bracket (&#8220;[")<br />                 &nbsp;&nbsp;&nbsp;Right Square Bracket ("]&#8220;)<br />                 &nbsp;&nbsp;&nbsp;Grave Accent (&#8220;`&#8221;)</td>
<td align="center">7B<br />7D<br />7C<br />5C<br />5E<br />7E<br />5B<br />5D<br />60</td>
<td align="center">123<br />125<br />124<br />92<br />94<br />126<br />91<br />93<br />96</td>
<td valign="top">Some systems can possibly modify these characters.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>   <a name="how"></a>  <big><b class="mainheading">How are characters URL encoded?</b></big><br />
<hr size="1" width="30%" align="left" />     <span class="text">URL encoding of a character consists of a &#8220;%&#8221; symbol,     followed by the two-digit hexadecimal representation (case-insensitive)     of the <a href="http://www.blooberry.com/indexdot/html/tagpages/text.htm">ISO-Latin</a> code point for the     character.</span>
<dl>
<dt><b class="subheading">Example</b>     </dt>
<dd>
<div class="example">
<ul>
<li>Space = decimal code point 32 in the                 <a href="http://www.blooberry.com/indexdot/html/tagpages/text.htm">ISO-Latin</a> set.             </li>
<li>32 decimal = 20 in hexadecimal             </li>
<li>The URL encoded representation will be &#8220;%20&#8243;         </li>
</ul>
</div>
</dd>
</dl>
<p><a name="rollown"></a> <big><b class="mainheading">URL encoding converter</b></big><br />
<hr size="1" width="30%" align="left" /> <span class="text">The box below allows you to convert content between its unencoded and encoded forms. The initial input state is considered to be &#8220;unencoded&#8221; (hit &#8216;Convert&#8217; at the beginning to start in the encoded state.) Further, to allow actual URLs to be encoded, this little converter does not encode URL syntax characters (the <b>&#8220;;&#8221;, &#8220;/&#8221;, &#8220;?&#8221;, &#8220;:&#8221;, &#8220;@&#8221;, &#8220;=&#8221;, &#8220;#&#8221;</b> and <b>&#8220;&amp;&#8221;</b> characters)&#8230;if you also need to encode these characters for any reason, see the &#8220;Reserved characters&#8221; table above for the appropriate encoded values.</p>
<p><b class="smalltext"><b class="alert">NOTE:</b><br />This converter uses the String.charCodeAt and String.fromCharCode functions, which are only available in Javascript version 1.2 or better, so it doesn&#8217;t work in Opera 3.x and below, Netscape 3 and below, and IE 3 and below. Browser detection <em>can</em> be tiresome, so this will just fail in those browsers&#8230;you have been warned. 8-}</b> </span><br /> <br />
<blockquote>
<table border="0">
<tbody>
<tr>
<th colspan="3"></th>
</tr>
<tr>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
</tr>
<tr>
<th><font size="2">No<br />Encoding</font></th>
<th></th>
<th><font size="2">URL-Safe<br />Encoding</font></th>
</tr>
</tbody>
</table>
</blockquote>
<p><a name="peculiar"></a> <big><b class="mainheading">Browser Peculiarities</b></big><br />
<hr size="1" width="30%" align="left" />
<ul>
<li>Internet Explorer is notoriously relaxed in its requirements for        encoding spaces in URLs. This tends to contribute to author        sloppiness in authoring URLs. Keep in mind that Netscape and        Opera are much more strict on this point, and spaces <em>MUST</em>        be encoded if the URL is to be considered to be correct. </li>
</ul>
</td>
</tr>
</tbody>
</table>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=ec224ca7-efe3-8972-a0a9-b318efca6745" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=119&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/11/07/url-encoding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=ec224ca7-efe3-8972-a0a9-b318efca6745" medium="image" />
	</item>
		<item>
		<title>PHP Curl Upload image</title>
		<link>http://tingan.wordpress.com/2009/11/06/php-curl-upload-image/</link>
		<comments>http://tingan.wordpress.com/2009/11/06/php-curl-upload-image/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 22:23:54 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/11/06/php-curl-upload-image/</guid>
		<description><![CDATA[index.htm&#60;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Strict//EN&#8221;&#160;&#160; &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#8221;&#62;&#60;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221;&#62;&#60;head&#62; &#60;title&#62;&#60;/title&#62;&#60;/head&#62;&#60;body&#62;&#160;&#160; &#60;form action=&#8221;imagem.php&#8221; method=&#8221;post&#8221; enctype=&#8217;multipart/form-data&#8217;&#62;&#160;&#160;&#160;&#160;&#160;&#160; &#60;input type=&#8221;file&#8221; id=&#8221;foto&#8221; name=&#8221;foto&#8221; /&#62;&#160;&#160;&#160;&#160;&#160;&#160; &#60;input type=&#8221;submit&#8221; value=&#8221;Enviar&#8221; /&#62;&#160;&#160; &#60;/form&#62;&#60;/body&#62;&#60;/html&#62;
imagem.php&#60;?phppreg_match(&#8220;/\.(gif&#124;bmp&#124;png&#124;jpg&#124;jpeg){1}$/i&#8221;, $_FILES['foto']['name'], $ext);$imagem_nome = md5(uniqid(time())) . &#8220;.&#8221; . $ext[1];rename($_FILES['foto']['tmp_name'], &#8220;/tmp/&#8221; . $imagem_nome);
$postData = array();$postData['fileupload'] = &#8220;@/tmp/&#8221; . $imagem_nome;$postData['submit']&#160;&#160;&#160;&#160; = &#8220;Submit&#8221;;$postData['key']&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = &#8220;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&#8221;;$postData['rembar']&#160;&#160;&#160;&#160; = &#8220;yes&#8221;;$postData['xml']&#160;&#160;&#160;&#160;&#160;&#160;&#160; = &#8220;yes&#8221;;$ch = curl_init();curl_setopt($ch, CURLOPT_URL, &#8220;http://www.imageshack.us/index.php&#8221;);curl_setopt($ch, CURLOPT_POST, true [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=116&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>index.htm<br />&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Strict//EN&#8221;&nbsp;&nbsp; <br />&#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#8221;&gt;<br />&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221;&gt;<br />&lt;head&gt; <br />&lt;title&gt;&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;&nbsp;&nbsp; <br />&lt;form action=&#8221;imagem.php&#8221; method=&#8221;post&#8221; enctype=&#8217;multipart/form-data&#8217;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&lt;input type=&#8221;file&#8221; id=&#8221;foto&#8221; name=&#8221;foto&#8221; /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&lt;input type=&#8221;submit&#8221; value=&#8221;Enviar&#8221; /&gt;&nbsp;&nbsp; <br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
<p>imagem.php<br />&lt;?php<br />preg_match(&#8220;/\.(gif|bmp|png|jpg|jpeg){1}$/i&#8221;, $_FILES['foto']['name'], $ext);<br />$imagem_nome = md5(uniqid(time())) . &#8220;.&#8221; . $ext[1];<br />rename($_FILES['foto']['tmp_name'], &#8220;/tmp/&#8221; . $imagem_nome);</p>
<p>$postData = array();<br />$postData['fileupload'] = &#8220;@/tmp/&#8221; . $imagem_nome;<br />$postData['submit']&nbsp;&nbsp;&nbsp;&nbsp; = &#8220;Submit&#8221;;<br />$postData['key']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#8220;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&#8221;;<br />$postData['rembar']&nbsp;&nbsp;&nbsp;&nbsp; = &#8220;yes&#8221;;<br />$postData['xml']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#8220;yes&#8221;;<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, &#8220;http://www.imageshack.us/index.php&#8221;);<br />curl_setopt($ch, CURLOPT_POST, true );<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);<br />curl_setopt($ch, CURLOPT_TIMEOUT, 240);curl_setopt($ch, CURLOPT_POSTFIELDS, $postData );</p>
<p>$response = curl_exec( $ch );<br />curl_close($ch );</p>
<p>echo $response;<br />?&gt;</p>
<p>Upload files using curl + php 
<pre class="alt2" style="border:1px inset;overflow:auto;width:750px;height:498px;text-align:left;margin:0;padding:6px;">// upload.php
&lt;form action="upload.php"&gt;
&lt;input name="cert_file" value="" type="file"/&gt;

&lt;input class="button" name="submit" value="Save" type="submit"/&gt;
&lt;/form&gt;

&lt;?php

 // Initialise cURL session
     $curl = curl_init();

         $filename = $_POST[cert_file] ;
        $size = filesize($filename);
        $file = fopen($filename,'r');
        list(,$destinationFilename) = pathinfo($filename);

        $data['upload'] = "@".$filename;
        $url = "http://x.com/{$destinationFilename}";

        curl_setopt($curl,CURLOPT_URL,$url);
        //curl_setopt($curl,CURLOPT_PUT,true);
        curl_setopt($curl,CURLOPT_POST,1);
        curl_setopt($curl,CURLOPT_POSTFIELDS,$data);

        // present the filesize of the file we're putting
        curl_setopt($curl,CURLOPT_INFILESIZE,$size);

        // load the file in by its resource handle
        curl_setopt($curl,CURLOPT_INFILE,$file);

        // Place a nice friendly user-agent
        //curl_setopt($curl,CURLOPT_USERAGENT,"Mozilla/4.0");

        // return the output instead of displaying it
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

         // execute, and log the result to curl_put.log
        $result = curl_exec($curl);
        $error = curl_error($curl);

?&gt;</pre>
<p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=af7043fa-67cb-8245-a885-aadf8acc79cd" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=116&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/11/06/php-curl-upload-image/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=af7043fa-67cb-8245-a885-aadf8acc79cd" medium="image" />
	</item>
		<item>
		<title>PHP $_FILES详解</title>
		<link>http://tingan.wordpress.com/2009/11/06/php-_files%e8%af%a6%e8%a7%a3/</link>
		<comments>http://tingan.wordpress.com/2009/11/06/php-_files%e8%af%a6%e8%a7%a3/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 19:09:54 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/11/06/php-_files%e8%af%a6%e8%a7%a3/</guid>
		<description><![CDATA[














文件上传表单 




&#60;form enctype="multipart/form-data" action="URL" method="post"&#62; &#60;input type="hidden" name="MAX_FILE_SIZE" value="1000"&#62; &#60;input name="myFile" type="file"&#62; &#60;input type="submit" value="上传文件"&#62; &#60;/form&#62; 




&#160;
$_FILES数组内容如下:
$_FILES['myFile']['name']&#160;&#160; 客户端文件的原名称。 $_FILES['myFile']['type']&#160;&#160; 文件的 MIME 类型，需要浏览器提供该信息的支持，例如&#8221;image/gif&#8221;。 $_FILES['myFile']['size']&#160;&#160; 已上传文件的大小，单位为字节。 $_FILES['myFile']['tmp_name']&#160;&#160; 文件被上传后在服务端储存的临时文件名，一般是系统默认。可以在php.ini的upload_tmp_dir 指定，但 用 putenv() 函数设置是不起作用的。 $_FILES['myFile']['error']&#160;&#160; 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明：(它们在PHP3.0以后成了常量) &#160;&#160;UPLOAD_ERR_OK &#160;&#160;&#160;&#160;值：0; 没有错误发生，文件上传成功。 &#160;&#160;UPLOAD_ERR_INI_SIZE &#160;&#160;&#160;&#160;值：1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 &#160;&#160;UPLOAD_ERR_FORM_SIZE &#160;&#160;&#160;&#160;值：2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 &#160;&#160;UPLOAD_ERR_PARTIAL &#160;&#160;&#160;&#160;值：3; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=112&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><table style="border-collapse:collapse;" cellpadding="0" cellspacing="0" width="760" align="center" bgcolor="#ffffff" border="0">
<tbody>
<tr>
<td height="30" align="center"></td>
</tr>
<tr>
<td height="9" align="center"><img src="http://blog.chinaunix.net/templates/default/images/right_line.gif" alt="" height="9" width="502" border="0" /></td>
</tr>
<tr>
<td align="center">
<table style="border-collapse:collapse;" cellpadding="0" cellspacing="0" width="740" border="0">
<tbody>
<tr>
<td width="740">
<div id="art" style="margin:15px;">
<div>文件上传表单 </div>
<table style="border-collapse:collapse;" cellpadding="0" cellspacing="0" width="95%" bgcolor="#f1f1f1" border="1">
<tbody>
<tr>
<td>
<p style="line-height:150%;margin:5px;"><code><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,204);">&lt;</span><span style="color:rgb(0,0,255);">form</span> <strong><span style="color:rgb(255,0,0);">enctype</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"multipart/form-data"</span></strong> <span style="color:rgb(255,0,0);">action</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"URL"</span> <span style="color:rgb(255,0,0);">method</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"post"</span><span style="color:rgb(0,0,204);">&gt;</span> <br /><span style="color:rgb(0,0,204);">&lt;</span><span style="color:rgb(0,0,255);">input</span> <span style="color:rgb(255,0,0);">type</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"hidden"</span> <span style="color:rgb(255,0,0);">name</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"MAX_FILE_SIZE"</span> <span style="color:rgb(255,0,0);">value</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"1000"</span><span style="color:rgb(0,0,204);">&gt;</span> <br /><span style="color:rgb(0,0,204);">&lt;</span><span style="color:rgb(0,0,255);">input</span> <strong><span style="color:rgb(255,0,0);">name</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"myFile"</span></strong> <span style="color:rgb(255,0,0);">type</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"file"</span><span style="color:rgb(0,0,204);">&gt;</span> <br /><span style="color:rgb(0,0,204);">&lt;</span><span style="color:rgb(0,0,255);">input</span> <span style="color:rgb(255,0,0);">type</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"submit"</span> <span style="color:rgb(255,0,0);">value</span><span style="color:rgb(0,0,204);">=</span><span style="color:rgb(255,0,255);">"上传文件"</span><span style="color:rgb(0,0,204);">&gt;</span> <br /><span style="color:rgb(0,0,204);">&lt;</span><span style="color:rgb(0,0,204);">/</span><span style="color:rgb(0,0,255);">form</span><span style="color:rgb(0,0,204);">&gt;</span> </span></code></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>$_FILES数组内容如下:</p>
<p>$_FILES['myFile']['<strong>name</strong>']&nbsp;&nbsp; 客户端文件的原名称。 <br />$_FILES['myFile']['<strong>type</strong>']&nbsp;&nbsp; 文件的 MIME 类型，需要浏览器提供该信息的支持，例如&#8221;image/gif&#8221;。 <br />$_FILES['myFile']['<strong>size</strong>']&nbsp;&nbsp; 已上传文件的大小，单位为字节。 <br />$_FILES['myFile'][<strong>'tmp_name'</strong>]&nbsp;&nbsp; 文件被上传后在服务端储存的临时文件名，一般是系统默认。可以在php.ini的upload_tmp_dir 指定，但 用 putenv() 函数设置是不起作用的。 <br />$_FILES['myFile']['<strong>error</strong>']&nbsp;&nbsp; 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明：(它们在PHP3.0以后成了常量) <br />&nbsp;<strong>&nbsp;UPLOAD_ERR_OK</strong> <br />&nbsp;&nbsp;&nbsp;&nbsp;值：0; 没有错误发生，文件上传成功。 <br />&nbsp;&nbsp;<strong>UPLOAD_ERR_INI_SIZE</strong> <br />&nbsp;&nbsp;&nbsp;&nbsp;值：1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 <br />&nbsp;&nbsp;<strong>UPLOAD_ERR_FORM_SIZE</strong> <br />&nbsp;&nbsp;&nbsp;&nbsp;值：2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 <br />&nbsp;&nbsp;<strong>UPLOAD_ERR_PARTIAL</strong> <br />&nbsp;&nbsp;&nbsp;&nbsp;值：3; 文件只有部分被上传。 <br />&nbsp;&nbsp;<strong>UPLOAD_ERR_NO_FILE <br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;值：4; 没有文件被上传。 <br />&nbsp;&nbsp;&nbsp;&nbsp;值：5; 上传文件大小为0. </p>
<p>文件被上传结束后，默认地被存储在了临时目录中，这时您必须将它从临时目录中删除或移动到其它地方，如果没有，则会被删除。也就是不管是否 上传成功，脚本执行完后临时目录里的文件肯定会被删除。所以在删除之前要用PHP的 copy() 函数将它复制到其它位置，此时，才算完成了上传文件过程。 </p>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=ea0191cb-29d5-86c3-a746-462e0641aeea" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=112&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/11/06/php-_files%e8%af%a6%e8%a7%a3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://blog.chinaunix.net/templates/default/images/right_line.gif" medium="image" />

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=ea0191cb-29d5-86c3-a746-462e0641aeea" medium="image" />
	</item>
		<item>
		<title>Ubuntu 9.10 T61键盘中的鼠标中键失灵</title>
		<link>http://tingan.wordpress.com/2009/11/06/ubuntu-9-10-t61%e9%94%ae%e7%9b%98%e4%b8%ad%e7%9a%84%e9%bc%a0%e6%a0%87%e4%b8%ad%e9%94%ae%e5%a4%b1%e7%81%b5/</link>
		<comments>http://tingan.wordpress.com/2009/11/06/ubuntu-9-10-t61%e9%94%ae%e7%9b%98%e4%b8%ad%e7%9a%84%e9%bc%a0%e6%a0%87%e4%b8%ad%e9%94%ae%e5%a4%b1%e7%81%b5/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 16:49:35 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/11/06/ubuntu-9-10-t61%e9%94%ae%e7%9b%98%e4%b8%ad%e7%9a%84%e9%bc%a0%e6%a0%87%e4%b8%ad%e9%94%ae%e5%a4%b1%e7%81%b5/</guid>
		<description><![CDATA[1. $sudo vi etc/etc/hal/fdi/policy/mouse-wheel.fdi如果没有创建新的。这里vi可以是emacs，geidt等任何编辑器
2.复制下面的内容&#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&#62;&#60;match key=&#8221;info.product&#8221; string=&#8221;TPPS/2 IBM TrackPoint&#8221;&#62; 
&#60;merge key=&#8221;input.x11_options.EmulateWheel&#8221; type=&#8221;string&#8221;&#62;true&#60;/merge&#62;&#60;merge key=&#8221;input.x11_options.EmulateWheelButton&#8221; type=&#8221;string&#8221;&#62;2&#60;/merge&#62;&#60;merge key=&#8221;input.x11_options.XAxisMapping&#8221; type=&#8221;string&#8221;&#62;6 7&#60;/merge&#62;&#60;merge key=&#8221;input.x11_options.YAxisMapping&#8221; type=&#8221;string&#8221;&#62;4 5&#60;/merge&#62;&#60;merge key=&#8221;input.x11_options.ZAxsisMapping&#8221; type=&#8221;string&#8221;&#62;4 5&#60;/merge&#62;&#60;merge key=&#8221;input.x11_options.Emulate3Buttons&#8221; type=&#8221;string&#8221;&#62;true&#60;/merge&#62;&#60;/match&#62;
重启hal和gdm服务：
$ sudo /etc/init.d/hal restart$ sudo /etc/init.d/gdm restart
$sudo service hal restart
$sudo service gdm restart



       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=110&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>1. $sudo vi etc/etc/hal/fdi/policy/mouse-wheel.fdi<br />如果没有创建新的。<br />这里vi可以是emacs，geidt等任何编辑器</p>
<p>2.复制下面的内容<br />&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />&lt;match key=&#8221;info.product&#8221; string=&#8221;TPPS/2 IBM TrackPoint&#8221;&gt; </p>
<p>&lt;merge key=&#8221;input.x11_options.EmulateWheel&#8221; type=&#8221;string&#8221;&gt;true&lt;/merge&gt;<br />&lt;merge key=&#8221;input.x11_options.EmulateWheelButton&#8221; type=&#8221;string&#8221;&gt;2&lt;/merge&gt;<br />&lt;merge key=&#8221;input.x11_options.XAxisMapping&#8221; type=&#8221;string&#8221;&gt;6 7&lt;/merge&gt;<br />&lt;merge key=&#8221;input.x11_options.YAxisMapping&#8221; type=&#8221;string&#8221;&gt;4 5&lt;/merge&gt;<br />&lt;merge key=&#8221;input.x11_options.ZAxsisMapping&#8221; type=&#8221;string&#8221;&gt;4 5&lt;/merge&gt;<br />&lt;merge key=&#8221;input.x11_options.Emulate3Buttons&#8221; type=&#8221;string&#8221;&gt;true&lt;/merge&gt;<br />&lt;/match&gt;</p>
<p>重启hal和gdm服务：</p>
<p>$ sudo /etc/init.d/hal restart<br />$ sudo /etc/init.d/gdm restart</p>
<p>$sudo service hal restart</p>
<p>$sudo service gdm restart</p>
<p></p>
<p></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=40709bad-b444-8afe-a52a-6026d8d2481d" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=110&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/11/06/ubuntu-9-10-t61%e9%94%ae%e7%9b%98%e4%b8%ad%e7%9a%84%e9%bc%a0%e6%a0%87%e4%b8%ad%e9%94%ae%e5%a4%b1%e7%81%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=40709bad-b444-8afe-a52a-6026d8d2481d" medium="image" />
	</item>
		<item>
		<title>ubuntu 9.04启用thinkpad指纹识别</title>
		<link>http://tingan.wordpress.com/2009/11/06/ubuntu-9-04%e5%90%af%e7%94%a8thinkpad%e6%8c%87%e7%ba%b9%e8%af%86%e5%88%ab/</link>
		<comments>http://tingan.wordpress.com/2009/11/06/ubuntu-9-04%e5%90%af%e7%94%a8thinkpad%e6%8c%87%e7%ba%b9%e8%af%86%e5%88%ab/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 16:43:25 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/11/06/ubuntu-9-04%e5%90%af%e7%94%a8thinkpad%e6%8c%87%e7%ba%b9%e8%af%86%e5%88%ab/</guid>
		<description><![CDATA[ubuntu 9.04在我的t61上表现完美，启动从开始读盘到登录界面用时15秒左右，除了指纹识别，所有设备都直接可以使用，比windows强太多了。网上介绍启用指纹识别的教程有很多，试了几个都不成，最终还是在强大的ThinkWiki上找到了正解。原文涉及多个版本，步骤繁多，这里把我实践成功的ubuntu 9.04下步骤整理如下（根据实际情况略有修改）：
1. 添加keysudo apt-key adv &#8211;recv-keys &#8211;keyserver keyserver.ubuntu.com F2A12FABE936A7BBDC4EA33351DB180D1323E149
2. 把下面的ppa源加到/etc/apt/sources.list中deb http://ppa.launchpad.net/jon-oberheide/ppa/ubuntu jaunty main #ThinkFinger
3. 更新一下sudo apt-get update
4. 安装指纹驱动的包sudo apt-get install thinkfinger-tools libpam-thinkfinger
5. 原文没有提到，不过这里最好重启一次，否则下面可能会报错
6. 采集指纹tf-tool &#8211;acquire
7. 验证指纹tf-tool &#8211;verify
8. 配置PAM以使用thinkfingersudo /usr/lib/pam-thinkfinger/pam-thinkfinger-enable
原文最后还有一步需要用tf-tool添加用户，但我这里发现它根本就没有添加用户的选项，无视之～～

       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=108&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>ubuntu 9.04在我的t61上表现完美，启动从开始读盘到登录界面用时15秒左右，除了指纹识别，所有设备都直接可以使用，比windows强太多了。网上介绍启用指纹识别的教程有很多，试了几个都不成，最终还是在强大的ThinkWiki上找到了<a href="http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger#Jaunty" target="_blank">正解</a>。原文涉及多个版本，步骤繁多，这里把我实践成功的ubuntu 9.04下步骤整理如下（根据实际情况略有修改）：</p>
<p>1. 添加key<br /><font color="#ff6600">sudo apt-key adv &#8211;recv-keys &#8211;keyserver keyserver.ubuntu.com F2A12FABE936A7BBDC4EA33351DB180D1323E149</font></p>
<p>2. 把下面的ppa源加到/etc/apt/sources.list中<br /><font color="#ff6600">deb http://ppa.launchpad.net/jon-oberheide/ppa/ubuntu jaunty main #ThinkFinger</font></p>
<p>3. 更新一下<br /><font color="#ff6600">sudo apt-get update</font></p>
<p>4. 安装指纹驱动的包<br /><font color="#ff6600">sudo apt-get install thinkfinger-tools libpam-thinkfinger</font></p>
<p>5. 原文没有提到，不过这里最好重启一次，否则下面可能会报错</p>
<p>6. 采集指纹<br /><font color="#ff6600">tf-tool &#8211;acquire</font></p>
<p>7. 验证指纹<br /><font color="#ff6600">tf-tool &#8211;verify</font></p>
<p>8. 配置PAM以使用thinkfinger<br /><font color="#ff6600">sudo /usr/lib/pam-thinkfinger/pam-thinkfinger-enable</font></p>
<p>原文最后还有一步需要用tf-tool添加用户，但我这里发现它根本就没有添加用户的选项，无视之～～</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=35d7edfd-310a-8c57-9739-03aba2c46771" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=108&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/11/06/ubuntu-9-04%e5%90%af%e7%94%a8thinkpad%e6%8c%87%e7%ba%b9%e8%af%86%e5%88%ab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=35d7edfd-310a-8c57-9739-03aba2c46771" medium="image" />
	</item>
		<item>
		<title>shell中特殊符号</title>
		<link>http://tingan.wordpress.com/2009/11/04/shell%e4%b8%ad%e7%89%b9%e6%ae%8a%e7%ac%a6%e5%8f%b7/</link>
		<comments>http://tingan.wordpress.com/2009/11/04/shell%e4%b8%ad%e7%89%b9%e6%ae%8a%e7%ac%a6%e5%8f%b7/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 20:59:35 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/11/04/shell%e4%b8%ad%e7%89%b9%e6%ae%8a%e7%ac%a6%e5%8f%b7/</guid>
		<description><![CDATA[
在shell中常用的特殊符号罗列如下：#;&#160; &#160; ;;&#160; &#160;&#160; &#160; .&#160; &#160;&#160; &#160; ,&#160; &#160;&#160; &#160;&#160;&#160;/&#160; &#160;&#160; &#160;&#160;&#160;\&#160; &#160;&#160; &#160;&#160;&#160;&#8217;string&#8217;&#124;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;!&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;$&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;${}&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;$?&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;$$&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;$*&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160; &#8220;string&#8221;*&#160; &#160;&#160; &#160;**&#160; &#160; ?&#160; &#160;&#160; &#160; :&#160; &#160;&#160; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=106&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h2></h2>
<div id="postmessage_17528" class="t_msgfont"><font size="2"><font color="#000000"><font color="#016600">在shell中常用的特殊符号罗列如下：</font></font></font><font size="2"><font color="#000000"><font color="#016600">#;&nbsp; &nbsp; ;;&nbsp; &nbsp;&nbsp; &nbsp; .&nbsp; &nbsp;&nbsp; &nbsp; ,&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;/&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;\&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&#8217;string&#8217;</font><br /><font color="#016600">|&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;!&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${}&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$?&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$$&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$*&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &#8220;string&#8221;</font><br /><font color="#016600">*&nbsp; &nbsp;&nbsp; &nbsp;**&nbsp; &nbsp; ?&nbsp; &nbsp;&nbsp; &nbsp; :&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;^&nbsp; &nbsp;&nbsp; &nbsp;$#&nbsp; &nbsp; $@&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;`command`</font><br /><font color="#016600">{}&nbsp; &nbsp;&nbsp;&nbsp;[]&nbsp; &nbsp;&nbsp; &nbsp; [[]]&nbsp; &nbsp;&nbsp; &nbsp;()&nbsp; &nbsp; (())&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;||&nbsp; &nbsp; &amp;&amp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{xx,yy,zz,&#8230;}</font><br /><font color="#016600">~&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;~+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;~-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&amp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;\&lt;&#8230;\&gt;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; -&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;%</font><br /><font color="#9999ff"><font color="#016600">=&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;==&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;!=&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</font>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</font></p>
<p>输出/输入重导向<br /><font color="#016600">&gt;&nbsp; &nbsp;&nbsp; &nbsp; &gt;&gt;&nbsp; &nbsp; &lt;&nbsp; &nbsp;&lt;&lt;&nbsp; &nbsp; : &gt;&nbsp; &nbsp; &amp;&gt;&nbsp; &nbsp; 2&amp;&gt;&nbsp; &nbsp; 2&lt;&gt;</font><br /><font color="#016600">&gt;&amp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&gt;&amp;2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; </font></p>
<p># 井号 (comments)<br />这几乎是个满场都有的符号，除了先前已经提过的&#8221;第一行&#8221;<br /><font color="#016600">#!/bin/bash</font><br />井号也常出现在一行的开头，或者位于完整指令之后，这类情况表示符号后面的是注解文字，不会被执行。<br /><font color="#016600"># This line is comments.</font><br /><font color="#016600">echo &#8220;a = $a&#8221; # a = 0</font><br />由于这个特性，当临时不想执行某行指令时，只需在该行开头加上 # 就行了。这常用在撰写过程中。<br /><font color="#016600">#echo &#8220;a = $a&#8221; # a = 0</font><br />如果被用在指令中，或者引号双引号括住的话，或者在倒斜线的后面，那他就变成一般符号，不具上述的特殊功能。</p>
<p>~ 帐户的 home 目录<br />算是个常见的符号，代表使用者的 home 目录：<font color="#016600">cd ~；</font>也可以直接在符号后加上某帐户的名称：<font color="#016600">cd ~user</font><br />或者当成是路径的一部份：<font color="#016600">~/bin；</font>~+ 当前的工作目录，这个符号代表当前的工作目录，她和内建指令 pwd 的作用是相同的。<br /><font color="#016600"># echo ~+</font><br /><font color="#016600">/var/log</font><br />~- 上次的工作目录，这个符号代表上次的工作目录。<br /><font color="#016600"># echo ~-</font><br /><font color="#016600">/etc/httpd/logs</font></p>
<p>; 分号 (Command separator)<br />在 shell 中，担任&#8221;连续指令&#8221;功能的符号就是&#8221;分号&#8221;。譬如以下的例子：c<font color="#016600">d ~/backup ; mkdir startup ; cp ~/.* startup/.</font></p>
<p>;; 连续分号 (Terminator)<br />专用在 case 的选项，担任 Terminator 的角色。<br /><font color="#016600">case &#8220;$fop&#8221; in</font><br /><font color="#016600">help) echo &#8220;Usage: Command -help -version filename&#8221; ;;</font><br /><font color="#016600">version) echo &#8220;version 0.1&#8243; ;;</font><br /><font color="#016600">esac</font></p>
<p>. 逗号 (dot)<br />在 shell 中，使用者应该都清楚，一个 dot 代表当前目录，两个 dot 代表上层目录。<br /><font color="#016600">CDPATH=.:~:/home:/home/web:/var:/usr/local</font><br />在上行 CDPATH 的设定中，等号后的 dot 代表的就是当前目录的意思。<br />如果档案名称以 dot 开头，该档案就属特殊档案，用 ls 指令必须加上 -a 选项才会显示。除此之外，在 regular expression 中，一个 dot 代表匹配一个字元。</p>
<p>&#8217;string&#8217; 单引号 (single quote)<br />被单引号用括住的内容，将被视为单一字串。在引号内的代表变数的$符号，没有作用，也就是说，他被视为一般符号处理，防止任何变量替换。<br /><font color="#016600">heyyou=home</font><br /><font color="#016600">echo &#8216;$heyyou&#8217; # We get $heyyou</font></p>
<p>&#8220;string&#8221; 双引号 (double quote)<br />被双引号用括住的内容，将被视为单一字串。它防止通配符扩展，但允许变量扩展。这点与单引数的处理方式不同。<br /><font color="#016600">heyyou=home</font><br /><font color="#016600">echo &#8220;$heyyou&#8221; # We get home</font></p>
<p>`command` 倒引号 (backticks)<br />在前面的单双引号，括住的是字串，但如果该字串是一列命令列，会怎样？答案是不会执行。要处理这种情况，我们得用倒单引号来做。<br /><font color="#016600">fdv=`date +%F`</font><br /><font color="#016600">echo &#8220;Today $fdv&#8221;</font><br />在倒引号内的 date +%F 会被视为指令，执行的结果会带入 fdv 变数中。</p>
<p>, 逗点 (comma)<br />这个符号常运用在运算当中当做&#8221;区隔&#8221;用途。如下例<br /><font color="#016600">#!/bin/bash</font><br /><font color="#016600">let &#8220;t1 = ((a = 5 + 3, b = 7 &#8211; 1, c = 15 / 3))&#8221;</font><br /><font color="#016600">echo &#8220;t1 = $t1, a = $a, b = $b&#8221;</font></p>
<p>/ 斜线 (forward slash)<br />在路径表示时，代表目录。<br /><font color="#016600">cd /etc/rc.d</font><br /><font color="#016600">cd ../..</font><br /><font color="#016600">cd /</font><br />通常单一的 / 代表 root 根目录的意思；在四则运算中，代表除法的符号。<br /><font color="#016600">let &#8220;num1 = ((a = 10 / 2, b = 25 / 5))&#8221;</font></p>
<p>\ 倒斜线 (</font></font><font size="2"><font color="#000000">)<br />在交互模式下的escape 字元，有几个作用；放在指令前，有取消 aliases 的作用；放在特殊符号前，则该特殊符号的作用消失；放在指令的最末端，表示指令连接下一行。<br /><font color="#016600"># type rm</font><br /><font color="#016600">rm is aliased to `rm -i&#8217;</font><br /><font color="#016600"># \rm ./*.log</font><br />上例，我在 rm 指令前加上 escape 字元，作用是暂时取消别名的功能，将 rm 指令还原。<br /><font color="#016600"># bkdir=/home</font><br /><font color="#016600"># echo &#8220;Backup dir, \$bkdir = $bkdir&#8221;</font><br /><font color="#016600">Backup dir, $bkdir = /home</font><br />上例 echo 内的 \$bkdir，escape 将 $ 变数的功能取消了，因此，会输出 $bkdir，而第二个 $bkdir 则会输出变数的内容 /home。</p>
<p>| 管道 (pipeline)<br />pipeline 是 UNIX 系统，基础且重要的观念。连结上个指令的标准输出，做为下个指令的标准输入。<br /><font color="#016600">who | wc -l</font><br />善用这个观念，对精简 script 有相当的帮助。</p>
<p>! 惊叹号(negate or reverse)<br />通常它代表反逻辑的作用，譬如条件侦测中，用 != 来代表&#8221;不等于&#8221;<br /><font color="#016600">if [ "$?" != 0 ]</font><br /><font color="#016600">then</font><br /><font color="#016600">echo &#8220;Executes error&#8221;</font><br /><font color="#016600">exit 1</font><br /><font color="#016600">fi</font><br />在规则表达式中她担任 &#8220;反逻辑&#8221; 的角色<br /><font color="#016600">ls a[!0-9]</font><br />上例，代表显示除了a0, a1 &#8230;. a9 这几个文件的其他文件。</p>
<p>: 冒号<br />在 bash 中，这是一个内建指令：&#8221;什么事都不干&#8221;，但返回状态值 0。<br />:<br />echo $? # 回应为 0<br /><font color="#016600">: &gt; f.$$</font><br />上面这一行，相当于 cat /dev/null &gt; f.$$。不仅写法简短了，而且执行效率也好上许多。<br />有时，也会出现以下这类的用法<br /><font color="#016600">: ${HOSTNAME?} ${USER?} ${MAIL?}</font><br />这行的作用是，检查这些环境变数是否已设置，没有设置的将会以标准错误显示错误讯息。像这种检查如果使用类似 test 或 if 这类的做法，基本上也可以处理，但都比不上上例的简洁与效率。<br />除了上述之外，还有一个地方必须使用冒号<br /><font color="#016600">PATH=$PATH<img src="http://www.ubuntuchina.com/images/smilies/default/shy.gif" alt="" border="0" />HOME/fbin<img src="http://www.ubuntuchina.com/images/smilies/default/shy.gif" alt="" border="0" />HOME/fperl:/usr/local/mozilla</font><br />在使用者自己的HOME 目录下的 .bash_profile 或任何功能相似的档案中，设定关于&#8221;路径&#8221;的场合中，我们都使用冒号，来做区隔。<br /></font></font><font size="2"><font color="#000000"><br />? 问号 (wild card)<br />在文件名扩展(Filename expansion)上扮演的角色是匹配一个任意的字元，但不包含 null 字元。<br /><font color="#016600"># ls a?</font><br /><font color="#016600">a1</font><br />善用她的特点，可以做比较精确的档名匹配。</p>
<p>* 星号 (wild card)<br />相当常用的符号。在文件名扩展(Filename expansion)上，她用来代表任何字元，包含 null 字元。<br /><font color="#016600"># ls a*</font><br /><font color="#016600">a a1 access_log</font><br />在运算时，它则代表 &#8220;乘法&#8221;。<br /><font color="#016600">let &#8220;fmult=2*3&#8243;</font><br />除了内建指令 let，还有一个关于运算的指令 expr，星号在这里也担任&#8221;乘法&#8221;的角色。不过在使用上得小心，他的前面必须加上escape 字元。</p>
<p>** 次方运算<br />两个星号在运算时代表 &#8220;次方&#8221; 的意思。<br /><font color="#016600">let &#8220;sus=2**3&#8243;</font><br /><font color="#016600">echo &#8220;sus = $sus&#8221; # sus = 8</font></p>
<p>$ 钱号(dollar sign)<br />变量替换(Variable Substitution)的代表符号。<br /><font color="#016600">vrs=123</font><br /><font color="#016600">echo &#8220;vrs = $vrs&#8221; # vrs = 123</font><br />另外，在 Regular Expressions 里被定义为 &#8220;行&#8221; 的最末端 (end-of-line)。这个常用在 grep、sed、awk 以及 vim(vi) 当中。</p>
<p>${} 变量的正规表达式<br />bash 对 ${} 定义了不少用法。以下是取自线上说明的表列<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<font color="#016600">${parameter:-word}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter:=word}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter:?word}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter:+word}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter<img src="http://www.ubuntuchina.com/images/smilies/default/shocked.gif" alt="" border="0" />ffset}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter<img src="http://www.ubuntuchina.com/images/smilies/default/shocked.gif" alt="" border="0" />ffset:length}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${!prefix*}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${#parameter}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter#word}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter##word}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter%word}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter%%word}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter/pattern/string}</font><br /><font color="#016600">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;${parameter//pattern/string}</font></p>
<p>$*引用script 的执行引用变量，引用参数的算法与一般指令相同，指令本身为0，其后为1，然后依此类推。引用变量的代表方式如下：<br /><font color="#016600">$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11}&#8230;..</font><br />个位数的，可直接使用数字，但两位数以上，则必须使用 {} 符号来括住。<br />$* 则是代表所有引用变量的符号。使用时，得视情况加上双引号。<br /><font color="#016600">echo &#8220;$*&#8221;</font><br />还有一个与 $* 具有相同作用的符号，但效用与处理方式略为不同的符号。</p>
<p><font color="#016600">$@</font><br />$@ 与 $* 具有相同作用的符号，不过她们两者有一个不同点。<br />符号 $* 将所有的引用变量视为一个整体。但符号 $@ 则仍旧保留每个引用变量的区段观念。</font></font><br /><font size="2"><font color="#000000"><font color="#016600">$#</font><br />这也是与引用变量相关的符号，她的作用是告诉你，引用变量的总数量是多少。<br /><font color="#016600">echo &#8220;$#&#8221;</font></p>
<p>$? 状态值 (status variable)<br />一般来说，UNIX(linux) 系统的进程以执行系统调用exit() 来结束的。这个回传值就是status值。回传给父进程，用来检查子进程的执行状态。<br />一般指令程序倘若执行成功，其回传值为 0；失败为 1。<br /><font color="#016600">tar cvfz dfbackup.tar.gz /home/user &gt; /dev/null</font><br /><font color="#016600">echo &#8220;$?&#8221;</font></p>
<p><font color="#016600">$$</font><br />由于进程的ID是唯一的，所以在同一个时间，不可能有重复性的 PID。有时，script会需要产生临时文件，用来存放必要的资料。而此script亦有可能在同一时间被使用者们使用。在这种情况下，固定文件名在写 法上就显的不可靠。唯有产生动态文件名，才能符合需要。符号$$或许可以符合这种需求。它代表当前shell 的 PID。<br /><font color="#016600">echo &#8220;$HOSTNAME, $USER, $MAIL&#8221; &gt; ftmp.$$</font><br />使用它来作为文件名的一部份，可以避免在同一时间，产生相同文件名的覆盖现象。<br />ps: 基本上，系统会回收执行完毕的 PID，然后再次依需要分配使用。所以 script 即使临时文件是使用动态档名的写法，如果 script 执行完毕后仍不加以清除，会产生其他问题。</font></font><br /><font size="2"><font color="#000000">() 指令群组 (command group)<br />用括号将一串连续指令括起来，这种用法对 shell 来说，称为指令群组。如下面的例子：<font color="#016600">(cd ~ ; vcgh=`pwd` ; echo $vcgh)，</font>指令群组有一个特性，shell会以产生 subshell 来执行这组指令。因此，在其中所定义的变数，仅作用于指令群组本身。我们来看个例子<br /><font color="#016600"># cat ftmp-01</font><br /><font color="#016600">#!/bin/bash</font><br /><font color="#016600">a=fsh</font><br /><font color="#016600">(a=incg ; echo -e &#8220;\n $a \n&#8221;)</font><br /><font color="#016600">echo $a</font><br /><font color="#016600"># ./ftmp-01</font><br /><font color="#016600">incg</font><br /><font color="#016600">fsh</font><br />除了上述的指令群组，括号也用在 array 变数的定义上；另外也应用在其他可能需要加上escape 字元才能使用的场合，如运算式。</p>
<p>(())<br />这组符号的作用与 let 指令相似，用在算数运算上，是 bash 的内建功能。所以，在执行效率上会比使用 let 指令要好许多。<br /><font color="#016600">#!/bin/bash</font><br /><font color="#016600">(( a = 10 ))</font><br /><font color="#016600">echo -e &#8220;inital value, a = $a\n&#8221;</font><br /><font color="#016600">(( a++ ))</font><br /><font color="#016600">echo &#8220;after a++, a = $a&#8221;</font></font></font><br /><font size="2"><font color="#000000">{} 大括号 (Block of code)<br />有时候 script 当中会出现，大括号中会夹着一段或几段以&#8221;分号&#8221;做结尾的指令或变数设定。<br /><font color="#016600"># cat ftmp-02</font><br /><font color="#016600">#!/bin/bash</font><br /><font color="#016600">a=fsh</font><br /><font color="#016600">{a=inbc ; echo -e &#8220;\n $a \n&#8221;}</font><br /><font color="#016600">echo $a</font><br /><font color="#016600"># ./ftmp-02</font><br /><font color="#016600">inbc</font><br /><font color="#016600">inbc</font><br />这种用法与上面介绍的指令群组非常相似，但有个不同点，它在当前的 shell 执行，不会产生 subshell。<br />大括号也被运用在 &#8220;函数&#8221; 的功能上。广义地说，单纯只使用大括号时，作用就像是个没有指定名称的函数一般。因此，这样写 script 也是相当好的一件事。尤其对输出输入的重导向上，这个做法可精简 script 的复杂度。<br />此外，大括号还有另一种用法，如下<br /><font color="#016600">{xx,yy,zz,&#8230;}</font><br />这种大括号的组合，常用在字串的组合上，来看个例子<br /><font color="#016600">mkdir {userA,userB,userC}-{home,bin,data}</font><br />我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data, userC-home, userC-bin,userC-data，这几个目录。这组符号在适用性上相当广泛。能加以善用的话，回报是精简与效率。像下面的例子<br /><font color="#016600">chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}</font><br />如果不是因为支援这种用法，我们得写几行重复几次呀！</p>
<p>[] 中括号<br />常出现在流程控制中，扮演括住判断式的作用。</font></font><font size="2"><font color="#000000"><font color="#016600">if [ "$?" != 0 ]</font><br /><font color="#016600">then</font><br /><font color="#016600">echo &#8220;Executes error&#8221;</font><br /><font color="#016600">exit 1</font><br /><font color="#016600">fi</font><br />这个符号在正则表达式中担任类似 &#8220;范围&#8221; 或 &#8220;集合&#8221; 的角色<br /><font color="#016600">rm -r 200[1234]</font><br />上例，代表删除 2001, 2002, 2003, 2004 等目录的意思。</p>
<p><font color="#016600">[[]]</font><br />这组符号与先前的 [] 符号，基本上作用相同，但她允许在其中直接使用 || 与 &amp;&amp; 逻辑等符号。<br /><font color="#016600">#!/bin/bash</font><br /><font color="#016600">read ak</font><br /><font color="#016600">if [[ $ak &gt; 5 || $ak &lt; 9 ]]</font><br /><font color="#016600">then</font><br /><font color="#016600">echo $ak</font><br /><font color="#016600">fi</font></p>
<p>|| 逻辑符号<br />这个会时常看到，代表 or 逻辑的符号。</p>
<p>&amp;&amp; 逻辑符号<br />这个也会常看到，代表 and 逻辑的符号。</p>
<p>&amp; 后台工作<br />单一个&amp; 符号，且放在完整指令列的最后端，即表示将该指令列放入后台中工作。<br /><font color="#016600">tar cvfz data.tar.gz data &gt; /dev/null &amp;</font></p>
<p>\&lt;&#8230;\&gt; 单字边界<br />这组符号在规则表达式中，被定义为&#8221;边界&#8221;的意思。譬如，当我们想找寻 the 这个单字时，如果我们用<br /><font color="#016600">grep the FileA</font><br />你将会发现，像 there 这类的单字，也会被当成是匹配的单字。因为 the 正巧是 there 的一部份。如果我们要必免这种情况，就得加上 &#8220;边界&#8221; 的符号<br /><font color="#016600">grep &#8216;\&#8217; FileA</font></p>
<p>+ 加号 (plus)<br />在运算式中，她用来表示 &#8220;加法&#8221;。<br /><font color="#016600">expr 1 + 2 + 3</font><br />此外在规则表达式中，用来表示&#8221;很多个&#8221;的前面字元的意思。<br /><font color="#016600"># grep &#8216;10\+9&#8242; fileB</font><br /><font color="#016600">109</font><br /><font color="#016600">1009</font><br /><font color="#016600">100009</font><br /><font color="#016600">1000093</font><br /><font color="#016600">1010009</font><br /><font color="#016600">#</font><br />这个符号在使用时，前面必须加上 escape 字元。</p>
<p>- 减号 (dash)<br />在运算式中，她用来表示 &#8220;减法&#8221;。<br /><font color="#016600">expr 10 &#8211; 2</font><br />此外也是系统指令的选项符号。<br /><font color="#016600">ls -expr 10 &#8211; 2</font><br />在 GNU 指令中，如果单独使用 &#8211; 符号，不加任何该加的文件名称时，代表&#8221;标准输入&#8221;的意思。这是 GNU 指令的共通选项。譬如下例<br /><font color="#016600">tar xpvf -</font><br />这里的 &#8211; 符号，既代表从标准输入读取资料。<br />不过，在 cd 指令中则比较特别<br /><font color="#016600">cd -</font><br />这代表变更工作目录到&#8221;上一次&#8221;工作目录。</p>
<p>% 除法 (Modulo)<br />在运算式中，用来表示 &#8220;除法&#8221;。<br /><font color="#016600">expr 10 % 2</font><br />此外，也被运用在关于变量的规则表达式当中的下列<br /><font color="#016600">${parameter%word}</font><br /><font color="#016600">${parameter%%word}</font><br />一个 % 表示最短的 word 匹配，两个表示最长的 word 匹配。 </p>
<p>= 等号 (Equals)<br />常在设定变数时看到的符号。<br /><font color="#016600">vara=123</font><br /><font color="#016600">echo &#8221; vara = $vara&#8221;</font><br />或者像是 PATH 的设定，甚至应用在运算或判断式等此类用途上。</p>
<p>== 等号 (Equals)<br />常在条件判断式中看到，代表 &#8220;等于&#8221; 的意思。<br /><font color="#016600">if [ $vara == $varb ]</font><br />&#8230;下略<br />!= 不等于<br />常在条件判断式中看到，代表 &#8220;不等于&#8221; 的意思。<br /><font color="#016600">if [ $vara != $varb ]</font><br />&#8230;下略</p>
<p>^<br />这个符号在规则表达式中，代表行的 &#8220;开头&#8221; 位置。</font></font></div>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=64587b27-083c-809f-b640-f460f332cc75" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=106&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/11/04/shell%e4%b8%ad%e7%89%b9%e6%ae%8a%e7%ac%a6%e5%8f%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://www.ubuntuchina.com/images/smilies/default/shy.gif" medium="image" />

		<media:content url="http://www.ubuntuchina.com/images/smilies/default/shy.gif" medium="image" />

		<media:content url="http://www.ubuntuchina.com/images/smilies/default/shocked.gif" medium="image" />

		<media:content url="http://www.ubuntuchina.com/images/smilies/default/shocked.gif" medium="image" />

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=64587b27-083c-809f-b640-f460f332cc75" medium="image" />
	</item>
		<item>
		<title>Ubuntu tomcat</title>
		<link>http://tingan.wordpress.com/2009/11/04/ubuntu-tomcat/</link>
		<comments>http://tingan.wordpress.com/2009/11/04/ubuntu-tomcat/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 20:32:30 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/11/04/ubuntu-tomcat/</guid>
		<description><![CDATA[Ubuntu安装并设置tomcat
 		Linux,  Network 04月 28th, 2009

最近在研究JSP，要用tomcat，Ubuntu上安装并设置tomcat的教程网上有很多，多数是搭建服务器用的，而我是要搭建开发环境，于是研究了一下ubuntu的打包tomcat方式。
Windows下安装
非常简单，tomcat就是所谓的绿色软件，事先要装jdk，学过Java都应该会吧

到tomcat的下载网页下载Core这个只有几M的压缩包，解压
建立一个“JAVA_HOME”环境变量，值为jdk的目录
然后启动“bin”目录里的“startup.bat”就行
浏览器访问“http://127.0.0.1:8080/”即可看到管理页面

“RUNNING.txt”里还有详细设置
Ubuntu下安装
大家知道Linux的软件安装方式是把软件文件按类型分开存放的，软件的执行程序放在“/usr”里，配置文件放在“/etc”，经常变动的文件放在“/var”，有时软件安装在那里都不知道，这会让用Windows培养起来的绿色软件偏执狂有点不爽。


方法一

其实tomcat在Linux下也是可以类似上面Windows的方式使用的，在下载Core包后（这个是tar.gz包解压后文件带权限），解压，添加“JAVA_HOME”环境变量，运行“bin”里的“./startup.sh”

方法二

或许某一天我要弄成服务器运行用上面的方法就不那么好了。就要用Linux的打包方式。
在Ubunt运行tomacat只需要“tomcat6“这个包，安装后浏览器访问“http://127.0.0.1:8080/”即可看到 “It works”，那个“webapps”文件是放到“/var/lib/tomcat6/webapps/”里。开始我也不知道“webapps”文件夹被 放到哪里去了，不过我知道“webapps”名称就够了，查了一下dpkg的用法，有个命令可以查找当前安装过的包文件内容
dpkg-query -S webapps
即输出路径带有“webapps”字符串的文件或目录。
ubuntu把tomcat的几个包分细了（据说ubuntu的打包方式就是能分细就分细），有需要再安装这几个包，“tomcat6-admin”是网页界面管理；“tomcat6-docs”是文档，“tomcat6-examples”是例子
这样安装后开机即自动启动，但是我是搭建开发环境，不想开机启动，到“/etc/rc2.d“改一下名称，或者用“bum”和“sysv-rc-conf”来修改。
sudo mv S92tomcat6 K08tomcat6
以后就能通过运行下面命令来管理
sudo /etc/init.d/tomcat6 {start&#124;stop&#124;restart&#124;try-restart&#124;force-reload&#124;status}
但这个方法还是有点不爽，因为需要root权限，现在这个小程序都要root权限也太多余了点吧，我现在更愿意把webapps放到自己的家目录下管理。于是就有方法三

方法三

还注意到带“tomcat6”名称的包还有一个“tomcat6-user”，描述是“Servlet and JSP engine &#8212; tools to create user instances”，看样子是能设定成不用root权限即可运行哦。搜了一下，ubuntu的文档有说明
真是超简单，装好这个包后，运行
tomcat6-instance-create my-instance
即在当前目录下建立一个“my-instance”，里面的目录结构是类似方法一的直接解压后的，只有88K大小，因为所需要的文件都是调用系统里面的，运行
my-instance/bin/startup.sh
即可启动自己的用户tomcat实例（当然默认端口是8080，要么改掉，要么关掉系统服务那个），这样做无需root权限，不和系统的webapps冲突，自己管理，还可以建立多个，适合初期学习开发，噢耶。

Linnx下喜欢把软件的内容分开存自有它的道理，看似很零散其实很精简。


       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=104&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h2><a href="http://muzuiget.blog.ubuntu.org.cn/archives/ubuntu_install_configure_tomcat" rel="bookmark" title="Permanent Link: Ubuntu安装并设置tomcat">Ubuntu安装并设置tomcat</a></h2>
<p> 		<span class="post-cat"><a href="http://muzuiget.blog.ubuntu.org.cn/category/linux" title="显示Linux的所有日志" rel="category tag">Linux</a>,  <a href="http://muzuiget.blog.ubuntu.org.cn/category/network" title="显示Network的所有日志" rel="category tag">Network</a></span> <span class="post-calendar">04月 28th, 2009</span>
<div class="post-content">
<p>最近在研究JSP，要用<a href="http://tomcat.apache.org/">tomcat</a>，Ubuntu上安装并设置tomcat的教程网上有很多，多数是搭建服务器用的，而我是要搭建开发环境，于是研究了一下ubuntu的打包tomcat方式。</p>
<h3>Windows下安装</h3>
<p>非常简单，tomcat就是所谓的绿色软件，事先要装jdk，学过Java都应该会吧</p>
<ol>
<li>到tomcat的下载网页<a href="http://labs.xiaonei.com/apache-mirror/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.zip">下载Core</a>这个只有几M的压缩包，解压</li>
<li>建立一个“JAVA_HOME”环境变量，值为jdk的目录</li>
<li>然后启动“bin”目录里的“startup.bat”就行</li>
<li>浏览器访问“http://127.0.0.1:8080/”即可看到管理页面</li>
</ol>
<p>“RUNNING.txt”里还有详细设置<span id="more-1471"></span></p>
<h3>Ubuntu下安装</h3>
<p>大家知道Linux的软件安装方式是把软件文件按类型分开存放的，软件的执行程序放在“/usr”里，配置文件放在“/etc”，经常变动的文件放在“/var”，有时软件安装在那里都不知道，这会让用Windows培养起来的绿色软件偏执狂有点不爽。</p>
<ul>
<li>
<h4>方法一</h4>
</li>
<p>其实tomcat在Linux下也是可以类似上面Windows的方式使用的，在<a href="http://labs.xiaonei.com/apache-mirror/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz">下载Core包</a>后（这个是tar.gz包解压后文件带权限），解压，添加“JAVA_HOME”环境变量，运行“bin”里的“./startup.sh”</p>
<li>
<h4>方法二</h4>
</li>
<p>或许某一天我要弄成服务器运行用上面的方法就不那么好了。就要用Linux的打包方式。</p>
<p>在Ubunt运行tomacat只需要“tomcat6“这个包，安装后浏览器访问“http://127.0.0.1:8080/”即可看到 “It works”，那个“webapps”文件是放到“/var/lib/tomcat6/webapps/”里。开始我也不知道“webapps”文件夹被 放到哪里去了，不过我知道“webapps”名称就够了，查了一下dpkg的用法，有个命令可以查找当前安装过的包文件内容</p>
<p><code>dpkg-query -S webapps</code></p>
<p>即输出路径带有“webapps”字符串的文件或目录。</p>
<p>ubuntu把tomcat的几个包分细了（据说ubuntu的打包方式就是能分细就分细），有需要再安装这几个包，“tomcat6-admin”是网页界面管理；“tomcat6-docs”是文档，“tomcat6-examples”是例子</p>
<p>这样安装后开机即自动启动，但是我是搭建开发环境，不想开机启动，到“/etc/rc2.d“改一下名称，或者用“bum”和“sysv-rc-conf”来修改。</p>
<p><code>sudo mv S92tomcat6 K08tomcat6</code></p>
<p>以后就能通过运行下面命令来管理</p>
<p><code>sudo /etc/init.d/tomcat6 {start|stop|restart|try-restart|force-reload|status}</code></p>
<p>但这个方法还是有点不爽，因为需要root权限，现在这个小程序都要root权限也太多余了点吧，我现在更愿意把webapps放到自己的家目录下管理。于是就有方法三</p>
<li>
<h4>方法三</h4>
</li>
<p>还注意到带“tomcat6”名称的包还有一个“tomcat6-user”，描述是“Servlet and JSP engine &#8212; tools to create user instances”，看样子是能设定成不用root权限即可运行哦。搜了一下，<a href="https://help.ubuntu.com/9.04/serverguide/C/tomcat.html">ubuntu的文档有说明</a></p>
<p>真是超简单，装好这个包后，运行</p>
<p><code>tomcat6-instance-create my-instance</code></p>
<p>即在当前目录下建立一个“my-instance”，里面的目录结构是类似方法一的直接解压后的，只有88K大小，因为所需要的文件都是调用系统里面的，运行</p>
<p><code>my-instance/bin/startup.sh</code></p>
<p>即可启动自己的用户tomcat实例（当然默认端口是8080，要么改掉，要么关掉系统服务那个），这样做无需root权限，不和系统的webapps冲突，自己管理，还可以建立多个，适合初期学习开发，噢耶。</p>
</ul>
<p>Linnx下喜欢把软件的内容分开存自有它的道理，看似很零散其实很精简。</p>
</p></div>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=dff1cb3b-bf83-871b-87f0-dd14e51bf32d" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=104&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/11/04/ubuntu-tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=dff1cb3b-bf83-871b-87f0-dd14e51bf32d" medium="image" />
	</item>
		<item>
		<title>Ubuntu java 3d installation</title>
		<link>http://tingan.wordpress.com/2009/11/02/ubuntu-java-3d-installation/</link>
		<comments>http://tingan.wordpress.com/2009/11/02/ubuntu-java-3d-installation/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 20:19:59 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/11/02/ubuntu-java-3d-installation/</guid>
		<description><![CDATA[
Java3dUbuntu

   
 





 Style Cleanup Required: This article does not follow the style standards in the Wiki Guide. More info&#8230; 






 
 





 Needs Expansion: This article is incomplete, and needs to be expanded. More info&#8230; 






 
You can use Java3d (1.4.0-beta3 Build 9 tested) with the blackdown j2re1.4 Ubuntu Package 
Just download [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=102&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><ul id="pagelocation">
<li><a class="backlink" href="https://help.ubuntu.com/community/Java3dUbuntu?action=fullsearch&amp;context=180&amp;value=linkto%3A%22Java3dUbuntu%22" rel="nofollow" title="点击对这个标题进行全文检索">Java3dUbuntu</a></li>
</ul>
<p>  <!--3--><span class="anchor" id="top"></span> <span class="anchor" id="line-1"></span>
<div dir="ltr" id="&lt;MoinMoin.request.request_fcgi.Request object at 0x2dad0d0&gt;" lang="en"><span class="anchor" id="top_&lt;MoinMoin.request.request_fcgi.Request object at 0x2dad0d0&gt;"></span> <span class="anchor" id="line-1"></span>
<div>
<table style="border:2px solid black;background:rgb(175,226,160) none repeat scroll 0 0;width:80%;margin-left:10%;margin-right:10%;text-align:center;">
<tbody>
<tr>
<td>
<p class="line862"> <strong>Style Cleanup Required:</strong> This article does not follow the style standards in the Wiki Guide. <a href="https://help.ubuntu.com/community/Tag#StyleCleanup">More info&#8230;</a> </p>
</td>
</tr>
</tbody>
</table>
</div>
<p><span class="anchor" id="line-2"></span><span class="anchor" id="bottom_&lt;MoinMoin.request.request_fcgi.Request object at 0x2dad0d0&gt;"></span></div>
<p> <span class="anchor" id="line-2"></span>
<div dir="ltr" id="&lt;MoinMoin.request.request_fcgi.Request object at 0x2dad0d0&gt;" lang="en"><span class="anchor" id="top_&lt;MoinMoin.request.request_fcgi.Request object at 0x2dad0d0&gt;"></span> <span class="anchor" id="line-1"></span>
<div>
<table style="border:2px solid black;background:rgb(245,230,39) none repeat scroll 0 0;width:80%;margin-left:10%;margin-right:10%;text-align:center;">
<tbody>
<tr>
<td>
<p class="line862"> <strong>Needs Expansion:</strong> This article is incomplete, and needs to be expanded. <a href="https://help.ubuntu.com/community/Tag#NeedsExpansion">More info&#8230;</a> </p>
</td>
</tr>
</tbody>
</table>
</div>
<p><span class="anchor" id="line-2"></span><span class="anchor" id="bottom_&lt;MoinMoin.request.request_fcgi.Request object at 0x2dad0d0&gt;"></span></div>
<p> <span class="anchor" id="line-3"></span><span class="anchor" id="line-4"></span>
<p class="line874">You can use Java3d (1.4.0-beta3 Build 9 tested) with the blackdown j2re1.4 Ubuntu Package <span class="anchor" id="line-5"></span><span class="anchor" id="line-6"></span></p>
<p class="line874">Just download Java3d and install it into /usr/lib/j2se/1.4/jre (more detail above) <span class="anchor" id="line-7"></span><span class="anchor" id="line-8"></span></p>
<p class="line874">If you want to use Java3d within Eclipse (Ubuntu Package available), just make sure that the blackdown jre is selected in the eclipse menu &#8220;Window/Preferences/Java/Installed JREs&#8221; <span class="anchor" id="line-9"></span><span class="anchor" id="line-10"></span></p>
<p class="line867">
<h2 id="Get the Java3d source">Get the Java3d source</h2>
<p> <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span>
<p class="line867"><a class="https" href="https://java3d.dev.java.net/">https://java3d.dev.java.net/</a> <span class="anchor" id="line-13"></span><span class="anchor" id="line-14"></span></p>
<p class="line874">Download java3d-1_4_0_01-linux-i586.zip to a temporary directory, for example, &#8220;/tmp&#8221; <span class="anchor" id="line-15"></span><span class="anchor" id="line-16"></span></p>
<p class="line867">
<h2 id="Unzip downloaded file">Unzip downloaded file</h2>
<p> <span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span>
<p class="line874">Unzip java3d-1_4_0_01-linux-i586.zip into &#8220;/tmp&#8221; as follows: <span class="anchor" id="line-19"></span><span class="anchor" id="line-20"></span></p>
<p class="line867"><span class="anchor" id="line-21"></span><span class="anchor" id="line-22"></span></p>
<pre>cd /tmp
unzip java3d-1_4_0_01-linux-i586.zip</pre>
<p><span class="anchor" id="line-23"></span><span class="anchor" id="line-24"></span>
<p class="line874">This will create a &#8220;java3d-1_4_0_01-linux-i586&#8243; subdirectory in /tmp where the downloaded files can be found.  <span class="anchor" id="line-25"></span>The file you need for manual installation is &#8220;j3d-140-linux-x86.zip&#8221;. <span class="anchor" id="line-26"></span><span class="anchor" id="line-27"></span></p>
<p class="line867">
<h2 id="Install Java 3D">Install Java 3D</h2>
<p> <span class="anchor" id="line-28"></span><span class="anchor" id="line-29"></span>
<p class="line874">Unzip Java 3D 1.4.0_01 into the &#8220;jre&#8221; directory of your JDK.  <span class="anchor" id="line-30"></span>For example, if your JDK is in &#8220;/usr/lib/j2se/1.4/jre&#8221;, you would do the following: <span class="anchor" id="line-31"></span><span class="anchor" id="line-32"></span></p>
<p class="line867"><span class="anchor" id="line-33"></span><span class="anchor" id="line-34"></span></p>
<pre>cd /usr/lib/j2se/1.4/jre&lt;br /&gt;sudo unzip /tmp/java3d-1_4_0_01-linux-i586/j3d-140-linux-x86.zip</pre>
<p><span class="anchor" id="line-35"></span><span class="anchor" id="line-36"></span>
<p class="line874">Verify that the j3d*.jar and vecmath.jar files end up in &#8220;/usr/lib/j2se/1.4/jre/lib/ext&#8221; <span class="anchor" id="line-37"></span><span class="anchor" id="line-38"></span></p>
<p>Have fun! </p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=264d759f-400d-8d21-9386-1ec1a0a395a1" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=102&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/11/02/ubuntu-java-3d-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=264d759f-400d-8d21-9386-1ec1a0a395a1" medium="image" />
	</item>
		<item>
		<title>Add a Icon before Drupal Menu</title>
		<link>http://tingan.wordpress.com/2009/10/17/add-a-icon-before-drupal-menu/</link>
		<comments>http://tingan.wordpress.com/2009/10/17/add-a-icon-before-drupal-menu/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 06:51:48 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/10/17/add-a-icon-before-drupal-menu/</guid>
		<description><![CDATA[Iconize Drupal


silviogutierrez
12/14/2007
3565 comments



Drupal
Icons
Tutorials


 I&#8217;ve gotten a lot of feedback on this site&#8217;s design, and probably the most frequent compliment I get regards the icons on this site. I added them because it&#8217;s a very small addition that makes a site a lot more exciting. As much as I love Drupal, I was surprised when I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=100&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h2 class="post">Iconize Drupal</h2>
<div class="meta">
<div class="submitted">
<div class="authorship_name">silviogutierrez</div>
<div class="authorship_date">12/14/2007</div>
<div class="authorship_comments"><a href="http://the.failbo.at/node/38#comments">3565 comments</a></div>
</div>
<div class="terms">
<ul class="links inline">
<li class="taxonomy_term_5 first"><a href="http://the.failbo.at/taxonomy/term/5" rel="tag" title="">Drupal</a></li>
<li class="taxonomy_term_18"><a href="http://the.failbo.at/taxonomy/term/18" rel="tag" title="">Icons</a></li>
<li class="taxonomy_term_27 last"><a href="http://the.failbo.at/taxonomy/term/27" rel="tag" title="A post of any length teaching users how to do something.">Tutorials</a></li>
</ul>
</div></div>
<div class="content"> I&#8217;ve gotten a lot of feedback on this site&#8217;s design, and probably the most frequent compliment I get regards the icons on this site. I added them because it&#8217;s a very small addition that makes a site a lot more exciting. As much as I love Drupal, I was surprised when I learned that there&#8217;s no unique CSS ID for most menu items in the Drupal core. This tutorial will show you how to add these handlers to make adding icons trivial. Throughout this short tutorial I&#8217;ll assume you have some knowledge of Drupal&#8217;s theme system, but if you don&#8217;t, head over to the <a href="http://drupal.org/theme-guide">handbook</a> to learn more. Head over to your theme folder and open template.php, or create it if it doesn&#8217;t exist. Make sure the file has the opening php tag, but not a closing one. Once the file is ready, add the following code:
<div class="codeblock"><code><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);">&lt;?php<br /></span><span style="color:rgb(255,128,0);">/**<br /> * Add an ID to each item to place icons.<br /> *<br /> */<br /></span><span style="color:rgb(0,119,0);">function </span><span style="color:rgb(0,0,187);">phptemplate_menu_item</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">$mid</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(0,0,187);">$children </span><span style="color:rgb(0,119,0);">= </span><span style="color:rgb(221,0,0);">''</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(0,0,187);">$leaf </span><span style="color:rgb(0,119,0);">= </span><span style="color:rgb(0,0,187);">TRUE</span><span style="color:rgb(0,119,0);">) {<br />&nbsp; </span><span style="color:rgb(0,0,187);">$link </span><span style="color:rgb(0,119,0);">= </span><span style="color:rgb(0,0,187);">menu_item_link</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">$mid</span><span style="color:rgb(0,119,0);">);<br />&nbsp; </span><span style="color:rgb(0,0,187);">$css_id </span><span style="color:rgb(0,119,0);">= </span><span style="color:rgb(0,0,187);">strtolower</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">str_replace</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(221,0,0);">' '</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(221,0,0);">'_'</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(0,0,187);">strip_tags</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">$link</span><span style="color:rgb(0,119,0);">))) . </span><span style="color:rgb(221,0,0);">'-item'</span><span style="color:rgb(0,119,0);">;<br />&nbsp; return </span><span style="color:rgb(221,0,0);">'&lt;li id="' </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$css_id </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(221,0,0);">'" class="' </span><span style="color:rgb(0,119,0);">. (</span><span style="color:rgb(0,0,187);">$leaf </span><span style="color:rgb(0,119,0);">? </span><span style="color:rgb(221,0,0);">'leaf' </span><span style="color:rgb(0,119,0);">: (</span><span style="color:rgb(0,0,187);">$children </span><span style="color:rgb(0,119,0);">? </span><span style="color:rgb(221,0,0);">'expanded' </span><span style="color:rgb(0,119,0);">: </span><span style="color:rgb(221,0,0);">'collapsed'</span><span style="color:rgb(0,119,0);">)) .</span><span style="color:rgb(221,0,0);">'"&gt;'</span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$link </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$children </span><span style="color:rgb(0,119,0);">.</span><span style="color:rgb(221,0,0);">"&lt;/li&gt;\n"</span><span style="color:rgb(0,119,0);">;<br />}<br /></span><span style="color:rgb(0,0,187);">?&gt;</span></span></code></div>
<p>This function will override the default theme_menu_item() function and turn it into the iconizing function that we want. To generate the ID it&#8217;ll get the menu name, strip spaces, and put underscores instead. Finally, it&#8217;ll make everything lowercase so it can validate. Although this system will work most of the time, if you have two menu items or more with the same name, and you want different icons for each, there will be a duplicate ID confict. If this is the case, use the following code instead:
<div class="codeblock"><code><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);">&lt;?php<br /></span><span style="color:rgb(255,128,0);">/**<br /> * Add an ID to each item to place icons.<br /> *<br /> */<br /></span><span style="color:rgb(0,119,0);">function </span><span style="color:rgb(0,0,187);">phptemplate_menu_item</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">$mid</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(0,0,187);">$children </span><span style="color:rgb(0,119,0);">= </span><span style="color:rgb(221,0,0);">''</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(0,0,187);">$leaf </span><span style="color:rgb(0,119,0);">= </span><span style="color:rgb(0,0,187);">TRUE</span><span style="color:rgb(0,119,0);">) {<br />&nbsp; </span><span style="color:rgb(0,0,187);">$link </span><span style="color:rgb(0,119,0);">= </span><span style="color:rgb(0,0,187);">menu_item_link</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">$mid</span><span style="color:rgb(0,119,0);">);<br />&nbsp; </span><span style="color:rgb(0,0,187);">$css_id </span><span style="color:rgb(0,119,0);">= </span><span style="color:rgb(0,0,187);">strtolower</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">str_replace</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(221,0,0);">' '</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(221,0,0);">'_'</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(0,0,187);">strip_tags</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">$link</span><span style="color:rgb(0,119,0);">))) . </span><span style="color:rgb(221,0,0);">'-item-' </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$mid</span><span style="color:rgb(0,119,0);">;<br />&nbsp; return </span><span style="color:rgb(221,0,0);">'&lt;li id="' </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$css_id </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(221,0,0);">'" class="' </span><span style="color:rgb(0,119,0);">. (</span><span style="color:rgb(0,0,187);">$leaf </span><span style="color:rgb(0,119,0);">? </span><span style="color:rgb(221,0,0);">'leaf' </span><span style="color:rgb(0,119,0);">: (</span><span style="color:rgb(0,0,187);">$children </span><span style="color:rgb(0,119,0);">? </span><span style="color:rgb(221,0,0);">'expanded' </span><span style="color:rgb(0,119,0);">: </span><span style="color:rgb(221,0,0);">'collapsed'</span><span style="color:rgb(0,119,0);">)) .</span><span style="color:rgb(221,0,0);">'"&gt;'</span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$link </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$children </span><span style="color:rgb(0,119,0);">.</span><span style="color:rgb(221,0,0);">"&lt;/li&gt;\n"</span><span style="color:rgb(0,119,0);">;<br />}<br /></span><span style="color:rgb(0,0,187);">?&gt;</span></span></code></div>
<p>This will add the menu ID number to the CSS selector as well. The disadvantage of this is that the icons will be name AND order dependent, so if you delete an item, and later add it again, you will have to modify your stylesheet. This will take care of all menu items you add manually. Now on to adding icons page titles. If you haven&#8217;t already overriden phptemplate_page() in your template.php file, go ahead and copy the function function and rename it to fit your theme. Look for the long, broken up variables array, and add the following snippet right under it:
<div class="codeblock"><code><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);">&lt;?php<br />&nbsp; </span><span style="color:rgb(255,128,0);">//LONG VARIABLE ARRAY HERE<br />&nbsp; </span><span style="color:rgb(0,119,0);">if ((</span><span style="color:rgb(0,0,187);">arg</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">0</span><span style="color:rgb(0,119,0);">) == </span><span style="color:rgb(221,0,0);">'node'</span><span style="color:rgb(0,119,0);">) &amp;&amp; </span><span style="color:rgb(0,0,187);">is_numeric</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">arg</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">1</span><span style="color:rgb(0,119,0);">))) {<br />&nbsp;&nbsp;&nbsp; </span><span style="color:rgb(0,0,187);">$variables</span><span style="color:rgb(0,119,0);">[</span><span style="color:rgb(221,0,0);">'node'</span><span style="color:rgb(0,119,0);">] = </span><span style="color:rgb(0,0,187);">node_load</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">arg</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">1</span><span style="color:rgb(0,119,0);">));<br />&nbsp;&nbsp;&nbsp; </span><span style="color:rgb(0,0,187);">$variables</span><span style="color:rgb(0,119,0);">[</span><span style="color:rgb(221,0,0);">'type'</span><span style="color:rgb(0,119,0);">] = </span><span style="color:rgb(0,0,187);">$variables</span><span style="color:rgb(0,119,0);">[</span><span style="color:rgb(221,0,0);">'node'</span><span style="color:rgb(0,119,0);">]-&gt;</span><span style="color:rgb(0,0,187);">type</span><span style="color:rgb(0,119,0);">;<br />&nbsp; }<br />&nbsp; elseif (</span><span style="color:rgb(0,0,187);">arg</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">0</span><span style="color:rgb(0,119,0);">) == </span><span style="color:rgb(221,0,0);">'taxonomy'</span><span style="color:rgb(0,119,0);">) {<br />&nbsp;&nbsp;&nbsp; </span><span style="color:rgb(0,0,187);">$variables</span><span style="color:rgb(0,119,0);">[</span><span style="color:rgb(221,0,0);">'type'</span><span style="color:rgb(0,119,0);">] = </span><span style="color:rgb(221,0,0);">'taxonomy term-' </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">arg</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">2</span><span style="color:rgb(0,119,0);">);<br />&nbsp; }<br />&nbsp; else {<br />&nbsp;&nbsp;&nbsp; </span><span style="color:rgb(0,0,187);">$variables</span><span style="color:rgb(0,119,0);">[</span><span style="color:rgb(221,0,0);">'type'</span><span style="color:rgb(0,119,0);">] = </span><span style="color:rgb(221,0,0);">'h2-' </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">str_replace</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(221,0,0);">" "</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(221,0,0);">"-"</span><span style="color:rgb(0,119,0);">, </span><span style="color:rgb(0,0,187);">strtolower</span><span style="color:rgb(0,119,0);">(</span><span style="color:rgb(0,0,187);">drupal_get_title</span><span style="color:rgb(0,119,0);">()));<br />&nbsp; }<br /></span><span style="color:rgb(0,0,187);">?&gt;</span></span></code></div>
<p>This will add a new variable called &#8220;type&#8221; to your long list of variables. The final step to add icons to any page on your site is to head over to your page.tpl file, and replace the title page with a new line. Remember, before replacing it, comment out the old line, in case there&#8217;s a problem. Use the following line:
<div class="codeblock"><code><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);">&lt;?php<br /></span><span style="color:rgb(0,119,0);">if (</span><span style="color:rgb(0,0,187);">$title</span><span style="color:rgb(0,119,0);">): print </span><span style="color:rgb(221,0,0);">'&lt;h2 class="' </span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$type&nbsp; </span><span style="color:rgb(0,119,0);">. (</span><span style="color:rgb(0,0,187);">$tabs </span><span style="color:rgb(0,119,0);">? </span><span style="color:rgb(221,0,0);">' with-tabs' </span><span style="color:rgb(0,119,0);">: </span><span style="color:rgb(221,0,0);">''</span><span style="color:rgb(0,119,0);">) .</span><span style="color:rgb(221,0,0);">'"&gt;'</span><span style="color:rgb(0,119,0);">. </span><span style="color:rgb(0,0,187);">$title </span><span style="color:rgb(0,119,0);">.</span><span style="color:rgb(221,0,0);">'&lt;/h2&gt;'</span><span style="color:rgb(0,119,0);">; endif; <br /></span><span style="color:rgb(0,0,187);">?&gt;</span></span></code></div>
<p>This short line will add a special class to all titles so you can add icons to specific pages. In fact, if you&#8217;re viewing a node, it&#8217;ll let you add a differnt icon per node type. You&#8217;ll notice that the attribute is a class and not an ID. This is to prevent issues when viewing multiple nodes, such as a view page, of the same time. All the programming aspects are now complete, all you need now is to open your style.css fie and begin adding icons. For menu items and links, use the following:
<div class="codeblock"><code>li#menu_name a {<br />&nbsp; padding: 0 0 0 18px;<br />&nbsp; background: url(icons/some_icon.png) left no-repeat;			<br />}</code></div>
<p>  For page titles, you need to use a class selector, like so:
<div class="codeblock"><code>h2.book {<br />&nbsp; background: url(icons/bookBig.png) left no-repeat;<br />&nbsp; padding: 0px 0pt 3px 35px;<br />}</code></div>
<p>Finally, you may have noticed that taxonomy listings now have their own class selectors as well. Though tedious, you can now theme specific taxonomy terms if you use them very often (such as the Drupal term on this site.) Here&#8217;s an example of how I themed the Drupal theme:
<div class="codeblock"><code>h2.term-5 {<br />&nbsp; padding: 0px 0pt 3px 35px;<br />&nbsp; background: url(taxonomy/drupalBig.png) left no-repeat;	<br />}</code></div>
<p>This concludes this rather long tutorial, but if you follow every step, and you take the time to add the CSS selectors, you&#8217;ll spruce up your site with very little work! Unfortunately, the icons used on this site were purchased, and they&#8217;re not open source. However, I suggest you take a look at the <a href="http://tango.freedesktop.org/Tango_Icon_Library">tango library</a> for some free, great looking icons.  </div>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=a968baf9-d018-86bc-988c-ffd947bb3d46" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=100&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/10/17/add-a-icon-before-drupal-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=a968baf9-d018-86bc-988c-ffd947bb3d46" medium="image" />
	</item>
		<item>
		<title>Ubuntu8.10 无线上网 Firefox网页重置问题</title>
		<link>http://tingan.wordpress.com/2009/08/30/ubuntu8-10-%e6%97%a0%e7%ba%bf%e4%b8%8a%e7%bd%91-firefox%e7%bd%91%e9%a1%b5%e9%87%8d%e7%bd%ae%e9%97%ae%e9%a2%98/</link>
		<comments>http://tingan.wordpress.com/2009/08/30/ubuntu8-10-%e6%97%a0%e7%ba%bf%e4%b8%8a%e7%bd%91-firefox%e7%bd%91%e9%a1%b5%e9%87%8d%e7%bd%ae%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 10:18:23 +0000</pubDate>
		<dc:creator>tingan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tingan.wordpress.com/2009/08/30/ubuntu8-10-%e6%97%a0%e7%ba%bf%e4%b8%8a%e7%bd%91-firefox%e7%bd%91%e9%a1%b5%e9%87%8d%e7%bd%ae%e9%97%ae%e9%a2%98/</guid>
		<description><![CDATA[http://ttphc.blog.163.com/blog/static/31597082008111301651740/上周就到手了ubuntu 8.10的cd，但是一直没用起来。这周在windows下把她装上了遇到了不少问题，中文输入问题，字符问题，解决时间最长的就是这个网页重置问题了。刚 刚开始的时候，发现网页被重置，还以为是自己的网络有问题，怎么老是不稳定，有些网页能开，有些就被重置了。用了一个下午，发现不对劲了。上 google，看到很多的blog和ubuntu中文坛子里面都是说mtu值的问题，需要将无限网络的mtu值从自动调整到1500，或者说自己调整该数 字。于是乎，开始测试 使用搜的方法是 ping -f -l 192.168.1.1(gateway ip address) 1500可是我的去无法使用该命令，结果如下@ubuntu:~$ ping -f -l 192.168.1.1 1500ping: cannot set preload to value &#62; 3并不如他人所说的。而且再次google in english 也没有发现其他人有如此问题的，也就没有解决方法了。无奈，再次回到ubuntu中文论坛，继续看下面的回复。看到某老兄说的跟网卡的MAC地址有关。不过他说的比较复杂，这里就不说了。我再次到无限网络－》编辑连接－》看到无限这一项，发现我的MAC地址居然是空的。开始尝试一下方法：开终端，ifconfig，将无线网卡的MAC地址拷贝出来，然后粘贴到无限MAC里面，下面的MTU值设置成1500。设置完成后，开始测试网页，测试时间10分钟，发现没有问题。看了问题基本解决了。我的本子硬件：&#160; T61 AM8889 无线网卡 Intel Corporation PRO/Wireless 4965 AG or AGN

       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=97&subd=tingan&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>http://ttphc.blog.163.com/blog/static/31597082008111301651740/<br />上周就到手了ubuntu 8.10的cd，但是一直没用起来。<br />这周在windows下把她装上了<br />遇到了不少问题，中文输入问题，字符问题，解决时间最长的就是这个网页重置问题了。<br />刚 刚开始的时候，发现网页被重置，还以为是自己的网络有问题，怎么老是不稳定，有些网页能开，有些就被重置了。用了一个下午，发现不对劲了。上 google，看到很多的blog和ubuntu中文坛子里面都是说mtu值的问题，需要将无限网络的mtu值从自动调整到1500，或者说自己调整该数 字。<br />于是乎，开始测试 使用搜的方法是 ping -f -l 192.168.1.1(gateway ip address) 1500<br />可是我的去无法使用该命令，结果如下<br />@ubuntu:~$ ping -f -l 192.168.1.1 1500<br />ping: cannot set preload to value &gt; 3<br />并不如他人所说的。而且再次google in english 也没有发现其他人有如此问题的，也就没有解决方法了。<br />无奈，再次回到ubuntu中文论坛，继续看下面的回复。看到某老兄说的跟网卡的MAC地址有关。不过他说的比较复杂，这里就不说了。我再次到无限网络－》编辑连接－》看到无限这一项，发现我的MAC地址居然是空的。<br />开始尝试一下方法：<br />开终端，ifconfig，将无线网卡的MAC地址拷贝出来，然后粘贴到无限MAC里面，下面的MTU值设置成1500。<br />设置完成后，开始测试网页，测试时间10分钟，发现没有问题。看了问题基本解决了。<br />我的本子硬件：&nbsp; T61 AM8889 <br />无线网卡 Intel Corporation PRO/Wireless 4965 AG or AGN</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=b1004cee-4bf4-8871-a526-2ad4c27fe916" /></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tingan.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tingan.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tingan.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tingan.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tingan.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tingan.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tingan.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tingan.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tingan.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tingan.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tingan.wordpress.com&blog=5187226&post=97&subd=tingan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tingan.wordpress.com/2009/08/30/ubuntu8-10-%e6%97%a0%e7%ba%bf%e4%b8%8a%e7%bd%91-firefox%e7%bd%91%e9%a1%b5%e9%87%8d%e7%bd%ae%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7107faebd8ff58088d1b34577ab2a153?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tingan</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=b1004cee-4bf4-8871-a526-2ad4c27fe916" medium="image" />
	</item>
	</channel>
</rss>