<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="https://www.stress-free.co.nz"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>stressfree - software tutorials</title>
 <link>https://www.stress-free.co.nz/tutorials</link>
 <description>Software tutorials primarily focusing on useful Linux server configurations but also a few older ones on CAD packages like Revit and AutoCAD.
</description>
 <language>en</language>
<item>
 <title>Fixing yum&#039;s &quot;Metadata file does not match checksum&quot; error</title>
 <link>https://www.stress-free.co.nz/fixing_yums_metadata_file_does_not_match_checksum_error</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;&lt;a href=&quot;http://centos.org/&quot;&gt;Centos&lt;/a&gt; is a &quot;free&quot; distribution of Red Hat Enterprise Linux which I enjoy using. Whilst it does not have Debian&#039;s apt-get for package management it does have &lt;a href=&quot;http://yum.baseurl.org/&quot;&gt;yum&lt;/a&gt;, which is not as fast but still works pretty well in most circumstances. Unfortunately today I ran into a problem in a clean install of Centos 5.3 where yum was returning the following error:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Error Message: Metadata file does not match checksum&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A quick look around &quot;&lt;a href=&quot;http://www.theonion.com/content/news_briefs/google_launches_the_google&quot;&gt;the Google&lt;/a&gt;&quot; turned up the relatively simple solution; at the terminal execute as root:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;yum clean all&lt;br /&gt; yum makecache&lt;br /&gt; yum update&lt;/p&gt;
&lt;p&gt;This process will take a little time, but the end result should be a nice, clean yum repository cache, complete with no annoying meta-data errors.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/centos&quot;&gt;centos&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Mon, 13 Apr 2009 10:21:30 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">542 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Transparent Squid Authentication to eDirectory</title>
 <link>https://www.stress-free.co.nz/transparent_squid_authentication_to_edirectory</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/squid-edirectory.jpg&quot; alt=&quot;&quot; width=&quot;180&quot; height=&quot;59&quot; /&gt;&lt;/div&gt;
&lt;p&gt;This post explains how to setup a &lt;a id=&quot;le.n&quot; title=&quot;Squid HTTP proxy&quot; href=&quot;http://www.squid-cache.org/&quot;&gt;Squid HTTP proxy&lt;/a&gt; to transparently authenticate users against a &lt;a id=&quot;tlih&quot; title=&quot;Novell eDirectory&quot; href=&quot;http://www.novell.com/products/edirectory/&quot;&gt;Novell eDirectory&lt;/a&gt;. In the Novell eco-system &lt;a id=&quot;n-02&quot; title=&quot;Border Manager&quot; href=&quot;http://www.novell.com/products/bordermanager/&quot;&gt;Border Manager&lt;/a&gt; is the venerable choice for an internal firewall and proxy but it is showing its age. This guide is based on this &lt;a id=&quot;yett&quot; title=&quot;Novell Cool Solution&quot; href=&quot;http://www.novell.com/coolsolutions/feature/17777.html&quot;&gt;Novell Cool Solution&lt;/a&gt;. Unlike Border Manager, which requires the &lt;a id=&quot;y9j9&quot; title=&quot;CLNTRUST&quot; href=&quot;http://www.novell.com/coolsolutions/tip/7761.html&quot;&gt;CLNTRUST&lt;/a&gt; client-side tool, the setup described works without the need for any desktop client software.&lt;/p&gt;
&lt;h2&gt;How it works&lt;/h2&gt;
&lt;p&gt;Within a Novell managed network the eDirectory stores authenticated user&#039;s I.P. addresses. Squid performs an LDAP search against eDirectory using the incoming I.P. address of the client. If successful the authenticated username is returned and a proxy session established. If the search comes up empty Squid prompts the client to manually enter their credentials for authentication against the eDirectory. If this too fails the proxy request is denied.&lt;/p&gt;
&lt;h2&gt;eDirectory 8.8 incompatability&lt;/h2&gt;
&lt;p&gt;This solution currently only works with eDirectory &amp;lt; 8.8 because Novell has slightly changed the format they store network addresses in newer versions. At the time of writing I have not been able to test against eDirectory 8.8 so I cannot determine the required code changes or test results. Hopefully in the near future this situation will change.&lt;/p&gt;
&lt;h2&gt;Squid&#039;s external_acl_type option&lt;/h2&gt;
&lt;p&gt;Transparent authentication is made possible thanks to Squid&#039;s &lt;em&gt;external_acl_type &lt;/em&gt;configuration option. This allows external identities and groups to be identified via any external script. Once Squid is installed setting up transparent eDirectory authentication is a two step process:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt; Create and tweak the &lt;strong&gt;squid_edir_iplookup.pl&lt;/strong&gt; file. &lt;/li&gt;
&lt;li&gt; Edit the &lt;strong&gt;squid.conf&lt;/strong&gt; configuration file &lt;/li&gt;
&lt;/ol&gt;&lt;!--break--&gt;&lt;h2&gt;The engine room: squid_edir_iplookup.pl&lt;/h2&gt;
&lt;p&gt;To begin create a file named squid_edir_iplookup.pl. This file can be anywhere on your system as long as the Squid process can access it. In this example I have created the file in /usr/lib/squid/ as this is where Red Hat stores all of Squid&#039;s authentication related scripts.&lt;/p&gt;
&lt;h3&gt;/usr/lib/squid/squid_edir_iplookup.pl&lt;/h3&gt;
&lt;p class=&quot;codesnippet&quot;&gt;#!/usr/bin/perl&lt;br /&gt; use Net::LDAP;&lt;br /&gt; use Net::LDAP::LDIF;&lt;br /&gt; use File::Path qw(rmtree);&lt;br /&gt; use File::Basename qw(basename);&lt;br /&gt;&lt;br /&gt; $HOST = &#039;your.edirectory.server&#039;;&lt;br /&gt; $PORT = 389;&lt;br /&gt; $ADMIN = &quot;cn=squid,ou=tech,o=company&quot;;&lt;br /&gt; $PASSWD = &quot;squidpassword&quot;;&lt;br /&gt; $BASEDN = &quot;o=company&quot;;&lt;br /&gt; @SITES = qw(ou=groups);&lt;br /&gt;&lt;br /&gt; $|=1;&lt;br /&gt;&lt;br /&gt; START: while (&amp;lt;&amp;gt;) {&lt;br /&gt;&lt;br /&gt; ($IP,$GROUP) = split(/ /,$_);&lt;br /&gt; # $SITE =~ tr/\n//d;&lt;br /&gt; $GROUP =~ tr/\n//d;&lt;br /&gt; $group_filter_string=&quot;&quot;;&lt;br /&gt; for $site (@SITES) {&lt;br /&gt; $group_filter_string=$group_filter_string.&quot;(groupMembership=cn=$GROUP,${site},$BASEDN)&quot;;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; $netaddress = &quot;1\#&quot;;&lt;br /&gt; @octets = split(/\./,$IP);&lt;br /&gt; foreach $octet (@octets) {&lt;br /&gt; # The IP address is stored in eDirectory as four unsigned chars. ASCII 40, 41, 42 and&lt;br /&gt; # 92 are characters ( ) *\ which are known tokens in LDAP search filters If you dont&lt;br /&gt; # escape these with a backslash they will cause LDAP errors and he script will fail.&lt;br /&gt; if ((($octet &amp;gt;= 40) &amp;amp;&amp;amp; ($octet &amp;lt;= 42)) || ($octet == 92)) {&lt;br /&gt; $netaddress = $netaddress.sprintf(&quot;\\%c&quot;,$octet)&lt;br /&gt; } else {&lt;br /&gt; $netaddress= $netaddress.sprintf(&quot;%c&quot;,$octet);&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; $filter=&quot;(&amp;amp;(objectclass=user)(|$group_filter_string)(networkAddress=$netaddress))&quot;;&lt;br /&gt; $attnames=[&#039;CN&#039;];&lt;br /&gt;&lt;br /&gt; #connect to the server&lt;br /&gt; until($ldap = Net::LDAP-&amp;gt;new($HOST, port =&amp;gt; $PORT)) {&lt;br /&gt; die &quot;Can not connect to ldap://$HOST:$PORT/&quot; if ++$count &amp;gt; 10;&lt;br /&gt; sleep 1;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; $r = $ldap-&amp;gt;start_tls();&lt;br /&gt;&lt;br /&gt; $r = $ldap-&amp;gt;bind($ADMIN, password =&amp;gt; $PASSWD, version=&amp;gt;2);&lt;br /&gt; die $r-&amp;gt;error if $r-&amp;gt;code;&lt;br /&gt;&lt;br /&gt; $r = $ldap-&amp;gt;search(base =&amp;gt; $BASEDN,&lt;br /&gt; scope =&amp;gt; &#039;sub&#039;,&lt;br /&gt; filter =&amp;gt; $filter,&lt;br /&gt; attrs =&amp;gt; $attnames);&lt;br /&gt;&lt;br /&gt; $count = $r-&amp;gt;count;&lt;br /&gt; if ($count == 0) {&lt;br /&gt; print &quot;ERR\n&quot;;&lt;br /&gt; } else {&lt;br /&gt; foreach my $entry ($r-&amp;gt;entries){&lt;br /&gt; my @values = $entry-&amp;gt;get_value(CN);&lt;br /&gt; foreach $value (@values) {&lt;br /&gt; # Many users in eDirectory have multiple CN values - usually from the user template&lt;br /&gt; # used to create them - sometimes their maiden name is noted in the Other Name&lt;br /&gt; # attribute in ConsoleOne we want to report the proper CN to squid not these bogus&lt;br /&gt; # values.&lt;br /&gt; if ($value =~ m/template|previously/i) {&lt;br /&gt; next;&lt;br /&gt; } else {&lt;br /&gt; $value =~ tr/- //d;&lt;br /&gt; print &quot;OK user=$value\n&quot;;&lt;br /&gt; next START;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; $ldap-&amp;gt;unbind;&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;At the beginning of this file you want to change the $HOST, $PORT, $ADMIN, $PASSWD and $BASEDN parameters to ones that are relevant for your internal network. The @SITES array is not important as this is used in the &lt;a id=&quot;r7.2&quot; title=&quot;Cool Solution example&quot; href=&quot;http://www.novell.com/coolsolutions/feature/17777.html&quot;&gt;Cool Solution example&lt;/a&gt; to define different groups of users (something we are not concerned about here).&lt;/p&gt;
&lt;p&gt;Once you have saved the file make it executable:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;chmod a+x /usr/lib/squid/squid_edir_iplookup.pl&lt;/p&gt;
&lt;p&gt;The trickiest step is making sure you have the correct Perl libraries installed on your system for the script to run. These libraries are defined at the top of the file (the USE statements). The easiest way of testing whether the script is working is to run it:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;/usr/lib/squid/squid_edir_iplookup.pl&lt;/p&gt;
&lt;p&gt;The Perl interpreter will soon tell you if something is not right. If a required library is missing you will need to install it using your system&#039;s package management tool or directly from source (&lt;a id=&quot;rghv&quot; title=&quot;CPAN&quot; href=&quot;http://www.cpan.org/&quot;&gt;CPAN&lt;/a&gt; is useful).&lt;/p&gt;
&lt;p&gt;All going well when the script is run you will be presented with a new, blank line. Test the LDAP lookup by typing an I.P. address and pressing enter. After a brief delay a success/fail message will be returned:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;/usr/lib/squid/squid_edir_iplookup.pl&lt;br /&gt; 192.168.1.10&lt;br /&gt; ERR&lt;/p&gt;
&lt;p&gt;In the above example no valid user was found in the eDirectory at this I.P. address. If the look-up was successful the relevant username will be returned. To quit the script press &lt;em&gt;CTRL+C&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Editing squid.conf&lt;/h2&gt;
&lt;p&gt;With the squid_edir_iplookup.pl script in place and working it is now time to edit the Squid configuration. The exact location of this file will vary depending on your operating system, but in the case of Red Hat this is:&lt;/p&gt;
&lt;h3&gt;/etc/squid/squid.conf&lt;/h3&gt;
&lt;p class=&quot;codesnippet&quot;&gt;http_port 3128&lt;br /&gt; http_port 8080&lt;br /&gt; hierarchy_stoplist cgi-bin ?&lt;br /&gt; acl QUERY urlpath_regex cgi-bin \?&lt;br /&gt; cache deny QUERY&lt;br /&gt; acl apache rep_header Server ^Apache&lt;br /&gt; broken_vary_encoding allow apache&lt;br /&gt; access_log /var/log/squid/access.log squid&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;external_acl_type IPUser ttl=3600 %SRC /usr/lib/squid/squid_edir_iplookup.pl&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;auth_param basic program /usr/lib/squid/squid_ldap_auth -b &quot;ou=users,o=company&quot; -u cn your.edirectory.server&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;auth_param basic children 5&lt;br /&gt; auth_param basic realm Squid Web Proxy&lt;br /&gt; auth_param basic credentialsttl 1 hours&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; # Used to pull LDAP group membership based on a supplied username - not currently used&lt;br /&gt; # external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -D cn=squid,ou=tech,o=company -w squidpassword -b o=company -s sub -f &quot;(&amp;amp;(objectclass=inetOrgPerson)(cn=%u)(groupMembership=%g))&quot; -h your.edirectory.server&lt;br /&gt;&lt;br /&gt; refresh_pattern ^ftp: 1440 20% 10080&lt;br /&gt; refresh_pattern ^gopher: 1440 0% 1440&lt;br /&gt; refresh_pattern . 0 20% 4320&lt;br /&gt;&lt;br /&gt; acl all src 0.0.0.0/0.0.0.0&lt;br /&gt; acl manager proto cache_object&lt;br /&gt; acl localhost src 127.0.0.1/255.255.255.255&lt;br /&gt; acl localnet src 192.168.1.0/255.255.255.0&lt;br /&gt; acl to_localhost dst 127.0.0.0/8&lt;br /&gt; acl SSL_ports port 443&lt;br /&gt; acl Safe_ports port 80 # http&lt;br /&gt; acl Safe_ports port 21 # ftp&lt;br /&gt; acl Safe_ports port 443 # https&lt;br /&gt; acl Safe_ports port 70 # gopher&lt;br /&gt; acl Safe_ports port 210 # wais&lt;br /&gt; acl Safe_ports port 1025-65535 # unregistered ports&lt;br /&gt; acl Safe_ports port 280 # http-mgmt&lt;br /&gt; acl Safe_ports port 488 # gss-http&lt;br /&gt; acl Safe_ports port 591 # filemaker&lt;br /&gt; acl Safe_ports port 777 # multiling http&lt;br /&gt; acl CONNECT method CONNECT&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;acl edirectory_users external IPUser Everyone&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;acl authenticated_users proxy_auth REQUIRED localnet&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; http_access allow manager localhost&lt;br /&gt; http_access deny manager&lt;br /&gt; http_access deny !Safe_ports&lt;br /&gt; http_access deny CONNECT !SSL_ports&lt;br /&gt; http_access deny to_localhost&lt;br /&gt;&lt;br /&gt; http_access allow edirectory_users&lt;br /&gt; http_access allow authenticated_users&lt;br /&gt; http_access allow localhost&lt;br /&gt; # http_access allow localnet&lt;br /&gt; http_access deny all&lt;br /&gt;&lt;br /&gt; http_reply_access allow all&lt;br /&gt;&lt;br /&gt; icp_access allow all&lt;br /&gt;&lt;br /&gt; coredump_dir /var/spool/squid&lt;br /&gt;&lt;br /&gt; debug_options ALL,1&lt;br /&gt; # For debugging ACLs&lt;br /&gt; # debug_options ALL,1 33,2 28,9&lt;/p&gt;
&lt;p&gt;You will need to change the relevant parts in this file to suit your eDirectory and internal network settings (i.e. the localnet setting).&lt;/p&gt;
&lt;p&gt;The Squid configuration file is a tricky beast, but what is listed above is fairly standard. The first highlighted section is where the external squid_edir_iplookup.pl script is referenced. If this check fails an LDAP-backed HTTP BASIC authentication request is made.&lt;/p&gt;
&lt;p&gt;The second highlighted area identifies two Access Control Lists, the first based on the result of the eDirectory I.P. lookup and the second on the HTTP BASIC authentication response. If the incoming request is from someone authenticated within the eDirectory OR by the HTTP BASIC process then outbound access is granted.&lt;/p&gt;
&lt;p&gt;It is possible to use LDAP group information to form ACLs that further limit Web access. The above example does not utilise this functionality, but the Novell Cool Solution goes into it in further detail. My advice is get the Squid/eDirectory authentication working at a very basic level and then make it more complicated. Starting at the most complicated scenario will only lead to failure and frustration.&lt;/p&gt;
&lt;p&gt;If you are encountering authentication issues then enable the debugging options at the bottom of the configuration file. This is fairly verbose but can be very useful in identifying configuration mistakes.&lt;/p&gt;
&lt;h2&gt;Reviewing HTTP access logs with Webmin &amp;amp; SARG&lt;/h2&gt;
&lt;p&gt;&lt;a id=&quot;ny.x&quot; title=&quot;SARG&quot; href=&quot;http://sarg.sourceforge.net/&quot;&gt;SARG&lt;/a&gt; (Squid Analysis Report Generator) is a handy tool for reviewing Squid access files. There is a very good &lt;a id=&quot;t18l&quot; title=&quot;Webmin&quot; href=&quot;http://www.webmin.com/&quot;&gt;Webmin&lt;/a&gt; module for this application, so rather than struggling with the command line install Webmin on the proxy. By the way, while you are at it install &lt;a id=&quot;f0tq&quot; title=&quot;my Webmin theme&quot; href=&quot;/webmin-theme&quot;&gt;my Webmin theme&lt;/a&gt;, your eyes will thank you for it.&lt;/p&gt;
&lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;/sites/default/files/u63/squid-sarg_lg.jpg&quot;&gt; &lt;img src=&quot;/sites/default/files/u63/squid-sarg_sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;216&quot; /&gt;&lt;br /&gt; The SARG module within Webmin (click to enlarge)&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/novell&quot;&gt;novell&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/squid&quot;&gt;squid&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Tue, 07 Oct 2008 10:36:45 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">526 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Installing VMWare Server 1.0 on Ubuntu 6.06LTS</title>
 <link>https://www.stress-free.co.nz/installing_vmware_server_10_on_ubuntu_606lts</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img title=&quot;undefined&quot; onmouseover=&quot;undefined&quot; onmouseout=&quot;undefined&quot; src=&quot;/sites/default/files/u63/vmware-ubuntu.jpg&quot; alt=&quot;&quot; width=&quot;214&quot; height=&quot;90&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ubuntu.com/products/WhatIsUbuntu/serveredition&quot;&gt;Ubuntu 6.06LTS&lt;/a&gt; is a useful platform for VMWare because it has a small footprint by todays standards and is supported by Canonical until 2011. Unfortunately installing VMWare Server 1.0 can be a little painful given there are no binary kernel modules for Ubuntu in this release.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;Fortunately there are some excellent guides for installing VMWare on this platform such as &lt;a style=&quot;text-decoration: none; color: #336699&quot; href=&quot;http://www.howtoforge.com/ubuntu_vmware_server&quot;&gt;this one from HowtoForge&lt;/a&gt;. What follows is an installation script based on the HowtoForge guide that saves the administrator a lot of time and solves a bug along the way.&lt;/p&gt;
&lt;!--break--&gt;
&lt;h2 style=&quot;margin-bottom: 0.5em; font-size: 1.2em&quot;&gt;Build your Ubuntu server&lt;br /&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;A basic install of 6.06LTS is pretty light weight and by default doesn&#039;t have anything running that isn&#039;t needed. A few things that you may want to install is the openssh-server package for remote access and ntp-server for keeping your system clock accurate.&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;sudo apt-get install openssh-server ntp-server&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;By default Ubuntu 6.06 configures its network via DHCP which is fine for a desktop system but probably not ideal for a server. To set a static IP address edit the &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold&quot;&gt;/etc/network/interfaces&lt;/span&gt; file and set the relevant static network interface and address parameters. For example:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;iface eth0 inet static&lt;br /&gt;address 192.168.1.10&lt;br /&gt;netmask 255.255.255.0&lt;br /&gt;network 192.168.1.0&lt;br /&gt;broadcast 192.168.1.255&lt;br /&gt;gateway 192.168.1.1&lt;/p&gt;
&lt;p&gt;Also check the &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold&quot;&gt;/etc/resolv.conf&lt;/span&gt; file contains the correct DNS server details before restarting the network interfaces with:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;sudo /etc/init.d/network restart&lt;/p&gt;
&lt;h2 style=&quot;margin-bottom: 0.5em; font-size: 1.2em&quot;&gt;The VMWare Installation Script&lt;br /&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;1. Create a vmware directory somewhere handy to store the installation files, your home directory is a good place. Once the installation is complete you can remove this directory although it is worth making a backup should you wish to install VMWare again.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;2.Download the Linux tar archives of VMWare Server 1.0 and the Management User Interface (MUI) from the &lt;a href=&quot;http://www.vmware.com/download/server/&quot;&gt;VMWare website&lt;/a&gt;. The current stable release of VMWare Server at the time of writing was version 1.0.4-56528. Also as you are downloading remember to record your serial code as this will be needed during the installation process.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;3. In the same directory where you have downloaded these install archives create a new file named &lt;span style=&quot;font-weight: bold&quot;&gt;rundir.httpd.vmware&lt;/span&gt; with the following contents:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;#! /bin/sh&lt;br /&gt;# /var/run gets purged at every reboot!&lt;br /&gt;&lt;br /&gt;RUNDIR=&quot;/var/run/vmware/httpd&quot;&lt;br /&gt;OWNER=&quot;www-data&quot;&lt;br /&gt;GROUP=&quot;www-data&quot;&lt;br /&gt;&lt;br /&gt;/usr/bin/test -d &quot;$RUNDIR&quot; || \&lt;br /&gt;/bin/mkdir -p &quot;$RUNDIR&quot; &amp;amp;&amp;amp; /bin/chown &quot;$OWNER:$GROUP&quot; &quot;$RUNDIR&quot;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;This file is copied to the /etc/init.d/ directory by the installation script and overcomes an permissions issue which stops the VMWare MUI from loading.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;4. Now create a file called &lt;span style=&quot;font-weight: bold&quot;&gt;install-vmare.sh&lt;/span&gt; with the following contents:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;#! /bin/sh&lt;br /&gt;TMP=&quot;/tmp&quot;&lt;br /&gt;VERSION=&quot;1.0.4-56528&quot;&lt;br /&gt;&lt;br /&gt;echo &quot;Installing VMware Server for Ubuntu 6.06&quot;&lt;br /&gt;&lt;br /&gt;echo &quot;Installing application requirements&quot;&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;echo &quot;Installing dev headers and xinetd...&quot;&lt;br /&gt;sudo apt-get -y install libx11-6 libx11-dev libxtst6 xlibs-dev xinetd wget&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;&lt;br /&gt;echo &quot;Installing Linux Kernel headers...&quot;&lt;br /&gt;sudo apt-get -y install linux-headers-`uname -r` build-essential&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;&lt;br /&gt;echo &quot;Installing build utilities...&quot;&lt;br /&gt;sudo apt-get -y install gcc binutils-doc cpp-doc make manpages-dev autoconf \&lt;br /&gt;automake1.9 libtool flex bison gdb gcc-doc gcc-4.0-doc libc6-dev-amd64 lib64gcc1&lt;br /&gt;&lt;br /&gt;# Install VMWare Server&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;echo &quot;Uncompressing the VMware Server $VERSION archive...&quot;&lt;br /&gt;&lt;br /&gt;# Copy files to revelant locations&lt;br /&gt;cp VMware-server-$VERSION.tar.gz $TMP&lt;br /&gt;cp VMware-mui-$VERSION.tar.gz $TMP&lt;br /&gt;sudo cp rundir.httpd.vmware /etc/init.d/&lt;br /&gt;&lt;br /&gt;cd $TMP&lt;br /&gt;tar -xzf VMware-server-$VERSION.tar.gz&lt;br /&gt;rm VMware-server-$VERSION.tar.gz&lt;br /&gt;&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;echo &quot;Installing VMware Server $VERSION...&quot;&lt;br /&gt;cd vmware-server-distrib&lt;br /&gt;sudo ./vmware-install.pl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Install the VMWare web management console&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;&lt;br /&gt;echo &quot;Uncompressing the VMware MUI $VERSION archive...&quot;&lt;br /&gt;&lt;br /&gt;cd $TMP&lt;br /&gt;tar -xzf VMware-mui-$VERSION.tar.gz&lt;br /&gt;rm VMware-mui-$VERSION.tar.gz&lt;br /&gt;&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;echo &quot;Installing VMware MUI $VERSION...&quot;&lt;br /&gt;&lt;br /&gt;# Configure the MUI rundir fix&lt;br /&gt;sudo chmod 755 /etc/init.d/rundir.httpd.vmware&lt;br /&gt;sudo ln -s /etc/init.d/rundir.httpd.vmware /etc/rc2.d/S90rundir.httpd.vmware&lt;br /&gt;&lt;br /&gt;cd vmware-mui-distrib&lt;br /&gt;sudo ./vmware-install.pl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;echo &quot;Cleaning up...&quot;&lt;br /&gt;cd $TMP&lt;br /&gt;rm -rf vmware-server-distrib&lt;br /&gt;rm -rf vmware-mui-distrib&lt;br /&gt;echo &quot;---------------------------------------------------&quot;&lt;br /&gt;echo &quot;VMWare installation complete&quot;&lt;br /&gt;&lt;br /&gt;echo &quot;&quot;&lt;br /&gt;echo &quot;To administer VMWare you will need to either:&quot;&lt;br /&gt;echo &quot;1. Enable root logon access (sudo passwd root)&quot;&lt;br /&gt;echo &quot;2. Set set the uid of a designated user to 0 (sudo nano /etc/passwd)&quot;&lt;br /&gt;echo &quot;&quot;&lt;br /&gt;echo &quot;&quot;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;This is the script that handles installation of all the required dependencies, kernel sources and VMWare packages.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;NOTE:&lt;/span&gt; You may need to tweak the TMP and VERSION variables to suit your server environment and downloaded VMWare version.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;5. Finally enable execute permissions on this file and run the script:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;chmod a+x install-vmware.sh./install-vmware.sh&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;The script will prompt you for your password in order to gain administrator privileges (sudo). It will then install all the required packages via apt before copying the rundir.http.vmware file into the correct location and running the VMWare installers.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;For the most part the default VMWare install options can be accepted without much thought. The only settings that may need tweaking is the location of the VMWare images (default /var/lib/vmware/Virtual Machines) and the MUI&#039;s default login time of 60 minutes which seems a little long for my liking (15 minutes would seem more appropriate).&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;All going well at the end of the process you should have a fully functional VMWare Server with a web management console operating at https://server-ip-address:8333/. Whilst you cannot create or install virtual machines via the web console you can download the Windows or Linux VMWare Console installers which will get you going.&lt;/p&gt;
&lt;h2&gt;Kernel Updates&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;Be aware that each time you upgrade the Ubuntu kernel to a different version the VMWare kernel module must be recompiled. After upgrading your kernel and rebooting the system you will find VMWare fails to load. At this point do not panic, it only takes a few steps to rectify the situation.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;1. First download the headers for your current kernel.&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;sudo apt-get install linux-headers-`uname -r`&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;2. Now run the vmware-config.pl script, accept the default settings and rebuild the VMWare kernel module.&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;sudo vmware-config.pl&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt;Once this script completes VMWare should once again be operational. The only thing left to do is remove the old kernel headers if you feel you won&#039;t be needing them again:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;sudo apt-get remove linux-headers-(old kernel version)&lt;/p&gt;
&lt;p style=&quot;margin-top: 0.5em; margin-bottom: 0.9em&quot;&gt; &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/virtualisation&quot;&gt;virtualisation&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/vmware&quot;&gt;vmware&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Wed, 23 Jan 2008 09:04:58 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">476 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>A handy backup script for remote hosting</title>
 <link>https://www.stress-free.co.nz/a_handy_backup_script_for_remote_hosting</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/amazon_webservices.jpg&quot; width=&quot;170&quot; height=&quot;69&quot; /&gt;&lt;/div&gt;&lt;p&gt;I use &lt;a href=&quot;http://www.mediatemple.net/&quot;&gt;Media Temple&lt;/a&gt; for hosting of websites and Subversion repositories. The quality of service they provide is solid (especially considering the price) and the ability to SSH into the server and dig around at the command line is a huge plus. Unfortunately one of the areas they are lacking in is backups.&lt;/p&gt;&lt;p&gt;Media Temple provide a backup service but it is very limited in terms of capacity and granularity. Their backup function also does not provide any Subversion repository dump support which is crucial if you have ever experienced the pain of recovering from a Berkeleydb corruption.&lt;/p&gt;&lt;p&gt;Below is a script I use to backup my web domains, databases and Subversion repositories to compressed tar archives. Once these have been generated they are uploaded to the &lt;a href=&quot;http://www.amazon.com/gp/browse.html?node=16427261&quot;&gt;Amazon S3 storage cloud&lt;/a&gt; to create an off-site backup of off-site resources. The ability to backup directly from Media Temple to Amazon is great because it removes the middle-man (me) and maximises bandwidth usage. Pulling a tonne of data from the United States to New Zealand just to send it back again is certainly not an economical use of Internet resources.&lt;/p&gt;&lt;!--break--&gt;&lt;p&gt;Edit the variables at the top of the file to suit your hosting environment. Remember to set the file&#039;s execute permission bit otherwise it is not going to run (e.g. chmod a+x backup_server.sh).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;backup_server.sh &lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;# A list of website directories to back up&lt;br /&gt;websites=&quot;website1.com website2.com website3.com website4.com&quot;&lt;br /&gt;&lt;br /&gt;# A list of subversion repositories to back up&lt;br /&gt;svnrepos=&quot;repo1 repo2 repo3 repo4&quot;&lt;br /&gt;&lt;br /&gt;# The destination directory to backup the files to&lt;br /&gt;destdir=/var/backups&lt;br /&gt;&lt;br /&gt;# The directory where all website domain directories reside&lt;br /&gt;domaindir=/srv/www/vhosts&lt;br /&gt;&lt;br /&gt;# The directory where all subversion repositories reside&lt;br /&gt;svndir=/srv/svn&lt;br /&gt;&lt;br /&gt;# The MySQL database hostname&lt;br /&gt;dbhost=example.mysqldatabase.com&lt;br /&gt;&lt;br /&gt;# The MySQL database username - requires read access to databases&lt;br /&gt;dbuser=exampleuser&lt;br /&gt;&lt;br /&gt;# The MySQL database password&lt;br /&gt;dbpassword=examplepassword&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo `date` &quot;: Beginning backup process...&quot; &amp;gt; $destdir/backup.log&lt;br /&gt;&lt;br /&gt;# remove old backups&lt;br /&gt;rm $destdir/*.tar.gz&lt;br /&gt;&lt;br /&gt;# backup databases&lt;br /&gt;for dbname in `echo &#039;show databases;&#039; | /usr/bin/mysql -h $dbhost -u$dbuser -p$dbpassword`&lt;br /&gt;do&lt;br /&gt;        if [ $dbname != &quot;Database&quot; ];&lt;br /&gt;        then&lt;br /&gt;                echo `date` &quot;: Backing up database $dbname...&quot; &amp;gt;&amp;gt; $destdir/backup.log&lt;br /&gt;                /usr/bin/mysqldump --opt -h $dbhost -u$dbuser -p$dbpassword $dbname &amp;gt; $destdir/$dbname.sql&lt;br /&gt;                tar -czf $destdir/$dbname.sql.tar.gz $destdir/$dbname.sql&lt;br /&gt;                rm $destdir/$dbname.sql&lt;br /&gt;        fi&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;# backup web content&lt;br /&gt;echo `date` &quot;: Backing up web content...&quot; &amp;gt;&amp;gt; $destdir/backup.log&lt;br /&gt;for website in $websites&lt;br /&gt;do&lt;br /&gt;        echo `date` &quot;: Backing up website $website...&quot; &amp;gt;&amp;gt; $destdir/backup.log&lt;br /&gt;        tar -czf $destdir/$website.tar.gz $domaindir/$website&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;# backup subversion repositories&lt;br /&gt;echo `date` &quot;: Backing up subversion data...&quot; &amp;gt;&amp;gt; $destdir/backup.log&lt;br /&gt;for svnrepo in $svnrepos&lt;br /&gt;do&lt;br /&gt;        echo `date` &quot;: Backing up svn repo $svnrepo...&quot; &amp;gt;&amp;gt; $destdir/backup.log&lt;br /&gt;        svnadmin dump -q $svndir/$svnrepo &amp;gt; $destdir/$svnrepo.svn&lt;br /&gt;        tar -czf $destdir/$svnrepo.svn.tar.gz $destdir/$svnrepo.svn&lt;br /&gt;        rm $destdir/$svnrepo.svn&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;echo `date` &quot;: Backup process complete.&quot; &amp;gt;&amp;gt; $destdir/backup.log&lt;/p&gt;&lt;p&gt;Once the backup process is complete the archives can be uploaded to Amazon&#039;s S3 via the s3backup tool. Follow the instructions as described in Paul Stamatiou&#039;s excellent how-to post entitled &#039;&lt;a href=&quot;http://paulstamatiou.com/2007/07/29/how-to-bulletproof-server-backups-with-amazon-s3&quot;&gt;Bulletproof Server Backups with Amazon S3&lt;/a&gt;&#039;.&lt;/p&gt;&lt;p&gt;Below is a small script I use to run s3backup which uploads the previously created archives.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;s3_backup.sh&lt;/strong&gt; (again remember to set execute permissions on the file) &lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;# The directory where s3sync is installed&lt;br /&gt;s3syncdir=/usr/local/s3sync&lt;br /&gt;&lt;br /&gt;# The directory where the backup archives are stored&lt;br /&gt;backupdir=/var/backups&lt;br /&gt;&lt;br /&gt;# The S3 bucket a.k.a. directory to upload the backups into&lt;br /&gt;s3bucket=backups&lt;br /&gt;&lt;br /&gt;cd $s3syncdir&lt;br /&gt;./s3sync.rb $backupdir/ $s3bucket:&lt;/p&gt;&lt;p&gt;Once both scripts have been tested they can be added as cron jobs and left to themselves. If you wanted with a bit of tweaking to the s3_backup.sh script (or cron) you could create multiple remote backup versions on S3 just in case an archive gets corrupted or there is a need to restore something overridden in your previous backup. &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/backup&quot;&gt;backup&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Wed, 05 Sep 2007 11:22:12 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">468 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Revit 9.1 Tutorial</title>
 <link>https://www.stress-free.co.nz/revit_9_1_tutorial</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;h1&gt;       Revit&amp;#39;ing It Up     &lt;/h1&gt;
&lt;h4&gt;       This tutorial is intended to introduce the uninitiated into the world of       Revit and Object Modeling. No experience is required in CAD, in fact if       you are a new user you could find it easier to understand than a 20-year       veteran of traditional CAD systems!     &lt;/h4&gt;
&lt;p&gt;       Before we jump into Revit I&amp;#39;ll first cover a few fundamental CAD concepts       and for the experienced point out how Revit differs from other CAD       packages such as the mighty AutoCAD.&lt;br /&gt;       Once we&amp;#39;ve covered that ground the plan is to move into modeling Le       Corbusier&amp;#39;s Villa Savoye with Revit. In creating Le Corbusier&amp;#39;s immortal       piece of modern architecture you will be introduced to a wide spectrum       (but by no means all) of Revit&amp;#39;s modeling tools.     &lt;/p&gt;
&lt;p&gt;       Once we have a reasonable model we will quickly go through some of the       page layout possibilities within Revit. I say quickly because following       this short interlude I&amp;#39;ll try to illustrate the flexibility Revit&amp;#39;s       Object Modeling system by quickly and painlessly modifying our model in a       variety of different ways to create a Villa Savoye even Tim the Toolman       Taylor would be proud of.     &lt;/p&gt;
&lt;p&gt;       How long this tutorial may take you is anyone&amp;#39;s guess. Remember it&amp;#39;s not       a race. What is more important is that you gain a firm understanding of       the principles behind what you are doing and have fun.     &lt;/p&gt;
&lt;h4&gt;       This tutorial is only an introduction and does not cover the extensive       stair-building, ramp-building, team-work and documentation features       possible within Revit. If you are interested in these features checkout       the online help or visit the &lt;a href=&quot;http://www.revit.com/&quot;&gt;AutoDesk       Revit&lt;/a&gt; website for tutorials and whitepapers.     &lt;/h4&gt;
&lt;h2 class=&quot;heading&quot;&gt;A Word Before We Begin&lt;/h2&gt;
&lt;p&gt;       When writing a tutorial it&amp;#39;s hard to know how much handholding should       take place. If you are following through this tutorial and your model is       not looking the same as the screenshots don&amp;#39;t panic! What is important is       that you understand how you got to where you are, not how good you are at       following instructions.&lt;br /&gt;       If you do find areas of the tutorial confusing email me with any       suggestions or questions at &lt;a href=&quot;mailto:david.harrison@stress-free.co.nz&quot;&gt;david.harrison@stress-free.co.nz&lt;/a&gt;.     &lt;/p&gt;
  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/revit&quot;&gt;revit&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Thu, 12 Jul 2007 09:37:25 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">447 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Using OSX&#039;s automounter for transparent access to remote media</title>
 <link>https://www.stress-free.co.nz/using_osxs_automounter_for_transparent_access_to_remote_media</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;The one thing that really annoys me about OSX is its network share tool-set. With Windows you can map a network share to a drive letter, check a box that says &#039;Reconnect at login&#039; and you are done. In OSX the process of reconnecting to a network share is not nearly as smooth as it should be.&lt;/p&gt;&lt;h2&gt;The easy option: using Favourites &lt;/h2&gt;&lt;p&gt;The simpliest way of achieving this task is to add the network share as a favourite. To do so go to Finder&#039;s menu and select Go -&amp;gt; Connect to Server. In the window enter the type and name of the network share (i.e. cifs://server/share) and press the + button to save it as a favourite. With the favourite saved open your account preferences from the Apple Menu -&amp;gt; System Preferences -&amp;gt; Accounts and go to the Login Items tab. Now open a Finder window and browse to your user directory -&amp;gt; Library -&amp;gt; Favorites and drag the relevant share icon onto the list of login items to have it mounted every time you login.&lt;/p&gt;&lt;h2&gt;The problem of lost connections &lt;/h2&gt;&lt;p&gt;There is one significant drawback with this technique in that if the connection to the share is lost for some reason (e.g. through sleep mode, server or network failure) OSX will not automatically reconnect to it. This becomes a real pain when trying to use a remote share as your primary iTunes music folder because when iTunes cannot find the share it restores your music directory to its default location. This leads to confusion, missing files and if you are not careful a destroyed music library.&lt;/p&gt;&lt;p&gt;The good news is the automount tool can come to your aid but the bad news is it is not straightforward to setup. Automount is common among the *NIX&#039;s (i.e. Linux, BSD, etc.) and works in the background to ensure your network shares are always available after restarts and network failures.&lt;!--break--&gt; &lt;/p&gt;&lt;h2&gt;The drawback of automount&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;There is a significant drawback with automount in that shares mounted using it are accessible to all users of the machine unless you get fancy with permissions. If you are sharing a desktop with people you do not trust then automount is probably not the best option for you. &lt;/p&gt;&lt;h2&gt;Configuring automount&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Configuring automount requires an account with administrative privileges so either log in as your desktop&#039;s administrator or become comfortable with su&#039;ing to the relevant user.&lt;/p&gt;&lt;p&gt;1. Open a Terminal window and run the following command to become the root user:&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;sudo sh (enter)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You will be prompted for the administrators password at this point.&lt;/p&gt;&lt;p&gt;Edit the hostconfig file and ensure the AUTOMOUNT option is set to -YES-&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;pico /etc/hostconfig&lt;/p&gt;&lt;p&gt;By default the automounter is enabled so in theory no change should be necessary here. If it is set to NO change it to read YES and save the file.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. Now determine where you want the automounter to mount your network shares. In my case I created a Folder named Media in /Users/Shared. &lt;/p&gt;&lt;p&gt;3 . Open NetInfo Manager from the Applications/Utilities folder.&lt;/p&gt;&lt;p&gt;4. In NetInfo Manager create entries in the mounts directory to hold information on the shares you want automounted. To do so click on the mounts directory and select Directory -&amp;gt; New Subdirectory to make a new entry.&lt;/p&gt;&lt;p&gt;With this entry in place edit its properties so that they read like the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;name = Name of entry (i.e. server:/share)&lt;/li&gt;&lt;li&gt;dir = Path to mount point (i.e. /Users/Shared/Media/share&lt;/li&gt;&lt;li&gt;vfstype = url&lt;/li&gt;&lt;li&gt;opts = url==cifs://username:password@server/share &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Remember to replace placehodlers like server, share, username and password with their actual values! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; To add new properties to the node select Directory -&amp;gt; New Property from the menu. &lt;/p&gt;&lt;p&gt;When you are finished you should have something like the following screenshot:&lt;/p&gt;&lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;/sites/default/files/u63/automount_netinfo_lg.jpg&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/automount_netinfo_sm.jpg&quot; alt=&quot;&quot; width=&quot;360&quot; height=&quot;288&quot; /&gt;&lt;br /&gt;Setting up automount in NetInfo Manager (click to enlarge)&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Save the changes to the directory and quit NetInfo Manager if you like.&lt;/p&gt;&lt;p&gt;5. Now it is time to restart the automount service. Go back to the Terminal window and type:&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;sudo killall -HUP automount&lt;/p&gt;&lt;p&gt;This will stop the current automount process and begin a new one using the settings you just defined.&lt;/p&gt;&lt;p&gt;You should now find that by browsing to /Users/Shared/Media/ in the Finder your share has been mounted and you can browse and modify the files within.&lt;/p&gt;&lt;h2&gt;Conclusion &lt;/h2&gt;&lt;p&gt;Okay so setting up automount is not as simple as one would hope but you do end up with a permanent connection to your network share which makes it ideal for commonly used group resources like Music and Video shares. Hopefully it is only a short term solution and in the forthcoming release of OSX Leopard Apple addresses some (if not all) of the networking shortcomings of the Finder. &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/osx&quot;&gt;osx&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Fri, 16 Feb 2007 00:59:26 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">406 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Changing Ethernet device names in Suse 10</title>
 <link>https://www.stress-free.co.nz/changing_ethernet_names_in_suse</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;Recently I put a second, faster network card in a server. On booting OpenSuse 10 assigned the new card the name eth2 and the existing, built-in Ethernet device eth0. A number of applications, for example Samba and dnsmasq, typically bind to an Ethernet name rather than a specific IP or MAC address. It is possible to change the individual configuration files for each of these services but this is a little ugly considering my goal was to install the new hardware and disable the existing device, leaving everything else untouched.&lt;/p&gt;&lt;p&gt;A tidier solution is to assign eth0 to the new card and eth1 to the older (unused) device. Figuring out how to do this is a little confusing, there is no Yast option to configure network names  and manually editing &lt;span style=&quot;font-weight: bold&quot;&gt;/etc/sysconfig/network/ifcfg-eth(mac address)&lt;/span&gt; provides no help either. Instead you must edit the file &lt;span style=&quot;font-weight: bold&quot;&gt;/etc/udev/rules.d/30-net_persistent_names.rules&lt;/span&gt; and change the device name associated to the relevant network MAC address. In a two card setup the file will look a little like this (each network device entry is on a single line):&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, SYSFS{address}==&quot;MAC&quot;, IMPORT=&quot;/sbin/rename_netiface %k eth0&quot;&lt;br /&gt;SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, SYSFS{address}==&quot;MAC&quot;, IMPORT=&quot;/sbin/rename_netiface %k eth1&quot; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Where SYSFS{address} is set to the MAC addresses of each ethernet device. Change this file so that the correct names are associated to the appropriate MAC devices and reboot. Afterwards you will find your network cards are named in the order that you desire and all the applications that refer to eth0 work as if nothing has changed. It is a simple change and something that really should figure as part of the advanced network device options in Yast. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/suse&quot;&gt;suse&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Sun, 08 Oct 2006 19:23:03 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">327 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Enabling T3G on Suse Linux Enterprise Desktop</title>
 <link>https://www.stress-free.co.nz/enabling_t3g_on_suse_linux_enterprise_desktop</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/t3g.jpg&quot; alt=&quot;&quot; width=&quot;104&quot; height=&quot;105&quot; /&gt;&lt;/div&gt;&lt;p&gt;Mike Clements has been having some fun with &lt;a href=&quot;http://www.telecom.co.nz/mobilebroadband&quot;&gt;Telecom&#039;s T3G mobile broadband&lt;/a&gt; service and getting it to work with Linux (namely Suse Linux Enterprise Desktop). He was using the Sierra Aircard 580 and information on how to get it working on Linux can be found on &lt;a href=&quot;http://debiana.net/aircard580.html&quot;&gt;debiana.net&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For those who do not want spend time reading about the basics or learn by trial and error here is a step by step guide from Mike...&lt;/p&gt;&lt;!--break--&gt;&lt;p&gt;The Sierra Aircard 580 (used by Telecom NZ for T3G) is a 				PCMCIA card that is made up of a USB hub with multiple devices 				internally. The important device we want on the cards USB chain 				is the 3G modem, device ID 1199:0112.&lt;/p&gt; 				&lt;p&gt;Times change and I&#039;ve been getting feed back of some people 				not having hotplug available so I&#039;ve written a udev option. The 				udev option is is preferable in many ways.&lt;/p&gt;&lt;h3&gt;To configure the card in udev do the following before 				plugging the card into the laptop  				&lt;/h3&gt; 				&lt;p&gt;1. Open a terminal as super user (root)&lt;/p&gt; 				&lt;p&gt;2. Create a file named 10-local.rules in 				/etc/udev/rules.d/containing the following (append to it if it 				already exists):&lt;/p&gt; 				&lt;p class=&quot;codesnippet&quot;&gt;SUBSYSTEM==&quot;usb&quot;, ACTION==&quot;add&quot;, 				ENV{PRODUCT}==&quot;1199/112/*&quot;, RUN+=&quot;/sbin/modprobe 				usbserial vendor=0x1199 product=0x0112&quot;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; All of the above should be on one line.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Or for traditional hotplug do the following before plugging the card into the laptop &lt;/h3&gt;&lt;p&gt;1. Create a file named aircard580 in /etc/hotplug/usb containing the following:&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;#!/bin/sh&lt;br /&gt;# Run everything in a subshell, so we can redirect the output&lt;br /&gt;# more easily.&lt;br /&gt;(&lt;br /&gt;  # Load the module the right way&lt;br /&gt;  /sbin/modprobe usbserial vendor=0x1199 product=0x0112&lt;br /&gt;&lt;br /&gt;  # Make the device node for the modem&lt;br /&gt;  mknod /dev/ttyUSB0 c 188 0&lt;br /&gt;&lt;br /&gt;) 2&amp;gt;&amp;amp;1 | logger -t aircard &lt;/p&gt;&lt;p&gt;2. Create a file named aircard.usermap in /etc/hotplug/usb containing the following:&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;# Sierra Aircard 580&lt;br /&gt;aircard580  0x0003  0x1199  0x0112  0x0000  0x0000  0xff  0x00  0x00  0x00  0x00  0x00  0x00000000&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; All of the hex values should be on one line.&lt;/p&gt;&lt;p&gt;3. Change the aircard580 file so that it is executable:&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;chmod a+x /etc/hotplug/usb/aircard580 &lt;em&gt;(Enter)&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Setup the dial up connection  				&lt;/h3&gt; 				&lt;p&gt;With this preparation complete plug the card into the laptop. 				Suse should auto detect the device and treat it like any normal 				USB modem.&lt;/p&gt; 				&lt;p&gt;1. Open Yast to configure the dial-up connection for the 				modem. You can do this in three different ways but you all end up 				in the same place:&lt;/p&gt; 				&lt;ol&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in&quot;&gt;Yast -&amp;gt; Network Devices -&amp;gt; 					Modem&lt;/p&gt; 					&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in&quot;&gt;Control centre -&amp;gt; Modem&lt;/p&gt; 					&lt;/li&gt;&lt;li&gt;&lt;p&gt;Network manager -&amp;gt; Configure Modem&lt;/p&gt; 				&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;To help you out Mike has sent through a few screenshots along with some notes about each screen. Click on each of the images below to view larger screenshots and see the associated notes. &lt;/h4&gt;  &lt;table border=&quot;0&quot; class=&quot;imagetable&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/sites/default/files/images/tutorials/t3g_sled/yast1_lg.png&quot;&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/t3g_sled/yast1_sm.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td&gt;&lt;a href=&quot;/sites/default/files/images/tutorials/t3g_sled/yast2_lg.png&quot;&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/t3g_sled/yast2_sm.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/sites/default/files/images/tutorials/t3g_sled/yast3_lg.png&quot;&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/t3g_sled/yast3_sm.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td&gt;&lt;a href=&quot;/sites/default/files/images/tutorials/t3g_sled/yast4_lg.png&quot;&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/t3g_sled/yast4_sm.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;The above screenshots can be a little difficult to read, for reference the modem init strings 				are as follows,&lt;/p&gt; 				&lt;p style=&quot;margin-left: 0.67in&quot;&gt;&lt;strong&gt;Init 				1: &lt;/strong&gt;ATE0v1&amp;amp;F&amp;amp;D2&amp;amp;C1&amp;amp;C2S0=0&lt;/p&gt; 				&lt;p style=&quot;margin-left: 0.67in&quot;&gt;&lt;strong&gt;Init 2: &lt;/strong&gt;ATE0V1&lt;/p&gt; 				&lt;p style=&quot;margin-left: 0.67in&quot;&gt;&lt;strong&gt;Init 3: &lt;/strong&gt;ATS7=60&lt;/p&gt;&lt;p&gt;The most important thing to know is if you are in New Zealand and a Telecom customer use the following connection configuration:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Phone: &lt;/strong&gt;#777&lt;br /&gt;&lt;strong&gt;User:&lt;/strong&gt; mobile@jamamobile&lt;br /&gt;&lt;strong&gt;Password:&lt;/strong&gt; telecom &lt;/p&gt;&lt;p&gt;Don&#039;t worry these details are identical for all Telecom T3G users, actual usage is gauged by the device ID of your card. You are not going to be billed for other people using these same details or get free wireless connectivity.&lt;/p&gt;&lt;h3&gt;Things to note:&lt;/h3&gt; 				&lt;ol&gt;&lt;li&gt;&lt;p&gt;A flashing green light on the card means you have signal, 					a flashing orange means none or a hardware issue.&lt;/p&gt; 					&lt;/li&gt;&lt;li&gt;&lt;p&gt;On Windows Telecom provide software to use the card. From 					10.4.x of Mac OS X the card has been supported natively&lt;/p&gt; 					&lt;/li&gt;&lt;li&gt;&lt;p&gt;The card must be activated on a Windows machine prior to 					be used in Linux. If your card came from Telecom NZ then the 					card has been activated for you already&lt;/p&gt; 					&lt;/li&gt;&lt;li&gt;&lt;p&gt;Using a terminal connection to the modem (/dev/ttyUSB0) 					we can also see what the signal strength is.  To do so open a 					connection to the serial device and issue the following command:&lt;/p&gt; 					 					&lt;p class=&quot;codesnippet&quot;&gt;at+csq? &lt;em&gt;(Enter)&lt;/em&gt;&lt;br /&gt;+CSQ: &lt;strong&gt;19&lt;/strong&gt;, 99&lt;/p&gt; 					&lt;p&gt;It will respond with the CSQ line, the number in bold (19) 					indicates your signal strength above -109 dBm in 2dBm 					increments.  A value of 7 (-95dBm) is adequate.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;Most of this information is gleaned from the &lt;a href=&quot;http://mycusthelp.com/sierrawireless/supportkbitem.asp?sSessionID=&amp;amp;Inc=3928&amp;amp;sFilA=FAQ%20Category&amp;amp;sFilB=Products&amp;amp;sFilC=&amp;amp;FA=19&amp;amp;FB=22&amp;amp;FC=-1&quot;&gt;Sierra Wireless knowledge base&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Hopefully if all has gone well you should have a working T3G modem for your Linux laptop. I do not have a PC-based laptop or a T3G card so I cannot personally vouch for this, but given I haven&#039;t received any panic stricken phone calls from Mike in the last 12 hours I am guessing all is still working fine... &lt;br /&gt;&lt;p&gt; &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/suse&quot;&gt;suse&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/wireless&quot;&gt;wireless&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Wed, 13 Sep 2006 23:01:14 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">311 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>SuSE/OpenLDAP/Samba Howto</title>
 <link>https://www.stress-free.co.nz/suse_openldap_samba_howto</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;This tutorial assumes you are familar with basic Linux and Windows concepts and are comfortable using SuSE Linux 9 (Professional or Enterprize). SuSE 9.2 Professional was used during the production of this guide but for most part the commands, software and general concepts should be applicable on any current version of SuSE (or OpenSUSE).    &lt;br /&gt;To ease configuration it is very helpful to do most things from another desktop so that you can use really useful utilities like graphical Internet browsers and copy/paste tools. &lt;/p&gt;&lt;h2&gt;Setting up the basic system&lt;/h2&gt;  &lt;p&gt;First off install your basic SuSE system. For this tutorial I used SuSE 9.2 Professional with the network install CD using the local New Zealand mirror at &lt;a href=&quot;http://linux.jetstreamgames.co.nz/suse/i386/9.2&quot;&gt;http://linux.jetstreamgames.co.nz/suse/i386/9.2&lt;/a&gt;    &lt;br /&gt;I prefer to perform an initial basic install with no extra packages or windowing environment. Using this strategy I have complete control over what goes on the system as far as software is concerned. This is important as a default SuSE install will put alot of unnecessary applications and libraries onto your server. &lt;/p&gt;&lt;p&gt;Once the base install is complete using Yast to install openldap, samba, apache2-prefork and php (with ldap &amp;amp; session support). If you are not sure how to do this log in as root and type yast (enter) in the terminal. To install packages select Software -&amp;gt; Install and Remove Software. &lt;/p&gt;&lt;p&gt;Run Online update (Software -&amp;gt; Online Update) afterwards to make sure you are at current working levels. There is a bug in the default install of PHP session support on SuSE 9.2. Without running Online Update you won’t get far in this tutorial as Apache will have problems running. &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/suse&quot;&gt;suse&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/samba&quot;&gt;samba&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/ldap&quot;&gt;ldap&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Thu, 24 Aug 2006 03:55:25 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">490 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Quick howto on building a Linux (SUSE) kernel</title>
 <link>https://www.stress-free.co.nz/quick_howto_on_building_a_linux_suse_kernel</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
      &lt;p&gt;This is a quick step-by-step guide to compiling your own kernel in SUSE. Whilst thankfully no longer a requirement for most it is handy to know.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;1. Using Yast install the kernel source, GCC and ncurses-devel (plus any dependencies).&lt;/p&gt;  &lt;p&gt;2. Change to the /usr/src/linux-x.x.x directory (where x.x.x is the kernel version)&lt;/p&gt;3. Configure the kernel using menuconfig (requires ncurses-devel package).  &lt;p class=&quot;codesnippet&quot;&gt;make menuconfig&lt;/p&gt;  &lt;p&gt;4. Give the kernel a unique name by editing the .config file created by the kernel config process. Look for the EXTRAVERSION parameter and name it something other than default. If you do not specify a unique kernel name you run the risk of overriding the default kernel and modules (which means no fallback position if things do not work).    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;5. Clean out the build directory before beginning the build process.&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;make clean&lt;/p&gt;  &lt;p&gt;6. Make the kernel image (approximately &amp;gt;10 minutes depending on the hardware).    &lt;br /&gt;&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;make bzImage&lt;/p&gt;  &lt;p&gt;7. Make the modules (approximately 20 minutes depending on the hardware and modules defined).    &lt;br /&gt;&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;make modules&lt;/p&gt;  &lt;p&gt;8. Install the modules into /lib/modules&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;make modules_install&lt;/p&gt;  &lt;p&gt;9. Copy the newly created kernel and system.map to /boot (where x.x.x is your kernel version).&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;cp /usr/src/linux.x.x.x/arch/i386/boot/bzImage /boot/vmlinuz-x.x.x    &lt;br /&gt;cp /usr/src/linux.x.x.x/System.map /boot/System.map-x.x.x &lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Note:&lt;/span&gt; The above commands assume a i386-based system has been used to compile.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;10. Create an initrd (initial RAM disk) for the kernel to load on boot (where x.x.x is your kernel version).&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt; cd /boot    &lt;br /&gt;mkinitrd -k vmlinuz-x.x.x -i initrd-x.x.x &lt;/p&gt;  &lt;p&gt;11. Configure grub to use the new kernel.    &lt;br /&gt;Edit /boot/grub/menu.lst    &lt;br /&gt;Add or modify an existing menu entry (where x.x.x is your kernel version).&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt; title New Kernel Name    &lt;br /&gt;kernel /vmlinuz-x.x.x ro root=LABEL=/    &lt;br /&gt;initrd /initrd-x.x.x &lt;/p&gt;  &lt;p&gt;Note: look at the previous parameters in the grub.conf file and note what &quot;root=&quot; and use what is existing.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;12. Reboot and choose the new kernel from the boot menu.&lt;/p&gt;  &lt;p&gt;With a little luck your new kernel will load successfully with all the correct drivers in place for your hardware.&lt;/p&gt;   &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/suse&quot;&gt;suse&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Mon, 05 Jun 2006 03:25:09 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">279 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Setting up Awstats in an OpenSUSE 10 Apache vhost</title>
 <link>https://www.stress-free.co.nz/setting_up_awstats_in_an_opensuse_10_apache_vhost</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;Installing awstats is easy in OpenSUSE through Yast. Unfortunately only half the job is done if you wish to activate it for a certain virtual host.&lt;/p&gt;  &lt;p&gt;Firstly in the vhost configuration file add the following parameters:&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;Alias /awstatsicons /srv/www/icons/awstats    &lt;br /&gt;ScriptAlias /usage /srv/www/cgi-bin    &lt;br /&gt;&amp;lt;Directory &quot;/srv/www/cgi-bin&quot;&amp;gt;    &lt;br /&gt;        AllowOverride None    &lt;br /&gt;        Options +ExecCGI -Includes       &lt;br /&gt;        Order allow,deny    &lt;br /&gt;        Allow from all    &lt;br /&gt;&amp;lt;/Directory&amp;gt;    &lt;br /&gt;&amp;lt;Directory &quot;/srv/www/icons/awstats&quot;&amp;gt;    &lt;br /&gt;        AllowOverride None    &lt;br /&gt;        Options None    &lt;br /&gt;        Order allow,deny    &lt;br /&gt;        Allow from all    &lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/p&gt;  &lt;p&gt;This will create an alias from http://your-domain-name/usage to the awstats cgi script and an alias to the awstats icon directory (awstatsicons). Once this configuration is changed restart the Apache server.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Once this is done create a domain configuration file in /etc/awstats. Make sure the domain file is named in the following manner: awstats.your-domain-name.conf &lt;/p&gt;  &lt;p&gt;There is an example configuration file in the /etc/awstats to build on, otherwise see below for a fairly standard configuration file.    &lt;br /&gt;During the Yast install process a cron job will have been setup to scan Apache log files so once the awstats configuration file is in place your server will begin scanning the Apache logs when the cron job next runs.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;You should now be able to browse to http://your-domain-name/usage and get a rundown of webserver usage. Note: mod_cgi must be enabled in Apache for live viewing of awstats data to work.  &lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;LogFile=&quot;/var/log/apache2/your-domain-name-access_log&quot;    &lt;br /&gt;LogFormat=1    &lt;br /&gt;LogSeparator=&quot; &quot;    &lt;br /&gt;SiteDomain=&quot;your-domain-name&quot;    &lt;br /&gt;HostAliases=&quot;localhost 127.0.0.1&quot;    &lt;br /&gt;DNSLookup=1    &lt;br /&gt;DirData=&quot;/var/cache/awstats&quot;    &lt;br /&gt;DirCgi=&quot;/cgi-bin&quot;    &lt;br /&gt;DirIcons=&quot;/awstatsicons&quot;    &lt;br /&gt;AllowToUpdateStatsFromBrowser=0    &lt;br /&gt;EnableLockForUpdate=0    &lt;br /&gt;DNSStaticCacheFile=&quot;dnscache.txt&quot;    &lt;br /&gt;DNSLastUpdateCacheFile=&quot;dnscachelastupdate.txt&quot;    &lt;br /&gt;SkipDNSLookupFor=&quot;&quot;    &lt;br /&gt;AllowAccessFromWebToAuthenticatedUsersOnly=0    &lt;br /&gt;AllowAccessFromWebToFollowingAuthenticatedUsers=&quot;&quot;    &lt;br /&gt;AllowAccessFromWebToFollowingIPAddresses=&quot;&quot;    &lt;br /&gt;CreateDirDataIfNotExists=0    &lt;br /&gt;SaveDatabaseFilesWithPermissionsForEveryone=0    &lt;br /&gt;PurgeLogFile=0    &lt;br /&gt;ArchiveLogRecords=0    &lt;br /&gt;KeepBackupOfHistoricFiles=0    &lt;br /&gt;DefaultFile=&quot;index.html&quot;    &lt;br /&gt;SkipHosts=&quot;&quot;    &lt;br /&gt;SkipUserAgents=&quot;&quot;    &lt;br /&gt;SkipFiles=&quot;&quot;    &lt;br /&gt;OnlyHosts=&quot;&quot;    &lt;br /&gt;OnlyFiles=&quot;&quot;    &lt;br /&gt;NotPageList=&quot;css js class gif jpg jpeg png bmp&quot;    &lt;br /&gt;ValidHTTPCodes=&quot;200 304&quot;    &lt;br /&gt;ValidSMTPCodes=&quot;1&quot;    &lt;br /&gt;AuthenticatedUsersNotCaseSensitive=0    &lt;br /&gt;URLNotCaseSensitive=0    &lt;br /&gt;URLWithAnchor=0    &lt;br /&gt;URLQuerySeparators=&quot;?;&quot;    &lt;br /&gt;URLWithQuery=0    &lt;br /&gt;URLWithQueryWithoutFollowingParameters=&quot;&quot;    &lt;br /&gt;URLReferrerWithQuery=0    &lt;br /&gt;WarningMessages=1    &lt;br /&gt;ErrorMessages=&quot;&quot;    &lt;br /&gt;DebugMessages=1    &lt;br /&gt;NbOfLinesForCorruptedLog=50    &lt;br /&gt;WrapperScript=&quot;&quot;    &lt;br /&gt;DecodeUA=0    &lt;br /&gt;MiscTrackerUrl=&quot;/js/awstats_misc_tracker.js&quot;    &lt;br /&gt;&lt;br /&gt;LevelForRobotsDetection=2            # 0 will increase AWStats speed by 1%.    &lt;br /&gt;LevelForBrowsersDetection=2            # 0 disables Browsers detection. No speed gain.    &lt;br /&gt;LevelForOSDetection=2                # 0 disables OS detection. No speed gain.    &lt;br /&gt;LevelForRefererAnalyze=2            # 0 will increase AWStats speed by 5%.    &lt;br /&gt;&lt;br /&gt;UseFramesWhenCGI=0    &lt;br /&gt;DetailedReportsOnNewWindows=1    &lt;br /&gt;Expires=0    &lt;br /&gt;MaxRowsInHTMLOutput=1000    &lt;br /&gt;Lang=&quot;auto&quot;    &lt;br /&gt;DirLang=&quot;/var/lib/awstats/lang&quot;    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ShowMenu=1                       &lt;br /&gt;# Show monthly chart    &lt;br /&gt;# Default: UVPHB, Possible codes: UVPHB    &lt;br /&gt;ShowMonthStats=UVPHB    &lt;br /&gt;# Show days of month chart    &lt;br /&gt;# Default: VPHB, Possible codes: VPHB    &lt;br /&gt;ShowDaysOfMonthStats=VPHB    &lt;br /&gt;# Show days of week chart    &lt;br /&gt;# Default: PHB, Possible codes: PHB    &lt;br /&gt;ShowDaysOfWeekStats=PHB    &lt;br /&gt;# Show hourly chart    &lt;br /&gt;# Default: PHB, Possible codes: PHB    &lt;br /&gt;ShowHoursStats=PHB    &lt;br /&gt;# Show domains/country chart    &lt;br /&gt;# Default: PHB, Possible codes: PHB    &lt;br /&gt;ShowDomainsStats=PHB    &lt;br /&gt;# Show hosts chart    &lt;br /&gt;# Default: PHBL, Possible codes: PHBL    &lt;br /&gt;ShowHostsStats=PHBL    &lt;br /&gt;# Show authenticated users chart    &lt;br /&gt;# Default: 0, Possible codes: PHBL    &lt;br /&gt;ShowAuthenticatedUsers=0    &lt;br /&gt;# Show robots chart    &lt;br /&gt;# Default: HBL, Possible codes: HBL    &lt;br /&gt;ShowRobotsStats=HBL    &lt;br /&gt;# Show email senders chart (For use when analyzing mail log files)    &lt;br /&gt;# Default: 0, Possible codes: HBML    &lt;br /&gt;ShowEMailSenders=0    &lt;br /&gt;# Show email receivers chart (For use when analyzing mail log files)    &lt;br /&gt;# Default: 0, Possible codes: HBML    &lt;br /&gt;ShowEMailReceivers=0    &lt;br /&gt;# Show session chart    &lt;br /&gt;# Default: 1, Possible codes: None    &lt;br /&gt;ShowSessionsStats=1    &lt;br /&gt;# Show pages-url chart.    &lt;br /&gt;# Default: PBEX, Possible codes: PBEX    &lt;br /&gt;ShowPagesStats=PBEX    &lt;br /&gt;# Show file types chart.    &lt;br /&gt;# Default: HB, Possible codes: HBC    &lt;br /&gt;ShowFileTypesStats=HB    &lt;br /&gt;# Show file size chart (Not yet available)    &lt;br /&gt;# Default: 1, Possible codes: None    &lt;br /&gt;ShowFileSizesStats=0           &lt;br /&gt;# Show operating systems chart    &lt;br /&gt;# Default: 1, Possible codes: None    &lt;br /&gt;ShowOSStats=1    &lt;br /&gt;# Show browsers chart    &lt;br /&gt;# Default: 1, Possible codes: None    &lt;br /&gt;ShowBrowsersStats=1    &lt;br /&gt;# Show screen size chart    &lt;br /&gt;# Default: 0 (See also MiscTrackerUrl if set to 1), Possible codes: None    &lt;br /&gt;ShowScreenSizeStats=0    &lt;br /&gt;# Show origin chart    &lt;br /&gt;# Default: PH, Possible codes: PH    &lt;br /&gt;ShowOriginStats=PH    &lt;br /&gt;# Show keyphrases chart    &lt;br /&gt;# Default: 1, Possible codes: None    &lt;br /&gt;ShowKeyphrasesStats=1    &lt;br /&gt;# Show keywords chart    &lt;br /&gt;# Default: 1, Possible codes: None    &lt;br /&gt;ShowKeywordsStats=1    &lt;br /&gt;# Show misc chart    &lt;br /&gt;# Default: ajdfrqwp (See also MiscTrackerUrl parameter), Possible codes: ajdfrqwp    &lt;br /&gt;ShowMiscStats=ajdfrqwp    &lt;br /&gt;# Show http errors chart    &lt;br /&gt;# Default: 1, Possible codes: None    &lt;br /&gt;ShowHTTPErrorsStats=1    &lt;br /&gt;# Show smtp errors chart (For use when analyzing mail log files)    &lt;br /&gt;# Default: 0, Possible codes: None    &lt;br /&gt;ShowSMTPErrorsStats=0    &lt;br /&gt;&lt;br /&gt;# Data array values for the ShowMonthStats report    &lt;br /&gt;AddDataArrayMonthStats=1    &lt;br /&gt;# Data array values for the ShowDaysOfMonthStats report    &lt;br /&gt;AddDataArrayShowDaysOfMonthStats=1    &lt;br /&gt;# Data array values for the ShowDaysOfWeekStats report    &lt;br /&gt;AddDataArrayShowDaysOfWeekStats=1    &lt;br /&gt;# Data array values for the ShowHoursStats report    &lt;br /&gt;AddDataArrayShowHoursStats=1    &lt;br /&gt;&lt;br /&gt;# Stats by domains    &lt;br /&gt;MaxNbOfDomain = 10    &lt;br /&gt;MinHitDomain  = 1    &lt;br /&gt;# Stats by hosts    &lt;br /&gt;MaxNbOfHostsShown = 10    &lt;br /&gt;MinHitHost    = 1    &lt;br /&gt;# Stats by authenticated users    &lt;br /&gt;MaxNbOfLoginShown = 10    &lt;br /&gt;MinHitLogin   = 1    &lt;br /&gt;# Stats by robots    &lt;br /&gt;MaxNbOfRobotShown = 10    &lt;br /&gt;MinHitRobot   = 1    &lt;br /&gt;# Stats by pages    &lt;br /&gt;MaxNbOfPageShown = 10    &lt;br /&gt;MinHitFile    = 1    &lt;br /&gt;# Stats by OS    &lt;br /&gt;MaxNbOfOsShown = 10    &lt;br /&gt;MinHitOs      = 1    &lt;br /&gt;# Stats by browsers    &lt;br /&gt;MaxNbOfBrowsersShown = 10    &lt;br /&gt;MinHitBrowser = 1    &lt;br /&gt;# Stats by screen size    &lt;br /&gt;MaxNbOfScreenSizesShown = 5    &lt;br /&gt;MinHitScreenSize = 1    &lt;br /&gt;# Stats by referers    &lt;br /&gt;MaxNbOfRefererShown = 10    &lt;br /&gt;MinHitRefer   = 1    &lt;br /&gt;# Stats for keyphrases    &lt;br /&gt;MaxNbOfKeyphrasesShown = 10    &lt;br /&gt;MinHitKeyphrase = 1    &lt;br /&gt;# Stats for keywords    &lt;br /&gt;MaxNbOfKeywordsShown = 10    &lt;br /&gt;MinHitKeyword = 1    &lt;br /&gt;# Stats for emails    &lt;br /&gt;MaxNbOfEMailsShown = 20    &lt;br /&gt;MinHitEMail   = 1    &lt;br /&gt;FirstDayOfWeek=1    &lt;br /&gt;ShowFlagLinks=&quot;de en es fr nl&quot;    &lt;br /&gt;ShowLinksOnUrl=1    &lt;br /&gt;&lt;br /&gt;UseHTTPSLinkForUrl=&quot;&quot;    &lt;br /&gt;MaxLengthOfURL=72    &lt;br /&gt;ShowLinksToWhoIs=0    &lt;br /&gt;LinksToWhoIs=&quot;http://www.whois.net/search.cgi2?str=&quot;    &lt;br /&gt;LinksToIPWhoIs=&quot;http://ws.arin.net/cgi-bin/whois.pl?queryinput=&quot;    &lt;br /&gt;HTMLHeadSection=&quot;&quot;    &lt;br /&gt;HTMLEndSection=&quot;&quot;    &lt;br /&gt;&lt;br /&gt;Logo=&quot;awstats_logo1.png&quot;    &lt;br /&gt;LogoLink=&quot;http://awstats.sourceforge.net&quot;    &lt;br /&gt;BarWidth   = 260    &lt;br /&gt;BarHeight  = 90    &lt;br /&gt;StyleSheet=&quot;&quot;    &lt;br /&gt;color_Background=&quot;FFFFFF&quot;        # Background color for main page (Default = &quot;FFFFFF&quot;)    &lt;br /&gt;color_TableBGTitle=&quot;CCCCDD&quot;        # Background color for table title (Default = &quot;CCCCDD&quot;)    &lt;br /&gt;color_TableTitle=&quot;000000&quot;        # Table title font color (Default = &quot;000000&quot;)    &lt;br /&gt;color_TableBG=&quot;CCCCDD&quot;            # Background color for table (Default = &quot;CCCCDD&quot;)    &lt;br /&gt;color_TableRowTitle=&quot;FFFFFF&quot;    # Table row title font color (Default = &quot;FFFFFF&quot;)    &lt;br /&gt;color_TableBGRowTitle=&quot;ECECEC&quot;    # Background color for row title (Default = &quot;ECECEC&quot;)    &lt;br /&gt;color_TableBorder=&quot;ECECEC&quot;        # Table border color (Default = &quot;ECECEC&quot;)    &lt;br /&gt;color_text=&quot;000000&quot;                # Color of text (Default = &quot;000000&quot;)    &lt;br /&gt;color_textpercent=&quot;606060&quot;        # Color of text for percent values (Default = &quot;606060&quot;)    &lt;br /&gt;color_titletext=&quot;000000&quot;        # Color of text title within colored Title Rows (Default = &quot;000000&quot;)    &lt;br /&gt;color_weekend=&quot;EAEAEA&quot;            # Color for week-end days (Default = &quot;EAEAEA&quot;)    &lt;br /&gt;color_link=&quot;0011BB&quot;                # Color of HTML links (Default = &quot;0011BB&quot;)    &lt;br /&gt;color_hover=&quot;605040&quot;            # Color of HTML on-mouseover links (Default = &quot;605040&quot;)    &lt;br /&gt;color_u=&quot;FFB055&quot;                # Background color for number of unique visitors (Default = &quot;FFB055&quot;)    &lt;br /&gt;color_v=&quot;F8E880&quot;                # Background color for number of visites (Default = &quot;F8E880&quot;)    &lt;br /&gt;color_p=&quot;4477DD&quot;                # Background color for number of pages (Default = &quot;4477DD&quot;)    &lt;br /&gt;color_h=&quot;66F0FF&quot;                # Background color for number of hits (Default = &quot;66F0FF&quot;)    &lt;br /&gt;color_k=&quot;2EA495&quot;                # Background color for number of bytes (Default = &quot;2EA495&quot;)    &lt;br /&gt;color_s=&quot;8888DD&quot;                # Background color for number of search (Default = &quot;8888DD&quot;)    &lt;br /&gt;color_e=&quot;CEC2E8&quot;                # Background color for number of entry pages (Default = &quot;CEC2E8&quot;)    &lt;br /&gt;color_x=&quot;C1B2E2&quot;                # Background color for number of exit pages (Default = &quot;C1B2E2&quot;)    &lt;br /&gt;&lt;br /&gt;LoadPlugin=&quot;tooltips&quot;    &lt;br /&gt;LoadPlugin=&quot;userinfo&quot;  &lt;/p&gt;    &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/suse&quot;&gt;suse&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/apache&quot;&gt;apache&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Tue, 09 May 2006 03:18:51 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">266 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Keyword search, a nice Firefox touch</title>
 <link>https://www.stress-free.co.nz/keyword_search_a_nice_firefox_touch</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;Mozilla have not exactly gone out of their way to promote this feature but it sure is useful. &lt;a href=&quot;http://www.mozilla.org/products/firefox/smart-keywords.html&quot;&gt;Keyword searching&lt;/a&gt; makes performing common searches on websites much faster by enabling you to create a &#039;keyword&#039; that associates the search url to what you type in the address bar. It is not exactly the best description but it means that rather than visiting a site to perform a search (say for a recipe or book on amazon) you can assign a keyword like &#039;recipe&#039; and then in the addressbar just type &#039;recipe roast duck&#039; to have Firefox perform a search in your favourite recipe site.&lt;/p&gt; &lt;p&gt;It is a very nice touch and has definitely increased my browsing productivity of late. It seems like such a shame it seems to be slightly buried in the interface and slightly vaguely worded.    &lt;br /&gt;&lt;/p&gt;   &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/firefox&quot;&gt;firefox&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Tue, 02 May 2006 09:41:48 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">262 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Sambas Recycle VFS provides Salvage-like functionality</title>
 <link>https://www.stress-free.co.nz/sambas_recycle_vfs_provides_salvage_like_functionality</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
      &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/default/files/images/news/samba-logo.jpg&quot; border=&quot;0&quot; alt=&quot;samba-logo.jpg&quot; hspace=&quot;0&quot; vspace=&quot;0&quot; width=&quot;160&quot; height=&quot;81&quot; /&gt;&lt;/div&gt;If anyone&#039;s used &lt;a href=&quot;http://en.wikipedia.org/wiki/Novell_Storage_Services&quot;&gt;Novell&#039;s NSS filesystem&lt;/a&gt; they will know how useful the Salvage tool is. All too often a file once thought of as useless is suddenly needed or even worse a useful file accidentally deleted. In a traditional Samba setup this deleted file is lost for good unless a copy exists in backup form. This is fine for some occasions but if you have just spent eight hours working on the file going back to a twelve hour old version is not that appealing.  &lt;p&gt;&lt;a href=&quot;http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2617365&quot;&gt;Samba 3&#039;s Recycle VFS (Virtual File System)&lt;/a&gt; module solves this problem by providing Salvage like capabilities in a nice Samba container. When a file is deleted on the share it is not deleted from the filesystem but instead its file-pointer moved to the specified recycle directory for later retrieval (just like your standard Recycle Bin). &lt;/p&gt;  &lt;p&gt;Recycle VFS is enabled at the share level which makes it quite flexible. To enable the functionality add the following to your smb.conf file (where SambaShare is a configured share) and restart Samba:&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;[SambaShare]    &lt;br /&gt;   path = /home/example    &lt;br /&gt;   public = yes    &lt;br /&gt;   writable = yes    &lt;br /&gt;   browsable = yes    &lt;br /&gt;&lt;br /&gt; # Add from this point down to the share config to enable Recycle VFS....    &lt;br /&gt;   vfs object = recycle    &lt;br /&gt;      recycle:repository = .recycle/%U    &lt;br /&gt;      recycle:keeptree = Yes    &lt;br /&gt;      recycle:touch = Yes    &lt;br /&gt;      recycle:versions = Yes    &lt;br /&gt;      recycle:maxsixe = 0    &lt;br /&gt;      recycle:exclude = *.tmp    &lt;br /&gt;      recycle:exclude_dir = /tmp &lt;/p&gt;  &lt;p&gt;This will enable the recycling functionality on the SambaShare share. Pointers to deleted files will be placed in the .recycle/Username directory on the share. To help Samba out you should create the .recycle directory in the share and make sure all users who may be deleting files on the share have read/write access to the directory.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;This way if someone deletes a file they can browse to \\Server\SambaShare\.recycle\UserName and find the deleted file for easy restoration. The versions option enables multiple files of the same name to be safely deleted without fear of loosing all but one of the copies.    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;NOTE:&lt;/span&gt; The recycle directory does not have to be named .recycle, you can name it anything you like just specify the correct location in the smb.conf file. &lt;/p&gt;  &lt;p&gt;The one issue you will need to plan for now is disk usage as deleted files will no longer be deleted. In order to reclaim disk space you will probably want to setup a cron job that searches for files in the recycle directory older than a specific time and deletes them or just do a big purge whenever storage space gets a little low. &lt;/p&gt;  &lt;p&gt;Thanks goes out to &lt;a href=&quot;http://lists.firepipe.net/pipermail/cwe-lug/2004-September/001924.html&quot;&gt;this LUG thread&lt;/a&gt; and Google for pointing this out to me.    &lt;/p&gt;&lt;h1&gt;Update&lt;/h1&gt;&lt;p&gt;Enabling this salvage functionality will result in a lot of hard disk space being lost to deleted files. Samba currently does not have an automatic clean or compression tool for these files so the easiest way to tidy them up is to remove them after a certain period of time.&lt;/p&gt;&lt;p&gt;To do so run the command (where /home/example is the path to the salvage enabled share):&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;find /home/example/.deleted -mtime +14 -type f -exec rm -r {} \; &lt;/p&gt;&lt;p&gt;This will delete all deleted files that are more than two weeks old. You can run this command on a regular basis by adding it as a cron job, for example to run it once a month create a file named &lt;strong&gt;/etc/cron.d/clean-deleted&lt;/strong&gt; which contains:&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;0 3 1 * *  root  find /Users/david/Desktop/Temp -mtime +14 -type f -exec rm -r {} \;&lt;/p&gt;&lt;p&gt;This will delete the old files at 3:00am on the 1st of each month.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;   &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/samba&quot;&gt;samba&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Mon, 10 Apr 2006 09:03:11 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">258 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Backups, the bane of computers</title>
 <link>https://www.stress-free.co.nz/backups_the_bane_of_computers</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
      &lt;p&gt;After having my fair share of backup dilemmas and stress &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2006/01/31/Data-Protection&quot;&gt;Tim Bray&#039;s post&lt;/a&gt; at least gives hope that I am not alone. It is strange that there really are not that many decent backup products considering how simple the task really is.&lt;/p&gt;  &lt;p&gt;The most effective backup system I have used is the one I wrote myself for Linux servers. It is simple, flexible, non-proprietary and most importantly it seems to work without hassle. It comprises of a bash script and some configuration files. &lt;/p&gt;  &lt;p&gt;The bash script compresses gzipped tar archives onto a removable hard drive. In most cases I use two removeable drives for redundancy. Typically all user data is stored in the /home directory with a few special directories: media (music/movies), temp and data shared amoungst the users. The /home/data directory holds most of the office data and as such the backup script breaks archiving of this data into smaller pieces in order to facilitate easier restoration.    &lt;br /&gt;The backup script stores multiple backups on disk to ensure that a corrupted backup does not lead to significant loss of data. The backup usually runs every night with the removable disks swapped during the day. On completion (or failure) of a backup an automated email is sent out to interested parties.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Below is the bash script (typically /usr/local/sbin/backup_script):&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;#!/bin/bash    &lt;br /&gt;# configure variables for script    &lt;br /&gt;servername=`awk &#039;/^servername/{print $2}&#039; $1`    &lt;br /&gt;serveremail=`awk &#039;/^serveremail/{print $2}&#039; $1`    &lt;br /&gt;destdir=`awk &#039;/^backupdir/{print $2}&#039; $1`    &lt;br /&gt;movedir=`awk &#039;/^movedir/{print $2}&#039; $1`    &lt;br /&gt;lockfile=`awk &#039;/^lockfile/{print $2}&#039; $1`    &lt;br /&gt;endofweek=`awk &#039;/^endofweek/{print $2}&#039; $1`    &lt;br /&gt;eowflag=`awk &#039;/^eowflag/{print $2}&#039; $1`    &lt;br /&gt;device=`awk &#039;/^device/{print $2}&#039; $1`    &lt;br /&gt;volume=`awk &#039;/^volume/{print $2}&#039; $1`    &lt;br /&gt;email=`awk &#039;/^email/{print $2}&#039; $1`    &lt;br /&gt;dbhost=`awk &#039;/^dbhost/{print $2}&#039; $1`    &lt;br /&gt;dbuser=`awk &#039;/^dbuser/{print $2}&#039; $1`    &lt;br /&gt;dbpassword=`awk &#039;/^dbpassword/{print $2}&#039; $1`    &lt;br /&gt;processexists=`awk &#039;/^processexists/{print $2}&#039; $1`    &lt;br /&gt;mountfailure=`awk &#039;/^mountfailure/{print $2}&#039; $1`&lt;br /&gt; &lt;br /&gt;if [ -e $lockfile ]    &lt;br /&gt;then    &lt;br /&gt;        echo &quot;Backup task already operating, please try again later&quot;    &lt;br /&gt;    mail -s &quot;Backup of $servername Failed: Process already running&quot; -r $serveremail $email &amp;lt; $processexists    &lt;br /&gt;    exit    &lt;br /&gt;else    &lt;br /&gt;# See if device is plugged in and available    &lt;br /&gt;    umount $device    &lt;br /&gt;    mount $device $mount    &lt;br /&gt;    if [[ $? -eq 0 ]] ;    &lt;br /&gt;    then    &lt;br /&gt;        echo &quot;Media available and ready to go...&quot;    &lt;br /&gt;    else    &lt;br /&gt;    echo &quot;Backup task could not continue, media unmountable&quot;    &lt;br /&gt;    mail -s &quot;Backup of $servername Failed: Media Unavailable&quot; -r $serveremail $email &amp;lt; $mountfailure    &lt;br /&gt;        exit    &lt;br /&gt;    fi    &lt;br /&gt; &lt;br /&gt;# Perform backup    &lt;br /&gt;    /bin/touch $lockfile    &lt;br /&gt;    echo &quot;Performing data backup&quot;    &lt;br /&gt;    # Change directory to a safe place just in case anything bad happens    &lt;br /&gt;    cd /tmp    &lt;br /&gt;    if [ endofweek != &quot;true&quot; ]    &lt;br /&gt;    then    &lt;br /&gt;        # Delete end of week flag if it exists    &lt;br /&gt;        /bin/rm $eowflag    &lt;br /&gt;        /bin/rm -fr $volume$movedir/*    &lt;br /&gt;        /bin/mv $volume$destdir/* $volume$movedir/       &lt;br /&gt;        echo &quot;Beginning daily backup: &quot; `date` &amp;gt; $volume$destdir/backup.log       &lt;br /&gt;    else    &lt;br /&gt;        # Does the end of week flag exist? If it does do not move files    &lt;br /&gt;        if [ -e $eowflag ]    &lt;br /&gt;        then    &lt;br /&gt;            # Flag exists - weekly backup already made, just delete existing files    &lt;br /&gt;                        /bin/rm -fr $volume$destdir/*    &lt;br /&gt;                        echo &quot;Beginning daily backup: &quot; `date` &amp;gt; $volume$destdir/backup.log    &lt;br /&gt;        else    &lt;br /&gt;            # Move files    &lt;br /&gt;            /bin/rm -fr $volume$movedir/*    &lt;br /&gt;            /bin/mv $volume$destdir/* $volume$movedir/    &lt;br /&gt;            /bin/touch $eowflag    &lt;br /&gt;            echo &quot;Beginning weekly backup: &quot; `date` &amp;gt; $volume$destdir/backup.log    &lt;br /&gt;        fi    &lt;br /&gt;    fi    &lt;br /&gt;    # note time    &lt;br /&gt;    echo &quot;Backup started: &quot; `date` &amp;gt; $volume$destdir/backup.log    &lt;br /&gt;    echo &quot;-------------------------------------------------------&quot; &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;  &lt;br /&gt;    # backup project data    &lt;br /&gt;    cd $volume$destdir    &lt;br /&gt;    mkdir data    &lt;br /&gt;    # Change to data directory for file listing    &lt;br /&gt;    cd /home/data    &lt;br /&gt;    for datadir in *    &lt;br /&gt;    do    &lt;br /&gt;            echo `date` &quot;: Backing up data folder $datadir...&quot; &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;            tar czf &quot;$volume$destdir/data/$datadir.tar.gz&quot; &quot;$datadir&quot;    &lt;br /&gt;    done    &lt;br /&gt;    # Jump back into backup directory    &lt;br /&gt;    cd $volume$destdir    &lt;br /&gt; &lt;br /&gt;    # backup home directories    &lt;br /&gt;    for homedir in `ls /home`    &lt;br /&gt;    do    &lt;br /&gt;        if [ $homedir != &quot;.cpan&quot; ]    &lt;br /&gt;        then    &lt;br /&gt;               if [ $homedir != &quot;backup&quot; ]    &lt;br /&gt;               then    &lt;br /&gt;                   if [ $homedir != &quot;temp&quot; ]    &lt;br /&gt;                   then    &lt;br /&gt;                       if [ $homedir != &quot;media&quot; ]    &lt;br /&gt;                       then    &lt;br /&gt;                           if [ $homedir != &quot;data&quot; ]    &lt;br /&gt;                           then    &lt;br /&gt;                             echo `date` &quot;: Backing up home directory of $homedir...&quot; &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;                             tar zcf $volume$destdir/home_$homedir.tar.gz /home/$homedir    &lt;br /&gt;                        fi    &lt;br /&gt;                    fi    &lt;br /&gt;                fi    &lt;br /&gt;            fi    &lt;br /&gt;        fi    &lt;br /&gt;    done    &lt;br /&gt; &lt;br /&gt;    # Backup Apache Files    &lt;br /&gt;    echo `date` &quot;: Backing up Web Server Files&quot;  &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;    tar zcf $volume$destdir/server.tar.gz /srv    &lt;br /&gt; &lt;br /&gt;    # backup databases    &lt;br /&gt;    for dbname in `echo &#039;show databases;&#039; | /usr/bin/mysql -h $dbhost -u$dbuser -p$dbpassword`    &lt;br /&gt;    do    &lt;br /&gt;        if [ $dbname != &quot;Database&quot; ];    &lt;br /&gt;        then    &lt;br /&gt;             echo `date` &quot;: Backing up database $dbname...&quot; &amp;gt;&amp;gt; $destdir/backup.log    &lt;br /&gt;             /usr/bin/mysqldump --opt -h $dbhost -u$dbuser -p$dbpassword $dbname &amp;gt; $destdir/$dbname.sql    &lt;br /&gt;        fi    &lt;br /&gt;    done    &lt;br /&gt;    # Now compress backed up databases into archive    &lt;br /&gt;    tar cf - $destdir/*.sql | gzip &amp;gt; $destdir/db_backup.tar.gz    &lt;br /&gt;    # Remove SQL    &lt;br /&gt;    rm $destdir/*.sql    &lt;br /&gt;  &lt;br /&gt;    # Backup LDAP Data    &lt;br /&gt;    echo `date` &quot;: Backing up LDAP data&quot;  &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;    ldapsearch -x &amp;gt; $volume$destdir/ldap.ldif    &lt;br /&gt; &lt;br /&gt;# Backup Configuration Files    &lt;br /&gt;    echo `date` &quot;: Backing up configuration files&quot; &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;    tar zcf $volume$destdir/server_configs.tar.gz /etc    &lt;br /&gt; &lt;br /&gt;    # Backup completed    &lt;br /&gt;    echo &quot;-------------------------------------------------------&quot; &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;    echo &quot;Backup completed: &quot; `date` &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;    echo &quot;Backup size: &quot; `du -smh $volume$destdir` &amp;gt;&amp;gt; $volume$destdir/backup.log       &lt;br /&gt;        echo &quot;-------------------------------------------------------&quot; &amp;gt;&amp;gt; $volume$destdir/backup.log    &lt;br /&gt;    echo df $device -h       &lt;br /&gt;    echo &quot;Backup process completed&quot;    &lt;br /&gt;    rm $lockfile       &lt;br /&gt;    mail -s &quot;Backup of $servername Completed&quot; -r $serveremail $email &amp;lt; $volume$destdir/backup.log    &lt;br /&gt;fi    &lt;br /&gt;umount $device    &lt;br /&gt;exit    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt; The backup script pulls data from a few configuration files, the main file is normally named backup-daily.conf and stored in /etc/backup    &lt;br /&gt;&lt;/p&gt;  &lt;p class=&quot;codesnippet&quot;&gt;servername SomeServer    &lt;br /&gt;serveremail email@someserver.com    &lt;br /&gt;backupdir /backupA    &lt;br /&gt;movedir /backupB    &lt;br /&gt;lockfile /var/run/backup_script.pid    &lt;br /&gt;endofweek false    &lt;br /&gt;eowflag /var/run/backup_eow    &lt;br /&gt;device /dev/sda1    &lt;br /&gt;volume /media/backup_daily    &lt;br /&gt;dbhost localhost   &lt;br /&gt;dbuser user   &lt;br /&gt;dbpassword password    &lt;br /&gt;email notifyme@someplace.com    &lt;br /&gt;processexists /etc/backup/processexists    &lt;br /&gt;mountfailure /etc/backup/mountfailure&lt;/p&gt;  &lt;p&gt;Here is a definition of the configuration options:&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;servername&lt;/span&gt; - name of server    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;serveremail&lt;/span&gt; - From email address for server emails    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;backupdir&lt;/span&gt; - directory on backup drive to backup to    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;movedir&lt;/span&gt; - directory on backup drive to move previous backup to    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;lockfile&lt;/span&gt; - name of lock file to create whilst backup is taking place    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;endofweek&lt;/span&gt; - true/false whether this is an end of week backup    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;eowflag&lt;/span&gt; - name of flag to set if this is an end of week backup    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;device&lt;/span&gt; - removable media device address    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;volume&lt;/span&gt; - location removable media is mounted to    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;email&lt;/span&gt; - addresses to send backup notification email to    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;processexists&lt;/span&gt; - message to email if the process is still running and a new process cannot begin    &lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;mountfailure&lt;/span&gt; - message to send if there was a problem mounting the backup drive    &lt;br /&gt;&lt;br /&gt; The backup can then be run using the following command:&lt;/p&gt;  &lt;p style=&quot;font-weight: bold&quot;&gt;/usr/local/sbin/backup_script /etc/backup/backup-daily.conf&lt;/p&gt;  &lt;p&gt;Multiple backup configurations can be created and executed just by substituing /etc/backup/backup-daily.conf with the location of the desired configuration file.    &lt;br /&gt;&lt;/p&gt;   &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/backup&quot;&gt;backup&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Thu, 02 Feb 2006 01:10:57 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">232 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>AutoCAD 2006 Tutorial</title>
 <link>https://www.stress-free.co.nz/autocad_2006_tutorial</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p class=&quot;heading&quot;&gt;&lt;font size=&quot;+1&quot;&gt;The Vontz Center, Frank O. Gehry&lt;/font&gt;&lt;/p&gt;&lt;h4&gt;This tutorial will teach you essential skills for drawing in AutoCAD.    &lt;br /&gt;The building that will be modelled is the &lt;a href=&quot;http://vontz.uc.edu/&quot;&gt;Vontz Center&lt;/a&gt; designed by Frank Gehry. The building was chosen for its challenging yet fairly simple shape.    &lt;br /&gt;&lt;/h4&gt;  &lt;p class=&quot;subheading&quot;&gt;&lt;a href=&quot;/sites/default/files/images/tutorials/autocad.2002/screenshots/vontz.jpg&quot;&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/autocad.2002/screenshots/vontz_sm.jpg&quot; width=&quot;200&quot; height=&quot;108&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;subheading&quot;&gt;&lt;span class=&quot;subheading&quot;&gt;Below is a series of simple tips to get you started on your AutoCAD&#039;ing way.....&lt;/span&gt; &lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;*In AutoCAD you can either type in commands or use buttons. As you get used to the program you will find out which you prefer.&lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;*We will be using &lt;strong&gt;Architectural Desktop&lt;/strong&gt; 2006 for this tutorial. Architectural Desktop 2006 is an enhanced version of AutoCAD 2006. Double click on the Architectural Desktop 2006 icon on your desktop to open it.&lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;*For those of you familar with earlier versions of AutoCAD you can bring up the older toolbars by &amp;lt;Right Clicking&amp;gt; on the blank area beside the toolabrs above the drawing area. The &amp;lt;ADT&amp;gt; button in the pop up window will reveal a range of toobars that can be made readily accessible: 3DOrbit, Dimension, Inquiry etc  &lt;/p&gt;&lt;p class=&quot;plist&quot;&gt; &lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/autocad.2002/screenshots/toolbars_detail.jpg&quot; alt=&quot;toolbars_detail.jpg&quot; hspace=&quot;0&quot; vspace=&quot;0&quot; width=&quot;334&quot; height=&quot;368&quot; /&gt;&lt;/p&gt;&lt;p class=&quot;plist&quot;&gt; &lt;/p&gt;&lt;br /&gt;Useful (but not essential) toolbars are Object Snap, Views, UCS and 3D Orbit.  &lt;p&gt; &lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;In addition, in the &amp;lt;Window&amp;gt;&amp;lt;Pulldowns&amp;gt; menu you will find some useful menu bar items: 3D Solids, Design and Document. When these are selected not only does the pulldown menu list get longer, but when you &amp;lt;Right Click&amp;gt; on the blank portion of the toobar space (as above) you will have a wider range of options - a set of toobars for each pulldown. Under the ADT Solids option, you could find the Solids editing toobar useful.  &lt;/p&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/autocad.2002/screenshots/pulldowns_detail_sm.jpg&quot; alt=&quot;Pulldowns&quot; hspace=&quot;0&quot; vspace=&quot;0&quot; width=&quot;706&quot; height=&quot;506&quot; /&gt;&lt;br /&gt;&lt;p class=&quot;plist&quot;&gt;*To switch views in Architectural Desktop you can select one of the preset views or create your own.    &lt;br /&gt;From the menu select:    &lt;br /&gt;-&amp;gt;View -&amp;gt;3D Views    &lt;br /&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/autocad.2002/screenshots/adt_views.jpg&quot; width=&quot;291&quot; height=&quot;459&quot; /&gt;&lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;To create your own customised view (or to just view your model from all over use the orbit tool. Click on the Orbit button to change into orbit mode. In this mode you can click and drag on the drawing window to move your model.    &lt;br /&gt;By clicking and holding the left mouse button down on the orbit tool a drop-down list of further tools are revealed.    &lt;br /&gt;Try experimenting with these tools to get interesting views of your model for rendering.    &lt;br /&gt;&lt;img src=&quot;/sites/default/files/images/tutorials/autocad.2002/screenshots/3dicon.jpg&quot; width=&quot;72&quot; height=&quot;317&quot; /&gt;&lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;*The UCS is the most important and versatile tool in AutoCAD. It is a &#039;virtual drawing board&#039; that can be tilted and rotated. Whenever you provide AutoCAD with a two-dimensional coordinate (x,y) it assumes the z value to be 0. As you will soon see the UCS is very useful when drawing vertical and angled surfaces.&lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;*Pressing the left mouse button selects objects or icons, pressing the right mouse button in AutoCAD 2006 brings up a context sensitive menu. This menu contains all the options for the currently selected tool and contains shortcuts to commonly used commands such as the ENTER key. &lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;*This tutorial assumes that you are using AutoCAD 2006 with Architectural Desktop enhancements. The default settings for this programme is to have &quot;Snap to Object&quot; enabled for End Points, Mid Points and Intersections.    &lt;br /&gt;This feature allows you to quickly select a point on an object. The cursor will change to a bright yellow box whenever the Object Snap tool has found an intersection, end or middle point to snap to.&lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;* If you have lines on top of one another and are having difficulty selecting the right one, you can press down Ctrl while you select - this allows you to cycle through all the objects at that point and choose the correct one. &lt;/p&gt;&lt;p class=&quot;plist&quot;&gt;*To quickly draw lines that run parallel with the UCS use the Orthographic drawing mode. Press the ORTHO button at the bottom of the drawing window to turn this mode on or press F8.    &lt;br /&gt;This is similar to using a parallel rule device on a drawing table.&lt;/p&gt;&lt;p&gt;* Like many programs, AutoCAD has a wide range of shortcuts. These can be customised by editing the acad.pgp file (a text file) in the AutoCAD support directory. For now we will not bother, but if you wish to do this customisation, please set yourself up with the support directory on your I:\ drive! Meantime remember that for most of the commands used in this course there is a shortcut. M for Move, Ext for Extrude, pl for polyline. The full list of standard shortcuts can be found in the &lt;a href=&quot;/sites/default/files/images/tutorials/autocad.2002/acad_pgp_aliases_06.html&quot;&gt;acad.pgp&lt;/a&gt; &lt;a href=&quot;http://www.arch.school.nz/tutorials/autocad.2002/acad_pgp_aliases_06.html&quot;&gt;&lt;/a&gt;file.  &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tutorials&quot;&gt;software tutorials&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/autocad&quot;&gt;autocad&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Mon, 23 Jan 2006 20:42:11 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">477 at https://www.stress-free.co.nz</guid>
</item>
</channel>
</rss>
