Aug 31

Maybe you always wanted a feature that hasn’t been available in the latest release of Wordpress. What you can do is either install a 3rd party plugin or write your own custom code to extend the features of Wordpress.

Wordpress plugins are programming code that enhance the features of a standard
installation of Wordpress. A well written plugin will be basically “drag and drop”
without modifying the core code of Wordpress. As Wordpress has been designed in
a modular way, plugins allow you to customize your site to your specific needs
without modifying the core of Wordpress.

Ever since Wordress version 1.2 plugins have been available. Wordpress plugins can
be categorized according to the feature it provides. Here a list of various features
that you can implement for your web site through Wordpress plugins.

Administration: Install Wordpress plugins to customize features like Admin Tools,
Anti-spam, Comments, Meta, Restriction, Statistics, Syntax Highlighting,
Syndication, Tweaking, etc.

Design, Layout and Styles: Change the look and feel of your blog by implementing
plugins that modify Archive, Calendar - Event, Navigation, Randomness, Styles.

Graphics, Video, and Sound: Add plugins that create Audio - Mood and Images for
your blog.

Posts: Implement plugins for Editing Posts, Formatting Posts, and other
Miscellaneous Post related issues.

Links: Setup Wordpress plugins that change the default behavior of linking.

Miscellaneous: You can install miscellaneous plugins that shows weather
information or other outside information from external websites.

Installing a plugin for Wordpress is not difficult. Here are the list of steps that you
need to take to install most plugins. Some plugins may require additional steps.

1. Upload your plugin to the wp-content/plugins folder

2. Go to your Wordpress site using a browser and login

3. Click on the Plugins link from the main menu at top

4. Scroll down the list of available plugins to find the plugin you just uploaded

5. Click “Activate” to make your plugin active

Wordpress Plugin Sites

We found the following sites with a comprehensive list of Wordpress Plugins:

Wordpress Wiki - Plugins: http://wiki.wordpress.org/?pagename=Plugin

WordPress Plugin Repository: http://dev.wp-plugins.org/

WP-Plugins Download Interface: http://redalt.com/external/plugins.php

Wordpress Plugin Database: http://www.wp-plugins.net/

Sanjib Ahmad, Freelance Writer and Product Consultant for Business.Marc8.com - Business Best Sellers.

You are
free to use this article in its entirety as long as you leave all links in place, do not
modify the content, and include the resource box listed above.

Related posts

Tags:

Aug 28

If you’re like me, you occasionally find the ubiquitous mouse inconvenient. Here are keyboard shortcuts for Microsoft’s Internet Explorer (I.E.), the default browser for most personal computers in the business environment.

Of course, learning them all would be far more trouble than it’s worth. But as you scan through the possibilities, look for the tasks you do multiple times a day. Acquiring shortcuts for these repeated tasks makes sense, because you thereby improve your efficiency and reduce your unproductive mousing time. You may also find using the keyboard ergonomically more comfortable.

I’ve divided the tasks into categories that seem to reflect the routine process we all follow when using I.E. Remember: Some of these only work in certain locations or sequences.

Navigation

ALT+HOME — Go to your home page.

ALT+D — Select text in address bar.

CTRL+ENTER (cursor must be in address bar) — Add “www.” to beginning and “.com” to end of text entered in address bar.

F4 — Display/hide list of addresses you’ve recently entered.
SHIFT+TAB — Move back through the items on a Web page, the Address bar, and the Links bar.

UP ARROW — Scroll backward through a document one line at a time.

PAGE UP — Scroll backward through a document in larger increments.

BACKSPACE or ALT+LEFT ARROW — Move backward one page.

HOME — Move backward to beginning of document.

TAB — Move forward through the items on a Web page, the Address bar, and the Links bar.

DOWN ARROW — Scroll forward through a document one line at a time.

PAGE DOWN — Scroll forward through a document in larger increments.

ALT+RIGHT ARROW — Move forward one page.

END — Move forward to the end of a document.

Window Management

F11 — Toggle between full-screen and regular views of browser window.
CTRL+N — Open new window.

CTRL+W — Close current window.
CTRL+O or CTRL+L — Go to a new location (URL address field).

CTRL+I — Open/close favorites bar.

CTRL+D — Add current page to Favorites.

CTRL+B — Open Organize Favorites dialog box.

CTRL+H — Open/close history bar.

Searching

CTRL+E — Open search bar.

CTRL+F — Find on current page.

Refreshing

F5 or CTRL+R — Refresh current web page.

CTRL+F5 — Refresh current web page even if time stamp for web version and locally stored version are same.

Cut-and-pasting (same as in other Windows applications)

CTRL+A — Select all items on current web page.

CTRL+C — Copy selected item(s) to Clipboard.

CTRL+X — Cut (remove) selected item(s) and copy to Clipboard.

CTRL+V — Insert contents of Clipboard at cursor location (insertion point).

Printing

CTRL+P — Print current web page or active frame.

Saving

CTRL+S — Save the current page.

Closing

CTRL+W — Close current window.

More keyboard, less mouse — it often makes your Internet experience more of a pleasure and less of a pain.

* * *

Copyright ©2006 Steve Singleton

Steve Singleton has written and edited several books and numerous articles. He has been an editor, reporter, and public relations consultant. He has taught college-level Greek, Bible, and religious studies courses and has taught seminars in 11 states and the Caribbean.

Go to his DeeperStudy.com for Bible study resources, no matter what your level of expertise. Explore “The Shallows,” plumb “The Depths,” or use the well-organized “Study Links” for original sources in English translation. Check out the DeeperStudy Bookstore for great e-books, free books, and great discounts. Subscribe to his free “DeeperStudy Newsletter” or “DeeperStudy Blog.”

Related posts

Tags: , , , , , , , ,

Aug 25

Exception handling is an essential part of the programming experience, it polishes the application and is a bulwark against somewhat forgivable oversight. We most likely will not cover every situation in the first build of an application but at least we can include the ability to handle unforeseen runtime exceptions and build some useful tools utilising exception systems to help with the application development process.

CUSTOM EXCEPTIONS
=================

Custom built exceptions are a handy tool for both release and development versions of an application. They can be used in the following ways:

Custom Exceptions as Developer Warnings
—————————————

We can use exceptions to remind us of not providing requisite information to a class or object. For example: We build a class as an interface to multiple vendor databases, let’s call it Multiple Vendor Management (MVM) class. To connect to a particular database we perforce provide the instantiated MVM class with the vendor database type we are connecting to via a database_type method within the class. The MVM class also has a SQL_select method that can be called to return a recordset from our chosen vendor database. Within the SQL_select method is a switch (select case) statement which decides how to send the ’select request’ to our chosen database type. If we fail to provide the vendor database type to our class and call the SQL_select method at runtime or a debug compilation, a default (case else) option within our switch (select case) statement throws a custom exception for developers. The custom exception will remind a developer during runtime testing that the requirements of the class have not been fulfilled during our coding. Below is an example of where our custom exception can be used:

Private Sub SQL_select(SQL As String)

dim exp_developer_1 as RuntimeException
exp_developer_1 = new RuntimeException
exp_developer_1.Message = “‘database_type’ property is not set.”
exp_developer_1.ErrorNumber = -90000

dim rs As RecordSet

select case database_type

case MySQL_DATABASE
if Connect_mysql then
rs = mysql.SQLSelect(SQL)
end if // Connect_mysql

case ODBC_DATABASE
if Connect_odbc then
rs = odbcdb.SQLSelect(SQL)
end if // Connect_odbc

case REAL_DATABASE
if connect_rbdb then
// replace any instance of the word DISTINCT with UNIQUE to cater for RBDB syntax.
SQL = Replace_passed_regex_strings(SQL,”sDISTINCTs”,” UNIQUE “)
rs = rbdb.SQLSelect(SQL)
end if // Connect_rbdb

case else
Raise exp_developer_1

end select

Exception err

d=New MessageDialog
if err = exp_developer_1 then
d.Set_Icon_Caution_Triangle
else
d.Set_Icon_Stop
end if

d.ActionButton.Caption = “OK”

#if TargetWin32 or TargetLinux Then
//ERR_MODULE is a constant that holds the module’s/form’s name + a full stop
d.Title = ERR_MODULE + “SQL_select”

if err = exp_db_error then
d.Message = d.ERROR_NUMBER_TEXT + cstr(exp_db_error.ErrorNumber) + _
EndOfLine + d.ERROR_DESCRIPTION_TEXT + exp_db_error.Message ‘message
else

d.Message = d.ERROR_NUMBER_TEXT + cstr(err.ErrorNumber) + _
EndOfLine + d.ERROR_DESCRIPTION_TEXT + err.message ‘message
end if
#else

//ERR_MODULE is a constant that holds the module’s/form’s name + a full stop
d.Message = d.ERROR_ROUTINE_TEXT + ERR_MODULE + “SQL_select” + EndOfLine
if err = exp_db_error then
d.Message = d.Message + d.ERROR_NUMBER_TEXT +
cstr(exp_db_error.ErrorNumber) + _
EndOfLine + d.ERROR_DESCRIPTION_TEXT + exp_db_error.message ‘message
else

d.Message = d.Message + d.ERROR_NUMBER_TEXT + cstr(err.ErrorNumber) + _
EndOfLine + d.ERROR_DESCRIPTION_TEXT + err.message ‘message
end if
#endif

d.AlternateActionButton.Caption = “Details to Clipboard”
d.AlternateActionButton.Visible = True
b=d.ShowModal

Select case b
case d.ActionButton
case d.AlternateActionButton
d.Details_to_clipboard

case d.CancelButton
end select

finally
// clean up
if dNil then d=Nil
return rs
End Sub

Custom Exceptions used for Call Stack Retrocession
————————————————–

A custom exception could be used to create a call stack (http://en.wikipedia.org/wiki/Call_stack) break out scenario. For example, we have an application that is six calls down a call stack of database transaction routines and a critical data error has occurred. Instead of handling the exception, exiting the routine and allowing the parent routine to continue processing it’s database transactions we use a custom exception to roll back all calls within the call stack and their transactions. We throw the custom exception within the current routine whose exception handler rolls back our current routine’s database transactions and then throws the custom exception again within the exception handling section of our routine’s code. The exception handler in our current routine cannot handle the newly thrown custom exception so transfers control back up the call stack to the previous routine. The previous routine handles the custom exception in the same way, and so on until we reach the top of the stack, having rolled back all routines’ database transactions. The initiating routine of the stack can then report the exception or, the routine that caught the first exception could report the exception (see heading Exception Notification Detail further on in article for why we would do this) and then start the retrocession of the stack.

Custom Exception Generics
————————–

Custom exceptions do not need to be specific in their reporting detail, they are custom built so we can change their messages to better fit the circumstance in which we want to throw the exception. For instance, say we have a custom database exception:

dim exp_db_error as RuntimeException
exp_db_error.number = -10001
exp_db_error.message = “Database file can not be found.”

We raise this exception within a routine where the database file is found but is corrupt, we can change the message to better fit the circumstance of the exception:

exp_db_error.message = “Database file is corrupt.”
Raise exp_db_error

The exception number relates to database specific issues but the message the user receives is more relevant to the situation than a generic exception message.

EXCEPTION NOTIFICATION DETAIL
=============================

Details provided in exception notifications perforce should be useful to both the developer and the end user. A basic exception-type number and description is usually too vague or concise to be of use to either party. What good is an exception notification that states:

Exp No: 4026
Exp Desc: Index out of bounds

An exception notification needs to provide two types of useful information, diagnosis information for the developer or the vendor of the application and explanatory information for the end user or the the vendor’s client. Useful details to provide can be:

  • Routine name. The name of the routine in which the exception occurred.

  • Line number. If available the code line number or last declared line number when the exception occurred. This can really help pin point the line of code the exception occurred within.
  • Class or module name. This helps locate the code that threw the exception.
  • Call stack: This can be useful to trace the series of events prior to the exception.
  • Active controls or forms: The current active control and/or form which could give a clue as to what the user was trying to do when the exception occurred, although the call stack could cover this instead.
  • Source of the exception: Perhaps the exception was caused by an application interactivity or interoperability.
  • Time of the exception: Maybe the user went to lunch before reporting the exception. It may help to know that when the exception occurred there was a concurrent hiatus of intranet connectivity.
  • User explanation: An explanation for the user on how the exception impacts their ability to carry out their tasks. It probably is not necessary to confuse the user with exactly what went wrong, just that the application can not perform their task at the present time.

    HANDLING HIDDEN ASSUMPTIONS
    ===========================

    As a rule I put exception handling into almost every routine to neutralise the spectre of the hidden assumption. I am currently working with a business process diagramming application in which there are scripted reports. One particularly critical report every now and then can not complete it’s processing, this is a legacy report which has code that makes inadequate use of exception handling. Every time the report stops I diagnose the problem as missing Lane symbol names within the diagram the report is trying to process. The developer who had scripted the report mistakenly assumed that there would always be a name attributed to a Lane symbol, but when a user forgets to enter a Lane symbol’s name, the report stalls and has no way to handle the exception that is thrown. The hidden assumption is: A Lane symbol has a name property therefore there is a name value available within that property. Of course the developer and client most likely tested the report against well formed diagrams before releasing the first build so the exception was never thrown during testing. This is not really any party’s fault but the result of human fallibility that has not been catered for by utilising exception handling.

    EXCEPTION LISTENER
    ==================

    Instead of building a central exception handler to provide exception notification or central exception reporting we could create an class that captures exceptions and performs functions based upon the type of exceptions it receives. One function might be to capture exceptions into a collection and provide advice to calling routines as to what kinds of services the application can provide the user at any one time, for example: We have an application that accesses several diverse data sources which upon start up fails to connect to one of it’s data sources and throws an exception. The exception is handled and passed to the Exception Listener. From now on any event that opens a form can call the Exception Listener to see if any details the form provides the user are inaccessible and as a result can disable controls that allow the editing or reading of those details. The latter scenario would allow the user to still perform some duties although in a limited way, which is better than not allowing the user to do any work and may still enable the user to finish their work tasks with the limited functionality provided. When I say limited functionality we could be speaking of only a minor disruption to functionality overall.

    Another benefit of an Exception Listener could be the ability to periodically check the collection of exceptions it holds and try to resolve the original cause of the exceptions. In the example above where our application could not access a data source, the Exception Listener could thread a retry of the connection whilst the application is running and upon a successful connection notify it’s clients of the availability of details from the data source again and remove the exception from the collection. This is better than the user having to save what they are doing, close the application and reopen it to reconnect to a previously inaccessible data source.

    If our Exception Listener was a software bus it could publish any messages to it’s subscribers within the application and we could have a real-time release of limited functionality within forms, web pages and other interfaces.

    Statistical Analysis of Application Functionality
    ————————————————-

    Statistical analysis of the amount of functionality that can be provided by an application can also be published by the Exception Listener where a missing data source may be determined to reduce the application’s functionality by 25%. The user can be notified that the application is only 75% functional which would be useful information in a unstable environment. The percentage of functionality would rise or fall based upon exception resolution and exceptions thrown respectively.

    Exception Cluster Explanation
    —————————–

    With a collection of exceptions within the Exception Listener we could abstract out a comprehensive explanation of what an application’s current capabilities and limitations are by diagnosing clusters of various exceptions and/or exception types. When a user tries to perform a task and receives an exception the notification of the exception could provide the ability to open an explanation dialogue instead of only providing the ability to dismiss the exception notification. The Exception Listener could provide a comprehensive report upon current application limitations that are producing current system behaviour. For example, even though our application may have successfully connected to an Account system we cannot retrieve a staff member’s salary transactions because our application cannot access the necessary employee identification details on a Human Resources system that is offline. Throwing an exception that informs the user that an accounts routine can not perform its task does not explain why this has happened and the user will most likely contact the help desk for the explanation, whereas a comprehensive explanation from the Exception Listener which explains the effects of a Human Resources system being offline could instantly explain why the accounts routine is failing the user.

    SUMMARY
    =======

    Exception handling is an integral and sometimes unappreciated part of any programming regimen. Points covered were:

  • Custom exceptions help with the development process using custom developer exceptions to remind developers of missed requirements during coding.

  • Custom exceptions can retrocede through a call stack and rollback prior transactions and processes.
  • Exceptions can handle the scripting of our hidden assumptions.
  • Exception Listeners can provide the ability to limit services within an application allowing the user to perform tasks albeit some functionality will be disabled.
  • Exception Listeners can provide comprehensive explanations of limited application behaviour and the possible cause of thrown exceptions.
  • Exception Listeners can provide a statistical percentage of application functionality.
  • Exception Listeners can periodically try to resolve earlier exceptions that reduce a system’s functionality.
  • Exception notifications can provide enough detail for a developer or vendor to pinpoint the cause of an exception in code whilst concurrently providing a useful explanation to assuage user anxiety over an exception.

    Duane Hennessy
    Senior Software Engineer and Systems Architect
    Bandicoot Software
    Tropical Queensland, Australia
    (ABN: 33 682 969 957)

    Your own personal library of code snippets.
    http://www.bandicootsoftware.com.au

    Moderator of http://groups.yahoo.com/group/AccessDevelopers

    Related posts

    Tags: , , , ,