<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>James Pegram dot com</title>
	
	<link>http://www.jamespegram.com</link>
	<description>The random musings and incoherent, mindless drivel of an internet junkie!!</description>
	<lastBuildDate>Wed, 11 Apr 2012 20:17:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/JamesPegramDotCom" /><feedburner:info uri="jamespegramdotcom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>JamesPegramDotCom</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>SSL/HTTPS with Zend Framework</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/PwpQs6HWntQ/</link>
		<comments>http://www.jamespegram.com/sslhttps-with-zend-framework/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 20:13:09 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=421</guid>
		<description><![CDATA[I spent a fair amount of time today hunting for a decent way to force Zend Framework 1.11 to use SSL. Sadly, there was no simple answer that completely worked, so after scamming pieces parts from a number of Google searches I came up with my own solution. The task, to force all HTTP calls [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><!-- adsense -->I spent a fair amount of time today hunting for a decent way to force Zend Framework 1.11 to use SSL. Sadly, there was no simple answer that completely worked, so after scamming pieces parts from a number of Google searches I came up with my own solution. </p>
<p>The task, to force all HTTP calls to HTTPS, however, I might only want to secure selected modules/controllers in the future. My solution.</p>
<p>In configs/application.ini I added:</p>
<pre class="brush: php; title: ; notranslate">ssl.modules.require_ssl = 'all';
ssl.controllers.require_ssl = '';</pre>
<p>This could just as easily be:</p>
<pre class="brush: php; title: ; notranslate">ssl.modules.require_ssl = 'module1,module2,module3';
ssl.controllers.require_ssl = 'controller11';</pre>
<p>Now create a new plugin at plugins/Ssl.php</p>
<pre class="brush: php; title: ; notranslate">class Plugin_Ssl extends Zend_Controller_Plugin_Abstract
{

    public function preDispatch($request)
    {

        //get the config settings for SSL
        $options = new Zend_Config_Ini(APPLICATION_PATH.'/configs/application.ini');

        $secure_modules = explode(',',$options-&gt;production-&gt;ssl-&gt;modules-&gt;require_ssl);
        $secure_controllers = explode(',',$options-&gt;production-&gt;ssl-&gt;controllers-&gt;require_ssl); 

        $front = Zend_Controller_Front::getInstance();
        $request = $front-&gt;getRequest();
        $module = $request-&gt;getModuleName();
        $controller = $request-&gt;getControllerName();

        // Force SSL Only use it production environment
        if ( APPLICATION_ENV == 'production' )
        {
            if ($secure_modules[0] == 'all' || in_array(strtolower($module), $secure_modules) || in_array(strtolower($controller), $secure_controllers)) {
                if (!isset($_SERVER['HTTPS']) &amp;&amp; !$_SERVER['HTTPS']) {
                    $url        = 'https://'
                                . $_SERVER['HTTP_HOST']
                                . $request-&gt;getRequestUri();

                    $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
                    $redirector-&gt;gotoUrl($url);
                }
            }
        }
    }
} </pre>
<p>Finally in your bootstrap create the following function:</p>
<pre class="brush: php; title: ; notranslate">
    protected function _initPlugins() {
        $frontController = Zend_Controller_Front::getInstance();
        $frontController-&gt;registerPlugin( new Plugin_Ssl());
    }
</pre>
<p>This will execute the SSL test on every page load without having to add a call to every single controller.</p>
<p>That&#8217;s it. Hope it helps somebody.</p>
<p>Wait.. Why not just use Apache or .htaccess you ask? Because Zend&#8217;s .htaccess forces everything to index.php and the internal router gets stupid if you try and do it that way. </p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/PwpQs6HWntQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/sslhttps-with-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/sslhttps-with-zend-framework/</feedburner:origLink></item>
		<item>
		<title>The Ultimate A-Z Index of Apple OS X/Linux command line commands</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/PgUKNhXLh2U/</link>
		<comments>http://www.jamespegram.com/the-ultimate-a-z-index-of-apple-os-xlinux-command-line-commands/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 00:44:10 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[darwin]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[lion]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[snow leopard]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=380</guid>
		<description><![CDATA[I&#8217;m forever trying to remember command line commands for Linux or Mac OS X. I picked up this list a while ago and keep around in a text file but decided to post it here so I can get to it whenever I don&#8217;t have my laptop with me. Some of the commands are bash [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><div style="float:right;">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-5712427784228554";
/* JamesPegram-300x250 */
google_ad_slot = "2957768686";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>I&#8217;m forever trying to remember command line commands for Linux or Mac OS X. I picked up this list a while ago and keep around in a text file but decided to post it here so I can get to it whenever I don&#8217;t have my laptop with me. Some of the commands are bash built-in commands but most will work on either OS. Feel free to add to the list.</p>
<p><span style="text-decoration: underline;"><strong>A</strong></span><br />
<strong>alias</strong> &#8211; Create an alias<br />
<strong>alloc</strong> &#8211; List used and free memory<br />
<strong>apropos</strong> &#8211; Search the whatis database for strings<br />
<strong>awk</strong> &#8211; Find and Replace text within file(s)</p>
<p><span style="text-decoration: underline;"><strong>B</strong></span><br />
<strong>basename</strong> &#8211; Convert a full pathname to just a filename<br />
<strong>bash</strong> &#8211; Bourne-Again SHell<br />
<strong>bg</strong> &#8211; Send to background<br />
<strong>bind</strong> &#8211; Display readline key and function bindings<br />
<strong>bless</strong> &#8211; Set volume bootability and startup disk options.<br />
<strong>break</strong> &#8211; Exit from a For, While, Until or Select loop<br />
<strong>builtin</strong> &#8211; Execute a shell builtin<br />
<strong>bzip</strong> &#8211; Compress or decompress files</p>
<p><span style="text-decoration: underline;"><strong>C</strong></span><br />
<strong>cal</strong> &#8211; Display a calendar<br />
<strong>caller</strong> &#8211; Return the context of a subroutine call<br />
<strong>case</strong> &#8211; Conditionally perform a command<br />
<strong>cat</strong> &#8211; Concatenate and print (display) the contents of file(s)<br />
<strong>cd</strong> &#8211; Change Directory<br />
<strong>chflags</strong> &#8211; Change a file or folder&#8217;s flags<br />
<strong>chgrp</strong> &#8211; Change group ownership<br />
<strong>chmod</strong> &#8211; Change access permissions<br />
<strong>chown</strong> &#8211; Change file owner and group<br />
<strong>chroot</strong> &#8211; Run a command with a different root directory<br />
<strong>cksum</strong> &#8211; Print CRC checksum and byte counts<br />
<strong>clear</strong> &#8211; Clear terminal screen<br />
<strong>cmp</strong> &#8211; Compare two files<br />
<strong>comm</strong> &#8211; Compare two sorted files line by line<br />
<strong>command</strong> &#8211; Run a command (not a function)<br />
<strong>complete</strong> &#8211; Edit a command completion [word/pattern/list]<br />
<strong>continue</strong> &#8211; Resume the next iteration of a loop<br />
<strong>cp</strong> &#8211; Copy one or more files to another location<br />
<strong>cron</strong> &#8211; Daemon to execute scheduled commands<br />
<strong>crontab</strong> &#8211; Schedule a command to run at a later date/time<br />
<strong>curl</strong> &#8211; Transfer data from or to a server<br />
<strong>cut</strong> &#8211; Divide a file into several parts</p>
<p><span style="text-decoration: underline;"><strong>D</strong></span><br />
<strong>date</strong> &#8211; Display or change the date &amp; time<br />
<strong>dc</strong> &#8211; Desk Calculator<br />
<strong>dd</strong> &#8211; Data Dump &#8211; Convert and copy a file<br />
<strong>declare</strong> &#8211; Declare variable &amp; set attributes<br />
<strong>defaults</strong> &#8211; Set preferences, show hidden files<br />
<strong>df</strong> &#8211; Display free disk space<br />
<strong>diff</strong> &#8211; Display the differences between two files<br />
<strong>diff3</strong> &#8211; Show differences among three files<br />
<strong>dig</strong> &#8211; DNS lookup<br />
<strong>dirname</strong> &#8211; Convert a full pathname to just a path<br />
<strong>dirs</strong> &#8211; Display list of remembered directories<br />
<strong>diskutil</strong> &#8211; Disk utilities &#8211; Format, Verify, Repair<br />
<strong>disown</strong> &#8211; Unbind a job from the current login session<br />
<strong>ditto</strong> &#8211; Copy files and folders<br />
<strong>dot_clean</strong> &#8211; Remove dot-underscore files<br />
<strong>drutil</strong> &#8211; Interact with CD/DVD burners<br />
<strong>dscacheutil</strong> &#8211; Query or flush the Directory Service/DNS cache<br />
<strong>dseditgroup</strong> &#8211; Edit, create, manipulate, or delete groups<br />
<strong>dsenableroot</strong> &#8211; Enable root access<br />
<strong>dsmemberutil</strong> &#8211; View user and groups rights<br />
<strong>dscl</strong> &#8211; Directory Service command line utility<br />
<strong>du</strong> &#8211; Estimate file space usage</p>
<p><span style="text-decoration: underline;"><strong>E</strong></span><br />
<strong>echo</strong> &#8211; Display message on screen<br />
<strong>ed</strong> &#8211; A line-oriented text editor (edlin)<br />
<strong>enable</strong> &#8211; Enable and disable builtin shell commands<br />
<strong>env</strong> &#8211; List or Set environment variables<br />
<strong>eval</strong> &#8211; Evaluate several commands/arguments<br />
<strong>exec</strong> &#8211; Execute a command<br />
<strong>exit</strong> &#8211; Exit the shell<br />
<strong>expand</strong> &#8211; Convert tabs to spaces<br />
<strong>expect</strong> &#8211; Programmed dialogue with interactive programs<br />
<strong>export</strong> &#8211; Set an environment variable<br />
<strong>expr</strong> &#8211; Evaluate expressions</p>
<p><span style="text-decoration: underline;"><strong>F</strong></span><br />
<strong>false</strong> &#8211; Do nothing, unsuccessfully<br />
<strong>fc</strong> &#8211; Fix command (history)<br />
<strong>fdisk</strong> &#8211; Partition table manipulator for Darwin UFS/HFS/DOS<br />
<strong>fg</strong> &#8211; Send job to foreground<br />
<strong>file</strong> &#8211; Determine file type<br />
<strong>find</strong> &#8211; Search for files that meet a desired criteria<br />
<strong>fmt</strong> &#8211; Reformat paragraph text<br />
<strong>fold</strong> &#8211; Wrap text to fit a specified width<br />
<strong>for</strong> &#8211; Loop command<br />
<strong>fsck</strong> &#8211; Filesystem consistency check and repair<br />
<strong>fsaclctl</strong> &#8211; Filesystem enable/disable ACL support<br />
<strong>fs_usage</strong> &#8211; Filesystem usage (process/pathname)<br />
<strong>ftp</strong> &#8211; Internet file transfer program</p>
<p><span style="text-decoration: underline;"><strong>G</strong></span><br />
<strong>GetFileInfo</strong> &#8211; Get attributes of HFS+ files<br />
<strong>getopt</strong> &#8211; Parse positional parameters<br />
<strong>getopts</strong> &#8211; Parse positional parameters<br />
<strong>goto</strong> &#8211; Jump to label and continue execution<br />
<strong>grep</strong> &#8211; Search file(s) for lines that match a given pattern<br />
<strong>groups</strong> &#8211; Print group names a user is in<br />
<strong>gzip</strong> &#8211; Compress or decompress files</p>
<p><span style="text-decoration: underline;"><strong>H</strong></span><br />
<strong>halt</strong> &#8211; Stop and restart the operating system<br />
<strong>hash</strong> &#8211; Refresh the cached/remembered location of commands<br />
<strong>head</strong> &#8211; Display the first lines of a file<br />
<strong>hdiutil</strong> &#8211; Manipulate iso disk images<br />
<strong>history</strong> &#8211; Command History<br />
<strong>hostname</strong> &#8211; Print or set system name</p>
<p><span style="text-decoration: underline;"><strong>I</strong></span><br />
<strong>iconv</strong> &#8211; Convert the character set of a file<br />
<strong>id</strong> &#8211; Print user and group names/id&#8217;s<br />
<strong>if</strong> &#8211; Conditionally perform a command<br />
<strong>info</strong> &#8211; Help info<br />
<strong>install</strong> &#8211; Copy files and set attributes</p>
<p><span style="text-decoration: underline;"><strong>J</strong></span><br />
<strong>jobs</strong> &#8211; List active jobs<br />
<strong>join</strong> &#8211; Join lines on a common field</p>
<p><span style="text-decoration: underline;"><strong>K<br />
</strong></span><strong></strong><strong> kextfind</strong> &#8211; List kernel extensions<br />
<strong>kickstart</strong> &#8211; Configure Apple Remote Desktop<br />
<strong>kill</strong> &#8211; Stop a process from running</p>
<p><span style="text-decoration: underline;"><strong>L</strong></span><br />
<strong>l</strong> &#8211; List files in long format (ls -l)<br />
<strong>last</strong> &#8211; Indicate last logins of users and ttys<br />
<strong>launchctl</strong> &#8211; Load or unload daemons/agents<br />
<strong>ll</strong> &#8211; List files in long format, showing invisible files (ls -la)<br />
<strong>less</strong> &#8211; Display output one screen at a time<br />
<strong>let</strong> &#8211; Evaluate expression<br />
<strong>lipo</strong> &#8211; Convert a universal binary<br />
<strong>ln</strong> &#8211; Make links between files (hard links, symbolic links)<br />
<strong>local</strong> &#8211; Set a local (function) variable<br />
<strong>locate</strong> &#8211; Find files<br />
<strong>logname</strong> &#8211; Print current login name<br />
<strong>login</strong> &#8211; log into the computer<br />
<strong>logout</strong> &#8211; Exit a login shell (bye)<br />
<strong>lpr</strong> &#8211; Print files<br />
<strong>lprm</strong> &#8211; Remove jobs from the print queue<br />
<strong>lpstat</strong> &#8211; Printer status information<br />
<strong>ls</strong> &#8211; List information about file(s)<br />
<strong>lsregister</strong> &#8211; Reset the Launch Services database<br />
<strong>lsbom</strong> &#8211; List a bill of materials file<br />
<strong>lsof</strong> &#8211; List open files</p>
<p><span style="text-decoration: underline;"><strong>M</strong></span><br />
<strong>man</strong> &#8211; Help manual<br />
<strong>mdfind</strong> &#8211; Spotlight search<br />
<strong>mdutil</strong> &#8211; Manage Spotlight metadata store<br />
<strong>mkdir</strong> &#8211; Create new folder(s)<br />
<strong>mkfifo</strong> &#8211; Make FIFOs (named pipes)<br />
<strong>more</strong> &#8211; Display output one screen at a time<br />
<strong>mount</strong> &#8211; Mount a file system<br />
<strong>mv</strong> &#8211; Move or rename files or directories</p>
<p><span style="text-decoration: underline;"><strong>N</strong></span><br />
<strong>net</strong> &#8211; Manage network resources<br />
<strong>netstat</strong> &#8211; Show network status<br />
<strong>networksetup</strong> &#8211; Network and System Preferences<br />
<strong>nice</strong> &#8211; Set the priority of a command<br />
<strong>nohup</strong> &#8211; Run a command immune to hangups<br />
<strong>ntfs.util</strong> &#8211; NTFS file system utility</p>
<p><span style="text-decoration: underline;"><strong>O</strong></span><br />
<strong>onintr</strong> &#8211; Control the action of a shell interrupt<br />
<strong>open</strong> &#8211; Open a file/folder/URL/Application<br />
<strong>opensnoop</strong> &#8211; Snoop file opens as they occur<br />
<strong>osacompile</strong> &#8211; Compile Applescript<br />
<strong>osascript</strong> &#8211; Execute AppleScript</p>
<p><span style="text-decoration: underline;"><strong>P</strong></span><br />
<strong>passwd</strong> &#8211; Modify a user password<br />
<strong>paste</strong> &#8211; Merge lines of files<br />
<strong>pbcopy</strong> &#8211; Copy data to the clipboard<br />
<strong>pbpaste</strong> &#8211; Paste data from the Clipboard<br />
<strong>pico</strong> &#8211; Simple text editor<br />
<strong>ping</strong> &#8211; Test a network connection<br />
<strong>pkgutil</strong> &#8211; Query and manipulate installed packages<br />
<strong>plutil</strong> &#8211; Property list utility<br />
<strong>pmset</strong> &#8211; Power Management settings<br />
<strong>popd</strong> &#8211; Restore the previous value of the current directory<br />
<strong>pr</strong> &#8211; Convert text files for printing<br />
<strong>printenv</strong> &#8211; List environment variables<br />
<strong>printf</strong> &#8211; Format and print data<br />
<strong>ps</strong> &#8211; Process status<br />
<strong>pushd</strong> &#8211; Save and then change the current directory<br />
<strong>pwd</strong> &#8211; Print Working Directory</p>
<p><span style="text-decoration: underline;"><strong>Q</strong></span><br />
<strong>quota</strong> &#8211; Display disk usage and limits</p>
<p><span style="text-decoration: underline;"><strong>R</strong></span><br />
<strong>rcp</strong> &#8211; Copy files between machines<br />
<strong>read</strong> &#8211; Read one line from standard input<br />
<strong>readonly</strong> &#8211; Mark a variable or function as read-only<br />
<strong>reboot</strong> &#8211; Stop and restart the system<br />
<strong>return</strong> &#8211; Exit a function<br />
<strong>rev</strong> &#8211; Reverse lines of a file<br />
<strong>rm</strong> &#8211; Remove files<br />
<strong>rmdir</strong> &#8211; Remove folder(s)<br />
<strong>rpm</strong> &#8211; Remote Package Manager<br />
<strong>rsync</strong> &#8211; Remote file copy &#8211; Sync file tree (also RsyncX)</p>
<p><span style="text-decoration: underline;"><strong>S</strong></span><br />
<strong>say</strong> &#8211; Convert text to audible speech<br />
<strong>screen</strong> &#8211; Multiplex terminal, run remote shells via ssh<br />
<strong>screencapture</strong> &#8211; Capture screen image to file or disk<br />
<strong>sdiff</strong> &#8211; Merge two files interactively<br />
<strong>security</strong> &#8211; Administer Keychains, keys, certificates and the Security framework<br />
<strong>sed</strong> &#8211; Stream Editor<br />
<strong>select</strong> &#8211; Generate a list of items<br />
<strong>set</strong> &#8211; Set a shell variable = value<br />
<strong>setfile</strong> &#8211; Set attributes of HFS+ files<br />
<strong>shift</strong> &#8211; Shift positional parameters<br />
<strong>shopt</strong> &#8211; Set shell options<br />
<strong>shutdown</strong> &#8211; Shutdown or restart OS X<br />
<strong>sips</strong> &#8211; Scriptable image processing system<br />
<strong>sleep</strong> &#8211; Delay for a specified time<br />
<strong>softwareupdate</strong> &#8211; System software update tool<br />
<strong>sort</strong> &#8211; Sort text files<br />
<strong>source</strong> &#8211; Execute commands from a file<br />
<strong>split</strong> &#8211; Split a file into fixed-size pieces<br />
<strong>stop</strong> &#8211; Stop a job or process<br />
<strong>su</strong> &#8211; Substitute user identity<br />
<strong>sudo</strong> &#8211; Execute a command as another user<br />
<strong>sum</strong> &#8211; Print a checksum for a file<br />
<strong>suspend</strong> &#8211; Suspend execution of this shell<br />
<strong>sw_vers</strong> &#8211; Print Mac OS X operating system version<br />
<strong>system_profiler</strong> &#8211; Report system configuration<br />
<strong>systemsetup</strong> &#8211; Computer and display system settings</p>
<p><span style="text-decoration: underline;"><strong>T</strong></span><br />
<strong>tail</strong> &#8211; Output the last part of files<br />
<strong>tar</strong> &#8211; Tape ARchiver<br />
<strong>tee</strong> &#8211; Redirect output to multiple files<br />
<strong>test</strong> &#8211; Condition evaluation<br />
<strong>textutil</strong> &#8211; Manipulate text files in various formats (Doc,html,rtf)<br />
<strong>time</strong> &#8211; Measure Program Resource Use<br />
<strong>times</strong> &#8211; Print shell &amp; shell process times<br />
<strong>top</strong> &#8211; Display process information<br />
<strong>touch</strong> &#8211; Change file timestamps<br />
<strong>tr</strong> &#8211; Translate, squeeze, and/or delete characters<br />
<strong>trap</strong> &#8211; Execute a command when the shell receives a signal<br />
<strong>traceroute</strong> &#8211; Trace Route to Host<br />
<strong>true</strong> &#8211; Do nothing, successfully<br />
<strong>tty</strong> &#8211; Print filename of terminal on stdin<br />
<strong>type</strong> &#8211; Describe a command</p>
<p><span style="text-decoration: underline;"><strong>U</strong></span><br />
<strong>ufs.util</strong> &#8211; Mount/unmount UFS file system<br />
<strong>ulimit</strong> &#8211; limit the use of system-wide resources<br />
<strong>umask</strong> &#8211; Users file creation mask<br />
<strong>umount</strong> &#8211; Unmount a device<br />
<strong>unalias</strong> &#8211; Remove an alias<br />
<strong>uname</strong> &#8211; Print system information<br />
<strong>unexpand</strong> &#8211; Convert spaces to tabs<br />
<strong>uniq</strong> &#8211; Uniquify files<br />
<strong>units</strong> &#8211; Convert units from one scale to another<br />
<strong>unset</strong> &#8211; Remove variable or function names<br />
<strong>until</strong> &#8211; Loop command<br />
<strong>uptime</strong> &#8211; Show how long system has been running<br />
<strong>users</strong> &#8211; Print login names of users currently logged in<br />
<strong>uuencode</strong> &#8211; Encode a binary file<br />
<strong>uudecode</strong> &#8211; Decode a file created by uuencode<br />
<strong>uuidgen</strong> &#8211; Generate a Unique ID (UUID/GUID)<br />
<strong>uucp</strong> &#8211; Unix to Unix copy</p>
<p><span style="text-decoration: underline;"><strong>V</strong></span><br />
<strong>vi</strong> &#8211; Text Editor</p>
<p><span style="text-decoration: underline;"><strong>W</strong></span><br />
<strong>wait</strong> &#8211; Wait for a process to complete<br />
<strong>wc</strong> &#8211; Print byte, word, and line counts<br />
<strong>whatis</strong> &#8211; Search the whatis database for complete words<br />
<strong>where</strong> &#8211; Report all known instances of a command<br />
<strong>which</strong> &#8211; Locate a program file in the user&#8217;s path<br />
<strong>while</strong> &#8211; Loop command<br />
<strong>who</strong> &#8211; Print all usernames currently logged on<br />
<strong>whoami</strong> &#8211; Print the current user id and name<br />
<strong>write</strong> &#8211; Send a message to another user</p>
<p><span style="text-decoration: underline;"><strong>X</strong></span><br />
<strong>xargs</strong> &#8211; Execute utility &#8211; passing arguments</p>
<p><span style="text-decoration: underline;"><strong>Y</strong></span><br />
<strong>yes</strong> &#8211; Print a string until interrupted</p>
<p><strong>!!</strong> &#8211; Run the last command again</p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/PgUKNhXLh2U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/the-ultimate-a-z-index-of-apple-os-xlinux-command-line-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/the-ultimate-a-z-index-of-apple-os-xlinux-command-line-commands/</feedburner:origLink></item>
		<item>
		<title>Schedule Random Post Time</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/FgMuXJZCUwg/</link>
		<comments>http://www.jamespegram.com/schedule-random-post-time/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 00:03:33 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[posts]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[schedule]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=402</guid>
		<description><![CDATA[I&#8217;ll admit, I&#8217;m about as lazy a blogger as they come and when it comes to scheduling posts to be published in the future I really despise having to decide on what day and at what time the post should appear. After hacking a few other scripts to do something very similar I ran across [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://www.jamespegram.com/wp-content/uploads/2011/08/screenshot-1.png" alt="" title="screenshot-1" width="295" height="298" class="aligncenter size-full wp-image-403" /><br />
<div style="float:right;">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-5712427784228554";
/* JamesPegram-300x250 */
google_ad_slot = "2957768686";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>I&#8217;ll admit, I&#8217;m about as lazy a blogger as they come and when it comes to scheduling posts to be published in the future I really despise having to decide on what day and at what time the post should appear. After hacking a few other scripts to do something very similar I ran across a plugin called <a href="http://wordpress.org/extend/plugins/datetime-now-button/">Date/Time Now Button</a> created by someone named radiok. After checking it out I found it was pretty close to what I wanted but didn&#8217;t perform a random set. Since radiok already had the javascript worked out I just &#8220;adapted&#8221; that code to work the way I wanted it to. </p>
<p>Schedule Random Post Time adds a button to the post, page and comments that allows you to generate a random publish date. This plugin is useful for us lazy people that would rather not take the time trying to decide what date and time in the future to schedule a post for. Simply click the button and let it decide for you. It&#8217;s pretty simple really. Simply set the maximum number of hours into the future you want posts scheduled for in the settings, then just click the button and a random date between current time and your future time will be generated for you. Easy Peasy.</p>
<p><img src="http://www.jamespegram.com/wp-content/uploads/2011/08/screenshot-2.png" alt="" title="screenshot-2" width="385" height="214" class="aligncenter size-full wp-image-404" /></p>
<p><strong>Installation is simple:</strong></p>
<ol>
<li><a href="http://wordpress.org/extend/plugins/schedule-random-post-time/">Download the plugin</a> from WordPress.org.</li>
<li>Copy it to the wp-content/plugins directory of your blog.</li>
<li>Enable the plugin in your admin panel.</li>
<li>Set the maximum number of hours into the future you want posts scheduled for.</li>
<li>An option for Schedule Random Post Time will appear under Settings.</li>
<li>Enter the verification code for each service you wish to use</li>
</ol>
<p><strong>Support</strong><br />
If you like this plugin and want to support me, leave a comment or check out my <a href="http://www.jamespegram.com/donate/">donations and support</a> page!</p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/FgMuXJZCUwg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/schedule-random-post-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/schedule-random-post-time/</feedburner:origLink></item>
		<item>
		<title>Webmaster Tools Verification</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/og0sbBcrpG0/</link>
		<comments>http://www.jamespegram.com/webmaster-tools-verification/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 20:35:03 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[admin panel]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[donations]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google webmaster tools]]></category>
		<category><![CDATA[input box]]></category>
		<category><![CDATA[lt]]></category>
		<category><![CDATA[major search engines]]></category>
		<category><![CDATA[meta tag]]></category>
		<category><![CDATA[site explorer]]></category>
		<category><![CDATA[tool installation]]></category>
		<category><![CDATA[verification code]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=103</guid>
		<description><![CDATA[All three of the major search engines offer some kind of website service. The most popular being Google Webmaster Tools. Yahoo offers Site Explorer and Bing has Webmaster Center. All three require that you verify your site and offer various methods to do so. This plugin uses the meta option and inserts a meta tag [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>All three of the major search engines offer some kind of website service. The most popular being Google Webmaster Tools. Yahoo offers Site Explorer and Bing has Webmaster Center. All three require that you verify your site and offer various methods to do so. This plugin uses the meta option and inserts a meta tag in your sites section of your site.</p>
<p><img class="aligncenter size-medium wp-image-116" title="webmaster-tools" src="http://www.jamespegram.com/wp-content/uploads/2009/12/webmaster-tools-550x341.png" alt="" width="550" height="341" /></p>
<p>If you&#8217;ve used WordPress.com then this will look familiar since it&#8217;s based on that tool.</p>
<p><strong>Installation is simple:</strong></p>
<ol>
<li><a href="http://wordpress.org/extend/plugins/webmaster-tools-verification/">Download the plugin</a> from WordPress.org.</li>
<li>Copy it to the wp-content/plugins directory of your blog.</li>
<li>Enable the plugin in your admin panel.</li>
<li>An option for Webmaster Tools Verification will appear under Settings.</li>
<li>Enter the verification code for each service you wish to use</li>
</ol>
<p><strong>FAQ</strong></p>
<ul>
<li><em><strong>Where do I get the verification code?</strong></em><br />
Go to either <a href="https://www.google.com/webmasters/tools/">Google Webmaster Tools</a>, <a href="https://siteexplorer.search.yahoo.com/">Yahoo Site Explorer</a>, or <a href="http://www.bing.com/webmaster">Bing Webmaster Center</a>, find the option to add/verify a new site then select the meta option. You be provided with a piece of code and instructions to add it to your site.</li>
<li><em><strong>What do I do with the code once I have it?</strong></em><br />
All you need is the actual content= code, the plugin will automatically format the meta tag when it inserts it.<br />
Ex.: Google will give you a piece of code like this: <code>&lt;meta name='google-site-verification' content='<strong><span style="color: red;">dBw5CvburAxi537Rp9qi5uG2174Vb6JwHwIRwPSLIK8</span></strong>'&gt;</code><br />
You want to copy the code: <strong>dBw5CvburAxi537Rp9qi5uG2174Vb6JwHwIRwPSLIK8</strong> and paste it in the input box for Google.</li>
<li><em><strong>I&#8217;m using WPMU but I don&#8217;t want the plugin automatically activated for each site. Can I just put it in the wp-content/plugins directory so each blog owner can choose whether or not they want it activated?</strong></em><br />
WPMU is no longer supported but the plugin should work fine with WordPress in network mode.</li>
</ul>
<p><strong>Support</strong><br />
If you like this plugin and want to support me, leave a comment or check out my <a href="http://www.jamespegram.com/donate/">donations and support</a> page!</p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/og0sbBcrpG0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/webmaster-tools-verification/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/webmaster-tools-verification/</feedburner:origLink></item>
		<item>
		<title>Choosing A Commerical PHP Framework</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/2ayoCUT1Spk/</link>
		<comments>http://www.jamespegram.com/choosing-a-php-framework/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 13:47:35 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=386</guid>
		<description><![CDATA[One of the primary tasks my new J.O.B. requires is determining the development direction for a new SaaS product. On the surface it&#8217;s a relatively simple concept, capture client information send it off to a vendor via EDI formatted message and receive a result via the same. Process that result and do it again. On [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://www.jamespegram.com/wp-content/uploads/2011/07/ZendFramework-logo-550x145.png" alt="" title="ZendFramework-logo" width="550" height="145" class="aligncenter size-medium wp-image-388" /><br />
One of the primary tasks my new J.O.B. requires is determining the development direction for a new SaaS product. On the surface it&#8217;s a relatively simple concept, capture client information send it off to a vendor via EDI formatted message and receive a result via the same. Process that result and do it again. On paper, it sounds simple. Why then has it been made to be so blasted complicated that several developers have worked on it and gotten nowhere? </p>
<p>Now that this puppy is mine to deal with I&#8217;m look at starting over from scratch. One thing I detest is picking up where someone else left off. Since we are primarily a PHP shop for our web development I&#8217;m comfortable staying in that arena, but like anything else, I don&#8217;t want to waste a bunch of time having to create what ultimately amounts to a framework to manage all the tedious things every app has to deal with (user management, security, session management, templating).</p>
<p>So I&#8217;ve spent a good deal of time looking at the various PHP frameworks out there but I&#8217;ve decided that only two are really worth the effort. Zend or Code Igniter. Zend is the obvious choice, because it&#8217;s less a framework than it is a collection of libraries. The major downside to Zend is obviously the learning curve and while CI that&#8217;s still an issue with CI, from what I can tell the curve isn&#8217;t quite as long as it is with Zend.</p>
<p>That said, Zend is most likely overkill for what I&#8217;m looking to build at the moment, but I also foresee a near term future that includes rebuilding some current fat client applications to be more web based thus requiring the need of multiple PHP programmers, as well as, I&#8217;m sure some requirement that the app I&#8217;m currently working on be able to integrate to some degree with that future.</p>
<p>The whole thought process here is the fact that I really am not a fan of any of the frameworks. However I also despise continually creating functions that do the same things over and over again. I also do not want to have to worry with maintaining a core framework myself. I&#8217;d much rather be able to just drop-in a module to update some functionality and not worry about having to build it myself. Plus, I like the idea of having a coding standard enforced on all developers, something else I despised from past endeavors. There&#8217;s also some concern over licensing, etc., with Zend there&#8217;s a high confidence that we&#8217;ll not run into any future legal issues, some of the other frameworks don&#8217;t give me that same warm and fuzzy. </p>
<p>So there&#8217;s my dilemma. Any thoughts on one vs the other? Rolling your own?</p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/2ayoCUT1Spk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/choosing-a-php-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/choosing-a-php-framework/</feedburner:origLink></item>
		<item>
		<title>They’re Looking For Me!</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/-oTUbj0_UiY/</link>
		<comments>http://www.jamespegram.com/theyre-looking-for-me/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 21:17:29 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Funny]]></category>
		<category><![CDATA[hiding]]></category>
		<category><![CDATA[jokes]]></category>
		<category><![CDATA[kids]]></category>
		<category><![CDATA[parents]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=348</guid>
		<description><![CDATA[I&#8217;ve seen this one around the net many times but it&#8217;s funny every time I read it. Parent&#8217;s this is why you get gray hair. The boss of a big company needed to call one of his employees about an urgent problem with one of the main computers. He dialed the employee&#8217;s home phone number [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://www.jamespegram.com/wp-content/uploads/2011/03/kid_with_cell_phone.jpg" alt="" title="kid_with_cell_phone" width="500" height="334" class="aligncenter size-full wp-image-350" /><br />
I&#8217;ve seen this one around the net many times but it&#8217;s funny every time I read it. Parent&#8217;s this is why you get gray hair.</p>
<p>The boss of a big company needed to call one of his employees about an urgent problem with one of the main computers. He dialed the employee&#8217;s home phone number and was greeted with a child&#8217;s whispered, &#8220;Hello?&#8221;</p>
<p>Feeling put out at the inconvenience of having to talk to a youngster the boss asked, &#8220;Is your Daddy home?&#8221;</p>
<p>&#8220;Yes&#8221;, whispered the small voice.</p>
<p>&#8220;May I talk with him?&#8221; the man asked.</p>
<p>To the surprise of the boss, the small voice whispered, &#8220;No.&#8221;</p>
<p>Wanting to talk with an adult, the boss asked, &#8220;Is your Mommy there?&#8221;</p>
<p>&#8220;Yes&#8221;, came the answer. &#8220;May I talk with her?&#8221;</p>
<p>Again the small voice whispered, &#8220;No&#8221;.</p>
<p>Knowing that it was not likely that a young child would be left home alone, the boss decided he would just leave a message with the person who should be there watching over the child.  &#8220;Is there anyone there besides you?&#8221;, the boss asked the child.</p>
<p>&#8220;Yes&#8221; whispered the child, &#8220;A policeman.&#8221;</p>
<p>Wondering what a cop would be doing at his employee&#8217;s home, the boss asked, &#8220;May I speak with the policeman&#8221;?</p>
<p>&#8220;No, he&#8217;s busy&#8221;, whispered the child.</p>
<p>&#8220;Busy doing what?, asked the boss.</p>
<p>&#8220;Talking to Daddy and Mommy and the Fireman,&#8221; came the whispered answer.</p>
<p>Growing concerned and even worried as he heard what sounded like a helicopter through the ear piece on the phone the boss asked, &#8220;What is that noise?&#8221;</p>
<p>&#8220;A hello-copper&#8221;, answered the whispering voice.</p>
<p>&#8220;What is going on there?&#8221;, asked the boss, now alarmed.</p>
<p>In an awed whispering voice the child answered, &#8220;The search team just landed the hello-copper.&#8221;</p>
<p>Alarmed, concerned and more than just a little frustrated the boss asked, &#8220;Why are they there&#8221;?</p>
<p>Still whispering, the young voice replied along with a muffled giggle&#8230;.</p>
<p><strong>&#8220;They&#8217;re looking for me!&#8221;</strong></p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/-oTUbj0_UiY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/theyre-looking-for-me/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/theyre-looking-for-me/</feedburner:origLink></item>
		<item>
		<title>The Discussion Flow Chart</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/kgXzTYXQ4uU/</link>
		<comments>http://www.jamespegram.com/the-discussion-flow-chart/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 22:34:31 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Funny]]></category>
		<category><![CDATA[discussion]]></category>
		<category><![CDATA[flow chart]]></category>
		<category><![CDATA[lecture]]></category>
		<category><![CDATA[semon]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=345</guid>
		<description><![CDATA[Thank you for requesting to have a discussion with me about this topic. Discussions are a dialog between people in which the participants are willing to alter their position if it makes sense to do so. Sometimes, people confuse &#8220;discussion&#8221; with &#8220;sermon&#8221; or &#8220;lecture&#8221;. These non-discussions are a waste of time since all parties are [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.jamespegram.com/wp-content/uploads/2011/03/discussion-flow-chart.jpg"><img src="http://www.jamespegram.com/wp-content/uploads/2011/03/discussion-flow-chart-550x715.jpg" alt="" title="discussion-flow-chart" width="550" height="715" class="alignright size-medium wp-image-346" /></a><br />
Thank you for requesting to have a discussion with me about this topic. Discussions are a dialog between people in which the participants are willing to alter their position if it makes sense to do so. Sometimes, people confuse &#8220;discussion&#8221; with &#8220;sermon&#8221; or &#8220;lecture&#8221;. These non-discussions are a waste of time since all parties are intractable in the their existing views.</p>
<p>So that our time is not wasted please use this guide to determine whether we can actually have a discussion about this topic.</p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/kgXzTYXQ4uU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/the-discussion-flow-chart/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/the-discussion-flow-chart/</feedburner:origLink></item>
		<item>
		<title>How To Add An Uninstaller To Your Plugin</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/310iBhpsx-w/</link>
		<comments>http://www.jamespegram.com/how-to-add-an-uninstaller-to-your-plugin/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 13:08:56 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[uninstall]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=335</guid>
		<description><![CDATA[On of the most annoying things I find about WordPress Plugins is that once you decide you no longer want to use one, simply deactivating the plugin, in most cases, still leaves behind a bunch of garbage in your database. Maybe you like to test a plugin to see what it does or maybe it [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://www.jamespegram.com/wp-content/uploads/2011/03/plugin-uninstaller.png" alt="" title="plugin-uninstaller" width="272" height="268" class="alignright size-full wp-image-341" />On of the most annoying things I find about WordPress Plugins is that once you decide you no longer want to use one, simply deactivating the plugin, in most cases, still leaves behind a bunch of garbage in your database. Maybe you like to test a plugin to see what it does or maybe it sounded great but in reality it wasn&#8217;t quite what you were after. So you deactivate it and/or delete it thinking it&#8217;s gone right? Usually not. You might be left with altered database tables, indexes which now make your database inefficient, various settings and options that are now orphaned.</p>
<p>I recently decided I didn&#8217;t want to be part of this crowd. I wanted to give a reasonable option to my plugin users to 100% completely uninstall a plugin if they so chose. After a little research and some tweaking here&#8217;s what I came up with. It&#8217;s really rather simple.</p>
<p><strong>There are 3 parts.</strong><br />
1. The uninstall form<br />
2. The check for the uninstall submission<br />
3. The uninstall itself</p>
<p>So here we go. First you need to create an uninstall form in your plugin. As you can see in the picture, I include a check box the user must check to confirm they want to uninstall the plugin. The form should look something like:</p>
<pre class="brush: php; title: ; notranslate">
&lt;form method=&quot;post&quot;&gt;
&lt;input id=&quot;plugin&quot; name=&quot;plugin&quot; type=&quot;hidden&quot; value=&quot;plugin/plugin.php&quot; /&gt;

	if ( isset( $_POST['uninstall'] ) &amp;&amp; ! isset( $_POST['uninstall_confirm'] ) ) {

You must check the confirm box before continuing.

	}

The options for this plugin are not removed on deactivation to ensure that no data is lost unintentionally.

If you wish to remove all plugin information for your database be sure to run this uninstall utility first.

&lt;input name=&quot;uninstall_confirm&quot; type=&quot;checkbox&quot; value=&quot;1&quot; /&gt;Please confirm before proceeding

&lt;input class=&quot;button-secondary&quot; name=&quot;uninstall&quot; type=&quot;submit&quot; value=&quot;Uninstall&quot; /&gt;
&lt;/form&gt;
</pre>
<p>I like to wrap this in a function called <em>pluginname</em>_form_uninstall() to prevent conflicts then add that to the plugin options screen.  Next we need to check to see if the form was submitted.</p>
<pre class="brush: php; title: ; notranslate">
if ( isset( $_POST['uninstall'], $_POST['uninstall_confirm'] ) ) {
	pluginname_uninstall();
}
</pre>
<p>Somewhere near the top of the plugin or before execution starts add a check of the $_POST vars to see if our uninstall option was submitted. If it was we call the third piece of this puzzle, the uninstall function itself.</p>
<pre class="brush: php; title: ; notranslate">
function pluginname_uninstall() {

	delete_option( 'plugin_version' );
	delete_option( 'plugin_options' );

        // This is where you would remove and tables, indexes or fields you added when your plugin was first activated. Also anything else that caused modification to the database should be undone here.

        // Do not change (this deactivates the plugin)
	$current = get_settings('active_plugins');
	array_splice($current, array_search( $_POST['plugin'], $current), 1 ); // Array-function!
	update_option('active_plugins', $current);
	header('Location: plugins.php?deactivate=true');
}
</pre>
<p>This is pretty simple but it depends on what you&#8217;ve added to the database.</p>
<ul>
<li>First use the delete_option function to  remove any settings added to the wp_options table.</li>
<li>Next undo any SQL modification you made when your plugin was created. Any tables, fields or indexes added need to be removed or changed like your plugin was never there.</li>
<li>The final part deactivates the plugin and switches the user to the plugins management screen.</li>
</ul>
<p>At this point the plugin can be <em>activated</em> again or <em>deleted</em>.</p>
<p>As you can this this really is fairly simple, I&#8217;m not why more developers don&#8217;t use something similar to this. I for one can&#8217;t stand to have a cluttered up database of things I don&#8217;t need.</p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/310iBhpsx-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/how-to-add-an-uninstaller-to-your-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/how-to-add-an-uninstaller-to-your-plugin/</feedburner:origLink></item>
		<item>
		<title>Your XBOX Broke Didn’t It?</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/YlE_bI7p__o/</link>
		<comments>http://www.jamespegram.com/your-xbox-broke-didnt-it/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 00:07:58 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Funny]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[xbox]]></category>
		<category><![CDATA[xbox-360]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=330</guid>
		<description><![CDATA[I can just see this conversation happening in a number of households that I know of. Except for one, where the XBOX, PS3 and Wii would all have to break.]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://www.jamespegram.com/wp-content/uploads/2011/03/xboxbroke.png" alt="" title="xboxbroke" width="450" height="713" class="aligncenter size-full wp-image-331" /><br />
I can just see this conversation happening in a number of households that I know of. Except for one, where the XBOX, PS3 and Wii would all have to break. </p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/YlE_bI7p__o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/your-xbox-broke-didnt-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/your-xbox-broke-didnt-it/</feedburner:origLink></item>
		<item>
		<title>WordPress 3.1 Finally Adds Long Awaited Admin Bar</title>
		<link>http://feedproxy.google.com/~r/JamesPegramDotCom/~3/zemH1CwlFaU/</link>
		<comments>http://www.jamespegram.com/wordpress-3-1-finally-adds-long-awaited-admin-bar/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 16:21:49 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[admin bar]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress 3.1]]></category>

		<guid isPermaLink="false">http://www.jamespegram.com/?p=298</guid>
		<description><![CDATA[I just got finished updating my blogs to WordPress 3.1, the latest release that&#8217;s been out for around two weeks now. The installation was painless and I have no real issues to report yet. The first thing I noticed was the WordPress.com style admin bar which is a feature I think many will really like. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://www.jamespegram.com/wp-content/uploads/2011/03/wordpress31.png" alt="" title="wordpress31" width="320" height="320" class="aligncenter size-full wp-image-299" /><br />
I just got finished updating my blogs to WordPress 3.1, the latest release that&#8217;s been out for around two weeks now. The installation was painless and I have no real issues to report yet. The first thing I noticed was the WordPress.com style admin bar which is a feature I think many will really like. Some won&#8217;t, but there&#8217;s a number of ways to turn it off. The easiest of which is to go into your personal profile options and just turn it off or you can change it display only in the admin section. </p>
<p><a href="http://www.jamespegram.com/wp-content/uploads/2011/03/wp31adminbar.png"><img src="http://www.jamespegram.com/wp-content/uploads/2011/03/wp31adminbar-550x21.png" alt="" title="wp31adminbar" width="550" height="21" class="aligncenter size-medium wp-image-302" /></a></p>
<blockquote><p>This release features a lightning fast redesigned linking workflow which makes it easy to link to your existing posts and pages, an admin bar so you’re never more than a click away from your most-used dashboard pages, a streamlined writing interface that hides many of the seldom-used panels by default to create a simpler and less intimidating writing experience for new bloggers (visit Screen Options in the top right to get old panels back), and a refreshed blue admin scheme available for selection under your personal options.</p>
<p>There’s a bucket of candy for developers as well, including our new Post Formats support which makes it easy for themes to create portable tumblelogs with different styling for different types of posts, new CMS capabilities like archive pages for custom content types, a new Network Admin, an overhaul of the import and export system, and the ability to perform advanced taxonomy and custom fields queries.</p></blockquote>
<p>As I&#8217;m writing this post and getting it ready to publish I can tell there is a definite speed increase in editor interface which is good, it was starting to get bogged down. option panels I rarely use are all minimized and can be turned off via the screen option tab to clean up the editor interface even more.</p>
<p>Most of the other stuff I haven&#8217;t looked at yet, but I&#8217;m excited to play around with some of the new developer features and I can&#8217;t wait to see what the various frameworks can come up with now.</p>
<p>If you haven&#8217;t upgraded to WordPress 3.1 yet I certainly recommend you do. As always though, be sure to backup your database first, just in case.</p>
<img src="http://feeds.feedburner.com/~r/JamesPegramDotCom/~4/zemH1CwlFaU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jamespegram.com/wordpress-3-1-finally-adds-long-awaited-admin-bar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jamespegram.com/wordpress-3-1-finally-adds-long-awaited-admin-bar/</feedburner:origLink></item>
	</channel>
</rss>

