Monday, June 3, 2013

Using Mercurial as a preferred Source Control

I needed a Source Control to track changes in my projects, I have been hearing good things about Mercurial and its integration into Visual Studio 2010 with the tools like TortoiseHg and VisualHg. Not to mention that Mercurial is an Open Source software and available for free download. Mercurial is a Distributed Version Source Control (DVCS) where each client has entire copy of the repository.

Got a jump start on Installing and integrating Mercurial with a great video here, which shows all the installing as well as configuration process.

Mercurial can be downloaded here.

Its fun to work with Mercurial using the Command line too, though the GUI does take care of your needs. Here's a neat list of commands to execute your changes:

http://searchco.de/lists/list-of-mercurial-commands

One of the important commands that I would like to remember is in below example, which fetches me the changeset along with the filename. I can also specify the range of the changeset. In the example shown, the command will fetch the changes between the changesets 1 and 10.

hg log --stat -r 1:10


I also would like to include the .hgignore file which is quite handy for committing the changes to the repository.

# use glob syntax
syntax: glob

*.obj
*.pdb
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.scc
*.DotSettings
[Bb]in
[Dd]ebug*/**
obj/
[Rr]elease*/**
_ReSharper*/**
NDependOut/**
packages/**
[Tt]humbs.db
[Tt]est[Rr]esult*
[Bb]uild[Ll]og.*
*.[Pp]ublish.xml
*.resharper
*.ncrunch*
*.ndproj


Enjoy!

Wednesday, May 8, 2013

Passing down a string with an apostrophe to javascript function

Its like back to  Javascript 101, but sometimes its forgotton and takes up some time to identify whats wrong with the script. Thats what happened to me. I wasn't sure how would I parse my string. Finally got an answer.

 Edit Content

The escape character takes care of the apostrophe, and the HtmlDecode takes care of any browser based compatibility issues

Tuesday, April 16, 2013

Connecting to a Remote SQL Server and Import Data from your local SQL Server (2008 Express)

I have a remote database sitting on VPS and I need to transfer the data to the remote server. All I do is first register/connect the remote Sql server in my Management Studio. For this, enter the provided server name using the registered domain name (or IP Address)  along with the provided port number. Append the Sql server name (I appended \SQLExpress).

Doing this will enable you to connect the remote server in your local management studio (assuming you enter the correct authentication details for username/password !).

Before you go ahead with the next step of doing data migration, make sure first you run the database scripts so that your indexes/foreign keys are intact. Once this is done, you can use the import/export wizard to export data from your local machine to the remote server. A tiny trick is to use the import wizard from the destination database rather than using the export wizard from the source database. This will ensure your configuration for destination database is aptly configured.

Sorry this is very bland write-up without any screenshots or proper explanation, but hopefully I'll provide them when I have more time.



Thursday, April 4, 2013

Profiler for SQL Express

I have SQL Express currently installed on my machine. Since I am working on the "free" version, the package doesn't include SQL Profiler. I highly depend on SQL Profiler to trace down queries. What to do now? Well, Google is my friend! I found this utility, available on Codeplex. Download and use it!

Tuesday, April 2, 2013

Links to Bookmark and Follow up

Some Notes on Semantic Versioning. Follow up on this, Usman! 

http://semver.org/

The World of Entity Framework :

http://msdn.microsoft.com/en-US/data/ee712907

Entity Framework Version History :

http://msdn.microsoft.com/en-us/data/jj574253









Wednesday, March 6, 2013

AJAX Caching issue in Internet Explorer (IE) 9 (way back upto IE 6)

I had been pulling my hair apart for resolving the browser compatibility issue. My MVC App has been working well in other browsers, but while doing testing, I found a notorious issue in IE. I had been hung on this issue for several hours. Tried clearing history/cache.. No luck. Tried using the cache trough developer tools (F12)... No luck.. Tried resetting the Browser to its default installation, thinking I might have accidently clicked on a setting for the browser to malfunction... No luck! restarted the machine a couple of times.... But I guess I was looking at the wrong place. Doing a google search for the correct keywords might have helped in the first place! Further research led me to find that IE caches the AJAX requests while others don't. Thats actually BAD news for me, because that gives me inconsistency in data.


Fellow internet geeks had posted a few solutions to overcome this issue:

http://dougwilsonsa.wordpress.com/2011/04/29/disabling-ie9-ajax-response-caching-asp-net-mvc-3-jquery/

http://www.dashbay.com/2011/05/internet-explorer-caches-ajax/

http://ivida.co.uk/2011/09/29/ie-9-ajax-request-caching-mvc/




This worked for me! Yay!

$(document).ready(function() {
$.ajaxSetup({ cache: false });
});

Friday, March 1, 2013

Access the Log for the scheduled processes

The log for the scheduled processes (to trace the failures) is available at:

\\WINDIR\Tasks\SchedLgU.txt

Other resources that I found on the web regarding this can be looked here:

 http://blogs.technet.com/b/rspitz/archive/2010/11/07/scheduled-tasks-appear-hung-in-the-running-state-on-windows-server-2003-based-systems.aspx

Check the following link to increase the size of the file:
http://support.microsoft.com/kb/169443

Thursday, January 17, 2013

Using Heidi as MySql Client to connect to remote server

I had to make some db modifications for one of my clients to the mysql database on the remote server. I hardly have any experience working on the php/mysql arena. Call it my lack of knowledge or understanding, but I had a hard time connecting to the remote server. I tried mysql workbench, but that would crash right when I went ahead to access the database. I was frustrated since I had to make one small change and it was sucking up my time. Then someone over the internet suggested HeidiSql.

Apart from being able to "connect successfully", HeidiSql is really fast and provides and great clean UI to manage your data. Point to be noted for future refs!!

Monday, November 26, 2012

Resolving the Validation of viewstate MAC failed error

I have been receiving the following error on the page when I clicked on the link (in the Gridview) before the Page had fully loaded. My Page has a Gridview which uses DataKeyNames. Additionally it had a lot of Javascript ads which slowed down loading of the Page.

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.





On doing some research, I found out that the due to the use of GridView and the DataKeyNames, the Framework implements a ViewState Encryption Technique for keeping the data secure. Hence, when a link is clicked on a partial page load, the encryption tag might not have been rendered on the page, causing the page to crash.  

I read this excellent post which aptly details the issue and its resolution.

Basically, it appears to be some sort of bug in the existing Framework and the blog posts a workaround.

I used Solution 3 since it still was keeping the Security aspects in place which executing the page elegantly. Basically what it did was to remove the Validation script right before the end of the form tag and place it after the beginning of the Tag. 
protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        System.IO.StringWriter stringWriter =
            new System.IO.StringWriter();
        HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
        base.Render(htmlWriter);
        string html = stringWriter.ToString();
        string[] aspnet_formelems = new string[5];
        aspnet_formelems[0] = "__EVENTTARGET";
        aspnet_formelems[1] = "__EVENTARGUMENT";
        aspnet_formelems[2] = "__VIEWSTATE";
        aspnet_formelems[3] = "__EVENTVALIDATION";
        aspnet_formelems[4] = "__VIEWSTATEENCRYPTED";
        foreach (string elem in aspnet_formelems)
        {
            //Response.Write("input type=""hidden"" name=""" & abc.ToString & """")
            int StartPoint = html.IndexOf("= 0)
            {
                //does __VIEWSTATE exist?
                int EndPoint = html.IndexOf("/>", StartPoint) + 2;
                string ViewStateInput = html.Substring(StartPoint,
                  EndPoint - StartPoint);
                html = html.Remove(StartPoint, EndPoint - StartPoint);
                int FormStart = html.IndexOf("", FormStart) + 1;
                if (EndForm >= 0)
                    html = html.Insert(EndForm, ViewStateInput);
            }
        }

        writer.Write(html);
    }

Friday, October 12, 2012

Hiding Tabs(MenuItem) in asp:Menu

I was working on the asp:Menu where I have to hide a certain Tab if there is no content for it. This is what I did. I knew the index of the Tab that Had to be removed:

//tabs_Menu is the id for asp:Menu
MenuItemCollection menuitems=tabs_Menu.Items; 
menuitems.Remove(tabs_Menu.Items[1]);