<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-6524741362581356371</atom:id><lastBuildDate>Fri, 09 Sep 2011 08:10:59 +0000</lastBuildDate><title>My E-Health Technology Blog</title><description>You need Healthcare, Healthcare needs you ;-)</description><link>http://hl7australia.blogspot.com/</link><managingEditor>noreply@blogger.com (Kenneth)</managingEditor><generator>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-2251114623097029058</guid><pubDate>Thu, 08 Sep 2011 05:36:00 +0000</pubDate><atom:updated>2011-09-09T09:45:50.571+10:00</atom:updated><title>[RESOLVED] Slow Windows 7 Guest VM after upgrade to SP1</title><description>VMware has pointed out that VMware Workstation prior to version 7.1.4 is known to have problem with Windows 7 Host upgraded to Service Pack 1 (SP1).&lt;br /&gt;
&lt;br /&gt;
So, what about Windows 7 Guest VM equipped with SP1? I have my PC installed VMware 7.1.3 which only allows the administrator to perform any upgrade on it. Thanks to the company policy.&lt;br /&gt;
&lt;br /&gt;
After the upgrade of Guest VM to SP1, Guest VM nearly caused the system to hang for minutes to do simple tasks and a high CPU usage at all time. People blamed on VMware's memory optimization feature which is enabled by default to optimize Guest VM memory consumption.&lt;br /&gt;
&lt;br /&gt;
Temporary solution would be adding the following line into &lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;config.ini&lt;/span&gt;&lt;/b&gt; file located at&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;C:\ProgramData\VMware\VMware Workstation&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;vmmon.disableHostParameters = TRUE&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This turns off VM memory optimization feature and some other possible host configurable features. 

After saving the change onto config.ini file, a clean reboot on hosting system is recommended.&lt;br /&gt;
&lt;br /&gt;
Now, your favourite Win7 SP1 Guest VM should be back on track with presumably high performance.&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;amp;cmd=displayKC&amp;amp;externalId=1036185" target="_blank"&gt;http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;amp;cmd=displayKC&amp;amp;externalId=1036185&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-2251114623097029058?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/09/slow-windows-7-guest-vm-after-upgrade.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-2952389431095342025</guid><pubDate>Fri, 05 Aug 2011 07:38:00 +0000</pubDate><atom:updated>2011-08-05T17:43:57.354+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Fedora yum update slow symptom</category><title>Fedora yum update slow symptom</title><description>I have my netbook installed with Fedora 14 which has been fine-tuned to have better wide-screen display driver, faster start-up and so on. Finally, it takes me more than an hour to do the first "yum update" process which should be finished in 10 minutes in Ubuntu Netbook edition.&lt;br /&gt;
&lt;br /&gt;
People suggest using a yum plugin called fastestmirror:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$
$su -c 'yum install yum-plugin-fastestmirror'
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
After the installation, it does not really help to boost up the download speed. It is suspected that it takes slow mirror sites for downloading.&lt;br /&gt;
&lt;br /&gt;
Digging into the details of /etc/yum/pluginconf.d/fastestmirror.conf, I found one useful option called "include_only". And then I uncomment one line and change it to:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#
include_only=mirror.aarnet.edu.au
&lt;/pre&gt;&lt;br /&gt;
AARNET supposed to be fastest mirror in Australia, so you might want to add your fastest mirror in your own country.&lt;br /&gt;
&lt;br /&gt;
Before executing yum update, it is better to remove the cache file timedhosts.txt which was used for time checking from previous actions:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$
$su -c 'rm /var/cache/yum/i386/14/timedhosts.txt'
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Now, run:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$
$su -c 'yum update'
&lt;/pre&gt;&lt;br /&gt;
You should be able to pull things from the repository mirror at top speed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-2952389431095342025?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/08/fedora-yum-update-slow-symptom.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-5423326966118265212</guid><pubDate>Fri, 05 Aug 2011 06:56:00 +0000</pubDate><atom:updated>2011-08-05T16:56:12.951+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>RBAC Apache central autentication webapp</category><title>RBAC, pitfall or challenge?</title><description>A funny meeting has been held a few days ago while a topic has raised clinical researcher's interest in making good clinical software by using proper role based access control model. It seems to me that RBAC model has been a traditional topic among university students in CS Faculty. It could be a never-ending story when people are trying to find a way to create a generic model for general clinical applications.&lt;br /&gt;
&lt;br /&gt;
When talking about managing tons of various e-health projects, people are always excited in finding an ultimate way to replicate existing model and turn it into a new one. This seems to be a revolution. They might imagine there should be plug-in available for all those web projects they have been working on. A gadget like this might cause those developers to&amp;nbsp;scratch the hairs out of their heads.&amp;nbsp;People might call it generic authentication module or generic adapter for user authentication.&lt;br /&gt;
&lt;br /&gt;
On typical Active Directory based authentication model, local users are authenticated against a central AD server within the domain. How can we apply similar concept of this to make it working among various clinical applications?&lt;br /&gt;
&lt;br /&gt;
We may see those applications as middle clients who need to authenticate the down-stream users for giving out access right and assigning user privilege. The central authentication module can be simply a database instance which stores all those user privileges and functional access rights while the popular webapps hosting on Apache server can make use of the database for central authentication. Different webapps will need different set of data tables to uniquely identify a user particularly for them. The good thing is that we can manage the authentication module at a central location while all other webapps will need to contact this module to collect necessary information for authentication and assigning proper access right to all kinds of features and functions provided locally in the webapps.&lt;br /&gt;
&lt;br /&gt;
I can only tell this is not a new concept but people will realize the convenience of constructing new web projects with an easy way to incorporate user authentication from a third-party database server. Furthermore, we can construct API to bridge those applications developed on Java, C# or Python. This makes me aware of the term called "User Master Index". Similar to managing those patient records, it is more likely for the developers to construct something like "Patient Master Index". They serve the same purpose for a central management of user/patient identity which would be sharing among the applications. Also, the process of constructing the webapps becomes much more efficient.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-5423326966118265212?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/08/rbac-pitfall-or-challenge.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-481999351907226330</guid><pubDate>Fri, 22 Jul 2011 06:01:00 +0000</pubDate><atom:updated>2011-07-22T16:02:30.627+10:00</atom:updated><title>Solution to CIFS mount failure</title><description>Once the OS is upgraded to Ubuntu 9.10, the network drive mounted in CIFS type is no longer working again.&lt;br /&gt;
&lt;br /&gt;
Trying to tackle the issue by the following command:&lt;br /&gt;
&lt;pre class="brush:bash"&gt;..
CIFS VFS: cifs_mount failed w/return code = -22
&lt;/pre&gt;&lt;br /&gt;
In a Google search, one &lt;a href="http://obdit.com/pad/2009/12/05/solution-to-cifs_mount-failed-wreturn-code-22/" target="_blank"&gt;post &lt;/a&gt;has been found useful.&lt;br /&gt;
&lt;br /&gt;
Re-installing smbfs package again solves this problem:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:bash"&gt;..
$ sudo apt-fast install smbfs
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-481999351907226330?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/07/solution-to-cifs-mount-failure.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-2456438874437464010</guid><pubDate>Fri, 15 Jul 2011 05:02:00 +0000</pubDate><atom:updated>2011-07-15T15:13:38.284+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Ubuntu Jaunty 9.04 old-releases package repository</category><title>Ubuntu Jaunty 9.04 old package repository</title><description>Ubuntu release Jaunty 9.04 has been deprecated while the repository is completely taken off from the mirror server and Ubuntu server as well. Since missing on the repository servers, this repository is being hunted by the users who stick to this particular release for a long time. For people who might have forgotten to upgrade the OS on their own, this could be a bad news. That means no more package available could be installed, via regular way.&lt;br /&gt;
&lt;br /&gt;
To port the old release repository for maintenance and last minute update, a &lt;a href="http://ubuntuforums.org/showthread.php?t=1720421"&gt;post &lt;/a&gt;on the forum points to an interesting location:&lt;br /&gt;
&lt;br /&gt;
http://old-releases.ubuntu.com/&lt;br /&gt;
&lt;br /&gt;
which stores all those obsolete releases of Ubuntu repositories including Jaunty 9.04. However, this requires some changes in sources.list file for proper redirection.&lt;br /&gt;
&lt;br /&gt;
Open /etc/apt/sources.list and edit as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:shell"&gt;#
# deb cdrom:[Ubuntu-Server 9.04 _Jaunty Jackalope_ - Release i386 (20090421.1)]/ jaunty main restricted

# deb cdrom:[Ubuntu-Server 9.04 _Jaunty Jackalope_ - Release i386 (20090421.1)]/ jaunty main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

#deb http://mirror.aarnet.edu.au/pub/ubuntu/archive/ jaunty main restricted
#deb-src http://mirror.aarnet.edu.au/pub/ubuntu/archive/ jaunty main restricted
deb http://old-releases.ubuntu.com/ubuntu/ jaunty main restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty main restricted


## Major bug fix updates produced after the final release of the
## distribution.

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
#deb http://mirror.aarnet.edu.au/pub/ubuntu/archive/ jaunty universe
#deb-src http://mirror.aarnet.edu.au/pub/ubuntu/archive/ jaunty universe
deb http://old-releases.ubuntu.com/ubuntu/ jaunty universe
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
#deb http://mirror.aarnet.edu.au/pub/ubuntu/archive/ jaunty multiverse
#deb-src http://mirror.aarnet.edu.au/pub/ubuntu/archive/ jaunty multiverse
deb http://old-releases.ubuntu.com/ubuntu/ jaunty multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://us.archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu jaunty partner
# deb-src http://archive.canonical.com/ubuntu jaunty partner

#deb http://security.ubuntu.com/ubuntu/ jaunty-security restricted main multiverse universe
#deb http://mirror.aarnet.edu.au/pub/ubuntu/archive/ jaunty-updates restricted main multiverse universe
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-security restricted main multiverse universe
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-updates restricted main multiverse universe
&lt;/pre&gt;&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
After that, you may try the following to check if you can checkout the updates correctly:&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$
$ sudo apt-get update
&lt;/pre&gt;&lt;br /&gt;
You may now install those missing packages previously supported in Ubuntu release 9.04 before you decide to upgrade to a newer but still obsolete release 9.10.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-2456438874437464010?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/07/ubuntu-jaunty-904-old-package.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-827746438899416338</guid><pubDate>Sat, 09 Jul 2011 00:58:00 +0000</pubDate><atom:updated>2011-07-09T11:10:04.740+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Ubuntu Upgrade from 9.04 to 10.04 CD</category><title>Ubuntu Upgrade from 9.04 to 10.04 - a CD/DVD way</title><description>Something interested is found from &lt;a href="http://askubuntu.com/questions/47807/how-do-i-upgrade-from-9-04-to-10-04-2"&gt;the post&lt;/a&gt; about the way to upgrade Ubuntu 9.04&amp;nbsp;subsequently&amp;nbsp;to 9.10 and then to 10.04. The method involves performing Ubuntu upgrade by using an ISO image of Ubuntu 9.10 downloaded from the repository server.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Upgrading Using the Alternate CD/DVD&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Download the alternate installation CD via:&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$
$ sudo wget http://mirror.aarnet.edu.au/pub/ubuntu/releases/9.10/ubuntu-9.10-alternate-i386.iso
&lt;/pre&gt;&lt;br /&gt;
Burn the ISO to a CD and insert it into the CD-ROM drive of the computer to be upgraded.&lt;br /&gt;
&lt;br /&gt;
If the ISO file is on the computer to be upgraded, you could avoid wasting a CD by mounting the ISO as a drive with a command like:&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$
$ sudo mount -o loop ~/Desktop/ubuntu-9.10-alternate-i386.iso /media/cdrom0
&lt;/pre&gt;&lt;br /&gt;
A dialog will be displayed offering you the opportunity to upgrade using that CD.&lt;br /&gt;
&lt;br /&gt;
Follow the on-screen instructions.&lt;br /&gt;
If the upgrade dialog is not displayed for any reason, you may also run the following command using Alt+F2:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$
$ gksu "sh /media/cdrom0/cdromupgrade"
&lt;/pre&gt;&lt;br /&gt;
After an upgrade to Ubuntu 9.10 is successfully completed, another wave of upgrade to 10.04 can be done through GUI update manager.&lt;br /&gt;
&lt;br /&gt;
Ref: https://help.ubuntu.com/community/KarmicUpgrades&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-827746438899416338?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/07/ubuntu-upgrade-from-904-to-1004-cddvd.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-4286928035807991682</guid><pubDate>Sun, 19 Jun 2011 01:29:00 +0000</pubDate><atom:updated>2011-06-19T11:38:44.433+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Aspire ONE (Model 0751H) GMA500 widescreen display setup on Fedora 14</category><title>Aspire ONE (Model 0751H) GMA500 widescreen display setup on Fedora 14</title><description>Before installation of the problematic Poulsbo driver on Ferdora 14 (freshly installed), please try the followings first:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$ su -c 'yum clean all'
$ su -c 'yum update'
&lt;/pre&gt;&lt;br /&gt;
Reboot to let the updated kernel running.&lt;br /&gt;
&lt;br /&gt;
Install rpmfusion free and non-free repositories rpms:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$ su -c 'yum localinstall --nogpgcheck \
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'
&lt;/pre&gt;&lt;br /&gt;
Thanks to AdamW's articles, the correct steps are listed here:&lt;br /&gt;
&lt;br /&gt;
To install Poulsbo driver:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$ su -c 'yum –enablerepo=rpmfusion-nonfree-updates-testing \
install xorg-x11-drv-psb'

To fix the problem of missing psb.ko for whatever updated kernel:

$ su -c'yum –enablerepo=rpmfusion-nonfree-updates-testing \
install akmod-psb'
&lt;/pre&gt;&lt;br /&gt;
Reboot to take effect for widescreen display.&lt;br /&gt;
&lt;br /&gt;
Optimize the following sections in /etc/X11/xorg.conf:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:bash"&gt;Section "Device"
Identifier  "Videocard0"
Driver      "psb"
Option      "IgnoreACPI"
Option      "MigrationHeuristic" "greedy"
Option      "ShadowFB" "true"
EndSection

Section "Extensions"
Option     "Composite" "Enable"
EndSection

Section "Screen"
Identifier "screen1"
Device "Videocard0"
DefaultColorDepth 24
EndSection

Section "DRI"
Mode 0666
EndSection
&lt;/pre&gt;&lt;br /&gt;
Edit /etc/grub.conf as follows:&lt;br /&gt;
&lt;br /&gt;
Add the following parameters to the end of line of kernel command:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:bash"&gt;elevator=noop mem=896m acpi_osi=Linux acpi_backlight=vendor
&lt;/pre&gt;&lt;br /&gt;
Reboot and see if the system performance is improved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-4286928035807991682?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/06/aspire-one-model-0751h-gma500.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-6711712343060864662</guid><pubDate>Fri, 17 Jun 2011 01:56:00 +0000</pubDate><atom:updated>2011-06-17T12:03:23.337+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Scientific Linux RedHat Enterprise Linux 6 RHEL6 SL6 open source</category><title>An Open Source version of RedHat Enterprise Linux</title><description>I have been looking for other alternatives which mimics or offers free version of Enterprise OS like RedHat Enterprise Linux. Two of them have been found so far, like CentOS and Scientific Linux.&lt;br /&gt;
&lt;br /&gt;
RHEL6 has been released for a while but CentOS didn't quite catch up with the latest version of RHEL, so I turned to use Scientific Linux which has version 6 now. Also, the fancy of SL6 may be due to its support by famous national laboratories around the world, such as &lt;span class="link-external"&gt;&lt;a href="http://www.fnal.gov/" target="_blank"&gt;Fermilab&lt;/a&gt;&lt;/span&gt; and &lt;span class="link-external"&gt;&lt;a href="http://www.cern.ch/" target="_blank"&gt;CERN&lt;/a&gt;&lt;/span&gt;. These labs are working on high energy physics and make use of SL6 inside their IT infrastructure.&lt;br /&gt;
&lt;br /&gt;
SL6 is actually rebuilt from the source RPMs of RHEL6. People are working on security fixes and put them upstream back to RedHat repository. This makes SL6 binary compatible with RHEL6. Now I use SL6 on my Aspire ONE netbook as well.&lt;br /&gt;
&lt;br /&gt;
The good thing that I have experienced is the high quality of software packages as compared with other open source edition of Linux which may crash and make your system useless in some occasions. You may not obtain the latest update in time but the stability and reliability offered by typical enterprise class system is certain.&lt;br /&gt;
Although "Scientific" is not a cool name to me, it is surely a good choice of enterprise class OS in production environment.&lt;br /&gt;
&lt;br /&gt;
Site reference:&lt;br /&gt;
http://www.scientificlinux.org/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-6711712343060864662?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/06/open-source-version-of-redhat.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-2716088051763277427</guid><pubDate>Wed, 01 Jun 2011 04:51:00 +0000</pubDate><atom:updated>2011-06-01T14:55:48.219+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>User Privileges for MySQL administration and automation mysqldump mysqladmin</category><title>User Privileges for MySQL administration and automation</title><description>To automate MySQL administration like using auto backup script, the user privileges play an important role on how MySQL server to be control with enough security measures to prevent mis-using such user role.&lt;br /&gt;
&lt;br /&gt;
Assuming "mysqldump" and "mysqladmin" are going to be used in such automation, the following privileges should be clearly identified and applied to a particular user role for successful MySQL administration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;SUPER&lt;/li&gt;
&lt;li&gt;SELECT&lt;/li&gt;
&lt;li&gt;SHOW DATABASES&lt;/li&gt;
&lt;li&gt;SHOW VIEW&lt;/li&gt;
&lt;li&gt;LOCK TABLES&lt;/li&gt;
&lt;li&gt;RELOAD&lt;/li&gt;
&lt;li&gt;SHUTDOWN&lt;/li&gt;
&lt;li&gt;PROCESS&lt;/li&gt;
&lt;li&gt;REPLICATION SLAVE&lt;/li&gt;
&lt;li&gt;REPLICATION CLIENT&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Example of assigning privileges:&lt;br /&gt;
&lt;pre class="brush:bash"&gt;&gt;c:\xampp\mysql\bin\mysql –u –p –-port=3306
Enter password: ************

mysql&gt;CREATE USER ‘replica’@’localhost’ IDENTIFIED BY ‘password’;
mysql&gt;GRANT REPLICATION SLAVE ON *.* TO ‘replica’@’localhost’;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
For details of particular privilege, please refer to the manual page:&lt;br /&gt;
&lt;a target="_blank" href="http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html"&gt;http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-2716088051763277427?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/06/user-privileges-for-mysql.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-7192676235667658211</guid><pubDate>Wed, 01 Jun 2011 02:55:00 +0000</pubDate><atom:updated>2011-06-01T13:17:11.499+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>EXT3 EXT4 conversion Ubuntu encrypted partition</category><title>Converting EXT3 partition into EXT4 on Ubuntu</title><description>EXT4 type partition is the successor of EXT3, but it may not be turned on by default installation. Indeed, EXT4 driver is backward compatible with EXT3/EXT2 partition. The conversion from EXT3 to EXT4 partition is straight forward.&lt;br /&gt;
&lt;br /&gt;
Please backup important data and software you have been using on Ubuntu Linux. &lt;br /&gt;
&lt;br /&gt;
BEFORE DOING ANYTHING, PLEASE SHUTDOWN ALL LAMPP RELATED PROCESSES:&lt;br /&gt;
&lt;pre class="brush:bash;gutter:false"&gt;$ sudo /opt/lampp/lampp stop
&lt;/pre&gt;To switch the existing Ext3 file system to the new Ext4 driver, it is necessary to edit a configuration called "fstab":&lt;br /&gt;
&lt;pre class="brush:bash;gutter:false"&gt;$ sudo nano /etc/fstab
&lt;/pre&gt;Look for ext3 on the line that defines your disk and change it to ext4.&lt;br /&gt;
&lt;br /&gt;
To ensure the right device to be converted, you may check the name of the device by issuing the following command:&lt;br /&gt;
&lt;pre class="brush:bash;gutter:false"&gt;$ df -h
&lt;/pre&gt;&lt;br /&gt;
Make a note of the device as you will need it in the next step. In the example above, the device for the encrypted partition is "/dev/mapper/encrypted".&lt;br /&gt;
&lt;br /&gt;
Next reboot your system. This is required so that you switch to the Ext4 Kernel driver. Do not continue without rebooting first. &lt;br /&gt;
&lt;br /&gt;
Enable Ext4 features:&lt;br /&gt;
&lt;pre class="brush:bash;gutter:false"&gt;$ sudo tune2fs -O extents,uninit_bg,dir_index /dev/mapper/encrypted
&lt;/pre&gt;WARNING: Once you run this command, the filesystem will no longer be mountable using the ext3 filesystem!&lt;br /&gt;
&lt;br /&gt;
After running this command (specifically, after setting the uninit_bg parameter), it is also important to run fsck to fix up some on-disk structures that tune2fs has modified:&lt;br /&gt;
&lt;pre class="brush:bash;gutter:false"&gt;$ e2fsck -yfDC0 /dev/mapper/encrypted
&lt;/pre&gt;Notes:&lt;br /&gt;
&lt;br /&gt;
Running fsck will complain about "One or more block group descriptor checksums are invalid" - this is expected and one of the reasons why tune2fs requests to fsck.&lt;br /&gt;
By enabling the extents feature new files will be created in extents format, but this will not convert existing files to use extents. Non-extent files can be transparently read and written by Ext4.&lt;br /&gt;
If you convert your root filesystem ("/") to ext4, and you use the GRUB boot loader, you will need to install a version of GRUB which understands ext4. Your system may boot OK the first time, but when your kernel is upgraded, it will become unbootable (press Alt+F+F to check the filesystem).&lt;br /&gt;
If you do the conversion for the root fs on a live system you'll have to reboot for fsck to run safely. You might also need to add rootfstype=ext4 to the kernel's command line so the partition is not mounted as ext3.&lt;br /&gt;
&lt;br /&gt;
WARNING: &lt;br /&gt;
It is NOT recommended to resize the inodes using resize2fs with e2fsprogs 1.41.0 or later, as this is known to corrupt some filesystems.&lt;br /&gt;
If you omit "uninit_bg" on the tunefs command, you can skip the fsck step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-7192676235667658211?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/06/converting-existing-ext3-partition-into.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-5376503456158993811</guid><pubDate>Wed, 01 Jun 2011 02:28:00 +0000</pubDate><atom:updated>2011-06-01T13:17:49.698+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>open-vm-tools Open VM Tools Ubuntu install apt-get</category><title>Installing open-vm-tools on Ubuntu Guest VM</title><description>To help boost the performance of Ubuntu Guest VM, it is recommended to install VMware tools. The problem is it may not fully compatible with various release of Ubuntu. Ubuntu do have their own repository of Open VM tools for use. So, why not have a try on it? &lt;br /&gt;
&lt;br /&gt;
Installing open-vm-tools from Ubuntu repository:&lt;br /&gt;
&lt;br /&gt;
The VMware tools are part of open-vm-tools. Make sure that the "multiverse" repository is enabled and do:&lt;br /&gt;
&lt;br /&gt;
Install kernel headers so modules will work &lt;br /&gt;
We need this on a 10.04 guest running in a Fusion 3 host&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$ apt-get install linux-headers-virtual
&lt;/pre&gt;Install kernel modules&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$ apt-get install --no-install-recommends open-vm-dkms
&lt;/pre&gt;EITHER: install tools for an xorg install&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$ apt-get install open-vm-tools
&lt;/pre&gt;OR: a headless install&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$ apt-get install --no-install-recommends open-vm-tools
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-5376503456158993811?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/06/installing-open-vm-tools-on-ubuntu.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-2244389057595333093</guid><pubDate>Wed, 01 Jun 2011 01:28:00 +0000</pubDate><atom:updated>2011-06-01T13:18:40.440+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Direct Upgrade Ubuntu from 9.04 to 9.10</category><title>Direct Upgrade Ubuntu from 9.04 to 9.10</title><description>Ubuntu upgrade from 9.04 to 9.10 can never be easy like this:&lt;br /&gt;
&lt;br /&gt;
Before the actions, it is essential to backup any running database and web server for disaster recovery and then turn them off completely.&lt;br /&gt;
&lt;br /&gt;
You can easily upgrade over the network with the following procedure.&lt;br /&gt;
&lt;br /&gt;
1.    Start System/Administration/Update Manager&lt;br /&gt;
&lt;br /&gt;
2.    Click the Check button to check for new updates.&lt;br /&gt;
&lt;br /&gt;
3.    If there are any updates to install, use the Install Updates button to install them, and press Check again after that is complete.&lt;br /&gt;
&lt;br /&gt;
4.    A message will appear informing you of the availability of the new release.&lt;br /&gt;
&lt;br /&gt;
5.    Click Upgrade.&lt;br /&gt;
&lt;br /&gt;
6.    Follow the on-screen instructions. &lt;br /&gt;
&lt;br /&gt;
Finally, reboot the system and see all changes.&lt;br /&gt;
&lt;br /&gt;
There was compatibility issue regarding XAMPP package since people complained they couldn't get XAMPP based server startup after the reboot. In my case, it did happen before. In recent trial of GUI upgrade directly from Ubuntu Update Manager, the problem seems to be solved. I have even got another notice from Update Manager about Ubuntu upgrade to version 10.04 as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-2244389057595333093?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/06/direct-upgrade-from-904-to-910.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-224435385495352526</guid><pubDate>Tue, 31 May 2011 05:55:00 +0000</pubDate><atom:updated>2011-06-01T15:14:54.041+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Resync Resynchronization MySQL Master Slave fixed replication broken</category><title>Resync MySQL Slave with Master</title><description>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;For various kinds of reasons, it is not unusual to find MySQL Slave instance in a broken state during the replication. The quick fix requires a perfect database backup of Master instance. From the backup file, two parameters must be extracted for restoration of data onto Slave Server:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;bin-log&lt;/span&gt;&lt;/b&gt;&amp;nbsp;filename: &lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MASTER_LOG_FILE&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;bin-log&lt;/span&gt;&lt;/b&gt;&amp;nbsp;position: &lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MASTER_LOG_POS&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Of course, the overall system performance may be affected during the backup operation. However,&amp;nbsp;MySQL Master server can be kept running as normal without any interruption.&lt;br /&gt;
&lt;br /&gt;
You may find it difficult to find all the switches required for a successful online backup operation. Fortunately, an example is here.&lt;br /&gt;
&lt;br /&gt;
Before anything happens, you'll find it easier to manage all those by opening two separate terminal consoles for both Master and Slave instances.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Terminal console for Master server:&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The following command (recommended to run under “sudo –s” environment) will dump all databases on Master instance:&lt;/div&gt;&lt;pre class="brush: bash"&gt;$ mysqldump -uroot -p&amp;nbsp;\&lt;/pre&gt;&lt;pre class="brush: bash"&gt;-S&amp;nbsp;/etc/mysql/mysql.sock&amp;nbsp;\
--master-data --hex-blob --opt --single-transaction&amp;nbsp;\
--comments --dump-date --no-autocommit&amp;nbsp;\
--all-databases &amp;gt; target_backup.sql
&lt;/pre&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
Please make sure the path of socket file of MySQL Master server is correct.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
With “--master-data” switch, Mysqldump program will make a comment for the bin-log filename and position which can be really useful for resynchronization afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;With “--single-transaction” switch, a global lock is acquired for a very short time at the beginning of the dump while any action on logs happens at the exact moment of the dump.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;With “--hex-blob” switch, image data with BLOB type can be well preserved inside the backup without any disruption.&lt;br /&gt;
&lt;br /&gt;
Once finished, you'll get a perfect backup file from MySQL Master server named &lt;b&gt;"target_backup.sql".&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Terminal console for Slave server:&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Now, it is time to put the data onto MySQL Slave server. Please beware that the socket file used here becomes &lt;b&gt;“/etc/mysql2/mysql2.sock”&lt;/b&gt;. Don’t it mix up with that of Master instance.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre class="brush: bash"&gt;$ mysql -uroot -p -S /etc/mysql2/mysql2.sock &amp;lt; target_backup.sql
&lt;/pre&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Now, login to MySQL Slave server:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;pre class="brush: bash"&gt;$ mysql –root –p –S /etc/mysql2/mysql2.sock
&lt;/pre&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Please check if MySQL user role named “slaveuser” with “replication” privileges does exist on Slave server.&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
Then, execute the following commands to resynchronize Slave server:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;pre class="brush: sql"&gt;mysql&amp;gt; STOP SLAVE;
mysql&amp;gt; RESET SLAVE;
mysql&amp;gt; CHANGE MASTER TO MASTER_HOST=’localhost’,
&amp;gt;MASTER_PORT=3306,
&amp;gt;MASTER_USER=’slaveuser’,
&amp;gt;MASTER_PASSWORD=’XXXXXXXX’,
&amp;gt;MASTER_LOG_FILE=’mysql-bin.XXXXXXXX’,
&amp;gt;MASTER_LOG_POS=XXXXX
&amp;gt;;
mysql&amp;gt; START SLAVE;
&lt;/pre&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;For the corresponding values of MASTER_LOG_FILE and MASTER_LOG_POS, please read through the heading comments inside “target_backup.sql” file.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;To check the status, please issue the following command:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre class="brush: bash"&gt;mysql&amp;gt; SHOW SLAVE STATUS;
&lt;/pre&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;It is useful to check the error log of MySQL Slave server to confirm whether everything is back on track.&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/6524741362581356371-224435385495352526?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/05/resync-mysql-slave.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-3144774722080826443</guid><pubDate>Thu, 26 May 2011 03:57:00 +0000</pubDate><atom:updated>2011-05-26T14:06:58.123+10:00</atom:updated><title>CeBIT Australia 2011</title><description>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://1.bp.blogspot.com/-FoK62zty3MY/Td3QOIOWxhI/AAAAAAAADyg/GR_6dpKpilc/s1600/cebit.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="62px" src="http://1.bp.blogspot.com/-FoK62zty3MY/Td3QOIOWxhI/AAAAAAAADyg/GR_6dpKpilc/s320/cebit.png" t8="true" width="320px" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;CeBIT 2011 is going to be held&amp;nbsp;between 31 May 2011 and 2 June 2011.&amp;nbsp;Both Technology Enthusiasts and Government Sectors are involved in this biggest event&amp;nbsp;near Darling Harbour in Sydney. As I can imagine how many people will be there since last CeBIT event, it is definitely a good chance to meet&amp;nbsp;top technologists and&amp;nbsp;also listen to&amp;nbsp;Julia about&amp;nbsp;the new progress of the big plan&amp;nbsp;for National Broadband Network.&lt;/div&gt;&lt;br /&gt;
&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Apart fromt the exhibition itself, there are upcoming hot topics to be discussed in the conferences. Major events include:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;NBN&amp;nbsp;Conference&lt;/li&gt;
&lt;li&gt;Cloud Computing Conference&lt;/li&gt;
&lt;li&gt;eGovernment Forum&lt;/li&gt;
&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;eHealth Conference&lt;/li&gt;
&lt;li&gt;Executive Briefing&lt;/li&gt;
&lt;li&gt;Retail Conference&lt;/li&gt;
&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;WebForward Conference&lt;/li&gt;
&lt;/ul&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&amp;nbsp;Can't wait to be there and hopefully see you in&amp;nbsp;the exhibition! &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6mKTxowsHAY/Td3Rtvu7mqI/AAAAAAAADyk/Vb8wzS1-Q1w/s1600/cebit2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213px" src="http://2.bp.blogspot.com/-6mKTxowsHAY/Td3Rtvu7mqI/AAAAAAAADyk/Vb8wzS1-Q1w/s320/cebit2.png" t8="true" width="320px" /&gt;&lt;/a&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/6524741362581356371-3144774722080826443?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/05/cebit-australia.html</link><author>noreply@blogger.com (Kenneth)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-FoK62zty3MY/Td3QOIOWxhI/AAAAAAAADyg/GR_6dpKpilc/s72-c/cebit.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-6650981105960482950</guid><pubDate>Sun, 22 May 2011 03:28:00 +0000</pubDate><atom:updated>2011-05-23T10:19:40.618+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>IE6 internet explorer PDF opening on the fly blank page HTTPS</category><title>PHP PDF generating over HTTPS issue on IE6 with blank page returned [REALLY SOVLED]</title><description>This is really a typical question raised at all time about mysterious IE6 PDF opening issue over HTTPS connection:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How can we successfully output PDF dynamically via HTTPS connection on various browser including IE6?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Whatever server-side language you use, you may encounter this yourself once or more in your life. As people trying to find a definite reason for this, it seems to be more than one anyway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Say, using PHP, people encourage to add appropriate headers to make PDF stream opening on the fly directly in IE6 browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php"&gt;//size_of_stream is counted by bytes
//Display pdf text stream direct on the browser (IE bug fixed!)
//by setting the content-type


header("HTTP/1.1 200 OK");
header("Status: 200 OK");
header("Accept-Ranges: bytes");
header("Connection: Keep-Alive");


//Comment out for debugging purposes
//header("Cache-Control: public");
//Try setting 1 delta second for caching long enough for Adobe Addon to load PDF content
header("Cache-Control: public, max-age=1");
//Only need to specify User-Agent in Vary header as IE7 only accept that
//Default Vary header value is not welcomed at all
//Fixing IE7 bug for Vary header
header("Vary: User-Agent");
header('Pragma: public');
if (!is_null($size_of_stream)){header("Content-Length: ". $size_of_stream);}
header("Content-Type: application/pdf");
header('Content-Disposition: inline; filename="whatever.pdf"');
header("Content-Transfer-Encoding: binary\n");
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
This is almost true in many cases, including all the popular browsers like Firefox, Safari and Chrome. Yet there is still exception that PDF may not open properly on IE6, especially for small sized PDF stream.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Searching around for any server-side solution, it was really disappointed in terms of support of Internet Explorer 6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, I have a glimpse on a comment posted in the other forum which seems to work on almost any case with major version of Internet Explorer:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In Internet Explorer&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Select&amp;nbsp;&lt;b&gt;Tools&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Click&amp;nbsp;&lt;b&gt;Internet Options&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Select the&amp;nbsp;&lt;b&gt;Advanced&lt;/b&gt;&amp;nbsp;tab&lt;/li&gt;
&lt;li&gt;Make sure "&lt;i&gt;Do not save encrypted pages to disk"&lt;/i&gt;&amp;nbsp;option near the bottom in the&amp;nbsp;&lt;i&gt;Security&lt;/i&gt;&amp;nbsp;section is &lt;b&gt;unchecked&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;This implies there is hardly any programming way to ensure PDF opening perfectly working.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Option&amp;nbsp;"&lt;i&gt;Do not save encrypted pages to disk"&lt;/i&gt;&amp;nbsp;should only be enabled by default on Windows Server, whereas on most desktop PC the followings should be applied&amp;nbsp;for security reason:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ol&gt;&lt;li style="color: #333333;"&gt;Go to the Tools menu&lt;/li&gt;
&lt;li style="color: #333333;"&gt;Click Internet Options&lt;/li&gt;
&lt;li style="color: #333333;"&gt;Click the Advanced tab&lt;/li&gt;
&lt;li style="color: #333333;"&gt;In the "Settings" box, scroll down to the section labeled "Security"&amp;nbsp;&lt;/li&gt;
&lt;li&gt;click to check the box next to the "&lt;i&gt;Empty Temporary Internet Files folder when browser is closed&lt;/i&gt;" option&lt;/li&gt;
&lt;li style="color: #333333;"&gt;Click OK to finish&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;This option does not delete cookies, but it will clear your cache of other files when you close your browser.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Now, the thing is how we are going to let people in an organization to follow this. This makes me unhappy:(&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Related links:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://joseph.randomnetworks.com/2004/10/01/making-ie-accept-file-downloads/#comment-670"&gt;http://joseph.randomnetworks.com/2004/10/01/making-ie-accept-file-downloads/#comment-670&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://robm.fastmail.fm/articles/iecachecontrol.html"&gt;http://robm.fastmail.fm/articles/iecachecontrol.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, this is not the end of the story.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To be enthusiastic for my work and&amp;nbsp;diligent regarding all these, I keep digging deep into what's happening on a scenario which I have met in producing PDF on the fly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For IE6, part of my PDF streams can be displayed correctly regardless of what option&amp;nbsp;"&lt;i&gt;Do not save encrypted pages to disk"&lt;/i&gt;&amp;nbsp;disabled or not. When I tried to check the size of a successful PDF generated on the fly, they all show a bigger size like 120KB, 80KB or 76KB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I did find some developer posts about the problem regarding PDF stream size to be displayed on IE. As I didn't remember wrong, someone mentioned about 8 Kilobytes in size to be minimum requirement on IE6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When I go back to check that problematic PDF file by Firefox, it shows a size of 4 Kilobytes. Well, it's time to do an experiment on this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using PHP, it is easy to echo PDF stream first. Then you can calculate the size of stream by using function like strlen() to check size of string. Multiply this length by 1024, you'll get Kilobyte size yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php"&gt;$len = strlen($pdf_stream)*1024; //length in bytes&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Using simple algorithm to check it the length if it is less than 8192 bytes or not. When this is the case, you can first echo the PDF stream first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php"&gt;echo $pdf_stream;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Then padding the spaces in advance:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php"&gt;for ($v=0;$v&amp;lt;=8192;$v++){
&amp;nbsp; &amp;nbsp;echo ' '; //output space character
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
This makes sure the actual PDF output plus extra padding spaces occupying at least 8KB in size for IE compatibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, the problem is really solved across the browsers:)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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/6524741362581356371-6650981105960482950?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/05/ie6-pdf-opening-issue-with-blank-page.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-2792456392230707481</guid><pubDate>Mon, 16 May 2011 00:55:00 +0000</pubDate><atom:updated>2011-05-16T11:05:28.169+10:00</atom:updated><title>Libgcc_s.so.1 bug on Linux</title><description>After a series of package installation onto Linux machine, some errors started to popup in the log. As found from a series of Google-search, it seems to be a problem widely spread among the software on Linux platform. This has been marked as a bug for attention.&lt;br /&gt;
&lt;br /&gt;
Error message would be like this:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;...libgcc_s.so.1: version 'GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)...
&lt;/pre&gt;&lt;br /&gt;
This can happen on all kinds of software already installed onto the machine. People can barely find the cause until someone found a bug for this and suggest a fix - REMOVE IT!&lt;br /&gt;
&lt;br /&gt;
However, it is safe to rename or move the problematic library to somewhere for retrieval. I would just rename it like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$ cd /destination_folder...
$ sudo mv libgcc_s.so.1 libgcc_s.so.1.bak
&lt;/pre&gt;&lt;br /&gt;
Sometimes you may want to check the file dependency before you take action:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$ ldd /destination_folder.../libgcc_s.so.1
&lt;/pre&gt;&lt;br /&gt;
The error should be gone so far.&lt;br /&gt;
&lt;br /&gt;
Some useful materials can be found from the links below:&lt;br /&gt;
&lt;a href="http://radio.javaranch.com/davo/2008/06/18/1213791596327.html"&gt;Fix "version `GCC_4.2.0' not found" for VMware 1.0.6 SErver and Ubuntu&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://ubuntuforums.org/showthread.php?t=270605"&gt;`GCC_4.2.0' not found (required by /usr/lib/libstdc+&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-2792456392230707481?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/05/libgccsso1-bug-on-linux.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-8240942686430186490</guid><pubDate>Wed, 11 May 2011 01:11:00 +0000</pubDate><atom:updated>2011-05-11T11:21:56.191+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Fix Repair IE6 internet explorer data uri scheme Base64 encoded image browser compatibility issue</category><title>Base64 image fix for Internet Explorer</title><description>&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Although Internet Explorer 6 has been released for almost ten years, it is not likely that people are rushing to have a newer version, or even better alternative, of this piece of software among the hospitals.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;For this famous version of Internet Explorer, trivial&amp;nbsp;like unsupported image display in a way of data URI scheme seem to be annoying while nurses and doctors complain that they can't really see the chart images or even signature image (supposing in smaller size) on the web pages.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Although data uri images are widely supported by the other web browsers like Chrome, Firefox, Safari and Opera, there is strong reason for us to take care of IE. We have to accept that it is still a web browser which is widely spread among those ward computers, i.e., a niche market for web developer.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;For any advancer who keeps using new stuff to catch the eyes, there will always be a dilemma on backward compatibility. By looking around in the sea of Google searches, I can barely find quite a lot of opinions on solving the problem. Most of them would urge you to keep focusing on the browsers. While some other developers suggest an intrusive way to modify almost every web page in the project, I prefer this way:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;a href="http://dean.edwards.name/weblog/2005/06/base64-ie/"&gt;http://dean.edwards.name/weblog/2005/06/base64-ie/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;It was found from a blog article since 2005 but it sheds the light on a question:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Can we actually repair (fix) those images after they have been shown up on a incompatible browser?&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;The answer is yes.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Here is the recipe:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;a href="http://docs.jquery.com/Downloading_jQuery#Download_jQuery"&gt;JQuery core script file&lt;/a&gt; for integration.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;A custom JQuery function in Javascipt file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;A min-sized PHP script file for Base64 image data processing.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;By using client-side Javascript and an external PHP file, we can redirect in-line Base64 image stream data to external HTTP request for obtaining a compatible image object back from server-side image processing.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;For&amp;nbsp;nowadays&amp;nbsp;web solution like PHP (v5.3) + JQuery (v1.6), it is not bad to review the source code from the above blog article and see what we can do for the new decade. &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;We would like to apply the fix with one function call&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; white-space: pre;"&gt;fixBase64Image()&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&amp;nbsp;once the web page is loaded completely. This function will search through the DOM elements and apply the fix to the target elements appropriately. A check on browser type and version is also possible to eliminate unnecessary action on non-related element.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;The target elements here are the image&amp;nbsp;elements "img" with search criteria for the property of image source "src" which contains data uri stream like:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; line-height: 22px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="html highlight" style="background-color: #f6f6f9; border-bottom-color: rgb(231, 231, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(231, 231, 239); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(231, 231, 239); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(231, 231, 239); border-top-style: solid; border-top-width: 1px; color: black; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New'; font-size: small; font-style: normal; font-weight: normal; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;"&gt;&lt;span class="attribute" style="display: inline !important; font-weight: bold;"&gt;img src&lt;/span&gt;=&lt;span class="attribute value" style="color: blue; display: inline !important; font-weight: normal;"&gt;"data:image/gif;base64,..."&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;For client-side Javascript function (supposing JQuery has been involved in your project):&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="php" style="background-color: #f6f6f9; border-bottom-color: rgb(231, 231, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(231, 231, 239); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(231, 231, 239); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(231, 231, 239); border-top-style: solid; border-top-width: 1px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace;"&gt;function fixBase64Image() {
 var BASE64_data = /^data:.*;base64/i;
 var BASE64_Path = "base64transfer.php";
 if ($.browser.msie){
  $("img").each(function(){
   // check matched image source
   if (BASE64_data.test($(this).attr("src"))) {
    // pass image stream data to external php
    var newSrc = BASE64_Path + "?" + ($(this).attr("src")).slice(5);
    $(this).attr("src",newSrc);
   }
  });
 }
 
};&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;The Javascript function will repair the broken images by replacing the source path of IMG element with an external PHP request to&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; white-space: pre;"&gt;"base64transfer.php&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: x-small; white-space: pre;"&gt;"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&amp;nbsp;while Base64 image data is encapsulated in HTTP request as the query string.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;For the newly created external PHP file named&amp;nbsp;&lt;span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; white-space: pre;"&gt;"base64transfer.php",&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;five lines of code are enough to support this&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; line-height: 22px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="php" style="background-color: #f6f6f9; border-bottom-color: rgb(231, 231, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(231, 231, 239); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(231, 231, 239); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(231, 231, 239); border-top-style: solid; border-top-width: 1px; font-size: small; font-style: normal; font-weight: normal; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;$data = &lt;strike&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;split&lt;/span&gt;&lt;/strike&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;explode&lt;/span&gt;(";", $_SERVER["QUERY_STRING"]);&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="php" style="background-color: #f6f6f9; border-bottom-color: rgb(231, 231, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(231, 231, 239); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(231, 231, 239); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(231, 231, 239); border-top-style: solid; border-top-width: 1px; font-size: small; font-style: normal; font-weight: normal; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$type = $data[0];
$data = &lt;strike&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;split&lt;/span&gt;&lt;/strike&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;explode&lt;/span&gt;(",", $data[1]);&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="php" style="background-color: #f6f6f9; border-bottom-color: rgb(231, 231, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(231, 231, 239); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(231, 231, 239); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(231, 231, 239); border-top-style: solid; border-top-width: 1px; font-size: small; font-style: normal; font-weight: normal; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;header("Content-type: ".$type);
echo base64_decode($data[1]);&lt;span class="Apple-style-span" style="color: #274e13;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;This PHP script simply converts the query string, supposing a long string of Base64 image data, into raw image stream data and then send it back to the browser for image display.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;This can be considered as a quick fix to the lack of support to Base64 in-line images in Internet Explorer 6.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&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/6524741362581356371-8240942686430186490?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/05/base64-image-fix-for-internet-explorer.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-4513425219628859826</guid><pubDate>Wed, 02 Mar 2011 04:43:00 +0000</pubDate><atom:updated>2011-05-31T11:12:50.968+10:00</atom:updated><title>MySQL Replication</title><description>There are good materials around for setting up multiple MySQL instance on local machine for data replication. But, the fact is that MySQL server only supports offline backup for INNODB type database. For online backup, Slave MySQL instance can be setup separately for backup purposes while Master instance can remain online to serve the users. Once Slave instance finishes its job, it can be startup again and synchronize with Master instance during the black-out period. This is a cost-effective solution for real-time MySQL backup.&lt;br /&gt;
&lt;br /&gt;
The official manual have the details about this:&lt;br /&gt;
&lt;a href="http://dev.mysql.com/doc/refman/5.5/en/replication.html" target="_blank"&gt;http://dev.mysql.com/doc/refman/5.5/en/replication.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
For basic tutorials, you may find it here:&lt;br /&gt;
&lt;a href="http://forge.mysql.com/wiki/Replication/Tutorial" target="_blank"&gt;http://forge.mysql.com/wiki/Replication/Tutorial&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I love the presentation which bring a brief but clear information about what have to be done:&lt;br /&gt;
&lt;a href="http://assets.en.oreilly.com/1/event/2/MySQL%20Replication%20Tutorial%20Presentation%202.pdf" target="_blank"&gt;http://assets.en.oreilly.com/1/event/2/MySQL%20Replication%20Tutorial%20Presentation%202.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
To setup data replication on existing MySQL server, it is good to have a copy of /data directory first and then rename it to something like /data_slave and hook it up under the same parent folder of /data. This ensures a good start for setting up new database instance from the grounds up.&lt;br /&gt;
&lt;br /&gt;
You may need to make a duplicate of my.ini which has already been used by the master MySQL instance. Rename that duplicate to something like, my2.ini and keep it in the same folder as the master my.ini file. Regarding the content of my2.ini, I suggest it is good to change the parameters first before starting those instances.&lt;br /&gt;
&lt;br /&gt;
In my.ini, we have some basic settings like these:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #555555; font-family: verdana, arial, helvetica, sans-serif; font-size: 14px; line-height: 24px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="programlisting" style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-width: 720px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new', courier, fixed, monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;[mysqld]
server-id=&lt;span class="Apple-style-span" style="color: red;"&gt;1&lt;/span&gt;
port            = &lt;span class="Apple-style-span" style="color: #38761d;"&gt;3306&lt;/span&gt; 
socket          = "C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;mysql.sock&lt;/span&gt;"
basedir="C:/xampp/mysql" 
tmpdir="C:/xampp/tmp" 
datadir="C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;data&lt;/span&gt;"
pid_file="&lt;span class="Apple-style-span" style="color: #38761d;"&gt;mysql.pid&lt;/span&gt;"
innodb_data_home_dir = "C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;data&lt;/span&gt;"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;data&lt;/span&gt;"
#innodb_log_arch_dir = "C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;data&lt;/span&gt;"

#Important setting for error prone builtin innodb plugin
&lt;span class="Apple-style-span" style="color: red;"&gt;innodb_use_sys_malloc = 0&lt;/span&gt;

innodb = ON

#Necessary for master instance
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;log-bin = mysql-bin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="programlisting" style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-width: 720px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new', courier, fixed, monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="programlisting" style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-width: 720px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="color: #38761d; font-family: 'courier new', courier, fixed, monospace; line-height: 20px;"&gt;log_error="mysql_error.log"&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new', courier, fixed, monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;In my2.ini, we should have changed those to:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="programlisting" style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-width: 720px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new', courier, fixed, monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;[mysqld]
server-id=&lt;span class="Apple-style-span" style="color: red;"&gt;2&lt;/span&gt;
port            = &lt;span class="Apple-style-span" style="color: #38761d;"&gt;3307&lt;/span&gt; 
socket          = "C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;mysql2.sock&lt;/span&gt;"
basedir="C:/xampp/mysql" 
tmpdir="C:/xampp/tmp" 
datadir="C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;data2&lt;/span&gt;"
pid_file="&lt;span class="Apple-style-span" style="color: #38761d;"&gt;mysql2.pid&lt;/span&gt;"
innodb_data_home_dir = "C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;data2&lt;/span&gt;"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;data2&lt;/span&gt;"
#innodb_log_arch_dir = "C:/xampp/mysql/&lt;span class="Apple-style-span" style="color: #38761d;"&gt;data2&lt;/span&gt;"

#Important setting for error prone builtin innodb plugin
&lt;span class="Apple-style-span" style="color: red;"&gt;innodb_use_sys_malloc = 0&lt;/span&gt;

innodb = ON

#Necessary for slave instance
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;relay-log = mysqld-relay-bin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="programlisting" style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-width: 720px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new', courier, fixed, monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="programlisting" style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-width: 720px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="color: #38761d; font-family: 'courier new', courier, fixed, monospace; line-height: 20px;"&gt;log_error="mysql_error.log"&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;
The concept behind this is that we are going to setup two MySQL instances on the same machine, with the master instance using port 3306 and the slave instance using port 3307, for communication. For your convenience, you may change it to any other port available on the server.&lt;/div&gt;&lt;br /&gt;
Supposing we have already have the master instance of MySQL started and running, now we need another one acting as a slave instance for backup purposes.&lt;br /&gt;
&lt;br /&gt;
In Windows environment, it is necessary to setup a new Windows service running at the background for better system management.&lt;br /&gt;
&lt;br /&gt;
Before this, you may want to test if my2.ini ready to be a running service. To test this in a debugging mode, it is good to use mysqld-debug.exe to start a debugging process with the target configuration file (my2.ini).&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;mysqld-debug.exe --defaults-file="c:\mysql\bin\my2.ini"&lt;/pre&gt;&lt;br /&gt;
Take a look at the error log file (&lt;span class="Apple-style-span" style="color: #38761d; font-family: 'courier new', courier, fixed, monospace; line-height: 20px; white-space: pre;"&gt;mysql_error.log)&lt;/span&gt;&amp;nbsp;when anything goes wrong, you won't miss it.&lt;br /&gt;
&lt;br /&gt;
When the test is finished and you are satisfied, you can create a new Windows service called mysql2 running in the background for easy management.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;c:\mysql\bin\mysqld --install mysql2 --defaults-file="c:\mysql\bin\my2.ini"&lt;/pre&gt;&lt;br /&gt;
After that, you may start this Windows service.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;net start mysql2&lt;/pre&gt;&lt;br /&gt;
It is recommended to use MySQL Workbench to manage those master and slave instance. For details, please read their manual.&lt;br /&gt;
&lt;br /&gt;
You can download a copy of MySQL Workbench via:&amp;nbsp;&lt;a href="http://www.mysql.com/downloads/workbench/" target="_blank"&gt;http://www.mysql.com/downloads/workbench/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It is also recommended to download the no-install.zip copy on Windows platform. The reason is that .msi installer file will require an pre-installation of .NET framework 3.5 or above which may install extra pieces of software like IIS web server while you might already have one instance of Apache server installed on the machine. They both race for port 80, anyway.&lt;br /&gt;
&lt;br /&gt;
Once you can start both MySQL instances, you may start issuing commands in MySQL consoles to make data replication happens among them.&lt;br /&gt;
&lt;br /&gt;
It's good to take a look at this first:&amp;nbsp;&lt;a href="http://dev.mysql.com/doc/refman/5.5/en/replication-howto-slaveinit.html" target="_blank"&gt;http://dev.mysql.com/doc/refman/5.5/en/replication-howto-slaveinit.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
You may also check out the steps here:&amp;nbsp;&lt;a href="http://www.howtoforge.com/mysql_database_replication_p2" target="_blank"&gt;http://www.howtoforge.com/mysql_database_replication_p2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
During this time, you may want to dump the data out of master instance and then feed it into slave instance for easy startup. Take a look at this:&amp;nbsp;&lt;a href="http://dev.mysql.com/doc/refman/5.5/en/replication-howto-masterstatus.html" target="_blank"&gt;http://dev.mysql.com/doc/refman/5.5/en/replication-howto-masterstatus.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
To check the replication status on master instance, try the following commands in MySQL console:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;mysql&amp;gt;unlock tables;


mysql&amp;gt; SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000020 | &amp;nbsp; &amp;nbsp; &amp;nbsp;107 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)



mysql&amp;gt; SHOW SLAVE HOSTS;
+-----------+------+------+-----------+
| Server_id | Host | Port | Master_id |
+-----------+------+------+-----------+
| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 | &amp;nbsp; &amp;nbsp; &amp;nbsp;| 3306 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 |
+-----------+------+------+-----------+
1 row in set (0.00 sec)
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Once the replication happens, it will continue even after a system restart on the server itself. Sounds like a magic!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-4513425219628859826?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2011/03/mysql-replication.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-2911375569392677548</guid><pubDate>Mon, 29 Nov 2010 04:14:00 +0000</pubDate><atom:updated>2010-11-29T14:34:06.896+10:00</atom:updated><title>Build up a VMWare ESXi environment on a desktop PC</title><description>People have been discussing on the topics of setting up ESXi environment on a desktop PC either at home or for testing purposes. Although I have been searching on the forums to get some ideas why my installation has always been failed, the last conclusion I got is buying an &lt;b&gt;Intel e1000 compatible network adapter&lt;/b&gt; first. Even the cheapest Intel network adapter will do a good job for you. Trust me, you won't need anything else but this. As I have ever seen, most forum users may get stuck in compiling not-quite-compatible onboard chipset NIC driver for use under ESX environment. This is not their fault, indeed. VMware makes Intel network card as a must-have component in the VMWare infrastructure.&lt;br /&gt;
&lt;br /&gt;
I finally figured out that the most up-to-date ESXi server (say, version 4.1) can actually recognize the problematic Realtek onboard NIC, however, ONLY AFTER you insert an Intel e1000 network card into the slot. The thing is that the ESXi installation will only succeed once it detects Intel network adapter (obviously not the onboard NIC), making the network adapter as default management console's network interface to the outside world. Some people would just simply tell us having more Intel network adapters in stock for ESX maintenance and support.&lt;br /&gt;
&lt;br /&gt;
After several trials with different versions of installation disc on my HP desktop PC, I found out another trap on the so-called HP customized version of ESXi Installable Disc which actually includes a timer program causing a crash even after the installation is completed. You may probably see a crash screen with error message once your ESXi server keeps running for the first 10 minutes. So you'd better off NOT using any customized version of ESXi Installable Disc. Use the official Installation Disc found on VMWare &lt;a href="https://www.vmware.com/tryvmware/index.php?p=free-esxi&amp;amp;lp=1"&gt;official site&lt;/a&gt;, please.&lt;br /&gt;
&lt;br /&gt;
Regarding the memory, I can't get much but enough for 4GB RAM which is almost good for running a resources-hungry Windows server and a slim Linux based NAT router VM appliance like pfsense. Pfsense has a nice web GUI for you to do configuration via HTTP/HTTPS protocol. The use of NAT router is to do some port forwarding and maximize the use of one single public IP address to the WAN. You may probably use it as a portal to your VMs inside ESXi environment.&lt;br /&gt;
&lt;br /&gt;
Once the installation is done with the aforementioned hardware added to your desktop PC, you can use another computer to connect it via VSphere client. Rememeber to use the IP address assigned to vmnic1 which is for management console connection only.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ZTkVubKp6bY/TPMqBsd74oI/AAAAAAAADxo/zsRMeXaSWMQ/s1600/esx02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ZTkVubKp6bY/TPMqBsd74oI/AAAAAAAADxo/zsRMeXaSWMQ/s1600/esx02.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The architecture is simple enough. Assuming you have one onboard NIC vmnic0 and one Intel network adapter vmnic1, you are going to use vnmic1 for ESXi management console and vmic0 for the router.&lt;br /&gt;
&lt;br /&gt;
Supposing you have created one virtual switch (vSwitch0) for management console connection by VSphere client and another virtual switch (vSwitch1) for VM pool including NAT router and other VMs, then you are good to go.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ZTkVubKp6bY/TPModKLqr5I/AAAAAAAADxk/sLoyjSq5qwA/s1600/esx01.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_ZTkVubKp6bY/TPModKLqr5I/AAAAAAAADxk/sLoyjSq5qwA/s320/esx01.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Here is the big picture&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-2911375569392677548?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2010/11/build-up-vmware-esxi-environment-on.html</link><author>noreply@blogger.com (Kenneth)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZTkVubKp6bY/TPMqBsd74oI/AAAAAAAADxo/zsRMeXaSWMQ/s72-c/esx02.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-396026841770520761</guid><pubDate>Tue, 05 Oct 2010 06:06:00 +0000</pubDate><atom:updated>2010-10-05T16:08:47.072+10:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>IE6 gzip handling problem mod_deflate apache</category><title>IE6 gzip problem</title><description>Once in a time, IE6 has been successful that people would make it as a default browser. It has been recognized among the organizations. But, now we have a lot more choices like Firefox, Chrome and Safari. Although the speed of hardware peripheral is faster than ever, the network speed is still varying from area to area. For saving bandwidth and server loading, modern browsers support compression feature which allows the compressed content transferred over the network and then have it decompressed for processing. It's been in doubt that IE6 can truly support this feature. There are&amp;nbsp;criticism&amp;nbsp;over IE6 gzip handling among the forum users. Most developers would just skip it to get most widely acceptance among the users. Indeed, not just IE, older browsers might not support gzip content.&lt;br /&gt;
&lt;br /&gt;
The thing is that we can isolate those problematic browsers when incorporating this good feature. Apache server can be configured to skip annoying bugs over gzip in this way:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 14px;"&gt;&lt;location&gt;&lt;br /&gt;
&lt;span class="indent" style="display: block; padding-left: 1.5em;"&gt;# Insert filter&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;SetOutputFilter DEFLATE&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
# Netscape 4.x has some problems...&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;BrowserMatch ^Mozilla/4 gzip-only-text/html&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
# Netscape 4.06-4.08 have some more problems&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;BrowserMatch ^Mozilla/4\.0[678] no-gzip&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
# MSIE masquerades as Netscape, but it is fine&lt;br /&gt;
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html&lt;br /&gt;
&lt;br /&gt;
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48&lt;br /&gt;
# the above regex won't work. You can use the following&lt;br /&gt;
# workaround to get the desired effect:&lt;br /&gt;
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html&lt;br /&gt;
&lt;br /&gt;
# Don't compress images&lt;br /&gt;
SetEnvIfNoCase Request_URI \&lt;br /&gt;
&lt;span class="indent" style="display: block; padding-left: 1.5em;"&gt;\.(?:gif|jpe?g|png)$ no-gzip dont-vary&lt;/span&gt;&lt;br /&gt;
# Make sure proxies don't deliver the wrong content&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #990000;"&gt;Header append Vary User-Agent env=!dont-vary&lt;/span&gt;&lt;/span&gt;&lt;/location&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
IE6 masquerades itself as Mozilla 4 so it is okay to put in no-gzip parameter for this kind of browsers.&lt;br /&gt;
&lt;br /&gt;
Proxy server is also part of the causes when it starts to change header information for User-Agent. From Apache's manual, you will find this:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #003366; font-family: Arial, Helvetica, sans-serif; font-size: 14px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="line-height: 1.3em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;The&amp;nbsp;&lt;code class="module" style="background-color: inherit; color: saddlebrown; font-family: 'Courier New', Courier, monospace; font-size: 1em;"&gt;&lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html" style="background-color: inherit; color: saddlebrown;"&gt;mod_deflate&lt;/a&gt;&lt;/code&gt;&amp;nbsp;module sends a&amp;nbsp;&lt;code style="font-family: 'Courier New', Courier, monospace; font-size: 1em;"&gt;Vary: Accept-Encoding&lt;/code&gt;&amp;nbsp;HTTP response header to alert proxies that a cached response should be sent only to clients that send the appropriate&amp;nbsp;&lt;code style="font-family: 'Courier New', Courier, monospace; font-size: 1em;"&gt;Accept-Encoding&lt;/code&gt;&amp;nbsp;request header. This prevents compressed content from being sent to a client that will not understand it.&lt;/div&gt;&lt;div style="line-height: 1.3em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;If you use some special exclusions dependent on, for example, the&amp;nbsp;&lt;code style="font-family: 'Courier New', Courier, monospace; font-size: 1em;"&gt;User-Agent&lt;/code&gt;&amp;nbsp;header, you must manually configure an addition to the&amp;nbsp;&lt;code style="font-family: 'Courier New', Courier, monospace; font-size: 1em;"&gt;Vary&lt;/code&gt;&amp;nbsp;header to alert proxies of the additional restrictions. For example, in a typical configuration where the addition of the&amp;nbsp;&lt;code style="font-family: 'Courier New', Courier, monospace; font-size: 1em;"&gt;DEFLATE&lt;/code&gt;&amp;nbsp;filter depends on the&amp;nbsp;&lt;code style="font-family: 'Courier New', Courier, monospace; font-size: 1em;"&gt;User-Agent&lt;/code&gt;, you should add:&lt;/div&gt;&lt;div class="example" style="background-color: #e5ecf3; color: black; margin-bottom: 1em; margin-left: 1em; margin-right: 2em; margin-top: 1em; padding-bottom: 0.5em; padding-left: 0.5em; padding-right: 0.5em; padding-top: 0.5em;"&gt;&lt;div style="line-height: 1em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;code style="font-family: 'Courier New', Courier, monospace; font-size: 13px;"&gt;Header append Vary User-Agent&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
All these measures aim at keeping the HTTP content delivery smooth enough and unchanged throughout the proxy servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-396026841770520761?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2010/10/ie6-gzip-problem.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-3172399785410988735</guid><pubDate>Fri, 10 Sep 2010 03:41:00 +0000</pubDate><atom:updated>2010-09-10T13:43:24.975+10:00</atom:updated><title>VMware Tools on Ubuntu Guest</title><description>VM guest running on it own drivers for network adapter and memory management may experience performance drop and instability over a period of time. The best way to gain more support is trying to install vmware-tools from vmware.com. Currently, the newest version of repository is 4.1latest which should suite the needs for all VMware products.&lt;br /&gt;
&lt;br /&gt;
There is an open source version of vm-tools which is not supported by VMware.com so you may take your risk if you try it that way.&lt;br /&gt;
&lt;br /&gt;
Useful information like official documentation from VMware is here:&amp;nbsp;&lt;a href="http://www.vmware.com/pdf/osp_install_guide.pdf"&gt;http://www.vmware.com/pdf/osp_install_guide.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I found this useful as they tell you where to find the package and the public PGP key. Also an important module like&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: courier, monospace; font-size: 14px; white-space: pre-wrap;"&gt;vmware-open-vm-tools-kmod-source&lt;/span&gt;&amp;nbsp;has to be compiled and installed inside the VM before actual installation of vmware-tools. Or else, part of the vm services will be broken legs and will not start.&lt;br /&gt;
&lt;br /&gt;
Ubuntu has its discussion over this topic with some tips and instructions:&lt;br /&gt;
&lt;a href="https://help.ubuntu.com/community/VMware/Tools"&gt;https://help.ubuntu.com/community/VMware/Tools&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
They mentioned about a new command called&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: courier, monospace; font-size: 14px; white-space: pre-wrap;"&gt;apt-add-repository&lt;/span&gt;&amp;nbsp;which is not available in the version prior to 9.10, so you may need to get around this by other methods for installation. The preparation also involves un-installation of previous version of vmware tools and open-vm-tools as well.&lt;br /&gt;
&lt;br /&gt;
Regarding apt-get PGP error, you may follow this link:&lt;br /&gt;
&lt;a href="https://help.ubuntu.com/community/SecureApt"&gt;https://help.ubuntu.com/community/SecureApt&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
After all, you will need to reboot the VM and check its vmware-tools running status:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$ /etc/init.d/vmware-tools status&lt;/pre&gt;&lt;br /&gt;
For verification of kernel modules, please issue the following command:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$ /sbin/lsmod&lt;/pre&gt;&lt;br /&gt;
You might expect there should be something like vmxnet, vmblock and vmmemctl loaded after the reboot.&lt;br /&gt;
&lt;br /&gt;
Hope this helps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-3172399785410988735?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2010/09/vmware-tools-on-ubuntu-guest.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-4236734537255557331</guid><pubDate>Fri, 25 Jun 2010 05:15:00 +0000</pubDate><atom:updated>2010-06-25T15:35:41.962+10:00</atom:updated><title>Take a glance at HI Service identifier</title><description>Healthcare Identifier (HI) Service consists of three types of service identifiers:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;IHI&lt;/li&gt;
&lt;li&gt;HPI-I&lt;/li&gt;
&lt;li&gt;HPI-O&lt;/li&gt;
&lt;/ul&gt;Each identifier contains&amp;nbsp;16 digit&amp;nbsp;reference numbers. The identifier is created according to the International Standard [ISO7812: AS3523.1&amp;amp;2-2008]. You may get some ideas from wiki of &lt;a href="http://en.wikipedia.org/wiki/ISO/IEC_7812" target="_blank"&gt;ISO/IEC 7812&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The&amp;nbsp;structure of the&amp;nbsp;identifier has been divided into three sections:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Issuer Identification Number (1st - 6th&amp;nbsp;digit):&lt;/b&gt;&lt;br /&gt;
The first 5 digits is set to be "80036" for healthcare industry.&lt;br /&gt;
The 6th digit will be used for types of service identifiers like IHI (defined as "0"), HPI-I (defined as "1") and HPI-O (defined as "2").&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Individual Account Identification (7th -15th&amp;nbsp;digit):&lt;/b&gt;&lt;br /&gt;
It contains the unique reference number.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Check Digit (16th&amp;nbsp;digit):&lt;/b&gt;&lt;br /&gt;
It can be calculated using IIN and IAI. The calculation is based on the Luhn formula modulus 10 "double-add-double" check digit [ISO7812].&lt;br /&gt;
&lt;br /&gt;
To assign a unique IHI, the following identifying information will be used:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Date of birth&lt;/li&gt;
&lt;li&gt;Date of birth accuracy indicator&lt;/li&gt;
&lt;li&gt;Sex&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Extra information may be included, like:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Address (always included in verified IHIs)&lt;/li&gt;
&lt;li&gt;Birth plurality (where relevant, and for a designated period)&lt;/li&gt;
&lt;li&gt;Birth order (where relevant, and for a designated period)&lt;/li&gt;
&lt;li&gt;Date of death (if applicable)&lt;/li&gt;
&lt;li&gt;Date of death accuracy indicator&lt;/li&gt;
&lt;li&gt;Alias (multiple alias allowed)&lt;/li&gt;
&lt;li&gt;Trusted Data Source TDS identifier (Medicare Australia and Department of Veteran's Addairs identified as initial TDS)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Interim number, which can be generated at the point of care for unidentified individuals, is called provisional IHI or unverified IHI.&lt;br /&gt;
&lt;br /&gt;
IHI can be classified as "verified", "unverified", "provisional", "deceased" or "retired". The HI Service will support classifications for those IHIs which are&amp;nbsp;suspected or confirmed to be&amp;nbsp;duplicate or replicate. An Evidence of Identity (EOI) process will be carried out to verify such initial information for the IHI.&lt;br /&gt;
&lt;br /&gt;
The details of the concept of operation can be found &lt;a href="http://www.nehta.gov.au/component/docman/doc_download/1019-concept-of-operations-v20" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-4236734537255557331?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2010/06/quick-look-on-hi-service-identifier.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-22304097894688728</guid><pubDate>Fri, 25 Jun 2010 04:15:00 +0000</pubDate><atom:updated>2010-06-25T14:44:29.208+10:00</atom:updated><title>Legislation for Healthcare Identifiers Service passed by Parliament</title><description>Today, the legislation to set up the Healthcare Identifiers Service has been passed by Parliament in Australia. It means the people can have their unique identifiers for e-Health records and the organizations like hospitals and clinics will have their own unique identifiers as well. It facilitates the data exchange dramatically among various kinds of national healthcare information systems. Software render would find it easier to identify an unique patient among the sea of diverse eHRs and collaborate among the other healthcare information systems.&lt;br /&gt;
&lt;br /&gt;
What a great effort, mate!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.health.gov.au/internet/ministers/publishing.nsf/Content/mr-yr10-nr-nr135.htm" target="_blank"&gt;Media release&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6524741362581356371-22304097894688728?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2010/06/legislation-for-healthcare-identifiers.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-9079793093364817825</guid><pubDate>Thu, 17 Jun 2010 02:11:00 +0000</pubDate><atom:updated>2010-06-17T12:23:49.210+10:00</atom:updated><title>Backup: a practical point of view</title><description>&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;In people's mind, a backup could mean a whole bunch of files to be copied and pasted somewhere. This is partly true. We can copy&amp;nbsp;file-by-file or bit-by-bit. It really depends on the level of backup operation.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Here I&amp;nbsp;would like to sum up a few points so&amp;nbsp;hope&amp;nbsp;the people around&amp;nbsp;may know more about the backup operations&amp;nbsp;of a system.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;There are three kinds of backup operations&amp;nbsp;to be carried out in order to keep the system running well. What it means by running well is that the system is running with practically up-to-date data, managed application source code and working opearting system files.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Data backup makes sure the data collected by the system is practically up-to-date. The backup target is specific to the master database server. To fulfil a high level of&amp;nbsp;service uptime, the backup operation is carried out in the offline secondary (slave) database server which synchronizes the data with online master database. Carrying out such data backup operation will lead to a drop of overall system performance so we need to schedule it carefully and avoid any peak time of service demands. The principle is keeping minimum but most recent copies of backup as you can.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Backup of&amp;nbsp;application source code&amp;nbsp;can be&amp;nbsp;done through using SVN server which&amp;nbsp;provides the version control over the source code and maintains different versions of the source code among Production server, Test server, and Development workstation. It makes sure the source code can be reverted to a particular version on Production server at any time, assuming that this particular version of source code to be compatible with the current structure of database.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Backup of opearting system files keeps up-to-date software and configuration settings on currently workable state of Production server. It mainly includes software update, custom configuration settings and scheduled tasks for maintaining service uptime and data backup operation. This is extremely useful when a disaster recovery is not triggered by a minor incident at&amp;nbsp;the data centre. The reason is that disaster recovery is defined as fire, flooding and physical damage to the equipment in the data centre. Lower level of disaster like incorrect system configuration and third-party software installation would not trigger such recovery process but can lead to a corrupted system state which makes Production server non-workable. In this case, the data centre has no choice but retrieves the initial image copy of the server which is out-dated and needs to be applied all the patches, settings and scheduled tasks again to make it workable. Regularly taking system snapshots of Production server can shorten the time to recover&amp;nbsp;the service. In a&amp;nbsp;virtual environment like VMware, the snapshots of system state can be taken in a regular schedule while Production server is running. The reverting process to previous system state is quite handy&amp;nbsp;and can be efficiently handled&amp;nbsp;by&amp;nbsp;any VMware&amp;nbsp;administrator. This is part&amp;nbsp;of business continuity features&amp;nbsp;by using virtualization technology. To meet&amp;nbsp;a requirement of business continuity, the system administrator&amp;nbsp;should schedule&amp;nbsp;the tasks to take system snapshot of Production server&amp;nbsp;at regular&amp;nbsp;period. It ensure that a reasonable system state can be recovered in case of the aforementioned incidents.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;All those backups ensure that the system state can be kept practically up-to-date after the recovery from most incidents.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&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/6524741362581356371-9079793093364817825?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2010/06/data-backup-practical-point-of-view.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6524741362581356371.post-9077561994301384290</guid><pubDate>Tue, 15 Jun 2010 01:04:00 +0000</pubDate><atom:updated>2010-06-15T11:04:31.889+10:00</atom:updated><title>Import/Export BLOB data type correctly in MySQL database</title><description>MySQLDump is one of the built-in tools which is useful enough for data import/export on daily operation. To deal with complex data types like Binary or BLOB, it is good to export them in HEX code in order to avoid any invalid character set issue or corrupted data during data import.&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;MySQL manual has already mentioned about this:&lt;/div&gt;&lt;div&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_hex-blob"&gt;http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_hex-blob&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="color: #660000;"&gt;--hex-blob&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 25px;"&gt;Dump binary columns using hexadecimal notation (for example,&amp;nbsp;&lt;code class="literal" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #026789; font-family: courier, 'courier new', fixed, monospace; font-size: 13px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;'abc'&lt;/code&gt;&amp;nbsp;becomes&amp;nbsp;&lt;code class="literal" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #026789; font-family: courier, 'courier new', fixed, monospace; font-size: 13px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;0x616263&lt;/code&gt;). The affected data types are&amp;nbsp;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/binary-varbinary.html" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #00759f; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;" title="10.4.2. The BINARY and
        VARBINARY Types"&gt;&lt;code class="literal" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #026789; font-family: courier, 'courier new', fixed, monospace; font-size: 13px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;BINARY&lt;/code&gt;&lt;/a&gt;,&amp;nbsp;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/binary-varbinary.html" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #00759f; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;" title="10.4.2. The BINARY and
        VARBINARY Types"&gt;&lt;code class="literal" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #026789; font-family: courier, 'courier new', fixed, monospace; font-size: 13px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;VARBINARY&lt;/code&gt;&lt;/a&gt;, the&amp;nbsp;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/blob.html" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #00759f; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;" title="10.4.3. The BLOB and
        TEXT Types"&gt;&lt;code class="literal" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #026789; font-family: courier, 'courier new', fixed, monospace; font-size: 13px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;BLOB&lt;/code&gt;&lt;/a&gt;&amp;nbsp;types, and&amp;nbsp;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #00759f; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;" title="10.2. Numeric Types"&gt;&lt;code class="literal" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #026789; font-family: courier, 'courier new', fixed, monospace; font-size: 13px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;BIT&lt;/code&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 25px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 25px;"&gt;&lt;br /&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/6524741362581356371-9077561994301384290?l=hl7australia.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://hl7australia.blogspot.com/2010/06/importexport-blob-data-type-correctly.html</link><author>noreply@blogger.com (Kenneth)</author><thr:total>0</thr:total></item></channel></rss>