Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Thursday, December 3, 2009

Use one keyboard and mouse on multiple cross platform computers



synergy: [noun] a mutually advantageous conjunction of distinct elements

Synergy lets you easily share a single mouse and keyboard between multiple computers with different operating systems, each with its own display, without special hardware. Redirecting the mouse and keyboard is as simple as moving the mouse off the edge of your screen. Synergy also merges the clipboards of all the systems into one, allowing cut-and-paste between systems.

I have this old computer that as use as a backup and multimedia server. I have hooked it to an overhead projector and a decent sound system, now you know what I am up to over the weekends. For all this time ssh and Remote Desktop Viewer have served me very faithully. But I started wondering is this it, can I use my mouse and keyboard on both machines but on different displays, and lo and behold, ladies and gentlemen I present to you Synergy.
So lets get to it.

Scenario

There is a Dell (Inspiron 1520) aka WorkStation, running Ubuntu 9.10 also the Synergy server and as a second machine, home built server aka Storage running Ubuntu 8.04LTS.
WorkStation: Side [left] | Hostname [feruzi.trilabs.co.tz] | IP Address [192.168.3.10]
Storage: Side [right] | Hostname [storage.trilabs.co.tz] | IP Address [192.168.3.9]

Installing from the Command Line

Start the terminal (you can also use Synaptic Package Manager) and run the following command on both machines.
$ sudo aptitude update && sudo aptitude install synergy
PLEASE NOTE: For MS Windows and MacOS users visit the site for more information.

Configuring the Synergy server

In your home directory create a file called
synergy.conf
and in in it is where the configureation for my set up.
section: screens
 feruzi.trilabs.co.tz:       
 storage.trilabs.co.tz:
end
section: aliases
 feruzi.trilabs.co.tz:
    192.168.3.10
 storage.trilabs.co.tz:
    192.168.3.9
end
section: links
 feruzi.trilabs.co.tz:
    right = storage.trilabs.co.tz
 storage.trilabs.co.tz:
    left = feruzi.trilabs.co.tz
end
section: options
 screenSaverSync = false 
end

section: screens

Screen section is a list of screen names, one name per line, each followed by a colon. Names are arbitrary strings but they must be unique. The hostname of each computer is recommended, and that is what I have used.

section: aliases

aliases section is a list of screen names just like in the screens section except each screen is followed by a list of aliases, one per line, not followed by a colon. An alias is a screen name and must be unique. During screen name lookup each alias is equivalent to the screen name it aliases. Because my DNS was not setup properly I assigned it to my IP address.

section: links

links section is a list of screen names just like in the screens section except each screen is followed by a list of links, one per line. Each link has the form {left|right|up|down}[] = name[]. A link indicates which screen is adjacent in the given direction. So on the right of feruzi.trilabs.co.tz there is storage.trilabs.co.tz and on the left of storage.trilabs.co.tz there is feruzi.trilabs.co.tz.
PLEASE NOTE: There is more you can do here, again visit the site for more information.

section: options

options section is a list of lines of the form name = value. These set the global options. There is a lot of other options you can set, visit the site for more information.

Starting up Synergy server and clients


To start up the server, on feruzi.trilabs.co.tz run the following command,
$ synergys -f --config synergy.conf
the output should be something like this, depending on your setting and operating systems.
INFO: synergys.cpp,1042: Synergy server 1.3.1 on Linux 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 2009 i686
DEBUG: synergys.cpp,1051: opening configuration "synergy.conf"
DEBUG: synergys.cpp,1062: configuration read successfully
DEBUG: CXWindowsScreen.cpp,847: XOpenDisplay(":0.0")
DEBUG: CXWindowsScreenSaver.cpp,339: xscreensaver window: 0x00000000
DEBUG: CXWindowsScreen.cpp,117: screen shape: 0,0 1280x800 
DEBUG: CXWindowsScreen.cpp,118: window is 0x04800004
DEBUG: CScreen.cpp,38: opened display
DEBUG: CXWindowsScreen.cpp,679: registered hotkey ScrollLock (id=ef14 mask=0000) as id=1
NOTE: synergys.cpp,500: started server
INFO: CServer.cpp,1141: screen "feruzi" shape changed

And the cliet, in this case on storage.trilabs.co.tz, ssh into the client machine and run the following command and we are ready to rumble.
$ synergyc -f --name storage 192.168.3.10
the output should be something like this, depending on your setting and operating systems.
INFO: synergyc.cpp,716: Synergy client 1.3.1 on Linux 2.6.27-15-generic #1 SMP Tue Oct 20 06:52:09 UTC 2009 i686
DEBUG: CXWindowsScreen.cpp,841: XOpenDisplay(":0.0")
DEBUG: CXWindowsScreenSaver.cpp,339: xscreensaver window: 0x00000000
DEBUG: CXWindowsScreen.cpp,111: screen shape: 0,0 1400x1050 
DEBUG: CXWindowsScreen.cpp,112: window is 0x03000004
DEBUG: CScreen.cpp,38: opened display
NOTE: synergyc.cpp,330: started client
DEBUG: CXWindowsClipboard.cpp,313: open clipboard 0
DEBUG: CXWindowsClipboard.cpp,266: empty clipboard 0
DEBUG: CXWindowsClipboard.cpp,289: grabbed clipboard 0
DEBUG: CXWindowsClipboard.cpp,348: close clipboard 0
DEBUG: CXWindowsClipboard.cpp,313: open clipboard 1
DEBUG: CXWindowsClipboard.cpp,266: empty clipboard 1
DEBUG: CXWindowsClipboard.cpp,289: grabbed clipboard 1
DEBUG: CXWindowsClipboard.cpp,348: close clipboard 1
NOTE: synergyc.cpp,247: connected to server

And that is it. Have fun, questions and comments are welcome.

Monday, October 5, 2009

Backup with mysqldump with PHP

Have you ever wanted to create a script a script that will create a mysqldump of a database using PHP? Here is a good starting point. More can be done to extend this to make it more useful, things like emailing the dump, restoring the database on fly and so much more.

There is a minor difference between the script for a server running on MS Windows as compate to the Linux/UNIX

MS Windows: XAMMP or WAMP

/* variable declaration */
$db_user = "yourUsername";
$db_password = "yourPassword";
$db_database = "yourDatabaseName";
$db_server = "yourHostName"; //default: localhost
$backup_path = "C:\\path\\to\\backup\\folder\\";
//e.g $backup_path = "C:\\backups\\sqldumps\\";
$path_to_mysqldump = "C:\\path\\to\\mysql\\bin\\";
//e.g $path_to_mysqldump = "C:\\xampp\\mysql\\bin\\";
$filename = "backup".date("YmdHis").".sql"; //filename with a timestamp

/*construction the command to be run */
$command= "$path_to_mysqldump\\mysqldump.exe --add-drop-table --add-drop-database -h $db_server -u $db_user --password=$db_password $db_database > $filename ";

/* excution of the command */ 
exec($command, $dump, $status); 

/*checking the status of the command after runing */
if($status!=0){
echo "The execution was not successful. An empty file has been created";
}else{
echo "The execution was successful. Backup files is " . $backup_path.$filename ;
}

Linux/UNIX
* variable declaration */
$db_user = "yourUsername";
$db_password = "yourPassword";
$db_database = "yourDatabaseName";
$db_server = "yourHostName"; //default: localhost
$backup_path = "/path/to/backup/folder/"; //you must have permission to write in this folder
//e.g $backup_path = "/servers/backups/sqldumps/"; 
$filename = $backup_path."backup".date("YmdHis").".sql"; //filename with a timestamp

/*construction the command to be run */
$command= "mysqldump.exe --add-drop-table --add-drop-database -h $db_server -u $db_user --password=$db_password $db_database > $filename ";

/* excution of the command */ 
exec($command, $dump, $status); 

/*checking the status of the command after runing */
if($status!=0){
echo "The execution was not successful. An empty file has been created";
}else{
echo "The execution was successful. Backup files is " . $backup_path.$filename ;
}

Differences highlighted:
  • in windows it, unless you have added the mysql bin to the path, you must specify the full path to the mysqldump.exe, as in Linux it accessible with out the full path
  • also the \\ used in the path, as in Linux we use /
  • in Linux remember you mush have write asses to the folder you are

Friday, July 24, 2009

Watermark your Videos

fsp:Creative Series

Have you ever wanted to watermark your video with your name or company or whatever? I mean like how YouTube stamps its logo an all videos, it is easy that I thought. I have been working on it for a good one hour and guess what it works and its not rocket science, even I can do it.



Platform: the tools used
  • platform: Ubuntu Jaunty (9.04)
  • media player: mplayer
  • image editor: gimp
  • watermarking tool: ffmpeg using the vhook library
NOTE: The default ffmpeg on the Ubuntu repository does not have vhook enabled. You may have get the source code and compile it with vhook enabled.

Compiling ffmpeg
  1. Download the ffmpeg
  2. Untar it: tar jxfv ffmpeg-xx.xx.tar.bz2
  3. Get into the untared folder: cd ffmpeg-xx.xx/

  4. Configure with the vhook enabled: ./configure --enable-gpl --enable-nonfree --enable-vhook. Run ./configure --help to get a full list of options. NOTE: the . in the commands above is part of the command, so put it there.
  5. Compile and Install: make && make install
  6. vhook files will be located in the /usr/local/lib/vhook
Ingredients: the verges and spices
  • video to be watermarked:
  • the image to watermark the video. NOTE: the image background must be of color: #808080 and of the same size as the video.
Creating the watermarking images
  1. Play the video from the console/terminal to get the size of the video: mplayer thetrain.mpg
  2. Read the size of the video from the info displayed when mplayer loads the video, see the image below.
  3. So the create an image with the same size as the video, in this case it is 640x480 pixels. Remember the background of the image must be #808080, then add all that you want. Here is mine.
  4. Now we set, its time to cook

Cooking: frying and boiling
  • To make it easy, put all the ingredients in on pot, oops sorry, in one folder. The naviget on the terminal to that folder. Here is the generic structure of the command to watermark: ffmpeg -sameq -i original-video -vhook 'path-to-watermark.so-library -f overlaying-image' output-file. The sameq force the ffmpeg to maintain the same quality in and out. There is my cooking: ffmpeg -sameq -i thetrain.mpg -vhook '/usr/local/lib/vhook/watermark.so -f overlayer.png' thetrain.fsp.mpg.
  • Prepare the table and save the food. Use mplayer to try your newly watter marked file

Delicious: what goes to the table

See what we served on the table



Try It and tell me! Have fun guys!.






Monday, July 20, 2009

Linux threatens giants in the smart phone arena

If you do not have one and you are CEO, the your company is a start up and we understand. What is it? It is a smart phone. According to Wikipedia, a smart phone is a mobile phone offering advanced capabilities, often with PC-like functionality. Today these come in all shapes and sizes. With features ranging from touch screen to office document applications, smart phone as moved office into people hands.

But what of under the hood, what is happening there? In a much as the normal user will not bother about what goes in the hood, at times its good to see who are the major players there. For a while Mac with the iPhone series rules that area. But it was not long before BlackBerry, HTC, Nokia and others join the race and made it very difficult for me to choice a smart phone. This is why I am still sticking to my “cellphone”.

If you are like me, if its not open source then its not for me. This philosophy has kept with the SonyEricson K320i for a years. I have been looking and following what is happening out there and now I can say I have options that are good enough to make iPhone and friends work overtime.

Openmoko is a project dedicated to delivering mobile phones with an open source software stack. Openmoko is currently selling the Neo FreeRunner phone to advanced users and will start selling it to the general public as soon as the software is more developed.

I have had the privilege of playing around the the model before the FreeRunner, Neo 1973. I liked it, but it was a bit heavy. But I saw the terminal and we could run Linux commands on it.

A few months after I started working at FreeCode, I saw Nokia N810 running on Debian. I was so impressed to see that Linux is getting some where. I spent a lot of time looking, despite the fact that it was a bit slow when you start heavy application, but it work.

All along I had been reading and looking at the T-Mobile G1 running on Android. Android™ delivers a complete set of software for mobile devices: an operating system, middleware and key mobile applications. Now here was one smart phone that almost made me got to shop. It was slick, clean and open source. Mind you, Android is built on the open Linux Kernel. And because of this, Android is open source; it can be liberally extended to incorporate new cutting edge technologies as they emerge. And this can be seen in the the HTC Magic.

“The HTC Magic, powered by Android™, is designed to turn heads with its chic looks, and command attention with its advanced list of capabilities.”

After looking at features and reading reviews, its now a question of time before I visit the shop, actually I am broke at the moment.

But the list is not over, Motorola Evoke QA4 Motorola's EV-DO smartphone offers both a slide-out keypad and a virtual QWERTY keyboard. The Evoke QA4 runs Motorola's MotoMAGX Linux/Java stack, and is equipped with a 2.8-inch touchscreen, accelerometers, and widgets, as well as OK Labs' OKL4 embedded hypervisor. General Mobile DSTL1 General Mobile's dual-SIM, XScale-based Android cameraphone is based on a design by Yuhua (see entry above). The DSTL1 runs Android on a Marvell PXA-310 clocked to 624MHz, offers WiFi, Bluetooth, accelerometers, and a 5-megapixel camera, and is equipped with dual SIMs and dual baseband radios, enabling simultaneous reception for two different phone numbers. The list is long. See more at Linux Mobile Phones.

With big players such as Samsung, LG, Sony Ericsson, NVIDIA and Archos all working on releasing a handset for Android, soon there will be more options for you, especially is you like playing and fine ture your devices.

Open Minds use Open Source. Are you open minded? If yes, are using Open Source Technologies?