<?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>Jeff Combs - IT Professional / Web Developer</title>
	<atom:link href="http://jcombs.net/feed" rel="self" type="application/rss+xml" />
	<link>http://jcombs.net</link>
	<description>System Administration</description>
	<lastBuildDate>Sun, 01 Aug 2010 21:41:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ubuntu Lamp Server</title>
		<link>http://jcombs.net/uncategorized/ubuntu-lamp-server</link>
		<comments>http://jcombs.net/uncategorized/ubuntu-lamp-server#comments</comments>
		<pubDate>Tue, 27 Jul 2010 23:42:08 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=131</guid>
		<description><![CDATA[Quick and dirty Ubuntu Lamp Server A lamp server on Ubuntu is pretty simple to setup to get working right away. Simply run the following command: sudo tasksel install lamp-server Create a MySQL password: Tasksel will continue to install the components: Open your browser and point to http://localhost. You should see the following message: It [...]]]></description>
			<content:encoded><![CDATA[<h3>Quick and dirty Ubuntu Lamp Server</h3>
<p>A lamp server on Ubuntu is pretty simple to setup to get working right away.  Simply run the following command:</p>
<pre class="brush: text">
sudo tasksel install lamp-server
</pre>
<p>Create a MySQL password:</p>
<p><a href="http://jcombs.net/wp-content/uploads/2010/07/lamp11.png"><img src="http://jcombs.net/wp-content/uploads/2010/07/lamp11.png" alt="" title="lamp1" width="762" class="alignnone size-full wp-image-146" /></a></p>
<p>Tasksel will continue to install the components:</p>
<p><a href="http://jcombs.net/wp-content/uploads/2010/07/lamp21.png"><img src="http://jcombs.net/wp-content/uploads/2010/07/lamp21.png" alt="" title="lamp2" width="762" class="alignnone size-full wp-image-147" /></a></p>
<p>Open your browser and point to http://localhost.  You should see the following message:</p>
<blockquote><p>
It works!<br />
This is the default web page for this server.<br />
The web server software is running but no content has been added, yet.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/uncategorized/ubuntu-lamp-server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing JRE on Ubuntu 10.04</title>
		<link>http://jcombs.net/ubuntu/installing-jre-on-ubuntu-10-04</link>
		<comments>http://jcombs.net/ubuntu/installing-jre-on-ubuntu-10-04#comments</comments>
		<pubDate>Sat, 24 Jul 2010 21:05:10 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=125</guid>
		<description><![CDATA[How to install JRE6 on Ubuntu 10.04 Installing Java Runtime Environment and the plug-in on Ubuntu Lucid is pretty straightforward.  The first step is to enable the partner repository in /etc/apt/sources.list ## Uncomment the following two lines to add software from Canonical&#8217;s ## &#8216;partner&#8217; repository. ## This software is not part of Ubuntu, but is [...]]]></description>
			<content:encoded><![CDATA[<h3>How to install JRE6 on Ubuntu 10.04</h3>
<p>Installing Java Runtime Environment and the plug-in on Ubuntu Lucid is pretty straightforward.  The first step is to enable the partner repository in /etc/apt/sources.list</p>
<p>## Uncomment the following two lines to add software from Canonical&#8217;s<br />
## &#8216;partner&#8217; repository.<br />
## This software is not part of Ubuntu, but is offered by Canonical and the<br />
## respective vendors as a service to Ubuntu users.<br />
deb http://archive.canonical.com/ubuntu lucid partner<br />
deb-src http://archive.canonical.com/ubuntu lucid partner</p>
<p>Once the sources are added, run an update</p>
<pre class="brush: text">
sudo apt-get update
</pre>
<p>Run the following command to install the Java Packages</p>
<pre class="brush: text">
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts
</pre>
<p><a href="http://jcombs.net/wp-content/uploads/2010/07/jre1.png"><img src="http://jcombs.net/wp-content/uploads/2010/07/jre1.png" alt="" title="jre1" width="834" class="alignnone size-full wp-image-150" /></a></p>
<p><a href="http://jcombs.net/wp-content/uploads/2010/07/jre2.png"><img src="http://jcombs.net/wp-content/uploads/2010/07/jre2.png" alt="" title="jre2" width="834" class="alignnone size-full wp-image-151" /></a></p>
<p>Run the following to verify the installation</p>
<pre class="brush: text">
java -version
</pre>
<blockquote><p>
java version &#8220;1.6.0_20&#8243;<br />
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)<br />
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/ubuntu/installing-jre-on-ubuntu-10-04/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IT Toolbox</title>
		<link>http://jcombs.net/system-administration/it-toolbox</link>
		<comments>http://jcombs.net/system-administration/it-toolbox#comments</comments>
		<pubDate>Sat, 24 Jul 2010 20:26:37 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=119</guid>
		<description><![CDATA[A list of free tools for System/Network Administrators Unlocker Unlocker is a tool that helps delete locked files with error messages like: Cannot delete file: Access is denied There has been a sharing violation The source or destination may be in use The file is in use by another program or user Make sure the [...]]]></description>
			<content:encoded><![CDATA[<h3>A list of free tools for System/Network Administrators</h3>
<h4>Unlocker</h4>
<p>Unlocker is a tool that helps delete locked files with error messages like:</p>
<ul>
<li>Cannot delete file: Access is denied</li>
<li>There has been a sharing violation</li>
<li>The source or destination may be in use</li>
<li>The file is in use by another program or user</li>
<li>Make sure the disk is not full or write-protected and that the file is not currently in use</li>
</ul>
<p><a title="Unlocker" href="http://ccollomb.free.fr/unlocker/" target="_blank">http://ccollomb.free.fr/unlocker/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/system-administration/it-toolbox/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netstat on Windows</title>
		<link>http://jcombs.net/uncategorized/netstat-on-windows</link>
		<comments>http://jcombs.net/uncategorized/netstat-on-windows#comments</comments>
		<pubDate>Wed, 14 Jul 2010 22:36:03 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=108</guid>
		<description><![CDATA[The netstat command is used to display active network connections on your workstation or server. Netstat can be used to display active TCP connections, ports on which the computers is listening, ethernet statistics, the IP routing table, IPv4 and IPv6 statistics. Used without parameters, netstat display active TCP connections. Syntax netstat [-a] [-e] [-n] [-o] [...]]]></description>
			<content:encoded><![CDATA[<p>The <strong>netstat</strong> command is used to display active network connections on your workstation or server.  <strong>Netstat</strong> can be used to display active TCP connections, ports on which the computers is listening, ethernet statistics, the IP routing table, IPv4 and IPv6 statistics.  Used without parameters, <strong>netstat</strong> display active TCP connections. </p>
<h3>Syntax</h4>
<pre class="brush: text">
netstat [-a] [-e] [-n] [-o] [-p &lt;em&gt;Protocol&lt;/em&gt;] [-r] [-s] [&lt;em&gt;Interval&lt;/em&gt;]
</pre>
<h3>Parameters</h3>
<p>-a : Displays all active TCP connections and the TCP and UDP ports on which the computer is listening</p>
<p>-e : Displays ethernet statistics, such as the number of bytes and packets sent and received.  This parameter can be combined with -s</p>
<p>-n : Displays active TCP connections, however, addresses and port numbers are expressed numerically and no attempt is made to determine names</p>
<p>-o : Displays active TCP connections and includes the process ID (PID) for each connection. You can find the application based on the PID on the processes tab in Windows Task Manager.  This parameter can be combined with -a, -n, and -p.</p>
<p>-p Protocol : Shows connections for the protocol specified by Protocol.  In this case, the Protocol can be tcp, udp, tcpv6, or udpv6.  If this parameter is used with -s to display statistics by protocol, Protocol can be tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6, or ipv6.</p>
<p>-s : Displays statistics by protocol.  By default, statistics are shown for the TCP, UDP, ICMP, and IP Protocols.</p>
<p>-r : Displays the contents of the IP routing table.  This is equivalent to the route print command.</p>
<p>Interval : Redisplays the selected information every Interval seconds.  Press Ctrl + C to stop the redisplay.  If this parameter is omitted, netstat prints the selected information only once. </p>
<p>/? : Displays help at the command prompt.</p>
<h3>Examples</h3>
<p>coming soon&#8230;</p>
<h3>Alternatives</h3>
<p><a href="http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx">TCPView</a> from SysInternals is another nice utility that takes netstat one step further.  With TCPView you can view the active process name as well.</p>
<p><a href="http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx">http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/uncategorized/netstat-on-windows/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows God Mode</title>
		<link>http://jcombs.net/microsoft/windows-god-mode</link>
		<comments>http://jcombs.net/microsoft/windows-god-mode#comments</comments>
		<pubDate>Mon, 25 Jan 2010 00:07:57 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=101</guid>
		<description><![CDATA[This handy little folder makes access all system settings a breeze. The control panel can get a little annoying sometimes, so to avoid this and point everything in one location just create a new folder on your desktop, then rename it with the following: Everything.{ED7BA470-8E54-465E-825C-99712043E01C} &#8220;Everything&#8221; can actually be anything you want to name the [...]]]></description>
			<content:encoded><![CDATA[<p>This handy little folder makes access all system settings a breeze.  The control panel can get a little annoying sometimes, so to avoid this and point everything in one location just create a new folder on your desktop, then rename it with the following:</p>
<pre class="brush: text">
Everything.{ED7BA470-8E54-465E-825C-99712043E01C}
</pre>
<p>&#8220;Everything&#8221; can actually be anything you want to name the folder.  Once you hit enter on the rename the folder name will change. </p>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/microsoft/windows-god-mode/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Virtual Hosts (XAMPP)</title>
		<link>http://jcombs.net/apache/apache-virtual-hosts-xampp</link>
		<comments>http://jcombs.net/apache/apache-virtual-hosts-xampp#comments</comments>
		<pubDate>Sat, 31 Oct 2009 02:08:22 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=93</guid>
		<description><![CDATA[I had to create a couple virtual hosts on a windows 7 machine running XAMPP for development purposes.  This is typically a simple task.  XAMPP has an Apache virtual host configuration file in &#60;xampp installation&#62;\apache\conf\extra\httpd-vhosts.conf There are some basic containers already set that you can use as reference, but in the end you have something [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jcombs.net/wp-content/uploads/2009/10/apache-logo.jpg" alt="apache" title="apache" width="200" height="150" class="alignright size-full wp-image-98" /></p>
<p>I had to create a couple virtual hosts on a windows 7 machine running XAMPP for development purposes.  This is typically a simple task.  XAMPP has an Apache virtual host configuration file in &lt;xampp installation&gt;\apache\conf\extra\httpd-vhosts.conf</p>
<p>There are some basic containers already set that you can use as reference, but in the end you have something like this:</p>
<pre class="brush: text">
NameVirtualHost 127.0.0.1:80

&lt;VirtualHost 127.0.0.1:80&gt;
	DocumentRoot D:/www
	ServerName localhost
&lt;/VirtualHost&gt;

&lt;VirtualHost 127.0.0.1:80&gt;
	DocumentRoot D:/www/mysite
	ServerName mysite.dev
&lt;/VirtualHost&gt;
</pre>
<p>You then just configure your hosts file to point to your local IP address:</p>
<pre class="brush: text">
127.0.0.1    localhost
127.0.0.1    mysite.dev
</pre>
<p>You can add more directives to the virtualhost, but this was just the basic setup to get urls working without having to use subdirectories like http://localhost/mysite.  Instead, I can use http://mysite.dev.  </p>
<p>Restart apache and everything should be golden, but no, never quite that easy. I kept getting a blank screen for mysite.dev, but localhost was working.  I would ping mysite.dev and get 127.0.0.1 like I would expect.</p>
<p>Well, long story short, I&#8217;ve behind a proxy/firewall and didn&#8217;t tell my browser to ignore the .dev domain.  So, for my own purpose when I forget this again in a year or so, or anyone else behind a corporate network that may have a similar issue, this was why.</p>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/apache/apache-virtual-hosts-xampp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Widgets</title>
		<link>http://jcombs.net/wordpress/wordpress-widgets</link>
		<comments>http://jcombs.net/wordpress/wordpress-widgets#comments</comments>
		<pubDate>Tue, 27 Oct 2009 01:19:58 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=57</guid>
		<description><![CDATA[WordPress widgets allow you to dynamically add content to sidebars directly from the wordpress control panel. I think this is a great option. The reason I&#8217;m using a Blog CMS is to reduce the amount of code I have to write, so this means less markup in my theme. I&#8217;m using only one sidebar on [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jcombs.net/wp-content/uploads/2009/10/wordpress.jpg" alt="wordpress" title="wordpress" width="221" height="225" class="alignright size-full wp-image-58" /></p>
<p>WordPress widgets allow you to dynamically add content to sidebars directly from the wordpress control panel.  I think this is a great option.  The reason I&#8217;m using a Blog CMS is to reduce the amount of code I have to write, so this means less markup in my theme.  I&#8217;m using only one sidebar on this site with a few widgets, including search, categories and links.  </p>
<p>There are a few tricks to get widgets to work how you want, but it is relatively quick and painless.  I&#8217;ll give an example of how I made this theme widget ready.</p>
<p><span id="more-57"></span></p>
<p>It starts in your functions.php file in your theme folder.  If you don&#8217;t have a functions.php file, you&#8217;ll have to create one.  You can define as many &#8220;sidebars&#8221; as you wish, but for this example I&#8217;m only using one.  My file looks like this:</p>
<pre class="brush: php">
&lt;?php

if ( function_exists(&#039;register_sidebar&#039;) ) {
	register_sidebar(array(
        &#039;name&#039; =&gt; &#039;sidebar&#039;,
        &#039;before_widget&#039; =&gt; &#039;&lt;div class=\&#039;widget %2$s\&#039;&gt;&#039;,
        &#039;after_widget&#039; =&gt; &#039;&lt;/div&gt;&#039;,
        &#039;before_title&#039; =&gt; &#039;&lt;h2&gt;&#039;,
        &#039;after_title&#039; =&gt; &#039;&lt;/h2&gt;&#039;
	));
}

?&gt;
</pre>
<p>Name is what you will see when you open your widgets section in the admin control panel.  Before_widget and after_widget allow you to wrap your widget with whatever tags you wish, in this case a div.   You&#8217;ll see that my div has a class of &#8216;widget %2$s.  This allows me to address my widgets in CSS.  Each widget will have the class &#8220;widget&#8221;.  They will also have a more specific class that lets me target that widget.  That is what %2$ is doing.  So for my search widget, I&#8217;ll have a class of &#8220;widget widget_search&#8221;.  Now I can target &#8220;widget_search&#8221; specifically in my CSS to create unique styles.  Before_title and after_title allow me to add custom tags for my title, in this case of a header h2.  </p>
<p>Now that the functions.php file has been created/modified, you should see it in your &#8220;Widgets&#8221; section under &#8220;Appearance&#8221; in the control panel.  You can simply drag any of the available widgets to the appropriate widget based on the same you gave it in your functions.php array.  </p>
<p>In your theme templates, you have to call the dynamic sidebar.  You can use some conditional logic to check if dynamic sidebars are set, but I know I&#8217;ll be using them, so I just call the method statically with the following code:</p>
<pre class="brush: php">
&lt;?php dynamic_sidebar(&#039;sidebar&#039;); ?&gt;
</pre>
<p>You can call this from anywhere, to make things easy, I&#8217;m calling it in sidebar.php.  This way I can keep my reference to <?php get_sidebar(); ?> that is already defined in my template files.  </p>
<p>Finally you&#8217;ll want to style your widgets in CSS.  I use a standard &#8220;.widget&#8221; definition and then use the custom classes to define my header images.  For example, in my categories widget looks like this:</p>
<pre class="brush: css">
.widget_categories h2 {
    background: url(images/categories.jpg) 0px 0px no-repeat;
}

.widget_categories ul li {
    width: 257px; height: 25px;
}

.widget_categories li a {
    background: url(images/categoriesli.jpg) no-repeat;
    padding: 0 0 0 35px;
    display: block;
    color: #eee;
    text-decoration: none;
}

.widget_categories li a:hover {
    background: url(images/categoriesli.jpg) 0 -25px no-repeat;
    color: #fff;
}
</pre>
<p>That defines my header and unordered list for the categories widget which is completely dynamic.  </p>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/wordpress/wordpress-widgets/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filemaker searching with custom dialog and variables</title>
		<link>http://jcombs.net/filemaker-pro/filemaker-searching-with-custom-dialog-and-variables</link>
		<comments>http://jcombs.net/filemaker-pro/filemaker-searching-with-custom-dialog-and-variables#comments</comments>
		<pubDate>Fri, 16 Oct 2009 01:04:51 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[FileMaker Pro]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=22</guid>
		<description><![CDATA[The built in scripting engine for FilemakerPro is actually pretty decent, but people design some pretty clunky interfaces. What I wanted was a button that the user could click which would open a dialog box with some search field inputs. There are a few tricks to get this to work properly. The first step is [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jcombs.net/wp-content/uploads/2009/10/filemaker.jpg" alt="filemaker" title="filemaker" width="250" height="250" class="alignright size-full wp-image-27" /></p>
<p>The built in scripting engine for FilemakerPro is actually pretty decent, but people design some pretty clunky interfaces.  What I wanted was a button that the user could click which would open a dialog box with some search field inputs.  There are a few tricks to get this to work properly.  </p>
<p>The first step is to open the scripting engine.  This is found under &#8220;Scripts&#8221; > &#8220;ScriptMaker&#8221;.  Click on &#8220;New&#8221; in the dialog window to create a new script.  The dialog window allows you to use up to 3 fields.  Why you can&#8217;t select more is beyond me, but that is fine for my purpose.</p>
<p><span id="more-22"></span></p>
<p>You can start by giving the new script a name.  I&#8217;m going to be searching by teacher name, so my script is called &#8220;Search by Teacher&#8221;.  The name is rather unimportant right now.  The first action you want to perform in the script is &#8220;Enter Find Mode&#8221;.  This does exactly what you would expect, the fields that you enter data into will be searchable rather than data entry.  This is important because the next step is where we open the custom dialog box.  By first entering find mode, the data you enter into the dialog box will become your search fields.  Down the command list under &#8220;Miscellaneous&#8221; is show custom dialog.  There are 2 tabs to focus on as seen here:</p>
<p><img src="http://jcombs.net/wp-content/uploads/2009/10/custom_dialog.jpg" alt="custom_dialog" title="custom_dialog" width="570" height="300" class="aligncenter size-full wp-image-32" /></p>
<p>The first tab is for the title, message, and buttons.  You can enter whatever you want for the title and message and the default buttons work fine for me. You&#8217;ll soon see however that Filemaker makes a strange reference to the button order.  They are referenced by the numbers 1-3, listed left to right as you would see in the dialog window, even though in the script window they are shown from left to right.  </p>
<p>The input fields tab is where you&#8217;ll specify the fields in your database that you want to search by. The database I&#8217;m working with is not exactly set up very well, so I had to use a little trickery.  What I&#8217;m trying to accomplish is finding all students for a specific teacher for any period.  Teachers teach anywhere from 5-7 classes in a day, but they are stored with a rather strange relationship.  That is a little outside the scope of what I&#8217;m trying to show here.  To move forward, I&#8217;m searching by 2 fields: last name and first name which are stored in a table name Teacher 1.  There are other related tables named Teacher 2 through Teacher 7.  But because filemaker is only letting me search based a specific field, rather than a generic input, I have to use some variables.</p>
<p>Before getting to that, I want my script to check if the OK button was clicked from the dialog window.  You can do that by using the following condition statement:</p>
<pre class="brush: text">
If[Get(LastMessageChoice)=1]
    ...
    do stuff here
    ...
End If
</pre>
<p>As stated before, 1 references the rightmost button which in this case means they clicked OK.  I&#8217;m now going to use Set Variable to set 2 variables, one for firstname and one for lastname.  In reference to my database structure, the code looks like this:</p>
<pre class="brush: text">
Enter Find Mode[]
If[Get(LastMessageChoice)=1]
    Set Variable[$lastname, Value:Teacher 1::Lastname]
    Set Variable[$firstname, Value:Teacher 1::Firstname]
End If
</pre>
<p>Variables are prefixed by the dollar sign $.  This sets $firstname and $lastname to the data that was just entered in the custom dialog box.  Variables can&#8217;t be used directly in the find script, which is another reason we are still in find mode.  Any fields we set will be set as search parameters.  We can now reference the other teacher tables to get all students, rather than only those in 1st period.</p>
<p>To set the variables we have to use the Set Variable.  This part got a little bit lengthy in my script because I&#8217;m setting fields for all teacher tables.  Just to illustrate this, I&#8217;ll show you with finding only data in Teacher 1 and Teacher 2.</p>
<pre class="brush: text">
Enter Find Mode[]
If[Get(LastMessageChoice)=1]
    Set Variable[$lastname, Value:Teacher 1::Lastname]
    Set Variable[$firstname, Value:Teacher 1::Firstname]
    Set Field[Teacher 1::Last Name; $lastname]
    Set Field[Teacher 1::First Name; $firstname]
    New Record/Request
    Set Field[Teacher 2::Last name; $lastname]
    Set Field[Teacher 2::First name; $firstname]
    Perform Find[]
End If
</pre>
<p>Now, you may see that setting Teacher 1 is a little redundant, but I felt it was a little more consistent.  The New Record/Request call acts like an -OR- operator.  Using Set Field one after another acts like and -AND- operator.  Finally, calling Perform Find[] will execute the search.</p>
<p>Once you have created the script you can attach it to a button and assign it to this script.  Now the user can click a button and enter the search data.</p>
<p>You may ask, what&#8217;s the point, why not just enter find mode and do the search manually.  The reason I did it this way is because I was generating a report that did not have the search fields in the layout, which would make it impossible to simply enter Find Mode and do the search.   Using the scripting engine allows me to search based on any related table even if it is not shown on the layout. </p>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/filemaker-pro/filemaker-searching-with-custom-dialog-and-variables/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHP Auth Component Problem</title>
		<link>http://jcombs.net/cakephp/cakephp-auth-component</link>
		<comments>http://jcombs.net/cakephp/cakephp-auth-component#comments</comments>
		<pubDate>Thu, 15 Oct 2009 05:34:44 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=6</guid>
		<description><![CDATA[I&#8217;ve been using CakePHP for my last few projects and recently ran into a problem that was driving me nuts.  I have a few pages that don&#8217;t require any authentication.  You can allow pages to be viewed by calling $this->Auth->allow(&#8216;function_name&#8217;) in your beforeFilter() method.  So, I set up my app_controller class with a before filter [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jcombs.net/wp-content/uploads/2009/10/cakephp.jpg" alt="cakephp" title="cakephp" width="240" height="229" class="alignright size-full wp-image-91" /></p>
<p>I&#8217;ve been using CakePHP for my last few projects and recently ran into a problem that was driving me nuts.  I have a few pages that don&#8217;t require any authentication.  You can allow pages to be viewed by calling $this->Auth->allow(&#8216;function_name&#8217;) in your beforeFilter() method.  So, I set up my app_controller class with a before filter that looks something like this.</p>
<pre class="brush: php">
&lt;?php

class AppController extends Controller {

    var $helpers = array(&#039;Html&#039;, &#039;Form&#039;, &#039;Javascript&#039;);
    var $components = array(&#039;Auth&#039;);

    function beforeFilter() {
        $this-&gt;Auth-&gt;autoRedirect = false;
        $this-&gt;Auth-&gt;loginAction = array(&#039;controller&#039; =&gt; &#039;users&#039;, &#039;action&#039; =&gt; &#039;login&#039;);
        $this-&gt;Auth-&gt;allow(&#039;display&#039;);
    }

}

?&gt;
</pre>
<p><span id="more-6"></span></p>
<p>&#8216;Display&#8217; is a method in the pages controller, so all static pages can be shown without authentication.  This works fine, on to my contact controller which is also allowed to be accessed without authentication.  I set up my contact controller and wanted to allow the index method to be displayed.  In the contact controller you call the parent beforeFilter() and then allow any additional methods like so:</p>
<pre class="brush: php">
function beforeFilter() {
        parent::beforeFilter();
        $this-&gt;Auth-&gt;allow(&#039;index&#039;);
}
</pre>
<p>But for some reason, this kept sending me to the login form to authenticate.  After banging my head on the wall I soon remembered my view was calling an element that used a method from another controller.  Long story short, Auth was not allowing this method without authentication.  Unfortunately, even with debug mode turned on, there was no clue to lead me in the right direction.</p>
<p>So, if you run into a similar problem, make sure you allow any related controller functions to run without authentication if you are using elements and requestActions. </p>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/cakephp/cakephp-auth-component/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://jcombs.net/uncategorized/hello-world</link>
		<comments>http://jcombs.net/uncategorized/hello-world#comments</comments>
		<pubDate>Wed, 14 Oct 2009 02:38:18 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jcombs.net/?p=1</guid>
		<description><![CDATA[If you are seeing this it is because I&#8217;m trying to create this site pretty much in real time.  I started creating this minimalistic theme and decided I&#8217;d upload changes as I go rather than only testing from my development machine.  This theme will have nothing very fancy, but I do plan to actually start [...]]]></description>
			<content:encoded><![CDATA[<p>If you are seeing this it is because I&#8217;m trying to create this site pretty much in real time.  I started creating this minimalistic theme and decided I&#8217;d upload changes as I go rather than only testing from my development machine.  This theme will have nothing very fancy, but I do plan to actually start blogging about things I do as an IT Pro and Web Developer.  Hopefully the majority of this blog will be completed over the next week or two.</p>
]]></content:encoded>
			<wfw:commentRss>http://jcombs.net/uncategorized/hello-world/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
