Saturday, November 01, 2008

The about: URI Scheme

Many web browsers implement an internal URI scheme to access built-in features, advanced functionality, default warning/error messages and "easter eggs". In most cases, the scheme name for these URIs is "about:".

The following are lists of about: URIs available in recent versions of Internet Explorer, Firefox / Seamonkey & other Mozilla compatible browsers, and Google Chrome & Chromium.

Internet Explorer
More information: http://support.microsoft.com/kb/183978

Customized "about:" URLs can be defined for Internet Explorer in the Windows Registry under the following path:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AboutURLs

The following list is mainly for versions 6 (SP2) and above.

about:blankDisplays nothing -- a blank page.
about:DesktopItemNavigationFailureDisplays the default error page used when the browser can not navigate to the provided local desktop URI.
about:HomeDisplays the current defined home page (the page that loads if you click Internet Explorer's Home button in the page navigation toolbar)
about:mozilla
Displays an empty blue webpage. Removed in Windows XP SP2, but can still be accessed using res://mshtml.dll/about.moz
about:NavigationCanceledDisplays the default error page used when the browser aborts loading a page (user cancelled).
about:NavigationFailureDisplays the default error page used when the browser can not navigate to the provided URI.
about:NoAdd-onsIE 7 and above: Displays the warning page used when the browser starts up in safe mode (add-ons disabled).
about:NoAdd-onsInfoIE 7 and above: Displays further help information about running the browser with add-ons disabled.
about:OfflineInformationDisplays the warning page used when the browser is in offline mode.
about:PostNotCachedDisplays the warning page used when the browser can not reload a page without resending previously submitted form data.
about:SecurityRiskDisplays the warning page used when the browser prevents loading a page due to user-configured security settings that are too low.
about:TabsIE 7 and above: Displays the help information page about using tabs.
about:inprivate
IE 8 and above: Displays the help information page for the InPrivate browsing feature.


Mozilla products: Firefox, Seamonkey, etc.
More information: http://kb.mozillazine.org/About_protocol_links

about:Displays a product information page, including name, logo, version, links to licensing information, etc.
about:aboutDisplays a list of about: URIs available (not available in Firefox)
about:blankDisplays nothing -- a blank page.
about:bloatAvailable only in developmental versions of Mozilla-based products.
about:buildconfigDisplays information about options used to build/compile the web browser software.
about:cacheDisplays cache entries & statistics.
about:cache-entryDisplays information about a specific cache-entry. The cache entry must be identified within a querystring. Generally you would not enter this yourself, as the links using this URI are generated by the about:cache viewer.
about:configAllows you to access and modify all configurable options available in the software, including advanced/experimental settings.
about:creditsDisplays an alphabetically organized list of contributors.
about:licenceDisplays licence information
about:licenseAn alias that performs the same function as the above about:licence URI.
about:logoDisplays the logo image used in the software.
about:mozillaDisplays an page containing a excerpt from "The Book of Mozilla" (not an actual book)
about:neterrorDisplays a generic built-in error page (Cannot Complete Request)
about:pluginsLists all available plugins, including details such as versions, file locations, etc.
about:robots
Firefox 3.0 easter egg appearing after March 8th, 2008
about:blocked
Firefox 3.0 blocked information page used by the malware protection feature.
about:rights
Shows licensing information for the Ubuntu 8.10 shipped version of Firefox.


Google Chrome / Chromium
More information: http://googlesystem.blogspot.com/2008/09/google-chromes-about-pages.html

about:memoryLists the browser's memory usage details.
about:statsLists counter and timing statistics of internal methods/functions.
about:networkNetwork I/O tracking & status tool.
about:internetsAn easter egg which makes reference to the "internets" Bushism and "series of tubes" Internet memes
about:histogramsDisplays text-based histograms measuring the performance of internal browser methods/functions.
about:dnsDisplays DNS lookup performance and caching statistics.
about:cacheDisplays a list of webpage resources stored in the local browser cache.
about:crashDisplays the "sad tab" error page -- used when a page causes the current sandboxed browser process to crash (Aw, Snap! Something went wrong while displaying this webpage...).
about:pluginsLists all available plugins, including details such as versions, file locations, etc.
about:versionDisplays version information for various components.

Friday, October 31, 2008

A New Name

I don't know why it is, but choosing a good & suitable title / description for this blog has been pretty a tough task for me. It must be because of the general, broad-ranging nature of things that I want to post here.

I originally started this as a personal blog back in 2004, when personal blogging was the hip and trendy thing to do... and I suppose it still might be, to a certain degree. As seen mostly in my posts prior to this year however, I quickly became disinterested with this concept.

Since the beginning of this year, I started using this blog again to write about technology-related topics, as well as to use it as an outlet for releasing various personal/experimental work. This has been a far more meaningful use to me, but deciding on an appropriate blog title for this personal-turned-technology blog kept shooting nothing but blanks. I settled on "Random Mumblings from Ahsy" for the title, with a description of "You don't want to know..." as they seemed fairly generic and ambiguous enough descriptions. They were also an attempt to choose something witty and clever, although I probably failed epically in that regard.

The new name of this blog is now; "Answers to Hardware and Software for You"... this is obiviously a play on my blog identity, ahsy. Although it might not be fully representative of this blog, I'm hoping it will at least help to establish slightly clearer focus on the topics of my posts, at the same time widen its appeal to both casual and regular readers who are either technology enthusiasts or just passing through looking for information.

Monday, October 13, 2008

TechTip: Taming Adobe Flash Plugin for Firefox

As I've said before, Mozilla Firefox 3.x is currently my preferred web browser, whether it's on Linux, Windows or any other platform that it has been ported to.

Firefox, like any piece of complex software however, is definitely not perfect. Some problems are beyond Mozilla's control though -- for example problems caused by badly behaved third-party plugins. Arguably the most irritating plugin problem impacting Firefox users today is caused by Adobe/Macromedia's poorly written Shockwave Flash plugin (NPSWF32.dll).

Flash is the de facto standard for delivering interactive rich media content over the web. It is so widely used that the Flash plugin is a must have for any major modern web browser. The problem however, is that Adobe's Flash plugin (all previous versions including the latest version 9.0 r124) for Mozilla Firefox & other Mozilla-based browsers is a resource hog and has a tendency to slowly leak memory and become unstable if left running for too long. For the most part, the Adobe Flash plugin for Firefox works adequately, but I would venture a guess that for upwards of 90% of web browser stability problems that users encounter in Firefox -- such as freezing up, crashing or sucking up system resources (CPU & memory), etc. -- the culprit is most likely Adobe's Flash Plugin.

Comparatively, the Flash ActiveX control for Microsoft's Internet Explorer seems to perform much better in terms of resource usage and reliability, however performance of the Flash plugin is hardly a deal breaker for me.

Google Chrome uses the Mozilla-based browser plugin system, and therefore uses the same Flash plugin that Firefox uses. Consequently, Chrome suffers from pretty much all the same Flash plugin problems that you might encounter in Firefox. However, since Chrome isolates memory for each process/tab and plugins, it is easier to control / kill & restart dysfunctional processes and plugins using its built-in Task manager.

Lately one particularly annoying problem that I've suddenly started to experience with the Flash plugin in Firefox is that every time after restarting from hibernation in Windows XP, there is no sound in any flash content (for example YouTube videos & other flash animations). Closing and restarting Firefox fixes the problem, but it's a pain. I usually like to have Firefox save and restore my session and all my tabs, which makes it a little easier, but it's still an big inconvenience nonetheless.

The Solution:

I have recently come across a workaround for this issue which doesn't require closing and restarting Firefox entirely. Simply go to the Tools menu, choose Add-ons to open the Add-ons manager window, choose the Plugins category, then look for and select the Shockwave Flash plugin. Hit the Disable button, which will kill Flash on all web pages you currently have open in Firefox, then re-enable the plugin and close the Add-ons window.

You will need to reload any web page with flash content, but this should clear up most Flash plugin-related problems without having to restart the web browser entirely.

Just for kicks, open the Windows Task Manager along side the Firefox Add-ons manager window. Switch to the Processes tab and locate firefox.exe. Watch what happens to the memory usage as you disable the Shockwave Flash plugin... satisfying, eh?

This trick of disabling and reenabling individual plugins in Firefox without restarting the whole application can probably be applied to any misbehaving plugin (not just Adobe Flash), or when you suspect that plugins are chewing up your resources and you want to try manually flushing the memory used by the firefox.exe process.

Tuesday, October 07, 2008

TechTip: Getting a List of Files

As mentioned in my previous post, there are certain tasks that can be accomplished more effectively and efficiently using a command line interface versus a graphical user interface. Here's one scenario;

Let's suppose you work in a office and you're part of a large team working on a project where everyone stores and shares their files on a networked file share. Your manager has given you a task to compile a list of files into a spreadsheet in order to create an documented file index or checklist.

How would you do this?

If you were using a GUI, you couldn't just select all the files you need and use a hypothetical "get list" command (at least as far as I'm aware there isn't any standard feature like this that exists in Windows, Mac, X Windows, or any major GUI). Even copying the selected files and pasting into a text editor or spreadsheet just simply doesn't work.

Probably the most obvious answer for most GUI-trained people would be to simply type out each filename one at a time, or use the rename feature to copy the filename text and paste into a text document or spreadsheet. This is probably a fair solution if you only had to deal with a small number of files, but it is a bit error-prone... and what if you had a large number of files, like over 20 to possibly a few hundred or more? Unless you had several people at your disposal helping you to split up the work, this would be a pretty tedious task, and could take anywhere from a few minutes to a few hours or even the whole day to complete.

Solution:

Command Line to the rescue! You can accomplish this quickly and easily using the command line.

In Windows, fire up the DOS console by going to Start -- Programs -- Accessories -- Command Prompt, or Start -- Run, enter "cmd", and click OK.

Let's say the file share is mounted to drive letter S:, and all the files that you need to get a list of are under the path "\teams\myteam\projectx".

Use the "cd" (or "chdir") command to change into that directory:

cd S:
cd \teams\myteam\projectx


Doing a "dir" command will output a list of the contents of that folder. You could now theoretically use the Edit -- Mark & Copy commands available in the Window icon menu at the top left of the Command Prompt window (maybe even use the "dir /p" switch to pause at each screen)... this is certainly more efficient than typing or copying/pasting each filename, but there's actually an even better way yet...

Using the "dir /b" switch will give you a "bare" list of files without the columns for modification date, filesize, etc.

Combine this with the file redirection pipe ">", and this will instantly generate your list -- no fuss, no muss!

dir /b > filelist.txt

If you want to get fancier, you could use additional switches and wild cards with the dir command...

First you can construct and issue the dir command on it's own to preview the results on the screen.

dir /b /s 2008*.doc

The above command gets a bare listing, includes files in subfolders where the filenames begin with "2008", and have the ".doc" file extension.

If you are happy with the results, you can then add the portion of the command to pipe the output into a file instead of outputting to the screen.

dir /b /s 2008*.doc > filelist.txt

Once you this is done, you can close the Command Prompt window (or enter the "exit" command).

Going back to the S:\teams\myteam\projectx folder, you will now find a file named "filelist.txt" has been created. Open this file, and there you have it -- a plain text list of your files that you can just copy and paste into a spreadsheet or use in any way you like.

For Linux, Mac OS X or any other Unix-like Operating Systems you can use the equivalent "ls" commands.

ls -F1 > filelist.txt
ls -F1 -R 2008*.doc > filelist.txt

etc.

Now you can show off newly discovered superhuman productivity skills to impress your boss & coworkers. You're due for a raise! ;-)

Sunday, October 05, 2008

Command Line Interfaces - A Relic of the Past?

Command Line Interfaces (CLI) have existed since the very first computer operating systems were developed. Although Graphical User Interfaces (GUI) are a later innovation, the GUI has also been around for quite a long time.

Precursors to modern GUIs have existed since the 1960's, but the introduction of the first mainstream GUI-based operating systems (Apple Macintosh in 1984, Commodore Amiga and Microsoft Windows in 1985) has gradually transformed computing into a fully "point and click" experience.

In the PC world, GUI based computing did not catch on quite as fast. Although the first version of Microsoft Windows was released in 1985, Windows never really gained much popularity until version 3.x was released in the early 1990's. Even then, the majority of software continued to be developed for DOS; a command line based operating system. This meant that most people learning how to use PCs still had to learn how to use DOS to some degree.

The release of Windows 95 saw the beginning of the end for PCs running DOS as a primary OS. Windows NT/2000 marked the complete removal of DOS as an underlying OS, but these versions of Windows were mainly used in business-class PCs only. It was not until Windows XP, released in 2001, when DOS underpinnings were completely removed from general purpose home PCs.

According to current estimates, the usage share of computer operating systems is approximately 90% Windows, 5% Mac OS, 2% Linux, and the remaining 3% other OSes.

So with 95% of computers running either Windows or Mac, it's not surprising that point and click is essentially the only way that the vast majority of computer users today know how to operate a computer. The keyboard is merely relegated to text entry, and for the most part, this method works.

Does this mean CLIs are obsolete?

Hardly -- despite the fact that we can now probably accomplish most tasks solely through a point and click GUI system, the reality is CLIs and GUIs don't compete, but rather complement each other, and both continue to evolve. There are still a lot of things that can only be accomplished (or accomplished much more efficiently) via a command line.

This is why CLIs still exist in contemporary OSes. A DOS command shell still exists in Windows XP & Vista. Even Macs running Mac OS X now have a Unix-like command line terminal (whereas the classic Macintosh operating system did not have any CLI at all).

As a extension to the posts which I will be classifying as "TechTips", some will also focus on using the command line, so this post is to just establish the fact that CLIs are a very powerful tool, and still very relevant in today's world of point and click GUIs. Hopefully some of the examples that I will be demonstrating here in the future will illustrate this fact clearly.