using System; using System.Threading; using System.Collections; using System.Collections.Generic; public class MyEnumerable <T> : IEnumerable<T>, IEnumerator<T> { public MyEnumerable( List<T> items ) { this.items = items; } public IEnumerator<T> GetEnumerator() { return this; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public T Current { get { return items[index]; } } object IEnumerator.Current { get { return Current; } } public bool MoveNext() { index++; if( index < items.Count ) { return true; } else { return false; } } public void Reset() { index = -1; } public void Dispose() { } private int index = -1; private List<T> items; } public class GenericEnumeratorsTest { static void Main() { List<string> stringList = new List<string>(); stringList.Add("Tyrannosaurus"); stringList.Add("Amargasaurus"); stringList.Add("Mamenchisaurus"); stringList.Add("Deinonychus"); stringList.Add("Compsognathus"); MyEnumerable<string> stringEnumerator = new MyEnumerable<string>( stringList ); System.Console.WriteLine("using foreach"); foreach(string s in stringEnumerator) { System.Console.WriteLine(stringEnumerator.Current); } System.Console.WriteLine(""); System.Console.WriteLine("using MoveNext"); stringEnumerator.Reset(); while(stringEnumerator.MoveNext()) { System.Console.WriteLine(stringEnumerator.Current); } System.Console.ReadKey(); } }
Wednesday, January 31, 2007
Writing generic enumerators in C# (.NET 2.0)
The MSDN documentation is sort of lacking on how to write up a class that implements an Enumerator that can return a specific type of an object using Generics.
So I wrote up a test class and here it is for your programming convenience.
Labels:
.NET
Tuesday, January 30, 2007
Determining the build date of a Managed executable/dll
// Assumes that in AssemblyInfo.cs,
// the version is specified as 1.0.* or the like,
// with only 2 numbers specified;
// the next two are generated from the date.
// This routine decodes them.
private static DateTime DateCompiled()
{
System.Version v =
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
// v.Build is days since Jan. 1, 2000
// v.Revision*2 is seconds since local midnight
// (NEVER daylight saving time)
DateTime t = new DateTime(v.Build * TimeSpan.TicksPerDay +v.Revision * TimeSpan.TicksPerSecond * 2).AddYears(1999);
return t;
}
Labels:
.NET
Here are a list of commands that can help you debug network issues on Windows Machines
How to Troubleshoot Basic TCP/IP Problems (from JongHa Kim's Blog)
http://support.microsoft.com/default.aspx?kbid=306212
Network TCP/IP
1. Connect to an IP address
Ping
Ping –a
2. Unable to connect to a specific IP address
Check TCP/IP configuration
Ipconfig /all
3. Ping the loopback address
Ping 127.0.0.1
Fail -> TCP/TP reinstallation
4. Ping computer’s IP address
Ping 157.60.10.175
Fail -> network adapter driver reinstallation (Not good)
5. Clear the address resolution protocol(ARP) cache
Arp –a
Arp –d : remove any incorrect entries in the ARP cache, clear all
6. Verify the default gateway
7. Verify persistent route table entries
Route print
8. Use the tracert command (trace the hops between
Tracert
9. Host file
%SystemRoot%\System32\Drivers\Etc
10. LMHost file
%SystemRoot%\System32\Drivers\Etc
Monday, January 29, 2007
Excellent book on writing quality code
Here is a great book that I came across on Microsoft Australia's website. Its got some great information about writting quality code.
You can download the book from here (its free). Interestingly it uses a new format "DNL" and you need the reader which you can download from http://www.dnaml.com/. (The DNL format makes for an interesting electronic reading experience).
Topics include:
Test-driven development
Performance tuning managed applications
Code quality tools for native development
Application Threat Modeling
Code analysis with FXCop
Web application load test
Customising check-in policies
Labels:
.NET
Visual Studio 2005 Keyboard Shortcut Posters
Visual Studio 2005 Keyboard Shortcut Posters
from Microsoft WebBlogs by JasonMcC
Visual Studio 2005 keybaord shortcuts help make you more productive by giving quick access to common and not-so-common functions within the IDE. I've had wall posters designed for each of the popular langauges in Visual Studio 2005 for you to print out locally. Best when printed on paper sized A3 or larger.
Print ready poster PDFs are now available at the Microsoft download center. Happy coding.
Labels:
.NET
Friday, January 26, 2007
Computer Languages History
A graphical look at the history of computer languages. (this is a truly interesting graph)
Computer Languages History
Thursday, January 25, 2007
Unable to install KB923275 and KB923272 - Windows Update to Office
Recently, Windows update was having trouble updating my Office 2003 installation.
There was one OneNote update that was failing and 4 Office updates (Specifically KB923275 and KB923272). Though I am sure this problem might affect other office updates as well.
After a lot of searching and performing tasks that I saw on other websites, of which none worked, I was almost ready to uninstall and reinstall Office (which I did not want to do as it just takes too long!).
And then I happened on a website that had the steps that worked for me:
Check to see that the OSE (office source engine) service is running.
1. Goto Start->Control Panel->Administrative Tools->Services.
2. Run through the list and find Office Source Engine service.
3. In the column status, if it says "Started", then you are out of luck and this fix will not help you.
4. If there column is blank or has some other text, then double click on the service.
5. Click the button Start.
6. Now try and update your system. (My system was successfully updated at this point)
7. Windows update should be able to update your Office installation. If not look up other websites to see if there are other reasons for this problem. (this page may help : http://forums.techarena.in/showthread.php?t=605338)
8. If all else fails - reinstall Office.
The one weird thing about this step is that my other computer does not have OSE service running and I have never had a failed office update. Which is why I believe this might not solve everybody's problem.
Wednesday, January 17, 2007
Schneier on Security: Choosing Secure Passwords
Schneier on Security: Choosing Secure Passwords: "Choosing Secure Passwords"
An interesting essay that will give you insights into how to choose a better password by understanding how some of the password recovery programs work.
Tuesday, January 16, 2007
InfoQ: How to Design a Good API & Why it Matters
InfoQ: How to Design a Good API & Why it Matters
Here is a video on good API design by Joshua Bloch (Joshua Bloch is a Principal Engineer at Google)
The crux:
1. Easy to learn
2. Easy to use, even without documentation
3. Hard to misuse
4. Easy to read and maintain code that uses it
5. Sufficiently powerful to satisfy requirements
6. Easy to extend
7. Appropriate to audience
Tuesday, January 09, 2007
UNDERSTANDING NanoTechnology
UNDERSTANDING NanoTechnology: "This site is dedicated to clearly explaining the concepts behind nanotechnology applications in areas such as energy, medicine, and consumer goods. It attempts to make the concepts of nanotechnology understandable by anyone."
An interesting read.
Kristoffer's tidbits : Debugging memory usage in managed code using Windbg
Kristoffer's tidbits : Debugging memory usage in managed code using Windbg
Another page about debugging memory in managed code. Some very cool techniques are discussed here.
Labels:
.NET
Rico Mariani's Performance Tidbits : Memory leaks 101: Objects anchored by event generators
Rico Mariani's Performance Tidbits : Memory leaks 101: Objects anchored by event generators
Some good information about managed memory leaks occuring due to objects having a root at an event generator.
Labels:
.NET
Monday, January 08, 2007
Parse-O-Matic - Welcome
Parse-O-Matic
Here is a really useful tool that allows you to reformat a text file using scripts. There is a free version of the tool, that you can use to take the software for a spin. The easiest method is to open one of the sample files and tweak it to do something you need it to do.
Still looking for other tools which might be simpler that P-o-matic. Untill then this will safetly be tucked into my toolbox.
Labels:
Tools and Utilities
Windows Installer Error Messages
Windows Installer Error Messages on MSDN
and some useful information about deciphering the error codes and messages in MSI logs: http://blogs.msdn.com/heaths/archive/2006/01/18/514641.aspx
Windows Installer Error Code Reference
Recently, I was trying to debug an installer problem for one of our customers.
The MSI log file came back with a list of error codes, but I could not find out what they meant, until I happened on the following site: Its an invaluable reference : Windows Installer Error Code Reference
Also, if you dont know how to enable logging, here is an easy way through the registry:
Add the following keys and values
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
"Logging"="voicewarmup"
"Debug"=dword:00000007
Thursday, January 04, 2007
Textron commerative coins
In April of 2006, the company that I work for, Visual Learning Systems, got acquired by Overwatch Systems. Then in November of 2006, we got bought out by Textron Systems, a division of Textron, which is a Fortune 500 company.
This coin was given to us as a commeration of this event (which I think is a testament to the great work done by us at this company).
Labels:
Visual Learning Systems
Subscribe to:
Posts (Atom)