Jamie Stevens - ATCA Senior Systems Scientist / Lead Scientist
Universal: all people on any machine can see them.
Faster: don't need to ship around big datasets.
Reliable: users always see the latest version.
Easy: interactive visualisation is easy in a web browser.
With large datasets, large teams and ongoing development, web interfaces are a logical choice.
Possibilities are essentially endless now with modern browsers. But we can break down the type of interface into two general categories: Static and Interactive.
An interface that takes some user input on one page and uses that to make a new page.
Examples: NED, SIMBAD, ATCA Calibrator Database
An interface that changes based on user input or model updates, but doesn't require the browser to load another page.
Examples: sky-map.org, Aladin Lite.
Static views are useful for presenting detailed information about a catalogue/source and allow for "drill-down".
Interactive views are great for data exploration.
The two can be mixed of course!
ASKAP data is coming, and it is unreasonable to expect everyone to download it all and keep it (and the analysis software) up to date.
Web interfaces made by others may not be the way you want to visualise or present the data.
If you can imagine a way to make a more useful interface, there's a good chance you can make that happen!
Bad news: I can't tell you. Specificities due to the data you're using and the way you want to present it means you'll need to create something bespoke.
What follows is some general advice on how I make my interfaces.
The data you're working with will likely change over time.
You're most likely going to want to change or tweak the way you look at the data.
You don't want to have to do a huge re-code every time you want to make a change to a view, or the data changes.
Consider developing using the MVC scheme.
View: HTML5 and CSS3 at a minimum, Javascript if you want to have interactivity.
Model/Controller: PHP/Perl/Python, SQL.
A lot to know, but numerous tools exist to make it easier.
Most frameworks allow you to program in Javascript to implement MVC. They have all the support code, and leave you to describe the data and make the views.
 There is even the site todomvc.com to help you choose one.
Unless you think the same way as the framework creators, it can be a very steep learning curve.
Two web interfaces that I've made that I've done in quite different ways.
The database is (unsuprisingly) for storage of the data.
Used the MySQL database since ATNF has a dedicated MySQL server for this purpose.
Other choices: PostgreSQL, flat files...
Need some process on the server that can take requests from a client web browser, query the database, and return the results.
Used Perl and the CGI library for the browser interaction, along with the Class::DBI library to make the database queries easy. I know all these tools, so that's what I used.
Other choices: Python, PHP, Javascript...
The views are made to be easy to use and nice to look at.
Used HTML5 and CSS3. All the view pages are plain HTML/CSS that load quickly and then start querying the database. This makes the site feel more responsive.
Other choices: generate HTML on-the-fly on the server (old-fashioned), REST-ful page generation
Once the view page is loaded, the database needs to be queried and the page populated with the result.
This is done with Javascript. Unfortunately, different browsers still have slightly different APIs for many functions. I use the Dojo Toolkit to abstract all these differences away, and to make the charts that appear on the pages.
Communication between the client and server is done via standard XHR.
Other choices: straight Javascript, jQuery, mootools, D3...
Differences
I wanted to do something quickly; only took a day to make.
Only needed a single view but could view different datasets.
Wanted faster response to a potentially huge amount of queries to the model.
Web interfaces are "the way to go" with modern browser abilities.
Almost limitless possibilities for the interfaces, and a huge variety of software available to help you make them.
Requires a reasonable amount of effort to learn and implement, and knowing your requirements is essential.
If you know a language like Python or Perl, learning Javascript and HTML is easy!


[gecode-users] question about posting of linear expressions
Kish Shen
kisshen at cisco.com
Thu Jul 8 20:21:44 CEST 2010
Hi,
I have been modifying my code for the interface from ECLiPSe to gecode,
specifically the way expressions are handled. I have run into an
apparent problem with reified boolean expressions. Up to this point, I
have been posting these as a boolean relation, as follows:
tt(Bool <=> Expr)
where Expr is the boolean expression, and Bool is a boolean variable.
I have modified the code to post this as an expression instead, as follows:
Bool = post(home, Expr)
This does not seem to work, as Bool does not seem to be constrained to
be the reified value of Expr. The documentation says 'post boolean
expression and return its value' for the relevant post function, does
'its value' means the truth value at the point of posting the expression
(which is not known in my case), rather than constraining it to the
reified value of Expr as I thought?
[The actual code is a bit more complicated than the simplified versions
I present here, but I think I have presented the essentials]
Thanks in advance for any information!
Cheers,
Kish
--
This e-mail may contain confidential and privileged material for the
sole use of the intended recipient. Any review, use, distribution or
disclosure by others is strictly prohibited. If you are not the intended
recipient (or authorized to receive for the recipient), please contact
the sender by reply e-mail and delete all copies of this message.
Cisco Systems Limited (Company Number: 02558939), is registered in
England and Wales with its registered office at 1 Callaghan Square,
Cardiff, South Glamorgan CF10 5BT.
More information about the users
mailing list


Toggle navigation
Club Connect
Sign in
Sign up
Previous
Next
Music Club
Photography Club
Dance & Dramatics Club
Film Committee
Spic Macay
Astronomy Club
CybSec NITW
News Magazine Club
College Radio Club
Nature Club
Painting Club
Quiz Club
English LDC
Hindi LDC
Telgu LDC


class: center, middle # Functional Domain Modelling --- # Agenda * Introduction * Theory * Techniques * Example * Coding Exercise * Demos and Discussion --- # Part One - Introduction --- class: center, middle # Bytecraft Oy [`hello<EMAIL_ADDRESS>[`bytecraft.fi`](https://bytecraft.fi) --- class: center, middle Juha Heljoranta Partner and Software Craftsman at Bytecraft Oy --- # Part One - Introduction Rate from one to three (1. beginner, 2. junior, 3. senior) how experienced you are with a. Domain Driven Design
b. Functional Programming Example: ``` a: 1, b: 2 ``` --- # Part Two - Theory * Domain Driven Design * Software Architectures * Functional Programming * Railway Oriented Programming * Transforming Programming --- ## Domain Driven Design
Copyright 2018 Scott Wlaschin, Domain Modeling Made Functional.
* **Structure and language of software code should match the business domain.** * Bounded context: context within which a model applies * E.g Billing and Shipping are probably different contexts --- ### Domain Driven Design - Event pipelines
Difference between Event and Command is that Event is an noncancelable fact and Command is something which can fail. Domain Events are written in the past tense. Commands are written in the imperative. Example: * Event: BeerOrdered * Command: OrderBeer * Event : BeerDelivered --- ## Object Oriented Architecture Layer Cake
Copyright 2018 Scott Wlaschin, Domain Modeling Made Functional.
Use cases typically cut through layers. --- ## Architecture, Vertical Slices Can be improved by splitting flows into vertical slices.
Copyright 2018 Scott Wlaschin, Domain Modeling Made Functional.
--- ## Architecture, Vertical Slices Still not good.
Copyright 2018 Scott Wlaschin, Domain Modeling Made Functional.
--- ## Domain Centric Architectures ### Onion Architecture
Copyright 2018 Scott Wlaschin, Domain Modeling Made Functional.
--- ## Domain Centric Architectures ### Clean Architecture
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html --- ## Domain Centric Architectures Plus others such as hexagonal. --- ## Architecture, I/O Push I/O to edges.
Copyright 2018 Scott Wlaschin, Domain Modeling Made Functional.
--- ## Functional Programming, 101 * Functions * Functions * Functions * Immutability * Algebraic Data Types (e.g. a type formed by combining other types) * Product types * Sum types * Avoid (observable) side effects (mutable state, exceptions, I/O, etc) --- ### Functional Programming, schools Very roughly two styles * Pure * Exceptionalists Pure prefer pure functional programming where no side effects are not allowed (use IO monad et al.). Exceptionalists (or pragmatists) consider exceptions to be exceptional and therefore OK. --- ## Railway Oriented Programming ![RailwaySwitch](./Recipe_RailwaySwitch.png) -- ![RailwaySwitch1](./Recipe_RailwaySwitch1.png) -- ![RailwaySwitchTransparent](./Recipe_Railway_Transparent.png) https://fsharpforfunandprofit.com/posts/recipe-part2/ and https://fsharpforfunandprofit.com/posts/against-railway-oriented-programming/ --- ## Transforming Programming ```sh $ find . -type f | xargs wc -l | sort -n | tail -5 ``` ```javascript const double = (n) => n * 2; const increment = (n) => n + 1; // without pipeline operator double(increment(double(double(5)))); // 42 // with pipeline operator 5 |> double |> double |> increment |> double; // 42 ``` https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Pipeline_operator --- # Part Three - Techniques --- ## Techniques - Use types to describe domain, e.g. `UnvalidatedPayment` and `PaidInvoice` - Avoid primitive/generic types like: `Int`, `List` or `String` ```kotlin id: Int ``` vs ```kotlin id: UserId ``` - Add abstraction using types, functions, modules, packages, aliases, etc. --- ### OO vs. FP ```kotlin interface UserService { fun userExists(id: Int): Boolean } ``` vs. ```kotlin typealias UserExists = (Int) -> Boolean ``` Were to put/collect functions? The most important thing is to group them meaningfully. e.g. per (sub)domain or context. Different languages have different ways to group code e.g.: * modules * packages * objects * classes * etc. --- ## Techniques, Kotlin Example ```kotlin fun validateOrderId(id: Int): Boolean ``` vs. ```kotlin data class UnvalidatedOrderId(val id: Int) sealed class OrderId data class ValidOrderId(val id: Int): OrderId() data class InvalidOrderId(val id: Int): OrderId() typealias ValidateOrderId = (UnvalidatedOrderId) -> OrderId ``` --- ## Techniques, Scala Example ```scala def validateOrderId(id: Int): Boolean ``` vs. ```scala case class UnvalidatedOrderId(id: Int) sealed trait OrderId case class ValidOrderId(id: Int) extends OrderId case class InvalidOrderId(id: Int) extends OrderId type ValidateOrderId = UnvalidatedOrderId => OrderId ``` --- ## Techniques, TypeScript Example ```typescript function validateOrderId(id: number): boolean ``` vs. ```typescript type UnvalidatedOrderId = { readonly unvalidatedOrderId: number } type ValidOrderId = { readonly validOrderId: number } type InvalidOrderId = { readonly invalidOrderId: number } type OrderId = ValidOrderId | InvalidOrderId type ValidateOrderId = (unvalidatedOrderId : UnvalidatedOrderId) => OrderId ``` --- ## Techniques, F# Example ```fsharp let validateOrderId(id: int): bool ``` vs. ```fsharp type UnvalidatedOrderId = UnvalidatedOrderId of int type OrderId = | ValidOrderId of int | InvalidOrderId of int type ValidateOrderId = UnvalidatedOrderId -> OrderId ``` --- # Part Four - Example --- ## Example Case: User Borrows a Book *This is a **design** exercise to explore and refine domain model using types and abstractions.* *You should defer actual implementation as long as possible.* --- ## Case: user borrows a book, 1 Write minimal amount of code which might describe the use case ```kotlin data class User() data class Book() data class Borrow() typealias BorrowBook = (User, Book) -> Borrow ``` It doesn't even have to compile. *Note: this is not how DDD actually works but we just have to start somewhere.* --- ## Case: user borrows a book, 2 Work in small increments. Commit often. ```kotlin data class User(val id: Int) data class Book(val id: Int) data class Borrow(val user: User, val book: Book) typealias BorrowBook = (User, Book) -> Borrow ``` --- ## Case: user borrows a book, 3 Start figuring out different outcomes. ```kotlin data class User(val id: Int) data class Book(val id: Int) sealed class Borrow data class Borrowed(val user: User, val book: Book): Borrow() data class BookNotCurrentlyAvailable(val user: User, val book: Book): Borrow() typealias BorrowBook = (User, Book) -> Borrow ``` --- ## Case: user borrows a book, 4 All outcomes behind single `Borrow` type. ```kotlin data class User(val id: Int) data class Book(val id: Int) sealed class Borrow data class Borrowed(val user: User, val book: Book): Borrow() data class BookNotCurrentlyAvailable(val user: User, val book: Book): Borrow() data class BookNotFound(val book: Book): Borrow() data class UserNotFound(val user: User): Borrow() typealias BorrowBook = (User, Book) -> Borrow ``` --- ## Sidetrack Railway oriented programming. ```kotlin sealed class Result<out T, out E> data class Success<T, E>(val success: T) : Result<T, E>() data class Failure<T, E>(val error: E) : Result<T, E>() ``` --- ## Case: user borrows a book, 5 If we want keep `Success` and `Failure` cases separate ```kotlin data class User(val id: Int) data class Book(val id: Int) data class Borrowed(val user: User, val book: Book) sealed class BorrowFailure data class BookNotCurrentlyAvailable(val user: User, val book: Book): BorrowFailure() data class BookNotFound(val book: Book): BorrowFailure() data class UserNotFound(val user: User): BorrowFailure() typealias BorrowBook = (User, Book) -> Result<Borrowed, BorrowFailure> ``` --- ## Case: user borrows a book, 6 How do we get User and Book? ```kotlin data class UserId(val id: Int) data class BookId(val id: Int) sealed class Borrow data class Borrowed(val user: UserId, val book: BookId): Borrow() data class BookNotCurrentlyAvailable(val user: UserId, val book: BookId): Borrow() data class BookNotFound(val book: BookId): Borrow() data class UserNotFound(val user: UserId): Borrow() typealias FindUserById = (UserId) -> UserId? // ??? typealias UserExistsById = (UserId) -> Boolean // ??? typealias BorrowBook = (UserId, BookId) -> Borrow? ``` --- ## Case: user borrows a book, 7 Keep refining the domain using types. ```kotlin data class UnvalidatedUserId(val id: Int) data class UnvalidatedBookId(val id: Int) data class ValidUserId(val id: Int) data class ValidBookId(val id: Int) sealed class Borrow data class Borrowed(val user: ValidUserId, val book: ValidBookId): Borrow() data class BookNotCurrentlyAvailable(val user: ValidUserId, val book: ValidBookId): Borrow() data class BookNotFound(val book: UnvalidatedBookId): Borrow() data class UserNotFound(val user: UnvalidatedUserId): Borrow() typealias ValidateUserId = (UnvalidatedUserId) -> ValidUserId? typealias ValidateBookId = (UnvalidatedBookId) -> ValidBookId? typealias BorrowBook = (ValidateUserId) -> // dependency (ValidateBookId) -> // dependency (UnvalidatedUserId, UnvalidatedBookId) -> Borrow? ``` --- ## Case: user borrows a book, 8 Fix Event names and add Command. ```kotlin data class UnvalidatedUserId(val id: Int) data class UnvalidatedBookId(val id: Int) data class ValidUserId(val id: Int) data class ValidBookId(val id: Int) sealed class Borrowed data class BookBorrowed(val validUserId: ValidUserId, val validBookId: ValidBookId) : Borrowed() data class BookNotFound(val bookId: UnvalidatedBookId) : Borrowed() data class UserNotFound(val userId: UnvalidatedUserId) : Borrowed() data class BookNotCurrentlyAvailable(val validUserId: ValidUserId, val validBookId: ValidBookId) : Borrowed() data class BorrowBook(val unvalidatedBookId: UnvalidatedBookId, val unvalidatedUserId: UnvalidatedUserId) typealias ValidateUserId = (UnvalidatedUserId) -> ValidUserId? typealias ValidateBookId = (UnvalidatedBookId) -> ValidBookId? typealias BorrowBookFlow = (ValidateUserId) -> // dependency (ValidateBookId) -> // dependency (BorrowBook) -> Borrowed ``` --- ## Case: user borrows a book, 9 Solve how to mark book borrowed. Good enough. We're done 🎉 ```kotlin data class UnvalidatedUserId(val id: Int) data class UnvalidatedBookId(val id: Int) data class ValidUserId(val id: Int) data class ValidBookId(val id: Int) sealed class Borrowed data class BookBorrowed(val validUserId: ValidUserId, val validBookId: ValidBookId) : Borrowed() data class BookNotFound(val bookId: UnvalidatedBookId) : Borrowed() data class UserNotFound(val userId: UnvalidatedUserId) : Borrowed() data class BookNotCurrentlyAvailable(val validUserId: ValidUserId, val validBookId: ValidBookId) : Borrowed() data class BorrowBook(val unvalidatedBookId: UnvalidatedBookId, val unvalidatedUserId: UnvalidatedUserId) typealias ValidateUserId = (UnvalidatedUserId) -> ValidUserId? typealias ValidateBookId = (UnvalidatedBookId) -> ValidBookId? typealias MarkBookBorrowed = (ValidUserId, ValidBookId) -> BookBorrowed? typealias BorrowBookFlow = (ValidateUserId, ValidateBookId, MarkBookBorrowed) -> // dependencies (BorrowBook) -> Borrowed ``` --- ## Case: user borrows a book, 10 Implementation. ```kotlin typealias BorrowBookFlow = (ValidateUserId, ValidateBookId, MarkBookBorrowed) -> // dependencies (BorrowBook) -> Borrowed val borrowBookFlow: BorrowBookFlow = { validateUserId, validateBookId, markBookBorrowed -> { borrowBook -> val validUserId = validateUserId(borrowBook.unvalidatedUserId) val validBookId = validateBookId(borrowBook.unvalidatedBookId) when { validUserId == null -> UserNotFound(borrowBook.unvalidatedUserId) validBookId == null -> BookNotFound(borrowBook.unvalidatedBookId) else -> markBookBorrowed(validUserId, validBookId) ?: BookNotCurrentlyAvailable(validUserId, validBookId) } } } ``` --- # Part Five - Coding Exercises Some suggestions using public library as a playground: * Extend example case with book return * Add a book into library catalog * Validate book info (e.g. name, author, isbn) * User renews an item * Item can be renewed up to five times in a row. * Overdue item notification * Send notification * Include accumulated fine * Lost item handling * Mark item lost * Add fine * Send notification --- # Part Four - Demos and Discussion --- class: center, middle # Thank you!


| Save Time
Series
|
|
| Multiple time series
can be saved to files with the respective time series names at the
selected directory. This operation can be repeated, so that different
directories can be chosen.
The format of the data files can be plain text (ascii), excel (xls) and matlab data files (mat). Note that in each data file a single time series is saved with the name of the time series and a suffix determined by the selected format. |
|
|
Select one or more time series ... |
|
|
Multiple time series names can be selected from this list. This can be done by standard use of the mouse: a click on the first name and Shift^click on the last name selects all names between the first and the last name; a click on the first name and subsequent Ctrl^clicks on other names select these names including the first name; Ctrl^a selects the whole list. |
|
| Select directory |
|
| This button opens a matlab dialogue window to specify the directory path. | |
| Data file format |
|
| One of three modes of data format can be selected: plain text (ascii), excel (xls) and matlab data files (mat). The selected format is used for all the selected time series. | |
| Save selected scalar time series |
|
| By pressing this button the selected time series will be attempted to be saved to data files with the same names and a suffix of the specified format. | |
| Running messages |
|
| Messages about the files being saved are displayed here. | |
| Exit |
|
| The window is closed. | |
| Help |
|
| This page is displayed. |


[1]
Awesome user for good strong cover for Aria has many settings.
[2]
after a droid powered phone i 've been an amazing tools that have seen and cramped keys are annoying.


{% extends "Layout.html" %} {% block content %}
Some quick example text to build on the card title and make up the bulk of the card's content.


Hyderabad Bus Stop or Mahatma Gandhi Bus Station
, as it is locally known, is 2.4 KM away from the very famous Charminar. Being a tourist hub, the city has very good commuting facilities. You can catch a bus to cover this 10 mins journey or hail an auto-rickshaw to take you there.
You may also consider booking an online cab for a hassle-free ride. And if you are self-driving then you can use your motorcycle, car or even a bicycle.


Looking for Your Next Adventure?
Machine Learning, Put to Work for You.
 You might us it to read and write long sequences of words.
Help us help you.
Machine Learning, Put to Work for You.
 You might us it to read and write long sequences of words.
Help us help you.


Quick Links
English
VMware.com
Store
Partners
Partner 1
John Cooper
Logout
Toggle navigation
Products
Manage My Products
My Products
License Keys
Download History
Register Product
My Evaluations
Manage My Subscription Services
My Subscription Services
Add-On Requests
Purchase New Service
Purchase Add-On
All Products & Programs
All Products
Trial & Free Products
Product Patches
Beta Program
Virtual Appliances
Beta Program
Accounts
Manage Accounts
Account Summary
Users & Permissions
Account Activities
Reports
View Purchases
Order History
Subscription Billing Statements
Manage Funds
Enterprise Purchasing Token
Cloud Credit
Subscription Funds
Support
Support
Get Support
Support Requests History
Support By Product
Support Contracts
Resources & Tools
Support Center
Knowledge Base
Partner Locator
License Tool Tracker
Product Documentation
Support Tools
Communities
Training
View and Download Products
Manage License keys
Get Support
26
View Alerts
Manage Users and Permissions
Subscription services
Download reports
Search Support
Support Requests
Status Open
SR
12238887710
Account
522780708
Last Updated 12/4/2013
Issue Description cant see vlan on virtual machine number 5 in location los angeles on April 14 ...
Status Open
SR
12238887710
Account
522780708
Last Updated 12/4/2013
Issue Description cant see vlan on virtual machine number 5 in location los angeles on April 14 ...
Status Open
SR
12238887710
Account
522780708
Last Updated 12/4/2013
Issue Description cant see vlan on virtual machine number 5 in location los angeles on April 14 ...
View all
Get Support
My Evaluations
Hands on Lab
Exp 10-12-2014
30 Days Remaining
Hands on Lab
Exp 10-12-2014
30 Days Remaining
View all
Start New Eval
Subscription services
26 subscription Funds
View Funds
3 funds expiring soon
View Expiring Funds
Service ID
Service Status
Service Type
Remaining term
View all
View all Services
Alerts
Account
Unread
Latest Alert
View all
Accounts
Agility Worldwide Inc - Amer
default
234234234887
Agility Worldwide Inc - Amer
234234234887
Agility Worldwide Inc - Amer
234234234887
Sign up for
Vmware Vcloud Air Disaster Recovery
Protect your data in case of emergency
Try our cloud services
Extend your cloud network power
Get 90 days free horizon DaaS
Featured Training Courses
vCenter Site Recover Manager
June 23 - Jul 1, 2014, 9am - 5pm
Denver CO, United states
Get 90 days free horizon DaaS
June 23 - Jul 1, 2014, 9am - 5pm
Denver CO, United states
Featured Products
Vmware Fusion 6 professional
Virtual machines on Mac or PC
30% off December Only
Buy Online
Upgrade
Vmware Fusion 6 professional
Virtual machines on Mac or PC
30% off December Only
Buy Online
Upgrade
Vmware Fusion 6 professional
Virtual machines on Mac or PC
30% off December Only
Buy Online
Upgrade
Vmware Fusion 6 professional
Virtual machines on Mac or PC
30% off December Only
Buy Online
Upgrade
Vmware Fusion 6 professional
Virtual machines on Mac or PC
30% off December Only
Buy Online
Upgrade
Vmware Fusion 6 professional
Virtual machines on Mac or PC
30% off December Only
Buy Online
Upgrade


Administrative Assistant
Research Engineer (CNRS)
Research Director (CNRS)
Research Engineer (CNRS)
PhD Student
Research Engineer
PhD Student
PhD Student, co-supervised with CEN, Grenoble
Research Engineer
Long-term visitor from Mercator Océan
PhD Student
PhD Student
Post-Doc
PhD Student
PhD Student
Visiting Scientist
Research Engineer
PhD Student, co-supervised with GLACE group at IGE


STUDENT DETAILS
Id
Fullname
Number
Email
Skills
Image
Edit Options
Delete Options
{% for displaystudent in Hrproject %}
{{displaystudent.id}}
{{displaystudent.fullname}}
{{displaystudent.number}}
{{displaystudent.email}}
{{displaystudent.skills}}
Edit
Delete
{% endfor %}
Back To Home Page
|
Back To Edit page


Install Sticky on your home screen, and access it just like a regular app. It really is that simple!
Add to Home ScreenInstall Sticky on your home screen, and access it just like a regular app. Open your Safari menu and tap "Add to Home Screen".
Maybe later


3 Character encoding and Transcription
4.2 Illustrative sentences (Examples)
5.1 Morphosyntactic annotations
6.1 Translating lemmas and multi-word units
7.10 Invariable nouns and adjectives
10.1 One entry or two entries?
10.5 Constructions vs. sample sentences
12 Sources and responsibilities
Charly Moerth, Stephan ProcházkaVienna, 2017 - 2019
Most of the examples in the following guidelines are taken from dictionaries that are being produced as part of the VICAV programme. These are A Machine-readable Dictionary of Egyptian Arabic, A Machine-readable Dictionary of Rabat Arabic, A Digital Dictionary of Tunis Arabic, A Digital Dictionary of Damascus Arabic and A Machine-readable Dictionary of Modern Standard Arabic. Some examples are also taken from the Dictionary of Modern Persian.
The VICAV dictionaries are encoded according to the Guidelines of the Text Encoding Initiative (P5). They are conceptualised as a specific type of text and are therefore encoded with text elements. Each dictionary starts with a teiHeader element which contains the metadata of the dictionary.
The lexicographic data are placed in typed div elements. Thus, our TEI dictionaries basically look like this:
<TEI version="5.0">
<teiHeader>
...
</teiHeader>
<text>

<entry>...</entry>
<entry>...</entry>
<entry>...</entry>
...
...
...

</text>
</TEI>
The body of the VICAV dictionaries can not only contain simple entries but also examples which are encoded in cit/quote constructs. The rationale behind keeping example sentences outside the entries is to be able to reuse them in different parts of the dictionary (See below: Examples and Creating examples).

<entry>...</entry>
<entry>...</entry>
<entry>...</entry>
...
...
...

<cit type="example">...</cit>
<cit type="example">...</cit>
<cit type="example">...</cit>
...
...
...

Character encoding is based on Unicode (UTF-8). The transcription follows a system which is widely applied in Arabic studies and also used in reference works such as the Encyclopedia of Arabic Language and Linguistics (Leiden: Brill, 2006-2009).
Following a widespread convention in Arabic dialectology, the data is presented in in a broad phonological transcription that does not indicate allophones. The following list represents most of the signs used in this application.
| VICAV | IPA | arabic | DIN | chat | Sound Description | Unicode Character Name |
| ʔ | ʔ | ء,أ,إ,آ,ئ,ؤ | ʾ | 2 | Glottal stop | LATIN LETTER GLOTTAL STOP |
| ā | aː | ا,ى | ā | a | Long vowel a | LATIN SMALL LETTER A WITH MACRON |
| ḅ | bˤ | ب | b | b | Pharyngealized voiced bilabial stop | LATIN SMALL LETTER B WITH DOT BELOW |
| ʕ | ʕ | ع | ʿ | 3 | Pharyngal voiced fricative | LATIN LETTER PHARYNGEAL VOICED FRICATIVE |
| ḏ̣ | ðˤ | ض,ظ | ḍ,ẓ | dh,d,6,9 | Pharyngealized voiced dental fricative | LATIN SMALL LETTER D WITH LINE BELOW + COMBINING DOT BELOW |
| ḏ | ð | ذ | ḏ | dh | Voiced dental fricative | LATIN SMALL LETTER D WITH LINE BELOW |
| ē | eː | ي | e,é | Long vowel e | LATIN SMALL LETTER E WITH MACRON | |
| ġ | ɣ | غ | ġ | gh,3 | Voiced velar fricative | LATIN SMALL LETTER G WITH DOT ABOVE |
| ǧ | d͡ʒ | ج | ǧ | dj | Voiced palato-alveolar affricate | LATIN SMALL LETTER G WITH CARON |
| ḥ | ħ | ح | ḥ | 7 | Voiceless pharyngeal fricative | LATIN SMALL LETTER H WITH DOT BELOW |
| ī | iː | ي | ī | i,ee | Long vowel i | LATIN SMALL LETTER I WITH MACRON |
| ᴵ | ə | Short Schwa vowel | MODIFIER LETTER CAPITAL I | |||
| ə | ə | Schwa vowel | LATIN SMALL LETTER SCHWA | |||
| ᵊ | ə | Short Schwa vowel | MODIFIER LETTER SMALL SCHWA | |||
| ḷ | lˤ | ل | l | l | Pharyngealized alveolar lateral approximant | LATIN SMALL LETTER L WITH DOT BELOW |
| ṃ | mˤ | م | m | m | Pharyngealized bilabial nasal | LATIN SMALL LETTER M WITH DOT BELOW |
| ō | oː | و | o | Long vowel o | LATIN SMALL LETTER O WITH MACRON | |
| ṛ | ʁˁ | ر | r | r | Pharyngealized voiced uvular fricative | LATIN SMALL LETTER R WITH DOT BELOW |
| ṣ | sˤ | ص | ṣ | 9 | Pharyngealized voiceless alveolar sibilant | LATIN SMALL LETTER S WITH DOT BELOW |
| š | ʃ | ش | š | sh,ch | Voiceless palato-alveolar sibilant | LATIN SMALL LETTER S WITH CARON |
| ṭ | tˤ | ش | ṭ | t,6 | pharyngealized voiceless alveolar stop | LATIN SMALL LETTER T WITH DOT BELOW |
| ṯ | θ | ث | ṯ | th,s | Voiceless dental non-sibilant fricative | LATIN SMALL LETTER T WITH LINE BELOW |
| ū | uː | و | ū | oo,ou,u | Long vowel u | LATIN SMALL LETTER U WITH MACRON |
| ẓ | zˤ | ز,ظ | z,ẓ | z | Pharyngealized voiced alveolar sibilant | LATIN SMALL LETTER Z WITH DOT BELOW |
| ž | ʒ | ج | ǧ | j | Voiced palato-alveolar sibilant | LATIN SMALL LETTER Z WITH CARON |
There are three types of entries: lemmas, multi-word units (MWUs) and illustrative sentences (examples).
Lemmas and MWUs basically have the same structure.
<entry xml:id="kitaab_001">
<form type="lemma">
<orth xml:lang="ar-arz-x-cairo-vicav">kitāb</orth>
</form>
...
</entry>
<entry xml:id="fi_0">
<form type="multiWordUnit">
<orth xml:lang="ar-arz-x-cairo-vicav">fi baḥr</orth>
</form>
...
</entry>
In TEI (P5) illustrative sentences are encoded making use of a cit/quote construction.
<cit xml:id="yibqa_ustaz_001" type="example">
<quote xml:lang="ar-arz-x-cairo-vicav">ḥayibʔa ustāz in šāʔ allāh.</quote>
...
</cit>
Ideally, examples should consist in complete sentences. Examples should be concise, but can also contain several sentences. If dialogical models are involved, sentences are to be separated by a dash.
...
<quote xml:lang="ar-arz-x-cairo-vicav">tislam idēki. - ʔaḷḷāh yisallimak.</quote>
...
Proverbs are a subtype of example.
<cit xml:id="il_cagala_min_ish_shitaan_001" type="example" subtype="proverb">
<quote xml:lang="ar-arz-x-cairo-vicav">il-ʕagala min iš-šiṭān.</quote>
<cit type="translation" xml:lang="en">
<quote>Haste makes waste.</quote>
</cit>
</cit>
As can be seen in the examples above, entries are assigned a unique identifier. In the VICAV dictionaries, these are made up of characters that are restricted to letters in the ASCII range. Usually, the IDs are created by pressing Ctrl + I. If VLE (the editor tool) creates an ID already existing in the database, the entry can not be saved. In such cases, the user has to modify the ID manually by e.g. increasing the number at the end of the ID.
There are two types of form elements: lemmas and wordforms. Nominals are usually furnished with plural forms, verbs with the third person singular present tense.
<entry xml:id="balad_0">
<form type="lemma">
<orth xml:lang="ar-arz-x-cairo-vicav">balad</orth>
</form>
...
<form type="inflected" ana="#n_pl">
<orth xml:lang="ar-arz-x-cairo-vicav">bilād</orth>
</form>
...
</entry>
The different morphological forms are encoded through labels in the ana “analytic” attribute. Examples of frequent labels are:
| Value | Meaning |
| #adj_f | feminine form of an adjective |
| #adj_pl | plural of an adjective |
| #n_constructState | construct state of a noun |
| #n_pl | plural of a noun |
| #n_unit | nomen unitatis |
| #v_pres_sg_p3 | 3rd person singular present tense |
| #v_vn | verbal noun |
An example with a verb:
...
<form type="inflected" ana="#v_pres_sg_p3">
<orth xml:lang="ar-apc-x-damascus-vicTrans">yǝnšor</orth>
</form>
...
The status constructus of a noun can be registered like this:
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">mara</orth> </form> <gramGrp> <gram type="pos">noun</gram> <gram type="root" xml:lang="ar-arz-x-cairo-vicav">mrʔ</gram> </gramGrp> <form type="inflected" ana="#n_constructState"> <orth xml:lang="ar-arz-x-cairo-vicav">mirāt</orth> </form> ...
Only headwords are marked up as variants.
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">tžawwaz</orth> </form> <form type="lemmaVariant"> <orth xml:lang="ar-apc-x-damascus-vicTrans">dzawwaž</orth> </form> ...
This is the only position where the form element may have the type="lemmaVariant" attribute. All other variants are simply listed but not classified. In the following example two competing morphological forms are listed.
... <form type="inflected" ana="#v_pres_sg_p3"> <orth xml:lang="ar-apc-x-damascus-vicTrans">yǝṣal</orth> </form> <form type="inflected" ana="#v_pres_sg_p3"> <orth xml:lang="ar-apc-x-damascus-vicTrans">yūṣal</orth> </form> ...
The next example shows alternative plural forms.
... <form type="inflected" ana="#n_pl"> <orth xml:lang="ar-apc-x-damascus-vicTrans">kǝnaz</orth> </form> <form type="inflected" ana="#n_pl"> <orth xml:lang="ar-apc-x-damascus-vicTrans">kanzāt</orth> </form> ...
Variants can be assigned usage labels indicating e.g. a particular register. The more frequent variant should precede less frequent ones.
Translations of lemmas and MWUs are given in sense elements.
<entry xml:id="bard_0">
<form type="lemma">
<orth xml:lang="ar-arz-x-cairo-vicav">bard</orth>
</form>
...
<sense>
<cit type="translation" xml:lang="en">
<quote>coldness</quote>
</cit>
<cit type="translation" xml:lang="de">
<quote>Kälte</quote>
</cit>
</sense>
...
</entry>
Semantically unrelated homophones or items with clearly differing semantics have to be documented with several sense elements. In the following example, the Egyptian lemma balad is represented with two senses.
... <sense> <cit type="translation" xml:lang="en"> <quote>country</quote> </cit> <cit type="translation" xml:lang="en"> <quote>land</quote> </cit> ... </sense> <sense> <cit type="translation" xml:lang="en"> <quote>city</quote> </cit> <cit type="translation" xml:lang="en"> <quote>town</quote> </cit> ... </sense> ...
Another example is rās:
... <sense> <cit type="translation" xml:lang="de"> <quote>Kopf</quote> </cit> </sense> <sense> <cit type="translation" xml:lang="de"> <quote>Anfang</quote> </cit> </sense> ...
Ambiguous translations are often made explicit by additional information narrowing down the semantic scope of the particular item.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vcvTrans">kibīr</orth> </form> <sense> <cit type="translation" xml:lang="en"> <quote>big</quote> </cit> </sense> <sense> <cit type="translation" xml:lang="en"> <quote>old <seg type="hint">of persons</seg> </quote> </cit> </sense> ...
Translation equivalents of examples are indicated in cit/quote constructions.
<cit xml:id="tislam_ideeki__001" type="example">
<quote xml:lang="ar-arz-x-cairo-vicav">tislam idēki! - ʔaḷḷāh yisallimak.</quote>
<cit type="translation" xml:lang="en">
<quote>Thank you! - Not at all.</quote>
</cit>
</cit>
Sometimes it is necessary to add literal translations. This is handled in analogous manner.
<cit xml:id="tislam_ideeki__001" type="example">
<quote xml:lang="ar-arz-x-cairo-vicav">tislam idēki! - ʔaḷḷāh yisallimak.</quote>
<cit type="translation" xml:lang="en">
<quote>Thank you! - Not at all.</quote>
</cit>
<cit type="literalTranslation" xml:lang="en">
<quote>May your hands be healthy! - May God keep you healthy.</quote>
</cit>
</cit>
When the translation of a term is not very common or easily understandable in the target language, it is common practise to explain the item instead of or in addition to the translation. Explanations can be understood as same language ‛translations’. In TEI, the def “definition” element is used to encode this part of a dictionary entry.
...
<sense>
<def xml:lang="en">a sweet dessert made of semolina, butter, sugar and rosewater</def>
<def xml:lang="de">Süßigkeit aus Gries, Butter, Zucker und Rosenwasser</def>
<cit type="translation" xml:lang="en">
<quote>Basbusa</quote>
</cit>
</sense>
...
Very often lexical items are particular to the culture of the source language and do not have adequate equivalents in a target language. In such cases, it is important not to enter definitions or explanations in the cit/quote element. Wherever possible, we have tried to furnish translations (very often transliterations) even though they might not be very common in the target language. Explanations have to go into the def element.
The above example shows such a case. In principle, def can be used to encode any information related to ‛meaning’ that does not qualify as a translation in the narrower sense. In the following example the def element simply explains what the place name stands for.
...
<sense>
<def xml:lang="en">the southernmost of Egypt’s western oases</def>
<cit type="translation" xml:lang="en">
<quote>Kharga</quote>
</cit>
...
</sense>
...
How to write/transliterate place names and person names is an age-old problem. When several graphematic variants exist, we attempt to choose the most common one.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">šubra</orth> </form> ... <sense> <def xml:lang="en">a residential area in Cairo</def> <cit type="translation" xml:lang="en"> <quote>Shubra</quote> </cit> <cit type="translation" xml:lang="de"> <quote>Schubra</quote> </cit> </sense> ...
Synonyms are encoded as pointers to other entries in the dictionary. They have always to be encoded inside sense elements.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">ʔaṣl-an</orth> </form> ... <sense> <xr type="syn"> <ref xml:lang="ar-arz-x-cairo-vicav">fi l-ʔaṣl</ref> </xr> <cit type="translation" xml:lang="en"> <quote>initially</quote> </cit> <cit type="translation" xml:lang="en"> <quote>originally</quote> </cit> </sense> ...
The gramGrp element can accomodate a wide range of grammatical information such as word class (=pos: part-of-speech), the consonantal root and/or the verb class.
<entry xml:id="badal_001">
<form type="lemma">
<orth xml:lang="ar-arz-x-cairo-vicav">badal</orth>
</form>
<gramGrp>
<gram type="pos">verb</gram>
<gram type="root">bdl</gram>
<gram type="derivedVerbClass">III</gram>
</gramGrp>
...
</entry>
The gramGrp element can appear in two places: when the information refers to the lemma it is put after the form[@type=lemma] element. In many cases, the grammatical information only refers to particular senses. It is then placed inside the sense element as the first item. For the second case have a look at chapters Arguments and Constructions.
The most common POS labels are listed in the following table. Most of them are self-explanatory.
| Label | explanation |
| adjective | Adjective |
| noun | Noun |
| ordinal | Ordinal number |
| particle | verb |
| pluralNoun | A plural noun that has an entry of its own. This does not necessarily mean that the singular does not exist, but that the plural displays semantic particularities. |
| verb | verb |
The labels ideally correspond to ISOcat concepts. However, there are exceptions:
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">ʕarabi</orth> </form> <gramGrp> <gram type="pos">glottonym</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">ʕrb</gram> </gramGrp> ...
Roots are indicated in accordance with etymology. The root of the Arabic equivalent of ‘to yawn’ is encoded like this:
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">ʔittāwib</orth> </form> <gramGrp> <gram type="pos">verb</gram> <gram type="derivedVerbClass">I-t</gram> <gram type="root" xml:lang="ar-arz-x-cairo-vicav">ṯʔb</gram> </gramGrp> ...
Loans of the structure CāC(a) are invariably assigned CʔC.
| Word | Root |
| bāṣ | bʔṣ |
| ḍāma | ḍʔm |
| kār | kʔr |
Other loans are reduced to their consonantal skeleton.
In multi-word units the single items are separated by blanks.
... <form type="multiWordUnit"> <orth xml:lang="ar-apc-x-damascus-vicTrans">rās ǝž-žabal</orth> </form> <gramGrp> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">rʔs ǧbl</gram> </gramGrp> ...
The following table contains a list of special cases.
| Word | Root |
| mayy, mayye, māyya, mā ... | mwh |
| sana ‘year’ | sn |
| istanna | ʔny |
| kam | km |
| qaddēš, ʔaddēš, ... | qdr |
| ʔayn, wēn, fēn, ... | ʔyn |
| ʔēmta, ʔimta, ... | mty |
| šī, šuwayy ... | šyʔ |
| walla ‘or’ | w ʔly |
| ʔillā | ʔly |
Prepositions are dealt with in the following manner:
| Word | Root |
| bi | b |
| li | l |
| ʔilā | ʔly |
| ʕalā | ʕly |
| maʕa | mʕ |
| fī | fy |
Gender is only indicated with morphologically unmarked feminine common and proper nouns.
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">šamᵊs</orth> </form> <gramGrp> <gram type="pos">noun</gram> <gram type="gender">feminine</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">šms</gram> </gramGrp> ...
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">zēnab</orth> </form> <gramGrp> <gram type="pos">properNoun</gram> <gram type="gender">female</gram> <gram type="root" xml:lang="ar-arz-x-cairo-vicav">zynb</gram> </gramGrp> ...
When verbs display special developments in the passive voice they can be treated as lemmata in their own right.
... <form type="lemma"> <orth xml:lang="ar-x-DMG">šufiya</orth> <orth xml:lang="ar">شفي</orth> </form> <gramGrp> <gram type="pos">verb</gram> <gram type="derivedVerbClass">I</gram> <gram type="voice">passive</gram> <gram type="root" xml:lang="ar">شفي</gram> <gram type="root" xml:lang="ar-x-DMG">šfy</gram> </gramGrp> ...
In the VICAV dictionaries, we apply a mixed system of indicators mainly making use of the labels traditionally used in Arabic linguistics. In cases not covered by this system, we use labels analogous to Woidich 2006 (Das Kairenisch-Arabische).
| Traditional | Woidich | Example |
| I | katab | |
| II | darris | |
| III | zākir | |
| IV | ʔalqa | |
| t-I | ʔitkatab | |
| V | ʔitdarris | |
| VI | ʔitdāra | |
| VIw | tlūṣiq | |
| VII | ʔinṣaṛaf | |
| VIII | ʔintaẓaṛ | |
| IX | ʔiḥmaṛṛ | |
| X | ista-I ista-II ista-III |
ʔistaxdim ʔistirayyaḥ ʔistabārik |
Quadriliteral verbs are assigned the values Iq (=CaCCaC) and IIq (=taCaCCaC).
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">tbahdal</orth> </form> <gramGrp> <gram type="pos">verb</gram> <gram type="derivedVerbClass">IIq</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">bhdl</gram> </gramGrp> ...
Nouns which are only used in the plural form are encoded as pluralNouns.
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">ḥǝlwīyāt</orth> </form> <gramGrp> <gram type="pos">pluralNoun</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">ḥlw</gram> </gramGrp> ...
Collective nouns are usually registered with their respective singulative and the plural forms.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">baṣal</orth> </form> <gramGrp> <gram type="pos">collectiveNoun</gram> <gram type="root" xml:lang="ar-arz-x-cairo-vicav">bṣl</gram> </gramGrp> <form type="inflected" ana="#n_unit"> <orth xml:lang="ar-arz-x-cairo-vicav">baṣala</orth> </form> <form type="inflected" ana="#n_pl"> <orth xml:lang="ar-arz-x-cairo-vicav">baṣalāt</orth> </form> ...
If a collective noun has no singulative this is recorded in the following manner:
... <form type="lemma"> <orth xml:lang="ar-aeb-x-tunis-vicav">sfinnārya</orth> </form> <gramGrp> <gram type="pos">collectiveNoun</gram> <gram type="usg">has no unit noun</gram> <colloc type="countNoun" lang="ar-aeb-x-tunis-vicav">kaʕba</colloc> <gram type="root" xml:lang="ar-aeb-x-tunis-vicav">sfnry</gram> </gramGrp> <sense> <cit type="translation" xml:lang="en"> <quote>carrots</quote> </cit> ... </sense> ...
Elatives should be registered under the respective positive forms.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">kuwayyis</orth> </form> <form type="inflected" ana="#adj_sg_f"> <orth xml:lang="ar-arz-x-cairo-vicav">kuwayyisa</orth> </form> <form type="inflected" ana="#adj_pl"> <orth xml:lang="ar-arz-x-cairo-vicav">kuwayyisīn</orth> </form> <form type="inflected" ana="#adj_elative"> <orth xml:lang="ar-arz-x-cairo-vicav">ʔaḥsan</orth> </form> ...
In some cases it may make sense to treat a particular elative as a lexeme in its own right.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">ʔaḥsan</orth> </form> <gramGrp> <gram type="pos">elative</gram> <gram type="root" xml:lang="ar-arz-x-cairo-vicav">ḥsn</gram> </gramGrp> <sense> <cit type="translation" xml:lang="en"> <quote>better</quote> </cit> <ptr type="example" target="izzayyi_abuuk__001"/> <ptr type="example" target="ahsan_min_balaash_001"/> <ptr type="example" target="bukra_tib_a_ahsan_001"/> <ptr type="example" target="ahsan_haaga_taaxud_taaks_001"/> </sense> ...
Many languages have special words that are placed between a numeral and a counted noun. This word class, which is also referred to as classifier, also exists in spoken Arabic varieties, albeit it is not as pervasive as in other languages such as many eastern Indo-European languages or the languages of East Asia (Chinese, Korean, Japanese).
If a noun is used with a count noun before numerals this is indicated in a colloc element.
... <form type="lemma"> <orth xml:lang="ar-aeb-x-tunis-vicav">brīk</orth> <bibl>Ritt-Benmimoun 2014</bibl> <bibl>Singer 1984, p.67</bibl> </form> <gramGrp> <gram type="pos">collectiveNoun</gram> <gram type="root" xml:lang="ar-aeb-x-tunis-vicav">brk</gram> <colloc type="countNoun" xml:lang="ar-aeb-x-tunis-vicav">kaʕba</colloc> </gramGrp> ...
An analogous example is this:
... <form type="lemma"> <orth xml:lang="ar-aeb-x-tunis-vicav">bṣal</orth> <bibl>Ritt-Benmimoun 2014</bibl> </form> <gramGrp> <gram type="pos">collectiveNoun</gram> <gram type="root" xml:lang="ar-aeb-x-tunis-vicav">bṣl</gram> <colloc type="countNoun" xml:lang="ar-aeb-x-tunis-vicav">ṛāṣ</colloc> </gramGrp> ...
Many Arabic dialects have nominals which do not display feminine or plural forms. These are identified with a gram element and a morphType attribute.
...
<gramGrp>
<gram type="pos">adjective</gram>
<gram type="morphType">invariable</gram>
</gramGrp>
...
Adjectives or nouns which are participles derived from verbal forms are furnished with an additional type="morph" attribute.
<entry xml:id="mashhur_001">
<form type="lemma">
<orth xml:lang="ar-arz-x-cairo-vicav">mašhūr</orth>
</form>
<gramGrp>
<gram type="pos">adjective</gram>
<gram type="morph">passiveParticiple</gram>
<gram type="root" xml:lang="ar-arz-x-cairo-vicav">šhr</gram>
</gramGrp>
...
</entry>
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">mǝtʕāwen</orth> </form> <gramGrp> <gram type="pos">noun</gram> <gram type="morph">activeParticiple</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">ʕwn</gram> </gramGrp> ...
In many cases it is necessary to furnish information about contexts, situations in which lexical items are being used. Such information is typically to be found in sense elements.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">ʔafandim</orth> </form> <sense> <usg type="prag" xml:lang="en">respectful form of address to a man or a woman</usg> <usg type="prag" xml:lang="de">höfliche Anrede an einen Mann oder eine Frau</usg> ... </sense> ...
When not sure whether to apply a usg or def element, ask yourself if it possible to formulate the information saying used as or used in. In the afandim example above one might consider reformulating the usage label as used as a respectful form of address ....
Another example:
...
<sense>
<usg type="prag" xml:lang="en">to attract the evil eye by talking about something</usg>
<cit type="translation" xml:lang="en">
<quote>to jinx</quote>
</cit>
</sense>
...
The following code snipped furnishes a good example of a quite complex situation. The noun has two morphological forms which are mutually exclusive. The grammatical information in both senses is corroborated by examples.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">maṛa</orth> </form> ... <sense> <usg type="prag" xml:lang="en">often derogatory</usg> <usg xml:lang="en">absolute state only</usg> <cit type="translation" xml:lang="en"> <quote>woman</quote> </cit> <ptr type="example" target="inti_ya_mara_tacaali_001"/> </sense> <sense> <usg xml:lang="en">construct state only</usg> <cit type="translation" xml:lang="en"> <quote>wife</quote> </cit> <ptr type="example" target="miraatu_ga_lha_walad_001"/> </sense> ...
Mind that the usg element can also be applied in sample sentences.
...
<cit xml:id="sharraftuuna_allaah_yisharraf_mi_daarak_001" type="example">
<quote xml:lang="ar-arz-x-cairo-vicav">šaṛṛaftūna. - ʔaḷḷāh yišaṛṛaf miʔdāṛak.</quote>
<usg type="prag" xml:lang="en">This phrase is used upon leaving.</usg>
<cit type="literalTranslation" xml:lang="en">
<quote>You have honoured us (i.e. visiting us). - God may honour your worth.</quote>
</cit>
</cit>
...
Another option are usage labels which can be used to indicate functional constraints.
... <form> <orth xml:lang="ar-apc-x-damascus-vicTrans">la-ḥāl-</orth> </form> <gramGrp> <gram type="usg">only with pronominal suffixes</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">l ḥwl</gram> </gramGrp> ...
The values in the xml:lang attributes have been designed in compliance with Best Current Practice 47 (BCP 47) which in turn refers to and aggregates a number of ISO standards (639-1, 639-2, ISO 15924, ISO 3166-1). The labels used as values in the xml:lang attributes reflect a hybrid system that indicates both linguistic variety and writing system. Examples of such language tags are:
| Value | Explanation | Used in dictionary |
| de | German | |
| en | English | |
| ar-aeb-x-tunis-vicav | Tunis Arabic, VICAV transcription | aeb_eng_001__v001 |
| ar-arz-x-cairo-vicav | Cairo Arabic, VICAV transcription | arz_eng_006 |
| ar-arz-x-cairo-arabic | Cairo Arabic, Arabic script | arz_eng_006 |
| ar-apc-x-damascus-vicTrans | Damascus Arabic, VICAV transcription | apc_eng_002 |
| ar-ary-x-sale-vicTrans | Sale Arabic, VICAV transcription | ary_s_rabat_eng_002 |
| ar-ary-x-vicTrans | Moroccan Arabic, VICAV transcription | ary_eng_001 |
Let us analyse one example in detail. The language identifiers used for Egyptian Arabic are ar-arz-x-cairo-vicav and ar-arz-x-cairo-arabic.
| Component | System | Meaning |
| ar | ISO 639-1 | Arabic |
| arz | ISO 639-3 | Egyptian Arabic |
| x | BCP 47 | Begin of private use area |
| cairo | Location | |
| vicav | Transcription system of the VICAV Project |
Etymologies are encoded by means of the etym element. According to our schema, these also have to be top-level elements which are placed after the gramGrp element.
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">ʔaṣanṣēr</orth> </form> <gramGrp>...</gramGrp> <etym>loanword<lang>French</lang> <mentioned>ascenseur</mentioned> </etym> ...
The applied system is supposed to retain flat hierarchies.
Feminine forms of substantives are encoded as separate entries.
<entry xml:id="gaar_001"> <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">gāṛ</orth> </form> ... <sense> <cit type="translation" xml:lang="en"> <quote>neighbour</quote> </cit> </sense> </entry> <entry xml:id="gaara_001"> <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">gāṛa</orth> </form> ... <sense> <cit type="translation" xml:lang="en"> <quote>neighbour (female)</quote> </cit> </sense> </entry>
Homonyms with diverging morphological forms are also encoded as separate entries.
<entry xml:id="beet_000"> <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">bēt</orth> </form> <gramGrp> <gram type="pos">noun</gram> <gram type="root" xml:lang="ar-arz-x-cairo-vicav">byt</gram> </gramGrp> <form type="inflected" ana="#n_pl"> <orth xml:lang="ar-arz-x-cairo-vicav">biyūt</orth> </form> <sense> <cit type="translation" xml:lang="en"> <quote>house, home</quote> </cit> </sense> </entry> <entry xml:id="beet_001"> <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">bēt</orth> </form> ... <form type="inflected" ana="#n_pl"> <orth xml:lang="ar-arz-x-cairo-vicav">ʔabyāt</orth> </form> <sense> <cit type="translation" xml:lang="en"> <quote>verse (in poem)</quote> </cit> </sense> </entry>
In Arabic, there is often no clear delineation between nouns and adjectives. The issue is particularly tricky with nominals derived by means of the Nisba suffix. In the VICAV dictionaries, these are treated in four categories: adjectives, masculine nouns, feminine nouns and the special case of glottonyms. By adjectives, we understand nominals that are mostly used attributively and usually display masculine and feminine forms:
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">sūri</orth> </form> <gramGrp> <gram type="pos">adjective</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">swr</gram> </gramGrp> <form type="inflected" ana="#n_f"> <orth xml:lang="ar-apc-x-damascus-vicTrans">sūriyye</orth> </form> <form type="inflected" ana="#n_pl"> <orth xml:lang="ar-apc-x-damascus-vicTrans">sūriyyīn</orth> </form> <sense> <cit type="translation" xml:lang="en"> <quote>Syrian</quote> </cit> ... </sense> ...
Cases such as the following are categorised as nouns:
<form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">šāmi</orth> </form> <gramGrp> <gram type="pos">noun</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">šʔm</gram> </gramGrp> <form type="inflected" ana="#n_pl"> <orth xml:lang="ar-apc-x-damascus-vicTrans">šwām</orth> </form> <sense> <cit type="translation" xml:lang="en"> <quote>Damascene</quote> </cit> <cit type="translation" xml:lang="de"> <quote>Damaszener</quote> </cit> <cit type="translation" xml:lang="es"> <quote>damasceno, de Damasco</quote> </cit> </sense> ...
The respective feminine form looks like this:
<form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">šāmiyye</orth> </form> <gramGrp> <gram type="pos">noun</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">šʔm</gram> </gramGrp> <form type="inflected" ana="#n_pl"> <orth xml:lang="ar-apc-x-damascus-vicTrans">šāmiyyāt</orth> </form> <sense> <cit type="translation" xml:lang="en"> <quote>Damascene woman</quote> </cit> <cit type="translation" xml:lang="de"> <quote>Damaszenerin</quote> </cit> <cit type="translation" xml:lang="es"> <quote>damascena, de Damasco</quote> </cit> </sense> ...
Ethnonyms, demonyms and similar proper nouns are also placed in separate entries:
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">ʕarabi</orth> </form> <gramGrp> <gram type="pos">glottonym</gram> <gram type="root" xml:lang="ar-apc-x-damascus-vicTrans">ʕrb</gram> </gramGrp> <sense> <usg type="dom">linguistics</usg> <cit type="translation" xml:lang="en"> <quote>Arabic</quote> </cit> </sense> ...
This phenomenon is related to the MSA dictionary only. Diptosy is indicated either on the lemma form or plural forms. In the first case the information is stored in the gramGrp element.
... <form type="lemma"> <orth xml:lang="ar-x-DMG">ˀazraq</orth> <orth xml:lang="ar">ازرق</orth> </form> <gramGrp> <gram type="pos">adjective</gram> <gram type="morphType">diptotic</gram> ... </gramGrp> ...
For plural forms, we make use of a special n_diptPl value.
...
<form type="inflected" ana="#n_diptPl">
<orth xml:lang="ar-x-DMG">rasāˀil</orth>
<orth xml:lang="ar">رسائل</orth>
</form>
...
The relation between a lexical item and its dependents is also encoded making use of the gramGrp element. By contrast to the cases dealt with before this gramGrp element is not placed on the top-level of the entry but inside sense elements.
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">dawwaṛ</orth> </form> <sense> <gramGrp> <gram type="arguments" xml:lang="ar-apc-x-damascus-vicTrans">ʕala</gram> </gramGrp> <cit type="translation" xml:lang="en"> <quote>to look for, to search</quote> </cit> </sense> ...
Multi-word units on the level of independent dictionary entries have to be distinguished from constructions that correlate with particular senses. These are encoded in form elements. Consider the following example:
...
<sense>
<form type="construction">
<orth xml:lang="ar-arz-x-cairo-vicav">baʔa + li- +
<seg type="constrPart">pronSuffix | noun</seg> +
<seg type="constrPart">timeExpression</seg> </orth>
</form>
...
</sense>
...
Information regarding the translation of the particular construction is represented as in other senses:
...
<sense>
<form type="construction">
<orth xml:lang="ar-arz-x-cairo-vicav">baʔa + li- +
<seg type="constrPart">pronSuffix | noun</seg> +
<seg type="constrPart">timeExpression</seg> </orth>
</form>
<cit type="translation" xml:lang="en">
<quote>since, for</quote>
</cit>
</sense>
...
One sense can have several instantiations of a construction.
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">ʔalᵊb</orth> </form> ... <sense> <cit type="translation" xml:lang="en"> <quote>heart</quote> </cit> ... </sense> <sense> <form type="construction"> <orth xml:lang="ar-apc-x-damascus-vicTrans">ʔalb + <seg type="constrPart">pronSuffix</seg> + ṭayyeb </orth> </form> <form type="construction"> <orth xml:lang="ar-apc-x-damascus-vicTrans">ʔlūb + <seg type="constrPart">pronSuffix</seg> + ṭayybīn </orth> </form> <cit type="translation" xml:lang="en"> <quote>to be kind-hearted</quote> </cit> ... </sense> ...
An anologous case is the following one:
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-vicav">ʕand</orth> </form> ... <sense> <cit type="translation" xml:lang="en"> <quote>with, by, next to</quote> </cit> </sense> <sense> <form type="construction"> <orth xml:lang="ar-arz-x-cairo-vicav">ʕand + <seg type="constrPart">pronSuffix</seg> </orth> </form> <cit type="translation" xml:lang="en"> <quote>to have</quote> </cit> </sense> ...
It is not always easy to decide whether to put information into a construction or a sample sentence. By construction, we understand strings of words with variable elements. They can be conceived as patterns with particular slots holding variables. Sample sentences would then be particular instantiations of such a pattern.
<entry xml:id="tbaarek_001">
<form type="lemma">
<orth xml:lang="ar-ary-x-sale-vicTrans">tbāṛek</orth>
<orth xml:lang="ar-ary-x-sale-vicTrans">تبارك</orth>
</form>
<gramGrp>
<gram type="root" xml:lang="ar-ary-x-sale-vicTrans">brk</gram>
</gramGrp>
<sense>
<form type="construction">
<orth xml:lang="ar-ary-x-sale-vicTrans">tbāṛek + aḷḷāh + ʕla +
<seg type="constrPart">pronSuffix | noun</seg> </orth>
</form>
<cit type="translation" xml:lang="en">
<quote>how nice is ...! how wonderful ...!</quote>
</cit>
<cit type="translation" xml:lang="de">
<quote>-</quote>
</cit>
</sense>
</entry>
Information concerning the level of formality is tagged using the usg element with a type="reg" attribute. This may occur in three positions of an entry.
| Information qualifies ... | Tag is placed in ... | |
| lemma | gramGrp | The information refers to the lexical item as a whole. |
| other word forms | form | The information refers to a particular form only. |
| sense | sense | The information refers to a particular sense only. |
Some words are usually used in formal occasions.
... <form type="lemma"> <orth xml:lang="ar-arz-x-cairo-arabic">ثقافة</orth> </form> <gramGrp> <gram type="pos">noun</gram> <gram type="root" xml:lang="ar-arz-x-cairo-vicav">ṯqf</gram> <usg type="reg">formal</usg> </gramGrp> ...
Many nouns have several plural forms. This apparent overabundance can often be explained by varying degrees of formality.
... <form type="inflected" ana="#v_pp_m"> <usg type="reg">informal</usg> <orth xml:lang="ar-arz-x-cairo-vicav">mittihim</orth> </form> <form type="inflected" ana="#v_pp_m"> <usg type="reg">formal</usg> <orth xml:lang="ar-arz-x-cairo-vicav">muttaham</orth> </form> ...
Basic semantic classifications are stored in ‘domain’ labels which are placed inside sense elements. They are put right at the beginning of the sense elements. Senses can be assigned multiple such labels.
... <form type="lemma"> <orth xml:lang="ar-apc-x-damascus-vicTrans">fūl</orth> </form> ... <sense> <usg type="dom">food</usg> <usg type="dom">plants</usg> <cit type="translation" xml:lang="en"> <quote>beans</quote> </cit> </sense> ...
As we have seen before, examples are separate records. They are not encoded with the lemmas. Examples are always linked to particular senses. They are referenced through ptr “pointer” elements which are put at the end of the respective sense element.
...
<sense>
<cit type="translation" xml:lang="en">
<quote>to be, to become</quote>
</cit>
...
<ptr type="example" target="yibqa_ustaz_001"/>
</sense>
...
The example referrenced in the above ptr element looks like this:
<cit xml:id="yibqa_ustaz_001" type="example">
<quote xml:lang="ar-arz-x-cairo-vicav">ḥayibʔa ustāz in šāʔ allāh.</quote>
<cit type="translation" xml:lang="en">
<quote>He will become a professor (hopefully).</quote>
</cit>
</cit>
To add such a link follow these steps:
| 1. | Go to the example entry. | The focus has to be in the editor. |
| 2. | Copy the ID to the clipboard | ... by pushing F11. Make sure that this key is defined in your list of key assignments. |
| 3. | Go to the entry into which you want to insert the link. | |
| 4. | Move to the insert position in the appropriate sense element. | ptr should be at the end of a sense element. |
| 5. | Insert the pointer | ... by pushing Ctrl + V. |
Some of our dictionaries contain bibliographic references concerning the source of particular entry components. This type of information is typically encoded in bibl elements.
... <bibl> <author>Ritt-Benmimoun</author> <date>2012/2013</date> </bibl> ... <bibl> <author>Singer</author> <date>1958</date> <biblScope unit="page">56</biblScope> </bibl> ...
In production stage, abbreviated versions are permissible.
...
<bibl>Singer 1958, p.56</bibl>
...
Ideally, the sources should be resolved in the header.
bibl may be embedded in form elements. A form element can contain several bibl elements.
...
<form type="lemma">
<orth xml:lang="ar-aeb-x-tunis-vicav">markaz</orth>
<bibl>Ritt-Benmimoun 2014</bibl>
<bibl>Singer 1958, p.34</bibl>
</form>
...
Furthermore, the bibl element can be placed inside cit elements which are used to encode usage examples.
<cit xml:id="limcit_cineeh_001" type="example">
<quote xml:lang="ar-arz-x-cairo-vicav">limʕit ʕinēh.</quote>
...
<bibl>4/82</bibl>
</cit>
The third option are senses. As bibl can not directly be put in sense, xr has to be wrapped around:
...
<sense>
<cit type="translation" xml:lang="en">
<quote>to call to prayer</quote>
</cit>
<cit type="translation" xml:lang="de">
<quote>zum Gebet rufen</quote>
</cit>
<xr>
<bibl>8/10</bibl>
</xr>
<xr>
<bibl>19/205</bibl>
</xr>
</sense>
...
By convention, all bibl elements are placed at the end of the containing element.
The Guidelines of the Text Encoding Initiative are currently available in eight languages. Go


Rho.System
System.openUrl
Open mp4 from package via System.openUrl
System.openUrl
Open mp4 from sdcard via System.openUrl
Rho.System.applicationIconBadge
Application Icon Badge : application icon should have badge number (IOS only)
Rho.System.httpProxyURI
HTTP Proxy URI : Proxy should set successfully to your proxy server address (Configure it before start this test - modify /app/System/system.html about line 150).
(Rhosimulator supports it only for windows platform)
Set httpProxyURI (http://<IP_ADDRESS>:8088)
Set httpProxyURI (http://wwwgate0.mot.com:1080)
Call Rho.Network.get('http://www.google.com')
Set proxyHttpUri to empty string)
Set proxyHttpUri to null
VT300-021 | Press button for setting Rho.System.httpProxyUri and press button for sending request to http://www.google.com from Rho.Network. Check proxy server log
Rho.System.lockWindowSize
Lock Window Size: Lock/unlock the window size(Windows desktop). Rhosimulator supports it
only for windows platform.
Rho.System.screenAutoRotate
Screen Auto Rotate :
System.Country
Screen Country.
System.screenOrientation
Screen Orientation : Screen auto rotate.
Rho.System.screenSleeping
Screen Sleeping :Should screen go to sleep by time out.(IOS and Android)
Rho.System.applicationInstall
Application installYou must have running webbrick server before starting test application. Also see /server/Documents/TestApp_installation_readme.txt for platfrom details !!!
Application install for Windows WM and win32:
Application Install for Android:
Application Install for iOS:
Rho.System.isApplicationInstalled
Is Application Installed
Rho.System.runApplication
Run Application
Rho.System.sendMessageToApplication
Send Data to Application
send application message to target application when target application is already running
Run the target application before executing test
Rho.System.sendApplicationMessage(appName, 'param1=hello¶m2=3')
The message should be shown on Target App with application name(Click on button getMessage to get the sent message).
JAVASCRIPT
RUBY
VT300-
send application message to target application when target application is not running
Quit the Target App If Running
Rho.System.sendApplicationMessage(appName, 'param1=hello¶m2=4')
The target application should get launched automatically in background(android/wm), for ios app should come to foreground and should receive the message with application name(Click on button getMessage to get the sent message).
JAVASCRIPT
RUBY
VT300-
send normal text to target application
Rho.System.sendApplicationMessage(appName,'data=Send an alert to everyone' )
The message should be shown on Target App with application name(Click on button getMessage to get the sent message).
JAVASCRIPT
RUBY
VT300-
Send image (base64 encoded data) to target application.
Rho.System.sendApplicationMessage(appName, 'data=imagedata' )
Above image should be shown on Target App(Click on button getMessage to get the sent message).
JAVASCRIPT
RUBY
VT300-
Send JSON data to target application
Rho.System.sendApplicationMessage(appName, 'data=JSON' )
JSON data should get displayed on target application with sent application name.
JAVASCRIPT
RUBY
VT300-
Send null as last params in sendApplicationMessage
Rho.System.sendApplicationMessage(appName, '' )
message key should have no value in target app or it should return empty string on target app while clicking on getMessage button
JAVASCRIPT
RUBY
VT300-
Send a message to target app when app is not available on device .
Rho.System.sendApplicationMessage(non_exist_app , 'data=hello')
The error message(exception) should be thrown when target application is not available so that developer may show alert to download from some where else(may be from app store).
JAVASCRIPT
RUBY
VT300-
Call Rho.System.getApplicationMessage when nothing has sent to source application.
It should return null as long as app does not receive any message from any application.
JAVASCRIPT
RUBY
VT300-
Get GPS Coordinates from Target Application
The target application should send GPS coordinates back to the source application. Gps Coordinates should get displayed below. To get GPS corodinate take the device out side and wait for few seconds. If any error thrown, the error should get displayed below.
VT300-
Scan A Barcode
Use target app to scan the barcode and returns the scanned data to source app. (The target app should remain at background only on Android and WM)
VT300-
send an Intent to non rhodes app.
VT300-
Rho.System.applicationUninstall
Application Uninstall
VT300-065
Rho.System.getStartParams
Get StartParams :Return the command line parameters.
Rho.System.openUrl
OpenUrl :Open the application associated with the URL.
Rho.System.replaceCurrentBundle
replaceCurrentBundle : application bundle will be replaced/partial updated with sample app bundle.
Rho.System.setDoNotBackupAttribute
Set do not backup attribute for file ('/Documents/apps/testBackupFile.txt')
Rho.System.setWindowFrame
Set Window Frame : Change application window position and size (windows desktop only)
Rho.System.setWindowPosition
Set Window Position : Change application window position (windows desktop only)
Rho.System.setWindowSize
Set Window Size : Change application window size (windows desktop only)
Rho.System.setproperty
Set Property
Rho.System.setProperties and Rho.System.getProperties
Set Properties and Get Properties
Text Field


cupstestppd(1) Apple Inc. cupstestppd(1) NAME cupstestppd - test conformance of ppd files SYNOPSIS cupstestppd [ -I category ] [ -R rootdir ] [ -W category ] [ -q ] [-r] [ -v[v] ] filename.ppd[.gz] [ ... filenameN.ppd[.gz] ] cupstestppd [ -R rootdir ] [ -W category ] [ -q ] [-r] [ -v[v] ] - DESCRIPTION cupstestppd tests the conformance of PPD files to the Adobe PostScript Printer Description file format specification version 4.3. It can also be used to list the supported options and available fonts in a PPD file. The results of testing and any other output are sent to the standard output. The first form of cupstestppd tests one or more PPD files on the command- line. The second form tests the PPD file provided on the standard input. OPTIONS cupstestppd supports the following options: -I filename Ignores all PCFileName warnings. -I filters Ignores all filter errors. -I profiles Ignores all profile errors. -R rootdir Specifies an alternate root directory for the filter, pre-filter, and other support file checks. -W constraints Report all UIConstraint errors as warnings. -W defaults Except for size-related options, report all default option errors as warnings. -W filters Report all filter errors as warnings. -W profiles Report all profile errors as warnings. -W sizes Report all media size errors as warnings. -W translations Report all translation errors as warnings. -W all Report all of the previous errors as warnings. -W none Report all of the previous errors as errors. -q Specifies that no information should be displayed. -r Relaxes the PPD conformance requirements so that common whitespace, control character, and formatting problems are not treated as hard errors. -v Specifies that detailed conformance testing results should be dis‐ played rather than the concise PASS/FAIL/ERROR status. -vv Specifies that all information in the PPD file should be displayed in addition to the detailed conformance testing results. The -q, -v, and -vv options are mutually exclusive. EXIT STATUS cupstestppd returns zero on success and non-zero on error. The error codes are as follows: 1 Bad command-line arguments or missing PPD filename. 2 Unable to open or read PPD file. 3 The PPD file contains format errors that cannot be skipped. 4 The PPD file does not conform to the Adobe PPD specification. EXAMPLES The following command will test all PPD files under the current directory and print the names of each file that does not conform: find . -name \*.ppd \! -exec cupstestppd -q '{}' \; -print The next command tests all PPD files under the current directory and print detailed conformance testing results for the files that do not con‐ form: find . -name \*.ppd \! -exec cupstestppd -q '{}' \; \ -exec cupstestppd -v '{}' \; SEE ALSO lpadmin(8), http://localhost:631/help Adobe PostScript Printer Description File Format Specification, Version 4.3. COPYRIGHT Copyright 2007-2011 by Apple Inc. 19 November 2009 CUPS cupstestppd(1)


Index
A B C D E G H I J K L M N O P R S T W
All Classes All Packages
All Classes All Packages
All Classes All Packages
G
- generateHash(String, String) - Method in class application.services.AuthenticationServices
-
Method for generating password hashes.
- getAdjustments() - Method in class application.models.OrderItemModel
- getAllergies() - Method in class application.models.MenuItemModel
- getAvailable() - Method in class application.models.MenuItemModel
- getCalories() - Method in class application.models.MenuItemModel
- getCategory() - Method in class application.models.MenuItemModel
- getCurrentOrders() - Method in class application.services.KitchenServices
-
This methods gets the current orders from the order items table for display on the kitchen page.
- getCurrentOrders(Model, HttpServletRequest, HttpServletResponse) - Method in class application.controllers.WaiterController
-
RequestMapping for any GET requests coming from the waiterorderpage.
- getDescription() - Method in class application.models.MenuItemModel
- getEnabled() - Method in class application.models.StaffModel
-
Gets whether the user is enabled or not.
- getId() - Method in class application.models.TableModel
- getImage() - Method in class application.models.MenuItemModel
- getItem() - Method in class application.models.KitchenItemModel
- getItems() - Method in class application.models.OrderModel
- getKitchenOrders(Map<String, Object>, HttpServletRequest, HttpServletResponse) - Method in class application.controllers.KitchenController
-
This RequestMapping method gets the orders from the database for the kitchen staff.
- getMenu() - Method in class application.services.MenuServices
-
This method gets all the information from the menu and outputs it for use on the webpage.
- getMenu_id() - Method in class application.models.MenuItemModel
- getMenu_id() - Method in class application.models.OrderItemModel
- getMenuItems(Model, HttpServletRequest, HttpServletResponse) - Method in class application.controllers.ModifyAvailabilityController
-
This method gets the modifyavailability page.
- getMenuTest() - Method in class services.MenuServicesTest
- getName() - Method in class application.models.MenuItemModel
- getName() - Method in class application.models.OrderItemModel
- getName() - Method in class application.models.StaffModel
-
Gets name.
- getOrder(String) - Method in class application.services.WaiterServices
-
This is the getOrder method.
- getOrder(Model, String) - Method in class application.controllers.PostOrderController
-
This method gets the postorder page.
- getOrder(Model, String) - Method in class application.controllers.WaiterController
-
RequestMapping for the modifyorder page.
- getOrder_id() - Method in class application.models.KitchenItemModel
- getOrder_id() - Method in class application.models.OrderItemModel
- getOrder_id() - Method in class application.models.OrderModel
- getOrder_id() - Method in class application.models.PostOrderModel
- getOrder_items_id() - Method in class application.models.OrderItemModel
- getOrderInfo(int) - Method in class application.services.PostOrderServices
-
This method gets the order info from the orders table to display on the post order menu.
- getOrders() - Method in class application.services.WaiterServices
-
This method gets the orders from the order_items table, which is filled from the menu page, so they can be seen on the waiter order page.
- getOrders(int) - Method in class application.services.PostOrderServices
-
This method gets the orders from the orders table to display on the post order menu.
- getPaid() - Method in class application.models.OrderModel
- getPaid() - Method in class application.models.PostOrderModel
- getPassword() - Method in class application.models.StaffModel
-
Gets password.
- getPreviousPageByRequest(HttpServletRequest) - Method in class application.services.AuthenticationServices
-
Returns a string of "redirect:[url of previous page]" if available.
- getPrice() - Method in class application.models.MenuItemModel
- getQuantity(String) - Method in class application.OrderList
-
A method to get the quantity of a particular menu item by getting the value associated with the id in the hashmap.
- getRole() - Method in class application.models.StaffModel
-
Gets role.
- getRole(HttpServletRequest) - Method in class application.services.AuthenticationServices
-
Getter for retrieving the staff role using cookies.
- getSize() - Method in class application.models.TableModel
- getSize() - Method in class application.OrderList
-
A method to get the size of the hashmap; which shows how many different menu items are present within the hashmap.
- getStaffId() - Method in class application.models.OrderModel
- getStaffId() - Method in class application.models.StaffModel
-
Gets staff id.
- getStatus() - Method in class application.models.OrderItemModel
- getStatus() - Method in class application.models.OrderModel
- getStatus() - Method in class application.models.PostOrderModel
- getTable_num() - Method in class application.models.KitchenItemModel
- getTable_num() - Method in class application.models.OrderModel
- getTable_num() - Method in class application.models.PostOrderModel
- getTables() - Method in class application.services.StartServices
-
This method gets all the information from the menu and outputs it for use on the webpage.
- getTime_ordered() - Method in class application.models.KitchenItemModel
- getTime_ordered() - Method in class application.models.OrderModel
- getUsers() - Method in class application.services.ManagerServices
-
Gets a list of users.
All Classes All Packages


The Nintendo 64, stylized as NINTENDO64 and often referred to as N64, is Nintendo's third home video game console for the international market. Named for its 64-bit central processing unit, it was released in June 1996 in Japan, September 1996 in North America, March 1997 in Europe and Australia, September 1997 in France and December 1997 in Brazil. It is Nintendo's last home console to use ROM cartridges to store games (Nintendo switched to a MiniDVD-based format for the successor GameCube); handhelds in the Game Boy line, however, continued to use Game Paks. As part of the fifth generation of gaming, it primarily competed with the PlayStation and the Sega Saturn. Succeeded by Nintendo's GameCube in November 2001, N64 consoles continued to be produced until its discontinuation in Japan on April 30, 2002, Europe on May 16, 2003, North America on November 30, 2003, and Australia in 2003.
The N64 was released with two launch games, Super Mario 64 and Pilotwings 64, and a third in Japan, Saikyō Habu Shōgi. The N64's suggested retail price was US $199.99 at its launch and it was later marketed with the slogan "Get N, or get Out!". The console was ultimately released in a range of different colors and designs, and an assortment of limited-edition controllers were sold or used as contest prizes during the N64's lifespan. The N64 sold 32.93 million units worldwide, and in 2009, it was named the 9th greatest video game console by IGN.[4] Time Magazine named it their 1996 Machine of the Year award.
Of the consoles in the fifth generation, the Nintendo 64 was the last to be released. One of its technical drawbacks was a limited texture cache, which could hold textures of limited dimensions and reduced color depth, which had to be stretched to cover larger in-game surfaces. More significantly, the N64 still relied upon ROM cartridges, which were constrained by small capacity (particularly in an era when games became more complex and their contents took up more memory) and high production expenses, compared to the compact disc format used by its chief competitors. As a result of the N64's storage media limitations, many third-party publishers that previously supported Nintendo's past consoles reduced or stopped publishing games; the N64's most successful games came from first-party or second-party studios.
Development
At the beginning of the 1990s, Nintendo led the video game industry with its Nintendo Entertainment System (NES). Although a follow-up console, the Super Nintendo Entertainment System (SNES), was successful, sales took a hit from the Japanese recession. Competing consoles from Sega and Sony also increased the need for Nintendo to develop a successor to the SNES. Further complicating matters, the company also faced a backlash from third-party developers unhappy with Nintendo's onerous licensing policies. The company sought to develop a console with high-quality, 3-dimensional graphics and a 64-bit processor. Nintendo's code name for the N64, "Project Reality", stemmed from the bold belief that the hardware's advanced CGI capabilities would rival supercomputers of the era.
Release
Popular Electronics called the launch a "much hyped, long-anticipated moment."
The console was first released in Japan on June 23, 1996. The North American version of the Nintendo 64 officially launched on September 29, 1996. It launched with just two games in the United States, Pilotwings 64 and Super Mario 64. In 1994, prior to the launch, Nintendo of America chairman Howard Lincoln emphasized the quality of first-party games, saying "... we're convinced that a few great games at launch are more important than great games mixed in with a lot of dogs."The PAL version of the console was released in Europe on March 1, 1997.
Originally intended to be US$250, the console was ultimately priced at $199.99 to make it competitive with Sony and Sega offerings. Nintendo priced the console as an impulse buy, using a strategy from the toy industry. The price of the console in the United States was further reduced in August 1998.
Games
A total of 387 games were released for the console, though few were exclusively sold in Japan. For comparison, the rival PlayStation received around 1,100 games, while the earlier NES and SNES had 768 and 725 US games, respectively. However, the Nintendo 64 game library included a high number of critically acclaimed and widely sold games. Super Mario 64 was the console's best selling game (selling over 11 million copies), receiving much praise from critics and helping to pioneer three-dimensional control schemes. GoldenEye 007 was important in the evolution of the first-person shooter, and has since been named one of the greatest in the genre. The Legend of Zelda: Ocarina of Time set the standard for future 3D action-adventure games and is considered by some to be the greatest game ever made.
Color Selection
The Nintendo 64 comes in several colors. The standard Nintendo 64 is dark gray, nearly black, and the controller is light gray (later releases in America included a bonus second controller in Atomic Purple). Various color variations and special editions were released.
The majority of Nintendo 64 game cartridges were gray in color; however, some games were released on a colored cartridge. Fourteen games had black cartridges, while other colors (such as green, blue, red, yellow and gold) were each used for six or fewer games. Several games, such as The Legend of Zelda: Ocarina of Time, were released both in standard gray and in colored, limited edition versions.


×
Registration failed.
Username in use.
Passwords don't match.
Invalid invite code.
×
Internal error.
Please contact the website administrator.
Create an account
Username
Password
Password Again
Invite Code
Submit


read
OS/161 Reference Manual
Name
read - read data from file
Library
Standard C Library (libc, -lc)
Synopsis
#include <unistd.h>
int
read(int fd, void *buf, size_t buflen);
Description
read reads up to buflen bytes from the file specified by
fd, at the location in the file specified by the current
seek position of the file, and stores them in the space pointed to
by buf. The file must be open for reading.
The current seek position of the file is advanced by the number of
bytes read.
Each read (or write) operation is atomic
relative to other I/O to the same file.
Return Values
The count of bytes read is returned. This count should be
positive. A return value of 0 should be construed as signifying
end-of-file. On error, read returns -1 and sets
errno to a suitable error code for the error
condition encountered.
Note that in some cases, particularly on devices, fewer than
buflen (but greater than zero) bytes may be returned. This
depends on circumstances and does not necessarily signify
end-of-file.
Errors
The following error codes should be returned under the conditions
given. Other error codes may be returned for other errors not
mentioned here.
| | |
| EBADF | fd is not a valid file descriptor, or was
not opened for reading. |
| EFAULT | Part or all of the address space pointed to by
buf is invalid. |
| EIO | A hardware I/O error occurred reading the data. |


This notify the scheduler that {executorId} is failed, and expect a set of ResourceRequest for all failed tasks on that executor.
This notify the scheduler that {executorId} is failed, and expect a set of ResourceRequest for all failed tasks on that executor.
executor that failed
resource requests of the failed executor
Get the resource requirements for all unscheduled tasks.
Get the resource requirements for all unscheduled tasks.
This notify the scheduler that a resource slot on {workerId} and {executorId} is allocated, and expect a task to be scheduled in return.
This notify the scheduler that a resource slot on {workerId} and {executorId} is allocated, and expect a task to be scheduled in return. Task locality should be considered when deciding whether to offer a task on target {worker} and {executor}
which worker this resource is located.
which executorId this resource belongs to.
a list of tasks
Query the task list that already scheduled on the executor
Query the task list that already scheduled on the executor
executor to query
a list of tasks
This notify the scheduler that the task DAG is created.
This notify the scheduler that the task DAG is created.
task dag


{% extends "base.html" %} {% block contents %} Songs by Lyrics Youtube Playlist {% endblock contents %}


The md-icon
directive makes it easier to use vector-based icons in your app (as opposed to
raster-based icons types like PNG). The directive supports both icon fonts and SVG icons.
Icons should be considered view-only elements that should not be used directly as buttons; instead nest a <md-icon>
inside a md-button
to add hover and click features.
Icon fonts are a technique in which you use a font where the glyphs in the font are your icons instead of text. Benefits include a straightforward way to bundle everything into a single HTTP request, simple scaling, easy color changing, and more.
md-icon
lets you consume an icon font by letting you reference specific icons in that font
by name rather than character code.
When using font-icons, developers must follow three (3) simple steps:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
material-icons
is the default fontset when
none is specified.
<md-icon md-font-icon="classname"></md-icon>
<md-icon md-font-set="font library classname or alias">textual_name</md-icon>
<md-icon> numerical_character_reference </md-icon>
<md-icon ng_bind="'textual_name'"></md-icon>
<md-icon ng-bind="scopeVariable"></md-icon>
Full details for these steps can be found in the Material Design Icon font for the web docs.
You can browse and search the Material Design icon style .material-icons
in the Material Design Icons tool.
For SVGs, the problem with using
or a CSS background-image
is that you can't take
advantage of some SVG features, such as styling specific parts of the icon with CSS or SVG
animation.
md-icon
makes it easier to use SVG icons by inlining the SVG into an <svg>
element in the
document. The most straightforward way of referencing an SVG icon is via URL, just like a
traditional
. $mdIconProvider
, as a convenience, lets you name an icon so you can
reference it by name instead of URL throughout your templates.
Additionally, you may not want to make separate HTTP requests for every icon, so you can bundle
your SVG icons together and pre-load them with $mdIconProvider
as an icon set. An icon set can
also be given a name, which acts as a namespace for individual icons, so you can reference them
like "social:cake"
.
When using SVGs, both external SVGs (via URLs) or sets of SVGs (from icon sets) can be easily loaded and used.
Because an md-icon
element's text content is not intended to be translated, it is recommended
to declare the text content for an md-icon
element in its start tag. Instead of using the HTML
text content, consider using ng-bind
with a scope variable or literal string.
Examples:
<md-icon ng-bind="myIconVariable"></md-icon>
<md-icon ng-bind="'menu'"></md-icon>
Click on any icon, then click on the "Selected Icon" chevron to see the slide-up information panel with details regarding a SVG download and information on the font-icon's textual name.  These settings only affect the downloaded icons.
When using SVGs:
Use the $mdIconProvider
to configure your application with
SVG icon sets.
When using Font Icons with classnames:
When using Material Font Icons with ligatures:
When using other Font-Icon libraries:
| Parameter | Type | Description |
|---|---|---|
* md-font-icon
string
|
string |
String name of CSS icon associated with the font-face will be used to render the icon. Requires the fonts and the named CSS styles to be preloaded. |
* md-font-set
string
|
string |
CSS style name associated with the font library; which will be assigned as
the class for the font-icon ligature. This value may also be an alias that is used to lookup the classname;
internally use |
* md-svg-src
string
|
string |
String URL (or expression) used to load, cache, and display an external SVG. |
* md-svg-icon
string
|
string |
md-svg-icon String name used for lookup of the icon from the internal cache;
interpolated strings or expressions may also be used. Specific set names can be used with
the syntax |
aria-label
string
|
string |
Labels the icon for accessibility. If an empty string is provided,
the icon will be hidden from the accessibility layer with |
alt
string
|
string |
Labels the icon for accessibility. If an empty string is provided and the
icon has no |


Our site is under construction. Please contact Rebecca if you have any questions.
<EMAIL_ADDRESS>0401 839 138


---
title: Schedule - HackBU
layout: default
description: Find out where and when our weekly HackBU workshops take place
---
HackBU Schedule
Find out where and when our weekly HackBU workshops take place. Check out the tentative schedule and add the 2019-2020 calendar.
September 25th, 2019 - Weekly Workshop: Web Development
Interested in building your own website? Check out our web development workshop!
September 16th, 2019 - Weekly Workshop: Python for Everyone Part 2
The second part of our Python for Everyone workshop.
September 11th, 2019 - Weekly Workshop: Python for Everyone Part 1
Whether you want to learn Python or improve upon the Python skills you already have, check out our Python workshop! This workshop is designed for all skill levels so don’t worry if you have no experience.
September 7th, 2019 - Saturday Sprint: CS Career Bootcamp with ACM
Take a look at the slides on explaining technical interview and behavioral interviewing to prep for your job search!
September 4, 2019 - Intro to Programming and Starting a Personal Project
Get started by taking a look at our Intro to Programming Workshop! If you have some experience programming, check out previous hackathon projects to get some inspiration for starting a personal project.


§560:2-508 Revocation by change of circumstances. Except as provided in sections 560:2-803 and 560:2-804, a change of circumstances does not revoke a will or any part of it. [L 1996, c 288, pt of §1]


How to quickly scan documents with the Google Drive app
by Sydney ButlerUnless you have huge pockets, chances are that there’s no document scanner on you most of the time. However, plenty of people have figured out that they can simply take a picture of any document with their smartphone. That’s a smart idea, but the Google Drive app actually has a supercharged camera-based scanning function that takes this simple trick to the next level. Let’s learn how to scan documents to Google Drive.
Using the document-scanning function in the Google Drive app has more than a few advantages over simply opening up your camera app and snapping a picture of a document. Google has built image processing intelligence into their software that can instantly format the picture into something pretty close to a proper flatbed scan.
Even better, any scans you make are automatically stored in your Google Drive, which makes this a perfect tool to rapidly scan documents in libraries, government offices or at the lawyer’s office. The scanning function also allows you to create multi-page PDF files from your scans on the fly. Sold yet? Then it’s time to take this neat Google Drive trick for a spin.
How to scan documents with Google Drive
- Install the Google Drive app
- Click the “plus” icon
- Tap “scan”
- Edit your scan
- That’s it!
1. Install the Google Drive app
On most Android phones, the Google Drive app should already be installed. If not, you can simply grab it from the Google Play Store. iOS users will find the app in their respective store as well. The instructions below are for the Android version, but they are materially the same on both operating systems.
2. Click the “plus” icon
The first thing you need to do is open the Google Drive app and look for the large “plus” icon on the bottom right of the app window.
3. Tap scan
Next, simply tap the ‘scan’ button. That’s the one with the camera icon. On iOS, it’s called ‘use camera’.
4. Edit your scan
This puts Google Drive into scanning mode. In the screenshot below you can see the three steps involved in capturing a page. First, take the picture the way you would normally capture any photo. Google Drive will then give you a chance to review the image. If you’re happy with it, tap ‘OK’. If not, tap ‘Retry’ and give it another go. After tapping ‘OK’, you can tweak the capture before finalizing the scan.
In this case we don’t want the bit of background behind the textbook. So tap the crop icon at the top of the screen, to the left of the pallet icon.
Google’s software then tries to automatically select the document itself. If it doesn’t get it right, simply drag the nodes on the outline until they properly frame the page. Tap the check mark to finalize the page. If you want to add another page to the series of scans, simply tap the “plus” icon on the bottom left of the app window.
Repeat this process until you have scanned all the pages you want, then tap the check mark to save the resulting document in your Google Drive.
5. That’s it!
That’s the basic process of scanning documents with Google Drive. Once saved, the final scan should upload safely into the Google Cloud, ready for your perusal at a moment’s notice. Armed with this app feature, you’ll never have to worry about digitizing your paper trail ever again!
Google Drive has a long list of features to its name and the internet search giant is adding more on a regular basis. Recently we reported that this plucky app can now also fill out PDF forms. Clearly it’s worth giving that unassuming triangular icon the occasional tap to see what’s new. You might just discover the right killer feature for you.
You’re reading 9to5Google — experts who break news about Google and its surrounding ecosystem, day after day. Be sure to check out our homepage for all the latest news, and follow 9to5Google on Twitter, Facebook, and LinkedIn to stay in the loop. Don’t know where to start? Check out our exclusive stories, reviews, how-tos, and subscribe to our YouTube channel.
FTC: We use income earning auto affiliate links. More.