This manual is for liblouis (version 2.5.0, 2 August 2012), a Braille Translation and Back-Translation Library derived from the Linux screen reader BRLTTY.
Copyright © 1999-2006 by the BRLTTY Team.
Copyright © 2004-2007 ViewPlus Technologies, Inc. www.viewplus.com.
Copyright © 2007,2009 Abilitiessoft, Inc. www.abilitiessoft.com.
This file is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser (or library) General Public License (LGPL) as published by the Free Software Foundation; either version 3, or (at your option) any later version.This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser (or Library) General Public License LGPL for more details.
You should have received a copy of the GNU Lesser (or Library) General Public License (LGPL) along with this program; see the file COPYING. If not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Liblouis is an open-source braille translator and back-translator derived from the translation routines in the BRLTTY screen reader for Linux. It has, however, gone far beyond these routines. It is named in honor of Louis Braille. In Linux and Mac OSX it is a shared library, and in Windows it is a DLL. For installation instructions see the README file. Please report bugs and oddities to the maintainer<EMAIL_ADDRESS>This documentation is derived from Chapter 7 of the BRLTTY manual, but it has been extensively rewritten to cover new features.
Please read the following copyright and warranty information. Note that this information also applies to all source code, tables and other files in this distribution of liblouis. It applies similarly to the sister library liblouisxml.
This file is maintained by John J. Boyer<EMAIL_ADDRESS>Persons who wish to program with liblouis but will not be writing translation tables may want to skip ahead to Programming with liblouis.
Five test programs are provided as part of the liblouis package. They are intended for testing liblouis and for debugging tables. None of them is suitable for braille transcription. An application that can be used for transcription is xml2brl, which is part of the liblouisxml package (see Introduction). The source code of the test programs can be studied to learn how to use the liblouis library and they can be used to perform the following functions.
All of these programs recognize the --help and --version options.
The lou_debug tool is intended for debugging liblouis translation tables. The command line for lou_debug is:
lou_debug [OPTIONS] TABLE[,TABLE,...]
The command line options that are accepted by lou_debug are described in common options.
The table (or comma-separated list of tables) is compiled. If no errors are found a brief command summary is printed, then the prompt `Command:'. You can then input one of the command letters and get output, as described below.
Most of the commands print information in the various arrays of
TranslationTableHeader
. Since these arrays are pointers to
chains of hashed items, the commands first print the hash number, then
the first item, then the next item chained to it, and so on. After
each item there is a prompt indicated by `=>'. You can then press
enter (<RET>) to see the next item in the chain or the first
item in the next chain. Or you can press h (for next-(h)ash) to
skip to the next hash chain. You can also press e to exit the
command and go back to the `command:' prompt.
correct
opcode (see correct) and
the multipass opcodes are shown with the code that instructs the
virtual machine that interprets them. If you want to see only the
rules for a particular character string you can type p at the
`command:' prompt. This will take you to the `particular:'
prompt, where you can press f and then type in the string. The
whole hash chain containing the string will be displayed.
display
opcode (see display).
capsign
opcode (see capsign) and the numsign
opcode (see numsign).
It also shows emphasis dot patterns, such as those for the
italword
,
the firstletterbold
opcode (see firstletterbold), etc. If a given
opcode has not been used nothing is printed for it.
To use this program type the following:
lou_checktable [OPTIONS] TABLE
Aside from the standard options (see common options) lou_checktable also accepts the following options:
If the table contains errors, appropriate messages will be displayed. If there are no errors the message `no errors found.' will be shown.
This program tests every capability of the liblouis library. It is completely interactive. Invoke it as follows:
lou_allround [OPTIONS]
The command line options that are accepted by lou_debug are described in common options.
You will see a few lines telling you how to use the program. Pressing one of the letters in parentheses and then enter will take you to a message asking for more information or for the answer to a yes/no question. Typing the letter `r' and then <RET> will take you to a screen where you can enter a line to be processed by the library and then view the results.
This program translates whatever is on the standard input unit and prints it on the standard output unit. It is intended for large-scale testing of the accuracy of translation and back-translation. The command line for lou_translate is:
lou_translate [OPTION] TABLE
Aside from the standard options (see common options) this program also accepts the following options:
To use it to translate or back-translate a file use a line like
lou_translate --forward en-us-g2.ctb <liblouis.txt >testtrans
This program checks the accuracy of hyphenation in Braille translation for both translated and untranslated words. It is completely interactive. Invoke it as follows:
lou_checkhyphens [OPTIONS]
The command line options that are accepted by lou_checkhyphens are described in common options.
You will see a few lines telling you how to use the program.
Many translation (contraction) tables have already been made up. They are included in this distribution in the tables directory and should be studied as part of the documentation. The most helpful (and normative) are listed in the following table:
The names used for files containing translation tables are completely arbitrary. They are not interpreted in any way by the translator. Contraction tables may be 8-bit ASCII files, UTF-8, 16-bit big-endian Unicode files or 16-bit little-endian Unicode files. Blank lines are ignored. Any leading and trailing whitespace (any number of blanks and/or tabs) is ignored. Lines which begin with a number sign or hatch mark (`#') are ignored, i.e. they are comments. If the number sign is not the first non-blank character in the line, it is treated as an ordinary character. If the first non-blank character is less-than (`<') the line is also treated as a comment. This makes it possible to mark up tables as xhtml documents. Lines which are not blank or comments define table entries. The general format of a table entry is:
opcode operands comments
Table entries may not be split between lines. The opcode is a mnemonic that specifies what the entry does. The operands may be character sequences, braille dot patterns or occasionally something else. They are described for each opcode, please see Opcode Index. With some exceptions, opcodes expect a certain number of operands. Any text on the line after the last operand is ignored, and may be a comment. A few opcodes accept a variable number of operands. In this case a number sign begins a comment unless it is preceded by a backslash (`\').
Here are some examples of table entries.
# This is a comment. always world 456-2456 A word and the dot pattern of its contraction
Most opcodes have both a "characters" operand and a "dots" operand, though some have only one and a few have other types.
The characters operand consists of any combination of characters and escape sequences proceeded and followed by whitespace. Escape sequences are used to represent difficult characters. They begin with a backslash (`\`). They are:
If liblouis has been compiled for 32-bit Unicode the following are also recognized.
The dots operand is a braille dot pattern. The real braille dots, 1 through 8, must be specified with their standard numbers. liblouis recognizes "virtual dots," which are used for special purposes, such as distinguishing accent marks. There are seven virtual dots. They are specified by the number 9 and the letters `a' through `f'. For a multi-cell dot pattern, the cell specifications must be separated from one another by a dash (`-'). For example, the contraction for the English word `lord' (the letter `l' preceded by dot 5) would be specified as 5-123. A space may be specified with the special dot number 0.
An opcode which is helpful in writing translation tables is
include
. Its format is:
include filename
It reads the file indicated by filename
and incorporates or
includes its entries into the table. Included files can include other
files, which can include other files, etc. For an example, see what
files are included by the entry include en-us-g1.ctb
in the table
en-us-g2.ctb. If the included file is not in the same directory
as the main table, use a full path name for filename. Tables can also be
specified in a table list, in which the table names are separated by
commas and given as a single table name in calls to the translation
functions.
The order of the various types of opcodes or table entries is
important. Character-definition opcodes should come first. However, if
the optional display
opcode (see display) is used it should precede
character-definition opcodes. Braille-indicator opcodes should come
next. Translation opcodes should follow. The context
opcode (see context) is a
translation opcode, even though it is considered along with the
multipass opcodes. These latter should follow the translation opcodes.
The correct
opcode (see correct) can be used anywhere after the
character-definition opcodes, but it is probably a good idea to group
all correct
opcodes together. The include
opcode (see include) can be
used anywhere, but the order of entries in the combined table must
conform to the order given above. Within each type of opcode, the
order of entries is generally unimportant. Thus the translation
entries can be grouped alphabetically or in any other order that is
convenient. Hyphenation tables may be specified either with an
include
opcode or as part of a table list. They should come after
everything else. Character-definition opcodes are necessary for
hyphenation tables to work.
Hyphenation tables are necessary to make opcodes such as the
nocross
opcode (see nocross) function properly. There are no opcodes for
hyphenation table entries because these tables have a special format.
Therefore, they cannot be specified as part of an ordinary table.
Rather, they must be included using the include
opcode (see include) or as part
of a table list. The liblouis hyphenation algorithm was adopted from the
one used by OpenOffice. Note that Hyphenation tables must follow
character definitions and should preferably be the last. For an example
of a hyphenation table, see hyph_en_US.dic.
These opcodes are needed to define attributes such as digit,
punctuation, letter, etc. for all characters and their dot patterns.
liblouis has no built-in character definitions, but such definitions
are essential to the operation of the context
opcode (see context), the
correct
opcode (see correct), the multipass opcodes and the back-translator. If
the dot pattern is a single cell, it is used to define the mapping
between dot patterns and characters, unless a display
opcode (see display) for
that character-dot-pattern pair has been used previously. If only a
single-cell dot pattern has been given for a character, that dot
pattern is defined with the character's own attributes. If more than
one cell is given and some of them have not previously been defined as
single cells, the undefined cells are entered into the dots table with
the space attribute. This is done for backward compatibility with
old tables, but it may cause problems with the above opcodes or
back-translation. For this reason, every single-cell dot pattern
should be defined before it is used in a multi-cell character
representation. The best way to do this is to use the 8-dot computer
braille representation for the particular braille code. If a character
or dot pattern used in any rule, except those with the display
opcode, the repeated
opcode (see repeated) or the replace
opcode (see replace), is not
defined by one of the character-definition opcodes, liblouis will give
an error message and refuse to continue until the problem is fixed. If
the translator or back-translator encounters an undefined character in
its input it produces a succinct error indication in its output, and
the character is treated as a space.
space character dots
space \s 0 \s is the escape sequence for blank; 0 means no dots.
punctuation character dots
punctuation . 46 dot pattern for period in NAB computer braille
digit character dots
digit 0 356 NAB computer braille
uplow characters dots [,dots]
uplow Aa 17,1
grouping name characters dots ,dots
exactdots
opcode (see exactdots). The
characters may need to be declared with the math
opcode (see math).
grouping mrow \x0001\x0002 1e,2e grouping mfrac \x0003\x0004 3e,4e
letter character dots
lowercase character dots
uppercase character dots
lowercase
and uppercase
should be used when a letter has only one case. Otherwise use the
uplow
opcode (see uplow).
litdigit digit dots
litdigit 0 245 litdigit 1 1
sign character dots
sign % 4-25-1234 literary percent sign
math character dots
math + 346 plus
Braille indicators are dot patterns which are inserted into the braille text to indicate such things as capitalization, italic type, computer braille, etc. The opcodes which define them are followed only by a dot pattern, which may be one or more cells.
capsign dots
capsign 6
begcaps dots
begcaps 6-6
endcaps dots
endcaps 6-3
letsign dots
letsign 56
noletsign letters
The letters in the operand will not be proceeded by a letter sign.
More than one noletsign
opcode can be used. This is equivalent
to a single entry containing all the letters. In addition, if a single
letter, such as `a' in English, is defined as a word
(see word) or largesign
(see largesign), it will be
treated as though it had also been specified in a noletsign
entry.
noletsignbefore characters
noletsignbefore
entry cancels the defaults. If more than one
noletsignbefore
entry is used, the characters in all entries
are combined.
noletsignafter characters
noletsignafter
entry cancels the defaults. If more than one
noletsignafter
entry is used the characters in all entries are
combined.
numsign dots
litdigit
opcode (see litdigit) to show that they are a number
and not letters or some other symbols. For example:
numsign 3456
These also define braille indicators, but they require more explanation. There are four sets, for italic, bold, underline and computer braille. In each of the first three sets there are seven opcodes, for use before the first word of a phrase, for use before the last word, for use after the last word, for use before the first letter (or character) if emphasis starts in the middle of a word, for use after the last letter (or character) if emphasis ends in the middle of a word, before a single letter (or character), and to specify the length of a phrase to which the first-word and last-word-before indicators apply. This rather elaborate set of emphasis opcodes was devised to try to meet all contingencies. It is unlikely that a translation table will contain all of them. The translator checks for their presence. If they are present, it first looks to see if the single-letter indicator should be used. Then it looks at the word (or phrase) indicators and finally at the multi-letter indicators.
The translator will apply up to two emphasis indicators to each phrase
or string of characters, depending on what the typeform
parameter in its calling sequence indicates (see Programming with liblouis).
For computer braille there are only two braille indicators, for the
beginning and end of a sequence of characters to be rendered in
computer braille. Such a sequence may also have other emphasis. The
computer braille indicators are applied not only when computer braille
is indicated in the typeform
parameter, but also when a
sequence of characters is determined to be computer braille because it
contains a subsequence defined by the compbrl
opcode (see compbrl) or the
literal
opcode (see literal).
Here are the various emphasis opcodes.
firstwordital dots
lenitalphrase
opcode (see lenitalphrase). For example:
firstwordital 46-46 English indicator
lastworditalbefore dots
firstwordital
is not used,
this braille indicator is doubled and placed before the first word. Do
not use lastworditalbefore
and lastworditalafter
in the
same table. For example:
lastworditalbefore 4-6
lastworditalafter dots
lastworditalbefore
and
lastworditalafter
in the same table. See also the
lenitalphrase
opcode (see lenitalphrase) for more information.
firstletterital dots
lastletterital dots
singleletterital dots
lenitalphrase number
lastworditalbefore
is used, an italicized phrase is checked
to see how many words it contains. If this number is less than or
equal to the number given in the lenitalphrase
opcode, the
lastworditalbefore
sign is placed in front of each word. If it
is greater, the firstwordital
indicator is placed before the
first word and the lastworditalbefore
indicator is placed after
the last word. Note that if the firstwordital
opcode is not
used its indicator is made up by doubling the dot pattern given in the
lastworditalbefore
entry. For example:
lenitalphrase 4
firstwordbold dots
firstwordbold 456-456
lastwordboldbefore dots
firstwordbold
is not used, this
braille indicator is doubled and placed before the first word. Do not
use lastwordboldbefore
and lastwordboldafter
in the same
table. For example:
lastwordboldbefore 456
lastwordboldafter dots
lastwordboldbefore
and
lastwordboldafter
in the same table.
firstletterbold dots
lastletterbold dots
singleletterbold dots
lenboldphrase number
lastwordboldbefore
is used, a bold phrase is checked to see
how many words it contains. If this number is less than or equal to
the number given in the lenboldphrase
opcode, the
lastwordboldbefore
sign is placed in front of each word. If it
is greater, the firstwordbold
indicator is placed before the
first word and the lastwordboldbefore
indicator is placed after
the last word. Note that if the firstwordbold
opcode is not
used its indicator is made up by doubling the dot pattern given in the
lastwordboldbefore
entry.
firstwordunder dots
lastwordunderbefore dots
firstwordunder
is not used,
this braille indicator is doubled and placed before the first word.
lastwordunderafter dots
firstletterunder dots
lastletterunder dots
singleletterunder dots
lenunderphrase number
lastwordunderbefore
is used, an underlined phrase is checked
to see how many words it contains. If this number is less than or
equal to the number given in the lenunderphrase
opcode, the
lastwordunderbefore
sign is placed in front of each word. If it
is greater, the firstwordunder
indicator is placed before the
first word and the lastwordunderbefore
indicator is placed
after the last word. Note that if the firstwordunder
opcode is
not used its indicator is made up by doubling the dot pattern given in
the lastwordunderbefore
entry.
begcomp dots
typeform
parameter (see Programming with liblouis) or
inferred because it contains a subsequence specified by the
compbrl
opcode (see compbrl).
endcomp dots
typeform
parameter (see Programming with liblouis) or
inferred because it contains a subsequence specified by the
compbrl
opcode (see compbrl).
These opcodes define certain symbols, such as the decimal point, which require special treatment.
decpoint character dots
decpoint . 46
hyphen character dots
These opcodes cause special processing to be carried out.
capsnocont
These opcodes define the braille representations for character sequences. Each of them defines an entry within the contraction table. These entries may be defined in any order except, as noted below, when they define alternate representations for the same character sequence.
Each of these opcodes specifies a condition under which the translation is legal, and each also has a characters operand and a dots operand. The text being translated is processed strictly from left to right, character by character, with the most eligible entry for each position being used. If there is more than one eligible entry for a given position in the text, then the one with the longest character string is used. If there is more than one eligible entry for the same character string, then the one defined first is is tested for legality first. (This is the only case in which the order of the entries makes a difference.)
The characters operand is a sequence or string of characters preceded and followed by whitespace. Each character can be entered in the normal way, or it can be defined as a four-digit hexadecimal number preceded by `\x'.
The dots operand defines the braille representation for the characters operand. It may also be specified as an equals sign (`='). This means that the the default representation for each character (see Character-Definition Opcodes) within the sequence is to be used.
In what follows the word `characters' means a sequence of one or more consecutive letters between spaces and/or punctuation marks.
noback opcode ...
noback always ;\s; 0
nofor opcode ...
compbrl characters
comp6
opcode (see comp6), if 6-dot computer braille is
enabled. For example:
compbrl www translate URLs in computer braille
comp6 character dots
nocont characters
compbrl
, except that the string is uncontracted.
prepunc
opcode (see prepunc) and postpunc
opcode (see postpunc) rules are applied,
however. This is useful for specifying that foreign words should not
be contracted in an entire document.
replace characters {characters}
correct
opcode (see correct).
always characters dots
always a 1
. Use the
uplow
, letter
, etc. character definition opcodes
instead. For example:
always world 456-2456 unconditional translation
repeated characters dots
repeated --- 36-36-36 shorten separator lines made with hyphens
repword characters dots
repword - 123456
largesign characters dots
largesign
is a bit of
braille jargon that pleases braille experts.
word characters dots
syllable characters dots
syllable horse = sawhorse, horseradish
nocross characters dots
nocross
behaves like the always
opcode (see always). For example, if
the English Grade 2 table is being used and the appropriate
hyphenation table has been included nocross sh 146
will cause
the `sh' in `monkshood' not to be contracted.
joinword characters dots
joinword to
235
. This means that if the word `to' is followed by another
word the contraction is to be used and the space is to be omitted. If
these conditions are not met, the word is translated according to any
other opcodes that may apply to it.
lowword characters dots
lowword
derives from the
fact that in English these contractions are written in the lower part
of the cell. For example:
lowword were 2356
contraction characters
letsign
opcode (see letsign)) is placed before such letter
combinations when they actually are abbreviations, not contractions.
The contraction
opcode tells the translator to do this.
sufword characters dots
prfword characters dots
begword characters dots
begmidword characters dots
midword characters dots
midendword characters dots
endword characters dots
partword characters dots
exactdots @dots
exactdots @4-46-12356
will produce the characters with these dot patterns in the output.
prepunc characters dots
postpunc characters dots
begnum characters dots
begnum # 4
.
midnum characters dots
midnum . 46
.
This is because the decimal point has a different dot pattern than the
period.
endnum characters dots
endnum th 1456
.
This handles things like `4th'. A letter sign is NOT
inserted.
joinnum characters dots
joinnum \x20AC 15 (EURO SIGN) joinnum \x0024 145 (DOLLAR SIGN) joinnum \x00A3 1234 (POUND SIGN) joinnum \x00A5 13456 (YEN SIGN)
These opcodes define and use character classes. A character class associates a set of characters with a name. The name then refers to any character within the class. A character may belong to more than one class.
The basic character classes correspond to the character definition
opcodes, with the exception of the uplow
opcode (see uplow), which defines
characters belonging to the two classes uppercase
and
lowercase
. These classes are:
space
digit
letter
lowercase
uppercase
punctuation
sign
math
litdigit
undefined
The opcodes which define and use character classes are shown below. For examples see fr-abrege.ctb.
class name characters
after class opcode ...
before class opcode ...
The swap opcodes are needed to tell the context
opcode (see context), the
correct
opcode (see correct) and multipass opcodes which dot patterns to swap
for which characters. There are three, swapcd
, swapdd
and swapcc
. The first swaps dot patterns for characters. The
second swaps dot patterns for dot patterns and the third swaps
characters for characters. The first is used in the context
opcode and the second is used in the multipass opcodes. Dot patterns
are separated by commas and may contain more than one cell.
swapcd name characters dots, dots, dots, ...
swapcd dropped<PHONE_NUMBER> 356,2,23,...
swapdd name dots, dots, dots ... dotpattern1, dotpattern2, dotpattern3, ...
swapdd
opcode defines substitutions for the multipass
opcodes. In the second operand the dot patterns must be single cells,
but in the third operand multi-cell dot patterns are allowed. This is
because multi-cell patterns in the second operand would lead to
ambiguities.
swapcc name characters characters
swapcc
opcode swaps characters in its second operand for
characters in the corresponding places in its third operand. It is
intended for use with correct
opcodes and can solve problems
such as formatting phone numbers.
The context
and multipass opcodes (pass2
, pass3
and pass4
) provide translation capabilities beyond those of the
basic translation opcodes (see Translation Opcodes) discussed
previously. The multipass opcodes cause additional passes to be made
over the string to be translated. The number after the word
pass
indicates in which pass the entry is to be applied. If no
multipass opcodes are given, only the first translation pass is made.
The context
opcode is basically a multipass opcode for the
first pass. It differs slightly from the multipass opcodes per se. The
format of all these opcodes is opcode test action
. The specific
opcodes are invoked as follows:
context test action
pass2 test action
pass3 test action
pass4 test action
The test
and action
operands have suboperands. Each
suboperand begins with a non-alphanumeric character and ends when
another non-alphanumeric character is encountered. The suboperands and
their initial characters are as follows.
context
opcode.
This suboperand is valid in all test parts but not in action parts.
For the characters which can be used in attribute strings, see the
following table.
class
opcode (see class) or the name of a
swap set defined by the swap opcodes (see Swap Opcodes). Names may
contain only letters. The letters may be upper or
lower-case. The case matters. Class names may be used in test parts
only. Swap names are valid everywhere.
#1
, #2
, #25
. Variables may be set by
one context
or multipass opcode and tested by another. Thus, an
operation that occurs at one place in a translation can tell an
operation that occurs later about itself. This feature will be used in
math translation, and it may also help to alleviate the need for new
opcodes. This suboperand is valid everywhere.
Variables are set in the action part. To set a variable use an
expression like #1=1
, #2=5
, etc. Variables are also
incremented and decremented in the action part with expressions like
#1+
, #3-
, etc. These operators increment or decrement
the variable by 1.
Variables are tested in the test part with expressions like
#1=2
, #3<4
, #5>6
, etc.
The characters which can be used in attribute strings are as follows:
The following illustrates the algorithm how text is evaluated with multipass expressions:
Loop over context, pass2, pass3 and pass4 and do the following for each pass:
correct test action
correct
opcode. If there are no
correct
opcodes in a table, the pre-translation pass is not
used. The format of the correct
opcode is very similar to that
of the context
opcode (see context). The only difference is that in the action
part strings may be used and dot patterns may not be used. Some
examples of correct
opcode entries are:
correct "\\" ? Eliminate backslashes correct "cornf" "comf" fix a common "scano" correct "cornm" "comm" correct "cornp" "comp" correct "*" ? Get rid of stray asterisks correct "|" ? ditto for vertical bars correct "\s?" "?" drop space before question mark
include filename
filename
and incorporate or include
its entries into the table. Included files can include other files,
which can include other files, etc. For an example, see what files are
included by the entry include en-us-g1.ctb in the table
en-us-g2.ctb. If the included file is not in the same directory
as the main table, use a full path name for filename.
locale characters
undefined dots
'\xhhhh'
, where the h's are hexadecimal digits.
display character dots
# When the character a is sent to the embosser or display, # it will produce a dot 1. display a 1
# When the character L is sent to the display or embosser # it will produce dots 1-2-3. display L 123
The display
opcode is optional. It is used when the embosser or
display has a different mapping of characters to dot patterns than
that given in Character-Definition Opcodes. If used, display
entries must proceed character-definition entries.
A possible use case would be to define display opcodes so that the result is Unicode braille for use on a display and a second set of display opcodes (in a different file) to produce plain ASCII braille for use with an embosser.
multind dots opcode opcode ...
multind
opcode tells the back-translator that a sequence of
braille cells represents more than one braille indicator. For example,
in en-us-g1.ctb we have multind 56-6 letsign capsign
.
The back-translator can generally handle single braille indicators,
but it cannot apply them when they immediately follow each other. It
recognizes the letter sign if it is followed by a letter and takes
appropriate action. It also recognizes the capital sign if it is
followed by a letter. But when there is a letter sign followed by a
capital sign it fails to recognize the letter sign unless the sequence
has been defined with multind
. A multind
entry may not
contain a comment because liblouis would attempt to interpret it as an
opcode.
The following opcodes are an early attempt to handle emphasis. They have been deprecated by more specific opcodes, but are kept for backward compatibility.
italsign dots
lastworditalbefore
opcode (see lastworditalbefore) instead.
begital dots
firstletterital
opcode (see firstletterital) instead.
endital dots
lastletterital
opcode (see lastletterital) instead.
boldsign dots
lastwordboldbefore
opcode (see lastwordboldbefore) instead.
begbold dots
firstletterbold
opcode (see firstletterbold) instead.
endbold dots
lastletterbold
opcode (see lastletterbold) instead.
undersign dots
lastwordunderbefore
opcode (see lastwordunderbefore) instead.
begunder dots
firstletterunder
opcode (see firstletterunder) instead.
endunder dots
lastletterunder
opcode (see lastletterunder) instead.
literal characters
compbrl
opcode (see compbrl) instead.
There are a number of automated tests for liblouis and they are proving to be of tremendous value. When changing the code the developers can run the tests to see if anything broke.
For testing the translation tables there are basically two approaches: there are the harness tests and the doctests. They were created at roughly the same time using different technologies, have influenced each other and have gone through improvements and technology changes. For now they are both based on Python so you need to have that installed. The philosophies of the two are slightly different:
>>> translate(['table.ctb'], "Hello", mode=compbrlLeftCursor) ("HELLO", [0,1,2,3], [0,1,2,3], 0)
There is a convenience wrapper which hides away much of the complexity of above example so you can write stuff like
>>> t.braille('the cat sat on the mat') u'! cat sat on ! mat'
But essentially you are writing code, so the doctests allow you to do more flexible tests that are much closer to the raw iron. For technical reasons the doctests will probably only ever work in either Python2 or Python3 but not both and they will never run from C.
To sum it up, the recommendation is that for normal table testing you should use the test harness. It has a lot of momentum and the format is a standard. If you want to be closer to the raw Python API of liblouis, if you want to test some more intricate scenarios (involving inpos, modes, etc) then the doctests are for you.
Each harness file is a simple utf8 encoded json file, which has two entries.
tables
tests
flags
data
These are the valid fields for the flags section:
comment
cursorPos
mode
outputUniBrl
testmode
Each test case has the following entries:
input
output
brlCursorPos
Variables defined in the flags section can be overwridden by individual test cases, but if several tests need the same options, they should idealy be split into their own section, complete with their own flags and data.
For examples please see *_harness.txt in the harness directory in the source distribution.
For examples on how to create doctests please see *_test.txt in the doctest directory in the source distribution.
Back-translation is carried out by the function
lou_backTranslateString
. Its calling sequence is described in
Programming with liblouis. Tables containing no
context
opcode (see context), correct
opcode (see correct) or multipass opcodes can be
used for both forward and backward translation. If these opcodes are
needed different tables will be required.
lou_backTranslateString
first performs pass4
, if
present, then pass3
, then pass2
, then the
backtranslation, then corrections. Note that this is exactly the
inverse of forward translation.
Liblouis may contain code borrowed from the Linux screen reader BRLTTY, Copyright © 1999-2006 by the BRLTTY Team.
Copyright © 2004-2007 ViewPlus Technologies, Inc. www.viewplus.com.
Copyright © 2007,2009 Abilitiessoft, Inc. www.abilitiessoft.com.
Liblouis is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Liblouis is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with Liblouis. If not, see http://www.gnu.org/licenses/.
You use the liblouis library by calling the following functions,
lou_translateString
, lou_backTranslateString
,
lou_logFile
, lou_logPrint
,
lou_endLog
, lou_getTable
,
lou_translate
, lou_backTranslate
, lou_hyphenate
,
lou_charToDots
,
lou_dotsToChar
,
lou_compileString
, lou_readCharFromFile
,
lou_version
and lou_free
.
These are described below. The header file, liblouis.h, also
contains brief descriptions. Liblouis is written in straight C. It has
just three code modules, compileTranslationTable.c,
lou_translateString.c and lou_backTranslateString.c. In
addition, there are two header files, liblouis.h, which defines
the API, and louis.h, used only internally and by liblouisxml.
The latter includes
liblouis.h.
Persons who wish to use liblouis from Python may want to skip ahead to Python bindings.
compileTranslationTable.c keeps track of all translation tables
which an application has used. It is called by the translation,
hyphenation and checking functions when they start. If a table has not
yet been compiled compileTranslationTable.c checks it for
correctness and compiles it into an efficient internal representation.
The main entry point is lou_getTable
. Since it is the module
that keeps track of memory usage, it also contains the lou_free
function. In addition, it contains the lou_logFile
,
lou_logPrint
and lou_endLog
functions, plus some utility
functions which are
used by the other modules.
By default, liblouis handles all characters internally as 16-bit unsigned integers. It can be compiled for 32-bit characters as explained below. The meanings of these integers are not hard-coded. Rather they are defined by the character-definition opcodes. However, the standard printable characters, from decimal 32 to 126 are recognized for the purpose of processing the opcodes. Hence, the following definition is included in liblouis.h. It is correct for computers with at least 32-bit processors.
#define widechar unsigned short int
To make liblouis handle 32-bit Unicode simply remove the word
short
in the above define
. This will cause the translate and
back-translate functions to expect input in 32-bit form and to deliver
their output in this form. The input to the compiler (tables) is
unaffected except that two new escape sequences for 20-bit and 32-bit
characters are recognized.
Here are the definitions of the eleven liblouis functions and their parameters. They are given in terms of 16-bit Unicode. If liblouis has been compiled for 32-bit Unicode simply read 32 instead of 16.
The data structure TranslationTableHeader
is defined by a
typedef
statement in louis.h. To find the beginning,
search for the word `header'. As its name implies, this is
actually the table header. Data are placed in the ruleArea
array, which is the last item defined in this structure. This array is
declared with a length of 1 and is expanded as needed. The table
header consists mostly of arrays of pointers of size HASHNUM
.
These pointers are actually offsets into ruleArea
and point to
chains of items which have been placed in the same hash bucket by a
simple hashing algorithm. HASHNUM
should be a prime and is
currently 1123. The structure of the table was chosen to optimize
speed rather than memory usage.
The first part of the table contains miscellaneous information, such as the number of passes and whether various opcodes have been used. It also contains the amount of memory allocated to the table and the amount actually used.
The next section contains pointers to various braille indicators and
begins with capitalSign
. The rules pointed to contain the
dot pattern for the indicator and an opcode which is used by the
back-translator but does not appear in the list of opcodes. The
braille indicators also include various kinds of emphasis, such as
italic and bold and information about the length of emphasized
phrases. The latter is contained directly in the table item instead of
in a rule.
After the braille indicators comes information about when a letter sign should be used.
Next is an array of size HASHNUM
which points to character
definitions. These are created by the character-definition opcodes.
Following this is a similar array pointing to definitions of
single-cell dot patterns. This is also created from the
character-definition opcodes. If a character definition contains a
multi-cell dot pattern this is compiled into ordinary forward and
backward rules. If such a multi-cell dot pattern contains a single
cell which has not previously been defined that cell is placed in this
array, but is given the attribute space
.
Next come arrays that map characters to single-cell dot patterns and dots to characters. These are created from both character-definition opcodes and display opcodes.
Next is an array of size 256 which maps characters in this range to
dot patterns which may consist of multiple cells. It is used, for
example, to map `{' to dots 456-246. These mappings are created
by the compdots
or the comp6
opcode (see comp6).
Next are two small arrays that held pointers to chains of rules
produced by the swapcd
opcode (see swapcd) and the swapdd
opcode (see swapdd) and by
some multipass, context
and correct
opcodes.
Now we get to an array of size HASHNUM
which points to chains
of rules for forward translation.
Following this is a similar array for back-translation.
Finally is the ruleArea
, an array of variable size to which
various structures are mapped and to which almost everything else
points.
char *lou_version ()
This function returns a pointer to a character string containing the version of liblouis, plus other information, such as the release date and perhaps notable changes.
int lou_translateString ( const char * tableList, const widechar * inbuf, int *inlen, widechar *outbuf, int *outlen, char *typeform, char *spacing, int mode);
This function takes a string of 16-bit Unicode characters in
inbuf
and translates it into a string of 16-bit characters in
outbuf
. Each 16-bit character produces a particular dot pattern
in one braille cell when sent to an embosser or braille display or to
a screen type font. Which 16-bit character represents which dot pattern
is indicated by the character-definition and display opcodes in the
translation table.
The tableList
parameter points to a list of translation tables
separated by commas. If only one table is given, no comma should be
used after it. It is these tables which control just how the
translation is made, whether in Grade 2, Grade 1, or something else.
liblouis knows where to find all the tables that have been distributed
with it.  You can also give a table name which
includes a path. If this is the first table in a list, all the tables
in the list must be on the same path. You can specify a path on which
liblouis will look for table names by setting the environment variable
LOUIS_TABLEPATH
. This environment variable can contain one or
more paths separated by commas. On receiving a table name liblouis
first checks to see if it can be found on any of these paths. If not,
it then checks to see if it can be found in the current directory, or,
if the first (or only) name in a table list, if it contains a
path name, can be found on that path. If not, it checks to see if it
can be found on the path where the distributed tables have been
installed. If a table has already been loaded and compiled this
path-checking is skipped.
The tables in a list are all compiled into the same internal table.
The list is then regarded as the name of this table. As explained in
How to Write Translation Tables, each table is a file which may
be plain text, big-endian Unicode or little-endian Unicode. A table
(or list of tables) is compiled into an internal representation the
first time it is used. Liblouis keeps track of which tables have been
compiled. For this reason, it is essential to call the lou_free
function at the end of your application to avoid memory leaks. Do
NOT call lou_free
after each translation. This will
force liblouis to compile the translation tables each time they are
used, leading to great inefficiency.
Note that both the *inlen
and *outlen
parameters are
pointers to integers. When the function is called, these integers
contain the maximum input and output lengths, respectively. When it
returns, they are set to the actual lengths used.
The typeform
parameter is used to indicate italic type,
boldface type, computer braille, etc. It is a string of characters
with the same length as the input buffer pointed to by *inbuf
.
However, it is used to pass back character-by-character results, so
enough space must be provided to match the *outlen
parameter.
Each character indicates the typeform of the corresponding character
in the input buffer. The values are as follows: 0 plain-text; 1
italic; 2 bold; 4 underline; 8 computer braille. These values can be
added for multiple emphasis. If this parameter is NULL
, no
checking for type forms is done. In addition, if this parameter is not
NULL
, it is set on return to have an 8 at every position
corresponding to a character in outbuf
which was defined to
have a dot representation containing dot 7, dot 8 or both, and to 0
otherwise.
The spacing
parameter is used to indicate differences in
spacing between the input string and the translated output string. It
is also of the same length as the string pointed to by *inbuf
.
If this parameter is NULL
, no spacing information is computed.
The mode
parameter specifies how the translation should be
done. The valid values of mode are listed in liblouis.h. They
are all powers of 2, so that a combined mode can be specified by
adding up different values.
The function returns 1 if no errors were encountered and 0 if a complete translation could not be done.
int lou_translate ( const char * tableList, const widechar * const inbuf, int *inlen, widechar * outbuf, int *outlen, char *typeform, char *spacing, int *outputPos, int *inputPos, int *cursorPos, int mode);
This function adds the parameters outputPos
, inputPos
and
cursorPos
, to facilitate use in screen reader programs. The
outputPos
parameter must point to an array of integers with at
least inlen
elements. On return, this array will contain the
position in outbuf
corresponding to each input position.
Similarly, inputPos
must point to an array of integers of at
least outlen
elements. On return, this array will contain the
position in inbuf
corresponding to each position in
outbuf
.
cursorPos
must point to an integer containing the position of the
cursor in the input. On return, it will contain the cursor position in
the output. Any parameter after outlen
may be NULL
. In
this case, the actions corresponding to it will not be carried out. The
mode
parameter, however, must be present and must be an integer,
not a pointer to an integer. If the compbrlAtCursor
bit is set in
the mode
parameter the space-bounded characters containing the
cursor will be translated in computer braille. If the
compbrlLeftCursor
bit is set only the characters to the left of
the cursor will be in computer braille. This bit overrides
compbrlAtCursor
.
When the dotsIO
bit is set, during translation, produce output as dot patterns. During
back-translation accept input as dot patterns. Note that the produced
dot patterns are affected if you have any display
opcode (see display) defined
in any of your tables.
The ucBrl
(Unicode Braille) bit is used by lou_charToDots
and lou_translate
. It causes the dot
patterns to be Unicode Braille rather than the liblouis representation.
Note that you will not notice any change when setting ucBrl
unless dotsIO
is also set.
lou_dotsToChar
and lou_backTranslate
recognize Unicode
braille automatically.
The otherTrans
mode needs special description. If it is set
liblouis will attempt to call a wrapper for another translator. These
other translators are usually for Asian languages. The calling sequence
is the same as for liblouis itself except that the trantab
parameter gives the name of the other translator, possibly abbreviated,
followed by a colon, followed by whatever other information the other
translator needs. This is specific for each translator. If no such
information is needed the colon should be omitted. The result of calling
either the translate or back-translate functions with this mode bit set
will be the same as calling without it set. That is, the wrapper for the
other translator simulates a call to liblouis. Note that the wrappers
are not implemented at this time. Setting this mode bit will result in
failure (return value of 0).
int lou_backTranslateString ( const char * tableList, const widechar * inbuf, int *inlen, widechar *outbuf, int *outlen, char *typeform, char *spacing, int mode);
This is exactly the opposite of lou_translateString
.
inbuf
is a string of 16-bit Unicode characters representing
braille. outbuf
will contain a string of 16–bit Unicode
characters. typeform
will indicate any emphasis found in the
input string, while spacing
will indicate any differences in
spacing between the input and output strings. The typeform
and
spacing
parameters may be NULL
if this information is
not needed. mode
again specifies how the back-translation
should be done.
int lou_backTranslate ( const char * tableList, const widechar * inbufx, int *inlen, widechar * outbuf, int *outlen, char *typeform, char *spacing, int *outputPos, int *inputPos, int *cursorPos, int mode);
This function is exactly the inverse of lou_translate
.
int lou_hyphenate ( const char *tableList, const widechar *inbuf, int inlen, char *hyphens, int mode);
This function looks at the characters in inbuf
and if it finds
a sequence of letters attempts to hyphenate it as a word. Note that
lou_hyphenate operates on single words only, and spaces or punctuation
marks between letters are not allowed. Leading and trailing
punctuation marks are ignored. The table named by the tableList
parameter must contain a hyphenation table. If it does not, the
function does nothing. inlen
is the length of the character
string in inbuf
. hyphens
is an array of characters and
must be of size inlen
+ 1 (to account for the NULL terminator).
If hyphenation is successful it will have a 1 at the beginning of each
syllable and a 0 elsewhere. If the mode
parameter is 0
inbuf
is assumed to contain untranslated characters. Any
nonzero value means that inbuf
contains a translation. In this
case, it is back-translated, hyphenation is performed, and it is
re-translated so that the hyphens can be placed correctly. The
lou_translate
and lou_backTranslate
functions are used
in this process. lou_hyphenate
returns 1 if hyphenation was
successful and 0 otherwise. In the latter case, the contents of the
hyphens
parameter are undefined. This function was provided for
use in liblouisxml.
int lou_compileString (const char *tableList, const char *inString)
This function enables you to compile a table entry on the fly at
run-time. The new entry is added to tableList
and remains in force
until lou_free
is called. If tableList
has not previously
been loaded it is loaded and compiled. inString
contains the
table entry to be added. It may be anything valid. Error messages
will be produced if it is invalid. The function returns 1 on success and
0 on failure.
int lou_dotsToChar (const char *tableList, const widechar *inbuf, widechar *outbuf, int length, int)
This function takes a widechar string in inbuf
consisting of dot
patterns and converts it to a widechar string in outbuf
consisting of characters according to the specifications in
tableList
. length
is the length of both inbuf
and
outbuf
. The dot patterns in inbuf
can be in either
liblouis format or Unicode braille. The function returns 1 on success
and 0 on failure.
int lou_charToDots (const char *tableList, const widechar *inbuf, widechar *outbuf, int length, int mode)
This function is the inverse of lou_dotsToChar
. It takes a
widechar string in inbuf
consisting of characters and converts it
to a widechar string in outbuf
consisting of dot patterns
according to the specifications in tableList
. length
is the
length of both inbuf
and outbuf
. The dot patterns in
outbufbuf
are in liblouis format if the mode bit ucBrl
is
not set and in Unicode format if it is set. The function returns 1 on
success and 0 on failure.
void lou_logFile (char *fileName);
This function is used when it is not convenient either to let messages be printed on stderr or to use redirection, as when liblouis is used in a GUI application or in liblouisxml. Any error messages generated will be printed to the file given in this call. The entire path name of the file must be given.
void lou_logPrint (char *format, ...);
This function is called like fprint
. It can be used by other
libraries to print messages to the file specified by the call to
lou_logFile
. In particular, it is used by the companion
library liblouisxml.
lou_logEnd ();
This function is used at the end of processing a document to close the log file, so that it can be read by the rest of the program.
char * lou_setDataPath (char *path);
This function is used to tell liblouis and liblouisutdml where tables
and files are located. It thus makes them completely relocatable, even
on Linux. The path
is the directory where the subdirectories
liblouis/tables
and liblouisutdml/lbu_files
are rooted or
located. The function returns a pointer to the path
.
char * lou_getDataPath ();
This function returns a pointer to the path set by
lou_setDataPath
. If no path has been set it returns NULL
.
void *lou_getTable (char *tablelist);
tablelist
is a list of names of table files separated by
commas, as explained previously
(see tableList
parameter in lou_translateString
). If no errors are found this function
returns a pointer to the compiled table. If errors are found messages
are printed to the log file, which is stderr unless a different
filename has been given using the lou_logFile
function.
Errors result in a NULL
pointer being returned.
int lou_readCharFromFile (const char *fileName, int *mode);
This function is provided for situations where it is necessary to read
a file which may contain little-endian or big-endian 16-bit Unicode
characters or ASCII8 characters. The return value is a little-endian
character, encoded as an integer. The fileName
parameter is the
name of the file to be read. The mode
parameter is a pointer to
an integer which must be set to 1 on the first call. After that, the
function takes care of it. On end-of-file the function returns
EOF
.
void lou_free ();
This function should be called at the end of the application to free
all memory allocated by liblouis. Failure to do so will result in
memory leaks. Do NOT call lou_free
after each
translation. This will force liblouis to compile the translation
tables every time they are used, resulting in great inefficiency.
There are Python bindings for lou_translateString
,
lou_translate
and lou_version
. For installation
instructions see the the README file in the python
directory. Usage information is included in the Python module itself.
lou_backTranslate
: lou_backTranslatelou_backTranslateString
: lou_backTranslateStringlou_charToDots
: lou_charToDotslou_compileString
: lou_compileStringlou_dotsToChar
: lou_dotsToCharlou_free
: lou_freelou_getDataPath
: lou_getDataPathlou_getTable
: lou_getTablelou_hyphenate
: lou_hyphenatelou_logEnd
: lou_logEndlou_logFile
: lou_logFilelou_logPrint
: lou_logPrintlou_readCharFromFile
: lou_readCharFromFilelou_setDataPath
: lou_setDataPathlou_translate
: lou_translatelou_translateString
: lou_translateStringlou_version
: lou_version


CrimPapers
Articles published on 2 August 2020
On 2 August 2020, 5 new articles were published in 4 journals.
Institutionalizing Problem‐oriented Policing: An Evaluation of the Emun Reform in Israel by David Weisburd,
badi Hasisi,
yael Litmanovitz,
tomer Carmel,
shani Tshuva
Sexual Violence, Traumatic Memory, and Speculative Fiction As Action
University Crime Alerts: Do They Contribute to Institutional Betrayal and Rape Myths?
Measuring the Quality of the Working Alliance in Flemish Community Supervision Practice: A Validation Study of the Working Alliance For Mandated Clients Inventory by Johan Boxstaens, Jan Depauw
The Impact of Brain Injury on Within-Individual Changes in Moral Disengagement: Implications For Criminal and Antisocial Behavior


Node.js uses asynchronous programming!
The way that Node.js handles a file request:
Can generate dynamic page content, create, open, read, write, delete, and close files on the server, can collect from data, can add, delete, modify data in your database.
Node.js must be initiated in the Command Line Interface program of your computer.
You should go to the path where your file is
To initiate the file that you create, you should use path.../node myfirst.js
It is important to know that your computer will work as the server, anyone who try to access to the port 8080 will get a "Hello World!" message, (In this example only)
Consider the modules to be the same as JavaScript libraries. A set of functions you want to include in your application.
It is possible to use some modules without any kind of extra installation. You can look them in the next link
To include a module, it is necessary to use require()
function with the name of the module.
var http = require('http');
Using this, the application has access to the HTTP module, and is able to create a server.
It is possible to create your own modules, and then easy include them in your applications. To do it is necessary to use the keyword exports
:
exports.myDateTime = function () { return Date(); };
To include oyur module, is necessary to use the same notation like if you are trying to use a normal module:
var dt = require('/myfirstmodule');
You should use the path where your module is.
This module allows to transmit data using HTTP.
The HTTP module can create an HTTP server that listens to server ports and gives a response back to the client.
You can use the createServer()
method to create an HTTP server.
If the response fromt the HTTP server is supposed to be displayed as HTML, you should include an HTTP header with the correct content type:
The req argument in the method allow to see the url where you are at the moment, for example, if you are in localhost:8080/summer
, the req.url will show the word /summer
.
It is also possible to split some information from the Query, an example:
So if you put: http://localhost:8080/?year=2017&month=July
, the result will be 2017 July
The Node.js file system module allows you to work with the file system on your computer.
To include this module: var fs = require('fs');
Some common use for this module:
The method fs.readFile()
is used to read files on your computer.
If you have a .html
file, you can use the Node.js module to read it an show it.


This is a wrapper on SapMList (PROTOTYPE!)
Link to blog: Design Studio SDK: Prototype SapMList (not exising yet)


{% extends "manage/base.html" %} {% import "manage/form_macro.html" as form_macro %} {% import "bootstrap/wtf.html" as wtf %} {% block main_body %}
{{error}}


Web development / Video editing / Google environment / Mac osx / Windows
Hi, my name is Ahbleza and I'm a member of the Sweetgrass First Nation located in Saskatchewan, with heritage from the Plains Cree and Denesųłiné. I am here to help Indigenous owned businesses and indvidiuals, as well as those who are non-Indigenous and with whom we now share territory. I'm very passionate about web development and creating functional and responsive websites. I've always been fascinated with technology and the internet but more so recently due to the pandemic; I began my journey to learn the necessary skills to ensure I can deliver products customers will love and be proud of. Being new, there are many things for me to learn and if there's something you've seen and desire, if I don't know how to do it then I will learn how to do it and deliver! I will be working on my technical writing to add that to my skills.
Download link to my "Introduction to web development" course completion certificate.


1.0.1
Injector
Contains inject and cleanup methods
Predefined inject before
(int)
predefined value
Predefined inject after
(int)
predefined value
Launcher
Launcher class. Keeps original method and injections.
(Function)
original function


Setting password
Don't worry, it's just a local application.
Your account & password will be used for generate auth token.
Setting token
Don't worry, it's just a local application.
Your account & token will be used for generate auth token.
Don't worry, it's just a local application.
Your account & password will be used for generate auth token.
Don't worry, it's just a local application.
Your account & token will be used for generate auth token.


{% extends "emails/base.html" %}
{% block content %}
Hello {{ skater_short_name }},
You have been invited to join the Mad Wreckin’ Dolls for their Spring 2015 session.
Here is the link to register for the session. Please fill out the required information and submit payment by February 20, 2015. You will receive a confirmation email after the form is completed.


Available budget in
%Month%
:
+ 4,015.00
Income
+ 5,515.00
Expenses
- 1,500.00
%33
+
-
Income
Expenses


Wine, Coffee, Milkshake, Cider, Whiskey...
The classic burger is an all time BBQ favourite!
You can't go without Potato Chips
A rich, sweet, creamy rich with flavored cream
Thin layer of bread dough topped with cheese
We consume as many sandwiches as we have to eat
Fried chicken is one of the most delicious foods.
First, we start with big, fresh, crispy yellow onions.
A simple hot dog contains about 174 calories.
No products in the cart
Minimum Order Amount


ti-service-targetaccess demo
Device:
Connect
Disconnect
Auto-connect upon Device Selection
Evaluate:
Submit


Music Match
Home
About
Explore
My Library
My Profile
Login
Our Recommendation:
Slideshow 1:
Dislike
Like


Meals On A Mission is at a tipping point of a revolution in our fundraising industry! Thank you….for considering us as an alternative to what fundraisers are available out there and helping us to change the world…one bite at a time!
Blessings your way,
Beverly Gonzalez
Founder and CEO


Rules: At the Double, Forward to Victory, Inspiring Presence
Selections: 0. Martyr's Strength, 0. Parchment of Purity, General, Rune-etched Greatblade, Sworn Protector
Categories: CELESTIAL, HUMAN, ORDER, HERO, STORMCAST ETERNALS, ERRANT-QUESTOR, Leader, General, 6_under_wounds, Artefact
Artefact: Parchment of Purity, Command Trait: Martyr's Strength, Unit: Errant-Questor, Unit Abilities: Implacable Determination, Oathsworn, Relentless Purpose, Sworn Protector, Weapon: Rune-etched Greatblade
| Artefact | Artefact Details | Ref |
|---|---|---|
| Parchment of Purity | In your hero phase, heal 1 wound allocated to the bearer. |
| Command Trait | Command Trait Details | Ref |
|---|---|---|
| Martyr's Strength | Roll a dice if this general is slain in the combat phase. On a 2+ this general can make a pile-in move and then attack with all of the melee weapons it is armed with, before it is removed from play. |
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Errant-Questor | 5" | 5 | 8 | 3+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Implacable Determination | When you make save rolls for an Errant-Questor, ignore the enemy's Rend characteristic. | |
| Oathsworn | After set-up, you must declare an oath for each Errant-Questor in your army to fulfil. | |
| Relentless Purpose | You can re-roll failed charge rolls for an Errant-Questor. | |
| Sworn Protector | Pick a HERO in your army for the Errant-Questor to protect. Whilst this model is within 3" of the model you picked, you can choose to allocate any unsaved or mortal wound inflicted upon that model to the Errant-Questor instead. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Rune-etched Greatblade | Melee | 1" | 3 | 3+ | 3+ | -1 | D3 |
Selections: 5 Liberators, Warhammer and Shield
Categories: CELESTIAL, HUMAN, LIBERATORS, REDEEMER, ORDER, STORMCAST ETERNALS, Battleline
Unit: Liberator, Unit Abilities: Lay Low the Tyrants, Liberator-Prime, Paired Weapons, Sigmarite Shields, Weapon: Warhammer(s)
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Liberator | 5" | 2 | 7 | 4+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Lay Low the Tyrants | You can add 1 to hit rolls for attacks made by this unit that target an enemy unit with a Wounds characteristic of 5 or more. | |
| Liberator-Prime | The leader of this unit is a Liberator-Prime. Add 1 to the Attacks characteristic of a Liberator-Prime’s melee weapon. | |
| Paired Weapons | Each unmodified hit roll of 6 made for a model armed with either a pair or warhammers or a pair of warblades inflicts 2 hits on the target instead of 1. Make a wound and save roll for each hit. | |
| Sigmarite Shields | You can re-roll save rolls of 1 for attacks that target this unit if any models from this unit are carrying Sigmarite Shields. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Warhammer(s) | Melee | 1" | 2 | 4+ | 3+ | - | 1 |
Selections: 5 Liberators, Warhammer and Shield
Categories: CELESTIAL, HUMAN, LIBERATORS, REDEEMER, ORDER, STORMCAST ETERNALS, Battleline
Unit: Liberator, Unit Abilities: Lay Low the Tyrants, Liberator-Prime, Paired Weapons, Sigmarite Shields, Weapon: Warhammer(s)
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Liberator | 5" | 2 | 7 | 4+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Lay Low the Tyrants | You can add 1 to hit rolls for attacks made by this unit that target an enemy unit with a Wounds characteristic of 5 or more. | |
| Liberator-Prime | The leader of this unit is a Liberator-Prime. Add 1 to the Attacks characteristic of a Liberator-Prime’s melee weapon. | |
| Paired Weapons | Each unmodified hit roll of 6 made for a model armed with either a pair or warhammers or a pair of warblades inflicts 2 hits on the target instead of 1. Make a wound and save roll for each hit. | |
| Sigmarite Shields | You can re-roll save rolls of 1 for attacks that target this unit if any models from this unit are carrying Sigmarite Shields. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Warhammer(s) | Melee | 1" | 2 | 4+ | 3+ | - | 1 |
Selections: 5 Retributors [190pts], Lightning Hammer
Categories: CELESTIAL, HUMAN, PALADIN, RETRIBUTORS, ORDER, STORMCAST ETERNALS, Other
Unit: Retributor, Unit Abilities: Blast to Ashes, Retributor-Prime, Weapon: Lightning Hammer
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Retributor | 4" | 3 | 7 | 4+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Blast to Ashes | If the unmodified hit roll for an attack made with a Lightning Hammer is 6, that attack inflicts 2 mortal wounds on the target and the attack sequence ends (do not make a wound or save roll). | |
| Retributor-Prime | The leader of this unit is a Retributor-Prime. Add 1 to the Attacks characteristic of a Retributor-Prime’s Lightning Hammer. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Lightning Hammer | Melee | 1" | 2 | 3+ | 3+ | -1 | 2 |
Categories: Allegiance
Selections: Hallowed Knights, Stormkeep
Battle Trait: Mortal Auxilliaries, Only the Faithful, Shield of Civilisation, Stormhosts, Command Abilities: Holy Crusaders
| Battle Trait | Battle Trait Details | Ref |
|---|---|---|
| Mortal Auxilliaries | 1 in every 4 units in a Stormkeep army can be a CITIES OF SIGMAR unit. Add 1 to the Bravery characteristic of those units while they are wholly within 12" of a friendly LIBERATORS unit. In addition, when you pick a unit to benefit from a command ability from Battletome: Stormcast Eternals, you can treat those units as if they were STORMCAST ETERNALS units. | |
| Only the Faithful | If a friendly HALLOWED KNIGHTS unit is affected by a spell or endless spell, roll a dice. On a 6+ ignore the effects of that spell on that unit. | |
| Shield of Civilisation | Add 1 to the Bravery characteristic of friendly STORMCAST ETERNALS units while they are wholly within 12" of any friendly LIBERATORS units. In addition, at the end of your movement phase, you can pick any friendly LIBERATORS units that did not move and were not set up in that phase and say they will stand fast. If you do so, until your next movement phase, you can add 1 to hit rolls for attacks made by those units, and you can add 1 to save rolls for attacks that target those units. |
|
| Stormhosts | If your army is a Stormcast Eternals army, you can give it a Stormhost keyword. All STORMCAST ETERNAL units in your army gain that keyword. If a model already has a Stormhost keyword, it cannot gain another one, but this does not prevent other units in your army from having a different Stormhost keyword. You can either choose one of the Stormhosts in the list, or choose another Stormhost you've read about or created yourself. If you choose from the list below, all units with that keyword benefit from the extra abilities listed for that Stormhost. If you choose a different Stormhost, simply pick the Stormhost that most closely matches the nature of your own Stormhost. |
| Command Abilities | Command Ability Details | Ref |
|---|---|---|
| Holy Crusaders | You can use this command ability at the start of your hero phase. If you do so, pick a friendly HALLOWED KNIGHTS unit wholly within 9" of a friendly HALLOWED KNIGHTS HERO, or wholly within 18" of a friendly HALLOWED KNIGHTS HERO that is a general. Add 1 to run rolls and charge rolls for that unit until your next hero phase. In addition, until your next hero phase, that unit can run and still charge later in the same turn. |
Selections: 1000 Points - Vanguard
Categories: Game Options, Vanguard
Selections: Origin: Ghyran
Categories: Realm of Origin
At the Double: You can use this command ability after you make a run roll for a friendly unit that is within 6" of a friendly HERO, or 12" of a friendly HERO that is a general.  (Core Rules p3)
Forward to Victory: You can use this command ability after you make a charge roll for a friendly unit that is within 6" of a friendly HERO, or 12" of a friendly HERO that is a general. If you do so, re-roll the charge roll. (Core Rules p3)
Inspiring Presence: You can use this command ability at the start of the battleshock phase. If you do so, pick a friendly unit that is within 6" of friendly HERO, or 12" of a friendly HERO that is a general. That unit does not have to take battleshock tests in that phase. (Core Rules p3)
Created with BattleScribe


SmartC - C Compiler for Signum - 0.1
❐ Source code:
Cursor: 0:0
❐ Actions:
Compile
Help
Tests
C
Debug
❐ Status:
❐ Assembly output:
❐ Localhost node deployment form for smart contract:
Deployment:
Testnet
Main
Contract Name:
Description:
Bytecode:
Bytedata:
Data Pages:
Code Stack Pages:
User Stack Pages:
Min. Activation Amount NQT:
Secret Phrase:
Fee (NQT):
Tx Deadline (minutes):
Broadcast Tx?
Response:


Description
The basics of computer programming concepts using the C programming language. Emphasis on problem solving and algorithm implementation using a universal subset of the C programming language. Lecture and laboratory.
Purpose of C programming
This course is designed for engineering students who are comfortable working by computer. This course doesn't require any former knowledge about computer, But it requires enthusiasm and commitment to learn.
This course focuses on problem solving, design algorithms and finally implementation by C programing language. By end of this class, you will be familiar with concepts:
These concepts are general and can be used in other high level programming languages such as C++, C#, Java,... you can read more about C programming syllabus here
Lecture Notes
| Slide 1: Introduction |
| Slide 2: What is computer? |
| Slide 3: Introduction to C |
| To find out other slides click here |
Assisgnments
| Assignment 1: number system and conversion |
| Assignment 2: introduction to c |
| Assignment 3: introduction to flowcharts |
Quizzes
| Quiz 1 | Solution quiz 1 | grades |
| Quiz 2 | Solution quiz 2 |


The version of Hovergen accessible through WWW-Query uses two helper applications that allow to visualize and to handle the alignments and the phylogenic trees provided with this database. These applications are SeaView (for the alignments) and NJplot (for the phylogenic trees).
The procedure to set up these two applications is the following:
.mailcap
file of your home directory by adding the
following lines:
chemical/mase; seaview -save clustal %s chemical/njplot; njplot %s
ALN
or TREE
, you will access
respectively the protein alignment and the tree of the corresponding gene
family in Hovergen.
Seaview allows you to edit the alignment and to save it on your disk. Njplot allows you to root the tree and to swap the nodes. You can also save the tree on your local disk in PostScript format in a way to print it on a compatible printer.
Note that if you do not want to install these applications on your computer
or if the binary corresponding to your platform is not available, you can still
click on the ALN
and TREE
links. In
this case the corresponding data will be send as text files to your Web browser.


Loathe Announce New Album, I Let It In And It Took Everything
Listen to Aggressive Evolution, taken from Loathe’s upcoming album I Let It In And It Took Everything
Liverpudlian metallers Loathe have announced details of their upcoming second album, I Let It In And It Took Everything.
The follow-up Loathe’s debut album The Cold Sun, it will be released on February 7 via SharpTone Records.
READ THIS: The 50 best American metal bands from the last decade
“It is our pleasure to finally, after what may seem like a lifetime, reveal to the world our latest collective effort I Let It In And It Took Everything,” says the band. “An accumulation of passion, dedication, and love. Please listen closely and enjoy.”
Listen to new track Aggressive Evolution below.
Loathe are touring the UK next month alongside Stray From The Path, The Devil Wears Prada and Gideon. Get your tickets now.
Loathe UK tour 2019
December
02 Birmingham Asylum
03 Bristol SWX
04 Glasgow G2
05 Manchester Rebellion
06 London Islington O2 Academy
07 Southampton The Loft


SceneJS
- optimization - vertex sharing
two face index arrays (ie two objects) sharing same UV, normal and position arrays
resulting in less VBO binds per draw call


[gecode-users] Reify (on trunk)
Christian Schulte
cschulte at kth.se
Thu Dec 1 19:13:35 CET 2011
Sure, will do. As you might have seen this is still very much in its infancy
and far from ready...
Christian
-----Original Message-----
From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
Of Denys Duchier
Sent: Thursday, December 01, 2011 5:44 PM
To: users at gecode.org
Subject: [gecode-users] Reify (on trunk)
Christian, just a heads-up:
Reify without a default constructor means I can't preallocate a variable on
the stack and fill it later. This is a bit inconvenient for the python
bindings. Would you be willing to add one? pretty please? ;-) Cheers,
--Denys
_______________________________________________
Gecode users mailing list
users at gecode.org
https://www.gecode.org/mailman/listinfo/gecode-users
More information about the users
mailing list


Water channels
问题描述 :
So many towns are in drought! The mayor is anxious!
Luckily, There is a reservoir on the mountain top, and the mayor wants to use the water there to irrigate the farmland. The only way is to build some NEW channels to connect the towns that in drought to the reservoir directly or indirectly. Now the problem is the mayor wants to konw what is the least number of channels that have to build to connect all the towns in drought to the reservoir directly or indirectly.
Luckily, There is a reservoir on the mountain top, and the mayor wants to use the water there to irrigate the farmland. The only way is to build some NEW channels to connect the towns that in drought to the reservoir directly or indirectly. Now the problem is the mayor wants to konw what is the least number of channels that have to build to connect all the towns in drought to the reservoir directly or indirectly.
输入:
The input consists of multiple test cases. Each case begins with a line containing a positive integer n(0 <= n <= 100), following n pairs of towns in the form "A B", means there has been a channel from A to B. The third line contains a positive integer m(0 <= m <= 16), following m lines containing the names of those towns in drought. The last line contains a town’s name which the reservoir is in. You should note that the names of the towns only contain ‘A’ to ‘Z’,and their length will less than 100.
输出:
The input consists of multiple test cases. Each case begins with a line containing a positive integer n(0 <= n <= 100), following n pairs of towns in the form "A B", means there has been a channel from A to B. The third line contains a positive integer m(0 <= m <= 16), following m lines containing the names of those towns in drought. The last line contains a town’s name which the reservoir is in. You should note that the names of the towns only contain ‘A’ to ‘Z’,and their length will less than 100.
样例输入:
2 A B B C 2 B C A 1 A B 2 B C A
样例输出:
0 1
(adsbygoogle = window.adsbygoogle || []).push({});
我连怎么回复都不知道…楼主这么棒的资源都有
DFS方法的原理还是不太清楚啊
红绯鱼：
牛逼牛逼
很不错！
#!/usr/bin/env python def cou(n): arr = [1]
博主的C++功底真是好
博主的C++功底真是好
6题应该就是算概率的吧
输出规范写错了哦~
不错，再多来的CF上面的题
remove没有实现
妈呀！这个Dijkstra模板好长OwQ！
A猴子认识的所有猴子和B猴子认识的所有猴子都能认识，这句话用《爱屋及乌》描述比较容易理解……
97行缺一个分号
网站做得很好看，内容也多，全。前段时间在博客园里看到有人说：网页的好坏看字体。觉得微软雅黑的字体很好看，然后现在这个网站也用的这个字体！nice!


Lets Have Some Fun With Pig Dice
Enter To Submit Player Names and Scroll Down
Game Rules
If the player rolls a 1, they score nothing and it becomes the next player's turn.
If the player rolls any other number, it is added to their turn total and the player's turn continues.
If a player chooses to "hold", their turn total is added to their score, and it becomes the next player's turn.
If a player rolls double ones (2-two 1s), then they lose their total score and it becomes the next player's turn.
Player:
Current score:
Total score:
Roll
Hold
Player:
Current score:
Total score:
Roll
Hold


Project page
Structures done:
LinkedList(value) - singly linked list. Not especially useful. Didn't spend much time here.
- length - holds the length of the list.
- indexOf(value) - Return the first index occurence of value
- getLength() - Return length of list.
- swap(a,b) - swap at index a and b.
- appendList(list) - append another list to this one.
- reverse(a,b) - reverse betweeen indices a and b inclusive.
- insertAt(index, value) - insert value at index.
- push_back(value) - push a value to the back of the list.
- push_front(value) - push a value to the front of the list.
- removeAt(index) - remove the element at index.
- pop_back() - remove the back element of list. Returns the element.
- pop_front() - remove the front element of list. Returns the element.
- assign(index, value) - assign element at index a value.
- sublist(a,b) - return a new LinkedList. Copies data from index a to b inclusive.
- getValueAt(index) - return the value stored at index.
- toArray() - return an array representation of the LinkedList.
DoublyLinkedList(value) - doubly linked list. (Each node has a prev and next pointer).
- length - holds the length of the list.
- indexOf(value) - Return the first index occurence of value
- lastIndexOf(value) - Return the last index occurence of value
- getLength() - Return length of list.
- swap(a,b) - swap at index a and b.
- appendList(list) - append another list to this one.
- reverse(a,b) - reverse betweeen indices a and b inclusive.
- insertAt(index, value) - insert value at index.
- push_back(value) - push a value to the back of the list.
- push_front(value) - push a value to the front of the list.
- removeAt(index) - remove the element at index.
- pop_back() - remove the back element of list. Returns the element.
- pop_front() - remove the front element of list. Returns the element.
- assign(index, value) - assign element at index a value.
- sort(compareFunction) - Sorts the list using a comparison function. Replaces current list. compareFunction is a function that takes arguments a and b. See Array.prototype.sort for more info.
- sublist(a,b) - return a new LinkedList. Copies data from index a to b inclusive.
- getValueAt(index) - return the value stored at index.
- toArray() - return an array representation of the LinkedList.
- toArrayBackwards() - return an array representation of the LinkedList, but starting from the tail and going backwards.
- Demo
AVLTree(value) - AVL style Binary Search Tree
- size - Number of members in the tree.
- insertKeyBalanced(val) - Put a value into the search tree. (Accepts unique keys only)
- removeKeyBalanced(val) - Remove a value from the search tree.
- getKeyAt(n) - Return nth lowest key
- getMinKey() - Return lowest key
- getMaxKey() - Return highest key
- removeKeyAt(n) - Return nth lowest key
- popMinKey() - Return lowest key
- popMaxKey() - Return highest key
- toArray() - Layer by layer traversal
- toArrayPreO() - Pre Order traversal
- toArrayInO() - In Order traversal.
- toArrayPostO() - Post Order traversal.
- copy() - Return a copy of the tree.
- Demo
DisjointSetForest(n) - A container for Disjoint Sets
- find(index) - find the representative element of the set containing index. Performs path compression.
- union(u,v) - joins sets containing u and v. If already unioned, return false. If not, return true.
- toArray() - return an array representation of the DisjointSetForest.
- Demo (Maze Generator)
Queue(size, val) - FIFO Queue
- length - How long the queue is (number of members).
- isEmpty() - Return true if empty, false otherwise.
- enqueue(val) - Add a value to the queue.
- push(val) - Alias for enqueue.
- dequeue() - Remove the first item from the queue.
- pop() - Alias for dequeue
- front() - Return the first item on the queue, but do not remove it.
- peek() - Alias for front.
- copy() - Return a shallow copy of the queue.
- toArray() - Return an array representation of the queue.
- Demo
- Credit goes to Stephen Morley. I modified his code to use prototype methods instead.


Welcome to my work in progress.  While you wait, why don't you try a refreshing glass of blog post?
- 01/18/2015 - Stereotype Threat part 2
- 01/18/2015 - Ruby vs JavaScript
- 01/11/2015 - Stereotype Threat
- 01/11/2015 - Blocks, Procs, and Lambdas
- 01/06/2015 - Biofeedback and How to Stop It
- 01/06/2015 - Classy Cats
- 12/14/2014 - Women in Technology
- 12/14/2014 - Map vs Each
- 12/06/2014 - Failing For Fun and Profit
- 12/06/2014 - Arrays & Hashes
- 11/30/2014 - CSS and You
- 11/21/2014 - The DBC Culture
- 11/21/2014 - Welcome to git


Healy leads Albany (NY) over Div-III SUNY-Potsdam 78-52
by Associated PressALBANY, N.Y. (AP) — Cameron Healy posted 15 points and seven rebounds as Albany easily defeated Division III SUNY-Potsdam 78-52 on Tuesday night.
Ahmad Clark had 14 points for the Great Danes, who evened their record at 2-2. Antonio Rizzuto added 11 points. Romani Hansen had eight rebounds and four blocks for the home team.
Brandon Segar had 13 points and nine rebounds for Potsdam. Danny Delsol-Lowry added six rebounds. Tyrese Baptiste had nine rebounds.
Albany matches up against Quinnipiac on the road on Friday.
___
For more AP college basketball coverage: https://apnews.com/Collegebasketball and http://twitter.com/AP_Top25
___
This was generated by Automated Insights, http://www.automatedinsights.com/ap, using data from STATS LLC, https://www.stats.com


--- layout: post permalink: sungrubbies.html Tags: Array NameOfCoupon: Sun Grubbies Cash Back Summary: See our SunGrubbies.com Coupon Code, SunGrubbies.com Rebate, SunGrubbies.com Promo Code, SunGrubbies.com Discount, SunGrubbies.com Coupon Cash Back Rebate here. MetaKeywords: Sun Grubbies Coupon Code, Sun Grubbies Rebate, Sun Grubbies Promo Code, Sun Grubbies Cash Back Rebate, Sun Grubbies Discount, Sun Grubbies Coupon Image: images/25840.gif LinkURL: http://www.shareasale.com/r.cfm?b=213371&u=412002&m=25840 affiliate_url_link: http://www.icouponblog.com/jane.php?id=57 thesis_readmore: See the Sun Grubbies Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=sungrubbies.com Title: Save 5% - Sun Grubbies Coupon Code for sungrubbies.com. Sun Grubbies Rebate & Discount thesis_description: Our Sun Grubbies Discount Coupon Code for sungrubbies.com. We have the best Sun Grubbies Rebate anywhere. thesis_keywords: Sun Grubbies, Sun Grubbies Coupon Code, Sun Grubbies Discount, Sun Grubbies Rebate product_name: Sun Grubbies hop_url: http://www.icouponblog.com/hop.php?id=57 ---
SunGrubbies.com is a leading e-tailer of sun protective clothing and accessories. Protect your skin from the damages of the sun by buying Sungrubbies.com products. Use your discount coupon for a good bargain. Premature aging, skin cancer, acute sensitivity are some of the conditions caused by exposure to sunlight. Protect yourself against them by effective outer-wear and sunscreens by SunGrubbies.com.
SunGrubbies.com has specially designed clothing, hats, sunscreens and unique products such as sungloves and sunsleeves that are laboratory tested to be UV protective. SunGrubbies.com is a company of pro-health and environmentally minded people. SunGrubbies.com has a special section dedicated to natural, non-chemical sunscreens. They also have sun protective clothing made of eco-friendly fibers like cocona. SunGrubbies.com has been offering their sun safety products for over 12 years. Get cash back rebate on SunGrubbies.com products and make your skin healthier.
SunGrubbies.com has a wide range of products for all ages. Sun-hats, outdoor work clothes, water sports, sun protective swim wear called rash guard and water shirts to name just a few. Enjoy sunlight and outdoor activities but protect your skin, your health with SunGrubbies.com sun protective products. Get discount on products from SunGrubbies.com. Use your cash back rebate, promotion code to get the best deals.


{{ goal.title }}
Toal goal cost
{{ goal.totalCost | money }}Cost per person
{{ goal.costPerUnit | money }}Status
Helped {{ goal.impactsForUser }} {{ $parent.impactCtrl.project.typeOfBeneficiary }}Helped
{{goal.moneyUsed / goal.costPerUnit | number:0}} / {{goalsCount}} people


Dear Good Friend. I am Mrs Joy Williams from Solomon Islands. I am married to Mr. Lobi Williams who worked with our Embassy in Ivory Coast for nine years before he died in the year 2004. We were married for eleven years without a child. He died after a brief illness that lasted for only four days. Before his death we were both born again Christian. Since his death I decided not to remarry or get a child outside my matrimonial home which the Bible is against. When my late husband was alive he deposited the sum of $8.5 Million with a Bank in Cote D lvoire. Presently this money is still in the custody of the Bank in Cote D lvoire.Recently, my Doctor told me that I would not last for the next Eight months due to cancer problem. Having known my condition I decided to donate this fund to a church,organization or good person that will utilize this money the way I am going to instruct herein.I want a church,organization or good person that will use this fund for orphanages, widows and other peoples that needs help and also propagating the word of God and to endeavor that the house of God is maintained. The Bible made us to understand that"Blessed is the hand that giveth".l took this decision because I don't have any child that will inherit this money and my husband elatives are not Christians not even good at all because they are the one that responsible for the death of my husband in other to have all my late husband prperties and I don't want my husband's efforts to be used by those that conspired for his death. This is why I am taking this decision, I am not afraid of death hence I know where I am going. I know that I am going to be in the bosom of the Lord.Exodus 14 VS 14 says that "the lord will fight my case and I shall hold my peace". I don't need any telephone communication in this regard because of my health hence the presence of my husband's relatives around me always. I don't want them to know about this development and l know that With God all things are possible. As soon as I receive your reply I shall give you the contact of the Bank in Cote d' lvoire. I will also issue a letter of authorization to the bank that will prove you the present beneficiary of this money. I also want you, church or the organization to always pray for me because the lord is my only shephard. My happiness is that I lived a life of a worthy Christian. Whoever that Wants to serve the Lord must serve him in spirit and Truth. Please always be prayerful all through your life. Contact me on the this email address and any delay in your reply will give me room in sourcing another good person, church,organization for this same purpose. Please assure me that you will act accordingly as I Stated herein. Hoping to receive your response immedaitely. Thanks and Remain blessed in the Lord. l remain yours sister in Christ. Mrs. Joy Williams.


index/main
create-tasks
createTask
findWork1
findWork2
findWork3
Profile
Exeecutor
Executors
my-orders
cabinet.html


|
rigid2d
|
A 2-Dimensional Vector. More...
#include <rigid2d.hpp>
Public Member Functions | |
| Vector2D (double vec_x, double vec_y) | |
| set elements of vector More... | |
| Vector2D & | operator*= (double scalar) |
| multiplication of vector1=vector1*double More... | |
| Vector2D & | operator+= (const Vector2D &vec) |
| add of vector1=vector1+vector2 More... | |
| Vector2D & | operator-= (const Vector2D &vec) |
| subtrack of vector1=vector1-vector2 More... | |
| double | magnitude () |
| compute the magnitude of a Vector2D More... | |
| double | angle () |
| get the angle of a Vector2D More... | |
Public Attributes | |
| double | x = 0.0 |
| double | y = 0.0 |
A 2-Dimensional Vector.
static_assertions test compile time assumptions. You should write at least one more test for each function You should also purposely (and temporarily) make one of these tests fail just to see what happens
|
inline |
set elements of vector
| vec_x | - x component |
| vec_y | - y component |
| double rigid2d::Vector2D::angle | ( | ) |
get the angle of a Vector2D
| double rigid2d::Vector2D::magnitude | ( | ) |
compute the magnitude of a Vector2D
|
inline |
multiplication of vector1=vector1*double
| scalar | double number to multiply the vector |
add of vector1=vector1+vector2
| vec | vector2D to add |
subtrack of vector1=vector1-vector2
| vec | vector2D |
| double rigid2d::Vector2D::x = 0.0 |
x axis position.
| double rigid2d::Vector2D::y = 0.0 |
y axis position.


2016
Industrial Visit to Indian Institute of Geomagnetisim, Panvel.
Students visited Indian Institute of Geomagnetisim (IIG) and were given two technical talk on "Geodesy and GPS" and "Data collection and analysis done at IIG". The students were made to visit three labs Geodesy, Environment studies and Instrumentation Lab respectively where the students were shown the different instruments used for data analysis.
Workshop on "FUN WITH FM"
The objective of the workshop was to develop a FM Transmitter using simple components such as transistors and LC circuit. The session started off with explaining the basics of modulation, its types, why FM is used, basics of LC circuit. After theory session, students mounted the circuit on breadboard and after testing and debugging, the LC circuit was tuned to a particular FM channel, where the participants were able to listen to music or audio files played from their cell phone.
Workshop on "Arduino"
The objective of the workshop is to make students learn a new open-source project that can create microcontroller based kits for building digital devices and interactive objects that can sense and control physical devices. The session started off with the explanation of basic comparison of Microprocessor and Microconrtroller. Concepts of ADC, Sampling, Quantization, PWM and Board specifications where explained. In the practical session, LED Blinking, PWM, Interfacing of IR Sensor, Ultrasonic Sensor, Relay and Bluetooth Sensor with coding was covered.
Workshop and Competition on "Line Follower"
Day 1: The objective of the workshop is to make students learn how to use a new open-source project for creating a Arduino based Line Follower Robot. The session started off with the explanation of basics of components and its various interconnections. After the theory, the participants assembled the bot. Once the bot was ready, coding was explained in detail. After coding participants tried to move their bot on the track. After several trials of testing and debugging, the bot made by the participants was ready for the competition.
Day 2: The competition was held where the main criteria for all rounds was TIME. All 14 groups tried running their bot in Round 1. The groups taking lesser time and lesser no of trials were qualified for the next round. For round 2, only 3 groups got qualified. From those 3 groups, the winners were selected.
Workshop on "Python"
The objective of the workshop is to make students learn Python which is a widely used high level programming language. The advantage of learning python over other high level languages are its syntax allows programmers to express concepts in fewer lines of codes than possible in languages such as C++ and Java.The session started off with basics of different types of languages, history of python language, advantages of python and later on coding aspects of python was explained.
Workshop on "Raspberry Pi: Basics, GPIO Interfacing and IOT"
The objective of the workshop are to learn the basics of Python programming, to Program the GPIO pins of R-Pi for device status & control, to perform various Digital & Analog controls via R-Pi and to use the R-Pi on the internet as a web server. The outcome of the workshop was after successful completion of the workshop, the participants were versed in running Raspberry Pi using the Python language and use it for various applications such as device control/device status & using the R-Pifor Data logging & recording using Internet of Things.


Authenticating...
SOLO
TERRAFORMING
MARS
MODE
TF ALL
63 TR
MAPS
THARSIS
HELLAS
ELYSIUM
EXPANSIONS
CORPORATION
choose corporation
APHRODITE
ARCADIAN COMMUNITIES
ARIDOR
ARKLIGHT
ASTRODRILL
CELESTIC
CHEUNG SHING MARS
CREDICOR
ECOLINE
FACTORUM
HELION
INTERPLAN. CINEMATICS
INVENTRIX
LAKEFRONT RESORTS
MANUTECH
MINING GUILD
MONS INSURANCE
MORNING STAR
PHARMACY UNION
PHILARES
PHOBOLOG
POINT LUNA
POLYPHEMOS
POSEIDON
PRISTAR
RECYCLON
ROBINSON INDUSTRIES
SATURN SYSTEMS
SEPTEM TRIBUS
SPLICE
STORMCRAFT
TERACTOR
TERRALABS
THARSIS REPUBLIC
THORGATE
U.N.M.I.
UTOPIA
VALLEY TRUST
VIRON
VITOR
---
BEGINNER
KUIPER BELT COOP.
RESULT
✗
FAILED
1 STEP
2 STEPS
3 STEPS
4 STEPS
5 STEPS
6 STEPS
7 STEPS
8 STEPS
9 STEPS
✓
SUBMIT
DELETE YOUR LAST SUBMIT
LOAD
SCORES DISTRIBUTION
00000
FILTERS
THARSIS
HELLAS
ELYSIUM
SELECT CORPORATION
APHRODITE
ARCADIAN COMMUNITIES
ARIDOR
ARKLIGHT
ASTRODRILL
CELESTIC
CHEUNG SHING MARS
CREDICOR
ECOLINE
FACTORUM
HELION
INTERPLAN. CINEMATICS
INVENTRIX
LAKEFRONT RESORTS
MANUTECH
MINING GUILD
MONS INSURANCE
MORNING STAR
PHARMACY UNION
PHILARES
PHOBOLOG
POINT LUNA
POLYPHEMOS
POSEIDON
PRISTAR
RECYCLON
ROBINSON INDUSTRIES
SATURN SYSTEMS
SEPTEM TRIBUS
SPLICE
STORMCRAFT
TERACTOR
TERRALABS
THARSIS REPUBLIC
THORGATE
U.N.M.I.
UTOPIA
VALLEY TRUST
VIRON
VITOR
---
BEGINNER
KUIPER BELT COOP.
SELECT CORPORATION
APHRODITE
ARCADIAN COMMUNITIES
ARIDOR
ARKLIGHT
ASTRODRILL
CELESTIC
CHEUNG SHING MARS
CREDICOR
ECOLINE
FACTORUM
HELION
INTERPLAN. CINEMATICS
INVENTRIX
LAKEFRONT RESORTS
MANUTECH
MINING GUILD
MONS INSURANCE
MORNING STAR
PHARMACY UNION
PHILARES
PHOBOLOG
POINT LUNA
POLYPHEMOS
POSEIDON
PRISTAR
RECYCLON
ROBINSON INDUSTRIES
SATURN SYSTEMS
SEPTEM TRIBUS
SPLICE
STORMCRAFT
TERACTOR
TERRALABS
THARSIS REPUBLIC
THORGATE
U.N.M.I.
UTOPIA
VALLEY TRUST
VIRON
VITOR
---
BEGINNER
KUIPER BELT COOP.
MY STATS
APPLY SELECTED FILTERS
HISTORY
LOAD
CORPORATION
SCORE
WINS%
GAMES
BEGINNER
CREDICOR
ECOLINE
HELION
MINING GUILD
INTERPLAN. CINEMATICS
INVENTRIX
PHOBOLOG
THARSIS REPUBLIC
THORGATE
U.N.M.I.
TERACTOR
SATURN SYSTEMS
APHRODITE
CELESTIC
MANUTECH
MORNING STAR INC.
VIRON
CHEUNG SHING MARS
POINT LUNA
ROBINSON INDUSTRIES
VALLEY TRUST
VITOR
ARIDOR
ARKLIGHT
POLYPHEMOS
POSEIDON
STORMCRAFT
LAKEFRONT RESORTS
PRISTAR
SEPTEM TRIBUS
TERRALABS
UTOPIA
ARCADIAN COMMUNITIES
FACTORUM
MONS INSURANCE
PHILARES
RECYCLON
SPLICE
ASTRODRILL
PHARMACY UNION
KUIPER BELT COOP.


Automation Engineer
March 2018- Nov 2019
Skilled in automation development using Robot Framework to automate the QA process.
An action-oriented, motivated learner with an industrial experience of 2+ years, seeking an opportunity in software development.
Believes in aligning self-development with the development of the organisation.
March 2018- Nov 2019
Skilled in automation development using Robot Framework to automate the QA process.
July 2017- Feb 2018
Experienced in product installation, deployment & maintenance of web-based Core-Banking platforms.
Feb 2017- July 2017
Possess insightful knowledge of different modules of Banking System and Financial Services.
Sep 2020 - Present
Mar 2020 - July 2020
August 2012 - July 2016
Sep 2015 - Nov 2020
Active Member Of Sankalp India Foundation- Organised multiple blood donation camps and was also a frequent blood donor.
Joint Secretary of Digital & Fine Arts Club- Lead the Digital & Fine Arts club at college with setting up vision and goals. Organized multiple public events during my term.
Projects


2016 monthly gross income for top films released in 2016
Roadside Attractions had a busy 2016 with a constant flow of popular movies.
One interetsing trend is that buzz surrounding "Manchester by the Sea" tailed off during the summer but perked up again when award season
buzz put it back on viewers radars.
Highest Grossing Month for the Studio: September, $20.0 Million
Lowest Grossing Month for the Studio: August, $19.8 Million
Average Grossing Month for the Studio: $19.9 Million
Highest Grossing Individual Film: Manchester-by-the Sea, $ 29.0 Million
Average Gross For Film: $ 0.7 Million