Friday, August 22, 2008

How to add smecontribs repository

Log into SME Server console as root.

Issue the following command

yum update smeserver-yum

Thats all. It will add the repository on completion

Sunday, August 17, 2008

Create startup script in SMEServer

SME Server is a pre-configured Linux server designed for small to medium businesses!
It used Red Hat Enterprise Linux kernel, or CentOS kernel.

When creating packages, I wanted a script to be running when the system boot up. For example, an auto usb drive mounting script. I started with something that running in the background, and didn't work quite well. Using & straight away is not a clever way because script in init.d folder should follow certain standard, and can be managed by the boot up program manager( it might be called something else).

Firstly, you can write a normal script and wrap it as the following example:



#!/bin/sh
#
# description: usbMountWrapper is the daemon to xxxxxx
#

. /etc/rc.d/init.d/functions

function start()
{
printf "Starting %s: " "usbMountWrapper"
daemon /opt/smebackup/usbMountWrapper &
echo
touch /var/lock/subsys/usbMountWrapper
}

function stop()
{
printf "Stopping %s: " "usbMountWrapper"
killproc usbMountWrapper
echo
rm -f /var/lock/subsys/usbMountWrapper
}

function reload()
{
pid=`pidof ulogd`
if [ "x$pid" != "x" ]; then
kill -HUP $pid 2>/dev/null
fi
touch /var/lock/subsys/usbMountWrapper
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
status)
status usbMountWrapper
;;
*)
printf "Usage: %s {start|stop|status|restart|reload}\n" "usbMountWrapper"
exit 1
esac

exit 0




This is a much nice way of writing boot up script and you can start or stop them like this:
/etc/rc.d/init.d/usbMountWrapper start
/etc/rc.d/init.d/usbMountWrapper stop
/etc/rc.d/init.d/usbMountWrapper restart

Friday, August 15, 2008

C# GDI double buffer to stop screen flick

The code is really simple.

this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint , true);
this.UpdateStyles();

I assume you know where to put them. Enjoy.

Monday, August 11, 2008

How to backup Linux to FAT32 External Drives

There is very good tutorial on this issue, however, i wanted to add a bit more. How to backup Linux to FAT32 External Drives | WickedBlog
The backup process sounds pretty easy, but indeed, there are heaps problems when you actually working on it.

I am a windows user, and nowadays, most product are targeting windows user.  I developed the backup utility for the SMEServer (e-smith server) and First of all,
the priority is that things can be extract in Windows.  Obviously , NTFS is not a good option cause it is not supported in SMEServer.  So Fat32 was chosen and I didn't realise the file size limit of 4G until some time had passed and all my backups are smaller than 4G.

Let's begin with backup first.

tar -czf /media/DRIVENAME/BACKUPNAME.tgz /home

This is the real simple solution to backup one folder, and of course, we have more to backup.  So, we introduce the following one:

'tar -cz --files-from '+ FILELIST_TAR + ' > ' + TAR_OUTPUT+'.tgz'

NOTE that I now read files from a list, and this is recommended to do only when programming.

Finally, we need to split it

'tar -cz - --files-from '+ FILELIST_TAR + ' |  split -b 3880m - ' + TAR_OUTPUT+'.tgz'

Re-constitute properly with this customized restore command:

cat /media/DRIVENAME/BACKUPNAME.tgz.* | tar -zxf -

And of course, I didn't forget the windows user, you can re-constitute the files like this:
copy /b BACKUPNAME.tgz.* ALL_IN_ONE.tgz /b

Enjoy

Sunday, August 10, 2008

Vi: Start-up, Modes, Save and Quit

Vi: Start-up, Modes, Save and Quit

Vi: Start-up, Modes, Save and Quit

To enter Vi type:

 vi FILENAME

Vi has two modes: Normal (command) mode and edit mode.

 Switch to normal mode:     <ESC>
Switch to edit mode: i or a

Getting out of Vi (change to normal mode <ESC>):

 Exit Vi:                       :q
Exit Vi (ignore changes): :q!
Save: :w
Save and Exit: :wq

Switch to (edit) an other file:

:edit FILENAME

Getting help:

:help topic