<?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>:: TechBlog :: &#187; Open Source</title>
	<atom:link href="http://techblog.touchbasic.com/html/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://techblog.touchbasic.com/html</link>
	<description>Techblog is collection of articles covering a wide variety of tech related topics including: Linux, Microsoft, Google, web development, web design, open source, wordpress, security, and more.</description>
	<lastBuildDate>Thu, 04 Mar 2010 15:51:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Setting up a Minimal Samba Server in Fedora Core 12</title>
		<link>http://techblog.touchbasic.com/html/setting-up-a-minimal-samba-server-in-fedora-core-12/</link>
		<comments>http://techblog.touchbasic.com/html/setting-up-a-minimal-samba-server-in-fedora-core-12/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 04:58:47 +0000</pubDate>
		<dc:creator>elran</dc:creator>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[Fedora Code]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://techblog.touchbasic.com/html/?p=505</guid>
		<description><![CDATA[Goal:
Minimal FC12 Samba install with low RAM usage, high security, and least amount of configuration.
Why?
Quickly turn an older machine into a modern Fedora Core 12 file server compatible with linux and windows clients. Less software installed means less setup, less maintenance, less updates, and less chance of human error somewhere along the way. The theory [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Goal:</strong><br />
Minimal FC12 <a href="http://www.samba.org/">Samba</a> install with low RAM usage, high security, and least amount of configuration.</p>
<p><strong>Why?</strong><br />
Quickly turn an older machine into a modern Fedora Core 12 file server compatible with linux and windows clients. Less software installed means less setup, less maintenance, less updates, and less chance of human error somewhere along the way. The theory here is, the system starts out relatively secure and (if kept up-to-date) should remains so over time.</p>
<p><strong>Side Note:</strong><br />
There are definitely many other ways to go about setting up a Samba server, much of which depends on your networking environment and overall requirements / constraints. This article is meant more as a guide &#8211; my notes which describe the method i happen to use &#8211; so that if i have to, i can do it all again.</p>
<p><strong>Assumptions:</strong><br />
- Comfortable with install and use of Fedora Core Linux OS (command line)<br />
- Basic understanding of networking concepts (setting up a static IP)<br />
- Some experience with editing the smb.conf file</p>
<p><strong>Features:</strong><br />
- No GUI / Desktop Environment<br />
- Low RAM usage: boots up @ ~80MB with smbd and nmbd running<br />
- SELinux and iptables firewall enabled / configured for use with Samba<br />
- Samba Security level = User</p>
<p><strong>System Resources:</strong><br />
CPU: AMD @ 700MHz<br />
RAM: 192MB</p>
<p><strong>Steps Involved:</strong></p>
<ol>
<li><a href="http://fedoraproject.org/en/get-fedora-all">Download</a> and burn the Fedora-12-i386-DVD.iso file to dvd</li>
<li>Boot from the disc and go through install process (with less that 200MB RAM it defaults to text mode install &#8211; you can also force a text mode install at the boot: prompt by typing: linux text)</li>
<li>Once install is completed and system is rebooted, login as root</li>
<li>Check that networking is up<br />
- type:
<pre>ifconfig</pre>
<p> (see if you have an IP address)<br />
- type:
<pre>dhclient eth0</pre>
<p> (to use dhcp for now)</li>
<li>Bring the system up to date<br />
- type:
<pre>yum check-update</pre>
<p> (to check for updates first)<br />
- type:
<pre>yum update</pre>
<p> (say &#8220;yes&#8221; to install the updates)</li>
<p>- type:
<pre>yum list installed</pre>
<p> (to see a list of all installed packages)</p>
<li>Check to see what package &#8220;groups&#8221; got installed by default<br />
- type:
<pre>yum grouplist > grouplist.txt</pre>
<p>- type:
<pre>cat grouplist.txt | more</pre>
</li>
<li>Remove any unwanted package groups<br />
- type:
<pre>yum groupremove "Mail Server"</pre>
</li>
<li>Add the Samba package group<br />
- type:
<pre>yum groupinstall "Windows File Server"</pre>
</li>
<li>Configure Samba by editing /etc/samba/smb.conf<br />
- Note, for Vista support (in the Global section) add:
<pre>client NTLMv2 auth = yes</pre>
<p>- Note, to hide unreadable files like /lost+found/ (in the Global section) add:
<pre>hide unreadable = yes</pre>
<p>- type:
<pre>testparm</pre>
<p> (confirm output has no errors in it)</li>
<li>Deal with SELinux security policies (see default smb.conf file for details)<br />
- type:
<pre>setsebool -P samba_domain_controller on</pre>
<p>- type:
<pre>setsebool -P samba_enable_home_dirs on</pre>
<p>- type:
<pre>chcon -t samba_share_t /path-to-mounted-directories</pre>
<p> (remember to mount any/all directories first)<br />
- type:
<pre>ls -ldZ /path-to-mounted-directories</pre>
<p> (to confirm it worked)<br />
- Note, for existing shares, to make sure this affects all files and folders recursively add:
<pre>chcon -R -t samba_share_t /path-to-existing-mounted-directories</pre>
<p>- Note: to completely disable SELinux protection for smbd daemon (not recommended) type:
<pre>setsebool -P smbd_disable_trans 1</pre>
<p>- Note: you can temporarily disable SELinux by putting it into permissive mode &#8211; type:
<pre>getenforce</pre>
<p> to find out whether SELinux is in permissive [0], enforcing [1], or disabled [2] mode.<br />
- Note: to put SELinux into permissive mode (for testing purposes but not recommended) type:
<pre>setenforce 0</pre>
</li>
<li>Add samba users<br />
- type:
<pre>useradd john</pre>
<p>- type:
<pre>smbpasswd -a john</pre>
</li>
<li>Configure the firewall to accept samba connections<br />
- type:
<pre>system-config-firewall-tui</pre>
<p> (add an asterix next to the line: &#8220;Samba&#8221;)</li>
<li>Configure the network to use static IP/netmask/gateway/DNS info<br />
- type:
<pre>system-config-network-tui</pre>
<p>- select: [Edit a Device Params] and remove the asterix from the line: &#8220;Use DHCP&#8221;. then, and add static info</li>
<li>Configure the network to use a static Hostname and DNS address (note: DNS settings may not be required)<br />
- type:
<pre>system-config-network-tui</pre>
<p>- select: [Edit DNS configuration] then, and add static hostname and dns info</li>
<li>Get the network, smb, and nmb to start automatically next time you reboot<br />
- type:
<pre>chkconfig --level 3 network on</pre>
<p>- type:
<pre>chkconfig --level 3 smb on</pre>
<p>- type:
<pre>chkconfig --level 3 nmb on</pre>
<p>- type:
<pre>chkconfig --list network</pre>
<p> (or smb, or nmb to confirm it worked. you can also leave out the servicename to see a list of all services)</li>
</ol>
<p><strong>Reboot.</strong><br />
Use another computer to check that everything went well.</p>
]]></content:encoded>
			<wfw:commentRss>http://techblog.touchbasic.com/html/setting-up-a-minimal-samba-server-in-fedora-core-12/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin &#8211; Notify Admin Only of WP Updates</title>
		<link>http://techblog.touchbasic.com/html/wordpress-plugin-notify-admin-only-of-wp-updates/</link>
		<comments>http://techblog.touchbasic.com/html/wordpress-plugin-notify-admin-only-of-wp-updates/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 15:42:15 +0000</pubDate>
		<dc:creator>elran</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[notify admin]]></category>
		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://techblog.touchbasic.com/html/?p=274</guid>
		<description><![CDATA[Update: This plugin is tested and known to be working with WP 2.9.1
ok, with the release of WordPress 2.8.3 &#8211; if finally got around to upgrading my Notify Admin Only plugin to work with WP 2.8+
Download Plugin: Notify Admin Only v2.0
in case you&#8217;re not sure what this plugin actually does, well, it removes this text [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update: This plugin is tested and known to be working with WP 2.9.1</strong></p>
<p>ok, with the release of WordPress 2.8.3 &#8211; if finally got around to upgrading my Notify Admin Only plugin to work with WP 2.8+</p>
<h2>Download Plugin: <a href='http://touchbasic.googlepages.com/notify_admin_only.php'>Notify Admin Only v2.0</a></h2>
<p>in case you&#8217;re not sure what this plugin actually does, well, it removes this text from the backend that says: &#8220;A new version of WordPress is available! Please notify the site administrator&#8221; &#8211; (see the images below).</p>
<p>great for admins who don&#8217;t want their many users to ever see the WordPress Update nag.</p>
<p><img id="image185" src="http://techblog.touchbasic.com/html/wp-content/uploads/2007/10/wp_notice.jpg" alt="wp notifying the admin" /></p>
<p>anyway the new code is really simple: (thanks <a href="http://techblog.touchbasic.com/html/wp-231-plugin-notify-admin-only-of-wordpress-updates/#comment-35611">Lazzymonk</a>)</p>
<p><code lang="php"><br />
< ?php<br />
function stop_wpupdate() {<br />
	if ( current_user_can('manage_options') ) {<br />
		return;<br />
	} else {<br />
		remove_action( 'admin_notices', 'update_nag', 3 );<br />
	}<br />
}<br />
add_action( 'admin_notices', 'stop_wpupdate', 1 );<br />
?><br />
</code></p>
<p><a href="http://techblog.touchbasic.com/html/wp-231-plugin-notify-admin-only-of-wordpress-updates/">the old plugin</a> is here and only works for WP 2.3 &#8211; 2.5 series.</p>
]]></content:encoded>
			<wfw:commentRss>http://techblog.touchbasic.com/html/wordpress-plugin-notify-admin-only-of-wp-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP 2.3 Plugin &#8211; Per Post Creative Commons License</title>
		<link>http://techblog.touchbasic.com/html/wp-23-plugin-per-post-creative-commons-license/</link>
		<comments>http://techblog.touchbasic.com/html/wp-23-plugin-per-post-creative-commons-license/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 22:33:31 +0000</pubDate>
		<dc:creator>elran</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Copyright]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[cc]]></category>
		<category><![CDATA[creative commons]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://techblog.touchbasic.com/html/wp-23-plugin-per-post-creative-commons-license/</guid>
		<description><![CDATA[This plugin will add the ability to choose different Creative Commons licensing structures for different posts that you publish to your WordPress blog.
As far as i could tell, there are currently 2 other CC plugins for WordPress &#8211; wpLicense and cc-configurator &#8211; however both of them only let you set your license on a global [...]]]></description>
			<content:encoded><![CDATA[<p>This plugin will add the ability to choose different Creative Commons licensing structures for different posts that you publish to your WordPress blog.</p>
<p>As far as i could tell, there are currently 2 other CC plugins for WordPress &#8211; <a href="http://wiki.creativecommons.org/WpLicense">wpLicense</a> and <a href="http://www.g-loaded.eu/2006/01/14/creative-commons-configurator-wordpress-plugin/">cc-configurator</a> &#8211; however both of them only let you set your license on a global level. That is, they let you pick one license for all your posts and pages throughout your entire site. I thought it might be useful if each WP user/author could choose between different CC licenses and be able to set them on a post-by-post basis. So, i modified the wpLicense plugin to do just that. </p>
<blockquote><p><strong>&#8220;The main purpose of this plugin is to give WP admins who run sites with multiple users/authors the option let these users/authors set specific CC licensing terms on a post by post basis.&#8221;</strong></p></blockquote>
<p><strong>How it works:</strong><br />
It uses the <a href="http://api.creativecommons.org/docs/readme_15.html#details-license-uri-uri">CC api</a> and the <a href="http://wiki.creativecommons.org/JsWidget">JsWidget</a> to add a new section to the write/edit post page and then displays a small CC graphic/button and text on your published posts for all to see. The widget lets you choose the appropriate licensing structure and then your choice is automatically saved to a custom field the next time you click &#8220;Save and Continue Editing&#8221;, &#8220;Save&#8221;, or &#8220;Publish&#8221;. Then, it uses the CC api (details-license-uri-uri) to call some javascript that displays a small graphic/button and some text linking back to the definitions for the license you have chosen. Jquery was used to insert the new CC license section to the write/edit post pages as well as to open/close the new section. I also had to use Jquery to fix the tooltips for the JsWidget. Lastly, this plugin is optimized so that it will add only 1 DB query (the cc_js_result_uri) to each post that has set a CC license and stores it to a custom field for that given post &#8211; whereas the wpLicense plugin seemed to use 3 seperate db queries to set the global licencing for the site.</p>
<p><strong>Screenshots:</strong><br />
Check out the plugin in action.<br />
<a href='http://techblog.touchbasic.com/html/wp-23-plugin-per-post-creative-commons-license/cc-edit-post-view/' rel='attachment wp-att-202' title='cc edit post view'><img style="float:left;margin:15px;padding:2px;border:1px solid #bbb;" src='http://techblog.touchbasic.com/html/wp-content/uploads/2008/02/cc-edit-post.thumbnail.jpg' alt='cc edit post view' /></a><a href='http://techblog.touchbasic.com/html/wp-23-plugin-per-post-creative-commons-license/cc-view-post-license/' rel='attachment wp-att-203' title='cc view post license'><img style="float:left;margin:15px;padding:2px;border:1px solid #bbb;" src='http://techblog.touchbasic.com/html/wp-content/uploads/2008/02/cc-view-post.thumbnail.jpg' alt='cc view post license' /></a></p>
<div style="clear:both;"></div>
<p><span id="more-201"></span></p>
<p><strong>Download:</strong><br />
Click on the following link to download the plugin: <a href="http://touchbasic.googlepages.com/per-post-license_v0.2.zip">per-post-license_v.02.zip</a></p>
<p><strong>Requirements:</strong><br />
1. This plugin has been testing and works on WP 2.3.x using the default theme (but it is still a work in progess / comments and suggestions are welcome).<br />
2. Your web server needs either curl (most have it installed and it&#8217;s the default setting used in this plugin) or URL file-access enabled (to be able to run file_get_contents() instead of curl).</p>
<p><strong>Install:</strong><br />
1. Unzip and Copy the per-post-license folder to your plugins directiory and activate it.<br />
2. Add the template function (see next paragraph) to where you&#8217;d like the CC image/button and text to appear on your post (this might be the single.php or footer.php template file).<br />
3. Go to the Write post page or Edit an existing post.<br />
4. Look for the new section marked &#8220;CC License&#8221; and click the small &#8220;plus&#8221; sign to open the section.<br />
5. Select &#8220;A Creative Commons license&#8221; and choose the appropriate licensing structure.<br />
6. Save the post and You&#8217;re Done!</p>
<p><strong>WP Template Function:</strong><br />
Add the following function to the WP template file (like single.php, or footer.php) to get the CC license to appear on your post.<br />
<code lang="php">
<div id="cc_code">< ?php if(function_exists('cc_insert_html')) { cc_insert_html($display=true); } /* get cc code */ ?></div>
<p></code></p>
<p><strong>Template Options:</strong><br />
Right now, there are only 2 options that you can use with the cc_insert_html() template function.<br />
1. The first is the $display variable. [$display=true ---> will show the CC license , $display=false will not]<br />
2. The second is the $use_curl variable [default is set to --> $use_curl=true , if you explicitly set $use_curl=false the plugin will revert to the php function file_get_contents() which is not always enabled on all web servers]</p>
<p><strong>CSS styles:</strong><br />
Here is a sample style you can use to center, add padding and margins, as well as a horizontal dashed separator (you can ofcourse use any style you like). You would add this code to your style.css file in your template directory.<br />
<code lang="css">#cc_code { text-align:center; font-size:11px; width:450px; margin-top:25px; padding-top:25px; border-top:1px dashed #ccc; }</code><br />
You could also just use inline css and replace the < div id="cc_code" > and add these styles directly &#8211; something like < div style="text-align:center; font-size:11px;" >.</p>
<p><strong>To Do:</strong><br />
- get rss/atom feeds showing CC license<br />
- possibly add CC to header (if appropriate)<br />
- option to set per author licensing (for all an author&#8217;s posts)<br />
- option to set global default license for entire site<br />
- option to turn off graphic/button and just show text<br />
- option to choose/add an existing licensing structure (other than CC) by providing a URL<br />
- create another template function to gather and list all posts with CC licensing (by title)</p>
]]></content:encoded>
			<wfw:commentRss>http://techblog.touchbasic.com/html/wp-23-plugin-per-post-creative-commons-license/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Using Subversion with WordPress &#8211; Part 2: Maintaining Vendor Branches and Upgrading WP Core Files</title>
		<link>http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-2-maintaining-vendor-branches-and-upgrading-wp-core-files/</link>
		<comments>http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-2-maintaining-vendor-branches-and-upgrading-wp-core-files/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 23:01:11 +0000</pubDate>
		<dc:creator>elran</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[merging]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[vendor branches]]></category>
		<category><![CDATA[vendor drop]]></category>

		<guid isPermaLink="false">http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-2-maintaining-vendor-branches-and-upgrading-wp-core-files/</guid>
		<description><![CDATA[This article assumes you have already read, &#8220;Using Subversion with WordPress &#8211; Part 1: Creating Vendor Branches and Integrating your Existing Code&#8220;. In short, you want to use Subversion to track/maintain local versions of both WordPress code and your own internal project code, side-by-side, all in the same svn repository.
In the previously mentioned article we [...]]]></description>
			<content:encoded><![CDATA[<p><em>This article assumes you have already read, &#8220;<a href="http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-1-creating-vendor-branches-and-integrating-your-existing-code/">Using Subversion with WordPress &#8211; Part 1: Creating Vendor Branches and Integrating your Existing Code</a>&#8220;. In short, you want to use Subversion to track/maintain local versions of both WordPress code and your own internal project code, side-by-side, all in the same svn repository.</em></p>
<p>In the previously mentioned article we used WordPress version 2.3.1 as our initial vendor drop. The following procedure illustrates how to use <em>svn merge</em> to quickly upgrade WordPress core files from version 2.3.1 to version 2.3.2 &#8211; without losing your local changes &#8211; but could be used as a general outline for upgrading any version of WordPress provided you followed the steps discussed in Part 1. Note: Backup your files and database before attempting any of this. Also, although not strictly required, the following steps assume you have some kind of shell access (like ssh) and a command line subversion client (like svn).</p>
<p><strong><em>Maintaining Vendor Branches -</em></strong><br />
To perform this upgrade, we check out a copy of our current vendor branch (which contains our WP 2.3.1 source code), and replace that code with the new WP 2.3.2 source code. So, we simply copy the new files on top of existing files and directories. The goal here is to make our current directory contain only the new WP 2.3.2 code, and to ensure that all that code is under version control. I use the <em>svn export</em> command to grab the WP 2.3.2 source code &#8211; but downloading and extracting the WP files manually works just as well.</p>
<p><span id="more-193"></span></p>
<p>1. Prepare Current and New Code<br />
<code><br />
$ mkdir upgrade<br />
$ cd upgrade<br />
$ svn co http://svn.yourdomain.com/vendor/wordpress/current/<br />
$ svn export http://svn.automattic.com/wordpress/tags/2.3.2/<br />
â€¦<br />
</code></p>
<p>2. Copy, Resolve Conflicts, and Commit Changes<br />
<code><br />
$ cd current [optionally, delete all files but NOT folders / dont delete .svn folders]<br />
$ cp -a ../2.3.2/* .<br />
$ svn status<br />
$ svn ci -m "commiting WP 2.3.2 vendor drop to current branch"<br />
$ cd ../../<br />
$ rm -rf upgrade<br />
â€¦<br />
</code></p>
<p>3. Tag the New Version<br />
Our current branch now contains the new vendor drop. We tag the new version (in the same way we previously tagged the version 2.3.1 vendor drop &#8211; in <a href="http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-1-creating-vendor-branches-and-integrating-your-existing-code/">Part 1</a>)<br />
<code><br />
$ svn copy http://svn.yourdomain.com/vendor/wordpress/current  \<br />
           http://svn.yourdomain.com/vendor/wordpress/2.3.2      \<br />
           -m "tagging WordPress 2.3.2"<br />
â€¦<br />
</code></p>
<p>4. Merge the Differences and Commit Changes<br />
Checkout a copy of your current project (from <a href="http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-1-creating-vendor-branches-and-integrating-your-existing-code/">Part 1</a> &#8211; we used the folder: &#8220;newproject&#8221;). Merge the differences between the tag of the previous version (WP 2.3.1) and the new current version into our main development branch. Type <em>svn status</em> to see what files were modified and resolve any conflicts. Run <em>svn add</em> and <em>svn delete</em> commands where appropriate. Commit the changes and our local version of WP will now been completely upgraded without over-writing or deleting any existing modifications we may have previously made.<br />
<code><br />
$ mkdir newproject<br />
$ cd newproject<br />
$ svn co http://svn.yourdomain.com/branches/newproject .<br />
$ svn merge http://svn.yourdomain.com/vendor/wordpress/2.3.1      \<br />
            http://svn.yourdomain.com/vendor/wordpress/current  .<br />
$ svn status<br />
$ svn ci -m 'merging WordPress 2.3.2 into the main branch'<br />
â€¦<br />
</code></p>
<p>That&#8217;s all there is to it! </p>
<p>And, best of all, every change made to your internal project code  &#8211; including those made to WP core files &#8211; is now documented and tracked from within your own local version control system.</p>
<p>Note: Don&#8217;t forget to visit http://www.yourdomain.com/wp-admin/upgrade.php in your web browser once you&#8217;ve completed all of these steps to make sure any database upgrades get applied as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-2-maintaining-vendor-branches-and-upgrading-wp-core-files/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Using Subversion with WordPress &#8211; Part 1: Creating Vendor Branches and Integrating your Existing Code</title>
		<link>http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-1-creating-vendor-branches-and-integrating-your-existing-code/</link>
		<comments>http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-1-creating-vendor-branches-and-integrating-your-existing-code/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 01:03:57 +0000</pubDate>
		<dc:creator>elran</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[merging]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[vendor branches]]></category>
		<category><![CDATA[vendor drop]]></category>

		<guid isPermaLink="false">http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-1-creating-vendor-branches-and-integrating-your-existing-code/</guid>
		<description><![CDATA[This article assumes that you&#8217;ve read the basic svn howto and the more specific one provided on the WP Codex but would like to try or need a setup similar to that described here on a page called: Vendor branches. In short, you want to use Subversion to track/maintain local versions of both WordPress code [...]]]></description>
			<content:encoded><![CDATA[<p>This article assumes that you&#8217;ve read the <a href="http://codex.wordpress.org/Using_Subversion">basic svn howto</a> and the <a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion">more specific one</a> provided on the WP Codex but would like to try or need a setup similar to that described <a href="http://svnbook.red-bean.com/en/1.4/svn.advanced.vendorbr.html">here</a> on a page called: Vendor branches. In short, you want to use Subversion to track/maintain local versions of both WordPress code and your own internal project code, side-by-side, all in the same svn repository.</p>
<p><strong>Scenario:</strong><br />
Let&#8217;s say you have an in-house web developement project that is built upon or otherwise dependent on the WordPress core files. This can be for something as simple as creating/customizing your own WP themes and plugins, or as complex as maintaining your own modified versions of WP core files, with additional components/modules, etc. The important thing is that you imagine a scenario where you are already using Subversion to commit changes/updates to this internal project of yours. However, a problem occurs whenever a new version of WordPress is released. You need to upgrade the WP core files whithout losing any of the custom modifications you&#8217;ve been making up until now. Ideally, you would like to apply (to your internal project) only the changes made to the upgraded WP core files without over-writing any of your own work.</p>
<p><strong>Solution:</strong></p>
<blockquote><p>&#8220;The solution to this problem is to use vendor branches. A vendor branch is a directory tree in your own version control system that contains information provided by a third-party entity, or vendor. Each version of the vendor&#8217;s data that you decide to absorb into your project is called a vendor drop.&#8221; (<a href="http://svnbook.red-bean.com/en/1.4/svn.advanced.vendorbr.html">quote</a>)</p></blockquote>
<p>So, in this case, the third-party entity or vendor, is WordPress. What we want to do is: absorb the WP code into our own project. The rest of this article is going to illustrate the concept of &#8220;vendor drops&#8221; as they would apply to this particular scenario and using WordPress as the third-party vendor. Some of the benefits of this method are described in the article that the previously mentioned quote came from. In addition, this article goes on to describe the exact same process (but in more general terms) in a section entitled: General Vendor Branch Management Procedure. Well, here is my &#8220;Specific Vendor Branch Management Procedure&#8221; for WordPress.</p>
<p><strong><em>Vendor Branch Management &#8211; Description</em></strong></p>
<blockquote><p>&#8220;Managing vendor branches generally works like this. You create a top-level directory (such as /vendor) to hold the vendor branches. Then you import the third party code into a subdirectory of that top-level directory. You then copy that subdirectory into your main development branch (for example, /trunk) at the appropriate location. You always make your local changes in the main development branch. With each new release of the code you are tracking you bring it into the vendor branch and merge the changes into /trunk, resolving whatever conflicts occur between your local changes and the upstream changes.&#8221; (<a href="http://svnbook.red-bean.com/en/1.4/svn.advanced.vendorbr.html">quote</a>)</p></blockquote>
<p><strong><em>Our Setup -</em></strong><br />
Let&#8217;s use WordPress 2.3.1 as an example. A newer version of WP (2.3.2) was just released and we&#8217;ll be using that version in a follow-up article to show how you can maintain this setup across multiple WP version upgrades without losing your local changes. However, for right now, we&#8217;ll assume that this is your first vendor drop and that your current project is already using Subversion and is also built against WP 2.3.1. In theory, you could use this same procedure with any version of WP &#8211; just make sure to start with an initial vendor drop that is the exact same version of WP as the one your project is currently using. Remember, we are not upgrading WP yet. We are just importing the WP code into our existing subversion-based system, side-by-side with our internal project. Note: Backup your files and database before attempting any of this. Also, although not strictly required, the following steps assume you have some kind of shell access (like ssh) and a command line subversion client (like svn).</p>
<p><span id="more-192"></span></p>
<p><strong><em>Creating Vendor Branches -</em></strong></p>
<p>1. Download Vendor Source Code<br />
<code><br />
$ mkdir workspace<br />
$ cd workspace<br />
$ svn export http://svn.automattic.com/wordpress/tags/2.3.1/<br />
â€¦<br />
</code></p>
<p>2. Importing Initial Vendor Drop<br />
<code><br />
$ cd 2.3.1<br />
$ svn import . http://svn.yourdomain.com/vendor/wordpress/current        \<br />
             -m "importing initial WordPress vendor drop"<br />
$ cd ../<br />
$ rm -rf 2.3.1<br />
â€¦<br />
</code></p>
<p>3. Tagging Initial Vendor Drop<br />
<code><br />
$ svn copy http://svn.yourdomain.com/vendor/wordpress/current        \<br />
           http://svn.yourdomain.com/vendor/wordpress/2.3.1        \<br />
           -m "tagging WordPress 2.3.1"<br />
â€¦<br />
</code></p>
<p>4. Copying Vendor Drop into a New Branch<br />
<code><br />
$ svn copy http://svn.yourdomain.com/vendor/wordpress/2.3.1        \<br />
           http://svn.yourdomain.com/branches/newproject        \<br />
           -m "bringing WordPress 2.3.1 into the new branch"<br />
â€¦<br />
</code></p>
<p>5. Check Out and Add Customizations<br />
We check out our project&#8217;s new branch &#8211; which now includes a copy of our first WP vendor drop &#8211; and we begin customizing or re-applying any changes to the code. Unless you&#8217;re starting from scratch, this probably just involves copying over any files and folders that were previously a part of your internal project code. Since we made sure to import the exact same version of WP that was used in our in-house development (this is not an upgrade) &#8211; there should be no conflicts and fewer surprises.<br />
<code><br />
$ mkdir newproject<br />
$ cd newproject<br />
$ svn co http://svn.yourdomain.com/branches/newproject .<br />
$ cp -a /path/to/your/oldproject/* .<br />
â€¦<br />
</code></p>
<p>6. Resolve conflicts and Commit Changes<br />
Type <em>svn status</em> to see what files were modified and resolve any conflicts. Run <em>svn add</em> and <em>svn delete</em> commands where appropriate. Commit the changes and our modified version of WP is now completely integrated into our in-house project.<br />
<code><br />
$ svn ci -m "commiting changes into the new branch"<br />
$ cd ../<br />
$ rm -rf newproject<br />
â€¦<br />
</code></p>
<p>That&#8217;s It! You&#8217;re Done.</p>
<p>At this point you might be thinking to yourself: &#8220;Well, that&#8217;s not exactly a time saver.. now is it?&#8221; And, you&#8217;d be right! But we won&#8217;t stop there! With WordPress integrated into our in-house versioning system &#8211; we can now use <em>svn merge</em> to quickly perform WP upgrades on our internal project code without risk of ever deleting or over-writing our own work.</p>
<p>And, best of all, every change made to your internal project code &#8211; including those made to WP core files &#8211; will now be documented and tracked from within your own local version control system.</p>
<p><strong><em>[ Be sure to check back for the follow-up article entitled: "<a href="http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-2-maintaining-vendor-branches-and-upgrading-wp-core-files/">Using Subversion with WordPress - Part 2: Maintaining Vendor Branches and Upgrading WP Core Files</a>" ]</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://techblog.touchbasic.com/html/using-subversion-with-wordpress-part-1-creating-vendor-branches-and-integrating-your-existing-code/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress 2.3 Plugin &#8211; ezmlm mailing list subscribe form</title>
		<link>http://techblog.touchbasic.com/html/wordpress-23-plugin-ezmlm-mailing-list-subscribe-form/</link>
		<comments>http://techblog.touchbasic.com/html/wordpress-23-plugin-ezmlm-mailing-list-subscribe-form/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 21:15:18 +0000</pubDate>
		<dc:creator>elran</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ezmlm]]></category>
		<category><![CDATA[mailing list]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://techblog.touchbasic.com/html/wordpress-23-plugin-ezmlm-mailing-list-subscribe-form/</guid>
		<description><![CDATA[ezmlm is a qmail-based mailing list manager written by Dan J. Bernstein. 
From their site: &#8220;It has all the basic functionality of a mailing list manager, such as subscriber address management including automated bounce handling as well as message distribution and archiving. Its purpose is to efficiently send a message to a large number of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ezmlm.org/">ezmlm</a> is a qmail-based mailing list manager written by Dan J. Bernstein. </p>
<blockquote><p>From their site: &#8220;It has all the basic functionality of a mailing list manager, such as subscriber address management including automated bounce handling as well as message distribution and archiving. Its purpose is to efficiently send a message to a large number of recipients with minimal delay. It allows automated additions and subtractions from the subscriber database.&#8221;</p></blockquote>
<p>i have seen it installed as the default built-in mailing list software for some shared hosting providers.<br />
i needed a way to let visitors subscribe/unsubscribe to the ezmlm mailing list directly from a webpage.<br />
but, when i searched the web for any existing WordPress plugins that could do this &#8211; i could not find any.<br />
so, i thought there might be some wordpress users or admins that want to integrate ezmlm with their website using a standard web-based html signup form and some php magic.</p>
<p><strong>description:</strong><br />
This plugin will allow visitors to subscribe and unsubscribe to your ezmlm mailing list &#8211; directly from your website &#8211; without having to manually send an email from their email client.</p>
<p>tested with WordPress 2.3.x<br />
tested on Superb Hosting, and ezmlm mailing list software.</p>
<p><strong>features:</strong></p>
<ol>
<li>basic error and spam checking built right into the plugin.</li>
<li>automatically prints out a &#8220;Thank You&#8221; or &#8220;Error&#8221; message on submit</li>
<li>you can use css to style the submit form to your heart&#8217;s content.</li>
<li>works even when your ezmlm is on a different server than you web server.</li>
<li>choose between using a standard text button or an image as your submit button.</li>
<li>choose between using the defulat privacy message, a custom message, or no message at all.</li>
</ol>
<p><span id="more-196"></span></p>
<p><strong>download:</strong><br />
<a href="http://touchbasic.googlepages.com/ezmlm-signup-form.php">ezmlm subscribe form v1.0</a></p>
<p><strong>basic install:</strong></p>
<ol>
<li>download the plugin file, place it in the plugins directory, and active the plugin.</li>
<li>configure the plugin by going to Options > ezmlm signup form (see below for more details).</li>
<li>add the following code to your theme where you would like the ezmlm subscribe/unsubscribe form to appear.</li>
</ol>
<p><code lang="php">< ?php if( function_exists('ezmlm_submit_form') ) { ezmlm_submit_form($display = true); } ?></code></p>
<p><strong>ezmlm options:</strong><br />
There are only 4 configuration options so far..</p>
<ol>
<li>Set the Name of your mailing list (for example, you would enter: newsletter, if your mailing list was at: newsletter-subscribe@yourdomain.com)</li>
<li>Set the Domain of your mailing list (for example, you would enter: yourdomain.com, if your mailing list was at: newsletter-subscribe@yourdomain.com)</li>
<li>If you want to use an Image as the submit button: Enter the full URL to the image file (URL format: http://www.yourlocation.com/path/to/image.jpg &#8211; leave this blank and the form will use a standard text submit button)</li>
<li>If you want to set a custom privacy message: Enter it in the textarea provided (Or, type: DEFAULT and the default message will be displayed. Or, leave this area blank to have no privacy message displayed at all. Hint: you can use html in here too.)</li>
</ol>
<p><strong>screencap:</strong><br />
<img class="center" style="border:1px solid #ccc; padding:5px;" src='http://techblog.touchbasic.com/html/wp-content/uploads/2008/01/ezemlm-options-sreencap.jpg' alt='ezmlm signup plugin - screencap of option setting' /><br />
<img class="center" style="border:1px solid #ccc; padding:5px;" src='http://techblog.touchbasic.com/html/wp-content/uploads/2008/01/ezmlm-signup-box.jpg' alt='ezmlm signup plugin - screencap of signup box output' /></p>
<p><strong>advanced usage:</strong><br />
- Template Tags &#8211;<br />
To place ezmlm signup form on a specific page &#8211; like page 408 &#8211; add the following code to your page.php template file.<br />
<code lang="php">< ?php if(is_page(408)) {<br />
if( function_exists('ezmlm_submit_form') ) { ezmlm_submit_form($display = true); }<br />
} ?></code></p>
<p>- Custom CSS -<br />
You can style the signup form by adding the following IDs to your style.css file.<br />
#ezmlmform (is the ID for the entire form)<br />
#urlsubmit (is the ID for the image upload button)<br />
<code lang="css"><br />
/* example usage */<br />
#ezmlmform { border:1px solid #000; padding:5px; }<br />
</code></p>
<p><strong>credits:</strong><br />
Much of this code was borrowed from a forum thread called: ezmlm php subscribe/unsubscribe form<br />
Documented here: <a href="http://forum.qmailrocks.org/showpost.php?p=16649&#038;postcount=2">http://forum.qmailrocks.org/showpost.php?p=16649&#038;postcount=2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://techblog.touchbasic.com/html/wordpress-23-plugin-ezmlm-mailing-list-subscribe-form/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>VMTN Virtual Appliances &#8211; the 52 that looked interesting to me</title>
		<link>http://techblog.touchbasic.com/html/vmtn-virtual-appliances-the-52-that-looked-interesting-to-me/</link>
		<comments>http://techblog.touchbasic.com/html/vmtn-virtual-appliances-the-52-that-looked-interesting-to-me/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 19:31:44 +0000</pubDate>
		<dc:creator>elran</dc:creator>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://techblog.touchbasic.com/html/vmtn-virtual-appliances-the-52-that-looked-interesting-to-me/</guid>
		<description><![CDATA[I have been using vmware for a while now..
Recently, i got sucked into the VMware Technology Network (VMTN) site &#8211; again &#8211; and browsing through the many virtual appliances available for download, i managed to compile a list of 52 of my favorites.
All you need to do is download the free VMware Player, which will [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using vmware for a while now..<br />
Recently, i got sucked into the <a href="http://www.vmware.com/vmtn/">VMware Technology Network</a> (VMTN) site &#8211; again &#8211; and browsing through the many virtual appliances available for download, i managed to compile a list of 52 of my favorites.<br />
All you need to do is download the free <a href="http://www.vmware.com/download/player/">VMware Player</a>, which will let you run one of these virtual appliances on any Windows or Linux desktop.<br />
Great for testing, coding, and learning. You can read more about virtualization on the <a href="http://www.vmware.com">VMware site</a>.</p>
<p><span id="more-180"></span></p>
<p><u>The List of 52 Appliances (in no particular order)</u></p>
<ol>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/134">The Web Developer Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/566">FreeNAC</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/47">SmoothWall</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/543">SSL-Explorer 0.2.9_04 for VMWare</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/51">sipX</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/302">VoIPonCD &#8211; an easy to configure Voice over IP PBX</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/576">PBXware &#8211; IP-PBX Phone System</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/308">vmTrac</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/342">ISPConfig Webhosting Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/389">middleman: the easy way to share data</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/370">VHCS VM &#8211; Virtual Hosting Server with an Open Source Control Panel</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/216">UbuntuFax</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/390">Collaboration2</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/220">Rails Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/469">Catacomb WebDAV Server</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/52">Owl</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/503">rPath DevInfraNix</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/521">The Official Gallery Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/655">Pastebin Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/519">Subversion and WebSVN on Ubuntu Server</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/620">NovellÂ® iFolder on OpenSuse with VMware Tools</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/465">rPath LAMP Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/321">Personal Backup Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/327">Tamper-Proof Internet Cafe for diskless machines</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/54">Bugzilla</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/371">PXE Installer and Recovery Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/354">HowNetWorks</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/466">rPath SugarCRM Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/232">Ultimate Deployment Appliance v1.3</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/618">Fedora Core 6</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/121">A virtual Playground</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/355">Instant Cluster w/ Condor and automatic network configuration.</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/374">OS Integrated Live CD Player</a></li>
<li><a href="http://www.vmware.com/appliances/directory/browserapp.html">Browser Appliance</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/341">OSCAR Cluster Headnode</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/515">XUbuntu (5.10)</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/615">Linbox Rescue Server Commercial Edition</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/614">Linbox Rescue Server GPL edition</a></li>
<li><a href="http://www.vmware.com/vmtn/appliances/directory/148">Kickstart Appliance</a></li>
<li><a href="http://www.vmware.com/appliances/directory/56">LiveCD Player</a></li>
<li><a href="http://www.vmware.com/appliances/directory/168">FreeNAS</a></li>
<li><a href="http://www.vmware.com/appliances/directory/351">VMWare Appliance Client</a></li>
<li><a href="http://www.vmware.com/appliances/directory/300">Hercules Load Balancer Virtual Appliance</a></li>
<li><a href="http://www.vmware.com/appliances/directory/315">Trellis NAS Bridge Appliance</a></li>
<li><a href="http://www.vmware.com/appliances/directory/296">Grid-Appliance</a></li>
<li><a href="http://www.vmware.com/appliances/directory/328">Helix Agile Development Virtual Appliance</a></li>
<li><a href="http://www.vmware.com/appliances/directory/649">Microsoft Windows Server 2003 R2 Enterprise Edition Virtual Appliance</a></li>
<li><a href="http://www.vmware.com/appliances/directory/48">AAH, Now TrixBox, Asterisk Virtual Machine</a></li>
<li><a href="http://www.vmware.com/appliances/directory/49">Asterisk@Home Trixbox 1.1</a></li>
<li><a href="http://www.vmware.com/appliances/directory/154">GVM</a></li>
<li><a href="http://www.vmware.com/appliances/directory/554">Knoppix 5.01 in a virtual machine (can also be used as a very fast free X server for windows)</a></li>
<li><a href="http://www.vmware.com/appliances/directory/344">Openfiler</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://techblog.touchbasic.com/html/vmtn-virtual-appliances-the-52-that-looked-interesting-to-me/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
