Power sessions with Screen

Screen is a full-screen window manager for the console, that comes with every flavour of Linux and UNIX. It is best known for multiplexing a physical terminal across several processes. By using it, you can run any number of console-based applications within a single terminal.
For example, suppose I want to run the 'top' program to keep track of the system load, edit my programming code and check my mail at the same time ... Usually, I have to open at least 3 terminals to do all this. But by using the screen utility, I can run all these programs at the same time in the same physical terminal. Another great feature of this wonderful utility is its ability to decouple the terminal emulator from the running program, which ensures your job is running even if you accidentally close your window, or in case you log out. After detaching, you can reconnect once again to the same session and regain control over the running jobs.
Here I will explain how to use this utility.
1) First open a terminal (eg: xterm if you are in X windows) and type :
$ screen
2) Screen starts and creates a new single window with a shell, pretty much like what you had before. The path name of the shell is taken from the $SHELL variable. New windows can be created within the same physical terminal using the screen commands.
3) Now that you have started screen in a terminal, suppose you want to run the 'top' program to check the System load and at the same time you want to compile a program too - Also you would like to switch between the two to see the progress made by both.
For that, first execute the first program to be run (say 'top'). now 'top' will start in the terminal.
Now open a new window in screen by pressing the '[Ctrl + a] c' - which I will state as 'C-a c' . This will create a new window in the same terminal. Here, you can give commands to compile your program.
In screen, each window is given a unique identifier. The first window is numbered 0, the next window is 1 and so on. Now to switch between your 'top' and the compiling program, you can use the key 'C-a 0' and 'C-a 1' respectively.
You can also associate names with each running window - use 'C-a A' to give a name to the current window.
Here are a few other commands that might come in handy while toggling between various running windows :
  • 'C-a p' and 'C-a n' can be used to switch to the next or previous window respectively.
  • 'C-a N' - where N is the number from 0 to 9, that can be used to jump to the corresponding window.
  • 'C-a w' displays a list of all windows. The unique ID of each window with its name and running process is displayed, for each window. The current window is marked with an asterisk(*).
  • 'C-a k' - can be used to kill the current window. You can also type 'exit' to kill the current window. If no more windows are open, then screen exits. 'C-a \' also does the same thing.
  • 'C-a d' - detaches the present screen session. You can also detach by closing the terminal running your screen utility. Though, this appears to close your terminal session, in reality this does not happen. It only unbinds your session from the current terminal. All the programs started under screen will still keep running.
You can also log out from the machine and re-login. Then start any terminal session and type 'screen -r' to once again be connected from where you left.
In case, there were more than one screen sessions running on the machine, Screen prompts for a host.tty.pid.
For example, say I have two screen sessions. So when I type 'screen -r' command, it gives the following message:
$ screen -r
There are several suitable screens on:
2999.pts-6.localhost (Detached)
1920.PTS-6.localhost (Detached)
Type "screen [-d] -r [pid].tty.host" to resume one of them.
Choose the proper tty.host to connect to and you are controlling your program again. You can also share your screen session with others like using VNC . Imagine you are having a problem with your code and want to share it with your boss who is located in another office. You can use screen to share your session with your boss, and he can see what you are referring to. The first user starts his screen in a normal fashion and executes the following commands ...
User1:
[Ctrl-A]:multiuser on [RET]
[Ctrl-A]:acladd
The second user starts a new screen session and connects it to the first session using ...
User2:
screen -x
There are lots and lots of features in Screen other than those that were described here. To know more about Screen, visit the Official Screen Home Page. You can also find a very good introductory tutorial at Kuro5hin.org.

BBC's take on the Open Source alternative

Of course you know what open source and Free software means. Or else you wouldn't be visiting this blog and reading its articles in the first place. But it is always nice to get the point of view of a main stream media. And if the media in question is the BBC, then it gets all the more sweeter.

I have been an avid fan of BBC's technology program called 'Click' formerly known as 'Click Online'. In the last episode, Spencer Kelly - the Click presenter shows how you can build a fully functional working machine for nothing. BBC has published an article by Kelly called "The open source alternative" which gives an insight into how open source software can enrich our computing lives for zilch. The article also has a short interview with Paul Allen who is the editor of Computer Active magazine.

Read the article at bbc.co.uk.

Fedora 9 Sulphur released

It is yet time for another major release of Fedora Linux. The latest avatar of Fedora namely version 9 is code named Sulphur. If you are piqued by the strange names of Fedora, then you should read this article to get a better perspective. So what is in store for all Fedora fans out there ? Quite a few things really.

For starters, Fedora has got what is known as PackageKit. This is a cross distribution package management solution which has a complete Yum backend. Then Fedora ships with the latest and greatest Gnome Desktop namely version 2.22. KDE 4.0.3 is also in the repository and can be installed by the hard core KDE fans. But the greatest news is that Fedora now ships with the Sun's Java as Sun has released Java under an open source license. To know the full set of features, read this article which explains all the features in more detail.

And after reading through the features, if you are excited enough (which you will be), then visit the download page and start downloading your favorite Linux distribution aka Fedora 9 Sulphur.

C++ GUI Programming with Qt4 - Book Review

Qt is a cross platform application development framework which is widely used for the development of GUI and non-GUI programs. Some of the most visible products which have been developed using Qt are KDE, Opera web browser, Google Earth, Skype and Photoshop Elements just to name a few. Some of the pertinent reasons for using Qt are -

One: Qt library is released under a dual licensing business model which means you can develop open source or closed source applications. If you are developing the former, then you do not have to pay any money for using the library.

Two: It is truly cross platform - which filters down to the fact that you can write the code for your application in one platform - say Linux, and then copy the code to Windows and recompile the code without making any changes and your application is guaranteed to run on Windows.

Three: Cellphone behemoth Nokia's recent acquisition of Trolltech has definitely infused fresh breadth and energy into the future of Qt. The latest version of Qt namely version 4.3 has a lot of enhancements which make developing GUI applications using this library a joy for most C++ programmers.

"C++ GUI Programming with Qt4" authored by Jasmin Blanchette and Mark Summerfield; published under the Prentice Hall Open source software development series is well into its second edition. This book is touted as the "Official book on Qt from Trolltech".

The main goal of this book is to teach how to write GUI programs using Qt4 and is targeted at the entry level to intermediate and advanced C++ programmer. So it starts off on a shallow curve, hand holding the reader from the first rudimentary steps in writing a simple C++ GUI program using Qt4. And over the chapters, gradually builds up steam and introduces the reader to complex scenarios such as creating plugins, 3D graphics, application scripting and more. Going through the book, I didn't feel like I was studying a programming framework rather I found the language used in explaining things quite lucid, clear and interesting all the same.

The book is divided into three parts. A new programmer in Qt will find the first part really useful because it covers the fundamental concepts and practices required for programming in Qt. The second and third part of this book comprising of 12 and 7 chapters respectively deal with specialized topics and can be read in any order. For example, if I want to build a GUI program which needs to connect to a database at the back end, then I can straight away read the 13th chapter namely "Databases", of this book provided I am conversant with Part I of this book which covers the foundation of programming in Qt 4.

The second edition of this book builds up on the first edition and contains numerous changes. For one, a couple of additional chapters have been included such as "Look and Feel Customization" and "Application Scripting". The book has been thoroughly revised to include changes incorporated in Qt 4.2 and Qt 4.3. The original "Graphics" chapter has been split into 2D and 3D graphics chapters respectively. The tiny chapter on Embedded Programming has been expanded to include programming in Qtopia, thus making it not tiny anymore.

What I really like about this book is the realistic examples which are used to introduce each Qt control or concept. There are plenty of images scattered within, which impart visual appeal to the book. More over, these images hopefully give the reader an idea about the correct way of designing their software.

Going through this book, I find that the authors have explained different scenarios of developing programs in Qt 4 exhaustively without overwhelming the reader. Each program is split into digestible chunks of code with detailed explanation succeeding them. This makes it quite easy to understand what each line of code accomplishes.

The appendixes contain a new section namely "Introduction to Qt Jambi". Qt Jambi is the Java edition of the Qt application development framework. Apart from that, there are of course the other sections in the appendix namely installing Qt, building Qt applications and also a concise section listing the main nuances of programming in C++ for Java and C# programmers.

One thing I noticed is that the hard bound book I received did not have a companion CD containing the Qt library and the IDE used to design your applications. Then again, one can always visit the Trolltech site and get the Qt 4.3 library and applications which is available as a free download. Even better, if you are developing your Qt applications in Linux then it is very simple to install all the necessary libraries depending upon the Linux distribution you are using.

All in all, this is a great book not just for any neophyte in Qt but also for the accomplished Qt programmer to use as a ready reference.

Book Specifications
Name : C++ GUI Programming with Qt4 - Second edition
ISBN No : 0-13-235416-0
Authors : Jasmin Blanchette & Mark Summerfield
No of pages : 720
Publisher : Prentice Hall
Price : $ 59.99 (US), $ 65.99 (Canada)
Rating : 9/10

A small form factor Linux PC for the Marines

A regular reader of this blog would be aware of mini Linux PC's which fit on the palm of your hand and which is targeted at end users. Now what would you say if I told you that there exists a miniature Linux PC which is targeted at the Military ?

No Kidding! There is indeed such a PC and its name is "Engineering Development Kit" (EDK) which is a 7-10 pound computer that targets small ground, naval, and air vehicles. And believe it or not, it has a whooping 100 Gigaflops of processing power. The PowerBlock 50 measures 4.1 x 5.3 x 5.8 inches, with a seven-pound shipping weight, and a weight of less than 10 pounds fully configured, says Mercury.

Linuxdevices.com has the full scoop on this story.

Slackware 12.1 released

Which Linux user wouldn't know about the venerable Slackware ? The same one which has been elevated to cult status through the efforts of a single person Patrick Volkerding. Over all these years when flashy Linux distributions like Ubuntu rule the roost, Slackware has been successful in retaining its followers. Nay, Slackware user group comprises of a passionate set of Linux users who are keen on configuring their Linux box the old fashioned way namely editing plain text files. And these users have invariably mastered the art of configuring their Linux OS inside out.

A long time back, I had reviewed Slackware 11.0 and I found it every bit classic Linux and really took a liking to it. In fact, after I installed Slackware on my machine, I used to use it most of the time even though I had a couple of other Linux distributions installed on my machine too.

If you negate the latest versions of the packages that are bundled with Slackware 12.1, I believe not much has changed as far as installing it on your machine and configuring it. To know what are the changes in this new release, do read the official announcement.

Guide to adding a new partition or drive to an existing system

Suppose you are required to create a 10 GB partition on your server running Linux, you have got two options namely :
  • Create a partition from the unpartitioned space on your machine or
  • Add a new drive.
If you are opting for the latter then it is a simple thing of plugging in the new drive, letting the system detect it, using a partitioning tool to create the requisite partition, formating the newly created partition and finally mounting it. But if it is the former namely, creating a partition from unpartitioned space, then the task gets a bit trickier.

Joey Prestia explains the exact steps needed to add a new partition to an existing system. The task can be broken down into the following steps :
  1. Determine what partitions need to be created and where.
  2. Create the partitions (I use 'fdisk' here but any Linux disk partitioning tool should work)
  3. Re-read the partition table either with 'partprobe' or by a reboot
  4. Make a filesystem on the partition, label it, and create the necessary mount points
  5. Add the appropriate entries to '/etc/fstab' so the partitions are mounted upon reboot
Check out Joey's notes to know the exact commands used to accomplish the above tasks.

Enable DVD playback in Ubuntu

I am sure any Ubuntu user will swear by the fact that it is a piece of cake getting multimedia to work in Ubuntu. In fact Ubuntu walks a fine line in ensuring that the users who are passionate about freedom and those who are keen on functionality are provided for.

But playing encrypted DVDs is a bit trickier. Tech-recipes.com provides a simple way of enabling DVD playback in Ubuntu.

In fact there are just two simple steps namely,
$ sudo apt-get install totem-xine libxine1-ffmpeg libdvdread3
and
$ sudo /usr/share/doc/libdvdread3/install-css.sh

Linux file system hierarchy - the fun easy way

I have been asked by many people to explain the file system hierarchy in Linux because they find the file system in Linux quite different from what they are used to in Windows. To put it simply, it can be visualized as a tree with its roots and all. At the top of the hierarchy is invariably the root path which is represented by '/'. All other directories are created beneath this root path. And each of the sub directories have a specific purpose. For example, '/etc' contain the configuration files, the '/opt' directory is used to install third party software, '/boot' contain the grub files and the Linux kernel and so on.

Today I came across this very beautiful image which explains the Linux file system in lucid detail at linuxconfig.org.

Fig: Linux file system hierarchy

100s of beautiful wallpapers free for the picking

No matter what OS I am running on my machine, one thing I really like to do is, adorn my desktop with is a beautiful, aesthetic, less distracting and pleasing to the eye wallpaper. I like my wallpapers to be vivid with colors but at the same time not be an eye sore. Nature, animals, abstract art, blue swirls ... are all my favorites.

Here are a couple of links which collectively have literally 100s of wallpapers of different hues, colors and designs. All of them are eye catching and quite a few are actually stunning. But I will let you be the judge of that.
  • 218 HD Resolution Desktop Wallpapers for Nerds - This is a collection of wallpapers which are literally stunning. I do like the ones by Hamad Darwish who claims to be one of the few photographers commissioned by Microsoft in 2005 to shoot photos to be used in Windows Vista's Wallpaper Collection.
  • Social wallpapering - This is a community effort to classify, rank, and distribute high resolution images for use as computer wallpaper.
  • Wallpaper images - And if you are a nature lover and like to swoon at flowers, leaves, pebbles, rocks, vegetables, fruits and what not, then this is the right place to be. Mike Swanson is a technical evangelist for err... Microsoft and he has made available his entire collection of wallpapers as a free download.
The best news is that you do not need to have explicit permission of Microsoft to use these wallpapers on your Linux desktop ;-) .

Understanding XML in 10 seconds or less

XML also known as eXtended Markup Language is a language created to structure, transport and store data or information. But that is the most simple explanation. In reality, there is much more to the semantics of XML. When you embark on the path to mastery of XML, you invariably come across terms like XLink, Namespace, DTD, Schema and so on.

To get a fair idea on what XML stands for, check out the following article which explains XML in 10 points. It took me just 10 seconds to read through the article. Put in a nutshell, these are the main points sans the explanation -
  1. XML is for structuring data
  2. It looks a bit like HTML
  3. It is text, but isn't meant to be read
  4. It is verbose by design
  5. XML is a family of technologies
  6. XML is new, but not that new
  7. It leads HTML to XHTML
  8. XML is modular
  9. XML is the basis for RDF and the semantic web
  10. It is license-free, platform-independent and well supported.

 
 
 
 
Copyright © Sun solaris admin