Sunday, April 11, 2010

.Net Nullable Types

A variable of a nullable type can be used to store the normal range of values allowed by the underlying data type plus the Null. Nullable types are instances of System.Nullable.

Since reference types already supports Null, nullable types represent value type variables which supports null.

For example Nullable<bool> (or spoken like nullable of bool) can be used to store true, false and null.

There are two ways to declare a nullable variable.

Method 1




int? i; // Declaring
i = null; // Initializing

int? i = 4; // Declariong and initializing




Method 2




Nullable<int> a; // Declaring
a = 4; // Initializing

Nullable<int> a = null; // Declariong and initializing




As you see above assigning values to a nullable is same as for a normal variable. But when retrieving the value you need to be little careful.

Method 1 – Using GetValueOrDefault

GetValueOrDefault property is available for nullable variables. If the variable is null it will get the default value for the type otherwise the actual value it contains.




textBox1.Text += "Value of i - " + i.GetValueOrDefault();




Method 2 – Using variable.Value

When you are going to retrieve the value inside the variable using .Value be careful to first check whether there is actually a value in the variable, otherwise .Net will generate an InvalidOperationException with a description of “Nullable object must have a value”.




// \r\n is used to insert a new line.
if (i == null)
    textBox1.Text += "\r\n" + "i is Null";
else
    textBox1.Text += "\r\n" + "i is - " + i.Value;




or




// Environment.NewLine is equal to placing a new line or \r\n.
if (a.HasValue)
    textBox1.Text += Environment.NewLine + "a has - " + a.Value;
else
    textBox1.Text += Environment.NewLine + "a has Null";




The full code would look like the following.





  1. // Declaring Method 1
  2. int? i; // Declaring
  3. i = null; // Initializing
  4. //int? i = 4; // Declariong and initializing
  5. // Get value using GetValueOrDefault().
  6. textBox1.Text += "Value of i - " + i.GetValueOrDefault();
  7. // \r\n is used to insert a new line.
  8. if (i == null)
  9.     textBox1.Text += "\r\n" + "i is Null";
  10. else
  11.     textBox1.Text += "\r\n" + "i is - " + i.Value;
  12. // Declaring Method 2
  13. //Nullable<int> a; // Declaring
  14. //a = 4; // Initializing
  15. Nullable<int> a = 4; // Declariong and initializing
  16. // Environment.NewLine is equal to placing a new line or \r\n.
  17. if (a.HasValue)
  18.     textBox1.Text += Environment.NewLine + "a has - " + a.Value;
  19. else
  20.     textBox1.Text += Environment.NewLine + "a has Null";




The output would be,

Value of i - 0
i is Null
a has – 4

You could use the ?? operator to assign the default value for a non nullable variable while the nullable contains null as the current value.




int? Null_X = null;
int NonNull_y = Null_X ?? -1;




Friday, April 09, 2010

Features of Search Engines

How many of you know that common and popular search engines like Google and Bing are providing many other functionalities than searching?

Yes it is true there are many functionalities within them that most of us don’t know.

Following are some features, you can try these out by typing the italic text in your favorite search engine.

  1. Finding the date and the time of a place. – “Time Sri Lanka”, “time Melbourne
  2. Checking spelling of words. – “Cheking”, ”mathmatics”
  3. Finding results of arithmetic. – “(25*34)+78”, “2**5”
  4. Finding the weather if a place. – “Weather Colombo”, “weather Changi”
  5. Finding the populations of countries or popular cities. – “Population UK”, “population Sri Lanka”
  6. Converting units. – “12.5km in Meters”, “3km in inches”
  7. Stock details. – “MSFT”, “AAPL”
  8. Find similar word (Synonyms). – “~Cooking”, “~hot drinks”
  9. Finding currency values. – “1 GBP in AUD”, “89.34 AUD in USD”
  10. Finding maps. – “New York Map”, “Sydney map”
  11. Finding definitions of words. – “Define Computer”, “define language”
  12. Other than above you can find about Books, Movies, Air Line Schedules etc. But they are widely for other countries like UK, US.

While searching you can use special characters like wild cards, concatenate, subtract to help while searching. Try them out to find the results by your own.

Sunday, April 04, 2010

How to Read and Write Text

Reading and writing to text files had been made easy by .Net.

Following code will create a text file and insert 2 lines to it and will then read it and display.





  1. // System.IO is required for file handling.
  2. using System.IO;








  1. // Creating a stream writer object.
  2. // @ is used before the string to avoid the string getting broken by the /.
  3. StreamWriter stWriter = new StreamWriter(@"C:\Backup\File.txt");
  4. // Writing into the file.
  5. stWriter.Write("It is now ");
  6. stWriter.WriteLine(DateTime.Now);
  7. stWriter.WriteLine("The End");
  8. // Closing the file.
  9. stWriter.Close();
  10. // Reading the file.
  11. // Checking the availability of the file.
  12. if (File.Exists(@"C:\Backup\File.txt"))
  13. {
  14.     // Without using the @, \\ also can be used to represent \ inside of a string.
  15.     using (StreamReader stReader = File.OpenText("C:\\Backup\\File.txt"))
  16.     {
  17.         // Temporary variable.
  18.         string str = "";
  19.         while ((str = stReader.ReadLine()) != null)
  20.         {
  21.             // Assigning to a label.
  22.             label1.Text += str + "\n";
  23.         }
  24.     }
  25. }
  26. else
  27.     MessageBox.Show("Error, File cannot be found.");




Friday, March 26, 2010

SharePoint Page Types

Do you know in SharePoint there are two types of pages?

In a SharePoint site each page you see is either a ghosted page or an unghosted page.

Ghosted (Uncustomized) Pages

These are the pages stored in the severs file system but not in the database. The other important thing is these files are common to all the site collections within the SharePoint server and are generally based on the "out of the box" site definition templates. Basically they are working as template files. Ghosted pages are faster since ASP.NET parser will be used to parse them and as you might know ASP.NET parser will compile the page into an assembly on the first time it is rendered, on subsequent executions the compilation is skipped since the assembly is already there.

When ghosted pages are modified by SharePoint designer then they will become unghosted pages, and then SharePoint will start using that file in the future not the file stored in the file system. A common example for this would be the “default.master” file on the “C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\Global“.

Unghosted (Customized) Pages

These are the pages which are stored on the database. Unghosted pages are specific to the SharePoint web site the page is in. If you change these files it will not affect any other site in the same SharePoint server. Unghosted pages will be parsed by the safemode parser which will not compile the pages. The only dynamic code allowed is server-side controls that are marked safe (Safe Controls, Trusted Controls).

Why Ghosting?

This allows SharePoint to,

  • Increase it’s performance by enabling caching the main site template into memory and then apply the changes that are stored in the database for the specific file.
  • Increases security by not allowing unghosted pages to run code so an attacker who injects code will not be able to crash your server.

Tuesday, March 23, 2010

Finding the IP Address of the Email Sender

Recently I was bit curios to find out whether we can find the IP address of the sender in an email. After doing some web searching I found interesting sites which describes what needs to be done.

If you like to find out the way to do this please visit and see.

http://www.johnru.com/active-whois/trace-email.html

http://aruljohn.com/info/howtofindipaddress/

Saturday, March 13, 2010

Protect HTML Files

Recently I came up with a requirement to protect a website which was created using HTML.

When searching over the internet a team member of mine found a nice software called HTML Guard.

This software is encoding the source of the site so the users will not be able to see the code behind the site. Using this tool you can even block a site to a particular domain. Even the site is downloaded it will not properly run.

The best thing is this has a free version so we can use the full set of features without paying (A small message will come on the top right corner saying the site is encoded by using the tool).

This software is by WulfSoft, thanks guys you have done a good job.

Try out yourself and see.

http://www.htmlguard.com/