<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7034508296378427095</id><updated>2010-06-16T09:52:06.107-07:00</updated><title type='text'>WebObjects and Related Topics</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7034508296378427095.post-4647282556707417936</id><published>2009-08-28T09:43:00.000-07:00</published><updated>2009-08-28T09:50:41.192-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><title type='text'>Testing Your Site Internet Explorer</title><content type='html'>I find the &lt;a href="http://finalbuilds.edskes.net/iecollection.htm"&gt;Internet Explorer Collections&lt;/a&gt; product to be a great facility for testing web page rendering in more than just the default installed version of Internet Explorer. And it is free. You can get it here:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://finalbuilds.edskes.net/iecollection.htm"&gt;http://finalbuilds.edskes.net/iecollection.htm&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I run it on Parallels 3.0 on my OS X Leopard Mac since I do not have a PC.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;..... and I still despise Internet Explorer. Give me Firefox or Safari any day.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034508296378427095-4647282556707417936?l=blog.greenislandconsulting.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/4647282556707417936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.greenislandconsulting.com/2009/08/testing-your-site-internet-explorer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/4647282556707417936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/4647282556707417936'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/2009/08/testing-your-site-internet-explorer.html' title='Testing Your Site Internet Explorer'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16577018924550048179'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034508296378427095.post-1389169623862596711</id><published>2009-07-05T06:35:00.000-07:00</published><updated>2009-08-28T11:19:19.208-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS X'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Setting Terminal Prompt in OS X Leopard</title><content type='html'>When working with a slew of terminal sessions with each connected to different hosts and as different users, the default terminal prompt in Leopard is useless, and IMHO, dangerous when you are root after doing a 'sudo -s'. As root, it is impossible to tell what host you are on and that is a recipe for disaster.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To customize your terminal prompt in Leopard for regular users and root user, simply add the following line to both &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;~/.bashrc&lt;/span&gt; and &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;~/.profile&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;export PS1="\\u@\\h:\\w\\$ "&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Your prompt will now look something like this for regular and root user:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;kieran@kieranmacpro:~$ sudo -s&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Password:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;root@kieranmacpro:~# &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034508296378427095-1389169623862596711?l=blog.greenislandconsulting.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/1389169623862596711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.greenislandconsulting.com/2009/07/setting-terminal-prompt-is-os-x-leopard.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/1389169623862596711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/1389169623862596711'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/2009/07/setting-terminal-prompt-is-os-x-leopard.html' title='Setting Terminal Prompt in OS X Leopard'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16577018924550048179'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034508296378427095.post-9005968092349857011</id><published>2009-07-03T03:35:00.000-07:00</published><updated>2009-07-03T12:54:40.264-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Install MySQL 5 on OS X Leopard Server</title><content type='html'>&lt;h2&gt;Introduction&lt;/h2&gt;&lt;br /&gt;I always prefer to manage my own MySQL installation on OS X Server rather than use the Apple built-in one. Doing so ensures that I use the version of MySQL that I want and I upgrade when it suits me. This article outlines the steps to install MySQL on OS X 10.5 Leopard Server and disable the Apple pre-installed MySQL binaries. This article is an update to an older article I did years ago for older version OS X Server.&lt;br /&gt;&lt;h2&gt;Install MySQL&lt;/h2&gt;&lt;br /&gt;Download the version of MySQL you want from mysql.com. You will want the Mac OS X (package format) downloads. Choose the OS X 10.5 package appropriate to your architecture. For this article, I have chosen mysql-5.0.81-osx10.5-x86.dmg.&lt;br /&gt;Run the mysql package installer.&lt;br /&gt;Do NOT run the MySQLStartupItem installer since using a launchd configuration is more appropriate for Leopard and later versions of OS X.&lt;br /&gt;&lt;h2&gt;Configure MySQL 'my.cnf' Before First-time Start&lt;/h2&gt;&lt;br /&gt;MySQL does not run in an optimal way with default configuration settings. It is very important to configure MySQL appropriate to the planned memory usage.&lt;br /&gt;Also, some options, such as innodb_log_file_size cannot be changed after MySQL has initialized innodb files on disk without going through a special complicated procedure, so that is why we will configure options before we start MySQL for the first time to make your life easy.&lt;br /&gt;Don't worry about perfection. Any configuration you do will probably be magnitudes better than the default settings. So, do not skip this step!&lt;br /&gt;Configuring MySQL is easy. You simply put all the configuration options in a properties file at /etc/my.cnf which is automatically read by MySQL at startup. The primary things I am concerned with when I create a MySQL configuration file are:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Amount of real memory I want available to MySQL&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Use of InnoDB transactional database engine instead of default MyISAM engine. The default is suitable for logging and huge lookup tables. InnoDB provides transactions and ability to rollback a transaction when one statement fails. InnoDB is ideal for WebObjects development. MyISAM is not!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;On the machine that I am configuring for this article, which is a Mac Mini used for demonstration of apps to clients, I have 2GB RAM, so I am going to give about 512MB to MySQL.&lt;br /&gt;Here is the configuration for this scenario. Use this as a guide for minimal settings for a new MySQL installation. This minimal configuration should work on any machine with 2GB+ RAM&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Basic minimal /etc/my.cnf config for a 2GB RAM Mac Mini&lt;br /&gt;# running MySQL 5.0+ and WebObjects on OS X&lt;br /&gt;# The following settings result in about 512MB of Real Memory usage by MySQL&lt;br /&gt;&lt;br /&gt;[mysqld]&lt;br /&gt;# ======= BEGIN GLOBAL SETTINGS =============&lt;br /&gt;&lt;br /&gt;socket = /tmp/mysql.sock&lt;br /&gt;&lt;br /&gt;# This variable should be as big as the biggest BLOB value we plan to use&lt;br /&gt;max_allowed_packet = 20M&lt;br /&gt;&lt;br /&gt;# The max number of opened tables for all threads&lt;br /&gt;table_cache = 256&lt;br /&gt;&lt;br /&gt;# This is buffer allocated by threads for sorting. Improves performance&lt;br /&gt;# of ORDER BY and GROUP BY operations&lt;br /&gt;sort_buffer_size = 16M&lt;br /&gt;&lt;br /&gt;# This is a buffer used for sequential table scans (I guess where an index&lt;br /&gt;# is not used for a search ... may help scans that create new indexes aswell KK 05092005)&lt;br /&gt;read_buffer_size = 20M&lt;br /&gt;&lt;br /&gt;# Number of threads to keep available for use&lt;br /&gt;# Not really important for our situation where we use applications with persistent connections&lt;br /&gt;# For a dedicated mysql server, 8 at least is recommended.&lt;br /&gt;thread_cache_size = 4&lt;br /&gt;&lt;br /&gt;# No query cache since we already use EOF in WebObjects&lt;br /&gt;query_cache_type = 0&lt;br /&gt;query_cache_size = 0&lt;br /&gt;&lt;br /&gt;# New tables are innodb unless specified otherwise (Before MySQL 4.1.2 use default-table-type)&lt;br /&gt;default-storage-engine=innodb&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# ======= BEGIN MYISAM SETTINGS ===================================================&lt;br /&gt;&lt;br /&gt;# Size of the Key Buffer, used to cache index blocks for MyISAM tables.&lt;br /&gt;# Do not set it larger than 30% of your available memory, as some memory&lt;br /&gt;# is also required by the OS to cache rows. Even if you're not using&lt;br /&gt;# MyISAM tables, you should still set it to 8-64M as it will also be&lt;br /&gt;# used for internal temporary disk tables.&lt;br /&gt;# Ideally key_buffer (aka key_buffer_size) should be as large as we can afford and&lt;br /&gt;# ideally should be equal to the sum of all .MYI files' sizes.&lt;br /&gt;# This is one of the most important performance tuning variables for queries that use indexes&lt;br /&gt;key_buffer_size = 64M&lt;br /&gt;&lt;br /&gt;# Buffer for REPAIR TABLE or CREATE INDEX operations on MyISAM tables&lt;br /&gt;myisam_sort_buffer_size = 16M&lt;br /&gt;&lt;br /&gt;# ======= BEGIN INNODB SETTINGS ===================================================&lt;br /&gt;# Create a separate idb file per table&lt;br /&gt;innodb_file_per_table&lt;br /&gt;&lt;br /&gt;# Buffer for innodb index and table cache performance - important!&lt;br /&gt;innodb_buffer_pool_size = 364M&lt;br /&gt;&lt;br /&gt;# MySQL creates 2 files on disk using this setting - important!&lt;br /&gt;# Changing this after the first start requires a special procedure!&lt;br /&gt;innodb_log_file_size = 128M&lt;br /&gt;&lt;br /&gt;innodb_log_buffer_size = 8M&lt;br /&gt;&lt;br /&gt;# Rollback the full transaction on timeout. Need this in MySQL 5.0+&lt;br /&gt;innodb_rollback_on_timeout&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;See the mysql documentation for lots of additional features you can enable with the my.cnf file entries.&lt;br /&gt;Put the above into a file at /etc/my.cnf&lt;br /&gt;&lt;h2&gt;Configure MySQL to Always Run with launchd&lt;/h2&gt;&lt;br /&gt;Next let's install a launchd task that will ensure mysql is always running.&lt;br /&gt;Create a text file named 'com.mysql.MySQL.plist' with the following contents:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple Computer//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;dict&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;com.mysql.MySQL&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;OnDemand&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;false/&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;array&amp;gt;&lt;br /&gt;  &amp;lt;string&amp;gt;/usr/local/mysql/bin/mysqld_safe&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;/array&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;ServiceDescription&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Mysql Database Server&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;UserName&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;mysql&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;WorkingDirectory&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/usr/local/mysql&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;br /&gt;&amp;lt;/plist&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Put that text file in /Library/LaunchDaemons directory. (You will need sudo privileges to do this)&lt;br /&gt;Then simply load this launchd task using the command&lt;br /&gt;&lt;pre&gt;launchctl load com.mysql.MySQL.plist&lt;/pre&gt;&lt;br /&gt;MySQL should now have started.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;MySQL Security Tasks&lt;/h2&gt;&lt;br /&gt;The default installation has a root user with no password, so we have to set a password for root to protect our server.&lt;br /&gt;Type this in the terminal:&lt;br /&gt;&lt;pre&gt;cd /usr/local/mysql/bin&lt;/pre&gt;&lt;br /&gt;If this is first time install, log in as root and set a password&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;./mysql -u root -p&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Just hit return when prompted for a password the first time since no root password has been set.&lt;br /&gt;At the mysql prompt, type the following replacing password with your password:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;grant all on *.* to root@localhost identified by 'password' with grant option;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;now type:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;exit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and test the login again with the password&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;./mysql -u root -p&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;enter the password you set for the mysql root user when prompted.&lt;br /&gt;Next we need to delete the 'anonymous' user that usually exists by default in MySQL&lt;br /&gt;After logging in as root, do the following&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;use mysql;&lt;br /&gt;delete from user where user = '';&lt;br /&gt;flush privileges;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;OS X Server Binary Path Configuration&lt;/h2&gt;&lt;br /&gt;The next thing we need to do is configure our command path so that we refer to the mysql binaries that we installed and not the preinstalled Apple binaries.&lt;br /&gt;Using pico or similar, open and edit /etc/profile so that the path variable has /usr/local/mysql/bin pre-pended as the first element of the path. Simply add the following lines to the end of the existing file:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;PATH="/usr/local/mysql/bin:"${PATH}&lt;br /&gt;export PATH&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For added robustness, you may delete all Apple preinstalled mysql binaries like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cd /usr/bin&lt;br /&gt;$ sudo rm mysql*&lt;br /&gt;$ sudo rm myisam*&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And that is it. You are done and mysql is running and set to automatically run at all times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034508296378427095-9005968092349857011?l=blog.greenislandconsulting.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/9005968092349857011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.greenislandconsulting.com/2009/07/install-mysql-5-on-os-x-leopard-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/9005968092349857011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/9005968092349857011'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/2009/07/install-mysql-5-on-os-x-leopard-server.html' title='Install MySQL 5 on OS X Leopard Server'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16577018924550048179'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034508296378427095.post-9015751574587900172</id><published>2009-07-02T18:31:00.000-07:00</published><updated>2009-07-02T18:34:48.016-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='public key'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>Troubleshooting ssh key-pair authentication</title><content type='html'>So that "future me" never forgets to do this first when a newly configured ssh key-pair authentication does not work and I keep getting asked for a password ... use the -v option in the ssh command to get a verbose output and see exactly at what point the authentication is failing. Really this can solve the problem in two minutes flat.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ssh -v user@remotehost&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034508296378427095-9015751574587900172?l=blog.greenislandconsulting.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/9015751574587900172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.greenislandconsulting.com/2009/07/troubleshooting-ssh-key-pair.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/9015751574587900172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/9015751574587900172'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/2009/07/troubleshooting-ssh-key-pair.html' title='Troubleshooting ssh key-pair authentication'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16577018924550048179'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034508296378427095.post-2364914925173348497</id><published>2009-07-02T10:39:00.000-07:00</published><updated>2009-07-02T10:42:03.495-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='WebObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis'/><title type='text'>JavaXML Framework and Axis Versions</title><content type='html'>According to Pierre Frisch on the webobjects-dev mailing list:&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: medium; "&gt;"JavaXML is a convenience so that you can deploy easily. there is no specific WO code in there and it can easily be replaced by its components. Be careful about Axis, WO 5.2.x works with Axis 1.0, WO 5.3.x with Axis 1.1 and WO 5.4.x with Axis 1.4. Any other combination is known NOT to work without serious hacking."&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, fantasy;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, -webkit-fantasy;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, fantasy; font-size: 16px; "&gt;This is good to know. Now you can make your own JavaXML framework with whatever versions of stuff you want in there.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034508296378427095-2364914925173348497?l=blog.greenislandconsulting.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/2364914925173348497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.greenislandconsulting.com/2009/07/javaxml-framework-and-axis-versions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/2364914925173348497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/2364914925173348497'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/2009/07/javaxml-framework-and-axis-versions.html' title='JavaXML Framework and Axis Versions'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16577018924550048179'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034508296378427095.post-156425144054092437</id><published>2009-06-26T09:32:00.000-07:00</published><updated>2009-06-26T09:48:33.226-07:00</updated><title type='text'>svn externals usage</title><content type='html'>I have a Foundation framework that uses com.webobjects.foundation classes, apache commons lang and a few other non-WebObjects libraries and utility classes (&lt;a href="http://en.wikipedia.org/wiki/Separation_of_concerns"&gt;Separation of Concerns&lt;/a&gt;, etc.) I use WO 5.3.3, so without including project WOnder's ERExtensions, I don't get the benefit of generic foundations classes for NSArray, NSDictionary, etc. As I added some utility methods today in the framework, I decided to use svn externals to pick up the genericized foundation classes directly from Wonder HEAD.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This was simple to do.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I created a com.webobjects package in my Sources directory and added the following svn property to the webobjects directory:&lt;/div&gt;&lt;div&gt;&lt;b&gt;name&lt;/b&gt;: svn:externals&lt;/div&gt;&lt;div&gt;&lt;b&gt;value:&lt;/b&gt; foundation http://wonder.svn.sourceforge.net/svnroot/wonder/trunk/Wonder/Frameworks/Core/ERExtensions/Sources/com/webobjects/foundation&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that is a space between foundation and the http url and that is all on one line of text. With svn:externals you can add multiple lines to pull in multiple external sources into your working copy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I originally tried added a svn:externals property to the Sources directory itself with a left-hand-side of com/webobjects/foundation, which according to the svn book should work, but Subclipse was getting confused and freaking out when trying to commit saying that webobjects directory did not exist in repository.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034508296378427095-156425144054092437?l=blog.greenislandconsulting.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/156425144054092437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.greenislandconsulting.com/2009/06/svn-externals-usage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/156425144054092437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/156425144054092437'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/2009/06/svn-externals-usage.html' title='svn externals usage'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16577018924550048179'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034508296378427095.post-4963337938807654213</id><published>2009-06-26T06:55:00.000-07:00</published><updated>2009-06-26T07:19:00.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WOComponents'/><category scheme='http://www.blogger.com/atom/ns#' term='Wonder'/><title type='text'>Use ERXStyleSheet for CSS Stylesheets</title><content type='html'>Use Wonder's &lt;a href="http://webobjects.mdimension.com/wonder/api/er/extensions/components/ERXStyleSheet.html"&gt;ERXStyleSheet&lt;/a&gt; reusable WOComponent for all your CSS stylesheet needs, even static ones served from your webserver root. This ensures that your changes during development are instantly reflected even for static ones saving you the need to do other fiddling to stop the browser caching your static stylesheets in development.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Example usage for a static stylesheet:&lt;/div&gt;&lt;div&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color:#2a00ff;"&gt;&lt;span style="color:#3f7f7f;"&gt;&lt;&lt;/span&gt;&lt;span style="color:#034343;"&gt;wo:ERXStyleSheet&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#7f007f;"&gt;href&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#3f7f7f;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;"/lcwr/css/wkgeneric.css"&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#3f7f7f;"&gt;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For stylesheets in your application's WebServerResources, use it like this:&lt;/div&gt;&lt;div&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color:#2a00ff;"&gt;&lt;span style="color:#3f7f7f;"&gt;&lt;&lt;/span&gt;&lt;span style="color:#034343;"&gt;wo:ERXStyleSheet&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#7f007f;"&gt;filename&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#3f7f7f;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;"wkgeneric.css" &lt;span style="color:#3f7f7f;"&gt;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;For stylesheets in a framework's WebServerResources, use it like this:&lt;/div&gt;&lt;div&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(42, 0, 255); "&gt;&lt;span style="color: rgb(63, 127, 127); "&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(3, 67, 67); "&gt;wo:ERXStyleSheet&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); "&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 127); "&gt;filename&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); "&gt; &lt;/span&gt;&lt;span style="color: rgb(63, 127, 127); "&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); "&gt; &lt;/span&gt;"wkgeneric.css"&lt;span class="Apple-style-span"  style="color:#000000;"&gt; &lt;span class="Apple-style-span" style="font-family: Monaco, -webkit-fantasy; "&gt;&lt;span style="color:#7f007f;"&gt;framework&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#3f7f7f;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;"MyFramework" &lt;span class="Apple-style-span" style="font-family: Monaco, fantasy; color: rgb(63, 127, 127); "&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For dynamic stylesheet generation, you can put styles in the component content and a stylesheet will be dynamically generated, cached and delivered for you. Use this when you want dynamic styles for different users or branding for example. See the javadoc to understand usage of the cache key.&lt;/div&gt;&lt;div&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color:#2a00ff;"&gt;&lt;span style="color:#000000;"&gt;    &lt;/span&gt;&lt;span style="color:#3f7f7f;"&gt;&lt;&lt;/span&gt;&lt;span style="color:#034343;"&gt;wo:ERXStyleSheet&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#7f007f;"&gt;key&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#3f7f7f;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;"developmentgrid"&lt;span style="color:#3f7f7f;"&gt;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;        #bd {&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;        &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;background-color: none;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;        &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;background: url(/lcwr/css/src/grid.png);&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;        }&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color:#034343;"&gt;&lt;span style="color:#000000;"&gt;    &lt;/span&gt;&lt;span style="color:#3f7f7f;"&gt;&lt;/span&gt;wo:ERXStyleSheet&lt;span style="color:#3f7f7f;"&gt;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As always, Wonder provides the fast easy way to Get Things Done™&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034508296378427095-4963337938807654213?l=blog.greenislandconsulting.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/4963337938807654213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.greenislandconsulting.com/2009/06/use-erxstylesheet-for-css-stylesheets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/4963337938807654213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/4963337938807654213'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/2009/06/use-erxstylesheet-for-css-stylesheets.html' title='Use ERXStyleSheet for CSS Stylesheets'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16577018924550048179'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034508296378427095.post-8778833302904819261</id><published>2009-06-16T10:25:00.001-07:00</published><updated>2009-06-16T10:38:07.373-07:00</updated><title type='text'>My New Blog</title><content type='html'>My blogging has been at a standstill for a long time due to the fact that I expediently set up my original blog on .mac using iBlog.app. Of course iBlog.app just became a pain to as time went by and as I moved through various versions of Mc OS X over the years. Then a new version of iBlog.app was released and supposedly was a free upgrade for existing iBlog users. I downloaded it, installed it, made one post, which had messed up HTML from this new improved broken version. After a month, the new version expired! ... and would not let me use it anymore.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have been putting off blogging about software development bits and pieces forever. At the recent &lt;a href="http://www.wocommunity.org/wowodc09/west/index.html"&gt;WOWODC 2009&lt;/a&gt; in San Francisco, more than a few said "When are you going to start blogging again?" or "I found your blog very useful when I was starting WebObjects. Why have you stopped blogging?". This surprised me.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, today I got itchy fingers and needed to talk about my recent D2W (Direct to Web) experiences since I am very very motivated to use this after the fantastic and motivating presentation by &lt;a href="http://davidleber.net/"&gt;David LeBer&lt;/a&gt; on that topic at WOWODC 2009.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My old blog will stay as it is, untouched, more or less, until Apple says it will not host it anymore, or my .mac account is not renewed, whichever comes first. You can find the old one here:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://homepage.mac.com/kelleherk/iblog/"&gt;http://homepage.mac.com/kelleherk/iblog/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034508296378427095-8778833302904819261?l=blog.greenislandconsulting.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.greenislandconsulting.com/feeds/8778833302904819261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.greenislandconsulting.com/2009/06/my-new-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/8778833302904819261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034508296378427095/posts/default/8778833302904819261'/><link rel='alternate' type='text/html' href='http://blog.greenislandconsulting.com/2009/06/my-new-blog.html' title='My New Blog'/><author><name>Kieran</name><uri>http://www.blogger.com/profile/01837681700814421526</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16577018924550048179'/></author><thr:total>0</thr:total></entry></feed>