Muralidharan 的个人资料Murali@B'lore照片日志列表 工具 帮助

日志


11月26日

my personal album

 
3月19日

100 best software development blogs in the world

Few informations are worth mentioning:

  • As usual, this list is a weighed average of multiple rankings: Google page rank, Alexa rank, Technorati rank, Google hits, average number of comments, and Twitter rank.
  • Only blogs dealing with (some) generic software engineering topics are allowed. This requirement resulted in the removal of three blogs from this edition: Paul Graham (no software development topics), Rough Type (no software development topics) and PragDave (posts are only about Ruby).
  • I also removed a couple of blogs that didn't have any fresh content (= less than three months old, or anything later than November 2008).
  • There are 19 new entries on this list. Some of them did not participate in the last edition, because nobody had told me about them at the time, which accounts for some very high new entries.
  • The most remarkable change in this edition is Signal vs. Noise, moving from #67 to #5, which is largely due to their Google page rank having been upgraded from 4 to 7 since last time. Quite an achievement!
  • Some other great performers in this edition are: Regular Geek, Mike Cohn, James Bach, Software by Rob, and Agile Software Development. I congratulate them all!
  • Unlike last time, I did not include FeedRank in the calculations. The FeedRank statistics turned out to be more erratic than Alan Greenspan's economical predictions. So I discarded them.
  • However, unlike last time, I now included Twitter rank in the calculations. Micro-blogging is a logical extension of the activities of many bloggers. Therefore their performance in micro-blogging is now part of the overall blog ranks.
  • You can click the names in the Author/Twitter column to find and follow blog authors on Twitter.
  • If you want to be included on this list, then send me an email and make sure you earn high ratings on Google, Alexa, Technorati and Twitter. Please note that I only track blogs with a Google page rank of at least 3. (And there are just three blogs with page rank 3 on the top 100 list. All others have page rank 4 or higher.)
  • There is an OPML file available if you want to import the complete top 100 list (+25 extra) into your feed reader.
  • There is also a spreadsheet available with 200 blogs, incuding the individual rankings on Google, Technorati, Alexa, and Twitter.

Here is the full list. Enjoy...

TT LT Blog / Site Author / Twitter
1 1 Joel on Software Joel Spolsky
2 3 Coding Horror Jeff Atwood
3 6 Martin Fowler's Bliki Martin Fowler
4 11 The Daily WTF (various)
5 67 Signal vs. Noise (various)
6 5 Scott Hanselman's Computer Zen Scott Hanselman
7 10 Rands in Repose Michael Lopp
8 7 Bokardo: Social Design Joshua Porter
9 8 Stevey's Blog Rants Steve Yegge
10 19 Stack Overflow Jeff Atwood
11 12 Eric.Weblog() Eric Sink
12 9 Lambda the Ultimate (various)
13 13 Raible Designs Matt Raible
14 14 Dare Obasanjo aka Carnage4Life Dare Obasanjo
15 17 Jon Udell Jon Udell
16 15 UIE Brain Sparks Jared Spool
17 23 ThoughtBlogs (various)
18 27 CodeBetter.Com (various)
19 25 High Scalability (various)
20 28 Object Mentor Blog (various)
21 41 Regular Geek Rob Diana
22 21 Otaku, Cedric's Weblog Cedric
23 47 Mike Cohn's Blog: Succeeding with Agile Mike Cohn
24 37 NOOP.NL Jurgen Appelo
25 18 The Berkun Blog Scott Berkun
26 38 Good coders code, great reuse Peteris Krumins
27 61 James Bach’s Blog James Bach
28 20 Artima Weblogs (various)
29 33 Google Testing Blog (various)
30 22 J.D. Meier's Blog J.D. Meier
31 -- Alex Payne Alex Payne
32 26 10x Software Development Steve McConnell
33 29 secretGeek Leon Bambrick
34 -- Business of Software Blog Neil Davidson
35 -- Contrast | The Blog (various)
36 34 Enterprise Architecture: From Incite comes Insight... James McGovern
37 43 Project Shrink Bas de Baar
38 45 StevenHarman.net Steven Harman
39 24 Shanine.com / omar / Omar Shahine
40 66 Software by Rob Rob Walling
41 57 Agile Testing Grig Gheorghiu
42 36 Alistair Cockburn Alistair Cockburn
43 77 Agile Software Development (various)
44 56 Tyner Blain Scott Sehlhorst
45 44 Interoperability Happens Ted Neward
46 48 Pure Danger Tech Alex Miller
47 39 Managing Product Development Johanna Rothman
48 64 Elegant Code (various)
49 58 Coding the Architecture (various)
50 -- Ted Leung on the Air Ted Leung
51 -- Relevance Blog (various)
52 49 Reforming Project Management Hal Macomber
53 46 James Shore: The Art of Agile James Shore
54 59 Knowing.NET Larry O'Brien
55 -- Blankenthoughts Jeff Blankenburg
56 79 David Chelimsky David Chelimsky
57 82 Aligning Technology, Strategy, People & Projects Eric Brown
58 40 It's Just a Bunch of Stuff That Happens Eric Burke
59 30 Dr. Dobb's CodeTalk (various)
60 50 Better Projects Craig Brown
61 75 Lean Software Engineering Corey Ladas
62 51 {Codesqueeze} Max Pool
63 68 /\ndy Andy Hunt
64 69 All About Agile Kelly Waters
65 72 Herding Cats Glen Alleman
66 97 Exploration Through Example Brian Marick
67 42 Object Technology Jeff Sutherland
68 55 Implementing Scrum Mike Vizdos
69 52 Agile Management Blog David Anderson
70 96 Bit-Player Brian Hayes
71 -- The Mendicant Bug Jason Adams
72 -- Software Project Management Pawel Brodzinski
73 -- A Software Insiders Point of View R "Ray" Wang
74 71 Meme Agora Neal Ford
75 85 Word Aligned Thomas Guest
76 84 Chris Spagnuolo's EdgeHopper Chris Spagnuolo
77 65 Evolving Web Jim Benson
78 53 The Braidy Tester Micahel
79 -- Tester Tested! Pradeep Soundararajan
80 86 The Cutter Blog (various)
81 74 Jeffrey Palermo (.com) Jeffrey Palermo
82 93 Test Obsessed Elisabeth Hendrickson
83 -- averyBlog James Avery
84 -- GrokCode Jess
85 -- Wide Awake Developers Michael Nygard
86 -- Notes from a Tool User Mark Levison
87 60 Petzold Book Blog Charles Petzold
88 87 Agile Developer Venkat's Blog Venkat Subramaniam
89 95 Creative Chaos Matthew Heusser
90 -- Moserware Jeff Moser
91 -- Codemonkeyism Stephan Schmidt
92 88 Collaborative Software Testing Jonathan Kohl
93 90 Jeff Patton's Holistic Product Design & Development Jeff Patton
94 32 Curious Cat John Hunter
95 -- Yourdon Report Ed Yourdon
96 81 LeadingAnswers Mike Griffiths
97 99 Silk and Spinach Kevin Rutherford
98 -- Lazycoder Scott Koon
99 92 Clarke Ching - More Chilli Please Clarke Ching
100 -- Raven's Brain Raven Young

Legend
TT
= Position this time
LT
= Position last time
--
= New entry on the list
$$
= This author bribed me

You can find a full description of how this top 100 was calculated here: How to Make a Top Blog List.

10月8日

Chat with me!

 
6月4日

Profiling your .NET code

Profiling gathers information about an executing application, allowing you to determine those improvements that are required in your application.
Ten reasons why you should bother profiling your .NET code
1) Focus on portions of your .NET code that really require attention
2) Identify code blocks with performance issues
3) Compare alternative approaches
4) Get accurate code execution response times
5) Avoid guessing performance issues
6) Visualize performance and memory usage
7) Track the lifecycle of your .NET objects
8) Avoid unnecessary loading or initialization of your program
9) Optimize your looping constructs in .NET
10) Identify memory leaks in your application

How to profile your .NET code?

  • CLR Profiler
  • Using PerfMon
5月24日

Problem opening report solution: Project item '#itemn°#' does not represent a file.

Today I had some problems with a report solution created in Visual Studio 2005:
After I got the latest version out of SourceSafe, I could not open it anymore. The error message was "Project item '4294967294' does not represent a file."
Searching for this error on the internet I came to this solution:

- Open the .rptproj file in notepad (or another text editor) and delete the line that begins with "<State>$base64$"

       Sometime in notepad you may not view complete data, so try to open in CMD -> Edit window.
- Open the solution
- Delete the source control bindings
- Add it to source control again
- Done!

5月20日

Visual studio 2005 Asp.net Issue

Yesterday I got this error message while running Asp.net application in Visual studio 2005

---------------------------
ASP.NET Development Server
---------------------------
ASP.NET Development Server failed to start listening on port 1085.
Error message:
An attempt was made to access a socket in a way forbidden by its access permissions
---------------------------
OK  
---------------------------

By default the web application uses ASP.NET development server not the IIS. We
can change it to IIS by selecting Project Properties->Web Tab. There we can
create the virtual directory too.
The error must be specifying some port. I try to use some tools like TcpView from
Sysinternals (http://www.sysinternals.com/Utilities/TcpView.html) to check that
port is used by some other process. Normally development server will take the
free port while running the application.

image

5月3日

SQLSERVER

Following query will display stored procedure content through Query.

    SELECT ROUTINE_DEFINITION
    FROM INFORMATION_SCHEMA.ROUTINES
    WHERE ROUTINE_NAME='SPLocationGetByID' AND ROUTINE_TYPE='PROCEDURE';

Good to read basic of SQL Join at

http://en.wikipedia.org/wiki/Join_(SQL)#Inner_join

5月1日

Call Webservice with parameter from VBScript

Following vbscript snippet call web service with parameter.

 

Dim oXMLDoc, oXMLHTTP
Sub btnclick
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.4.0")
Set oXMLDoc = CreateObject("MSXML2.DOMDocument")
Msgbox("Calling WebService To Approve Leave")
oXMLHTTP.onreadystatechange = getRef("HandleStateChange")

Dim strEnvelope

strEnvelope = "userId=1"
call oXMLHTTP.open("POST","
http://localhost/MerchantServerWS/MCService.asmx/GetName",true)
call oXMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
'call oXMLHTTP.setRequestHeader("SOAPAction","
http://localhost/MerchantServerWS/MCService.asmx?wsdl")

call oXMLHTTP.send(strEnvelope)
End Sub
Sub HandleStateChange
if(oXMLHTTP.readyState = 4) then
dim szResponse: szResponse = oXMLHTTP.responseText
call oXMLDoc.loadXML(szResponse)
if(oXMLDoc.parseError.errorCode <> 0) then
call msgbox("ERROR")
call msgbox(oXMLHTTP.responseText)
call msgbox(oXMLDoc.parseError.reason)
else
call msgbox( oXMLDoc.getElementsByTagName("string")(0).childNodes(0).text)
end if
end if
End Sub

5月25日

Find string from stored procedure (Sql Server)

 
 
declare
@search varchar(50)
SET
@search = '%systemparameter%'
SELECT
ROUTINE_NAME
,
ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA
.ROUTINES
WHERE
ROUTINE_DEFINITION
LIKE @search
ORDER
BY ROUTINE_NAME
 
 
5月24日

Get value of Querystring using Javascript

var tabvalue = getQueryVariable("tab");


--------------------------------------------------------------------------

function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++)
{
var pair = vars[i].split("=");
if (pair[0] == variable)
{
return pair[1];
}
}
}
5月14日

Debug Java Script

I know all of us struggle when we are working in javascripts.
Many of us will use alert box to debug the javascripts.
But microsoft provides a debugging features in its VS products.
unfortunately none of us use this facility. use this facility and
enjoy working with JS wiht out any stess.

for that u need to do a single word
-------------------------------------------------

simply put the word 'debugger' inside ur JS thats all, now u can enjoy
the debugging facility.
u can enjoy how u put breakpoints in cs debugging, the same u can use
here too.

 eg)

<script language="javascript">
function SendAttach()
{
debugger
---
---
---

}

Note :
---------

Kindly ensure the disable script debugging checkbox remains unchecked.

To do
--------
IE--> Tools-->InternetOptions -->Advanced --> uncheck Disable Script
Debugging (Internet Explorer)
IE--> Tools-->InternetOptions -->Advanced --> uncheck Disable Script
Debugging (Otheres)

4月5日

Google Paper

Gmail Paper

Everyone loves Gmail. But not everyone loves email, or the digital era. What ever happened to stamps, filing cabinets, and the mailman? Well, you asked for it, and it’s here.

3月26日

Sudhakar's Interview (Audio)

 

Sudhakar Gorti is a co-founder and CEO of Proteans Software Solutions, an outsourcing company based in Bangalore that focuses on product development using Microsoft technologies like .NET. In this interview, Sudhakar talks about opportunities in outsourced software product development and how his company created a niche in this segment.

 
 
 
2月22日

MY NAME

What Muralidharan Means
M is for Mysterious

U is for Unusual

R is for Remarkable

A is for Amorous

L is for Logical

I is for Intelligent

D is for Darling

H is for Honorable

A is for Alluring

R is for Rebellious

A is for Amazing

N is for Neat
 
2月2日

Some Differences between ClickOnce and Windows Installer (MSI)

Some Differences between ClickOnce and Windows Installer (MSI)

  ClickOnce Windows Installer (MSI)
Prerequisites ClickOnce requires that version 2.0 of the .NET framework is already installed on the target machine. You can use an old-fashioned bootstrapper exe to ensure this.
If your application requires runtime packages such as MDAC, MSDE etc. on the target computer again you must use a bootstrapper exe to install them. This cannot be achieved with ClickOnce.
The MSI runtime is required on the target computer. You can use a bootstrapper exe to install it. The current Windows versions already include the MSI runtime.
If your application requires runtime packages such as MDAC, MSDE etc. on the target computer, it's often a good idea to use a bootstrapper exe to install them, although in some cases it's possible to install them using a custom action inside your MSI setup.
User input Installing an application via ClickOnce requires two clicks: a click on a hyperlink to launch the install, and clicking Yes on the confirmation dialog. The rest of the UI is a progress bar. There is no way to collect input from the user. Any personalization has to be done inside the application, e.g. on first run. Typically displays a wizard sequence where users can enter a user name and serial number, select features and installation directory, etc. If you run a MSI setup in BasicUI mode you get a user experience that's somewhat similar to ClickOnce.
Per-user and per-machine installations ClickOnce installations are always for the current user only. Per-machine installations are impossible. If multiple users on a machine install the same software you end up with multiple copies of your application files. You can specify per-user installations and per-machine installations that are available to all users on the system.
Installation directory You application files will always be copied to the My Applications folder under the user's My Documents folder. You can specify the installation directory for your application files at design time or at run time.
Shortcuts A shortcut to your application will be placed in the Start menu under Programs > Your Company Name. This is not customizable. You cannot create shortcuts on the desktop. You can create as many shortcuts as you need in any place you wish, including the Start menu and the desktop.
Target computer modifications Besides copying the application files and creating a Start menu shortcut ClickOnce installations cannot modify the target computer. Can create and modify files, registry entries etc. on the target computer, only limited by access permissions set by the administrator.
Application isolation ClickOnce applications are isolated from each other and the operating system. A ClickOnce setup cannot damage the target computer. Replacing system files and modifying registry entries can cause all sorts of problems on the target computer ("DLL Hell").
Update installation ClickOnce can automatically detect when a newer version of your application is available and download and install the update.
Only the modified files are downloaded, but always complete files, not parts of files.
Detecting available updates requires additional tools, this is not built into MSI.
Patches can include either modified files in whole, or only the changed parts of a file (binary difference) which may result in a smaller download.
Manageability ClickOnce applications (and updates) are published simply by posting them on the web or file server. There is no method to push them to clients during off work hours and there are no inventory or other management functions built in. MSI packages work nicely with management and deployment tools such as Active Directory and SMS.

 

12月29日

Design Pattern

Past few days, concentrating more on design patterens. here are some of the important notes from what i learn.

Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.

The Gang of Four (GoF) patterns are generally considered the foundation for all other patterns. They are categorized in three groups: Creational, Structural, and Behavioral. Here you will find information on these important patterns.

Creational Patterns
Abstract Factory - Creates an instance of several families of classes
Builder - Separates object construction from its representation
Factory Method - Creates an instance of several derived classes
Prototype - A fully initialized instance to be copied or cloned
Singleton - A class of which only a single instance can exist

Structural Patterns
Adapter - Match interfaces of different classes
Bridge - Separates an object's interface from its implementation
Composite - A tree structure of simple and composite objects
Decorator - Add responsibilities to objects dynamically
Facade - A single class that represents an entire subsystem
Flyweight - A fine-grained instance used for efficient sharing
Proxy - An object representing another object

Behavioral Patterns
Chain of Resp.- A way of passing a request between a chain of objects
Command - Encapsulate a command request as an object
Interpreter - A way to include language elements in a program
Iterator - Sequentially access the elements of a collection
Mediator - Defines simplified communication between classes
Memento - Capture and restore an object's internal state
Observer - A way of notifying change to a number of classes
State - Alter an object's behavior when its state changes
Strategy - Encapsulates an algorithm inside a class
Template Method - Defer the exact steps of an algorithm to a subclass
Visitor - Defines a new operation to a class without change

Remove Nulls from Datatable

The individual cells in a DataTable can have a null value in the form of System.DbNull.Value. If the DataTable is created by querying a database through ADO.NET, you can write the SQL statement in a way eliminates nulls. It could look like this “SELECT isnull(name, 'n/a') AS name FROM products”.

However, there can be scenarios where you don’t have the chance to manipulate the DataTable before you use it. Such a scenario have I recently been involved in and the problem was that the data retrieved from a database could contain nulls in any of the integer type columns. If I then bind the DataTable to a GridView in ASP.NET, I had to do a lot of workarounds to calculate footers and other values based on those columns.

Instead of doing the workarounds in a lot of different places in the code, I decided it was a better idea to clean the DataTable for nulls before it is used. That led to the CleanDataTable method below, that replaces null values with zeros for a few integer type columns.

/// <summary>

/// In the case of null values in a data table, this method

/// will turn all nulls into zeros instead.

/// </summary>

public static DataTable CleanDataTable(DataTable dt)

{

for (int a = 0; a < dt.Rows.Count; a++)

{

for (int i = 0; i < dt.Columns.Count; i++)

{

if (dt.Rows[a][i] == DBNull.Value)

{

Type type = dt.Columns[i].DataType;

if (type == typeof(int) || type == typeof(float) || type == typeof(double))

{

dt.Columns[i].ReadOnly = false;

dt.Rows[a][i] = 0.0F;

}

}

}

}

return dt;

}

The point is that you only have to clean it once to avoid any workaround for handling null values.

12月7日

Customize your place holder in Open / Save Dialog box

Q. How can I hide the Places bar in Widows XP's and Windows 2000's Open
and Save common dialog boxes?

A. The Open and Save common dialog boxes display a bar along the left- hand
side with quick links to the following default locations:
   * History
   * My Documents
   * Desktop
   * Favorites
   * My Network Places

You can hide this bar by performing the following steps:
   1. Start a registry editor (e.g., regedit.exe).
   2. Navigate to the
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\co
mdlg32 subkey. (If this subkey doesn't exist, select New, Key from the
Edit menu to create it.)
   3. From the Edit menu, select New, DWORD Value.
   4. Enter a name of

   NoPlacesBar

and press Enter.
   5. Double-click the new value, set it to 1, and click OK.
   6. Close the registry editor.

The registry change will take effect immediately. To enable the Places
bar again, either delete the NoPlacesBar registry value or set it to 0.
This change will not affect applications within the Microsoft Office
suite but will affect applications, such as Notepad and Microsoft
Paint, that use the Open and Save common dialog boxes.

--------------------

Q. How can I edit the default Places bar quick links in Windows XP's
and Windows 2000's Open and Save common dialog boxes?

A. You can modify the five default quick links in the Open and Save
common dialog boxes by performing the following steps:
   1. Start a registry editor (e.g., regedit.exe).
   2. Navigate to the
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\co
mdlg32 subkey. (If this subkey doesn't exist, select New, Key from the
Edit menu to create it.)
   3. From the Edit menu, select New, Key.
   4. Enter a name of

   Placesbar

and press Enter.
   5. Navigate to the new registry subkey. You can create five entries
(i.e., Place0, Place1, Place2, Place3, and Place4). Make each entry
either a string value (REG_SZ) entry (for a named folder) or a DWORD
value (REG_DWORD) entry (for a special folder, such as My Documents or
My Network Places).
   6. To create a new entry, go to the Edit menu, select New, DWORD
Value or New, String Value (as appropriate), enter a name of Placen
(e.g., Place0, Place4), and press Enter.
   7. Double-click the entry and set its REG_SZ "Value data" to a path
and folder name or its REG_DWORD "Value data" to a numeric ID (the
table below shows a partial list of these numeric IDs--the shlobj.h
file, which is part of the platform software development kit (SDK),
defines the full list of special numeric IDs).
   8. Close the registry editor.

For example, the registry file below sets shortcuts to My Documents,
the CD burning folder, and three named folders.

   Windows Registry Editor Version 5.00

   [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
   Policies\comdlg32\Placesbar]
   "Place0"=dword:00000005
   "Place1"=dword:0000003b
   "Place2"="d:\\temp"
   "Place3"="d:\\documents"
   "Place4"="g:\\windows"

This change will not affect applications within the Microsoft Office
suite but will affect applications, such as Notepad and Microsoft
Paint, that use the Open and Save common dialog boxes. Each new entry
you add will replace one of the default quick links.

ID    Pathway

0     Desktop
1     Internet Explorer
2     Start Menu\Programs
3     My Computer\Control Panel
4     My Computer\Printers
5     My Documents
6     <user name>\Favorites
7     Start Menu\Programs\Startup
8     <user name>\Recent
9     <user name>\SendTo
a     <desktop>\Recycle Bin
b     <user name>\Start Menu
c     Logical "My Documents" desktop icon
d     "My Music" folder
e     "My Videos" folder
10    <user name>\Desktop
11    My Computer
12    Network Neighborhood (My Network Places)
13    <user name>\Nethood
14    Windows\Fonts
16    All Users\Start Menu
17    All Users\Start Menu\Programs
18    All Users\Startup
19    All Users\Desktop
1a    <user name>\Application Data
1b    <user name>\PrintHood
1c    <user name>\Local Settings\Application Data
      (nonroaming) 0x001d // nonlocalized startup
1e    Nonlocalized common startup
1f    Common favorites
20    Internet cache
21    Cookies
22    History
23    All Users\Application Data
24    GetWindowsDirectory()
25    GetSystemDirectory()
26    C:\Program Files
27    C:\Program Files\My Pictures
28    USERPROFILE
29    x86 system directory on RISC
2a    x86 C:\Program Files on RISC
2b    C:\Program Files\Common
2c    x86 Program Files\Common on RISC
2d    All Users\Templates
2e    All Users\Documents
2f    All Users\Start Menu\Programs\Administrative Tools
30    <user name>\Start Menu\Programs\Administrative Tools
31    Network and Dial-up Connections
35    All Users\My Music
36    All Users\My Pictures
37    All Users\My Video
38    Resource Directory
39    Localized Resource Directory
3a    All Users OEM-specific applications
3b    USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning