library(sgml)
, a foreign library for SWI-Prolog to parse
SGML and XML documents, returning information on both the document and
the document's DTD. The parser is designed to be small, fast and
flexible.
Markup languages have recently regained popularity for two reasons. One is document exchange, which is largely based on HTML, an instance of SGML, and the other is for data exchange between programs, which is often based on XML, which can be considered a simplified and rationalised version of SGML.
James Clark's SP parser is a flexible SGML and XML parser. Unfortunately it has some drawbacks. It is very big, not very fast, cannot work under event-driven input and is generally hard to program beyond the scope of the well designed generic interface. The generic interface however does not provide access to the DTD, does not allow for flexible handling of input or parsing the DTD independently of a document instance.
The parser described in this document is small (less than 100 kBytes executable on a Pentium), fast (between 2 and 5 times faster than SP), provides access to the DTD, and provides flexible input handling.
The document output is equal to the output produced by xml2pl, an SP interface to SWI-Prolog written by Anjo Anjewierden.
This package allows you to parse SGML, XML and HTML data into a
Prolog data structure. The high-level interface defined in library(sgml)
provides access at the file-level, while the low-level interface defined
in the foreign module works with Prolog streams. Please use the source
of sgml.pl
as a starting point for dealing with data from
other sources than files, such as SWI-Prolog resources, network-sockets,
character strings, etc. The first example below loads an HTML
file.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">   <title>Demo</title>
This is a demo</title> Paragraphs in HTML need not be closed. This is called `omitted-tag' handling.
?- load_html('test.html', Term, []), pretty_print(Term). [ element(html, [], [ element(head, [], [ element(title, [], [ 'Demo' ]) ]), element(body, [], [ '\n', element(h1, [ align = center ], [ 'This is a demo' ]), '\n\n', element(p, [], [ 'Paragraphs in HTML need not be closed.\n' ]), element(p, [], [ 'This is called `omitted-tag\' handling.' ]) ]) ]) ].
The document is represented as a list, each element being an atom to
represent CDATA
or a term element(Name, Attributes,
Content)
. Entities (e.g. <
) are expanded and
included in the atom representing the element content or attribute
value.1Up to SWI-Prolog 5.4.x,
Prolog could not represent wide characters and entities that
did not fit in the Prolog characters set were emitted as a term number(+Code)
.
With the introduction of wide characters in the 5.5 branch this is no
longer needed.
These predicates are for basic use of the library, converting entire and self-contained files in SGML, HTML, or XML into a structured term. They are based on load_structure/3.
dialect(sgml)
dialect(xml)
dialect(HTMLDialect)
,
where HTMLDialect is html4
or html5
(default), depending on the Prolog flag html_dialect
. Both
imply the option shorttag(false)
. The option dtd(DTD)
is passed, where DTD is the HTML DTD as obtained using dtd(html,
DTD)
. See dtd/2.
SGML or XML files are loaded through the common predicate load_structure/3. This is a predicate with many options. For simplicity a number of commonly used shorthands are provided: load_sgml_file/2, load_xml_file/2, and load_html_file/2.
stream(StreamHandle)
or a file-name. Options is
a list of options controlling the conversion process.
A proper XML document contains only a single toplevel element whose name matches the document type. Nevertheless, a list is returned for consistency with the representation of element content. The ListOfContent consists of the following types:
CDATA
. Note this is possible in
SWI-Prolog, as there is no length-limit on atoms and atom garbage
collection is provided.ListOfAttributes is a list of Name=Value
pairs for attributes. Attributes of type CDATA
are returned
literal. Multi-valued attributes (NAMES
, etc.) are
returned as a list of atoms. Handling attributes of the types NUMBER
and NUMBERS
depends on the setting of the number(+NumberMode)
attribute through
set_sgml_parser/2
or load_structure/3.
By default they are returned as atoms, but automatic conversion to
Prolog integers is supported. ListOfContent defines the
content for the element.
SDATA
is
encountered, this term is returned holding the data in Text.NDATA
is
encountered, this term is returned holding the data in Text.
<?...?>
), Text
holds the text of the processing instruction. Please note that the
<?xml ...?>
instruction is handled internally.
The Options list controls the conversion process. Currently defined options are below. Other options are passed to sgml_parse/2.
<!DOCTYPE ...>
declaration is ignored and the document is parsed and validated against
the provided DTD. If provided as a variable, the created DTD is
returned. See section 3.5.sgml
(default),
html4
, html5
, html
(same as html4
,
xhtml
, xhtml5
, xml
and xmlns
.
See the option dialect
of set_sgml_parser/2
for details./
is accepted with warning as part of an
unquoted attribute-value, though />
still closes the
element-tag in XML mode. It may be set to false for parsing HTML
documents to allow for unquoted URLs containing /
.xml:space
. See
section 3.2.NUMBER
and NUMBERS
are handled. If token
(default) they are passed as an atom.
If
integer
the parser attempts to convert the value to an
integer. If successful, the attribute is passed as a Prolog integer.
Otherwise it is still passed as an atom. Note that SGML defines a
numeric attribute to be a sequence of digits. The -
sign is not allowed and
1
is different from 01
. For this reason the
default is to handle numeric attributes as tokens. If conversion to
integer is enabled, negative values are silently accepted.true
for XML and false
for SGML and HTML dialects.false
. Setting this option sets the
case_sensitive_attributes
to the same value. This option
was added to support HTML quasi quotations and most likely has little
value in other contexts.false
.false
, only the attributes occurring in the
source are emitted.CDATA
entities can be specified with this construct.
Multiple entity options are allowed.max_memory(0)
(the default) means no resource limit will be enforced.atom
(default), and string
. The choice is not
obvious.  They are quicker to create and avoid
memory fragmentation. But, multiple copies of the same string are stored
multiple times, while the text is shared if atoms are used. Strings are
also useful for security sensitive information as they are invisible to
other threads and cannot be enumerated using, e.g., current_atom/1.
Finally, using strings allows for resource usage limits using the global
stack limit (see set_prolog_stack/2).atom
(default), and string
. See above for the
advantages and disadvantages of using strings.true
, xmlns namespaces with prefixes are returned as
ns(Prefix, URI)
terms. If false
(default), the
prefix is ignored and the xmlns namespace is returned as just the URI.
SGML2PL has four modes for handling white-space. The initial mode can
be switched using the space(SpaceMode)
option to
load_structure/3
and set_sgml_parser/2.
In XML mode, the mode is further controlled by the xml:space
attribute, which may be specified both in the DTD and in the document.
The defined modes are:
sgml
space-mode, all consequtive white-space
is reduced to a single space-character. This mode canonicalises all
white space.default
, all leading and trailing
white-space is removed from CDATA
objects. If, as a result,
the CDATA
becomes empty, nothing is passed to the
application. This mode is especially handy for processing
`data-oriented' documents, such as RDF. It is not suitable for normal
text documents. Consider the HTML fragment below. When processed in this
mode, the spaces between the three modified words are lost. This mode is
not part of any standard; XML 1.0 allows only default
and preserve
.
Consider adjacent bold
and
 <it>italic</it> words.
The parser can operate in two modes: sgml
mode and xml
mode, as defined by the dialect(Dialect)
option. Regardless
of this option, if the first line of the document reads as below, the
parser is switched automatically into XML mode.
<?xml ... ?>
Currently switching to XML mode implies:
<element [attribute...] />
is
recognised as an empty element.
lt
(<
), gt
(>
), amp
(&
), apos
('
) and quot
("
).
ELEMENT
, etc.).
_
) and colon (:
) are
allowed in names.
preserve
. In addition to setting
white-space handling at the toplevel the XML reserved attribute
xml:space
is honoured. It may appear both in the document
and the DTD. The remove
extension is honoured as
xml:space
value. For example, the DTD statement below
ensures that the pre
element preserves space, regardless of
the default processing mode.
<!ATTLIST pre xml:space nmtoken #fixed preserve>
Using the dialect xmlns
, the parser will
interpret XML namespaces. In this case, the names of elements are
returned as a term of the format
URL:
LocalName
If an identifier has no namespace and there is no default namespace it is returned as a simple atom. If an identifier has a namespace but this namespace is undeclared, the namespace name rather than the related URL is returned.
Attributes declaring namespaces (xmlns:<ns>=<url>
)
are reported as if xmlns
were not a defined resource.
In many cases, getting attribute-names as url:name is not desirable. Such terms are hard to unify and sometimes multiple URLs may be mapped to the same identifier. This may happen due to poor version management, poor standardisation or because the the application doesn't care too much about versions. This package defines two call-backs that can be set using set_sgml_parser/2 to deal with this problem.
The call-back xmlns
is called as XML namespaces are
noticed. It can be used to extend a canonical mapping for later use by
the urlns
call-back. The following illustrates this
behaviour. Any namespace containing rdf-syntax
in its URL
or that is used as
rdf
namespace is canonicalised to rdf
. This
implies that any attribute and element name from the RDF namespace
appears as
rdf:\bnfmeta{name}
:- dynamic xmlns/3. on_xmlns(rdf, URL, _Parser) :- !, asserta(xmlns(URL, rdf, _)). on_xmlns(_, URL, _Parser) :- sub_atom(URL, _, _, _, 'rdf-syntax'), !, asserta(xmlns(URL, rdf, _)). load_rdf_xml(File, Term) :- load_structure(File, Term, [ dialect(xmlns), call(xmlns, on_xmlns), call(urlns, xmlns) ]).
The library provides iri_xml_namespace/3 to break down an IRI into its namespace and localname:
#
or /
. Note however that
this can produce unexpected results. E.g., in the example below, one
might expect the namespace to be http://example.com/images\#,
but an XML name cannot start with a digit.
?- iri_xml_namespace('http://example.com/images#12345', NS, L). NS = 'http://example.com/images#12345', L = ''.
As we see from the example above, the Localname can be the empty atom. Similarly, Namespace can be the empty atom if IRI is an XML name. Applications will often have to check for either or both these conditions. We decided against failing in these conditions because the application typically wants to know which of the two conditions (empty namespace or empty localname) holds. This predicate is often used for generating RDF/XML from an RDF graph.
The DTD (Document Type Definition) is a separate entity in sgml2pl, that can be created, freed, defined and inspected. Like the parser itself, it is filled by opening it as a Prolog output stream and sending data to it. This section summarises the predicates for handling the DTD.
dialect
option from open_dtd/3
and the encoding
option from open/4.
Notably the dialect
option must match the dialect used for
subsequent parsing using this DTD.sgml
. Using xml
or
xmlns
processes the DTD case-sensitive.
dtd
using
the call:
..., absolute_file_name(dtd(Type), [ extensions([dtd]), access(read) ], DtdFile), ...
Note that DTD objects may be modified while processing errornous
documents. For example, loading an SGML document starting with
<?xml ...?>
switches the DTD to XML mode and
encountering unknown elements adds these elements to the DTD object.
Re-using a DTD object to parse multiple documents should be restricted
to situations where the documents processed are known to be error-free.
The DTD html
is handled seperately. The Prolog flag
html_dialect
specifies the default html dialect, which is
either
html4
or html5
(default).3Note
that HTML5 has no DTD. The loaded DTD is an informal DTD that includes
most of the HTML5 extensions (http://www.cs.tut.fi/~jkorpela/html5-dtd.html).
In addition, the parser sets the dialect
flag of the DTD
object. This is used by the parser to accept HTML extensions.
Next, the corresponding DTD is loaded.
omit(OmitOpen, OmitClose)
, where both
arguments are booleans (true
or false
representing whether the open- or close-tag may be omitted. Content
is the content-model of the element represented as a Prolog term. This
term takes the following form:
cdata
, but entity-references are expanded.*
(SubModel)?
(SubModel)+
(SubModel),
(SubModel1, SubModel2)|
(SubModel1,
SubModel2)cdata
, entity
,
id
, idref
, name
, nmtoken
,
notation
, number
or nutoken
. For
DTD types that allow for a list, the notation list(Type)
is
used. Finally, the DTD construct (a|b|...)
is mapped to the
term
nameof(ListOfValues)
.
Default describes the sgml default. It is one required
,
current
, conref
or implied
. If a
real default is present, it is one of default(Value)
or fixed(Value)
.
NOTATION
declarations.system(+File)
and/or
public(+PublicId)
.
As this parser allows for processing partial documents and process the DTD separately, the DOCTYPE declaration plays a special role.
If a document has no DOCTYPE declaraction, the parser returns a list holding all elements and CDATA found. If the document has a DOCTYPE declaraction, the parser will open the element defined in the DOCTYPE as soon as the first real data is encountered.
Some documents have no DTD. One of the neat facilities of this
library is that it builds a DTD while parsing a document with an
implicit DTD. The resulting DTD contains all elements
encountered in the document. For each element the content model is a
disjunction of elements and possibly #PCDATA
that can be
repeated. Thus, if we found element y
and CDATA in element
x
, the model is:
<!ELEMENT x - - (y|#PCDATA)*>
Any encountered attribute is added to the attribute list with the
type
CDATA
and default #IMPLIED
.
The example below extracts the elements used in an unknown XML document.
elements_in_xml_document(File, Elements) :- load_structure(File, _, [ dialect(xml), dtd(DTD) ]), dtd_property(DTD, elements(Elements)), free_dtd(DTD).
dtd(DTD)
option.file(File)
option.
stream_property(Stream, position(Position))
.
sgml
, but implies shorttag(false)
and accepts XML empty element declarations (e.g.,

).html
, accept attributes named data-
without warning. This value initialises the charset to UTF-8.xml
. Dialect
xhtml5
accepts attributes named data-
without
warning.<?xml ...>
is encountered. See section
3.3 for details.qualify_attributes
option below.
xmlns
) mode. Default and standard
compliant is not to qualify such elements. If true
, such
attributes are qualified with the namespace of the element they appear
in. This option is for backward compatibility as this is the behaviour
of older versions. In addition, the namespace document suggests
unqualified attributes are often interpreted in the namespace of their
element.token
(default), attributes of type number are passed as
a Prolog atom. If integer
, such attributes are translated
into Prolog integers. If the conversion fails (e.g. due to overflow) a
warning is issued and the value is passed as an atom.encoding=
attribute in the header.
Explicit use of this option is only required to parse non-conforming
documents. Currently accepted values are iso-8859-1
and
utf-8
.<!DOCTYPE
declaration has been parsed, the default is the defined doctype. The
parser can be instructed to accept the first element encountered as the
toplevel using doctype(_)
. This feature is especially
useful when parsing part of a document (see the parse
option to
sgml_parse/2.
on_begin
, etc.
callbacks from sgml_parse/2.sgml
,
html
, html5
, xhtml
, xhtml5
, xml
or xmlns
).begin
or end
) is caused by
an element written down using the shorttag notation (<tag/value/>
.#pcdata
is part of
Elements. If no element is open, the doctype is
returned.
This option is intended to support syntax-sensitive editors. Such an editor should load the DTD, find an appropriate starting point and then feed all data between the starting point and the caret into the parser. Next it can use this option to determine the elements allowed at this point. Below is a code fragment illustrating this use given a parser with loaded DTD, an input stream and a start-location.
..., seek(In, Start, bof, _), set_sgml_parser(Parser, charpos(Start)), set_sgml_parser(Parser, doctype(_)), Len is Caret - Start, sgml_parse(Parser, [ source(In), content_length(Len), parse(input) % do not complete document ]), get_sgml_parser(Parser, allowed(Allowed)), ...
Input is a stream. A full description of the option-list is below.
source(Stream)
, this implies reading is stopped as soon as
the element is complete, and another call may be issued on the same
stream to read the next element.content
is like element
but assumes
the element has already been opened. It may be used in a call-back from
call(on_begin
, Pred)
to parse individual
elements after validating their headers.doctype
declaration.allowed(Elements)
option of get_sgml_parser/2.
It disables the parser's default to complete the parse-tree by closing
all open elements.
max_errors(-1)
makes the parser continue, no matter how many errors it encounters.
error(limit_exceeded(max_errors, Max), _)
informational
.
quiet
, the error is suppressed. Can be used
together with call(urlns, Closure)
to provide external
expansion of namespaces. See also section
3.3.1.Handler(+Tag, +Attributes, +Parser)
.
Handler(+Tag, +Parser)
.Handler(+CDATA, +Parser)
, where CDATA is an atom
representing the data.Handler(+Text, +Parser)
,
where
Text is the text of the processing instruction.<!...>
) has been read. The named
handler is called with two arguments: Handler(+Text,
+Parser)
, where Text is the text of the declaration
with comments removed.
This option is expecially useful for highlighting declarations and comments in editor support, where the location of the declaration is extracted using get_sgml_parser/2.
Handler(+Severity, +Message, +Parser)
,
where
Severity is one of warning
or error
and
Message is an atom representing the diagnostic message. The
location of the error can be determined using get_sgml_parser/2
If this option is present, errors and warnings are not reported using print_message/3
xmlns
mode, a new namespace declaraction
is pushed on the environment. The named handler is called with three
arguments: Handler(+NameSpace, +URL, +Parser)
.
See section 3.3.1 for details.xmlns
mode, this predicate can be used
to map a url into either a canonical URL for this namespace or another
internal identifier. See section 3.3.1
for details.
In some cases, part of a document needs to be parsed. One option is
to use load_structure/2
or one of its variations and extract the desired elements from the
returned structure. This is a clean solution, especially on small and
medium-sized documents. It however is unsuitable for parsing really big
documents. Such documents can only be handled with the call-back output
interface realised by the
call(Event, Action)
option of sgml_parse/2.
Event-driven processing is not very natural in Prolog.
The SGML2PL library allows for a mixed approach. Consider the case
where we want to process all descriptions from RDF elements in a
document. The code below calls process_rdf_description(Element)
on each element that is directly inside an RDF element.
:- dynamic in_rdf/0. load_rdf(File) :- retractall(in_rdf), open(File, read, In), new_sgml_parser(Parser, []), set_sgml_parser(Parser, file(File)), set_sgml_parser(Parser, dialect(xml)), sgml_parse(Parser, [ source(In), call(begin, on_begin), call(end, on_end) ]), close(In). on_end('RDF', _) :- retractall(in_rdf). on_begin('RDF', _, _) :- assert(in_rdf). on_begin(Tag, Attr, Parser) :- in_rdf, !, sgml_parse(Parser, [ document(Content), parse(content) ]), process_rdf_description(element(Tag, Attr, Content)).
The parser can deal with ISO Latin-1 and UTF-8 encoded files, doing
decoding based on the encoding argument provided to
set_sgml_parser/2
or, for XML, based on the encoding
attribute of the XML
header. The parser reads from SWI-Prolog streams, which also provide
encoding handling. Therefore, there are two modes for parsing. If the
SWI-Prolog stream has encoding octet
(which is the default
for binary streams), the decoder of the SGML parser will be used and
positions reported by the parser are octet offsets in the stream. In
other cases, the Prolog stream decoder is used and offsets are character
code counts.
The library xpath.pl
provides predicates to select nodes
from an XML DOM tree as produced by library(sgml)
based on
descriptions inspired by the XPath language.
The predicate xpath/3 selects a sub-structure of the DOM non-deterministically based on an XPath-like specification. Not all selectors of XPath are implemented, but the ability to mix xpath/3 calls with arbitrary Prolog code provides a powerful tool for extracting information from XML parse-trees.
[]
to select inside an
element. First we can construct paths using / and //:
//
Term/
TermThe Terms above are of type callable. The functor specifies
the element name. The element name '*' refers to any element. The name self
refers to the top-element itself and is often used for processing
matches of an earlier xpath/3 query.
A term NS:Term refers to an XML name in the namespace NS. Optional
arguments specify additional constraints and functions. The arguments
are processed from left to right. Defined conditional argument values
are:
last
last
- IntExprlast-1
is the element directly preceding the last one.
index(Integer)
.
last
index(last)
.
last
- IntExprindex(last-IntExpr)
.
Defined function argument values are:
self
content
text
normalize_space
text
, but uses normalize_space/2
to normalise white-space in the output
number
@
Attributelibrary(sgml)
.
number
, but subsequently transform the value into an
integer using the round/1 function.
number
, but subsequently transform the value into a
float using the float/1 function.
In addition, the argument-list can be conditions:
content = content
defines
that the content of the element is the atom content
. The
functions lower_case
and upper_case
can be
applied to Right (see example below).
contains(Haystack, Needle)
h3
element
inside a div
element, where the div
element
itself contains an h2
child with a strong
child.
//div(h2/strong)/h3
This is equivalent to the conjunction of XPath goals below.
..., xpath(DOM, //(div), Div), xpath(Div, h2/strong, _), xpath(Div, h3, Result)
Examples:
Match each table-row in DOM:
xpath(DOM, //tr, TR)
Match the last cell of each tablerow in DOM. This example illustrates that a result can be the input of subsequent xpath/3 queries. Using multiple queries on the intermediate TR term guarantee that all results come from the same table-row:
xpath(DOM, //tr, TR), xpath(TR, /td(last), TD)
Match each href
attribute in an
element
xpath(DOM, //a(@href), HREF)
Suppose we have a table containing rows where each first column is the name of a product with a link to details and the second is the price (a number). The following predicate matches the name, URL and price:
product(DOM, Name, URL, Price) :- xpath(DOM, //tr, TR), xpath(TR, td(1), C1), xpath(C1, /self(normalize_space), Name), xpath(C1, a(@href), URL), xpath(TR, td(2, number), Price).
Suppose we want to select books with genre="thriller" from a tree
containing elements <book genre=...>
thriller(DOM, Book) :- xpath(DOM, //book(@genre=thiller), Book).
Match the elements

and

:
//table(@align(lower) = center)
Get the width
and height
of a div
element as a number, and the div
node itself:
xpath(DOM, //div(@width(number)=W, @height(number)=H), Div)
Note that div
is an infix operator, so parentheses must
be used in cases like the following:
xpath(DOM, //(div), Div)
In some cases applications wish to process small portions of large SGML, XML or RDF files. For example, the OpenDirectory project by Netscape has produced a 90MB RDF file representing the main index. The parser described here can process this document as a unit, but loading takes 85 seconds on a Pentium-II 450 and the resulting term requires about 70MB global stack. One option is to process the entire document and output it as a Prolog fact-base of RDF triplets, but in many cases this is undesirable. Another example is a large SGML file containing online documentation. The application normally wishes to provide only small portions at a time to the user. Loading the entire document into memory is then undesirable.
Using the parse(element)
option, we open a file, seek
(using seek/4)
to the position of the element and read the desired element.
The index can be built using the call-back interface of
sgml_parse/2.
For example, the following code makes an index of the structure.rdf
file of the OpenDirectory project:
:- dynamic location/3. % Id, File, Offset rdf_index(File) :- retractall(location(_,_)), open(File, read, In, [type(binary)]), new_sgml_parser(Parser, []), set_sgml_parser(Parser, file(File)), set_sgml_parser(Parser, dialect(xml)), sgml_parse(Parser, [ source(In), call(begin, index_on_begin) ]), close(In). index_on_begin(_Element, Attributes, Parser) :- memberchk('r:id'=Id, Attributes), get_sgml_parser(Parser, charpos(Offset)), get_sgml_parser(Parser, file(File)), assert(location(Id, File, Offset)).
The following code extracts the RDF element with required id:
rdf_element(Id, Term) :- location(Id, File, Offset), load_structure(File, Term, [ dialect(xml), offset(Offset), parse(element) ]).
While processing an SGML document the document may refer to external
data. This occurs in three places: external parameter entities, normal
external entities and the DOCTYPE
declaration. The current
version of this tool deals rather primitively with external data.
External entities can only be loaded from a file and the mapping between
the entity names and the file is done using a catalog file in a
format compatible with that used by James Clark's SP Parser, based on
the SGML Open (now OASIS) specification.
Catalog files can be specified using two primitives: the predicate
sgml_register_catalog_file/2
or the environment variable
SGML_CATALOG_FILES
(compatible with the SP package).
start
or end
and defines whether the
catalog is considered first or last. This predicate has no effect if File
is already part of the catalog.
If no files are registered using this predicate, the first query on
the catalog examines SGML_CATALOG_FILES
and fills the
catalog with all files in this path.
Two types of lines are used by this package.
DOCTYPE
doctype file
PUBLIC
"
Id"
file
The specified file path is taken relative to the location
of the catolog file. For the DOCTYPE
declaraction, library(sgml)
first makes an attempt to resolve the SYSTEM
or PUBLIC
identifier. If this fails it tries to resolve the doctype
using the provided catalog files.
Strictly speaking, library(sgml)
breaks the rules for
XML, where system identifiers must be Universal Resource Indicators, not
local file names. Simple uses of relative URIs will work correctly under
UNIX and Windows.
In the future we will design a call-back mechanism for locating and processing external entities, so Prolog-based file-location and Prolog resources can be used to store external entities.
PWP is an approach to server-side scripting using Prolog which is based on a simple key principle:
Especially when generating XML rather than HTML, this is such an obvious thing to do. We have many kinds of XML checking tools.
Having decided that the input should be well formed, that means NO NEW SYNTAX
None of the weird and horrible <% ... %> or whatever not-quite-XML stuff you see in other template systems, making checking so very hard (and therefore, making errors so distressingly common).
That in turns means that PWP "markup" must be based on special elements or special attributes. The fact that an XML parser must allow undeclared attributes on any element even when validating, but must not allow undeclared elements, suggests doing this through attributes. In particular, one should be able to take an existing DTD, such as an XHTML DTD, and just use that without modification. So the design reduces to
This description uses the following name space:
xmlns:pwp='http://www.cs.otago.ac.nz/staffpriv/ok/pwp.pl'
The attributes are
|
xml
|
'one non-alphanumeric character'
Here's what they mean. Each element is expanded in the context of a set of variable bindings. After expansion, if the tag is not mapped to '-', all attributes in the pwp: namespace are removed and the children elements are recursively expanded.
|
xml |
text-file |
xml-file |
pwp-file
Term is a Prolog term; variables in Term are bound by the context. An empty Term is regarded as a missing value for this attribute. The Prolog variable CONTEXT refers to the entire context, a list of Name = Value, where Name is a Prolog atom holding the name of the context variable and Value is an arbitrary Prolog term.
write(Datum)
writeq(Datum)
write_canonical(Datum)
print(Datum)
print(Datum)
format(Format)
format(Format, Arguments)
The value of Term must be an XML term as defined in the SGML2PL documentation or a list of such terms. A single term is taken as if it had been [Term]. The resulting list of terms replaces the children of the current element and will not be further processed.
The value of Term is used to define a sequence of characters. That sequence of characters is used as a file name. The file is read as a sequence of characters, and that sequence used as character data.
The value of Term is used to define a sequence of characters. That sequence of characters is used as a file name. The file is loaded as XML, and the sequence of XML items thus obtained used. This means that PWP provides XML inclusion without depending on the parser to support XInclude.
Like xml-file, but PWP attributes are evaluated and processed. The current context variables are passed to the PWP processor.
The default value for pwp:how is text.
If pwp:tag is missing or the value is empty, the current element appears in the output (after further processing) with its present tag. If pwp:tag is a QName, the current element appears (...) with that as its tag. That option is most useful in DTDs, where an "authoring" DTD may use one tag and have it automatically mapped to another tag in the output, e.g., <item> ->
. Finally, if pwp:tag is '-', the children of the current element (either the result of pwp:use or the transformed original children, whichever applies) appear in the output but there is no element around them. A missing or empty pwp:ask is just like pwp:ask = 'true'.
|
'one non-alphanumeric character'.
Attributes in the pwp namespace are not affected by this attribute. Such attributes are always stripped out and never substituted into. If pwp:att is missing or empty, attributes of the current element are copied over to the output unchanged. If pwp:att = 'c' for some non-alphanumeric character c, each attribute is examined for occurrences of c(...)c and c[...]c which are as short as possible. There is no one character which could be used every time, so you have to explicitly choose a substitution marker which is safe for the data you do not want to be altered. None of the pwp attributes are inherited, least of all this one. Text outside c(...)c groups is copied unchanged; text inside a c(...)c group is parsed as a Prolog term and treated as if by pwp:how = text. Text inside a c[...]c group is evaluated (in the current context), and if it fails, the entire attribute will be removed from the element.
Examples:
  <title pwp:use="Greeting"/>

where msg.pl
contains
msg('Hello, World!').
This example illustrates an important point. Prolog Well-Formed Pages provide NO way to physically incorporate Prolog clauses into a page template. Prolog clauses must be put in separate files which can be checked by a Prolog syntax checker, compiler, cross-referencer, &c WITHOUT the Prolog tool in question needing to know anything whatsoever about PWP. You load the files using pwp:ask on the root element.
 <title>Example 2</title>

The answer is .

staff.pl
defining
staff(NickName, FullName, Office, Phone, E_Mail_Address)
.
status(NickName, full_time | part_time)
. We want to make a
phone list of full time staff.
  <title>Phone list for Full-Time staff.</title>
Phone list for Full-Time staff.

Name	Phone

  <title>Phone list for Full-Time staff.</title>
Phone list for Full-Time staff.

Name	Address

 <title>$SHELL</title>
The default shell is .

There is no default shell.

There is one other criterion for a good server-side template language:
It should be possible to compile templates so as to eliminate most if not all interpretation overhead.
This particular notation satisfies that criterion with the limitation that the conversion of a term to character data requires run-time traversal of terms (because the terms are not known until run time).
The library library(sgml_write)
provides the inverse of
the parser, converting the parser's output back into a file. This
process is fairly simple for XML, but due to the power of the SGML DTD
it is much harder to achieve a reasonable generic result for SGML.
These predicates can write the output in two encoding schemas depending on the encoding of the Stream. In UTF-8 mode, all characters are encoded using UTF-8 sequences. In ISO Latin-1 mode, characters outside the ISO Latin-1 range are represented using a named character entity if provided by the DTD or a numeric character entity.
false
, the XML header is suppressed.
Useful for embedding in other XML streams.
false
,
no layout characters are added. As this mode does not need to analyse
the document it is faster and guarantees correct output when read back.
Unfortunately the output is hardly human readable and causes problems
with many editors.
header
and
ident
is added to use xml_write/3
to generate XML that is embedded in a larger XML document.
<foo/>
(default,
net(true)
) or <foo></foo>
(net(false)
).
For SGML, this applies to empty elements, so you get <foo>
(if foo is declared to be EMPTY
in the DTD),
<foo></foo>
(default, net(false)
)
or
<foo//
(net(true)
). In SGML code, short
character content not containing /
can be
emitted as xxx
(default, net(false)
or <b/xxx/
(net(true)
)
DOCTYPE
header and the content of the
document as represented by Term to Stream. The Options
are described with xml_write/3.In most cases, the preferred way to create an XML document is to
create a Prolog tree of element(Name, Attributes, Content)
terms and call xml_write/3
to write this to a stream. There are some exceptions where one might not
want to pay the price of the intermediate representation. For these
cases, this library contains building blocks for emitting markup data.
The quote funtions return a version of the input text into one that
contains entities for characters that need to be escaped. These are the
XML meta characters and the characters that cannot be expressed by the
document encoding. Therefore these predicates accept an encoding
argument. Accepted values are ascii
,
iso_latin_1
, utf8
and unicode
.
Versions with two arguments are provided for backward compatibility,
making the safe
ascii
encoding assumption.
<>&"
.4Older
versions also mapped '
to '
.
Characters that cannot represented in Encoding are mapped to
XML character entities.ascii
encoding.ascii
encoding.ascii
encoding.
The predicates in this section translate between values and their lexical forms for XML-Schema data types. They are implementated in C to achieve the best possible performance.
NaN
and INF
. If a Prolog float is converted into a string it
returns the XML canonical form. This form always has one digit before
the decimal dot, at least one digit after it and an exponential
component using the capital
E
. This predicate behaves as number_string/2
for integers.
Throws a syntax_error(xsd_number)
if String
is given and is not a well-formed XSD number.
| Prolog term | Type | XSD string |
| date(Y,M,D) | xsd:date | YYYY-MM-DD |
| date_time(Y,M,D,H,Mi,S) | xsd:dateTime | YYYY-MM-DDTHH-MM-SS |
| date_time(Y,M,D,H,Mi,S,0) | xsd:dateTime | YYYY-MM-DDTHH-MM-SSZ |
| date_time(Y,M,D,H,Mi,S,TZ) | xsd:dateTime | YYYY-MM-DDTHH-MM-SS[+-]HH:MM |
| time(H,M,S) | xsd:time | HH:MM:SS |
| year_month(Y,M) | xsd:gYearMonth | YYYY-MM |
| month_day(M,D) | xsd:gMonthDay | MM-DD |
| D | xsd:gDay | DD |
| M | xsd:gMonth | MM |
| Y | xsd:gYear | YYYY |
For the Prolog term all variables denote integers except for
S, which represents seconds as either an integer or float.
The
TZ argument is the offset from UTC in seconds. The
Type is written as xsd:name, but is in fact the
full URI of the XSD data type, e.g., http://www.w3.org/2001/XMLSchema#date
.
In the XSD string notation, the letters YMDHS denote digits. The
notation SS is either a two-digit integer or a decimal number with two
digits before the floating point, e.g. 05.3
to denote 5.3
seconds.
For most conversions, Type may be specified unbound and is
unified with the resulting type. For ambiguous conversions, Type
must be specified or an instantiation_error is raised. When converting
from Prolog to XSD serialization, D, M and Y are ambiguous. When
convertion from XSD serialization to Prolog, only DD and MM are
ambiguous. If
Type and String are both given and String
is a valid XSD date/time representation but not matching Type
a syntax error with the shape syntax_error(Type)
is raised.
If DateTime and Type are both given and DateTime
does not satisfy
Type a domain_error of the shape
domain_error(xsd_time(Type), DateTime)
is raised.
The domain of numerical values is verified and a corresponding
domain_error exception is raised if the domain is violated. There is no
test for the existence of a date and thus "2016-02-31"
,
although non-existing is accepted as valid.
C14n2 specifies a canonical XML document. This library writes such a document from an XML DOM as returned by the XML (or SGML) parser. The process takes two steps:
xmlns
and the option keep_prefix(true)
.
The current parser is rather limited. While it is able to deal with many serious documents, it omits several less-used features of SGML and XML. Known missing SGML features include
<!ATTLIST #NOTATION name attributes>
. Those data
attributes are provided when you declare an external CDATA, NDATA, or
SDATA entity.
XML does not include external CDATA, NDATA, or SDATA entities, nor any of the other uses to which data attributes are put in SGML, so it doesn't include data attributes for notations either.
Sgml2pl does not support this feature and is unlikely to; you should be aware that SGML documents using this feature cannot be converted faithfully to XML.
<tag/content/
is a valid abbreviation for
<tag>content</tag>
, which can also be written
as
<tag>content</>
. Empty start tags (<>
),
unclosed start tags (<a<b</verb>
) and unclosed
end tags (<verb></a<b
) are not supported.
In XML mode the parser recognises SGML constructs that are not allowed in XML. Also various extensions of XML over SGML are not yet realised. In particular, XInclude is not implemented because the designers of XInclude can't make up their minds whether to base it on elements or attributes yet, let alone details.
The Prolog representation for parsed documents is based on the SWI-Prolog interface to SP by Anjo Anjewierden.
Richard O'Keefe has put a lot of effort testing and providing bug reports consisting of an illustrative example and explanation of the standard. He also made many suggestions for improving this document.


Sometimes you might just want to select one element out of many. Assigning a unique identifier to an element can help with this.
For instance, the element <a id="foo">
can be
selected with the selector #foo
. The #
at
the beginning is CSS selector parlance for “the element with the
following id”.
Note: You can tap the #
button below if you can’t find it
on your keyboard.
select me
but not me!


--- layout: archive title: Zulip Chat Archive permalink: /stream/113489-new-members/topic/.C2.AC.20(p.20.E<IP_ADDRESS>.C2.AC.20p).html ---
In TPIL, one of the exercises is to prove ¬ (p ↔ ¬ p) using constructive logic.
This spoiler thread contains the following:
1) Assurance that it can be done.
2) (some way below 1) : a hint.
3) (some way below 2) : a solution.
1) It can be done!
It's easy to do it classically, e.g.
variable (p : Prop) example : ¬ (p ↔ ¬ p) := begin -- use excluded middle cases (classical.em p), { simp [h]}, { simp [h]} end
But it can also be done constructively. In the next post below, there's a hint. Don't scroll down/unfold if you don't want to see it.

 Then people can't even accidentally scroll too far.
Can people see the edit history? that's one way to do spoiler tags
I was going to make the reserved slots huge
old skool usenet ;-)
White text on white back ground (revealed upon highlight)?
This is a better idea because I've just realised that zulip might condense the post.
How do I do white text in Zulip?
I don't think there are explicit spoiler tags or color formatting in zulip
plus, I'm looking at white text on a dark background right now. Don't trust colors
Oh -- I could the spoilers at the bottom of the message.
the reading experience of the edit history isn't great though
What is this edit history which people are talking about?
tap the word (EDITED) on any edited post
By way of a random aside, the same in Agda (the term was generated automatically by the automatic proof search).
The important first step is to note that if we want to produce a False
, we almost certainly got it by constructing two P
s and using the P -> (P -> False)
direction of the iff. There's ultimately no other way to produce a False
.
{-# OPTIONS --safe --warning=error --without-K #-} module Logic.RandomBits where record False : Set where record Iff (A : Set) (B : Set) : Set where field to : A → B from : B → A Not : (A : Set) → Set Not A = A → False thing : (P : Set) → Iff P (Not P) → False thing P record { to = to ; from = from } = to (from (λ z → to z z)) (from (λ z → to z z))
I'm trying to do the proof without tactics since I'm not familiar with tactics yet. Why doesn't something like this work?
example { p : Prop } : ¬(p ↔ ¬p) := assume h : (p ↔ ¬p), show false, from assume pp : p, (iff.mp h) pp pp pp
hi I'm a typechecker. assume pp : p, (iff.mp h) pp pp pp
has type p -> something
, which cannot be unified with false
(iff.mp h) pp pp
has type false
, which cannot be applied to pp
ah
you want (assume pp : p, (iff.mp h) pp pp) pp
See here for a post I wrote that shows how to construct a proof without tactics in a step by step fashion, just by fixing errors at underscores.
That is a great example of how to write a compact term mode proof of the question.
If you try the typechecker approach how come it stops printing out the context window when you do an assume hp : p. For me the goal window just goes blank.
example { p : Prop } : ¬(p ↔ ¬p) := assume hpp : _, show false, from (assume hp : p, _)
Because you have a type error there. You're trying to show false
, but (assume hp: p, _)
has the type p → something
.
This is why there is an error at the show
ahhh ok I took Kenny's post above that if you replaced that last assume line it'd just work, but wasn't getting it to actually work out
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


I'm a software engineer with a Bachelor's in Computer Science. In addition to game development, I have a passion for data science and networking. This site is meant to showcase the projects I'm currently working on, and serve as a digital archive of my works to date.
Projects
Gravity Gauntlet
Gravity Gauntlet is a 2D physics-based platformer where the objective is to explore a procedurally generated cave until you reach your goal, all while avoiding enemies that spawn throughout the cave. I've been working on this project for two years now, and I'm expecting to publish it on Android and iOS by September of 2019.
Timed Event Editor
Unity's built-in sequencing utility, Timeline, allows developers to assign certain events, such as particle systems, camera movements, and animations, to timestamps. However, Timeline doesn't allow developers to interact with generic events directly, meaning that you can't time function calls from custom scripts natively. To achieve this functionality, I began re-creating the Timeline from scratch to include custom events. I'm pleased with its feature set so far, but I still have far to go to get to the level of polish of Timeline.
Below is a song that I've sequenced with the Timed Event Editor.
Radar
Radar was a proof-of-concept build I made for a larger game that's in the beginning stages of development. I made Radar to showcase the game's central mechanic - that the player is blind to the world and has to navigate using radar.


I have done it
Image from Freepik
Sample text. Click to select the text box. Click again or double click to start editing the text.
created with


Some Fun Things About Me:
-
I am a Parrothead, or big Jimmy Buffett fan. I listen to Radio Margaritaville
almost every day and have been to three of Jimmy's concerts:
- Wrigley Field, Chicago, IL: July 15, 2017
- Target Field with The Eagles, Minneapolis, MN: June 30, 2018
- Alpine Valley, Elkhorn, WI: July 20, 2019
-
Some of my favorite Jimmy Buffett songs:
- Breathe In, Breathe Out, Move On
- The Captain and the Kid
- The Night I Painted the Sky
- When the Coast is Clear
-
I love rollercoasters. I have worked at some of them including Wild Thing at Valleyfair, in Minnesota,
and Primeval Whirl at Disney's Animal Kingdom in Florida. My favorite is Steel Vengeance at
Cedar Point in Ohio.
Wild Thing, Valleyfair, Shakopee, MN
Steel Vengeance, Cedar Point, Sandusky, OH
-
My family has a cabin on Lake Alexander in Cushing, MN. It has been my
favorite place to spend time this summer.


Manage Ticket Workflow
Manage Ticket Workflow
Workflow Configuration
Grid
Text
Advance
If you edit the action, please click 'Add', 'Change' or 'Delete' button.
If you edit the status, please click 'Edit status' button.
${template.workflow_config}
If you edit the action, please click 'Change' button.
How to set the workflow:
TracWorkflow
If you revert to the default workflow, please click the following button.


Each imaginary Aerocene journey is an "air signature" that we can use to advocate the independence from fossil fuels.
If you save your prediction, it will be added to our database of aerosolar signatures. By doing so, you consent to the publication of this data on the Aerocene website.
Your Name :
Comments:


Robert Majure's Azure-based Python learning and development (L&D) app.
Per NPR One's API terms and conditions, I do not display any content. I only retrieve station identification data for development purposes.
I access the Dark Sky API for weather, based on latitude and longitude, which are derived from the Azure Maps Service.
This is my sandbox Python page and is NOT production quality. I often change (and break) the app.
Code is open source and can be found at my Github repository.
| Search Parameter | Station Call Letters | Station Band | Station Frequency | Station City | Station State | Station Weather | Station Temp (Deg F) | NPR Station Tagline | Program Feed URL |
|---|---|---|---|---|---|---|---|---|---|
| {{ station.station_search_parameter }} | {{ station.station_call_letters }} | {{ station.station_band }} | {{ station.station_frequency }} | {{ station.station_city }} | {{ station.station_state }} | {{ station.station_weather_summary }} | {{ station.station_weather_temperature }} | {{ station.station_tagline }} | Link |


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is somewhat different from what we usually offer, so please
do send your feedback.
Help Support Daily Rotten
To this end, you may wish to visit the
Rotten Store. Thanks for helping to keep the lights on.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Pornopolis
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Shockumentary
Rate My Poo
Rate My Kitten
Rate My Bunny
Rate My Puppy
Rate My Finger
Penny Postcards
Leisure Town
Jerkcity
Phallic
Dr. Sputnik
Boners
Dead Pool
NNDB
Home
Make Dailyrotten your start page
|
|
|
December 12, 2004
Palestinian teen allegedly shot for laughs
Aljazeera | Submitted by: pilot70
"A group of Israeli soldiers serving in the Gaza Strip have reportedly admitted killing a 15-year-old Palestinian in Khan Yunus for sport. According to the Israeli newspaper Yediot Ahronoth, the incident took place in March when a group of newly graduated soldiers were on a hike near the town of Khan Yunus. According to the report, an undisclosed number of Givati brigade soldiers shot and killed Khalid Sulaiman Mahdi while he was working with his father on their farm... According to soldiers interviewed by Yediot Ahronoth, there were no operational purposes for the shooting and no justification, since the boy and his family posed no threat to the soldiers. An Israeli army spokesman said the army had investigated the incident, but admitted that no arrests were made."
|
|
Read article...
|
|
Divorced dad allegedly murders family, suicides
Tampa Bay Online | Submitted by: optional
"Robert O'Mara waited in the darkness outside his children's new home. Their mother, newly divorced from him, drove directly into his ambush. Patricia Parra-Perez got out of the driver's seat. He shot her in the head. Sean and Lauren ran for their lives. Sean, 12, made it to the front door before he was shot once and killed. Lauren, 13, raced down the block. Her father chased her. Three doors away, he caught her with a bullet. She died on a neighbor's doorstep. Then O'Mara shot and killed himself... Hillsborough County Sheriff's Office detectives are investigating why O'Mara, 38, came gunning for his family."
|
|
Read article...
|
|
Coworkers allegedly aware of alleged special ed torture
WKMG-TV 6 Orlando | Submitted by: GreeceMonkey
"Assistants at the Seminole County school where a woman is accused of torturing her special needs students say they were aware of the alleged abuse for years...  In one instance, Garrett is accused of rubbing her body against a child and saying 'cry for mama.' ... Garrett's classroom assistants said they were too frightened to speak out about the reported abuse and said they were aware of it for years."
|
|
Read article...
|
|
Cop allegedly molests girl, 11
Kentucky Post | Submitted by: Reid Fleming
"A just-hired Dayton, Ky., police officer who once was a Lincoln Heights, Ohio, police officer was arrested Thursday on a charge of sexually abusing an 11-year-old girl in January. Allen Peace, of Bellevue, pleaded not guilty to one count of first-degree sexual abuse in Campbell County district court in Newport Friday... Though Peace pleaded not guilty, [Detective Dave Fickenscher] said he confessed to investigators. 'We interviewed him and confronted him with the evidence in the case, and he confessed to it.'"
|
|
Read article...
|
|
Baby born faceless
First Coast News | Submitted by: 3 Legit 2 Quit
"Tammy hadn't seen her new baby yet, because she almost bled to death during delivery. Tammy would be okay, meanwhile, dad went to take pictures of his new daughter... Little Juliana is missing 30 - 40 percent of the bones in her face. 'She has no upper jaw, no cheek bones, no eye sockets, and she's missing the corner of her ear,' explains Tom. Her birth defect is called Treacher Collins Syndrome. Doctors say it's the worst case they've ever seen... Juliana has to eat through her stomach, and she has a trach to breathe. Already, less than two years into her life, she's had 14 surgeries. Doctors say she could need at least 30 more. Every time she goes to the hospital, doctors make a mold of her head, and then reconstruct her skull to figure out the next step."
|
|
Read article...
|
|
Santa allegedly beats geezer with lumber
WIS-TV 10 Columbia | Submitted by: Reid Fleming
"A man decked out as Santa Claus, complete with jolly red suit and gifts, stunned holiday shoppers. Police say he picked up a two-by-four and started pounding a nearby woman passing out religious fliers. Elkin Clarke, the man dressed as the Santa, says the woman was stealing from him, 'She was stealing my stuff. I asked 10 to 15 times not to touch my stuff.' ... Police say the woman attacked, Annie Ruth Nelson, 74, was knocked unconscious in the fight... The suspect accused her of stealing boxes of Hershey's chocolates from him, worth about $145."
|
|
Read article...
|
|
Man allegedly kills younger brother with hammer
Lawrence County Daily Record | Submitted by: Reid Fleming
"[Randy Miller, 27] is facing a murder charge in connection with the Nov. 29 death of his brother and next-door neighbor, 18-year-old Chad Miller... [Chad's] body was found in the home he shared with the boy's mother, Melanie Miller, about 10:30 p.m., EST, Nov. 29... [Randy] was also wanted as a suspect in the Nov. 28 break-in of Chad Miller's house. Some medication and about $300 in cash was stolen, and officers found a suicide note, allegedly written by Randy Miller at the crime scene... [prosecutor John Sievers] declined to speculate on a motive for the slaying, saying Chad Miller's death was a 'senseless thing' and was the 'culmination of a lot of things going on in Randy's life.'"
|
|
Read article...
|
|
Elephant sanctuary volunteers allegedly raped
Brisbane Courier-Mail | Submitted by: Reid Fleming
"An elephant sanctuary in Malaysia is under investigation following allegations that foreign women - including Canadians - were raped and sexually assaulted by park workers. An unspecified number of alleged victims filed complaints with their governments after returning from volunteer work at the sanctuary, the New Sunday Times newspaper reported, citing unidentified sources... a travel advisory on the Web site of Canada's Department of Foreign Affairs and International Trade noted that 'several Canadians have reported serious problems as a result of responding to offers to do volunteer work' at the Kuala Gandah sanctuary... the alleged victims claimed they could not fully remember the assaults because they might have been drugged, the newspaper said. The alleged victims have refused to return to Malaysia to help in the investigation, the report added, noting that the incidents were believed to have occurred 'over the past few years.'"
|
|
Read article...
|
|
Man charged with commercial hacking allegedly flees
Boston Globe | Submitted by: Reid Fleming
"Jay R. Echouafni allegedly hired five hackers last year to unleash a virtual attack against three business competitors, according to the federal indictment, which was handed up in August by a grand jury in Los Angeles. All told, the attacks caused more than $2 million in damages and temporarily disrupted websites for the Homeland Security Department and Amazon.com, the government alleges... Echouafni allegedly enlisted five people in Arizona, Louisiana, Ohio, and Great Britain to unleash the attacks. The cybermercenaries flooded the websites with data until they crashed... Echouafni is the first person charged with using the Internet to attack a business competitor."
|
|
Read article...
|
|
Marine loses finger to keep wedding ring, loses ring
San Bernardino County Sun | Submitted by: Dusik
"Marine Corps Lance Cpl. David Battle found himself in the hands of doctors one day last month after nearly losing his life in a horrific firefight in Fallujah, Iraq. And all he could think about was saving his wedding ring... At a field hospital, doctors were going to cut the ring from his finger to save as much of the digit as they could... Battle told them not to cut the ring but around it so it could be saved even if it meant losing his finger. And that's what the doctors did... But the ring is now gone. When Battle returned to the United States and opened his packages from the base camp hospital where his finger was amputated, the ring was missing. 'It must have gotten lost in the commotion,' he said."
|
|
Read article... and
This article...
|
|
|
|
|


Sign up Form
Create Account
or use your email for registration
Sign Up
Client
Vendor
or use your account
Forgot your password?
Sign In


Question List
Create New Question
Question ID
Body
Answer
Topic
Actions
Question ID
Question
Answer
Topic
Edit
Delete


--- layout: post status: publish published: true title: Windows 10 Build 9926 Sysprep Fails author: display_name: iguy login: iguy email<EMAIL_ADDRESS>url: '' author_login: iguy author_email<EMAIL_ADDRESS>wordpress_id: 737 wordpress_url: http://itsjustanotherlayer.com/?p=737 date: !binary |- MjAxNS0wMy0xNiAxNjo0NDozNSAtMDUwMA== date_gmt: !binary |- MjAxNS0wMy0xNiAyMTo0NDozNSAtMDUwMA== categories: - Server Virtualization tags: - private cloud - templates comments: [] ---
I've been working on getting Windows 10 available in our private cloud as blueprint and kept having the deploy fail when trying to sysprep it. When logging in directly to the system and running sysprep, we see this error.
When digging further we find in the C:\Windows\System32\Sysprep\Panther\setuperr.log this text.
SYSPRP Package Microsoft.Getstarted_<IP_ADDRESS>_x64_8wekyb3d8bbwe was installed for a user, but not provisioned
SYSPRP Failed to remove apps for the current user
Resolution
Two solutions I've found so far
get-appxpackage -name *packagename* | remove-appxpackage


| Supplier Code | Supplier | Date | # | Lines | Net Total | Vat Total | Gross Total | |
|---|---|---|---|---|---|---|---|---|
| ${[row[2].codiceprovenienza]} | ${[row[2].provenienza]} | ${format_date(row[4])} | ${row[5]} | ${todecimal(r)} |
| Cost Center | Account Num | Vat | Lines | Net Total | Vat Total | Gross Total | PL Net Total | Variance |
|---|---|---|---|---|---|---|---|---|
| ${[r]} | ${todecimal(r or 0)} | ${todecimal(r or 0)} | ||||||
| Cost Center | Vat | Lines | Net Total | Vat Total | Gross Total | PL Net Total | Variance | |
| ${[r]} | ${[r]} | ${todecimal(r or 0)} | ||||||
| Totals | ${[r]} | ${todecimal(r or 0)} |
| # Rec | Lines | Net Total | Vat Total | Gross Total | PL Net Total | Variance |
|---|---|---|---|---|---|---|
| ${r} | ${todecimal(r or 0)} |
| Rec Num | Sup Code | Desc | Unit Price | Vat Code | Qty | Net Total |
|---|---|---|---|---|---|---|
| ${row.rec_num} | ${row.b2b_code} | ${row.b2b_desc} | ${todecimal(row.b2b_unit_price)} | ${row.b2b_vat_code} | ${row.b2b_qty} | ${todecimal(row.b2b_net_total)} |
| Account Num | Sup. Code | Sup. Desc | Sup. Price | Orig Price | Diff | Qty | Net Total |
|---|---|---|---|---|---|---|---|
| ${[r]} |
|
| To Validate | The document should be checked (Cost Centers and Account codes) | |
|---|---|---|
| Validated | The document has been validated , next step is to book the b2b batch | |
| Closed | The document has been acquired |


I am pursuing Bachelor of Computer Science degree at the University at Buffalo.
I have several habits such as SkateBoard, video game, watch the video(including cat video =.=). Now,
coding become one of my habits(because you have to code a lot in CSE class)
I am getting used to it. This website is completely makeup from scrapes by myself. And I am gone to
make it better in the further. Right now, I am trying to make this website as the documents base or small
database about the things I learned or I was known.
You can click the Button on top ^(Documents)^ to see all the stuff I learned in the University at Buffalo.
And click on ^(Current Classes)^ to see all course I took.


---
layout: archive
title: Lean Prover Zulip Chat Archive
permalink: 113489newmembers/72607Useifconditionwithinthenoutput.html
---
The archive URL format has changed. Please find this page at:
https://leanprover-community.github.io/archive/stream/113489-new-members/topic/Use.20.22if.22.20condition.20within.20.22then.22.20output.html


A shot that shows the perspective of a character, as if the viewer is looking through their eyes. This is most commonly accomplished with a SteadiCam or handheld camera operator standing in for the character, in appropriate clothes. Alternatively, it could be the actor or a stand-in with a small camera mounted to (or held very near) his head to keep both hands free for action. Used sparingly, usually when there is an in-story reason for this perspective, such as:
- Murderer P.O.V.
- Impending Doom P.O.V.
- "Jaws" First-Person Perspective
- Huddle Shot
- Mouth Cam
- Eye Cam
- Impairment Shot
- The character is being channeled by a psychic or medium, and the viewer looks only at what he saw.
- The character's identity is to be concealed from the audience, as in the Murderer P.O.V. shot.
- The character is a horrible monster, and its appearance is to be concealed from the audience. This can be accompanied by the Shaky Cam (as it was for Buffy's First Evil).
- The character's vision or perspective is unique in some way, such as a special form of vision (thermograph, low-light, colorblindness, sonar, etc.); special effects are used to reveal this; see also Robo Cam, Binocular Shot.
- Some versions of The Rashomon and Intro-Only Point of View do this.
The tricks and variations used for this shot can also, as one might surmise, be used in First-Person Shooter video games.
Interestingly, the FPS genre sometimes does this for cutscenes and trailers (though many games just keep the player in the FP POV during cinematic events, instead of using pre-rendered cutscenes). Either way, it is a fantastic tool for making the events of the story more intense and immersive (see Unbroken First-Person Perspective for more information). And without the limitations of having a high-quality image from a first person perspective in real life, First Person Shooters LOVE this trope.
Compare In-Universe Camera (formerly named First Person Camera, which now redirects here). Contrast Face Cam. For a literary trope that can be used to similar effect, see The All-Concealing "I".
Examples:
- Jim Varney's Ernest P. Worrell commercials in the '80s always had him addressing the camera as his unseen "buddy" Vern.
- Ao no Flag: The final chapter of the manga is shown entirely from the perspective of an undisclosed character whose last name is Ichinose attending a friend's wedding 7 years after high school. Taichi shows up near the end of the chapter, revealing that the Ichinose we were following is not him, and ends with the implication that the person is Touma, who has since married Taichi and taken his last name.
- Mobile Suit Gundam SEED uses it for comedy in an early Will They or Won't They? scene between Murrue and Mwu, when Murrue, trying to have a serious conversation, asks Mwu for his thoughts; from Mwu's perspective◊ we see his gaze stray down from Murrue's face to her chest.
- Texhnolyze occasionally shows things from Ichise's perspective, down to the HUD he sees because of his recently upgraded eyes.
- An interesting use of this trope was in Osamu Tezuka's Jumping, a 6-minute cartoon consisting of a one long POV shot through the eyes of an incredibly-high-jumping creature (whose face and identity are not shown to the viewers). See for yourself...
- Neon Genesis Evangelion features POV shots occasionally, usually from Shinji's perspective. A scene in End of Evangelion gives us his POV of Asuka with a horrific rage-face◊ leaning over Shinji while having some sort of mental hate-sex with him.
- Inside Mari:
- When a scene features the life of Fumiko, we see nearly everything from Fumiko's point of view. In fact, the times we see Fumiko's face in these scenes are typically when she's looking at a reflective surface such as a mirror, window, or her mother's eye.
- Later we see a flashback from Mari's point of view of how she saw her life just before Isao became involved in it. In the course of this, we see Mari's classmates as filthy creatures with either the top half or the bottom half of their faces obscured, her father turned away and transparent, her mother looking positively grotesque, Mari's reflection looking like childish scribbling, and Isao surrounded by Bishie Sparkles even as Mari's watching him masturbate. The only one who looks normal at all is her younger brother.
- Bleach: Most of Ending 26 was shot from Rukia's point of view looking at Ichigo, whether in the present or in her memories.
- My Little Pony: Equestria Girls:
- Upon emerging from the portal, the point of view is through Twilight's eyes. The first thing she sees is a ladybug, then Spike turned into a dog, and then... her brand-new hands. Cue Skyward Scream.
- We get another shot from Twilight's viewpoint during the Huddle Shot, as she's sprawled on the ground.
- Russian Ark features a single 96 minute take from the perspective of an unnamed narrator walking through Winter Palace in Saint Petersburg, witnessing operas and a grand ball across different time periods.
- Jaws. Namely, the POV of Bruce the shark.
- Lampshaded as the central feature of The Blair Witch Project.
- Used for a few minutes in Doom as a homage to the original video game.
- A slight variation of this—the "perspective" of a dead or incapacitated character—is one of director Quentin Tarantino's trademarks and such a scene is present in most of his movies, perhaps most notably Jackie Brown and Pulp Fiction.
- In Bruges ends with the camera from Ray's POV as he is wheeled into an ambulance on a gurney. He may or may not be dying, the ending is ambiguous.
- In Lonesome, Jim tries to impress Mary by doing a headstand—and the camera shot shows her upside-down.
- An early example is the 1947 film noir Lady in the Lake, directed by and starring Robert Montgomery, which was filmed almost entirely in POV Cam to imitate the original novel's first-person narration (this is hence a rare non-video game example of Unbroken First-Person Perspective). Just so the film's Big Name Star was not totally unseen, he appears in bridging sequences and is seen whenever Marlowe looks into a mirror.
- The first half of another 1947 noir, Dark Passage, is shown from the viewpoint of the main character; after he has plastic surgery so he looks like Humphrey Bogart, we see him onscreen.
- In Tower Of God, Anak's flashback of the last time she saw her mother is shot entirely in point of view.
- Appears very frequently in The Silence of the Lambs.
- Much of Cannibal Holocaust used this technique.
- The echolocation of the alien creatures from Pitch Black is represented by POV shots of "images" made up of tiny pixel-dots that convey textures and surfaces.
- The original The Fly (1958) may be the Trope Codifier for how this trope can depict a monster's unusual sensory mode, thanks to its famous shot of the leading lady screaming as seen through multifaceted insect eyes.
- Used in Kick-Ass when Hit-Girl has to clear out a darkened room full of thugs with night vision goggles. It was used to add a bit of humor as it was done First-Person-Shooter style, and also an excuse to not overuse several epileptic white flashes.
- The '50s corporate-intrigue drama Executive Suite opens with a scene from the perspective of the company CEO whose subsequent death by heart attack sets the film's plot in motion.
- The science fiction film It Came from Outer Space uses the alien's POV for its first few encounters with humans (including a semi-transparent "eye" over the whole screen) to keep from revealing the alien's appearance too early.
- Dr. Jekyll and Mr. Hyde (1931) uses this twice, once in the beginning (from Jekyll's viewpoint as he dresses and travels to a lecture) and then again after the first transformation to Hyde (as he spins around in confusion and finally catches himself in the mirror). The mirror shots were done by having actor Fredric March pose on the opposite side of a fake mirror which was actually just a hole in the wall.
- The film version of The Diving Bell And The Butterfly is partially shown in this manner, using a tilt-shift focus (which picks out sharp objects in an otherwise blurry image) to depict the viewpoint of its protagonist, who suffers a stroke that among other debilitations leaves him with the use of only one eye.
- All the SQUID scenes in Strange Days are filmed in this way.
- Enter the Void uses this a lot, particularly in the intro when the main character is still alive. Even the eye blinks are represented by screenflicker.
- The remake of Maniac! (1980) constantly.
- Done several times from Ryan Stone's viewpoint in Gravity.
- X-Men: Apocalypse:
- We get a glimpse of what the world looks like through the ruby quartz lenses of Scott Summers' sunglasses when he puts them on for the first time.
- After Apocalypse notices Xavier's presence through the latter's telepathic link with Erik, Apocalypse stares straight at the camera (so we're seeing him through the Professor's perspective) with his glowing white eyes as he ominously states, "Thank you for letting me in."
- The Grey Zone: At the end, the camera briefly switches to the point of view of the Jewish girl after the Auschwitz-Birkenau uprising has been quelled by the Nazis. The little girl sees quiet, tall men in uniform all around her. The camera continues to follow her as she runs through the gates to freedom until she's shot to death.
- Used in The French Connection II when Popeye is chasing, and later searching the bus for Charnier.
- In the Tales from the Darkside: The Movie segment "Cat From Hell", there are a few shots from the cat's perspective, including when the cat jumps into a hitman's mouth, and we first see the camera lunging into it.
- Hardcore Henry is an entire movie shot from the perspective of the main character.
- Cries from the Heart: In court, a shot from Michael's perspective shows everyone watching him, especially Jeff staring at him intently, causing him to have a panic attack.
- Late in I Am Alone, we briefly see things from Jacob's point-of-view, which has become green as a result of him being infected for so long.
- Three-year-old Shane from Backstreet Dreams gets one as he flees his home to escape from a criminal who wants to get Revenge by Proxy on his father.
- In the Time Machine gamebook series, all illustrations are from the protagonist's point of view.
- It is common in gamebooks, in fact, along with Second-Person Narration, to have the illustrations being from the protagonist's viewpoint, since after all, you are the hero. Notably in Lone Wolf, where many pictures are of the enemies to fight, and thus show some monster seemingly about to jump at the reader.
- Played for comedy in the 30 Rock episode "Apollo, Apollo". Apparently Kenneth sees everyone as Muppets; Tracy sees everyone as copies of himself; and Jack sees everything captioned with its price (and believes Kenneth to be worth $7).
- Bones did this with the episode "The Ghost in the Machine", which is told entirely from the murder victim's skull's point of view.
- The 2014 Cosmos shows the evolution of the eye, with the real view presenting next to what each iteration of the increasingly-complex creature eyes see.
- Game of Thrones: We get these when Stark kids are seeing through the eyes of a direwolf.
- Gulf Playhouse, an anthology series which ran from 1952-53 on NBC, initially did standard dramatic stories before being retooled as First Person Playhouse, where every story was shown from the POV of the main character (which was probably inspired by the above-mentioned The Plainclothesman).
- House does this for a good half of the episode "Locked In". It starts from the patient's viewpoint, who suffer from locked-in syndrome, and thus can only watch helplessly as the doctors try to diagnose him, only able to communicate through blinking.
- A recurring sketch on The Jackie Gleason Show featured Gleason as Joe the Bartender, who would address the camera as unseen customer "Mr. Dennahy".
- The Kamen Rider Kiva Adventure Battle DVD, Kimi mo Kiva ni Narō (You Can Also Be Kiva), is an interactive DVD mostly shot from the perspective of an unseen character (implied to be the viewer themselves), whom the characters train to become the next Kiva. We never see what they look like, since the only time we ever see them on screen is when they've already transformed into Kiva, though judging by their voice and height (seen as a silhouette just before they transform), they're a young boy.
- Late Night with David Letterman
- On the third episode Dave came out to do his opening monologue with a cameraman holding a camera over Dave's right shoulder, showing his view of the audience. The camera stayed on Dave's shoulder until the first commercial break.
- Other gimmicks used over the years include "Monkey Cam" where a camera is strapped to the head of a chimp who is let loose in the audience, showing its perspective.
- Likely Suspects, a playful detective show that had a short run on Fox starting in 1992, is based on this trope. The viewer plays the role of a rookie partner to the main character. The perspective frequently shifts from POV to standard cinematography for flashbacks or other scenes where the viewer character isn't present.
- The M*A*S*H episode "Point of View" used this to great effect, with the camera taking the place of a patient in the hospital, allowing the viewer to experience the characters from a different perspective.
- One episode of The New Hollywood Squares had Jim J. Bullock using a helmet-cam in his square.
- Peep Show sticks to this almost exclusively, hopping between characters' perspectives (including those of random passers by). This becomes very weird in kisses and sex scenes.
- The Plainclothesman, an detective show which ran from 1949-54 on DuMont, was shown entirely from the POV of its main character, with the exception of a flashback episode which showed his face.
- The Sanctuary episode "Metamorphosis" takes place mostly from the first-person POV of Will, and only switches to a normal third-person POV for a few scenes.
- Saturday Night Live had a couple of sketches that were shown from a first-person point of view:
- Probably the most popular sketch that uses the P.O.V. Cam is Christopher Walken's recurring sketch, "The Continental." Justified in that the original version of "The Continental" from the early 1950s was done through P.O.V. Cam too.
- A sketch from a Jean Doumanian era (1980-1981 season) episode hosted by Karen Black showed a stroke victim laid up in a hospital bed. The viewer sees how his nurse (Yvonne Hudson) treats him like a baby and how no one — not even his daughter (Karen Black) and her boyfriend (Charles Rocket) seems to care that he had a stroke (except for his friend, Rachel, who loved him).
- A short film (also from the Jean Doumanian era — this time on the episode hosted by Sally Kellerman) centered on a man who turns out to be one of the freed Iranian hostages from the early 1980s and everywhere he goes, people bombard him with questions and exploit him. For maximum Nightmare Fuel, it ends with a man dressed as Uncle Sam eerily announcing, "Welcome home, son!" and strangling the unseen man with a yellow ribbon as "Tie a Yellow Ribbon 'Round the Old Oak Tree" plays.
- From season 20 (another seasonally rotten season), there was a one-off sketch on the episode hosted by Bob Newhart in which a post office supervisor (Newhart) tries to fire a worker (who appears in POV Cam).
- In the Small Wonder series finale "The Rip-Off", this was done when Vicki, connected to the hotel TV, showed how the robbery really happened.
- Star Trek: Deep Space Nine: The episode "The Magnificent Ferengi" has one of these, combined with a Huddle Shot from Keevan's eyes, although after he is killed.
- Star Trek: Voyager:
- The episode "Dark Frontier" starts off with a Borg-eye's view of an assimilation job. Also serves as a Villain Prologue.
- "Prototype" starts with a Deliberately Monochrome opening of this sort, which leads to The Reveal that whose eyes we're seeing through is an android.
- Star Trek: Picard: In "The Impossible Box", we get a brief glimpse of what the world looks like through Hugh's eyes after he says, "Out of the way, please." There are green Borg graphics which pepper his field of vision.
- Tales from the Crypt:
- The episode "You, Murderer" is done from this perspective, with the main character speaking in an impersonated Humphrey Bogart voice and old footage of Bogart himself digitally inserted into scenes where his reflection is shown in mirrors.
- Another Crypt episode, "Abra Cadaver", is partially shown from the POV of one of the characters after he dies.
- The video for The Prodigy's "Smack My Bitch Up" is a first-person view of a night's debauchery and sexual harassment being done by a woman, thanks to a mirror-reveal.
- Cinnamon Chasers' "Luv Deluxe", a young man's wild romantic road trip that also has Multiple Endings, available here.
- Used in the music video for One Direction's "Night Changes", allowing the viewer to pretend they're going on terrible dates with all five (at the time) members of the band.
- In Stern Pinball's X-Men, "Weapon X Multiball" shows Logan's view as he runs down the corridors of the Weapon X facility and fights the guards in his way.
- Isaac Asimov's Robots: When Det. Baley exits the decontamination chamber to meet Dr Fastolfe, we briefly get to see how much the bright light hurts his eyes. Det Baley grew up in an underground Mega City and the washed-out view from his perspective shows us how windows open to the sun hurt him until he can adjust to the bright space.
- Technically, every single first-person shooter, by definition. Many also do cut scenes in first person, such as Half-Life and Call of Duty, often making the hero The Faceless.
- 1916 - Der Unbekannte Krieg is played from the perspective of a soldier in the trenches of World War I trying to find a way to the battlefield, while trying to avoid being eaten by raptors.
- 9.03m is played from the perspective of someone exploring Baker Beach in San Francisco.
- Aka Manto is played from the perspective of a kid exploring a school while being pursued by the titular monster.
- Antarctica 88 is played from the perspective of the son of Vladimir Efimov.
- Blame Him has you playing from the perspective of a parent looking for their kidnapped baby.
- Death Park is played this way as you explore the titular Amusement Park of Doom.
- Echo Secrets Of The Lost Cavern is explored from Arok's perspective.
- Evie 2018 is viewed through the perspective of a girl exploring an empty building in the middle of the woods.
- Frostbite: Deadly Climate is played by an unnamed Arctic researcher trying to stay warm while exploring Base 75.
- The Ghost Train is viewed from the perspective of the Player Character, Kensuke Tanaka.
- Hollow is seen from the perspective of the Amnesiac Player Character.
- Insignificant 2019 can be played from a first-person perspective.
- Inunaki Tunnel is viewed through the Player Character's video camera.
- Killer Frequency is viewed through the eyes of Forrest Nash.
- Kona is told from the perspective of Carl Faubert.
- Okaeri is shown from the perspective of a Japanese teenage girl.
- Onryo 2020 is played from the perspective of the Player Character. This trope becomes a literal example when you use the Magical Camera.
- Pacify is played in the first-person perspective from the view of a paranormal investigator.
- P.A.M.E.L.A. is viewed from the first-person perspective of the Sleeper.
- Pigsaw is viewed from the perspective of a human trying to escape from a human meat processing plant.
- Skyland 1976 is viewed from the perspective of Simon Hopper.
- Interesting variant in the original Unreal Tournament. Typically upon death, the camera goes into third-person to allow the player to watch their character's death animation. If the death was via sniper bullet to the head or resulted in Ludicrous Gibs, however, the camera instead continued viewing from the head's point of view as it bounced away from the rest of the body.
- Smile is viewed from the point of view of Theodore Caldwell.
- Syndrome is played from the perspective of the Player Character.
- Yuki Onna (2020) is played from the Player Character's perspective.
- The Legend of Zelda: The Wind Waker has one cutscene where Link is shown waving to his sister from her point of view as she is carried to her rescue by Tetra and her pirate crew.
- Most of the 3D Grand Theft Auto titles has a dynamic camera option while driving, giving the player several dynamic angles to view themselves through as they drive like a high speed chase scene. If this camera option is in use while the player is being chased by the cops, sometimes the camera switches to the cop's point of view as they chase the player.
- The opening cutscene of Overlord I shows the minions cracking open your entombment from your perspective, presumably to keep you as The Faceless.
- Fire Emblem Awakening opens with a cutscene that crosses this and Eye Cam, where you witness one of the game's battles from a first-person perspective. You can even see the Player Character's hood blocking portions of the screen, as it would the character's view.
- Meriwether: An American Epic is viewed through the perspective of Meriwether Lewis.
- Your Toy is played from a first-person perspective.
- In the Pokémon Mystery Dungeon: Rescue Team remake, when you wake up and are introduced to your partner, similar to the anime special for the Rescue Team games, you are not shown the Pokémon you are yet; instead, your partners introduction is shown from a first person perspective of your partner speaking to you. When your partner mentions that you look like the species of the Pokémon you chose to turn into, between that line, you are at long last shown the species youve turned into.
- This◊ Sabrina Online comic starts with a POV shot.
- In Godslave, we briefly see the world from Edith's perspective when she wakes up after Turner knocks her out.
- The "Spudgy Cam" gives a great view of the world from a Pekingnese perspective on Eat Your Kimchi.
- Used in Shock Troopers: as one soldier gets boosted over a small hill by his friend, the camera briefly cuts to his view as the defibrillators make contact and he's launched into the air.
- Sometimes done in pornography with the camera filmed from the viewpoint of one of the actors (normally the male).
- The Arthur episode "You Are Arthur" features this technique for the entire episode, where viewers get to watch Arthur run a 3k race through his point of view.
- The third segment of Family Guy Viewer Mail #2, "Point Of Stew", lets viewers see the world through Stewie's eyes.
- A few shots from the Oggy and the Cockroaches episode "Now You See Me, Now You Don't!" are set from Oggy's POV.
- Pinky and the Brain episode 55 segment 1 "The Pinky P.O.V." was shown entirely from Pinky's perspective, featuring a visible nose, hands and full body reflections.
- Star Trek: Lower Decks: In "Envoys", we get a brief glimpse of Ensign Rutherford's point-of-view when he confronts a group of holographic Borg drones.
- The beginning of The Venture Bros. episode, "¡Viva los Muertos!" shows the POV of one of The Monarch's henchman as he dies and is revived as Venturestein.


When opening links to History or comment, make sure to remove the www. if its there
Thank you to ColePZ for helping me make this
©Pugzo18
This project is licensed under the MIT License


a Python toolkit for coupling and running Earth surface models
Install
Quickstart
User Guide
Examples
Reference Manual
Source


Data Visualization Map
Click the text legend to see interactivity in action.
Map with Zoom
Use mouse wheel to control zoom level or use buttons + and -
Basic Map


According to the Philippine Department of Health (2019) in response to fecal contamination in the Manilla Bay, swimming in or drinking water polluted with fecal matter can lead to symptoms that include but are not limited to:
Diarrhea
Cholera
Typhoid
Dysentery
Various Skin Diseases
Eye Infection
If not treated quickly, the above symptoms can lead to more serious complications and death.
One of the most prominent signs of fecal matter is the presence of coliform bacteria, a family of bacteria that are found in mamal’s fecies (Gale Environmental Encyclopedia, 2011) which “whether pathogenic or not, indicates that fecal contamination has occurred and that pathogens are likely present.”(Gale Environmental Encyclopedia, 2011).


Class CombinedTargetContainerConfigExtensions
Extensions for pre-configuring options in an ITargetContainer via a CombinedContainerConfig, such as the one exposed by DefaultConfig.
Inherited Members
Namespace: Rezolver
Assembly: Rezolver.dll
Syntax
public static class CombinedTargetContainerConfigExtensions
Methods
| Improve this Doc View SourceConfigureOption<TOption>(CombinedTargetContainerConfig, TOption)
Adds a Configure<TOption> callback to the configuration, which will set the passed optionValue
option in the ITargetContainer to which the config
is later applied.
Declaration
public static CombinedTargetContainerConfig ConfigureOption<TOption>(this CombinedTargetContainerConfig config, TOption optionValue)
where TOption : class
Parameters
| Type | Name | Description |
|---|---|---|
| CombinedTargetContainerConfig | config | The combined config to which the configuration callback will be added. |
| TOption | optionValue | The value of the option that is to be set when |
Returns
| Type | Description |
|---|---|
| CombinedTargetContainerConfig | The |
Type Parameters
| Name | Description |
|---|---|
| TOption | The type of option to be set |
ConfigureOption<TOption>(CombinedTargetContainerConfig, Func<ITargetContainer, TOption>)
Adds a Configure<TOption> callback to the configuration, which will set the option value returned by
the optionValueFactory
in the ITargetContainer to which the config
is applied.
Declaration
public static CombinedTargetContainerConfig ConfigureOption<TOption>(this CombinedTargetContainerConfig config, Func<ITargetContainer, TOption> optionValueFactory)
where TOption : class
Parameters
| Type | Name | Description |
|---|---|---|
| CombinedTargetContainerConfig | config | The combined config to which the configuration callback will be added. |
| Func<ITargetContainer, TOption> | optionValueFactory | A callback which returns value of the option that is to be set when |
Returns
| Type | Description |
|---|---|
| CombinedTargetContainerConfig | The |
Type Parameters
| Name | Description |
|---|---|
| TOption | The type of option to be set |
ConfigureOption<TOption>(CombinedTargetContainerConfig, Type, TOption)
Adds a Configure<TOption> callback to the configuration, which will set the passed optionValue
option for the service type serviceType
in the ITargetContainer to which the config
is later applied.
Declaration
public static CombinedTargetContainerConfig ConfigureOption<TOption>(this CombinedTargetContainerConfig config, Type serviceType, TOption optionValue)
where TOption : class
Parameters
| Type | Name | Description |
|---|---|---|
| CombinedTargetContainerConfig | config | The combined config to which the configuration callback will be added. |
| Type | serviceType | The service type for which the option is to be set. Use of this is option-dependent - i.e. some options are read
in a service-specific way and some aren't. Passing |
| TOption | optionValue | The value of the option that is to be set when |
Returns
| Type | Description |
|---|---|
| CombinedTargetContainerConfig | The |
Type Parameters
| Name | Description |
|---|---|
| TOption | The type of option to be set. |
ConfigureOption<TOption>(CombinedTargetContainerConfig, Type, Func<ITargetContainer, Type, TOption>)
Adds a Configure<TOption> callback to the configuration, which will set the option value returned by
the optionValueFactory
for the service type serviceType
in the ITargetContainer to which
the config
is applied.
Declaration
public static CombinedTargetContainerConfig ConfigureOption<TOption>(this CombinedTargetContainerConfig config, Type serviceType, Func<ITargetContainer, Type, TOption> optionValueFactory)
where TOption : class
Parameters
| Type | Name | Description |
|---|---|---|
| CombinedTargetContainerConfig | config | The combined config to which the configuration callback will be added. |
| Type | serviceType | The service type for which the option is to be set. Use of this is option-dependent - i.e. some options are read
in a service-specific way and some aren't. Passing |
| Func<ITargetContainer, Type, TOption> | optionValueFactory | A callback which returns value of the option that is to be set when |
Returns
| Type | Description |
|---|---|
| CombinedTargetContainerConfig | The |
Type Parameters
| Name | Description |
|---|---|
| TOption | The type of option to be set. |
ConfigureOption<TOption, TService>(CombinedTargetContainerConfig, TOption)
Adds a Configure<TOption> callback to the configuration, which will set the passed optionValue
option for the service type TService
in the ITargetContainer to which the config
is later applied.
Declaration
public static CombinedTargetContainerConfig ConfigureOption<TOption, TService>(this CombinedTargetContainerConfig config, TOption optionValue)
where TOption : class
Parameters
| Type | Name | Description |
|---|---|---|
| CombinedTargetContainerConfig | config | The combined config to which the configuration callback will be added. |
| TOption | optionValue | The value of the option that is to be set when |
Returns
| Type | Description |
|---|---|
| CombinedTargetContainerConfig | The |
Type Parameters
| Name | Description |
|---|---|
| TOption | The type of option to be set. |
| TService | The service type for which the option is to be set. Use of this is option-dependent - i.e. some options are read in a service-specific way and some aren't. |
ConfigureOption<TOption, TService>(CombinedTargetContainerConfig, Func<ITargetContainer, Type, TOption>)
Adds a Configure<TOption> callback to the configuration, which will set the option value returned by
the optionValueFactory
for the service type TService
in the ITargetContainer to which
the config
is applied.
Declaration
public static CombinedTargetContainerConfig ConfigureOption<TOption, TService>(this CombinedTargetContainerConfig config, Func<ITargetContainer, Type, TOption> optionValueFactory)
where TOption : class
Parameters
| Type | Name | Description |
|---|---|---|
| CombinedTargetContainerConfig | config | The combined config to which the configuration callback will be added. |
| Func<ITargetContainer, Type, TOption> | optionValueFactory | A callback which returns value of the option that is to be set when |
Returns
| Type | Description |
|---|---|
| CombinedTargetContainerConfig | The |
Type Parameters
| Name | Description |
|---|---|
| TOption | The type of option to be set. |
| TService | The service type for which the option is to be set. Use of this is option-dependent - i.e. some options are read in a service-specific way and some aren't. |


I am a sophomore undergraduate student attending the University of Waterloo as a CS Major. This is my website.


NO SMALL AFFAIR (1984)
A Film Review by Dan Navarro Copyright 1997 by Dan Navarro
About halfway through "No Small Affair", there's a scene where Laura, the singer played by Demi Moore, belts out a knockout rendition of the Madeira/Dorsey standard, "I'm Glad There Is You." It's a jazzy paean to romance. Watching the movie again recently, I was jolted when Laura sang the line about "underrated treasures", because it's a capsule description of the film itself. "No Small Affair", unheralded in its day and rarely revived since, is itself a treasure, a gem among the gravel of cynical 1980s films.
It's a coming-of-age tale, chronicling the conversion of Charles Cummings (Jon Cryer) from gawky teenager to confident young adult. Nothing new there, except that director Jerry Schatzberg and screenwriters Charles Bolt and Terence Mulcahy have fashioned a charming film that sings with a bittersweet passion about Cummings' wrenching transformation. His catalyst is Laura, the 23-year-old saloon singer played by Demi Moore. With her youthful yet worldly manner, and her scratchy violin voice playing its siren song on Cummings' sensibilities, the lad is a goner. What ensues is a funny and endearing rite-of-passage story with brilliantly clever complications.
 One day, when Laura and a friend wander into camera range, Cummings waves them off, but not before he's snapped a few shots of Laura's beautiful face. Seeing that face later in his proof sheets, Cummings is hooked.
Infatuated beyond reason, Cummings searches for his new beloved. He begins by staking out the dock where he first saw her. After several hours of fruitless waiting, he sulks: "Someone said, if you stand in one spot long enough, the whole world will pass by. I don't know who said that, but he's an idiot."
Fortune finally smiles on Cummings on a night out with his big brother Leonard (Peter Frechette) and Leonard's fiancee Susan (Elizabeth Daily). Armed with a fake ID, Charles joins the pair at a downtown nitery, and there, on the tiny stage, the object of his affections warbles into a hand mike, barely audible above the blare of a heavy-metal band. But the next morning, Cummings' exhilaration at finding Laura is tempered by the news that her band is breaking up, and the lady may wind up out of a job.
Worlds above Cummings in sophistication, Laura nevertheless turns to her new friend for comfort when her career goes sour. One afternoon, she accedes to his request to pose for his camera, and we can feel their deepening friendship as the hours pass by and Cummings shoots roll after roll of film, happily taking pictures of this glowing Circe in front of some of San Francisco's most picturesque landmarks. Night falls, and the pair are tired, hungry, and broke. So they decide to crash a wedding reception and help themselves to food and drink. When they are caught by the father of the bride and threatened with arrest, Cummings makes a deal with the irascible paterfamilias: Let Laura sing for their supper. To everyone's surprise, including Laura's, her rendition of a classic ballad (the above-mentioned "I'm Glad There is You") is a big hit. Who knew this grunge diva could sing pop?
This revelation inspires Cummings to take drastic action. Rounding up his life's savings, he pays to have Laura's likeness and telephone number posted on taxicabs all over the city. He's hoping the publicity will attract attention to Laura's talents, but at first it seems only to attract heavy-breathing weirdos. Exasperated, Laura pulls her phone out of the wall. But a newswire service picks up the story about the young fan and his generous gesture and prints it, and soon the phones are ringing at Laura's old place of business. The bar owner, Jake (George Wendt), pleads with Laura to return and sing at his establishment. She agrees, but she is still furious with Cummings.
Laura's "debut", in front of a packed house that includes record company talent agents, is a success. She is offered a recording contract, and the possibility of stardom beckons. But now, in a neat reversal of the first half of the film, the hunted becomes the hunter, as she tries frantically to locate Cummings and thank him.
What makes "No Small Affair" so winning is the delicious array of comedy performers director Schatzberg has united for his film. Jon Cryer, making his first film at age 19, has all the right moves, whether making sheep's eyes at his costar or doing a nifty moonwalk upon receiving a bit of good news. Demi Moore, in her first starring role, makes Laura tender/tough, a savvy woman who combines a strong sense of independence with a most touching vulnerability. (In one climactic scene, Laura wraps her arms around her young benefactor and says, "When I grow up, I want to be just like you.")
Among the supporting players, none resonates more delightfully than Judy Baldwin as Stephanie, the elegant call girl Cummings meets at his brother's bachelor party. Baldwin's bit is little more than a cameo, but her luminous and hilarious scene with Cryer will be remembered long after most of the other performances are forgotten.
"No Small Affair"'s penultimate scene reunites the two protagonists, briefly, just before she is to leave for Hollywood and a career. In a sweetly written scene, they swear eternal friendship, then surrender to the stirrings within. Cummings is initiated at last. But his moment of glory is at once his triumph and his Waterloo, for now that he has touched Laura's soul, he must let her go. It doesn't seem fair. Welcome to the real world, kid.
Still, this is a comedy; so don't be surprised to find the bittersweet ending leavened with a bit of sugar, in the person of Cummings' pretty classmate Mona (Jennifer Tilly).
Along with the performers mentioned above, splendid turns are provided by Hamilton Camp as the cranky father of the bride, Ann Wedgeworth as Cummings' ditsy mother, and singer Chrissy Faith, whose excellent voice was used to dub Laura's vocals throughout the film.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


dmesg
Write the kernel messages to standard output.
More information: home page
- Show kernel messages:
dmesg
- Show kernel error messages:
dmesg --level err
- Show kernel messages and keep reading new ones, similar to `tail -f` (available in kernels 3.5.0 and newer):
dmesg -w
- Show how much physical memory is available on this system:
dmesg | grep -i memory
- Show kernel messages 1 page at a time:
dmesg | less
- Show kernel messages with a timestamp (available in kernels 3.5.0 and newer):
dmesg -T
- Show kernel messages in human-readable form (available in kernels 3.5.0 and newer):
dmesg -H
- Colorize output (available in kernels 3.5.0 and newer):
dmesg -L