Tuesday, April 12, 2016

Affinity Google AMP HTML


Affinity Google AMP Guide 1
AMP HTML is HTML with some restrictions for reliable performance and some extensions for building rich content beyond basic HTML.
Though most tags in an AMP HTML page are regular HTML tags, some HTML tags are replaced with AMP-specific tags.
Affinity Google AMP Guide 2
The AMP JS library ensures the fast rendering of AMP HTML pages. The Google AMP Cache (optionally) delivers the AMP HTML pages.
AMP HTML is basically HTML extended with custom AMP properties.
Among the biggest optimizations is the fact that it makes everything that comes from external resources asynchronous, so nothing in the page can block anything from rendering.

References:
ampproject.org
ampproject.org get started...


Friday, November 9, 2012

Dell - Project Sputnik

 
 
 
 
 Few days back we reported that Dell has announced Project Sputnik, a six month research effort to explore the possibility of creating an open source Ubuntu laptop targeted directly at developers.

Dell has now announced that the experiment was successful and they were surprised by the amount of interest it has generated.
“Since we announced project Sputnik a little over two months ago, we have continued to be amazed by the amount and quality of interest and input we have received,” said Barton George, project Sputnik lead and director Dell’s web vertical marketing.

As the project has matured, Dell is now taking Project Sputnik from pilot to product this fall. It plans to deliver an official developer laptop based on the Dell XPS 13 with Ubuntu 12.04LTS preloaded, available in select geographies. 

Made possible by an internal innovation fund, the system will offer developers a complete client-to-cloud solution. The included software will allow developers to create “microclouds” on their laptops, simulating a proper, at-scale environment, and then deploy that environment seamlessly to the cloud. 

The solution is based on the current high-end configuration of the Dell XPS13 laptop: 13.3 inch screen with edge to edge glass (1366x768 resolution), i7 2GHz Intel Core2 Duo processor, 4GB of RAM, 256 GB SSD, 0.88 x 12.56 x 9.3 dimensions and 2.99 lbs weight. Check out XPS13 product page here.

How to Edit PDF Files without Adobe Acrobat

The PDF file format was originally created by Adobe in the early ’90s and there are now over 700+ million PDF documents on the Internet according to Google (search for filetype:pdf).

There are several reasons why the PDF file format is so popular for exchanging all sorts of documents including presentations, CAD Drawings, invoices and even legal forms.
  • PDF files are generally more compact (smaller in size) than the source document and they preserve the original formatting.
  • Unlike Word and other popular document formats, the content of a PDF file cannot be modified easily. You can also prevent other users from printing or copying text from PDF documents.
  • You can open a PDF file on any computer or mobile device with free software like Adobe Acrobat Reader. Google Chrome can read PDFs without requiring plugins and it can create PDFs.

 

Edit PDF Files using Free Alternatives to Adobe Acrobat

While PDF Files are “read only” by default, there are ways by which you can edit certain elements* of a PDF document for free without requiring the source files or any of the commercial PDF editing tools like Adobe Acrobat.

We will primarily focus on tools that let you alter the actual contents of a PDF file


An Online PDF Editor for Basic Tasks

 

Sometimes you need to make minor changes to a PDF file. For instance, you may want to hide your personal phone number from a PDF file before uploading it online or may want to annotate a page with notes and freehand drawings.
You can perform such edits in a PDF easily with PDFEscape.com, an online PDF editor that is free and also lets you edit password-protected PDF documents in the browser.
With PDF Escape, you can hide* parts of a PDF file using the whiteout tool or add annotations with the help of custom shapes, arrows, text boxes and sticky notes. You can add hyperlinks to other PDF pages / web documents.
[*] Hiding is different from redaction because here we aren’t changing the associated metadata of a PDF file but just hiding certain visible parts of a PDF file by pasting an opaque rectangle over that region so that the stuff beneath the rectangle stays invisible.

 

Change Metadata of PDF Files

 

If you would like to edit the meta-data associated* with a PDF document, check out Becy PDFMetaEdit. This is a free utility that can help you edit properties of a PDF document including the title, author name, creation data, keywords, etc.
The tool can also be used for removing PDF passwords as well as for encrypting PDF documents such that only users who know the password can read the contents of your PDF files. And since this PDF metadata plus bookmarks editor can be executed from the command line, you can use it to update information in multiple PDF files in a batch.
[*] If you planning to post your PDF files on the web, you should consider adding proper metadata to all the files as that will help improve the organic rankings of your PDF files in Google search results.

 

Edit the Text of a PDF File

 

If you want to edit the text in a PDF file but don’t have access to the source documents, your best bet is that you convert the PDF file into an editable Word document or an Excel spreadsheet depending on the contents of the PDF.
Then edit these converted PDFs in Microsoft Office (or Google Docs) and export the modified files back into PDF format using any PDF writer.
If your PDF document is mostly text, you may use the desktop version of Stanza to convert that PDF into a Word document. If the document includes images, charts, tables and other complex formatting, try the online PDF to Word converter from BCL Research or the one from NitroPDF – the former offers instant conversion while the latter service can take up to a day though its yields more accurate results.

 

Advanced PDF Editing (Images, text, etc.)

 

Now that you know the basic PDF editing tools, let’s look at another set of PDF editors that are also free but can help you do some more advanced editing like replacing images on a PDF file, adding signatures, removing blocks of text without breaking the flow of the document, etc.
First there’s PDF XChange, a free PDF viewer and editor that you also may use for typing text directly on any PDF page. PDF XChange also supports image stamps so you may use the tool for signing PDF files or for inserting images anywhere on a PDF page.
Then you have Inkscape, a free vector drawing tool (like Adobe Illustrator) that can natively import and export PDF content.

 

Video: How to Edit PDF Files with Inkscape

 


With Inkscape, you can select any object on a PDF page (including text, graphics, tables, etc.) and move them to a different location or even remove them permanently from the PDF file. You can also annotate PDF files with Inkscape or draw freehand on a page using the built-in pencil tool.

The next tool in the category of advanced PDF editors is OpenOffice Draw with the PDFImport extension. OpenOffice Draw supports inline editing so you can easily fix typos in a PDF document or make formatting related changes like replacing color, increasing or decreasing the text size, replacing the default font-family, etc.

Like Inkscape, the OpenOffice toolbox also includes support for annotations, shapes, images, tables, charts, etc. but here you have more choices and the software also looks less complex.




The OpenOffice suite is a little bulky (they don’t provide a standalone installer for Draw) but if you have the bandwidth, OpenOffice is the best tool for manipulating PDF documents when you don’t have the budget for Adobe Acrobat.

 


How to Verify an Email Address?

When you send an email to someone, the message goes to an SMTP server which then looks for the MX (Mail Exchange) records of the email recipient’s domain.

For instance, when you send an email to hello@gmail.com, the mail server will try to find the MX records for the gmail.com domain. If the records exist, the next step would be to determine whether that email username (hello in our example) is present or not.

Using a similar logic, we can verify an email address from the computer without actually sending a test message. Here’s how:

Let say that we want to verify if the address billgates@gmail.com exists or not?

Step 1. Enable telnet in Windows.   Or if you already have the PuTTY utility, skip this step.

Step 2. Open the command prompt and type the following command:
nslookup  – type=mx gmail.com

This command will extract and list the MX records of a domain as shown below. Replace gmail.com with the domain of the email address that you are trying to verify.

gmail.com MX preference=30, exchanger = alt3.gmail-smtp-in.l.google.com
gmail.com MX preference=20, exchanger = alt2.gmail-smtp-in.l.google.com
gmail.com MX preference=5,  exchanger = gmail-smtp-in.l.google.com
gmail.com MX preference=10, exchanger = alt1.gmail-smtp-in.l.google.com
gmail.com MX preference=40, exchanger = alt4.gmail-smtp-in.l.google.com

Step 3. As you may have noticed, it is not uncommon to have multiple MX records for a domain. Pick any one of the servers mentioned in the MX records, may be the one with the lowest preference level number (in our example, gmail-smtp-in.l.google.com), and “pretend” to send a test message to that server from you computer.

For that, go to command prompt window and type the following commands in the listed sequence:

3a: Connect to the mail server:
telnet gmail-smtp-in.l.google.com 25

3b: Say hello to the other server
HELO

3c: Identify yourself with some fictitious email address
mail from:<labnol@labnol.org>

3d: Type the recipient’s email address that you are trying to verify:
rcpt to:<billgates@gmail.com>

The server response for ‘rcpt to’ command will give you an idea whether an email address is valid or not. You’ll get an “OK” if the address exists else a 550 error like:
  • abc@gmail.com – The email account that you tried to reach does not exist.
  • support@gmail.com – The email account that you tried to reach is disabled.

That’s it! If the address is valid, you may perform reverse email search to find the person behind the address. And if you get stuck somewhere, this step-by-step video should help:

Find the Person Behind an Email Address


You get an email from a person with whom you have never interacted before and therefore, before you reply to that message, you would like to know something more about him or her. How do you do this without directly asking the other person?
Web search engines are obviously the most popular place for performing reverse email lookups but if the person you’re trying to research doesn’t have a website or has never interacted with his email address on public forums before, Google will probably be of little help.

No worries, here are few tips and online services that may still  help you uncover the identity of that unknown email sender.

#1. Find the sender’s location 

Location of Email Sender

Open the header of the email message and look for lines that say “Received: from” followed by an IP address in square brackets. If there are multiple entries, use the IP address mentioned in the last entry.

Now paste the IP address in this trace route tool and you should get a fairly good idea about the location of the email sender


#2. Reverse email search with Facebook
Facebook email search

Facebook has 450 million users worldwide and there’s a high probability that the sender may also have a profile on Facebook.
Unlike LinkedIn and most other social networks, Facebook lets you search users by email address so that should make your job simpler. Just paste the email address of the sender into the Facebook search box and you’ll immediately know if a matching profile exists in the network.

If you are able to locate that person on Facebook, download his profile picture and then upload it to Google Images (click the camera icon in the search box). This acts as a reverse image search engine so you can locate his other social profiles where he may have used the same picture.

#3. Check all the other Social Networks
You can use a service like Knowem to quickly determine if a profile with a particular username exists in any of the social networks.

If the email address of the send is something like green_peas@hotmail.com, there’s a probably that he or she may have created accounts of some other social network using the same alias “green_peas” – put that in knowem.com to confirm.

#4. People Search

Reverse Email Search

Finally, if nothing works, you should try a people search service like Pipl and Spokeo – both services let you perform reverse email lookups but Spokeo has a more comprehensive database than Pipl.

Other than regular web documents, Spoke also scans social networks and even the whois information of domain names to find any bit of information associated with an email address. However, some of the results returned by Spokeo are only available to subscribers.

Saturday, May 19, 2012

ubuntu upgrade to 12.04 precise pangolin, 10x faster

Before leaping to the Ubuntu site to download the freshest bytes and bits, you may want to wait for a bit. Canonical tells me that the site is currently getting overwhelmed and some people are not being able to get into it. For me, the site and download links worked, but at speeds of about 100Kbps, they certainly aren’t fast.


You should use whichever region is closest to you, you can either manually add these to
/etc/apt/sources.list/
file or paste them into the custom URL field of the software sources application.

East Coast US:
deb http://us-east-1.ec2.archive.ubuntu.com.s3.amazonaws.com/ubuntu/ precise main restricted universe multiverse

West Coast US (California):
deb http://us-west-1.ec2.archive.ubuntu.com.s3.amazonaws.com/ubuntu/ precise main restricted universe multiverse

West Coast US (Oregon)
deb http://us-west-1.ec2.archive.ubuntu.com.s3.amazonaws.com/ubuntu/ precise main restricted universe multiverse

South America (São Paulo, Brazil)
deb http://sa-east-1.ec2.archive.ubuntu.com.s3.amazonaws.com/ubuntu/ precise main restricted universe multiverse

Western Europe (Dublin, Ireland)
deb http://eu-west-1.ec2.archive.ubuntu.com.s3.amazonaws.com/ubuntu/ precise main restricted universe multiverse

SouthEast Asia (Singapore)
deb http://ap-southeast-1.ec2.archive.ubuntu.com.s3.amazonaws.com/ubuntu/ precise main restricted universe multiverse

NorthEast Asia (Tokyo)
deb http://ap-northeast-1.ec2.archive.ubuntu.com.s3.amazonaws.com/ubuntu/ precise main restricted universe multiverse

 
 I've always gone with the 'select best server' GUI tool: from , go to Edit -> Software Sources in the menu. (You can also do this from the Preferences for Synaptic or the Update Manager.)
Under the Ubuntu Software tab there's a drop-down next to "Download from:" If you select "Other..." you'll get a button that says "Select Best Server"; clicking on it gets Ubuntu to run some tests to see what mirror will give the best download speed.
I can't comment on whether this is better or worse than the method you found for yourself. Perhaps someone with some expertise on the issue can comment!
Here are some screenshots for the graphical method:

First, open Ubuntu Software Center, click on Edit in the global menu, and go to Software Sources:
  
Click on the drop-down menu next to 'Download From' and select 'Other...'

Click on 'Select Best Server'

The best server is highlighted.  Click 'Choose Server' and you're done!

Sunday, February 5, 2012

Making your Video Content Indexable

Internet search engines provide end-users a quick and easy to use way to get access to information available on the Internet. As more and more Internet content is multimedia, you need to ensure that your content is properly indexed by the search engines so that users can discover it. This article will provide an overview of how to enable your video content to be SEO enabled and indexed by the various search engines (Google, Yahoo, Microsoft).
There is a standard document, called a sitemap, that search engine indexers look for when examining your site. This document concisely tells the search engines what content is exposed on your site, the metadata for that content, and where that content is located on your site. A sitemap is an XML file that follows a standard specification.
There are two different flavors of sitemaps that you can (and should) create:
  • Sitemap – A sitemap that will index your content in the standard text based search engines such as www.google.com or search.yahoo.com
  • Video Sitemap – A sitemap that will index your content in media-centric search engines such as video.google.com
Note that both of these sitemaps index the metadata about your video content and provide links to end-users. The difference is where the metadata that is indexed is obtained from and how the content is surfaced in search results.
A proper SEO strategy for your video content will include creating both a standard sitemaps as well as a video sitemap. From a priority perspective, you want to create a standard Sitemap first and then a Video Sitemap.

Standard Sitemaps

Sitemaps follow the sitemap specification that is defined here: www.sitemaps.org. The purpose of the sitemap file is to provide a list of URLs on your site to the search engines. The only other information associated with a URL is when the page was last modified and how frequently the page changes. Note, there is no metadata about your content in this index. Because the sitemap is page-centric, we need to create a model where each video in your library will have a unique page, or URL, associated with it. This can be accomplished by having a single page whose behavior and content can be dynamically changed by passing in different query parameters to the page. For example, if you have a URL like http://www.example.com/video.html?videoId=123, you would have the video.html page look for the videoId query parameter (videoId=123) and modify the contents of the page returned to the browser to contain information about the video with id 123. This would be done on the server-side of your application where the page would look for the ID and then use the Video Cloud Media APIs to fetch metadata about the video and write it into the page.

For the purposes of this article, we assume that there is a single landing page on your site which can be used to play back all video content for your site. Different query parameters will be passed to the page to tell the page what video to play back and what video to surface metadata for. For example, let's say you have a page that displays the contents of an entire playlist and queues up a specific video in a player. You tell the page what playlist to display metadata for via a bclid query parameter and what video to surface in a player via the bctid parameter. Thus, what we want to do is create a URL for every unique playlist and video id combination.
Here is an example of sitemap that will be created:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://www.example.com/video?bclid=345&bctid=123</loc>
      <lastmod>2008-01-01</lastmod>
      <changefreq>weekly</changefreq>
   </url>
   <url>
      <loc>http://www.example.com/video?bclid=12&bctid=544</loc>
      <lastmod>2008-03-01</lastmod>
      <changefreq>weekly</changefreq>
   </url>
</urlset>

Google Video Sitemaps

A video sitemap is similar in concept to the standard sitemap file; there will be an entry in this sitemap file per video in your account. In fact, a video sitemap uses the sitemap schema as its base and adds additional tags specific to video metadata.
We won't go through the meaning of every element in the video sitemap file, but we do want to touch upon two elements: <video:content_loc> and <video:player_loc>. According to the video sitemap specification:
You must provide one of either the <video:content_loc> or <video:player_loc>
The video:content_loc element would be used to provide a reference to your video file (FLV or MP4) directly. We don't want to do this for several reasons:
  • If you use FMS for streaming, the video sitemap specification does not allow you to reference these files directly; you can only use HTTP.
  • If Google surfaces your content directly in the results page, you want to make sure it is played back through your player to keep all of your analytics, advertising, and branding with your content.
For these reasons, we want to use the video:player_loc element rather than video:content_loc. This will point to a Single Video Player from the Video Cloud system via the Player URL publishing code. We can pass different video IDs to this player to play, using the bctid query parameter. We don't restrict this player to a particular domain and thus will allow it to be directly embedded in the search results.

Here is an example of the video sitemap that will be created:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url> 
  <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
    <video:video>     
      <video:content_loc>http://www.site.com/video123.flv</video:content_loc>
      <video:player_loc allow_embed="yes">http://www.site.com/videoplayer.swf?video=123</video:player_loc>
      <video:thumbnail_loc>http://www.example.com/thumbs/123.jpg</video:thumbnail_loc>
      <video:title>Grilling steaks for summer</video:title>  
      <video:description>Get perfectly done steaks every time</video:description>
      <video:publication_date>2007-11-05T19:20:30+08:00.</video:publication_date>
      <video:tag>steak</video:tag>
      <video:tag>meat</video:tag>
      <video:tag>summer</video:tag>
      <video:family_friendly>yes</video:family_friendly>
      <video:duration>600</video:duration>
    </video:video>
</url>
</urlset>
 
 
Conclusion
 
A complete SEO strategy for your video content should include creating both a standard sitemap as well as a video sitemap. This will ensure that your content is indexed across the widest swath of search engines. Additionally, your content will be surfaced in the most aesthetically pleasing manner for the point of discovery. This article has outlined an approach for providing a unique URL per video and samples for generating the sitemap files that the engines will index.

Mobile SEO Vs Desktop SEO

As  the rising importance of local search optimisation, hundreds of millions of people now own a smartphone and this number is expected to rise to one billion by 2013. With this in mind, there still seems to be a relatively untapped market for mobile search optimisation within the industry of internet marketing.

One of the reasons that this particular market is not being fully exploited is that it is not still fully understood by many search engine optimisation professionals. In fact, a key mistake that SEO’s often make is that search engine results appear the same on a computer and on a mobile device. This is not the case, and with the users of smartphones becoming increasingly savvy to their capabilities, perhaps it’s time that more businesses and SEO agencies tap into this potentially huge market.

A crucial example of how mobile search differs to desktop search is that it is inherently local and therefore Local listings feature more prominently. This could be a great area for an emerging local business to exploit. One way a company could do this is by ensuring that they are optimised for Google Places listings, and there is a possibility to combine this with a domain that focuses on geo-specific keywords. This may seem to argue against the Desktop SEO logic that it is better to consolidate all links in one canonical domain, however, creating an alternate domain focused intensely on local search could provide more traffic, both physically and digitally. Determining the best approach to this dilemma requires a keen marketing mind to determine which option has the potential to bring your business the most success.


Another opportunity that mobile search creates is to search without using a ‘search term’. The best example of this is the Google Goggles app that allows the user to take a picture of something and that will become the subject of the search. The app works for books, films, landmarks, businesses and logos. A company optimising for mobile search would ensure that there logo is clearly displayed and optimised, and attached to a mobile site allowing users to go straight to it after finding the company logo. In a broader context, not necessarily logo’s, this could have a huge impact. Pretty much everyone that has a smartphone has a built in camera, so if they take a picture of a product that relates to your company, it makes business and practical sense to ensure you have a mobile site optimised for those images.

Some other differences between mobile and desktop search include the fact that the vertical listings will often differ in mobile search, with images featuring higher in the SERPs. Smartphone results also produce different filters at the top of the SERPs; fewer filters can mean less distraction for the user and potentially a higher click through rate to your site.

There are many more differences between mobile search and desktop search, but I selected these few to illustrate the point that there is incredible potential within this market. With relatively few companies targeting this specific sector of digital marketing, there is a real opportunity for business owners willing to grasp it.

SEO for Video Content

Videos are some of the hottest content on the net. Everyone receives those periodic emails from a friend or business associate advising, ‘Check this out!’ Videos are the main form for viral content, add interest when embedded in a site, and draw traffic like a magnet.

Videos are easy to make, too. Anyone with any kind of camera can create one, and anyone with a computer can upload one. Popular videos don’t have to be high-quality, have good production values or even be well-edited to succeed. Skilled children can make them.

Why, then, isn’t everyone rushing to include video content on their site? There’s a reason SEO experts don’t push video content. Videos, like images, present problems when it comes to search engine crawlers. The search engines can’t see video content. This means that all the effort you put into getting a video onto your site is wasted, from a search engine optimisation point of view.

This doesn’t mean that you should avoid video content. Videos have proven attraction for internet users, and as time goes by they are being used increasingly as part of internet marketing strategies. The value of video content as an attention magnet can’t be ignored. The answer is to work around your video content to ensure that everything is done that can be done to explain its content to a search engine.

Optimise your videos

The search engines rely on extraneous information to determine what your video is all about. Much like they do when ranking your site, the search engines examine the on-page factors around the video, the links to the video and links from the page the video is on. On the whole, search engines are unable to view the content of the video, but it is thought they can detect some on-screen text. This makes it worth optimising any subtitles and titles.

Many people forget that the video file can be optimised. Use your keywords in the title and, if the platform your video is on allows it, map out an SEO-friendly description and tags. If you host the video on a site like YouTube, don’t forget to re-enter all of the meta data.
Format will also affect your video’s search engine friendliness. As time goes by, Google is developing techniques to work with Flash content. This may mean Flash videos will gain some SEO standing in the future.

How to maximise SEO techniques around videos

The content you put around your video is vital. Writing a brief description of the video will help users and search engines identify the content. Ensure you use the word ‘video’ as part of your keywords for that page. The very fact that you have a video can prove part of the attraction. Finally, include a link to a transcript of the video. This will ensure the content is used to maximum SEO effect.

Saturday, January 21, 2012

InnoDB plugin row format performance

InnoDB plugin row format performance

Here is a quick comparison of the new InnoDB plugin performance between different compression, row formats that is introduced recently.

The table is a pretty simple one:

CREATE TABLE `sbtest` (
`id` int(10) unsigned NOT NULL,
`k` int(10) unsigned NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `k` (`k`)
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

The table is populated with 10M rows with average row length being 224 bytes. The tests are performed for Compact, Dynamic and Compressed (8K and 4K) row formats using MySQL-5.1.24 with InnoDB plugin-1.0.0-5.1 on Dell PE2950 1x Xeon quad core with 16G RAM, RAID-10 with RHEL-4 64-bit.

Here are the four test scenarios:

1. No compression, ROW_FORMAT=Compact
2. ROW_FORMAT=Compressed with KEY_BLOCK_SIZE=8
3. ROW_FORMAT=Compressed with KEY_BLOCK_SIZE=4
4. ROW_FORMAT=Dynamic

All the above tests are repeated with innodb_buffer_pool_size=6G and 512M to make sure one fits everything in memory and another one overflows. The rest of the InnoDB settings are all default except that innodb_thread_concurrency=32.

Here is the summary of the test results:

Table Load:

Load time from a dump of SQL script having 10M rows (not batched)
Compact Compressed (8K) Compressed (4K) Dynamic
28m 18s 29m 46s 36m 43s 27m 55s

File Sizes:

Here is the size of the .ibd file after each data load
Compact Compressed (8K) Compressed (4K) Dynamic
2.3G 1.2G 592M 2.3G

Data and Index Size from Table Status:

Here is the Data and Index size in bytes from SHOW TABLE STATUS and you can see the original data size here rather than the compressed size
Compact Compressed (8K) Compressed (4K) Dynamic
Data 2247098368 2247098368 2249195520 2247098368
Index 137019392 137035776 160301056 137019392

Compression Stats:

Here is the compression stats after the table is populated from information_schema.InnoDB_cmp; and you notice that 4K takes more operations and time for both compression and un-compression
Page_size Compress_ops Compress_ops_ok Compress_time Uncompress_ops Uncompress_time
8K 8192 446198 445598 73 300 0
4K 4096 1091421 1012917 463 38801 13

Performance:

Here is the performance of various row formats with threads ranging from 1-512 for both 512M and 6G buffer pool size for both concurrent reads and writes.

compress512m

compress6g

Observations:

Few key observations from the performance tests that I performed without looking to any of the sources, as I could be wrong, someone can correct me here. Its hard to draw from these input scenarios, but helps to estimate what is what.

* The load time is almost same except that the 4K compression seems to take longer than the rest; and compression in general is hitting the INSERT/Load performance a little bit.
* Compact or Dynamic, there is no compression; so the data and index file sizes will be almost same
* The SHOW TABLE STATUS for compressed table will have its original Data_Length and Index_Length statistics rather than the compressed statistics (may be a bug or InnoDB needs to extend SHOW TABLE STATUS to show any compressed sizes or other means, right now only option is to view your files manually)
* 8K compression reduced the .ibd file by nearly 50% (1.2G out of 2.3G) and 4K compression reduced the size by 1/4th (592M out of 2.3G); and it could vary based on table types and data.
* 8K compression takes less ops and time for both compression and de-compression when compared to 4K (obvious)
* When there is enough Innodb buffer pool size to act data in memory, the compression is a bit overhead, but you will be saving space
* When there is a overflow from buffer pool (IO bound), compression seems to really help
* 4K compression in general seems to be slower when compared with 8K or any other row_format.

How To Obtain hierarchical data / Parent - Child relationship

IPv4 vs IPv6

I had compiled differences between IPv6 and IPv4 long back. 

Hope someone might find this useful.


IPv4
IPv6
Addresses are 32 bits (4 bytes) in length. Addresses are 128 bits (16 bytes) in length
Address (A) resource records in DNS to map host names to IPv4 addresses. Address (AAAA) resource records in DNS to map host names to IPv6 addresses.
Pointer (PTR) resource records in the IN-ADDR.ARPA DNS domain to map IPv4 addresses to host names. Pointer (PTR) resource records in the IP6.ARPA DNS domain to map IPv6 addresses to host names.
IPSec is optional and should be supported externally IPSec support is not optional
Header does not identify packet flow for QoS handling by routers Header contains Flow Label field, which Identifies packet flow for QoS handling by router.
Both routers and the sending host fragment packets. Routers do not support packet fragmentation. Sending host fragments packets
Header includes a checksum. Header does not include a checksum.
Header includes options. Optional data is supported as extension headers.
ARP uses broadcast ARP request to resolve IP to MAC/Hardware address. Multicast Neighbor Solicitation messages resolve IP addresses to MAC addresses.
Internet Group Management Protocol (IGMP) manages membership in local subnet groups. Multicast Listener Discovery (MLD) messages manage membership in local subnet groups.
Broadcast addresses are used to send traffic to all nodes on a subnet. IPv6 uses a link-local scope all-nodes multicast address.
Configured either manually or through DHCP. Does not require manual configuration or DHCP.
Must support a 576-byte packet size (possibly fragmented). Must support a 1280-byte packet size (without fragmentation).

Network Sorcery is a great place to find RFC(s). 

Refer to http://www.networksorcery.com/enp/protocol/ipv6.htm and http://www.networksorcery.com/enp/protocol/ip.htm links for related RFC(s) of IPv6 and IPv4 respectively. 

Also there is good reference for Understanding IPv6 @ http://technet.microsoft.com/en-us/library/cc786127.aspx

Thursday, October 25, 2007

ET:QuakeWars - Linux Client is now available


In case you missed the official announcement, ETQW Linux Client is now available to download. You do need the full retail DVD to complete the installation though. The client itself is really small at 18MB, so need to work out if they actually preloaded some OS compatilibty stuff on the DVD pre-release.

Another issue, it only runs in 32bit mode, so if you have a x86_64 install - you will need the compat libs along with their deps. My main gaming machine is i686, but my primary laptop is x86_64 ( the Acer Ferrari 4005 ) and I will at some point install the game there as well. So a list of rpms required on centos-5 to make it work will get posted here soon'ish :)

The Oracle Unbreakable Linux incompatibility

Submitted by dag

It was exciting when a year ago at LinuxWorld Expo London we heard a rumour that Oracle was going to support Red Hat Enterprise Linux. It was surprising to find out that this rumour was not entirely as well-intended and supportive as it sounded.


Instead of helping the community, Oracle was directly attacking Red Hat with its own product as if it was showing the world that Open Source has no value and that even Oracle could run away with Red Hat's crown jewels and customers. A hostile take-over attempt of Red Hat by Oracle.


What the world did not understand (and Oracle tried to hide) is that the business value is not in the source-code, but in the development and the community. Red Hat is involved in most of the Open Source projects and in fact is able to support their product for 7 years because they have the experts and the insight of how projects work. Oracle has not.


Another well-hidden fact of Oracle's promotional buzz is that you cannot both be compatible with RHEL, and provide bugfixes and improvements. Either you make changes, or you stay compatible with the original. So whatever Oracle stated was self-contradictory. All the articles at the time failed to mention that, riding on Oracle's wave.


Now that Oracle is porting YaST to Red Hat (who in their right mind would want to have YaST on RHEL is beyond my comprehension) it becomes all that obvious that whatever procedure you have for RHEL or CentOS it will not work with YaST. Once you use YaST, you cannot change (a lot of) configuration files by hand.


I always tell people at tradeshows that "CentOS is completely compatible with Red Hat Enterprise Linux, including the bugs". And even though that seems a bit harsh, it is very true and it is exactly what we want to tell people. We cannot replace Red Hat's support because we need to be compatible and therefor rely on Red Hat's support. We cannot fix any bugs ourselves. That means that if you really need support (and you cannot support yourself), you need to get it from Red Hat.


The CentOS users rely on us to provide a compatible product and Oracle is fooling their customers if they tell them otherwise...


Wednesday, October 24, 2007

A Visual Explanation of SQL Joins


I thought Ligaya Turmelle's post on SQL joins was a great primer for novice developers. Since SQL joins appear to be set-based, the use of Venn diagrams to explain them seems, at first blush, to be a natural fit. However, like the commenters to her post, I found that the Venn diagrams didn't quite match the SQL join syntax reality in my testing.
I love the concept, though, so let's see if we can make it work. Assume we have the following two tables. Table A is on the left, and Table B is on the right. We'll populate them with four records each.
id name       id  name
-- ----       --  ----
1  Pirate     1   Rutabaga
2  Monkey     2   Pirate
3  Ninja      3   Darth Vader
4  Spaghetti  4   Ninja
Let's join these tables by the name field in a few different ways and see if we can get a conceptual match to those nifty Venn diagrams.
SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name

id  name       id   name
--  ----       --   ----
1   Pirate     2    Pirate
3   Ninja      4    Ninja
Inner join produces only the set of records that match in both Table A and Table B.
Venn diagram of SQL inner join
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name

id    name       id    name
--    ----       --    ----
1     Pirate     2     Pirate
2     Monkey     null  null
3     Ninja      4     Ninja
4     Spaghetti  null  null
null  null       1     Rutabaga      
null  null       3     Darth Vader
Full outer join produces the set of all records in Table A and Table B, with matching records from both sides where available. If there is no match, the missing side will contain null.
Venn diagram of SQL cartesian join
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name

id  name       id    name
--  ----       --    ----
1   Pirate     2     Pirate
2   Monkey     null  null
3   Ninja      4     Ninja
4   Spaghetti  null  null 
Left outer join produces a complete set of records from Table A, with the matching records (where available) in Table B. If there is no match, the right side will contain null.
Venn diagram of SQL left join
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null

id  name       id     name
--  ----       --     ----
2   Monkey     null   null
4   Spaghetti  null   null 
To produce the set of records only in Table A, but not in Table B, we perform the same left outer join, then exclude the records we don't want from the right side via a where clause.
join-left-outer.png
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.id IS null
OR TableB.id IS null

id    name       id    name
--    ----       --    ----
2     Monkey     null  null
4     Spaghetti  null  null
null  null       1     Rutabaga
null  null       3     Darth Vader
To produce the set of records unique to Table A and Table B, we perform the same full outer join, then exclude the records we don't want from both sides via a where clause.
join-outer.png
There's also a cartesian product or cross join, which as far as I can tell, can't be expressed as a Venn diagram:
SELECT * FROM TableA
CROSS JOIN TableB
This joins "everything to everything", resulting in 4 x 4 = 16 rows, far more than we had in the original sets. If you do the math, you can see why this is a very dangerous join to run against large tables.

Best Places To Use Ajax

Form driven interaction.
Forms are slow. Very slow. Editing a tag (the old way) on a del.icio.us bookmark? Click on the edit link to load the edit bookmark form page, then edit the field and hit submit to wait for the submission to go through, then return to the previous page and scroll down to find the bookmark to see if the tags look right. Ajax? Click on the edit link to instantly start changing tags, click on the submit button to asynchronously send off changes to the tags and quickly see in place what changed, no reloading the entire page.
  1. Form driven interaction- Subset:Linked Select Menus. Imagine a T-Shirt with 3 options; Size, Color, and Style. When tracking inventory for your product, you know you have Large, Red, Polo shirts in stock, but you’re out of Small, Blue, T-Shirts… It is frustrating to the user to pick this combination and then receive an error on the checkout page stateing that you are out of stock… and then have to go back to the selection process and reconfigure the item… Using AJAX, you can check the stock of the options as the user picks them and only return or show the items which are in stock.
  2. Form driven interaction- Subset: Autosave. Think of someone writing in Word. Which button do they use the most? Save.
    With javascript you can do one better. Not only can you have a save & continue that works just like the del.icio.us forms – you can autosave! Remember to tell the user this, as simply knowing this relaxes quite a lot of people. Properly explained count-down clocks are prefered, for obvious reasons.


  • Deep hierarchical tree navigation. First of all, applications with deep hierarchical tree navigation are generally a nightmare. Simple flat topologies and search/tagging works very well in most circumstances. But if an application really calls for it, use Javascript to manage the topology ui, and Ajax to lessen the burden on the server by lazy loading deep hierarchy data. For example: it’s way too time consuming to read discussion threads by clicking through and loading completely new pages to see a one line response.



  • Rapid user-to-user communication. In a message posting application that creates immediate discussions between people, what really sucks is forcing the user to refresh the page over and over to see a reply. Replies should be instant, users shouldn’t have to obsessively refresh. Even Gmail, which improves on the old hotmail/yahoo mail ‘refresh inbox, refresh inbox’ symptom, doesn’t really push Ajax far enough yet in terms of notifying new mail instantly.



  • Voting, Yes/No boxes, Ratings submissions. It’s really too bad there are no consistent UI cues for Ajax submission, because submitting a vote or a yes/no response is so much less painful when the submission is handled through Ajax. By reducing the time and impact of clicking on things, Ajax applications become a lot more interactive – if it takes a 40 seconds to register a vote, most people would probably pass unless they really care. If it takes 1 second to vote, a much larger percentage of people are likely to vote.



  • Filtering and involved data manipulation. Applying a filter, sorting by date, sorting by date and name, toggling on and off filters, etc. Any highly interactive data manipulation should really be done in Javascript instead of through a series of server requests. Finding and manipulating a lot of data is hard enough without waiting 30 seconds between each change in views, Ajax can really speed this up.



  • Commonly entered text hints/autocompletion. Entering the same text phrases or predictable text phrases is something software/javascript can be good at helping out with. It’s very useful in del.icio.us and GMail, for quickly adding tags/email addresses.



  • Interactive Errors If someone is entering complicated data, it doesn’t make sense to tell them they have failed only after a lengthy submission process. Ajax can speed up this workflow by quickly letting the user know of an error condition before they try to submit. Example: a username chooser, instead of making the user submit the entire form, try a new name and repeat, or keep trying a ‘is this name chosen’ form, the username chooser can simply indicate to the user whether the username is unique or not, while the user is still typing it.



  • Long Running Queries/Remote Calls If a query or a call to a remote webservice is going to take a long time that cannot be avoided, Ajax works well to manage the time a user waits for the call to return. For example, SWiK uses Ajax to fill in results from webservices detailing new projects: a user doesn’t have to wait for Google webservice to return before starting to edit a new project



  • Computationally Expensive Operations Unfortunately, Javascript has a tendency to be quite slow. Complex math or number crunching just isn’t Javascript’s forte. Additionally, heavy Javascript computation can slow the basic user interface to a crawl. An XMLHTTPRequest call can be helpful here, pushing expensive computations to beefier remote servers.



  • Server Savings


  • Sometimes, a process users do over and over on a site requires only a small amount of new data to be sent over the wire, but loading entire new pages can be a strain on the servers in bandwidth and resources. Ajax can be used to load pages more efficiently, as seen in various tests. Of course the ease of making new or multiple requests from the server using Ajax also means that it’s easy to overtax server resources as well.

  • Interactive Panning And Moving Over Data


  • Moving and scanning over large data sets makes it impracticable to pre-load all of the data. Loading the data just ahead an just behind the user gives the appearance of the entire data set being accessible, and helps eliminate loading times. A great example of this is Google Maps’ scrolling tiles system that gives the effect of moving over a map by picking up tiles behind and placing them ahead of the user, filling them with new data requested via Ajax.

    Best Top Ten Open Source,Ajax/DHTML Librearies For Web Developer

    Hi, Frnds...I made a list of the top 10 libraries that I have come across or that I personally use. Libraries can be best for a web developers friend. They are great resources to learn from and can save hours and hours of time. These libraries include JavaScript, Ajax, Colors, PHP, and CSS. These should be in any web developers bookmarks, so go ahead and look through these libraries and bookmark your favorite ones. The list is in no particular order.

    1) Moo.fx - A superlightweight, ultratiny, megasmall javascript effects library, written with prototype.js. It’s easy to use, fast, cross-browser, standards compliant, provides controls to modify Height, Width, and Opacity with builtin checks that won’t let a user break the effect with multiple crazy clicks. It’s also optimized to make you write the lesser code possible.

    2) Rico - An open source JavaScript library for creating rich internet applications. Provides full Ajax support, drag and drop management, and a cinematic effects library.

    3) Swat - Developed by silverorange, Swat is an open source web application toolkit built with PHP.

    4) ColorCombos - Who would’ve thought a color library would end up mixed in with a bunch of JavaScript and PHP libraries? Well they do have a pretty sweet little color library for finding color combinations, all you do is select the color and they show you some nice combos that work with that color.

    5) script.aculo.us - Provides you with easy-to-use, compatible and, ultimately, totally cool JavaScript libraries to make your web sites and web applications fly, Web 2.0 style. I’m sure I’m not alone when I say this library is my favorite.

    6) Mochikit - A kick-ass lightweight JavaScript library that will help you get shit done fast.

    7) Dynamic Drive CSS Library - Here you’ll find original, practical CSS codes and examples such as CSS menus to give your site a visual boast.

    8) PEAR - A framework and distribution system for reusable PHP components. PEAR provides the above mentioned PHP components in the form of so called “Packages”.

    9) DHTML Goodies - A good sized library of DHTML and AJAX scripts.

    10) dojo - Open source JavaScript toolkit that makes professional web development better, easier, and faster.

    Honorable Mentions

    11) Cross Browser | Toys - Huge JavaScript library.

    12) Yahoo UI Library - The Yahoo! User Interface (YUI) Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX. The YUI Library also includes several core CSS resources.

    Big thanks to all of those who have help in anyway to put one of these libraries together.

    I hope you find this list helpful. Keep in mind there’s hundred of libraries available online,

    Income Streams for Bloggers

    Advertising Programs - Perhaps the most obvious changes in the past few months have been with the addition of a variety of viable advertising options for bloggers. No longer are bloggers only presented with the Adsense and/or BlogAds choice - instead they now have a massive array to choose from. Getting the most publicity recently have been Chitika’s eMiniMalls of course but there are just so many other options now that also include:

    Adgenta, CrispAds, Text Link Ads, Intelli Txt, Peak Click, DoubleClickTribal Fusion, Adbrite, Clicksor, Industry Brains, AdHearUs, Kanoodle, AVN, Pheedo, Adknowledge, YesAdvertising, RevenuePilotTextAds, SearchFeed, Target Point, Bidvertiser, Fastclick Value Click and OneMonkey (to name just some of the options - I’m sure I’ve forgotten some) and there is a smorgasbord of options. Of course there is more to come with MSN Adcenter and YPN both in beta testing and with a variety of other advertising system currently in development (so I hear).

    RSS Advertising - The past 12 months have seen some advances in RSS Advertising also. I’m yet to hear of any bloggers making big dollars through it to this point - but as improvements are made to the ad programs exploring this I’m sure we’ll start to see examples of it being profitable.

    Sponsorship - In addition to the array of advertising programs that are available to join there is a growing awareness in the business of the value and opportunity that exists for them to advertise directly on blogs. I’m hearing more and more examples of this and have been fortunately to have a couple of ad campaigns of my own in the past month - one with Adobe a couple of weeks ago and another just completed with Ricoh for a new digicam over at my Digital Camera Blog. These are not isolated cases - as I say I know of many blogs exploring sponsorship with advertisers at present and suspect we’ll see more of it in the year ahead. Sponsorship is also happening on a post by post basis with some bloggers being paid to write on certain topics by companies - either in one off or a regular fashion.

    Affiliate Programs - There are larger affiliate programs like Amazon, Linkshare, Clickbank and Commission Junction but also literally thousands of others from the large to the very small.

    Blog Network Opportunities - with the rise in popularity of Blog Networks - bloggers are also being presented with more places to earn an income from their blogging - by writing for and with others. While it might be difficult to get a writing gig with one of the bigger networks - there are plenty who are always asking for new bloggers to join and who are willing to pay bloggers using a variety of payment models. While there are distinct advantages of blogging for yourself - blogging for an established network who will handle a lot of the set up/promotion/admin/SEO etc has it’s advantages also. More and more bloggers are combining writing for themselves on their own blogs with taking on blog network blogs as additional income streams.

    Business Blog Writing Opportunities - as blogging has risen in it’s profile as a medium more and more businesses are starting blogs. Many of these companies have internal staff take on blogging duties - but an increasing number of them are hiring specialist bloggers to come on and run their blogs. I know of a number of bloggers who in the past month or two have been approached for such paid work. Check out Bloggers for Hire if you’re looking for this type of work.

    Non Blogging Writing Opportunities - Also becoming more common are bloggers being hired to write in non blogging mediums. Manolo’s recent coup of a column in the Washington Post is just one example of this as bloggers are increasingly being approached to write for newspapers, magazines and other non blog websites. Along side this is the rise of bloggers as published book authors - this is to the extent that one blogger I spoke with this week complained to me that they were one of the few bloggers than they knew who didn’t have a book deal!

    Donations - Tip Jars and donation buttons have been a part of blogging for years now but this last year saw a number of bloggers go full time after fundraising drives. Perhaps the most high profile of these was Jason Kottke of kottke.org who through the generosity of his readership was able to quit his job and become a full time blogger.

    Flipping Blogs - Also more common in 2005 was the practice of ‘Blog Flipping’ - or selling of blogs. This has happened both on an individual blog level (I can think of about 20 blogs that sold this year) but also on a network level (the most obvious of these being the 8 figure sale of Weblogs Inc to AOL).

    Merchandising - My recent attempt to sell ProBlogger.net T-shirts wasn’t a raging success, but it is an example of how an increasing number of bloggers are attempting to make a few extra dollars from their blogs by selling branded products through programs like Cafepress (although I have to say they’ve lost one of my own orders and are being quite unresponsive to my requests to follow it up at present). While I didn’t have a lot of success with merchandising - quite a few larger blogs are seeing significant sales - especially blogs with a cult following. I’m not at liberty to discuss details - but I know of one largish blog which will see sales over $20,000 in merchandise for the calendar year of 2005.

    Consulting and Speaking - While it has been popular for established consultants to add blogs to their businesses we’re also starting to see bloggers with no consulting background earning money by charging readers for their time in consulting scenarios BECAUSE of the profile that their blogs have built them. Blogging has the ability to establish people as experts on niche topics and we all know the value of being perceived as an expert. I spoke to one blogger last month who charges himself out at over $200 an hour for speaking and consulting work - his area of expertise was something that he knew little about 18 months ago - but through his blog he’s become a leader in his field and a minor celebrity in his industry.

    As time rolls on there are more and more blog earning opportunities opening up. Feel free to suggest your own ideas in comments below.

    Open source databases is "SIXTY%" cheaper !!!!!

    You know .....that Open source databases can save enterprises up to 60 per cent over proprietary products, according to data collected by
    recent searches.

    A senior analyst at famous database management systems, estimated that average savings on the total cost of ownership are about 50 per cent. The data is based on surveys and customer interviews.

    Open source databases such as Enterprise DB, Ingres and MySQL do not carry licence fees, and management tools. Soit is less expensive than for proprietary databases from Oracle, Microsoft and IBM.

    Open source offers especially their proprietary competitors in low-end applications with databases of less than 200GB in size outshininigly .

    The one fact os this research is that "Eighty per cent of the applications typically use only 30 per cent of the features found in commercial databases," and "The open source databases deliver those features today."

    But the hitch is that open source databases generally lack the features for mission critical applications, trailing behind their proprietary peers in security, uptime, performance and features such as XML support.

    Enterprise applications from Oracle and SAP also do not support open source databases today, but right now condition expects that to change "within a couple of years".

    Open source database vendors typically do not position their products as low-cost alternatives.

    But customers still consider price as the primary benefit of open source, ya this is fact.

    "The number one reason why any customer would choose an open source database is cost. That still holds true today" .

    But the low price is also enabling companies to set up new projects that would previously have been too expensive, such as data mining of log files and setting up data repositories.

    In an attempt to the competition from low-cost open source databases, Oracle launched a free database last year that is essentially a scaled down version of its enterprise grade Oracle Database 10g.

    The application targets test deployments for developers and students rather than enterprises.

    10 Valuable Tips for Creating Your Web Site

    Introduction

    When looking for ways to build of your web site, even minor steps can make a huge difference. The most helpful information and best content will have little impact without simple protocols that make your Web site easier to use and more visually appealing. This paper focuses on 10 tips you can employ to ensure your web site is effec- tive from the day it goes live.

    1. Accessibility

    Web site accessibility has recently become a very important issue in the web community. Because of Section 508 of the Rehabilitation Act of 1973, all web sites and pages created by Federal agencies and Federal contrac-tors after June 21, 2001 must comply with its provisions. The purpose of the law is to make web sites accessi-ble to all individuals, including those with disabilities. The World Wide Web Consortium (W3C) developed Web
    Content Accessibility Guidelines (May 1999), which expand the scope of Section 508.

    This is very important to all web developers, whether you are a government agency, a contractor who does work for the government, or a private firm with its own web site. An accessible web site refers to any content or information provided via an online medium that all individuals (including those with disabilities) could easily access and understand. Disabilities include not only visual impairments, but auditory, cognitive, and physical
    impairments as well. They can range from very severe (total blindness, for example) to something as simple as the increasing inability to see contrasts that develop as we age. Greater accessibility means more people can fully utilize your web site’s features.

    There are a number of aids available for enhancing accessibility. These range from programs like Jaws or IBM’s Home Page Reader—which read the page aloud for the visually impaired—to sip-and-puff systems for the quadriplegic. It is up to the web developer to create pages that allow these systems to provide an equivalent alternative for these individuals. Think of accessing a web page as being similar to a play or opera. If you read the script without benefit of the actors’ interpretation, lights, scenery, or music, you are only experiencing one aspect of the author’s intent. The same is true of web access: if you can only hear the words being read, for example, with no description of the images on the page or other visual components, you would not fully expe-rience the information being provided on the page. That is why, when we include an image, it is important to use the “alt” attribute to provide a description of the image. This enables a screen reader to read this informa-
    tion aloud for a visually impaired user.

    There are several other tips like using table headers with tables of information, not just placeholders. Be careful of using the colors red and green together because of red/green colorblindness. Use sounds with care. Not everyone can hear, nor does everyone have speakers set up on their computers.

    So how do you know if your web site is accessible? Go to http://webxact.watchfire.com and enter the URL for a web page. This free application will test your page and let you know where it does not comply

    2. Security

    Security is crucial to the success of your web site. There are several steps you can take to minimize the risk that your web sites will be subjected to a breech in security.

    Security Updates
    Be sure you are running the most current version of your web Server. Monitor your vendor updates, and per-form regular maintenance.

    Validate User Input on the Client and the Server
    Validating user input on the client is great for user experience. However, you need to validate input on the server side as well. Consider that there are tools that look and feel to your sever like a web site when in fact they are actually designed to fake input such as passwords.

    Audit Logs
    Maintain and review server logs to check for suspicious activity.

    Common Settings
    Be sure to minimize the risk to your server by minimizing the things users can do on your server. For example, don’t permit users to browse the directory structure of your site unless it’s necessary.

    Lockdown Your Server
    Most servers have standard development mode and then a production mode. For example, Microsoft’s Internet Information Server (IIS) has a lockdown utility that minimizes the attack surface for your web site.

    3.Web Server Statistics

    How many visitors do you have? What pages do they frequent? What times do they log on? Utilize a web tool to assist you in not only collecting these statistics but also analyzing and correlating them. Web tools, such as Web Trends, will aid you in collecting and utilizing this knowledge to answer these questions about your site. Build a web page that not only follows appropriate standards, but also drives repeat visitations.

    4. Dynamic Technologies Styles
    Are the pages within your site beginning to feel and act a little plain? Would you like more ways to format your documents and give users more interaction with them? If so, then your site could make use of languages such as Cascading Style Sheets and JavaScript.

    Cascading Style Sheets (CSS) technology gives you more control of page layout and the ability to control the design of multiple pages on your site from a single file. Additionally, CSS allows you to develop more sophisticat- ed layouts, more font schemes, and even more interactivity for your pages than was possible using just HTML.

    JavaScript techniques are needed to develop cutting-edge, interactive web sites. From opening windows to image-flipping and form validation, Javascript can help you build exciting, dynamic web pages.

    Integrating HTML, JavaScript, and Cascading Style Sheets techniques are collectively known as Dynamic HTML or DOM Scripting. Utilizing all three languages allow you to fully exploit the capabilities of Netscape Communicator, Firefox, and Microsoft Internet Explorer.

    5. Efficient Use of Appropriate Design Software

    In the past, many web developers eschewed graphical web editing packages and boasted of developing pages using a simple text editor (for example, Notepad). There is still a place for text editors, but efficient designers and developers both use appropriate design software, often manually tweaking the code. Such packages offer a what- you-see-is-what-you-get (WYSIWYG) environment for designers and code-writing tools for developers. These have
    the software-complete repetitive steps, and let designers and developers focus on what they do best.

    There are many options, but here are some of the major ones:
    Dreamweaver (Adobe, formerly Macromedia)
    • The most popular package
    • Offers both design (layout) and development (programming) support
    • Supports all major server-side scripting languages (ColdFusion, ASP, PHP, JSP), Javascript, XML, and

    ASP.NET (VB.NET and C#)
    • Integrates well with Adobe Flash and Adobe Fireworks (both formerly Macromedia)

    GoLive (Adobe)
    • Offers both design (layout) and development (programming) support
    • Supports several scripting and markup languages (PHP, JavaScript, SVG-t, SMIL)
    • Integrates well with long-standing Adobe products (Photoshop, Illustrator, InDesign)

    FrontPage (Microsoft)
    • Offers both design (layout) and development (programming) support
    • Supports Microsoft JScript and ASP.NET (VB.NET and C#)
    • Integrates well with Visual Studio .NET and the Microsoft Office Suite

    Microsoft Visual Studio (Microsoft)
    • Primarily provides development (programming) support
    • Integrated Design Environment (IDE) for developing in .NET environment
    • Supports .NET languages (primarily VB.NET and C#, but other extensions for other
    languages provided by third parties)

    Eclipse (open source)

    • Primarily provides development (programming) support
    • Integrated Design Environment (IDE) for developing in any environment, but mostly
    ommonly used for J2EE
    • Supports a multitude of programming languages (not language-specific).


    6. Standards and Browser Independence

    Web site development has come a long way. There are lots of new tools that will help with web-page design, not to mention web sites that offer suggestions and ideas for making your web site absolutely incredible. Probably the biggest movement is the increasing use of Cascading Style sheets to separate page content from formatting. We are also seeing more sophisticated use of JavaScript to make pages more dynamic and, therefore, more interesting. Along with this, the World Wide Web Consortium (W3C) has instituted an effort to standardize how browsers handle the display of web pages through the use of XHTML. It is hoped that among all of these initiatives, programming for the web will become less a matter of making sure our pages work on all browsers by testing against each one, and more one of creating web pages that are useful, accessible, and exciting.

    There are a vast number of resources on the web to help improve web sites. For information about the new XHTML standards, as well as help with Cascading Style Sheets and DOM Scripting (using JavaScript to make your web pages more dynamic), the W3C pages (http://www.w3.org) are invaluable. They include examples and tutorials, both of which are very well done. For some wonderful examples of Cascading Style Sheets, we recommend CSSZenGarden.com (http://www.csszengarden.com). The organization that runs this site supplies an html page with the required content. Designers are invited to create an external style sheet to format the page. New contributions are regularly posted.

    Another excellent resource is http://www.dynamicdrive.com. The Internet group on Google groups, formerly Deja, http://groups.google.com/groups is helpful as well. The good news is that you can post a question through Deja/Google groups. Within 24 hours you will usually get one-to-three technically correct answers. Other potential resources include:

    http://www.developer.com
    This is a solid resource for most scripting/programming languages and is top-notch for Java.
    http://www.codehound.com
    This is another language resource and is especially helpful with Microsoft .NET technologies.
    http://www.4GuysFromRolla.com
    This is the definitive place to get ASP or ASP.NET information.
    http://www.php.net A good resource for php.
    http://www.news.com CNET news.
    This site keeps you up-to-date on IT news.
    http://www.theinquirer.net
    This site provides a hardware outlook for six months to a year-and-a half.

    7. Database Access with Server-side Scripting Languages

    Static web pages are good place to start, but they quickly can become time intensive and not an efficient use of a designer or developer’s time. Database-driven web sites can refresh their own data, presenting up-to-the- minute data in way manual updates could never do. A dozen or so programmed pages can dynamically change so that they do the job of thousands of static pages. The benefits are clear: more timely information; fewer pages to maintain; and a freeing up of both designers and developers to enhance and further develop the functionality of a site, rather than its content.

    But by itself, HTML is not up to this kind of job; that’s not what it was designed to do. A server-side program-
    ming language is needed. There are several options, but here are a few of the major products available:

    Active Server Pages (ASP) (Microsoft)
    • Written using VBScript (server-side JavaScript also possible, but rare)
    • Comes installed with Windows servers
    • Can run in UNIX/Linux environment using Sun ONE
    • Being somewhat overshadowed by ASP.NET

    PHP Hypertext Preprocessor (PHP) (open source)
    • C-like programming language
    • No licensing cost (open-source)
    • Can run on UNIX/Linux servers or Windows-based servers
    • Close integration with MySQL database

    ColdFusion (Adobe)
    • Written using tag-based language which integrates well with web-editing software (can also be written using a scripting-like language)
    • Easy to learn, quick to create and maintain pages
    • Java-based architecture
    • Can run on UNIX/Linux server or Windows-based servers

    Java 2 Enterprise Edition (J2EE) (Sun)
    • Written using cross-platform Java language
    • Most often deployed on UNIX/Linux, but can run on any system
    • Web page scripting using Java Server Pages (JSP)
    • Most appropriate for enterprise-wide installations involving multiple servers, databases, and possibly
    mainframe.

    ASP.NET (Microsoft)
    • Written using VB.NET or C# (other languages possible)
    • Deployed in a Windows server environment
    • Requires use of Visual Studio .NET for development
    • Most appropriate for enterprise-wide installation with other Microsoft solutions

    Perl (open source)
    • Not really a scripting language (doesn’t co-habitate with HTML)
    • Powerful, flexible language, good for dealing with patterns or manipulating data
    • Uses less modern Common Gateway Interface (CGI) model
    • More appropriate for communication between different applications on a server

    Any of these will work with any Relational Database Management System (RDBMS). Here are some common ones:

    Oracle (Oracle Corporation)
    • Fully featured, flexible, scalable
    • Works on UNIX/Linux or Windows servers

    SQLServer (Microsoft)
    • Fully featured, flexible, scalable
    • Works on Windows servers
    • Integrates well with .NET

    MySQL (open source)
    • Fully featured, flexible, scalable
    • No licensing costs (open-source)
    • Integrates especially well with PHP

    Access (Microsoft)
    • Friendly user-interface for database management
    • Integrates well with MS Office suite
    • Not fully featured, limited capabilities, only appropriate for small-scale implementations.

    8. Using Image Editors for Fast Loading Graphics

    Use Adobe Photoshop/Imageready or Fireworks to create the appropriate type of graphic file Typically GIF or
    JPEG. There are other Image Editors available but Photoshop/Imageready and Fireworks are currently the most
    popular and are considered the industry standard.


    9. Site Planning, Design, and Management

    “On time, within scope, and within budget” is the project management motto these days. This is also true for IT projects. IT managers can no longer live in the IT black hole. All IT requires fundamental project manage- ment best practices. Learn how to communicate with your staff. Clarify your project’s business goals to ensure that your project is aiding in the vision and meets your company’s vision. Learn how to follow through your project from inception to implementation. Apply your management skills to the concepts of web design. Apply a strategic focus within your organization to help save time and resources. Learn the benefits of various soft- ware packages to aid in efficiency.

    All of these project management practices can help your web site design projects run more smoothly and ensure your web site does what it’s suppose to do.

    10.Technological Flexibility

    If your web application is Data driven, it is imperative that sharing information with different applications and/or platforms be done in the most flexible way possible. Transforming Data from one format to the next, however, can be arduous and considerably time consuming. Fortunately, storing data in an extensible format, and working with it using XSL, has become relatively easy.


    Extensible Markup Langauge (XML) allows developers to store raw data in a text file make up with an HTML-like syntax. With the use of Extensible Style Sheet Transformations (XSL - T), Formatting Objects (XSL - FO), and CSS developers now are able to transform this raw data into an application specific format. Languages com- monly used to augment an XML application are listed below:

    • Extensible Markup Langauge (XML): Used to store raw data files
    • Document Type Definitions (DTDs): Used to validate XML documents
    • eXtensible Stylesheet Language (XSL) and Cascading Style Sheets (CSS): Used to transform the display of XML document into an application specific format. XML utilizes complexities like XPath, functions, modes, and dynamic modification of stylesheets commonly featured in many scripting and programming languages


    To Summarize
    1. Make sure your web pages are accessible
    2. Take steps to minimize security risks
    3. Use web server statistics to determine how popular your site is
    4. Utilize dynamic technologies styles
    5. Be aware of web development software and how to use it efficiently to enhance your web site
    6. Use XHTML, DOM Scripting, and CSS to make your site browser and rule independent
    7. Choose an appropriate database to ensure it is more dynamic, and does the job of many static pages
    8. Use image editors for fast-loading graphics
    9. Learn to use planning and project management techniques to build great web sites with large teams
    10. Use new technologies like XML, DTDs, and XSL to help your application communicate with other plat-forms in the most flexible manner

    If you follow these simple rules, you too can create an excellent web site.

    Tech Search