jquery link

my custom css

slimbox 2

analytics

Saturday, December 31, 2011

Fixes for common issues on Linux Mint 12...

System: Dell Studio XPS 16 - 1647
OS: Linux Mint 12 - Lisa 64-bit

Problem 1:
Broadcom BCM43224 (0596) Wifi card not working out of box (bug #873511).

Solution:
Install driver from Jockey and then edit config file
    $ sudo nano /etc/modprobe.d/blacklist.conf
to blacklist the drivers (for my case I need to blacklist both bcma and brcmsmac) by adding the text below at the end of the file
    blacklist bcma
    blacklist brcmsmac
and then reboot.

Problem 2:
Unable to pair devices, send, receive and browse files via bluetooth.

Solution:
System update fixed pair devices issue, however sending file only works one way (PC to device). Browsing files in device is still not working (bug #879923).

Problem 3:
No sound from headphone jack.

Solution:
An old issue since Julia.

Worth to highlight:
  • ATI proprietary driver ver 11.12 performance still sluggish on GNOME 3
  • A nice shell extensions from ppa:webupd8team/gnome3
    • gnome-shell-extensions-pidgin
    • gnome-shell-extensions-workspace-indicator
  • AWN works great on GNOME 3

Friday, December 2, 2011

My Linux Mint 12 hiccup experienced...

Laptop Model: Dell Studio XPS 16 - 1647

1) Issues when using ATI proprietary FGLRX driver (via Additional Drivers or manual download)
  • Sluggish performance on windows movement and mode switching between desktop and activity
  • Windows 7 guest OS under VMWare with Aero effect enable crashed even when I'm not using a fullscreen mode

2) No sound from headphone jack (old issue since Julia)

3) Unable to pair, send file and browse other devices via bluetooth

4) Broadcom STA wireless driver not working, tried solutions found on forums yet I'm still stuck with it (working fine on Julia and openSUSE 12.1)

At the end of the day, I've revert back to Julia with ATI proprietary FGLRX driver version 10.10. A combination that works perfectly for my laptop. ATI sucks!!! I wish I could have change my graphic card to NVIDIA, unfortunately it's not easy and almost impossible for laptop.

Monday, October 31, 2011

Make the internet safer for your kids with ScrubIT...

This solution is suitable for parents who can't afford to buy the "net nanny" product. No installation is required.

What is ScrubIT?
ScrubIT is a FREE recursive DNS server that regulates what comes into your home or business. ScrubIT “scrubs” the internet so you don’t have to be concerned about what your family members or employees will be confronted with.

Who should use it?
ScrubIT is perfect for any home or business that is tired of the plague of pornographic and malicious websites.

Why is it FREE?
You're saying "Where's the catch?", good news, there is none! As far as we know, ScrubIT is the only public recursive DNS server to actively filter pornography. It’s a FREE service provided by people who care about the freedom found in the internet, but balance those sentiments with a desire to protect our children and employees.

*Summary were copied partially from ScrubIT website.

Saturday, October 29, 2011

Installing LibreOffice on Linux Mint 10...

1) Remove OpenOffice
    $ sudo apt-get purge openoffice*.*
2) Installing via Ubuntu ppa
    $ sudo add-apt-repository ppa:libreoffice/ppa
    $ sudo apt-get update
    $ sudo apt-get install libreoffice
    $ sudo apt-get install libreoffice-gnome
    $ sudo apt-get install language-support-en
3) Or installing via deb installers
  • download the installer from here
  • extract tarballs LibO_xxxx_install-deb_en-US.tar.gz
  • go to folder LibO_xxxx_install-deb_en-US/DEBS and run
    $ sudo dpkg -i *.deb
  • go to folder LibO_xxxx_install-deb_en-US/DEBS/desktop-integration and run
    $ sudo dpkg -i *.deb

Friday, October 21, 2011

Ubuntu 11.10 basic GNOME Shell tweaks...

1) Install GNOME Shell and gnome-tweak-tool, then restart your machine and choose GNOME for your session
$ sudo apt-get install gnome-shell gnome-tweak-tool
2) Install Cantarell font
  • Download font from here
  • Copy font into /usr/share/fonts folder
  • Run command below:
$ sudo fc-cache -f -v
3) Gnome-tweak-tool settings
  • Desktop - turn off everything
  • Fonts:
    • Default font - Cantarell
    • Window title font - Cantarell Bold
  • Shell - Arrangement of buttons on the titlebar - All
  • GTK+ theme - Adwaita (default)

4) Remove overlay scrollbars
$ sudo apt-get remove overlay-scrollbar liboverlay-scrollbar3-0.2-0 liboverlay-scrollbar-0.2-0
5) Fix Alt+F2
  • Go to System Settings -> Keyboard -> Shortcuts -> System, remapping Alt+F2 to Show the run command prompt.

6) Disable Global Menu
$ sudo apt-get remove appmenu-gtk3 appmenu-gtk appmenu-qt
7) Change LightDM background via LightDM Manager
  • Download LightDM Manager from here.
  • Install dependencies (not sure why we need to do this manually on 11.10)
  • Install LightDM Manager
    $ sudo apt-get install python-launchpad-integration gtk2-engines-pixbuf
    $ sudo dpkg -i simple-lightdm-manager_0.2-public7_all.deb
8) Fix on Conky script to make it work with GNOME Shell (credit to sgaap)
    own_window_class Conky
    own_window yes
    own_window_type conky
    own_window_transparent yes
    own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

Thursday, October 20, 2011

Ubuntu sex command at man page...

LOL!!! nice joke of the day.

sex man page



oneiric (6) sex.6fun.gz
Provided by: funny-manpages_1.3-5_all

NAME
sex -- have sex

SYNOPSIS
sex [options] ... [username] ...

DESCRIPTION
sex allows the invoker to have sex with the user(s) specified in the
command line. If no users are specified, they are taken from the
LOVERS environment variable. Options to make things more interesting
are as follows:

-1 masturbate

-a external stimulus (aphrodisiac) option

-b buggery

-B animal
bestiality with animal

-c chocolate sauce option

-C chaining option (cuffs included) (see also -m -s -W)

-d file
get a date with the features described in file

-e exhibitionism (image sent to all machines on the net)

-f foreplay option

-F nasal sex with plants

-i coitus interruptus (messy!)

-j jacuzzi option (California sites only)

-l leather option

-m masochism (see -s)

and the list goes on...

Monday, October 3, 2011

GNOME Shell, it's not as bad as it seems to be...

There's so much discussions going on regarding GNOME Shell and Unity. People talked as if the world is going to end soon (okay, I'm a little bit exaggerate here :)). I had this kind of impression after read too much negative posts / comments related to the DEs. Agreed on Unity, after tested it for sometimes, I got to admit that I myself hate it as well.

But GNOME Shell, is a different story, after play it for a while (OpenSuse LiveCD) I found out that it's quite nice. Things like "super key + type app name + enter" and dynamic desktop switcher (predefined number of desktops are not required) was kinda cool. It might feel odd at the beginning when my working and activities (I believe that's how they defined it) mode are separated into two (no launchers or list of applications visible on your desktop unless if you're in the activities mode). But after sometimes, I got used to it. It'll be great if I can interact with objects using keyboard in "Activities" mode. As of now (at the time of writing this post), things like opening apps or selecting existing windows can only be done via mouse clicking.

Of course I still love my current desktop with GNOME 2 (Shell is the core user interface of the GNOME desktop environment starting with version 3). It'll be great if I can customize GNOME Shell to look like my current desktop. It is possible to customize GNOME Shell (via gnome-tweak-tool) but only to certain extend. Things that I'll miss a lot from GNOME 2 are effects from Compiz (since GNOME shell is using Mutter for window compositing and won't work with Compiz), especially desktop cube. It's kind of an unofficial trademark that when others saw the desktop with cube, they knew it's Linux (or at least the idea is from Linux when they saw it on Windows).

I hate the idea of sharing the same interface into multiple devices as well. That seems to be the direction taken by tech companies (MS included) nowadays. Luckily for Linux users, we can change our DE to our liking (or at least the best to our liking). That's the beauty of it, and that's one of the main reason I've learned basic Linux (apart from freeing myself from virus, malware, crapware etc). Yes, I know there's no such thing as secure OS, but at least my mind is at peace when using it.

Tuesday, September 27, 2011

Things to do after upgraded to Katya 64-bit...

Yes, I know it's a late upgrade and the new release is coming soon. But, who cares. I just got a chance to do it last night.

1) Enabling Compiz will cause windows movement lagging
Solution:
  • At CCSM, go to "Composite -> General -> Refresh Rate" and change the value to 60
  • Then go to "OpenGL -> General", unchecked "Sync To VBlank" option

2) Enabling Blur effect, adding "class=Gnome-terminal" will cause windows flicker.
Solution:
  • Use type "Normal" instead
	type=Menu | PopupMenu | DropdownMenu | Tooltip | Notification | Combo | Dnd | Normal

3) Overlay scroll started to annoy me
Solution:
  • Uninstall the library
	$ sudo apt-get --purge remove overlay-scrollbar liboverlay-scrollbar-0.1-0

4) My Quake 3 demo is not working
Solution:
  • Install ia32-libs library
	$ sudo apt-get install ia32-libs

5) No sound from my headphone jack?
Solution:

Thursday, September 15, 2011

WebService - PI - WebService scenario...

Scenario overview:
  • Third party app sending request to PI webservice.
  • PI passing the request to third party webservice.
  • Third party webservice returning response to PI.
  • PI webservice returning response to third party app.

Steps at Enterprise Service Builder
1) Create request and response Data Type for SENDER.

2) Create request and response Message Type for SENDER.

3) Create External Definition and import wsdl file generated from external webservice. By doing so you should have the request and response External Message for RECEIVER.

4) Create outbound Service Interface.
  • Category: Outbound
  • Mode: Synchronous
  • For Request and Response Role, use Type as Message Type and assign Name with request and response message type respectively

5) Create inbound Service Interface.
  • Category: Inbound
  • Mode: Synchronous
  • For Request and Response Role, use Type as External Message and assign Name with request and response external message respectively

6) Create Message Mapping for request.
  • Source: Request Message Type
  • Target: Request External Message

7) Create Message Mapping for response.
  • Source: Response External Message
  • Target: Response Message Type

8) Create Operation Mapping.
  • Source Operation: Outbound Service Interface
  • Target Operation: Inbound Service Interface
  • Request Mapping Program: Request Message Mapping
  • Response Mapping Program: Response Message Mapping

Steps at Integration Builder
1) Create Configuration Scenario.

2) Create Business Component.

3) Add SENDER Communication Channel to Business Component.
  • Adapter Type: SOAP

4) Add RECEIVER Communication Channel to Business Component.
  • Adapter Type: SOAP
  • Target URL: Third party webservice URL
  • SOAP Action: Third party webservice SOAP Action

5) Create Receiver Determination.
  • Sender
    • Communication Component: Business Component
    • Interface: Outbound Service Interface
    • Namespace: namespace defined in ESB

6) Create Interface Determination.
  • Sender
    • Communication Component: Business Component
    • Interface: Outbound Service Interface
    • Namespace: namespace defined in ESB
  • Receiver
    • Communication Component: Business Component
    • Receiver Interfaces:
      • Operation Mapping: Operation Mapping defined in ESB (important)
      • Name: Inbound Service Interface
      • Namespace: namespace defined in ESB

7) Create Sender Agreement.
  • Sender
    • Communication Component: Business Component
    • Interface: Outbound Service Interface
    • Namespace: namespace defined in ESB
    • Sender Communication Channel: SENDER communication channel

8) Create Receiver Agreement.
  • Sender
    • Communication Component: Business Component
  • Receiver
    • Communication Component: Business Component
    • Interfaces: Inbound Service Interface
    • Namespace: namespace defined in ESB
    • Receiver Communication Channel: RECEIVER communication channel

Tuesday, September 13, 2011

Basic info for SAP PI - F2F...

1) Create software component at System Landscape Directory (SLD) and import it into Enterprise Service Repository (ESR).

2) Build sequence for Enterprise Service Builder (ESB)
  • Namespace
  • Datatype
  • Messagetype
  • Service Interface
  • Message Mapping
  • Operation Mapping

3) Build sequence for Integration Builder (IB)
  • Configuration Scenario
  • Business Component (or Business System)
  • Communication Channel
  • FCC configuration in Communication Channel
  • Receiver Determination
  • Interface Determination
  • Sender Agreement
  • Receiver Agreement

For file to file scenario that doesn't require any mapping where source and target files are expected to be the same:
  • Create Communication Channel for both sender and receiver Business System
  • Create Integrated Configuration

Important notes:
- SLDAPICUST
- SM59
- SLDCHECK

- SU01
- SXI_CACHE
- SXMB_IFR
- SXI_MONITOR
- SXMB_MONI

When creating datatype, make sure the structure is properly construct

    data-type-name // your datatype name
        record // represent data row
            detail // represent data structure
                field1
                field2
                field3

Ref link: Step by Step Guides - Connectivity

** This post is just for my own personal reference.

Friday, August 12, 2011

Record steps to reproduce a problem...

As the title above suggest, there's a free tool included on Windows 7 (Pro and above) that really useful for developers to troubleshoot problems on their product. The tool name is "Record steps to reproduce a problem", it's kind of obvious isn't it?

Search for the tool


Start recording and do your stuff


How to use it? Simple, click your Windows button and search for "record steps". You'll see the tool appear on menu and then click it. To start the session click "Start Record" button. Do your stuff and stop recording by clicking "Stop Record" button. A file dialog will appear for you to save the recorded session into a zip file. Unzip the file and you'll get the report in mhtml format.

Stop recording and save the session


This remind me the days when trouble shooting was my main activity while working at my previous company. Life would be easier if I had found this tool earlier.

Report header


Report details

Wednesday, June 29, 2011

Google+ is a Facebook with improvement...

Google strikes again, this time with the new social network service called Google+ (just wonder why + symbol instead of the word 'plus', perhaps that's the lesson they've learned from Buzz). The name seems to suggest like it's some kind of programming language instead of a service but who cares, as long as it has good features, that's going to be a strong attractive point.

Feature that I really love the most (based on my readings so far) is Circles. On Facebook, I find it hard (or maybe not possible at all) to post something to a specific group of people (more than 5) from within my friends list. Circles is the answer for that, it's like a combination of grouping and sharing. You can post something that can only be view by specific circle. With this, you won't end up accidently post something that'll cause you trouble with your boss (but why add your boss in the first place?).

"Circles: The easiest way to share some things with college buddies, others with your parents, and almost nothing with your boss."

I'm late with the news. It's been rolled out since yesterday (28/06/2011) on a very limited field trial. Try to join at https://plus.google.com, unfortunately it's already exceeded their capacity. It seems to me that Google is using the same approach as they did with Gmail. Started with very limited field trial, via invitation then only goes to public. This way, they've successfully create the hype for the service (again). Whether the service is going to succeed or not that's a different story.

Tuesday, May 10, 2011

Validate user against LDAP...

    ...
    using System.DirectoryServices;

        ...
        public bool IsValidLDAPUser(string userName, string password, string ldapPath)
        {
            DirectoryEntry entry = new DirectoryEntry(ldapPath, userName, password);
            DirectorySearcher searcher = new DirectorySearcher(entry);
            searcher.SearchScope = SearchScope.OneLevel;

            try
            {
                SearchResult result = searcher.FindOne();
                return result != null ? true : false;
            }
            catch
            {
                return false;
            }
            finally
            {
                if (searcher != null) searcher.Dispose();
                if (entry != null) entry.Dispose();
            }
        }
        ...

Thursday, May 5, 2011

Validate webservice client via SOAP header...

First, the SOAP header
    namespace SecureWebServiceDemo
    {
        using System;
        using System.Web.Services.Protocols;

        public class MySoapHeader : SoapHeader
        {
            private string _userName;
            private string _password;

            public MySoapHeader()
            {
            }

            public string UserName
            {
                get { return _userName; }
                set { _userName = value; }
            }

            public string Password
            {
                get { return _password; }
                set { _password = value; }
            }
        }
    }
Next, the webservice
    using ...

    namespace SecureWebServiceDemo
    {
        /// 
        /// Summary description for MyWebService
        /// 
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [ToolboxItem(false)]
        public class MyWebService : System.Web.Services.WebService
        {
            public MySoapHeader _header;
            private const string _userName = "testuser";
            private const string _password = "123456";

            [SoapHeader("_header")]
            [WebMethod]
            public string HelloWorld()
            {
                if (_header == null || _header.UserName != _userName || _header.Password != _password) throw new Exception("Invalid User");
                
                return "Hello World";
            }
        }
    }
Finally, the client side
    ...
    
    localhost.MySoapHeader header = new localhost.MySoapHeader();
    header.UserName = "testuser";
    header.Password = "123456";

    localhost.MyWebService test = new localhost.MyWebService();
    test.MySoapHeaderValue = header;
    Console.WriteLine(test.HelloWorld());
    
    ...

Saturday, April 30, 2011

My 5 minutes on Ubuntu 11.04...

  • New UI looks nice (but I prefer the old one)
  • New style scrollbar makes me confuse a bit (but it's one of the good thing that I like)
  • Apps menu appear on top panel instead of on its own window (except for Libre Office apps)
  • Quick search for apps (very helpful if you know the name)
  • Unable to customize panel
  • Enabling desktop cube via ccsm will cause top panel and app launcher stop responding. Windows border disappear
  • Overall, I don't like it. I'm glad that I switched to LM last year.

Wednesday, April 20, 2011

SARDU vs YUMI...

  SARDU YUMI
Multibootable USB Yes Yes
Multibootable CD/DVD Yes No
Support XP/7 installer Yes Yes, with some tweak. Please refer to Very Important note here.
Support Linux installers Yes Yes
Summary Pros:
  • Works on Windows (XP/7) installer flawlessly.
  • When tested with Windows 7 Ultimate, SARDU somehow exposed an option to install different flavor of Windows 7 in the installer.
  • Ability to put the installers into an iso and burn it into CD/DVD.
  • Doesn't required to be install on machine.

Cons:
  • Need to copy the iso's into ISO folder for SARDU to detect it.
  • Need to rename the iso's into specific name listed on SARDU website.
Pros:
  • Iso's need not be renamed nor required to be in any specific path location.
  • More recent Linux version available in the supported list.
  • Doesn't required to be install on machine.

Cons:
  • Unable to put the installers into an iso file and burn to CD/DVD in case if needed for machine that couldn't boot via USB.
  • Have some minor issue with Windows 7 installer. Check the workaround at Very Important note here.


Update (25/05/2011)
There's a new multiboot iso creator tool call XBOOT. In terms of usability it is straight forward. Simply drag and drop the ISO's (love the drag and drop features). However the downside is that it require .NET framework 4 to works and didn't support Windows installer.

Conclusion:
For multiboot iso creator, if you're on Windows system and
- want to use the tool to create the usb/cd boot that support both Windows and Linux installer, go for SARDU
- want to use the tool to create the usb boot (and not even bother about cd boot), go for YUMI
- want to use the tool with nice GUI to create the usb/cd boot (and not even bother about Windows installer), go for XBOOT

Bottom line is, it's all about choices. Choose the best tool that will suit your need.

Wednesday, April 13, 2011

Creating Windows USB startup disk...

As written in my previous post, I would like to test a couple of USB startup disk creators for Windows (that can put our beloved Windows installer into USB device). So now, here's the result. I would say that SARDU (imho) is the best tool currently available. Bonus part, you don't even need to install. Simply extract the zip file and voila! you ready to go. Here's the step by step on how to:

1) Download the zip file from here.

2) Extract it into your D:\ drive.

3) Go to extracted folder and copy your windows installer (in .iso format) into ISO subfolder.

4) Rename the iso file based on OS like listed below:
  • Windows Vista - InstallVista.iso
  • Windows 7 - InstallWin7.iso
  • Windows XP Home - Install_XP_Home.iso
  • Windows XP Pro - Install_XP_pro.iso
  • Windows XP 64 - Install_XP_x64.iso

ISO folder


5) Execute sardu.exe, notice that your Windows installer has been detected by SARDU.

Windows installers detected


6) Plug in your USB thumb/pen/whatever you may call it drive and click "Search USB" button. Make sure it's using FAT32 file system (otherwise you may need to re-format it).

USB device detected


7) Once your USB pendrive detected, click button with pendrive icon to start the process.

Processing...


8) Once completed, close SARDU and unplug your USB pendrive. Plug it into any machine that support boot up via USB, restart and press boot menu key (F12 for Dell). Select USB device and you're in.

SARDU boot menu


Note:
Tested with Windows XP Pro and Windows 7 Ultimate 32-bit installer.

If you just need Windows XP installer, 1 GB pendrive should be sufficient enough.

For Linux users, MultiSystem does support Windows 7 and XP installer via syslinux and grub4dos option respectively. However from my test result, it only works for Windows 7. No luck for XP.

Update (14/04/2011)
I forgot to mention that if you want to install XP on SATA hard disk, you need to slipstream the driver into the installer. This can be done via nLite. Reference to SATA drivers for XP. However, I'm still unable to make my slipstreamed installer works.

Update (15/04/2011)
It's difficult to test the slipstreamed installer on VirtualBox. Solved the first BSOD by changing disk type from IDE to SATA. Second BSOD (happened at second stage) might be due to the different type of SATA driver required by VirtualBox. Wish I could get a real machine soon.

Update 2 (15/04/2011)
Slipstreamed installer works!!! Tested on real SATA hard disk. Perfect solution for netbook (USB pendrive + XP installer + SATA drivers).

Tuesday, April 12, 2011

Converting XP into kiosk...

Screenshots...


Last week I've been assigned with mini project on how to setup a kiosk machine (well, sort of). Instead of spending money for the right tool (which could save time), the manager kept pushing for the free alternative route. The worst part is, company web portal can only be access via IE7+ (common case for local company) which means no Linux on the list.

The only option that I have in hand was to use Windows XP with IE8. To strip down the OS features it would be easy to use Group Policy (gpedit.msc) however the changes will affect all users. So whether I want it or not, I need to tweak the registry for kiosk user. I've set the machine with two users:

1) administrator - for pc maintenance
2) demo - kiosk user

For now, kiosk user is in admin group. Log into the machine as kiosk user and hide the icon from desktop via right click menu. Then open the registry (run -> regedit). Here's the steps:

1) Go to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ and add DWORD values below (leave NoRun = 0 for now, change it to 1 once everything is done)
NoStartMenuMFUprogramsList = 1
NoStartMenuMorePrograms = 1
NoWindowsUpdate = 1
NoStartMenuMyMusic = 1
NoSMMyPictures = 1
NoFavoritesMenu = 1
NoRecentDocsMenu = 1
DisableMyPicturesDirChange = 1
DisableMyMusicDirChange = 1
DisableFavoritesDirChange = 1
NoSMMyDocs = 1
DisablePersonalDirChange = 1
ClearRecentDocsOnExit = 1
NoNetworkConnections = 1
NoStartMenuNetworkPlaces = 1
NoRecentDocsNetHood = 1
NoSMHelp = 1
NoFind = 1
NoResolveSearch = 1
NoResolveTrack = 1
StartMenuLogoff = 1
NoStartMenuEjectPC = 1
NoChangeStartMenu = 1
NoSetTaskbar = 1
NoInstrumentation = 1
NoUserNameInStartMenu = 1
NoToolbarsOnTaskbar = 1
NoViewContextMenu = 1
NoSMConfigurePrograms = 1
NoTrayItemsDisplay = 1
NoTrayContextMenu = 1
Nologoff = 1
NoSetFolders = 1
NoRun = 0

2) In the same location, change value for NoDriveTypeAutoRun to b1

3) Now add two keys (NonEnum and System) under HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\. I'll have a structure like below
    HKEY_CURRENT_USER
        \Software
            \Microsoft
                \Windows
                    \CurrentVersion
                        \Policies
                            \Explorer
                            \NonEnum
                            \System

4) Remove "My Computer" from Startup Menu, go to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum\ and add DWORD value below (don't ask me why it's been named with guid)
{20D04FE0-3AEA-1069-A2D8-08002B30309D} = 1

5) Disable "Task Bar" and "Lock Workstation", go to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System and add DWORD values
DisableTaskMgr = 1
DisableLockWorkstation = 1

6) Disable BalloonTip, hide "Control Panel" and hide "Printers and Faxes", go to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ and add DWORD values
ShowInfoTip = 0
StartButtonBalloonTip = 0
Start_ShowControlPanel = 0
Start_ShowPrinters = 0

7) Disable "System Standby", go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ACPI\Parameters\ and add DWORD value
Attributes = 70

8) Disable "Window Key" and "F1", go to \HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layout\ and add Binary value below
Scancode Map = 00,00,00,00,00,00,00,00,03,00,00,00,50,E0,5B,E0,48,E0,3B,00,00,00,00,00

Reboot the machine and test the changes. Once everything okay, re-open regedit and change the value for NoRun to 1

To strip features from IE (such as SaveAs, Print etc), log into the machine as admin and set it via Group Policy (gpedit.msc). Finally, remove kiosk user (demo) from Administrators and add it into Guests and Remote Desktop Users group. Now I have a so called kiosk machine.

Welcome to my outdated world!!!

Update (18/04/2011)
After putting so much efforts into making this a reality, I've stumbled upon this link on How to Put Windows XP in Kiosk Mode. Though I haven't try it yet, but the solution is damn simple. Argh!!!! I'm pulling off my hair now...

Sunday, April 10, 2011

Batch process images plugin for Gimp...

To install
    sudo apt-get install gimp-plugin-registry
If you prefer GUI installer, open Synaptic, search for gimp batch and mark for installation

Synaptic


To use the plugin, open Gimp and go to Filters -> Batch -> Batch Process... menu

GIMP batch process plugin


Add files to be process at Input tab

Input tab


Set value to whichever tab processes that you need and set the image type at Output tab (default is .bmp).

Resize tab


Click Start button.

Note:
Tested with GIMP v 2.6.10 on Linux Mint 64-bit.

Thursday, March 24, 2011

Installing Firefox 4 on Ubuntu...

1) Adding ppa to repositories
    $ sudo add-apt-repository ppa:mozillateam/firefox-stable
2) Update repository
    $ sudo apt-get update
3) Reinstall package to latest version
    $ sudo apt-get --reinstall install firefox
Note:
Tested on Ubuntu 10.04 32-bit and Linux Mint 10 64-bit.

Wednesday, March 16, 2011

Auto activate Slimbox 2 on Blogger...

Why I switched to Slimbox 2?
  • No issues when using with latest jQuery library on IE8.
  • Small footprint.
  • Centers images vertically on startup, not just horizontally.

Installation steps
1) Download the plugin from here.

2) Extract the file.

3) Upload images in \slimbox-2.04\css to Picasa Web Albums.

4) Login to your Blogger Dashboard.

5) Go to Design > Page Elements, add two HTML/JavaScript gadgets and place it below header.

6) Open \slimbox-2.04\css\slimbox2.css, copy the content and paste it into first HTML/JavaScript gadget (within <style> tag) and save changes. Note, need to tweak images url in css so that it'll point to our image in Picasa Web.
    <style type="text/css">
    /* paste \slimbox-2.04\css\slimbox2.css content here */
    </style>
7) Open \slimbox-2.04\js\slimbox2.js, copy the content and paste it into second HTML/JavaScript gadget (within <script> tag) and save changes.
    <script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>

    <script type="text/javascript">
    /* paste \slimbox-2.04\js\slimbox2.js content here */
    </script>
8) Save changes to Page Elements.

Auto activation
Slimbox 2 provide an auto activation script within the distribution for convenient use. Here's how to:

1) Open \slimbox-2.04\extra\autoactivation.js and copy the content.

2) On Blogger, go to Design > Page Elements. Open second HTML/Javascript gadget that contains Slimbox JS. Replace the code block below with the one from autoactivation.js.
    // AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
    if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) {
        jQuery(function($) {
            $("a[rel^='lightbox']").slimbox({/* Put custom options here */}, null, function(el) {
                return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
            });
        });
    }
3) Save changes.

Note:
I've used autoactivation.js but somehow it didn't grouped my images correctly. Something might be wrong from my side. For now, I'm using my own auto activation code below. Not as elegant as the one that came from Slimbox, but at least it works for me.
    <script language="javascript" type="text/javascript">

    ...

    if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) {
        jQuery(function($) {
            $('div.post-body').each(function() {
                var $postbody = $(this);
                var index = $('div.post-body').index(this);
                $('a[href*=".jpg"],a[href*=".png"],a[href*=".gif"]', $postbody).each(function() {
                    var $div = $(this).parent();
                    var $title = $('p', $div);
                    var htmltext = $title.html() != null ? $title.html() : '';
         
                    if($(this).attr('onblur')) { $(this).removeAttr('onblur'); }
         
                    var hrefval = $(this).attr('href');
                    $(this).attr('href', hrefval.replace('s1600-h', 's1600'));
         
                    if(!$(this).attr('rel')) { $(this).attr('rel', 'lightbox-album' + index); }
                    if(!$(this).attr('title')) { $(this).attr('title', htmltext); }
                });
            });

            $("a[rel^='lightbox']").slimbox({/* Put custom options here */}, null, function(el) {
                return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
            });
        });
    }
    </script>
Update (17/03/2011)
Found out that the combination of Slimbox 2, jQuery 1.5.1 and SyntaxHighlighter 3 will caused the image viewer to stop working on IE8 (only IE8). Removed SyntaxHighlighter will solve the problem. I need to find a better way to fix this.

Tuesday, March 15, 2011

Changing default Blogger icon...

The solution is quite simple.

1) Login to dashboard.

2) Go to Design -> Edit html (please backup your template before you make any changes).

3) Search for </head> tag.

4) Paste the code below on top of </head> tag.
    <link href='your icon url' rel='shortcut icon' type='image/x-icon'/>
5) Save Template.

It'll be great if you could find a good hosting for your icon. Picasa Web won't allow us to upload .ico file. ImageBoo does provide free hosting for icon however it's been blocked by proxy at my office (plus I've read some negative feedback somewhere about the service, then decided to use other alternative). Icon generated by IconJ was kind of ugly (probably to encourage people opting for the premium service).

Alternatively you could use .png image as your icon (which can be hosted on Picasa). However, it'll only work with Google Chrome and Mozilla Firefox. No luck for IE.

Update (02/05/2011)
Icon file can be hosted at Google Sites.

Saturday, March 12, 2011

Auto activate lightBox on Blogger...

So, you have successfully installed jQuery lightBox plugin on your Blogger. Now the toughest part would be applying rel="lightbox" attribute to all your images (not to forget image grouping rel="lightbox[album-n]"). It's going to be a pain process if you have 50+ images in an n amount of posts. Worst, post from old editor required two more extra steps (removing onblur attribute and renaming s1600-h to s1600).

Using jQuery, this process can be automatically done without the need to change on html code. Here's the steps:

Prerequisites:
jQuery 1.3.2, later version will cause problems with this plugin on IE8 (use latest version if you plan to ignore IE8).

Steps:
1) Login to your Blogger Dashboard.

2) Go to Design > Page Elements.

3) Open the third HTML/JavaScript gadget as mentioned in my previous post (create a new one if you've installed the plugin by other methods).

Page Elements


4) Replace the old script with the new one below (assuming you've added the link to jQuery library before, otherwise add the link on top of the script below).
    <script type="text/javascript">
    $(document).ready(function() {
        $('div.post-body').each(function() {
            var $postbody = $(this);
            var index = $('div.post-body').index(this);
            
            $('a[href*=".jpg"],a[href*=".png"],a[href*=".gif"]', $postbody).each(function() {
                var $div = $(this).parent();
                var $title = $('p', $div);
                var htmltext = $title.html() != null ? $title.html() : '';

                if($(this).attr('onblur')) { $(this).removeAttr('onblur'); }

                var hrefval = $(this).attr('href');
                $(this).attr('href', hrefval.replace('s1600-h', 's1600'));

                if(!$(this).attr('rel')) { $(this).attr('rel', 'lightbox[album' + index + ']'); }
                if(!$(this).attr('title')) { $(this).attr('title', htmltext); }
            });
        });

        $('a[rel^=lightbox]').lightBox({
            imageLoading: 'your-url/lightbox-ico-loading.gif',
            imageBtnClose: 'your-url/lightbox-btn-close.gif',
            imageBtnPrev: 'your-url/lightbox-btn-prev.gif',
            imageBtnNext: 'your-url/lightbox-btn-next.gif',
            imageBlank: 'your-url/lightbox-blank.gif'
        }); 
    });
    </script>
5) Save changes.

Explanation:
1) Once page load completed, script will query for all <DIV>s that use post-body (you might need to change the script if you're using non-standard Blogger theme) css class.

2) Search an <A> elements with href value contains ".jpg", ".png" and ".gif" (case sensitive, add the uppercase value if needed) in each <DIV>.

3) Search <P> element for retrieving image title (this is for the structure that I've use like shown below). If none exist it'll return an empty string (compatible with other structure).
    <div>
        <a href="">
            <img src="" />
        </a>
        <p>title</p>
    </div>
4) Remove onblur attribute from <A> element if exist.

5) Rename "s1600-h" to "s1600" on <A> href attribute value.

6) Adding rel and title attribute to <A> element if none exist. Otherwise, leave an existing value.

Test:
1) Click image on any post and you'll see Lightbox in action.

2) One image group per post.

This might not be the best solution. Feedback and comment are most welcome.

Note:
Tested with images posted from both new and old editor. Using Google Chrome, Firefox, IE7, IE8 and IE9 RC.

Update (13/03/2011)
This auto activation script will not work with lightBox JS version. This is due to conflict between the JS version and jQuery library.

Update (14/03/2011)
Script updated. Added ".gif" to selector.

Friday, March 11, 2011

Installing jQuery lightBox plugin on Blogger...

First of all thanks a lot to:

Now, here's the steps required to install jQuery lightBox plugin on Blogger

Pre-installation steps
1) Download the plugin from here.

2) Extract the zip file.

3) Upload images in \jquery-lightbox-0.5\images to Picasa Web Albums.

4) Open \jquery-lightbox-0.5\js\jquery.lightbox-0.5.js.

5) Go to line 79 and replace the code below
    // Add an Array (as many as we have), with href and title atributes, inside the Array that storage the images references
    for ( var i = 0; i < jQueryMatchedObj.length; i++ ) {
        settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title')));
    }
with this code and save changes
    // Add an Array (as many as we have), with href and title atributes, inside the Array that storage the images references
    for ( var i = 0; i < jQueryMatchedObj.length; i++ ) {
        if(jQueryMatchedObj[i].getAttribute('rel')==objClicked.getAttribute('rel')) {
            settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title')));
        }
    }
Installation steps
1) Login to your Blogger Dashboard.

2) Go to Design > Page Elements, add three HTML/JavaScript gadgets and place it on top of Blog Posts like shown below.

Page Elements


3) Open \jquery-lightbox-0.5\css\jquery.lightbox-0.5.css, copy and paste the content (within <style> tag) into the first gadget and save the changes.

4) Open \jquery-lightbox-0.5\js\jquery.lightbox-0.5.js, copy and paste the content (within <script> tag) into the second gadget and save the changes. Don't forget to add link to jQuery library like shown below. Use jQuery 1.3.2, later version will cause problems with this plugin on IE8 (use latest version if you plan to ignore IE8).
    <script language='javascript' type='text/javascript' src='http://code.jquery.com/jquery-1.3.2.min.js'></script>
    
    <script language="javascript" type="text/javascript">
    // this is where you paste the content of \jquery-lightbox-0.5\js\jquery.lightbox-0.5.js
    </script>
5) For the third gadget, copy and paste the code below then save the changes.
    <script type="text/javascript">
    $(document).ready(function() {
        $('a[rel^=lightbox]').lightBox({
            imageLoading: 'your-url/lightbox-ico-loading.gif',
            imageBtnClose: 'your-url/lightbox-btn-close.gif',
            imageBtnPrev: 'your-url/lightbox-btn-prev.gif',
            imageBtnNext: 'your-url/lightbox-btn-next.gif',
            imageBlank: 'your-url/lightbox-blank.gif'
        }); 
    });
    </script>
Test the plugin.
1) Edit any post with image.

2) Add rel and title to image href.
    <a href="your image" ... rel="lightbox" title="title">
        <img src="your thumbnail image" />
    </a>
    
    <-- for grouping -->
    <a href="your image" ... rel="lightbox[album]" title="title">
        <img src="your thumbnail image" />
    </a>
3) For html generated from old editor, you need to remove onblur attribute and rename s1600-h to s1600 in the url.
    <-- change the html from this -->
    <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jkdsue/AAAABB/s1600-h/someimage.jpg" ...>
        <img src="your thumbnail image" />
    </a>
    
    <-- into this -->
    <a href="http://1.bp.blogspot.com/_jkdsue/AAAABB/s1600/someimage.jpg" ... rel="lightbox" title="title">
        <img src="your thumbnail image" />
    </a>
4) Save changes and view your post. Click the image and you should see lightbox in action.

Next, I'll post on how to auto activate lightBox on Blogger. Feedback and comment are most welcome.

Wednesday, March 9, 2011

USB startup disk creator for Linux and Windows...

Info: If you're searching for "how to create Windows USB installer", click here.

When started playing with Linux distro, I realized that I need to have a lot of blank CDs / DVDs so that I can burn the downloaded iso image and test the LiveCD on my machine (to make sure all the devices working as expected before installing). End up with a lot of cd / dvd installers that been used once and forgotten. Then, saw an option to use USB pendrive as an installer. At initial stage the process was quite tedious, but now since the technology has matured there's a lot of tools available that can do the process easily. I'll list down a few of it for reference. Some history about Live USB.

Prerequisites:
  • Fat32 Formatted Flash Drive
  • PC that can boot from USB

Name: UNetbootin
Platform: Linux / Windows

Summary:
"UNetbootin allows you to create bootable Live USB drives for Ubuntu, Fedora, and other Linux distributions without burning a CD. It runs on both Windows and Linux. You can either let UNetbootin download one of the many distributions supported out-of-the-box for you, or supply your own Linux .iso file if you've already downloaded one or your preferred distribution isn't on the list."

My comment:
The most famous one.
Name: MultiSystem
Platform: Linux

Summary:
"Multisystem enables a LiveUSB to do everything, ideal for exploring different Linux distributions without installing on your PC, and it seamlessly; or to install the Linux distribution of your choice on your PC much faster than via a LiveCD with fast USB 2.0 ports Essential throughout the current range of netbooks that have no CD drive."

My comment:
My favorite one. Love the ability to bundle multiple distros and had a GRUB menu as a selection to which distro to be use.
Name: Ubuntu Live USB creator
Platform: Linux

Summary:
"Ubuntu Live USB creator (usb-creator) is an official tool to create Live USBs of Ubuntu from the Live CD or from an iso image. The tool is by default included in all releases after Ubuntu 8.04, and can be installed on Ubuntu 8.04. A KDE frontend was released for Ubuntu 8.10, and is currently included by default in Kubuntu installations. To run the current version on Ubuntu or other distributions, enter either usb-creator-gtk or usb-creator-kde at the command line."

My comment:
First tool that I've used for the task.
Name: SARDU
Platform: Windows

Summary:
"Shardana Antivirus Rescue Disk Utility (Sardu) is software that can produce an ISO or an IMA anti-virus bootable CD, a comprehensive collections of utilities, the most popular distributions of Linux Lite, and the best known Windows PE. It is freeware (it is licensed as an individual ISO / IMA). Once the files are extracted Sardu creates a CD / DVD or USB bootable device with a handy menu divided into four categories: Antivirus, Utilities, Linux, and PE."

My comment:
Seems to me this is the best tool available on Windows platform. You can also have the recovery disk for XP, Vista, Seven or XP (64bit, Professional or Home) in a practical multi-boot menu. Definitely going to try with this one.
Name: Universal USB Installer
Platform: Windows

Summary:
"Universal USB Installer is a Live Linux USB Creator that allows you to choose from a selection of Linux Distributions to put on your USB Flash Drive. The Universal USB Installer is easy to use. Simply choose a Live Linux Distribution, the ISO file, your Flash Drive and, Click Install."

My comment:
An option for Windows user. One Distribution can be installed at any given point in time.
Name: MultiBoot USB
Platform: Windows

Summary:
"MultiBootISOs enables each user to create their own custom Multiboot UFD containing only the Distributions they want. New Distributions can be added to your UFD each time the tool is run."

My comment:
Same feature as MultiSystem but for Windows user. One thing that attract me to this tool was the ability to put Windows Vista / 7 installation disk into the USB. I haven't try this one yet.

Update (02/04/2011)
Tested the tools for Windows platform. Personally I would say SARDU is the best tool available for Windows.

Monday, March 7, 2011

PowerShell cmdlet aliases similar to Bash...

CmdLet Alias Bash
Get-ChildItem gci, dir, ls ls
Get-Content gc, type, cat cat
Get-Command gcm which
Get-Help help, man man
Clear-Host cls, clear clear
Copy-Item cpi, copy, cp cp
Move-Item mi, move, mv mv
Remove-Item ri, del, erase, rmdir, rd, rm rm, rmdir
Rename-Item rni, ren, mv mv
Get-Location gl, pwd pwd
Pop-Location popd popd
Push-Location pushd pushd
Set-Location sl, cd, chdir cd
Tee-Object tee tee
Write-Output echo, write echo
Get-Process gps, ps ps
Stop-Process spps, kill kill
Select-String n/a grep
Set-Variable sv, set set

Copied from Wikipedia.

Wednesday, March 2, 2011

Compacting/Shrinking virtual disk image...

Working on virtual machine with dynamic virtual disk gives an advantage to those with limited disk space. But after using it for a while (install/uninstall/copy/paste/delete), the actual size of your virtual disk image may have grown to nearly defined size, guest system reported that the disk usage was less than the size reported on host system. It should be fine provided if you have larger disk space. However, if that's not the case, than the best option would be to compact (known as shrink in VMWare) the virtual disk image.

In general, 3 steps are required to achieve this task
1) Disk cleanup / Defrag the hard drive on guest system

2) Execute "sdelete -c" to zero the free disk space before compressing the virtual disk image (sdelete tool was provided by Microsoft) on guest system
    > sdelete -c [drive letter]
3) Compact the virtual disk image

VirtualBox user
Execute VBoxManage command on host system
    $ VBoxManage modifyhd [filename] --compact
VMWare user
Shrinking needs to be done on guest system. Complete the first two steps above then:
1) Open VMWare tools by right click VM icon in system tray

2) Go to Shrink tab, under supported partitions, check the mount point checkbox

VMWare Tools Properties


3) Click "Prepare to shrink" and once ready, click "Yes" to proceed

Preparing shrink process


Ready to go


Shrinking in progress


If everything working as expected, virtual disk usage on both guest and host should be ~same

Note:
Test environment
Host: Linux Mint 10 64-bit
VirtualBox guest: Windows Server 2003 32-bit
VMWare guest: Windows 7 Profesional 64-bit

Wednesday, February 23, 2011

Dexpot, undoubtedly the best virtual desktop solution for Windows...

When first introduced to Linux, things that excited me most are virtual desktop and semi transparent terminal. However due to my lack of knowledge on Linux makes me a person who wish that one day these features will be available on Windows.

Fast forward nine years later. Things that makes me eager to learn Linux again was virtual desktop (this time with cube via compositing window manager) and an alternative solution to avoid virus. Now I'm a Linux user at home. For work however, I'm still bond to Windows.

Used to worked in a company that provide me desktop with dual 19" widescreen monitor makes me a happy camper for Windows. Unfortunately, at my current working place I've been given a laptop with 13.3" screen. Struggling for months adjusting my eyes to the small desktop working area.

Desperately looking for virtual desktop solution for Windows (freeware). Came across to VirtualWin and mDesktop. A powerful tools and sufficient enough to do the job. However after using it for couple of months, it felt like I'm back in 90s where 4 boxes act as a deskstop switcher.

I want something similar to modern Linux. Something with animation. Google for best virtual desktop managers and found Dexpot. Finally, a dream come true (though not officially came from Microsoft, but who cares...). Virtual desktop manager for Windows with cube and wall effect as plugins. Not as perfect as Compiz on Linux but I'm happy with it on Windows.

Desktop Cube


SevenDex


Desktop Preview


Plugins and Extras settings


The sheer number of options can be a little overwhelming, but they are all neatly organized in a way that best befits this tool. You can setup shortcuts (but the defaults of Alt-1, Alt-2, etc. are about as fast and convenient as shortcuts get).

Information
Current version: 1.5.8 Build 1434
Download size: 3.89 MB
Release date: December 13th 2010
Platform: Windows 2000/XP/2003 and Vista/2008/7 (incl. x64)

Disable Touchpad while typing in Windows 7...

For Ubuntu / Linux Mint there's a built-in function to disable touchpad while typing. Unfortunately this feature is unavailable in Windows 7, after did some googling I've found one great and handy tool called TouchFreeze. Problem solved :)

Tuesday, February 22, 2011

Visual Studio 2005 compatibility issue with Windows 7...

After installing VS 2005 on Windows 7, I got this error message when try to run it for the first time

"Visual Studio 2005 SP1 requires an update for Windows Vista"

Solution:
Download SP1 Update here: http://go.microsoft.com/?linkid=6366078 and run the installer in administrator mode.

Tip:
If you are trying to debug web projects, you need to make sure that you go to the Add/Remove Windows Components in Control Panel and install the IIS6 Compatibility with IIS7 option, otherwise you won’t have much luck.

Note:
Tested on Windows 7 Professional 32bit

Sunday, February 20, 2011

How to rip an mp3 audio from YouTube video...

Packages required, ffmpeg and libavcodec-extra-52
    $ sudo apt-get install ffmpeg libavcodec-extra-52
The easiest way is to run the command below. Note that -ab is an option for audio bitrate
    $ ffmpeg -i uverworld.flv -ab 192k uverworld.mp3
If you prefer GUI, you can use VLC. Below is a step by step screenshots

Click save item in playlist


Select mp3 profile and click Start button


If you want to change audio bitrate, click edit profile button, set bitrate, Save changes and Start the process


Note:
Tested on Linux Mint 10 64-bit.

Thursday, February 17, 2011

How to change Windows 7 logon background image (no regedit)...

Custom background


1) Go to Start menu and in the search box type gpedit.msc, then press enter

2) Once the window with title "Local Group Policy Editor" appear, on the right side panel, click Computer Configuration -> Administrative Templates -> System -> Logon

3) Double click on "Always use custom logon background" and set it to Enabled, then click OK button

4) Now open Windows Explorer, go to C:\Windows\System32\oobe

5) Create new folder and rename it as Info

6) Create a subfolder for Info and rename it as backgrounds. You should have a structure like below
    C:\Windows\System32\oobe\Info\backgrounds

7) Copy your favorite image file to this folder and rename it as backgroundDefault. Image must be in JPG format and the size should be less than 256 KB.

8) Restart your machine

Note:
Tested on Windows 7 Professional 64bit and Windows 7 Ultimate 32bit with 1920x1080 dimension image.

Monday, February 14, 2011

How to download YouTube videos on Linux...

Package required, youtube-dl
    $ sudo apt-get install youtube-dl
Command to download
    $ youtube-dl [options] video_url
If you're getting an error as "ERROR: unable to download video (format may not be available)", get latest version of youtube-dl from github.

Set execute permission
    $ chmod +x youtube-dl-latest
Execute the latest version script to download video
    $ ./youtube-dl-latest [options] video_url
Note:
Tested on Linux Mint 10 64-bit.

Update (13/03/2011)
Found out an easy way. Install video download helper addon for Mozilla Firefox. Works perfectly on both Linux and Windows.

Saturday, February 12, 2011

*NSync Linux and Robocop Windows...

A command line to copy a folder while excluding some of it subfolders
rsync (brain mapping to nsync) in Linux
    rsync -IrW --stats --exclude=.svn /path/to/project/dir/ //testsrv/whatever
robocopy (brain mapping to robocop) in Windows
    robocopy \path\to\project\dir \\testsrv\whatever /MIR /XD .svn
copied from Rizal's blog post.