dslreports logo
This FAQ text is copyright dslreports.com
Reproduction of all or part only with our permission..
This FAQ is edited by: graffixx See Profile, Entelligence See Profile, Steve See Profile, big greg See Profile
It was last modified on 2006-07-27 17:34:41

1 General

What forum software should I use?

Snitz works well if you are looking for an ASP based free solution. Most other popular software is based on PHP, including YaBB SE and phpBB.

A long list of forum and content management system software is listed in /forum/remark,7962246

What are some of the major programming languages?

There are many popular programming languages. Here's a brief list of some you may have heard of.

C and C++ are very powerful languages that have withstood the test of time. They can be hard to learn. Most commercial programs are written in C or C++ languages. The C++ language evoved from C in order to support "object oriented" programming. C is the language of choice if you are running in embedded devices or wherever resources are scarce. For example, much of Linux is written C.

Visual Basic is a Microsoft technology that is easy to learn. While it is a good language for beginners, it's performance and lack of control (compared with C++) can be a problem. As a result, there aren't very many professional programs released using VB. Microsoft IIS comes with Active Server Pages (ASP), which is most often used with a Visual Basic variant called VBScript.

Perl is a language that is also found on many Unixy systems. It is excellent at string parsing. This site is written in Perl.

Java is a language created to run in embedded devices. It features object oriented programming with automatic memory management and "write once run anywhere" operation. Java is becoming very popular as the "back end" to large web sites.

Javascript (also known as ECMAscript) is a language that runs in your browser. It is used to create a more dynamic user interface experience. Javascript is not the same as Java, even though they share the same syntax. The use of Javascript used to be limited to simple UI manipulation. New Javascript based applications (like GMail and Google Maps) use a large Javascript application that communicates with a remote host using XML. This combination is called Ajax (Asynchronous JavaScript and XML).

What language should I choose for my web pages?

If you are creating static (unchanging) web pages, HTML is the standard page rendering language for the Internet. In order to produce web pages, you will need at least a basic understanding of HTML and how it works. More advanced HTML techniques will provide a better user experience, but may not be viewable in all browsers or even different versions of the same browser.

HTML 4.01 was the last major HTML standard. It was released in December, 1999. The next generation is called XHTML, which finally arrived in 2002. An XHTML file is a special type of XML document that looks very much like HTML 4.01, and appears to be HTML 4.01 to older browsers.

If you want to incorporate graphics into the web pages, you should become familiar with the different formats used on web pages, such as .GIF, .JPG, and .PNG. There are several good utilities available to assist you in converting graphics for use on the web.

There are other "back end" languages, such as PHP, ASP, and Cold Fusion, that allow you to create dynamic (changing) web pages based on content that typically comes from some sort of database. These languages typically "piggyback" onto the HTML pages, allowing you to put programming information directly into your web pages.

Also see /faq/6870

Can you recommend an HTML cheatsheet?

There are lots of HTML references on the web, but this one puts all the tags on one screen: Compact Index of HTML Tags for quick reference. It does have one drawback--the tags haven't been updated to HTML 4/XHTML 1 standards.

For more in-depth and current information, these are very good, just not as compact:

»www.ncdesign.org/html/list.htm
»www.mountaindragon.com/html/

What is SSL and why do I need it?

SSL (Secure Sockets Layer) is a protocol that encrypts the data flowing between your browser and the web site you are visiting.

An SSL-encrypted HTTP session is initated by using the "https" method on the URL (Uniform Resource Locator).

Your browser connects to the web server and begins a complicated dialog to establish a secure channel and verify the site's identity.

The channel is secured using a "handshake" protocol that creates a Session. The web site server sends its "certificate" to the browser. The browser then tries to verify the validity of the certificate. If the certificate is valid, the handshake protocol performs a key exchange so that each end (the web site and server) have keys to encrypt and decrypt the data.

If you connect to a site with https: and you get a warning about the certificate, it means your web browser was unable to authenticate the web server's certificate with a recognized certificate authority. This means you cannot be absolutely certain you are talking to who you think you are. If you are certain, you can still proceed and establish the SSL Session. Your data will be encrypted just the same, but you will not have verified the remote web site server's identity.

It's unlikely (but technically possible) to steal personal information like passwords and credit card numbers by listening into web site traffic. The encryption of the data means that as web site data passes from router to router, nobody can read your credit card information until it gets through the Internet and safely to your web server.

Web site pages encrypted with a 128-bit session key are considered "computationally secure". This means that with current technology, the 128 bit session key cannot be cracked in anything less than several days.

An interesting feature of the SSL protocol allows either the client or server to request new encryption keys at any time. Nobody does this now, but it would be an extra measure of protection when computers get fast enough to crack the 128-bit SSL key.

What free blogging applications are available?

There are several free packages available on the web to help you get started in the blogosphere:

  • Movable Type - offers a free single-user edition that supports one user and unlimited blogs. Requires perl and a MySQL, SQLite or Berkeley database.
  • Wordpress - Requires php and a MySQL database.
  • NucleusCMS - Requires php and a MySQL database.
  • b2evolution - Requires php and a MySQL database.
  • TextPattern - Requires php and a MySQL database.
  • Serendipity - Requires php and a MySQL database.
  • boastMachine - Requires php and a MySQL database.
  • Geeklog - Requires php and a MySQL database.
  • ExpressionEngine - Comes in a limited capability free version. Requires php and a MySQL database.

Please submit packages not listed. Last updated January 24, 2006.

Where can I find a listing of IIS Status Codes?

SUMMARY
When users try to access content on a server that is running Internet Information Services (IIS) through HTTP or File Transfer Protocol (FTP), IIS returns a numeric code that indicates the status of the request. This status code is recorded in the IIS log, and it may also be displayed in the Web browser or FTP client. The status code can indicate whether a particular request is successful or unsuccessful and can also reveal the exact reason why a request is unsuccessful.


»support.microsoft.com/de ··· s;318380

1.1 How To

How do I host a site?

Domain Name
The first thing that you will need to do is decide how your site is going to be accessed. You can either access the site via IP address, or domain name. If you choose to use a domain name, you will have a few more decisions to make. You can get a free subdomain, but we recommend that you spend about $10/year to get your own domain.

DNS
After that you will need a DNS (Domain Name Server). You can either pay for DNS, use a free DNS server, or host your own DNS server. If already have a hosting plan, your provider may provide you with DNS.

Hosting
The last thing that you have to worry about is hosting. Like the last option, you can either use free hosting, paid hosting, or host your own.

For more information on any aspect of hosting check out our Webhosting Chat forum and also the Webhosting FAQs.

How do I edit HTML?

HTML files are simply text files. So you can use any text editor, even lowly Notepad. However, there are a number of good HTML specific editors out there that will fit the bill. What you want out of an editor will determine which one you use.

If you are interested in a free HTML editor, please see our list of free HTML or WYSISYG editors.

How do I find registrars for the country-code domains?

An excellent resource is http://www.norid.no/domreg.html which has long listed all the two-letter country-code domains.

How do I test with older versions of Internet Explorer?

Most of your web site visitors will use Internet Explorer 6.0, but you should also test your site in several other browsers. IE is extremely loose about that HTML it accepts. You should validate your HTML and test your site using Firefox (»www.mozilla.org/). You also should also test your site with IE 5.5.

Although Internet Explorer 6.0 has been out for awhile, there are still a fair number of people running IE 5.5, and the differences between IE 5.5 and IE 6.0 browsers is significant.

The following page will give you instructions on how to run IE 5.5 (and other older versions of IE) on your system. You just download a ZIP file, expand it somewhere, and double-click IEXPLORE.EXE... you are running 5.5.
»www.skyzyx.com/downloads/

Another place to find old browser versions is kindly provided by evolt.org, where they seem to have a version of every browser you have never heard of.
»browsers.evolt.org/

How do I fix my site if it works with Internet Explorer, but not with Firefox?

Internet Explorer (IE) is very forgiving. It will take all kinds of malformed HTML and make it appear to be perfect. Most other browsers try to be a bit more strict. As a result, HTML/XHTML markup and CSS styles that work on IE may not work in other browsers.

If you look at your web statistics, you will see that most people still use IE. Besides the people that have to run another browser because of their operating system, many of these non-IE people browse with Firefox (almost all operating systems) and Safari (Apple OS X). Smaller numbers of visitors will also be using browsers like Opera or Konqueror.

As a web developer, you want to write your code to one set of rules called Web Standards. Those same rules are carefully implemented by the browser. In a perfect world, you would write perfectly valid code, and all the browsers would render your site perfectly. But this isn't the real world.

After you make lots of pages, you will come to what every experienced web developer knows: browsers suck. You will have to account for various bugs in various browsers.

So, what's your best chance of having your site be visible to the widest audience? It's simple. Just validate your markup and styles.

Valid markup (HTML/XHTML) and styles (CSS) will most likely let your site render reliably in all browsers.

It is a good idea to use Firefox for your browser while you develop your site. Not only it is an excellent browser, it has a great plugin called "Web Developer" that will validate the markup you are looking at... and also help you in lots of other ways. If you use a standards compliant browser for development, you will develop markup and styles that are close to web standards.

Each time you come to a breaking point, validate your code. There are free online tools to validate your styles and another tool to validate your markup. After validation, you will generally see that your validated code will usually work fine in all those non-IE browsers. Congratulations!

After you have validated markup and styles, look at your site in IE. Most of the time IE 6 will also work. The markup should be ok, but the styles may not be. There are unique things to IE 6 you may have to work around (most famously, the broken box model). And if you care about IE 5.5 (most do) you have to account for a whole bunch of other bugs. You can handle all that with CSS stylesheets that account for different browser versions.

How do I control search engine spiders who access my web site?

Search engine spiders (or robots, or crawlers) are programs written to follow the links on a website for the purposes of adding the information to its search results. You might notice in your log some hits that look like this:

207.46.98.62 - - [14/Nov/2004:04:51:13 -0500] "GET /robots.txt HTTP/1.0" 200 69 "-" "msnbot/0.3 (+http//search.msn.com/msnbot.htm)"

This is an example of a search engine spider (msnbot, in this case) requesting files from your server. But how do you prevent a bot from doing this, or how do you direct a bot to only index certain portions of your site?

Using robots.txt

To define what a spider can and cannot do on your site, we can use the Robots Exclusion Standard. You will notice in the example above a request is made for /robots.txt. When a robot first visits your site, it checks for this file first to find out what it is allowed to look at.

Start by creating a file called robots.txt and place it in the root directory of your webserver. In the following example, we will block access to the entire site to all bots:

To block access only to a special directory on your site (in this case, /secret):

You can also block only one bot (again we'll do msnbot):

Are you getting 404 (not found) errors when robots try to find robots.txt?
Even if you don't want to block any robots at all, create a robots.txt with the following, which allows all robots access to your entire site.

Misbehaving robots

Most of the more popular search engine spiders (msnbot, Yahoo! Slurp, googlebot) are well-behaved and will obey your directives. Keep an eye on your logs to make sure that they do obey. If you believe they are not doing as they should, you should report it to the bot owner. There is usally a URL in the bot's user-agent string you can visit to find out details about who's running it, how to contact them, and so forth.

Since misbehaving robots don't pay attention to robots.txt, you may have to block the offending robot's traffic. You can do this by examining your logs to see what sort of signature the robot can be identified by when it comes to your site. You may choose to block the robot's traffic by IP address or "user-agent" (what a robot calls itself).

The robots meta tag

There is another method of controlling access to your content. This one works on a page-by-page basis. Add the following line inside the head section:


This will tell any robot not to index this page in its search results, nor should it follow any links on the page.

For more information on web robots and robots.txt, visit The Web Robots Pages.

1.2 How To: Apache

How do I use .htaccess ?

.htaccess can be used for more than implementing custom error pages or password protected directories. Here's a Comprehensive guide to .htaccess

How do I use Server Side Includes (SSI) with .html files?

Although most people say you can't, you sure can, if you are running Apache! Just make a .htaccess file in your root directory with this in it:


1.3 How To: IIS

How do I use an IPsec Packet Filter to protect my Windows server?

It doesn't matter if you are running Apache or IIS, Windows leaves a lot of vulnerable ports open.

Check which of your ports are open by going to this site's port scan tool /scan

In security, you want to adopt a "belt and suspenders" approach to most things. In this case you may want to use second second port scan tool. A well known port scan tool you can try is ShieldsUP! at »www.grc.com/ (skip through the cover page by clicking the ShieldsUP! logo then find the link for the test, about halfway down the page, click through the disclaimer, then click "all service ports").

If you are running Windows 2000 Server, Windows 2000 Professional, Windows 2003 Server, or Windows XP Professional, you can use the built in IPsec facility to make a packet filter. The IPsec facility allows you very granular filtering: by IP address, port, and protocol.

If you have XP Home, you can't set up an IPsec packet filter. Your best move is to upgrade to XP SP2 and use its built-in firewall.

If you are running a public web server you really should consider one, even if you already have a firewall.

To setup an IPsec packet filter on Windows 2003 Server see »www.microsoft.com/techne ··· 159.mspx
For more information, including Windows 2000 Server, see »www.microsoft.com/techne ··· cld.mspx

You should also consider using a packet filter if you take your laptop to public hotspots, or you move it between the network at home and the network at work.

There's no substitute for keeping your system up to date: Windows Update is your friend. Run it at least once a week on your production servers, and set all your clients to install patches automatically.

How do I increase the connection limit for IIS 5.1 on Windows XP Pro?

Windows XP Professional runs IIS version 5.1, which comes with a 10 connection limit. Often that's not enough when you are testing a site from multiple browsers (or multiple locations). You can easily increase the limit to the hardcoded maximum: 40 connections.

Make a command prompt window (start, run, cnd.exe) and issue these commands.
cd \inetpub\adminscripts
cscript adsutil.vbs set w3svc/MaxConnections 40
iisreset
 

]]>The first command connects you to the adminscripts folder. The second command runs a script that sets the MaxConnections value in the IIS metabase to 40 (the maximum allowed). The third command (iisreset) shuts down and then restarts IIS.

How do I rewrite a URL in IIS like mod_rewrite for Apache?

The feature of Apache lets your web site take a URL and rewrite it for passing to your server side scripts.

ISAPI_Rewrite is a powerful URL manipulation engine based on regular expressions. It takes the same regular expressions and options as Apache's mod_rewrite.

It comes in two versions: ISAPI_Rewrite Lite is free. It doesn't support per-virtual-site configurations, proxy, and few other options. ISAPI_Rewrite Full is the full product, available on a try-before-you-buy basis.

More information and downloads are available by going to »www.isapirewrite.com/

How do I run Perl under IIS?

Perl is a cross-platform scripting language. Several free packages for web sites are written in Perl. The Perl interpreter is mature and easy to install. Once you install Perl, you can use it to run Perl scripts from the command line or for web pages under IIS for Windows 2000 and later (IIS 5, 5.1, and 6).

Many web tools are written in Perl, including MRTG and AWStats.

For a free Perl installation, go to the ActiveState site and follow the links to download and install Perl. The installer does a good job at setting up your IIS system to run Perl scripts for web pages.

Download ActiveState Perl from »www.activestate.com/

Can I manage my IIS installation from another computer running Windows?

Yes.

If you are running Windows XP you can run the IIS 6.0 plugins on your computer. Just download the Windows Server 2003 Administration Tools Pack from Microsoft.
»www.microsoft.com/downlo ··· ylang=en

2 Scripting

What is ASP?

ASP (Active Server Pages) is a server side scripting technology that allows developers to easily connect to databases and generate dynamic web pages.

ASP is primarily used on Microsoft/IIS platform, but ports for U*x are available. If you are intending to use a non-Microsoft platform, you may be better off using PHP.

For assistance in learning ASP, check out »www.w3schools.com and »www.learnasp.com

What is ASP.NET?

ASP.NET is a subset of the Microsoft .NET platform, primarily intended for developing dynamically generated web pages.

Distinct features of ASP.NET include the use of full featured languages such as VB.NET or C# as a development language, compiled assemblies resulting in large performance gains over traditional scripting technologies (ASP, PHP), and many other enhancements to traditional web application programming.

Currently ASP.NET will run only on Microsoft/IIS 5 platforms, but open-source UNIX variants are in development.

More information can be found on »www.asp.net and »www.w3schools.com/ngws/

What is Perl?

Perl is a language originally developed for use in Unix systems to manipulate large amounts of text. It has evolved into a very powerful general purpose scripting language that is commonly used to produce programs the run though the CGI (the Common Gateway Interface) on web servers.

Perl is especially good at processing large and arbitrary amounts of text, such as logs or user input. Later versions can access databases, and even be used to produce Windows applications. Perl syntax can be difficult to read, but once mastered, there is little you cannot do with Perl. In fact, BBR itself is written in Perl.

Perl 1.0 was released in 1987. It was created by Larry Wall. Perl runs just about everywhere: Unix (all), Macintosh (OS 8 and X), Windows (all versions), and lots of other platforms. See »www.perl.org/ for lots of information on Perl.

What is PHP?

PHP is a "backend" general purpose scripting language designed to interface easily to databases and provide for a means to create dynamic web pages. PHP is typically used on *NIX based systems, but ports have been made to support Windows as well.

PHP code is typically integrated into the the HTML pages themselves, providing an easy way of adding dynamic content to a web page. The latest version of PHP, can be found here, is also designed to directly interface to a variety of databases, such as Oracle, MySQL, and PostgreSQL, to allow the creation of large, content-driven sites, for example, forums.

PHP is open-source freeware, and has a good user community. more information is available at www.php.net

What is this static and dynamic stuff?

What is it?
In programming, static and dynamic are terms used to describe content. Static content is content that is preset and doesn't change. Dynamic content is the exact opposite; it changes.

Static Example
Code:
Displays on page:
quote:
Welcome User


Dynamic Example (PHP)
Code:

Displays on page:
quote:
Welcome Entelligence

Just note that it will display welcome and (whatever the value of $user is).

Why would I want to use dynamic content?

There are many reasons that you might want to use dynamic content. One of the biggest ones is for personalizing. It seems a lot nicer when you go to a site and it says "welcome (your name)", rather than just "welcome user". You could also use it to display local weather, news, etc. for users based on their zip code. Dynamic content can also make a site easier to maintain.

How Do I add dynamic content to my site?

A very common web programming language for displaying dynamic content is PHP. This is very simple example of how to do this in PHP (note that PHP must be installed on your web server):
First, lets declare our variable $user in our header.
That's it. Of course this is a very basic example and probably wouldn't have much use over static code. But if we wanted to; we could make $user = $sqluser and make $sqluser = an sql query to get the username stored in a database.

2.1 How To

3 Web Standards

What are web standards, and why should I care?

Web standards are simply defined structures for how content should be created and distributed on the web. The W3C has set forth various languages and methods with specific guidelines as to what can and can't be used.

Examples include markup and presentation languages, such as XHTML, and CSS. There are others as well, such as the Document Object Model, but the main bread and butter of any web developer will be primarily XHTML and CSS.

Who cares?
On the surface, these standards may seem unimportant. After all, even if your code isn't exactly correct it will still display, right? Well, not exactly. Your page may look how you intended in one browser, but look completely different in another. Or it may not render at all. Invalid code can also become unmanageable more quickly, making your job harder, and at worst you may drive away visitors who can't read or display your site. It also keeps your site "future-proof" by ensuring it will be compatible with new browsers when they come out, and you won't have to go back and rewrite your code to keep it working.

I use Internet Explorer, and so does most everyone else. So as long as it looks ok in IE, I'm fine with that.
This is an unhealthy attitude some designers seem to have. Internet Explorer may have a large market share, but that's no reason you shouldn't ensure compatibility with other browsers as well. Complying with web standards ensures your page will work in all cases, no matter what the popular browser of the day is.

Accessibility
Web standards go hand in hand with ensuring your site is accessible to all as well. It is estimated that 10% of the population online today have some form of disability which may impair their ability to access your site. This can range from vision impairments like blindness or color blindness, to reduced motor skills or reaction times.

It's not only just a good idea to keep these people in mind, it's also the law. In the United States and other countries as well, a set of standards has been developed to ensure people with disabilities can still access content on the web. Examples include U.S. Section 508 Standards and the W3C's Web Content Accessibility Guidelines 1.0.

Other advantages
Even if the reasons above aren't good enough, using standards can help make your job as a developer easier. Keeping your markup clean and semantically correct makes it easier to read and maintain, and helps reduce bloat. Linking to a single CSS file sitewide is certainly easier than writing several thousand FONT tags.

Use of XHTML and CSS means your site is much more likely to work with up and coming technologies, such as browsers on TV, handhelds, phones, and other future devices.

Simple steps to complying with web standards
Developing in accordance with these standards and guidelines is easy. These steps are just some of the basics.
Pick a markup language and include a valid DOCTYPE.
Pick a standard language for your markup, and code in accordance to its guidelines. Add the proper DOCTYPE at the top so the browser gets a heads up as to how your page should look. A DOCTYPE is important because without it, the browser will usually fall back on "quirks mode", rendering whatever tags it comes across basically up to its own interperetation.

Put all style information about the page into CSS.
Many of the old style tags found in HTML4 are deprecated. CSS is the new standard for defining how a page should look. CSS code can be placed either inline with the markup, or linked to an external file.

Avoid vendor-specific tags.
Some companies like Microsoft and Netscape have added to the language by coming up with coming up with codes that only work in their browsers. These additions are not approved by the W3C (although sometimes they are incorporated later on) and they will not provide a consistent look and feel for your site.

Validate your code.
Use tools like The W3C Markup Validation Service for your HTML and The W3C CSS Validation Service to make sure your pages are up to spec. There are also tools for checking accessibility standards, such as Cynthia.

Use meaningful, well-formed link text.
Links are the heart and soul of hypertext pages. You want to make sure the text you use in your link is meaningful to the link it represents, even if it's out of context of the page. Don't ever use the phrase "click here". Most people already know what to when presented with a link, so these directions are redundant. Also it's not relevant to the page you're linking to. A good rule of thumb is to think of links as nouns, not verbs. So avoid linking to action words, only people, places, and things. One good reason to do this is because people with vision impairments may use screen readers when visiting your page. A screen reader is software that speaks the text on the page with the use of a text-to-speech engine. A user with a screen reader may be tabbing through the links on your page and they need to know what each link represents.

Avoid use of frames.
In almost all cases use of frames is not needed and results in problems in accessibility, browser compatibility, search engine spidering and links found in search results. Read more in /faq/11216

Test your pages in as many browsers and platforms as possible.
Don't test exclusively in one browser, use a variety. Also keep in mind that even the same browser will render differently on alternate platforms. Take a look at your page in Windows, Mac OS, and Linux to get a better feel for how others view your site. If you don't have access to some of these systems, ask for a site check in /forum/webmonk and many users will be happy to provide screenshots.

Reading more about it
This FAQ entry only scratches the surface of web standards and accessibility. There's a lot of good resources for learning more:
/faq/webmonks
World Wide Web Consortium
Web Standards Group
The Web Standards Project

Should I use frames for my web site?

99.5% of the time, frames should be avoided when developing a website.

To the novice webmaster, frames may seem wonderful. However from the user's perspective, frames present a number of challenges.

Navigation
The biggest (mis)use of frames on a website is to include a static menu on each page. However a frame will break the basic functionality of a browser feature people have come to rely upon: Back and Forward buttons. Trying to navigate back and forward on a frames page may not work exactly like the user expects, since the browser will only go back and forward within a certain frame - not the whole page.

Bookmarking
Because the actual web address of each page in a frameset is hidden, you won't be able to bookmark to a specific page, only the main framed site. Yes, you could certainly view the source in your browser to determine the actual address and bookmark that, but this is cumbersome and too much to ask of the average surfer.

Search Engines
For the same reason as above, frames make it difficult for search engines to index your site. Some may even ignore framesets altogether, or in most cases a user will get a result from a search query that links to a single page on your site, and they would view that page out of context since the rest of the frames wouldn't be present.

Accessibility
Not all user agents are capable of rendering frames. This means that some visitors may simply be presented with a blank page. The HTML noframes tag is supposed to be used for non-frames browsers, but then you end up having to maintain two versions of your site - frames and no frames. This is more work in the long run for anyone. Usually most people just use the noframes feature to say something like, "Sorry, this page uses frames". This could completely lock out some visitors from your site - don't do that!

Frames Alternatives
Even if all the reasons above don't apply, there's still hardly a good argument for frames when presented with a number of options for developing a site.

If you have a navigation section, or some other bit of content you want to remain the same on every page, you can use server-side scripting languages to include this information on the fly when the page is loaded. Examples of server-side languages are: SSI (Server-Side Includes), PHP (PHP Hypertext Preprocessor), and ASP (Active Server Pages). What is available to you depends on the type and configuration of your webserver, contact your hosting provider if you are not sure. Even if you are not fluent with these languages, it is very easy to learn how to use the include functions.

If you are using an iframe (inline frame) now, you can easily get the same look by putting your content into a block-level element (such as div or p) and style that element with height and width specifications, and using overflow: auto, which will render a scrollbar for any content that does not fit in the div. This method also has the added benefit of degrading gracefully in browsers that wouldn't support iframes or CSS: the content is still available without providing an alternate version.

So what about the other 0.5% of the time?
So basically frames suck and there's newer, hipper alternatives. When might it be acceptable to use a frame? Perhaps if you have complete control of the user agents and the people accessing your site, you may be able to get away with frames. An example of this might be an intranet site that is only available for employess of a certain company, all of which use the same browser and don't have any disabilities which may make page viewing difficult.

Consider the alternative methods above first though! They give you way more flexibility over your site with the benefit of less work, and they'll make things a lot easier on your users as well.

Where can I find guidelines regarding web standards and technologies?

The World Wide Web Consortium (W3C) provides recommendations, specifications, and tools that will help with your web development projects.

You may be interested in the sections on HTML and XHTML, Cascading Style Sheets, and XML.

ou can also validate your HTML/XHTML and CSS to see if you are up to the standard mentioned in your DOCTYPE.

The first line of your HTML or XHTML document specifies the DOCTYPE (or "document type"). This is where you specify your document as a certain version of HTML (old school) or XHTML (new school).

If you are using HTML, you should easily be able to have your page validate as HTML 4.01 Transitional (or HTML 4.01 Frameset if you are using frames).

If you are using XHTML you should strive to make your pages validate as XHTML 1.0 Transitional. The XHTML 1.0 Strict standard is a bit too confining for real world web sites.

For more informstion about web standards and technologies, please see
World Wide Web Consortium
Web Standards Group
The Web Standards Project

What are the HTTP error codes and their meanings?

We all know what a "404" means, but what are the rest? Here's a list:

100 Continue
101 Switching Protocols
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-Out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URL Too Large
415 Unsupported Media Type
500 Server Error
501 Not Implemented
502 Bad Gateway
503 Out of Resources
504 Gateway Time-Out
505 HTTP Version not supported

3.1 How To

How do I make that little icon show up next to a URL in my favorites?

Modern browsers support a "Bookmark Icon", and it's a small 16-by-16 pixel image named favicon.ico. The "favorites" icon appears in the list of bookmarks and in the address bar when the page is being viewed.

The favicon.ico works in the bookmarks of Internet Explorer 4.0 (and later). It also works in the bookmarks and address bar of Mozilla 1.0 (and later), Firefox (all), Netscape 7.0 (and later), and Opera 6.0 (and later).

To create an ICO file you should use Photoshop or some other program to save in ICO (Icon) format, which is similar to but not the same as a BMP (bitmap) file. For best cross-browser compatibility, make the icon 16x16 and use only 16 colors. To convert an image online, you can use this free service »www.html-kit.com/favicon/

Once you have your favicon.ico file, store it in the root folder of your web site. The file must be called favicon.ico, and it has to be in the root of the web site. This will make the icon appear with recent browsers (IE6, Firefox).

For best cross-browser compatibility, you also need to use the following link tag in your page's head section.
• 
 

]]>The  shortcut icon sets the type of link, and the file name really must be favicon.ico for best compatibility.

Technical information on how favicon works can be found at http://www.jamesshuggins.com/h/web1/favicon.htm.  Another excellent resource is http://www.favicon.com/.

How can I use two stylesheets as a workaround for version 4 browsers?

How do I use one stylesheet and take care of NN4, FF, IE 5.2, IE 5.5, and IE 6?

It stinks. There are still a lot of people out there using Version 4 browsers. Mostly Netscape Navigator version 4 (NN4), on creaky old Windows and Macintosh systems. As web designers, we wish they would just go away. It's tough to make things work in the version 4 browsers and still build a "web standards" site with Cascading Style Sheets (CSS).

If you think cross-browser support means the maintenance headaches of multiple CSS files, you may have another option. This article shows you techniques you can use to make your site adjust to the browser bugs, all within one CSS stylesheet, all without Javascript or server side browser detection.

If you are commited to version 4, then you can use some styles, but you can't use others. You had better stick to the HTML 4.01 Transitional standard, and use Tables for the major pieces of your layout. NN4 can also use div and span to apply styles and uncomplicated layout. That's about it.

IE 6.0 and Gecko

Most of your audience is going to be using IE, and most of them will use 6.0. So the first step is getting things to look right in IE 6.0. Because the Gecko based browsers (Firefox, Firebird, Mozilla, Netscape 7) are very close to standards compliant, they should be next on your list of supported browsers.

Make it Pixel Perfect, just like you want it. Look at every page with IE 6 and Firefox, and you are covered. Make sure your HTML validates.

Most people can stop right there. But there are a lot of IE 5.5 people out there still. You should support them, and they will probably be your #2 browser (right after IE 6.0).

IE 5.5

IE 5.5 has the horrible box model problem. In most layouts you really care about the width, and the height is dictated by the content. With 5.5 the margin and padding is taken from the inside of the box dimensions. With ever other browser in the universe (including IE 6) the padding and margin are taken on the outside of the box dimensions.

This means that with 5.5, you have to adjust the width of ANYTHING with padding or margin, and the current way to do this is the "voice-family" hack. The voice-family hack uglys up the CSS, but it's operation is beautiful.
.box {
  padding: 5px;
  margin: 0;
  width: 100px;                /* for ie5 */
  voice-family: "\"}\"";
  voice-family: inherit;
  width: 90px;                /* for compliant browsers */
  }
  html>body .box { width: 90px }  /* for opera */
 

]]>We want a box that is 90px wide, with 5 px padding on each side.  First we set the width wider for 5.5, to include the 5px padding. The first voice-family confuses the IE 5.5 parser, rendering trash which it ignores until it sees the next } which resets his parser. For all other browsers, the voice family is reset back to its inheritied value, then the correct 90px width is set. The last line is called the "be nice to Opera" rule. It resets the width back to 90px for Opera 5 which is confused by the voice-family hack (like IE 5.5) but "gets" the box model (like all the other browsers do). Newer browsers (and hopefully all future browsers) will support the html> selector and they will also use the correct (90px) width.

IE 5.5 also has its own idea of what the font-size keywords scale your font to. What in IE 5.5 is "small" is the size of "medium" everywhere else. So, if you use font sizes by keywords (as many people do), you will also find yourself using the voice-family hack to set the font size for 5.5. This page has an excellent explanation: »diveintoaccessibility.or ··· zes.html

What a mess. But from here on it gets easier.

Safari and Konqueror

With the Mac, Safari usually takes a small bit of stylesheet changes, mostly having to do with Safari (and Konqueror) collapsing blocks when they shouldn't. Addition of a few display: blocks and setting widths on blocks floated next to each other seems to help.

IE 5.2

IE 5.2/Mac is the last release for the Mac of IE, and it's idea of the box model is somewhere between 5.5 (wrong) and 6.0 (mostly right). It just blows the width of certain text lines, and has other bugs which can cause other rendering issues for 5.2. 

Fortunately we have a CSS hack for that, which makes the style a bit uglier (avert your eyes for the voice-family plus 5.2 hack)
.box {
  padding: 5px;
  margin: 0;
  width: 110px;                / * for ie5.2 Mac */
  /* \*/
  overflow: hidden;
  width: 100px; 
  voice-family: "\"}\"";
  voice-family: inherit;
  width: 90px ;  
  /* */
  }
  html>body .box { width: 90px }  /* 5.2 mac doesn't see  */
 

]]>First we set the width to a value that makes things look right under IE 5.2. The odd looking comment screws up 5.2: because it doesn't end the comment on that line 5.2 ignores all the rules until it sees the next */. All other browsers end the comment on that same line (comment ending characters are never quoted with backslash). Between the comments, you can set things that will not apply to 5.2, like overflow: hidden (which causes entire links to disappear in 5.2).

NN4

So the last thing you want to try to get going is NN4. They are lucky to see anything other than unstyled text. You can give them colors, but some rudiumentry elements like background images are beyond NN4's capability. 

So let's say you used tables for layout, but your page looks odd because the page has margins on NN4. There's another flavor of the comment hack just for NN4. 

To make a borderless page on anything but NN4 you just set margin: 0; this doesn't work in NN4. What does work is setting the margins to exactly -10 pixels. To make this come out the easy way just use the "NN4 comment confusion hack", which looks like this.
body
{
  margin: -10px 0px 0px -10px;
/*/*/
  margin: 0;
/* */
}
 

]]>
How it works is that that NN4 gets confused by the first comment line. It doesn't think the first comment line ends. NN4 treats everything from the first comment until the next */ as a comment. All other browsers see this as code between two comments. So the margin is set up for NN4, then reset to 0 for all other browsers.

If you don't want to mess around trying to get NN4 to work, just enclose most of your styles between the goofy-looking NN4 comments. If your markup is clean, NN4 users will get a site that still works, but looks unstyled. Don't worry, in most cases they will never notice. After all, they are probably using an antique computer.

Where can I learn HTML online?

Maricopa Community College has an online course to teach HTML.

"WRITING HTML WAS CREATED way back in 1994 to help teachers create learning resources that access information on the Internet. Here, you will be writing a lesson called Volcano Web. However, this tutorial may be used by anyone who wants to create web pages. You can get a sense of the results by looking at our illustrious alumni and kudos or what people say about the tutorial.

By the time you have reached the end of this tutorial you will be able to construct a series of linked web pages for any subject that includes formatted text, pictures, and hypertext links to other web pages on the Internet. If you follow the steps for the Basic Level (lessons 1-14) you will develop a page about volcanoes and if you go on to the Advanced Level (lessons 15-29), you will create an enhanced volcano web site."

Start learning HTML here.

Where can I learn JavaScript online?

Here are some resources for learning JavaScript.

  1. Webmonkey JavaScript online
  2. JavaScript Guide from Netscape
  3. JavaScriptkit.com

3.2 Tools and Utilities

Is there a tool to validate my HTML or XHTML?

Your web pages will have a chance of rendering properly on everyone's browser if you validate your HTML. Internet Explorer (the majority of your traffic) accepts invalid or HTML and still shows your page just fine. Netscape, Mozilla, Firefox/Firebird, Opera, and Safari really require valid HTML for proper operation. Your page will display incorrectly, and it may be unreadable.

»validator.w3.org/ is the standard HTML validator. You can give it HTML or XHTML source or have it read your pages directly from your web site. It's an invaluable tool.

You can link to it from your page like this:
When you click on the Valid HTML link the validator will run on the referer, in this case your page.

If you see lots of errors on your page, try fixing them one at a time, starting with the first one reported. Most of the time a syntax error one place will look like two (or more) errors.

You must have a DOCTYPE as the first non blank line on each page in order to have valid HTML/XHTML. If you are just starting out, and you aren't sure what DOCTYPE to use, try using HTML 4.01 Transitional, the DOCTYPE sure to be standards compliant, yet allowing for the widest interpretation of the rules.

Once your pages are valid HTML/XHTML, they have a great chance of being seen by everyone visiting your site.

Is there a tool to validate my CSS?

A CSS Validator examines your Cascading Style Sheet and checks for syntax errors. It does not tell you when you have done something that doesn't make senst to the browser. The current specification for CSS is CSS 2.0.

If you are troubleshooting a problem with the CSS code, it's always a good first troubleshooting step to revalidate the style sheet.

The W3C maintains a CSS Validation Service at »jigsaw.w3.org/css-validator/

You can place a link to this service on your site. This allows you to validate your CSS with one click! Just use »jigsaw.w3.org/css-valida ··· alidator and add ?uri=your-css-source. Like this: CSS 2.0.

Using a CSS Validation Service is only half the story. You should also validate your HTML and XHTML by using a Markup Validation Service. Use both to ensure your site is coded properly and will be presented well to all user agents.

What free HTML or WYSIWYG editors are available?

There are a number of free editors that people use. In the end, it boils down to personal preference as to which is "best".

Please check the licensing for each piece of software. While some of what is listed is wide-open, some is free for personal use only.

  • Notepad: basic text editing
  • Notepad ++: A souped-up version of Notepad, with code coloring, collapsing, and more.
  • NVU: a free WYSIWYG editor, in the genre of Dreamweaver. Cross platform (Win, Lin, Mac), fairly robust, standards-aware.
  • HTML-KIT:"HTML-Kit is a full-featured editor designed to help HTML, XHTML and XML authors to edit, format, lookup help, validate, preview and publish web pages.">
  • XStandard: "XStandard is the leading standards-compliant plug-in WYSIWYG editor for Windows desktop applications and browser-based content management systems (IE/Mozilla/Firefox/Netscape)"

Additional information about HTML Tools is available on W3C's HTML Tools page. Also see this post listing additional free HTML editors.


4 Programming

What are some programming languages?

Depends on what you want to do. For the web the most common are HTML, Javascript, Java, ASP, PHP, and Perl. For Microsoft Windows one of the most common for beginners is Visual Basic. However, a multi-platform language like C and C++ are what most things are made with. Delphi is not used much, but has a lot of features.

What are some sites with source code examples and/or working projects?

Sourceforge has many projects that are more linux based. Planetsourcecode has examples for a few programming languages. freevbcode.com has many examples for Visual Basic and is a very good site for beginners. Hotscripts.com has a large collection of PHP, CGI, Perl, Javascript, and ASP code, ready to use as is or to get ideas for your own projects.

What is Microsoft .Net?

.Net is the next generation of services & development platform from Microsoft.

.Net Basics from Microsoft
TechNet Editor's Note -- So what is this .Net thing?
From W3 Schools

Once I become a skilled programmer how can I show off my skills?

You can make a website containing your programs. Rentacoder can help people learn about you, if you are helpful.

Sourceforge can help you get a big group of coders working on a project (a main coder, webmaster, assistant coders, support, debuggers).

4.1 How To

Can somebody help me with my Regular Expression?

Sadly, "Regular Expressions" are not nearly regular enough to be standardized: there is a very wide variety of implementations, many of which are not compatible with each other. If you wish to ask about regular expressions - and this is the right forum for it! - please be sure to post the expression and the tool you're using it with. Be specific, as many of the areas where people ask questions are the ones that are version dependent. If Perl: which version? If Java: which package?

Is there a GUI program that can help debug and explain regular expressions?

Yes there is. Check out the excellent Regex Coach package:

»www.weitz.de/regex-coach/

It was written by Dr. Edmund Weitz, runs on Windows and Linux/x86, and is very helpful for the novice to the advanced regular expression programmer. It allows you to type in regular expressions, sample text, replacement strings, and have the regex engine step through them. It can also display the parse tree.

This is a must-have utility for anyone who programs frequently with regular expressions.

How do vendor implementations of SQL differ?

This website is a great reference to compare language differences between MySQL, Postgres, MS SQL, DB2 and Oracle:

»troels.arvin.dk/db/rdbms/

4.2 Tools and Utilities

Is there a web site where I can find free IDEs and Coding Utilities?

Yes there are many here are just some that are out there.

Freesoft

Freedomloadscenter

5 Links

Where do I find free web templates?

Very basic CSS templates with no graphics:

»www.intensivstation.ch/e ··· mplates/

More extensive collection:

»www.oswd.org/