SPARQL:
A Query Language for the Semantic Web
Emerging Technologies Discussion Group Presentation
Presented by members of the Libraries Coding Workshop
November 29, 2016
What is the Semantic Web?
- A central feature of the WWW is the use of "hyperlinks" or "jump links" to connect documents.
- In web 1.0, these links have no meaning, but are merely unidirectional connections between documents.
- By contrast, in the Semantic Web, there is another kind of linkage, expressed in the form of triples connecting "resources".
- The links that are created by these triples have a meaning that denotes the nature of the relationship between the two resources that are being connected.
What is the Semantic Web?
- These links are still fundamentally unidirectional, but they also express an idea or statement about things in the world.
- The subject, predicate, and object can all be URIs that refer to entities and concepts in the world.
- For example, a triple might take express the idea that: "LeoTolstoy" "isAuthorOf" "WarAndPeace", but with each of these three concepts expressed as a globally unique identifier, or URI.
- RDF, the Resource Description Framework, is the way these triples are expressed; there are in turn different syntaxes for expressing RDF (e.g. n-triples, turtle)
Why SPARQL?
- SPARQL is a query language for RDF.
- RDF is directed, labeled graph data format:
- graph: network of vertices and edges (nodes and links);
- directed: links have a "distinguished direction";
- labeled: links (predicates) have meaning.
- RDF is made up of triples, and triples have three components (Subject, Predicate and Object).
- SPARQL supports aggregation, negation, subqueries, creating values by expressions, and extensible value testing.
SPARQL Syntax
- A basic query starts with a SELECT clause identifying the variables of interest.
- Query variables are indicated by the use of either a question mark or dollar sign.
- The ? or $ are not part of the variable name, so $abc and ?abc are equivalent.
- The second part of this basic query is a WHERE clause indicating a graph pattern to match against.
- The graph pattern is in the form subject, predicate, object enclosed by curly braces.
- The parts of the graph pattern can be expressed as URIs or as a prefix plus an identifier (this shorthand is known as the 'qname' syntax).
SPARQL Functions
- SPARQL supports various functions that allow the filtering and processing of query results:
- Functions on strings;
- Functions on numbers;
- Functions on date and time;
- Hash functions.
- Other "advanced" features include:
- Pattern matching (regex);
- Inferencing;
- Blank nodes.
SPARQL in UMD Libraries
- SPARQL is likely to be increasingly part of day-to-day work in the Libraries.
- One of the first ways it is being used is in Fedora 4.
- Fedora is an implementation of the W3C's Linked Data Platform.
- Metadata is stored natively as RDF properties on repository containers.
- Fedora comes bundled with an RDF database or "Triplestore" called Fuseki.
- One immediate benefit of this infrastructure is that it will become possible to write queries on multiple Fedora-based repositories at once.
- Another RDF-based system currently being piloted on campus is Vivo, a RDF-based institutional data management framework.
SPARQL in Action: Basic Query
SELECT * WHERE {
?s ?p ?o
} LIMIT 100
SPARQL in Action: Prefixes
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX nm: <http://nomisma.org/id/>
SELECT ?label WHERE {
nm:rome skos:prefLabel ?label
}
SPARQL in Action: Complex Query
SELECT ?label ?type ?field ?lat ?long WHERE {
nm:rome skos:prefLabel ?label .
nm:rome rdf:type ?type .
nm:rome dcterms:isPartOf ?field .
nm:rome geo:location ?loc .
?loc geo:lat ?lat .
?loc geo:long ?long
}
[repeated subjects can be omitted with the help of semicolons]
SELECT ?label ?type ?field ?lat ?long WHERE {
nm:rome skos:prefLabel ?label ;
rdf:type ?type ;
dcterms:isPartOf ?field ;
geo:location ?loc .
?loc geo:lat ?lat ;
geo:long ?long
}
SPARQL in Action: Sorting
SELECT ?label WHERE {
nm:rome skos:prefLabel ?label
} ORDER BY ASC(xsd:string(?label))
SPARQL in Action: Filtering
SELECT ?label WHERE {
nm:rome skos:prefLabel ?label .
FILTER langMatches( lang(?label), "en" )
}
SPARQL in Action: Broad Queries
SELECT ?mints WHERE {
?mints a nmo:Mint
}
SPARQL in Action: Visualize Big Datasets
SELECT ?label ?lat ?long WHERE {
?mints a nmo:Mint ;
skos:prefLabel ?label ;
dcterms:isPartOf nm:greek_numismatics ;
geo:location ?loc .
?loc geo:lat ?lat ;
geo:long ?long
FILTER langMatches( lang(?label), "en" )
}
Thank you!
Peter Eichman<EMAIL_ADDRESS>Joseph Koivisto<EMAIL_ADDRESS>Dinesh Mendhe<EMAIL_ADDRESS>Bria Parker<EMAIL_ADDRESS>Joshua Westgard<EMAIL_ADDRESS>/


Whatcha thinkin about?
Whatever it is, type it out man. Take it from me, me, getting it out heals the soul. And it's also required.
<EMAIL_ADDRESS>|<PHONE_NUMBER>


Social media
Education
Please choose a square logo
Date from
Date to
Please choose a square logo
Date from
Date to
Work Experience
Please choose a square logo
Date from
Date to
Please choose a square logo
Date from
Date to
Skills
%
%
Submit resume
Please review your information once more and press the below button to put your resume online.


--- layout: home ---
Music + Motion is a web application that allows users to see how people move and react to music. I am curious about how we all move differently to the same things, what makes me tap my feet may make you move your hands instead. I want to show that we’re more similar than different through music.
From it’s initial conception to the stage it’s at now the project has changed a lot. What began as a way to just be expressive through music has now turned into an application that will analyze the users face for reactions to the music their listening to. When the user does something that can be defined as showing emotion, an outline of the face will show up. This can be used for many purposes including studying how people react to certain content. Also, when you consider various data points such as where the users are from, their gender, age etc it is possible to see patterns or similarities between users based on the songs as well.
When this project first began I really wanted it to be focused on gestures and how the user can use them to interact with their computer. I decided to use music as the base for this project because I was also interested in human behavior when it comes to music. This interest came from just observation of people on public transport and how much they move to their music and what part of their body they move.
When it came to my observations there was also something very special that I remembered, music can make people move across all genres. From this I started to look at how important it is throughout cultures as well and other ways that people use music in their daily life.
I also looked into other examples of music and how multiple people connect over it and I remembered a game I used to love when I was younger called Rock Band. Rock Band allowed multiple players to play together in a band with each person taking over a different role. You had someone on the vocals, someone playing the drums, and someone else on the guitar. The goal was to work together as a team and perform the best you can together.
Whilst scrolling through my Twitter timeline I noticed something that I hadn’t seen for a while, someone with an image over their avatar to show support for something. I really liked the idea of the overlay being opaque enough that you can see the users face below it still, not replacing them but instead adding to it. Having the unique user below with the same overlay applied, similar to people being their own person and listening to the same music as someone else.
I wanted to use something like the Arduino to detect physical motion and use that to trigger an event on screen but due to what I wanted to do it would have made more sense to use something like the Leap Motion. The movement of the users hands over the sensors would then change the elements on the screen by size, color, design etc.
Due to this, I scrapped this initial idea and decided to use the webcam to capture motion instead. The initials drafts of the music selection and motion page were mocked up.
After switching the focus to the web camera instead of the Arduino I also decided to change the gestures/interactions. Instead of having hand gestures I began experimenting with using the fingers as brushes and selectors for moving elements around.
The purpose of this approach was to allow the users to feel like they are painting on a canvas of some sort. When multiple users use the app their work we’ll be overlaid onto the same canvas, allowing them to view the similarities or differences between their reactions to the songs.
I modified the design to be more simple and since music is copyrighted I took away the option of searching for a song and instead found videos for each genre that would serve as placeholders for the demonstration. In the opening page the user is presented with the choice of Hands or Face. This will determine how they interact with the application.
For the final version of the prototyping stage I ran into errors when trying to use fingers as the brushes and selectors. So, in the meantime I resorted to using the mouse and the keys to edit the strokes and colors created by the user. But, I still really wanted to use the webcam so I came up with the idea of overlaying the outline of the users face over the music video.
The idea behind this was to allow the users to see how the other person is reacting live to the music. They may find that someone may not be as enthusiastic at certain parts or they may find that they have more in common than they thought. Whilst demo-ing this at The New School a lot of the feedback was about the future iterations or how this application can be used in the music industry for gathering feedback to new songs or videos and what could be done with this information
The next iteration of the application will give the user direct feedback whilst they use the app and a report after of their types of movements and how many other people had similar reactions.


Collaborative Machine Learning & Federated Learning
The human brain is a complex network of functionally interconnected regions whose coordinated effort gives rise to different functions. Understanding what these regions are, how they interact, and how this interaction forms a wide range of behavior has long been an essential question for human neuroscience. Neuroimaging techniques have provided a unique opportunity to tackle this question in a data-driven way. Advances in neuroimaging techniques, such as functional Magnetic Resonance Imaging (fMRI), have allowed us to approximately measure the neural activity in the brain. However, fMRI data are not only massive in size but also spatially and temporally complex. One of the research directions in our group is to develop advanced machine-learning techniques to study brain function and its link to behavior.
Relevant Papers
|
|
IEEE Conference on Information Sciences and Systems | 2023 | Stacking multiple optimal transport policies to map functional connectomes | Javid Dadashkarimi, Matthew Rosenblatt, Amin Karbasi, Dustin Scheinost |
|
|
arxiv | 2022 | Cross Atlas Remapping via Optimal Transport (CAROT): Creating connectomes for any atlas when raw data is not available | Javid Dadashkarimi, Amin Karbasi, Qinghao Liang, Matthew Rosenblatt, Stephanie Noble, Maya Foster, Raimundo Rodriguez, Brendan Adkinson, Jean Ye, Huili Sun, Chris Camp, Michael Farruggia, Link Tejavibulya, Wei Dai, Rongtao Jiang, Angeliki Pollatou, and Dustin Scheinost |
|
|
MICCAI | 2022 | Combining multiple atlases to estimate data-driven mappings between functional connectomes using optimal transport | Javid Dadashkarimi, Amin Karbasi, and Dustin Scheinost |
|
|
MICCAI | 2021 | Data-driven mapping between functional connectomes using optimal transport | Javid Dadashkarimi, Amin Karbasi, and Dustin Scheinost |


My name is Andrew Koster. I was born in Johns Creek, GA and have lived hear my whole life. I have recently decided to make a career change from being a civil engineer to become a wed developer. I am currently studying HTML, CSS, Javascript, Bootstrap, JQuery, NodeJS, Git, Gitbash, and so much more. I love to code and create new ideas. I also love going to the gym, watching football, playing basketball, traveling, and going out with friends.
This project's purpose was to refactor a webpage so that the links are function, CSS selectors/properties are consolidated and sematic and to optimize the code for search engines...
This code is designed to generate a random password that can include lowercase letter,
This application allows a user to enter items that they will be working on for each hour of a work day...
This project will allow users to search for Breweries based on cities and states. In addition, the user will have access to...
This program shows an example of what a back end would look like for e-commerce site. It uses Sequelize to interact with a MySQL database...


--- layout: post status: publish published: true title: Podcast 4.29 - Jackson and Vitters Called Up author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 7749 wordpress_url: http://ivyenvy.com/?p=7749 date: '2012-08-05 22:52:40 +0000' date_gmt: '2012-08-06 03:52:40 +0000' categories: - Podcast - Cubs Blogs - Trades tags: - Josh Vitters - Brett Jackson - Brian Bedo - miCubs comments: [] ---
Andy, Bob from Moline and Corey start things off by welcoming Brian Bedo from miCubs.com on to talk about Brett Jackson and Josh Vitters getting called up to the Cubs today. MiCubs was on the front edge of the news and always do a great job of covering the Cubs and their entire system. Brian gives a very good explanation of why the Cubs may have brought Brett Jackson up right now, even though he has been struggling in AAA, especially with strikeouts.
Then we look at all of the trades the Cubs have made in the last week and give you a little information on all the players that the Cubs acquired in the trades. We look at some listener suggested topics and questions and then pick a winner for this week's photo caption contest.


[1]
Large screen & easy setup; Poor quality. Felt and looked cheap.
[2]
Nice resolution, split screen & good location feature.; Does not have a separate AC charger


this
qualifier.
Using this
to disambiguate a code reference is discouraged by many coding styles
and may easily become unnecessary
via automatic refactorings.
Example:
class Foo {
int x;
void foo() {
this.x = 2;
}
}
After the quick-fix is applied:
class Foo {
int x;
void foo() {
x = 2;
}
}
Use the inspection settings to ignore assignments to fields.
For instance, this.x = 2;
won't be reported, but int y = this.x;
will be.


WORK
ABOUT ME
MORE
JOSEPH SOBRERO
experience designer
ui/ux - web development - print
VIEW PROJECT
ui/ux
VIEW PROJECT
ui/ux - print
VIEW PROJECT


Name
Date of Birth
Age
Hospital Number
NHS Number
New
Cancel
Filter
Cancel
Title
Title
First name
Last name
Date of birth
Hospital number
NHS number
First Name
Last Name


Full Stack Javascript Developer
A results-driven, customer-focused, articulate and analytical Software Engineer who can think “out of the box”. Strong in design and integration problem-solving skills. Expert in Javascript, Angular, Nodejs, ExpressJs, MongoDb with database analysis and user interface design.
Project: Freight Forwarding System
The Application is a cloud Based Logistics Software system, developed to digitalize logistics industry.
Clients: Galaxy Freight Pvt. Ltd, magnum cargo pvt ltd, logistics integrators india pvt ltd
Project: Billing Software
For a SaaS business, a billing software is like the hub of the subscription wheel that holds the multiple spokes(like subscription management, billing, invoicing and accounting, payment processing, fraud management, etc) together, ensuring that the wheel keeps spinning smoothly and steadily so that the SaaS vehicle can efficiently climb the mountain of growth. This application does the same and helps to encourage customers to use the software solutions over time.
Project:Dynizer
The application is a Database system, developed for Toyota car rental service, Belgium & arbo unie, Belgium.
Project: Connectrace
The application is a text-analytics system, developed for IBM I2 product, to display the visualisation of the text analytics done by the analyzer of the Dynizer.

When forced indoors, I spent most of the time infront of my play station


Procmail Quick Reference Guide
I'm not sure if this is useful to anyone. Except for small
tangential remarks, all of this information is available
straight from the manual. Thus, I might not spend a lot of
time maintaining this. (Feel free to make changes to your own
copy. Send me diffs. Thanks.) If there's sufficient interest,
I may generate a PostScript rendering or something --
mail me your comments!
This Quick Reference is a companion document to the
Procmail FAQ
which is available from
http://www.iki.fi/era/procmail/mini-faq.html
and a number of
mirrors.
There is also a
link collection
with pointers to several good introductory documents
and a whole slew of other interesting stuff.
This version should be reasonably accurate for version 3.11pre7.
Bug fixes and new features in newer versions have not yet been
incorporated, sorry. (Feel free to volunteer ...)
This Lynx-friendly rendering of the Quick Reference
was kindly contributed by
Holger Wahlen. Thanks!
My original tables rendering is not available on-line anymore.
Disclaimers and Assorted Remarks
A lot of Procmail's defaults can conveniently be changed with
compile-time options. Your local default values may vary from
what is listed here; your local documentation will contain the
actual defaults used by your Procmail (unless someone foolishly
recompiled the Procmail binary but didn't remake the manuals
at the same time).
Sorely missing from this compilation are the options you can pass
to Procmail (not sure if anybody knows what they do :-)
and the signals. These are described in the manual.
While other parts of the manual are obviously duplicated here,
you should not simply skip the manuals.
At the risk of stating the obvious, some of the stuff in the
manuals is only in the manuals, and some of it is important.
(Unfortunately, it turns out that some of the stuff here is not
in the manuals. Perhaps this can change.)
Bet you thought this is where I was going to say,
"if you lose mail, it's not my fault".
Well, it isn't.
And, this is copyrighted material and so on.
-
Comments
-
-
# comment ...
-
Older versions are a bit picky about where they accept
comments and whitespace. Never put a comment on the same line
as a regular expression.
-
Assignments
-
Variable names are customarily upper case. Procmail's
built-in pseudovariables are presented
below.
-
VAR1=value VAR2="other value"
-
There can be many assignments on the same line.
If the value contains spaces, you need to use single or double quotes.
-
VAR
-
The same as
VAR=
or VAR=""
.
A lone token on a line is often a mistake; a good lint
should warn you about this.
-
Recipes
-
recipes consist of three parts that are explained in detail below:
-
Colon line
(in its simplest form just
:0
)
-
Conditions
(optional -- leave out to do actions unconditionally)
-
Action line
-
Note that there must be exactly one colon line for each
action line, and exactly one action line for each colon line.
If you want more than one action, group them under
a set of
braces.
-
Substitutions
-
Literal elements can be replaced with variable substitutions
or command substitutions in most places.
-
$VAR
-
Substitute
$VAR
with the value of the variable VAR
.
-
You can also say
${VAR}
to make the variable's name
unambiguous (i.e. ${VAR}iable
expands to the value of
VAR
followed by the literal text "iable", whereas
$VARiable
looks for a variable called VARiable).
-
Notice that this will not happen in condition lines
unless you include the
$ modifier.
-
$\VAR
-
Substitute
$\VAR
with a version of
the variable's value where all regular expression special characters
have been backslash-escaped.
This makes the interpolated value suitable for
literal matching in condition lines.
-
Curiously, the substituted value will always begin with an
empty pair of parentheses; this is to protect against
problems with leading backslashes
in the interpolated value. (See the FAQ for details.)
-
${VAR:-value}
${VAR-value}
-
Interpolation with default value:
Substitute the expression with
the value of
VAR
if it is set,
otherwise with the literal replacement text value
.
-
VAR
is considered to be set if it has a non-null value
with ${VAR:-value}
, and merely if it has some value with
just ${VAR-value}
-
The shell's other replacement substitution mechanisms, besides
${VAR:-value}
and ${VAR:+value}
and their colonless variants,
are not understood by Procmail.
-
${VAR:+value}
${VAR+value}
-
Interpolation with alternate value:
Substitute the expression with
the literal replacement text
value
if VAR
is set,
otherwise substitute with nothing.
-
VAR
is considered to be set if it has a non-null value
with ${VAR:+value}
, and merely if it has some value with
just ${VAR+value}
-
The shell's other replacement substitution mechanisms, besides
${VAR:-value}
and ${VAR:+value}
and their colonless variants,
are not understood by Procmail.
-
`cmd1 | cmd2`
-
Substitute
`cmd1 | cmd2`
with the output of this
shell command pipeline, just like the same construct works in the
shell.
-
Notice that these are not normal apostrophes (ASCII 39) but
backticks (ASCII 96).
The "colon line" starts every recipe.
The first character is always a colon,
and the second character is the number zero.
(Other numbers are possible
but this is only useful for backwards compatibility.
See the FAQ
if you're historically inclined.)
If you wonder about locking,
the FAQ has an explanation for newbies.
-
:0
flags
-
No locking.
You don't need locking on forwarding recipes
and often not on pipelines
(except when they end up saving to a file).
-
:0
flags:
-
Let Procmail figure out lock file to use.
-
This should basically always be used when saving to a file,
either directly or via a pipeline with
>>
-
:0
flags:
lockfile
-
Name a lock file to use. Alternatively, use the
LOCKFILE
pseudovariable to create a regional lock.
-
If you're a newbie, you probably don't need named locks.
Flags affect how the following recipe is executed,
in various ways.
In the absence of any flags,
Procmail's default is as if you had used the flags Hhb
A
,
a
,
B
,
b
,
c
,
D
,
E
,
e
,
f
,
H
,
h
,
i
,
r
,
W
,
w
-
H
-
Condition lines examine the headers of the message (default).
-
B
-
Condition lines examine the body of the message (off by default).
Lone B
turns off H
;
use HB
to examine both headers and body.
Notice the difference between "scope of matching" and "scope of action."
Scope of action
-
h
-
Action line gets fed the headers of the message.
-
b
-
Action line gets fed the body of the message.
Default is both headers and body. Lone h
turns off b
and vice versa;
use hb
to explicitly turn on both.
Notice the difference between "scope of matching" and "scope of
action."
Flow control
-
c
-
Clone message and execute the action(s) in a subprocess if the
conditions match. The parent process continues with the original
message after the clone process finishes.
-
A
-
Execute this recipe if the previous recipe's conditions were met.
-
a
-
Execute this recipe if the previous recipe's conditions were met
and its action(s) were completed successfully.
-
E
-
Execute this recipe if the previous recipe's conditions were not met.
-
e
-
Execute this recipe if the previous recipe's conditions were met, but
its action(s) couldn't be completed.
Execution mode
-
f
-
Feed the message to the pipeline on the action line if
the conditions are met, and continue processing with the
output of the pipeline (replacing the original message).
-
This is called "filter mode" in the Procmail documentation;
some find this misleading, because everything Procmail does
is "filtering". Here we are talking about a filter in the
general Unix sense: think of this as if the mail message
you are processing would be piped through whatever is on
the action line before it actually gets piped on to Procmail
(or at least the rest of your
.procmailrc
.
This is of course only done if the condition(s) are satisified).
In other words, run a program which transforms its input
into something else, and use the results.
-
i
-
Suppress error checking when writing to a pipeline.
This is typically used to get rid of SIGPIPE errors
when the pipeline doesn't eat all of the input
Procmail wants to feed it.
(This is
a FAQ.)
-
r
-
Raw mode: Don't do any "fixing" of the original message
when writing it out (such as adding a final newline if the
message didn't have one originally).
-
w
-
Wait for the program in the action line to finish before
continuing. Otherwise, Procmail will spawn off the program
and leave it executing on its own.
-
W
-
Like
w
, but additionally suppresses any
"program failure" messages from the action pipeline.
Case sensitivity
Procmail normally matches without regard for case.
-
D
-
Pay attention to character case when matching: "a" is
treated as distinct from "A" and so on. Some of the special
macros are always matched case-insensitively.
If you want to execute an action unconditionally,
just leave out the condition lines completely:
# Save all remaining messages to DEFAULT
:0:
$DEFAULT
Something like this is frequently seen as the last recipe
in a complicated
brace expression,
or the last recipe in an rc
file,
to take care of all messages which haven't been filed already
by some earlier recipe.
The following informal exposition fails to fully convey
the essentially recursive definition of what is a condition.
Basically, the available modifiers can be stacked to
unlimited depths
(although you would be hard pressed to find any practical
need for more than one of each, at the most).
Tests with regular expressions
Details of procmail's regular expression syntax are presented
below.
-
*
regex
-
Test a part of the message
(usually just the headers,
in the absence of a
B
flag)
against regex.
-
*
variable ??
regex
-
Test the value of variable against
regex. Various pseudovariables are listed
below.
-
* >
number
-
True if message is bigger than number bytes.
-
* <
number
-
True if message is smaller than number bytes.
This construct was broken in versions prior to 3.11pre4.
You can mix ??
with these to compare sizes of
variables' values. (That's the number of bytes occupied by a
variable's value, not arithmetic comparison of strings
representing numbers. Use scoring for that.
Also note that this is not the number of lines
in the message, it's a raw byte count.
You can use
scoring
to count the number of lines, too.
Finally, note that <
and >
have a special meaning when used in
scoring recipes.)
Test exit code of external program
-
* ?
shell command (pipeline)
-
The program gets the current processed message as its
standard input (but is of course free to ignore it);
the condition is successful if the program returns a zero exit code.
If the command is a pipeline with several commands in it,
the exit code is whatever the last program in the pipeline
returns (at least on systems worthy of the Unix name).
-
Messages printed to standard error by the pipeline
are displayed in the log.
Negation
-
* !
condition
-
Succeeds if condition fails.
-
* $
condition
-
Subject condition to
variable and backtick substitution
before actually evaluating the condition.
In particular, this will resolve any references to variables
(
$VAR
) which will otherwise be interpreted literally
(because $ is a regular-expression character which you normally
don't want Procmail to tamper with).
Incidentally, quoted strings will also have their quotes stripped and
backticks will be evaluated, too.
(In other words, quotes have to be backslash-escaped and ordinarily
backslash-escaped literal characters need to have
their backslashes doubled.)
-
You can stack multiple
$
flags to force multiple
substitution passes.
-
* x^y
condition
-
Scoring: If the condition is true, add a number to the total score.
x is the number to add on the first match; y
influences by how much the score should be adjusted for subsequent
matches. When y is zero, only add x the first
time the condition matches. An empty condition always matches. The
final score is in the
$?
pseudovariable and the action is taken if the final score is positive.
-
There are lots of variations which depend on the values of the
parameters and the nature of the condition.
See the procmailsc(5) manual page for details and
examples.
If you want to do more than one action, you can't just stack them one
after the other, you need multiple recipes (possibly unconditional, and/or
grouped in a pair of braces) and a colon line (and optionally conditions,
of course) for each.
Also note that flags which affect the action line are not actually taking
effect until the action is actually attempted; in particular, a
c
flag
doesn't generate a clone of the message until its conditions have all been
met.
Forward to other address(es)
-
<EMAIL_ADDRESS><EMAIL_ADDRESS>addr3 ...
-
Most MTA:s should allow you to forward to more than one address.
Try with or without commas between the addresses.
(Sendmail eats both.)
-
The
!
action is functionally equivalent to
the pipeline
| $SENDMAIL "$SENDMAILFLAGS"
-
! -t
-
This special case says to read the recipient data from
the message's actual headers. Might not work with cheap
Sendmail imitations.
Feed to a shell command pipeline
-
| cmd1 foo | cmd2 -opt >>file
-
The pipeline is expected to save the message somewhere;
you can play with the recipe's flags to tell Procmail otherwise.
With >> syntax, Procmail can figure out a lock file.
(Always use locking when writing to a file.)
-
VAR=| cmd1 | cmd2 ...
-
The output of the command pipeline can be assigned to a variable.
This makes the recipe non-delivering.
-
Notice that this syntax is only allowed on the action line,
not in a plain assignment.
(Use backticks with plain assigments to achieve the same effect.)
Save to a folder
-
/path/to/filename
-
Save to a plain file; if there is no path given,
MAILDIR
is used as the directory.
-
Always use locking when writing to a
plain file (except
/dev/null
).
-
directory/.
-
Save to an MH folder. Note the trailing
/.
-
You can list several MH folders at the same time.
Only one file will actually be written, the rest will be
hard links.
-
directory/
-
Save to a directory. The trailing slash is not strictly necessary.
-
You can list several directories at the same time. Only one
file will actually be written, the rest will be hard links.
Instead of a single action line, an entire block of recipes
can be used when the condition matches:
{
# ... more recipes
}
The stuff between the braces can be any valid Procmail
construct (as in, anything mentioned in
"Top-level elements" above).
Note well that an action that is a variable assignment always
has to go inside a set of braces:
{ VAR=value }
Just VAR=value
without the braces would save to
a folder named VAR=value
. (Yes, that is a valid
file name under Unix.)
An empty set of braces is a valid action if you want a recipe to not
do anything (for example, in the "then" part of an "if-then-else"
series of recipes, perhaps) but you have to remember to put in at
least one whitespace character (tab, space, newline) between the
braces.
Literal strings
Procmail's parsing of backslashes at beginning of line is hairy.
The examples here simply avoid getting into a situation where
a regular expression starts with a backslash.
-
<moo;foo/bar:baz&qu-ux!sna@fu>
-
The literal string
<moo;foo/bar:baz&qu-ux!sna@fu>
;
note that none of the characters here need to be escaped in any fashion.
(An exclamation mark needs to be disambiguated at the beginning of
a line, though, to distinguish it from the negation operator.)
-
()\\ \[ \| \(
-
The literal string
\ [ | (
.
The empty parentheses are often necessary before a leading backslash
in order to avoid ambiguities.
-
()\[Procmail\]
-
The literal string
[Procmail]
.
This is just a corollary of the previous example.
Literal round parentheses and vertical bars also need to be escaped.
-
(moo )
-
The literal string
moo
followed by a literal space.
Trailing whitespace is usually ignored, so you have to do something
like this to explicitly tell Procmail you want a literal space.
-
Control characters
-
Procmail doesn't know about
\t
and
\n
and other such Perlisms. You can safely embed
any sort of bare control character other than newline in
Procmail recipes, though.
Anchoring
Without anchoring, Procmail doesn't look at the context of
the match. For instance, [abcd]*
matches the
string "zzzz" (because "zzzz" does indeed contain "zero or
more" of, well, anything), but ^[abcd]*$
doesn't.
With the anchors, you get to say the matching line mustn't
contain anything else besides zero or more of "a", "b", "c",
and/or "d".
-
^
-
Beginning of line.
-
$
-
End of line.
-
^^
-
Beginning or end of string (i.e., of the search space).
To say the full header of a message mustn't contain anything
except a
From:
header line, for example, you'd say
^^From:.*^^
.
Alternation
-
bar|moo
-
Either "bar" or "moo".
Obviously you could have more complicated regular expressions
on either side of the alternation bar.
-
[abcd]
-
Any of the characters inside the brackets.
This is called a character class.
-
[]()[]
-
Tricky example: A character class naming any one of the
characters
] ( ) [
. Note that you don't need
backslash escapes inside a character class.
-
[^abcd]
-
Complement a class: This matches any one character except
(newline or) a, b, c, or d
-
[a-z]
-
Character range: this matches any one character in the class
consisting of all the characters between a and z, inclusive.
-
Recall that Procmail is normally not paying attention to
character case, so this matches A through Z, too
(unless you use the
D flag
to prevent that).
-
[^][^()-]
-
Trick example: character class which matches any one character except
close square bracket (ASCII code 93),
open square bracket (ASCII code 91),
caret (^), round parentheses,
or minus (-).
-
If you want to include a literal minus in a character class,
it has to be the first character in that class
(after any
^
class negation operator)
or the last character in that class.
-
If you want to include a literal closing bracket in a
character class, it has to be the first character in that class
(after any
^
class negation operator).
-
[class]
-
Trick example: This is identical to the class
[acls]
, i.e. it matches any one
of the characters inside the brackets, but only
once (regardless of how many times you put it
in the brackets).
-
This is often hard for newbies.
Wildcards
-
.
-
Any single character, except newline.
Repetition
Notably absent is the {m,n}
construct found in
many modern extended regular expression implementations.
-
o*
-
Zero or more o:s (i.e., "" or "o" or "oo" or "ooo" or "oooo" or ...)
-
o+
-
One or more o:s (i.e., "o" or "oo" or "ooo" or "oooo" or...)
-
o?
-
Zero or one o:s (i.e., "" or "o")
-
[abcd]*
-
Any string with zero or more a:s, b:s, c:s, and/or d:s
(i.e. "", "ab", "baaa", "caddadac",...)
-
(bar|moo)*
-
Zero or more of "bar" or "moo"
(i.e. "", "moo", "bar", "moomoo", "moobar", "barmoo",
"moomoomoobar",...)
-
(bar|moo)+
-
One or more of "bar" or "moo"
(i.e. "moo", "bar", "moomoo", "moobar", "barmoo", "moomoomoobar",...)
Special Procmail constructs
-
\<
-
A shorthand for the character class
[^a-zA-Z0-9_]
except it can also match newlines.
-
This is an incompatible imitation of the "word end boundary" operator
found in some extended regular expression implementations.
For example, note that \< and \> are actually identical.
-
\>
-
A shorthand for the character class
[^a-zA-Z0-9_]
except it can also match newlines.
-
This is an incompatible imitation of the "word end boundary" operator
found in some extended regular expression implementations.
For example, note that \< and \> are actually identical.
-
\/
-
Start grabbing stuff into
MATCH.
This is a substitute for real backreferences as found in many
extended regular expression implementations. Procmail allows
for exactly one backref that remembers everything between
\/
and the end of the match;
don't try to put more than one of these in a recipe.
-
The
\/
operator changes Procmail's matching behavior
after \/
from stingy to greedy.
See the FAQ for details.
Macros
Procmail has some handy built-in shorthands which expand into
complicated regular expressions. (These are not true macros,
they expand only when used as part of a regular expression.)
-
^TO
-
This covers most headers which can carry your address in them,
such as To:, Apparently-To:, Cc:, Resent-To:, etc.
You should perhaps use
^TO_
instead.
-
Note that there is no corresponding
^FROM
macro.
-
^TO_
-
This is a better bounded version of
^TO
which unfortunately doesn't exist in older versions of
Procmail (it was introduced in version 3.11pre4). Unless
backwards compatibility is an issue, you should probably
prefer ^TO_
over ^TO
.
-
Note that there is no corresponding
^FROM_
macro.
-
^FROM_MAILER
-
This should cover most messages from mailer programs (bounces etc.).
-
^FROM_DAEMON
-
This is an expanded version of
^FROM_MAILER
which covers a broader range of machine-generated messages,
notably including most mailing lists and other (benign) bulk
e-mail.
Curiously, even those special pseudovariables which are primarily useful
for their associated side effects (LOG
, SHIFT
,
etc) can be referenced, so you can see what the last value you assigned
to them was. This is only marginally useful for most of us, but comes as
a pleasant surprise in situations where this is actually useful.
$#
,
$$
,
$-
,
$1
etc.,
$=
,
$?
,
$@
,
$_
,
B
,
COMSAT
,
DEFAULT
,
DELIVERED
,
DROPPRIVS
,
EXITCODE
,
H
,
HOST
,
INCLUDERC
,
LASTFOLDER
,
LINEBUF
,
LOCKEXT
,
LOCKFILE
,
LOCKSLEEP
,
LOCKTIMEOUT
,
LOG
,
LOGABSTRACT
,
LOGFILE
,
MAILDIR
,
MATCH
,
MSGPREFIX
,
NORESRETRY
,
ORGMAIL
,
SENDMAIL
,
SENDMAILFLAGS
,
SHELL
,
SHELLFLAGS
,
SHELLMETAS
,
SHIFT
,
SUSPEND
,
TIMEOUT
,
TRAP
,
UMASK
,
VERBOSE
Mailboxes
-
MAILDIR
-
The directory in which Procmail will be executing
and where output files will be written unless you specify
an explicit pathname.
-
In other words, assigning a directory to
MAILDIR
causes Procmail to switch its current directory.
(Assigning a nonexistent directory will produce an error message
in the log and Procmail will stay wherever it already was.
The default MAILDIR
is the value of $HOME
.)
-
MSGPREFIX
-
Base file name used when writing a message to a directory
(in a new file, one per message). The default is
msg.
(including the trailing dot; you get
files called stuff like msg.HND
where
HND
is a more or less random string tacked on to
make a unique file name).
-
MH files have their own naming convention.
-
DEFAULT
-
The default mailbox where mail will be written
unless some recipe directs Procmail to save it
elsewhere.
(You shouldn't normally need to fiddle with this.)
-
ORGMAIL
-
If
DEFAULT
cannot be written to, Procmail tries the file name this variable points
to as a last resort.
(You shouldn't fiddle with this unless you think
you know what you are doing.)
Programs to use
Procmail has reasonable defaults written in at compile time.
Mostly these shouldn't need to be changed.
-
SHELL
-
Which shell to use when spawning external programs. This
should always explicitly be set to point to a
sh
-compatible shell. If your login shell is a
csh
derivative, you need to set this
to /bin/sh
.
(SHELLMETAS
determines when exactly a shell is thought to be needed.)
-
SHELLFLAGS
-
Options used when starting a shell.
-
SENDMAIL
-
Where to find Sendmail on this system.
(Usually not to be fiddled with.)
-
SENDMAILFLAGS
-
Options used when starting a sendmail.
System interaction
-
UMASK
-
What mode to give created files.
man umask
for details.
-
SHELLMETAS
-
If a shell pipeline contains any character in
SHELLMETAS
,
a shell is used to run the pipeline, on the theory that the command
is too complicated for Procmail to parse. If the command line doesn't
really need to get parsed by the shell, temporarily set
SHELLMETAS
to something else (but do save the old value)
before the recipe.
-
TRAP
-
A shell snippet to execute after delivery.
-
EXITCODE
-
What return code to pass back to the calling program.
Sendmail, for example, pays a lot of attention to the exit code.
This can be used to control, e.g., what kind of bounce message
exactly Sendmail generates when a message can't be delivered.
-
The exit code of a program called up by Procmail is in
$?
Logging
-
LOGFILE
-
Where Procmail should write its log. If this is unset,
logging messages go to standard error (and are neither saved
anywhere nor seen by anyone, except when you run Procmail
interactively).
-
LOG
-
Assigning something to this variable writes out the
assigned value to the
LOGFILE
.
-
Often, you want to include a final newline in the
string you log:
LOG="Moo!
"
(Yes, that's LOG=
,
open quote, text, newline, closing quote.)
-
VERBOSE
-
Set to
yes
to get very detailed logging.
-
LOGABSTRACT
-
Which events exactly get logged. Set to
all
to have every delivery logged.
This is
slightly broken in 3.11pre7.
-
COMSAT
-
Controls what kind of
comsat
(8) notices
Procmail generates, if any.
Procmail's state
-
HOST
-
Which host we're on. Set to a bogus value to terminate
the present toplevel
.rc
file immediately
(meaning if you are in a file
INCLUDERC=ed
from .procmailrc
, both the current file
and .procmailrc
are skipped. If there are
other file name arguments passed to Procmail on the
command line, those will still be executed).
-
DELIVERED
-
If the current message was already delivered, this is set to
yes
.
You can set it to yes
to make Procmail pretend it was.
-
LASTFOLDER
-
Where the current message was last saved (folder or command).
-
MATCH
-
Whatever the latest
\/
operator
grabbed.
-
$=
-
Whatever the result of the latest
scoring recipe
was.
-
$1
,
$2
, ...; $@
; $#
-
Procmail's command-line arguments, like in the shell:
$1
is the first command-line argument, etc.;
$@
contains all arguments, and
$#
contains the number of arguments.
-
See also the
SHIFT
pseudovariable.
-
$$
-
The current Procmail's PID.
This is the same as in the shell.
-
$?
-
The exit code of the previous shell command.
This is the same as in the shell.
-
$_
-
The name of the current
rcfile
.
-
$-
-
An alias for
LASTFOLDER
Note that $=
and $@
can't be used directly;
you have to assign the value to another variable
before it can be used for anything useful.
Message contents
-
H
-
The headers of the processed message.
-
B
-
The body of the processed message.
These are primarily useful for constrained conditions such as
H ??
regex
or
B >
number
when the recipe has a
H
or B
flag
that restricts conditions to the other part of the message. Use
HB
or BH
to examine both headers
and body.
Locking
-
LOCKFILE
-
Assigning to this variable creates a regional lock file which endures
until
LOCKFILE
is assigned to again (just
LOCKFILE
assigns the empty string and removes any lock).
-
LOCKEXT
-
The file name extension used when creating a lock file.
All the programs which have to share a lock obviously need to
agree on what extension to use. The default,
.lock
,
is usually fine and shouldn't be changed unless you have special
needs.
-
LOCKSLEEP
-
When Procmail wants to lock a file which is already locked,
it goes to sleep and wakes up and tries again after
LOCKSLEEP
seconds.
-
LOCKTIMEOUT
-
How long Procmail must wait in vain before it is allowed to decide
the existing lock on a file must have been stale, and proceed to
break the lock.
Error handling
-
TIMEOUT
-
How long to wait for a child before giving up on it.
-
NORESRETRY
-
How many times to wait for a serious resource shortage condition
to, uh, just go away. Default is try four times before bouncing
a message as undeliverable.
-
SUSPEND
-
How long to wait between
NORESRETRY
retries.
Default is 16 seconds.
Miscellaneous
-
LINEBUF
-
How long recipe lines Procmail is prepared to cope with.
If you need to process really big regular expressions or
grab lots of data into
MATCH
, you'll need to
increase this.
-
Note that exceeding
LINEBUF
can make Procmail crash.
(The manual blandly states that "behavior is undefined"
but we all know what that means in practice!)
-
SHIFT
-
You can shift down Procmail's command line arguments
(much like the shell builtin
shift
)
by assigning a positive number to this pseudovariable.
-
INCLUDERC
-
Assigning a file name to this variable will cause
Procmail to load that file and start processing the recipes
in it, like a subroutine. When the included file is
processed, Procmail continues in the present file where it
left off.
-
DROPPRIVS
-
When Procmail is executing as setuid or setgid, setting
this to
yes
will make it drop all its special
privileges.
Random notes
The plural of "recipe" is "recipes".
Both forms have only one occurrence of the letter i.
$Id: quickref.prep,v 2.27 1999/11/28 17:27:31 era Exp $


Deprecated APIs
This documentation lists APIs deprecated in the v3.x.x.
As we guarantee API compatibility in the v3.x.x, those API won’t disappear until we switch to a v4.x.x version.
You will find here which APIs are deprecated, why, and depending on the concerned API, how to replace it.
Fullscreen APIs
All fullscreen APIs have been deprecated, namely:
- the
isFullscreen
method - the
setFullscreen
method - the
exitFullscreen
method - the
fullscreenChange
event
This is because of several things:
-
fullscreen management has now become a lot more complex with features such as advanced subtitles management, were the text track HTMLElement is controlled by the application.
-
most application developpers also wants to put their own controls into fullscreen mode. Those APIs only put the media element into fullscreen mode and not any other element. This can be misleading.
The fullscreen logic should now be entirely on the application-side. Replacement code is provided for each of those APIs below.
Image (BIF) APIs
The following properties methods and events have been deprecated:
- the
imageTrackUpdate
event - the
getImageTrackData
method - the
supplementaryImageTracks
loadVideo option
This is because most code linked to image management will be moved outside the RxPlayer. Doing that will both be more flexible for users and much easier to maintain for us (albeit with a small time of transition for the application).
You can replace those API by this new exported function: parseBifThumbnails.
To give more details about why those APIs have been deprecated, there are multiple reasons:
- How it should be specified for live contents of for multi-Period DASH contents is not clear enough.
- Integrating it in the RxPlayer’s API means that it had to take multiple choices that we prefer to let to the application: whether to retry the request if the it fails or if it is unavailable, whether to do the request at all for users with a low bitrate…
- The task of displaying those thumbnails is ultimately on the UI-side (the part that know where the user wants to seek)
- The biggest part of the code related to it was a simple BIF parser, that can easily be re-implemented by any application.
RxPlayer Methods
The following RxPlayer methods are deprecated.
getManifest
getManifest
returns our internal representation we have of a given “manifest”
document.
Though it was first exposed to allow users to have access to more precize information on the current content, this method also limited us on the possible evolutions we could do, as changing what this function returns would mean breaking the API.
We also realized that that method was not used for now by the implementation we know of.
For now, we decided we will simply remove that API in the next major version. If that’s a problem for you, please open an issue.
getCurrentAdaptations
getCurrentAdaptations
returns an object describing each tracks available for
the current Period in the current content.
Like getManifest
, we found that this API was not much used and limited us on
the possible evolutions we can do on the RxPlayer.
Again like getManifest
, we plan to remove that API completely without
replacing it.
If that’s a problem for you, please open an issue.
getCurrentRepresentations
getCurrentRepresentations
returns an object describing each “qualities”
available in the current chosen tracks.
Exactly like getCurrentAdaptations
and getManifest
, we found that this API:
- was not used as far as we know
- limited the evolutions we could do on the RxPlayer’s code without breaking the API.
We thus plan to remove that API completely without replacing it. If that’s a problem for you, please open an issue.
getNativeTextTrack
getNativeTextTrack
returned the first TextTrack
element attached to the
media element or null
if it did not exist.
This API was originally created to allow users to manipulate the TextTrack
element themselves. For example, to “catch” cues as they appear and display them
differently.
What changed is that we now have two text track modes:
html
, which allow advanced subtitle managementnative
, the old mode, which display subtitles natively through aTextTrack
element.
This API will only return an element for the native
mode, but none for the
html
mode because its element is not attached to the media element.
We heavily insist on people wanting advanced usecases to use the html
mode, as
many formatting options do not work in native
mode.
As we considered that getNativeTextTrack
API was more confusing than it was
helpful in our current API, we decided to deprecate it. Do not hesitate to open
an issue if you use this API.
isFullscreen
isFullscreen
has been deprecated as it is part of our Fullscreen APIs, see
the related chapter for more information.
isFullscreen
just checked that ANY element was fullscreen. As such, it can
easily be replace for the majority of browsers with the following code:
function isFullscreen() {
return !!(
document.fullscreenElement ||
document.mozFullScreenElement ||
document.webkitFullscreenElement ||
document.msFullscreenElement
);
}
setFullscreen
setFullscreen
has been deprecated as it is part of our Fullscreen APIs, see
the related chapter for more information.
setFullscreen
allowed to set the media element in fullscreen mode (or exit
fullscreen mode, if false
was given as argument).
If you want to just put the media element on fullscreen mode, you can use the following code:
function setFullscreen(goFull) {
if (goFull === "false") {
exitFullscreen();
return;
}
if (isFullscreen()) { // see code above
return;
}
const mediaElement = player.getVideoElement();
if (!mediaElement) {
throw new Error("No media element");
}
if (mediaElement.requestFullscreen) {
mediaElement.requestFullscreen();
} else if (mediaElement.msRequestFullscreen) {
mediaElement.msRequestFullscreen();
} else if (mediaElement.mozRequestFullScreen) {
mediaElement.mozRequestFullScreen();
} else if (mediaElement.webkitRequestFullscreen) {
mediaElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
}
}
Please consider however that this function will only put the media element in full screen mode, without the eventual controls and HTML text tracks you might also want to set in fullscreen. The code is easily adaptable however to put your own element into fullscreen mode instead.
exitFullscreen
exitFullscreen
has been deprecated as it is part of our Fullscreen APIs, see
the related chapter for more information.
exitFullscreen
just exited
any element put in fullscreen mode. As such,
its code can easily be replaced by:
function exitFullscreen() {
if (isFullscreen()) {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
}
getImageTrackData
getImageTrackData
has been deprecated like most API related to BIF thumbnail
parsing.
You can read the related chapter for more information.
You can replace this API by using the parseBifThumbnails tool.
RxPlayer Events
The following RxPlayer events has been deprecated.
nativeTextTracksChange
nativeTextTracksChange
events are deprecated. Which means they probably
won’t be sent in a v4.x.x
version.
The reasons are basically the same than for the getNativeTextTracks
method.
It should not be needed anymore as most advanced needs should be better answered
by an html
text track mode.
fullscreenChange
fullscreenChange
events have been deprecated as it is part of our Fullscreen
APIs, see the related chapter for more information.
The fullscreenChange
event was sent when the media element got in or out of
fullscreen mode, with agg boolean as a payload:
- if
true
, the element entered fullscreen mode - if
false
, the element exited fullscreen mode
This behavior can easily be recreated through the following code:
const mediaElement = player.getVideoElement();
mediaElement.addEventListener("fullscreenChange", () => {
if (isFullscreen()) { // see isFullscreen implementation above
// do things
} else {
// do other things
}
});
imageTrackUpdate
imageTrackUpdate
events have been deprecated like most API related to BIF
thumbnail parsing.
You can read the related chapter for more information.
You can replace this API by using the parseBifThumbnails tool.
loadVideo options
The following loadVideo options are deprecated.
defaultAudioTrack
The preferredAudioTracks
loadVideo
option is now the preferred
(no pun intended) solution to set the default audio track.
This new option allows to handle much more complex use cases and can even be
updated at any time through the setPreferredAudioTracks
method.
How to replace that option
It is very easy to replace defaultAudioTrack
by preferredAudioTracks
.
For example, if you want to have a default french audio language, you probably previously did:
player.loadVideo({
url: myURL,
transport: myTransport,
defaultAudioTrack: { language: "fra", audioDescription: false },
// or just `defaultAudioTrack: "fra"`, both are equivalent
})
Now you will have to set it through an array either when creating a new RxPlayer:
const player = new RxPlayer({
preferredAudioTracks: [{ language: "fra", audioDescription: false }],
})
Or at any time, through the setPreferredAudioTracks
method:
player.setPreferredAudioTracks([{ language: "fra", audioDescription: false }]);
defaultTextTrack
defaultTextTrack
is replaced by the preferredTextTracks
constructor
option for the same reason
than defaultAudioTrack
.
How to replace that option
It is very easy to replace defaultTextTrack
by preferredTextTracks
.
For example, if you want to have a default swedish subtitle language, you probably previously did:
player.loadVideo({
url: myURL,
transport: myTransport,
defaultTextTrack: { language: "swe", closedCaption: false },
// or just `defaultTextTrack: "swe"`, both are equivalent
})
Now you will have to set it through an array either when creating a new RxPlayer:
const player = new RxPlayer({
preferredTextTracks: [{ language: "swe", closedCaption: false }],
})
Or at any time, through the setPreferredTextTracks
method:
player.setPreferredTextTracks([{ language: "fra", closedCaption: false }]);
supplementaryTextTracks
The supplementaryTextTracks
has been deprecated for multiple reasons:
-
The main reason is that the behavior of this API is not defined for multi-Period DASH contents (nor for MetaPlaylist contents): Should we only add the subtitles for the first Period or should it be for every Period? How to define a different subtitles track for the first and for the second Period?
Adding an external tool much less coupled to the RxPlayer move those questions entirely to the application, which should know more than us what to do in those different cases.
-
Its API was a little arcane because we had to make it compatible with every possible type of contents (i.e. DASH, Smooth, MetaPlaylist etc.) out there.
-
It did not work for Directfile contents yet. Although we could have made it compatible with them, we thought that this was the occasion to define a better API to replace it.
-
Its behavior was more complex that you would initially think of. For example, we could have to re-download multiple times the same subtitles file if manual garbage collecting was enabled.
-
All usages of that API that we know of were for Smooth or DASH VoD contents which sadly just omitted those subtitles tracks in their Manifest. The true “clean” way to fix the problem in that case is to do it at the source: the content. In this case, fixing it on the player-side should only be a temporary work-around (don’t be scared, we still have an API replacement).
The new TextTrackRenderer
tool which replace it is much more straightforward.
As an external tool which just reads and renders already-downloaded text
subtitles, its API and the extent of what it does should be much more simple.
It’s also compatible with any type of contents, even when playing through an other player.
How to replace that option
Every supplementaryTextTracks
feature can be replaced by the
TextTrackRenderer
tool.
Please bear in mind however that they are two completely different APIs, doing
the transition might take some time.
The TextTrackRenderer
tool is documented here.
supplementaryImageTracks
The supplementaryImageTracks
events have been deprecated like most API related
to BIF thumbnail parsing.
You can read the related chapter for more information.
You can replace this API by using the parseBifThumbnails tool.
hideNativeSubtitle
The hideNativeSubtitle
option is deprecated and won’t be replaced.
This is because it was added at a time when our text track API was much less advanced. Some applications wanted to handle subtitles themselves and thus hid the true “native” subtitles to display them themselves in a better way.
However, this API seems to not be used anymore. Please open an issue if you need it.
RxPlayer constructor options
The following RxPlayer constructor options are deprecated.
throttleWhenHidden
throttleWhenHidden
has been deprecated as video visibility relies only on
page visibility API and document hiddenness.
A video should be visible if the Picture-In-Picture mode is activated, even
if the hidden
attribute of document
is set to true
.
throttleVideoBitrateWhenHidden
relies on both and can be used like this :
const rxPlayer = new RxPlayer({
// ... RxPlayer options
// throttleWhenHidden: true [deprecated]
throttleVideoBitrateWhenHidden: true,
});
Other properties
Some very specific properties from various methods are deprecated. You will find them here.
Manifest
The adaptations
property returned by the Manifest
object you can obtain
through the getManifest
call is deprecated.
This corresponds to the adaptations
property of the first element in the
periods
object from the same Manifest
object, so it’s very easy to
replace:
const manifest = player.getManifest();
if (manifest && manifest.periods.length) {
console.log(manifest.adaptations === manifest.periods[0].adaptations); // true
}
Smooth
Setting a *.wsx
, a *.ism
or a *.isml
URL as an url
property in
loadVideo
is now deprecated when we’re talking about a Smooth Streaming
content.
We recommend to only set a Manifest URL in that property when the transport is
equal to smooth
.
NetworkError
The xhr
property from a NetworkError
is deprecated.
This is to prepare the support of low-latency streaming, with
CMAF,
where the fetch
API has to be used instead of an XMLHttpRequest
.
We recommend to not rely on this property anymore. You still should have access
to the status
and url
properties.


 We have a brand new renovated space that is open to everyone. Keep scrolling to see how our space will be able to help you. We look forward to seeing you at Tribble Palace.
Developers
- High Speed Internet
- On site coffee counter
- Quality printers
Artist
- Communal work areas
- Yoga on select days
- Creative parties once a month
Counselor
- Private offices
- Office supplies
- Fax machines
Don't see your industry listed?
Please contact us to see how Tribble Palace can fill your needs.


Instructions:
Use Insertion Sort to sort the table given below in ascending order. Click on an item to select it and copy its value to another position by clicking again.
temp


Directives list
ng-if
no additional requirements
tb-tooltip
require jQuery, Bootstrap Tooltips component
ui-alerts
no additional requirements
ui-checkbox
no additional requirements
ui-checkboxgroup
no additional requirements
ui-conditional-attributes
no additional requirements
ui-datetime
require jQuery, jQuery UI Datepicker widget
ui-equal-to
no additional requirements
ui-grid
no additional requirements
ui-isolated-form
no additional requirements
ui-length-limit
AngularJS 1.0.3
ui-multicombo
no additional requirements
ui-pagination
no additional requirements
ui-rate
require jQuery
ui-responsive-width
require jQuery
ui-source
require google-code-prettify
Other
Validation examples
Common resolve for all routes
Promises examples + unit-tests
OUTDATED: Example of AngularJS project architecture
Angular2 project architecture experiments


© 2002-2021
Encyclopaedia Metallum
Best viewed
without Internet Explorer,
in 1280 x 960 resolution
or higher.
| 1. | Scavenger of Human Sorrow | 06:54 | Show lyrics |
| (loading lyrics...) | |||
| 2. | Bite the Pain | 04:30 | Show lyrics |
| (loading lyrics...) | |||
| 3. | Spirit Crusher | 06:45 | Show lyrics |
| (loading lyrics...) | |||
| 4. | Story to Tell | 06:34 | Show lyrics |
| (loading lyrics...) | |||
| 5. | Flesh and the Power It Holds | 08:26 | Show lyrics |
| (loading lyrics...) | |||
| 6. | Voice of the Soul | 03:43 | instrumental |
| (loading lyrics...) | |||
| 7. | To Forgive Is to Suffer | 05:55 | Show lyrics |
| (loading lyrics...) | |||
| 8. | A Moment of Clarity | 07:23 | Show lyrics |
| (loading lyrics...) | |||
| 9. | Painkiller (Judas Priest cover) | 06:03 | Show lyrics |
| (loading lyrics...) | |||
| 56:13 |
| Band members | |
| Chuck Schuldiner (R.I.P. 2001) | Guitars, Vocals, Songwriting, Lyrics |
| Shannon Hamm | Guitars |
| Scott Clendenin (R.I.P. 2015) | Bass |
| Richard Christy | Drums |
| Miscellaneous staff | |
| Jim Morris | Producer, Engineering, Mixing, Mastering |
| Alex McKnight | Photography (band) |
| Chuck Schuldiner (R.I.P. 2001) | Producer |
| Maria Abril | Art direction, Design |
| Gabe Mera | Art direction, Design |
| Travis Smith | Cover art |
| Chuck Schuldiner (R.I.P. 2001) | Guitars, Vocals, Songwriting, Lyrics |
| Shannon Hamm | Guitars |
| Scott Clendenin (R.I.P. 2015) | Bass |
| Richard Christy | Drums |
| Jim Morris | Producer, Engineering, Mixing, Mastering |
| Alex McKnight | Photography (band) |
| Chuck Schuldiner (R.I.P. 2001) | Producer |
| Maria Abril | Art direction, Design |
| Gabe Mera | Art direction, Design |
| Travis Smith | Cover art |
| The Sound Of Perfection | 100% | Hames_Jetfield | February 6th, 2021 | |
| They Went Out With A Bang | 80% | DanielG06 | January 3rd, 2021 | |
| A waste of talent | 50% | Gas_Snake | August 3rd, 2020 | |
| The Flaws of Perseverance | 62% | Mdrummer24 | February 29th, 2020 | |
| A Masterpiece but with... | 85% | deathvomit70 | August 29th, 2019 | |
| Death's worst album | 76% | Iron Wizard | September 17th, 2017 | |
| Beautiful, Stunning,... | 100% | WoodlandsThrasher | May 10th, 2017 | |
| The Sound of Perseverance | 100% | Man17Xa | March 8th, 2017 | |
| Scavenger Of Human... | 95% | Caleb9000 | February 2nd, 2016 | |
| Death's Finest Moment | 100% | TimJohns | November 19th, 2015 | |
| The Sound of Failure | 3% | Napalm_Satan | October 21st, 2015 | |
| GROUNDBREAKING AND TIMELESS | 100% | descant89 | March 29th, 2015 | |
| Among the best | 100% | Superreallycool | October 7th, 2014 | |
| A fitting end to a perfect... | 94% | psychosisholocausto | February 23rd, 2013 | |
| Schuldiner never... | 95% | 606thecliff | October 1st, 2012 | |
| The nadir | 8% | RageW | August 3rd, 2012 | |
| The sounds of a... | 88% | hells_unicorn | December 30th, 2011 | |
| The sound of interference | 52% | autothrall | May 11th, 2011 | |
| Death - The Sound of... | 95% | ThrashManiacAYD | March 1st, 2011 | |
| The Sound of Outstanding... | 94% | OshKosh | September 12th, 2010 | |
| Not bad... | 78% | Cryptaria | August 30th, 2010 | |
| Death - The Sound of... | 90% | Orbitball | March 25th, 2010 | |
| Almost... but not quite | 88% | JamesIII | March 3rd, 2010 | |
| Christianity and AIDS | 5% | Kruel | July 24th, 2009 | |
| Virtuoso of Death | 99% | Ogremace | October 22nd, 2008 | |
| Sweet Jesus, What An Album... | 89% | Akerfeldt_Fanboi | September 23rd, 2008 | |
| Just missed the mark..... | 84% | BastardHead | March 24th, 2008 | |
| mostly wank | 42% | super_bum | October 6th, 2006 | |
| Oh, the hornets nest THIS... | 88% | Vic | August 5th, 2002 |
Music by Chuck Schuldiner.
Logo redesigned by Strain.
Some of the songs on The Sound of Perseverance were originally going to appear on the first Control Denied album. When Death was signed to Nuclear
Blast Chuck agreed to make one last Death album before moving forward with Control Denied.
Japanese version released by Victor.
Recording information:
Produced at Morrisound Studios (Tampa, Florida).
Identifiers:
Barcode:<PHONE_NUMBER>21
Matrix: DOCdata Germany NB 0337-2
Mastering SID Code: IFPI L357
Mould SID Code: IFPI 52**
Label-Code: LC 7027
Rights Society: GEMA
| Added by: (Unknown user) | Modified by: AndromedaVessel |
| Added on: N/A | Last modified on: 2020-06-30 22:58:00 |


Sample Scripts
Card payment simple
Card payment with customer vault
Direct debit purchase
Direct debit standalone
ThreeD secure
Creation Merchant Account
Creation New User
Add an Address
Create a Business Owner
Add a Business Owner Address
Add a Business Owner Government ID
Add a Merchant Bank Account
Add a Sub Merchant Bank Account
Accept Our Terms and Conditions
Activate Merchant Account
Creation Merchant Sub Account
ThreeD secure V2


--- layout: page title: About header-img: "img/about-bg.png" ---
I live in the digital customer experience, eCommerce, and process improvement world; solving problems through technology and improved process.


Class OVRGL
- java.lang.Object
-
- org.lwjgl.ovr.OVRGL
-
public class OVRGL extends java.lang.Object
Native bindings to libOVR, using the Oculus SDK C API.This class contains OpenGL specific functionality.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static int
ovr_CreateMirrorTextureGL(long session, OVRMirrorTextureDesc desc, PointerBuffer out_MirrorTexture)
Creates a Mirror Texture which is auto-refreshed to mirror Rift contents produced by this application.static int
ovr_CreateTextureSwapChainGL(long session, OVRTextureSwapChainDesc desc, PointerBuffer out_TextureSwapChain)
Creates a TextureSwapChain suitable for use with OpenGL.static int
ovr_GetMirrorTextureBufferGL(long session, long mirrorTexture, int[] out_TexId)
Array version of:GetMirrorTextureBufferGL
static int
ovr_GetMirrorTextureBufferGL(long session, long mirrorTexture, java.nio.IntBuffer out_TexId)
Gets a the underlying buffer as a GL texture name.static int
ovr_GetTextureSwapChainBufferGL(long session, long chain, int index, int[] out_TexId)
Array version of:GetTextureSwapChainBufferGL
static int
ovr_GetTextureSwapChainBufferGL(long session, long chain, int index, java.nio.IntBuffer out_TexId)
Get a specific buffer within the chain as a GL texture name.
-
-
-
Method Detail
-
ovr_CreateTextureSwapChainGL
public static int ovr_CreateTextureSwapChainGL(long session, OVRTextureSwapChainDesc desc, PointerBuffer out_TextureSwapChain)
Creates a TextureSwapChain suitable for use with OpenGL.The format provided should be thought of as the format the distortion compositor will use when reading the contents of the texture. To that end, it is highly recommended that the application requests texture swap chain formats that are in sRGB-space (e.g.
OVR.OVR_FORMAT_R8G8B8A8_UNORM_SRGB
) as the distortion compositor does sRGB-correct rendering. Furthermore, the app should then make sure "glEnable(GL_FRAMEBUFFER_SRGB);
" is called before rendering into these textures. Even though it is not recommended, if the application would like to treat the texture as a linear format and do linear-to-gamma conversion in GLSL, then the application can avoid calling "glEnable(GL_FRAMEBUFFER_SRGB);
", but should still pass in an sRGB variant for the format. Failure to do so will cause the distortion compositor to apply incorrect gamma conversions leading to gamma-curve artifacts.- Parameters:
session
- anovrSession
previously returned byCreate
desc
- the requested texture properties. See notes for more info about texture format.out_TextureSwapChain
- returns the createdovrTextureSwapChain
, which will be valid upon a successful return value, else it will beNULL
. This texture swap chain must be eventually destroyed viaDestroyTextureSwapChain
before destroying the HMD withDestroy
.- Returns:
- an
ovrResult
indicating success or failure. In the case of failure, useGetLastErrorInfo
to get more information.
-
ovr_GetTextureSwapChainBufferGL
public static int ovr_GetTextureSwapChainBufferGL(long session, long chain, int index, java.nio.IntBuffer out_TexId)
Get a specific buffer within the chain as a GL texture name.- Parameters:
session
- anovrSession
previously returned byCreate
chain
- anovrTextureSwapChain
previously returned byCreateTextureSwapChainGL
index
- the index within the chain to retrieve. Must be between 0 and length (seeGetTextureSwapChainLength
) or may pass -1 to get the buffer at theCurrentIndex
location. (Saving a call toGetTextureSwapChainCurrentIndex
)out_TexId
- returns the GL texture object name associated with the specific index requested- Returns:
- an
ovrResult
indicating success or failure. In the case of failure, useGetLastErrorInfo
to get more information.
-
ovr_CreateMirrorTextureGL
public static int ovr_CreateMirrorTextureGL(long session, OVRMirrorTextureDesc desc, PointerBuffer out_MirrorTexture)
Creates a Mirror Texture which is auto-refreshed to mirror Rift contents produced by this application.The format provided should be thought of as the format the distortion compositor will use when writing into the mirror texture. It is highly recommended that mirror textures are requested as sRGB formats because the distortion compositor does sRGB-correct rendering. If the application requests a non-sRGB format (e.g.
R8G8B8A8_UNORM
) as the mirror texture, then the application might have to apply a manual linear-to-gamma conversion when reading from the mirror texture. Failure to do so can result in incorrect gamma conversions leading to gamma-curve artifacts and color banding.- Parameters:
session
- anovrSession
previously returned byCreate
desc
- the requested mirror texture descriptionout_MirrorTexture
- returns the createdOVRMirrorTextur
e, which will be valid upon a successful return value, else it will beNULL
. This texture must be eventually destroyed viaDestroyMirrorTexture
before destroying the HMD withDestroy
.- Returns:
- an
ovrResult
indicating success or failure. In the case of failure, useGetLastErrorInfo
to get more information.
-
ovr_GetMirrorTextureBufferGL
public static int ovr_GetMirrorTextureBufferGL(long session, long mirrorTexture, java.nio.IntBuffer out_TexId)
Gets a the underlying buffer as a GL texture name.- Parameters:
session
- anovrSession
previously returned byCreate
mirrorTexture
- anOVRMirrorTexture
previously returned byCreateMirrorTextureGL
out_TexId
- returns the GL texture object name associated with the mirror texture- Returns:
- an
ovrResult
indicating success or failure. In the case of failure, useGetLastErrorInfo
to get more information.
-
ovr_GetTextureSwapChainBufferGL
public static int ovr_GetTextureSwapChainBufferGL(long session, long chain, int index, int[] out_TexId)
Array version of:GetTextureSwapChainBufferGL
-
ovr_GetMirrorTextureBufferGL
public static int ovr_GetMirrorTextureBufferGL(long session, long mirrorTexture, int[] out_TexId)
Array version of:GetMirrorTextureBufferGL
-
-


Source code for examples.macro_model.spaces.labor_market
# Space Labor Market Class Implementation
from .market import Market
[docs]class LaborMarket(Market):
""" The Labor Market """
[docs] def update(self):
""" Labor Market updates """
self.match_bids()
print("I, the ", self.name, "space: am updating right now")
[docs] def bid_labor_demand(self):
""" A firm ask for a quantity of labor at a price """
self.match_bids()
[docs] def pay_salary(self):
""" Agent pay salaries """
# TODO: Check if duplicated
pass
[docs] def pay_wages(self):
""" Agent pay wages """
pass
[docs] def contract_gov_labor(self):
""" Government get household labor """
pass
[docs] def average_labor_price(self):
"""Labor Market answers the average labor price"""
self.avg_wage = 0.0
self.wages = 0.0
if self.has_offers():
for value_of_g, labor_offer in self.offers.items():
self.wages += labor_offer.value_of_g
self.avg_wage = self.wages / self.no_of_offers()
return self.avg_wage
else:
return 0.0


Upvote : {{quote.upvote}}
Downvote: {{quote.downvote}}
This quote was published {{quote.publishDate|dateCount}} days ago


If you are viewing this app in full screen mode, you are witnessing a Progressive Web App. This app should meet the requirements to be installed to Android devices with the Add To Home Screen feature in Chrome browsers. It also tries to register a service worker which will cache files in the browser cache for use in offline mode!


Trip details go here. -- This is the template to be used for generating list of trips in the javascript code.


---
layout: post
title: Balloon Vortex
date: '2012-09-10T07:24:00+01:00'
tags: [Balloons, Octopus, Dave Lynch, Projection, Events, Family Friendly]
tumblr_url: http://cheapjackprojects.tumblr.com/post/31265631623/last-month-worked-with-artist-dave-lynch-to-create
---
Last month worked with artist Dave Lynch to create Balloon Vortex an interactive play space using a series of fans to create a temporary vortex to drive LED embedded weather balloons around Whitehaven civic hall. A kinect tracked the objects and made projection mappings live while families were invited to customise balloons and play with the vortex system accompanied by sound workshops with Octopus.


EAST PALACE, WEST PALACE (Dong gong xi gong) (director/writer: Zhang Yuan ; screenwriter: Wang Xiaobo; cinematographer: Zhang Jian; editor: Vincent Levy; cast: Si Han (A-Lan), Hu Jun (Xiao Shi), 1997-China/France)
Reviewed by Dennis Schwartz
Independent mainland Chinese filmmaker Zhang Yuan (Mama, Beijing Bastards, Sons), a heterosexual, has made a daring gay film about a writer arrested in the Beijing park that is adjacent to the Forbidden Palace. What ensues is an engaging battle of wills to see who will succumb, the arresting police officer or the homosexual who has a crush on the officer. The film was done much like a Jean Genet psychological drama. Its title is derived from the gays who hang out in the park and amusingly refer to the public toilets located east and west of the Forbidden Palace, as East Palace, West Palace. The Chinese authorities were not pleased with this work, supposedly the first openly gay film to come out of Red China. The Film Bureau banned this independent film in China and confiscated Zhang Yuan's passport on his return from Hong Kong in 1997, which prevented him from attending a number of film festivals featuring his film.
A-Lan (Han) is an attractive, slender and effeminate young man. He is caught one night in a police raid on the park and is harassed by a rugged, macho police officer, Xiao Shi (Jun). But when he lets the writer go, A-Lan suddenly kisses him and later sends a book to him with a dedication saying -- I love you, A-Lan.  This time he is held overnight to be questioned by the bullying policeman.  He gets A-Lan to tell him his life story, but A-Lan tells it in such a way that he tries to appeal sexually to the policeman, believing that Shi is a latent homosexual.
 I come to the park to find friends. It is easy to get together here. I have many friends: The Stud, Dandy, and Lily. I am always the girl in the relationship." He goes on to tell Shi that he was once taken to a hospital in an attempt to cure him from being gay, as he was forced to watch straight sex films.
The film is noteworthy for the skilled performances by the two actors and the political message of the film, as delivered in such an oppressive climate as Red China. It is a call for gay rights and rights for the dissidents, and for the Chinese government to be more tolerant. It is a film that reveals how intolerant the government is of both gays and of independent filmmakers.
Zhang Yuan confines the film to the two actors stuck in the police station and it is only via flashback that we get to see A-Lan's life unfold. We see his first male encounter and hear about his relationship with his mother and stepfather. A-Lan never waivers from who he is, willing to accept his suffering as something that is necessary. He earns his living as a romantic-story magazine writer, making up heterosexual romances, but living for the day he can write a book to tell about being gay.
During the long interrogation, he rattles Shi's sensibilities, very much angering him as well as arousing his interest, as he wants to get Shi to question himself and discover what kind of man he is. He wants Shi to know that he loves him, but as he offers his love, Shi becomes more aggressive, calling him sick, then handcuffing him and beating him. This kind of action is symbolic of China's S & M relationship with its own people.
Even though it is a stagy film, the drama remains intense, as the explosiveness between the two keeps one glued to the final outcome, wondering how this odd relationship will work itself out. The gray-green and amber background of the park and the shadowy black shades of the public toilets, give the film a somber look. If nothing else, this is a rare glimpse at modern Red China's gay denizens, as recorded by a maverick filmmaker.
REVIEWED ON 6/28/2000 GRADE: C+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


Matthieu Boussard / Yrieix Leprince
craft ai explainable model
Contact us at<EMAIL_ADDRESS>made with by


You give
%my_name%
› *Enchant:* %my_ench%
You take
%new_name%
› *Enchant:* %my_ench%
%att_info%
Exchange cost:
%cost%


@import play.api.libs.json.JsValue
@(pubs: Array[List[Publication]])(grants: Array[List[Grant]])(patents: Array[List[Patent]])
@if(pubs.length > 0) {
Publications
@for(group <- pubs) {
@if(group != null && group.nonEmpty) {
@if(pubs.indexOf(group)==pubs.size-1) {
Possibly Irrelevant
}else{
Visualisation Group @pubs.indexOf(group)
}
| Title |
Publisher |
Year |
Authors |
Affiliation |
Citations |
Relevance |
Base Records |
@for(rec <- group) {
@rec match {
case Publication(nameSearched, affiliationSearched, title, authors, publisher, year, affiliation, citation, _) => {
| @title |
@publisher |
@if(year.isDefined){@year} |
@authors |
@affiliation |
@if(citation.isDefined){@citation} |
feedback |
@rec.origRecords.size |
}
}
}
}
}
}
@if(grants.length > 0) {
Grants
@for(group <- grants) {
@if(group != null && group.nonEmpty) {
@if(grants.indexOf(group)==grants.length-1) {
Possibly Irrelevant
}else{
Visualisation Group @grants.indexOf(group)
}
| Title |
Investigator |
Affiliation |
Agency |
Year |
Amount |
Relevance |
Base Records |
@for(rec <- group) {
@rec match {
case Grant(nameSearched, affiliationSearched, title, investigator, affiliation, agency, year, amount, _) => {
| @title |
@investigator |
@affiliation |
@agency |
@if(year.isDefined){@year} |
@if(amount.isDefined){@amount} |
feedback |
@rec.origRecords.size
|
}
}
}
}
}
}
@if(patents.length > 0) {
Patents
@for(group <- patents) {
@if(group != null && group.nonEmpty) {
@if(patents.indexOf(group)==patents.length-1) {
Possibly Irrelevant
}else{
Visualisation Group @patents.indexOf(group)
}
| Title |
Inventor |
Filed |
Issued |
Patent Number |
Asignee |
Abstract |
Relevance |
Base Records |
@for(rec <- group) {
@rec match {
case Patent(nameSearched, affiliationSearched, title, inventor, filed, issued, patentNum, asignee, description, _) => {
| @title |
@inventor |
@filed |
@issued |
@patentNum |
@asignee |
@description |
feedback |
@rec.origRecords.size |
}
}
}
}
}
}


Dev Cheat Sheet helps you do or remember programming concepts and keywords easily. It's Free and Open Source.


Triniti Schemas
../
address-field/
age-field/
country-field/
date-field/
dob-field/
document-field/
email-field/
facebook-user-field/
gender-field/
height-field/
instagram-user-field/
legal-field/
long-text-field/
number-field/
phone-field/
photo-field/
pinterest-user-field/
select-field/
sexual-orientation-field/
short-text-field/
signature-field/
skype-user-field/
snapchat-user-field/
statement-field/
tiktok-user-field/
tiktok-video-field/
twitter-user-field/
video-field/
website-field/
weight-field/
yes-no-field/
youtube-user-field/
youtube-video-field/


Chart demonstrating the use of a 3D pie layout. The "Chrome" slice has been selected, and is offset from the pie. Click on slices to select and unselect them. Note that 3D pies, while decorative, can be hard to read, and the viewing angles can make slices close to the user appear larger than they are.


The {{SITE_NAME}} Team
Please do not reply to this message; it was sent from an unmonitored email address.


Adding an Extension to FOP | print-friendly |
Overview
For documentation of standard FOP extensions, see the User FOP Extensions document.
If the default funtionality of FOP needs to be extended for some reason then you can write an extension.
There are three types of extensions possible:
- An output document extension such as the PDF bookmarks
- an instream-foreign-object extensions such as SVG
- an fo extension that creates an area in the area tree where normal xsl:fo is not possible
Adding Your Own
To add your own extension you need to do the following things.
- Write code that implements your extension functionality. The easiest place to start is by looking at the code in org.apache.fop.extension, and by looking at the examples in the contrib directory.
- Create a class that implements the org.apache.fop.fo.ElementMapping interface. ElementMapping is a hashmap of all of the elements in a particular namespace, which makes it easier for FOP to create a different object for each element. ElementMapping objects are static to save on memory. They are loaded by FOP when parsing starts to validate input.
- Create the following file: "/META-INF/services/org.apache.fop.fo.ElementMapping", which should contain the fully qualified classname of your ElementMapping implementation class.
- Create a jar file containing all of the above files.
- Create your XSL-FO file with the extra XML data embedded in the file with the correct name space. The examples for SVG and pdfoutline.fo show how this can be done. The pdf documents on the FOP site use this extension. See also Examples for more examples.
- Put your jar file in the classpath
- Run FOP using your XSL-FO file as input.


---
layout: page
title: Teaching
sidebar_link: true
order: 1
---
Fall 2023
LING 4434 / CS 4745 Computational Linguistics 2
LING 1101 Introduction to Linguistics
LING 6693 C.Psyd
CS 7794 NLP Seminar
Fall 2022
LING 4434 / CS 4745 Computational Linguistics 2
CS 4740 / LING 4744 Intro to NLP
LING 6693 C.Psyd
CS 7794 NLP Seminar
AS 1102 First Year Advising Seminar
Spring 2022
LING 7710 Computational Seminar: Chaos Theory in Computational Linguistics
LING 4424 Computational Linguistics 1
LING 6693 C.Psyd
Spring 2021
LING 7710 Computational Seminar: Meaning Unmoored
LING 6603/6604 Research Workshop
Autumn 2020
LING 4434 Computational Linguistics 2
Spring 2020
LING 4424 Computational Linguistics
LING 6603/6604 Research Workshop
Autumn 2019
LING 7710 Computational Seminar: Black Box Models of Language
LING 1100 Language, Thought, and Reality: The Ethics of Artificial Intelligence
Spring 2014
LING 3701 / PSYCH 3371 Language and the Mind
Autumn 2013
LING 3701 / PSYCH 3371 Language and the Mind


Negrino and Smith's most recent books:
JavaScript: Visual QuickStart Guide, 9th Edition
Dreamweaver CC: Visual QuickStart Guide


The function sum is a widely used function to sum up the values in a vector, data.frame. An argument na.rm
is used to ignore NA values when the vector has NA values.
The basic usage of sum()
function is written in the exercise.
# Generate a vector from 1 to 10
x <- seq(1, 10)
# Sum up the values in variable x
sum(x)
# Generate a vector that includes NA value
y <- c(seq(1,5), NA, seq(6,10))
# print y
y
# Fix the following code by using na.rm argument to remove NA when calculating sum.
z <- sum(y)
z
# Generate a vector from 1 to 10
x <- seq(1, 10)
# Sum up the values in variable x
sum(x)
# Generate a vector that includes NA value
y <- c(seq(1,5), NA, seq(6,10))
# print y
y
# Fix the following code by using na.rm argument to remove NA when calculating sum.
z <- sum(y, na.rm=TRUE)
z
msg <- "Please see that objects are well-defined and correct."
test_object("x", undefined_msg = msg, incorrect_msg = msg)
test_object("y", undefined_msg = msg, incorrect_msg = msg)
test_object("z", undefined_msg = msg, incorrect_msg = msg)
success_msg("Great! Head over to the next exercise.")


Boston
Food Establishment
Failed Inspections By Neighborhood
Neighborhoods
Boston
Back Bay
Downtown Financial Distric
Fenway/Kenmore/Aububon C
South Boston
Mission Hill
Allston
Brighton
East Boston
Roxbury
Jamaica Plain
Charlestown
Hyde Park
Roslindale
Dorchester
Mattapan


test heading h1
test heading h2
test heading h3
test normal paragraph
Created by
@font-face generator
on
CodeAndMore
based on open source tools.


So when they were old enough, she sent them out into the world to seek their fortunes.
Once upon a time, there was a little girl named Goldilocks. She went for a walk in the forest.
Once upon a time, there was a little girl who lived in a village near the forest.
Once upon a time there lived a woodcutter and his wife.
All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this.
A Shepherd Boy tended his master's Sheep near a dark forest not far from the village.
A Hare was making fun of the Tortoise one day for being so slow.


Constructor
new Cement(configuration)
Creates a new Cement instance
Parameters:
| Name | Type | Description |
|---|---|---|
configuration |
CementConfig | configuration object for instantiating a new Cement |
Properties:
| Name | Type | Description |
|---|---|---|
bricks |
Map.<CementBrick> | Map of a CementBrick |
Methods
bootstrap()
Bootstraps the cement,
should be called after all bricks are initialized
getDestinations(name, dataopt) → {Array.<Channel>}
Get publishing channels of a brick
If data is provided, get only channels where data contract is fulfilled
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
name |
String | name of the brick | |
data |
Object |
<optional> |
data to be published |
Returns:
- Type
- Array.<Channel>
publish(context)
Publish a Context using channels
Parameters:
| Name | Type | Description |
|---|---|---|
context |
Context | the context to publish |
start()
Start bricks, to use cement features
Should be called after the cement is bootstrapped
validate(configuration)
Validate all the configuration properties
Parameters:
| Name | Type | Description |
|---|---|---|
configuration |
CementConfig | configuration object for instantiating a new Cement |