Wednesday, November 25, 2009

Creating directory tree with one - mkdir -

mkdir -p Deepak1/Deepak2/Deepak3/Deepak4

Saturday, November 14, 2009

Network Authentication - Kerberos

Solaris initialization Story

The normal Unix boot process has these main phases:

Basic hardware detection (memory, disk, keyboard, mouse etc) and executing the firmware system initialization program . In Solaris, this is called Boot PROM phase. After you turn on power of the system, the PROM displays system identification information and runs self-test diagnostics to verify the system's hardware and memory.

PROM chip contains Forth OpenBoot firmware, and it is executed immediately after you turn on the system. The primary task of the OpenBoot firmware is to boot the operating system either from a mass storage device or from the network. OpenBoot contains a program called the monitor that controls the operation of the system before the kernel is available. When a system is turned on, the monitor runs a power-on self-test (POST) that checks such things as the hardware and memory on the system. If no errors are found, the automatic boot process begins. OpenBoot contains a set of instructions that locate and start up the system's boot program and eventually start up the Unix operating system.

Locating and running the initial boot program (IPL or bootloader) from a predetermined location on the disk (MBR in PC). In Solaris the primary boot program, called bootblk, is loaded from its location on the boot device (usually disk) into memory.

Locating and starting the Unix kernel. The kernel image file to execute may be determined automatically or via input to the bootloader. In Solaris the bootblk program finds and executes the secondary boot program (called ufsboot) from the Unix file system (UFS) and loads it into memory. After the ufsboot program is loaded, the ufsboot program loads the two-part kernel.

The kernel initializes itself and then performs final, high-level hardware checks, loading device drivers and/or kernel modules as required. In Solaris the kernel initializes itself and begins loading modules, using ufsboot to read the files. When the kernel has loaded enough modules to mount the root file system, it unmaps the ufsboot program and continues, using its own resources.

The kernel starts the init process, which in turn starts system processes (daemons) and initializes all active subsystems. When everything is ready, the system begins accepting user logins. In Solaris kernel starts the Unix operating system, mounts the necessary file systems, and runs /sbin/init to bring the system to the initdefault state specified in /etc/inittab. The kernel creates a user process and starts the /sbin/init process, which starts other processes by reading the /etc/inittab file. The /sbin/init process starts the run control (rc) scripts, which execute a series of other scripts. These scripts (/sbin/rc*) check and mount file systems, start various processes, and perform system maintenance tasks.

Wednesday, October 28, 2009

Embedding Perl in HTML with Mason

This book is available for free @_

Tuesday, October 20, 2009

Perl Inheritance Simplified

Friday, October 9, 2009

Perl Special Literals list

__FILE__ = represent the current filename
__LINE__ = line number
__PACKAGE__ package name

If there is no current package (due to an empty package; directive),
__PACKAGE__ is the undefined value.

The two control characters ^D and ^Z, and the tokens __END__ and __DATA__ may be used to indicate the logical end of the script before the actual end of file. Any following text is ignored.

Text after __DATA__ may be read via the filehandle PACKNAME::DATA, where PACKNAME is the package that was current when the __DATA__ token was encountered. The filehandle is left open pointing to the contents after __DATA__. It is the program's responsibility to close DATA when it is done reading from it. For compatibility with older scripts written before __DATA__ was introduced, __END__ behaves like __DATA__ in the top level script (but not in files loaded with require or do) and leaves the remaining contents of the file accessible via main::DATA.

See SelfLoader for more description of __DATA__, and an example of its use. Note that you cannot read from the DATA filehandle in a BEGIN block: the BEGIN block is executed as soon as it is seen (during compilation), at which point the corresponding __DATA__ (or __END__) token has not yet been seen

Friday, October 2, 2009

How to determine Total memory (Total RAM, Used RAM, Free RAM) on Unix/Linux

'free' tool prints pretty much everything.

total used free shared buffers cached
Mem: 514592 274136 240456 0 20228 134104
-/+ buffers/cache: 119804 394788
Swap: 1052216 0 1052216


cat /etc/meminfo - has all the information.

Thursday, October 1, 2009

How to find out which process is listening upon a port

For standard processes, Services names can be seen in /etc/services files associated with port numbers. This is pretty much standard TCP/IP.

For non-standard user defined services,

lsof -i :port_number

For example:

So to see which process is listening upon port 80 we can run:

root@mystery:~# lsof -i :80
This gives us the following output:

apache2 10437 root 3u IPv6 22890556 TCP *:www (LISTEN)
apache2 10438 www-data 3u IPv6 22890556 TCP *:www (LISTEN)
apache2 10439 www-data 3u IPv6 22890556 TCP *:www (LISTEN)
apache2 10440 www-data 3u IPv6 22890556 TCP *:www (LISTEN)
apache2 10441 www-data 3u IPv6 22890556 TCP *:www (LISTEN)
apache2 10442 www-data 3u IPv6 22890556 TCP *:www (LISTEN)
apache2 25966 www-data 3u IPv6 22890556 TCP *:www (LISTEN)
apache2 25968 www-data 3u IPv6 22890556 TCP *:www (LISTEN)

Thursday, May 14, 2009

Best practices for a high performance Perl program

Wednesday, March 4, 2009

Validating data types in PERL

Since perl data types are very typeless and depends upon where they are used. There are some situations, when this design is awkward.

To validate data types,

Data::Types module can be installed and used.

However if you dont want to install, here are few quickies:

- To Check

% An Integer, Use regex /^[+-]?\d+$/ and ofcourse, not matched ones are non-intger
% A Decimal, /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/
% Whole number, /^\d+$/
% Float number, /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/

Wednesday, February 25, 2009

Python Advance books

A Good link for description of these books.