exit if ($not_running_Perl); #==========================================================# # Print introductory messages to the config.web installer. # #==========================================================# print <<'EOF'; This Perl script configures and installs web-based tools for viewing the SCA Ordinary and searching the SCA Armorial. This portion of the installation should be performed ON THE WEBSERVER. EOF $opt = shift; $Cgibin = 0; if ($opt eq '-c') { $Cgibin = 1; $opt = shift; } $Y = 'n'; if ($opt eq '-f') { $Y = 'y'; $opt = shift; } $Rcs = 0; if ($opt eq '-r') { $Rcs = 1; } %pages = ( 'SearchMenu', 'search menu:index', 'NameHintsPage', 'name search hints:hints_name', 'DateHintsPage', 'date search hints:hints_date', 'DescHintsPage', 'armory description search hints:hints_desc', 'NpHintsPage', 'name pattern search hints:hints_np', 'BpHintsPage', 'blazon pattern search hints:hints_bp', 'ComplexHintsPage', 'complex search hints:hints_complex', 'OverviewPage', 'about SCA heraldry:heraldry_overview', 'LimitPage', 'about search limits:search_limits', 'DownloadPage', 'about obtaining the database:data_obtain', 'DbFormatPage', 'about the database format:data_format', 'DbSymbolsPage', 'non-ASCII symbols:data_symbols' ); %scripts = ( 'Glossary', 'glossary:glossary', 'Copyright', 'database copyright:data_copyright', 'Version', 'database version:version', 'NameSearch', 'name search:oanda_name', 'DescSearch', 'armory description search:oanda_desc', 'NpSearch', 'name pattern search:oanda_np', 'BpSearch', 'blazon pattern search:oanda_bp', 'DateSearch', 'date/kingdom search:oanda_date', 'ComplexSearch', 'complex search:oanda_complex' # 'Correction', 'correction request:correction' ); #==============================================# # Functions specific to the config.web script. # #==============================================# # config.web function to install an HTML page in a file, # taking the path from %config. sub page_install { #global (%pages); local ($text, $tag) = @_; local ($what, $file) = split (/\:/, $pages{$tag}); &key_install ($text, $tag, 0444, $what); } # config.web function to install a CGI script in a file, # taking the path from %config. sub script_install { #global (%scripts); local ($text, $tag) = @_; local ($what, $file) = split (/\:/, $scripts{$tag}); &key_install ($text, $tag, 0555, $what); } # config.web function to print a list. sub print_list { local ($i) = 0; foreach $file (sort @_) { local ($what, $name) = split (/\:/, $file); printf " + %-35s", $what; if ($i++%2) { printf "\n"; } else { printf ' '; } } printf "\n" if ($i%2); } # config.web function to set the path and URL of an HTML page. sub set_page_info { #global (%config, %pages); local ($tag) = @_; local ($what, $file) = split (/\:/, $pages{$tag}); $config{'XX'.$tag.'PathXX'} = $config{'XXPagePathXX'} . "/$file.html"; $config{'XX'.$tag.'UrlXX'} = $config{'XXPageUrlXX' } . "/$file.html"; } # config.web function to set the path and URL of a CGI script. sub set_script_info { #global (%config, %scripts); local ($tag) = @_; local ($what, $file) = split (/\:/, $scripts{$tag}); $config{'XX'.$tag.'PathXX'} = $config{'XXScriptPathXX'} . "/$file.cgi"; $config{'XX'.$tag.'UrlXX'} = $config{'XXScriptUrlXX' } . "/$file.cgi"; } # config.web function to get the URL for an HTML page. sub get_html_url { #global (%config, $ServerName, $ServerPort); local ($tag, $what, $path) = @_; local ($url, $_); $url = $config{$tag}; if ($url eq '') { $url = $path; $url =~ s/^$DocumentRoot//; $url = "http://$ServerName:$ServerPort$url"; } print "\nURL for $what:\n[$url] "; $url = &input ($url); $config{$tag} = $url; return $url; } # config.web function to set the URL for a CGI script. sub get_cgi_url { #global (%config, $ServerName, $ServerPort, $Cgibin); local ($tag, $what, $path) = @_; local ($url, $_); $url = $config{$tag}; if ($url eq '') { $url = $path; if ($Cgibin) { $url =~ s/^$ScriptAlias//; $url = "http://$ServerName:$ServerPort/cgi-bin$url"; } else { $url =~ s/^$DocumentRoot//; $url = "http://$ServerName:$ServerPort$url"; } } print "\nURL for $what:\n[$url] "; $url = &input ($url); $config{$tag} = $url; return $url; } #===============================================# # Slurp hunks of text into config.web's memory. # #===============================================# # # config.web slurps common config functions into $Helpers. # $Helpers = <<'XXEOFXX'; # Common config function to advise user on machine questions. sub machine_questions { local ($pptag, $afitag, $sstag) = @_; print <<'EOF'; Now I need you to answer a few questions about this machine. For each question: + The default answer is given in [brackets]. + To override the default answer, enter the correct answer in the space next to the brackets. + To accept the default answer, enter a blank line. EOF # Set $PerlPath. &set_perl_path ($pptag); # Set $AF_INET and $SOCK_STREAM. &set_network_constants ($afitag, $sstag); } # Common config function to read input from terminal unless $Y is set to 'y'. sub input { #global ($Y); local ($_) = ''; local ($default) = @_; if ($Y eq 'y') { printf "\n"; } else { $_ = <>; } s/\s//g; $_ = $default if ($_ eq ''); return $_; } # Common config function to get AF_INET and SOCK_STREAM. sub set_network_constants { #global ($AF_INET, $SOCK_STREAM, %config); local ($tag_AF_INET, $tag_SOCK_STREAM) = @_; $AF_INET = $config{$tag_AF_INET}; $AF_INET = 2 if ($AF_INET eq ''); print <<'EOF'; What is the numeric code (AF_INET) defined for the Internet domain in `/usr/include/sys/socket.h'? EOF print "[$AF_INET] "; $AF_INET = &input ($AF_INET); $config{$tag_AF_INET} = $AF_INET; $SOCK_STREAM = $config{$tag_SOCK_STREAM}; $SOCK_STREAM = 1 if ($SOCK_STREAM eq ''); print <<'EOF'; What is the numeric code (SOCK_STREAM) defined for the `stream' socket type in `/usr/include/sys/socket.h'? EOF print "[$SOCK_STREAM] "; $SOCK_STREAM = &input ($SOCK_STREAM); $config{$tag_SOCK_STREAM} = $SOCK_STREAM; } # Common config function to read the configuration from $conf_file. sub read_config_file { #global (%config, $conf_file); local (*CONF, $_, $tag, $value); %config = (); if (-r $conf_file && open (CONF, $conf_file)) { print "\nReading previous configuration from $conf_file ..."; while () { next if (/^\#/); chop; ($tag, $value) = split (/\|/); $config{$tag} = $value; } close (CONF); print " done.\n"; } } # Common config function to save the configuration to $conf_file. sub save_config { #global (%config, $conf_file); local (*CONF, $tag, $value); if (open (CONF, ">$conf_file")) { print "\nSaving new configuration to $conf_file ..."; while (($tag, $value) = each %config) { printf CONF "%s|%s\n", $tag, $value; } close (CONF); print " done.\n"; } } # Common config function to configure a text string. sub configure { #global (%config); local ($tag, $value); local ($_) = @_; print "\nConfiguring $what.\n"; while (($tag, $value) = each %config) { s/$tag/$value/g; } return $_; } # Common config function to install a text string in a file, # taking the path from %config. sub key_install { #global (%config); local ($text, $tag, $mode, $what) = @_; &install ($text, $config{'XX'.$tag.'PathXX'}, $mode, $what); } # Common config function to install a text string in a file. sub install { #global ($Y); local ($text, $path, $mode, $what) = @_; $text = &configure ($text); printf "Installing $what at\n `$path'\n with mode 0%03o.\n", $mode; if (-e $path) { if (-w $path) { print "Is it okay to overwrite existing file\n `$path'? [$Y] "; $_ = &input ($Y); die "\nUnable to complete installation" unless (/^y/i); } elsif ($Rcs) { print "Checking out `$path'.\n"; system ('co', '-l', $path); die if ($?); } else { print "Is it okay to delete existing file\n `$path' first? [$Y] "; $_ = &input ($Y); die "\nUnable to complete installation" unless (/^y/i); unlink ($path) || die "Cannot delete `$path'"; } } &makeparent ($path, 0755); # Create (or overwrite) the file. open (OUT, ">$path") || die "Cannot open `$path' in sub install"; print OUT $text; close (OUT) || die "Cannot close `$path'"; # Set the permissions. chmod $mode, $path || die "Cannot chmod `$path'"; if ($Rcs) { print "Checking `$path' back in.\n"; system ('ci', '-u', $path); die if ($?); } } # Common config function to create directories needed for install. sub makeparent { local ($path, $mode) = @_; local ($parent); $path =~ m#^(.*)[/][^/]+[/]?$#; $parent = $1; return if ($parent eq ''); if (!-e $parent) { &makeparent ($parent, $mode); print "Creating `$parent'\n"; mkdir ($parent, $mode) || die "Cannot mkdir `$parent'"; } die "$parent is not a directory" unless (-d $parent); die "$parent is not writeable" unless (-w $parent); } # Common config function to set a path for installing a normal file. sub get_filepath { #global ($cwd, %config); local ($tag, $what, $default, $root) = @_; local ($path); while ($path eq '') { $path = $config{$tag}; $path = $default if ($path eq ''); $path = "$cwd/$path" if ($path =~ m#^[^/]#); print "\nLocal install-path of $what:\n[$path] "; $path = &input ($path); $path = "$cwd/$path" if ($path =~ m#^[^/]#); if (-e $path && !-f $path) { print "Sorry, `$path' exists and is not a normal file.\n"; print "Try again...\n"; $path = ''; } if (index ($path, $root) != $[) { print "Sorry, `$path' must be under `$root'.\n"; print "Try again...\n"; $path = ''; } } $config{$tag} = $path; return $path; } # Common config function to set a path for an installation directory. sub get_dirpath { #global ($cwd, %config); local ($tag, $what, $default, $root) = @_; local ($path); while ($path eq '') { $path = $config{$tag}; $path = $default if ($path eq ''); $path = "$cwd/$path" if ($path =~ m#^[^/]#); print "\nLocal directory for $what:\n[$path] "; $path = &input ($path); $path = "$cwd/$path" if ($path =~ m#^[^/]#); if (-e $path && !-d $path) { print "Sorry, `$path' exists and is not a directory.\n"; print "Try again...\n"; $path = ''; } if (index ($path, $root) != $[) { print "Sorry, `$path' must be under `$root'.\n"; print "Try again...\n"; $path = ''; } } $config{$tag} = $path; return $path; } # Common config function to set $PerlPath. sub set_perl_path { #global (%config, $PerlPath, $cwd); local ($tag) = @_; local ($default, $tmp, @apath, $done, $_); $default = $^X; if ($default =~ m#^[^/]#) { @apath = split (/:/, $ENV{'PATH'}, 9999); $tmp = $default; foreach (reverse @apath) { $default = "$_/$tmp" if (m#^[/]# && -x "$_/$tmp"); } } $done = 'no'; while ($done eq 'no') { $PerlPath = $config{$tag}; $PerlPath = $default if ($PerlPath eq ''); $PerlPath = "$cwd/$PerlPath" if ($PerlPath =~ m#^[^/]#); print <<'EOF'; What is the full pathname of the `Perl' executable on this machine? EOF print "[$PerlPath] "; $PerlPath = &input ($PerlPath); $PerlPath = "$cwd/$PerlPath" if ($PerlPath =~ m#^[^/]#); if (!-e $PerlPath) { print "Sorry, `$PerlPath' does not exist.\n"; } elsif (!-f $PerlPath) { print "Sorry, `$PerlPath' is not a normal file.\n"; } elsif (!-x $PerlPath) { print "Sorry, `$PerlPath' is not executable.\n"; } else { $done = 'yes'; } print "Try again...\n" if ($done eq 'no'); } $config{$tag} = $PerlPath; } # end of common config functions XXEOFXX # # config.web slurps up $SearchMenu. # $SearchMenu = <<'XXEOFXX'; Search Forms for the SCA Armorial XXHeadXX

Search Forms for the SCA Armorial

There are six search forms available:

  1. A Name Search Form which allows you to search the SCA Armorial database for items associated with a particular name. This form is fast and simple, but not very powerful. For instance, your search will fail if you don't type the name exactly right.

  2. An Armory Description Search Form which allows you to search for registered items that appear under a particular heading in the SCA Ordinary. This form is difficult to use because you must know how the headings are coded in the database. This difficulty will be corrected eventually, but for now the SCA Ordinary is much more useful.

  3. A Name Pattern Search Form which allows you to search for items associated with a name, even if you don't know the exact spelling of the name. Very useful.

  4. A Blazon Pattern Search Form which allows you to search for blazons containing particular words or text patterns.

  5. A Date/Kingdom Search Form which allows you to search for registrations during a particular time-period or via a particular kingdom.

  6. A Complex Search Form which allows you to do sophisticated searches on the database by combining the results of multiple searches. This form is tricky to use, because there are more things to configure.

You can also find currently-registered armory using the on-line SCA Ordinary.

Related Web Pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $NameHintsPage. # $NameHintsPage = <<'XXEOFXX'; Name Search Hints XXHeadXX

Name Search Hints

Here are some hints for using the Name Search Form. The purpose of the form is to find all items associated with a particular name. This form is fast and simple to use, but not convenient or powerful. In particular, your search will fail if you don't type the name exactly right.

The form has a text entry field and a "submit" button. You simply type the name you are looking for in the box then click on the button. For instance, you could type "John of Skye" (without the quotes) and click on the "submit" button. This should display the two registrations by John of Skye.

The name search form is case-sensitive, so "john of skye" won't work. Also, the spacing and hyphenation of the name must be exactly right, or the search will fail. If you are at all unsure of the spelling of the name you are looking for, try the Name Pattern Search Form instead.

If you are searching for a name containing accented characters or ligatures, you should use their nearest ASCII equivalents. For instance, to search for Edelgard Erzsébet von Württemberg you should type "Edelgard Erzsebet von Wurttemberg".

Related web pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $DateHintsPage. # $DateHintsPage = <<'XXEOFXX'; Date/Kingdom Search Hints XXHeadXX

Date/Kingdom Search Hints

Here are some hints for using the Date/Kingdom Search Form. The purpose of the form is to find all items registered during a particular period of time, through particular kingdoms of the SCA.

Search Criteria

  1. Select the inclusive starting and ending dates of the period of interest. With most browsers, months are selected from a menu, by dragging with the mouse. Years are selected by typing the common-era year (or the last two digits thereof) in the text-entry boxes.
  2. Select the kingdoms of interest. With most browsers, kingdoms are selected (or deselected) by clicking with the mouse on a box next to the Kingdom's name.

Maximum Number of Items to Display

You can control the size of your search result by typing a number of items (1-500) in this box. If you do not fill in the box, at most 25 items will be displayed. Note that there is a built-in limit of 500 items, which you cannot override.

Display Options

You can specify how you want your search results sorted. Currently there are two options: by name and by date. It is usually easiest to find items when they are sorted by name.

You can also specify whether you want dates shown in modern style (Common Era year/A.D.) or SCA style (Anno Societatis). The SCA calendar counts years from the SCA's "First Tournament" (1 May 1966) and traditionally uses Roman numerals.

You can also specify whether you want blazons to be displayed with links to the heraldic glossary. These links are helpful if you are unclear on the meanings of basic blazon terms.

Submitting the Search

The button at the bottom of the form marked "search for items matching the dates/kingdoms above" is used to launch the search. The server takes no action until you click on the button.

Related web pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $DescHintsPage. # $DescHintsPage = <<'XXEOFXX'; Armory Description Search Hints XXHeadXX

Armory Description Search Hints

Here are some hints for using the Armory Description Search Form.

The purpose of the form is to find all registered armory that matches a particular description, such as "FIELD DIV.-BENDY:complex line". It is used, for instance, to view a single category from the on-line SCA Ordinary.

Your search will probably fail if you don't type the description exactly right, so until a friendlier interface is available, you should probably access it only through the on-line SCA Ordinary.

The form has a text entry field and a "submit" button. Type the description you are looking for in the box, then click on the button. The armory description search form is case-sensitive.

A description consists of

The heading must always appear first, but the features may appear in any otder after it.

Here are some typical headings:

Here are some typical features:

Here are some examples of reasonable armory descriptions:

You can also find examples of valid descriptions by enabling the "Armory descriptions" option on the Blazon Pattern Search Form and doing a search.

Related web pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $NpHintsPage. # $NpHintsPage = <<'XXEOFXX'; Name Pattern Search Hints XXHeadXX

Name Pattern Search Hints

Here are some hints for using the Name Pattern Search Form. The purpose of the form is to find items associated with a name, even if you don't know the exact spelling of the name.

Patterns

The first text entry field is where you type the pattern. The simplest pattern is simply a portion of the name you are seeking. For instance, you could type "Peter" in this box to find all the names containing "Peter". This would bring up items such as Ulf Johannes Peter von Greiffenburg, and even Aelfwine of Peterborough.

You can specify that you want the pattern to appear at the beginning of the name, by placing a carat (^) in front of the pattern. For instance, you could type the pattern "^Peter" to find all names that begin with "Peter". This would exclude the examples above, but would match Peter Bentarrow, for instance.

You can specify that you want the pattern to appear at the end of the name by placing a dollar-sign ($) after the pattern. For instance, the pattern "wing$" would match Arthur Whitewing, for instance.

Some punctuation marks have special meaning in patterns. When your pattern includes punctuation marks such as periods (.) it is a good idea to put a backslash (\) in front of each punctuation mark. For instance, to search for names containing "St." you should use the pattern "St\.".

If you are unsure of a particular letter in a name, you can use wild-cards to find it quickly. For instance, if you are looking for someone Tatiana, you might use the pattern "Tat.ana" in case the person you were looking for happened to spell her name "Tatjana" or "Tatyana"; the period (.) matches any single character. Alternately, you could use "Tat[ijy]ana". The portion in square brackets matches a single character which must be one of the three listed (i, j, or y). To specify a wildcard that matches any character except whitespace, use "\S".

If there are multiple letters that you are unsure of, you can use multiple wildcards. For instance, "M\S\S\Swood" will match "Mirkwood", "Marewood", and "Muirwood". If you are unsure of the exact number of wildcards needed, a plus-sign (+) may be used after any wildcard to indicate repetions. For instance "M\S+wood" will match names containing "Mirkwood", "Maplewood", "Marionwood" and so on.

You can specify accented characters or ligatures in a "narrow" search (see below) by typing a backslash (\) followed by the three-digit "Oct" code. For instance, to find "Æthelric" you can type the pattern "\306thelric".

Search Types

You can specify a name search that is "broad" or "narrow". A broad search finds all items associated with a name. A narrow search excludes those items in which the name appears only as the owner of an order, title, household, or alternate name, as the target of a cross-reference, name-change, or transfer, or as the designation or joint holder of a badge. A broad search often finds more items than a narrow one; since this may or may not be what you want, both types of search are available.

Another difference between broad and narrow searches is in their handling of accented characters and ligatures. In broad searches (as in the name search form) non-ASCII symbols are reduced to their nearest ASCII equivalents. For instance, "Æthelric" is treated exactly like "AEthelric". In narrow searches the "Æ" is treated as a single character which matches "\306" but not "A" nor "E".

You can specify a name search that is "case-sensitive" or "case-insensitive". A case-sensitive search differentiates upper-case and lower-case letters. For instance, the name pattern "And" would match "Andrew" but not "Holland". In case-insensitive search would treat "A" and "a" as being the same, so that "And" would match both "Andrew" and "Holland".

Maximum Number of Items to Display

You can control the size of your search result by typing a number of items (1-500) in this box. If you do not fill in the box, at most 25 items will be displayed. Note that there is a built-in limit of 500 items, which you cannot override.

Display Options

You can specify how you want your search results sorted. Currently there are two options: by name and by date. It is usually easiest to find names when they are sorted by name, but you might want to sort by date if the item you are looking for is particularly old or particularly recent.

You can also specify whether you want dates shown in modern style (Common Era year/A.D.) or SCA style (Anno Societatis). The SCA calendar counts years from the SCA's "First Tournament" (1 May 1966) and traditionally uses Roman numerals.

You can also specify whether you want blazons to be displayed with links to the heraldic glossary. These links are helpful if you are unclear on the meanings of basic blazon terms.

Submitting the Search

The button at the bottom of the form marked "search for items matching the name pattern" is used to launch the search. The server takes no action until you click on the button.

Related Web Pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $BpHintsPage. # $BpHintsPage = <<'XXEOFXX'; Blazon Pattern Search Hints XXHeadXX

Blazon Pattern Search Hints

Here are some hints for using the Blazon Pattern Search Form. The purpose of the form is to find registered blazons that contain particular words or patterns.

Patterns

The first text entry field is where you type the pattern. The simplest pattern is simply a portion of the blazon you are seeking. For instance, you could type "bat" in this box to find all the blazons containing "bat". This would bring up not only blazons containing the word "bat", but also those containing words such as "batwing", "embattled", "combattant", and "baton".

You can seach for blazons that contain a particular word by sandwiching the word between "\b"s. ("\b" matches any word-boundary.) For instance, you could type the pattern "\bbat\b" to find all blazons containing the word "bat" ignoring words like "combattant" and "bats".

You can specify that you want the pattern to appear at the beginning of a word by placing "\b" in front of the pattern. For instance, you could type the pattern "\bbat" to find all items with batons, bats, and batwings, while ignoring words like "combattant" and "embattled".

You can specify that you want the pattern to appear at the beginning of the blazon by placing a carat (^) in front of the pattern. For instance, you could type the pattern "^Or" to find all registered items with fields Or.

Some punctuation marks have special meaning in patterns. When your pattern includes punctuation marks such as periods (.), question marks (?), or parentheses, it is a good idea to put a backslash (\) in front of each punctuation mark. For instance, to search for names containing "St." you should use the pattern "St\.".

Some common blazon-terms are not consistently spelled. For instance, if you are looking for the word "fleur-de-lys", you might use the pattern "\bfleur-de-l.s\b" to catch both common spellings of the word (fleur-de-lys, fleur-de-lis); the period (.) matches any single character. Alternately, you could use "\bfleur-de-l[iy]s". The portion in square brackets matches a single character which must be one of the two listed (i or y). To specify a wildcard that matches any character except whitespace, use "\S".

If there are multiple letters that you are unsure of, you can use multiple wildcards. If you are unsure of the exact number of wildcards needed, a plus-sign (+) may be used after any wildcard to indicate repetion. For instance, the pattern "\bchevron\b.+\bgules\b" matches any blazon that contains the words "chevron" and "gules" in that order.

You can specify accented characters (such as the ê in vêtu) by typing a backslash (\) followed by the three-digit "Oct" code. For instance, to find "vêtu" you can type the pattern "v\353tu".

Search Types

You can specify a name search that is "case-sensitive" or "case-insensitive". A case-sensitive search differentiates upper-case and lower-case letters. For instance, the pattern "or" would match "gore" but not "Or". A case-insensitive search would treat "O" and "o" as being the same, so that "or" would match both "gore" and "Or".

Maximum Number of Items to Display

You can control the size of your search result by typing a number of items (1-500) in this box. If you do not fill in the box, at most 25 items will be displayed. Note that there is a built-in limit of 500 items, which you cannot override.

Display Options

You can specify how you want your search results sorted. Currently there are three sort options: by name, by date, and by blazon. You might want to sort by date if you know that the item you are looking for is particularly old.

You can also specify whether you want dates to be shown in modern style (Common Era year/A.D.) or SCA style (Anno Societatis). The SCA calendar counts years from the SCA's "First Tournament" (1 May 1966) and traditionally uses Roman numerals.

You can also specify whether you want blazons to be displayed with links to the heraldic glossary. These links are helpful if you are unclear on the meanings of basic blazon terms.

Submitting the Search

The button at the bottom of the form marked "search for items matching the blazon pattern" is used to launch the search. No action is taken by the server until you click on the button.

Related Web Pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $ComplexHintsPage. # $ComplexHintsPage = <<'XXEOFXX'; Complex Search Hints XXHeadXX

Complex Search Hints

Here are some hints for using the Complex Search Form. The purpose of the form is to combine several search methods into a single search. Before using this form, you should familiarize yourself with the following search methods:

Scoring Criteria

This portion of the form allows you to specify up to five search criteria in order to find the registration(s) of interest to you. A certain number of registrations will match each criterion. Usually, the result of a complex search consists of all registrations which match one or more of the criteria specified.

In a search with multiple criteria, you may only be interested in registrations which match all the criteria. These are, of course, included in the result. To make these registrations easy to locate, each item in the search result is given a score based on how many criteria it satisfied. Items matching all the criteria naturally have the highest score; when you sort the results by their score, you can easily locate these items.

Sometimes you may want to give some criteria more weight than others. For instance, suppose you are looking for a registration connected the name "Alaric" which probably contains a chief (but you're less certain of the charge). In this case, you want the search results to appear in the following order:

  1. registrations containing "Alaric" and a chief
  2. registrations containing "Alaric" but no chief
  3. other registrations
You can achieve this results by giving the name pattern criterion a weight of 20 and the armory-description search a weight of only 10.

There are currently four methods available for specifying criteria:

Maximum Number of Items to Display

You can control the size of your search result by typing a number of items (1-500) in this box. If you do not fill in the box, at most 25 items will be displayed. Note that there is a built-in limit of 500 items, which you cannot override.

Display Options

You can specify how you want your search results sorted. Currently there are two options: by name and by date. It is usually easiest to find names when they are sorted by name. You might want to sort by date if you know that the item you are looking for is particularly old.

You can also specify whether you want dates shown in modern style (Common Era year/A.D.) or SCA style (Anno Societatis). The SCA calendar marks time from the "First Tournament" (1 May 1966) and its years are traditionally noted in Roman numerals.

Submitting the Search

The button at the bottom of the form marked "search for items matching the name pattern" is used to launch the search. The server takes no action until you press the button.

Related web pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $OverviewPage. # $OverviewPage = <<'XXEOFXX'; About SCA Heraldry XXHeadXX

About SCA Heraldry

Names and Armory

To enhance the medieval ambiance of SCA events, participants typically adopt pseudonyms and heraldic insignia with a medieval flavor, which they use on a long-term basis. Thus a person whose legal name is "John Doe" might choose to be known as "Hrolf Einarsson" to his SCA friends. And at SCA tournaments and wars he might bear a device on his sheild consisting of six black lions on a gold background.

An SCA device is a heraldic insignia which used to indicate that the owner of the device is present. The SCA uses the word armory to refer to heraldic insignia in general.

Participants generally select their own SCA name. It is considered bad form to assume a name too reminiscent of another participant or any famous person, be they modern, historical, or fictitious. Also, intrusively modern names should be avoided. Armory, too, must be chosen with care to avoid modern-style designs and designs that make inappropriate claims.

Every chapter of the SCA has an officer, called a herald or pursuivant to assist participants in choosing appropriate names and armory.

Registration

To reduce the chances of confusion or offense caused by inappropriate names and armory, the SCA has organized a registration service, to which participants may submit their proposed names and armory for approval. In addition, the SCA registers names and armory for SCA chapters (or branches), their officers and titled nobility, and the honors they may bestow on participants.

The registration process is administered by the SCA's own "College of Arms".

The SCA Armorial

An armorial is a reference book containing coats of arms, arranged alphabetically by their bearer's names. The SCA Armorial is an armorial of insignia registered with the College of Arms. It also lists registered names for individuals and groups that have no registered insignia. It is available as a 670-page loose-leaf document or as a 6 MB text-file. Search forms for the SCA Armorial enable access via the World Wide Web.

The SCA Ordinary

An ordinary is a reference book containing coats of arms, arranged in descriptive categories. The SCA Ordinary is an ordinary of insignia registered with the College of Arms. It is available as a 1000-page loose-leaf document and as a World Wide Web document.

Court and Voice Heraldry

SCA events may feature courts, tournaments, and other activities. A court is a general audience granted by a high-ranking SCA noble for the purpose of doing official business. The organization of courts is the resposibility of court heralds.

SCA heralds also assist the running of events by making public announcements, especially at tournaments. For instance, a herald is typically employed to announce the combattants before each bout of a tournament.

Since amplification is not used at SCA events, vocal training is very helpful for court and tournament work, which is called voice heraldry.

Related web pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $LimitPage. # $LimitPage = <<'XXEOFXX'; Search Limits XXHeadXX

Search Limits

The name pattern search form, blazon pattern search form, and complex search form each allow you to set a limit on the number of returned items. On these forms, if you do not specify a limit, your results will be limited to 25 items.

If your search is limited, you will see a message such as:

There were n other items for which details are not available, due to the limit feature.

at the bottom of your results listing. In this case, the item you were looking for may be one of the ones that was cut from the listing. There are several things you might do next: XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $DownloadPage. # $DownloadPage = <<'XXEOFXX'; SCA Armorial Database XXHeadXX

Obtaining the SCA Armorial Database

The database used by the search forms is the same data that is used to generate the printed SCA Armorial and SCA Ordinary. It is a flat text file roughly 6 megabytes in size. The file format is documented online.

The database is protected by copyright, but that broad blanket permissions have been granted for verbatim redistribution and personal use. See the copyright notice for details.

You should be able to download the database via HTTP from XXWebDataUrlXX (not compressed). XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $DbFormatPage. # $DbFormatPage = <<'XXEOFXX'; Format of the SCA Armorial Database XXHeadXX

Format of the SCA Armorial Database

by Iulstan Sigewealding
9 December 1998

This document describes the format used to record names and armory in the SCA Armorial Database. The database is actually a flat text file. The text is mostly ASCII, with a few Latin-1 encodings. (Latin-1 is an extension of ASCII and is an international standard. Unfortunately, its 8-bit codes are NOT compatible with the "437" code page normally active on PCs running MS-DOS in the United States.)

The file consists of a copyright notice followed by records.

NOTICE

The copyright notice begins with a line that reads "NOTICE:" and ends with a line that reads "END OF NOTICE." The records begin immediately after the end-of-notice.

RECORDS

Each record occupies a single line in the file, and each line contains one record. A record has at least five fields, separated by stiles (`|'). The five required fields are: name, source, type, text, and notes, in that order.

Related web pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up $DbSymbolsPage. # $DbSymbolsPage = <<'XXEOFXX'; Title XXHeadXX

Non-ASCII Symbols in the SCA Armorial Database

by Iulstan Sigewealding
26 June 1999

Since January 1996, the SCA Ordinary database (oanda.db) has begun to encode non-ASCII symbols in names and blazons. The encoding is mostly complete for items registered since July 1980, but only sporadic before that date. In other words, over 90% of the database has been revised.

When a Latin-1 encoding exists, the non-ASCII symbol is encoded in accordance with that standard. The resulting code is an 8-bit byte with the most-significant bit set to 1, as detailed in the table below. (Unfortunately, these 8-bit codes are NOT compatible with the "437" code page normally active on PCs running MS-DOS in the United States.)

The columns in the table are as follows:

 Cnt Dec Oct Hx   Eq Daud Name..................................
   7 192 300 C0 À A  {'A} LATIN CAPITAL LETTER A WITH GRAVE
  54 193 301 C1 Á A  {A'} LATIN CAPITAL LETTER A WITH ACUTE
   3 194 302 C2 Â A  {A^} LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  15 196 304 C4 Ä A  {A:} LATIN CAPITAL LETTER A WITH DIAERESIS
   6 197 305 C5 Å A  {Ao} LATIN CAPITAL LETTER A WITH RING ABOVE
 196 198 306 C6 Æ AE {AE} LATIN CAPITAL LIGATURE AE
   1 199 307 C7 Ç C  {C,} LATIN CAPITAL LETTER C WITH CEDILLA
 134 201 311 C9 É E  {E'} LATIN CAPITAL LETTER E WITH ACUTE
  12 205 315 CD Í I  {I'} LATIN CAPITAL LETTER I WITH ACUTE
   2 206 316 CE Î I  {I^} LATIN CAPITAL LETTER I WITH CIRCUMFLEX
   1 208 320 D0 Ð Dh {Dh} LATIN CAPITAL LETTER ETH
   6 210 322 D2 Ò O  {'O} LATIN CAPITAL LETTER O WITH GRAVE
 208 211 323 D3 Ó O  {O'} LATIN CAPITAL LETTER O WITH ACUTE
  18 214 326 D6 Ö O  {O:} LATIN CAPITAL LETTER O WITH DIAERESIS
  23 216 330 D8 Ø O  {O/} LATIN CAPITAL LETTER O WITH STROKE
  26 218 332 DA Ú U  {U'} LATIN CAPITAL LETTER U WITH ACUTE
   1 221 335 DD Ý Y  {Y'} LATIN CAPITAL LETTER Y WITH ACUTE
  17 222 336 DE Þ Th {Th} LATIN CAPITAL LETTER THORN
  10 223 337 DF ß s  {sz} LATIN SMALL LETTER SHARP S
  70 224 340 E0 à a  {'a} LATIN SMALL LETTER A WITH GRAVE
1280 225 341 E1 á a  {a'} LATIN SMALL LETTER A WITH ACUTE
  46 226 342 E2 â a  {a^} LATIN SMALL LETTER A WITH CIRCUMFLEX
   1 227 343 E3 ã a  {a~} LATIN SMALL LETTER A WITH TILDE
 288 228 344 E4 ä a  {a:} LATIN SMALL LETTER A WITH DIAERESIS
  57 229 345 E5 å a  {ao} LATIN SMALL LETTER A WITH RING ABOVE
 121 230 346 E6 æ ae {ae} LATIN SMALL LIGATURE AE
  48 231 347 E7 ç c  {c,} LATIN SMALL LETTER C WITH CEDILLA
 176 232 350 E8 è e  {'e} LATIN SMALL LETTER E WITH GRAVE
1250 233 351 E9 é e  {e'} LATIN SMALL LETTER E WITH ACUTE
  68 234 352 EA ê e  {e^} LATIN SMALL LETTER E WITH CIRCUMFLEX
  23 235 353 EB ë e  {e:} LATIN SMALL LETTER E WITH DIAERESIS
  15 236 354 EC ì i  {'i} LATIN SMALL LETTER I WITH GRAVE
1011 237 355 ED í i  {i'} LATIN SMALL LETTER I WITH ACUTE
  14 238 356 EE î i  {i^} LATIN SMALL LETTER I WITH CIRCUMFLEX
   3 239 357 EF ï i  {i:} LATIN SMALL LETTER I WITH DIAERESIS
 102 240 360 F0 ð dh {dh} LATIN SMALL LETTER ETH
  40 241 361 F1 ñ n  {n~} LATIN SMALL LETTER N WITH TILDE
  61 242 362 F2 ò o  {'o} LATIN SMALL LETTER O WITH GRAVE
 616 243 363 F3 ó o  {o'} LATIN SMALL LETTER O WITH ACUTE
  28 244 364 F4 ô o  {o^} LATIN SMALL LETTER O WITH CIRCUMFLEX
 391 246 366 F6 ö o  {o:} LATIN SMALL LETTER O WITH DIAERESIS
 104 248 370 F8 ø o  {o/} LATIN SMALL LETTER O WITH STROKE
  28 249 371 F9 ù u  {'u} LATIN SMALL LETTER U WITH GRAVE
 192 250 372 FA ú u  {u'} LATIN SMALL LETTER U WITH ACUTE
  30 251 373 FB û u  {u^} LATIN SMALL LETTER U WITH CIRCUMFLEX
 331 252 374 FC ü u  {u:} LATIN SMALL LETTER U WITH DIAERESIS
  28 253 375 FD ý y  {y'} LATIN SMALL LETTER Y WITH ACUTE
   4 254 376 FE þ th {th} LATIN SMALL LETTER THORN
   2 255 377 FF ÿ y  {y:} LATIN SMALL LETTER Y WITH DIAERESIS

Twenty-nine of the rarer symbols do not have Latin-1 encodings. In the database, these symbols have been reduced to the nearest ASCII equivalent:

 Cnt Eq Daud Name................................
   4 C  {Cv} LATIN CAPITAL LETTER C WITH CARON
   2 OE {OE} LATIN CAPITAL LIGATURE OE
   3 S  {S'} LATIN CAPITAL LETTER S WITH ACUTE
   3 S  {Sv} LATIN CAPITAL LETTER S WITH CARON
   8 Z  {Zv} LATIN CAPITAL LETTER Z WITH CARON
  12 a  {a-} LATIN SMALL LETTER A WITH MACRON
   2 b  {b-} LATIN SMALL LETTER B WITH TOPBAR
   8 c  {cv} LATIN SMALL LETTER C WITH CARON
   2 e  {e,} LATIN SMALL LETTER E WITH OGONEK
  12 e  {e-} LATIN SMALL LETTER E WITH MACRON
   2 e  {ev} LATIN SMALL LETTER E WITH CARON
  16 i  {i-} LATIN SMALL LETTER I WITH MACRON
   1 l  {l/} LATIN SMALL LETTER L WITH STROKE
   7 m  {m.} LATIN SMALL LETTER M WITH DOT BELOW
   1 n  {n'} LATIN SMALL LETTER N WITH ACUTE
   7 n  {n.} LATIN SMALL LETTER N WITH DOT BELOW
   9 o  {o,} LATIN SMALL LETTER O WITH OGONEK
   5 o  {o-} LATIN SMALL LETTER O WITH MACRON
   1 oe {oe} LATIN SMALL LIGATURE OE
   9 r  {rv} LATIN SMALL LETTER R WITH CARON
   7 s  {s.} LATIN SMALL LETTER S WITH DOT BELOW
   4 s  {sv} LATIN SMALL LETTER S WITH CARON
   2 u  {u,} LATIN SMALL LETTER U WITH OGONEK
  10 u  {u-} LATIN SMALL LETTER U WITH MACRON
   7 w  {w^} LATIN SMALL LETTER W WITH CIRCUMFLEX
   2 y  {y^} LATIN SMALL LETTER Y WITH CIRCUMFLEX
   1 y  {y~} LATIN SMALL LETTER Y WITH TILDE
   6 z  {z'} LATIN SMALL LETTER Z WITH ACUTE
   6 z  {zv} LATIN SMALL LETTER Z WITH CARON

Related web pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up master index page for Ordinary. # $IndexPage = <<'XXEOFXX'; Online SCA Ordinary - Master Index XXHeadXX

Online SCA Ordinary - Master Index

Select the first letter of the category you wish to view:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Related web pages:

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up index page for the letter A. # $IndexPage{'A'} = <<'XXEOFXX'; Index of the SCA Ordinary - The Letter A XXHeadXX

Index of the SCA Ordinary - The Letter A

XXTrailerXX XXTrailer2XX XXCloseHtmlXX XXEOFXX # # config.web slurps up index page for the letter B. # $IndexPage{'B'} = <<'XXEOFXX'; Index of the SCA Ordinary - The Letter B XXHeadXX

Index of the SCA Ordinary - The Letter B