Tweaking Windows XP to speed up Boot and Shutdown

In this post I will talk about some tweaks to speed up Windows XP Booting and Shutdown process, since sometimes it can become so long that you begin to think about reinstallation. Please, note that it is about Booting and Shutdown only. There are plenty of videos on youtube to speed up Windows XP. For instance, this one. With the following tweaks I remarkably speeded up my own Windows XP booting. May be they can also be used for other versions of Windows. So let’s begin.

  1. Remove programs from Autorun. To do this you can choose two ways. One is to delete some records in Windows registry. And the second, which I recommend, is to just open Start->Run->msconfig->Autorun and press “Switch off all”. Or switch off just some programs except, for example, antivirus.
  2. Remove loading Windows Logo. To do this open the same msconfig and on Boot.ini Tab check the /NOGUIBOOT checkbox. This will remove Windows Logo on start and so speed up Windows booting a bit.
  3. Decrease WaitToKillServiceTimeout. Open registry by Start->Run->regedit. Then open HKEY_LOCAL_Machine -> SYSTEM -> CurrentControlSet -> Control. Right-click on WaitToKillServiceTimeout, press change and change the value to 5000. This is a time that systems waits a service to stop after it asks it to stop while shutting down system. You can read about it here
  4. Decrease Boot.ini timeout by opening msconfig one more time, choosing Boot.ini tab and typing in Timeout textbox value 3 instead of 30 secs. This is time that computer waits user to choose the option of loading. Actually, this tweak is not very useful and almost useless if your computer always loads normally and doesn’t ask for safe mode, etc.
  5. Switch off unneeded Services in msconfig/services.
  6. Decrease startup delay by editing the following registry entry: HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> ContentIndex -> Startup Delay to 40000 in Decimal values. The delay was put into windows years ago, the idea was to give users a lot of time to choose boot options (e.g. press for safe mode) before windows takes over. Here some people say it didn’t help them, but still I tried it myself and recommend you to change this.

Some tweaks do not work. Mind this, for instance, changing prefetcher value to 5 is useless

References:

  1. http://www.youtube.com/watch?v=G6ESlqGhDv0&feature=related
  2. http://www.youtube.com/watch?v=KqxpnemxQeo
  3. http://oreilly.com/windows/archive/how-to-remove-startup-programs.html
  4. http://technet.microsoft.com/en-us/library/cc976045.aspx
  5. http://forums.guru3d.com/showthread.php?t=232228

Solution of Internet Connection Problem After Uninstalling Dr. Web

Today I tried to uninstall Dr. Web antivirus and suddenly recognized that after this my internet connection got lost. I have Windows XP. I tried to figure out what the problem was in for about 4 hours. I read forums, for example, this topic, but it didn’t help. I tried this:

First, export the registry branch
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ WinSock2
Then
Start-Run (Run)
netsh winsock reset
Ok.

But it also didn’t help. Also I tried to install Dr. Web antivirus again to make my internet start working at least, but I failed. I tried to use special utilities for uninstallation, that some people recommend, but it also didn’t help me.

Then I began to think by my own head and finally I solved the problem. No, I didn’t reinstall Windows. First of all, I recognized, that I had problems in Control Panel/System/devices/network devices. Also I saw that I got lost my Local Network Connection. What I did to solve those problems:

  1. Uninstalled Dr.Web
  2. Deleted all network devices in Control Panel/System/devices/network devices. Unforturnately, I have russian Windows, I hope you will understand what it is.
  3. Made automatic configuration update to get my network devices get installed. And here is the trick: when the network card is installed, the Local Network Connection is automatically set up for all network cards by default. So I got my Local Network Connection installed.
  4. I configured my Internet connection in TCP/IP settings of Local Network Connection (but this depends on your provider)

I hope this will help you.

String manipulation in iPhone applications

These examples of string manipulation in iPhone apps were taken from the Internet and I don’ pretend on the authority rights for them.

  1. Appending string to another string:

    NSString *myString = @"This";
    NSString *test = [myString stringByAppendingString:@" is just a test"];

  2. Method with wide possibilities to format string and concatenate several strings:

    - (NSString*) concatenateString:(NSString*)stringA withString:(NSString*)stringB {
    NSString *finalString = [NSString stringWithFormat:@"%@%@", stringA, stringB]; return finalString; }



    The advantage of this method is that it is simple to put text between the two strings (e.g. Put a “-” replace %@%@ by %@ – %@ and that will put a dash between stringA and stringB

  3. String Length:

    - (int) stringLength:(NSString*)string { return [string length]; //Not sure for east-asian languages, but works fine usually }

  4. Remove text from string:

    - (NSString*)remove:(NSString*)textToRemove fromString:(NSString*)input { return [input stringByReplacingOccurrencesOfString:textToRemove withString:@""]; }

  5. Uppercase / Lowercase / Titlecase:

    - (NSString*)uppercase:(NSString*)stringToUppercase { return [stringToUppercase upercaseString]; }

    - (NSString*)lowercase:(NSString*)stringToLowercase { return [stringToUppercase lowercaseString]; }


  6. Find/Replace:

    - (NSString*)findInString:(NSString*)string replaceWithString:(NSString*)stringToReplaceWith { return [input stringByReplacingOccurrencesOfString:string withString:stringToReplaceWith]; }

  7. String comparison Case Sensitive:

    if ([category isEqualToString:@"Some String"])
    {
    doSomething = YES;
    }



    Case Insensitive:

    if (!([category compare:@"Some String" options:NSCaseInsensitiveSearch]))
    {
    doSomething = YES;
    }



References:

  1. http://stackoverflow.com/questions/1778227/string-manipulation-in-objective-c
  2. http://www.techotopia.com/index.php/Working_with_String_Objects_in_Objective-C – The best reference on this topic

How to speed up web page loading

There are some tips and tricks, that I discovered while creating our web page:

  1. It is better not to use cookies, if possible. And better use less Javascript. I used cookies in the following code to save a number of the current image. Then I took this number and tried to load a fresh image when user enters to the cite after a while.
    ————————————————————————————–

    var currentN=0;
    currentN = get_cookie("currentN");
    //alert("Read currentN = " + currentN.toString());
     

    function changecenterimg(img_name)
    {
    var N = getRandomArbitary(1, 4);
    N = Number(currentN) + Number(1);

    while(N == currentN)
    {
    N = getRandomArbitary(1, 4);
    }

    if (N != currentN)
    {
    currentN = N;
    var img_src = 'images/c'+ N.toString() + '.jpg';
    document[img_name].src=img_src;
    }
    set_cookie("currentN", currentN);
    //alert("Set currentN = " + currentN.toString());
    }

    function init()
    {
    //alert("init started");
    changecenterimg('centerimg');
    }

    function set_cookie ( cookie_name, cookie_value )
    {
    document.cookie = "currentN=" + currentN.toString();
    }

    function get_cookie ( cookie_name )
    {
    var cookie_string = document.cookie ;
    if (cookie_string.length != 0) {
    var cookie_value = cookie_string.match (
    '(^|;)[\s]*' +
    cookie_name +
    '=([^;]*)' );
    return decodeURIComponent ( cookie_value[2] ) ;
    }

    ————————————————————————————–

    And I understood after some time, that this code was seriously lowering web page loading. After this I tried to change center image loading process to the following:

    ————————————————————————————–

    function changecenterimg(img_name)
    {
    N = Number(currentN) + Number(1);
    if (N > 4)
    {
    N = 1;
    }
    currentN = N;
    var img_src = 'images/c'+ N.toString() + '.jpg';
    document[img_name].src=img_src;
    }

    ————————————————————————————–

    Less Javascript we have – faster the page loads. Also I removed infinite cycle in generating new random image number. Although this cycle didn’t work more than two times. It’s noteworthy that in Javascript to make a sum of two numbers we should write:

    ————————————————————————————–

    N = Number(currentN) + Number(1);

    ————————————————————————————–

    Because if we write just

    ————————————————————————————–

    N = currentN + 1;

    ————————————————————————————–

    we will get concatenation of strings, so that for example N will become 11 after 1+1.


  2. Images can be optimized to be smaller in size and unfortunately in quality. The following link was very useful for this purpose: http://tools.dynamicdrive.com/imageoptimizer/index.php I managed to make my images more than two times smaller from 24 kbyte to 10 kbyte

  3. Try to avoid reloading whole page and try to reload or change only some elements. For example, I was reloading page to refresh image after user clicks on it:

    ————————————————————————————–
    <div id="center-column">  

    <a href="index.html">

    <img src="#" alt="Image" width="350" height="250" />

    </a>

    </div>

    ————————————————————————————–

    I changed this to the following to reload only one image:

    ————————————————————————————–
    <div id="center-column">

    <a href="javascript:changecenterimg('centerimg');">

    <img name="centerimg" src="#" alt="Image" width="350" height="250">

    </a>

    </div>
    ————————————————————————————–

Examples of using Excel from C#

To begin using Excel from C# we should right-click on References in Solution Explorer or Project/Add Reference on File Menu and add a Reference to Excel (Microsoft Excel Object Library 12.0)

The following methods are not fully mine, they are the modification of code, taken from Internet.

1. Example of opening a definite Worksheet for future use.

Let’s assume that you have AAA.xls file previously created on C:\.

// Some additional namespaces
using System.IO;
using Excel = Microsoft.Office.Interop.Excel;

// Common variables for different methods
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;

private void OpenExcelWorksheet()
{

object misValue = System.Reflection.Missing.Value;

// Specify a "currently active folder"
string activeDir = @"c:\";

//Create a newPath - the Path to Excel file
string newPath = System.IO.Path.Combine(activeDir, "AAA");

// Create the subfolder
// System.IO.Directory.CreateDirectory(newPath);

// Create a new file name.
string newFileName = "AAA.xls";

// Combine the new file name with the path
newPath = System.IO.Path.Combine(newPath, newFileName);

xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(newPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

}

2. Inserting data to Excel Worksheet

The following method inserts data in 2 column array “citations” to Excel worksheet to the lines from fromNum to toNum and columns B and C.


private void InsertToExcel(int fromNum, int toNum)
{
string fromRange, toRange;
fromRange = "B" + fromNum.ToString();
toRange = "C" + toNum.ToString();

try
{

xlApp.Visible = true;

//Fill A1:B20 with an array of values (First and Last Names).
xlWorkSheet.get_Range(fromRange, toRange).Value2 = citations;

//Make sure Excel is visible and give the user control
//of Microsoft Excel's lifetime.
xlApp.Visible = true;
xlApp.UserControl = true;
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);

MessageBox.Show(errorMessage, "Error");
}
}

References:

  1. http://csharp.net-informations.com/excel/csharp-open-excel.htm
  2. http://msdn.microsoft.com/en-us/library/as2f1fez.aspx

Creation of files in a given folder programmatically using Visual Basic Script (VBScript)

If a user must create, for instance, 20 files with names 1.tex, 2.tex, 3.tex, …, 20.tex, he will probably do it manually. Even the use of Total Commander with its hot key Shift+F4 for creation of files will not save you from the boring and stupid work. But a programmer is not a user and you can write the following Visual Basic Script (VBScript) with file name, for example, “CreateFilesScript.vbs”.

———————————————————————————

'(C) Author: Denis Kutlubaev, Alwawee Company, Moscow, 2011
'This script creates files with names 25.tex to 36.tex in a given folder
'folderPath - path to folder where files must be created
'fileName - generated file name
'filePathAndName - generated full path and file name
'start and stopIndex - numbers to start and stop file naming and creation

Dim folderPath, fileName, filePathAndName
Dim fileNumber, i
Set FSO = CreateObject("Scripting.FileSystemObject")

folderPath = "c:\Documents and Settings\wzbozon\Рабочий стол\LaTeX\Lessons\"

For i = 25 To 36
fileNumber = i
fileName = CStr(fileNumber) & ".tex"
filePathAndName = folderPath & fileName
FSO.CreateTextFile(filePathAndName)
Next

———————————————————————————

It is noteworthy that in Visual Basic Script there are some restrictions. For example, the loop

For i = 25 To 36

cannot be unhardcoded.

Also, you cannot define step for loop, it is always 1.

In this line

fileName = CStr(fileNumber) & ".tex"

there is a concatenation of a string, produced by CStr operator from a number and a file extension.

If you write a VBScript, you will wish to debug it. To debug it, write in a command line:
wscript //X CreateFilesScript.vbs

After this you can choose Visual Studio as a default debugger for VBScript and you will catch the line, where the script fails. Unfortunately, without much information about the bug.

Some useful links:

  1. http://msdn.microsoft.com/en-us/library/te2585xw(v=vs.80).aspx – Concatenation of strings in VBScript
  2. http://www.tizag.com/vbscriptTutorial/vbscriptforloop.php – Loops in VBScript
  3. http://www.script-coding.com/ – Good source for script writing (in Russian)