Showing posts with label Computers. Show all posts
Showing posts with label Computers. Show all posts

Tuesday, December 21, 2010

Free Download Microsoft Office 2010 Full With Activation Key

Microsoft Office 2010 download links have been released to the public today. This public beta version of MS Office 2010 (v. 14.0.4536.1000) is now available for free download on Microsoft’s Official website.

Checkout archive for more MS office 2010 download links

Microsoft Office Professional Plus 2010 beta version also includes MS Publisher and Infopath 2010 along with Word, Excel, Outlook and Power point applications. Checkout what’s included with this download.

ms office 2010 download applications list

New Features Of Microsoft Office 2010

  • Outlook Social connector which includes the option to add friends to your social network direct from Outlook.
  • Built in screen capture for MS Powerpoint.
  • Upload or Save directly to Windows Live Sky Drive or SharePoint 2010.
  • Improved user navigation and Icons.
  • One click PDF saver.
  • Embed online videos into presentation.

Installation Requirements for MS office 2010

500 MHz 32-bit or 64-bit processor or higher
256 MB of system memory or more
3 GB of available disk space
1024x768 or higher resolution monitor
DVD-R/W Drive

Installer is around 700MB. Requires Online Activation after installation.

Supported OS : Windows XP SP3, Vista SP1, Windows 7

How To Activate Microsoft Office 2010 for Free

Go to the download page.

Click the ‘Get it Now’ button.

Sign in with your live id and fill out the small form to download the beta of Microsoft Office 2010 for free.

You will get the Microsoft Office Professional Plus 2010 Beta Product Key called MAK key to activate your evaluation copy of Microsoft Office Professional Plus 2010 Beta.

microsoft office 2010 product key

At the bottom, you will find the link to download MS office 2010 for free, both 32 bit and 64 bit versions.

For Activating the Office 2010, first you have to install the product and do the following steps.

Step 1: Open Microsoft Word 2010 Beta and click on the "File" tab. Next click "Help".

Step 2: Click “Change Product Key”.

Step 3: Enter the Multiple Activation Key (MAK).

Step 4: Entering the MAK key in Microsoft Word 2010 Beta automatically activates all the Office Professional Plus 2010 Beta applications. Click on the "File" tab to return to the Document view.

UPDATE: MS Office 2010 RC build 14.0.4734.1000 has been leaked on the internet and is rumored to be the latest RTM version of Microsoft Office 2010. The free keys which you got now doesn’t work with this version as it was a part of the Microsoft’s beta program.

But some users have managed to hack the activation procedure of Microsoft Office professional 2010 RC version which appears to be very simple as it only needs some files which we already have when installing the beta MS Office 2010 version. The two files which needs to be replaced seems to be tokens.dat and pkeyconfig-office.xrm-ms. The procedure for MS office 2010 crack is already available throughout major forums, where an user named SoLoR has made a script called ActivateOffice2010beta.7z which does the whole cracking procedure for you.

Since this version of MS office 2010 RC 14.0.4734.1000 is already cracked though some easy hacks, I don’t think Microsoft will release this as a final version now. So wait for an other RC build from Microsoft with this loop hole patched.

UPDATE: 18th September 2010

Here are the Official download links for MS Office 2010 [direct links]

This download contains Office Home and Student 2010, Office Home and Business 2010 and Office Professional 2010

Microsoft Office 2010 Single Image [One Setup file]

English 32-bit (x86): X16-32007.exe

English 64-bit (x64):X16-31970.exe

Microsoft Office Standard 2010

English 32-bit (x86): X16-32324.exe

English 64-bit (x64): X16-32361.exe

Microsoft Office Professional Plus 2010 (Retail Edition)

English 32-bit (x86): X16-32250.exe

English 64-bit (x64): X16-32213.exe

Summary: Free Download Microsoft Office 2010 With Activation Product key

Sunday, December 19, 2010

Automate Installation of XP

You can create a CD that can install Windows XP automatically, putting in all the details and answering all the dialog boxes.

The secret behind this is the answer file, which tells Windows what to do while it's installing. The answer file can be created using Windows setup manager.

Using this tool, you can make the answer file so powerful that you can even tell Windows to include or exclude individual components, set the display resolution, and more.

Here's the Steps involved in creating XP Automated Installation Disc:

Step 1: To begin with, insert your Windows XP installation CD into the drive and copy the entire contents of the CD to a new folder on your hard disk.

Step 2: Navigate to the Support > Tools folder on the CD and double-click the Deploy.cab file. Copy all the files to a new folder on your hard disk.

Step 3: The crucial part begins now, creating the answer file. To execute the windows setup manager, double click the Setupmgr.exe file from the contents of the Deploy.cab, which you just copied onto the hard drive.

Step 4: The first few steps of the wizard are self explanatory. Select the following options from the successive dialog boxes. Create a new answer file; Windows unattended installation (Select the appropriate Windows version); "Fully automated"; "No this answer file will be used to install from CD"; and finally, accept the license agreement.

Step 5: Under the General Settings, you can customize the installation of Windows by providing the default name and organization, display settings, time zone and the product key. Fill in the fields using the drop-down list or by keying in the details. If you don't select an option from the drop-down list, the default values will be used.

Step 6: After you are done click Finish and save the answer file as "winnt.sif" when you are prompted. Advanced users can further tweak the answer file by referring to the Help file called Ref.chm in the same folder.

Step 7: Finally copy the answer file to i386 folder in the Windows XP installation folder you created in the beginning.

Step 8: To burn a bootable installation disc, you need the boot sector of the Windows XP CD. Download it from here bootfiles.zip

Step 9: Launch Nero and select CD-ROM (Boot) from the New Compilation dialog box. Under the Boot tab, specify the boot sector file you downloaded and extracted. Set the emulation as "No emulation", and keep the boot message blank. Most importantly, remember to set the "Number of loaded sectors" as 4.

Step 10: Under the Burn tab, set the write method to disc at-once. Click the New button to to begin adding files and folders to the compilation. Drag all the contents of the Windows XP installation disc that you copied to your hard drive (with the answer file in the i386 folder) into the left pane. Insert a blank CD into the optical drive and hit burn button.

Your windows automated installation Disc is ready!

DOS Commands

all commands of win xp command line

DOS is sometimes helpful in detecting and correcting the errors in Windows such as p/w corruption, some files like "system restore files having viruses are not editable by explorer" Dos helps a lot in those cases

1. ADDUSERS Add or list users to/from a CSV file
2. ARP Address Resolution Protocol
3. ASSOC Change file extension associations
4. ASSOCIAT One step file association
5. AT Schedule a command to run at a later time
6. ATTRIB Change file attributes
7. BOOTCFG Edit Windows boot settings
8. BROWSTAT Get domain, browser and PDC info
9. CACLS Change file permissions
10. CALL Call one batch program from another
11. CD Change Directory - move to a specific Folder
12. CHANGE Change Terminal Server Session properties
13. CHKDSK Check Disk - check and repair disk problems
14. CHKNTFS Check the NTFS file system
15. CHOICE Accept keyboard input to a batch file
16. CIPHER Encrypt or Decrypt files/folders
17. CleanMgr Automated cleanup of Temp files, recycle bin
18. CLEARMEM Clear memory leaks
19. CLIP Copy STDIN to the Windows clipboard.
20. CLS Clear the screen
21. CLUSTER Windows Clustering
22. CMD Start a new CMD shell
23. COLOR Change colors of the CMD window
24. COMP Compare the contents of two files or sets of files
25. COMPACT Compress files or folders on an NTFS partition
26. COMPRESS Compress individual files on an NTFS partition
27. CON2PRT Connect or disconnect a Printer
28. CONVERT Convert a FAT drive to NTFS.
29. COPY Copy one or more files to another location
30. CSCcmd Client-side caching (Offline Files)
31. CSVDE Import or Export Active Directory data
32. DATE Display or set the date
33. Dcomcnfg DCOM Configuration Utility
34. DEFRAG Defragment hard drive
35. DEL Delete one or more files
36. DELPROF Delete NT user profiles
37. DELTREE Delete a folder and all subfolders
38. DevCon Device Manager Command Line Utility
39. DIR Display a list of files and folders
40. DIRUSE Display disk usage
41. DISKCOMP Compare the contents of two floppy disks
42. DISKCOPY Copy the contents of one floppy disk to another
43. DNSSTAT DNS Statistics
44. DOSKEY Edit command line, recall commands, and create macros
45. DSADD Add user (computer, group..) to active directory
46. DSQUERY List items in active directory
47. DSMOD Modify user (computer, group..) in active directory
48. ECHO Display message on screen
49. ENDLOCAL End localisation of environment changes in a batch file
50. ERASE Delete one or more files
51. EXIT Quit the current script/routine and set an errorlevel.
52. EXPAND Uncompress files
53. EXTRACT Uncompress CAB files
54. FC Compare two files
55. FDISK Disk Format and partition
56. FIND Search for a text string in a file
57. FINDSTR Search for strings in files
58. FOR /F Loop command: against a set of files
59. FOR /F Loop command: against the results of another command
60. FOR Loop command: all options Files, Directory, List
61. FORFILES Batch process multiple files
62. FORMAT Format a disk
63. FREEDISK Check free disk space (in bytes)
64. FSUTIL File and Volume utilities
65. FTP File Transfer Protocol
66. FTYPE Display or modify file types used in file extension associations
67. GLOBAL Display membership of global groups
68. GOTO Direct a batch program to jump to a labelled line
69. HELP Online Help
70. HFNETCHK Network Security Hotfix Checker
71. IF Conditionally perform a command
72. IFMEMBER Is the current user in an NT Workgroup
73. IPCONFIG Configure IP
74. KILL Remove a program from memory
75. LABEL Edit a disk label
76. LOCAL Display membership of local groups
77. LOGEVENT Write text to the NT event viewer.
78. LOGOFF Log a user off
79. LOGTIME Log the date and time in a file
80. MAPISEND Send email from the command line
81. MEM Display memory usage
82. MD Create new folders
83. MKLINK Create a symbolic link (linkd)
84. MODE Configure a system device
85. MORE Display output, one screen at a time
86. MOUNTVOL Manage a volume mount point
87. MOVE Move files from one folder to another
88. MOVEUSER Move a user from one domain to another
89. MSG Send a message
90. MSIEXEC Microsoft Windows Installer
91. MSINFO Windows NT diagnostics
92. MSTSC Terminal Server Connection (Remote Desktop Protocol)
93. MUNGE Find and Replace text within file(s)
94. MV Copy in-use files
95. NET Manage network resources
96. NETDOM Domain Manager
97. NETSH Configure network protocols
98. NETSVC Command-line Service Controller
99. NBTSTAT Display networking statistics (NetBIOS over TCP/IP)
100. NETSTAT Display networking statistics (TCP/IP)
101. NOW Display the current Date and Time
102. NSLOOKUP Name server lookup
103. NTBACKUP Backup folders to tape
104. NTRIGHTS Edit user account rights
105. PATH Display or set a search path for executable files
106. PATHPING Trace route plus network latency and packet loss
107. PAUSE Suspend processing of a batch file and display a message
108. PERMS Show permissions for a user
109. PERFMON Performance Monitor
110. PING Test a network connection
111. POPD Restore the previous value of the current directory saved by PUSHD
112. PORTQRY Display the status of ports and services
113. PRINT Print a text file
114. PRNCNFG Display, configure or rename a printer
115. PRNMNGR Add, delete, list printers set the default printer
116. PROMPT Change the command prompt
117. PsExec Execute process remotely
118. PsFile Show files opened remotely
119. PsGetSid Display the SID of a computer or a user
120. PsInfo List information about a system
121. PsKill Kill processes by name or process ID
122. PsList List detailed information about processes
123. PsLoggedOn Who's logged on (locally or via resource sharing)
124. PsLogList Event log records
125. PsPasswd Change account password
126. PsService View and control services
127. PsShutdown Shutdown or reboot a computer
128. PsSuspend Suspend processes
129. PUSHD Save and then change the current directory
130. QGREP Search file(s) for lines that match a given pattern.
131. RASDIAL Manage RAS connections
132. RASPHONE Manage RAS connections
133. RECOVER Recover a damaged file from a defective disk.
134. REG Registry: Read, Set, Export, Delete keys and values
135. REGEDIT Import or export registry settings
136. REGSVR32 Register or unregister a DLL
137. REGINI Change Registry Permissions
138. REM Record comments (remarks) in a batch file
139. REN Rename a file or files.
140. REPLACE Replace or update one file with another
141. RD Delete folder(s)
142. RDISK Create a Recovery Disk
143. RMTSHARE Share a folder or a printer
144. ROBOCOPY Robust File and Folder Copy
145. ROUTE Manipulate network routing tables
146. RUNAS Execute a program under a different user account
147. RUNDLL32 Run a DLL command (add/remove print connections)
148. SC Service Control
149. SCHTASKS Create or Edit Scheduled Tasks
150. SCLIST Display NT Services
151. ScriptIt Control GUI applications
152. SET Display, set, or remove environment variables
153. SETLOCAL Control the visibility of environment variables
154. SETX Set environment variables permanently
155. SHARE List or edit a file share or print share
156. SHIFT Shift the position of replaceable parameters in a batch file
157. SHORTCUT Create a windows shortcut (.LNK file)
158. SHOWGRPS List the NT Workgroups a user has joined
159. SHOWMBRS List the Users who are members of a Workgroup
160. SHUTDOWN Shutdown the computer
161. SLEEP Wait for x seconds
162. SOON Schedule a command to run in the near future
163. SORT Sort input
164. START Start a program or command in a separate window.
165. SU Switch User
166. SUBINACL Edit file and folder Permissions, Ownership and Domain
167. SUBST Associate a path with a drive letter
168. SYSTEMINFO List system configuration
169. TASKLIST List running applications and services
170. TIME Display or set the system time
171. TIMEOUT Delay processing of a batch file
172. TITLE Set the window title for a CMD.EXE session
173. TOUCH Change file timestamps
174. TRACERT Trace route to a remote host
175. TREE Graphical display of folder structure
176. TYPE Display the contents of a text file
177. USRSTAT List domain usernames and last login
178. VER Display version information
179. VERIFY Verify that files have been saved
180. VOL Display a disk label
181. WHERE Locate and display files in a directory tree
182. WHOAMI Output the current UserName and domain
183. WINDIFF Compare the contents of two files or sets of files
184. WINMSD Windows system diagnostics
185. WINMSDP Windows system diagnostics II
186. WMIC WMI Commands
187. XCACLS Change file permissions
188. XCOPY Copy files and folders

Tuesday, August 3, 2010

10 Major Differnces in between C and C++

C++, as the name suggests is a superset of C. As a matter of fact, C++ can run most of C code while C cannot run C++ code. Here are the 10 major differences between C++ & C…

1. C follows the procedural programming paradigm while C++ is a multi-paradigm language(procedural as well as object oriented)

In case of C, importance is given to the steps or procedure of the program while C++ focuses on the data rather than the process.
Also, it is easier to implement/edit the code in case of C++ for the same reason.

2. In case of C, the data is not secured while the data is secured(hidden) in C++

This difference is due to specific OOP features like Data Hiding which are not present in C.

3. C is a low-level language while C++ is a middle-level language

C is regarded as a low-level language(difficult interpretation & less user friendly) while C++ has features of both low-level(concentration on whats going on in the machine hardware) & high-level languages(concentration on the program itself) & hence is regarded as a middle-level language.

4. C uses the top-down approach while C++ uses the bottom-up approach

In case of C, the program is formulated step by step, each step is processed into detail while in C++, the base elements are first formulated which then are linked together to give rise to larger systems.

5. C is function-driven while C++ is object-driven

Functions are the building blocks of a C program while objects are building blocks of a C++ program.

6. C++ supports function overloading while C does not

Overloading means two functions having the same name in the same program. This can be done only in C++ with the help of Polymorphism(an OOP feature)

7. We can use functions inside structures in C++ but not in C.

In case of C++, functions can be used inside a structure while structures cannot contain functions in C.

8. The NAMESPACE feature in C++ is absent in case of C

C++ uses NAMESPACE which avoid name collisions. For instance, two students enrolled in the same university cannot have the same roll number while two students in different universities might have the same roll number. The universities are two different namespace & hence contain the same roll number(identifier) but the same university(one namespace) cannot have two students with the same roll number(identifier)

9. The standard input & output functions differ in the two languages

C uses scanf & printf while C++ uses cin>> & cout<< as their respective input & output functions

10. C++ allows the use of reference variables while C does not

Reference variables allow two variable names to point to the same memory location. We cannot use these variables in C programming.

Best practices for programming in C

Styles and Guidelines

  • Use a source code style that makes the code readable and consistent. Unless you have a group code style or a style of your own, you could use a style similar to the Kernighan and Ritchie style used by a vast majority of C programmers. Taken to an extreme, however, it's possible to end up with something like this:
    	int i;main(){for(;i["]

    --Dishonorable mention, Obfuscated C Code Contest, 1984. Author requested anonymity.

  • It is common to see the main routine defined as main(). The ANSI way of writing this is int main(void) (if there are is no interest in the command line arguments) or as int main( int argc, char **argv ). Pre-ANSI compilers would omit the void declaration, or list the variable names and follow with their declarations.
  • Whitespace

    Use vertical and horizontal whitespace generously. Indentation and spacing should reflect the block structure of the code.

    A long string of conditional operators should be split onto separate lines. For example:

    	if (foo->next==NULL && number <>

    might be better as:

      	  if (foo->next == NULL
    
    && number <>

    Similarly, elaborate for loops should be split onto different lines:

    	for (curr = *varp, trail = varp;
    
    curr != NULL;
    trail = &(curr->next), curr = curr->next )
    {
    ...

    Other complex expressions, such as those using the ternary ?: operator, are best split on to several lines, too.

    	z = (x == y)
    
    ? n + f(x)
    : f(y) - n;

  • Comments

    The comments should describe what is happening, how it is being done, what parameters mean, which globals are used and any restrictions or bugs. However, avoid unnecessary comments. If the code is clear, and uses good variable names, it should be able to explain itself well. Since comments are not checked by the compiler, there is no guarantee they are right. Comments that disagree with the code are of negative value. Too many comments clutter code.

    Here is a superfluous comment style:

    	i=i+1;        /* Add one to i */
    

    It's pretty clear that the variable i is being incremented by one. And there are worse ways to do it:

      		  /************************************
    
    * *
    * Add one to i *
    * *
    ************************************/

    i=i+1;

  • Naming Conventions

    Names with leading and trailing underscores are reserved for system purposes and should not be used for any user-created names. Convention dictates that:

    1. #define constants should be in all CAPS.
    2. enum constants are Capitalized or in all CAPS
    3. Function, typedef, and variable names, as well as struct, union, and enum tag names should be in lower case.

    For clarity, avoid names that differ only in case, like foo and Foo . Similarly, avoid foobar and foo_bar. Avoid names that look like each other. On many terminals and printers, 'l', '1' and 'I' look quite similar. A variable named 'l' is particularly bad because it looks so much like the constant '1'.

  • Variable names

    When choosing a variable name, length is not important but clarity of expression is. A long name can be used for a global variable which is rarely used but an array index used on every line of a loop need not be named any more elaborately than i. Using 'index' or 'elementnumber' instead is not only more to type but also can obscure the details of the computation. With long variable names sometimes it is harder to see what is going on. Consider:

         for(i=0 to 100)
    
    array[i]=0

    versus

         for(elementnumber=0 to 100)
    
    array[elementnumber]=0;

  • Function names

    Function names should reflect what they do and what they return. Functions are used in expressions, often in an if clause, so they need to read appropriately. For example:

         if (checksize(x))

    is unhelpful because it does not tell us whether checksize returns true on error or non-error; instead:

         if (validsize(x))
    

    makes the point clear.

  • Declarations

    All external data declaration should be preceded by the extern keyword.

    The "pointer'' qualifier, '*', should be with the variable name rather than with the type.

    	char        *s, *t, *u;
    

    instead of

    	char*   s, t, u;

    The latter statement is not wrong, but is probably not what is desired since 't' and 'u' do not get declared as pointers.

  • Header Files

    Header files should be functionally organized, that is, declarations for separate subsystems should be in separate header files. Also, declarations that are likely to change when code is ported from one platform to another should be in a separate header file.

    Avoid private header filenames that are the same as library header filenames. The statement #include "math.h'' includes the standard library math header file if the intended one is not found in the current directory. If this is what you want to happen, comment this fact.

    Finally, using absolute pathnames for header files is not a good idea. The "include-path'' option of the C compiler (-I (capital "eye") on many systems) is the preferred method for handling extensive private libraries of header files; it permits reorganizing the directory structure without having to alter source files.

  • scanf

    scanf should never be used in serious applications. Its error detection is inadequate. Look at the example below:

    	#include 
    

    int main(void)
    {
    int i;
    float f;

    printf("Enter an integer and a float: ");
    scanf("%d %f", &i, &f);

    printf("I read %d and %f\n", i, f);
    return 0;
    }

    Test run

    Enter an integer and a float: 182 52.38

    I read 182 and 52.380001

    Another TEST run

    Enter an integer and a float: 6713247896 4.4

    I read -1876686696 and 4.400000

  • ++ and --

    When the increment or decrement operator is used on a variable in a statement, that variable should not appear more than once in the statement because order of evaluation is compiler-dependent. Do not write code that assumes an order, or that functions as desired on one machine but does not have a clearly defined behavior:

    	int i = 0, a[5];
    

    a[i] = i++; /* assign to a[0]? or a[1]? */

  • Don't let yourself believe you see what isn't there.

    Look at the following example:

    		while (c == '\t' || c = ' ' || c == '\n')
    
    c = getc(f);

    The statement in the while clause appears at first glance to be valid C. The use of the assignment operator, rather than the comparison operator, results in syntactically incorrect code. The precedence of = is lowest of any operator so it would have to be interpreted this way (parentheses added for clarity):

    		while ((c == '\t' || c) = (' ' || c == '\n'))
    
    c = getc(f);

    The clause on the left side of the assignment operator is:

    		(c == '\t' || c)
    

    which does not result in an lvalue. If c contains the tab character, the result is "true" and no further evaluation is performed, and "true" cannot stand on the left-hand side of an assignment.

  • Be clear in your intentions.

    When you write one thing that could be interpreted for something else, use parentheses or other methods to make sure your intent is clear. This helps you understand what you meant if you ever have to deal with the program at a later date. And it makes things easier if someone else has to maintain the code.

    It is sometimes possible to code in a way that anticipates likely mistakes. For example, you can put constants on the left of equality comparisons. That is, instead of writing:

    	while (c == '\t' || c == ' ' || c == '\n')
    
    c = getc(f);

    You can say:

    	while ('\t' == c || ' ' == c || '\n' == c)
    
    c = getc(f);

    This way you will get a compiler diagnostic:

    	while ('\t' = c || ' ' == c || '\n' == c)
    
    c = getc(f);

    This style lets the compiler find problems; the above statement is invalid because it tries to assign a value to '\t'.

  • Trouble from unexpected corners.

    C implementations generally differ in some aspects from each other. It helps to stick to the parts of the language that are likely to be common to all implementations. By doing that, it will be easier to port your program to a new machine or compiler and less likely that you will run into compiler idiosyncracies. For example, consider the string:

    	/*/*/2*/**/1

    This takes advantage of the "maximal munch" rule. If comments nest, it is interpreted this way:

    	/*  /*  /2  */  *  */  1

    The two /* symbols match the two */ symbols, so the value of this is 1. If comments do not nest, on some systems, a /* in a comment is ignored. On others a warning is flagged for /*. In either case, the expression is interpreted this way:

    	/*  /  */  2  *  /*  */  1

    2 * 1 evaluates to 2.

  • Flushing Output Buffer

    When an application terminates abnormally, the tail end of its output is often lost. The application may not have the opportunity to completely flush its output buffers. Part of the output may still be sitting in memory somewhere and is never written out. On some systems, this output could be several pages long.

    Losing output this way can be misleading because it may give the impression that the program failed much earlier than it actually did. The way to address this problem is to force the output to be unbuffered, especially when debugging. The exact incantation for this varies from system to system but usually looks something like this:

    	setbuf(stdout, (char *) 0);

    This must be executed before anything is written to stdout. Ideally this could be the first statement in the main program.

  • getchar() - macro or function

    The following program copies its input to its output:

    	#include  
    

    int main(void)
    {
    register int a;

    while ((a = getchar()) != EOF)
    putchar(a);
    }

    Removing the #include statement from the program would cause it to fail to compile because EOF would then be undefined.

    We can rewrite the program in the following way:

    	#define EOF -1
    

    int main(void)
    {
    register int a;

    while ((a = getchar()) != EOF)
    putchar(a);
    }

    This will work on many systems but on some it will run much more slowly.

    Since function calls usually take a long time, getchar is often implemented as a macro. This macro is defined in stdio.h, so when #include is removed, the compiler does not know what getchar is. On some systems it assumes that getchar is a function that returns an int.

    In reality, many C implementations have a getchar function in their libraries, partly to safeguard against such lapses. Thus in situations where #include is missing the compiler uses the function version of getchar. Overhead of function call makes the program slower. The same argument applies to putchar.

  • null pointer

    A null pointer does not point to any object. Thus it is illegal to use a null pointer for any purpose other than assignment and comparison.

    Never redefine the NULL symbol. The NULL symbol should always have a constant value of zero. A null pointer of any given type will always compare equal to the constant zero, whereas comparison with a variable with value zero or to some non-zero constant has implementation-defined behaviour.

    Dereferencing a null pointer may cause strange things to happen.

  • What does a+++++b mean?

    The only meaningful way to parse this is:

    		a ++  +  ++  b
    

    However, the maximal munch rule requires it to be broken down as:

    		a ++  ++  +  b
    

    This is syntactically invalid: it is equivalent to:

    		((a++)++) +  b
    

    But the result of a++ is not an lvalue and hence is not acceptable as an operand of ++. Thus the rules for resolving lexical ambiguity make it impossible to resolve this example in a way that is syntactically meaningful. In practice, of course, the prudent thing to do is to avoid construction like this unless you are absolutely certain what they mean. Of course, adding whitespace helps the compiler to understand the intent of the statement, but it is preferable (from a code maintenance perspective) to split this construct into more than one line:

    	++b;
    
    (a++) + b;

  • Treat functions with care

    Functions are the most general structuring concept in C. They should be used to implement "top-down" problem solving - namely breaking up a problem into smaller and smaller subproblems until each piece is readily expressed in code. This aids modularity and documentation of programs. Moreover, programs composed of many small functions are easier to debug.

    Cast all function arguments to the expected type if they are not of that type already, even when you are convinced that this is unnecessary since they may hurt you when you least expect it. In other words, the compiler will often promote and convert data types to conform to the declaration of the function parameters. But doing so manually in the code clearly explains the intent of the programmer, and may ensure correct results if the code is ever ported to another platform.

    If the header files fail to declare the return types of the library functions, declare them yourself. Surround your declarations with #ifdef/#endif statements in case the code is ever ported to another platform.

    Function prototypes should be used to make code more robust and to make it run faster.

  • Dangling else

    Stay away from "dangling else" problem unless you know what you're doing:

    		if (a == 1)
    
    if (b == 2)
    printf("***\n");
    else
    printf("###\n");


    The rule is that an else attaches to the nearest if. When in doubt, or if there is a potential for ambiguity, add curly braces to illuminate the block structure of the code.

  • Array bounds

    Check the array bounds of all arrays, including strings, since where you type "fubar'' today someone someday may type "floccinaucinihilipilification". Robust production software should not use gets().

    The fact that C subscripts start from zero makes all kinds of counting problems easier. However, it requires some effort to learn to handle them.

  • Null statement

    The null body of a for or while loop should be alone on a line and commented so that it is clear that the null body is intentional and not missing code.

    	while (*dest++ = *src++)
    
    ; /* VOID */

  • Test for true or false

    Do not default the test for non-zero, that is:

    	if (f() != FAIL)
    

    is better than

    	if (f())
    

    even though FAIL may have the value 0 which C considers to be false. (Of course, balance this against constructs such as the one shown above in the "Function Names" section.) An explicit test will help you out later when somebody decides that a failure return should be -1 instead of 0.

    A frequent trouble spot is using the strcmp function to test for string equality, where the result should never be defaulted. The preferred approach is to define a macro STREQ:

    	#define STREQ(str1, str2) (strcmp((str1), (str2)) == 0)
    

    Using this, a statement such as:

    	If ( STREQ( inputstring, somestring ) ) ...
    

    carries with it an implied behavior that is unlikely to change under the covers (folks tend not to rewrite and redefine standard library functions like strcmp()).

    Do not check a boolean value for equality with 1 (TRUE, YES, etc.); instead test for inequality with 0 (FALSE, NO, etc.). Most functions are guaranteed to return 0 if false, but only non-zero if true. Thus,

    	if (func() == TRUE) {...

    is better written

    	if (func() != FALSE)

  • Embedded statement

    There is a time and a place for embedded assignment statements. In some constructs there is no better way to accomplish the results without resulting in bulkier and less readable code:

    	while ((c = getchar()) != EOF) {
    
    process the character
    }

    Using embedded assignment statements to improve run-time performance is possible. However, you should consider the tradeoff between increased speed and decreased maintainability that results when embedded assignments are used in artificial places. For example:

    	x = y + z;
    
    d = x + r;

    should not be replaced by:

    	d = (x = y + z) + r;

    even though the latter may save one cycle. In the long run the time difference between the two will decrease as the optimizer is enhanced, while the difference in ease of maintenance will increase.

  • goto statements

    goto should be used sparingly. The one place where they can be usefully employed is to break out of several levels of switch, for, and while nesting, although the need to do such a thing may indicate that the inner constructs should be broken out into a separate function.

    	    for (...) {
    
    while (...) {
    ...
    if (wrong)
    goto error;

    }
    }
    ...
    error:
    print a message

    When a goto is necessary the accompanying label should be alone on a line and either tabbed one stop to the left of the code that follows, or set at the beginning of the line. Both the goto statement and target should be commented to their utility and purpose.

  • Fall-though in switch

    When a block of code has several labels, place the labels on separate lines. This style agrees with the use of vertical whitespace, and makes rearranging the case options a simple task, should that be required. The fall-through feature of the C switch statement must be commented for future maintenance. If you've ever been "bitten" by this feature, you'll appreciate its importance!

    	switch (expr) {
    
    case ABC:
    case DEF:
    statement;
    break;
    case UVW:
    statement; /*FALLTHROUGH*/
    case XYZ:
    statement;
    break;
    }

    While the last break is technically unnecessary, the consistency of its use prevents a fall-through error if another case is later added after the last one. The default case, if used, should always be last and does not require a final break statement if it is last.

  • Constants

    Symbolic constants make code easier to read. Numerical constants should generally be avoided; use the #define function of the C preprocessor to give constants meaningful names. Defining the value in one place (preferably a header file) also makes it easier to administer large programs since the constant value can be changed uniformly by changing only the define. Consider using the enumeration data type as an improved way to declare variables that take on only a discrete set of values. Using enumerations also lets the compiler warn you of any misuse of an enumerated type. At the very least, any directly-coded numerical constant must have a comment explaining the derivation of the value.

    Constants should be defined consistently with their use; e.g. use 540.0 for a float instead of 540 with an implicit float cast. That said, there are some cases where the constants 0 and 1 may appear as themselves instead of as defines. For example if a for loop indexes through an array, then:

    	for (i = 0; i <>

    is quite reasonable, while the code:

    	gate_t *front_gate = opens(gate[i], 7);
    
    if (front_gate == 0)
    error("can't open %s\n", gate[i]);

    is not. In the second example front_gate is a pointer; when a value is a pointer it should be compared to NULL instead of 0. Even simple values like 1 or 0 are often better expressed using defines like TRUE and FALSE (and sometimes YES and NO read better).

    Don't use floating-point variables where discrete values are needed. This is due to the inexact representation of floating point numbers (see the second test in scanf, above). Test floating-point numbers using <= or >=; an exact comparison (== or !=) may not detect an "acceptable" equality.

    Simple character constants should be defined as character literals rather than numbers. Non-text characters are discouraged as non-portable. If non-text characters are necessary, particularly if they are used in strings, they should be written using a escape character of three octal digits rather than one (for example, '\007'). Even so, such usage should be considered machine-dependent and treated as such.

  • Conditional Compilation

    Conditional compilation is useful for things like machine-dependencies, debugging, and for setting certain options at compile-time. Various controls can easily combine in unforeseen ways. If you use #ifdef for machine dependencies, make sure that when no machine is specified, the result is an error, not a default machine. The #error directive comes in handy for this purpose. And if you use #ifdef for optimizations, the default should be the unoptimized code rather than an uncompilable or incorrect program. Be sure to test the unoptimized code.


Miscellaneous

  • Utilities for compiling and linking such as Make simplify considerably the task of moving an application from one environment to another. During development, make recompiles only those modules that have been changed since the last time make was used.

    Use lint frequently. lint is a C program checker that examines C source files to detect and report type incompatibilities, inconsistencies between function definitions and calls, potential program bugs, etc.

    Also, investigate the compiler documentation for switches that encourage it to be "picky". The compiler's job is to be precise, so let it report potential problems by using appropriate command line options.

  • Minimize the number of global symbols in the application. One of the benefits is the lower probability of conflicts with system-defined functions.
  • Many programs fail when their input is missing. All programs should be tested for empty input. This is also likely to help you understand how the program is working
  • Don't assume any more about your users or your implementation than you have to. Things that "cannot happen" sometimes do happen. A robust program will defend against them. If there's a boundary condition to be found, your users will somehow find it!

    Never make any assumptions about the size of a given type, especially pointers.

    When char types are used in expressions most implementations will treat them as unsigned but there are others which treat them as signed. It is advisable to always cast them when used in arithmetic expressions.

    Do not rely on the initialization of auto variables and of memory returned by malloc.

  • Make your program's purpose and structure clear.
  • Keep in mind that you or someone else will likely be asked to modify your code or make it run on a different machine sometime in the future. Craft your code so that it is portable to other machines.

Conclusion

It is a common knowledge that the maintenance of applications takes a significant amount of a programmer's time. Part of the reason for this is the use of non-portable and non-standard features and less than desirable programming style when developing applications. In this article we have presented some guidelines which have stood us in good stead over the years. We believe that these guidelines, when followed, will make application maintenance easier in a team environment.


Reference

  • Obfuscated C and Other Mysteries by Don Libes, John Wiley and Sons, Inc., ISBN 0-471-57805-3
  • The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie, Second Edition, Prentice-Hall, ISBN 0-13-110370-9
  • Safer C by Les Hatton, McGraw-Hill, ISBN 0-07-707640-0
  • C Traps and Pitfalls by Andrew Koenig, AT&T Bell Laboratories, ISBN 0-201-17928-9

Tuesday, April 6, 2010

Software Development Life Cycle Models

I was asked to put together this high-level and traditional software life cycle information as a favor for a friend of a friend, so I thought I might as well share it with everybody.

The General Model

Software life cycle models describe phases of the software cycle and the order in which those phases are executed. There are tons of models, and many companies adopt their own, but all have very similar patterns. The general, basic model is shown below:

General Life Cycle ModelGeneralModel

Each phase produces deliverables required by the next phase in the life cycle. Requirements are translated into design. Code is produced during implementation that is driven by the design. Testing verifies the deliverable of the implementation phase against requirements.

Requirements

Business requirements are gathered in this phase. This phase is the main focus of the project managers and stake holders. Meetings with managers, stake holders and users are held in order to determine the requirements. Who is going to use the system? How will they use the system? What data should be input into the system? What data should be output by the system? These are general questions that get answered during a requirements gathering phase. This produces a nice big list of functionality that the system should provide, which describes functions the system should perform, business logic that processes data, what data is stored and used by the system, and how the user interface should work. The overall result is the system as a whole and how it performs, not how it is actually going to do it.

Design

The software system design is produced from the results of the requirements phase. Architects have the ball in their court during this phase and this is the phase in which their focus lies. This is where the details on how the system will work is produced. Architecture, including hardware and software, communication, software design (UML is produced here) are all part of the deliverables of a design phase.

Implementation

Code is produced from the deliverables of the design phase during implementation, and this is the longest phase of the software development life cycle. For a developer, this is the main focus of the life cycle because this is where the code is produced. Implementation my overlap with both the design and testing phases. Many tools exists (CASE tools) to actually automate the production of code using information gathered and produced during the design phase.

Testing

During testing, the implementation is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase. Unit tests and system/acceptance tests are done during this phase. Unit tests act on a specific component of the system, while system tests act on the system as a whole.

So in a nutshell, that is a very basic overview of the general software development life cycle model. Now lets delve into some of the traditional and widely used variations.

Waterfall Model

This is the most common and classic of life cycle models, also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed in its entirety before the next phase can begin. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. Unlike what I mentioned in the general model, phases do not overlap in a waterfall model.

Waterfall Life Cycle ModelWaterFallModel

Advantages

  • Simple and easy to use.
  • Easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Works well for smaller projects where requirements are very well understood.

Disadvantages

  • Adjusting scope during the life cycle can kill a project
  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Poor model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Poor model where requirements are at a moderate to high risk of changing.

V-Shaped Model

Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes. Each phase must be completed before the next phase begins. Testing is emphasized in this model more so than the waterfall model though. The testing procedures are developed early in the life cycle before any coding is done, during each of the phases preceding implementation.

Requirements begin the life cycle model just like the waterfall model. Before development is started, a system test plan is created. The test plan focuses on meeting the functionality specified in the requirements gathering.

The high-level design phase focuses on system architecture and design. An integration test plan is created in this phase as well in order to test the pieces of the software systems ability to work together.

The low-level design phase is where the actual software components are designed, and unit tests are created in this phase as well.

The implementation phase is, again, where all coding takes place. Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use.

V-Shaped Life Cycle ModelVShapedModel

Advantages

  • Simple and easy to use.
  • Each phase has specific deliverables.
  • Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.
  • Works well for small projects where requirements are easily understood.

Disadvantages

  • Very rigid, like the waterfall model.
  • Little flexibility and adjusting scope is difficult and expensive.
  • Software is developed during the implementation phase, so no early prototypes of the software are produced.
  • Model doesn’t provide a clear path for problems found during testing phases.

Incremental Model

The incremental model is an intuitive approach to the waterfall model. Multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle. Cycles are divided up into smaller, more easily managed iterations. Each iteration passes through the requirements, design, implementation and testing phases.

A working version of software is produced during the first iteration, so you have working software early on during the software life cycle. Subsequent iterations build on the initial software produced during the first iteration.

Incremental Life Cycle ModelSpiralModel

Advantages

  • Generates working software quickly and early during the software life cycle.
  • More flexible – less costly to change scope and requirements.
  • Easier to test and debug during a smaller iteration.
  • Easier to manage risk because risky pieces are identified and handled during its iteration.
  • Each iteration is an easily managed milestone.

Disadvantages

  • Each phase of an iteration is rigid and do not overlap each other.
  • Problems may arise pertaining to system architecture because not all requirements are gathered up front for the entire software life cycle.

Spiral Model

The spiral model is similar to the incremental model, with more emphases placed on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model). The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral.

Requirements are gathered during the planning phase. In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A prototype is produced at the end of the risk analysis phase.

Software is produced in the engineering phase, along with testing at the end of the phase. The evaluation phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral.

In the spiral model, the angular component represents progress, and the radius of the spiral represents cost.

Spiral Life Cycle ModelSpiralModel

Advantages

  • High amount of risk analysis
  • Good for large and mission-critical projects.
  • Software is produced early in the software life cycle.

Disadvantages

  • Can be a costly model to use.
  • Risk analysis requires highly specific expertise.
  • Project’s success is highly dependent on the risk analysis phase.
  • Doesn’t work well for smaller projects.

And that’s it. If you have any input, especially your views on advantages and disadvantages of any particular model, feel free to leave them in the comments and I can add them to my copy.

Software Development Life Cycle

The following are the actives of the SDLC

1) System engineering and modeling

2) Software require analysis

3) Systems analysis and design

4) Code generation

5) Testing

6) Development and Maintenance

System Engineering and Modeling

In this process we have to identify the projects requirement and main features proposed in the application. Here the development team visits the customer and their system. They investigate the need for possible software automation in the given system. By the end of the investigation study. The team writes a document that holds the specifications for the customer system.


Software Requirement Analysis

In this software requirements analysis, firstly analysis the requirement for the proposed system. To understand the nature of the program to built, the system engineer must understand the information domain for the software, as well as required functions, performance and the interfacing. From the available information the system engineer develops a list of the actors use cases and system level requirement for the project. With the help of key user the list of use case and requirement is reviewed. Refined and updated in an iterative fashion until the user is satisfied that it represents the essence of the proposed system.


Systems analysis and design

The design is the process of designing exactly how the specifications are to be implemented. It defines specifically how the software is to be written including an object model with properties and method for each object, the client/server technology, the number of tiers needed for the package architecture and a detailed database design. Analysis and design are very important in the whole development cycle. Any glitch in the design could be very expensive to solve in the later stage of the software development.


Code generation

The design must be translated into a machine readable form. The code generation step performs this task. The development phase involves the actual coding of the entire application. If design is performed in a detailed manner. Code generation can be accomplished with out much complicated. Programming tools like compilers, interpreters like c, c++, and java are used for coding .with respect to the type of application. The right programming language is chosen.


Testing

After the coding. The program testing begins. There are different methods are there to detect the error in coding .different method are already available. Some companies are developed they own testing tools


Development and Maintenance

The development and maintenance is a staged roll out of the new application, this involves installation and initial training and may involve hardware and network upgrades. Software will definitely undergo change once it is delivered to the customer. There are many reasons for the change. Change could be happen because of some unexpected input values into the system. In addition, the changes in the system could be directly affecting the software operations. The software should be developed to accommodate changes that could happen during the post implementation period.

Monday, February 1, 2010

How to Record OnScreen Activites Online

When making a computer based tutorial/presentation you’re required to get specialized software that will capture both your voice and your movements onscreen. Some of these software cost hundreds of dollars are bulky to install and are espcially confusing to setup. For example when choosing which video and audio format to use to save your actions in.

ScreenJelly enters the fray to not only provide the service of `screencasts’ in an easy manner for both the creator of the screencast and the user but they’re doing it using only your web browser and its for free.

You just need to allow a Java applet to load after which you will be given a large Red button. As soon as you click the button you have 3 minutes to record your actions along with any audio info you want (through your mic). When you’re done you’ll be given the option to either email, tweet or use some of the other supported social networks to share your screencast with others.

Screenjelly

There is not software to install all you need is your browser, mic and a little (or lot) of imagination! Within minutes others will be viewing your visual take on whatever it is you wanted to show.

Dry clean your USB drives with USB Drive Fresher

If you have been using your USB drive for a while, you'll soon notice that there are quite a few "junk" folders and files created. In fact this is true for most of the folders on your system.

One solution is to manually sit and clean all the files. Another alternative is to use a software designed for this purpose.

USBDriveFresher will keep your USB drive clean by removing unwanted files automatically and according to rules you specify. You can start off by downloading the software and installing it. The download is a bit big weighing in at ~7.4MB. You'll need to install the software on your computer and start it up.

Choose any of the three options below. I chose to run the Custom Cleanup on a brand new 500GB drive that I picked up a few days back and have used only once.

USBDriveFresher01

It still managed to find and clean up 97 files and recover about 1.3MB of space.

USBDriveFresher02

Thanks to the custom cleanup option you can run this on all your drives and let it clean properly. You can also set USBDriveFresher to work silently in the background cleaning up all your USB drives when you plug them in.

The software also allows you to define your own custom delete rules to clean up other types of files.

USBDriveFresher03

Overall this is a decent tool that takes away the hassle of keeping your drives clean.

Download USBDriveFresher

How To Easily Merge Multiple MPEG Videos

There are times when a number of small video clips are created when one uses the video function in one's phone or perhaps you'd like to join together a set of mpg clips created by your digital camcorder. If your camcorder or clips are in the MPEG format, you're in luck – a simple command line will append and merge the clips into a single large clip allowing you uninterrupted viewing pleasure. This is done by using the COPY command and without the need for any external utility.

This method will work for MPG files for sure, but rarely for AVI or WMV files.

1. Open a command prompt window – click START > RUN… Type in cmd
2. Navigate to the folder where the multiple mpg clips are stored, ( If they're in C:\Vids, type in "cd\Vids")
3. Say you want ALL the clips to be merged into one file, so type this in:

copy /b *.mpg FullMovie.mpg

Using  COPY to merge multiple video clips

Using COPY to merge multiple video clips

ALL your clips will now be merged into the large FullMovie.mpg

TIP: name your files in the order you want them to be merged:

clip001.mpg
clip002.mpg
clip003.mpg
|
|
|
clip015.mpg etc.

That's it! If you'd rather customise the order, use the format:

copy /b FILE1.mpg + File314.mpg + File256.mpg OutputFile.mpg

The above example will merge File1, File314 and File 256 one after another into OutputFile.mpg

How to Detect the Spyware and MalwareHow to Detect the Spyware and Malware Spywares and malwares are considered to be a greater threat than computer

How to Detect the Spyware and Malware

Spywares and malwares are considered to be a greater threat than computer viruses. This is because the detection of a spyware or a malware in the computer is very tough and you cannot be sure that a spyware or a malware is present in the PC, until the time you notice the loss of data or the popping up of unwanted advertisements. This is the reason why it becomes highly imperative as a computer user to know how to detect as well as cure a spyware or malware attack. Although spywares and malwares do not possess the ability to self replicate (as computer viruses can do), they are as much a threat to the computer as well as the computer user, as are computer viruses.

Spywares are the programs which are really harmful as they possess the ability to capture as well as transport important information stored on the computer of a user. These programs come bundled up with other software applications downloaded from the internet, and are often also disguised as software which prevent spywares. These spywares can be of various forms, and range from screen capturing applications to keyboard loggers. There are various different ways in which the presence of these spywares can be detected. The following are just a few symptoms.

1. The appearance of never seen before toolbars as well as buttons on your computer screens. There may also be abruptly popping out advertisements as well as windows on your screen, which you have never been seen before.
2. Crashing off of the internet browser of your computer without any prior intimation or reason.
3. Gradual as well as mysterious slowing down of the computer during the execution of various programs and applications booting up.
4. The home page on the browser of your computer gets changed without your prior knowledge.
5. There appears to have been occurred some kind of a security breach on your system.
6. The appearance of bandwidth usage, even when no internet usage or data transfer is underway from the computer.
Once you are sure about the existence of spywares or malware in your computer, you should not be neglecting the curing of the problem, as it can cost you quite dearly. The very first step is to do away with the possibility of a virus threat to the computer. In order to do so, you can run an active virus scan throughout the system. After that, a suitable anti spyware software can also be executed in the system. Many anti spyware as well as anti malware software are available over the internet, for free of cost download as well as installation. You can install the software on the hard disk and can execute it from there. Some of the most commonly found free of cost anti spyware and anti – malware software are Windows Defender (Beta 2), Spybot – Search and Destroy, Ad-Aware SE Personal from Lavasoft in Google Pack, Ewido anti-spyware and anti-malware and many more.

Things you should know before buying a laptop...

I'm pretty sure most of the people who visit this site have at some point or the other had to make a decision about what laptop to buy.

More often than not we buy our laptops and are very happy with them for the first month and then things begin to change. Of course, having spent all this money we're not going to let anyone know that we're unhappy now, are we? But soon the screen falls off and the touch pad gets a mind of it's own and the keys begin to behave independently. (OK… this is over dramatizing it, but I'm sure at least some of us have regretted buying the laptop's we bought. Right?)

Here are a few things to keep in mind when buying your laptop. A little bit of knowledge in these matters goes a long way.

One of the first questions you gotta ask yourself is "Why?". The motive / reason for buying your laptop will really help you narrow down a seemingly endless list to a handful that you can easily pick out of.
Some people buy laptops for work, some for leisure and some just to show off. Thankfully for all of us, there exists a laptop perfect for each one of us. (All hail capitalism!)

If you're a journalist who's constantly on the go but needs to write all the time, something light and small would be ideal. You don't really have the time to enjoy a big pretty laptop with tonnes of features. Basic connectivity and the ability to publish are what you really need. You are a 'Netbook' person. On the other hand, an author who writes most of the time but would also like to enjoy watching movies would prefer a laptop with some kind of media capabilities. And of course, at the other extreme you have someone who just wants to replace their lumbering desktop with a cool looking laptop that performs just as well as a desktop. You would need a mainstream laptop with the processing power of NASA!

A few other things to know:

  • Weight Matters! And every extra feature adds weight. Right from the obvious, large screens, down to the not so obvious extra USB ports. I mean that's taking it a bit far, but in the long run all these little extra features do add up to a considerable amount of extra LBS that you're lugging around pointlessly.
  • Processing Power, Memory and additional Graphic support are a big deal! As mentioned before, if the reason to get your laptop is to accomplish one and only one goal, then it's not so much of an issue. However if you want to use your laptop for many things, right from official work to playing games or watching movies in your spare time, you want a laptop with some juice in it and of course a nice graphics card so you can play Call Of Duty without feeling like someone's trying to yank your eyeballs out of their sockets. Most Core 2 Duo laptops with at least 2 gigs of RAM and any of the mid ranged graphic cards should be just fine. (Having a slightly bigger screen here helps enhance the awesome COD experience.)
  • Battery Life! This is not so much of an issue for those who don't travel too much. However travel junkies or criminals, business men and hedge fun managers, etc… who move a lot would like some semblance of a battery life on their laptop. In my experience, the less features you have on your laptop, the longer the battery lasts. But this isn't always true.
  • Connectivity! Most laptops, even the lower end one's come with some sort of wireless feature these days. So this isn't much of an issue. But you must check to make sure your laptop can connect to the net in some way, shape or form.
  • "Free your mind. The Brand isn't there..!". Yes, that's right. Brands are an awesome way to show off but if you know what you're getting in to, they should not matter. I would suggest going with the best after sales Warranty deal that you get. Most brands get their parts manufactured from the same guys so it really doesn't matter which brand, unless of course you're getting an excellent deal.
  • Size does matter! This is linked very closely to the weight issue, but size does matter. Not only in terms of weight, but also in terms of features and how comfortable you will be working on it. Someone with very big hands might find it difficult to work with smaller laptops. Also being size conscious means you may have to let go of a few goodies that you might otherwise get.
  • Burn Baby Burn! Not all laptops and notebooks come with DVD writers. Most of them do, but that is one thing you must be sure of when you buy your laptop. If you ever feel that you're going to need to share media, especially in the format of DVDs and CDs, then this is something you need to think about. Though honestly, if you have a thumb drive or an external harddisk and are not obliged to burn CDs (at least in this day and age), you don't really have to worry.

That pretty much covers my advice to you. If there's something you'd like to ad, do let us know.

Sunday, December 13, 2009

How to play .swf files on your Desktop ?


Many a times you may get Flash files(with file extension .swf) from friends as e-mail forwards or you may have downloaded it off from websites online. But how do you play the .swf files in your desktop?

Here's how you can do it. Well, you have two options to play flash files off your desktop.

* Open the file within your web-browser. Simple - Drag and drop the .swf file into Internet Explorer or Firefox and it'll play.

* The other way is to play your flash files using the Adobe Standalone Flash Player.
For this you will first need to Download the Windows Flash Player 9 Projector content debugger from the Adobe Site [Freeware].
There is NO installation needed. Just open the downloaded .exe and open your .swf from within the Projector.
In order to associate all .swf files to open using the Projector, right click the .swf file and "Open with" option. Once there, choose the location of your Projector.exe and you are done.

Hope this information was useful.

Thursday, December 3, 2009

Use Gmail for all your e-mail links with gAttach

If you're a Windows user you know full well the tight integration among Microsoft products that has made the operating system a little less than friendly when it comes to tying in various Web apps. E-mail in particular is one of those actions that will usually pop up Outlook or Outlook Express, forcing you to either install a third-party mail app like Mozilla's Thunderbird or go in and tweak your registry.

If you're a Gmail user, and looking to get that same level of integration in Office documents and elsewhere on your system check out gAttach (download). This simple program will append all your mail extensions, getting them to open up in Gmail instead.

One thing that's nice is that it'll simply tack onto whatever browser you've got open, or simply open your default one if you don't have it running. It'll also suck in multiple files at a time (up to Gmail's 20MB limit of course).

Yahoo mail users can also take advantage of a sister product called yAttach, which will do the same thing, although you can't have both installed at once.


Once installed you've got an easy way to tweak your mail settings in Windows to open up in Gmail instead of Outlook or other default programs.

(Credit: CNET Networks)

Doing for Gmail what the MailTo link does for Outlook, the wonderfully simple gAttach is a small utility that reassigns Gmail as the default mail account from Windows documents. With gAttach installed, selecting Send from Windows Explorer, Firefox, and Microsoft Office automatically attaches the files to a Gmail composition instead of opening a new e-mail in your mail client.

Though effortless, we wish we could associate some file types with gAttach and let others default to the e-mail client. Also missing is a way for gAttach to automatically divide, where possible, e-mail compositions that breach the 20MB upload limit.

Thanx...

Utilities to use Gmail Space as Google Drive

Gmail

Gmail is really famous among users of all the email clients available on the web and that is not because it has a cool interface rather it is famous for its reliability and huge space (3GB now thats something). Google doesn't stop here and recently Google announced that users can now buy more online storage for Google services just by paying a little amount. So why not use this online storage space and use it externally (Probably as a network drive or one of your own computer hard drives).

Use Google Storage Space as Google Drive

Here I have some great little utilities (3 softwares and 2 web scripts) that you can try to use your Gmail account space as your external hard drive. You will be able to download (or should I say copy) attachments from your Gmail account to your computer just as you would do from a drive on your computer. You can also use this space to upload content direct from your computer and save it online in your Gmail account.

1. GMail Drive

Gmail Drive

GMail Drive is third party addon for Windows that lets you use your Gmail account space as an extra drive on your computer. It allows a user to access a virtual drive stored in a Gmail e-mail account by causing the contents of the Gmail account to appear as a new network share on the user's workstation. In order to use this add-on, the user needs a Gmail e-mail account. The add-on enables the user to use the standard Windows desktop file copy and paste commands to transfer files to and from the Gmail account as if it was a drive on the user's computer.

Download GMail Drive

2. GSpace

gspacelogo.png

GSpace is a firefox extension that turns your 3GB of your Gmail account into free online storage. With Gspace you can manage unlimited Gmail accounts to store all type of files within its simple, user friendly interface. You can also listen your favourite stored music directly from your Gspace, view your collections of pictures and manage your Gdrive files as well.

Download GSpace

3. GmailFS

GmailFS or Gmail File System is a virtual file system developed by Richard Jones which allows users to mount and use their Gmail email account's storage as a local disk drive. GmailFS is written for Linux, but Windows and Mac OS X ports do exist. Using GmailFS will provide the user with roughly three gigabytes of online storage. The speed of this filesystem is limited by the speed of the user's Internet connection, and the upload/download speed of the Gmail server. Files can be any size, and are stored as (segmented) attachments.

Download GmailFS

4. G-Share

G Share

G-Share is a PHP script that allows you to share your gmail attachments in a webpage, it is a download center with files stored in your Gmail account. You need a MySQL database to store data such as download counters, visitors, etc

Download G-Share

5. PHP Gmail Drive

php-gmail-drive.gif

PhpGmailDrive, also known as PGD, is an open source software program written in PHP to share Gmail file attachments on the web. PGD is based on GmailFS, a Gmail attachment file system that uses email subjects for organization.

Download PGD