Saturday, March 28, 2009

Getting rid of GoogleUpdater

Google Updater is installed when you install any Google product. It then sits in the background and checks for updates. I don’t want it to on my server. I wanted a browser that wasn’t IE 6.0 and I didn’t want the bloat ware of IE 8.0. So I installed Google Chrome as a light weight browser, that would not constantly require Microsoft Updates.

So how do you get rid of the Google Updater?

1) Go to Scheduled Tasks.

  • Either by Control Panel –> Scheduled Tasks
  • Explorer –> Windows –> Tasks

2) You will see the Google Updater sat there. It will start a process when the processor is Idle for 10 mins. Just delete this task and Google wont update anymore.

Thursday, March 19, 2009

Rebuilding all my Personal Computers

I had some time off work, so I decided to rebuild all those old machines I had in the spare room. I had the following: -

I initially thought that I could take the disks out of the P6DBS and undo the Caddy and just copy the data onto my laptop. I forgot the old IDE vs SCSI differences (http://www.mindconnection.com/library/computertips/ide-scsi.htm). But I was reminded about the beauty of SCSI and the way you can just “span” disks together to be seen as one by the operating system.

I stole the memory from the 6BTA3 to boot the P6DBS. I noticed that although it had 5 HDD, it only had power cables for 4 devices. So the first step was to copy all the data onto my Western Digital My Book (http://support.wdc.com/product/spec.asp?groupid=110&lang=en&print=y) I always thought 1 Tb of data was overkill, but I am slowly filling it!

After I had copied 16Gb of data of 2 of the drives, I noticed that my P6DBS was a dual processor motherboard, I decided to take the Pentium III out of the 6BTA3 and plug it in. It worked! It just said that I had 2x Pentium II. Oh well, wasn’t even expecting it to work to be honest! Then the first mistake – flashing the BIOS!!!

I went to SuperMicro (http://www.supermicro.com/support/bios/archive.cfm) site to get a new BIOS and used (http://www.bootdisk.com/) to create a Boot disk. Well that completely fried my machine and it constantly beeped after turning it on. Which according the web was the Power Unit failing (http://www.wimsbios.com/faq/solveamibiosbeepcodes.jsp). So I ripped the Power Supply Unit (PSU) out of the 6BTA3 (that ATX case was just a motherboard now!) and used that. This made the constant beeps turn into 7 beeps (apparently the graphics card was now not seated), and after taking out the memory it had a different number of beeps! So I thought, I need to recover the BIOS.

I followed this (http://www.wimsbios.com/faq/howtorecoveracorruptbios.jsp) guide and ended up setting the motherboard jumper and even took the CMOS battery out and left it over night (was 3am by now!). By this time frustration made me read the manual and release that I should have renamed the backed up BIOS (super.rom). I wish I had followed the instructions to the letter!!

So now I had no way off renaming the rom file as I needed to boot the P6DBS and hold down CTRL and HOME with the floppy disk in and it should reflash the drive reading the super.rom file.

So onto destroying the other machine so that I could use the floppy drive!

More to come . . . .

http://neosmart.net/wiki/display/EBCD/Recovering+the+Vista+Bootloader+from+the+DVD

http://neosmart.net/blog/2008/windows-vista-recovery-disc-download/

http://isorecorder.alexfeinman.com/v2.htm

Wednesday, March 18, 2009

ConfigurationSection that reports missing sections in config

It has long annoyed me taken other frameworks that need config sections defined and spending the time copying the sections over, it would be so much easier if the Framework told you what bit of configuration it was trying to load. So I always use this abstract class for all of my config sections.

public abstract class SimianConfigurationSection : ConfigurationSection
{
/// <summary>
///
Gets the section.
/// </summary>
/// <param name="definedName">
Name of the defined.</param>
/// <returns></returns>
public static ConfigurationSection GetSection(string definedName)
{
ConfigurationSection section = ConfigurationManager.GetSection(definedName) as ConfigurationSection;

if (section == null)
throw new ConfigurationErrorsException("The <" + definedName +
"> section is not defined in your .config file!");

return section;
}
}


Next derive from this class rather than the .Net Framework class. e.g.



public class EmailTemplatesSection : SimianConfigurationSection



Once this has been completed your application will report a simple configuration exception if it cannot find your section in the config file. This takes 5 minutes to implement, but helps so much when you are configuring frameworks.



This then allows a really simple pattern when you want your configuration section.



return DBCategoryProviderSection.GetSection("nopDataProviders/CategoryProvider") as DBCategoryProviderSection;

You will no longer get an “Object is not a reference . . . “ exception.

Monday, March 16, 2009

Json Extension methods

Extension methods are so cool in your web layer so that you can easily convert your things between Json and your object. All you have to do now is decorate your classes with the DataContract/DataMember attributes. How simple is that?

public static class JsonHelper
{
/// <summary>
///
Converts any object to a JSON string
/// </summary>
/// <param name="value">
The value.</param>
/// <returns></returns>
public static string ToJson(this object value)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(value.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, value);
return Encoding.Default.GetString(ms.ToArray());
}
}

/// <summary>
///
Deserializes the specified json.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value">
The value.</param>
/// <returns></returns>
[SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter")]
public static T FromJson<T>(this string value)
{
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(value)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
return (T)serializer.ReadObject(ms);
}
}
}

Wednesday, February 25, 2009

Preparation Guide for 70-564 Exam. Designing and Developing ASP.NET Applications Using the Microsoft .NET Framework 3.5

Designing and Implementing Controls For 70-564 Exam (13 percent)

Choose appropriate controls based on business requirements.
May include but is not limited to: user controls, server controls, built-in controls, custom controls, third-party controls, Web parts
Design controls for reusability.
May include but is not limited to: user controls, server controls, inheritance for changing behavior
Manage states for controls.
May include but is not limited to: control state, view state, accessing form elements
Leverage data-bound controls.
May include but is not limited to: use gridviews, use sorting and paging callbacks when available, when to use custom sorting and paging, server-side pagination
Choose appropriate validation controls based on business requirements.
May include but is not limited to: server-side page validation (Page.IsValid), custom validator, validation groups, validation summary
Identify the appropriate usage of ASP.NET AJAX.
May include but is not limited to: implementing partial page updates with update panel, using ASP.NET AJAX controls, script services
Manage JavaScript dependencies with server controls.

Designing the Presentation and Layout of an Application For 70-564 Test (16 percent)


Design complex layout with Master Pages.
May include but is not limited to: strongly typed master pages, nested master pages
Plan for various user agents.
May include but is not limited to: markups for different browsers for mobile devices, screen readers, accessibility
Design a brandable user interface by using themes.
May include but is not limited to: shared themes across multiple applications, run time master page selection
Design site navigation.
May include but is not limited to: when to extend site map provider, treeview menu vs. site map path, programmatically manipulating site map nodes, overriding menu rendering by using control adapters, filtering site map nodes based on user roles
Plan Web sites to support globalization.
May include but is not limited to: custom resource provider vs. resource files, localize applications

Accessing Data and Services For 70-564 Test (18 percent)


Plan vendor-independent database interactions.
May include but is not limited to: IDBconnection, IDBcommand, IDBadapter, IdataReader, Datareader vs. dataset
Identify the appropriate usage of data source controls.
May include but is not limited to: SQLDataSource, ObjectDataSource, XMLDataSource
Leverage LINQ in data access design.
May include but is not limited to: LINQtoSQL, lambda expressions, LINQtoObjects, LINQtoXML
Identify opportunities to access and expose Web services.
May include but is not limited to: WCF, ASMX, REST

Establishing ASP.NET Solution Structure For 70-564 Test (13 percent)


Determine when to use the Web Site model vs. a Web Application Project.
May include but is not limited to: project file, references, namespace, user profile object, precompilation
Establish an error-handling strategy.
May include but is not limited to: Global.asax events, Web.config elements, TRY/CATCH blocks, error logging
Manipulate configuration files to change ASP.NET behavior.
May include but is not limited to: machine key, tracing, encrypting Web configuration data, custom configuration sections
Identify a deployment strategy.
May include but is not limited to: mangement application pools, Web deployment projects, pre-compilation, custom action classes

Leveraging and Extending ASP.NET Architecture For 70-564 Exam (17 percent)


Design a state management strategy.
May include but is not limited to: Cache, ViewState, Application object, Session object, cookies, cookieless session
Identify the events of the page life cycle.
May include but is not limited to: appending controls, PostBack model, accessing state, data binding
Write HttpModules and HttpHandlers.
May include but is not limited to: URL rewriting, SSO application, dynamically retrieve data
Debug ASP.NET Web applications.
May include but is not limited to: debug JavaScript, tracing, debug tools in IDE, examining HTTP headers
Plan for long-running processes by using asynchronous pages.
May include but is not limited to: AddonPreRenderCompleteAsync, RegisterAsyncTask

Applying security principles For 70-564 Exam (23 percent)


Identify appropriate security providers.
May include but is not limited to: membership, role, profile, extending custom providers
Decide which user-related information to store in a profile.
May include but is not limited to: create user profile properties, extend membership objects, custom types
Establish security settings in Web.config.
May include but is not limited to: identity/impersonation, authentication, authorization (location nodes in Web.config)
Identify vulnerable elements in applications.
May include but is not limited to: SQL injection, cross-site scripting, protecting against bots
Ensure that sensitive information in applications is protected.
May include but is not limited to: hash and salt passwords, encrypting information

Tuesday, February 17, 2009

Preparation Guide for Exam 70-562

Skills measured by Exam 70-562

Configuring and Deploying Web Applications (10 percent)

Configure providers.
  • May include but is not limited to: personalization, membership, data sources, site map, resource, security
  • Configure authentication, authorization, and impersonation.
  • May include but is not limited to: Forms Authentication, Windows Authentication
    • Configure projects, solutions, and reference assemblies.
    • May include but is not limited to: local assemblies, shared assemblies (GAC), Web application projects, solutions
    Configure session state by using Microsoft SQL Server, State Server, or InProc.
  • May include but is not limited to: setting the timeout; cookieless sessions
    • Publish Web applications. May include but is not limited to:
    • FTP
    • File System
    • or HTTP from Visual Studio

    Configure application pools.

    Compile an application by using Visual Studio or command-line tools. May include but is not limited to:
  •  aspnet_compiler.exe
  • Just-In-Time (JIT) compiling
  •  aspnet_merge.exe
  • Consuming and Creating Server Controls (20 percent)

    Implement data-bound controls. May include but is not limited to: DataGrid, DataList, Repeater, ListView, GridView, FormView, DetailsView, TreeView, DataPager

    Load user controls dynamically.

    Create and consume custom controls. May include but is not limited to: registering controls on a page, creating templated controls
    Implement client-side validation and server-side validation. May include but is not limited to: RequiredFieldValidator, CompareValidator, RegularExpressionValidator, CustomValidator, RangeValidator
    Consume standard controls. May include but is not limited to: Button, TextBox, DropDownList, RadioButton, CheckBox, HyperLink, Wizard, MultiView

    Working with Data and Services (17 percent)

    Read and write XML data. May include but is not limited to: XmlDocument, XPathNavigator, XPathNodeIterator, XPathDocument, XmlReader, XmlWriter, XmlDataDocument, XmlNamespaceManager

    Manipulate data by using DataSet and DataReader objects.

    Call a Windows Communication Foundation (WCF) service or a Web service from an ASP.NET Web page. May include but is not limited to: App_WebReferences; <system.serviceModel> configuration
    Implement a DataSource control. May include but is not limited to: LinqDataSource, ObjectDataSource, XmlDataSource, SqlDataSource

    Bind controls to data by using data binding syntax.

    Troubleshooting and Debugging Web Applications (16 percent)
    Configure debugging and custom errors. May include but is not limited to: <customErrors mode="Off|On|RemoteOnly" />, <compilation debug="true"/>

    Set up an environment to perform remote debugging.

    Debug unhandled exceptions when using ASP.NET AJAX. May include but is not limited to: client-side Sys.Debug methods; attaching a debugger to Windows Internet Explorer
    Implement tracing of a Web application. May include but is not limited to: Trace.axd, Trace=True on @Page directive,<trace enabled="true"/>
    Debug deployment issues. May include but is not limited to: aspnet_regiis.exe; creating an IIS Web application; setting the .NET Framework version
    Monitor Web applications. May include but is not limited to: health monitoring by using WebEvent, performance counters

    Working with ASP.NET AJAX and Client-Side Scripting (15 percent)

    Implement Web Forms by using ASP.NET AJAX. May include but is not limited to: EnablePartialRendering, Triggers, ChildrenAsTriggers, Scripts, Services, UpdateProgress, Timer, ScriptManagerProxy
    Interact with the ASP.NET AJAX client-side library. May include but is not limited to: JavaScript Object Notation (JSON) objects; handling ASP.NET AJAX events

    Consume services from client scripts.

    Create and register client script. May include but is not limited to: inline, included .js file, embedded JavaScript resource, created from server code

    Targeting Mobile Devices (5 percent)

    Access device capabilities. May include but is not limited to: working with emulators
    Control device-specific rendering. May include but is not limited to: DeviceSpecific control; device filters; control templates
    Add mobile Web controls to a Web page. May include but is not limited to: StyleSheet controls; List controls; Container controls
    Implement control adapters. May include but is not limited to: App_Browsers; rendering by using ChtmlTextWriter or XhtmlTextWriter

    Programming Web Applications (17 percent)

    Customize the layout and appearance of a Web page. May include but is not limited to: CSS, Themes and Skins, Master Pages, and Web Parts, App_Themes, StyleSheetTheme
    Work with ASP.NET intrinsic objects. May include but is not limited to: Request, Server, Application, Session, Response, HttpContext
    Implement globalization and accessibility. May include but is not limited to: resource files, culture settings, RegionInfo, App_GlobalResources, App_LocalResources, TabIndex, AlternateText , GenerateEmptyAlternateText, AccessKey, Label.AssociatedControlID
    Implement business objects and utility classes. May include but is not limited to: App_Code , external assemblies

    Implement session state, view state, control state, cookies, cache, or application state.

    Handle events and control page flow. May include but is not limited to: page events, control events, application events, and session events, cross-page posting; Response.Redirect, Server.Transfer, IsPostBack, setting AutoEventWireup

    Implement the Generic Handler.

    Tuesday, February 10, 2009

    Structs and Anonymous backing fields

    I got this error today

    Backing field for automatically implemented property must be fully assigned before control is returned to the caller.

    I found a strange thing out today in connection with Structs and anonymous fields. I wanted something simple like

    public struct Person
    {
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public Int16 Age { get; set; }

    public Person(String firstName, String lastName, Int16 age)
    {
    FirstName = firstName;
    LastName = lastName;
    Age = age;
    }
    }


    well that won’t compile as you will need to initialise all of the fields, so you have to do this – notice the call to the default constructor.



    public struct Person
    {
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public Int16 Age { get; set; }

    public Person(String firstName, String lastName, Int16 age): this()
    {
    FirstName = firstName;
    LastName = lastName;
    Age = age;
    }
    }

    Maybe the compiler should not allow anonymous fields in structs?