Saturday, May 26, 2012

What is VoIP? How does it work?

3.1 What is VoIP?

VoIP stands for 'V'oice 'o'ver 'I'nternet 'P'rotocol. As the term says VoIP tries to let go voice (mainly human) through IP packets and, in definitive through Internet. VoIP can use accelerating hardware to achieve this purpose and can also be used in a PC environment.

3.2 How does it work?

Many years ago we discovered that sending a signal to a remote destination could have be done also in a digital fashion: before sending it we have to digitalize it with an ADC (analog to digital converter), transmit it, and at the end transform it again in analog format with DAC (digital to analog converter) to use it.
VoIP works like that, digitalizing voice in data packets, sending them and reconverting them in voice at destination.
Digital format can be better controlled: we can compress it, route it, convert it to a new better format, and so on; also we saw that digital signal is more noise tolerant than the analog one (see GSM vs TACS).
TCP/IP networks are made of IP packets containing a header (to control communication) and a payload to transport data: VoIP use it to go across the network and come to destination.
Voice (source) - - ADC - - - - Internet - - - DAC - - Voice (dest)

3.3 What is the advantages using VoIP rather PSTN?

When you are using PSTN line, you typically pay for time used to a PSTN line manager company: more time you stay at phone and more you'll pay. In addition you couldn't talk with other that one person at a time.
In opposite with VoIP mechanism you can talk all the time with every person you want (the needed is that other person is also connected to Internet at the same time), as far as you want (money independent) and, in addition, you can talk with many people at the same time.
If you're still not persuaded you can consider that, at the same time, you can exchange data with people are you talking with, sending images, graphs and videos.

3.4 Then, why everybody doesn't use it yet?

Unfortunately we have to report some problem with the integration between VoIP architecture and Internet. As you can easy imagine, voice data communication must be a real time stream (you couldn't speak, wait for many seconds, then hear other side answering): this is in contrast with the Internet heterogeneous architecture that can be made of many routers (machines that route packets), about 20-30 or more and can have a very high round trip time (RTT), so we need to modify something to get it properly working.

What is JUnit? What are the benefits?

JUnit is an open source framework that has been designed for the purpose of writing and running tests in the Java programming language. JUnit was originally written by Erich Gamma and Kent Beck. There are many ways to write test cases. A test case is a code fragment that checks that another code unit (method) works as expected. So if we want an accurate and efficient testing process then using a good testing framework is recommended. JUnit has established a good reputation in this scenario. 


JUnit is a regression-testing framework that developers can use to write unit tests as they develop systems. Unit testing belongs to test a single unit of code, which can be a single class for Java. This framework creates a relationship between development and testing. You start coding according to the specification and need and use the JUnit test runners to verify how much it deviates from the intended goal. Typically, in a unit testing, we start testing after completing a module but JUnit helps us to code and test both during the development. So it sets more focus on testing the  fundamental building blocks of a system i.e. one block at a time rather than module level functional testing. This really helps to develop test suites that can be run any time when you make any changes in your code. This all process will make you sure that the modifications in the code will not break your system without your knowledge.

Using a framework, like JUnit, to develop your test cases has a number of advantages, most important being that others will be able to understand test cases and easily write new ones and that most development tools enable for automated and / or one click test case execution.

JUnit provides also a graphical user interface (GUI) which makes it possible to write and test source code quickly and easily. JUnit shows test progress in a bar that is green if testing is going fine and it turns red when a test fails. There is a lot of pleasure in seeing the green bars grow in the GUI output. A list of unsuccessful tests appears at the bottom of the display window. We can run multiple testsconcurrently. The simplicity of JUnit makes it possible for the software developer to easily correct bugs as they are found.

Monday, May 21, 2012

Making Win Xp 60% Faster

Whenever you start your computer, you are faced with a few moments of thumb twiddling while Windows XP boots and prompts you to log on. Although you should expect to wait for a few moments, sometimes Windows XP seems to boot rather slowly. In fact, you may notice that over a period of time the PC that used to roar to life seems a bit sluggish instead. Fortunately, you can perform several techniques that help Windows XP get the bootup speed you want. This chapter explores how to put these techniques to work.

Some of the things may already have been discussed in some threads earlier

Stopping Unneeded Startup Services

Along with the core operating system and programs that Windows XP runs when it starts, there is also a host of services involved. Many of these services are necessary for Windows XP to operate correctly. However, many of them are for features in Windows XP that you may not use at all. You can peruse the services and disable any service that you do not want to run. The fewer services that run, the more quickly Windows XP will boot.

Caution: Exercise caution when stopping services. If you do not know what a service does or are unsure of the ramifications of stopping the service, leave it alone. Some services are critical to Windows XP's operations, so make sure you understand what the service is before you disable it.

To reduce the number of services that start on bootup, you can access two different areas of Windows XP. The first is the System Configuration Utility. The Services tab shows you the services that start when the computer boots.

You can stop a service from starting by simply clearing the check box next to the service and clicking OK. However, before you do so, there is another way to disable services that you may prefer because the interface gives you more information about the service in question.

Open Control Panel/Administrative ToolsServices or else select Start/Run, type services.msc, and click OK. Either way, you see the Services console.

I prefer to use the Services console instead of the System Configuration Utility because it describes what the service does. Additionally, you can double-click a service and examine its properties.

Notice the Startup Type column in Figure 4-2. This information lists whether the service is automatic or manual. Manual services are only started in Windows XP when you start a process that requires the service. Some other process may require the service that has a "dependency" relationship with it; in this case, the dependency service will start, as well. Because these services do not start automatically when you boot Windows XP, you do not need to do anything with manual services.

However, all services listed as automatic start when Windows XP boots. These are the services that increase boot time. As I have mentioned, many of them are necessary and important, so you should not stop automatic services from booting unless you are sure of the ramifications. You can get this information by looking at the Description column. Here's a quick look at common services you may want to live without:

Automatic Updates: This service enables Windows XP to check the Web automatically for updates. If you don't want to use
Automatic Updates, you can disable the service. You can always check for updates manually at the Windows Update Web site.

Computer Browser: If your computer is not on a network, you don't need this service. If you are on a network, leave it alone.

DHCP Client: If you are not on a network, you do not need this service. If you are on a small workgroup, you can still increase boot time by configuring manual IP addresses (which I explore later in this chapter).

DNS Client: If you are not on a network, you do not need this service. If you are, leave it alone.

Error Reporting and Event Log: You don't have to use these services but they can be very helpful, so I would leave them configured as automatic.

Fax: If you don't use your computer for fax services, you can disable this one. Help and Support: If you never use the Windows XP

Help and Support Center (found on the Start menu), you can disable this service.

IMAPI CD-Burning COM: This service enables you to burn CDs on your computer. If you never burn CDs, you can disable the service.

Indexing Service: Your computer keeps an index of files but if you rarely search for files, the service is just a resource hog. You can stop it and turn the service to manual.

Windows Firewall/Internet Connection Sharing: If you do not use these features, you can disable them.

Infrared Monitor: If you do not use infrared devices, you can disable this service.

Messenger: This service sends alert messages on a local area network (it is not the same as Windows Messenger). If you are not on a network, you can disable this service.

Print Spooler: If you do not do any printing from the computer, you can disable this service. If you print, make sure you leave it as automatic.

Remote Registry: This service allows remote users to modify the Registry on your computer. If you are not on a network, you can disable this service.

System Restore Service: This service allows you to use System Restore. If you have turned off System Restore anyway, you do not need to turn off the service. If you do, you turn off System Restore.

Themes: If you do not use themes, you can disable this service.

Windows Image Acquisition: If you do not use scanners or digital cameras, you can disable this service.

Wireless Zero Configuration: If do not use wireless networking devices, you can disable this service.

You may have a number of other automatic services, depending on software and other configurations on your computer. So it's a good idea to look through the services and learn more about them. If you double-click a service, a Properties dialog box appears

Notice that on the General tab, you see a Startup Type drop-down menu. If you want to change an automatic service to manual, select Manual here and click OK. As a general rule, don't disable a service unless you are sure you will never use it.

However, manual configuration allows the service to be started when you find it necessary, thus speeding up your boot time. However, before you change a service to manual, look at the Dependencies tab (see Figure 4-4). This tab shows you which other services depend upon the service you are considering changing.

Keep in mind that services are necessary for the vast functionality you get with Windows XP. Change only those services that you understand and do not use. How you use your Windows XP computer should be the best guide in terms of optional startup services.

Tip:

The Indexing service and the System Restore service take up a lot of disk space and system resources across the board.
You can live without the Indexing service but I suggest that you keep using System Restore. It works great when you are in a bind and this is one case where the loss of speed may not be worth the ramifications of not using System Restore. Speed Tips and Tricks for Windows XP Startup Aside from startup programs, services, and the Prefetch folder, there are a number of other startup procedures and issues you can modify to help Windows XP start faster. The following sections explore those tips and tricks. Manual IP Addressing on Small Office/Home Networks Windows XP is configured to help you take care of networking. It uses the TCP/IP protocol for networking in workgroups, or what you might call small office or home networks that do not use a dedicated server. The problem is that automatic IP addressing can be slow. When your computer boots, it has to query the network to see what IP addresses are already in use and then assign itself one. If you want to speed up the boot time a bit, consider manually assigning IP addresses to all computers on the network. This way, the network computers do not have to worry about locating an automatic IP address. Because one is manually configured, the operating system doesn't have to spend time solving this problem. This isn't a networking book, however, so I won't delve into the implications of using a manual IP address, but if you are using a computer that functions as a host computer to the Internet (using Internet Connection Sharing [ICS]), you can get into connectivity problems if you change the configuration of the IP address. However, you can still work around this problem by starting with the ICS host computer. Select Start/Connect To/Show All Connections. Right-click your network adapter card and click Properties. On the General tab, select TCP/IP in the list of services and click the Properties button. In the TCP/IP properties, you can see if you use an automatic or manual IP address. In the example in Figure 4-5, I have configured a manual IP address of 90.0.0.1 and a default subnet mask. The other computers on my office network each use a different IP address in the same class, such as 90.0.0.2, 90.0.0.3, 90.0.0.4, and so on. This way, each computer has a permanent IP address, which helps increase boot time. Note that if you change the IP addresses of your computers, they must all use the same subnet mask. A default subject mask of 255.255.255.0 will keep you in good shape. Make sure you understand the implications of changing IP addresses on your network. If you have no networking experience at all, you may be wiser to leave the automatic IP addressing as is and try to gain some speed using the additional suggestions in this chapter. Disabling Recent Documents History Windows XP includes a feature that keeps track of all recent documents you have opened or used. The idea is that you can select Start/Recent Documents History and quickly reopen any document you have recently used. I use many documents each day and never use the feature myself. In my opinion, I can keep up with what I want to use without Windows XP doing it for me. The bad thing about Recent Documents History is that Windows XP has to calculate what should be put there each time you boot Windows, which can slow things down. So, if you never use the Recent Documents History, it's a good idea to disable it.

Here's how:
1. Open the Registry Editor (select Start/Run, type regedit, and click OK).
2. Navigate to HKEY_CURRENT_USER\Software\Mcft\Windows\ CurrentVersion\Policies\Explorer.
3. Create a NoRecentDocsHistory D_WORD key. Double-click the value to open it once it is created.
4. Set the Data Value to 1 to enable the restriction.
5. Click OK and close the Registry Editor. You'll need to restart the computer for the change to take effect. Disabling the Boot Logo You can remove the boot logo that appears when you start Windows XP. This little tweak probably shaves only a few seconds off your boot time but seconds count if you are serious about trying to get Windows XP up and running as quickly as possible. The only negative is that if you remove the boot logo, you will also not see any boot messages, such as check disk. (But if you are not having problems with your computer, this isn't such a big deal.)
To remove the boot logo, follow these steps:
1. Select Start/Run, type msconfig, and click OK.
2. In the System Configuration Utility, click the BOOT.INI tab.
3. On the BOOT.INI tab, click the NOGUIBOOT check box option. Click OK. Removing Unwanted Fonts One trick that increases your boot time a bit is to lose any fonts in the Fonts folder in Control Panel that you never use. The more fonts you have, the more processing Windows XP has to do to prep all of those fonts for use. You must be a bit careful here to not remove fonts that you might want, but there is a good chance that you can live without many of them. For instance, you may have foreign language fonts and other symbol fonts (such as Wingdings) that you never use. To delete unneeded fonts, follow these steps:
1. Open the Fonts folder in Control Panel.
2. Select Edit/Select All and then Edit/Copy.
3. Create a new folder on your desktop, open it, and select Edit/Paste.
4. In this new folder, delete any of the fonts you do not want.
5. Return to the Fonts folder in Control Panel. Right-click the selected fonts and click Delete.
6. Go back to your new desktop folder and click Edit/Select All.
7. Return to your Fonts folder and click Edit/Paste. You now have only the desired fonts in the Fonts folder. Tip: You can directly delete fonts from the Fonts folder without creating the secondary folder. However, I recommend the preceding steps to help ensure that you do not make a mistake in the deletion process. Stopping Remote Assistance and Remote Desktop Sharing In Windows XP Professional, you have two remote networking features called Remote Assistance and Remote Desktop Sharing. These remote networking features are very helpful in a variety of situations but if you don't use them, it is good idea to disable them to save boot time. You can always enable them later if you want to use them. Note: If you are interested in using Remote Desktop or Remote Assistance, see my book Windows XP for Power Users: Power Pack published by John Wiley & Sons.
1. Open the Start menu, right-click My Computer, and choose Properties.
2. Click the Remote Tab.
3. Clear both check boxes to disable Remote Assistance and Remote Desktop. Speeding Up the Dual-Boot Timeout If you dual-boot your computer with Windows XP and another operating system, you see an operating system selection menu on startup. If you typically boot into Windows XP and not the other operating system, you can speed up the dual-boot timeout value so that you do not wait so long for the boot process to select your default operating system and continue with the boot process. The default timeout value is 30 seconds but you can change this setting to 10. This gives you enough time to select the alternate operating system if you want but also speeds up the boot process. You can skip this section if you do not use a dual-boot configuration.
Follow these steps:
1. Locate the boot.ini file on your computer. It is a hidden file by default; mine is located in C:\boot.ini.
2. Open the file with Notepad (which is what opens it by default).
3. Change the Timeout value to 10 (see Figure 4-11).
4. Select File/Save and close Notepad. Speeding Up Your PPPoE Connection If you use a Point-to-Point Protocol connection over Ethernet (PPPoE), you may notice a delay in using the PPPoE connection after startup. By default, there is a 120 second delay but you can stop this behavior by manually configuring an IP address for the network adapter card. If you do not use a PPPoE connection, you can skip this section.
1. Select Start/Connect to/Show All Connections.
2. Open the TCP/IP properties for your LAN network interface card.
3. Manually set the IP address on the TCP/IP properties to an appropriate IP address and subnet mask for your network. Reducing the Wait Time When you start to shut down Windows XP, it has to quit, or "kill," any live applications or processes that are currently running. So close all applications first. However, some applications and processes are always running in the background. You can reduce the amount of time that Windows XP waits for those applications and processes to close before Windows XP kills them. Edit three different Registry settings to change this:
1. Open the Registry Editor.
2. Navigate to HKEY_CURRENT_USER\Control Panel\Desktop. Select WaitToKillAppTimeout and set the value to 1000.
3. Select the HungAppTimeout value and set it to 1000 as well. 4
. Navigate to HKEY_USERS\.DEFAULT\Control Panel\Desktop. Set the WaitToKillAppTimeout and set the value to 1000. Select the HungAppTimeout \newline value and set it to 1000 as well.
5. Navigate to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Contro l. Select the WaitToKillServiceTimeout value and set it to 1000.
6. Close the Registry Editor. Automatically Killing Tasks on Shutdown You know the drill. You start to shut down the computer, you wait a few moments, and then you see a dialog box asking if you want to kill an application or service that is running. Instead of prompting you, you can make Windows XP take care of the kill task automatically. Here's how:
1. Open the Registry Editor.
2. Navigate to HKEY_CURRENT_USER\Control Panel\Desktop.
3. Highlight the value AutoEndTasks and change the value to 1.
4. Close the Registry Editor.