<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Lynch Consulting Blog - Open Source</title>
			<link>http://www.lynchconsulting.com.au/blog/index.cfm</link>
			<description>A blog about ColdFusion, PHP, Flash, Flex, Web Standards and a mish mash of other technologies</description>
			<language>en-us</language>
			<pubDate>Tue, 07 Sep 2010 12:49:04 --1000</pubDate>
			<lastBuildDate>Tue, 29 Jun 2010 13:34:00 --1000</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>mark@lynchconsulting.com.au</managingEditor>
			<webMaster>mark@lynchconsulting.com.au</webMaster>
			
			
			
			
			
			<item>
				<title>ServerStats mentioned on CFHour</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/6/29/ServerStats-mentioned-on-CFHour</link>
				<description>
				
				Just came across a mention of &lt;a href=&quot;http://www.learnosity.com/techblog/index.cfm/2006/11/9/Hacking-CFMX--pulling-it-all-together-serverStats&quot;&gt;a little project&lt;/a&gt; that I did back in 2006 in the most &lt;a href=&quot;http://www.cfhour.com/post.cfm/show-58-monitoring-debugging-and-guests&quot;&gt;recent CFHour podcast - 
Show #58 - Monitoring, Debugging, and Guests&lt;/a&gt;.  (Mention is at approx 53 minutes).

The &lt;a href=&quot;http://www.learnosity.com/techblog/index.cfm/2006/11/9/Hacking-CFMX--pulling-it-all-together-serverStats&quot;&gt;ServerStats code&lt;/a&gt; wraps up a few undocumented methods for CF to make it easy to get information on the number of sessions active on a server as well as some basic information on memory usage. 

Thanks to &lt;a href=&quot;http://www.carehart.org/&quot;&gt;Charlie Arehart&lt;/a&gt; for mentioning it - keep up the good work.

I must have a look at updating it to support Railo when I get a moment.

Cheers,
Mark
				
				</description>
				
				<category>Open Source</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Tue, 29 Jun 2010 13:34:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/6/29/ServerStats-mentioned-on-CFHour</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Howto find files newer than a specific date using command line</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/5/10/Howto-find-files-newer-than-a-specific-date-using-command-line</link>
				<description>
				
				While doing some server admin tasks the other day I needed to find all the files newer than a certain date.  Using just the command line tools it was relatively simple but not obvious, so this is a not to self.

The find utility has an option to find a file newer than another file.  By creating and empty file with a specific creation date we can do the search:
&lt;code&gt;
touch timestamp -d 2010-01-01
&lt;/code&gt;

To show all files newer than 2010-01-01 use:
&lt;code&gt;
find . -newer timestamp 
&lt;/code&gt;

Or to create a tar archive of them use xargs like so:
&lt;code&gt;
find . -newer timestamp | xargs tar -rf /root/filesnewerthan-2010-01-01.tar
&lt;/code&gt;


Easy.
Mark
				
				</description>
				
				<category>HOWTO</category>
				
				<category>Linux</category>
				
				<category>Open Source</category>
				
				<category>Systems admin</category>
				
				<category>Ubuntu</category>
				
				<pubDate>Mon, 10 May 2010 23:19:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/5/10/Howto-find-files-newer-than-a-specific-date-using-command-line</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Flex 3 to Flex 4 Migration Howto</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/3/22/Flex-3-to-Flex-4-Migration-Howto</link>
				<description>
				
				I recently completed migrating an application from Flex3 to Flex4, and for my own reference, here&apos;s how I did it.

Note - this was done with flexsdk-4.0.0.13875, which was the most recent stable build at the time.

&lt;h2&gt;Phase 1:  Get Flex3 code compiling with Flex4&lt;/h2&gt;

&lt;h3&gt;Fix up stylesheets:&lt;/h3&gt;

If you have a current Flex3 project and you are migrating to Flex4 you need to add the following lines at the top of your stylesheet.
&lt;code&gt;
@namespace &quot;library://ns.adobe.com/flex/mx&quot;;
@namespace s &quot;library://ns.adobe.com/flex/spark&quot;;
&lt;/code&gt;

This makes the default non-namespaced items in your stylesheet refer to the MX components. eg:
&lt;code&gt;
Button{fontSize:18;}
&lt;/code&gt;
And to style up spark buttons you simply use:
&lt;code&gt;
s|Button{fontSize:18;}
&lt;/code&gt;

&lt;h3&gt;To statically link or not?&lt;/h3&gt;

Flex 4 defaults to dynamically linking runtime shared libraries.  This produces smaller files, but if you are making desktop type applications or developing code while not connected to the internet you&apos;ll probably want to statically link the files.  Add this to your compiler option:
&lt;code&gt;
-static-link-runtime-shared-libraries=true
&lt;/code&gt;


You now should have a happily compiling app, however, to use all the new goodness of flex 4 there are still some more steps to be done.

&lt;h2&gt;Phase 2: Using all of flex 4&lt;/h2&gt;

&lt;h3&gt;Update namespace to 2009&lt;/h3&gt;

To update the namespace references for flex 4 I did the following search and replace:
&lt;code&gt;
Replace:
xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;
With:
xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot; xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
&lt;/code&gt;

&lt;h3&gt;Replace mx with fx namespace&lt;/h3&gt;

&lt;code&gt;
&lt;mx:Script&gt;  and &lt;/mx:Script&gt;
becomes:
&lt;fx:Script&gt;  and &lt;/fx:Script&gt;
&lt;/code&gt;

Similarly for other tags like this:
&lt;code&gt;
&lt;mx:Binding&gt;  to &lt;fx:Binding&gt;
&lt;mx:Metadata&gt;  to &lt;fx:Metadata&gt;
&lt;/code&gt;

&lt;h3&gt;Add Declarations for non visual components&lt;/h3&gt;

Wrap &lt;fx:Declarations&gt; tag around non visual compoents.  The compiler will complain about all these errors so just follow through and wrap them in 
&lt;code&gt;
&lt;fx:Declarations&gt;&lt;/fx:Declarations&gt; 
&lt;/code&gt;
tags until all the errors go away.


&lt;h3&gt;Migrate States&lt;/h3&gt;
Finally, at least for the project I migrated, I needed to convert all the state tags to the new format of inline attributes.

This shows up as the following error:
&lt;code&gt;
Error: State overrides may no longer be explicitly declared. The legacy states syntax has been deprecated.
&lt;/code&gt;

So if you had something like this before:
&lt;code&gt;
&lt;mx:State name=&quot;loading&quot;&gt; 
 &lt;mx:AddChild relativeTo=&quot;{myBox}&quot;&gt; 
  &lt;mx:Text textAlign=&quot;center&quot; text=&quot;Loading...&quot; selectable=&quot;false&quot; /&gt; 
 &lt;/mx:AddChild&gt;           
... snip ...
&lt;mx:VBox id=&quot;myBox&quot;&gt;	
&lt;/mx:VBox&gt;
&lt;/code&gt;

It would now look something like this:

&lt;code&gt;
&lt;mx:State name=&quot;loading&quot;&gt; 
... snip ...
&lt;mx:VBox id=&quot;myBox&quot;&gt;	
 &lt;mx:Text textAlign=&quot;center&quot; text=&quot;Loading...&quot; selectable=&quot;false&quot; 
	visible=&quot;false&quot; includeInLayout=&quot;false&quot;
	visible.loading=&quot;true&quot; includeInLayout.loading=&quot;true&quot;
 /&gt; 
&lt;/mx:VBox&gt;
&lt;/code&gt;


&lt;h3&gt;Migrate StyleManager References&lt;/h3&gt;

Stylemanager is not called as a global class any more and you need to use fully qualified references so:
&lt;code&gt;
thisImage.source = StyleManager.getStyleDeclaration(&quot;Image&quot;).getStyle(&quot;brokenImageSkin&quot;);
&lt;/code&gt;
becomes:
&lt;code&gt;
thisImage.source = styleManager.getStyleDeclaration(&quot;mx.controls.Image&quot;).getStyle(&quot;brokenImageSkin&quot;);
&lt;/code&gt;


When these have all been converted, your application should compile.

Then you can start leveraging the new functionality of flex4 and begin  migrating your components to spark if necessary.
				
				</description>
				
				<category>Open Source</category>
				
				<category>HOWTO</category>
				
				<category>Flex</category>
				
				<category>AIR</category>
				
				<category>Actionscript</category>
				
				<pubDate>Mon, 22 Mar 2010 09:50:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/3/22/Flex-3-to-Flex-4-Migration-Howto</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>MySQL 5.1 logging changes - Log to DB and runtime config</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/1/29/MySQL-51-logging-changes</link>
				<description>
				
				While browsing around the MySQL site last night I discovered a number of nice new features of mysql 5.1 that relate to logging.

These are:

&lt;ul&gt;
&lt;li&gt;Logging to DB instead of log files&lt;/li&gt;
&lt;li&gt;Runtime configuration of logging.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Logging to DB instead of log files&lt;/h3&gt;

Coming from a web development background rather than a sysadmin background I&apos;m far more comfortable manipulating and analysing data using SQL.  So to be able to log all the queries or just the slow queries for an application to the db during application development or load testing is a huge benefit.

To enable logging to DB you can add the following to your my.cnf
&lt;code&gt;
log_output = TABLE
&lt;/code&gt; 

The logs will be written to the &apos;slow_log&apos; and &apos;general_log&apos; tables in the mysql database.

Note - logging to tables has more overhead than logging to file, so would suggest using it primarily for development purposes.

Full details of the options are on the &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/log-tables.html&quot;&gt;mysql manual on log tables&lt;/a&gt;


&lt;h3&gt;Runtime configuration of logging.&lt;/h3&gt;

This allows you to turn on and off logging without restarting MySQL - which just saves a little bit of time and makes it much nicer for debugging problems.

To turn on the logging of all queries run:
&lt;code&gt;
SET GLOBAL general_log = &apos;ON&apos;;
&lt;/code&gt;
And for just the slow query log:
&lt;code&gt;
SET GLOBAL slow_query_log = &apos;ON&apos;;
&lt;/code&gt;

And to turn them both off use:
&lt;code&gt;
SET GLOBAL general_log = &apos;OFF&apos;;
SET GLOBAL slow_query_log = &apos;OFF&apos;;
&lt;/code&gt;

If you also want to see queries not using indexes in the slow query log you can set the following variable:

&lt;code&gt;
SET GLOBAL log_queries_not_using_indexes = &apos;ON&apos;;
&lt;/code&gt;


Hope it helps,
Mark
				
				</description>
				
				<category>Ubuntu</category>
				
				<category>Systems admin</category>
				
				<category>Open Source</category>
				
				<category>mysql</category>
				
				<category>Linux</category>
				
				<category>Database</category>
				
				<pubDate>Fri, 29 Jan 2010 08:15:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/1/29/MySQL-51-logging-changes</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Jmeter over SSH Socks proxy</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/1/7/Jmeter-over-SSH-Socks-proxy</link>
				<description>
				
				I&apos;ve been doing some testing recently where I need to connect via SSH server to a remote network to run some load testing.

To do this I used a &lt;a href=&quot;http://www.lynchconsulting.com.au/blog/index.cfm/2009/7/1/SSH-SOCK-Proxying-and-preventing-it&quot;&gt;SSH sock proxy like I have previously blogged about&lt;/a&gt;.

So I fired this up so that I could review the site I wanted to look at.  It worked a charm through firefox but there is no where to set up the proxy in jmeter.

To make it work you need to let the JVM know what proxy to use like so:
&lt;code&gt;
java -DsocksProxyHost=localhost -DsocksProxyPort=8080 -jar ApacheJMeter.jar 
&lt;/code&gt;

No jmeter will use the socks proxy on port 8080 on my local machine.  Nice.
				
				</description>
				
				<category>Software Architecture</category>
				
				<category>Open Source</category>
				
				<category>Linux</category>
				
				<category>HOWTO</category>
				
				<category>General</category>
				
				<pubDate>Thu, 07 Jan 2010 10:25:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/1/7/Jmeter-over-SSH-Socks-proxy</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Upcoming book review - Tomcat 6 Developer&apos;s Guide</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/12/21/Upcoming-book-review--Tomcat-6-Developers-Guide</link>
				<description>
				
				&lt;a href=&quot;http://www.packtpub.com/tomcat-6-developers-guide/mid/211209mc5um2?utm_source=lynchconsulting.com.au&amp;utm_medium=affiliate&amp;utm_content=blog&amp;utm_campaign=mdb_001899&quot;&gt;&lt;img src=&quot;http://www.lynchconsulting.com.au/blog/enclosures/tomcat_6_developers_guide.jpg&quot; align=&quot;right&quot;&gt;&lt;/a&gt;

I&apos;ve just received a copy of the &lt;a href=&quot;http://www.packtpub.com/tomcat-6-developers-guide/mid/211209mc5um2?utm_source=lynchconsulting.com.au&amp;utm_medium=affiliate&amp;utm_content=blog&amp;utm_campaign=mdb_001899&quot;&gt;Tomcat 6 Developer&apos;s Guide&lt;/a&gt; from packt publishing to review.  

It&apos;s nice timing as I&apos;ve been working with Tomcat 6 a bit lately and in the new year plan to move some of our production systems over to running &lt;a href=&quot;http://www.getrailo.org&quot;&gt;Railo&lt;/a&gt; on top of &lt;a href=&quot;http://tomcat.apache.org/&quot;&gt;Tomcat&lt;/a&gt;.

After the extremely busy year Learnosity has had I&apos;m looking forward to reading a few books over the break and coming back in the New Year with lots more ideas and technology to implement.
				
				</description>
				
				<category>Systems admin</category>
				
				<category>Railo</category>
				
				<category>Open Source</category>
				
				<category>Java</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Mon, 21 Dec 2009 21:12:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/12/21/Upcoming-book-review--Tomcat-6-Developers-Guide</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Learnosity are looking for a Web Ninja at a Mid to Senior level</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/12/4/Learnosity-are-looking-for-a-Web-Ninja-at-a-Mid-to-Senior-level</link>
				<description>
				
				4 December 2009, Learnosity are looking for a Web Ninja at a Mid to Senior level.


&lt;h3&gt;About Learnosity&lt;/h3&gt;
Learnosity develop cutting edge tools for teachers and educators.  Our flagship product Learnosity Voice uses the telephone to enable language students and teachers to interact on a one to one level. 

&lt;img src=&quot;http://www.learnosity.com/wsimages/learnosity-logo-1.png&quot; align=&quot;right&quot;&gt;
Our service:
&lt;ul&gt;
&lt;li&gt;Makes it practical for students to practice Oral and Aural skills&lt;/li&gt;
&lt;li&gt;Is efficient and effective for teachers, as they can listen to each student individually at a time to suit them&lt;/li&gt;
&lt;li&gt;Can be used for homework assignments or “High Stakes Assessments”&lt;/li&gt;
&lt;/ul&gt;


We are continuing to grow our core development team and we need another great developer to help us keep up with demand.


&lt;h3&gt;We need someone who can:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use Javascript or Actionscript to create great user interfaces&lt;/li&gt;
&lt;li&gt;Develop highly scalable web applications&lt;/li&gt;
&lt;li&gt;Cut code with the best in the world&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;You will also need to be:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;energetic with a butt kicking attitude&lt;/li&gt;
&lt;li&gt;ready to create cutting edge web 2.0 apps&lt;/li&gt;
&lt;li&gt;keen to continue learning new technologies&lt;/li&gt;
&lt;li&gt;able to have a conversation with non technical people&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;You&apos;ll need:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;3 or more years of programming experience&lt;/li&gt;
&lt;li&gt;Expert in at least on Client side language (Actionscript or AJAX)&lt;/li&gt;
&lt;li&gt;Expert in at least one Server side language (eg PHP, Java, ColdFusion, etc)&lt;/li&gt;
&lt;li&gt;Understanding of Object Oriented design&lt;/li&gt;
&lt;li&gt;Understanding of XHTML and CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;It would be good if you have:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A degree in Computer Science, Engineering or similar.&lt;/li&gt;
&lt;li&gt;been working with open source tools&lt;/li&gt;
&lt;li&gt;been playing around with iPhone/Android applications&lt;/li&gt;
&lt;li&gt;experience with some of Linux/VOIP/SIP/Asterisk/Jabber/XMPP&lt;/li&gt;
&lt;/ul&gt;

This is a full time role and you will be working in a casual workplace with flexible hours in the Sydney CBD.

If this sounds like the job for you, email a covering letter explaining why you&apos;ll be great and your resume to mark@learnosity.com - no agencies please.
				
				</description>
				
				<category>PHP</category>
				
				<category>Open Source</category>
				
				<category>Linux</category>
				
				<category>Learnosity</category>
				
				<category>Jobs</category>
				
				<category>Javascript</category>
				
				<category>iPhone</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Fri, 04 Dec 2009 16:03:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/12/4/Learnosity-are-looking-for-a-Web-Ninja-at-a-Mid-to-Senior-level</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Normalising audio with sox</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/25/Normalising-audio-with-sox</link>
				<description>
				
				&lt;b&gt;Update - as of sox 14.3.0 it is much simpler than described below - simply do:  sox --norm before.wav after.wav &lt;/b&gt;

Seem to be on a roll with Sox tonight.  Also figured out how to normalise audio files nicely.

The first thing to do with sox is to get it to calculate the max volume adjustment possible:

&lt;img src=&quot;http://www.lynchconsulting.com.au/blog/enclosures/sox_normalize.png&quot; align=&quot;right&quot; alt=&quot;Audio waveform before and after Normalisation&quot;&gt;

&lt;code&gt;
sox before.wav -n stat -v 
&lt;/code&gt;

This will return a number like: 4.234

You can then call sox again using this number:
&lt;code&gt;
sox -v 4.234 before.wav after.wav
&lt;/code&gt;

And if you&apos;re feeling particularly good you can put the whole command on a single line as follows:

&lt;code&gt;
sox -v `sox before.wav -n stat -v 2&gt;&amp;1` before.wav after.wav
&lt;/code&gt;

Easy when you know how.
				
				</description>
				
				<category>Open Source</category>
				
				<category>Linux</category>
				
				<category>Asterisk</category>
				
				<pubDate>Wed, 25 Nov 2009 22:48:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/25/Normalising-audio-with-sox</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Removing silence from audio using sox</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/25/Removing-silence-from-audio-using-sox</link>
				<description>
				
				I&apos;ve had a look at this a few times before and each time I&apos;ve gotten a little bit further and then gotten frustrated and failed.

However, this time I finally managed to get past all the hurdles and jump through all the hoops to make this work.

&lt;img src=&quot;http://www.lynchconsulting.com.au/blog/enclosures/audacity_screenshot.png&quot; align=&quot;right&quot; alt=&quot;Audio before and after&quot;&gt;

Scenario is a follows.  Audio file is comes in in alaw or ulaw format and we want to trim any silence before and after it.


First step is to convert it from alaw to pcm encoded wav file &lt;a href=&quot;http://old.nabble.com/Empty-result-file-when-removing-silence-td23445456.html&quot;&gt;as SOX has issues filtering silence in alaw files&lt;/a&gt;
&lt;code&gt;
sox -t alaw in.alaw -c1 -2 -r8000 -e signed-integer temp.wav
&lt;/code&gt;

Then we do the trimming in one fell swoop.  
&lt;code&gt;
sox temp.wav out.wav silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse
&lt;/code&gt;

A huge thanks to this article for giving such a &lt;a href=&quot;http://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/&quot;&gt;thorough overview of the how silence detection works in sox&lt;/a&gt;.

Too easy, when you know how :-)
				
				</description>
				
				<category>Asterisk</category>
				
				<category>Linux</category>
				
				<category>Open Source</category>
				
				<category>Ubuntu</category>
				
				<pubDate>Wed, 25 Nov 2009 22:11:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/25/Removing-silence-from-audio-using-sox</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Chinese characters not working cfdocument for PDF exports - fixed</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/10/26/Chinese-characters-not-working-cfdocument-for-PDF-exports--fixed</link>
				<description>
				
				I&apos;ve just spent quite a few hours grappling with an annoying PDF export issue where the font&apos;s were not displaying correctly.  This is on a CFMX 7 (7.0.2) on Ubuntu Linux system.

All the DB storage and application was using UTF8 throughout, but the PDF exports were showing nothing when they should have been showing Chinese characters.

To fix this up you need to do the following:

&lt;h3&gt;1. Need fonts installed on system:&lt;/h3&gt;
&lt;code&gt;
sudo apt-get install ttf-arphic-bsmi00lp ttf-arphic-gbsn00lp
&lt;/code&gt;

&lt;h3&gt;2. Need fonts installed in CFAdmin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Go to CFAdmin and Font Management&lt;/li&gt;
&lt;li&gt;Select directory /usr/share/fonts/truetype/arphic&lt;/li&gt;
&lt;li&gt;Select &quot;Add&quot; and you should see 2 new fonts added.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;3: CFdocument Hotfix for CF7.0.2&lt;/h3&gt;
The CFDocument hotfix for 7.0.2 provides some essential fixes and makes this work - Follow the instructions to install: &lt;a href=&quot;http://kb2.adobe.com/cps/402/kb402093.html&quot;&gt;http://kb2.adobe.com/cps/402/kb402093.html&lt;/a&gt;

&lt;h3&gt;Configure cffont.properties file&lt;/h3&gt;
The final step is to set the cffont.properties file so that it will check additional font sets for any characters it doesn&apos;t know about - i.e. Chinese characters.  Each line in the file is like a CSS font-family rule, i.e. it will start at the left and look for the correct font to render the text.  I appended the two extra font names to ensure they are checked, so the file looks like this:

&lt;code&gt;
defaultbasefont=
dialog=Arial, Helvetica, AR PL SungtiL GB,AR PL Mingti2L Big5
dialog.bold=Arial Bold, Helvetica-Bold, AR PL SungtiL GB,AR PL Mingti2L Big5
dialog.italic=Arial Italic, Helvetica-Oblique, AR PL SungtiL GB, AR PL Mingti2L Big5
dialog.bolditalic=Arial Bold Italic, Helvetica-BoldOblique, AR PL SungtiL GB, AR PL Mingti2L Big5
dialoginput=Courier New, Courier, AR PL SungtiL GB, AR PL Mingti2L Big5
dialoginput.bold=Courier New Bold, Courier-Bold, AR PL SungtiL GB, AR PL Mingti2L Big5
dialoginput.italic=Courier New Italic, Courier-Oblique, AR PL SungtiL GB, AR PL Mingti2L Big5
dialoginput.bolditalic=Courier New Bold Italic, Courier-BoldOblique, AR PL SungtiL GB, AR PL Mingti2L Big5
serif=Times New Roman, Times-Roman, AR PL SungtiL GB, AR PL Mingti2L Big5
serif.bold=Times New Roman Bold, Times-Bold, AR PL SungtiL GB, AR PL Mingti2L Big5
serif.italic=Times New Roman Italic, Times-Italic, AR PL SungtiL GB, AR PL Mingti2L Big5
serif.bolditalic=Times New Roman Bold Italic, Times-BoldItalic, AR PL SungtiL GB, AR PL Mingti2L Big5
sansserif=Arial, Helvetica, AR PL SungtiL GB, AR PL Mingti2L Big5
sansserif.bold=Arial Bold, Helvetica-Bold, AR PL SungtiL GB, AR PL Mingti2L Big5
sansserif.italic=Arial Italic, Helvetica-Oblique, AR PL SungtiL GB, AR PL Mingti2L Big5
sansserif.bolditalic=Arial Bold Italic, Helvetica-BoldOblique, AR PL SungtiL GB, AR PL Mingti2L Big5
monospaced=Courier New, Courier, AR PL SungtiL GB, AR PL Mingti2L Big5
monospaced.bold=Courier New Bold, Courier-Bold, AR PL SungtiL GB, AR PL Mingti2L Big5
monospaced.italic=Courier New Italic, Courier-Oblique, AR PL SungtiL GB, AR PL Mingti2L Big5
monospaced.bolditalic=Courier New Bold Italic, Courier-BoldOblique, AR PL SungtiL GB, AR PL Mingti2L Big5
&lt;/code&gt;

The cffont.properties file is located in /opt/jrun4/servers/{instance name}/cfusion.ear/cfusion.war/WEB-INF/cfusion/lib on the jrun multiserver version.

&lt;h3&gt;5. Restart CF&lt;/h3&gt;

Once you restart CF you documents should be coming out with their Chinese fonts intact.

I&apos;m sure there are additional fonts to add to get it working natively with all the other asian languages, so I&apos;ll add to this as and when I need/discover them.  Please feel free to post a comment if you find any more font&apos;s that should be added to the list.
				
				</description>
				
				<category>ColdFusion</category>
				
				<category>Linux</category>
				
				<category>Open Source</category>
				
				<category>Railo</category>
				
				<category>Ubuntu</category>
				
				<pubDate>Mon, 26 Oct 2009 16:38:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/10/26/Chinese-characters-not-working-cfdocument-for-PDF-exports--fixed</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Two quick server tips</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/8/15/Two-quick-server-tips</link>
				<description>
				
				Here are two quick tips that I&apos;ve recently found for server admins:

&lt;ul&gt;
&lt;li&gt;Automatically fixing file system errors&lt;/li&gt;
&lt;li&gt;Ignoring directories from updatedb&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&lt;a name=&quot;auto&quot;&gt;&lt;/a&gt;Automatically fixing file system errors&lt;/h3&gt;

If you have a remote server, i.e. at a data center 10km or 1000km away this should prevent some panic when rebooting the server remotely.

Ext2/3 will do a filesystem check after a certain number of reboots or time.  Most of the time any errors are fixed automatically, but certain errors by default require the root shell and the administrator to fix them.  I&apos;ve seen a few of these happen, but I have always replied yes to the prompts as I don&apos;t know enough about file systems to fix it I said no.

So, to prevent the need to rush to a data center and plug in a keyboard and mouse just to press the &quot;Y&quot; key there is and option to automatically assume yes.

On Ubuntu in the file /etc/default/rcS you need to change the following:
&lt;code&gt;
FSCKFIX=no
to 
FSCKFIX=yes
&lt;/code&gt;


&lt;h3&gt;&lt;a name=&quot;ignore&quot;&gt;&lt;/a&gt;Ignoring directories from updatedb&lt;/h3&gt;
If you have a backup server you may not want it to update the locate db for all your backup files, as it can take a very long time.

To tell locate to ignore a directory you need to add it to the PRUNEPATHS line in the /etc/updatedb.conf file like so:

&lt;code&gt;
PRUNE_BIND_MOUNTS=&quot;yes&quot;
PRUNEPATHS=&quot;/tmp /var/spool /media /srv&quot;
PRUNEFS=&quot;NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf rpc_pipefs&quot;
&lt;/code&gt;

In the above code I have added the &lt;b&gt;/srv&lt;/b&gt; entry to make it ignore all my backups which are held under the /srv directory.

Note: These tips were tested on Ubuntu linux, other distributions will have similar functionality but the file locations may vary.

Cheers,
Mark
				
				</description>
				
				<category>Ubuntu</category>
				
				<category>Systems admin</category>
				
				<category>Open Source</category>
				
				<category>Linux</category>
				
				<category>HOWTO</category>
				
				<category>General</category>
				
				<pubDate>Sat, 15 Aug 2009 08:12:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/8/15/Two-quick-server-tips</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>HOWTO find files that are not world readable</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/5/18/HOWTO-find-files-that-are-not-world-readable</link>
				<description>
				
				I ran across some permissions errors on content that some users uploaded to a website.  The files uploaded were not world readable so were coming up as forbidden:

This simple find command shows the offending files:

&lt;code&gt;
/usr/bin/find . -type f ! -perm -004
&lt;/code&gt;

A quickie but a goodie.

Cheers,
Mark
				
				</description>
				
				<category>Linux</category>
				
				<category>Mac OSX</category>
				
				<category>Open Source</category>
				
				<category>Systems admin</category>
				
				<category>Ubuntu</category>
				
				<pubDate>Mon, 18 May 2009 21:47:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/5/18/HOWTO-find-files-that-are-not-world-readable</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>ColdFusion per vhosts mappings</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/5/6/ColdFusion-per-vhosts-mappings</link>
				<description>
				
				One of the features of CF8 that I was most interested in and most let down on was per application mappings.  The reason I was so keen was so that we could keep core library application files out of the webroot for additional security, but still have different versions of the same codebase.  I.e. some sites running farcry3 some running farcry5 for example.

This didn&apos;t transpire and so now we use the following technique on apache to map the folder in and then lock it down with apache.

In the vhost section add the following:
&lt;code&gt;
Alias /farcry /path/to/non-webfolder/farcry
&lt;Location /farcry/&gt;
    Order Deny,Allow
     Deny from all
&lt;/Location&gt; 
&lt;/code&gt;

Note: it is important that there is no /farcry mapping defined in the CF Administrator or it will override this setting.

What the above does, is to map in the non-web accessible folder, but then locking it down so it cannot be browsed from the web.  This seems pointless but CF can still see the files and correctly resolves the paths even though they are secure from the outside world.

This then allows us to version our sites independently - i.e. if we want to upgrade from farcry 5 to 5.1 we can do it one site at a time, instead of having to test them all at once.

Note - Railo already has per vhost mappings which solve the same problem as this.  But if you are on CF7 or CF8 then this works a treat.

Cheers,
Mark
				
				</description>
				
				<category>ColdFusion</category>
				
				<category>Open Source</category>
				
				<category>Systems admin</category>
				
				<pubDate>Wed, 06 May 2009 13:32:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/5/6/ColdFusion-per-vhosts-mappings</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>ExtendoText project on google code</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/4/8/ExtendoText-project-on-google-code</link>
				<description>
				
				We&apos;ve been busy squirrelling away on many projects and they are beginning to come to light:

One which is coming to light very early is a new text framework for actionscript which leverages flash 10 text engine.

It&apos;s very early alpha but is a good proof of concept and already solves some problems for us - namely the ability to simply create rich text area&apos;s that have superscript and subscript text.

It uses XML and CSS and completely seperates the formatting from the content.

&lt;img src=&quot;http://www.lynchconsulting.com.au/blog/enclosures/extendotext-0.1.png&quot; alt=&quot;Screenshot of extendotext 0.1&quot; align=&quot;right&quot; /&gt;

It can now:
&lt;ul&gt;
&lt;li&gt;Render a simple XML document&lt;/li&gt;
&lt;li&gt;Apply styles including color, font and opacity&lt;/li&gt;
&lt;li&gt;Plug in custom code for rendering images, video or any other XML tag you want to create.&lt;/li&gt;
&lt;/ul&gt;


The screenshot highlights a number of these features:
&lt;ul&gt;
&lt;li&gt;Bold, italic, super and subscript text&lt;/li&gt;
&lt;li&gt;Text wrapping around custom display classes (Red and Green boxes)&lt;/li&gt;
&lt;li&gt;Opacity applied to display objects (green box)&lt;/li&gt;
&lt;/ul&gt;

There is still a lot more to be done - including editing of text which is the next hard piece to knock over.

You can get it from &lt;a href=&quot;http://code.google.com/p/extendotext/&quot;&gt;the google code site&lt;/a&gt;

Keen to hear any feedback.

Cheers,
Mark
				
				</description>
				
				<category>Open Source</category>
				
				<category>Flex</category>
				
				<category>AIR</category>
				
				<category>Actionscript</category>
				
				<pubDate>Wed, 08 Apr 2009 09:09:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/4/8/ExtendoText-project-on-google-code</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>HOWTO generate diff files from subversion</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/3/3/HOWTO-generate-diff-files-from-subversion</link>
				<description>
				
				Here&apos;s a nice and quick way to generate a diff file from subversion and store it on your local machine. 

&lt;code&gt;
svn diff filepath/myFile.ext &gt; saveDirPath/myFile.ext.diff
&lt;/code&gt;

Where filePath is the local path to your working directory in which your file is located.  And saveDirPath is the path where you want to save your diff file.

Diff files can be very useful when contributing to open source projects.

You can also get a &lt;a href=&quot;http://www.lynchconsulting.com.au/blog/index.cfm/2009/1/16/SVN--Get-list-of-files-changed-between-revisions&quot;&gt;list of files changed between revisions&lt;/a&gt;.

Marko
				
				</description>
				
				<category>HOWTO</category>
				
				<category>General</category>
				
				<category>Open Source</category>
				
				<category>Systems admin</category>
				
				<pubDate>Tue, 03 Mar 2009 11:46:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/3/3/HOWTO-generate-diff-files-from-subversion</guid>
				
			</item>
			
		 	
			</channel></rss>