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

<channel>
	<title>Geek is a Lift-Style. &#187; Headline</title>
	<atom:link href="http://www.taiwangeek.com/category/headline/feed" rel="self" type="application/rss+xml" />
	<link>http://www.taiwangeek.com</link>
	<description>Time has a wonderful way of showing us what really matters.</description>
	<lastBuildDate>Mon, 23 May 2011 07:18:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.2</generator>
		<item>
		<title>9 Useful PHP Functions and Features You Need to Know</title>
		<link>http://www.taiwangeek.com/2010-08/9-useful-php-functions-and-features-you-need-to-know.html</link>
		<comments>http://www.taiwangeek.com/2010-08/9-useful-php-functions-and-features-you-need-to-know.html#comments</comments>
		<pubDate>Wed, 18 Aug 2010 03:03:34 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Google Reader]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[arguments]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[generated]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[pre-name]]></category>
		<category><![CDATA[system-time]]></category>
		<category><![CDATA[unique]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/2010-08/9-useful-php-functions-and-features-you-need-to-know.html</guid>
		<description><![CDATA[ Shared by &#23567;&#33891; 的確很優~ 1. Functions with Arbitrary Number of Arguments You may already know that PHP allows you to define functions with optional arguments]]></description>
			<content:encoded><![CDATA[<blockquote><p>Read more here:<br />
<a  title="9 Useful PHP Functions and Features You Need to Know" href="http://net.tutsplus.com/tutorials/php/9-useful-php-functions-and-features-you-need-to-know/" target="_blank">9 Useful PHP Functions and Features You Need to Know</a></p></blockquote>
<p><!--/content--></p>
<blockquote><p>Shared by  小董</p>
<p>的確很優~</p></blockquote>
<h2><span>1. </span>Functions with Arbitrary Number of Arguments</h2>
<p>You may already know that PHP allows you to define functions with optional arguments. But there is also a method for allowing completely arbitrary number of function arguments.</p>
<p>First, here is an example with just optional arguments:</p>
<pre class="brush:php" >// function with 2 optional arguments
function foo($arg1 = '', $arg2 = '') 

	echo "arg1: $arg1n";
	echo "arg2: $arg2n";

foo('hello','world');
/* prints:
arg1: hello
arg2: world
*/

foo();
/* prints:
arg1:
arg2:
*/
</pre>
<p>Now, let’s see how we can build a function that accepts any number of arguments. This time we are going to utilize <a  href="http://us2.php.net/manual/en/function.func-get-args.php">func_get_args()</a>:</p>
<pre class="brush:php" >// yes, the argument list can be empty
function foo() 

	// returns an array of all passed arguments
	$args = func_get_args();

	foreach ($args as $k =&gt; $v)
		echo "arg".($k+1).": $vn";

}

foo();
/* prints nothing */

foo('hello');
/* prints
arg1: hello
*/

foo('hello', 'world', 'again');
/* prints
arg1: hello
arg2: world
arg3: again
*/
</pre>
<hr />
<h2><span>2. </span>Using Glob() to Find Files</h2>
<p>Many PHP functions have long and descriptive names. However it may be hard to tell what a function named <a  href="http://us.php.net/manual/en/function.glob.php">glob()</a> does unless you are already familiar with that term from elsewhere.</p>
<p>Think of it like a more capable version of the <a  href="http://php.net/manual/en/function.scandir.php">scandir()</a> function. It can let you search for files by using patterns.</p>
<pre class="brush:php" >// get all php files
$files = glob('*.php');

print_r($files);
/* output looks like:
Array
(
    0 =&gt; phptest.php
    1 =&gt; pi.php
    2 =&gt; post_output.php
    3 =&gt; test.php
)
*/
</pre>
<p>You can fetch multiple file types like this:</p>
<pre class="brush:php" >// get all php files AND txt files
$files = glob('*.php,txt', GLOB_BRACE);

print_r($files);
/* output looks like:
Array
(
    0 =&gt; phptest.php
    1 =&gt; pi.php
    2 =&gt; post_output.php
    3 =&gt; test.php
    4 =&gt; log.txt
    5 =&gt; test.txt
)
*/
</pre>
<p>Note that the files can actually be returned with a path, depending on your query:</p>
<pre class="brush:php" >$files = glob('../images/a*.jpg');

print_r($files);
/* output looks like:
Array
(
    0 =&gt; ../images/apple.jpg
    1 =&gt; ../images/art.jpg
)
*/
</pre>
<p>If you want to get the full path to each file, you can just call the <a  href="http://php.net/manual/en/function.realpath.php">realpath()</a> function on the returned values:</p>
<pre class="brush:php" >$files = glob('../images/a*.jpg');

// applies the function to each array element
$files = array_map('realpath',$files);

print_r($files);
/* output looks like:
Array
(
    0 =&gt; C:wampwwwimagesapple.jpg
    1 =&gt; C:wampwwwimagesart.jpg
)
*/
</pre>
<hr />
<h2><span>3. </span>Memory Usage Information</h2>
<p>By observing the memory usage of your scripts, you may be able optimize your code better.</p>
<p>PHP has a garbage collector and a pretty complex memory manager. The amount of memory being used by your script. can go up and down during the execution of a script. To get the current memory usage, we can use the <a  href="http://us2.php.net/manual/en/function.memory-get-usage.php">memory_get_usage()</a> function, and to get the highest amount of memory used at any point, we can use the <a  href="http://us2.php.net/manual/en/function.memory-get-peak-usage.php">memory_get_peak_usage()</a> function.</p>
<pre class="brush:php" >echo "Initial: ".memory_get_usage()." bytes n";
/* prints
Initial: 361400 bytes
*/

// let's use up some memory
for ($i = 0; $i &lt; 100000; $i++)
	$array []= md5($i);

// let's remove half of the array
for ($i = 0; $i &lt; 100000; $i++)
	unset($array$i);

echo "Final: ".memory_get_usage()." bytes n";
/* prints
Final: 885912 bytes
*/

echo "Peak: ".memory_get_peak_usage()." bytes n";
/* prints
Peak: 13687072 bytes
*/
</pre>
<hr />
<h2><span>4. </span>CPU Usage Information</h2>
<p>For this, we are going to utilize the <a  href="http://us2.php.net/manual/en/function.getrusage.php">getrusage()</a> function. Keep in mind that this is not available on Windows platforms.</p>
<pre class="brush:php" >print_r(getrusage());
/* prints
Array
(
    ru_oublock =&gt; 0
    ru_inblock =&gt; 0
    ru_msgsnd =&gt; 2
    ru_msgrcv =&gt; 3
    ru_maxrss =&gt; 12692
    ru_ixrss =&gt; 764
    ru_idrss =&gt; 3864
    ru_minflt =&gt; 94
    ru_majflt =&gt; 0
    ru_nsignals =&gt; 1
    ru_nvcsw =&gt; 67
    ru_nivcsw =&gt; 4
    ru_nswap =&gt; 0
    ru_utime.tv_usec =&gt; 0
    ru_utime.tv_sec =&gt; 0
    ru_stime.tv_usec =&gt; 6269
    ru_stime.tv_sec =&gt; 0
)

*/
</pre>
<p>That may look a bit cryptic unless you already have a system administration background. Here is the explanation of each value (you don&#8217;t need to memorize these):</p>
<ul>
<li>ru_oublock: block output operations</li>
<li>ru_inblock: block input operations</li>
<li>ru_msgsnd: messages sent</li>
<li>ru_msgrcv: messages received</li>
<li>ru_maxrss: maximum resident set size</li>
<li>ru_ixrss: integral shared memory size</li>
<li>ru_idrss: integral unshared data size</li>
<li>ru_minflt: page reclaims</li>
<li>ru_majflt: page faults</li>
<li>ru_nsignals: signals received</li>
<li>ru_nvcsw: voluntary context switches</li>
<li>ru_nivcsw: involuntary context switches</li>
<li>ru_nswap: swaps</li>
<li>ru_utime.tv_usec: user time used (microseconds)</li>
<li>ru_utime.tv_sec: user time used (seconds)</li>
<li>ru_stime.tv_usec: system time used (microseconds)</li>
<li>ru_stime.tv_sec: system time used (seconds)</li>
</ul>
<p>To see how much CPU power the script has consumed, we need to look at the &#8216;user time&#8217; and &#8216;system time&#8217; values. The seconds and microseconds portions are provided separately by default. You can divide the microseconds value by 1 million, and add it to the seconds value, to get the total seconds as a decimal number.</p>
<p>Let&#8217;s see an example:</p>
<pre class="brush:php" >// sleep for 3 seconds (non-busy)
sleep(3);

$data = getrusage();
echo "User time: ".
	($data'ru_utime.tv_sec' +
	$data'ru_utime.tv_usec' / 1000000);
echo "System time: ".
	($data'ru_stime.tv_sec' +
	$data'ru_stime.tv_usec' / 1000000);

/* prints
User time: 0.011552
System time: 0
*/
</pre>
<p>Even though the script took about 3 seconds to run, the CPU usage was very very low. Because during the sleep operation, the script actually does not consume CPU resources. There are many other tasks that may take real time, but may not use CPU time, like waiting for disk operations. So as you see, the CPU usage and the actual length of the runtime are not always the same.</p>
<p>Here is another example:</p>
<pre class="brush:php" >// loop 10 million times (busy)
for($i=0;$i&lt;10000000;$i++) 

$data = getrusage();
echo "User time: ".
	($data'ru_utime.tv_sec' +
	$data'ru_utime.tv_usec' / 1000000);
echo "System time: ".
	($data'ru_stime.tv_sec' +
	$data'ru_stime.tv_usec' / 1000000);

/* prints
User time: 1.424592
System time: 0.004204
*/
</pre>
<p>That took about 1.4 seconds of CPU time, almost all of which was user time, since there were no system calls.</p>
<p>System Time is the amount of time the CPU spends performing system calls for the kernel on the program&#8217;s behalf. Here is an example of that:</p>
<pre class="brush:php" >$start = microtime(true);
// keep calling microtime for about 3 seconds
while(microtime(true) - $start &lt; 3) 

$data = getrusage();
echo "User time: ".
	($data'ru_utime.tv_sec' +
	$data'ru_utime.tv_usec' / 1000000);
echo "System time: ".
	($data'ru_stime.tv_sec' +
	$data'ru_stime.tv_usec' / 1000000);

/* prints
User time: 1.088171
System time: 1.675315
*/
</pre>
<p>Now we have quite a bit of system time usage. This is because the script calls the microtime() function many times, which performs a request through the operating system to fetch the time.</p>
<p>Also you may notice the numbers do not quite add up to 3 seconds. This is because there were probably other processes on the server as well, and the script was not using 100% CPU for the whole duration of the 3 seconds.</p>
<hr />
<h2><span>5. </span>Magic Constants</h2>
<p>PHP provides useful <a  href="http://php.net/manual/en/language.constants.predefined.php">magic constants</a> for fetching the current line number (__LINE__), file path (__FILE__), directory path (__DIR__), function name (__FUNCTION__), class name (__CLASS__), method name (__METHOD__) and namespace (__NAMESPACE__).</p>
<p>We are not going to cover each one of these in this article, but I will show you a few use cases.</p>
<p>When including other scripts, it is a good idea to utilize the __FILE__ constant (or also __DIR__ since PHP 5.3):</p>
<pre class="brush:php" >// this is relative to the loaded script's path
// it may cause problems when running scripts from different directories
require_once('config/database.php');

// this is always relative to this file's path
// no matter where it was included from
require_once(dirname(__FILE__) . '/config/database.php');
</pre>
<p>Using __LINE__ makes debugging easier. You can track down the line numbers:</p>
<pre class="brush:php" >// some code
// ...
my_debug("some debug message", __LINE__);
/* prints
Line 4: some debug message
*/

// some more code
// ...
my_debug("another debug message", __LINE__);
/* prints
Line 11: another debug message
*/

function my_debug($msg, $line)
	echo "Line $line: $msgn";
</pre>
<hr />
<h2><span>6. </span>Generating Unique ID&#8217;s</h2>
<p>There may be situations where you need to generate a unique string. I have seen many people use the md5() function for this, even though it&#8217;s not exactly meant for this purpose:</p>
<pre class="brush:php" >// generate unique string
echo md5(time() . mt_rand(1,1000000));
</pre>
<p>There is actually a PHP function named <a  href="http://us2.php.net/manual/en/function.uniqid.php">uniqid()</a> that is meant to be used for this.</p>
<pre class="brush:php" >// generate unique string
echo uniqid();
/* prints
4bd67c947233e
*/

// generate another unique string
echo uniqid();
/* prints
4bd67c9472340
*/
</pre>
<p>You may notice that even though the strings are unique, they seem similar for the first several characters. This is because the generated string is related to the server time. This actually has a nice side effect, as every new generated id comes later in alphabetical order, so they can be sorted.</p>
<p>To reduce the chances of getting a duplicate, you can pass a prefix, or the second parameter to increase entropy:</p>
<pre class="brush:php" >// with prefix
echo uniqid('foo_');
/* prints
foo_4bd67d6cd8b8f
*/

// with more entropy
echo uniqid('',true);
/* prints
4bd67d6cd8b926.12135106
*/

// both
echo uniqid('bar_',true);
/* prints
bar_4bd67da367b650.43684647
*/
</pre>
<p>This function will generate shorter strings than md5(), which will also save you some space.</p>
<hr />
<h2><span>7. </span>Serialization</h2>
<p>Did you ever need to store a complex variable in a database or a text file? You do not have to come up with a fancy solution to convert your arrays or objects into formatted strings, as PHP already has functions for this purpose.</p>
<p>There are two popular methods of serializing variables. Here is an example that uses the <a  href="http://php.net/manual/en/function.serialize.php">serialize()</a> and <a  href="http://www.php.net/manual/en/function.unserialize.php">unserialize()</a>:</p>
<pre class="brush:php" >// a complex array
$myvar = array(
	'hello',
	42,
	array(1,'two'),
	'apple'
);

// convert to a string
$string = serialize($myvar);

echo $string;
/* prints
a:4:i:0;s:5:"hello";i:1;i:42;i:2;a:2:i:0;i:1;i:1;s:3:"two";i:3;s:5:"apple";}
*/

// you can reproduce the original variable
$newvar = unserialize($string);

print_r($newvar);
/* prints
Array
(
    0 =&gt; hello
    1 =&gt; 42
    2 =&gt; Array
        (
            0 =&gt; 1
            1 =&gt; two
        )

    3 =&gt; apple
)
*/
</pre>
<p>This was the native PHP serialization method. However, since JSON has become so popular in recent years, they decided to add support for it in PHP 5.2. Now you can use the json_encode() and json_decode() functions as well:</p>
<pre class="brush:php" >// a complex array
$myvar = array(
	'hello',
	42,
	array(1,'two'),
	'apple'
);

// convert to a string
$string = json_encode($myvar);

echo $string;
/* prints
"hello",42,,"apple"]
*/

// you can reproduce the original variable
$newvar = json_decode($string);

print_r($newvar);
/* prints
Array
(
    0 =&gt; hello
    1 =&gt; 42
    2 =&gt; Array
        (
            0 =&gt; 1
            1 =&gt; two
        )

    3 =&gt; apple
)
*/
</pre>
<p>It is more compact, and best of all, compatible with javascript and many other languages. However, for complex objects, some information may be lost.</p>
<hr />
<h2><span>8. </span>Compressing Strings</h2>
<p>When talking about compression, we usually think about files, such as ZIP archives. It is possible to compress long strings in PHP, without involving any archive files.</p>
<p>In the following example we are going to utilize the <a  href="http://php.net/manual/en/function.gzcompress.php">gzcompress()</a> and <a  href="http://www.php.net/manual/en/function.gzuncompress.php">gzuncompress()</a> functions:</p>
<pre class="brush:php" >$string =
"Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc ut elit id mi ultricies
adipiscing. Nulla facilisi. Praesent pulvinar,
sapien vel feugiat vestibulum, nulla dui pretium orci,
non ultricies elit lacus quis ante. Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Aliquam
pretium ullamcorper urna quis iaculis. Etiam ac massa
sed turpis tempor luctus. Curabitur sed nibh eu elit
mollis congue. Praesent ipsum diam, consectetur vitae
ornare a, aliquam a nunc. In id magna pellentesque
tellus posuere adipiscing. Sed non mi metus, at lacinia
augue. Sed magna nisi, ornare in mollis in, mollis
sed nunc. Etiam at justo in leo congue mollis.
Nullam in neque eget metus hendrerit scelerisque
eu non enim. Ut malesuada lacus eu nulla bibendum
id euismod urna sodales. ";

$compressed = gzcompress($string);

echo "Original size: ". strlen($string)."n";
/* prints
Original size: 800
*/

echo "Compressed size: ". strlen($compressed)."n";
/* prints
Compressed size: 418
*/

// getting it back
$original = gzuncompress($compressed);
</pre>
<p>We were able to achive almost 50% size reduction. Also the functions <a  href="http://www.php.net/manual/en/function.gzencode.php">gzencode()</a> and <a  href="http://www.php.net/manual/en/function.gzdecode.php">gzdecode()</a> achive similar results, by using a different compression algorithm.</p>
<hr />
<h2><span>9. </span>Register Shutdown Function</h2>
<p>There is a function called <a  href="http://www.php.net/manual/en/function.register-shutdown-function.php">register_shutdown_function()</a>, which will let you execute some code right before the script finishes running.</p>
<p>Imagine that you want to capture some benchmark statistics at the end of your script execution, such as how long it took to run:</p>
<pre class="brush:php" >// capture the start time
$start_time = microtime(true);

// do some stuff
// ...

// display how long the script took
echo "execution took: ".
		(microtime(true) - $start_time).
		" seconds.";
</pre>
<p>At first this may seem trivial. You just add the code to the very bottom of the script and it runs before it finishes. However, if you ever call the <a  href="http://php.net/manual/en/function.exit.php">exit()</a> function, that code will never run. Also, if there is a fatal error, or if the script is terminated by the user (by pressing the Stop button in the browser), again it may not run.</p>
<p>When you use register_shutdown_function(), your code will execute no matter why the script has stopped running:</p>
<pre class="brush:php" >$start_time = microtime(true);

register_shutdown_function('my_shutdown');

// do some stuff
// ...

function my_shutdown()
	global $start_time;

	echo "execution took: ".
			(microtime(true) - $start_time).
			" seconds.";
</pre>
<hr />
<h2>Conclusion</h2>
<p>Do you know any other PHP features that are not widely known but can be very useful? Please share with us in the comments. And thank you for reading!</p>
<p><!--/content--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-08/9-useful-php-functions-and-features-you-need-to-know.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object-Oriented PHP for Beginners</title>
		<link>http://www.taiwangeek.com/2010-08/object-oriented-php-for-beginners.html</link>
		<comments>http://www.taiwangeek.com/2010-08/object-oriented-php-for-beginners.html#comments</comments>
		<pubDate>Wed, 18 Aug 2010 02:59:11 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Google Reader]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[child]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[construction]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/2010-08/object-oriented-php-for-beginners.html</guid>
		<description><![CDATA[ Shared by &#23567;&#33891; 會利用物件導向的確可以省很多事 但誤用會多更多事 For many PHP programmers, object-oriented programming is a frightening concept, full of complicated syntax and other roadblocks. As detailed in my book, Pro PHP and jQuery, you’ll learn the concepts behind object-oriented programming (OOP), a style of coding in which related actions are grouped into classes to aid in creating more-compact, effective code. Understanding Object-Oriented Programming Object-oriented programming is a style of coding that allows developers to group similar tasks into classes ]]></description>
			<content:encoded><![CDATA[<blockquote>
<p><img src="http://www.taiwangeek.com/wp-content/uploads/2010/08/0d5f8dbc8dhouses.jpg-150x68.jpg" /></p>
<p>Read the original here:<br />
<a  target="_blank" href="http://feedproxy.google.com/~r/nettuts/~3/xo-Zg1W_G6g/" title="Object-Oriented PHP for Beginners">Object-Oriented PHP for Beginners</a>
</p></blockquote>
<p><!--/content--></p>
<blockquote><p>Shared by  &#23567;&#33891;<br />
<br />
會利用物件導向的確可以省很多事 但誤用會多更多事</p></blockquote>
<p>
For many PHP programmers, object-oriented programming is a frightening concept, full of complicated syntax and other roadblocks. As detailed in my book, <em><a  href="http://www.amazon.com/gp/product/1430228474?ie=UTF8&#038;tag=ennudesi-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430228474">Pro PHP and jQuery,</a></em> you’ll learn the concepts behind <strong>object-oriented programming</strong> (OOP), a style of coding in which related actions are grouped into classes to aid in creating more-compact, effective code.
</p>
<p><span></span></p>
<hr />
<h2>Understanding Object-Oriented Programming</h2>
<p>
Object-oriented programming is a style of coding that allows developers to group similar tasks into <strong>classes</strong>. This helps keep code following the tenet <a  href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">“don’t repeat yourself” (DRY)</a> and easy-to-maintain.
</p>
<blockquote>
<p>
“Object-oriented programming is a style of coding that allows developers to group similar tasks into <strong>classes</strong>.”
</p>
</blockquote>
<p>
One of the major benefits of DRY programming is that, if a piece of information changes in your program, usually <strong>only one change is required to update the code.</strong> One of the biggest nightmares for developers is maintaining code where data is declared over and over again, meaning any changes to the program become an infinitely more frustrating game of <em>Where’s Waldo?</em> as they hunt for duplicated data and functionality.
</p>
<p>
OOP is intimidating to a lot of developers because it introduces new syntax and, at a glance, appears to be far more complex than simple procedural, or inline, code. However, upon closer inspection, OOP is actually a very straightforward and ultimately simpler approach to programming.
</p>
<hr />
<h2>Understanding Objects and Classes</h2>
<p>
Before you can get too deep into the finer points of OOP, a basic understanding of the differences between <strong>objects</strong> and <strong>classes</strong> is necessary. This section will go over the building blocks of classes, their different capabilities, and some of their uses.
</p>
<h3>Recognizing the Differences Between Objects and Classes</h3>
<div>
    <img src="http://www.taiwangeek.com/wp-content/uploads/2010/08/0d5f8dbc8dhouses.jpg.jpg" border="0" /></p>
<p>
        Photos by <a  href="http://www.flickr.com/photos/instantjefferson/">Instant Jefferson</a> and <a  href="http://www.flickr.com/photos/johnwardell/">John Wardell</a>
    </p>
</div>
<blockquote>
<p>
“Developers start talking about objects and classes, and they appear to be interchangeable terms. This is not the case, however.”
</p>
</blockquote>
<p>
Right off the bat, there’s confusion in OOP: seasoned developers start talking about objects and classes, and they appear to be interchangeable terms. This is not the case, however, though the difference can be tough to wrap your head around at first.
</p>
<p>
A class, for example, is like <strong>a blueprint for a house</strong>. It defines the shape of the house on paper, with relationships between the different parts of the house clearly defined and planned out, even though the house doesn’t exist.
</p>
<p>
An object, then, is like <strong>the actual house</strong> built according to that blueprint. The data stored in the object is like the wood, wires, and concrete that compose the house: without being assembled according to the blueprint, it’s just a pile of stuff. However, when it all comes together, it becomes an organized, useful house.
</p>
<p>
<strong>Classes form the structure of data and actions and use that information to build objects.</strong> More than one object can be built from the same class at the same time, each one independent of the others. Continuing with our construction analogy, it’s similar to the way an entire subdivision can be built from the same blueprint: 150 different houses that all look the same but have different<br />
families and decorations inside.
</p>
<h3>Structuring Classes</h3>
<p>
The syntax to create a class is pretty straightforward: declare a class using the <tt>class</tt> keyword, followed by the name of the class and a set of curly braces (<tt>{}</tt>):
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    // Class properties and methods go here

?>
</pre>
<p>
After creating the class, a new class can be instantiated and stored in a variable using the <tt>new</tt> keyword:
</p>
<pre class="brush:php"  name="code">$obj = new MyClass;
</pre>
<p>
To see the contents of the class, use <tt>var_dump()</tt>:
</p>
<pre class="brush:php"  name="code">var_dump($obj);
</pre>
<p>
Try out this process by putting all the preceding code in a new file called <tt>test.php</tt> in your local testing folder:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

	// Class properties and methods go here

$obj = new MyClass;

var_dump($obj);

?>
</pre>
<p>
Load the page in your browser at <tt>http://localhost/test.php</tt> and the following should display:
</p>
<pre class="brush:php"  name="code">object(MyClass)#1 (0)
</pre>
<p>
<strong>In its simplest form, you’ve just completed your first OOP script.</strong>
</p>
<hr />
<h2>Defining Class Properties</h2>
<p>
To add data to a class, <strong>properties</strong>, or class-specific variables, are used. These work exactly like regular variables, except they’re bound to the object and therefore can only be accessed using the object.
</p>
<p>
To add a property to <tt>MyClass</tt>, add the following code to your script:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

$obj = new MyClass;

var_dump($obj);

?>
</pre>
<p>
The keyword <tt>public</tt> determines the visibility of the property, which you’ll learn about a little later in this chapter. Next, the property is named using standard variable syntax, and a value is assigned (though class properties do not need an initial value).
</p>
<p>
To read this property and output it to the browser, reference the object from which to read and the property to be read:
</p>
<pre class="brush:php"  name="code">echo $obj->prop1;
</pre>
<p>
Because multiple instances of a class can exist, if the individual object is not referenced, the script would be unable to determine which object to read from. The use of the arrow (<tt>-></tt>) is an OOP construct that accesses the contained properties and methods of a given object.
</p>
<p>
Modify the script in <tt>test.php</tt> to read out the property rather than dumping the whole class by modifying the code as shown:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

$obj = new MyClass;

echo $obj->prop1; // Output the property

?>
</pre>
<p>
Reloading your browser now outputs the following:
</p>
<pre class="brush:php"  name="code">I'm a class property!
</pre>
<hr />
<h2>Defining Class Methods</h2>
<p>
<strong>Methods</strong> are class-specific functions. Individual actions that an object will be able to perform are defined within the class as methods.
</p>
<p>
For instance, to create methods that would set and get the value of the class property <tt>$prop1</tt>, add the following to your code:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

$obj = new MyClass;

echo $obj->prop1;

?>
</pre>
<p>
<strong>Note</strong> — OOP allows objects to reference themselves using <tt>$this</tt>. When working within a method, use <tt>$this</tt> in the same way you would use the object name outside the class.
</p>
<p>
To use these methods, call them just like regular functions, but first, reference the object they belong to. Read the property from <tt>MyClass</tt>, change its value, and read it out again by making the modifications below:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

$obj = new MyClass;

echo $obj->getProperty(); // Get the property value

$obj->setProperty("I&#39;m a new property value!"); // Set a new one

echo $obj->getProperty(); // Read it out again to show the change

?>
</pre>
<p>
Reload your browser, and you’ll see the following:
</p>
<pre class="brush:php"  name="code">I'm a class property!
I'm a new property value!
</pre>
<blockquote>
<p>
“The power of OOP becomes apparent when using multiple instances of the<br />
same class.”
</p>
</blockquote>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

// Create two objects
$obj = new MyClass;
$obj2 = new MyClass;

// Get the value of $prop1 from both objects
echo $obj->getProperty();
echo $obj2->getProperty();

// Set new values for both objects
$obj->setProperty("I&#39;m a new property value!");
$obj2->setProperty("I belong to the second instance!");

// Output both objects&#39; $prop1 value
echo $obj->getProperty();
echo $obj2->getProperty();

?>
</pre>
<p>
When you load the results in your browser, they read as follows:
</p>
<pre class="brush:php"  name="code">I'm a class property!
I'm a class property!
I'm a new property value!
I belong to the second instance!
</pre>
<p>
As you can see, <strong>OOP keeps objects as separate entities</strong>, which makes for easy separation of different pieces of code into small, related bundles.
</p>
<hr />
<h2>Magic Methods in OOP</h2>
<p>
To make the use of objects easier, PHP also provides a number of <strong>magic methods</strong>, or special methods that are called when certain common actions occur within objects. This allows developers to perform a number of useful tasks with relative ease.
</p>
<h3>Using Constructors and Destructors</h3>
<p>
When an object is instantiated, it’s often desirable to set a few things right off the bat. To handle this, PHP provides the magic method <tt>__construct()</tt>, which is called automatically whenever a new object is<br />
created.
</p>
<p>
For the purpose of illustrating the concept of constructors, add a constructor to <tt>MyClass</tt> that will output a message whenever a new instance of the class is created:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

// Create a new object
$obj = new MyClass;

// Get the value of $prop1
echo $obj->getProperty();

// Output a message at the end of the file
echo "End of file.";

?>
</pre>
<p>
<strong>Note</strong> — <tt>__CLASS__</tt> returns the name of the class in which it is called; this is what is known as a <a  href="http://us3.php.net/manual/en/language.constants.predefined.php">magic constant</a>. There are several available magic constants, which you can read more about in the PHP manual.
</p>
<p>
Reloading the file in your browser will produce the following result:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
I'm a class property!
End of file.
</pre>
<p>
To call a function when the object is destroyed, the <tt>__destruct()</tt> magic method is available. This is useful for class cleanup (closing a database connection, for instance).
</p>
<p>
Output a message when the object is destroyed by defining the magic method<br />
<tt>__destruct()</tt> in <tt>MyClass</tt>:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

// Create a new object
$obj = new MyClass;

// Get the value of $prop1
echo $obj->getProperty();

// Output a message at the end of the file
echo "End of file.";

?>
</pre>
<p>
With a destructor defined, reloading the test file results in the following output:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
I'm a class property!
End of file.
The class "MyClass" was destroyed.
</pre>
<blockquote>
<p>
“When the end of a file is reached, PHP automatically releases all resources.”
</p>
</blockquote>
<p>
To explicitly trigger the destructor, you can destroy the object using the<br />
function <tt>unset()</tt>:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

// Create a new object
$obj = new MyClass;

// Get the value of $prop1
echo $obj->getProperty();

// Destroy the object
unset($obj);

// Output a message at the end of the file
echo "End of file.";

?>
</pre>
<p>
Now the result changes to the following when loaded in your browser:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
I'm a class property!
The class "MyClass" was destroyed.
End of file.
</pre>
<h3>Converting to a String</h3>
<p>
To avoid an error if a script attempts to output <tt>MyClass</tt> as a string, another magic method is used called <tt>__toString()</tt>.
</p>
<p>
Without <tt>__toString()</tt>, <em>attempting to output the object as a string results in a fatal error</em>. Attempt to use <tt>echo</tt> to output the object without a magic method in place:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

// Create a new object
$obj = new MyClass;

// Output the object as a string
echo $obj;

// Destroy the object
unset($obj);

// Output a message at the end of the file
echo "End of file.";

?>
</pre>
<p>
This results in the following:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!

Catchable fatal error: Object of class MyClass could not be converted to string in /Applications/XAMPP/xamppfiles/htdocs/testing/test.php on line 40
</pre>
<p>
To avoid this error, add a <tt>__toString()</tt> method:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function __toString()

        echo "Using the toString method: ";
        return $this->getProperty();

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

// Create a new object
$obj = new MyClass;

// Output the object as a string
echo $obj;

// Destroy the object
unset($obj);

// Output a message at the end of the file
echo "End of file.";

?>
</pre>
<p>
In this case, attempting to convert the object to a string results in a call to the <tt>getProperty()</tt> method. Load the test script in your browser to see the result:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
Using the toString method: I'm a class property!
The class "MyClass" was destroyed.
End of file.
</pre>
<p>
<strong>Tip</strong> — In addition to the magic methods discussed in this section, several others are available. For a complete list of magic methods, see the  <a  href="http://us2.php.net/manual/en/language.oop5.magic.php">PHP manual page</a>.
</p>
<hr />
<h2>Using Class Inheritance</h2>
<p>
<strong>Classes can inherit the methods and properties of another class</strong> using the <tt>extends</tt> keyword. For instance, to create a second class that extends <tt>MyClass</tt> and adds a method, you would add the following to your test file:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function __toString()

        echo "Using the toString method: ";
        return $this->getProperty();

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

class MyOtherClass extends MyClass

    public function newMethod()

        echo "From a new method in " . __CLASS__ . ".";

}

// Create a new object
$newobj = new MyOtherClass;

// Output the object as a string
echo $newobj->newMethod();

// Use a method from the parent class
echo $newobj->getProperty();

?>
</pre>
<p>
Upon reloading the test file in your browser, the following is output:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
From a new method in MyOtherClass.
I'm a class property!
The class "MyClass" was destroyed.
</pre>
<h3>Overwriting Inherited Properties and Methods</h3>
<p>
To change the behavior of an existing property or method in the new class, you can simply overwrite it by declaring it again in the new class:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function __toString()

        echo "Using the toString method: ";
        return $this->getProperty();

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

class MyOtherClass extends MyClass

    public function __construct()

        echo "A new constructor in " . __CLASS__ . ".";

    public function newMethod()

        echo "From a new method in " . __CLASS__ . ".";

}

// Create a new object
$newobj = new MyOtherClass;

// Output the object as a string
echo $newobj->newMethod();

// Use a method from the parent class
echo $newobj->getProperty();

?>
</pre>
<p>
This changes the output in the browser to:
</p>
<pre class="brush:php"  name="code">A new constructor in MyOtherClass.
From a new method in MyOtherClass.
I'm a class property!
The class "MyClass" was destroyed.
</pre>
<h3>Preserving Original Method Functionality While Overwriting Methods</h3>
<p>
To add new functionality to an inherited method while keeping the original method intact, use the <tt>parent</tt> keyword with the <strong>scope resolution operator</strong> (<tt>::</tt>):
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function __toString()

        echo "Using the toString method: ";
        return $this->getProperty();

    public function setProperty($newval)

        $this->prop1 = $newval;

    public function getProperty()

        return $this->prop1 . "";

}

class MyOtherClass extends MyClass

    public function __construct()

        parent::__construct(); // Call the parent class&#39;s constructor
        echo "A new constructor in " . __CLASS__ . ".";

    public function newMethod()

        echo "From a new method in " . __CLASS__ . ".";

}

// Create a new object
$newobj = new MyOtherClass;

// Output the object as a string
echo $newobj->newMethod();

// Use a method from the parent class
echo $newobj->getProperty();

?>
</pre>
<p>
This outputs the result of both the parent constructor and the new class’s constructor:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
A new constructor in MyOtherClass.
From a new method in MyOtherClass.
I'm a class property!
The class "MyClass" was destroyed.
</pre>
<hr />
<h2>Assigning the Visibility of Properties and Methods</h2>
<p>
For added control over objects, methods and properties are assigned visibility. This controls how and from where properties and methods can be accessed. There are three visibility keywords: <tt>public</tt>, <tt>protected</tt>, and <tt>private</tt>. In addition to its visibility, a method or property can be declared as <tt>static</tt>, which allows them to be accessed without an instantiation of the class.
</p>
<blockquote><p>“For added control over objects, methods and properties are assigned visibility.”</p>
</blockquote>
<p>
<strong>Note</strong> — Visibility is a new feature as of PHP 5. For information on <a  href="http://us2.php.net/manual/en/language.oop5.php">OOP compatibility with PHP 4</a>, see the PHP manual page.
</p>
<h3>Public Properties and Methods</h3>
<p>
All the methods and properties you’ve used so far have been public. This means that they can be accessed anywhere, both within the class and externally.
</p>
<h3>Protected Properties and Methods</h3>
<p>
When a property or method is declared <tt>protected</tt>, <strong>it can only be accessed within the class itself or in descendant classes</strong> (classes that extend the class containing the protected method).
</p>
<p>
Declare the <tt>getProperty()</tt> method as protected in <tt>MyClass</tt> and try to access it directly from outside the class:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function __toString()

        echo "Using the toString method: ";
        return $this->getProperty();

    public function setProperty($newval)

        $this->prop1 = $newval;

    protected function getProperty()

        return $this->prop1 . "";

}

class MyOtherClass extends MyClass

    public function __construct()

        parent::__construct();
		echo "A new constructor in " . __CLASS__ . ".";

    public function newMethod()

        echo "From a new method in " . __CLASS__ . ".";

}

// Create a new object
$newobj = new MyOtherClass;

// Attempt to call a protected method
echo $newobj->getProperty();

?>
</pre>
<p>
Upon attempting to run this script, the following error shows up:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
A new constructor in MyOtherClass.

Fatal error: Call to protected method MyClass::getProperty() from context '' in /Applications/XAMPP/xamppfiles/htdocs/testing/test.php on line 55
</pre>
<p>
Now, create a new method in <tt>MyOtherClass</tt> to call the <tt>getProperty()</tt> method:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function __toString()

        echo "Using the toString method: ";
        return $this->getProperty();

    public function setProperty($newval)

        $this->prop1 = $newval;

    protected function getProperty()

        return $this->prop1 . "";

}

class MyOtherClass extends MyClass

    public function __construct()

        parent::__construct();
		echo "A new constructor in " . __CLASS__ . ".";

    public function newMethod()

        echo "From a new method in " . __CLASS__ . ".";

    public function callProtected()

        return $this->getProperty();

}

// Create a new object
$newobj = new MyOtherClass;

// Call the protected method from within a public method
echo $newobj->callProtected();

?>
</pre>
<p>
This generates the desired result:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
A new constructor in MyOtherClass.
I'm a class property!
The class "MyClass" was destroyed.
</pre>
<h3>Private Properties and Methods</h3>
<p>
A property or method declared <tt>private</tt> is accessible <strong>only from within the class that defines it</strong>. This means that <em>even if a new class extends the class that defines a private property,</em> that property or method will not be available at all within the child class.
</p>
<p>
To demonstrate this, declare <tt>getProperty()</tt> as private in <tt>MyClass</tt>, and attempt to call <tt>callProtected()</tt> from<br />
<tt>MyOtherClass</tt>:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function __toString()

        echo "Using the toString method: ";
        return $this->getProperty();

    public function setProperty($newval)

        $this->prop1 = $newval;

    private function getProperty()

        return $this->prop1 . "";

}

class MyOtherClass extends MyClass

    public function __construct()

        parent::__construct();
        echo "A new constructor in " . __CLASS__ . ".";

    public function newMethod()

        echo "From a new method in " . __CLASS__ . ".";

    public function callProtected()

        return $this->getProperty();

}

// Create a new object
$newobj = new MyOtherClass;

// Use a method from the parent class
echo $newobj->callProtected();

?>
</pre>
<p>
Reload your browser, and the following error appears:
</p>
<pre class="brush:php"  name="code">The class "MyClass" was initiated!
A new constructor in MyOtherClass.

Fatal error: Call to private method MyClass::getProperty() from context 'MyOtherClass' in /Applications/XAMPP/xamppfiles/htdocs/testing/test.php on line 49
</pre>
<h3>Static Properties and Methods</h3>
<p>
A method or property declared <tt>static</tt> can be accessed without first instantiating the class; you simply supply the class name, scope resolution operator, and the property or method name.
</p>
<blockquote>
<p>
“One of the major benefits to using static properties is that they keep their stored values for the duration of the script.”
</p>
</blockquote>
<p>
To demonstrate this, add a static property called <tt>$count</tt> and a static method called <tt>plusOne()</tt> to <tt>MyClass</tt>. Then set up a <tt>do...while</tt> loop to output the incremented value of <tt>$count</tt> as long as the value is less than 10:
</p>
<pre class="brush:php"  name="code">< ?php

class MyClass

    public $prop1 = "I&#39;m a class property!";

    public static $count = 0;

    public function __construct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was initiated!&#39;;

    public function __destruct()

        echo &#39;The class "&#39;, __CLASS__, &#39;" was destroyed.&#39;;

    public function __toString()

        echo "Using the toString method: ";
        return $this->getProperty();

    public function setProperty($newval)

        $this->prop1 = $newval;

    private function getProperty()

        return $this->prop1 . "";

    public static function plusOne()

        return "The count is " . ++self::$count . ".";

}

class MyOtherClass extends MyClass

    public function __construct()

        parent::__construct();
        echo "A new constructor in " . __CLASS__ . ".";

    public function newMethod()

        echo "From a new method in " . __CLASS__ . ".";

    public function callProtected()

        return $this->getProperty();

}

do

    // Call plusOne without instantiating MyClass
    echo MyClass::plusOne();
 while ( MyClass::$count < 10 );

?>
</pre>
<p>
<strong>Note</strong> — When accessing static properties, the dollar sign<br />
(<tt>$</tt>) comes <em>after the scope resolution operator.</em>
</p>
<p>
When you load this script in your browser, the following is output:
</p>
<pre class="brush:php"  name="code">The count is 1.
The count is 2.
The count is 3.
The count is 4.
The count is 5.
The count is 6.
The count is 7.
The count is 8.
The count is 9.
The count is 10.
</pre>
<hr />
<h2>Commenting with DocBlocks</h2>
<blockquote>
<p>
“The DocBlock commenting style is a widely<br />
accepted method of documenting classes.”
</p>
</blockquote>
<p>
While not an official part of OOP, the <a  href="http://en.wikipedia.org/wiki/PHPDoc">DocBlock</a> commenting style is a widely accepted method of documenting classes. Aside from providing a standard for<br />
developers to use when writing code, it has also been adopted by many of the most popular software development kits (SDKs), such as <a  href="http://eclipse.org">Eclipse</a> and <a  href="http://netbeans.org">NetBeans</a>, and will be used to generate code hints.
</p>
<p>
A DocBlock is defined by using a block comment that starts with an additional asterisk:
</p>
<pre class="brush:php"  name="code">/**
 * This is a very basic DocBlock
 */
</pre>
<p>
The real power of DocBlocks comes with the ability to use <strong>tags</strong>, which start with an at symbol (<tt>@</tt>) immediately followed by the tag name and the value of the tag. <strong>DocBlock tags allow developers to define authors of a file, the license for a class, the property or method information, and other useful information.</strong>
</p>
<p>
The most common tags used follow:
</p>
<ul>
<li><strong>@author</strong>: The author of the current element (which might be a class, file, method, or any bit of code) are listed using this tag. Multiple author tags can be used in the same DocBlock if more than one author is credited. The format for the author name is <tt>John Doe <john .doe@email.com></john></tt>.</li>
<li><strong>@copyright</strong>: This signifies the copyright year and name of the copyright holder for the current element. The format is <tt>2010 Copyright Holder</tt>.</li>
<li><strong>@license</strong>: This links to the license for the current element. The format for the license information is<br />
        <tt>http://www.example.com/path/to/license.txt License Name</tt>.</li>
<li><strong>@var</strong>: This holds the type and description of a variable or class property. The format is <tt>type element description</tt>.</li>
<li><strong>@param</strong>: This tag shows the type and description of a function or method parameter. The format is <tt>type $element_name element description</tt>.</li>
<li><strong>@return</strong>: The type and description of the return value of a function or method are provided in this tag. The format is <tt>type return element description</tt>.</li>
</ul>
<p>
A sample class commented with DocBlocks might look like this:
</p>
<pre class="brush:php"  name="code">< ?php

/**
 * A simple class
 *
 * This is the long description for this class,
 * which can span as many lines as needed. It is
 * not required, whereas the short description is
 * necessary.
 *
 * It can also span multiple paragraphs if the
 * description merits that much verbiage.
 *
 * @author Jason Lengstorf <jason.lengstorf@ennuidesign.com>
 * @copyright 2010 Ennui Design
 * @license http://www.php.net/license/3_01.txt PHP License 3.01
 */
class SimpleClass

    /**
     * A public variable
     *
     * @var string stores data for the class
     */
    public $foo;

    /**
     * Sets $foo to a new value upon class instantiation
     *
     * @param string $val a value required for the class
     * @return void
     */
    public function __construct($val)

        $this->foo = $val;

    /**
     * Multiplies two integers
     *
     * Accepts a pair of integers and returns the
     * product of the two.
     *
     * @param int $bat a number to be multiplied
     * @param int $baz a number to be multiplied
     * @return int the product of the two parameters
     */
    public function bar($bat, $baz)

        return $bat * $baz;

}

?>
</pre>
<p>
Once you scan the preceding class, the benefits of DocBlock are apparent: everything is clearly defined so that the next developer can pick up the code and <em>never have to wonder what a snippet of code does or what it should contain.</em>
</p>
<hr />
<h2>Comparing Object-Oriented and Procedural Code</h2>
<p>
There’s not really a right and wrong way to write code. That being said, <strong>this section outlines a strong argument for adopting an object-oriented approach in software development, especially in large applications.</strong>
</p>
<hr />
<h2>Reason 1: Ease of Implementation</h2>
<blockquote>
<p>
“While it may be daunting at first, OOP actually provides an easier approach to dealing with data.”
</p>
</blockquote>
<p>
While it may be daunting at first, OOP actually provides an easier approach to dealing with data. Because an object can store data internally, variables don’t need to be passed from function to function to work properly.
</p>
<p>
Also, because <em>multiple instances of the same class can exist simultaneously</em>, dealing with large data sets is infinitely easier. For instance, imagine you have two people’s information being processed in a file. They need names, occupations, and ages.
</p>
<h3>The Procedural Approach</h3>
<p>
Here’s the procedural approach to our example:
</p>
<pre class="brush:php"  name="code">< ?php

function changeJob($person, $newjob)

    $person&#39;job&#39; = $newjob; // Change the person&#39;s job
    return $person;

function happyBirthday($person)

    ++$person&#39;age&#39;; // Add 1 to the person&#39;s age
    return $person;

$person1 = array(
    &#39;name&#39; => &#39;Tom&#39;,
    &#39;job&#39; => &#39;Button-Pusher&#39;,
    &#39;age&#39; => 34
);

$person2 = array(
    &#39;name&#39; => &#39;John&#39;,
    &#39;job&#39; => &#39;Lever-Puller&#39;,
    &#39;age&#39; => 41
);

// Output the starting values for the people
echo "</pre>
<pre class="brush:php"  class="brush: php;">Person 1: ", print_r($person1, TRUE), "</pre>
<p>&#8220;;<br />
echo &#8220;
<pre class="brush:php"  class="brush: php;">Person 2: ", print_r($person2, TRUE), "</pre>
<p>&#8220;;</p>
<p>// Tom got a promotion and had a birthday<br />
$person1 = changeJob($person1, &#39;Box-Mover&#39;);<br />
$person1 = happyBirthday($person1);</p>
<p>// John just had a birthday<br />
$person2 = happyBirthday($person2);</p>
<p>// Output the new values for the people<br />
echo &#8220;
<pre class="brush:php"  class="brush: php;">Person 1: ", print_r($person1, TRUE), "</pre>
<p>&#8220;;<br />
echo &#8220;
<pre class="brush:php"  class="brush: php;">Person 2: ", print_r($person2, TRUE), "</pre>
<p>&#8220;;</p>
<p>?></p>
<p>
When executed, the code outputs the following:
</p>
<pre class="brush:php"  name="code">Person 1: Array
(
    name => Tom
    job => Button-Pusher
    age => 34
)
Person 2: Array
(
    name => John
    job => Lever-Puller
    age => 41
)
Person 1: Array
(
    name => Tom
    job => Box-Mover
    age => 35
)
Person 2: Array
(
    name => John
    job => Lever-Puller
    age => 42
)
</pre>
<p>
While this code isn’t necessarily bad, there’s a lot to keep in mind while coding. <strong>The array of the affected person’s attributes must be passed and returned from each function call</strong>, which leaves margin for error.
</p>
<p>
To clean up this example, it would be desirable to <strong>leave as few things up to the developer as possible.</strong> Only absolutely essential information for the current operation should need to be passed to the functions.
</p>
<p>
<strong>This is where OOP steps in and helps you clean things up.</strong>
</p>
<h3>The OOP Approach</h3>
<p>
Here’s the OOP approach to our example:
</p>
<pre class="brush:php"  name="code">< ?php

class Person

    private $_name;
    private $_job;
    private $_age;

    public function __construct($name, $job, $age)

        $this->_name = $name;
        $this->_job = $job;
        $this->_age = $age;

    public function changeJob($newjob)

        $this->_job = $newjob;

    public function happyBirthday()

        ++$this->_age;

}

// Create two new people
$person1 = new Person("Tom", "Button-Pusher", 34);
$person2 = new Person("John", "Lever Puller", 41);

// Output their starting point
echo "</pre>
<pre class="brush:php"  class="brush: php;">Person 1: ", print_r($person1, TRUE), "</pre>
<p>&#8220;;<br />
echo &#8220;
<pre class="brush:php"  class="brush: php;">Person 2: ", print_r($person2, TRUE), "</pre>
<p>&#8220;;</p>
<p>// Give Tom a promotion and a birthday<br />
$person1->changeJob(&#8220;Box-Mover&#8221;);<br />
$person1->happyBirthday();</p>
<p>// John just gets a year older<br />
$person2->happyBirthday();</p>
<p>// Output the ending values<br />
echo &#8220;
<pre class="brush:php"  class="brush: php;">Person 1: ", print_r($person1, TRUE), "</pre>
<p>&#8220;;<br />
echo &#8220;
<pre class="brush:php"  class="brush: php;">Person 2: ", print_r($person2, TRUE), "</pre>
<p>&#8220;;</p>
<p>?></p>
<p>
This outputs the following in the browser:
</p>
<pre class="brush:php"  name="code">Person 1: Person Object
(
    _name:private => Tom
    _job:private => Button-Pusher
    _age:private => 34
)

Person 2: Person Object
(
    _name:private => John
    _job:private => Lever Puller
    _age:private => 41
)

Person 1: Person Object
(
    _name:private => Tom
    _job:private => Box-Mover
    _age:private => 35
)

Person 2: Person Object
(
    _name:private => John
    _job:private => Lever Puller
    _age:private => 42
)
</pre>
<p>
There’s a little bit more setup involved to make the approach object oriented, but after the class is defined, creating and modifying people is a breeze; <strong>a person’s information does not need to be passed or returned from methods, and only absolutely essential information is passed to each method.</strong>
</p>
<blockquote>
<p>
“OOP will significantly reduce your workload if implemented properly.”
</p>
</blockquote>
<p>
On the small scale, this difference may not seem like much, but as your applications grow in size, OOP will significantly reduce your workload if implemented properly.
</p>
<p>
<strong>Tip</strong> — <em>Not everything needs to be object oriented.</em> A quick function that handles something small in one place inside the application does not necessarily need to be wrapped in a class. Use your best judgment when deciding between object-oriented and procedural approaches.
</p>
<hr />
<h2>Reason 2: Better Organization</h2>
<p>
Another benefit of OOP is how well it lends itself to being <strong>easily packaged and cataloged.</strong> Each class can generally be kept in its own separate file, and if a uniform naming convention is used, accessing the classes is extremely simple.
</p>
<p>
Assume you’ve got an application with 150 classes that are called dynamically through a controller file at the root of your application filesystem. All 150 classes follow the naming convention <tt>class.classname.inc.php</tt> and reside in the <tt>inc</tt> folder of your application.
</p>
<p>
The controller can implement PHP’s <tt>__autoload()</tt> function to dynamically pull in only the classes it needs as they are called, rather than including all 150 in the controller file just in case or coming up with some clever way of including the files in your own code:
</p>
<pre class="brush:php"  name="code">< ?php
    function __autoload($class_name)

        include_once &#39;inc/class.&#39; . $class_name . &#39;.inc.php&#39;;

?>
</pre>
<p>
Having each class in a separate file also makes code more portable and easier to reuse in new applications without a bunch of copying and pasting.
</p>
<hr />
<h2>Reason 3: Easier Maintenance</h2>
<p>
Due to the more compact nature of OOP when done correctly, <strong>changes in the code are usually much easier to spot</strong> and make than in a long spaghetti code procedural implementation.
</p>
<p>
If a particular array of information gains a new attribute, a procedural piece of software may require (in a worst-case scenario) that the new attribute be added to each function that uses the array.
</p>
<p>
An OOP application could potentially be updated as easily adding the new property and then adding the methods that deal with said property.
</p>
<p>
A lot of the benefits covered in this section are the product of <strong>OOP in combination with DRY programming practices.</strong> It is definitely possible to create easy-to-maintain procedural code that doesn’t cause nightmares, and it is equally possible to create awful object-oriented code. <em>Pro PHP and  jQuery</em> will attempt to demonstrate a combination of good coding habits in conjunction with OOP to generate clean code that’s easy to read and maintain.
</p>
<hr />
<h2>Summary</h2>
<p>
At this point, you should feel comfortable with the object-oriented programming style. Learning OOP is a great way to take your programming to that next level. When implemented properly, OOP will help you produce easy-to-read, easy-to-maintain, portable code that will save you (and the developers who work with you) hours of extra work. Are you stuck on something that wasn’t covered in this article? Are you already using OOP and have some tips for beginners? Share them in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-08/object-oriented-php-for-beginners.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NotePad++ 5.7 in windows7 support php function list</title>
		<link>http://www.taiwangeek.com/2010-08/notepad-5-7-windows7-support-php-function-list.html</link>
		<comments>http://www.taiwangeek.com/2010-08/notepad-5-7-windows7-support-php-function-list.html#comments</comments>
		<pubDate>Wed, 11 Aug 2010 13:08:21 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[原創]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/?p=1302</guid>
		<description><![CDATA[This case spend me so much time . Step 1. Download this file FunctionList.zip Step 2. Install notepad++ 5.7 and don&#8217;t install with %APPDATA% Step 3. unzip the FunctionList.zip and... <a class="meta-more" href="http://www.taiwangeek.com/2010-08/notepad-5-7-windows7-support-php-function-list.html">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This case spend me so much time .</p>
<p>Step 1.<br />
Download this file<br />
<a  href="http://www.taiwangeek.com/ST/FunctionList.zip" target="_blank">FunctionList.zip</a></p>
<p>Step 2.<br />
Install notepad++ 5.7 and don&#8217;t install with %APPDATA%</p>
<p>Step 3.</p>
<p>unzip the FunctionList.zip and copy all file to <notepad ++ install dir>/plugins<br />
<a  href="http://www.taiwangeek.com/2010-08/notepad-5-7-windows7-support-php-function-list.html/notepad-2" rel="attachment wp-att-1304"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/08/notepad-300x207.png" alt="" title="notepad with php function list" width="300" height="207" class="alignnone size-medium wp-image-1304" /></a><br />
</notepad></p>
<p>This Article is from</p>
<p>http://www.danielkassner.com/2010/01/22/using-notepads-function-list-plugin-for-php-development</p>
<p>http://sourceforge.net/projects/npp-plugins/forums/forum/670934/topic/3568427</p>
<p>(This has been corrected with the V2.1.0.1 version, and also added powershell support:)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-08/notepad-5-7-windows7-support-php-function-list.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs Macro Tutorial: How to Record and Play</title>
		<link>http://www.taiwangeek.com/2010-07/emacs-macro-tutorial-how-to-record-and-play.html</link>
		<comments>http://www.taiwangeek.com/2010-07/emacs-macro-tutorial-how-to-record-and-play.html#comments</comments>
		<pubDate>Tue, 27 Jul 2010 22:02:51 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[Normal]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[change-the-case]]></category>
		<category><![CDATA[cursor]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[emacs-tutorials]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[thegeekstuff]]></category>
		<category><![CDATA[tutorial-series]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/2010-07/emacs-macro-tutorial-how-to-record-and-play.html</guid>
		<description><![CDATA[Let us take the following text snippet as an example. $ cat thegeekstuff.txt * virtualization technologies * sed and awk tips/tricks * emacs tutorials * bash scripting tutorial series ...]]></description>
			<content:encoded><![CDATA[<div id="post-5393" readability="69.9225941423">
<div class="headline_area" readability="8">
<p class="headline_meta">by <span class="author vcard fn">SathiyaMoorthy</span> on <abbr class="published" title="2010-07-28">July 28, 2010</abbr></p>
</p></div>
<div class="format_text entry-content" readability="65.2788461538">
<p><img src="http://www.thegeekstuff.com/wp-content/uploads/2010/07/emacs-macro-record-n-play.png" alt="" width="300" height="200" class="alignright size-full wp-image-5406" />Using Emacs Macro feature you can record and play a sequence of actions inside the editor.</p>
<p>This article explains how to perform record and play inside Emacs editor with an example.</p>
<p>If you are a Vim editor fan, refer to our <a  href="http://www.thegeekstuff.com/2009/01/vi-and-vim-macro-tutorial-how-to-record-and-play/">How to record and play inside Vim editor</a> article.<br /><span id="more-5393"></span></p>
<h3>High Level Steps to Record and Play inside Emacs</h3>
<ol>
<li> Start recording a macro by pressing <b>ctrl+x (</b>
</li>
<li> Perform any actions inside the Emacs editor that you would like to record.
</li>
<li> Stop recording by pressing <b>ctrl+x )</b>
</li>
<li> Play the last recorded macro by pressing <b>ctrl+x e</b>
</li>
</ol>
<p>For using multiple macros, you have to name and save the macros.</p>
<h3>High Level Steps for Naming and Saving emacs macro, and playing it later</h3>
<ol>
<li> Press Ctrl+x Ctrl+k n
</li>
<li> Give name-of-macro, and press ENTER
</li>
<li> Run the named macro by pressing, M-x name-of-macro
</li>
</ol>
<h3>Example: Title case first word in each bullet points</h3>
<p>Let us take the following text snippet as an example.</p>
<pre>
$ cat thegeekstuff.txt
        * virtualization technologies
        * sed and awk tips/tricks
        * emacs tutorials
        * bash scripting tutorial series
</pre>
<h3>1. Open the thegeekstuff.txt that has the bullet points</h3>
<p>Open the above sample text file, and by default the cursor will be placed in the first line.</p>
<pre>
$ emacs -nw thegeekstuff.txt
        * virtualization technologies
        * sed and awk tips/tricks
        * emacs tutorials
        * bash scripting tutorial series
</pre>
<h3>2. Start the Recording</h3>
<p>Type: Ctrl+x (</p>
<ul>
<li> Ctrl+x ( indicates start the recording
</li>
<li> When you do Ctrl+x (, it will display <strong>Defining kbd macro ..</strong> at the bottom of screen.
</li>
</ul>
<h3>3. Change the case of next</h3>
<p>Type: M-c</p>
<ul>
<li> Press M-c which will title case the next word, and places the cursor after the word.
</li>
</ul>
<h3>4. Go to the next line</h3>
<p>Type: C-n</p>
<h3>5. Go to the start of line</h3>
<p>Type: C-a</p>
<ul>
<li> Press C-a which will move the cursor to the starting of the line.
</li>
</ul>
<h3>6. Stop recording the macro</h3>
<p>Type: C-x )</p>
<ul>
<li> Ctrl+x ) indicates stop the recording
</li>
<li> When you do Ctrl+x ), it will display <b>Keyboard macro defined</b> in the bottom of screen.
</li>
</ul>
<h3>7. Give name and save macro</h3>
<p>Type: C-x C-k n title-case-macro</p>
<ul>
<li> Ctrl+x Ctrl+k n indicates name the previous macro
</li>
<li> When you do Ctrl+x Ctrl+k n, it will ask ‘Name for last kbd macro:’ (enter the name you require). I am naming it as <b>title-case-macro</b>.
</li>
</ul>
<h3>8. Execute the macro for required number of times</h3>
<p>Type: M-x title-case-macro</p>
<ul>
<li> M-x title-case-macro indicates execute the macro which is stored with that name.
</li>
</ul>
<p>To repeat the macro, just prepend the macro with C-u and count.</p>
<p>Type: C-u 3 M-x title-case-macro</p>
<ul>
<li> C-u N indicates N number of times
</li>
<li> M-x title-case-macro indicates execute the macro which is stored with that name.
</li>
</ul>
<p>So, now all your four lines are title cased, as shown below.</p>
<pre>
        * <b>V</b>irtualization technologies
        * <b>S</b>ed and awk tips/tricks
        * <b>E</b>macs tutorials
        * <b>B</b>ash scripting tutorial series
</pre>
<p>By default, emacs macro will not be available for further sessions.</p>
<h3>Saving the macro in .emacs for future session</h3>
<p>After you have named the macro,</p>
<ul>
<li> open the ~/.emacs file in another buffer ( from same session — do C-x C-f &amp; open ~/.emacs file )
</li>
<li> insert the macro by, Type: <b>M-x insert-kbd-macro</b>, which will ask you the name of macro to insert.
</li>
<li> Give the name with which you have saved already ( in this example it is title-case-macro ), which will insert some lisp code.
</li>
<li> Save, and exit. In all your future session you will be able to access this macro by M-x macroname.
</li>
</ul>
<h3>If you enjoyed this article, you might also like..</h3>
<p><center><br />
</center><br />

				</div>
</p></div>
</p>
<p><img src="http://www.taiwangeek.com/wp-content/uploads/2010/10/ade488d8cord-n-play-150x100.png" /></p>
<p>Read this article:<br />
<a  target="_blank" href="http://www.thegeekstuff.com/2010/07/emacs-macro-tutorial-how-to-record-and-play/" title="Emacs Macro Tutorial: How to Record and Play">Emacs Macro Tutorial: How to Record and Play</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-07/emacs-macro-tutorial-how-to-record-and-play.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[xampp+komodo] php code beautifier</title>
		<link>http://www.taiwangeek.com/2010-07/xamppkomodo-php-code-beautifier.html</link>
		<comments>http://www.taiwangeek.com/2010-07/xamppkomodo-php-code-beautifier.html#comments</comments>
		<pubDate>Tue, 20 Jul 2010 03:48:51 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[原創]]></category>
		<category><![CDATA[komodo]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/2010-07/xamppkomodo-php-code-beautifier.html</guid>
		<description><![CDATA[That&#8217;s very simple and easy. c:\xampp\php&#62;PEAR install PHP_Beautifier-beta After install PHP_Beautifier,you will find the c:\xampp\php\php_beautifier.bat And just Do as below pictures]]></description>
			<content:encoded><![CDATA[<p>That&#8217;s very simple and easy.
<pre class="brush:php">c:\xampp\php&gt;PEAR install PHP_Beautifier-beta</pre>
<p>After install PHP_Beautifier,you will find the </p>
<pre class="brush:php">c:\xampp\php\php_beautifier.bat</pre>
<p>And just Do as below pictures </p>
<p><a  href="http://www.taiwangeek.com/wp-content/uploads/2010/07/codesetting.gif" class="thickbox no_icon" rel="gallery-1295" title="code-setting"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="code-setting" border="0" alt="code-setting" src="http://www.taiwangeek.com/wp-content/uploads/2010/07/codesetting_thumb.gif" width="553" height="344" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-07/xamppkomodo-php-code-beautifier.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Awesome New Premium WordPress Plugins from CodeCanyon</title>
		<link>http://www.taiwangeek.com/2010-07/10-awesome-new-premium-wordpress-plugins-from-codecanyon.html</link>
		<comments>http://www.taiwangeek.com/2010-07/10-awesome-new-premium-wordpress-plugins-from-codecanyon.html#comments</comments>
		<pubDate>Tue, 06 Jul 2010 11:13:30 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Google Reader]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[memberships]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[paypal]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[search-engine]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[year]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/2010-07/10-awesome-new-premium-wordpress-plugins-from-codecanyon.html</guid>
		<description><![CDATA[ Shared by &#23567;&#33891; CodeCanyon一定有給他錢 As part of our massive CodeCanyon push this year, I’m pleased to announce that we’ve launched not one , but two awesome new categories. The new CSS category features everything from incredible pricing charts , to buttons , to entire frameworks ; while the WordPress plugins category is quickly on its way to becoming the premier location for purchasing premium plugins on the web. ]]></description>
			<content:encoded><![CDATA[<blockquote>
<p><img src="" /></p>
<p>See the original post:<br />
<a  target="_blank" href="http://feedproxy.google.com/~r/nettuts/~3/URWANuoq-j0/" title="10 Awesome New Premium WordPress Plugins from CodeCanyon">10 Awesome New Premium WordPress Plugins from CodeCanyon</a>
</p></blockquote>
<p><!--/content--></p>
<blockquote><p>Shared by  &#23567;&#33891;<br />
<br />
CodeCanyon一定有給他錢</p></blockquote>
<p>
As part of our massive <a  href="http://codecanyon.net">CodeCanyon</a> push this year, I’m pleased to announce that we’ve launched not <a  href="http://codecanyon.net/category/plugins">one</a>, but <a  href="http://codecanyon.net/category/css">two</a> awesome new categories. The new <a  href="http://codecanyon.net/category/css">CSS</a> category features everything from incredible <a  href="http://codecanyon.net/item/griddler-pricing-grid-i/109068">pricing charts</a>, to <a  href="http://codecanyon.net/item/css3-buttons/109193">buttons</a>, to entire <a  href="http://codecanyon.net/item/simple-css-framework-form-elements/109107">frameworks</a>; while the <a  href="http://codecanyon.net/category/plugins">WordPress plugins category</a> is quickly on its way to becoming the premier location for purchasing premium plugins on the web. In fact, I’m betting that we’ll be there by the end of the year!
</p>
<p>Today, I’d like to show you the first ten new premium WP plugins available on CodeCanyon. </p>
<p><span></span></p>
<h2> <span>1. </span><a  href="http://codecanyon.net/item/events-calendar-pro-wordpress-premium-plugin/109301">Events Calendar Pro</a> </h2>
<div><a  href="http://codecanyon.net/item/events-calendar-pro-wordpress-premium-plugin/109301"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/0a6c74aca7review.jpg.jpg" alt="Events calendar pro" /></a></div>
<blockquote>
<p>The Events Calendar Premium plugin for WordPress enables you to rapidly create and manage events using the post editor.  Features include Google Maps integration as well as default templates such as a calendar grid and event list for streamlined one click installation. Check out the <a  href="http://screenr.com/0PK">full screencast here</a>.</p>
</blockquote>
<h2> <span>2. </span><a  href="http://codecanyon.net/item/ddsliderwp-11-transitions-slide-manager-panel/109211">DDSlider WP</a> </h2>
<div><a  href="http://codecanyon.net/item/ddsliderwp-11-transitions-slide-manager-panel/109211"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/80194f6d2creview.jpg.jpg" alt="DDSlider WP" /></a></div>
<blockquote>
<p>DDSliderWP features EVERYTHING that our jQuery <a  href="http://codecanyon.net/item/ddslider-10-transitions-inline-content-support/104797">plugin </a>already offered PLUS a custom admin panel, with total management of slides.</p>
</blockquote>
<h2> <span>3. </span><a  href="http://codecanyon.net/item/jgallery/109241">jGallery</a> </h2>
<div><a  href="http://codecanyon.net/item/jgallery/109241"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/f219cfafbdreview.jpg.jpg" alt="jGallery" /></a></div>
<blockquote>
<p>This WordPress Gallery Plugin gives you a simple and extremely customizable way to create a gallery on any post or page. You have the option to use widgets or shortcodes to insert your custom gallery into your web site. As well, the look of your gallery is fully customizable through the WordPress admin interface.</p>
</blockquote>
<h2> <span>4. </span><a  href="http://codecanyon.net/item/twitter-widget-pro-wordpress-premium-plugin/109372">Twitter Widget Pro</a> </h2>
<div><a  href="http://codecanyon.net/item/twitter-widget-pro-wordpress-premium-plugin/109372"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/6ca940d045review.jpg.jpg" alt="Twitter Widget Pro" /></a></div>
<blockquote>
<p>If you own just one twitter plugin for WordPress, let it be this one! The only premium twitter plugin out right now – with support for multiple twitter users and includes a ton of premium options. This is the last Twitter plugin you’ll ever need! Check out the <a  href="http://screenr.com/FPK">full screencast here</a>.</p>
</blockquote>
<h2> <span>5. </span><a  href="http://codecanyon.net/item/wpmembership-plugin/109088">WP-Membership</a> </h2>
<div><a  href="http://codecanyon.net/item/wpmembership-plugin/109088"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/c015577561review.jpg.jpg" alt="WP-Membership" /></a></div>
<blockquote>
<p>This is a WordPress plugin that helps you sell your content; you only need to install the plugin, create a category for your private content, setup the prices of your memberships and your Paypal account. Don’t hesitate and purchase it today. </p>
<p>You can easily select the posts you want to sell, manage the memberships you acquire and is fully integrated with Paypal. All you have to do is activate the plugin, setup your memberships and your Paypal account.</p>
</blockquote>
<h2> <span>6. </span><a  href="http://codecanyon.net/item/owit-with-myows/109206">WordPress Owit</a> </h2>
<div><a  href="http://codecanyon.net/item/owit-with-myows/109206"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/31382731d2review.jpg.jpg" alt="WordPress Owit" /></a></div>
<blockquote>
<p>This plugin makes it possible for you to upload blog files, directly from the WordPress media manager to MyOws.</p>
</blockquote>
<h2> <span>7. </span><a  href="http://codecanyon.net/item/wp-auctions-auction-plugin-for-wordpress/109252">WP Auctions</a> </h2>
<div><a  href="http://codecanyon.net/item/wp-auctions-auction-plugin-for-wordpress/109252"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/44ca4eb883review.jpg.jpg" alt="WP Auctions" /></a></div>
<blockquote>
<p>WP Auctions is a plugin that enables you to host auctions on your self hosted WordPress powered blog or website.</p>
</blockquote>
<h2> <span>8. </span><a  href="http://codecanyon.net/item/all-tagged-up-automated-post-tagger/109188">All Tagged Up: Automated Post Tagging</a> </h2>
<div><a  href="http://codecanyon.net/item/all-tagged-up-automated-post-tagger/109188"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/4b8c8a8bb7review.jpg.jpg" alt="All Tagged Up: Automated Post Tagging" /></a></div>
<blockquote>
<p>Simplify your WordPress posting workflow with our automated WordPress post tagger!
</p>
<p>
Why stumble around trying to determine what keywords from your post(s) are best for getting some extra Search Engine Optimization; while you can let All Tagged Up do the work for you.</p>
</blockquote>
<h2> <span>9. </span><a  href="http://codecanyon.net/item/extended-google-analytics-for-wordpress/109653">Extended Google Analytics for WordPress</a> </h2>
<div><a  href="http://codecanyon.net/item/extended-google-analytics-for-wordpress/109653"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/62fd6b98ffreview.jpg.jpg" alt="Extended Google Analytics for WordPress" /></a></div>
<blockquote>
<p>It’s never been easier to add Google analytics and event tracking to your websites. This in combination with a campaing url generator tool makes a powerfull WordPress plugin to get the most out of Google Analytics.</p>
</blockquote>
<h2> <span>10. </span><a  href="http://codecanyon.net/item/wordpress-deposit-system/109253">WordPress Deposit System</a> </h2>
<div><a  href="http://codecanyon.net/item/wordpress-deposit-system/109253"><img src="http://www.taiwangeek.com/wp-content/uploads/2010/07/474a252d32review.jpg.jpg" alt="WordPress Deposit System" /></a></div>
<blockquote>
<p>The deposit system is similar to the one they use on ThemeForest (and other Envato sites). The system enables the users to deposit their money into their accounts, and lets the administrator to control all of the cash in his blog &#038; the settings of the system.</p>
</blockquote>
<hr />
<p>But there’s always room for more — and this is a category that will grow in leaps and bounds over the course of this year. If you’re a ninja WordPress dev, and want to start profiting from your hard work, be sure to <a  href="http://codecanyon.net/wiki/selling/author-selling/author-program/">become an author on CodeCanyon</a>, and get started! </p>
<div>
<a  href="http://feeds.feedburner.com/~ff/nettuts?a=URWANuoq-j0:9ADWrlaMMtE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nettuts?d=yIl2AUoC8zA" border="0" /></a> <a  href="http://feeds.feedburner.com/~ff/nettuts?a=URWANuoq-j0:9ADWrlaMMtE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nettuts?i=URWANuoq-j0:9ADWrlaMMtE:F7zBnMyn0Lo" border="0" /></a> <a  href="http://feeds.feedburner.com/~ff/nettuts?a=URWANuoq-j0:9ADWrlaMMtE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nettuts?i=URWANuoq-j0:9ADWrlaMMtE:V_sGLiPBpWU" border="0" /></a> <a  href="http://feeds.feedburner.com/~ff/nettuts?a=URWANuoq-j0:9ADWrlaMMtE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/nettuts?i=URWANuoq-j0:9ADWrlaMMtE:gIN9vFwOqvQ" border="0" /></a> <a  href="http://feeds.feedburner.com/~ff/nettuts?a=URWANuoq-j0:9ADWrlaMMtE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/nettuts?d=TzevzKxY174" border="0" /></a>
</div>
<p><img src="http://feeds.feedburner.com/~r/nettuts/~4/URWANuoq-j0" height="1" width="1" /><br />
<!--/content--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-07/10-awesome-new-premium-wordpress-plugins-from-codecanyon.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Art And Science Of The Email Signature</title>
		<link>http://www.taiwangeek.com/2010-06/the-art-and-science-of-the-email-signature.html</link>
		<comments>http://www.taiwangeek.com/2010-06/the-art-and-science-of-the-email-signature.html#comments</comments>
		<pubDate>Mon, 28 Jun 2010 21:57:30 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Headline]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/the-art-and-science-of-the-email-signature.html</guid>
		<description><![CDATA[Email signatures are so easy to do well, that it’s really a shame how often they’re done poorly. Many people want their signature to reflect their personality, provide pertinent information... <a class="meta-more" href="http://www.taiwangeek.com/2010-06/the-art-and-science-of-the-email-signature.html">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Email signatures are so easy to do well, that it’s really a<br />
shame how often they’re done poorly. Many people want their<br />
signature to reflect their personality, provide pertinent<br />
information and more, but they can easily go overboard. Why<br />
are email signatures important? They may be boring and the<br />
last item on your list of things to get right, but they affect the<br />
tone of every email you write.</p>
<p>Email signatures contain alternative contact details,<br />
pertinent job titles and company names, which help the recipient<br />
get in touch when emails are not responded to. Sometimes, they<br />
give the recipient an idea of who wrote the email in case it<br />
has been a while since they have been in touch. They are also<br />
professional: like a letterhead, they show that you run a business<br />
(in some countries, you’re required to do so). Here are some<br />
<strong>tips on how to create a tasteful signature that<br />
works</strong>.</p>
<p>[Offtopic: by the way, did you know that there is a Smashing<br />
eBook Series? Book #2 is <a  href="https://shop.smashingmagazine.com/smashingbook-dispatcher.php?d=smashing-ebook-successful-freelancing"><br />
Successful Freelancing for Web Designers</a>, 260 pages for just<br />
$9,90.]</p>
<h3>Be Concise</h3>
<p>First and foremost, the sender’s header (the “From” field)<br />
should have a name, and you should use a company email address if<br />
you can. If someone sees <a  href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:stevies747@hotmail.com"><br />
stevies747@hotmail.com</a>, they’ll suspect it’s spam. If the<br />
sender’s header reads, “Steve Stevenson – Mister Stevenson Design<br />
Company” &lt;<a  href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:steve@misterstevenson.com">steve@misterstevenson.com</a>&gt;,<br />
they’ll know it’s a professional email from Steve, their trusted<br />
designer.</p>
<p>Start by making your website a link. Many email clients convert<br />
email addresses and websites into links automatically, but not<br />
always. When you’re creating the HTML for an email, make sure the<br />
link will appear by adding writing it in HTML. And instead of<br />
linking text like “My website,” type out the URL, which will be<br />
useful for those who want to copy and paste the address.</p>
<p>An email signature shouldn’t double the email’s length, so<br />
<strong>make it as short as possible</strong> (three lines is<br />
usually enough). Don’t get into your life story here. The<br />
purpose of a signature is to let them see who you are and how to<br />
get in touch with you.</p>
<h4>Make Sure to Include…</h4>
<ul>
<li>Your name,</li>
<li>Your company and position,</li>
<li>How to get in touch with you.</li>
</ul>
<p>No need to include 10 different ways to get in touch with you.<br />
As in website design, less is more; and then they’ll know which way<br />
<em>you</em> prefer to be contacted. <strong>Go to two or three<br />
lines, with a maximum of 72 character per line</strong> (many email<br />
applications have a maximum width of 80 characters, so limit the<br />
length to avoid unsightly wrapping). An optional fourth line could<br />
be your company address, but use caution if you work from home.</p>
<pre>-- <strong>Steve Stevenson, Web Designer</strong> <a  title="Mister Stevenson's website" href="http://www.misterstevenson.com">www.misterstevenson.com</a> | <a  title="email Steve Stevenson" href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:steve@misterstevenson.com">steve@misterstevenson.com</a>
</pre>
<h4>Short and Concise, but Check the Rules</h4>
<p>In some European countries, laws dictate what items you must put<br />
in your email signature if you are a registered company. For<br />
example, UK law requires private and public limited companies to<br />
include the following:</p>
<ul>
<li>Company number,</li>
<li>Address of registration,</li>
<li>VAT number, if there is one.</li>
</ul>
<p>You can be fined for not including this information on all<br />
electronic correspondence and on your website and stationary. Many<br />
freelancers and small businesses have ignored these rules since<br />
their inception, risking a fine. For more information on UK rules,<br />
<a  title="Companies House rules on stationary" href="http://www.companieshouse.gov.uk/promotional/busStationery.shtml">go<br />
here</a>. Do some research to find out what rules apply in your<br />
country.</p>
<pre>-- <strong>Steve Stevenson, Web Designer</strong> <a  title="Mister Stevenson's website" href="http://www.misterstevenson.com">www.misterstevenson.com</a> | <a  title="email Steve Stevenson" href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:steve@misterstevenson.com">steve@misterstevenson.com</a> 55 Main Street, London, UK, EC2A 1RE Company number: 12345678
</pre>
<h4>Don’t Include…</h4>
<ul>
<li>Personal Twitter, IM or Skype details;</li>
<li>Your home phone number or address (unless you want to be called<br />
by international clients early in the morning);</li>
<li>The URL of your personal website;</li>
<li>Random quotes at the bottom;</li>
<li>Your entire skill set, CV and lifetime achievements in point<br />
form.</li>
</ul>
<p>Random quotes are fun for friends, but you risk offending<br />
business associates with whom you don’t have a personal<br />
relationship. Unless you want clients contacting you while you’re<br />
watching Lost, don’t share your home details far and wide. Also,<br />
don’t share your personal contact information with your corporate<br />
partners. They certainly won’t be interested in it, and you may not<br />
want them to know certain details about you. However, mentioning<br />
your corporate Twitter account or alternative means of contact in<br />
your signature might be useful, in case your correspondent is not<br />
able to get in touch with you by regular email.</p>
<table border="0" width="610">
<tbody>
<tr>
<td width="95"><img class="size-full wp-image-23551" src="/Images/google-reader-share-duck_stand_md_wht.gif" alt="Duck Stand Md Wht in The Art And Science Of The Email Signature" width="95" height="100" align="top" /></td>
<td width="515"><strong><span class="c1">Steve Stevenson, Web<br />
Designer</span></strong><span class="c2"><br />
</span><br />
<strong>web:</strong> <a  title="Mister Stevenson's website" href="http://www.misterstevenson.com">www.misterstevenson.com</a><br />
<strong>blog:</strong> <a  title="Celebrities need help" href="http://blogspot.celebritiesneedhelp.com">blogspot.celebritiesneedhelp.com<br />
</a> <strong>email:</strong> <a  title="email Steve Stevenson" href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:steve@misterstevenson.com"><br />
steve@misterstevenson.com</a></td>
</tr>
<tr>
<td></td>
<td><strong>home:</strong> 613.555.2654<br />
<strong>home (wife):</strong> 613.555.3369<br />
<strong>work:</strong> 613.555.9876<br />
<strong>cell:</strong> 613.555.1234</p>
<p>55 Drury Lane<br />
Apartment 22<br />
Ottawa, Ontario<br />
Canada<br />
<strong><br />
twitter:</strong> @stevie_liverpool_fan<br />
<strong>skype</strong>: stevie_the_man<br />
<strong>messenger:</strong> stevie_mrstevenson<br />
<strong><br />
I specialize in:<br />
Web design<br />
Graphic design<br />
Logo design<br />
Front-end development<br />
UI design<br />
</strong> <em><strong><br />
“Flying may not be all plain sailing, but the fun of it is<br />
worth the price.”</strong></em> -Amelia Aerheart</td>
<td><strong><br />
</strong></td>
</tr>
</tbody>
</table>
<p>Don’t do this.</p>
<h3>Images And Logos</h3>
<p>Let’s get this out of the way now: <strong>your entire signature<br />
shouldn’t be an image</strong>. Sure, it will look exactly how you<br />
want, but it is completely impractical. Not only does an image<br />
increase the email’s file size, but it will likely be blocked<br />
before being opened. And how does someone copy information from an<br />
image?</p>
<div>
<dl>
<dt><img class="c3" src="/Images/google-reader-share-all_image.jpg" alt="All Image in The Art And Science Of The Email Signature" width="500" height="120" /></dt>
<dd>This signature is too big at 20 KB and impossible to<br />
copy.</dd>
</dl>
</div>
<p>Any images should be used with care and attention. If you do use<br />
one, make it small in both dimensions and size, and make it fit in<br />
aesthetically with the rest of the signature. 50 x 50 pixels should<br />
be plenty big for any logo. If you want to be taken seriously as a<br />
business person, do <em>not</em> make it an animated picture,<br />
dancing dog or shooting rainbow!</p>
<p>Most email clients store images as attachments or block them by<br />
default. So, if you present your signature as an image, your<br />
correspondents will have a hard time guessing when you’ve sent a<br />
genuine attachment.</p>
<p>The best way to include an image is to host it on a server<br />
somewhere and then use the absolute URL to insert the logo. For<br />
example, upload the logo to<br />
<code>http://www.example.com/uploads/logo.gif</code>. And then, in<br />
your email signature’s HTML, insert the image like so:</p>
<pre class="brush: html">&lt;img src="http://www.example.com/uploads/logo.gif" width="300" height="250" alt="example's logo" /&gt;
</pre>
<h3>Don’t Be A Fancy Pants</h3>
<h4>Use vCards With Caution</h4>
<p>While vCards are a great, convenient way to share contact<br />
information, in emails they add bytes and appear as attachments. It<br />
is often said that you shouldn’t use a vCard for your email<br />
signature, because as helpful as it might be the first time you<br />
correspond with someone, receiving it every time after that gets<br />
annoying. Besides, the average email user won’t know what it is.<br />
Look at the example below. Would an average user know what that<br />
is?</p>
<pre>--- <strong>Steve Stevenson, Web Designer</strong> <a  title="Mister Stevenson's website" href="http://www.misterstevenson.com">www.misterstevenson.com</a> | <a  title="email Steve Stevenson" href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:steve@misterstevenson.com">steve@misterstevenson.com</a> <img class="alignnone size-full wp-image-23543" src="/Images/google-reader-share-vcard.png" alt="Vcard in The Art And Science Of The Email Signature" width="162" height="52" />
</pre>
<p>If you do want to provide a vCard, just include a link to a<br />
remote copy.</p>
<h4>What About Confidentiality Clauses?</h4>
<p>If your emails include confidential information, you may need to<br />
include a non-disclosure agreement to prevent information leaks.<br />
However, good practice is never to send sensitive information as<br />
plain text in emails because the information could be extracted by<br />
third parties or forwarded by recipients to other people. Thus,<br />
including a non-disclosure agreement doesn’t make much sense if you<br />
do not send sensitive information anyway.</p>
<p>Keep in mind, too, that the longer a confidentiality clause is,<br />
the more unlikely someone will actually read it. Again, check your<br />
country’s privacy laws. Some big companies require a disclosure<br />
with every email, but if you’re at a small company or are a<br />
freelancer and don’t really require it, then don’t put it in. The<br />
length of such clauses can be annoying, especially in short<br />
emails.</p>
<pre>--- Warm Regards &amp; Stay Creative! Aidan Huang (Editor) ------------------------------------------- Onextrapixel Showcasing Web Treats Without Hitch web . <a  href="http://www.onextrapixel.com">http://www.onextrapixel.com</a> twi . <a  href="http://twitter.com/onextrapixel">http://twitter.com/onextrapixel</a> --------------------------------------------------------------------------------- This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the sender. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this email. Please notify the sender immediately by email if you have received this email by mistake and delete this email from your system. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited.
</pre>
<pre>-- This email and any files transmitted with it are confidential. If you have received this email in error please notify the sender and then delete it immediately. Please note that any views or opinions presented in this email are solely those of the author and do not necessarily represent those of Company. The recipient should check this email and any attachments for the presence of viruses. Company accepts no liability for any damage caused by any virus transmitted by this email. Company may regularly and randomly monitor outgoing and incoming emails (including the content of them) and other telecommunications on its email and telecommunications systems. By replying to this email you give your consent to such monitoring. ***** Save resources: think before you print.
</pre>
<h4>Don’t Be Afraid to Show Some Personality</h4>
<p>Although your email signature should be concise and memorable,<br />
it doesn’t have to be boring. Feel free to make your email<br />
signature stand out by polishing it with your creative design ideas<br />
or your personal touch. Using a warm greeting, adding a cheeky key<br />
as Dan Rubin does or encouraging people to “stalk” you as Paddy<br />
Donnelly does, all show personality behind simple text.</p>
<p>The key to a simple, memorable and beautiful email signature<br />
lies in balancing personal data and your contact details. In fact,<br />
some designers have quite original email signatures; most of the<br />
time, simple ASCII is enough.</p>
<pre>-- h: <a  href="http://danielrubin.org">http://danielrubin.org</a> w: <a  href="http://sidebarcreative.com">http://sidebarcreative.com</a> b: <a  href="http://superfluousbanter.org">http://superfluousbanter.org</a> m: +1 234 567 8901 i: superfluouschat k: h = home, w = work, b = blog, m = mobile, i = aim, k = key
</pre>
<pre>Paddy -- The Site: <a  href="http://iampaddy.com/">http://iampaddy.com</a> Stalk Me: <a  href="http://twitter.com/paddydonnelly">http://twitter.com/paddydonnelly</a>
</pre>
<pre>-- With optimism, Dmitry Belitsky <a  href="http://belitsky.info/">http://belitsky.info</a>
</pre>
<pre>/////////////////////////////////////////////////////////////////// /// Matthias Kretschmann     ///   krema@xxxxxxxx.xx            /// /// freelance designer &amp;     ///   www.kremalicious.com         /// /// photographer             ///   www.matthiaskretschmann.com  /// /////////////////////////////////////////////////////////////////// /// media studies / communication science &amp; art history         /// /// MLU Halle-Wittenberg                                        /// ///////////////////////////////////////////////////////////////////
</pre>
<pre>-- With greetings from Freiburg, Germany, Vitaly Friedman (editor-in-chief) ------------------------------------------------- Smashing Magazine http://www.smashingmagazine.com - http://www.twitter.com/smashingmag online magazine for designers and developers
</pre>
<h4>HTML?</h4>
<p>If you can, stay away from HTML formatting. Every Web designer<br />
knows the pain of HTML newsletters, and while HTML is supported for<br />
email signatures, you’ll likely have problems with images and<br />
divider lines in different email clients. Some nice ASCII<br />
formatting may work in some cases.</p>
<pre>-- carole guevin . editor //// design + digital culture magazine //// <a  href="http://netdiver.net/">http://netdiver.net</a>
</pre>
<pre>-- Min, Tran Dinh Chief Creative Designer - Frexy Studio Website: http://frexy.com | Blog: http://min.frexy.com | Email: info@frexy.com Cellphone: (84) 012 345 678
</pre>
<pre>- -- Rene Schmidt -- Berater für Web-Entwicklung &amp; eCommerce, Linux-Webserver-Systemadministration &amp; Web-Programmierung Vordamm 46, 21640 Horneburg; <a  href="http://www.reneschmidt.de/">http://www.reneschmidt.de/</a> Tel: 0123.456.7.890; Skype: reneATreneschmidt.de Steuernummer 43/141/09180; USt-IdNr 219014862 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAktit8sACgkQucSanG9drm2ZYACggIeQST/C226LIsd/czEmrnrR TjUAniVPXI2lkA68fy3n+nUawdAE1nJ/ =+vZR -----END PGP SIGNATURE-----
</pre>
<pre>--- Geoff Teehan Teehan+Lax Web Platforms  |  Digital Campaigns  |  Mobile Applications  |  Strategic Consulting T: 416 123 4567 x 890  |  teehanlax.com  |  twitter.com/@teehanlax
</pre>
<pre>---------------------------------------- Dmitry Dragilev ZURB | Marketing Lead getstarted@zurb.com <a  href="http://www.zurb.com">http://www.zurb.com</a> ------------------------------------------ Follow our blog at: <a  href="http://www.zurb.com/blog">http://www.zurb.com/blog</a> Follow us on Twitter: @zurb <a  href="http://twitter.com/zurb">http://twitter.com/zurb</a> Check out Notable - Easiest way for teams to provide feedback on websites. <a  href="http://www.notableapp.com">http://www.notableapp.com</a> ------------------------------------------
</pre>
<pre>______________________________________________ Website: <a  href="http://www.webdesignerdepot.com">www.webdesignerdepot.com</a> Twitter: <a  href="http://www.twitter.com/DesignerDepot">www.twitter.com/DesignerDepot</a>
</pre>
<pre>Regards, Matt Ward Echo Enduring Media Web - <a  href="http://www.echoenduring.com">http://www.echoenduring.com</a> Blog - <a  href="http://blog.echoenduring.com">http://blog.echoenduring.com</a> Twitter - @echoenduring - Follow me!
</pre>
<pre>-- Dan Rubin Sidebar Creative { Director of Training &amp; User Experience } mobile: +1 234 567 8901 <a  href="http://sidebarcreative.com">http://sidebarcreative.com</a>
</pre>
<pre>-- David Leggett Tutorial9 Founder 555.012.34567 @theleggett <a  href="http://Tutorial9.net/">Tutorial9.net</a>
</pre>
<pre>Gareth Hardy Graphic Designer | Down With Design <a  href="http://www.downwithdesign.com/">www.downwithdesign.com</a> <a  href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:gareth@downwithdesign.com">gareth@downwithdesign.com</a> +44 (0) 0123 456 789
</pre>
<pre>Grant Friedman <a  href="http://www.colorburned.com/">www.colorburned.com</a> Follow me on Twitter! <a  href="http://twitter.com/colorburned">http://twitter.com/colorburned</a> ----------------------------------------
</pre>
<pre>Many thanks, Yaili. <a  href="http://yaili.com/">yaili.com</a> | <a  href="http://webdesignernotebook.com/">webdesignernotebook.com</a> | <a  href="http://londonchronicles.com/">londonchronicles.com</a> +44 (0) 1234 567890 skype: inayaili
</pre>
<pre>Thanks! Jonathan Cutrell, Editor <a  href="http://FuelYourInterface.com/">FuelYourInterface.com</a> | @FuelInterface | @jCutrell
</pre>
<pre>-- All the best, Rob Bowen Copywriter | Designer | Creative Consultant Co-Founder/Editor @ Arbenting &amp; Dead Wings Designs http://arbent.net/blog http://deadwingsdesigns.com
</pre>
<pre>Arseny -- Please consider the environment before printing this email. --- Arseny Vesnin <a  href="http://designcollector.net">http://designcollector.net</a> Calendar: <a  href="http://2010.designcollector.net">http://2010.designcollector.net</a> Profile: <a  href="http://designhub.ru">http://designhub.ru</a> Twitter: <a  href="http://twitter.com/designcollector">http://twitter.com/designcollector</a> Flickr: <a  href="http://www.flickr.com/groups/designcollector-6">http://www.flickr.com/groups/designcollector-6</a> Vimeo: <a  href="http://vimeo.com/channels/designcollector">http://vimeo.com/channels/designcollector</a> Facebook: <a  href="http://www.facebook.com/designcollector">http://www.facebook.com/designcollector</a>
</pre>
<pre>Warm regards, Dipti Kankaliya { dipti.kankaliya@studiomarch.com } Studio March Private Limited 12 Moledina Road Camp Pune 1 India Phone: +91-20-26334002 { http://www.studiomarch.com } MarchCast – The Studio March blog { http://www.studiomarch.com/mc } -- This is an official email from Studio March Private Limited and is protected by a disclaimer. If you are not the intended recipient of this email, please visit: http://www.studiomarch.com/legal/email.
</pre>
<p>Of course, if you’re really keen to use HTML, <strong>keep it<br />
simple</strong>:</p>
<ul>
<li>Make sure it still looks good in plain text.</li>
<li>Use black and standard-sized fonts, and stay away from big,<br />
tiny and rainbow-colored fonts.</li>
<li>Don’t use CSS. Inline HTML formatting is universally<br />
accepted.</li>
<li>Use common Web fonts.</li>
<li>Including a logo? Make sure the signature looks nice even when<br />
the logo doesn’t load or is blocked.</li>
<li>Check how it looks when forwarded. Do all the lines wrap<br />
correctly?</li>
<li>You may want to load your company image as your gravatar from<br />
Gravatar.com as Joost de Valk does.</li>
<li>Feel free to experiemnt with your e-mail signature: Jan Diblík<br />
uses a signature with dynamicaly changed promo image.</li>
</ul>
<p><span class="c6">–</span></p>
<table border="0" width="579">
<tbody>
<tr>
<td width="55"><img class="alignnone size-full wp-image-23545" src="/Images/google-reader-share-misterstevenson1.jpg" alt="Misterstevenson1 in The Art And Science Of The Email Signature" width="50" height="36" /></td>
<td width="513"><strong>Steve Stevenson, Web Designer<br />
<span class="c6"><a  title="Mister Stevenson's website" href="http://www.misterstevenson.com">www.misterstevenson.com</a> |<br />
<a  title="email Steve Stevenson" href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:steve@misterstevenson.com"><br />
steve@misterstevenson.com</a></span></strong></td>
</tr>
</tbody>
</table>
<p><img class="alignnone size-full wp-image-24587" src="/Images/google-reader-share-joost.gif" alt="Joost in The Art And Science Of The Email Signature" width="373" height="172" /></p>
<p><img src="/Images/google-reader-share-invert.jpg" alt="Invert in The Art And Science Of The Email Signature" width="259" height="592" /></p>
<p><img class="alignnone size-full wp-image-24591" src="/Images/google-reader-share-matt2.gif" alt="Matt2 in The Art And Science Of The Email Signature" width="286" height="278" /></p>
<p><img class="alignnone size-full wp-image-24590" src="/Images/google-reader-share-maggie2.gif" alt="Maggie2 in The Art And Science Of The Email Signature" width="510" height="243" /></p>
<p><img class="alignnone size-full wp-image-24589" src="/Images/google-reader-share-lukew2.gif" alt="Lukew2 in The Art And Science Of The Email Signature" width="439" height="137" /></p>
<p><img src="/Images/google-reader-share-email-sig-adelle.png" alt="Email-sig-adelle in The Art And Science Of The Email Signature" width="620" height="259" /></p>
<p><img class="alignnone size-full wp-image-24588" src="/Images/google-reader-share-fubiz2.gif" alt="Fubiz2 in The Art And Science Of The Email Signature" width="801" height="179" /></p>
<p><img class="alignnone size-full wp-image-24587" src="/Images/google-reader-share-jad2.gif" alt="Jad2 in The Art And Science Of The Email Signature" width="529" height="149" /></p>
<p><img class="alignnone size-full wp-image-24587" src="/Images/google-reader-share-caroline.gif" alt="Caroline in The Art And Science Of The Email Signature" width="235" height="328" /></p>
<p><img class="alignnone size-full wp-image-24587" src="/Images/google-reader-share-chris.gif" alt="Chris in The Art And Science Of The Email Signature" width="719" height="321" /></p>
<p><img class="alignnone size-full wp-image-24587" src="/Images/google-reader-share-martin.gif" alt="Martin in The Art And Science Of The Email Signature" width="502" height="475" /></p>
<p><img class="alignnone size-full wp-image-24587" src="/Images/google-reader-share-nicola.jpg" alt="Nicola in The Art And Science Of The Email Signature" width="713" height="316" /></p>
<h3>Separate Signature From Content</h3>
<p>Your signature should clearly be a separate entity. Wikipedia<br />
explains the correct way to separate the signature:</p>
<p><em>“The formatting of the sig block is prescribed somewhat more<br />
firmly: it should be displayed as plain text in a fixed-width font<br />
(no HTML, images, or other rich text), and must be delimited from<br />
the body of the message by a single line consisting of exactly two<br />
hyphens, followed by a space, followed by the end of line (i.e., “–<br />
\n”). This … allows software to automatically mark or remove the<br />
sig block as the receiver desires.”</em></p>
<p>There are other less standard ways to separate your signature.<br />
While not automatic formatting, a line of —–, ======, or _______ or<br />
even just a few spaces will visually separate your signature from<br />
your email.</p>
<pre>-- ---------------------------------- Dan Oliver (editor) .net magazine (<a  href="http://www.netmag.co.uk/">www.netmag.co.uk</a>) ---------------------------------- Twitter: danoliver Email: <a  href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/mailto:dan.oliver@futurenet.com">dan.oliver@futurenet.com</a> Phone: 01234 56789 ---------------------------------- Address for deliveries: .net, Units 1 &amp; 2 Cottrell Court, Monmouth Place, Bath, BA1 2NP ----------------------------------
</pre>
<pre>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Elliot Jay Stocks Elliot Jay Stocks Design Ltd. Registered in England &amp; Wales #1234567 <a  href="http://elliotjaystocks.com/">http://elliotjaystocks.com</a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
</pre>
<pre>### Cheers, -Dan
</pre>
<pre>Vennlig hilsen Lars Bæk Byråleder &amp; Tekstforfatter ................................................... JØSS! Storgata 15, 2408 Elverum Mob (+47) 01 23 45 67 xxxx@joss.as | www.joss.as
</pre>
<pre>---------------------------------------------- Information Architects Inc. Tokyo Zurich Oliver Reichenstein, Founder <a  href="http://informationarchitects.jp/">http://informationarchitects.jp</a> <a  href="http://webtrendmap.com/">http://webtrendmap.com</a> <a  href="http://twitter.com/iA">http://twitter.com/iA</a> ----------------------------------------------
</pre>
<h3>Wrestling With Your Email Client</h3>
<p><img class="c3" src="/Images/google-reader-share-tug_of_war1.jpg" alt="Tug Of War1 in The Art And Science Of The Email Signature" width="550" height="314" /></p>
<p>Offering general advice on signatures is easy, sure. But anyone<br />
who has tried to implement automatic signatures in Outlook, Gmail<br />
or Yahoo knows it’s not always that simple. Here are some resources<br />
to help you get yours right every time.</p>
<p><strong>Outlook</strong><br />
Changing Outlook’s signature is a real pain, but <a  title="Change your signature in Outlook" href="http://office.microsoft.com/en-us/help/HP052761261033.aspx">here</a>’s a<br />
guide that teaches you a few things. If you use Outlook 2003,<br />
<a  title="custom signatures for outlook 2003" href="http://office.microsoft.com/en-us/outlook/HA011246501033.aspx">here</a>’s another<br />
tutorial on custom signatures.</p>
<p><strong>Entourage</strong><br />
Microsoft’s mail for mac works differently. <a  title="Set up email signature on entourage" href="http://www.ehow.com/how_4493731_set-up-email-signature-entourage.html"><br />
Here’s</a> a tutorial on how to set it up.</p>
<p><strong>Gmail</strong><br />
Want just one basic signature? <a  title="create a gmail signature" href="http://www.basiccomputerinformation.ca/create-email-signature-gmail/"><br />
Here</a>’s how to change the text. You’d think Google would<br />
allow you multiple signatures, links and a bit of formatting. If<br />
you’re looking for something a little more designed or wish to<br />
choose between multiple signatures, <a  title="5 ways to have multiple=" href="http://www.makeuseof.com/tag/5-ways-to-create-custom-multiple-signatures-in-gmail/"><br />
here</a> are five ways to do it in Firefox.</p>
<p><strong>Hotmail</strong><br />
Tips on custom images and more for Hotmail (Oh my!) can be found<br />
<a  title="Pimp out your hotmail signature" href="http://www.pcmech.com/article/use-custom-images-in-your-hotmail-email-signature-how-to/"><br />
here</a>. If you use Windows Live, <a  title="Create a custom email signature with windows live" href="http://windowslive.com/Connect/Post/4039c936-869f-470e-afa0-fe701cf01bec"><br />
here</a> is a tutorial on adding images and HTML. The detail is<br />
helpful, even if the images are <em>awful</em>.</p>
<p><strong>Yahoo</strong><br />
After a bit of research, I found that Yahoo used to support HTML<br />
signatures, but no longer. <a  title="change your yahoo signature" href="http://help.yahoo.com/l/us/yahoo/mail/yahoomail/basics/basics-66.html"><br />
Here</a>’s how to change your signature using rich text.</p>
<p><strong>Apple Mail</strong><br />
<a  title="How to make an email signature in apple mail" href="http://theappleblog.com/2009/08/07/how-to-getting-more-from-mail-with-html-signatures/"><br />
Here</a> is a pretty decent tutorial, with some inline HTML for<br />
formatting. It then explains how to implement it in the<br />
application. You even get some hints on how it will look on the<br />
iPhone.</p>
<p><strong>Palm Pre</strong><br />
Learn how to customize your message on your Palm Pre <a  title="Add a signature to your palm pre" href="http://www.technipages.com/palm-pre-add-email-signature.html">here</a>.</p>
<p><strong>iPhone</strong><br />
Customize your “Sent from my iPhone” message <a  title="changing signature from your iphone" href="http://www.tuaw.com/2007/07/20/iphone-101-updating-your-sent-from-my-iphone-email-signature/">here</a>.</p>
<p><strong>BlackBerry</strong><br />
Some information on how to change your message on BlackBerry<br />
smartphones <a  title="Changing your signature on a blackberry smartphone" href="http://docs.blackberry.com/en/smartphone_users/deliverables/9840/Change_a_signature_using_device_app_664558_11.jsp">here</a>.</p>
<h3>Resources</h3>
<ul>
<li><a  title="The 4 Personalities of Poor Email Signatures" href="http://www.sitepoint.com/blogs/2009/09/18/personalities-of-poor-email-signatures/"><br />
The 4 Personalities of Poor Email Signatures</a></li>
<li><a  title="20 tips for Creating an Effective Email Signature" href="http://www.sitepoint.com/blogs/2009/09/18/creating-an-effective-email-signature/"><br />
20 Tips for Creating an Effective Email Signature</a></li>
<li><a  title="Wikipedia-Signature block" href="http://en.wikipedia.org/wiki/Signature_block">About the Signature<br />
Block on Wikipedia</a></li>
<li><a  title="Email Signature Etiquette" href="http://www.hanselman.com/blog/EmailSignatureEtiquetteTooMuchFlair.aspx"><br />
Email Signature Etiquette</a></li>
</ul>
<h3>Related Posts</h3>
<p>You may be interested in the following related posts:</p>
<ul>
<li><a  href="http://www.smashingmagazine.com/2009/04/01/10-handy-tips-for-web-design-cvs-and-resumes/"><br />
How To Create A Great Web Design CV and Résumé?</a></li>
<li><a  href="http://www.smashingmagazine.com/2009/05/20/effective-business-card-design-better-than-a-plain-ol-business-card/"><br />
Business Card Design: Better Than A Plain Ol’ Business<br />
Card</a></li>
<li><a  href="http://www.smashingmagazine.com/2009/11/05/invoice-like-a-pro/">Invoice<br />
Like A Pro: Examples and Best Practices</a></li>
</ul>
<p><em>(al)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-06/the-art-and-science-of-the-email-signature.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>40 Useful jQuery Techniques and Plugins</title>
		<link>http://www.taiwangeek.com/2010-06/40-useful-jquery-techniques-and-plugins.html</link>
		<comments>http://www.taiwangeek.com/2010-06/40-useful-jquery-techniques-and-plugins.html#comments</comments>
		<pubDate>Tue, 22 Jun 2010 07:48:17 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Headline]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/40-useful-jquery-techniques-and-plugins.html</guid>
		<description><![CDATA[Over the last year, Smashing Magazine has evolved. We’ve been publishing fewer lists and more in-depth articles about design and Web development. We have invited professionals and high-profile developers to... <a class="meta-more" href="http://www.taiwangeek.com/2010-06/40-useful-jquery-techniques-and-plugins.html">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over the last year, Smashing Magazine has evolved. We’ve been<br />
publishing fewer lists and more in-depth articles about design and<br />
Web development. We have invited professionals and high-profile<br />
developers to write for us. We’ve been investing more resources in<br />
the quality and relevance of our articles. We’ve also explored new<br />
formats; and on weekends we’ve been publishing more inspirational<br />
pieces, leaving the in-depth articles to weekdays.</p>
<p>We’ve tried our best to fuel the growing appetite of our readers<br />
for more advanced articles, but recently we’ve been receiving more<br />
requests for carefully selected, useful round-ups. We are not big<br />
fans of lists either, but the format is useful and — if the<br />
resources are relevant — can be extremely helpful. Therefore, we’ve<br />
decided to add a couple of round-ups per month as a bonus to our<br />
regular articles. Instead of replacing the main articles, we will<br />
add round-ups on top of our regular schedule. If you don’t like<br />
round-ups or find them inappropriate, please feel free to skip<br />
them. How does this work for you?</p>
<p>In this post, we present <strong>40 useful but obscure jQuery<br />
plug-ins</strong> that will hopefully help you improve the user<br />
experience on your websites. We look forward to your ideas and<br />
suggestions in the comments to this post.</p>
<p>[Offtopic: by the way, have you ever visited Smashing Magazine's<br />
<a  href="http://creatives.commindo-media.de/www/delivery/ck.php?oaparams=2__bannerid=1248__zoneid=0__cb=0fc35035eb__oadest=http%3A%2F%2Fwww.smashingmagazine.com%2Ftagcloud%2F"><br />
List of tags</a>? There might be something interesting for<br />
you.]</p>
<h3>Tips, Hints, Navigation</h3>
<p><a  href="http://code.drewwilson.com/entry/tiptip-jquery-plugin">TipTip<br />
jQuery Plugin</a><br />
TipTip detects the edges of the browser window and will make sure<br />
the tooltip stays within the current window size. As a result the<br />
tooltip will adjust itself to be displayed above, below, to the<br />
left or to the right of the element with TipTip applied to it,<br />
depending on what is necessary to stay within the browser window.<br />
TipTip is a very lightweight and intelligent custom tooltip jQuery<br />
plugin. It uses ZERO images and is completely customizable via<br />
CSS.</p>
<p class="showcase"><a  href="http://code.drewwilson.com/entry/tiptip-jquery-plugin"><img src="/Images/google-reader-share-JS-00.jpg" width="480" height="300" alt="JS-00 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://tutorialzine.com/2010/04/slideout-context-tips-jquery-css3/"><br />
Contextual Slideout Tips With jQuery &amp; CSS3</a><br />
A set of contextual slideout tips with jQuery &amp; CSS3, which are<br />
ideal for product pages and online tours.</p>
<p class="showcase"><a  href="http://tutorialzine.com/2010/04/slideout-context-tips-jquery-css3/"><br />
<img src="/Images/google-reader-share-js-t1.jpg" width="480" height="300" alt="Js-t1 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://blog.egorkhmelev.com/2009/11/jquery-slider-safari-style/">jQuery<br />
Slider plugin (Safari&nbsp;style)</a><br />
jQuery Slider is easy to use and multifunctional jQuery plugin.</p>
<p class="showcase"><a  href="http://blog.egorkhmelev.com/2009/11/jquery-slider-safari-style/"><img src="/Images/google-reader-share-JS-52.jpg" width="480" height="300" alt="JS-52 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://boedesign.com/blog/2009/10/22/jsquares-for-jquery/">jSquares</a></p>
<p>jSquares is a jQuery plugin that pops up an image and a description<br />
in an overlay on hover. It is basically identical to the image grid<br />
found on <a  href="http://www.ted.com">www.ted.com</a>. Works like a<br />
charm in IE6+, FF 3+, Safari 3+ and Opera 10.</p>
<p class="showcase"><a  href="http://boedesign.com/blog/2009/10/22/jsquares-for-jquery/"><img src="/Images/google-reader-share-js-x1.jpg" width="480" height="300" alt="Js-x1 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://labs.engageinteractive.co.uk/nav-o-matic/">Nav-o-Matic</a></p>
<p>Single sprite navigation is great, but we all know it can get a<br />
little bit tedious. All that measuring of pixel perfect photoshop<br />
slices, careful coding of your CSS and subsequent calculator<br />
bashing is enough to drive anyone to start microwaving fluffy<br />
kittens. Wouldn’t it be great to have a fancy online tool to take<br />
care of all the boring stuff for you in a few simple clicks? Well<br />
wish no more…</p>
<p class="showcase"><a  href="http://labs.engageinteractive.co.uk/nav-o-matic/"><img src="/Images/google-reader-share-JS-58.jpg" width="480" height="300" alt="JS-58 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://www.stevefenton.co.uk/Content/Jquery-Two-Sided-Multi-Selector/"><br />
Jquery Two Sided Multi Selector</a><br />
This Plugin converts a multi select list into a two-sided<br />
multi-select list. This means you display a list of options in the<br />
left hand box and items you select are moved into the right hand<br />
box.</p>
<p class="showcase"><a  href="http://www.stevefenton.co.uk/Content/Jquery-Two-Sided-Multi-Selector/"><br />
<img src="/Images/google-reader-share-JS-01.jpg" width="480" height="300" alt="JS-01 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://www.geektantra.com/projects/jquery-megamenu/index.html">jQuery<br />
MegaMenu Plugin</a></p>
<p class="showcase"><a  href="http://www.geektantra.com/projects/jquery-megamenu/index.html"><img src="/Images/google-reader-share-JS-11.jpg" width="480" height="300" alt="JS-11 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://mike-hostetler.com/jquery-keyboard-navigation-plugin">jQuery<br />
Keyboard Navigation Plugin</a><br />
The jQuery Keyboard Navigation Plugin provides the capability for<br />
elements on a page to be navigated and activated via the keyboard’s<br />
up, down, right and left arrow keys.</p>
<p class="showcase"><a  href="http://mike-hostetler.com/jquery-keyboard-navigation-plugin"><img src="/Images/google-reader-share-JS-77.jpg" width="480" height="300" alt="JS-77 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://arshaw.com/fullcalendar/">FullCalendar –<br />
Full-sized Calendar jQuery Plugin</a><br />
FullCalendar is a jQuery plugin that provides a full-sized, drag<br />
&amp; drop calendar like the one below. It uses AJAX to fetch<br />
events on-the-fly for each month and is easily configured to use<br />
your own feed format (an extension is provided for Google<br />
Calendar). It is visually customizable and exposes hooks for<br />
user-triggered events (like clicking or dragging an event).</p>
<p class="showcase"><a  href="http://arshaw.com/fullcalendar/"><img src="/Images/google-reader-share-JS-89.jpg" width="480" height="300" alt="JS-89 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<h3>Forms</h3>
<p><a  href="http://devgrow.com/iphone-style-switches/">iPhone Style<br />
Radio and Checkbox Switches using JQuery and CSS</a><br />
A simple technique for creating radio button and checkbox switches<br />
with jQuery.</p>
<p class="showcase"><a  href="http://devgrow.com/iphone-style-switches/"><img src="/Images/google-reader-share-JS-86.jpg" width="480" height="300" alt="JS-86 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://www.filamentgroup.com/lab/jquery_ui_selectmenu_an_aria_accessible_plugin_for_styling_a_html_select"><br />
jQuery UI Selectmenu: An ARIA-Accessible Plugin for Styling a<br />
Custom HTML Select Element</a><br />
Our latest contribution to labs is the selectmenu plugin, which is<br />
designed to duplicate and extend the functionality of a native HTML<br />
select element, and lets you customize the look and feel, add<br />
icons, and create hierarchy within the options. Best of all, it’s<br />
built with progressive enhancement and accessibility in mind, has<br />
all the native mouse and keyboard controls, and is<br />
ThemeRoller-ready.</p>
<p class="showcase"><a  href="http://www.filamentgroup.com/lab/jquery_ui_selectmenu_an_aria_accessible_plugin_for_styling_a_html_select"><br />
<img src="/Images/google-reader-share-JS-17.jpg" width="480" height="300" alt="JS-17 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://www.viget.com/inspire/a-better-jquery-in-field-label-plugin/"><br />
A Better jQuery In-Field Label Plugin</a><br />
This is a pretty nice effect, and it can really help to save space<br />
on forms. There are a billion different ways to implement this, and<br />
I don’t suggest you use the example from above because that was<br />
just a quick way to show the effect. So let’s walk through a couple<br />
of different implementation approaches and figure out the best way<br />
to implement this feature.</p>
<p class="showcase"><a  href="http://www.viget.com/inspire/a-better-jquery-in-field-label-plugin/"><br />
<img src="/Images/google-reader-share-JS-24.jpg" width="480" height="300" alt="JS-24 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://www.csskarma.com/blog/sliding-labels-v2/">Sliding<br />
Labels</a><br />
Tim Wright came up with a jQuery technique that presents labels in<br />
input fields by default but then slides them to the left (or up)<br />
rather than removing them on click. If JavaScript is turned off,<br />
the labels are displayed above the input fields. The small jQuery<br />
snippet works in all major browsers and can be used for input and<br />
textarea elements.</p>
<p class="showcase"><a  href="http://www.csskarma.com/blog/sliding-labels-v2/"><img src="/Images/google-reader-share-JS-59.jpg" width="480" height="300" alt="JS-59 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://www.9lessons.info/2010/04/log-in-or-sign-up-with-jquery-and-php.html"><br />
Login or Signup with jQuery</a><br />
Some users doesn’t like to filling the registration form. So that I<br />
had implemented login and singup fields in same block just<br />
controlling with jquery and PHP. It’s is very simple javascript and<br />
basic PHP code.</p>
<p class="showcase"><a  href="http://www.9lessons.info/2010/04/log-in-or-sign-up-with-jquery-and-php.html"><br />
<img src="/Images/google-reader-share-js-y1.png" width="425" height="231" alt="Js-y1 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://pixelmatrixdesign.com/uniform/">Uniform – Sexy<br />
forms with jQuery</a><br />
Have you ever wished you could style checkboxes, drop down menus,<br />
radio buttons, and file upload inputs? Ever wished you could<br />
control the look and feel of your form elements between all<br />
browsers? If so, Uniform is your new best friend. Uniform masks<br />
your standard form controls with custom themed controls. It works<br />
in sync with your real form elements to ensure accessibility and<br />
compatibility.</p>
<p class="showcase"><a  href="http://pixelmatrixdesign.com/uniform/"><img src="/Images/google-reader-share-JS-66.jpg" width="480" height="300" alt="JS-66 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<h3>Slideshows and Galleries</h3>
<p><a  href="http://razorjack.net/quicksand/">jQuery Quicksand<br />
plugin</a><br />
Reorder and filter items with a nice shuffling animation.</p>
<p class="showcase"><a  href="http://razorjack.net/quicksand/"><img src="/Images/google-reader-share-JS-82.jpg" width="480" height="300" alt="JS-82 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://nivo.dev7studios.com/">Nivo Slider: Slideshow<br />
jQuery Script</a><br />
Nivo Slider is a simple and powerful jQuery image slider plug-in<br />
that fits the bill. The tool has nine unique transition effects<br />
built in, as well as plenty of options to fiddle with: for<br />
instance, you can define functions to be applied before and after<br />
the image has changed, set the animation speed and activate pause<br />
on hover.</p>
<p class="showcase"><a  href="http://nivo.dev7studios.com/"><img src="/Images/google-reader-share-slideshow.jpg" width="450" height="213" alt="Slideshow in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://hashgrid.com/">#grid</a><br />
#grid is a little tool that inserts a grid onto the Web page. You<br />
can hold the grid in place and toggle it between the foreground and<br />
background. To display the grid, just press a hot key on your<br />
keyboard, and you can set your own short keys to switch views.<br />
#grid comes set up with a 980 pixel-wide container, with 20-pixel<br />
gutters, and assumes one lead of 20 pixels. You can download the<br />
source code (JavaScript and CSS) and use classes for multiple<br />
grids.</p>
<p class="showcase"><a  href="http://hashgrid.com/"><img src="/Images/google-reader-share-analog.gif" width="450" height="279" alt="Analog in 40 Useful jQuery Techniques and Plugins" /></a></p>
<h3>Improving The Content</h3>
<p><a  href="http://ignorethecode.net/blog/2010/04/20/footnotes/">Dynamic<br />
Footnotes With CSS and jQuery</a><br />
Lukas Mathis has come up with an elegant solution to improve user<br />
experience with footnotes: his jQuery script shows the content of<br />
footnotes as soon as the user indicates that they are interested in<br />
it – i.e. when they move the cursor over the footnote symbol.</p>
<p class="showcase"><a  href="http://ignorethecode.net/blog/2010/04/20/footnotes/"><img src="/Images/google-reader-share-footnote.jpg" width="460" height="129" alt="Footnote in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://thirdroute.com/projects/captify/">jQuery Captify<br />
Plugin v1.1.3</a><br />
Captify is a plugin for jQuery written by Brian Reavis to display<br />
simple, pretty image captions that appear on rollover. It has been<br />
tested on Firefox, Chrome, Safari, and the wretched Internet<br />
Explorer. Captify was inspired by ImageCaptions, another jQuery<br />
plugin for displaying captions like these. The goal of Captify is<br />
to be easy to use, small/simple, and completely ready for use in<br />
production environments (unlike ImageCaptions at the moment).</p>
<p class="showcase"><a  href="http://thirdroute.com/projects/captify/"><img src="/Images/google-reader-share-JS-88.jpg" width="480" height="300" alt="JS-88 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://beckelman.net/post/2009/01/22/Copy-to-Clipboard-with-ZeroClipboard-Flash-10-and-jQuery.aspx"><br />
Copy to Clipboard with ZeroClipboard, Flash 10 and jQuery</a><br />
With today’s post I will show you a contrived example to get you<br />
started. I eventually hope to add this to the contextMenu.js jQuery<br />
plugin that I use, but for now this should be pretty straight<br />
forward. I do want to note that in the demo and download I am<br />
loading the latest version of the jQuery library (1.3.1) from<br />
Google’s CDN for the first time in any of my posts. For more<br />
information on how to do this see the instructions from Google.</p>
<p class="showcase"><a  href="http://beckelman.net/post/2009/01/22/Copy-to-Clipboard-with-ZeroClipboard-Flash-10-and-jQuery.aspx"><br />
<img src="/Images/google-reader-share-JS-41.jpg" width="480" height="300" alt="JS-41 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<h3>Layouts</h3>
<p><a  href="http://welcome.totheinter.net/columnizer-jquery-plugin/">Columnizer<br />
jQuery Plugin</a><br />
This jQuery plugin will help you create a multi-column layout<br />
without complex CSS hacks. Works across all major browsers.</p>
<p class="showcase"><a  href="http://welcome.totheinter.net/columnizer-jquery-plugin/"><img src="/Images/google-reader-share-JS-71.jpg" width="480" height="300" alt="JS-71 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://www.trirand.com/blog/?page_id=6">jQuery Grid<br />
Plugin</a></p>
<p class="showcase"><a  href="http://www.trirand.com/blog/?page_id=6"><img src="/Images/google-reader-share-JS-50.jpg" width="480" height="300" alt="JS-50 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<h3>Charts and Graphs</h3>
<p><a  href="http://www.appsheriff.com/web-apps/script/dygraphs-create-interactive-zoomable-charts/"><br />
Dygraphs: Create interactive graphs from open source Javascript<br />
library</a><br />
Dygraphs is an open source JavaScript library that produces an<br />
interactive, zoom-able charts of the present time series. It is<br />
mainly designed to display the dense data sets and enable the users<br />
to explore and interpret them. It is a JavaScript Visualization<br />
Library.</p>
<p class="showcase"><a  href="http://www.appsheriff.com/web-apps/script/dygraphs-create-interactive-zoomable-charts/"><br />
<img src="/Images/google-reader-share-JS-38.jpg" width="480" height="300" alt="JS-38 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://gmap.nurtext.de/">gMap – Google Maps Plugin For<br />
jQuery</a><br />
gMap is a lightweight jQuery plugin that helps you embed Google<br />
Maps into your website. With only 2 KB in size it is very flexible<br />
and highly customizable.</p>
<p class="showcase"><a  href="http://gmap.nurtext.de/"><img src="/Images/google-reader-share-JS-65.jpg" width="480" height="300" alt="JS-65 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://speckyboy.com/2010/02/03/10-jquery-plugins-for-easier-google-map-installation/"><br />
10 jQuery Plugins for Easier Google Map Installation</a><br />
The plugins below offer not only an easier method to install a map,<br />
they also offer the option to add extra functionality, should you<br />
choose to need them. They also all come with a varied degree of<br />
docs, some are extensive and some non-existent, so choose your<br />
plugin wisely.</p>
<p class="showcase"><a  href="http://speckyboy.com/2010/02/03/10-jquery-plugins-for-easier-google-map-installation/"><br />
<img src="/Images/google-reader-share-JS-78.jpg" width="480" height="300" alt="JS-78 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<h3>Images and Visual Effects</h3>
<p><a  href="http://swizec.com/code/styledButton/">jQuery imageless<br />
buttons a la Google</a><br />
This jQuery plugin is an attempt to recreate Google’s imageless<br />
buttons and prove that it doesn’t take a whole team of engineers<br />
and an endless cycle of code revision and quality control (their<br />
own words) to pull this off. I don’t know how Google did it, but my<br />
buttons automatically adapt to paddings and other styling you wish<br />
to use. They allow for a lot of stylistic customisatoin via a few<br />
lines of css while keeping all the display critical css rules<br />
hidden deep inside the plugin.</p>
<p class="showcase"><a  href="http://swizec.com/code/styledButton/"><img src="/Images/google-reader-share-JS-67.jpg" width="480" height="300" alt="JS-67 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://www.viget.com/inspire/jquery-presentation-plugin">jQuery<br />
Presentation Plugin</a><br />
jQuery Presentation Plugin: Say NO to Keynote!</p>
<p class="showcase"><a  href="http://www.viget.com/inspire/jquery-presentation-plugin"><img src="/Images/google-reader-share-JS-90.jpg" width="480" height="300" alt="JS-90 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://srobbin.com/blog/jquery-pageslide/">jQuery<br />
pageSlide</a><br />
This plugin allows any developer to recreate a similar interaction<br />
on their own website using a few simple lines of Javascript. By<br />
attaching the method to an anchor tag, pageSlide wraps the original<br />
body content into a wrapper and creates an additional block for the<br />
secondary content load. The slide is animated whenever the click<br />
event is invoked.</p>
<p class="showcase"><a  href="http://srobbin.com/blog/jquery-pageslide/"><img src="/Images/google-reader-share-JS-74.jpg" width="480" height="300" alt="JS-74 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://workshop.rs/projects/jqfancytransitions/">jqFancyTransitions:<br />
jQuery Image Rotator Plugin</a><br />
jqFancyTransitions is easy-to-use jQuery plugin for displaying your<br />
photos as slideshow with fancy transition effects.</p>
<p class="showcase"><a  href="http://workshop.rs/projects/jqfancytransitions/"><img src="/Images/google-reader-share-JS-15.jpg" width="480" height="300" alt="JS-15 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://coffeescripter.com/code/ad-gallery/">A demo of<br />
AD Gallery</a><br />
A highly customizable gallery/showcase plugin for jQuery.</p>
<p class="showcase"><a  href="http://coffeescripter.com/code/ad-gallery/"><img src="/Images/google-reader-share-JS-16.jpg" width="480" height="300" alt="JS-16 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://pines.svn.sourceforge.net/viewvc/pines/trunk/pnotify/index.html"><br />
Pines Notify jQuery Plugin</a><br />
Pines Notify’s features include: timed hiding with visual effects,<br />
sticky (no automatic hiding) notices, optional hide button,<br />
supports dynamically updating text, title, icon, type, stacks allow<br />
notice sets to stack independently, control stack direction and<br />
push to top or bottom.</p>
<p class="showcase"><a  href="http://pines.svn.sourceforge.net/viewvc/pines/trunk/pnotify/index.html"><br />
<img src="/Images/google-reader-share-JS-51.jpg" width="480" height="300" alt="JS-51 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://buildinternet.com/2010/02/animate-panning-slideshow-with-jquery/"><br />
Animate Panning Slideshow with jQuery</a><br />
In today’s tutorial we’ll take the makings of a classic slideshow,<br />
but use a different kind of transition to animate between slides.<br />
It may not fit every project, but diversity is always welcome in<br />
the world of web design.</p>
<p class="showcase"><a  href="http://buildinternet.com/2010/02/animate-panning-slideshow-with-jquery/"><br />
<img src="/Images/google-reader-share-JS-79.jpg" width="480" height="300" alt="JS-79 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://tutorialzine.com/2010/03/sponsor-wall-flip-jquery-css/">Sponsor<br />
Flip Wall With jQuery &amp; CSS</a><br />
Designing and coding a sponsors page is part of the developer’s<br />
life (at least the lucky developer’s life, if it is about a<br />
personal site of theirs). It, however, follows different rules than<br />
those for the other pages of the site. You have to find a way to<br />
fit a lot of information and organize it clearly, so that the<br />
emphasis is put on your sponsors, and not on other elements of your<br />
design.</p>
<p class="showcase"><a  href="http://tutorialzine.com/2010/03/sponsor-wall-flip-jquery-css/"><img src="/Images/google-reader-share-JS-39.jpg" width="480" height="300" alt="JS-39 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<h3>Last Click</h3>
<p><a  href="http://jashkenas.github.com/coffee-script/">CofeeScript</a><br />
CoffeeScript is a little programming language that compiles<br />
JavaScript while simplifying the code that developers actually have<br />
to deal with. It works with current JavaScript libraries and<br />
compiles clean code, leaving even comments intact. Once developers<br />
familiarize themselves with how CoffeeScript works, they could<br />
potentially save themselves a lot of time and headaches with the<br />
simplified code.</p>
<p class="showcase"><a  href="http://jashkenas.github.com/coffee-script/"><img src="/Images/google-reader-share-coffeescript.jpg" width="450" height="288" alt="Coffeescript in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://usejquery.com/posts/8/brosho-design-in-the-browser-jquery-plugin"><br />
Brosho ‘Design in the Browser’ jQuery Plugin</a><br />
With this Plugin you can style your markup right in your browser<br />
with a build-in element selector and CSS editor. Generate the CSS<br />
code of altered elements with one click and use it in your own<br />
stylesheet.</p>
<p class="showcase"><a  href="http://usejquery.com/posts/8/brosho-design-in-the-browser-jquery-plugin"><br />
<img src="/Images/google-reader-share-JS-62.jpg" width="480" height="300" alt="JS-62 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://gamequery.onaluf.org/">gameQuery – a javascript<br />
game engine with jQuery</a><br />
gameQuery is a jQuery plug-in to help make javascript game<br />
development easier by adding some simple game-related classes. It’s<br />
still in an early stage of development and may change a lot in<br />
future versions. The project has a Google Code page where the SVN<br />
repository of the project is hosted and a twitter page where you<br />
can follow the daily progress of the development.</p>
<p class="showcase"><a  href="http://gamequery.onaluf.org/"><img src="/Images/google-reader-share-JS-13.jpg" width="480" height="300" alt="JS-13 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<p><a  href="http://blog.insicdesigns.com/2010/02/mind-blowing-javascript-experiments/"><br />
Mind-blowing JavaScript Experiments</a><br />
The following JavaScript experiments demonstrates the amazing<br />
capabilities of the modern browsers such as Chrome and Safari. In<br />
this post I will showcase to you an array of experiments that will<br />
surely blows your mind off.</p>
<p class="showcase"><a  href="http://blog.insicdesigns.com/2010/02/mind-blowing-javascript-experiments/"><br />
<img src="/Images/google-reader-share-JS-35.jpg" width="480" height="300" alt="JS-35 in 40 Useful jQuery Techniques and Plugins" /></a></p>
<h3>Is adding round-ups to our regular content a good idea?</h3>
<p><a  href="http://answers.polldaddy.com/poll/3118651/">What do you<br />
think, is adding more round-ups to our regular content a good<br />
idea?</a><span class="c1"><a  href="http://polldaddy.com/features-surveys/">Market<br />
Research</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-06/40-useful-jquery-techniques-and-plugins.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>50 Brilliant CSS3/JavaScript Coding Techniques</title>
		<link>http://www.taiwangeek.com/2010-06/50-brilliant-css3javascript-coding-techniques.html</link>
		<comments>http://www.taiwangeek.com/2010-06/50-brilliant-css3javascript-coding-techniques.html#comments</comments>
		<pubDate>Tue, 22 Jun 2010 01:28:25 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/50-brilliant-css3javascript-coding-techniques.html</guid>
		<description><![CDATA[CSS3 is coming. Although the browser support of CSS 3 is still very limited, many designers across the globe experiment with new powerful features of the language, using graceful degradation... <a class="meta-more" href="http://www.taiwangeek.com/2010-06/50-brilliant-css3javascript-coding-techniques.html">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>CSS3 is coming</strong>. Although the browser support of<br />
CSS 3 is <a  href="http://www.findmebyip.com/litmus/">still very<br />
limited</a>, many designers across the globe experiment with new<br />
powerful features of the language, using graceful degradation for<br />
users with older browsers and using the new possibilites of CSS3<br />
for users with modern browsers. That’s a reasonable solution —<br />
after all it doesn’t make sense to avoid learning CSS3 (that will<br />
be heavily used in the future) only because these features are not<br />
supported yet. The point of this article is to give you a glimpse<br />
of what will be possible soon and what you will be using soon and<br />
provide you with an opportunity to learn about new CSS3 techniques<br />
and features.</p>
<p>In this post we present <strong>50 useful and powerful<br />
CSS3/jQuery-techniques</strong> that can strongly improve user<br />
experience, improve designer’s workflow and replace dirty old<br />
workarounds that we used in Internet Explorer 6 &amp; Co. Please<br />
notice that most techniques presented below are experimental, and<br />
many of them are not pure CSS3-techniques as they use jQuery or<br />
other JavaScript-library.</p>
<p>[Offtopic: By the way, did you know that Smashing Magazine has a<br />
<a  href="http://creatives.commindo-media.de/www/delivery/ck.php?oaparams=2__bannerid=1249__zoneid=0__cb=be1da96c6d__oadest=http%3A%2F%2Fm.smashingmagazine.com"><br />
mobile version</a>? Try it out if you have an iPhone, Blackberry or<br />
another capable device.]</p>
<h3>Visual Effects and Layout Techniques With CSS3</h3>
<p><a  href="http://www.fofronline.com/2009-03/an-analogue-clock-using-only-css/"><br />
CSS3 Analogue Clock</a><br />
Analogue clock created using webkit transition and transform CSS.<br />
JavaScript is only used to pull in the current time.</p>
<p class="showcase"><a  href="http://www.fofronline.com/2009-03/an-analogue-clock-using-only-css/"><br />
<img src="/Images/smashingmagazine3-css-132.jpg" width="480" height="300" alt="Css-132 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://designlovr.com/use-css3-to-create-a-dynamic-stack-of-index-cards/"><br />
Use CSS3 to Create a Dynamic Stack of Index Cards</a><br />
We will create a dynamic stack of index cards solely with HTML and<br />
CSS3 and use such CSS3 features as transform and transition (for<br />
the dynamic effects) and @font-face, box-shadow and border-radius<br />
(for the styling).</p>
<p class="showcase"><a  href="http://designlovr.com/use-css3-to-create-a-dynamic-stack-of-index-cards/"><br />
<img src="/Images/smashingmagazine3-css3-new-03.jpg" width="480" height="300" alt="Css3-new-03 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://pushingpixels.at/experiments/dynamic_shadow/">dynamic PNG<br />
shadow position &amp; opacity</a><br />
When the light is turned on, the position and opacity of the logo<br />
shadow will change dynamically, depending on the position and<br />
distance of the light bulb. Don’t forget to drag the logo and/or<br />
the light bulb around!</p>
<p class="showcase"><a  href="http://pushingpixels.at/experiments/dynamic_shadow/"><img src="/Images/smashingmagazine3-css3-new-00.jpg" width="480" height="300" alt="Css3-new-00 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://spyrestudios.com/how-to-create-a-sexy-vertical-sliding-panel-using-jquery-and-css3/"><br />
How To Create A Sexy Vertical Sliding Panel Using jQuery And<br />
CSS3</a><br />
So, what about a vertical sliding panel that would act as some sort<br />
of drawer instead of the usual top horizontal sliding panel that<br />
pushes everything else down when it opens? While thinking of<br />
alternatives to the usual horizontal panels, I thought it would be<br />
nice to create something that works in a similar way, but that is a<br />
bit more flexible.</p>
<p class="showcase"><a  href="http://spyrestudios.com/how-to-create-a-sexy-vertical-sliding-panel-using-jquery-and-css3/"><br />
<img src="/Images/smashingmagazine3-css3-last-08.jpg" width="481" height="300" alt="Css3-last-08 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.zurb.com/playground/awesome-overlays">Awesome Overlays<br />
with CSS3</a><br />
The trick with these overlays is the gradient border, going form a<br />
lighter to darker orange as you go from top to bottom. To create<br />
that effect we used to the border-image property, which is a tricky<br />
little addition to CSS.</p>
<p class="showcase"><a  href="http://www.zurb.com/playground/awesome-overlays"><img src="/Images/smashingmagazine3-css3-last-11.jpg" width="481" height="300" alt="Css3-last-11 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://blog.seanmartell.com/2009/04/21/css3-flexible-ui-avoid-recutting-ui-graphics-for-mobile/"><br />
CSS3 &amp; Flexible UI: Avoid Recutting UI Graphics for<br />
Mobile</a><br />
What if we could replace almost all of the graphical UI elements<br />
within Fennec with CSS created equivalents? As a designer, am I<br />
comfortable bypassing Photoshop and letting CSS run the pixel<br />
rodeo? After a few initial tests, the answer to both of those<br />
questions was a very solid “yes”. A solid “friggin’ right” if in<br />
Cape Breton.</p>
<p class="showcase"><a  href="http://blog.seanmartell.com/2009/04/21/css3-flexible-ui-avoid-recutting-ui-graphics-for-mobile/"><br />
<img src="/Images/smashingmagazine3-css-144.jpg" width="480" height="300" alt="Css-144 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.pvmgarage.com/en/2010/01/how-to-create-depth-and-nice-3d-ribbons-only-using-css3/"><br />
How To Create Depth And Nice 3D Ribbons Only Using CSS3</a><br />
We will use box-shadow to create a drop-shadow with RGBa, a color<br />
model that allows an optimized contrast with any kind of<br />
backgrounds. RGBa is the standard RGB model (0,0,0 – 255,255,255)<br />
and it adds the last option (a) for the opacity. We can use this<br />
model also for other properties and it works with the new<br />
browser.</p>
<p class="showcase"><a  href="http://www.pvmgarage.com/en/2010/01/how-to-create-depth-and-nice-3d-ribbons-only-using-css3/"><br />
<img src="/Images/smashingmagazine3-css-197.jpg" width="480" height="300" alt="Css-197 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.queness.com/post/1696/create-a-beautiful-looking-custom-dialog-box-with-jquery-and-css3"><br />
Create a Beautiful Looking Custom Dialog Box With jQuery and<br />
CSS3</a><br />
This custom dialog box is one of the scripts in that website and I<br />
think it will be quite useful for all of us. The reason I have this<br />
custom dialog box is to overcome the inconsistencies across<br />
different browsers. And, of course, it uses CSS3 to style<br />
everything.</p>
<p class="showcase"><a  href="http://www.queness.com/post/1696/create-a-beautiful-looking-custom-dialog-box-with-jquery-and-css3"><br />
<img src="/Images/smashingmagazine3-css3-last-00.jpg" width="481" height="300" alt="Css3-last-00 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.zurb.com/playground/drop-in-modals">Drop-In<br />
Modals with CSS3</a><br />
For those using WebKit based browsers (Safari and Chrome), CSS3<br />
effects and properties can help you create fast, simple modals by<br />
using transforms, animation, and some subtle design cues.</p>
<p class="showcase"><a  href="http://www.zurb.com/playground/drop-in-modals"><img src="/Images/smashingmagazine3-css3-last-13.jpg" width="481" height="300" alt="Css3-last-13 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.smashingmagazine.com/2009/12/16/stronger-better-faster-design-with-css3/"><br />
Newspaper Layouts with Columns and Image Masks</a><br />
The faux-newspaper look goes in and out of style online pretty<br />
frequently, but these tricks can be used for quite a few cool<br />
applications. What we’ll talk about here is using<br />
-webkit-mask-image and -webkit-column-count.</p>
<p class="showcase"><a  href="http://www.smashingmagazine.com/2009/12/16/stronger-better-faster-design-with-css3/"><br />
<img src="/Images/smashingmagazine3-css3-last-14.jpg" width="481" height="300" alt="Css3-last-14 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<h3>Navigation Menus With CSS 3</h3>
<p><a  href="http://tutorialzine.com/2010/01/sweet-tabs-jquery-ajax-css/">Sweet<br />
AJAX Tabs With jQuery 1.4 &amp; CSS3</a><br />
This post is a tutorial of making an AJAX-powered tab page with<br />
CSS3 and the newly released jQuery 1.4.</p>
<p class="showcase"><a  href="http://tutorialzine.com/2010/01/sweet-tabs-jquery-ajax-css/"><img src="/Images/smashingmagazine3-sweet-tabs.jpg" width="480" height="300" alt="Sweet-tabs in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.marcofolio.net/css/sweet_tabbed_navigation_using_css3.html"><br />
Sweet tabbed navigation bar using CSS3</a><br />
Although I don’t understand why animations have been added in CSS3,<br />
this upcoming standard does have a couple of very neat features<br />
added to the CSS we’re using today. I wanted to take a couple of<br />
these new things, and create a Sweet tabbed navigation using<br />
CSS3.</p>
<p class="showcase"><a  href="http://www.marcofolio.net/css/sweet_tabbed_navigation_using_css3.html"><br />
<img src="/Images/smashingmagazine3-css-041.jpg" width="480" height="300" alt="Css-041 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://tutorialzine.com/2010/01/halftone-navigation-menu-jquery-css/"><br />
Halftone Navigation Menu With jQuery &amp; CSS3</a><br />
Today we are making a CSS3 &amp; jQuery halftone-style navigation<br />
menu, which will allow you to display animated halftone-style<br />
shapes in accordance with the navigation links, and will provide a<br />
simple editor for creating additional shapes as well.</p>
<p class="showcase"><a  href="http://tutorialzine.com/2010/01/halftone-navigation-menu-jquery-css/"><br />
<img src="/Images/smashingmagazine3-css3-last-05.jpg" width="481" height="300" alt="Css3-last-05 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://paulbakaus.com/2008/05/31/coverflow-anyone/">Building<br />
Coverflow With CSS Transforms</a><br />
I was able to create a coverflow effect that actually flows and<br />
animates in real-time, without using canvas or prerendered<br />
graphics.</p>
<p class="showcase"><a  href="http://paulbakaus.com/2008/05/31/coverflow-anyone/"><img src="/Images/smashingmagazine3-css3-last-04.jpg" width="481" height="300" alt="Css3-last-04 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.kamikazemusic.com/quick-tips/css3-hover-tabs-without-javascript/"><br />
CSS3 Hover Tabs without JavaScript</a><br />
With the new techniques in CSS3 and clever applications of existing<br />
CSS it is increasingly stepping on the toes of JavaScript. Which to<br />
be honest isn’t necessarily a bad thing. I thought I’d try my hand<br />
at something so here is a basic CSS tabbed content section that<br />
changes on hover.</p>
<p class="showcase"><a  href="http://www.kamikazemusic.com/quick-tips/css3-hover-tabs-without-javascript/"><br />
<img src="/Images/smashingmagazine3-css-186.jpg" width="480" height="300" alt="Css-186 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<h3>CSS 3 Transitions and Animations</h3>
<p><a  href="http://24ways.org/2009/going-nuts-with-css-transitions">Going Nuts<br />
with CSS Transitions</a><br />
I’m going to show you how CSS 3 transforms and WebKit transitions<br />
can add zing to the way you present images on your site.</p>
<p class="showcase"><a  href="http://24ways.org/2009/going-nuts-with-css-transitions"><img src="/Images/smashingmagazine3-css-010.jpg" width="480" height="300" alt="Css-010 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.zurb.com/playground/sliding-vinyl">Sliding<br />
Vinyl with CSS3</a><br />
We take a standard album cover, a little HTML, and some CSS3<br />
transitions and transforms to create a sliding vinyl effect for<br />
showing off the music you love.</p>
<p class="showcase"><a  href="http://www.zurb.com/playground/sliding-vinyl"><img src="/Images/smashingmagazine3-css3-last-12.jpg" width="481" height="300" alt="Css3-last-12 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.rickyh.co.uk/fun-with-css3-and-mootools/">Fun with CSS3<br />
and Mootols</a><br />
These examples came about when experimenting with the extend<br />
property in MooTools. By extending the styles class I could add<br />
CSS3 properties into the Core MooTools framework and do CSS3<br />
animations.</p>
<p class="showcase"><a  href="http://www.rickyh.co.uk/fun-with-css3-and-mootools/"><img src="/Images/smashingmagazine3-css3-last-171.jpg" width="481" height="300" alt="Css3-last-171 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://ajaxian.com/archives/star-wars-html-and-css-a-new-hope">Star<br />
Wars HTML and CSS: A NEW HOPE</a><br />
There are a lot of CSS transitions experiments going on right now.<br />
Yesterday I discovered another HTML and CSS experiment which went<br />
“far far away”, compared with my simple CSS gallery.<br />
Guillermo Esteves presented a piece of history translated for<br />
tomorrows browsers: the Star Wars Episode IV opening crawl in HTML<br />
and CSS.</p>
<p class="showcase"><a  href="http://ajaxian.com/archives/star-wars-html-and-css-a-new-hope"><img src="/Images/smashingmagazine3-css-130.jpg" width="480" height="300" alt="Css-130 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://ajaxian.com/archives/fun-with-3d-css-and-video">Fun with 3D<br />
CSS and video</a><br />
Zach Johnson has been having fun with 3D effects via CSS such as<br />
his isocube above, which is brought to you with simple HTML<br />
(including a video tag for a playing video on the surface!) and<br />
some CSS.</p>
<p class="showcase"><a  href="http://ajaxian.com/archives/fun-with-3d-css-and-video"><img src="/Images/smashingmagazine3-css-138.jpg" width="480" height="300" alt="Css-138 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.marcofolio.net/css/css3_animations_and_their_jquery_equivalents.html"><br />
CSS3 animations and their jQuery equivalents</a><br />
This tutorial/these examples will show the use of the same HTML,<br />
with different classes for CSS3 and jQuery. You can compare both<br />
the codes and see which one you like more. Don’t forget to check<br />
the demo/download the source code to view how everything is working<br />
under the hood.</p>
<p class="showcase"><a  href="http://www.marcofolio.net/css/css3_animations_and_their_jquery_equivalents.html"><br />
<img src="/Images/smashingmagazine3-css-040.jpg" width="480" height="300" alt="Css-040 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://24ways.org/2009/css-animations">CSS<br />
Animations</a><br />
No matter how fast internet tubes or servers are, we’ll always need<br />
spinners to indicate something’s happening behind the scenes.</p>
<p class="showcase"><a  href="http://24ways.org/2009/css-animations"><img src="/Images/smashingmagazine3-css-009.jpg" width="480" height="300" alt="Css-009 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://clearleft.com/news/36">Snowy CSS3<br />
Animation</a><br />
It’s cold and snowy down here in Brighton, so to celebrate the<br />
falling white stuff (and of course the various festivities at this<br />
time of year) Clearleft’s very own Natbat has made a snowy CSS3<br />
animation surprise for all you Safari and Chrome users out<br />
there.</p>
<p class="showcase"><a  href="http://clearleft.com/news/36"><img src="/Images/smashingmagazine3-css-005.jpg" width="480" height="300" alt="Css-005 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.smashingmagazine.com/2009/12/19/what-you-need-to-know-about-behavioral-css/"><br />
What You Need To Know About Behavioral CSS</a><br />
In this article, we will take those properties a step further and<br />
explore transformations, transitions, and animations. We’ll go over<br />
the code itself, available support and some examples to show<br />
exactly how these new properties improve not only your designs but<br />
the overall user experience.</p>
<p class="showcase"><a  href="http://www.smashingmagazine.com/2009/12/19/what-you-need-to-know-about-behavioral-css/"><br />
<img src="/Images/smashingmagazine3-css-038.jpg" width="480" height="300" alt="Css-038 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://ajaxian.com/archives/3d-cube-using-new-css-transformations"><br />
3D Cube using new CSS transformations</a><br />
The impression of a three dimensional cube can be created using<br />
modern CSS techniques, without the need for JavaScript, imagery,<br />
canvas or SVG. Using the proprietary transform property to skew and<br />
rotate shaded rectangles, individual cube faces can combine to form<br />
a 3D object.</p>
<p class="showcase"><a  href="http://ajaxian.com/archives/3d-cube-using-new-css-transformations"><br />
<img src="/Images/smashingmagazine3-css-139.jpg" width="480" height="300" alt="Css-139 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://erik.eae.net/archives/2009/02/20/17.47.41/">Playing around<br />
with WebKit Animations</a><br />
I’ve been playing around doing a KeyNote like animation done with<br />
CSS and some JS to hook up the necessary events. The animation is<br />
kind of like a deck of cards. When you go to the next one the<br />
current one zooms in and fades out, symbolizing getting closer to<br />
the viewer. The next card then zooms and fades in from the back and<br />
to give a fancy effect-</p>
<p class="showcase"><a  href="http://erik.eae.net/archives/2009/02/20/17.47.41/"><img src="/Images/smashingmagazine3-css-133.jpg" width="480" height="300" alt="Css-133 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://ajaxian.com/archives/more-on-3d-css-transforms">More on 3D<br />
CSS Transforms</a><br />
Various 3D CSS Transforms in an overview.</p>
<p class="showcase"><a  href="http://ajaxian.com/archives/more-on-3d-css-transforms"><img src="/Images/smashingmagazine3-css3-last-15.jpg" width="481" height="300" alt="Css3-last-15 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<h3>Gradients, RGBA and HSL with CSS 3</h3>
<p><a  href="http://24ways.org/2009/working-with-rgba-colour">Working With RGBA<br />
Colour</a><br />
CSS3 introduces a couple of new ways to specify colours, and one of<br />
those is RGBA. The A stands for Alpha, which refers to the level of<br />
opacity of the colour, or to put it another way, the amount of<br />
transparency. This means that we can set not only the red, green<br />
and blue values, but also control how much of what’s behind the<br />
colour shows through. Like with layers in Photoshop.</p>
<p class="showcase"><a  href="http://24ways.org/2009/working-with-rgba-colour"><img src="/Images/smashingmagazine3-css-007.jpg" width="480" height="300" alt="Css-007 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://girliemac.com/blog/2009/04/30/css3-gradients-no-image-aqua-button/"><br />
CSS3 Gradients: No Image Aqua Button</a><br />
I played around with WebKit CSS3 gradient and created a useless but<br />
fun stuff – an Aqua button with no images! Back in the time when<br />
Mac OS X was first announced, there’re a plenty of web tutorials<br />
that describe how to create the sexy aqua button with Photoshop,<br />
and now I can show how to create one with CSS!</p>
<p class="showcase"><a  href="http://girliemac.com/blog/2009/04/30/css3-gradients-no-image-aqua-button/"><br />
<img src="/Images/smashingmagazine3-css-164.jpg" width="480" height="300" alt="Css-164 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.zenelements.com/blog/css3-hsl-hsla-color-opacity/">CSS3<br />
HSL &amp; HSLA</a><br />
A tutorial on using the HSL &amp; HSLA declarations along with the<br />
quick + / – guide to which browsers currently support the herein<br />
effect.</p>
<p class="showcase"><a  href="http://www.zenelements.com/blog/css3-hsl-hsla-color-opacity/"><img src="/Images/smashingmagazine3-css3-last-06.jpg" width="481" height="300" alt="Css3-last-06 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.zurb.com/article/266/super-awesome-buttons-with-css3-and-rgba"><br />
Super Awesome Buttons with CSS3 and RGBA</a><br />
One of our favorite things about CSS3 is the addition of RGBA, a<br />
color mode that adds alpha-blending to your favorite CSS<br />
properties. We’ve kicked the tires on it a bit with our own<br />
projects and have found that it helps streamline our CSS and makes<br />
scaling things like buttons very easy. To show you how, we’ve<br />
cooked up an example with some super awesome, scalable buttons.</p>
<p class="showcase"><a  href="http://www.zurb.com/article/266/super-awesome-buttons-with-css3-and-rgba"><br />
<img src="/Images/smashingmagazine3-css-100.jpg" width="480" height="300" alt="Css-100 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<h3>Using the Shadow-Property in CSS3</h3>
<p><a  href="http://line25.com/tutorials/create-a-letterpress-effect-with-css-text-shadow"><br />
Create a Letterpress Effect with CSS Text-Shadow</a><br />
The letterpress effect is becoming hugely popular in web design,<br />
and with a couple of modern browsers now showing support for the<br />
text-shadow CSS3 property it’s now simple and easy to create the<br />
effect with pure CSS. No Photoshop trickery here!</p>
<p class="showcase"><a  href="http://line25.com/tutorials/create-a-letterpress-effect-with-css-text-shadow"><br />
<img src="/Images/smashingmagazine3-css-096.jpg" width="480" height="300" alt="Css-096 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://owltastic.com/2009/12/shadows-and-css3/">Shadows<br />
and CSS3</a><br />
I’m currently working on a design that uses text-shadow and<br />
box-shadow, with RGBA in place to create the shadow color. I wanted<br />
to tweet about this technique because it’s simple and awesome, but<br />
to my surprise I couldn’t find a good, quick tutorial that covered<br />
the use of both text and box-shadow, along with RGBA. So I decided<br />
to create one.<br />
I learned this technique from Dan Cederholm’s Handcrafted CSS book,<br />
so if you’re able I’d recommend just going out and grabbing that,<br />
as he explains it much more elegantly and thoroughly than I ever<br />
could.</p>
<p class="showcase"><a  href="http://owltastic.com/2009/12/shadows-and-css3/"><img src="/Images/smashingmagazine3-css-003.jpg" width="480" height="300" alt="Css-003 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<h3>Learning New CSS3 Selectors</h3>
<p><a  href="http://perishablepress.com/press/2010/01/11/css3-progressive-enhancement-smart-design/"><br />
CSS3 + Progressive Enhancement = Smart Design</a><br />
Progressive enhancement is a good thing, and CSS3 is even better.<br />
Combined, they enable designers to create lighter, cleaner websites<br />
faster and easier than ever before.</p>
<p class="showcase"><a  href="http://perishablepress.com/press/2010/01/11/css3-progressive-enhancement-smart-design/"><br />
<img src="/Images/smashingmagazine3-css3-new-01.jpg" width="480" height="300" alt="Css3-new-01 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://inspectelement.com/tutorials/a-look-at-some-of-the-new-selectors-introduced-in-css3/"><br />
A Look at Some of the New Selectors Introduced in CSS3</a><br />
Here is a run-down of just some of the things that is possible with<br />
CSS3 selectors. Of course CSS3 isn’t supported at all by any IE<br />
browsers including IE8 but all latest versions of Safari, Firefox<br />
and Opera support most, if not all of them.</p>
<p class="showcase"><a  href="http://inspectelement.com/tutorials/a-look-at-some-of-the-new-selectors-introduced-in-css3/"><br />
<img src="/Images/smashingmagazine3-css-168.jpg" width="480" height="300" alt="Css-168 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://24ways.org/2009/cleaner-code-with-css3-selectors">Cleaner<br />
Code with CSS3 Selectors</a><br />
In this article I’m going to take a look at some of the ways our<br />
front and back-end code will be simplified by CSS3, by looking at<br />
the ways we achieve certain visual effects now in comparison to how<br />
we will achieve them in a glorious, CSS3-supported future. I’m also<br />
going to demonstrate how we can use these selectors now with a<br />
little help from JavaScript – which can work out very useful if you<br />
find yourself in a situation where you can’t change markup that is<br />
being output by some server-side code.</p>
<p class="showcase"><a  href="http://24ways.org/2009/cleaner-code-with-css3-selectors"><img src="/Images/smashingmagazine3-css-008.jpg" width="480" height="300" alt="Css-008 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://webdesignernotebook.com/css/the-css3-target-pseudo-class-and-css-animations/"><br />
The CSS3 :target Pseudo-class And CSS Animations</a><br />
It’s no secret that I’m always looking for an easy way out using<br />
CSS instead of trying to replicate things with convoluted code —<br />
there are so many underused techniques that we could be applying to<br />
our designs as an enhancement layer! In this experience, I take a<br />
brief look into the :target pseudo-class and a very simple CSS<br />
animation.</p>
<p class="showcase"><a  href="http://webdesignernotebook.com/css/the-css3-target-pseudo-class-and-css-animations/"><br />
<img src="/Images/smashingmagazine3-css3-last-01.jpg" width="481" height="300" alt="Css3-last-01 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://kilianvalkhof.com/2008/css-xhtml/the-css3-not-selector/">The<br />
CSS3 :not() selector</a><br />
There isn’t a lot of information to be found about the :not()<br />
selector. The specifications only offer 3 lines of text and a<br />
couple of examples. So lets see what it can do!</p>
<p class="showcase"><a  href="http://kilianvalkhof.com/2008/css-xhtml/the-css3-not-selector/"><img src="/Images/smashingmagazine3-css3-last-02.jpg" width="481" height="300" alt="Css3-last-02 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.keithclark.co.uk/labs/ie-css3/">IE CSS3<br />
pseudo selectors</a><br />
ie-css3.js allows Internet Explorer to identify CSS3 pseudo-class<br />
selectors and render any style rules defined with them. Simply<br />
include the script in your pages and start using these selectors in<br />
your style sheets — they’ll work in IE… Honest…!</p>
<p class="showcase"><a  href="http://www.keithclark.co.uk/labs/ie-css3/"><img src="/Images/smashingmagazine3-css3-new-02.jpg" width="480" height="300" alt="Css3-new-02 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<h3>CSS3 Galleries</h3>
<p><a  href="http://line25.com/tutorials/how-to-create-a-pure-css-polaroid-photo-gallery"><br />
How To Create a Pure CSS Polaroid Photo Gallery</a><br />
Magical things can be done by combining various CSS properties,<br />
especially when some of the new CSS3 tricks are thrown into the<br />
mix. Let’s take a look at building a cool looking stack of Polaroid<br />
photos with pure CSS styling.</p>
<p class="showcase"><a  href="http://line25.com/tutorials/how-to-create-a-pure-css-polaroid-photo-gallery"><br />
<img src="/Images/smashingmagazine3-css-082.jpg" width="480" height="300" alt="Css-082 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://tutorialzine.com/2009/11/hovering-gallery-css3-jquery/">An<br />
Awesome CSS3 Lightbox Gallery With jQuery</a><br />
In this tutorial we are going to create an awesome image gallery<br />
which leverages the latest CSS3 and jQuery techniques. The script<br />
will be able to scan a folder of images on your web server and<br />
build a complete drag and drop lighbox gallery around it.</p>
<p class="showcase"><a  href="http://tutorialzine.com/2009/11/hovering-gallery-css3-jquery/"><img src="/Images/smashingmagazine3-css-155.jpg" width="480" height="300" alt="Css-155 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://ajaxian.com/archives/if-that-is-an-awesome-css3-gallery-how-would-you-call-mine"><br />
If That Is An Awesome CSS3 Gallery, How Would You Call<br />
Mine?</a></p>
<p class="showcase"><a  href="http://ajaxian.com/archives/if-that-is-an-awesome-css3-gallery-how-would-you-call-mine"><br />
<img src="/Images/smashingmagazine3-css-136.jpg" width="480" height="300" alt="Css-136 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://css-tricks.com/video-screencasts/74-editable-css3-image-gallery/"><br />
Editable CSS3 Image Gallery</a><br />
We build a pretty typical image gallery design pattern, a grid of<br />
images that pop up larger when clicked. But this image gallery page<br />
makes use of hot semantic HTML5 markup, loads of visual treats with<br />
CSS3 and jQuery, and made editable through the CMS PageLime. Quick<br />
reminder, the demo is awesome-est in a WebKit browser (Safari or<br />
Chrome).</p>
<p class="showcase"><a  href="http://css-tricks.com/video-screencasts/74-editable-css3-image-gallery/"><br />
<img src="/Images/smashingmagazine3-css-163.jpg" width="480" height="300" alt="Css-163 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<h3>Replacing CSS Hacks with CSS 3</h3>
<p><a  href="http://code.google.com/p/curved-corner/">Rounded corner<br />
HTML elements using CSS3 in all browsers</a><br />
This is a behavior htc file for Internet explorer to make CSS<br />
property ” border-radius ” work on all browsers. At present, all<br />
major browsers other than IE shows curved corner by adding 4 lines<br />
of css.</p>
<p class="showcase"><a  href="http://code.google.com/p/curved-corner/"><img src="/Images/smashingmagazine3-css3-last-03.jpg" width="481" height="300" alt="Css3-last-03 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://buildinternet.com/2009/10/using-rounded-corners-with-css3/"><br />
Using Rounded Corners with CSS3</a><br />
As CSS3 gets closer to becoming the new standard for mainstream<br />
design, the days of rounded corners through elaborate background<br />
images is fading. This means less headache and time spent working<br />
out alternatives for each browser.</p>
<p class="showcase"><a  href="http://buildinternet.com/2009/10/using-rounded-corners-with-css3/"><br />
<img src="/Images/smashingmagazine3-css-058.jpg" width="480" height="300" alt="Css-058 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://perishablepress.com/press/2010/01/04/preload-images-css3/">Better<br />
Image Preloading with CSS3</a><br />
Using CSS3’s new support for multiple background images, we can use<br />
a single, existing element to preload all of the required<br />
images.</p>
<p class="showcase"><a  href="http://perishablepress.com/press/2010/01/04/preload-images-css3/"><img src="/Images/smashingmagazine3-css-194.jpg" width="480" height="300" alt="Css-194 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://aloestudios.com/2009/12/goodbye-overflow-clearing-hack/">Saying<br />
Goodbye to the overflow: hidden Clearing Hack</a><br />
I’m now saying goodbye to overflow: hidden and the deciding factor<br />
for me is CSS3. Specifically box-shadow. At least in the sense that<br />
box-shadow was the first property I noticed being negatively<br />
impacted by the use of overflow: hidden. Like the positioned child<br />
elements mentioned above, box-shadow can get clipped when the<br />
parent (or other ancestor) element has overflow applied. And there<br />
are several other things to consider as we move forward using more<br />
CSS3. Text-shadow and transform can also potentially be clipped by<br />
overflow: hidden.</p>
<p class="showcase"><a  href="http://aloestudios.com/2009/12/goodbye-overflow-clearing-hack/"><img src="/Images/smashingmagazine3-css-184.jpg" width="480" height="300" alt="Css-184 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<h3>General articles about CSS 3</h3>
<p><a  href="http://welcome2thesky.com/2009/11/13/how-to-bring-css3-features-into-your-design/"><br />
How to bring CSS3 features into your design</a><br />
Top web browser (such as Firefox 3.5 and Safari 4) have introduce<br />
some cool features you can already use. Now, with just a few lines<br />
of css you can do things you used to do with images and<br />
javascript.</p>
<p class="showcase"><a  href="http://welcome2thesky.com/2009/11/13/how-to-bring-css3-features-into-your-design/"><br />
<img src="/Images/smashingmagazine3-css-013.jpg" width="480" height="300" alt="Css-013 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.viget.com/inspire/practical-uses-of-css3/">Practical<br />
Uses of CSS3</a><br />
In this article I’ll show you some practical uses for CSS3.</p>
<p class="showcase"><a  href="http://www.viget.com/inspire/practical-uses-of-css3/"><img src="/Images/smashingmagazine3-css-032.jpg" width="480" height="300" alt="Css-032 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://net.tutsplus.com/tutorials/html-css-techniques/11-classic-css-techniques-made-simple-with-css3/"><br />
11 Classic CSS Techniques Made Simple with CSS3</a><br />
We’ve all had to achieve some effect that required an extra handful<br />
of divs or PNGs. We shouldn’t be limited to these old techniques<br />
when there’s a new age coming. This new age includes the use of<br />
CSS3. In today’s tutorial, I’ll show you eleven different<br />
time-consuming effects that can be achieved quite easily with<br />
CSS3.</p>
<p class="showcase"><a  href="http://net.tutsplus.com/tutorials/html-css-techniques/11-classic-css-techniques-made-simple-with-css3/"><br />
<img src="/Images/smashingmagazine3-css-122.jpg" width="480" height="300" alt="Css-122 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.alexgdesign.co.uk/articles/mobile-optimised-websites-using-css3-media-queries/"><br />
Mobile optimised websites using CSS3 Media Queries</a><br />
A while ago I wrote about using CSS3 Media Queries on my website<br />
redesign to provide mobile visitors with an optimised view designed<br />
for smaller screens. I thought it might be useful if I went into a<br />
bit more detail on how I’m doing this.</p>
<p class="showcase"><a  href="http://www.alexgdesign.co.uk/articles/mobile-optimised-websites-using-css3-media-queries/"><br />
<img src="/Images/smashingmagazine3-css-023.jpg" width="480" height="300" alt="Css-023 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://inspectelement.com/tutorials/code-a-backwards-compatible-one-page-portfolio-with-html5-and-css3/"><br />
Code a Backwards Compatible, One Page Portfolio with HTML5 and<br />
CSS3</a><br />
HTML5 is the future of web development but believe it or not you<br />
can start using it today. HTML5 is much more considerate to<br />
semantics and accessibility as we don’t have to throw meaningless<br />
div’s everywhere. It introduces meaningful tags for common elements<br />
such as navigations and footers which makes much more sense and are<br />
more natural. This is a run through of the basics of HTML5 and CSS3<br />
while still paying attention to older browsers. Before we start,<br />
make note of the answer to this question. Do websites need to look<br />
exactly the same in every browser?</p>
<p class="showcase"><a  href="http://inspectelement.com/tutorials/code-a-backwards-compatible-one-page-portfolio-with-html5-and-css3/"><br />
<img src="/Images/smashingmagazine3-css3-new-07.jpg" width="480" height="300" alt="Css3-new-07 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.netmag.co.uk/zine/develop-css/get-the-best-out-of-css3"><br />
Get the best out of CSS3</a><br />
Craig Grannell turns into a cross between Jeffrey Zeldman and<br />
Russell Grant, taking a peek at what the future of CSS has to offer<br />
– with a little help from Opera, Safari and Firefox</p>
<p class="showcase"><a  href="http://www.netmag.co.uk/zine/develop-css/get-the-best-out-of-css3"><br />
<img src="/Images/smashingmagazine3-css3-last-07.jpg" width="481" height="300" alt="Css3-last-07 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.viget.com/inspire/practical-uses-of-css3">Practical<br />
Uses of CSS3</a><br />
“One big item for me is how much we use CSS3. Yes I know, it is not<br />
fully supported across all browsers. If you still want everything<br />
to look exactly the same across all browsers, you should probably<br />
just close this article and not read about CSS for another 10<br />
years. A user is not going to pull up your site in two different<br />
browsers to compare the experience, so they won’t even know what<br />
they are missing. Just because something is not fully supported,<br />
that does not mean that we can’t use it to an extent. In this<br />
article I’ll show you some practical uses for CSS3.”</p>
<p class="showcase"><a  href="http://www.viget.com/inspire/practical-uses-of-css3"><img src="/Images/smashingmagazine3-css3-last-09.jpg" width="481" height="300" alt="Css3-last-09 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://net.tutsplus.com/videos/screencasts/a-crash-course-in-advanced-css3-effects/"><br />
A Crash-Course in Advanced CSS3 Effects</a><br />
This video tutorial reviews a bunch of different neat effects that<br />
can be used in Safari 4, Chrome, and for all iPhone<br />
development.</p>
<p class="showcase"><a  href="http://net.tutsplus.com/videos/screencasts/a-crash-course-in-advanced-css3-effects/"><br />
<img src="/Images/smashingmagazine3-css3-last-10.jpg" width="481" height="300" alt="Css3-last-10 in 50 Brilliant CSS3/JavaScript Coding Techniques" /></a></p>
<p><a  href="http://www.1stwebdesigner.com/css/must-read-css3-tips-tricks-tutorial-sites/"><br />
33 Must Read CSS3 Tips, Tricks, Tutorial Sites and<br />
Articles</a><br />
An extensive overview of CSS3-techniques, tools, articles and<br />
resources.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-06/50-brilliant-css3javascript-coding-techniques.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get Source Code for any Linux Command</title>
		<link>http://www.taiwangeek.com/2010-02/get-source-code-for-any-linux-command.html</link>
		<comments>http://www.taiwangeek.com/2010-02/get-source-code-for-any-linux-command.html#comments</comments>
		<pubDate>Thu, 18 Feb 2010 22:02:03 +0000</pubDate>
		<dc:creator>tung</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[Normal]]></category>
		<category><![CDATA[2010-02-19]]></category>
		<category><![CDATA[apt-get-source]]></category>
		<category><![CDATA[apt-get-update]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[download-source]]></category>
		<category><![CDATA[get-source]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[listing]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[result]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[source-code]]></category>
		<category><![CDATA[vim-editor-page]]></category>

		<guid isPermaLink="false">http://www.taiwangeek.com/2010-02/get-source-code-for-any-linux-command.html</guid>
		<description><![CDATA[Step 2: Execute apt-get source to get the source. For example, to get source code for netstat command, do the following: Syntax: apt-get source command-name Example: apt-get source netstat ...]]></description>
			<content:encoded><![CDATA[<div id="post-3599" readability="50.892920354">
<div class="headline_area" readability="8">
<p class="headline_meta">by <span class="author vcard fn">Ramesh Natarajan</span> on <abbr class="published" title="2010-02-19">February 19, 2010</abbr></p>
</p></div>
<div class="format_text entry-content" readability="36.7722772277">
<p><strong>Question:</strong> How do I get source code of any Linux command?</p>
<p><strong>Answer:</strong> For Debian family Linux distributions, you can get source code for any Linux commands using one of the two methods mentioned below.<br /><span id="more-3599"></span></p>
<h3>Method 1: Get Source Code Using apt-get</h3>
<h3>Step 1: Add a Source URI to sources.lst</h3>
<pre class="brush:shell">$ cat /etc/apt/sources.list
deb-src http://ftp.de.debian.org/debian lenny main
</pre>
<pre class="brush:shell">$ apt-get update</pre>
<h3>Step 2: Execute apt-get source to get the source</h3>
<p>For example, to get source code for netstat command, do the following:</p>
<pre class="brush:shell">Syntax: apt-get source command-name

Example: apt-get source netstat</pre>
<h3>Method 2: Get Source Code from packages.debian.org</h3>
<p>If you are not pretty sure about the package name, you can navigate through the ‘Sections’<br />page here: <a  rel="nofollow" href="http://packages.debian.org/stable/editors/vim">http://packages.debian.org/stable/</a></p>
<ul>
<li> Click on the topic of the command you wanted to get the source.</li>
<li> Search for the command you are looking for, and click on it.</li>
<li> In the right side bar, you will have a link to download source package.</li>
</ul>
<h3>Example: Download the source code of the vim editor</h3>
<ul>
<li>Step 1: Go to the listing page of Lenny in <a  rel="nofollow" href="http://packages.debian.org/stable/">packages.debian.org</a></li>
<li>Step 2: Click on the link that says ‘editors’</li>
<li>Step 3: Search and go to the <a  rel="nofollow" href="http://packages.debian.org/stable/editors/vim">vim editor page</a></li>
<li>Step 4: In the right side bar, select and download: vim_7.1.314.orig.tar.gz</li>
</ul>
<h3>If you enjoyed this article, you might also like..</h3>
<p><center><br />
</center><br />

				</div>
</p></div>
</p>
<p>Originally posted here:<br />
<a  target="_blank" href="http://www.thegeekstuff.com/2010/02/get-source-code-for-any-linux-command/" title="Get Source Code for any Linux Command">Get Source Code for any Linux Command</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.taiwangeek.com/2010-02/get-source-code-for-any-linux-command.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (request URI doesn't have a trailing slash)

Served from: www.taiwangeek.com @ 2012-02-10 21:35:23 -->
