Znet India – PITA and Worst Hosting Provider

7 04 2009

I know I dont update this blog, but since its regarding my hosting provider where I have hosted my blog and since I fear it can be deleted anytime, I am updating here too so that people get to know and be aware of hosting providers like Znet India!

So I have this other website – www.usingwindows7.net – which I manage and I was really hoping to get my friends and others join me via forums too – www.usingwindows7.net/forum – But now the site is pulled down because of the many inconveniences caused by the hosting provider – Znet India

It all started with this error message

server-error

Here is the conversation that has been happening part by part – I think they would explain more than me writing it – Note the time they have taken to respond for each reply

image1

image2

The attachment is what you see at the start of this blog post

image3

Below is the using.jpg they have attached

image4

Now that is strange because my site is up and running for the past 1 month and suddenly WordPress giving an error establishing database connection? and also wp-config.php is what I would have configured initially when setting up my WordPress website. The technical team instantly suggest me to check the settings of wp-config.php, but the real drama begins only now

image5

It happens that the technical team had completely moved my files and brought in a fresh WordPress installation files and thus you see the error establishing database connection. I did check my directories and they indeed had moved my files as my forum was not accessible – My forums were installed in a directory just under the WordPress directory and so the URL – http://www.usingwindows7.net/forum

image6

I never told these guys to move my files – what sort of a plan is that to identify the issue? – Moving files from the live website! If you calculate the time taken till now by these support people, its more than 15hrs – the issue started off with this

server-error

And ended up moving my files from my website!

image7

I also raised a separate ticket for refund due to this and they merged that refund request along with this support ticket, again without intimating me and I was left searching the ticket system to find the ticket as I didn’t knew they had merged!

So, they don’t delete files without client’s permission but they move client’s files around? Great! Do these guys need to be educated that moving is essentially deleting as the site wont be accessible in both the cases!

Taking Backup is their necessity, but not moving files!

image8

And that was my reply. And what did they reply? – You will find it very interesting

image9

Again, they continue blaming me that my database settings is wrong – I had configured WordPress with MySql database, but the technical team are too smart to suggest me a SQL Server address – sql5.znetindia.com – aren’t these support guys great? 😉

image10

Now they get smart enough to find that I was connecting to MySql and tell me about my database details! What a joke! As if I don’t know any of these things! And they did manage to do something to make www.usingwindows7.net site up but they failed again with forums – www.usingwindows7.net/forum

image11

I cant continue when the support is like this! Just calculate the site downtime and the time taken to respond to issues! What sort of a support is this! And Znet India website says,

image12

I would be more than happy to approach anyone from Microsoft regarding this and how these people can be awarded by Microsoft!

And this is not the first issue I am dealing with them in regard to www.usingwindows7.net which is a WordPress website installed in Windows Server 2008 + IIS 7 – the site was down many times and it was indeed PHP settings which was not configured properly and permission issues!

I did ask for refund and currently I am literally ‘fighting’ with them by making ISD calls (from NZ) regarding this issue – Do you want to see their reply? Why not 🙂

image13

How bad is that! Blaming the client for everything as if I wanted to make my site down!

I am just getting irritated of not getting no replies and these people just want me to live with it and move on which in first place is unacceptable after this act! Here is the reply I initially got for my refund

image14

Great! Will every client face all the issues within his 30 day money back guarantee? What a lame excuse to steal money from clients!

So, what’s happening now? – Silence – I called them yesterday to speak to Mr.Vinod Saxena and as expected I got a reply saying ‘he is not available right now’

Hosting providers like Znet India think they can do whatever they want with client’s files and play with time and my experience is just an example of this act. I wouldn’t recommend Znet India to anyone and also I am expecting them to apologize to me and refund my rest of the money. But still, nobody cares about this at Znet India!

I am also planning to move to another hosting provider here in New Zealand. They are pretty cool here, unlike Znet India! But what about the money that I paid for my hosting/domains at Znet India? Why aren’t they ready to refund?

Please share this with your friends so that they also get to know about Znet India’s technical expertise!





Blog moved to www.chakkaradeep.com

14 08 2008

www.chakkaradeep.com is now live and from today I would be blogging over there 🙂

It was a tough decision to choose between WordPress and Graffiti CMS. At the end, I chose Graffiti CMS 8)

This blog will not deleted and will be here with all the posts for your reference.

Please do visit www.chakkaradeep.com – my new home 😀





SQL Server 2008 is now RTM

7 08 2008

The long wait is over! SQL Server 2008 is now RTM and is also available in MSDN for MSDN Subscribers! Cant wait to download and play with it 8)

sql-server-2008-rtm





Generating WCF Proxy using SvcUtil.exe

7 08 2008

Visual Studio 2008 has made our WCF life a lot easier with the ability to self-host the services and also allow debugging in our service.

What if we were pushed to a situation wherein we need to use the tool svcutil.exe to create our proxy for the client…hmm… 🙂

To do so, we need to have our service running. Once the service is up and running, we could generate the proxy by the following command (replace the tags correspondingly) :

   1: svcutil /t:code http://<service_url> 
   2:       /out:<file_name>.cs /config:<file_name>.config

Here is my example :

   1: C:\Users\Chaks\Documents\Visual Studio 2008\Projects\MyService\MyServiceHost>
   2: svcutil /t:code http://localhost:8731/Design_Time_Addresses/MyService/WcfService/ 
   3: /out:MyServiceProxy.cs /config:MyServiceProxy.config
   4: Microsoft (R) Service Model Metadata Tool
   5: [Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.648]
   6: Copyright (c) Microsoft Corporation.  All rights reserved.
   7:  
   8: Attempting to download metadata from 'http://localhost:8731/Design_Time_Addresse
   9: s/MyService/WcfService/' using WS-Metadata Exchange or DISCO.
  10: Generating files...
  11: C:\Users\Chaks\Documents\Visual Studio 2008\Projects\MyService\MyServiceHost\MyS
  12: erviceProxy.cs
  13: C:\Users\Chaks\Documents\Visual Studio 2008\Projects\MyService\MyServiceHost\MyS
  14: erviceProxy.config

Now we can add this .cs file to the Client project and copy the .config file contents to the Client’s app.config file and execute the client 8)

We can also instruct svcutil to generate the proxy in the preferred language we want :

   1: svcutil /t:code /language=VB 
   2:      http://localhost:8731/Design_Time_Addresses/MyService/WcfService/ 
   3:          /out:MyServiceProxy.vb /config:MyServiceProxy.config

But svcutil already identifies the language with the extension of our output file name 8)





Bloggers Dinner @ TechEd

6 08 2008

I got my invite yesterday for the Bloggers Dinner @ TechEd. Bloggers @ Tech Ed is designed to help the New Zealand blogging community with both practical advice and an exclusive opportunity to network with other key bloggers in New Zealand.

The dinner will be held on September 1st at Sky City Convention Centre, Auckland.

The best part of the event is that its being hosted and keynoted by Scott Hanselman 🙂

See you there 8)





ASP.NET Ajax CalendarExtender and Validation

1 08 2008

ASP.NET Ajax toolkit has a CalendarExtender control which is very cool as you can associate the CalendarExtender to a a TextBox and also to a Button/ImageButton so that you can popup the calendar.

Below is the code to get started with CalendarExtender:

<asp:TextBox 
    ID="TextBox1" 
    runat="server" 
    width="300pt" />
<asp:ImageButton 
    ID="btnCalenderPopup"
    Width="16" Height="16" 
    runat="server" 
    ImageUrl="~/images/calender.bmp" 
    CausesValidation="False" />
<ajaxToolkit:CalendarExtender 
    ID="CalendarExtender1"
    runat="server" 
    TargetControlID="TextBox1" 
    PopupButtonID="btnCalenderPopup" 
    Format="dd/MM/yyyy" />

And here is the output:

calender-extender-1

and,

calender-extender-2

Wait! What’s that grayed text in the textbox that says – Enter the Date of Birth (dd/mm/yyyy)

Certainly that’s not the part of CalendarExtender 🙂 , but part of ASP.NET Ajax Toolkit 8) . We can use the TextBoxWatermarkExtender which can display watermarked (grayed) texts on controls. Below is the code for our CalendarExtender :

<ajaxToolkit:TextBoxWatermarkExtender  
    ID="WatermarkExtender1"
    runat="server" 
   TargetControlID="TextBox1" 
   WatermarkCssClass="watermarked" 
   WatermarkText="Enter the Date of Birth (dd/mm/yyyy)" />

And below is the CSS style that’s used with this watermark extender :

.watermarked
{
    color: #C0C0C0;
    font-style: italic;
}

All looks good now and the user is happy the way Calendar pops up, choosing the date and also the fact that he can type in the date in the textbox in the desired format. Now comes the problem – Date Validation! – How are we going to validate the entered date? – I had to validate that the date entered is not more than today’s date.

There are two ways to do it :

1) Using Javascript (with our CalendarExtender)

2) Using RangeValidators for our textbox

Using Javascript:

The CalendarExtender has a property called OnClientDateSelectionChanged which can be set to a piece of javascript which can do the job for us. Below is the code:

<ajaxToolkit:CalendarExtender
    ID="CalendarExtender1"
     runat="server" 
    TargetControlID="TextBox1"
    PopupButtonID="btnCalenderPopup" 
    OnClientDateSelectionChanged="checkMyDate"
    Format="dd/MM/yyyy" />

and below is the javascript:

<script type="text/javascript">
function checkDate(sender,args)
{
    var dt = new Date();        
    if(sender._selectedDate > dt)
    {
        sender
            ._textbox
            .set_Value(dt.format(sender._format));
    }
}
</script>

Using RangeValidator:

Since we use a TextBox control to display our date once we choose from the calendar or to manually input the date, RangeValidators can be used to check whether the date is within a given range (minimum & maximum). Below is the code for RangeValidator :

<asp:RangeValidator 
    ID="RangeValidator1"
    runat="server" 
    ControlToValidate="TextBox1" 
    ErrorMessage="*Please enter proper date" 
    Type="Date" Display="Dynamic" />

And in your page load event we can set our maximum and minimum date values :

RangeValidator1.MinimumValue 
      = new DateTime(1600, 01, 01).ToString("dd/MM/yyyy");
RangeValidator1.MaximumValue 
     = DateTime.Now.ToString("dd/MM/yyyy");

With these two methods you can easily validate the date. And yes, using both would sometimes lead you to race conditions where choosing a date from the calendar might be an invalid date and the RangeValidators would immediately come to the focus.





Windows Server 2008 is my Desktop Workstation

27 07 2008

After hearing lots of good stuffs about this new SERVER product from Microsoft called Windows Server 2008, I took the decision to move from Windows Vista Ultimate to Windows Server 2008 Enterprise Edition 🙂

The good thing is, Windows Server 2008 can be configured as a fully featured desktop workstation. Your one stop guide for completing this ‘awesome’ task is here

Below is my laptop configuration:

1) Apple Macbook 2.4 GHz

2) 4 GB RAM

I have Windows Server 2008 Enterprise x86 Edition installed

Below is the list of software installed:

1) Apple Bootcamp

2) Microsoft Office 2007

3) Microsoft Visio 2007

4) Mozilla Firefox

5) Skype

6) Apple Quicktime

7) Apple iTunes

8 ) Windows Live

  • Live Writer
  • Live Messenger
  • Live Photo Gallery

9) Foxit PDF Reader

10) Flashget Download Manager

11) Virtual PC

12) Kaspersky Internet Security

13) tWhirl

14) Windows Mobile Device Center 6.1

This server is Fast, Sleek, and Customizable (in Features and Roles). That’s a huge benefit over Vista where many services get started no matter you use them.

I have also moved my development stuffs to a virtual environment now and virtual machines run quite fast than in Vista here. Yes, I am quite happy with Virtual PC 2007 and I don’t think I would install x64 version just for Hyper-V. The application support for x64 sucks!

Everything works good in my setup including sleep,shutdown and hibernate 🙂

So far, my experience of having Windows Server 2008 as my main desktop workstation is good and I think I will continue to stay on this for a long, long time until Windows 7 comes out 8)





Random Post : LINQ to XML

14 07 2008

Thought of refreshing my LINQ to XML skills and here is the outcome – another blog post today! 8)

Here is our sample XML file (never mind where it came from or why it is complex)

<?xml version="1.0" encoding="utf-8" ?>
<Output_Message>
    <Dataset>
        <Row>
            <Persons_Current_Name>
                <Name>
                    <Surname>John</Surname>
                    <GivenName>Samuels</GivenName>
                </Name>
            </Persons_Current_Name>
            <Persons_Name_At_Birth>
                <Name>
                    <Surname></Surname>
                    <GivenName>John</GivenName>
                </Name>
            </Persons_Name_At_Birth>
            <DateOfBirth>1865-07-31</DateOfBirth>
        </Row>
    </Dataset>
    <StatusInformation>
        <Status>OK</Status>
        <Alive>YES</Alive>
    </StatusInformation>
</Output_Message>

I am going to query each element (as listed below) and display their values

  • Persons_Current_Name
  • Persons_Name_At_Birth, and
  • DateOfBirth

Our first step would be to load this XML file. We can make use of XDocument to load the whole XML file.

XDocument mainXMLDoc
         = XDocument.Load("Input.xml");

To start with, let us traverse all the nodes and display their values

//Traversing the whole XML
Console.WriteLine("XML Traverse");
Console.WriteLine();
foreach (XElement xelement in
                   mainXMLDoc.Descendants())
{
    Console.WriteLine("{0} : {0}",
              xelement.Name, xelement.Value);
}

Looks simple, isn’t it 🙂

Next, let us get the value of Persons_Current_Name. I already have a class called Name, which is shown below:

public class Name
{
    public String Surname { get; set; }
    public String GivenName { get; set; }
}

How do we directly query Persons_Current_Name element? Below is the very straight forward (ugly) code 😀

//Persons Current Name
// The Ugly Way
XElement current_name =
    mainXMLDoc.Root
        .Element("Dataset")
        .Element("Row")
        .Element("Persons_Current_Name")
        .Element("Name");
Name persons_current_name = new Name
    {
             Surname =
                  current_name.Element("Surname").Value,
             GivenName =
                   current_name.Element("GivenName").Value
    };

Well, I really don’t like to code this way. Do we have any another option? Yes, we do! 8)

//Persons Current Name
// The Neat Way
Name persons_current_name =
    (from c in mainXMLDoc.Descendants()
     where c.Name == "Persons_Current_Name"
     select new Name
           {
                 Surname =
                      c.Element("Name").Element("Surname").Value,
                 GivenName =
                      c.Element("Name").Element("GivenName").Value
            }).FirstOrDefault();

The above code certainly looks better than our previous code 🙂

Similarly for DateOfBirth,

//Date of Birth
String[] strDob =
    (from c in mainXMLDoc.Descendants()
     where c.Name == "DateOfBirth"
     select c.Value).FirstOrDefault().Split('-');
DateTime dob = new DateTime(Convert.ToInt32(strDob[0]),
    Convert.ToInt32(strDob[1]),
    Convert.ToInt32(strDob[2]));

All looks good, but wait! What to do if I have my XML in string format ? How do I load it? Dont panic, you can use the same XDocument to load the XML in the string format 🙂

XDocument mainXMLDoc =
         XDocument.Parse(strXML);




Interested to work for Intergen?

14 07 2008

To all of my friends who want to work or looking to work @ Intergen, below is a list of additional perks along with the exciting job that Intergen Offers 8)

  • $400 + GST towards the purchasing of a new mobile phone and a discounted phone plan of which Intergen will pay up to $110 per month towards
  • Free monthly massages
  • Drinks and nibbles every Friday afternoon
  • Free Life Insurance cover of 3 times annual salary
  • Free Income protection Insurance for 75% of salary for up to 5 years
  • Free Travel insurance (for you and your family)
  • Additional Maternity Package to Government Assistance (after one year of employment)
  • Banking benefits from ASB Bank
  • Employee Assistance Programme
  • Option to join a discounted Health Insurance Scheme
  • Technology purchases at dealer rates – computers, TVs, stereos, electronics
  • Option to join the Superannuation Scheme with admin fees paid by Intergen
  • Free soft drinks including Coke, V, Just Juice

So, if you are looking for an exciting job, you can look here at our Careers Section





Team System Unit Test and Output Directories

14 07 2008

I always use NUnit to write my unit tests but now at Intergen I also use Microsoft Visual Studio Team System Unit Tests. Today I was stuck by a very basic problem and here it is.

I have a XML file in my project which is added to the output directory when compiled.

When I was running my unit tests against this, Visual Studio threw me this error saying that it couldn’t find the file!

(click to enlarge)

I was really surprised as my XML file is said to copy to output directory and the test fails saying that there is no such file. Checked my Test Solution’s output directory and found that there is indeed the Templates folder and the XML file.

So, whats the problem? Why is my test failing?

Well, the VSTE has a separate directory where it stores all its test results. The directory can be found in your root directory of your solution under the name TestResults. The TestResults also have various folders for each test run you do. If you refer back to the error image that is attached above, you could get the exact directory name. So, the VSTE did not copy the Templates directory to this ‘dynamic’ (for each test run there will be a directory created : correct me if am wrong here) directory. How do we do this then?

The answer is with the Local Test Run Config’s Deployment settings. You can find the local test run config in your solution browser.

Double click the file to open the properties dialog and go to the Deployment section.

Specifying a file or directory here would be included along with the test results 🙂

My test doesnt fail now 8)

Another way to do this (if its a single file : if you know how to add for a directory, please do leave your comment 🙂 ) is to specify along with your test method,

[TestMethod, DeploymentItem(@”Templates\BirthInputTemplate.xml”)]

public void Test_BuildInputXML()
{
}