Before using Google Earth Enterprise Fusion, review the content of this chapter, which explains concepts and components fundamental to the software.
To launch the Google Earth Enterprise Fusion GUI, open a terminal window, and enter fusion
at the prompt. When the applications starts, the Google Earth Enterprise Fusion GUI appears.
Google Earth Enterprise Fusion integrates the Google Earth patent-pending software with your source data--imagery, terrain, vector, even your own comma-separated (.csv
) data. Using the Google Earth Enterprise Fusion GUI, you can import source data, configure the display of data, and publish your work to a Google Earth server.
If you prefer, you can perform many of these steps from the command line. For complete information about how to perform these steps from the command line, see the Command Line Reference chapter.
The Google Earth Enterprise Fusion GUI provides a multi-paned workspace that allows you to manage assets and the process of building a publishable database. You can also use the GUI to view the internal data fields for vector files and additional data that you enter for your assets.
The Google Earth Enterprise Fusion GUI provides three data preview panes:
You can show or hide the Preview List and Attribute Table panes individually.
You can also dock the Preview List and Attribute Table panes to any side of the main window or position them on your desktop as independent windows. To move a pane, grab the docking handle on the top or left side of the pane with your mouse and drag it to its new location.
Use the close boxes (X) at the top of the Preview List or Attribute Tables to hide them. The remaining panes fill the GUI.
When each pane is redisplayed, it appears in the same position it was in when it was hidden.
You can customize these panes to suit your preferences and make the best use of available screen space. If you exit Google Earth Enterprise Fusion and later restart it, the GUI configuration is the same as it was when you exited.
When working with the Preview pane, it is common to close the Attribute Table to allow more space for the imagery display. However, when working with vector data, you can set a preference to automatically display the Attribute Table when vector features are selected. To do so, select Auto-Show Selected Data in the Attribute Table section of the Preferences dialog.
See Setting Your Preferences in the Setting Up Your Workspace chapter for more information.
The menu bar provides options from six menus. The menus and their options are:
See the Configuring Display Rules section of the Defining Projects chapter for more information.
The toolbar provides quick access to the most common Google Earth Enterprise Fusion actions. The toolbar buttons and their actions are:
| Open File - Open a source file in the Preview pane.Click this icon, navigate to and select the source you want to view, and click Open. The source appears in the Preview List pane. See the Supported Source File Formats section of the Defining Resources chapter for details. | |
| Select - Select a region of the image in the Preview pane. Select the resource in the preview list pane, and select this icon; then click and drag the mouse to highlight a region in the Preview pane. The Preview pane highlights everything you touch in the selected resource (even if you only touch a corner of it) and displays the data for the highlighted features in the Attribute Table. If you are previewing multiple resources, you can select a region in each resource, and then toggle between them to compare their data in the Attribute Table. | |
| Zoom Box - Outline the zoom area of the imagery displayed in the Preview pane to select precisely the region you want to view. Select (highlight) an item in the Preview List pane, select this icon, and then click and drag a rectangle around the region you want to view. The contents of the selected region replaces the previous view. Press Ctrl+r to return to the default view. | |
Zoom Drag - Zoom in or out on the Preview pane.Select this icon and then:
|
|
| Pan - Move the imagery around in the Preview pane.Select this icon and then click and drag the view to pan in any direction. Press Ctrl+r to return to the default view. | |
| Toggle Tile Grid - Toggle between showing and hiding the tile grid.Select this icon to turn on the grid; unselect it to turn it off. | |
Display Level - The current display level; also referred to as LOD - level of detail. The general display level for:
|
|
Display Level Offset - Set the value added to or subtracted from the display level set in the data to a whole number between -5 and +5. See Adjusting Vector Data Display Levels for details. Select the value and enter a new one, or use the up and down arrow keys to change the value. Press Ctrl+r to return to the default view. |
| Favorites Menu - Quickly return to a saved location. See the next section, Adding and Managing Favorites for details. | |
| Preview Projection - choose between preview of Mercator and Flat projections |
In addition, you can:
After you find a favorite location, you can add it to the Favorites menu, so you can find that location again quickly.
Note: The Favorites menu in Google Earth Enterprise Fusion is unrelated to placemarks in Google Earth EC.
After you add some locations to the Favorites menu, you can use the Favorites Manager to rename, remove, or reorder the list.
You can use the preview panes to inspect imagery, vector, or terrain data in either source data or resource form. You can also open different types of data files at the same time using the preview panes. For example, you might preview an imagery resource along with vector source data to confirm that the vector data aligns properly with the imagery data. Previewing data is a great “litmus test” of how the data will look in Google Earth EC.
Note: Although you can preview source files anytime, you must build resources before you can preview them.
Some applications for the preview panes are:
Although certain limitations apply to viewing your original raw data source files in the preview panes, you have full access to all of the preview functionality when you preview built resources. If you preview raw imagery source files, only a bounding box appears in the Preview pane. If you preview built imagery resources, the actual imagery appears in the Preview pane. The following limitations apply to previewing data:
You can set the File type selector to display only files of a particular format, such as ESRI Shape files, or you can display all files in each folder.
Notes: Encoding applies only to vector data. For example, the geonames-cities500000.csv
vector source file provided with your Google Earth Enterprise Fusion tutorial installation uses UTF-8 character encoding. To see the data from specially-encoded files such as this, specify the correct encoding.
If you do not specify the correct encoding type for such files, special characters might not display properly. For example, with default character encoding specified, é appears as .
This action displays the data in the Preview pane; however, you might not see it, if your current display level is too high or too low.
This action resets the view to encompass the entire area of the data layer.
Note: If the data in the layer extends off of one side of the picture of the Earth and onto the other side, sometimes using the Zoom to Layer feature does not look like it zoomed in at all. That is because the preview must include both sides of the picture of the Earth.
Note: You must build resources before you can preview them.
After you open a layer in the Preview List pane, you can right-click its name, and select any of the following options from the context menu:
Allows you to reset the Preview pane to the entire selected layer. For example, if the Preview pane is displaying a portion of the layer, selecting Zoom to Layer causes the Preview pane to zoom out to display the entire layer. Likewise, if the Preview pane is displaying an area larger than the data in the selected layer, selecting Zoom to Layer causes the Preview pane to zoom in to display the area covered in the selected layer.
Allows you to specify the display properties for vector source data and resources. See Configuring Display Rules in the Defining Projects chapter for details.
Note: This option applies to vector source data and resources only, since the display rules for imagery or terrain data are set when you import the source data as a resource. Although you can actually set display rules for imagery and terrain source data, the preview of that data appears as an outline. Any display rule configurations applied to imagery or terrain data in the Preview pane affect only the outline of the image. See the next section, Previewing Imagery and Terrain Source Data for more information.
Allows you to save display rules as template files and reapply them to other layers. See the sections on Exporting Display Rules and Importing Display Rules in the Defining Projects chapter for more information.
Allows you to remove individual layers or all layers from the preview panes.
Note: Removing layers from the preview panes does not delete the data source files or the resource. It simply removes them from the preview.
When you preview terrain or imagery source data, you view only the boundaries of the data, not the imagery itself, in the Preview pane. In order to see the full imagery or terrain data in the Preview pane, you must create a resource from the source data and build the resource.
Note: Google Earth Enterprise supports preview of both Mercator and Flat Projection imagery. When previewing imported imagery resources, make sure the desired Preview Projection is selected in the toolbar.
When you open imagery or terrain source data in the Preview pane, Google Earth Enterprise Fusion draws a bounding box for the imagery. The bounding box is the outermost region of the image data.
When you open imagery or terrain resources in the Preview pane, the full imagery is displayed within the bounding box.
You can use the tile grid toggle button to turn on the tile grid, so you can examine the tiling of imagery data, as well as the resolution levels and geospatial boundaries of imagery insets.
Although it is easy to visually determine at which display level a vector resource appears or changes, it is not always apparent with imagery insets. When you click the tile grid toggle button, a grid in a contrasting color overlays the current view. As you zoom in or out of this view and move through various levels, the grid updates its size and changes color to provide information about the imagery.
Google Earth Enterprise Fusion provides 24 display levels. When you turn on the grid, at level 0, there is only one tile, or grid square (256 pixels x 256 pixels) for the entire Earth. The number of tiles displayed quadruples at each display level.
When you use the Zoom to Layer feature, all of the grid squares are the same color. This is the lowest display level number (the highest elevation) at which you can view the full extents of the inset. In the following examples, consider Zoom To Layer the starting point.
If you zoom out from the starting point, the grid squares change color, indicating areas of different resolution in the imagery. In the following example, the blue grid squares indicate high-resolution imagery, and the pink squares indicate lower-resolution imagery.
Note: The blue grid squares do not indicate the boundaries of the high-resolution imagery. Any grid square that touches any part of the high-resolution imagery appears in blue. The bounding box indicates the actual boundaries of the high-resolution imagery.
If you zoom in from the starting point, the grid squares are all the same color, are larger, and there are fewer of them in the Preview pane until you get to the next level. Then they appear smaller and are more numerous again.
Note: All references to the grid refer to the semi-transparent lines, not the thin solid lines that designate the borders of the grid squares.
You can use the texture viewing features on the View menu to control the display of imagery and terrain data when you want to debug data in the Preview pane. Using these features, you can:
Turn off all textures in the Preview pane.
Turn on or off only the base texture in the Preview pane.
Cycle through four ways to view the mask for an imagery inset.
(See The Menu Bar for more information about these features.)
You can preview vector source data and resources to explore preliminary display settings, properties, and groupings for resources you are considering using in a project. Keep in mind that you cannot save the display settings you create in the Preview pane, so it is recommended that you set only the most basic display rules in Preview pane.
Tip: If you create display rules for vector data in the Preview pane, you can select Export Configuration as Template from the context menu to save and re-use those settings for an actual layer in a project. See Exporting Display Rules in the Defining Projects chapter.
You can view the internal data fields of vector resources that you can see in the Preview pane. After you select vector fields for display, you can manipulate the display of that view and see even more detailed information about specific entries.
The internal data for each selected element appears as a row in the Attribute Table.
While using the interactive zoom features, you might notice that vector features appear and disappear, depending on your viewing elevation. When this happens, note the number that appears in the Display Level indicator, which increases as the view gets closer to the Earth.
The value shown in the Display Level indicator corresponds to your viewing elevation in the Preview pane. Data that you import into projects can be configured to appear at a specific level--a number that you provide in the display rules for vector data. (See Configuring Display Rules in the Defining Projects chapter for details.)
You can use the Display Level indicator as an analysis tool to determine the appropriate display levels for resources. By setting the correct display level for vector data, you can prevent informational clutter in Google Earth EC.
To the right of the Display Level indicator is the Display Level Offset. You can adjust this selection to whole number values between -5 and +5. Google Earth Enterprise Fusion adds or subtracts the value in this window to the display level set in the data. You can use this feature to quickly adjust the level at which vector features are displayed in the Preview pane without having to reset the value in the display rule. When you find the optimal display level, you can reset the value in the project’s display rule.
For example, if you define a feature to be drawn at level 10, it does not appear in the Preview pane at level 9.2. However, if you set the Display Level Offset to 1, you can see the feature at level 9.2. Google Earth Enterprise Fusion adds 1 (the offset) to 9.2 (your current display level) to adjust your viewing elevation to 10.2.
The following illustration shows two examples of how you can adjust viewing elevation to display the data at a higher or lower elevation perspective.
When vector data is displayed in the Attribute Table, Google Earth Enterprise Fusion provides several options on a context menu to help you work with that data. To access the options, right-click the data in a cell in the Attribute Table, and select one of the following options from the context menu (where Column is the name of the selected column):
Reorders all data in the Attribute Table in ascending order based on the selected column. For example, for a numeric column, it reorders the data in that column from the smallest to the largest number. For a text column, it reorders the data in that column from A to Z.
Reorders all data in the Attribute Table in descending order based on the selected column. For example, for a numeric column, it reorders the data in that column from the largest to the smallest number. For a text column, it reorders the data in that column from Z to A.
Exports the values of the entire column to a comma-separated value (CSV) text file using this option.
Exports all of the data in the Attribute Table to a CSV text file.
Displays detailed information about the selected feature in the Feature Detail dialog, including all of the column attributes of the selected row, the number of vertices making up the vector feature, and the latitude and longitude of each vertex or part.
Zooms to the selected feature.
Copies the contents of the cell to the window manager’s clipboard. Then you can paste the contents of the cell into Google Earth Enterprise Fusion or another application.
Tip: For example, when you are filtering data with international characters, and you do not know how to enter those characters from your English keyboard, you can use this option to copy the string from the actual data and paste it into the filter expression.
The Asset Manager is the main tool you use in Google Earth Enterprise Fusion. You use it to import and build all of your assets in preparation for publishing your Google Earth and Google Maps databases, so it is important for you to become very familiar with it.
Caution: If you are working with multiple Google Earth Enterprise Fusion users on multiple workstations, it is important to remember that all managers on the Tools menu can be accessed by all users at the same time. If multiple users are working with the same manager at the same time, whoever saves an object last overwrites any previous versions of that object. So if you are working in a multi-user environment, be sure to coordinate with the other users to be sure you do not clobber each other’s work.
If it is likely that several people will be working in the Asset Manager at the same time, it is particularly important to ensure that no two users are working on the same asset at the same time.To access the Asset Manager, select Asset Manager from the Tools menu.
The title bar of the Asset Manager identifies the name of the host on which you started the Google Earth Enterprise Fusion GUI.
The Asset Manager’s menu bar provides two menus with the following options:
File
Window
Below the File and Window menus, a selection box provides access to three groups of toolbar buttons. The available selections are:
The Asset Manager’s toolbar provides the following icons so you can create new resources, projects, and databases. You will see only a subset of these icons at any time, depending on your Tools selection above.
| Vector Resource | Vector Project |
| Imagery Resource | Imagery Project |
| Mercator Imagery Resource | Mercator Imagery Project |
| Terrain Resource | Terrain Project |
| Map Layer | Map Project |
| Database | Map Database |
| Mercator Map Database |
Click the icon for the type of asset you want to create. The appropriate type of new asset window appears. Refer to the appropriate chapter of this Reference Guide for information on adding specific types of assets.
Note: Mercator imagery resources are different than Flat Projection imagery resources.
If you wish to use the same imagery for both an Earth database and a Mercator
Maps database, you must import and store two copies of the imagery resources.
Using google.com map base layers requires a Mercator Map database.
You can, however, share imagery resources between an Earth database and a Flat Projection
Maps database.
The Location field at the top of the Asset Manager window displays the asset root. The asset root is the main location where you store all of your Google Earth Enterprise Fusion data. Depending on how you set your preferences, the location displays as either ASSET_ROOT
or as the full path to the asset root (such as /gevol/assets/
).
See Setting Your Preferences in the chapter on Setting Up Your Workspace for more information about setting this preference.
Note: You cannot edit the Location field.
The asset navigation tree appears on the left side of the Asset Manager. When you first start using Google Earth Enterprise Fusion, only the asset root appears. As you add subfolders to the asset root, they appear hierarchically in the asset navigation tree. (See Organizing Assets for more information.) All of the data you create with Google Earth Enterprise Fusion is stored in subfolders of the asset root.
As you navigate through the folders in the asset navigation tree, the Location field displays the full path of the selected folder.
The right side of the window contains two tabs:
The contents of these tabs are described in the following sections.
The List tab displays the list of assets in the folder that is selected in the navigation tree on the left.
You can double-click the name of any asset on the list to display its properties in an editor, so you can modify the asset. You can double-click an asset’s current version or current state to display the Version Properties dialog for that asset. (See Debugging Asset Builds in the Building Assets chapter for more information about this dialog.)
You can click the Refresh button to the right of the Location field at any time to refresh the status of the assets displayed on the List tab.
Above the asset list are two filters:
In addition, you can display hidden assets by checking the box next to Show hidden assets. Hidden assets are those assets that you do not need to display regularly, such as assets that are incorrectly named. See Using the Asset Editors for information on how to designate assets as hidden.)
The Thumbnail tab displays a thumbnail image of each asset in the folder that is selected in the navigation tree on the left.
Note: The Thumbnail tab is useful for raster (imagery and terrain) data only.
In addition to the Type and Category filters and the Show hidden assets check box, which are available for this tab as well, this tab provides a zoom bar. You can drag the zoom bar down to enlarge the thumbnail images.
To close the Asset Manager, click the close box (X) in the top corner.
You use the asset editors (such as the Resource Editor, the Project Editor, and the Database Editor) to define and build your assets. When you finish using any of the asset editors (such as the Imagery Resource Editor used in this exercise), you can either leave it open and move it to the side or close it. Generally, if you know you have more work to do on a given asset, you leave the editor open. If you know you are done with an asset for now, you can close it and get it out of the way.
Caution: It is important to remember that you cannot delete assets after you save them. You can clean them, so they are no longer available to use in Google Earth Enterprise Fusion; however, you can never really eliminate them. See Cleaning Asset Versions in the Building Assets chapter for more information.
All of the asset editors provide menu options that allow you to perform specific tasks on the assets you are editing.
The menu options are:
File:
Edit:
When you finish composing your note, click OK.
Note: The notes appear in Google Earth Enterprise Fusion only.
You can check this option to hide assets that you do not need to display regularly, such as assets that are incorrectly named. Check it again to allow the asset to show.
Note: You can display hidden assets by checking the box next to Show hidden assets on the List Tab in the Asset Manager. See the List Tab section for more information.


1.14.0 / 2015-06-30
Core
- Remove unused removeAttrs method
- Replace regex for url method
- Remove bad url param in $.ajax, overwritten by $.extend
- Properly handle nested cancel submit button
- Fix indent
- Refactor attributeRules and dataRules to share noramlizer
- dataRules method to convert value to number for number inputs
- Update url method to allow for protocol-relative URLs
- Remove deprecated $.format placeholder
- Use jQuery 1.7+ on/off, add destroy method
- IE8 compatibility changed .indexOf to $.inArray
- Cast NaN value attributes to undefined for Opera Mini
- Stop trimming value inside required method
- Use :disabled selector to match disabled elements
- Exclude some keyboard keys to prevent revalidating the field
- Do not search the whole DOM for radio/checkbox elements
- Throw better errors for bad rule methods
- Fixed number validation error
- Fix reference to whatwg spec
- Focus invalid element when validating a custom set of inputs
- Reset element styles when using custom highlight methods
- Escape dollar sign in error id
- Revert "Ignore readonly as well as disabled fields."
- Update link in comment for Luhn algorithm
Additionals
- Update dateITA to address timezone issue
- Fix extension method to only method period
- Fix accept method to match period only
- Update time method to allow single digit hour
- Drop bad test for notEqualTo method
- Add notEqualTo method
- Use correct jQuery reference via
$
- Remove useless regex check in iban method
- Brazilian CPF number
Localization
- Update messages_tr.js
- Update messages_sr_lat.js
- Adding Perú Spanish (ES PE)
- Adding Georgian (ქართული, ge)
- Fixed typo in catalan translation
- Improve Finnish (fi) translation
- Add armenian (hy_AM) locale
- Extend italian (it) translation with currency method
- Add bn_BD locale
- Update zh locale
- Remove full stop at the end of italian messages
1.13.1 / 2014-10-14
Core
- Allow 0 as value for autoCreateRanges
- Apply ignore setting to all validationTargetFor elements
- Don't trim value in min/max/rangelength methods
- Escape id/name before using it as a selector in errorsFor
- Explicit default for focusCleanup option
- Fix incorrect regexp for describedby matcher
- Ignore readonly as well as disabled fields
- Improve id escaping, store escaped id in describedby
- Use return value of submitHandler to allow or prevent form submit
Additionals
- Add postalcodeBR method
- Fix pattern method when parameter is a string
1.13.0 / 2014-07-01
All
Core
- Respect non-error aria-describedby and empty hidden errors
- Improve dateISO RegExp
- Added radio/checkbox to delegate click-event
- Use aria-describedby for non-label elements
- Register focusin, focusout and keyup also on radio/checkbox
- Fix normalization for rangelength attribute value
- Update elementValue method to deal with type="number" fields
- Use charAt instead of array notation on strings, to support IE8(?)
Localization
- Fix sk translation of rangelength method
- Add Finnish methods
- Fixed GL number validation message
- Fixed ES number method validation message
- Added galician (GL)
- Fixed French messages for min and max methods
Additionals
- Add statesUS method
- Fix dateITA method to deal with DST bug
- Add persian date method
- Add postalCodeCA method
- Add postalcodeIT method
1.12.0 / 2014-04-01
- Add ARIA testing (3d5658e)
- Add es-AR localization messages. (7b30beb)
- Add missing dots to 'es' and 'es_AR' messages. (a2a653c)
- Added Indonesian (ID) localization (1d348bd)
- Added NIF, NIE and CIF Spanish documents numbers validation (#830, 317c20f)
- Added the current form to the context of the remote ajax request (0a18ae6)
- Additionals: Update IBAN method, trim trailing whitespaces (#970, 347b04a)
- BIC method: Improve RegEx, {1} is always redundant. Closes gh-744 (5cad6b4)
- Bower: Add Bower.json for package registration (e86ccb0)
- Changes dollar references to 'jQuery', for compability with jQuery.noConflict. Closes gh-754 (2049afe)
- Core: Add "method" field to error list entry (89a15c7)
- Core: Added support for generic messages via data-msg attribute (5bebaa5)
- Core: Allow attributes to have a value of zero (eg min='0') (#854, 9dc0d1d)
- Core: Disable deprecated $.format (#755, bf3b350)
- Core: Fix support for multiple error classes (c1f0baf)
- Core: Ignore events on ignored elements (#700, a864211)
- Core: Improve elementValue method (6c041ed)
- Core: Make element() handle ignored elements properly. (3f464a8)
- Core: Switch dataRules parsing to W3C HTML5 spec style (460fd22)
- Core: Trigger success on optional but have other successful validators (#851, f93e1de)
- Core: Use plain element instead of un-wrapping the element again (03cd4c9)
- Core: make sure remote is executed last (#711, ad91b6f)
- Demo: Use correct option in multipart demo. (#1025, 070edc7)
- Fix $/jQuery usage in additional methods. Fixes #839 (#839, 59bc899)
- Improve Chinese translations (1a0bfe3)
- Initial ARIA-Required implementation (bf3cfb2)
- Localization: change accept values to extension. Fixes #771, closes gh-793. (#771,
12edec6)
- Messages: Add icelandic localization (dc88575)
- Messages: Add missing dots to 'bg', 'fr' and 'sr' messages. (adbc636)
- Messages: Create messages_sr_lat.js (f2f9007)
- Messages: Create messages_tj.js (de830b3)
- Messages: Fix sr_lat translation, add missing space (880ba1c)
- Messages: Update messages_sr.js, fix missing space (10313f4)
- Methods: Add additional method for currency (1a981b4)
- Methods: Adding Smart Quotes to stripHTML's punctuation removal (aa0d624)
- Methods: Fix dateITA method, avoiding summertime errors (279b932)
- Methods: Localized methods for chilean culture (es-CL) (cf36b93)
- Methods: Update email to use HTML5 regex, remove email2 method (#828, dd162ae)
- Pattern method: Remove delimiters, since HTML5 implementations don't include those either. (37992c1)
- Restricting credit card validator to include length check. Closes gh-772 (f5f47c5)
- Update messages_ko.js - closes gh-715 (5da3085)
- Update messages_pt_BR.js. Closes gh-782 (4bf813b)
- Update phonesUK and mobileUK to accept new prefixes. Closes gh-750 (d447b41)
- Verify nine-digit zip codes. Closes gh-726 (165005d)
- phoneUS: Add N11 exclusions. Closes gh-861 (519bbc6)
- resetForm should clear any aria-invalid values (4f8a631)
- valid(): Check all elements. Fixes #791 - valid() validates only the first (invalid) element (#791,
6f26803)
1.11.1 / 2013-03-22
- Revert to also converting parameters of range method to numbers. Closes gh-702
- Replace most usage of PHP with mockjax handlers. Do some demo cleanup as well, update to newer masked-input plugin. Keep captcha demo in PHP. Fixes #662
- Remove inline code highlighting from milk demo. View source works fine.
- Fix dynamic-totals demo by trimming whitespace from template content before passing to jQuery constructor
- Fix min/max validation. Closes gh-666. Fixes #648
- Fixed 'messages' coming up as a rule and causing an exception after being updated through rules("add"). Closes gh-670, fixes #624
- Add Korean (ko) localization. Closes gh-671
- Improved the UK postcode method to filter out more invalid postcodes. Closes #682
- Update messages_sv.js. Closes #683
- Change grunt link to the project website. Closes #684
- Move remote method down the list to run last, after all other methods applied to a field. Fixes #679
- Update plugin.json description, should include the word 'validate'
- Fix typos
- Fix jQuery loader to use path of itself. Fixes nested demos.
- Update grunt-contrib-qunit to make use of PhantomJS 1.8, when installed through node module 'phantomjs'
- Make valid() return a boolean instead of 0 or 1. Fixes #109 - valid() does not return boolean value
1.11.0 / 2013-02-04
- Remove clearing as numbers of
min
, max
and range
rules. Fixes #455. Closes gh-528.
- Update pre-existing labels - fixes #430 closes gh-436
- Fix $.validator.format to avoid group interpolation, where at least IE8/9 replaces -bash with the match. Fixes #614
- Fix mimetype regex
- Add plugin manifest and update headers to just MIT license, drop unnecessary dual-licensing (like jQuery).
- Hebrew messages: Removed dots at end of sentences - Fixes gh-568
- French translation for require_from_group validation. Fixes gh-573.
- Allow groups to be an array or a string - Fixes #479
- Removed spaces with multiple MIME types
- Fix some date validations, JS syntax errors.
- Remove support for metadata plugin, replace with data-rule- and data-msg- (added in 907467e8) properties.
- Added sftp as a valid url-pattern
- Add Malay (my) localization
- Update localization/messages_hu.js
- Remove focusin/focusout polyfill. Fixes #542 - Inclusion of jquery.validate interfers with focusin and focusout events in IE9
- Localization: Fixed typo in finnish translation
- Fix RTM demo to show invalid icon when going from valid back to invalid
- Fixed premature return in remote function which prevented ajax call from being made in case an input was entered too quickly. Ensures remote validation always
validates the newest value.
- Undo fix for #244. Fixes #521 - E-mail validation fires immediately when text is in the field.
1.10.0 / 2012-09-07
- Corrected French strings for nowhitespace, phoneUS, phoneUK and mobileUK based upon community feedback.
- rename files for language_REGION according to the standard ISO_3166-1 (http://en.wikipedia.org/wiki/ISO_3166-1),
for Taiwan tha language is Chinese (zh) and the region is Taiwan (TW)
- Optimise RegEx patterns, especially for UK phone numbers.
- Add Language Name for each file, rename the language code according to the standard ISO 639 for Estonian, Georgian, Ukrainian and Chinese (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
- Added croatian (HR) localization
- Existing French translations were edited and French translations for the additional methods were added.
- Merged in changes for specifying custom error messages in data attributes
- Updated UK Mobile phone number regex for new numbers. Fixes #154
- Add element to success call with test. Fixes #60
- Fixed regex for time additional method. Fixes #131
- resetForm now clears old previousValue on form elements. Fixes #312
- Added checkbox test to require_from_group and changed require_from_group to use elementValue. Fixes #359
- Fixed dataFilter response issues in jQuery 1.5.2+. Fixes #405
- Added jQuery Mobile demo. Fixes #249
- Deoptimize findByName for correctness. Fixes #82 - $.validator.prototype.findByName breaks in IE7
- Added US zip code support and test. Fixes #90
- Changed lastElement to lastActive in keyup, skip validation on tab or empty element. Fixes #244
- Removed number stripping from stripHtml. Fixes #2
- Fixed invalid count on invalid to valid remote validation. Fixes #286
- Add link to file_input to demo index
- Moved old accept method to extension additional-method, added new accept method to handle standard browser mimetype filtering. Fixes #287 and supersedes #369
- Disables blur event when onfocusout is set to false. Test added.
- Fixed value issue for radio buttons and checkboxes. Fixes #363
- Added test for rangeWords and fixed regex and bounds in method. Fixes #308
- Fixed TinyMCE Demo and added link on demo page. Fixes #382
- Changed localization message for min/max. Fixes #273
- Added pseudo selector for text input types to fix issue with default empty type attribute. Added tests and some test markup. Fixes #217
- Fixed delegate bug for dynamic-totals demo. Fixes #51
- Fix incorrect message for alphanumeric validator
- Removed incorrect false check on required attribute
- required attribute fix for non-html5 browsers. Fixes #301
- Added methods "require_from_group" and "skip_or_fill_minimum"
- Use correct iso code for swedish
- Updated demo HTML files to use HTML5 doctype
- Fixed regex issue for decimals without leading zeroes. Added new methods test. Fixes #41
- Introduce a elementValue method that normalizes only string values (don't touch array value of multi-select). Fixes #116
- Support for dynamically added submit buttons, and updated test case. Uses validateDelegate. Code from PR #9
- Fix bad double quote in test fixtures
- Fix maxWords method to include the upper bound, not exclude it. Fixes #284
- Fixed grammar error in german range validator message. Fixes #315
- Fixed handling of multiple class names for errorClass option. Test by Max Lynch. Fixes #280
- Fix jQuery.format usage, should be $.validator.format. Fixes #329
- Methods for 'all' UK phone numbers + UK postcodes
- Pattern method: Convert string param to RegExp. Fixes issue #223
- grammar error in german localization file
- Added Estonian localization for messages
- Improve tooltip handling on themerollered demo
- Add type="text" to input fields without type attribute to please qSA
- Update themerollered demo to use tooltip to show errors as overlay.
- Update themerollered demo to use latest jQuery UI (along with newer jQuery version). Move code around to speed up page load.
- Fixed min error message broken in Japanese.
- Update form plugin to latest version. Enhance the ajaxSubmit demo.
- Drop dateDE and numberDE methods from classRuleSettings, leftover from moving those to localized methods
- Passing submit event to submitHandler callback
- Fixed #219 - Fix valid() on elements with dependency-callback or dependency-expression.
- Improve build to remove dist dir to ensure only the current release gets zipped up
1.9.0
- Added Basque (EU) localization
- Added Slovenian (SL) localization
- Fixed issue #127 - Finnish translations has one : instead of ;
- Fixed Russian localization, minor syntax issue
- Added in support for HTML5 input types, fixes #97
- Improved HTML5 support by setting novalidate attribute on the form, and reading the type attribute.
- Fixed showLabel() removing all classes from error element. Remove only settings.validClass. Fixes #151.
- Added 'pattern' to additional-methods to validate against arbitrary regular expressions.
- Improved email method to not allow the dot at the end (valid by RFC, but unwanted here). Fixes #143
- Fixed swedish and norwegian translations, min/max messages got switched. Fixes #181
- Fixed #184 - resetForm: should unset lastElement
- Fixed #71 - improve existing time method and add time12h method for 12h am/pm time format
- Fixed #177 - Fix validation of a single radio or checkbox input
- Fixed #189 - :hidden elements are now ignored by default
- Fixed #194 - Required as attribute fails if jQuery>=1.6 - Use .prop instead of .attr
- Fixed #47, #39, #32 - Allowed credit card numbers to contain spaces as well as dashes (spaces are commonly input by users).
1.8.1
- Added Thai (TH) localization, fixes #85
- Added Vietnamese (VI) localization, thanks Ngoc
- Fixed issue #78. Error/Valid styling applies to all radio buttons of same group for required validation.
- Don't use form.elements as that isn't supported in jQuery 1.6 anymore. Its buggy as hell anyway (IE6-8: form.elements === form).
1.8.0
- Improved NL localization (http://plugins.jquery.com/node/14120)
- Added Georgian (GE) localization, thanks Avtandil Kikabidze
- Added Serbian (SR) localization, thanks Aleksandar Milovac
- Added ipv4 and ipv6 to additional methods, thanks Natal Ngétal
- Added Japanese (JA) localization, thanks Bryan Meyerovich
- Added Catalan (CA) localization, thanks Xavier de Pedro
- Fixed missing var statements within for-in loops
- Fix for remote validation, where a formatted message got messed up (https://github.com/jzaefferer/jquery-validation/issues/11)
- Bugfixes for compatibility with jQuery 1.5.1, while maintaining backwards-compatibility
1.7
1.6
- Added Arabic (AR), Portuguese (PTPT), Persian (FA), Finnish (FI) and Bulgarian (BR) localization
- Updated Swedish (SE) localization (some missing html iso characters)
- Fixed $.validator.addMethod to properly handle empty string vs. undefined for the message argument
- Fixed two accidental global variables
- Enhanced min/max/rangeWords (in additional-methods.js) to strip html before counting; good when counting words in a richtext editor
- Added localized methods for DE, NL and PT, removing the dateDE and numberDE methods (use messages_de.js and methods_de.js with date and number methods instead)
- Fixed remote form submit synchronization, kudos to Matas Petrikas
- Improved interactive select validation, now validating also on click (via option or select, inconsistent across browsers); doesn't work in Safari, which
doesn't trigger a click event at all on select elements; fixes http://plugins.jquery.com/node/11520
- Updated to latest form plugin (2.36), fixing http://plugins.jquery.com/node/11487
- Bind to blur event for equalTo target to revalidate when that target changes, fixes http://plugins.jquery.com/node/11450
- Simplified select validation, delegating to jQuery's val() method to get the select value; should fix http://plugins.jquery.com/node/11239
- Fixed default message for digits (http://plugins.jquery.com/node/9853)
- Fixed issue with cached remote message (http://plugins.jquery.com/node/11029 and http://plugins.jquery.com/node/9351)
- Fixed a missing semicolon in additional-methods.js (http://plugins.jquery.com/node/9233)
- Added automatic detection of substitution parameters in messages, removing the need to provide format functions (http://plugins.jquery.com/node/11195)
- Fixed an issue with :filled/:blank somewhat caused by Sizzle (http://plugins.jquery.com/node/11144)
- Added an integer method to additional-methods.js (http://plugins.jquery.com/node/9612)
- Fixed errorsFor method where the for-attribute contains characters that need escaping to be valid inside a selector (http://plugins.jquery.com/node/9611)
1.5.5
1.5.4
1.5.3
- Fixed a bug related to the wrapper-option, where all ancestor-elements that matched the wrapper-option where selected (http://plugins.jquery.com/node/7624)
- Updated multipart demo to use latest jQuery UI accordion
- Added dateNL and time methods to additionalMethods.js
- Added Traditional Chinese (Taiwan, tw) and Kazakhstan (KK) localization
- Moved jQuery.format (formerly String.format) to jQuery.validator.format, jQuery.format is deprecated and will be removed in 1.6 (see http://code.google.com/p/jquery-utils/issues/detail?id=15 for details)
- Cleaned up messages_pl.js and messages_ptbr.js (still defined messages for max/min/rangeValue, which were removed in 1.4)
- Fixed flawed boolean logic in valid-plugin-method for multiple elements; now all elements need to be valid for a boolean-true result (http://plugins.jquery.com/node/8481)
- Enhancement $.validator.addMethod: An undefined third message-argument won't overwrite an existing message (http://plugins.jquery.com/node/8443)
- Enhancement to submitHandler option: When used, click events on submit buttons are captured and the submitting button is inserted into the form before calling
submitHandler, and removed afterwards; keeps submit buttons intact (http://plugins.jquery.com/node/7183#comment-3585)
- Added option validClass, default "valid", which adds that class to all valid elements, after validation (http://dev.jquery.com/ticket/2205)
- Added creditcardtypes method to additionalMethods.js, including tests (via http://dev.jquery.com/ticket/3635)
- Improved remote method to allow serverside message as a string, or true for valid, or false for invalid using the clientside defined message (http://dev.jquery.com/ticket/3807)
- Improved accept method to also accept a Drupal-style comma-separated list of values (http://plugins.jquery.com/node/8580)
1.5.2
- Fixed messages in additional-methods.js for maxWords, minWords, and rangeWords to include call to $.format
- Fixed value passed to methods to exclude carriage return (\r), same as jQuery's val() does
- Added slovak (sk) localization
- Added demo for integration with jQuery UI tabs
- Added selects-grouping example to tabs demo (see second tab, birthdate field)
1.5.1
- Updated marketo demo to use invalidHandler option instead of binding invalid-form event
- Added TinyMCE integration example
- Added ukrainian (ua) localization
- Fixed length validation to work with trimmed value (regression from 1.5 where general trimming before validation was removed)
- Various small fixes for compatibility with both 1.2.6 and 1.3
1.5
- Improved basic demo, validating confirm-password field after password changed
- Fixed basic validation to pass the untrimmed input value as the first parameter to validation methods, changed required accordingly; breaks existing custom method
that rely on the trimming
- Added norwegian (no), italian (it), hungarian (hu) and romanian (ro) localization
- Fixed #3195: Two flaws in swedish localization
- Fixed #3503: Extended rules("add") to accept messages property: use to specify add custom messages to an element via rules("add", { messages:
{ required: "Required! " } });
- Fixed #3356: Regression from #2908 when using meta-option
- Fixed #3370: Added ignoreTitle option, set to skip reading messages from the title attribute, helps to avoid issues with Google Toolbar; default is false for
compatibility
- Fixed #3516: Trigger invalid-form event even when remote validation is involved
- Added invalidHandler option as a shortcut to bind("invalid-form", function() {})
- Fixed Safari issue for loading indicator in ajaxSubmit-integration-demo (append to body first, then hide)
- Added test for creditcard validation and improved default message
- Enhanced remote validation, accepting options to passthrough to $.ajax as parameter (either url string or options, including url property plus everything else
that $.ajax supports)
1.4
- Fixed #2931, validate elements in document order and ignore type=image inputs
- Fixed usage of $ and jQuery variables, now fully compatible with all variations of noConflict usage
- Implemented #2908, enabling custom messages via metadata ala class="{required:true,messages:{required:'required field'}}", added demo/custom-messages-metadata-demo.html
- Removed deprecated methods minValue (min), maxValue (max), rangeValue (rangevalue), minLength (minlength), maxLength (maxlength), rangeLength (rangelength)
- Fixed #2215 regression: Call unhighlight only for current elements, not everything
- Implemented #2989, enabling image button to cancel validation
- Fixed issue where IE incorrectly validates against maxlength=0
- Added czech (cs) localization
- Reset validator.submitted on validator.resetForm(), enabling a full reset when necessary
- Fixed #3035, skipping all falsy attributes when reading rules (0, undefined, empty string), removed part of the maxlength workaround (for 0)
- Added dutch (nl) localization (#3201)
1.3
- Fixed invalid-form event, now only triggered when form is invalid
- Added spanish (es), russian (ru), portuguese brazilian (ptbr), turkish (tr), and polish (pl) localization
- Added removeAttrs plugin to facilitate adding and removing multiple attributes
- Added groups option to display a single message for multiple elements, via groups: { arbitraryGroupName: "fieldName1 fieldName2[, fieldNameN" }
- Enhanced rules() for adding and removing (static) rules: rules("add", "method1[, methodN]"/{method1:param[, method_n:param]}) and rules("remove"[,
"method1[, method_n]")
- Enhanced rules-option, accepts space-separated string-list of methods, eg. {birthdate: "required date"}
- Fixed checkbox group validation with inline rules: As long as the rules are specified on the first element, the group is now properly validated on click
- Fixed #2473, ignoring all rules with an explicit parameter of boolean-false, eg. required:false is the same as not specifying required at all (it was handled
as required:true so far)
- Fixed #2424, with a modified patch from #2473: Methods returning a dependency-mismatch don't stop other rules from being evaluated anymore; still, success
isn't applied for optional fields
- Fixed url and email validation to not use trimmed values
- Fixed creditcard validation to accept only digits and dashes ("asdf" is not a valid creditcard number)
- Allow both button and input elements for cancel buttons (via class="cancel")
- Fixed #2215: Fixed message display to call unhighlight as part of showing and hiding messages, no more visual side-effects while checking an element and extracted
validator.checkForm to validate a form without UI sideeffects
- Rewrote custom selectors (:blank, :filled, :unchecked) with functions for compatibility with AIR
1.2.1
- Bundled delegate plugin with validate plugin - its always required anyway
- Improved remote validation to include parts from the ajaxQueue plugin for proper synchronization (no additional plugin necessary)
- Fixed stopRequest to prevent pendingRequest < 0
- Added jQuery.validator.autoCreateRanges property, defaults to false, enable to convert min/max to range and minlength/maxlength to rangelength; this basically
fixes the issue introduced by automatically creating ranges in 1.2
- Fixed optional-methods to not highlight anything at all if the field is blank, that is, don't trigger success
- Allow false/null for highlight/unhighlight options instead of forcing a do-nothing-callback even when nothing needs to be highlighted
- Fixed validate() call with no elements selected, returning undefined instead of throwing an error
- Improved demo, replacing metadata with classes/attributes for specifying rules
- Fixed error when no custom message is used for remote validation
- Modified email and url validation to require domain label and top label
- Fixed url and email validation to require TLD (actually to require domain label); 1.2 version (TLD is optional) is moved to additions as url2 and email2
- Fixed dynamic-totals demo in IE6/7 and improved templating, using textarea to store multiline template and string interpolation
- Added login form example with "Email password" link that makes the password field optional
- Enhanced dynamic-totals demo with an example of a single message for two fields
1.2
- Added AJAX-captcha validation example (based on http://psyrens.com/captcha/)
- Added remember-the-milk-demo (thanks RTM team for the permission!)
- Added marketo-demo (thanks Glen Lipka!)
- Added support for ajax-validation, see method "remote"; serverside returns JSON, true for valid elements, false or a String for invalid, String is
used as message
- Added highlight and unhighlight options, by default toggles errorClass on element, allows custom highlighting
- Added valid() plugin method for easy programmatic checking of forms and fields without the need to use the validator API
- Added rules() plugin method to read and write rules for an element (currently read only)
- Replaced regex for email method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/email_address_validation/
- Restructured event architecture to rely solely on delegation, both improving performance, and ease-of-use for the developer (requires jquery.delegate.js)
- Moved documentation from inline to http://docs.jquery.com/Plugins/Validation - including interactive
examples for all methods
- Removed validator.refresh(), validation is now completely dynamic
- Renamed minValue to min, maxValue to max and rangeValue to range, deprecating the previous names (to be removed in 1.3)
- Renamed minLength to minlength, maxLength to maxlength and rangeLength to rangelength, deprecating the previous names (to be removed in 1.3)
- Added feature to merge min + max into and range and minlength + maxlength into rangelength
- Added support for dynamic rule parameters, allowing to specify a function as a parameter eg. for minlength, called when validating the element
- Allow to specify null or an empty string as a message to display nothing (see marketo demo)
- Rules overhaul: Now supports combination of rules-option, metadata, classes (new) and attributes (new), see rules() for details
1.1.2
- Replaced regex for URL method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/iri/
- Improved email method to better handle unicode characters
- Fixed error container to hide when all elements are valid, not only on form submit
- Fixed String.format to jQuery.format (moving into jQuery namespace)
- Fixed accept method to accept both upper and lowercase extensions
- Fixed validate() plugin method to create only one validator instance for a given form and always return that one instance (avoids binding events multiple times)
- Changed debug-mode console log from "error" to "warn" level
1.1.1
- Fixed invalid XHTML, preventing error label creation in IE since jQuery 1.1.4
- Fixed and improved String.format: Global search & replace, better handling of array arguments
- Fixed cancel-button handling to use validator-object for storing state instead of form element
- Fixed name selectors to handle "complex" names, eg. containing brackets ("list[]")
- Added button and disabled elements to exclude from validation
- Moved element event handlers to refresh to be able to add handlers to new elements
- Fixed email validation to allow long top level domains (eg. ".travel")
- Moved showErrors() from valid() to form()
- Added validator.size(): returns the number of current errors
- Call submitHandler with validator as scope for easier access of it's methods, eg. to find error labels using errorsFor(Element)
- Compatible with jQuery 1.1.x and 1.2.x
1.1
- Added validation on blur, keyup and click (for checkboxes and radiobutton). Replaces event-option.
- Fixed resetForm
- Fixed custom-methods-demo
1.0
- Improved number and numberDE methods to check for correct decimal numbers with delimiters
- Only elements that have rules are checked (otherwise success-option is applied to all elements)
- Added creditcard number method (thanks to Brian Klug)
- Added ignore-option, eg. ignore: "[@type=hidden]", using that expression to exclude elements to validate. Default: none, though submit and reset buttons
are always ignored
- Heavily enhanced Functions-as-messages by providing a flexible String.format helper
- Accept Functions as messages, providing runtime-custom-messages
- Fixed exclusion of elements without rules from successList
- Fixed custom-method-demo, replaced the alert with message displaying the number of errors
- Fixed form-submit-prevention when using submitHandler
- Completely removed dependency on element IDs, though they are still used (when present) to link error labels to inputs. Achieved by using an array with {name,
message, element} instead of an object with id:message pairs for the internal errorList.
- Added support for specifying simple rules as simple strings, eg. "required" is equivalent to {required: true}
- Added feature: Add errorClass to invalid field�s parent element, making it easy to style the label/field container or the label for the field.
- Added feature: focusCleanup - If enabled, removes the errorClass from the invalid elements and hides all errors messages whenever the element is focused.
- Added success option to show the a field was validated successfully
- Fixed Opera select-issue (avoiding a attribute-collision)
- Fixed problems with focussing hidden elements in IE
- Added feature to skip validation for submit buttons with class "cancel"
- Fixed potential issues with Google Toolbar by preferring plugin option messages over title attribute
- submitHandler is only called when an actual submit event was handled, validator.form() returns false only for invalid forms
- Invalid elements are now focused only on submit or via validator.focusInvalid(), avoiding all trouble with focus-on-blur
- IE6 error container layout issue is solved
- Customize error element via errorElement option
- Added validator.refresh() to find new inputs in the form
- Added accept validation method, checks file extensions
- Improved dependency feature by adding two custom expressions: ":blank" to select elements with an empty value and �:filled� to select elements with
a value, both excluding whitespace
- Added a resetForm() method to the validator: Resets each form element (using the form plugin, if available), removes classes on invalid elements and hides all
error messages
- Fixed docs for validator.showErrors()
- Fixed error label creation to always use html() instead of text(), allowing arbitrary HTML passed in as messages
- Fixed error label creation to use specified error class
- Added dependency feature: The requires method accepts both String (jQuery expressions) and Functions as the argument
- Heavily improved customizing of error message display: Use normal messages and show/hide an additional container; Completely replace message display with own
mechanism (while being able to delegate to the default handler; Customize placing of generated labels (instead of default below-element)
- Fixed two major bugs in IE (error containers) and Opera (metadata)
- Modified validation methods to accept empty fields as valid (exception: of course �required� and also �equalTo� methods)
- Renamed "min" to "minLength", "max" to "maxLength", "length" to "rangeLength"
- Added "minValue", "maxValue" and "rangeValue"
- Streamlined API for support of different events. The default, submit, can be disabled. If any event is specified, that is applied to each element (instead of
the entire form). Combining keyup-validation with submit-validation is now extremely easy to setup
- Added support for one-message-per-rule when defining messages via plugin settings
- Added support to wrap metadata in some parent element. Useful when metadata is used for other plugins, too.
- Refactored tests and demos: Less files, better demos
- Improved documentation: More examples for methods, more reference texts explaining some basics


About the Sigma Alliance
Our aim is to provide a range of guilds under one roof for players all over the world, casual and hardcore and at any level. We create a fun an interactive group where you can grow as a player and make friends at the same time.
Contact Us
You're welcome to join the server as there is allways someone online to talk to.


Here are the basic steps for how to get started with Github and Jekyll. Posts are located until the _posts
directory. The files are in markdown format. File names need to be specifically named and the top of each file needs to contain specific YAML Frontmatter. See current posts for usage:
Install Jekyll
There are several dependecies required before you install Jekyll:
- Make sure you have the latest version of XCode.
- Ruby
- Ruby Gems
- NodeJS
- Python 2.7
Now install Jekyll:
Clone Repository
The website is created under the gh
branch and not the main branch. The website is launched through the main branch. Clone the repository where you want it on your local computer.
When you have made changes to the website make sure to commit those changes
Publish Website
In order to publish the website, you have to compile the pages. Within the ‘gh’ branch, type:


{% extends "app/base.html" %} {% block title %}About Us{% endblock %} {% block breadcrumbs %}
We educate, promote and support the research, development and use of open source Python software in Washington, D.C. and metropolitan Maryland and Virginia.
We serve the DC Python user and developer community through:
DC Python's monthly user group meeting, held on the first tuesday of each month, is our most popular activity. One or two speakers will present on a topic of interest to the Python community. We'd love for you to volunteer to present a topic that you're passionate about!
Our second regularly scheduled event is Office Hours, held the fourth Tuesday of the month each month.
Our third regularly scheduled event is PythonLab: share and learn Python 2.7, held every Saturday.
We also regularly support sprints and tutorials. If you're an open source project that could use a sprint or you're looking to do training, DC Python can help you with finding space, resources, and in marketing your event.
We're always looking to raise funds both for holding local events, and for the Python community as a whole. We encourage potential sponsors to either donate directly, or to contact us so we can find something beneficial for both parties.
DC Python is the longest continuously meeting Python-technology-focused user's group in DC, and one of the oldest in the world.
Formerly known as ZPUGDC (the Zope/Python Users Group of DC), DC Python was started in 1999 by Chris Abraham. Later it restarted as a Plone-focused user group led by Joel Burton. DC Python's first and current President and Executive Director, Alex Clark, has been an integral part of both the organization of events, as well as the promotion and growth of the group since ZPUGDC's inception under Joel's leadership. By 2006, Alex had fully assumed responsibility for running and maintaining the group and its activities and continues to lead the group (with help from many others) to the present day.
For many years, Zope was the technology that brought people to Python. Our focus at ZPUGDC reflected that primary interest. However, in keeping with the trends of recent years, we've expanded our outreach to encompass any/all Python-related technologies, subsequently re-naming our organization to DC Python in order to reflect our more current and broader outreach. We are proud of our history, our legacy and all of our names!
Over the years, we have provided the DC Python community with numerous trainings, speaking engagements, boot camps, sprints, group meetings and other related activities. However, our most significant contribution to the open-source development world to date is the very successful organization and hosting of the 2008 Plone Conference in Washington, D.C.. Over 300 participants attended events including the conference, pre-conference trainings and a post-conference development sprint. It was during that time that in order to enhance, strengthen and solidfy our outreach to the community we serve, DC Python (known legally as ZPUGDC, Inc.) formally formed and organized as a non-profit 501(c)(3) organization registered in the State of Maryland, USA. Our non-profit status enables us to serve the Python community with structure, transparency and legitimacy.
DC Python's board is comprised of volunteers from the DC Python community who donate their time and expertise to handle the logistics of running the user group's activities.
Currently, the following people serve on the DC Python board:
Alex Clark is a Python Web Developer & Musician. He has a Bachelor of Science in Computer Science from Loyola University in Maryland and has worked professionally as a System Administrator, Network Engineer and Software Engineer since 1998.
David Greisen is a lawyer and programmer. He has a B.S. in physics from Harvey Mudd College, and a J.D. from University of Chicago. He is interested in the intersection between law and technology. David currently works with the Consumer Financial Protection Bureau.
Amy Clark brings many years of professional sales, marketing and management, administrative and financial/legal experience to the DC Python team. She is in charge of all financial, legal, and government-related (both state and federal) responsibilities, as well as maintaining the records and day-to-date operation of the organization. Amy facilitates a seamless, uncomplicated provision of DC Python's offerings and ensures the quality, accuracy and efficiency of all DC Python projects and services.
If you're interested in serving on the DC Python board, please let us know! We are actively seeking new members to help us fulfill our mission to the community.


java.util.Map.put()
methods. Such calls could be replaced
by the shorter and clearer keyed access form.
Example:
def map = ["foo": "bar"]
map.put("foo", "baz") // map.put("foo", "baz") could be replaced with map["foo"] = "baz"
After the quick-fix is applied:
def map = ["foo": "bar"]
map["foo"] = "baz"


Noah Brown
Personal Info:
- My Major: Computer Science
- My Highschool: Murphysboro High School
- College Year: Sophmore
- Favorite Iecream: Cookie Dough Icecream
My Five Favoite Books
- The Hero and the Crown, Robin Mckinley
- The Blue Sword, Robin Mckinley
- Spice and Wolf, Isuna Hasekura
- Lord of the rings, J.R.R. Tolkien
- Red Wall, Brian Jacques
Woes of a leaf
I walk a few blocks to work each day, and lately there have been quite a few leaves on the sidewalks.
Gently Falling Leaf.
Here it lies, eternal sleep.
Victim to my feet.
My Personal Interests
One of my biggest interests is Video games, and has been for some time. Recently though I have had a lot of fun playing Call of Duty Modern Warfare with some of my close friends and actually a few co-workers. I feel that they best way to enjoy video games is with friends.
Another interest of mine is that of Anime and Manga. I just love the different ways they use to tell stories compared to some western cultures. They do a great job with their world buiding and how immersive those worlds can be. One of my favorite books that I listed is actually a manga called Spice and Wolf.
Lastly a huge interest of mine is pets and animals. I love dogs, but unfortunately my current living situation doesn't allow me to own a dog. I currently own two ball pythons which I got only a few months ago. They have already grown quite a bit, and recently just went through their first sheds.
Class Schedule
| Monday | Tuesday | Wednesday | Thursday | Friday | |
| 12:30 | CS 2420 | COMM 2110 | CS 2420 | COMM 2110 | Homework |
| 1:00 | |||||
| 1:30 | |||||
| 2:00 | Work | Work | |||
| 2:30 | |||||
| 3:00 | |||||
| 3:30 | |||||
| 4:00 | |||||
| 4:30 | |||||
| 5:00 | |||||
| 5:30 | CS 2550 | CS 2810 | CS 2550 | CS 2810 | |
| 6:00 | |||||
| 6:30 |


Your Weather Dashboard: WEATHER ROCKS!
Austin
Boston
Minneapolis
Search For A City Using The Search Form
Current Conditions
Time
Temp
Humidity
Wind Speed
UV Index
UV Index Conditions
Five Day Forecast
Future Forecast
Future Forecast
Future Forecast
Future Forecast
Future Forecast


Shopping Cart
Tech Stack: React, React Query, MUI
CI-CD Demo
Tech Stack: React, CI-CD from Github
Burger Order App
Tech Stack: React
Coffee Shop
Tech Stack: Gatsby
Covid-19 Tracker App


If you register on Chavah, your email address and any information you supply via your profile will be stored on Chavah Messianic Radio. We don't share your email address or any other personal information with 3rd parties.
Don't want your account anymore? Contact us and we will remove your email and other related information from our servers.
Should this policy change in the future, we'll notify you through email.


BOOKSHOP2 Application Error
Go back to application
An exception has occurred and has been logged.
.
Operations can be reached at
<EMAIL_ADDRESS>.


Vlab-Docs
- Get started
- Browse features
- Student's quick guide
- Lecturer's quick guide
- Installation quick guide
- Student's Quick Guide
- Lecturer's Quick Guide
- Super Admins
- For school
- Add School Admins
- Add Schools
- Students
- View/Track Students Site Use Stats
- For Lecturer's
- View / Track Students Site Use Stats
- For School Admin's
- Add Faculties
- Add Instructors
- Add Student's
- Site admins (University Admin)


Hi! Welcome to Human Interest stories about the Naval Undersea Warfare Center, located in Keyport, Washington. This website features a few interesting stories from both the 1910's and the 1980's.
For more about the history of NUWC, click here to see the online version of Torpedo Town U.S.A. Torpedo Town U.S.A. Online Version


MORE Events
1)onload
2)onerror
3)onscroll
4)onresize
Form Events
1)onfocus
2)onblur
3)onsubmit
4)onreset
5)onchange
Click here for JS Code


1. Record architecture decisions
Date: 12/02/2016
Status
Accepted
Context
We need to record the architectural decisions made on this project.
Decision
We will use Architecture Decision Records, as described by Michael Nygard in this article: http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
Consequences
See Michael Nygard's article, linked above.
2. Implement as shell scripts
Date: 12/02/2016
Status
Accepted
Context
ADRs are plain text files stored in a subdirectory of the project.
The tool needs to create new files and apply small edits to the Status section of existing files.
Decision
The tool is implemented as shell scripts that use standard Unix tools -- grep, sed, awk, etc.
Consequences
The tool won't support Windows. Being plain text files, ADRs can be created by hand and edited in any text editor. This tool just makes the process more convenient.
Development will have to cope with differences between Unix variants, particularly Linux and MacOS X.
3. Single command with subcommands
Date: 12/02/2016
Status
Accepted
Context
The tool provides a number of related commands to create and manipulate architecture decision records.
How can the user find out about the commands that are available?
Decision
The tool defines a single command, called adr
.
The first argument to adr
(the subcommand) specifies the
action to perform. Further arguments are interpreted by the
subcommand.
Running adr
without any arguments lists the available
subcommands.
Subcommands are implemented as scripts in the same
directory as the adr
script. E.g. the subcommand new
is
implemented as the script adr-new
, the subcommand help
as the script adr-help
and so on.
Helper scripts that are part of the implementation but not subcommands follow a different naming convention, so that subcommands can be listed by filtering and transforming script file names.
Consequences
Users can more easily explore the capabilities of the tool.
Users are already used to this style of command-line tool. For example, Git works this way.
Each subcommand can be implemented in the most appropriate language.
4. Markdown format
Date: 12/02/2016
Status
Accepted
Context
The decision records must be stored in a plain text format:
This works well with version control systems.
It allows the tool to modify the status of records and insert hyperlinks when one decision supercedes another.
Decisions can be read in the terminal, IDE, version control browser, etc.
People will want to use some formatting: lists, code examples, and so on.
People will want to view the decision records in a more readable format than plain text, and maybe print them out.
Decision
Record architecture decisions in Markdown format.
Consequences
Decisions can be read in the terminal.
Decisions will be formatted nicely and hyperlinked by the browsers of project hosting sites like GitHub and Bitbucket.
Tools like Pandoc can be used to convert the decision records into HTML or PDF.
5. Help comments
Date: 13/02/2016
Status
Accepted
Context
The tool will have a help
subcommand to provide documentation
for users.
It's nice to have usage documentation in the script files themselves, in comments. When reading the code, that's the first place to look for information about how to run a script.
Decision
Write usage documentation in comments in the source file.
Distinguish between documentation comments and normal comments. Documentation comments have two hash characters at the start of the line.
The adr help
command can parse comments out from the script
using the standard Unix tools grep
and cut
.
Consequences
No need to maintain help text in a separate file.
Help text can easily be kept up to date as the script is edited.
There's no automated check that the help text is up to date. The tests do not work well as documentation for users, and the help text is not easily cross-checked against the code.
This won't work if any subcommands are not implemented as scripts that use '#' as a comment character.
6. Packaging and distribution in other version control repositories
Date: 16/02/2016
Status
Accepted
Context
Users want to install adr-tools with their preferred package
manager. For example, Ubuntu users use apt
, RedHat users use
yum
and Mac OS X users use Homebrew.
The developers of adr-tools
don't know how, nor have permissions,
to use all these packaging and distribution systems. Therefore packaging
and distribution must be done by "downstream" parties.
The developers of the tool should not favour any one particular packaging and distribution solution.
Decision
The adr-tools
project will not contain any packaging or
distribution scripts and config.
Packaging and distribution will be managed by other projects in separate version control repositories.
Consequences
The git repo of this project will be simpler.
Eventually, users will not have to use Git to get the software.
We will have to tag releases in the adr-tools
repository so that
packaging projects know what can be published and how it should be
identified.
We will document how users can install the software in this project's README file.
7. Invoke adr-config executable to get configuration
Date: 17/12/2016
Status
Accepted
Context
Packagers (e.g. Homebrew developers) want to configure adr-tools to match the conventions of their installation.
Currently, this is done by sourcing a file config.sh
, which should sit beside the adr
executable.
This name is too common.
The config.sh
file is not executable, and so doesn't belong in a bin directory.
Decision
Replace config.sh
with an executable, named adr-config
that outputs configuration.
Each script in ADR Tools will eval the output of adr-config
to configure itself.
Consequences
Configuration within ADR Tools is a little more complicated.
Packagers can write their own implementation of adr-config
that outputs configuration that matches the platform's installation conventions, and deploy it next to the adr
script.
To make development easier, the implementation of adr-config
in the project's src/ directory will output configuration that lets the tool to run from the src/ directory without any installation step. (Packagers should not include this script in a deployable package.)
8. Use ISO 8601 Format for Dates
Date: 21/02/2017
Status
Accepted
Context
adr-tools
seeks to communicate the history of architectural decisions of a
project. An important component of the history is the time at which a decision
was made.
To communicate effectively, adr-tools
should present information as
unambiguously as possible. That means that culture-neutral data formats should
be preferred over culture-specific formats.
Existing adr-tools
deployments format dates as dd/mm/yyyy
by default. That
formatting is common formatting in the United Kingdom (where the adr-tools
project was originally written), but is easily confused with the mm/dd/yyyy
format preferred in the United States.
The default date format may be overridden by setting ADR_DATE
in config.sh
.
Decision
adr-tools
will use the ISO 8601 format for dates: yyyy-mm-dd
Consequences
Dates are displayed in a standard, culture-neutral format.
The UK-style and ISO 8601 formats can be distinguished by their separator
character. The UK-style dates used a slash (/
), while the ISO dates use a
hyphen (-
).
Prior to this decision, adr-tools
was deployed using the UK format for dates.
After adopting the ISO 8601 format, existing deployments of adr-tools
must do
one of the following:
- Accept mixed formatting of dates within their documentation library.
- Update existing documents to use ISO 8601 dates by running
adr upgrade-repository


This actually is a DataCamp Project. But I modified some code or more specifically drew two more beautiful pictures than the original two and added some comments. You can download the dataset at here.
In this project, the author assumes you are already familiar with networkx
and
. If you don’t know how to use them, you can learn these courses:pandas
I actually finished the first course and half of the second. But for this project, I think it is a better choice to look the offical documentation at here and here respectively.
If you don’t want to know technical details, you can just read the problem descriptions and results, totally skip the code blocks.
1. Winter is Coming. Let’s load the dataset ASAP
If you haven't heard of Game of Thrones, then you must be really good at hiding. Game of Thrones is the hugely popular television series by HBO based on the (also) hugely popular book series A Song of Ice and Fire by George R.R. Martin. In this notebook, we will analyze the co-occurrence network of the characters in the Game of Thrones books. Here, two characters are considered to co-occur if their names appear in the vicinity of 15 words from one another in the books.
This dataset constitutes a network and is given as a text file describing the edges between characters, with some attributes attached to each edge. Let’s start by loading in the data for the first book A Game of Thrones and inspect it.
# Importing modules
import pandas as pd
import matplotlib.pyplot as plt
# Reading in datasets/book1.csv
book1 = pd.read_csv('datasets/book1.csv')
# Printing out the head of the dataset
book1.head()
| Source | Target | Type | weight | book | |
|---|---|---|---|---|---|
| 0 | Addam-Marbrand | Jaime-Lannister | Undirected | 3 | 1 |
| 1 | Addam-Marbrand | Tywin-Lannister | Undirected | 6 | 1 |
| 2 | Aegon-I-Targaryen | Daenerys-Targaryen | Undirected | 5 | 1 |
| 3 | Aegon-I-Targaryen | Eddard-Stark | Undirected | 4 | 1 |
| 4 | Aemon-Targaryen-(Maester-Aemon) | Alliser-Thorne | Undirected | 4 | 1 |
2. Time for some Network of Thrones
The resulting DataFrame book1
has 5 columns: Source
, Target
, Type
, weight
, and book
. Source and target are the two nodes that are linked by an edge. A network can have directed or undirected edges and in this network all the edges are undirected. The weight attribute of every edge tells us the number of interactions that the characters have had over the book, and the book column tells us the book number.
Once we have the data loaded as a pandas DataFrame, it's time to create a network. We will use networkx
, a network analysis library, and create a graph object for the first book.
# Importing modules
import networkx as nx
# Creating an empty graph object
G_book1 = nx.Graph()
3. Populate the network with the DataFrame
Currently, the graph object G_book1
is empty. Let's now populate it with the edges from book1
. And while we're at it, let's load in the rest of the books too!
# Iterating through the DataFrame to add edges
for _, edge in book1.iterrows(): # iterrows method returns a iterable object contains both index and row
G_book1.add_edge(edge['Source'], edge['Target'], weight=edge['weight'])
# Creating a list of networks for all the books
books = [G_book1]
book_fnames = ['datasets/book2.csv', 'datasets/book3.csv', 'datasets/book4.csv', 'datasets/book5.csv']
for book_fname in book_fnames:
book = pd.read_csv(book_fname)
G_book = nx.Graph()
for _, edge in book.iterrows():
G_book.add_edge(edge['Source'], edge['Target'], weight=edge['weight'])
books.append(G_book)
4. Finding the most important character in Game of Thrones
Is it Jon Snow, Tyrion, Daenerys, or someone else? Let's see! Network Science offers us many different metrics to measure the importance of a node in a network. Note that there is no "correct" way of calculating the most important node in a network, every metric has a different meaning.
First, let's measure the importance of a node in a network by looking at the number of neighbors it has, that is, the number of nodes it is connected to. For example, an influential account on Twitter, where the follower-followee relationship forms the network, is an account which has a high number of followers. This measure of importance is called degree centrality.
Using this measure, let's extract the top ten important characters from the first book (book[0]
) and the fifth book (book[4]
).
# Calculating the degree centrality of book 1
deg_cen_book1 = nx.degree_centrality(books[0])
# Calculating the degree centrality of book 5
deg_cen_book5 = nx.degree_centrality(books[4])
# Sorting the dictionaries according to their degree centrality and storing the top 10
sorted_deg_cen_book1 = sorted(deg_cen_book1.items(), key=lambda x:x[1], reverse=True)[0:10]
# Sorting the dictionaries according to their degree centrality and storing the top 10
sorted_deg_cen_book5 = sorted(deg_cen_book5.items(), key=lambda x:x[1], reverse=True)[0:10]
# Printing out the top 10 of book1 and book5
print('top10 of book1: ', sorted_deg_cen_book1, '/n')
print('top10 of book5: ', sorted_deg_cen_book5)
top10 of book1: [('Eddard-Stark', 0.3548387096774194), ('Robert-Baratheon', 0.2688172043010753), ('Tyrion-Lannister', 0.24731182795698928), ('Catelyn-Stark', 0.23118279569892475), ('Jon-Snow', 0.19892473118279572), ('Sansa-Stark', 0.18817204301075272), ('Robb-Stark', 0.18817204301075272), ('Bran-Stark', 0.17204301075268819), ('Joffrey-Baratheon', 0.16129032258064518), ('Cersei-Lannister', 0.16129032258064518)]
top10 of book5: [('Jon-Snow', 0.1962025316455696), ('Daenerys-Targaryen', 0.18354430379746836), ('Stannis-Baratheon', 0.14873417721518986), ('Tyrion-Lannister', 0.10443037974683544), ('Theon-Greyjoy', 0.10443037974683544), ('Cersei-Lannister', 0.08860759493670886), ('Barristan-Selmy', 0.07911392405063292), ('Hizdahr-zo-Loraq', 0.06962025316455696), ('Asha-Greyjoy', 0.056962025316455694), ('Melisandre', 0.05379746835443038)]
5. Evolution of importance of characters over the books
According to degree centrality, the most important character in the first book is Eddard Stark but he is not even in the top 10 of the fifth book. The importance of characters changes over the course of five books because, you know, stuff happens... ;)
Let's look at the evolution of degree centrality of a couple of characters like Eddard Stark, Jon Snow, and Tyrion, which showed up in the top 10 of degree centrality in the first book.
%matplotlib inline
# Creating a list of degree centrality of all the books
evol = [nx.degree_centrality(book) for book in books]
# Creating a DataFrame from the list of degree centralities in all the books
# Because it's possible that a character is not in every book, so use .fillna(0) to prevent `NaN` entries.
idx = ['book1', 'book2', 'book3', 'book4', 'book5']
degree_evol_df = pd.DataFrame.from_records(evol, index=idx).fillna(0)
# Plotting the degree centrality evolution of Eddard-Stark, Tyrion-Lannister and Jon-Snow
degree_evol_df.plot(y=['Eddard-Stark', 'Tyrion-Lannister', 'Jon-Snow'])
<matplotlib.axes._subplots.AxesSubplot at 0x7f785d62ec18>
6. What’s up with Stannis Baratheon?
We can see that the importance of Eddard Stark dies off as the book series progresses. With Jon Snow, there is a drop in the fourth book but a sudden rise in the fifth book.
Now let's look at various other measures like betweenness centrality and PageRank to find important characters in our Game of Thrones character co-occurrence network and see if we can uncover some more interesting facts about this network. Let's plot the evolution of betweenness centrality of this network over the five books. We will take the evolution of the top four characters of every book and plot it.
# Creating a list of betweenness centrality of all the books just like we did for degree centrality
evol = [nx.betweenness_centrality(book) for book in books]
# Making a DataFrame from the list
betweenness_evol_df = pd.DataFrame.from_records(evol).fillna(0)
# Finding the top 4 characters in every book
set_of_char = set()
for i in range(5):
set_of_char |= set(list(betweenness_evol_df.T[i].sort_values(ascending=False)[0:4].index))
list_of_char = list(set_of_char)
# Plotting the evolution of the top characters in subplot
fig, axes = plt.subplots(nrows=4, ncols=3)
#print(list_of_char) 11
for i in range(3):
for j in range(3):
betweenness_evol_df.plot(ax=axes[i, j], y=list_of_char[i*3+j], figsize=(13, 7), ylim=(0, 0.5))
for j in range(2):
betweenness_evol_df.plot(ax=axes[3, j], y=list_of_char[9+j], figsize=(13, 7), ylim=(0, 0.5))
7. What does the Google PageRank algorithm tell us about Game of Thrones?
We see a peculiar rise in the importance of Stannis Baratheon over the books. In the fifth book, he is significantly more important than other characters in the network, even though he is the third most important character according to degree centrality.
PageRank was the initial way Google ranked web pages. It evaluates the inlinks and outlinks of webpages in the world wide web, which is, essentially, a directed network. Let's look at the importance of characters in the Game of Thrones network according to PageRank.
# Creating a list of pagerank of all the characters in all the books
evol = [nx.pagerank(book) for book in books]
# Making a DataFrame from the list
pagerank_evol_df = pd.DataFrame.from_records(evol).fillna(0)
# Finding the top 4 characters in every book
set_of_char = set()
for i in range(5):
set_of_char |= set(list(pagerank_evol_df.T[i].sort_values(ascending=False)[0:4].index))
list_of_char = list(set_of_char)
# print(len(list_of_char)) 14
# Plotting the top characters
fig, axes = plt.subplots(nrows=5, ncols=3)
for i in range(5):
for j in range(3):
pagerank_evol_df.plot(ax=axes[i, j], y=list_of_char[3*i+j], ylim=(0, 0.08), figsize=(13, 9))
# Although an IndexError will be thrown, but the output picture is correct
8. Correlation between different measures
Stannis, Jon Snow, and Daenerys are the most important characters in the fifth book according to PageRank. Eddard Stark follows a similar curve but for degree centrality and betweenness centrality: He is important in the first book but dies into oblivion over the book series.
We have seen three different measures to calculate the importance of a node in a network, and all of them tells us something about the characters and their importance in the co-occurrence network. We see some names pop up in all three measures so maybe there is a strong correlation between them?
Let's look at the correlation between PageRank, betweenness centrality and degree centrality for the fifth book using Pearson correlation.
# Creating a list of pagerank, betweenness centrality, degree centrality
# of all the characters in the fifth book.
measures = [nx.pagerank(books[4]),
nx.betweenness_centrality(books[4], weight='weight'),
nx.degree_centrality(books[4])]
# Creating the correlation DataFrame
cor = pd.DataFrame.from_records(measures)
# Calculating the correlation
cor.T.corr() # remember to transpose the dataframe, otherwise the correlation between characters will be computed.
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 1.000000 | 0.793372 | 0.971493 |
| 1 | 0.793372 | 1.000000 | 0.833816 |
| 2 | 0.971493 | 0.833816 | 1.000000 |
9. Conclusion
We see a high correlation between these three measures for our character co-occurrence network.
So we've been looking at different ways to find the important characters in the Game of Thrones co-occurrence network. According to degree centrality, Eddard Stark is the most important character initially in the books. But who is/are the most important character(s) in the fifth book according to these three measures?
This task can easily be completed using the idxmax method.
# Finding the most important character in the fifth book,
# according to degree centrality, betweenness centrality and pagerank.
p_rank, b_cent, d_cent = cor.idxmax(axis=1)
# Printing out the top character accoding to the three measures
print(p_rank, b_cent, d_cent)
Jon-Snow Stannis-Baratheon Jon-Snow


This module defines a multi-value Hash container.
A string hash table for elements of type T. It works similar to an associative array, but can store more than one value for a key.
Internally the values are stored as a 2D associative array which can be accessed with the all property. 1D array functionality is mimiced for the common case of one value for an index. In the case where 1D style access is made to a key with more than one value, the first value is used.
Example. For a Hash x, corresponding to a=2&b=3&a=5.
x["a"] will return 2 (the first (usually the only) value for "a").
x("a") will return [2,5] (all the values for "a" in an array).
x["a"] = 7 Assigns 7 to "a".
x("a") now returns [7].
x["a"] = [12,4] Assigns [12,4] to "a".
x("a") now returns [12,4] and x["a"] returns 12.
x.add("a",6) appends 6 to "a".
x("a") now returns [12,4,6].
x["b"] returns 3, while x("b") returns [3].
x.length returns 2, x("a").length returns 3, and x("b").length returns 1.
Properties
| all | Returns contents as a 2D associative array |
| length | Number of keys used |
| keys | The keys as an array |
| values | The values as a 2D array with no keys |
Methods
| this(this) | Deep copy constructor. |
| T[] opCall(string key) | Returns all contents for key. |
| T opIndex(string key) | Returns first content for key. |
| void opIndexAssign(T value, string key) | Assigns a value to the key, replacing existing contents. |
| void opIndexAssign(T[] value, string key) | Assigns an array to the key, replacing existing contents. |
| T[]* opIn_r(string key) | Returns pointer to contents for key, or null if key is not valid. |
| Hash rehash() | Re hashes the container. |
| void add(string key, T value) | Appends a value to key. |
| void remove(string key) | Removes key and its contents. |
| int opApply(int delegate(ref T[]) dg) | Allows foreach over values. Elements are arrays, so all stored values can be accessed. |
| int opApply(int delegate(ref string, ref T[]) dg) | Same as above but supplies keys as well. |
| void clear() | Clears the structure, setting it to empty. |


(.�?.) NA* HCV risk populations countries testing population hepatitis MENA generalized concentrated virus Health program prevalence epidemic, epidemic general needed health systematic World based identify Abu�?RaddadLJ. infection pooled {border-style Egypt collab: countries. exposed number px;} #ffffff;} tested care epidemiology having populations, treatment East Populations epidemiologic estimates liver Hepatitis Middle North Testing antibody individuals mean review studies Organization clinical exposure high�?risk intermediate measures ranged data efficiency expansion infected median ChemaitellyH, Global Risk Table conditions, country database using Countries size specific (Table Epidemiology HIV KouyoumjianSP, MahmudS, PWID PWID, Program Viral analyses chronic chronically epidemics path relative tests yields .%. Africa: Egypt, Egypt: Geneva, Population United analysis countries, curve different infection. px; special targeting viral weighting {font-family (.�?,.) CI) ChaabnaK, Exposed Pooled Qatar RRs available coverage epidemics, epidemics. exposures, font-size inject people populations. prioritization programs region regional strategies (Fig. Accessed Cornell Fig. Having Infect MumtazGR, Pakistan). double; findings high presented reviews targeted GHSS However, Lebanon MohamoudYA, Number One;:e. Prevalence Published Sensitivity Switzerland: Wiley Yields bold border-color border-width conducted considered country�?specific development disease drugs efficient elimination hierarchy highest include included inform meta�?analysis. population. provided public results risk, single solid; strategic strategy synthesis. testing, transmission {font-style {font-weight (.�? (C) (Egypt (includes .�?.) Algeria Arab CI, Dis;:�?. Disease Eastern Emirates Gastroenterol General Hepat;:�?. Hepatology;:�?. Int John KanaaniZ, Ministry National Organization; Pakistan, Research Study Supporting Weill achieve achieving additional burden calculated challenge clearance courier; drug effects efficiently em; epidemic§ epidemic‡ exposure. followed gains higher impact individual. infection, infections informed inverse major meta�?analyses, meta�?regressions. million policies pt;} recent role scientific spontaneous target terms test�?and�?treat type used versus �?�?†)


Logged In/Out Testing & Debugging
- Are you Logged in?: {if logged_in}Your are Logged In{/if}{if logged_out}Your are Logged Out{/if}
- Currently Logged in Member ID: {logged_in_member_id}
- Currently Logged in Username: {logged_in_username}
- Currently Logged in Screen Name: {logged_in_screen_name}
- Currently Logged in Member Group ID: {logged_in_group_id}
{!-- End Testing and Debugging --}
{exp:fbc:prepare_page}


Oman weather: Al Amerat-Baushar road closed due to rain
by Times News ServiceMuscat:The Royal Oman Police (ROP) has closed Al Amerat-Baushar road due to heavy rainfall. Motorists have been instead urged to take the Amerat-Wadi Adai alternate route.
Meanwhile, Abdullah Al Khadhoori, an official at Public Authority for Civil Aviation (PACA) said that there are chances of heavy rain in most parts of the Sultanate. “Late night showers is expected across many parts of Oman,” he added.


Home
Page Layouts
2 Columns
Choose
file_upload
×
Fix this and try and try again
×
Fix this and try and try again


Evening 10 Series 2018 Event 4
| TL 4 |
01 May 18 |
|
10 |
miles |
| Name |
Position |
Road bike |
Actual Time |
Avg. mph |
| |
|
|
|
|
| James
Lowe |
1 |
|
00:23:45 |
25.26 |
| Jonathan
Durnin |
2 |
|
00:24:32 |
24.46 |
| John
Ellis |
3 |
1 |
00:24:52 |
24.13 |
| Peter
Bentley |
4 |
|
00:25:05 |
23.92 |
| Gary
Roberts |
5 |
|
00:25:26 |
23.59 |
| Adrian
Killworth |
6 |
|
00:25:36 |
23.44 |
| Chris
Dainty |
7 |
|
00:26:04 |
23.02 |
| Julian
Middleton |
8 |
|
00:26:14 |
22.87 |
| David
Wilson |
9 |
|
00:26:25 |
22.71 |
| Bill
Barrie |
10 |
|
00:26:44 |
22.44 |
| Roger
Kockelbergh |
11 |
|
00:26:52 |
22.33 |
| Mitchell
James |
12 |
|
00:27:33 |
21.78 |
| Dominic
Switzer |
13 |
|
00:27:36 |
21.74 |
| Mark
Chapman |
14 |
2 |
00:28:02 |
21.40 |
| Stephen
Combes |
15 |
|
00:28:06 |
21.35 |
| Graham
Pigott |
16 |
|
00:28:10 |
21.30 |
| Simon
Ward |
17 |
|
00:28:20 |
21.18 |
| Mike Ives |
18 |
3 |
00:28:21 |
21.16 |
| Ian
Murdey |
19 |
|
00:28:23 |
21.14 |
| Chris
Lydall |
20 |
|
00:28:25 |
21.11 |
| Harrison
Fay |
21 |
4 |
00:29:04 |
20.64 |
| Matthew
Vallins |
22 |
5 |
00:29:07 |
20.61 |
| Nick
Clarke |
23 |
6 |
00:29:15 |
20.51 |
| Stewart
Holland |
24 |
7 |
00:29:16 |
20.50 |
| Wayne
Holton |
25 |
8 |
00:29:33 |
20.30 |
| Kevin
Mills |
26 |
9 |
00:30:12 |
19.87 |
| Tom Evans |
27 |
|
00:30:14 |
19.85 |
| Charlie
Simpson |
28 |
|
00:30:37 |
19.60 |
| Jamie
Lydall |
29 |
|
00:30:43 |
19.53 |
| Huw
Wilson |
30 |
|
00:31:55 |
18.80 |
| Richard
Jones |
31 |
|
00:32:35 |
18.41 |
| Steve
Alden |
32 |
|
00:32:54 |
18.24 |
| Lorna
Marlow |
33 |
10 |
00:32:55 |
18.23 |
| Andrew
Weatherby |
34 |
11 |
00:33:39 |
17.83 |
| William
Perkins |
35 |
12 |
00:34:06 |
17.60 |
| Ben Brant |
36 |
|
00:35:43 |
16.80 |
| Sophie
Ward |
37 |
13 |
00:38:56 |
15.41 |
|
|
|
|
|


Phone: +234<PHONE_NUMBER> +234<PHONE_NUMBER> (+44)7904 125 631
Address: 10 Norman Williams Street, off Keffi Street, Ikoyi, Lagos, Nigeria.
Office hours: Monday – Friday. 9am-4pm.


Silent nights: The cannabis Christmas pudding to “take the worry out of the festive season”
by Iain LynnThe traditional family row after Christmas dinner could be a thing of the past thanks to a new Christmas pudding - infused with cannabis.
Marketed as “the most festive way to get a hit of the glorious green”, the pudding is infused with CBD and Cannabis Terpenes.
It is 100 per cent legal and, its makers insist, is a healthy and relaxing Christmas Day dessert.
READ MORE: This is when Asda, Tesco, Sainsbury’s and other supermarkets open their Christmas food delivery bookings
Homeware and lifestyle retailer Firebox.com, who have created the £9.99 pudding, said it is the ideal way to “take the worry out of the festive season”.
A spokesperson said: “Made with fresh vine fruits, sweet currants, sultanas and raisins, and not forgetting the all-important CBD, this will be the most unique dessert you’ve ever tasted.
“The best part is that you don’t have to prepare it months in advance.
“Even the most conservative relatives won’t object to you getting a hit of the calming green stuff via this handmade pudding.
“Have one of these babies tucked away in the cupboard and you’ll be able to diffuse any Christmas emergency.
“Big row kicking off? CBD to the rescue. Feeling frazzled? Stressed is desserts spelled backwards, so bring out the pudding.”