Friday, 9 August 2013

DOS Versus Linux Commands

DOS commands versusr Linux commands.
As an extra means of orientation for new users with a Windows background, the table below lists MS-DOS commands with their Linux counterparts. Keep in mind that Linux commands usually have a number of options. Overview of DOS/Linux commands are as follows -
DOS commands Linux command
/? man or command, –help
cd cd
chdir pwd
cls clear
copy cp
date date
del rm
dir ls
echo echo
edit vim (or other editor)
exit exit
fc diff
find grep
format mke2fs or mformat
mem free
mkdir mkdir
more more or even less
move mv
ren mv
time date

C++ : Input/Output with Files

Input/Output with files
C++ provides the following classes to perform output and input of characters to/from files:
– ofstream: Stream class to write on files
– ifstream: Stream class to read from files
– fstream: Stream class to both read and write from/to files.
These classes are derived directly or indirectly from the classes istream, and ostream. We have already used objects whose types were these classes: cin is an object of class istream and cout is an object of class ostream. Therfore, we have already been using classes that are related to our file streams. And in fact, we can use our file streams the same way we are already used to use cin and cout, with the only difference that we have to associate these streams with physical files. Let’s see an example:
// basic file operations
#include
#include
using namespace std;
int main () {
ofstream myfile;
myfile.open (”example.txt”);
myfile << "Writing this to a file.\n";
myfile.close();
return 0;
}
[file example.txt]
Writing this to a file
This code creates a file called example.txt and inserts a sentence into it in the same way we are used to do withcout, but using the file stream myfile instead.
But let’s go step by step:
Open a file – The first operation generally performed on an object of one of these classes is to associate it to a real file. This procedure is known as to open a file. An open file is represented within a program by a stream object (an instantiation of one of these classes, in the previous example this was myfile) and any input or output operation performed on this stream object will be applied to the physical file associated to it. In order to open a file with a stream object we use its member function open():
open (filename, mode);
Where filename is a null-terminated character sequence of type const char * (the same type that string literals
have) representing the name of the file to be opened, and mode is an optional parameter with a combination of the
following flags:
ios::in Open for input operations.
ios::out Open for output operations.
ios::binary Open in binary mode.
ios::ate
Set the initial position at the end of the file.
If this flag is not set to any value, the initial position is the beginning of the file.
ios::app All output operations are performed at the end of the file, appending the content to the current content of the file. This flag can only be used in streams open for output-only operations.
ios::trunc
If the file opened for output operations already existed before, its previous content is deleted and replaced by the new one. All these flags can be combined using the bitwise operator OR (|). For example, if we want to open the file example.bin in binary mode to add data we could do it by the following call to member function open():
ofstream myfile;
myfile.open (”example.bin”, ios::out | ios::app | ios::binary);
Each one of the open() member functions of the classes ofstream, ifstream and fstream has a default mode that is used if the file is opened without a second argument:
class default mode parameter
ofstream ios::out
ifstream ios::in
fstream ios::in | ios::out
For ifstream and ofstream classes, ios::in and ios::out are automatically and respectively assumed, even if a mode that does not include them is passed as second argument to the open() member function. The default value is only applied if the function is called without specifying any value for the mode parameter. If the function is called with any value in that parameter the default mode is overridden, not combined. File streams opened in binary mode perform input and output operations independently of any format considerations. Non-binary files are known as text files, and some translations may occur due to formatting of some special characters (like newline and carriage return characters). Since the first task that is performed on a file stream object is generally to open a file, these three classes include a constructor that automatically calls the open() member function and has the exact same parameters as this member. Therefore, we could also have declared the previous myfile object and conducted the same opening operation in our previous example by writing:
ofstream myfile (”example.bin”, ios::out | ios::app | ios::binary);
Combining object construction and stream opening in a single statement. Both forms to open a file are valid and equivalent. To check if a file stream was successful opening a file, you can do it by calling to member is_open() with no arguments. This member function returns a bool value of true in the case that indeed the stream object is associated with an open file, or false otherwise:
if (myfile.is_open()) { /* ok, proceed with output */ }
Closing a file
When we are finished with our input and output operations on a file we shall close it so that its resources become
available again. In order to do that we have to call the stream’s member function close(). This member function
takes no parameters, and what it does is to flush the associated buffers and close the file:
myfile.close(); Once this member function is called, the stream object can be used to open another file, and the file is available again to be opened by other processes. In case that an object is destructed while still associated with an open file, the destructor automatically calls the
member function close().
Text files
Text file streams are those where we do not include the ios::binary flag in their opening mode. These files are designed to store text and thus all values that we input or output from/to them can suffer some formatting transformations, which do not necessarily correspond to their literal binary value. Data output operations on text files are performed in the same way we operated with cout:
// writing on a text file
#include
#include
using namespace std;
int main () {
ofstream myfile (”example.txt”);
if (myfile.is_open())
{
myfile << "This is a line.\n";
myfile << "This is another line.\n";
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
[file example.txt]
This is a line.
This is another line.
Data input from a file can also be performed in the same way that we did with cin:
// reading a text file
#include
#include
#include
using namespace std;
int main () {
string line;
ifstream myfile (”example.txt”);
if (myfile.is_open())
{
while (! myfile.eof() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
This is a line.
This is another line.
This last example reads a text file and prints out its content on the screen. Notice how we have used a new member function, called eof() that returns true in the case that the end of the file has been reached. We have created a while loop that finishes when indeed myfile.eof() becomes true (i.e., the end of the file has been reached).
Checking state flags In addition to eof(), which checks if the end of file has been reached, other member functions exist to check the state of a stream (all of them return a bool value):
bad()
Returns true if a reading or writing operation fails. For example in the case that we try to write to a file that is not open for writing or if the device where we try to write has no space left.
fail()
Returns true in the same cases as bad(), but also in the case that a format error happens, like when an alphabetical character is extracted when we are trying to read an integer number.
eof()
Returns true if a file open for reading has reached the end.
good()
It is the most generic state flag: it returns false in the same cases in which calling any of the previous functions would return true. In order to reset the state flags checked by any of these member functions we have just seen we can use the member function clear(), which takes no parameters. get and put stream pointers All i/o streams objects have, at least, one internal stream pointer: ifstream, like istream, has a pointer known as the get pointer that points to the element to be read in the next input operation.
ofstream, like ostream, has a pointer known as the put pointer that points to the location where the next element has to be written. Finally, fstream, inherits both, the get and the put pointers, from iostream (which is itself derived from both istream and ostream).
These internal stream pointers that point to the reading or writing locations within a stream can be manipulated using the following member functions:
tellg() and tellp()
These two member functions have no parameters and return a value of the member type pos_type, which is an integer data type representing the current position of the get stream pointer (in the case of tellg) or the put stream pointer (in the case of tellp). seekg() and seekp() These functions allow us to change the position of the get and put stream pointers. Both functions are overloaded with two different prototypes. The first prototype is:
seekg ( position );
seekp ( position );
Using this prototype the stream pointer is changed to the absolute position position (counting from the beginning of the file). The type for this parameter is the same as the one returned by functions tellg and tellp: the member type pos_type, which is an integer value. The other prototype for these functions is:
seekg ( offset, direction );
seekp ( offset, direction );
Using this prototype, the position of the get or put pointer is set to an offset value relative to some specific point determined by the parameter direction. offset is of the member type off_type, which is also an integer type. And direction is of type seekdir, which is an enumerated type (enum) that determines the point from where offset is counted from, and that can take any of the following values:
ios::beg offset counted from the beginning of the stream
ios::cur offset counted from the current position of the stream pointer
ios::end offset counted from the end of the stream
The following example uses the member functions we have just seen to obtain the size of a file:
// obtaining file size
#include
#include
using namespace std;
int main () {
long begin,end;
ifstream myfile (”example.txt”);
begin = myfile.tellg();
myfile.seekg (0, ios::end);
end = myfile.tellg();
myfile.close();
cout << "size is: " << (end-begin) << " bytes.\n";
return 0;
}
size is: 40 bytes.
Binary files In binary files, to input and output data with the extraction and insertion operators (<>) and functions like getline is not efficient, since we do not need to format any data, and data may not use the separation codes used by text files to separate elements (like space, newline, etc…). File streams include two member functions specifically designed to input and output binary data sequentially: write and read. The first one (write) is a member function of ostream inherited by ofstream. And read is a member function of istream that is inherited by ifstream. Objects of class fstream have both members. Their prototypes are:
write ( memory_block, size );
read ( memory_block, size );
Where memory_block is of type “pointer to char” (char*), and represents the address of an array of bytes where the read data elements are stored or from where the data elements to be written are taken. The size parameter is an integer value that specifies the number of characters to be read or written from/to the memory block.
// reading a complete binary file
#include
#include
using namespace std;
ifstream::pos_type size;
char * memblock;
int main () {
ifstream file (”example.bin”,
ios::in|ios::binary|ios::ate);
if (file.is_open())
{
size = file.tellg();
memblock = new char [size];
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();
cout << "the complete file content is in memory";
delete[] memblock;
}
else cout << "Unable to open file";
return 0;
}
the complete file content is in memory
In this example the entire file is read and stored in a memory block. Let’s examine how this is done:
First, the file is open with the ios::ate flag, which means that the get pointer will be positioned at the end of the file. This way, when we call to member tellg(), we will directly obtain the size of the file. Notice the type we have used to declare variable size:
ifstream::pos_type size;
ifstream::pos_type is a specific type used for buffer and file positioning and is the type
returned by
file.tellg().
This type is defined as an integer type, therefore we can conduct on it the same operations we conduct on any other integer value, and can safely be converted to another integer type large enough to contain the size of the file. For a file with a size under 2GB we could use int:
int size;
size = (int) file.tellg();
Once we have obtained the size of the file, we request the allocation of a memory block large enough to hold theentire file: memblock = new char[size];
Right after that, we proceed to set the get pointer at the beginning of the file (remember that we opened the filewith this pointer at the end), then read the entire file, and finally close it:
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();

C++ Data Types

C++ data types
When programming, we store the variables in our computer’s memory, but the computer has to know what kind of data we want to store in them, since it is not going to occupy the same amount of memory to store a simple number than to store a single letter or a large number, and they are not going to be interpreted the same way. The memory in our computers is organized in bytes. A byte is the minimum amount of memory that we can manage in C++. A byte can store a relatively small amount of data: one single character or a small integer (generally an integer between 0 and 255). In addition, the computer can manipulate more complex data types that come from grouping several bytes, such as long numbers or non-integer numbers. Next you have a summary of the basic fundamental data types in C++, as well as the range of values that can be represented with each one:
Data types are as follows -
Name Description Size Range
char Character or small integer. 1byte signed: -128 to 127
unsigned: 0 to 255
Short int Short Integer. 2bytes signed: -32768 to 32767
unsigned: 0 to 65535
int Integer 4bytes signed: -2147483648 to
2147483647
unsigned: 0 to 4294967295
Long int (long) Long integer. 4bytes signed: -2147483648 to
2147483647
unsigned: 0 to 4294967295
bool Boolean value. It can take one of two values: 1 byte true or false
true or false.
float Floating point number. 4bytes +/- 3.4e +/- 38 (~7 digits)
Double Double precision floating point number. 8bytes +/- 1.7e +/- 308 (~15 digits)
long double Long double precision floating point number. 8bytes +/- 1.7e +/- 308
(~15 digits)
wchar_t Wide character. 2 or 4 bytes 1 wide
character

Important & Useful Unix Commands

1. Files
1.1. Filename Substitution
Wild Cards : ? *
Character Class (c is any single character) [c…]
Range : [c-c]
Home Directory : ~
Home Directory of Another User : ~user
List Files in Current Directory : ls [-l]
List Hidden Files : ls -[l]a
1.2. File Manipulation
Display File Contents : cat filename
Copy : cp source destination
Move (Rename) : mv oldname newname
Remove (Delete) : rm filename
Create or Modify file: pico filename
1.3. File Properties
Seeing Permissions : ls -l filename
Changing Permissions : chmod nnn filename – chmod c=p…[,c=p…] filename
n, a digit from 0 to 7, sets the access level for the user (owner), group, and others (public), respectively. c is one of: u–user; g–group, o–others, or a–all. p is one of: r–read access, w–write access, or x–execute access.
Setting Default Permissions : umask ugo ugo is a (3-digit) number. Each digit restricts the default permissions for the user, group, and others, respectively.
Changing Modification Time touch filename Making Links ln [-s] oldname
Newname
Seeing File Types : ls -F
1.4. Displaying a File with less
Run less : less filename
Next line : RETURN
Next Page : SPACE
Previous line : k
Previous Page : b
1.5. Directories
Change Directory : cd directory
Make New Directory : mkdir directory
Remove Directory : rmdir directory
Print Working (Show Current) Directory pwd
2. Commands
2.1. Command-line Special Characters
Quotes and Escape Join Words “…”
Suppress Filename, Variable Substitution ‘…’
Escape Character : \
Separation, Continuation : Command Separation ; Command-Line Continuation
(at end of line) \
2.2. I/O Redirection and Pipes
Standard Output : >
(overwrite if exists) : >!
Appending to Standard Output : >>
Standard Input : &
Standard Error Separately ( command > output ) : >& errorfile
Pipes/ Pipelines command | filter [ | filter]
Filters
Word/Line Count wc [-l]
Last n Lines tail [-n]
Sort lines sort [-n]
Multicolumn Output pr -t
List Spelling Errors ispell
2.3. Searching with grep
grep Command grep “pattern” filename
command | grep “pattern”
Search Patterns beginning of line ^ , end of line $, any single character .
single character in list or range : […]
character not in list or range : [^…]
zero or more of preceding char. or pattern : *
zero or more of any character : .*
escapes special meaning : \
3. C-Shell Features.
3.1 History Substitution
Repeat Previous Command !!
Commands Beginning with str !str
Commands Containing str !?str[?]
All Arguments to Prev. Command !*
Word Designators
All Arguments :*
Last Argument :$
First Argument :^
n’th Argument :n
Arguments x Through y :x -y
Modifiers
Print Command Line :p
Substitute Command Line :[g]s/l/r/
3.2 Aliases
alias Command alias name ‘definition’ definition can contain escaped history
substitution event and word designators as placeholders for command-line
arguments.
3.3. Variable Substitution
Creating a Variable set var
Assigning a Value set var = value
Expressing a Value $var
Displaying a Value echo $var
value is a single word, an expression in quotes, or an
expression that results in a single word after variable,
filename and command substitution takes place.
Assigning a List set var = (list)
list is a space-separated list of words, or an expression that
results in a space-separated list.
Selecting the n’th Item $var[n]
Selecting all Items $var
Selecting a Range $var[x-y]
Item Count $#var
3.4 foreach Lists
Start foreach Loop foreach var (list)
foreach prompts for commands to repeat for each item in
list (with >), until you type end. Within the loop, $var
stands for the current item in list.
3.5. Command Substitution
Replace Command with its Output on Command Line `…`
3.6 Job Control
Run Command in the Background &
Stop Foreground Job CTRL-Z
List of Background Jobs jobs
Bring Job Forward %[n]
Resume Job in Background %[n] &
4. Processes
Listing ps [-[ef]]
Terminating kill [-9] PID
Timing time command
time is a number up to 4 digits. script is the name of a file
containing the command line(s) to perform.
5. Users
Seeing Who is Logged In who – w
Seeing Your User Name – who am i
6. Managing Files
6.1. Looking Up Files
Standard Commands whereis file
Aliases and Commands which command
Describe Command whatis command
Searching Out Files find dir -name name -print
dir is a directory name within which to search.
name is a filename to search for.
6.2. Finding Changes
Comparing Files diff leftfile rightfile
diff prefixes a less-than () to lines from rightfile.
6.3. Automating Tasks
Create a Makefile pico Makefile
A makefile consists of macro definitions and targets.
Test Makefile make -n [target]
Run make make [target]
6.4. Managing Disk Usage
Check Quota quota -v
Seeing Disk Usage df
du –s
6.5. Combining and Compressing Files
Create a tarfile tar cf file.tar file1 file2 … fileN
tar combines files but does not compress
Create a zipfile zip filename
Unzip a file unzip filename
7. Printing
7.1 Formatting Output for Printing
Paginate with Page Headers pr filename
in n columns pr -n filename
Format for Laser Printer tex document
7.2 The Printer Queue
Print a File : lp [-dpr] filename
Check Quota : lpquot
List Queue : lpq
Stop Job : lprm
8. Miscellaneous
8.1 Miscellaneous Commands
List Commands for Subject : man -k subject
Display Current Date and Time : date
Log off : exit
Electronic Mail : pine
Display Documentation : man command
8.2 Control Keys
Abort Program : CTRL-C
Backspace (Delete Last Character) : CTRL-H
Pause Display on Screen : CTRL-S
Resume Display after : CTRL-S CTRL-Q
Send Job to Background : CTRL-Z followed by bg

What Constitute Recovery Scenarios

A recovery scenario consists of the following:
  • Trigger Event. The event that interrupts your run session. For example, a window that may pop up on screen, or a QTP run error.
  • Recovery Operations. The operations to perform to enable QTP to continue running the test after the trigger event interrupts the run session. For example, clicking an OK button in a pop-up window, or restarting Microsoft Windows.
  • Post-Recovery Test Run Option. The instructions on how QTP should proceed after the recovery operations have been performed, and from which point in the test QTP should continue, if at all. For example, you may want to restart a test from the beginning, or skip a step entirely and continue with the next step in the test.
  • Recovery scenarios are saved in recovery scenario files having the extension .rs. A recovery scenario file is a logical collection of recovery scenarios, grouped according to your own specific requirements.