|
Strict or Transitional DTD type validation, worth hacking just to pass? |
||||||||
An area of web development that I previously had little exposure to was WCAG validation. This is the industry standard for Accessibility coding for web platforms. For version two (V2) of the WCAG there are three standards, A, AA and triple A (AAA). Each represents different levels of Accessible compatibility.
What this also does is validate against the W3C doctype standards. This is where my problems arose. The main aim of the doctype standard is to clearly define a separation layer between content and behaviour. In practical terms this equates to best practices such as having an external .CSS files rather than inline styling, and declaring the language types for scripting, such as JavaScript etc.
Using a free online tool, http://www.totalvalidator.com/ you can check if your site is W3C and WCAG complaint. It will base the validation on the doctype declared in your html. There are three types of DTD declaration for html 4.01.
2
3<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4
5<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/frameset.dtd">
You can read more about Doctypes here: http://www.w3schools.com/tags/tag_DOCTYPE.asp
The main difference between these is that the frameset DTD will accept frameset as valid html, whereas the others will not. Also the Strict DTD imposes a very tight restriction of what is accepted as valid in comparison to the Transitional DTD. One is a Strict adherance to the standard, whereas the other shows that you are Transitioning from old code into the new.
The site http://24ways.org/2005/transitional-vs-strict-markup goes into more detail about what the exact differences are, what I am going to discuss is the option of creating functional hacks, merely to pass validation.
One of the deprecated attributes in Strict validation is the target attribute.
We are all familiar with this attribute, but when you examine it you find that it is actually a declaration of behaviour. We are forcing the user into a specific action. IE open a new window. As a best practice guideline whenever we have a link on a site that exits that site, we open a new window. The only work around for this is creating a specific JavaScript function to open a new window, as this will not be marked as invalid. This seems overkill, just to pass validation.
So I am left with the dilemma that if I want my sites to pass Strict DTD validation I must create a JavaScript hack, or compromise the functionality. I'd like to pass the validation, but I view the functionality as key to a site, so it's an easy decision for me.
|
Internet dating disasters site - Online fraud and security |
||||||||
A popular daytime television show in the UK has recently broadcast an article on Internet security and Internet dating. With Online Dating being an industry I worked in for a brief period this was quite relevant to me.
http://www.itv.com/lifestyle/thismorning/more/internetdatingdisasters/
The main aim of the Sally Cornock's site is to warn of 'love rats' and suspicious profiles online. It appears that she was stung by a serial dater online and has done something about it.
It highlights the dilemma of free to join, fixed cost membership sites quite well though. Most dating sites are free to join. They provide very little functionality, and no interaction at all with other members UNLESS you upgrade your account and pay a fee. When you understand this it makes policing this near on impossible.
Sally Cornock has raised the issue of potentially having a governing body to perform validation on members as they join, so that you know someone is who they say they are. This would discourage a massive percentage of the market, as signing up for free by providing only one or two fields of data is simple. But passing an online verification is an extra level of hassle to the "casual shopper", which most people are. When you look at the statistics only a tiny number of signups ever convert to full membership.
It nicely highlights some of the less technical aspects of web usage, click through below to read more:
http://www.suzylamplugh.org/personal-safety/personal-safety-tips/safety-on-the-internet/
|
Using Coldfusion to generate JQuery validation scripts |
||||||||
In this article I am exploring the idea of automatically creating JQuery validation from a simple Coldfusion input. In this case a list of required fields. I'll say up front Ray Camden's blog entry on Jquery Validation (http://www.coldfusionjedi.com/index.cfm/2009/2/10/An-Introduction-to-jQuery-and-Form-Validation-2) has been an invaluable help.
The principle behind this is that you can create a generic validation object routine, and simple provide it with a set data object (list or struct, haven't decided yet) and have it match against a form and validate it. So with that in mind we will create a simple form.
2
3<label for="name">Name</label><br/>
4<input type="text" name="name" id="name" class="form-field"><p/>
5
6<label for="telephone">Telephone</label><br/>
7<input type="text" name="telephone" id="telephone" class="form-field"><p/>
8
9<label for="email">Email</label><br/>
10<input type="text" name="email" id="email" class="form-field"><p/>
11
12<label for="favouriteSandwhich">Favourite Sandwhich</label><br/>
13<input type="text" name="favouriteSandwhich" id="favouriteSandwhich" class="form-field"><p/>
14
15<input type="submit" name="action" value="Submit">
16
17</form>
2<scr/ipt type="text/javascript" src="jquery.validate.pack.js"></script>
2 $(document).ready(function(){
3 $("#form").validate({
4
5 errorContainer: "#error",
6 errorLabelContainer: "#error ul",
7 wrapper: "li",
8
9 rules: {
10 <cfoutput>
11 <cfloop list="#variables.requiredList#" index="variables.index">
12 #variables.index#: {required: true <cfif findNoCase('email', variables.index, '1')>, email: true</cfif>, minlength: 5},
13 </cfloop>
14 </cfoutput>
15 },
16
17 messages: {
18
19 <cfoutput>
20 <cfloop list="#variables.requiredList#" index="variables.index">
21 #variables.index#: {required: "The #variables.index# field is required",
22 <cfif findNoCase('email', variables.index, '1')> email: "Email addresses are of the form user@host. Please enter a valid email address.",</cfif>
23 minlength: jQuery.format("You need to use at least {0} characters for your name.")
24 },
25
26 </cfloop>
27 </cfoutput>
28
29 }
30 }
31 );
32 });
33 </script>
2/* Error handling styles */
3#error {-moz-background-clip:border;
4 -moz-background-inline-policy:continuous;
5 -moz-background-origin:padding;
6 background:#FFE7DF;
7 background-position: 5px 8px;
8 border: #FF3F00 solid 1px;
9 color:#440000;
10 margin:10px 0 1em;
11 padding:0px 7px 7px 7px;
12 display:none;
13 width: 90%;}
14
15/* padding for the list */
16#error ul {list-style-type:none; padding: 0px 0px 0px 0px;}
17
18/* padding for the list items */
19#error ul li {padding: 4px 0 2px 16px;}
20
21.error {color: red; list-style-type:none; padding: 0px 0px 0px 0px; width: 198px; color:#440000; background:#FFE7DF;}
22li {list-style-type:none;}
23.form-field {width: 200px; padding: 0px 0px 0px 0px;}
24</style>
This creates a totally dynamic validation routine - all fed from a list. I think it forms a good basis to build a more dynamic rules driven model, where you can set field lengths as well.
There is an example of the complete code here, along with a variation on the inline or external placing of the validation messages.
|
Top 5 remote working applications |
||||||||
With the UK currently stumbling to a halt due to snow I've been working from home. I like working from home, it has many advantages like the time saved in commuting, and the fact that you usually know your own hardware/software setup better than works.
One thing it has highlighted is that as a software developer your actual location is now totally irrelevant. Even for team based projects you do not all have to be in the same physical location. Our physical and online worlds have become so enmeshed that is it now common place to be able to work productively from anywhere.
So with that in mind I thought I'd do a quick round up of my favourite remote working applications. Some are more "best practices" with recommendations if I've been using a specific product. Warning: all recommendations may contain nuts.
1. Online Code / Asset Source Control
Having your code in an online repository is an absolute life saver. Not only does this contribute towards a "Business continuity" plan for regular working, but it means you can get to it from anywhere. We should all be using source control anyway, but having it online means that it's much more easily maintained and you are not moving code around on USB keys.I use an application called Beanstalk. www.beanstalkapp.com. They have worked well for me so far, and the basic account is free.
2. Virtualisation
The Virtual PC software market has moved on considerably in the last few years. To the point now where there are free versions of virtualisation software that allows you to create virtual pc's inside your actual physical pc. I use this at work and at home for a few reasons. Firstly I don't even have a physical development server anymore, it is a virtual windows 2003 server, and secondly this is great for setting up specific testing environments. Need a windows XP running Internet Explorer 6? Create a new virtual image and install XP, it is far more reliable than multiple IE's or other Internet Explorer emulation software.I use VM ware server 2.0, its totally free (Virtual pc's operating system licences aren't so be careful) you can get it here: http://www.vmware.com/products/server/
3. Instant messaging / Skype
Communication in any team is important, especially so if you are working remotely. If no-one can contact you then appearances may be that you aren't working at all, which is bad news. I use Skype http://www.skype.com/intl/en-gb/ which can be used for chat and messaging.The obvious benefits are that it is free, and means you can have team discussions online. More recently I've encountered several companies that actually use Skype as their main communications tool. They don't even have desktop phones anymore.
4. FTP clients / File synchronisation utilities
Ideally you can still provide any of your in-office functionality at your remote location. So being able to implement change releases is essential. I use a combination of Filezilla http://filezilla-project.org/ which is a free FTP client, and Beyond Compare http://www.scootersoftware.com/ which is a file comparison tool. Ideally I'd like to learn ANT, but just haven't got round to it yet.5. Online file storage
Services like DropBox https://www.dropbox.com/ are invaluable for the online storage of files. We always have online briefs, and Photoshop designs flying around the place, so storing them in one central online location is an ideal way of ensuring that you always have the latest version. It also avoids the problem of not having the project spec, and not being able to work.I personally use Google Docs for this http://www.google.com/docs I've found it to be a very flexible easily maintained way of storing pretty much any format of document.








