Hello Dear, This mail might come to you as a surprise and the temptation to ignore it as unserious could come into your mind but please consider it a divine wish and accept it with a deep sense of humility I am Mr Hassan Sass, the manager incharge of Telex/computing department of Bank of Africa (B.O.A)Ouagadougou Burkina Faso in West Africa, with due respect and Regard,I have decided to contact you on a business transaction that will be very beneficial to both of us at the end of the transaction. During our investigation and auditing in this Bank, my department came across a very huge sum of money belonging to one of our deceased customer who died on July 30th 2000 of a ghastly motor accident and the fund has been dormant in his account with this bank without any claim of the fund in our Custody either from his family or relation before our discovery to this development. Although personally, I keep this information secret within I and to enable the whole plans and idea be Profitable and successful during the time of execution,the said amount is U.S $15.m(fifteen million, United States dollars),as it may interest you to know, I got your impressive information on my search for a relaible partner,I contacted you to be my partner and person to be reliable and capable to champion a business of such magnitude without any problem. Meanwhile all The whole arrangement to put claim over this fund as the bonafide next of kin to the deceased, get the required approval And transfer this money to a foreign account has been put in Place and directives and needed information will be relayed to you as soon as you indicate your interest and willingness to assist me and also benefit your self to this great business opportunity,In fact I could have done this deal alone but because of my position in this country as a civil servant and we are not allowed to operate a foreign account and would eventually raise eye brow on my side during the time of transfer because I work in this bank. This is the actual reason why it will require a second party or fellow who will forward claims As the next of kin with affidavit of trust of oath to the bank and also present a foreign account where he will need the money to be re-transferred into on his request as it may be after due Verification and clarification by the correspondent branch of The bank where the whole money will be remitted from to your Own designation bank account. I will not fail to inform you that this transaction is 100% risk free,on smooth conclusion of this transaction, you will be entitled to 30% of the total sum as gratification, while 5% will be set aside to take care of expenses that may arise during the time of transfer, while 65% will be for me , please you have been advised to keep "Top Secret" as I am still in service and intend to retire from service after we conclude this deal with you,I will be monitoring the whole situation here in this bank Until you confirm the money in your account,and ask us to come Down to your country for subsequent sharing of the fund According to percentages previously indicated and further Investment, either in your country or any country you advice us to invest in and all other necessary vital information will be send to you when I hear from you. I suggest you get back to me As soon as possible and also include your personal phone/mobile And fax numbers for easy communication. Yours faithfully, Mr Hassan Sass, THE MANAGER IN CHARGE OF TELEX/COMPUTING DEPARTMENT OF BANK OF AFRICA (B.O.A) OUAGADOUGOU BURKINA-FASO. +226 76 10 72 52. _________________________________________________________________ MSN Messenger: appels gratuits de PC à PC ! http://www.msn.fr/newhotmail/Default.asp?Ath=f


Environments
This page documents the environment file format. It contains the following sections:
You can find examples of environment files in
test/spaces/
(individual sets of environment files) and
test/projects/
(more complete projects, including
environment files.)
Introduction
The environment files describe the details of a MarkLogic environment. They includes connection details, but also all the components and their details. "Component" is a generic term used here to refer to both databases and app servers.
The environment files are stored in a project in the
directory xproject/mlenvs/
. The name of the file is the name
of the environment (with the extension .json
.) For instance,
the environment "prod" is in xproject/mlenvs/prod.json
.
Some commands need an environment to operate upon (e.g. deploy
)
whilst other do not (e.g. new
.) There are 3 ways of specifying
the environment for a command to use:
- using the default environment
in
xproject/mlenvs/default.json
; typically this one only imports another one, is not checked in your source revision control, so everyone can set a different default environment - pass an environment by name, using the option
-e
; its value is used to construct a file name:xproject/mlenvs/{name}.json
- pass the path to an environment file, using the
option
-f
Overall structure
The overall structure of an environment file is like the following:
{ "mlproj": { "format": "0.1", "import": "base.json", "code": "awesome-app", "title": "Short title for the project", "desc": "Longer description of the project. You can use **Markdown**.", "srcdir": "...", "connect": { "host": "...", "user": "...", "password": "..." }, "params": { "..." }, "databases": [{ "..." }], "servers": [{ "..." }] } }
All properties are optional, except for format
, which is the
version of the file format (for now always 0.1, until it stabilizes). The
simple properties are:
code
- The code is a short code, containing only ASCII alphanumeric characters (as well as-
and _). It is typically used to refer to the project, and to build component names in a consistent way (for databases, forests and servers).title
- The title is a short, human-friendly description of the project. It can use Markdown notation (the notation used in Github).desc
- The description is a longer description of the project than the title. It can use Markdown notation.srcdir
- The source directory is the path to the directory with the sources of the project. This property is generally set automatically, when used in a standardXProject
structure, as the directorysrc/
.
It is sometimes useful to set it explicitly for either 1) represent a more complex setup, or 2) still be able to use those files with a project with another structure than the standardXProject
structure.connect
- This property contains connection information: the user name to use, its password, as well as the host where MarkLogic is installed.
These properties can also be referred to in other places, for "variable substitutions" (see the section on parameters for details on substitution.)
The code
, srcdir
, and the
three connect
properties (host, user, password) can be set with
options on the command line. The value set on the command line takes
precedence over the corresponding value in the environment file, if any,
which is convenient to use another value without modifying any file. See
the global options for details.
Parameters
The property params
is a plain JSON object for you to create
variables. Parameters are key/value pairs: they have a name (the object
property key) and a value (the corresponding object value). Values must be
strings.
Parameters can be referred to in other places of the files, by using the
${...}
notation. Anywhere in a string value, this notation is
replaced by the actual value of the parameter of that name. This is called
"variable substitution". Parameters can be "overriden" (assigned a
different value) in an importing file, or on the command line.
The notation @{...}
(with an "at" sign instead of a "dollar"
sign) do not use parameters, but values comming from "standard" properties.
You can use the following variable substitutions, referring to properties
with the same name:
@{code}
@{title}
@{desc}
@{srcdir}
@{host}
@{user}
@{password}
A typical use of @{code}
is to construct component names, and
for parameters it is to capture variable parts like port numbers:
{ "name": "@{code}-server", "type": "http", "port": "${port}" }
Imports
The value of the property import
is a path to another file to
import, relative to the current file. Usually it is simply a file name, as
they are all grouped in the same directory. Starting at one file, its
import
is resolved if any, then recursively all their imports
are resolved, to get a larger environment object.
At each step, if the imported file contains a parameter already existing in an importing file, it is "overriden" (hidden).
At each step, if the imported file contains a component (database or server) already existing in an importing file (same ID or same name), it is "merged". The properties of that component in the importing file hide the properties with the same name in the imported file.
If you want a component to entirely override one with the same name in an
imported file, use the property compose
with the value
hide
. By default it is merge
.
Let say we point to the following environment file:
{ "mlproj": { "format": "0.1", "import": "base.json", "connect": { "host": "localhost", "user": "admin", "password": "admin" }, "params": { "port": 8099 }, "servers": [{ "id": "server", "modules": { "name": "@{code}-modules" } }] } }
and the following in base.json
:
{ "mlproj": { "format": "0.1", "code": "my-app", "title": "My project", "params": { "port": 8080, "root": "/" }, "databases": [{ "id": "content", "name": "@{code}-content" }], "servers": [{ "id": "server", "name": "@{code}", "type": "http", "port": "${port}", "root": "${root}", "content": { "idref": "content" } }] } }
Then the first one is somewhat equivalent to the following file, where imports and variable substitutions have been resolved:
{ "mlproj": { "format": "0.1", "code": "my-app", "title": "My project", "connect": { "host": "localhost", "user": "admin", "password": "admin" }, "servers": [{ "name": "my-app", "type": "http", "port": "8099", "root": "/", "content": { "name": "my-app-content" }, "modules": { "name": "my-app-modules" } }] } }
Note like the properties for the server have been merged from both
files. Note as well that ${port}
is resolved to the parameter
with that name with the highest import precedence (in the importing file),
even though it is used in another file (in the imported file).
If you need to import several files, you can use an array of strings instead
of a single string as the value of import
"import": [ "one.json", "two.json", "three.json" ]
Databases
The property databases
is an array of databases. Each database
is an object that looks like the following:
{ "id": "...", "name": "...", "forests": [ "..." ], "schema": { (database object or ref) }, "security": { (database object or ref) }, "triggers": { (database object or ref) }, "indexes": { "ranges": [{ "type": "string", "name": "ape", "positions": false, "invalid": "ignore" }, { "type": "string", "name": [ "bear", "cat" ], "positions": false, "invalid": "ignore" }] }, "lexicons": { "uri": false, "collection": true } }
The id
is a unique ID used only in the environment files, to
refer to databases (e.g. from a server, to be its modules database).
The name
is the name of the database, as it will be set on
MarkLogic.
forests
describes the forests attached to the database. If it
is an array, its values must be strings, used as names for the forests. It
can also by a number (must be a positive integer then, including zero),
which gives the number of forests to attach to the database. The forest
names are then derived from the database name, by appending
-001
, -002
, etc.
schema
, security
and triggers
are
resp. the database's Schema DB, Security DB and Triggers DB. As always,
they can be either ID or name reference to an existing database description,
or be a full, embedded database object.
Range indexes can be set in the ranges
array. Each is an
object with the following properties (if there is path
it is a
path range index, if there is parent
it is an attribute range
index, and if not it is an element range index):
type
- the scalar type of the range index (int
,string
...)positions
- a boolean, whether to save or not the range value positionsinvalid
: what to do in case of invalid values:reject
orignore
colation
: the collation to use for the range indexname
: the local name of the element or attribute (only for element and attribute range indexes)namespace
: the namespace URI of the element or attribute (only for element and attribute range indexes)parent.name
: the local name of the parent element of the attribute (only for attribute range indexes)parent.namespace
: the namespace URI of the parent element of the attribute (only for attribute range indexes)path
: the path expression to use (only for path range indexes)
lexicons.uri
and lexicons.collection
set whether
to maintain resp. a URI or a collection lexicon for that database.
This is far from covering all aspects and all possible properties of databases, forests and servers. It is a work in progress. The goal is to support all properties supported by the Management API of MarkLogic. If you need one that is not supported yet, make sure to open an issue about it, so it moves to the top of the list.
Anywhere a database object is expected (to give a database its schema,
security or triggers database, or a server its content or modules database),
you can instead use a database reference. A database reference is an object
containing only one property: idref
to point to a database by
ID, or nameref
to point to a database by name:
"schema": { "nameref": "@{code}-schema" }, "security": { "idref": "security" },
Servers
The property servers
is an array of servers. Each server is an
object that looks like the following:
{ "id": "app", "name": "@{code}", "type": "http", "port": "${port}", "root": "/", "rewriter": "/plumbing/rewriter.sjs", "handler": "/plumbing/errors.sjs", "content": { (database object or ref) }, "modules": { (database object or ref) } }
The various properties are:
id
- a unique ID used only in the environment files, to refer to serversname
- the name of the server, as it will be set on MarkLogictype
- the server type (eitherhttp
,webdav
,xdbc
orodbc
)port
- the port number to use for the serverroot
- the root for modules (either on the file system, or on the modules database if it is set)rewriter
- the path to the URL rewriterhandler
- the path to the error handlercontent
andmodules
- resp. the content database and the modules database. They can be either a full-fledged database object, or a reference to an existing database description (usingidref
ornameref
)
Supported properties
All properties from the Management API are not supported yet to be represented in the environment files. Here are the lists of the supported properties, for resp. databases and servers.
These lists help identifying what is left to do on the environment file format design, giving a good idea of what is the coverage of the file format, and mapping between property names and paths in the file format. They are based on the Management API in MarkLogic 9.0 EA4.
Each entry contains the name of the property as in the Management API, and if it is supported a path-like notation of where it can be set in the environment file format.
Database properties
Supported properties for databases.
| name | path |
|---|---|
| assignment-policy | ✗ |
| attribute-value-positions | ✗ |
| collection-lexicon | lexicons.collection |
| data-encryption | ✗ |
| database-name | name |
| database-replication | ✗ |
| directory-creation | ✗ |
| element-value-positions | ✗ |
| element-word-positions | ✗ |
| element-word-query-through | ✗ |
| enabled | ✗ |
| encryption-key-id | ✗ |
| expunge-locks | ✗ |
| fast-case-sensitive-searches | searches.fast.case-sensitive |
| fast-diacritic-sensitive-searches | searches.fast.diacritic-sensitive |
| fast-element-character-searches | searches.fast.element-character |
| fast-element-phrase-searches | searches.fast.element-phrase |
| fast-element-trailing-wildcard-searches | searches.fast.element-trailing-wildcard |
| fast-element-word-searches | searches.fast.element-word |
| fast-phrase-searches | searches.fast.phrase |
| fast-reverse-searches | searches.fast.reverse |
| field | ✗ |
| field-value-positions | ✗ |
| field-value-searches | ✗ |
| forest | forests |
| format-compatibility | ✗ |
| in-memory-geospatial-region-index-size | ✗ |
| in-memory-limit | ✗ |
| in-memory-list-size | ✗ |
| in-memory-range-index-size | ✗ |
| in-memory-reverse-index-size | ✗ |
| in-memory-tree-size | ✗ |
| in-memory-triple-index-size | ✗ |
| index-detection | ✗ |
| inherit-collections | ✗ |
| inherit-permissions | ✗ |
| inherit-quality | ✗ |
| journal-count | ✗ |
| journal-size | ✗ |
| journaling | ✗ |
| language | ✗ |
| large-size-threshold | ✗ |
| locking | ✗ |
| maintain-directory-last-modified | ✗ |
| maintain-last-modified | ✗ |
| merge-max-size | ✗ |
| merge-min-ratio | ✗ |
| merge-min-size | ✗ |
| merge-priority | ✗ |
| merge-timestamp | ✗ |
| one-character-searches | ✗ |
| phrase-around | ✗ |
| phrase-through | ✗ |
| positions-list-max-size | ✗ |
| preallocate-journals | ✗ |
| preload-mapped-data | ✗ |
| preload-replica-mapped-data | ✗ |
| range-element-attribute-index | indexes.ranges[] |
| range-element-index | indexes.ranges[] |
| range-index-optimize | ✗ |
| range-path-index | indexes.ranges[] |
| rebalancer-enable | ✗ |
| rebalancer-throttle | ✗ |
| reindexer-enable | ✗ |
| reindexer-throttle | ✗ |
| reindexer-timestamp | ✗ |
| retain-until-backup | ✗ |
| retired-forest-count | ✗ |
| schema-database | schema |
| security-database | security |
| stemmed-searches | ✗ |
| tf-normalization | ✗ |
| three-character-searches | ✗ |
| three-character-word-positions | ✗ |
| trailing-wildcard-searches | ✗ |
| trailing-wildcard-word-positions | ✗ |
| triggers-database | triggers |
| triple-index | ✗ |
| triple-positions | ✗ |
| two-character-searches | ✗ |
| uri-lexicon | lexicons.uri |
| word-positions | ✗ |
| word-searches | ✗ |
Server properties
Supported properties for servers.
| name | path |
|---|---|
| address | ✗ |
| authentication | ✗ |
| backlog | ✗ |
| collation | ✗ |
| compute-content-length | ✗ |
| concurrent-request-limit | ✗ |
| content-database | ✗ |
| coordinate-system | ✗ |
| debug-allow | ✗ |
| default-error-format | ✗ |
| default-inference-size | ✗ |
| default-time-limit | ✗ |
| default-user | ✗ |
| default-xquery-version | ✗ |
| display-last-login | ✗ |
| distribute-timestamps | ✗ |
| enabled | ✗ |
| error-handler | handler |
| execute | ✗ |
| file-log-level | ✗ |
| group-name | ✗ |
| internal-security | ✗ |
| keep-alive-timeout | ✗ |
| log-errors | ✗ |
| max-inference-size | ✗ |
| max-time-limit | ✗ |
| multi-version-concurrency-control | ✗ |
| output-byte-order-mark | output.byte-order-mark |
| output-cdata-section-localname | output.cdata-section-localname |
| output-cdata-section-namespace-uri | output.cdata-section-namespace-uri |
| output-doctype-public | output.doctype-public |
| output-doctype-system | output.doctype-system |
| output-encoding | output.encoding |
| output-escape-uri-attributes | output.escape-uri-attributes |
| output-include-content-type | output.include-content-type |
| output-include-default-attributes | output.include-default-attributes |
| output-indent | output.indent |
| output-indent-tabs | output.indent-tabs |
| output-indent-untyped | output.indent-untyped |
| output-media-type | output.media-type |
| output-method | output.method |
| output-normalization-form | output.normalization-form |
| output-omit-xml-declaration | output.omit-xml-declaration |
| output-sgml-character-entities | output.sgml-character-entities |
| output-standalone | output.standalone |
| output-undeclare-prefixes | output.undeclare-prefixes |
| output-version | output.version |
| port | port |
| pre-commit-trigger-depth | ✗ |
| pre-commit-trigger-limit | ✗ |
| profile-allow | ✗ |
| request-timeout | ✗ |
| rewrite-resolves-globally | ✗ |
| root | root |
| server-name | name |
| server-type | type |
| session-timeout | ✗ |
| ssl-allow-sslv3 | ✗ |
| ssl-allow-tls | ✗ |
| ssl-ciphers | ✗ |
| ssl-disable-sslv3 | ✗ |
| ssl-disable-tlsv1 | ✗ |
| ssl-disable-tlsv1-1 | ✗ |
| ssl-disable-tlsv1-2 | ✗ |
| ssl-hostname | ✗ |
| ssl-require-client-certificate | ✗ |
| static-expires | ✗ |
| threads | ✗ |
| url-rewriter | rewriter |
| webDAV | ✗ |


{% extends "bootstrap/base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block content %}
If you don't it'll go on your permanent record!.
Copyright 2017 Freshlex, LLC


Virtual Events
Exploring the Tech World
Hosts: Bhavya Chopra, Pragya Sikka, Ria Gupta, Shubhi Singhal, Vrinda Narayan
WiT conducted a session to provide an overview of opportunities in CS and related domains, to help students explore and navigate different opportunities such as open source, competitive programming, entrepreneurship, research, and much more, during their undergraduate studies.
Generation Google Scholarship AskMeAnything
Hosts: Vrinda Narayan, Ananya Jain, Larika Sehgal
WiT conducted a webinar, followed by an AMA session for students applying to the Generation Google Scholarship. Listen to past Women Techmakers scholars Vrinda Narayan, Larika Sehgal and Ananya Jain share tips and talk about the application process.
Pursuing an MBA in the US
Host: Aman Agarwal
Aman Agarwal graduated from IIITD in 2017 and went to NYU Stern School of Business to pursue an MBA where he was one of the Berkley Scholars. Currently, he is working as an associate at a-connect in the US. He takes us through his MBA journey, gives application tips and shares his experience studying in the US.
The Google STEP Journey
Hosts: Samiya Caur, Arundhati Bhattacharya
Women In Tech, IIITD is conducting a webinar followed by an AMA session on the Google STEP internship, hosted by former STEP interns, Samiya and Arundhati. The Google STEP internship is a wonderful opportunity for students to kick-start their careers in the field of technology.
All About Fintech
Hosts: Gargi Gupta, Tushita Rathore
Get to know all about FinTech by Gargi Gupta & Tushita Rathore! This session will enlighten us about what is fintech, amazing career opportunities in this field, and a sneak peek into their journeys as well!
Career in Design
Hosts: Bhavna Nagpal, Amya Rai, Chanchal Prajapati, Karan Gupta
Women in Tech, IIITD conducted a webinar on Career in Design by our amazing alumuni as panelists! A really helpful session to clear any doubts you might have around the design field.
Applying to Tech Roles
Host: Anannya Uberoi
Here is the AMA session by Anannya Uberoi guiding through the journey of finding jobs and internships, preparing for them, and attempting interviews!
Women Techmakers Scholarship AskMeAnything Session
Hosts: Zoha Hamid, Angel Walia
Listen to past WTM scholars Zoha Hamid and Angel Walia talk all about the scholarship program in this ask my anything session.


| Suffering short-term memory loss after a head injury, Leonard Shelby embarks on a grim quest to find the lowlife who murdered his wife in this gritty, complex thriller that packs more knots than a hangman's noose. To carry out his plan, Shelby snaps Polaroids of people and places, jotting down contextual notes on the backs of photos to aid in his search and jog his memory. He even tattoos his own body in a desperate bid to remember. | |
| Genres: | Mystery, Thriller |
| Director: | Christopher Nolan |
| Writer: | Christopher Nolan, Jonathan Nolan |
Cast: | Leonard - Guy Pearce Natalie - Carrie-Anne Moss Teddy - Joe Pantoliano Burt - Mark Boone Junior Waiter - Russ Fega Leonard's Wife - Jorja Fox Sammy Jankis - Stephen Tobolowsky Mrs. Jankis - Harriet Sansom Harris Doctor - Thomas Lennon Dodd - Callum Keith Rennie Blonde - Kimberly Campbell Tattooist - Marianne Muellerleile Jimmy - Larry Holden Motel Guest - Buzz Visconti |


Thrift module: route
Constants
| Constant | Type | Value |
SERVICE_NAME | string | "RouteService" |
Service name to distinguish the route service using thrift multiprocessor feature.
|
SERVICE_VERSION | string | "1.0" |
Route service APIs version
|
ROUTE_STATE_INTERIOR | i32 | 1 |
An Interior route and default.
|
ROUTE_FLAG_ADD_OVERWRITE | i32 | 1 |
Route overwrite, for replacing existing route with new
nexthop info
|
Enumerations
Enumeration: FamilyType
Enum for indicating the interface status
af_unspec | 0 |
No family
|
af_inet | 1 |
INET Family
|
Enumeration: NextHopType
Next hop type
Enumeration: ProtocolType
Protocol type
Data structures
Union: GatewayAddress
| Key | Field | Type | Description | Requiredness | Default value |
| 1 | nexthop_ip | string | Gateway IP
| default | |
Union to provide gateway IP or mac
address for next hop address
currently only nexthop address is supported
Struct: NexthopInfo
| Key | Field | Type | Description | Requiredness | Default value |
| 1 | nexthop_address | GatewayAddress | Nexthop address
| required | |
| 2 | if_name | string | Interface name
| default | |
Route Qualified Nexthop structure
will have either gateway_ip or ethernet_mac filled.
Struct: RouteInfo
| Key | Field | Type | Description | Requiredness | Default value |
| 1 | prefix | string | Route prefix with prefix length separated by '/' example: <IP_ADDRESS>/32
| default | |
| 2 | preference | list<i32 > | Route preference value
| default | |
| 3 | metrics | list<i32 > | Metrics
| default | |
| 4 | owner | string | Route owner, default is system
| default | |
| 5 | nexthops | list<NexthopInfo > | Nexthop list.
| default | |
Route structure
Struct: RetRoutes
| Key | Field | Type | Description | Requiredness | Default value |
| 1 | status | shared.RetStatus | Error status
| default | |
| 2 | table_name | string | Route table name
| default | |
| 3 | routes | list<RouteInfo > | Routes in the table
| default | |
Struct for return values of RouteGet API
Struct: RouteConfig
| Key | Field | Type | Description | Requiredness | Default value |
| 1 | app_id | string | optional application id
| optional | |
| 2 | family_type | FamilyType | family type
| required | |
| 3 | route_prefix | string | with prefix and length prefix/length
| required | |
| 4 | next_hoptype | NextHopType | Next hop type
| optional | UNKNOWN |
| 5 | nexthops | list<NexthopInfo > | Qualified next hops
| optional | |
| 6 | route_state | i32 | Route states ROUTE_STATE_INTERIOR, ...
| optional | 1 |
| 7 | table_name | string | Table name, default is inet.0
| optional | |
| 8 | preference | list<i32 > | Preference,
| optional | |
| 9 | metric | list<i32 > | Metric
| optional | |
| 10 | protocol | ProtocolType | protocol name access/access-internal/static, default static
| optional | |
| 11 | route_flags | i32 | Route flags like ROUTE_FLAG_ADD_PROXY_ARP, ..
| optional | 1 |
Route config object used for add/delete routes.
For delete operation nexthops, route_state, protocol are not used
Services
Service: RouteService
Route Service APIs supported in JET
Function: RouteService.RouteGet
RetRoutes
RouteGet(string
app_id,
string
table_name,
string
prefix)
API to get the routes in the given or default route table.
If Table ID is 0, to get from default route table inet.0.
If prefix is given, get all the routes matching the given prefix


--- layout: post title: Milkbones date: '2013-07-15T19:42:08-04:00' tags: - poem - puppy - poetry - original - spilled ink tumblr_url: http://poetry.liabogoev.com/post/55552864334/milkbones ---
Pondering milkbones
Nosed tenderly
Nestled in mounds
Mountains, they seemed
But to him they were molehills
Milkbones might mold
Mildew and mellow
Musty and reminding
Of the time they matriculated
Under moist mounds
Maybe Bailey
Dared to hope
Instead of mourning
We’d have his milkbones
In the morning.


OECD (Code: OECD) Organisation for Economic Cooperation and Development. International organization of developed countries that promotes economic welfare. Collects data from members and others to make policy recommendations.


Guest
You are not Signed In
account_circle
Account
Light
Dark
menu
refresh
PLEASE CHECK YOUR CONNECTION!


| 058:001 Khan | : |
Indeed Allah has heard the statement of her (Khaulah bint Tha'labah) that disputes with you (O Muhammad SAW) concerning her husband (Aus bin As-Samit), and complains to Allah. And Allah hears the argument between you both. Verily, Allah is All-Hearer, All-Seer. |
| 058:001 Maulana | : |
Allah indeed has heard the plea of her who pleads with thee about her husband and complains to Allah; and Allah hears the contentions of both of you. Surely Allah is Hearing, Seeing. |
| 058:001 Pickthal | : |
Allah hath heard the saying of her that disputeth with thee (Muhammad) concerning her husband, and complaineth unto Allah. And Allah heareth your colloquy. Lo! Allah is Hearer, Knower. |
| 058:001 Rashad | : |
GOD has heard the woman who debated with you about her husband, and complained to GOD. GOD heard everything the two of you discussed. GOD is Hearer, Seer. |
| 058:001 Sarwar | : |
God has certainly heard the words of the woman who disputed with you about her husband and who (after not having received a favorable response from you) complained to God. God was listening to your argument. He is All-hearing and All-aware. |
| 058:001 Shakir | : |
Allah indeed knows the plea of her who pleads with you about her husband and complains to Allah, and Allah knows the contentions of both of you; surely Allah is Hearing, Seeing. |
| 058:001 Sherali | : |
ALLAH has, indeed, heard the talk of her who pleads with thee concerning her husband, and complains unto ALLAH. And ALLAH has heard the two of you conversing together. Verily, ALLAH is All-Hearing, All-Seeing. |
| 058:001 Yusufali | : |
Allah has indeed heard (and accepted) the statement of the woman who pleads with thee concerning her husband and carries her complaint (in prayer) to Allah: and Allah (always) hears the arguments between both sides among you: for Allah hears and sees (all things). |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > صفات الله تعالى > البصير Pillars of Islam> Islamic> Oneness of Allah> His Glory's Characteristics> All Seer الإنسان والعلاقات الاجتماعية > الأسرة > الظهار Man and The Social Relations>The Family>Az-Zihar الإنسان والعلاقات الاجتماعية > النساء > المرأة Man and The Social Relations>Women>The Woman
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


|
Class Summary |
| OAuthConsumer |
Represents an OAuth Consumer. |
| OAuthFilter |
OAuth Servlet Filter that interprets OAuth Authentication messages to set the Principal and roles
for protected resources. |
| OAuthMemoryProvider |
OAuthProvider that keeps all data in memory. |
| OAuthProviderChecker |
Used to make sure the OAuthProvider implementer does not return null values. |
| OAuthRequestToken |
Represents either an OAuth Access or Request Token. |
| OAuthServlet |
OAuth Http Servlet that handles Request Token creation and exchange for Access Tokens. |
| OAuthToken |
Represents either an OAuth Access or Request Token. |
| OAuthUtils |
|
| OAuthValidator |
OAuth Validator implementation to check OAuth Messages |
| URLUtils |
URL-encoding utility for each URL part according to the RFC specs |


Many people know the date they were born but not the actual day. This site will tell you the day of the week you were born as well as your Akan name.
Fill in your birthday and gender.


My name is Chunyue Ma. Welcome to my personal website. Find out more about me as a Computer Science person :)
Let's Go


<copyryear>
The <copyryear> element contains the copyright year as specified by the @year attribute.
@year
Category: Prolog (metadata) elements


9/9/2000
Without any doubt, smoking Salvia divinorum right after a very powerful 35 mg 2C-T-7 trip was the strangest artificial experience I have ever had. Stranger yet, for much of the time after smoking the herb I became unaware of even having taken any psychoactive substances. What I do remember from the experience was all from re-entry because I have no memory of the initial peak. I am leaving out the details of the 2C-T-7 trip for a separate report even though I was still tripping immensely when I smoked the salvia, 6 hr after ingestion.
I was staying at my parent's place, making sure the house wouldn't walk away while they were on vacation. I was rather nervous before smoking it, because the Salvia divinorum experience has always a little unsettling to me, and this time I was tripping. But I was looking for a total out of body experience and I figured this combination would do it. I sat on the couch, and my friend who was also tripping watched over me. The lights were off, and we put on 'Hurdy Gurdy Man' by Donovan. I took my hit. As I said, I don't remember what happened during the peak, and I mean nothing. The song itself is four minutes long, so I blacked out for at least that long. I do not recall hearing a single note after taking in the smoke.
My first memory was of being in the middle of the most intense Salvia flash I ever had. And I actually thought I was in my ex-girlfriend's apartment. Of course at the time I was watching my parent's house. After that brief awareness of the Salvia divinorum dimension, I suddenly blacked out again.
The next thing I remember was being right back where I started from (the couch in my parents house), only all of the significant people in my life were now in the room with me. Aunts, friends, and my ex-girlfriend. I knew something was weird because they weren't supposed to be there. Suddenly I came to the conclusion I was dead and now just a spirit in the room watching as they paid their last respects. It made sense at the time.
I was not scared or worried at any time during the experience, just very confused. And at no time did I feel like I was high, tripping, altered, or anything (other than a general confusion) after that initial salvia flash I experienced. I am not sure how long that state lasted, but suddenly I knew I wasn't dead anymore, though I don't know what actually made me realize this. It dawned on me that I was in some altered state of consciousness and something unforeseen had then happened. Was I near death? I felt all right, just very confused. But all of those people were there, my girlfriend, my aunt, and various others. I reasoned that something must have been wrong.
I am unclear how long that delusional state lasted, but when I started walking around and my friend grabbed a hold of me for my own safety, I realized I was tripping and had smoked Salvia divinorum. Still being quite confused, I asked where my ex-girlfriend was, but my friend quickly cleared that situation up. After that, I was in a state of complete shock; both for the general weirdness and realness of what little I did remember, and for actually seeing and possibly talking to entities that were so real. In fact, I am not so sure they weren't real. Within a half-hour after smoking the herb, the only effects that remained were those of the 2C-T-7. What I experienced was truly a glimpse of the other side.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Hey there, welcome to my page! My name is
Kenneth Joe-Ezigbo; could also recognize me through my onlineID Ezkenneth. I am a front-end
developer, who is dedicated to using agile methodologies to create applications that
are polished and - dare I say it - out of this world (lil' background reference humour).
I do have some work on here you can take a look at if you'd like to see a small sample of
just what I'm capable of! If you still aren't impressed? Then you're gonna just have to
pay a vist to my Github page and
see just
what projects I've either got under my belt or I'm currently undertaking. See attacthed also my resume - get to know what you can count on me for.
The world of coding and development is just as exciting as I expected it to be. I really am itch ing to dive onto as many projects and opportunities as I can to realy push my limits. Stay tuned as there will be updates to this page when I learn more, and more added to the portfolio as well for you to peruse! Now for a shameless Instagram plug


|
|
Pulling the last of the strings
by Rahul Marangati
Puppeteers in Prakasam district of Andhra Pradesh are struggling to keep their art form alive – with its rich tradition and history – despite no help from the state and the takeover of ‘entertainment’ by television
|
|
|
|
|
|
FACTOID OF THE WEEK |
Approximately 68 per cent of infant deaths in India occurred during the neonatal period or within the first 28 days of life.
from
Healthy States, Progressive India: Report on the Ranks of States and Union Territories
Read the full report →
Goto the PARI Index →
|
|
|
|
WOMEN'S DAY |
Pulling the last of the strings
by Rahul Marangati
Puppeteers in Prakasam district of Andhra Pradesh are struggling to keep their art form alive – with its rich tradition and history – despite no help from the state and the takeover of ‘entertainment’ by television
Read the story →
|
Pulling the last of the strings
by Rahul Marangati
Puppeteers in Prakasam district of Andhra Pradesh are struggling to keep their art form alive – with its rich tradition and history – despite no help from the state and the takeover of ‘entertainment’ by television
Read the story →
|
|
|
|
|
|
IN FOCUS |
Pulling the last of the strings
by Rahul Marangati
Puppeteers in Prakasam district of Andhra Pradesh are struggling to keep their art form alive – with its rich tradition and history – despite no help from the state and the takeover of ‘entertainment’ by television
Read the story →
|
Pulling the last of the strings
by Rahul Marangati
Puppeteers in Prakasam district of Andhra Pradesh are struggling to keep their art form alive – with its rich tradition and history – despite no help from the state and the takeover of ‘entertainment’ by television
Read the story →
|
|
|
|
|
|
|
|
|
PARI is non-profit and all content is completely free-for-all. Since we're independent (and will forever be), we require the support of our readers. Rural journalism is the need of the hour and if you'd like to support we're doing, please consider a donation, even small amounts will help.
Make a donation →
|
|
PARI thrives on the effort of hundreds of volunteers across India (some abroad) who help us in a range of ways: building the tech platform, getting stories from the field, multimedia editing - sound, video and many others.
Volunteer for PARI →
|
|
|
|
People's Archive of Rural India Mumbai (Maharashtra), India
|
|


Loan Details
Borrower's Name MANJUNATHA H.C. HUNSUR Resident of HUNSUR, KARNATAKA Field Partner SWAMI VIVEKANADA YOUTH MOVEMENT Loan Amount RS. 10,000 Loan Purpose FAST FOOD STALL Status REPAID Evaluated 143 DAYS AGO Impact GREATER DEMAND, GREATER SELF-RESPECT, FAMILY LOOKING TO BUY HOUSE SOON
Tears welled up in 38-year-old Manjunatha’s eyes when he dug deep into the recesses of his mind, unearthing some of the tragic memories of his family's past. We often hear of rags to riches stories but he had a riches to rags one.
 The whole family rejoiced when Manjunatha attained a diploma in engineering from Mysore. Many congratulated the newly-made engineer as he joined LNT, a reputable IT services company, in Hyderabad. He felt honoured by the opportunity but little did he know about the storm that was brewing and how it would whirl his life into a completely different direction.
As fate would have it, Manjunatha’s father’s hotel suffered heavy losses. The blow was so harsh that it knocked the entire family out of their very own house along with the status they had achieved after years of hard work.
Being the earnest son that he was, Manjunatha opted to lose everything he had strived for in Hyderabad to lend his emotional support to a family that had done the same for him ever since he was a little boy.
With his father’s blood pumping through his veins, Manjunatha drew up a plan, involved in the food business, to focus his energies on. It was a simple yet uplifting thought of starting a meal service.
Initially, he had to come to terms with the fact that the house they were living in was not their own but one they had to take on rent. The skyrocketing prices were a constant headache for a man who earned less than Rs 500 per day, most of it going into paying for expenses.
Inflation is the antagonist of this story - luckily, he benefitted from the graciousness of social investors who, through Rang De, have lent him Rs.10 000 and helped him rebuild his life.
He has to do without labourers but still maintains a high level of cleanliness and hygiene. He is utilising his first loan industriously as he has doubled the purchase of raw materials and increased the number of food products. He earns around Rs 1,000 for a day's work and saves 200-400 each day.
He hopes to take another loan that would help him start a mobile canteen that can cater at high courts, schools, colleges or hospitals.
We ended up learning a lot more from him in terms of courage as he took the downturns in life as they came instead of being upset about why events did not unfold in the desired manner. It was a very interesting story because he could have easily stayed back in Hyderabad and earned a decent living, supporting his family, but he told us that he knew his family needed him as a person.
He knew that they needed him for support more than the money he would have earned and sent.
This man is treading on a path less taken but one he finds more rewarding.


Preparation time
30 mins to 1 hour
Cooking time
10 to 30 mins
Serves
Makes 6 tortillas
Want to up your barbecue game? Combine crisp sea bass with sharp pickled onions and homemade guacamole and wrap it all up in a tasty tortilla.
For the pink pickled onion, bring a small pan of water to the boil. Add the sliced onion and boil for 25-30 seconds, then drain well and transfer to a large mixing bowl.
Add the oregano, peppercorns, lime juice, orange juice and salt, then stir well to coat the onions in the juices. Cover and set aside for at least one hour, or until the onions have turned a vibrant pink colour.
Meanwhile, light the barbecue. When the flames have died down and the coals have turned ash-white, the barbecue will be ready (this should take about 30 minutes).
For the sea bass, rinse the sea bass fillets in cold water, then pat dry using kitchen paper.
Season the skin of the sea bass fillets with the salt and chipotle chilli powder. When the barbecue is ready, place the sea bass fillets, skin-side down, onto the grill, and cook for 4-5 minutes, or until the skin is crisp and golden-brown and just over half of the flesh is cooked through.
Turn the sea bass fillets over carefully and cook for no more than 10 seconds, or until the outside of the fillets are just cooked. Transfer the sea bass fillets to a plate, skin-side up. Set aside and keep warm. Just before serving, flake the flesh of the sea bass using a fork.
Meanwhile, for the guacamole, blend the avocado flesh in a food processor until smooth. Add the lime juice, mayonnaise, chopped coriander stalks, coriander leaves and chilli and blend again until smooth and well combined. Season, to taste, with salt and blend again until smooth. Spoon the mixture into a serving bowl and chill in the fridge until needed.
For the tortillas, brush a frying pan with the oil and heat over a high heat until the oil is smoking. Heat each tortilla, one at a time, on both sides, for 15-20 seconds, or until soft and pliable and warmed through.
To serve, place one tortilla into the centre of each of six small serving plates. Spoon a dollop of guacamole into the centre of each tortilla, then lay some of the flaked sea bass and skin over the guacamole. Top with the pink pickled onions and a squeeze of lime juice, then roll up the tortillas into a cigar shape or fold into a U-shape.


--- layout: post status: publish published: true title: 'Sembcorp: Office Manager' author: display_name: PR Team login: prteam email<EMAIL_ADDRESS>url: '' author_login: prteam author_email<EMAIL_ADDRESS>wordpress_id: 1305 wordpress_url: http://gatheringtalents.com/?p=1305 date: '2012-06-21 23:09:59 +0000' date_gmt: '2012-06-21 15:09:59 +0000' categories: - Jobs - Other tags: [] comments: [] ---
Job Descriptions:
• Oversee daily office administration duties, vendor management and other responsibilities required to ensure smooth office operations;
• Develop and maintain reports according to company policies and procedures
• Cash flow & Petty Cash Control
• Render support to all Office Projects
• Control, procure and maintain general office supplies such as office furniture and equipment, stationery, etc and to liaise with vendors / landlord pertaining to services of office equipment and general office maintenance.
• Key point of contact for office administration matters, security, vendors and building landlords
• Maintain general office insurances & office environment.
• Provide administrative support to the office, mailing and delivery service and cover receptionist duties
• Process expense claims;
• Other responsibilities include office housekeeping, admin workflow and circulation of internal materials.
• Any other adhoc duties as required
Requirements:
• Degree or Diploma with min 3 years of relevant working
• Good communication skills (written & spoken).
• Analytical, organized, meticulous, ability to multi-task.
• Proficient in MS Excel, Word and PowerPoint.
Remuneration will be commensurate with experience and qualifications.
About the company:
Sembcorp Development is a subsidiary of Sembcorp Industries Ltd, a public-listed company on the Singapore Stock Exchange. We are a leading Asian developer with over 20 years’ experience undertaking master planning, land preparation and infrastructure development, and transforming raw land into large scale urban developments. We own, develop, market and manage urban developments comprising industrial parks as well as business, commercial and residential space in Vietnam, China and Indonesia. If you are highly motivated, self-driven and dynamic professionals, we invite you to make a strategic move to strengthen our present team in meeting the challenges of the millennium.


NOSFERATU THE VAMPYRE (Germany 1979)
A film review by Mike Watson Copyright 1999 Mike Watson
Rating: 5 out of 5
This extraordinary re-telling of Bram Stoker's "Dracula" by German filmmaker Werner Herzog deserves the most prominent of places in cinematic vampire lore. Inspired by F.W. Murnau's 1922 silent film of the same name, Herzog's film is a work of exquisite bleakness, an oddly touching tragedy with a beautiful and uniquely haunting quality that lingers long afterwards.
The original full-length English and German language versions of NOSFERATU have at last received a video release by U.S. distributor Anchor Bay Entertainment, and in gorgeous widescreen prints. Until now only a shortened English language version of the film was available on video, and only in Europe. Both of these re-releases restore the film to its full length, but viewers should still be wary of the English version due to its often stilted dialogue. Apparently the English dialogue coach Herzog had on the set during filming was incompetent, and some of the voices also seem to be dubbed. The German version with English subtitles remains the definitive one.
Everyone knows the story of Dracula. Or do they? His story has been so bastardised on film over the years that a brief reminder of the basic plot certainly won't hurt.
Jonathan Harker is a young lawyer sent to the gloomy castle Dracula in Transylvania to do business with a creepy count (played by Klaus Kinski) who wants to buy a house in Harker's hometown. Upon seeing a photo of Harker's wife (the radiant Isabelle Adjani) he instantly falls in love with her. Locking Harker up in his castle, he sets off on a long journey to meet this woman whose beauty so bewitches him. Upon divining his identity as a vampire, Adjani seduces the count and lures him to his death one morning as the sun rises.
That is a story familiar to millions, but Herzog has elevated Stoker's tale into the realm of - and I use this term a tad reluctantly - cinematic art. NOSFERATU is as much a meditation as it is a film, shot through blue-ish and white filters and peopled with characters who perform as if they were half hypnotised. The film's surreal, dream-like quality is utterly mesmerising. There is much to enjoy, but I'll limit my praise to a few key points.
Holding the film together is Kinski's remarkable performance as Count Dracula. Past screen portrayals, including Bela Lugosi's famous turn, have largely been one dimensional and tended towards camp. But Kinski...oh boy, this is something far more compelling. Aided by a startling make-up job, he portrays Dracula's vampirism not simply as pure evil but as some sort of loathsome disease. This man is dreadfully lonely. He lives in utter solitude, shunned by the locals for his hideous appearance and reputation for bloodlust. Kinski's portrayal of the Count is both creepy and deeply affecting. When he dies, you almost feel as if this man's tortured soul has been freed at last.
Then there's the unforgettable soundtrack, largely composed by German group Popul Vuh. It is so eerily beautiful and evocative that it's quite impossible to imagine the film without it. Popul Vuh are longtime Herzog collaborators and play an ancient-sounding kind of spacemusic using piano, chants, and exotic instruments. When I first saw this film some years ago I was so impressed I tracked down and bought a number of their albums. The one I still listen to the most is "Tantric Songs", from which most of the music in NOSFERATU is taken. It's a testament to the music's depth that it is as powerful without the pictures as it is with them. The album is still available on the highly respected ambient and world music label Celestial Harmonies.
This is a timely re-release by Anchor Bay. After Francis Ford Coppola's unscary and woefully overblown version of Bram Stoker's tale in 1992, it is a joy to go back to Herzog's film and see the amazing things he has done with what is now a century-old story. To some aficionados, NOSFERATU is quite simply the greatest vampire film ever made. Without a doubt, it is an unmistakable classic of the genre. Don't miss it.
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


<IP_ADDRESS>. Class Unit Test of Action/Component¶
This chapter describes the component class unit test of Action/Component (hereinafter referred to as Component unit test). The difference in the case of Action class unit test (hereinafter referred to as Action unit test) is the test class name.
<IP_ADDRESS>.1. How to write action/component unit test¶
The test class and test data used as examples in this chapter are as follows (right click -> Download and Save).
Test case list (UserRegistration_UserComponent_ClassUnitTestCase.xlsx)
Test class(UserComponentTest.java)
Test data(UserComponentTest.xlsx)
Tested class(UserComponent.java)
This chapter describes the method for user registration (UserComponent#registerUser) as an example.
<IP_ADDRESS>.1.1. Pattern division of test case execution¶
The test cases are classified into the following four categories from the list of test cases and methods to be tested. This is because there are differences in the test class and data creation methods depending on the pattern they belong to.
| Pattern | Example of a matching process |
|---|---|
| Test cases whose return value (database search result) must be checked | Search process |
| Test cases whose return value (other than database search results) must be checked | Calculation, judgment process |
| Test cases whose database status must be checked after processing is completed | Update process (including insert and delete) |
| Test cases whose message ID must be checked | Error handling |
Since this example shows DB insertion processing and error handling during double registration, the test cases are classified into “Test cases whose database status must be checked after processing is completed ” and “Test cases whose message ID must be checked”.
<IP_ADDRESS>.1.2. Create test data and test class¶
This section explains how to create test data and a test class for Process of creating pre-prepared data、Test cases whose database status must be checked after processing is completed、Test cases whose message ID must be checked respectively. First of all, the test data (Excel file) itself and the method of creating a test class (class that should be inherited, etc.) is described.Next, the data for each pattern and how a test method is created is described.
<IP_ADDRESS>.1.2.1. Create test data¶
Similar to Class Unit Testing of Form/Entity, the Excel file containing the test data is stored with the same name in the same directory as the test source code (only the extension is different). It is a prerequisite that all the test data is entered in the same Excel sheet.
For details on how to describe the test data, see Automated Testing Framework、Testing a Class that Uses the Database.
It is a prerequisite that the static master data stored in the database, such as message data and code master, has been input with data managed by the project in advance (these data are not created as individual test data).
<IP_ADDRESS>.1.2.2. Create a test class¶
The test class of component unit test should be created to satisfy the following conditions. For more information, see Testing a Class that Uses the Database.
- The package of the test class is the same as the Action/Component to be tested.
- Create a test class with the class name <Action/Component class name> Test.
- Inherit nablarch.test.core.db.DbAccessTestSupport.
package nablarch.sample.management.user; // [Description] The package is the same as UserComponent
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import nablarch.core.db.statement.SqlResultSet;
import nablarch.core.message.ApplicationException;
import nablarch.test.core.db.DbAccessTestSupport;
import org.junit.Test;
/** Test class of
* {@link UserComponentTest}.
*
* @author Tsuyoshi Kawasaki
* @since 1.0
*/
public class UserComponentTest extends DbAccessTestSupport {
// [Description] The class name is UserComponentTest and it inherits DbAccessTestSupport
// ~ Rest is omitted ~
<IP_ADDRESS>.1.2.3. Process of creating pre-prepared data¶
Create the pre-data and pre-data input process. In this example, the following data is created.
- Configuration of thread context [1]
- USER_ID: User ID. USERID0001.
- REQUEST_ID: Request ID. USERS00301.
- Initialization of the table to be inserted
- SYSTEM_ACCOUNT:System account table. Initial item is 3 records.
- USERS:User table. Initial item is 0 records.
- UGROUP_SYSTEM_ACCOUNT:Group system account table. Initial item is 0 records.
- SYSTEM_ACCOUNT_AUTHORITY:System account permission table. Initial item is 0 records.
- Master data input
- ID_GENERATE:Numbering table. For performing the numbering process at the time of registration.If the numbering table is not initialized, the numbering result when the test is run will not be known, and the insertion result cannot be verified.
| [1] | A thread context is an object that stores data that is commonly required by multiple methods in the call stack when executing a series of processes, such as user IDs, request IDs, and languages used. |
The process of reading these data is shown below.
// ~ Previous is omitted ~
/** Test class of
* {@link UserComponent#registerUser()} test1。

* Normal pattern.
*/
@Test
public void testRegisterUser1() {
String sheetName = "registerUser";
setThreadContextValues(sheetName, "threadContext"); // [Description] Thread context setting
// ~ Middle is omitted
for (int i = 0; i < sysAcctDatas.size(); i++) {
// ~ Middle is omitted
// Database preparation
setUpDb(sheetName); // [Description] Pre-data input.
// [Description] Executed in a loop to initialize each case.
// ~ Rest is omitted ~
<IP_ADDRESS>.1.2.4. Test cases whose database status must be checked after processing is completed¶
<IP_ADDRESS>.<IP_ADDRESS>. Create test data (input values)¶
Prepare arguments for the methods to be tested. In this example, the following 3 are required. The same row for each data is considered as a set of test data (For example, the first row of sysAcctEntity, the first row of usersEntity and the first row of grpSysAcctEntity will be the test data for 1 case).
- sysAcctEntity: System account entity data
- usersEntity: User entity data
- grpSysAcctEntity: Group system account entity data
useCaseId in sysAcctEntity are not values set in the useCaseId property itself (the useCaseId property of SystemAccountEntity is an array), but points to data in other tables indicated by the arrows in the figure. The acquired values in the test code are used as a key to further acquire data, create an array, and set in the useCaseId property.
// ~ Previous is omitted ~
public void testRegisterUser1() {
String sheetName = "registerUser";
setThreadContextValues(sheetName, "threadContext");
List<Map<String, String>> sysAcctDatas = getListMap(sheetName, "sysAcctEntity");
List<Map<String, String>> usersDatas = getListMap(sheetName, "usersEntity");
List<Map<String, String>> grpSysAcctDatas = getListMap(sheetName, "grpSysAcctEntity");
// Map, List that receive the Excel data temporarily
Map<String, Object> work = new HashMap<String, Object>();
List<Map<String, String>> useCaseData = null;
SystemAccountEntity sysAcct = null;
UsersEntity users = null;
UgroupSystemAccountEntity grpSysAcct = null;
for (int i = 0; i < sysAcctDatas.size(); i++) {
// ~ Middle is omitted
// System account // [Description] Preparation of SystemAccountEntity
work.clear();
for (Entry<String, String> e : sysAcctDatas.get(i).entrySet()) {
work.put(e.getKey(), e.getValue());
}
// Create arguments for useCaseId
String id = sysAcctDatas.get(i).get("useCaseId"); // [Description] Obtains the table ID at the base of the arrows in the figure
useCaseData = getListMap(sheetName, id); // [Description] Uses the ID acquired to obtain the data of the array at the tip of the arrow in the figure
String[] useCaseId = new String[useCaseData.size()]; // [Description] Create an array
for (int j = 0; j < useCaseData.size(); j++) {
useCaseId[j] = useCaseData.get(j).get("useCaseId");
}
work.put("useCase", useCaseId); // [Description] Configures the created array in the Map that is transferred to the SystemAccountEntity constructor
sysAcct = new SystemAccountEntity(work);
// User // [Description] Preparation of UsersEntity
work.clear();
for (Entry<String, String> e : usersDatas.get(i).entrySet()) {
work.put(e.getKey(), e.getValue());
}
users = new UsersEntity(work);
// Group system account // [Description] Preparation of UgroupSystemAccountEntity
work.clear();
for (Entry<String, String> e : grpSysAcctDatas.get(i).entrySet()) {
work.put(e.getKey(), e.getValue());
}
grpSysAcct = new UgroupSystemAccountEntity(work);
// Execution
target.registerUser(sysAcct, users, grpSysAcct);
commitTransactions(); // [Description] Commits all transactions
// Verification
String expectedGroupId = getListMap(sheetName, "expected").get(i).get("caseNo");
assertTableEquals(expectedGroupId, sheetName, expectedGroupId);
// ~ Rest is omitted ~
Tip
In the above source code, data is read from the Excel sheet using the getListMap method. For more information on getListMap, see “To acquire input parameters and expected values for return values, etc. from an Excel file” of How to Use Purpose-specific APIs.
Transaction control by the framework is not performed in the class unit test since the class that accesses the database is directly launched from the test class. If the database status is required to be checked after processing, it is necessary to commit the transaction in the test class.
Launch the commitTransactions()
method of the superclass and commit.
If the transaction is not committed, the test results cannot be confirmed normally. (A transaction need not be committed in the case of a reference test)
<IP_ADDRESS>.<IP_ADDRESS>. Create test data (Expected result)¶
Prepare the expected result for each test case. In addition to the items configured by the application, prepare the expected results for automatic configuration items as well (see Automatically configure a common value when executing SQL). Use the “assertTableEquals” method for verification.
The sample application handles multiple expected results by preparing data (expected) that defines the group ID (see To describe the data of multiple test cases on a single sheet) and transferring it to the arguments of assertTableEquals.
// ~ Previous is omitted ~
/** Test class of
* {@link UserComponent#registerUser()} test1。

* Normal pattern.
*/
@Test
public void testRegisterUser1() {
String sheetName = "registerUser";
// ~ Middle is omitted
for (int i = 0; i < sysAcctDatas.size(); i++) {
// ~ Middle is omitted
// Verification
// [Description] Acquire group ID
String expectedGroupId = getListMap(sheetName, "expected").get(i).get("caseNo");
// [Description] Execution of assertTableEquals with the acquired group ID as an argument
assertTableEquals(expectedGroupId, sheetName, expectedGroupId);
// ~ Rest is omitted ~
Taking case1 as an example, the expected result is as follows.
| Table name | Expected |
|---|---|
| SYSTEM_ACCOUNT | Add the record shown in Process of creating pre-prepared data + 1 record. Total 4 records. |
| USERS | Added 1 record. (Initialized to 0 records with Process of creating pre-prepared data and added 1 record in the test target process) |
| UGROUP_SYSTEM_ACCOUNT | Added 1 record. (Initialized to 0 records with Process of creating pre-prepared data and added 1 record in the test target process) |
| SYSTEM_ACCOUNT_AUTHORITY | No change (no new additions). |
<IP_ADDRESS>.1.2.5. Test cases whose message ID must be checked¶
<IP_ADDRESS>.<IP_ADDRESS>. Create test data (input values and expected values)¶
Create test data (input values) in the same way as create test data (input values) of the previous section. Here, “Err” is added to the end of the ID specified of the previous section so that normal pattern and abnormal pattern data can be consolidated in the same Excel sheet. The expected value is the message ID.
The content to be checked here is the occurrence of an exception caused by unique key constraint violation. The test code catches the intended exception and verifies it by comparing the message IDs.
Important
The exceptions to be caught are those that are expected to occur, and exception classes higher in the inheritance tree such as RuntimeException are not used. Although there are message IDs, the bug that mistakes the exception itself cannot be detected.
// ~ Previous is omitted ~
/** Test class of
* {@link UserComponent#registerUser()}2。

* Abnormal pattern.
*/
@Test
public void testRegisterUser2() {
String sheetName = "registerUser";
// ~ Middle is omitted
// Execution
try {
target.registerUser(sysAcct, users, grpSysAcct); // [Description] Executes the method to be tested
fail(); // [Description] Test failure if an exception is not thrown
} catch (ApplicationException ae) { // [Description] Catches exceptions that should be thrown
// [Description] Verification of message ID
assertEquals(expected.get(i).get("messageId"), ae.getMessages().get(0).getMessageId());
}
}
}
// ~ Rest is omitted ~


Public Member Functions | |
| (id) | - initForRowDictionaries:forSectionTitle:forDelegate: |
|
(id < CDLTableRowControllerProtocol >) | - rowControllersForRow: |
Static Public Member Functions | |
| (id < CDLTableSectionControllerProtocol >) | + tableSectionControllerForDictionary:forDelegate: |
| (CDLTableRowType) | + cellTypeOfRowFromDictionary: |
Protected Attributes | |
| BOOL | _inAddMode |
Properties | |
| BOOL | inAddMode |
| NSString * | sectionTitle |
| NSArray * | rowControllers |
| id < CDLTableSectionControllerDelegate > | delegate |
| + (id< CDLTableSectionControllerProtocol >) tableSectionControllerForDictionary: | (NSDictionary *) | sectionInformation | ||
| forDelegate: | (id<CDLTableSectionControllerDelegate>) | delegate | ||
Return an autoreleased TableSectionController for this sectionInformation
- (id<CDLTableSectionControllerDelegate>) delegate [read, write, assign] |
delegate
- (BOOL) inAddMode [read, write, assign] |
return whether this sectionController is being used to add a new object, rather than edit one
- (NSArray*) rowControllers [read, write, copy] |
Array of the row controllers this section controller manages
- (NSString*) sectionTitle [read, write, copy] |
Title of the section to display in the tableView


Digital Album
close
Name your price:
$
USD
(
$8
or more)
convert
Includes unlimited streaming via the free Bandcamp app, plus high-quality download in MP3, FLAC and
more
.
Have a gift card?
Redeem it here
Include a message
to
Alvvays.
Add me to the mailing list for Alvvays.
Add me to the mailing list for Polyvinyl Records.
Email a link to my free download to:
Your email address won’t be shared with
third parties.
United States
Canada
United Kingdom
Australia
France
Germany
Japan
---
Afghanistan
Aland
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Ascension
Australia
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet Island
Brazil
British Indian Ocean Territory
Brunei
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Caribbean Netherlands
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo (Brazzaville)
Congo (Kinshasa)
Cook Islands
Costa Rica
Cote d'Ivoire (Ivory Coast)
Croatia
Cuba
Curaçao
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Islas Malvinas)
Faroe Islands
Fiji
Finland
France
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Germany
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and McDonald Islands
Honduras
Hong Kong
Hungary
Hyrule
Iceland
India
Indonesia
Iran
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Kosovo
Kuwait
Kyrgyzstan
Laos
Latvia
Lebanon
Lesotho
Liberia
Libya
Liechtenstein
Lithuania
Luxembourg
Macau
Macedonia
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia
Midway Islands
Moldova
Monaco
Mongolia
Montenegro
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Korea
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestine
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn Islands
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russia
Rwanda
Saint Barthélemy
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Martin
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia
Seychelles
Sierra Leone
Singapore
Sint Maarten
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
South Korea
South Sudan
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syria
Taiwan
Tajikistan
Tanzania
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tristan da Cunha
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United Kingdom
United States
Uruguay
Uzbekistan
Vanuatu
Vatican City
Venezuela
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
You’ll be added to the Alvvays mailing list, from which you can unsubscribe at any time.


/* * Copyright (c) 1994, 1996 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the Computer Systems * Engineering Group at Lawrence Berkeley Laboratory. * 4. Neither the name of the University nor of the Laboratory may be used * to endorse or promote products derived from this software without * specific prior written permission.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#) $Header: /tcpdump/master/libpcap/pcap/namedb.h,v 1.1 2006/10/04 18:09:22 guy Exp $ (LBL) */ #ifndef lib_pcap_namedb_h #define lib_pcap_namedb_h #ifdef __cplusplus extern "C" { #endif /* * As returned by the pcap_next_etherent() * XXX this stuff doesn't belong in this interface, but this * library already must do name to address translation, so * on systems that don't have support for /etc/ethers, we * export these hooks since they'll */ struct pcap_etherent { u_char addr[6]; char name[122]; }; #ifndef PCAP_ETHERS_FILE #define PCAP_ETHERS_FILE "/etc/ethers" #endif struct pcap_etherent *pcap_next_etherent(FILE *); u_char *pcap_ether_hostton(const char*); u_char *pcap_ether_aton(const char *); bpf_u_int32 **pcap_nametoaddr(const char *); #ifdef INET6 struct addrinfo *pcap_nametoaddrinfo(const char *); #endif bpf_u_int32 pcap_nametonetaddr(const char *); int pcap_nametoport(const char *, int *, int *); int pcap_nametoportrange(const char *, int *, int *, int *); int pcap_nametoproto(const char *); int pcap_nametoeproto(const char *); int pcap_nametollc(const char *); /* * If a protocol is unknown, PROTO_UNDEF is returned. * Also, pcap_nametoport() returns the protocol along with the port number. * If there are ambiguous entried in /etc/services (i.e. domain * can be either tcp or udp) PROTO_UNDEF is returned. */ #define PROTO_UNDEF -1 /* XXX move these to pcap-int.h? */ int __pcap_atodn(const char *, bpf_u_int32 *); int __pcap_atoin(const char *, bpf_u_int32 *); u_short __pcap_nametodnaddr(const char *); #ifdef __cplusplus } #endif #endif


Learning Web Programming
HTML
CSS
JavaScript
Jquery
HTML
HTML stands for Hypertext Markup Language.
Hypertext is an ordinary text dressed up with extra features.
Markup is a process of taking ordinary text and adding extra symbols.
Language is actually a keypoint to remember about HTML


Manchester United could land €60m Real Madrid ace in January
by Neelabhra RoyManchester United could reportedly sign Real Madrid forward Gareth Bale in January.
The Welsh international has featured in seven matches for Los Blancos this season so far, scoring two goals and providing as many assists. Bale has been linked to an exit from the Bernabeu lately with Don Balon claiming that Zinedine Zidane wants Florentino Perez to sell him in the January transfer window.
According to the Sun, Manchester United can buy the 30-year-old who is valued at €60 million according to Transfermarkt in January. The report also suggests that Real Madrid will use Bale as part of a deal to land Paul Pogba.
The Welshman has been one of Real’s best players in the past few years, scoring 104 goals and providing 67 assists in 238 appearances across all competitions. However, this season he has been far from a regular for them due to injury issues.
Provided Bale does leave Real Madrid in January, Old Trafford would be a fine destination for him as he could find playing time if his fitness is maintained.


pgmkernel(1) pgmkernel(1) NAME pgmkernel - generate a convolution kernel SYNOPSIS pgmkernel [ -weight w ] width [ height ] DESCRIPTION Generates a portable graymap array of size width x height (or width x width if height is not specified) to be used as a convolution file by pnmconvol. The data in the convolution array K are computed according to the formula: K(i,j) = 1 / ( 1 + w * sqrt((i-width/2)^2 + (j-height/2)^2)) where w is a coefficient specified via the -weight flag, and width and height are the X and Y filter sizes. The output PGM file is always written out in ASCII format. OPTIONS The optional -weight flag should be a real number greater than -1. The default value is 6.0. BUGS The computation time is proportional to width * height. This increases rapidly with the increase of the kernel size. A better approach could be using a FFT in these cases. SEE ALSO pnmconvol(1), pnmsmooth(1) AUTHOR Alberto Accomazzi (alberto@cfa.harvard.edu). 10 December 1992 pgmkernel(1)


var colorHex: Int?
Text color for the current component given in hex format (write only).
This property gives a convenient way to set the value of color property e.g.:
c.colorHex = 0x00ff00
The value read from this property is always null.


Functions
The following functions are available globally.
-
Undocumented
Declaration
Swift
public func resolve<T>(_ jsonDictionary: [String : Any], keyPath: String) -> T?
-
Undocumented
Declaration
Swift
public func with<A, B>(_ op1: A?, _ op2: B?, _ closure: (A, B) -> Void)
-
Undocumented
Declaration
Swift
public func withObject<T>(_ value: T, closure: (T) -> Void) -> T
-
Undocumented
Declaration
Swift
public func withValue<T>(_ value: T, closure: (inout T) -> Void) -> T


Do you need some inspiration which Javascript framework you could be developing next? We are here to help.


Join Us
Become part of our team
Seeking enthusiastic volunteers who have interests in the following:-
1) Engineering Designs
- Mechanical
- Electrical
- Control System
2) User Interaction
- Graphical User Interface
- Psychology
- Early Childhood Learning
3) Community Services
- Event Organization
- Community Liaison
Further information, please contact Chong Yu Zheng (Email: chongyz@utar.edu.my)


Tackle the big questions at work. Get more work done. Avoid unnecessary work.
Simplicity is power. And doerlist is powerful because there is nothing complicated in its core.
All channels are secured with https. Doerlist don't serve tracker or ads or third-party analytics.
Better work requires answers. What's urgent, important, for today and for this week?.
Getting things done on doerlist is easy. Swipe to complete. Swipe to archive. And swipe for more.
Every task for today. The important ones. The urgent ones.
All in one view.
Every task for this week. The important ones. The urgent ones.
All in one view.
Our middle name is fast.
Doer Fast List.
Certain random text that are related to random text that are related to random text that are related to random text that a.
Certain random text that are related to random text that are related to random text that are related to random text that a.
All links have on iOS have reading mode enabled by default.
Add a quick task quickly? Doerlist got your back. Quick add button on the front page.
Some tasks are more important than others. Doerlist points that out for you.
Certain random text that are related to random text that are related to random text that are related to random text that a.
Certain random text that are related to random text that are related to random text that are related to random text that a.
Certain random text that are related to random text that are related to random text that are related to random text that a.
Certain random text that are related to random text that are related to random text that are related to random text that a.
Not convinced? The best way to find out is to try it out yourself. Sign up (The money is fully refundable in three days.)
If you are a writer, designer or programmer, we need your help at the beta program! Join doerlist's beta program by sending an email to<EMAIL_ADDRESS>Read: What is a beta program?
Advice for doerlist? Question or problem? contact support@doerlist.com


Overview
Snow Dots might migrate from Psychtoolbox to MGL, for OpenGL support. MGLMigration discusses motivations and considerations.
The two libraries handle timing in different ways. So before migrating to MGL, we want to make sure we understand how to get good graphics timing with MGL.
This page discusses our understanding of frame timing with the two libraries and some frame timing tests we ran. The tests had this flavor: * draw some giant gray rectangles which fill the screen * record from the screen with a photometer * compare timing and gray values as viewed through software vs. through the photometer
We tested with a Mac Mini and a CRT display. The test results for these are generally good. We expect MGL to work out fine from a timing point of view. Read on for details.
Background
Timing in Psychtoolbox vs. MGL
Psychtoolbox and MGL handle graphics timing very differently: * Psychtoolbox aggressively pursues frame times by going outside the scope of OpenGL and by defining fall-back behaviors to accommodate weak hardware. * MGL doesn't. It leaves frame timing details up to the OpenGL implementation of its host operating system.
We think that in most cases, with at least middling graphics hardware, the hands-off approach of MGL is sufficient. This section explains why.
Beam Position
Psychtoolbox does a great job of synchronizing Matlab's execution (i.e. drawing) with the video refresh cycle. A key synchronizing tool is beam position querying. In short, some video drivers expose a "beam position" signal which corresponds to the progress the scanning electron beam in a CRT display. This signal gives Psychtoolbox a direct measurement of how far along each video frame has progressed.
Beam position is a very useful signal! But beam position querying is not part of OpenGL and it's not uniformly supported across operating systems and video drivers.
Moreover, "beam position" is only a well-defined concept for CRT displays, which have a scanning electron beam. CRTs themselves are increasingly difficult to find. Some LCD display drivers mimic a "beam position" signal (do they all mimic it in the same way?). Some drivers don't bother.
Thus, we can't always expect to enjoy beam position querying, especially looking ahead to a display market dominated by LCDs.
Swap-Interval
Nevertheless, MGL can synchronize Matlab's execution with the video refresh cycle.
The big three OpenGL implementations (for OS X, Windows, and Linux) provide a mechanism called "swap-interval" for synchronizing graphics onset with a hardware video refresh. For CRT displays, the refresh moment would correspond to the "vertical blank" phase of electron beam scanning.
Swap-interval behavior is defined with respect to the video frame buffers, not the display or display driver, so we do expect to have swap-interval behavior across operating systems and display types.
MGL turns swap-interval "on" by default. This provides two kinds of synchronization. First, it causes the graphics processor to delay processing of "flush" commands (i.e. commands that define a completely drawn frame) until the next hardware video refresh.
Second, it causes Matlab (or any calling application) to block whenever Matlab attempts to put more than one "flush" command into the OpenGL command queue. The block ends when the next hardware video refresh occurs. The intuition here is similar to saying, "You want me to process this frame? OK. You want me to process another frame?? Wait until I'm done processing that first one."
The second type of synchronization allows MGL to synchronize Matlab's execution with the video refresh cycle.
Note: we observe this "wait until I'm done" synchronization with the OS X implementation of OpenGL. Do applications see the same blocking behavior on Windows and Linux? Please comment below if you know.
Note: the words "swap" and "flush" mean almost the same thing. "Swap" refers to swapping the front and back frame buffers in a double-buffered context, in order to display a new frame. "Flush" refers to processing all queued drawing commands, also in order to display a new frame. The two operations usually occur back-to-back. The distinction is not important here, since we're just concerned with displaying new frames.
MGLFlushGauge
We wrote a class called MGLFLushGauge which encapsulates our understanding of swap-interval behavior. It uses "wait until I'm done" synchronization in order to measure the hardware refresh rate, and to take timestamps for individual hardware refreshes.
It has a flush() method which places a "flush" command in the OpenGL command queue, and returns an onset prediction time for the corresponding frame.
The time is a prediction because of how swap-interval behavior interacts with the OpenGL command queue. Consider this sequence of events: * Call flush(), placing flush 1 in the command queue. Returns immediately. * Call flush(), placing flush 2 in the command queue. Matlab is now blocked. * flush 1 gets processed during the next hardware refresh. Matlab unblocks. * Matlab records a timestamp
The timestamp is taken just as frame 1 appears onscreen. We expect onset for frame 2 to occur one frame later. So the onset prediction for frame 2 would be timestamp-plus-one-frame. This is a time in the future.
If we called flush() again, the same logic would apply. Matlab would be forced to block until frame 2 was processed, and we would expect frame 3 to appear one frame later, in the future.
If we use swap-interval as the mechanism for frame timing, we must do this kind of overlapping accounting, where our expectation for the current frame depends on what we know about the previous frame.
MGLFlushGauge encapsulates these accounting details. Since the accounting relies on state memory and assumptions about the underlying OpenGL implementation, it's worth testing it for correctness.
Tests
We compared frame onset predictions made by MGLFlushGauge with on-screen photometer readings of the same frames. This section describes the test structure and measurements.
See Running the Tests below to obtain all the code needed for running these tests.
Trials and Timestamps
Each test contained a sequence of trials. Each trial waited for an arbitrary delay period, drew a large, gray rectangle to the screen, and recorded several software timestamps. All trials had the same structure and differed only in the delay duration the gray value.
One trial corresponds to one drawn frame. However, because of the arbitrary delay period, one trial may correspond to multiple video refresh cycles. In other words, some trials contained frame skips.
Here is pseudo-code for one complete test: Choose the number of trials, N Choose N duration values, DELAYS Choose N gray values, COLORS For each trial 1 through N Record a START timestamp Wait for the next duration in DELAYS Record a DELAY timestamp Draw the next gray value in COLORS Record a DRAW timestamp Call the flush() method of MGLFlushGauge returns an ONSET time prediction returns a hardware refresh timestamp, SWAP Record a FINISH timestamp End
Photometer Readings
In addition to software timestamps, each test recorded voltage samples from a photometer which was attached to the computer display. We used two devices to record photo-sensitive voltages: * a PIN 10D photodiode from OSI Optoelectronics * a USB 1208FS digital-analog converter from Measurement Computing
We connected leads from the photodiode to one of the analog input differential channels of the 1208FS. We scanned the input at 5000Hz for the duration of each test.
We communicated with the 1208FS device using the mexHID() Mex-function which is part of Snow Dots. We also wrote a new class called AInScan1208FS for doing device-specific input, output, and data handling with the 1208FS.
Reconciling Views of Color and Onset Time
On each trial, we were interested in frame color and frame onset time. We had two independent views of each quantity: | View | Color | Onset Time | |:---------|:----------|:---------------| | Software |specified gray value|prediction from MGLFlushGauge()| | Photometer |voltage peak value|voltage peak time|
We reconciled the two views of frame color by sorting. We assumed that the specified gray values would be transformed monotonically into photometer voltage peak values. Since the gray values were well-spaced and the peak voltage values turned out to be well-separated, it was straightforward to map "lightest gray" to "highest voltage peak", "median gray" to "median voltage peak", and so on. Note that the color reconciliation does not use any timing information.
We reconciled views of frame onset time by sequence. We assumed that the photometer voltage peak must occur a short time after the video hardware refresh, since the voltage change is "downstream" of the video card. So we matched each time prediction from MGLFlushGauge with the earliest subsequent photometer voltage peak.
We considered a trial to be a success if the reconciled gray colors matched, and if the reconciled onset times were between 0 and 1 frames apart.
Earliness
We define a concept called "earliness" as the interval between when flush() was called, and when MGLFlushGauge predicted frame onset. Roughly, the earliness is the amount of time remaining in a frame for drawing commands to propagate through the OpenGL pipeline. If the earliness is too small, frame skips will occur.
In some cases, earliness is greater than the length of one frame, indicating that we have issued drawing commands well ahead of time, and we should expect good graphics timing.
Where earliness is only a few milliseconds, we should be uncertain whether the predicted onset time is accurate. This is because we don't know exactly how long it takes drawing commands to propagate through the OpenGL rendering pipeline.
Results
We ran three tests, each with a different emphasis. One was "easy" and had only short delays, one had "progressively" long delays in it, and one was a "fuzz" test with randomly chosen delays.
Results from each of three tests appear in figures below. The figures all have the same format, as follows.
Reading the Figures
Each figure has three panels. Each panel shows a timeline of the entire test. The horizontal axis is the common to all panels and shows a count of elapsed video frames, as measured by MGLFlushGauge.
The top panel is entirely a software view. The vertical axis shows individual trials as rows. Trial 1 is in the bottom row, trial 25 is in the top row.
The trial bars overlap because of how swap-interval interacts with the OpenGL command queue (see Swap-Interval above). We're able to start drawing a new trial even before the frame from the previous trial appears on screen.
The trial bars are color-coded: * the rightward arrow indicates the trial START time and the gray color to be drawn * the green bar segment indicates the trial DELAY time * the red bar segment indicates the trial DRAW time (very short) * the light blue bar segment indicates the trial SWAP time (including "wait until I'm done" blocking) * the dotted blue bar segment extends to the frame ONSET time prediction from MGLFlushGauge * the leftward arrow indicates the ONSET time prediction and the gray color to be drawn (always matches the rightward arrow)
The middle panel is a photometer view of the test. The vertical axis shows photometer voltage.
Orange points show individual voltage samples taken throughout. Upward arrows mark peaks in the voltage trace. The arrows colors indicate reconciled gray values.
Tick marks on the vertical axis correspond to "highest", "median", and "lowest" voltage peaks. These were used for reconciling the software and photometer views of frame color.
The bottom panel compares the software and photometer views for trial success. The vertical axis shows the "earliness" of each trial.
The leftward arrows indicate software ONSET time predictions. They always match the leftward arrows from the top panel. Upward arrows mark voltage peaks from the photometer view of the trial. They always match the upward arrows from the middle panel.
Horizontal bars represent the success or failure of MGLFlushGauge on each trial. For success trials, the horizontal bar has the same color as the frame on that trial. For failure trials, the horizontal bar is red.
We consider a trial a success if the software view agrees with the photometer view, for frame color and frame onset time. Otherwise we consider a trial a failure.
Easy Test
http://snow-dots.googlecode.com/files/MGLEasyTest.fig
http://snow-dots.googlecode.com/files/MGLEasyTest.png'> http://snow-dots.googlecode.com/files/MGLEasyTest.png' width='240' height='320' />
The "easy" test assessed the basic behavior of MGLFlushGauge: * N was 25 trials * DELAYS were small and constant (3ms) across trials * COLORS repeated a three-unit pattern of medium-gray, light-gray, dark-gray throughout
These easy conditions might correspond to an experiment with primitive animation and minimal processing required between frames. We expected no frame skipping, and there was none (the 25th trial had onset on the 25th frame). We also expected MGLFlushGauge to be successful on all 25 trials, and it was.
The earliness of the first two trials was relatively short because Matlab was not yet synchronized with the video refresh cycle. On all other trials, earliness was longer than a whole frame.
Progressive Test
http://snow-dots.googlecode.com/files/MGLProgressiveTest.fig
http://snow-dots.googlecode.com/files/MGLProgressiveTest.png'> http://snow-dots.googlecode.com/files/MGLProgressiveTest.png' width='240' height='320' />
The "progressive" test disrupted frame timing with delays of increasing length: * N was 25 trials * DELAYS increased steadily from about half a frame to one-and-a-half frames * COLORS repeated a three-unit pattern of medium-gray, light-gray, dark-gray throughout
Because of the long delays, this test guaranteed that some frames would be skipped. We wanted to know whether MGLFlushGauge would track the skips and report on bad timing as well as it had reported on good timing. It did, and all trials were successful.
Skipped frames show up as repeated peaks in the middle panel. Following these trials, MGLFLushGauge reported that the next frame onset would be late.
The progressive delays caused earliness to suffer. In early trials, when Matlab is synchronized with the video refresh cycle, earliness decreases as delay increases. Frame skips start after frame 17, Matlab becomes un-synchronized, and earliness becomes erratic.
Fuzz Test
http://snow-dots.googlecode.com/files/MGLFuzzTest.fig
http://snow-dots.googlecode.com/files/MGLFuzzTest.png'> http://snow-dots.googlecode.com/files/MGLFuzzTest.png' width='240' height='320' />
The "fuzz" test disrupted frame timing with randomly chosen delays: * N was 25 trials * DELAYS picked from uniform distribution ranging from zero through two frames * COLORS repeated a three-unit pattern of medium-gray, light-gray, dark-gray throughout
We intended this test to push MGLFlushGauge beyond conditions usually encountered in psychophysics. Since delay could be very long or very short, it should have been difficult for MGLFlushGauge to settle into a predictable pattern, and success would depend on our correct modeling of swap-interval behavior. MGLFlushGauge performed well overall, but failed on 2 of the trials.
The first failure occurred at frame 2. In this trial, the photometer view of frame onset was one frame later than the software view. The earliness is about 3ms. Our interpretation is that it took longer than 3ms for the drawing commands to propagate through the OpenGL pipeline, but MGLFlushGauge didn't "know" it would take so long.
The second failure occurred at trial 29. It's a skipped frame with a similar interpretation. The photometer view of frame color lags one frame behind the specified frame color. The earliness is about 2ms. As before, it must have taken longer than 2ms for the drawing commands to propagate through the OpenGL pipeline, and MGLFLushGauge didn't "expect" it to take so long.
To address both failures it would seem useful to "tell" MGLFlushgauge that it takes at least 3ms for drawing commands to propagate through the OpenGL pipeline. We can do this. MGLFlushGauge already implements a mechanism called "framePadding" which allows it to detect when the earliness is too small. For these tests framePadding was 1ms, and we can increase the value to 3ms to match these results.
However, it's unlikely that a single value of framePadding will be suitable in all cases. Note that at frames 6 and 13, the earliness was close to 3ms but the trials were successful. There may be inherent unpredictability in how long it takes drawing commands to propagate.
Furthermore, drawing command propagation times must depend on the OpenGL implementation, both hardware and software. It may be necessary to choose a "best" value for each system based on similar tests, and to accept that when earliness is close to this value, MGLFlushGauge might predict onset times that are off by one frame.
Fortunately, these tests demonstrate that when earliness is large, as might be expected during psychophysics, MGLFlushGauge predicts accurate frame onset times.
Payoff
Under these test conditions, with the graphics hardware of our Mac Mini, we think the swap-interval timing is good and that MGLFlushGauge works well. Thus, we don't need to use beam position querying, and that has a few advantages.
Display Type Independence
We're not tied to display and drivers that report a beam position signal. We can continue to get frame timing information as CRTs are phased out and we're forced to explore other display types.
One huge caveat is that swap-interval behavior stops at frame buffer, so we must check our assumptions about what a display does with frame data once it gets it.
For example, the phenomenon of display lag is known but somewhat mysterious. Hopefully researchers, gamers, and enthusiasts, or display manufacturers themselves, will illuminate display lag and other display timing details.
Robustness Against Jitter
Swap-interval also allows us to send an "extra frame" at a time to the OpenGL command queue. This gives us robustness against timing jitter from sources like non-real time operating systems. If our animation is "late" on one frame, we may be able to make up for lost time during the next frame and avoid frame skips.
The key difference is blocking behavior: Psychtoolbox usually has us block on beam position, until the current frame appears on the display. Swap-interval has us block on hardware refresh until the previous frame is sent sent to the display.
Note: Psychtoolbox allows asynchronous buffer swapping which might allow for swap-interval behavior.
Development Potential
The greatest payoff should come from future development. These frame timing tests indicate that MGL will be a sufficient replacement for Psychtoolbox, from a graphics timing point of view. Thus, we will be able to take advantage of MGL's ease-of-extensibility when we do OpenGL development.
Running the Tests
These tests require the mexHID() function which is part of Snow Dots. One way to get mexHID() is to install Snow Dots.
Installing Snow Dots is a combination of "checking out" code with Subversion and downloading other dependencies by hand. This script can help: installSnowDots_30April2010.m
These tests also require some code which is not part of Snow Dots, which you can find in the Snow Dots download section: MGLFrameTimingTests.zip
Moreover, the tests require some hardware: * a PIN 10D photodiode from OSI Optoelectronics * a USB 1208FS digital-analog converter from Measurement Computing
The test setup is simple in principle: * plug in the 1208FS USB device * connect two leads between the 1208FS and the photodiode * attach the photodiode to the display of the test computer
But complications are bound to arise. If you want to run these tests and you're having trouble setting things up, please leave a comment and one of the developers will get an email.


GlowUP.com
Home
Hair
Tutorials
Tips
Celebrities
Makeup
Tutorials
Tips
Celebrity Looks
Nails
Tutorials
Tips
Colors
Designs
Skin Care
Daily Routine
Tips
Problem Areas
#naturalbeauty
Join The Movement
How to get:
HEALTHY HAIR
Find Your Skin Care Routine With Your Zodiac sign
About Us