|
This document introduces the support for managing users in the Ontopia Navigator Framework. It describes the user management topic map vocabulary, the Ontopia JAAS module, and the user management interface.
Ontopia has built-in support for storing user information in the topic map being used by the web application. Applications that do not use authentication and applications which want to use directory information stored elsewhere have no need for this functionality, but for those who really do want to maintain user information in the topic map Ontopia provides some useful functionality.
Ontopia has a topic map vocabulary for representing users, their user names, their passwords, user groups, privileges, and the relationships between these. This vocabulary is used by a JAAS (Java Authentication and Authorization Service) module that can be used to authenticate users against the information in the topic map. There is also a ready-made Web Editor Framework application for maintaining user information represented using this vocabulary.
The model used by the user vocabulary is very simple. There are users , representing user accounts. There are roles, which are basically user groups. And, finally, there are privileges, which represent specific rights within the system. Below is a simple example of a topic map in this vocabulary in LTM format.
#PREFIX um @"http://psi.ontopia.net/userman/#" [lmg : um:user = "Lars Marius Garshol"] {lmg, um:username, [[larsga]]} {lmg, um:password, [[hemmelig]]} um:plays-role(lmg : um:user, admin : um:role) [admin : um:role = "Administrator"] um:has-privilege(admin : um:receiver, edit-users : um:privilege) um:has-privilege(admin : um:receiver, edit-ontology : um:privilege) um:has-privilege(admin : um:receiver, edit-instances : um:privilege)
The fragment above creates one user, with user name, display name, and password. It also says that this user is an admin user, and that admin users can edit users, edit the ontology, and edit instances. (The meaning of each privilege is defined by the application using the vocabulary; no privileges are part of the vocabulary itself.)
For more information, see the userman PSI set.
JAAS is a standard Java API for authentication, which is implemented by modules providing authentication services. JAAS modules can then be plugged into systems that need authentication, like a web application. Ontopia provides a JAAS implementation that allows users to authenticate themselves against user names and passwords stored in a topic map using the above vocabulary. The most common usage for the JAAS module is to use it to provide authentication support in a servlet web application.
To use module in a web application the following needs to be done:
Configure a shared repository in the web server. (See the Navigator Framework Configuration Guide for directions on this.)
Configure the JAAS module as a service inside the web server, and make it use the shared repository.
Configure the web application to use the JAAS module to control access to the application, or parts of it.
The first and second steps are dependent on the application server being used, and so we will only document how to do it for Tomcat 5.0 in this guide. See the documentation for your application server to learn how it is done there. Note that Tomcat versions earlier than 5.x do not support JAAS.
The TMLoginModule is a JAAS module that is configured through the $TOMCAT_HOME/conf/jaas.config file. Normally it only takes a single option, topicmap, which specifies the id of the topic map in which the user information can be found.
/** Login Configuration for the JAAS Sample Application **/ TM { net.ontopia.topicmaps.nav2.realm.TMLoginModule required topicmap=mytopicmap.ltm; };
The JAAS module also accepts the repository and jndiname options. If none of them are specified the default repository will be used. Use the repository option if you need to refer to a specific repository by id. Use the jndiname option if you need to refer to the repository stored in JNDI under the given name.
In order for the application server to find the jaas.config configuration file one must make the java.security.auth.login.config system property refer to the jaas.config. Refer to your application server's documentation on how to set system properties. One way of doing this with Tomcat is to set the value of the JAVA_OPTS environment variable to:
-Djava.security.auth.login.config=${ONTOPIA_HOME}/apache-tomcat/conf/jaas.config
Having done this, the following snippet needs to be added to apache-tomcat/conf/server.xml to set up a Tomcat realm that uses the JAAS module.
<Realm className="org.apache.catalina.realm.JAASRealm" appName="TM" userClassNames="net.ontopia.topicmaps.nav2.realm.UserPrincipal" roleClassNames="net.ontopia.topicmaps.nav2.realm.RolePrincipal"/>
It's possible to store encrypted passwords (instead of plaintext passwords) in the topic map for higher security. This protects the passwords against accidental exposure of topic map data, as well as other attacks. This is configured with the hashmethod parameter to the JAAS module (set in jaas.config). The supported values for this parameter are listed below.
| plaintext | No encryption. (This is the default.) |
| base64 | Base64-encodes the passwords. This offers only very mild security. |
| md5 | Produces an MD5 digest of the password, then base64-encodes it. Offers strong security, but means that it is impossible to reproduce the password from what's stored in the topic map. |
Note that the user management application only supports plaintext passwords.
The TMLoginModule exposes user-group membership and privileges as role principals. The default names for these topics will be used as the role principal names. All authenticated users will also get the implicit user role principal. Applications can check privileges and user-group membership through the HttpServletRequest.isUserInRole(String roleName) method. The user name can be found through the HttpServletRequest.getRemoteUser() method.
At this point, the next step is to configure the web.xml of the web application to add the necessary constraints. This is common to all application servers, and useful information on this can be found in Caucho's security tutorial, as well as their guide to the web.xml elements.
Below is an example snippet from a web.xml file that sets up a very simple example of authentication. It restricts access to everything in the /app directory in the application, and requires the users to have the user role. (The JAAS module gives every user the user role, and one role per user group. The name of the user group is the name of the role.)
<security-constraint> <web-resource-collection> <web-resource-name>The application</web-resource-name> <url-pattern>/app/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>user</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <realm-name>TM</realm-name> <form-login-config> <form-login-page>/app/login.jsp</form-login-page> <form-error-page>/app/error.jsp</form-error-page> </form-login-config> </login-config> <security-role> <description> a user of the system </description> <role-name>user</role-name> </security-role>
Note that it may not be practical to use this mechanism to implement access control for the various kinds of users. Instead, it may be easier to allow all users into the restricted area, and then to implement the checking for whether the user has a particular privilege in application logic.
Some applications store the user information inside the topic map used by the application, in order to be able to attach further information to each user topic. In these cases, it's necessary to be able to get hold of the user topic inside the web application. This can be done by calling the HttpServletRequest object's getRemoteUser method, which returns the current user's user name.
This can then be used as follows in a web application to get the current user topic:
<tolog:set var="username" ><%= request.getRemoteUser() %></tolog:set> <tolog:set var="user" query=' using uman for i"http://psi.ontopia.net/userman/" uman:username($user, %username%)? '/>
If you don't want to use Java code in the JSP file you can use the out tag from the core JSTL tag library instead to get the user name.
Ontopia comes with an application that can be used to administrate topic maps containing users, roles, and privileges represented with the userman vocabulary. The application can be found in the $TOMCAT_HOME/webapps/accessctl directory and is written using the Web Editor Framework.
To access the application, start the Tomcat server and go to http://localhost:8080/accessctl/?tm=userman.ltm. This will open the example topic map userman.ltm in the application, which is useful for trying it out. (Note that to access the application you need a user name and password; you can find this in the userman.ltm topic map by looking at it in the Omnigator.)


Account Information
You can edit your basic information and change passsword
Account Profile
{{user_full_name}}
{{user}}
Upload Photo
Change password
Current Password
New Password
Confirm Password
Notification Settings
You can turn on/off the notifications and choose only what you wish to recieve
Emails
- Birthday’s
- Leaves
- Holidays


ayy, hello there. - it's not finished yet™.
20 years old, C++ nerd.
if you want to get in touch with me, just write a mail - or contact me via XMPP.
mail:acheloos(AT)butterna(DOT)se
XMPP:acheloos(AT)jabber(DOT)metalab(DOT)at
BTC:bc1q2h0cehn9s49hkgew7xeuk842yf03zw7say2ujw
LTC:LiCAS1M1bdZ4DvHR3X1Y5Usr59hLYu87KT


German is one of the many languages spoken in Europe. I've been told that it also is a quite difficult one. In this this article I would like to share some funny or interesting facts about German with you.
Script
I recently published a paper about language identification.
For this, I collected 1000 paragraphs from random Wikipedia articles, including
the German one. One thing I was interested in is which script defines the language.
While most people will probably say that German is written in the Latin script (so: A-Z
and a-z
) with some extra characters (ß
, äöü
, ÄÖÜ
),
I wanted to derive this from the data. So I counted each unicode code point, sorted them descending
by frequency and added characters for some thresholds \(\theta\):
- \(C_{0.50} = \{\text{SPACE}, e, n, r, i, t\}\): Yes, only 6 characters make up 50% of the texts! And the most common one is one that isn't even mentioned in the usual lists!
- \(C_{0.75} = C_{0.50} \cup \{s, a, d, h, u, l, o\}\): We get the remaining vocals
- \(C_{0.90} = C_{0.75} \cup \{c, g, m, b, f, ., w, k, z, COMMA, S, v, p, 1\}\): The first capital letter, first punctuation marks and the first digit joins
- \(C_{0.99} = C_{0.90} \cup \{ü, D, B, A, ä, M, 0, G, 9, K, F, E, P, W, 2, L, -, H, ö, R, 8, V, I, T, J, N ,), (, 5, y, ß, 6, 7, 4, Z, C, 3\}\): Now we have
a-z
andäöüß
but notjqx
. We haveA-C
but notOQUXY
. We have the punctuation marks,.()-
,SPACE
and the digits0-9
. 64 characters in total - \(C_{1.00}\) contains 247 characters in total, including
їышхдЬСРОВτςεːˈżşśŁğëæâÀ£濱滨春川區区ንሣሞሎیِنمظسرداשלכואҐящчфжбЯЮЩЧУТНИЖЇІφοιαίήέʿʃɛšœňńİēčČýûúøÚÁ¢#
.
Lower and upper case
One might think that you could actually just write everything in lower case, without changing the meaning. While this is certainly true for most examples, there are some where it changes the meaning. With context, of course, you can still know what was meant.
Example 1:
EN: The spiders
DE: Die Spinnen
DE: Die spinnen!
EN: They are crazy!
Example 2:
EN: The captured flea
DE: Der gefangene Floh.
DE: Der Gefangene floh.
EN: The prisoner fled.
Example 3: Single words
EN: tremendous | the lawn | the drink
DE: ungeheuer | der Rasen | der Trank
DE: Ungeheuer | rasen | er trank
EN: monster | drive (too) fast | he drank
Punctuation
Just as with lower- and upper case, punctuation doesn't matter too much in most cases in German. And context is king. But if you are pedantic, ignore the context or just want to missunderstand the text, the following can be misunderstood:
Example 1:
EN: We eat, kids. (Talking to the children)
DE: Wir essen, Kinder.
DE: Wir essen Kinder.
 (Saying that you eat children as a dish)
Example 2: This one is actually confusing. Likely also with context.
EN: Professors say, students are doing well.
DE: Professoren sagen, Studenten haben es gut.
DE: Professoren, sagen Studenten, haben es gut.
EN: Professors, students say, are doing well.

DE: Tötet ihn nicht, freilassen!
DE: Tötet ihn, nicht freilassen!
EN: Kill him, don't release him!
Example 4:
EN: We recommend him to follow.
DE: Wir empfehlen ihm, zu folgen.
DE: Wir empfehlen, ihm zu folgen.
EN: We recommend to follow him.
Example 5: Even deepl has problems with this
EN: He doesn't want her.
DE: Er will sie nicht.
DE: Er will, sie nicht.
EN: He likes, but she doesn't.
Articles
Where you only have the
in English, you have der
, die
, das
in German.
EN: It's the table.
DE: Es ist der Tisch.
EN: It's the wallet.

EN: It's the bread.
DE: Es ist das Brot
The concept of Grammatical gender is pretty absurd: der
is male, die
is female and das
is neuter. While you can say "die Anna" und "der Bob",
many words have quite arbitrary grammatical gender:
- the girl: "das Mädchen" - it's neuter
- the box: "die Box" - it's female
- the key: "der Schlüssel" - male
And the article also changes for plural forms:
EN - Singular: the girl | the box | the key
EN - Plural : the girls | the boxes | the keys
DE - Singular: das Mädchen | die Box | der Schlüssel
DE - Plural : die Mädchen | die Boxen | die Schlüssel
Of course, it changes with different grammatical cases:
EN: the key
DE: der Schlüssel
EN: It's on the key.
DE: Es ist auf dem Schlüssel.
EN: I give him the key.
DE: Ich gebe ihm den Schlüssel.
To summarize: The English word the
can be translated to 9 different German
words:
| Male | Female | Neuter | Plural | |
|---|---|---|---|---|
| Nominativ | der | die | das | die |
| Genitiv | den | die | das | die |
| Dativ | dem | der | dem | denen |
| Akkussativ | dessen | deren | dessen | deren |
Long words
German has crazy long words. The longest one I've seen in 8th grade or so is
DE: Brandrodungswanderhackfeldbau
EN: slash-and-burn migration hackfield cultivation
I will add more another day 🙂
Missing Words
There are some things you cannot easily express with a single word in German:
- Girlfriend / boyfriend: You can say "meine feste Freundin" and the word "feste" indicates that it's about your partner. And, of course, you can say "meine Partnerin", but that also has other meanings (e.g. hiking partner, partner at a law firm, ...)
- Not thirsty: I think this one is also missing in English. When you are hungry and you ate, you say in German "Ich bin satt". But when you are thirsty and you drink, you can only negate: "Ich bin nicht mehr durstig".
Micallenious
- You say "Gesundheit" (directly translated: "health") when somebody sneezes. But although it is very close to "get healthy", you don't say it when somebody is ill. You can, however, say it when somebody says a complicated word.
See also
- Mark Twain: The Awful German Language


---
layout: default
---
Features:
- Documentation of the Kythe schema
- Indexer implementations for C++ and Java
- Compilation extractors for javac, Maven, cmake, Go, and Bazel
- Generic verifier for indexers
- Sample cross-reference service and accompanying web UI
- Many useful utility commands to work with Kythe artifacts


Applies BP-Quant to a pepData object
bpquant(statRes, pepData, pi_not = 0.9, max_proteoforms = 5)
| statRes | an object of the class 'statRes' |
|---|---|
| pepData | is an omicsData object of the class 'pepData' |
| pi_not | is a numeric value between 0 and 1 indicating the background probability/frequency of a zero signature. |
| max_proteoforms | a numeric value, a maximum threshold for the number of possible proteoforms. |
a list of data frames, one for each unique protein. The data frames have three columns, "Protein", "Mass_Tag_ID" (which is molecule ID), and "ProteoformID". The class of this list is 'isoformRes'.
The statRes object contains the signatures data frame, the pepData object is used for its e_meta data frame. Next the signatures data frame and e_meta are merged by their edata_cname (“Peptide”) columns, this new data frame called protein_sig_data will be input to bpquant_mod in a “foreach” statement. “Foreach” will subset protein_sig_data for each unique protein and apply bpquant_mod to each subset and store the results.
dontrun{ library(pmartR) library(pmartRdata) mypepData <- group_designation(omicsData = pep_object, main_effects = c("Condition")) mypepData = edata_transform(mypepData, "log2") imdanova_Filt <- imdanova_filter(omicsData = mypepData) mypepData <- applyFilt(filter_object = imdanova_Filt, omicsData = mypepData, min_nonmiss_anova=2) imd_anova_res <- imd_anova(omicsData = mypepData, test_method = 'comb', pval_adjust='bon') result = bpquant(statRes = imd_anova_res, pepData = mypepData) }#> Error: <text>:1:8: unexpected '{' #> 1: dontrun{ #> ^


Creation and manipulation of the ID-index Provides the DTD parser for extracting ID attribute declarations This software is in Public Domain. IT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. Please send bug reports and comments to<EMAIL_ADDRESS>Dmitry Lizorkin ID-index provides fast access to XML elements by their unique ID. ID-index has the following structure: id-index = ( (id . element) (id . element) ... ) i.e. id-index = (list (cons id element) (cons id element) ...) where id - (a string) element's unique ID element - an SXML presentation of an element Creation of an id-index generally consists of two steps. On the first step, a document declaration (internal and external DTD) is read and information of ID attributes is extracted. This is presented in a following form: id-attrs = ( (elem-name attr-name attr-name attr-name ...) (elem-name attr-name attr-name attr-name ...) ... ) i.e. id-attrs = (list (cons elem-name (list attr-name attr-name attr-name ...) (cons elem-name (list attr-name attr-name attr-name ...) ...) where elem-name - (a symbol) a name of the element attr-name - (a symbol) element's attribute having an ID type On the second step, if an SXML presentation of the document is available, 'id-attrs' are used for forming an 'id-index'. If there is no SXML presentation for a document yet, both steps are performed as a single function call - to a specialized SSAX parser. This parser constructs an SXML presentation and an 'id-index' in a single pass ATTENTION: 1. Only non-qualified 'elem-name' and 'attr-name' are correctly supported 2. Parameter entity reference (PEReference) is NOT supported
Function reads a whitespace (S production)
Ignores all symbols until template-symbol
Read N symbols from a port
This function reads a name - a sequence of characters ending with a whitespace or '<'. '>', '(', ')', '[', ']', '|'
This function reads a literal literal ::= ('"' [^"]* '"') | ("'" [^']* "'") A string is returned
Converts a string into small letters
Takes an 'id-attrs' which can contain equal element names Returns a new 'id-attrs' where all element names are unique
These functions are not intendes for error detection, they assume that the document is correct
This function ignores information related to a PI production [16] [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' It looks for an ending '?>' template
This function ignores information related to a Comment production [15] [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->' The starting '<!' has been already processed The function looks for an ending '-->' template
This function processes AttType production ([54]-[59] in XML specification) [54] AttType ::= StringType | TokenizedType | EnumeratedType [55] StringType ::= 'CDATA' [56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS' [57] EnumeratedType ::= NotationType | Enumeration [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' [59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' The function returnd #t if the attribute has an ID type and #f otherwise
This function processes DefaultDecl production ([60] in XML specification) [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue) The result is always #t
This function processes AttDef production ([53] in XML specification) [53] AttDef ::= S Name S AttType S DefaultDecl If an attribute has an ID type, (list attribule-name) is returned (a list of one element). Otherwise, function returns an empty list
The function processes AttlistDecl production ([52] in XML specification) [52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>' The starting '<!ATTLIST' has been already processed 'id-attrs' are returned as a result
This function processes a multiple markupdecl production [29] [29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment 'id-attrs' are returned as a result
This function processes a doctypedecl production ([75] in XML specification) [75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral The function ignores a PubidLiteral 'id-attrs' are returned as a result
This function processes a doctypedecl production ([28] in XML specification) [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl | DeclSep)* ']' S?)? '>' The function doesn't process a DeclSep (this is a PEReference which this programme doesn't support) The starting '<!DOCTYPE' has been already processed 'id-attrs' are returned as a result
This function processes a prolog production ([22] in XML specification) [1] document ::= prolog element Misc* [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)? [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' [27] Misc ::= Comment | PI | S 'id-attrs' are returned as a result
We use this variant when we already have an SXML presentation of the document
Read the DTD uri-string - a URI for the DTD location (a string) 'id-attrs' are returned as a result
Read the declaration from the document's prolog. If prolog contains a reference to an external DTD, it is processed either uri-string - a URI for the document location (a string) 'id-attrs' are returned as a result
This function forms an 'id-index' and inserts it in the document document - a root node of the document (SXML presentation) id-attrs - the result of the previous step A new SXML document is returned. It contains an auxiliary list with an 'id-index subtree. If the source document already contains such a subtree, it will be replaced. Other subtrees in an auxiliary list will remain unchanged.
id:seed = (list id-attrs id-index) id-attrs, id-index - see a head comment
Mutator
Accessors
This function is called by the NEW-LEVEL-SEED handler A new 'id:seed' is returned
This function is called by the FINISH-ELEMENT handler A new 'id:seed' is returned
This function is called by the DOCTYPE handler A new 'id:seed' is returned
This function constructs the member of an axuiliary list
Function reads a whitespace (S production)
(define (id:process-s port) (let ((symb (peek-char port))) (cond((eof-object? symb) symb) ((char=? symb #\space) (read-char port) (id:process-s port)) ((char=? symb #\return) (read-char port) (id:process-s port)) ((char=? symb #\newline)(read-char port) (id:process-s port)) ((char=? symb #\tab)(read-char port) (id:process-s port)) (else symb))))
Ignores all symbols until template-symbol
(define (id:ignore-until templ-sym port) (let loop ((symb (peek-char port))) (cond((eof-object? symb) symb) ((equal? symb templ-sym) (read-char port) symb) (else (read-char port) (loop (peek-char port))))))
Read N symbols from a port
(define (id:read-n num port) (id:process-s port) (let loop ((num num) (res '())) (if(= num 0) (list->string (reverse res)) (let((symb (peek-char port))) (cond((eof-object? symb) symb) (else (read-char port) (loop (- num 1) (cons symb res))))))))
This function reads a name - a sequence of characters ending with a whitespace or '<'. '>', '(', ')', '[', ']', '|'
(define (id:read-name port) (id:process-s port) (let loop ((res "")) (let ((symb (peek-char port))) (cond((eof-object? symb) res) ((member symb '(#\space #\tab #\return #\newline #\< #\> #\( #\) #\[ #\] #\|)) res) (else (loop (string-append res (string (read-char port)))))))))
This function reads a literal literal ::= ('"' [^"]* '"') | ("'" [^']* "'") A string is returned
(define (id:process-literal port) (id:process-s port) (let((quot (peek-char port))) (if(eof-object? quot) ; an incorrect situaltion "" (let((quot (if (char=? (read-char port) #\") #\" #\'))) (let loop ((res '())) (let((symb (peek-char port))) (cond ((eof-object? symb) (list->string (reverse res))) ((char=? symb quot) ; end of the string (read-char port) (list->string (reverse res))) (else (read-char port) (loop (cons symb res))))))))))
Converts a string into small letters
(define (id:to-small str) (let loop ((arg (string->list str)) (res '())) (cond((null? arg) (list->string (reverse res))) ((char-upper-case? (car arg)) (loop (cdr arg) (cons (char-downcase (car arg)) res))) (else (loop (cdr arg) (cons (car arg) res))))))
Takes an 'id-attrs' which can contain equal element names Returns a new 'id-attrs' where all element names are unique
(define (id:unite-id-attrs id-attrs) (let loop ((id-attrs id-attrs) (new '())) (if (null? id-attrs) new (let rpt ((elem-name (caar id-attrs)) (atts (cdar id-attrs)) (rest (cdr id-attrs)) (id-attrs '())) (cond ((null? rest) (loop id-attrs (cons (cons elem-name atts) new))) ((equal? (caar rest) elem-name) (rpt elem-name (append atts (cdar rest)) (cdr rest) id-attrs)) (else (rpt elem-name atts (cdr rest) (cons (car rest) id-attrs))))))))
This function ignores information related to a PI production [16] [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' It looks for an ending '?>' template
(define (id:ignore-PI port) (id:ignore-until #\? port) (let ((symb (peek-char port))) (cond((eof-object? symb) symb) ((equal? symb #\>) (read-char port) symb) (else (id:ignore-PI port)))))
This function ignores information related to a Comment production [15] [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->' The starting '<!' has been already processed The function looks for an ending '-->' template
(define (id:ignore-comment port) (read-char port) ; it is '-' (read-char port) ; it is '-' (id:ignore-until #\- port) (let((sym1 (peek-char port))) (cond((eof-object? sym1) sym1) ((char=? sym1 #\-) (read-char port) (let((sym2 (read-char port))) ; must be '>' sym2)) (else (id:ignore-comment port)))))
This function processes AttType production ([54]-[59] in XML specification) [54] AttType ::= StringType | TokenizedType | EnumeratedType [55] StringType ::= 'CDATA' [56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS' [57] EnumeratedType ::= NotationType | Enumeration [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' [59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' The function returnd #t if the attribute has an ID type and #f otherwise
(define (id:AttType-ID? port) (let((type (id:to-small (id:read-name port)))) (cond((string=? type "id") #t) ((string=? type "notation") (id:process-s port) (read-char port) ; it is #\( (id:ignore-until #\) port) #f) ((and (string=? type "") (char=? (peek-char port) #\()) ; see [59] (id:ignore-until #\) port) #f) (else #f))))
This function processes DefaultDecl production ([60] in XML specification) [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue) The result is always #t
(define (id:process-DefaultDecl port) (let((type (id:to-small (id:read-name port)))) (cond((string=? type "#fixed") (id:read-name port) ; reads a default value #t) (else #t))))
This function processes AttDef production ([53] in XML specification) [53] AttDef ::= S Name S AttType S DefaultDecl If an attribute has an ID type, (list attribule-name) is returned (a list of one element). Otherwise, function returns an empty list
(define (id:process-AttDef port) (let((att-name (string->symbol (id:read-name port)))) (let((bool (id:AttType-ID? port))) (id:process-DefaultDecl port) (if bool (list att-name) '()))))
The function processes AttlistDecl production ([52] in XML specification) [52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>' The starting '<!ATTLIST' has been already processed 'id-attrs' are returned as a result
(define (id:process-AttlistDecl port) (let((element-name (string->symbol (id:read-name port)))) (let loop ((atts '())) (id:process-s port) (cond((char=? (peek-char port) #\>) ; no more attributes will be declared (read-char port) (if(null? atts) '() (list (cons element-name atts)))) (else (loop (append (id:process-AttDef port) atts)))))))
This function processes a multiple markupdecl production [29] [29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment 'id-attrs' are returned as a result
(define (id:process-markupdecl* port) (let loop ((id-attrs '())) (let((beg (id:read-n 2 port))) (cond((eof-object? beg) id-attrs) ; the file is over ((string=? beg "]>") id-attrs) ; the end of the markupdecl ((string=? beg "<?") ; processing instruction (id:ignore-PI port) (loop id-attrs)) ((and (string=? beg "<!") (char=? (peek-char port) #\-)) ; a comment (id:ignore-comment port) (loop id-attrs)) ((string=? beg "<!") ; AttlistDecl or any other declarations (let ((name (id:to-small (id:read-name port)))) (cond((string=? name "attlist") (loop (append (id:process-AttlistDecl port) id-attrs))) (else (id:ignore-until #\> port) (loop id-attrs))))) (else ; an error condition (cerr "Error in markupdecl production: unexpected " beg nl) (id:ignore-until #\> port) id-attrs)))))
This function processes a doctypedecl production ([75] in XML specification) [75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral The function ignores a PubidLiteral 'id-attrs' are returned as a result
(define (id:process-ExternalID port) (let((system-literal (let((name (id:to-small (id:read-name port)))) (cond ((string=? name "system") (id:process-literal port)) ((string=? name "public") (id:process-literal port) (id:process-literal port)) (else #f))))) (if(not system-literal) '() ; an incorrect situation (let((external-port (open-input-resource system-literal))) (if(not external-port) '() ; a failure (let((id-attrs (id:process-markupdecl* external-port))) (close-input-port external-port) id-attrs))))))
This function processes a doctypedecl production ([28] in XML specification) [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl | DeclSep)* ']' S?)? '>' The function doesn't process a DeclSep (this is a PEReference which this programme doesn't support) The starting '<!DOCTYPE' has been already processed 'id-attrs' are returned as a result
(define (id:process-doctypedecl port) (let((name (id:read-name port))) ; root element's name (id:process-s port) (let((symb (peek-char port))) (cond ((eof-object? symb) '()) ; an incorrect situation ((char=? symb #\[) (read-char port) (id:process-markupdecl* port)) (else (let((id-attrs (id:process-ExternalID port))) (id:process-s port) (let((symb (peek-char port))) (cond ((eof-object? symb) id-attrs) ; an incorrect situation ((char=? symb #\[) (read-char port) (append id-attrs (id:process-markupdecl* port))) (else ; an incorrect situation id-attrs)))))))))
This function processes a prolog production ([22] in XML specification) [1] document ::= prolog element Misc* [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)? [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' [27] Misc ::= Comment | PI | S 'id-attrs' are returned as a result
(define (id:process-prolog port) (let((beg (id:read-n 2 port))) (cond((eof-object? beg) '()) ; a file is over - strange... ((string=? beg "<?") ; PI or XMLDecl (id:ignore-PI port) (id:process-prolog port)) ((and (string=? beg "<!") (char=? (peek-char port) #\-)) ; a comment (id:ignore-comment port) (id:process-prolog port)) ((string=? beg "<!") ; doctypedecl expected (let ((name (id:to-small (id:read-name port)))) (cond((string=? name "doctype") (id:process-doctypedecl port)) (else (cerr "doctypedecl production expected" nl) '())))) (else ; element begins, there was no doctypedecl '()))))
Read the DTD uri-string - a URI for the DTD location (a string) 'id-attrs' are returned as a result
(define (id:read-external-dtd uri-string) (let((port (open-input-resource uri-string))) (if(not port) '() ; a situation of an error (let((id-attrs (id:unite-id-attrs (id:process-markupdecl* port)))) (close-input-port port) id-attrs))))
Read the declaration from the document's prolog. If prolog contains a reference to an external DTD, it is processed either uri-string - a URI for the document location (a string) 'id-attrs' are returned as a result
(define (id:read-document-declaration uri-string) (let((port (open-input-resource uri-string))) (if(not port) '() ; a situation of an error (let((id-attrs (id:unite-id-attrs (id:process-prolog port)))) (close-input-port port) id-attrs))))
This function forms an 'id-index' and inserts it in the document document - a root node of the document (SXML presentation) id-attrs - the result of the previous step A new SXML document is returned. It contains an auxiliary list with an 'id-index subtree. If the source document already contains such a subtree, it will be replaced. Other subtrees in an auxiliary list will remain unchanged.
(define (SXML->SXML+id document id-attrs) (let((aux-subtrees (let((aux ((select-kids (ntype?? '@@)) document))) (if(null? aux) '() (let rpt ((res '()) (to-see (cdar aux))) (cond ((null? to-see) (reverse res)) ((equal? (caar to-see) 'id-index) (rpt res (cdr to-see))) (else (rpt (cons (car to-see) res) (cdr to-see))))))))) (let loop ((nodeset (list document)) (id-index '())) (if(null? nodeset) (let((kids ((select-kids (lambda (node) (not (and (pair? node) (equal? (car node) '@@))))) document))) (cons* '*TOP* (cons* '@@ (cons 'id-index id-index) aux-subtrees) kids)) (let((cur-node (car nodeset))) (cond ((not (pair? cur-node)) ; a text node (loop (cdr nodeset) id-index)) ((assoc (car cur-node) id-attrs) => (lambda (lst) (let((id-values ((select-kids (lambda (x) #t)) ((sxml:filter (lambda (x) (member (car x) (cdr lst)))) ((select-kids (lambda (x) #t)) ((select-kids (ntype?? '@)) cur-node)))))) (loop (append ((select-kids (ntype?? '*)) (car nodeset)) (cdr nodeset)) (append id-index (map (lambda (x) (cons x cur-node)) id-values)))))) (else (loop (append ((select-kids (ntype?? '*)) (car nodeset)) (cdr nodeset)) id-index))))))))
Mutator
(define (id:make-seed id-attrs id-index) (list id-attrs id-index))
Accessors
(define (id:seed-attrs id:seed) (car id:seed))
(define (id:seed-index id:seed) (cadr id:seed))
This function is called by the NEW-LEVEL-SEED handler A new 'id:seed' is returned
(define (id:new-level-seed-handler id:seed) id:seed)
This function is called by the FINISH-ELEMENT handler A new 'id:seed' is returned
(define (id:finish-element-handler elem-gi attributes id:seed element) (cond ((assoc elem-gi (id:seed-attrs id:seed)) => (lambda (lst) (let loop ((atts attributes) (id-index (id:seed-index id:seed))) (if (null? atts) (id:make-seed (id:seed-attrs id:seed) id-index) (let((att (car atts))) (cond ((pair? (car att)) ; namespace aware (loop (cdr atts) id-index)) ((member (car att) (cdr lst)) (loop (cdr atts) (cons (cons (cdr att) element) id-index))) (else (loop (cdr atts) id-index)))))))) (else id:seed)))
This function is called by the DOCTYPE handler A new 'id:seed' is returned
(define (id:doctype-handler port systemid internal-subset?) (let((id-attrs (if (not systemid) '() ; systemid not supplied (let((external-port (open-input-resource systemid))) (if (not external-port) '() ; a failure (let((id-attrs (id:process-markupdecl* external-port))) (close-input-port external-port) id-attrs)))))) (let((id-attrs (if internal-subset? (id:unite-id-attrs (append id-attrs (id:process-markupdecl* port))) (id:unite-id-attrs id-attrs)))) (id:make-seed id-attrs '()))))
This function constructs the member of an axuiliary list
(define (id:ending-action id:seed) (let((id-index (id:seed-index id:seed))) (cons 'id-index id-index)))


Weekly Meeting: 2015-05-06
6th May 2015: TLS integration, Irmin-in-browser and MirageOS Hangout
Agenda
- Quality and Test
- TLS support
- IndexedDB / Irmin-in-the-browser
- MirageOS Q&A hangout?
Attendees: Reynir Björnsson, Amir Chaudhry (chair), Justin Cormack, Thomas Gazagnaire, Masoud Koleini, Thomas Leonard, Hannes Mehnert, Richard Mortier, Mindy Preston and Jeremy Yallop
Notes
Quality and Test
Been provisioning a number of backends on one of our machines (punk), which is serving https://mirage.io, including tuntap and unix. Would also like to have an ARM backend running but that’s blocked on Scaleway as they haven’t finished looking into the Xen support (scaleway/kernel-tools#14). We will also need a logging interface for unikernels but that can wait until the other work is done.
Ultimately, we’d like to use Mirage.io as the main site and load-balance the incoming connections across all our supported backends (x86/ARM, Unix/Xen). Would also like this to work across multiple providers, including AWS. We’d need a method to inform the visitor which version of the site they’re looking at in order to triage and fix incoming bug reports.
TLS support
This is working but we need to fix a memory leak in Entropy and maybe also
resurrect xentropyd
. Anil mentioned that he’d write up instructions on how
to go from getting certificates, all the way to a deployed https website —
likely based on his experience with certs from Gandi.net
Amir will coordinate a set of blog posts for the TLS related releases and we should publish things when we’re all back. For the moment we should focus on testing things with the new stack.
IndexedDB / Irmin-in-the-browser
ThomasL mentioned that he announced Cuekeeper and published a blog post about it and today he also got it working with Safari! It turns out that Safari’s database implementation can’t cope with concurrent reads, so when it throws an exception, Cuekeeper has to back off and try again.
Anil will be speaking at an OCaml user group meeting (Silicon Valley OCaml Meetup) and will be showing the crowd an Irmin demo and Cuekeeper.
ThomasG is putting together docs on how to run some of our existing demos and it should be almost a step by step, repeatable guide. Would appreciate feedback on this.
It turns out that lots of people have been trying out MirageOS and have found their way to Amir’s Jekyll to Unikernel post and Mindy’s post on deploying unikernels to EC2. Getting deployments up to EC2 is still quite tricky and a nicer way to do this would be very welcome. Lots of people seem to have scripts for this including Anil, Mindy and Jyostna, and it would be good to publicise or consolidate these. We’d also have to ensure they work when we have SSL support.
MirageOS Q&A hangout
This was discussed in a previous call and was meant to be brought up this time. Given how busy we’re likely to be this summer, we’ll probably put this off until later in the year.
–
AoB
-
Jitsu/NSDI - We should consider how we can improve our release management process. At the moment we have no good way to do this as it requires the ability to manage issues across repos. Most of our releases involve cross-cutting changes and we have many libraries. We could possibly put something together ourselves using the GitHub API but this would be a project in its own right. Perhaps David Sheets can look at this once he’s back.
-
UROP/Pioneer Projects. We have two summer students taking part, with one project on a DHCP server and another on an NTP server. If anyone has written a DHCP server before, please let us know.
-
The next call is scheduled for Wednesday, 20th May. Please add any agenda items you wish to discuss in advance and refer to the mailing list for actual details a day or so in advance.


Football: Levein sacked as Hearts manager
GLASGOW: Former Scotland boss Craig Levein was sacked as manager of Scottish Premiership strugglers Hearts on Thursday (Oct 31).
Levein has stepped down from the club's board, although he will stay on in a lesser role until the end of the season.
The decision came after Wednesday's 1-0 defeat by fellow strugglers St Johnstone saw Hearts slip to 11th spot, level on points with bottom of the table St Mirren.
"The board of directors of Heart of Midlothian Football Club has today taken the decision to relieve Craig Levein of his first-team managerial duties," a Hearts statement read.
Levein spent 14 years as a Hearts player before starting a managerial career that including two spells as Hearts boss and stints with Leicester and Scotland.
Assistant manager Austin MacPhee will take charge ahead as Hearts prepare to face Rangers in the Scottish League Cup semi-finals on Sunday.
"Craig will not return to his previous director of football role and, that being so, will step down from the board," the statement added.
"He will, however, see out his contract, which runs until the end of the season, working closely with the executive management team in continuing to develop and improve the structure of the backroom and youth operations within the development."


ANUSHIV SHUKLA
Hi there! I'm Anushiv Shukla from India. I am a student at JSSATEN. I have 2+ years of experience in creating web apps and desktop applications. I have experience programming in many different languages such as C, C++ and Python, however, some of my favourite projects involve working in Django, DRF and Django Channels.
I will be completing my graduation in 2021 in Information Technology.
A representation of my proficiency in each skill
Used in my Desktop application, in many Web based projects and for Competetive Programming.
Used in my all Web based projects.
Used for Competetive programming on platforms like Hackerrank, Hackerblocks etc.
Used for Competetive programming on platforms like Hackerrank, Hackerblocks etc.
Used in most of my web based project
Used in most of my web based project
Used in most of my web based project
Used in my Django Projects based on REST API.
Used in most of my Django Projects.
Used in Competetive Programming while solving the problems.
Learned and practised in the College lab.
Used and developed some in Competetive Programming while solving the problems.
Used in my Desktop based project
Used in this Portfolio site
Created and Maintained by Anushiv Shukla
Code licensed under MIT License


| DOSE: |
37.5 mg |
|
IAP |
(powder / crystals) |
I've tried this substance a few times now... started at 20 mg, went to ~30, then 35-40mg. I plan to continue to go upwards a bit on the dosage, but I'm doubting any new revelations are to be had. I'm not going to give an in-depth trip report, just my thoughts on it so far.
It seems the big question on everyone's mind is this - 'how does this stuff compare to MDMA (ecstasy)?' Some might have touted this as a kinda E without the neurotoxicity. In my experience I haven't seen that. But I think the comparison is somewhat valid and interesting, so I'll use MDMA as the yardstick here.
On social anxiety: After the second experiment I remarked to someone 'If MDMA makes me Willy Wonka, I'm Fonzie on IAP'. IAP would be my drug of choice in most social situations. You're smooth, chilled out, timing of words is spot on, charismatic in an understated way.
On creativity: Didn't make me feel especially creative. Didn't exorcize any oddball speech, didn't feel like picking up a guitar.
On the body buzz: Nice, warm, surface type buzzz. Whenever I sat down I noticed a really good tingle in my feet. Nothing deep down though. Sorta like being wrapped in a blanket wherever you went. Nice walking outside in the cool breeze.
On euphoria: Not particularly euphoric alone. Just chilling by myself, nothing. But experienced much joy in the conversations I had.
On empathy: I would rank this pretty close to MDMA in this area. It was odd because you don't feel it outright, but at the end of each experiment I definitely had attained a real closeness with those around me (5-10 people in each instance). Most of these people were fairly new acquaintances.
On mind-mush: My mind was especially clear and focused. More so than sober.
On introspection: No, not particularly.
On appetite: Rather normal, maybe a little bit of the munchies.
On fear: Have no fear, this stuff is tame. A shot of Jager I'd fear more.
On dosage/reponse curve: Pretty linear so far.
On comeup and duration: Comeup took long, about 2 hours. Pretty flat after that, seemed to last about 6-8.
On mixing with alcohol: Does seem to deepen the experience somewhat. And I'm not a fan of booze.
On being a party drug: Nope. Can't see it. This could be a good chill pill. You know, if you had a machine to make pills. It doesn't seem to 'give' you any energy you didn't already have to start with. Neutral - not fun, but not not.
On and on: Nope. That's the last colon.
So in a nutshell, this is a kick-back substance, fairly transparent - will not potentate the goofy glow-stick wielding warrior inside you. Yet socialization is the enabler. You don't want to be home alone and watch TV - thoughts such as 'I'm kinda hot. Maybe I should make some kettle corn' will iterate through your mind.
It's feasible as a therapeutic device. Work out that troubled relationship, maybe take on a first date, use at an alcohol-only party, beach, summer barbeques. You know, 'normal' life activities.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Flamengo head to Qatar for Club World Cup with dramatic win
LIMA, Peru: Flamengo, the new champion of the Copa Libertadores, will head to Qatar next month for the Club World Cup as they won its second South American title in dramatic fashion when it produced two last-gasp goals to overcome defending champion River Plate 2-1 in the final on Saturday in Lima.
Flamengo joins Liverpool FC, Al-Sadd, Espérance Sportive de Tunis, Monterrey, Hienghène Sport and Al Hilal in the Club World Cup, which will kick off in Qatar on December 11.
Flamengo are through to the semi-final of the tournament and will play their first match on December 17 at Khalifa International Stadium.
Saudi Arabia's Al Hilal beat Urawa Red Diamonds 2-0 on Sunday to claim Asian club title in the AFC Champions League and qualified for the Club World Cup.
Also read: Late goals give Flamengo dramatic Copa Libertadores title
Read also
Al Thawadi said that preparations for Qatar 2022 are coming along very well and we have two stadiums already operational and by the end of the first half of next year, we will have three more stadiums ready and operational. By the end of 2021, all eight of our stadiums will have been inaugurated, tested and be tournament-ready.
Read More
FIFA Club World Cup 2019: Amazing experience awaits fans
From sightseeing trips and nature tours that cover all aspects of local life to unlimited shopping opportunities, Qatar offers visitors a wide variety of activities, with something for everyone. The FIFA Club World Cup Qatar 2019, which will be held from December 11-22, will undoubtedly afford football fans everywhere the chance to enjoy a unique experience.
Read More
Last-minute tickets for Club World Cup Qatar available online now
The last-minute sales phase for the FIFA Club World Cup 2019 started online today, 14 November 2019, at 3pm.


The following objects, properties, and methods are either new or have been updated in the 6.3 version of the map control.
|
Name |
Description |
|---|---|
|
Contains additional geocoding options for the VEMap.Geocode Method. |
|
|
Finds a geographic location based on a specified address or place name string as well as other geocoding options. |
|
|
Performs a search based on a given query and options. |
|
|
Contains additional search options for the VEMap.Search Method. |
|
|
A Boolean value indicating whether the VEShape icon on the map can be dragged using the mouse. |
|
|
Occurs when a shape is being dragged across the map. |
|
|
Occurs when a shape drag has stopped. |
|
|
Occurs when the user starts dragging the shape. |


注册
One of the most interesting places to learn is the library. There are a lot of professional books in the library, which can enrich your professional knowledge. When you confused professional, you can look at the same professional people you understand and recognize it.


{% extends "registration/base.html" %} {% load i18n %} {% block content %}
{{ jazzmin_settings.welcome_sign }}
{% trans "Thanks for spending some quality time with the Web site today." %}


{{< layout}} {{$back}}
You must be able to see your whole face in the photo. Tie your hair back if you need to.
Approved
Keep hair away from eyes
Avoid covering face


Panditaradhyula Balasubrahmanyam also known as S. P. B was an Indian musician, playback singer, music director, actor, dubbing artist, and film producer who worked predominantly in Telugu, Tamil, Kannada, Hindi, and Malayalam films. Widely regarded as one of the greatest singers of India, He won six National Film Awards for Best Male Playback Singer for his works in four different languages; Telugu, Tamil, Kannada, and Hindi. According to some sources, he held the Guinness World Record for recording the highest number of songs by a singer with over 40,000 songs. He recorded 21 songs in Kannada for the composer Upendra Kumar in Bengaluru from 9 am to 9 pm on 8 February 1981. In addition, he recorded 19 songs in Tamil and 16 songs in Hindi in a day, which has also been called a record.
Even when he talks, he seems to sing. In whatever language you’ve heard him, and whatever kind of song you love him for, there’s no way you wouldn’t have heard an S.P. Balasubrahmanyam song if you’re an Indian, because he’s sung more than 40,000!.Despite a fabulous musical career spanning 49 years in the Telugu, Tamil, Kannada, Hindi, and Malayalam film industries, SPB remains down to earth.
I don’t know the ABCD of the theory of music. I don’t know how to write notations even now. I never went to anybody to learn music. But I went to everybody to learn music — by listening to so many people!
Listen the S.P.B hit songs jukebox
List of awards and nominations received by S.P.B
If any information changes required or for any suggestion click here to write us


101 LINQ Samples in JavaScript (ES 6)
Run the Sample
Comment or uncomment the desired samples' initialisation in the source code of this page
Press Ctrl + F5
Results are in the console


You are authenticated as {{ username }}, but are not authorized to access this page. Would you like to login to a different account?
{% endif %}{% extends '../index.html' %} {% block content %} {% if form.errors and not form.non_field_errors %}
{% if form.errors.items|length == 1 %}Please correct the error below.{% else %}Please correct the errors below.{% endif %}
{% endif %} {% if form.non_field_errors %} {% for error in form.non_field_errors %}{{ error }}
{% endfor %} {% endif %}You are authenticated as {{ username }}, but are not authorized to access this page. Would you like to login to a different account?
{% endif %}


{% extends "base_hub.html" %} {% block content %}
Welcome to the AI Hub,This site is under construction! We aim to provide various open source software to facilitate the power of AI in Dual Universe. Current Projects include:
- An interactive management tool for organizations.
{% load static %}Here are some test links:


EYES WIDE SHUT (1999) 159 min Rated: R Critic rating ** (out of four)
Cast: Tom Cruse, Nicole Kidman, Sidney Pollack Screenplay: Stanley Kubrick, Frederic Raphael (based on the novel "Traumnovelle" by Arthur Schnitzler) Produced and Directed: Stanley Kubrick
The most frequently mentioned aspect of this movie has been the fact that it is Stanley Kubric's last film. We have heard it called 'Kubricks final masterpiece' so often that it is east to forget that this is totally irrelevant to the quality of the movie. Kubrick did not plan to die after the filming, so it's not likely that he looked at this film as a finale statement of any sort, a grand summery of everything he felt and knew about filmmaking. Most likely, he thought he had one or two more films in him, as did most of us. And had he survived to make a few more movies, "Eyes Wide Shut" would probably be remembered as one of his lesser works, a great director making a highly idiosyncratic choice of scripts, rather than as a final masterpiece. Kubrick is in top form as a director and story-teller in EWS. But this is ultimately the film's only redeeming quality. The script, both story and dialog, is trite and contrived. There were at least a dozen times I knew exactly what the next line would be and the plot held no surprises or revelations. In the hands of any other director, and probably without the star power of Cruse and Kidman, EWS would have come across as another lame adventure in sexual psychobabble.
We start of being introduced to Kidman's butt. Cruse plays a doctor and Kidman his unemployed art-dealer wife, living an expensive Park Avenue life. They attend a dinner party held by Pollack, where they both spend time flirting with other people, both obviously thinking the other won't see or mind. Kidman's scenes are the more important here. She gets tipsy and dances with a slimy rich Hungarian who gives her his philosophy on marriage as he tries to seduce her. This sets up for a conversation later at home when the couple gets high as a prelude to lovemaking. Here the scripts starts to fall down as Kidman's character mentions her flirting and tries to start a fight when Cruse says it would be understandable that a man might try to seduce her. The rest of the scene follows a pattern of nothing he says is going to be the right thing, and comes across as contrived as Kidman seems to do her best to start a fight about nothing. The failure of this scene is the most unforgivable in the film, as the main purpose for the exchange is for Kidman to tell him about an incident where she almost slept with another man and had for a moment been willing to sacrifice her marriage for a one-night stand.  Cruse's odyssey is beset not only with unforeseeable temptations, it is beset with coincidences which the story relies on for froward motion. Just as Cruse is recoiling form his wife's confession, he is called to the bedside of a friend and patient who died and whose daughter Cruse needs to console. The daughter confesses her love for him and tries to seduce him, but Cruse is rescued from temptation as her fiancée arrives. Later Cruse drops in to a nightclub where an old classmate is playing piano. And the old friend just happens to mention a sex party where he plays background music. Cruse of course gets him to reveal the location and secret password. An earlier encounter with a hooker who comes on to Cruse is believable enough, but again he is rescued at the last by a call on his cell phone from his wife. Cruse comes to his senses and leaves the prostitute's apartment. Even at the masked sex party, Cruse is saved form committing adultery as he is persuaded to leave by some one who know him and warns him he has been detected. Later, he is rescued from complication of his being at the party when it turn out that a close friend of his was there under on of the masks. The constant coincidences are further marred by cliched lines or situations. At most turns of the movie, I could just feel what was going to happen or be said next. Kubrick certainly put all of his skills and talents as a filmmaker into telling us this story. His trademark shots and scene placements continue to give a you-are -there feel to the story. We can feel the menace as Cruse walks into the costumed sex party, which is part religious rite, part theater, and certainly becomes an orgy. The film is visually beautiful and as always, Kubric has chosen his background music effectively. But for me, one of the effects of all the artistic work in direction and lighting is that the film almost takes itself too seriously for such a weak script. Of the much argued placement of digital figures to cover up the genitals of couples in the orgy, it is not something one would notice unless you knew about it before-hand, and no real detriment to the film unless you absolutely have to see penis-vagina contact to enjoy your films. I do not fault Kubrick for putting them in his original cut as the scenes both artful and chilling. But I don't think the European audiences who will see the film unaltered are really getting that much more for their money. The cynic in me is now starting to believe that the secrecy and rumors surrounding the film's release were done intentionally to hide the fact that the story is so lacking. There is practically nothing about this film that needs to be kept secret. Most likely, the secrecy was a marketing ploy. I almost wish that the rumors of Cruse and Kidman having sex on screen (they don't) Cruse wearing a dress (he doesn't) or Kidman shooting up heroin (she smokes pot) were true. This would probably made for a much more interesting film. In short, this film is for Kubrick fanatics only.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Frederic Chopin:
Cello Sonata in g, Op. 65
Jacqueline du Pre, cello; Daniel Barenboim, piano
6:29 PM
Buy It
Today's Playlist


Unrivalled writing experience.
Rich markdown editor
StackEdit’s markdown syntax highlighting is unique. The refined text formatting of the editor helps you visualize the final rendering of your documents.
WYSIWYG controls
StackEdit provides very handy formatting buttons and shortcuts, thanks to PageDown, the WYSIWYG-style markdown editor used by Stack Overflow.
Live preview with Scroll Sync
StackEdit’s Scroll Sync extension accurately binds the scrollbars of the editor panel and the preview panel to ensure that you always keep an eye on the output while writing.
Built-in spell checking
StackEdit uses browser’s built-in spell-checker to perform efficient, multi-language spell-checking and correction suggestions.
Fully customizable
StackEdit offers infinite combinations of settings. Theme, layout, shortcuts can be personalized. For the rest, StackEdit gives you the freedom to make your own extension…


*DB
{1}
, the database root. All transient symbols in a database can
be reached from that root. Except during debugging, any explicit literal access
to symbols in the database should be avoided, because otherwise a memory leak
might occur (The garbage collector temporarily sets *DB
to
NIL
and restores its value after collection, thus disposing of all
external symbols not currently used in the program).
: (show *DB)
{1} NIL
+City {P}
+Person {3}
-> {1}
: (show '{P})
{P} NIL
nm (566 . {AhDx})
-> {P}
: (show '{3})
{3} NIL
tel (681376 . {Agyl})
nm (1461322 . {2gu7})
-> {3}
*Dbg
+
command line argument (see Invocation). When non-NIL
, the $
(tracing) and !
(breakpoint) functions are enabled, and the
current line number and file name will be stored in symbol properties by
de
, def
and dm
. See also debug
, trace
and lint
.
: (de foo (A B) (* A B))
-> foo
: (trace 'foo)
-> foo
: (foo 3 4)
foo : 3 4
foo = 12
-> 12
: (let *Dbg NIL (foo 3 4))
-> 12
*Dbs
pool
). It is typically set
by dbs
and dbs+
.
: *Dbs
-> (1 2 1 0 2 3 3 3)
+Date
date
), a subclass of +Number
. See also Database.
(rel dat (+Ref +Date)) # Indexed date
+Dep
+relation
s. Expects a list of (symbolic)
attributes that depend on this relation. Whenever this relations is cleared
(receives a value of NIL
), the dependent relations will also be
cleared, triggering all required side-effects. See also Database.
In the following example, the index entry for the item pointing to the position (and, therefore, to the order) is cleared in case the order is deleted, or this position is deleted from the order:
(class +Pos +Entity) # Position class
(rel ord (+Dep +Joint) # Order of that position
(itm) # 'itm' specifies the dependency
pos (+Ord) ) # Arguments to '+Joint'
(rel itm (+Ref +Link) NIL (+Item)) # Item depends on the order
(d) -> T
!
breakpoints into all subexpressions of the current breakpoint. Typically used
when single-stepping a function or method with debug
. See also u
and unbug
.
! (d) # Debug subexpression(s) at breakpoint
-> T
(daemon 'sym . prg) -> fun
(daemon '(sym . cls) . prg) -> fun
(daemon '(sym sym2 [. cls]) . prg) -> fun
prg
in the beginning of the function (first form), the
method body of sym
in cls
(second form) or in the
class obtained by get
ting
sym2
from *Class
(or
cls
if given) (third form). Built-in functions (SUBRs) are
automatically converted to Lisp expressions. See also trace
, expr
, patch
and redef
.
: (de hello () (prinl "Hello world!"))
-> hello
: (daemon 'hello (prinl "# This is the hello world program"))
-> (NIL (prinl "# This is the hello world program") (prinl "Hello world!"))
: (hello)
# This is the hello world program
Hello world!
-> "Hello world!"
: (daemon '* (msg 'Multiplying))
-> (@ (msg 'Multiplying) (pass $134532148))
: *
-> (@ (msg 'Multiplying) (pass $134532148))
: (* 1 2 3)
Multiplying
-> 6
(dat$ 'dat ['sym]) -> sym
date
dat
in
ISO format, with an optional delimiter character sym
. See also
$dat
, tim$
, datStr
and datSym
.
: (dat$ (date))
-> "20070601"
: (dat$ (date) "-")
-> "2007-06-01"
(datStr 'dat ['flg]) -> sym
date
according to the
current locale
. If flg
is non-NIL
, the year will be formatted modulo 100. See also
dat$
, datSym
, strDat
, expDat
, expTel
and day
.
: (datStr (date))
-> "2007-06-01"
: (locale "DE" "de")
-> NIL
: (datStr (date))
-> "01.06.2007"
: (datStr (date) T)
-> "01.06.07"
(datSym 'dat) -> sym
date
dat
in
symbolic format (DDmmmYY). See also dat$
and datStr
.
: (datSym (date))
-> "01jun07"
(date ['T]) -> dat
(date 'dat) -> (y m d)
(date 'y 'm 'd) -> dat | NIL
(date '(y m d)) -> dat | NIL
T
argument, the
current Coordinated Universal Time (UTC) is returned. When called with a single
number dat
, it is taken as a date and a list with the corresponding
year, month and day is returned. When called with three numbers (or a list of
three numbers) for the year, month and day, the corresponding date is returned
(or NIL
if they do not represent a legal date). See also time
, stamp
, $dat
, dat$
, datSym
, datStr
, strDat
, expDat
, day
, week
and ultimo
.
: (date) # Today
-> 730589
: (date 2000 6 12) # 12-06-2000
-> 730589
: (date 2000 22 5) # Illegal date
-> NIL
: (date (date)) # Today's year, month and day
-> (2000 6 12)
: (- (date) (date 2000 1 1)) # Number of days since first of January
-> 163
(day 'dat ['lst]) -> sym
date
dat
, in the language of the
current locale
. If lst
is given, it should be a list of alternative weekday names. See also week
, datStr
and strDat
.
: (day (date))
-> "Friday"
: (locale "DE" "de")
-> NIL
: (day (date))
-> "Freitag"
: (day (date) '("Mo" "Tu" "We" "Th" "Fr" "Sa" "Su"))
-> "Fr"
(db 'sym 'cls ['hook] 'any ['sym 'any ..]) -> sym | NIL
cls
, where the values for
the sym
arguments correspond to the any
arguments. If
a matching object cannot be found, NIL
is returned.
sym
, cls
and hook
should specify a
tree
for cls
or one of
its superclasses. See also aux
,
collect
, request
, fetch
, init
and step
.
: (db 'nr '+Item 1)
-> {3-1}
: (db 'nm '+Item "Main Part")
-> {3-1}
db/3
db/4
db/5
+index
. For the key
pattern applies:
+Aux
key combinations
The optional hook can be supplied as the third argument. See also select/3
and remote/2
.
: (? (db nr +Item @Item)) # No value given
@Item={3-1}
@Item={3-2}
@Item={3-3}
@Item={3-4}
@Item={3-5}
@Item={3-6}
-> NIL
: (? (db nr +Item 2 @Item)) # Get item no. 2
@Item={3-2}
-> NIL
: (? (db nm +Item Spare @Item) (show @Item)) # Search for "Spare.."
{3-2} (+Item)
pr 1250
inv 100
sup {2-2}
nm "Spare Part"
nr 2
@Item={3-2}
-> NIL
(db: cls ..) -> num
cls
argument(s). Needed, for example, for the creation of new
objects. See also dbs
.
: (db: +Item)
-> 3
(dbSync 'obj) -> flg
lock
on the database root object *DB
(or obj
if given), and then
calling sync
to synchronize with
possible changes from other processes. When all desired modifications to
external symbols are done, (commit
'upd)
should be called. See also Database.
(let? Obj (rd) # Get object?
(dbSync) # Yes: Start transaction
(put> Obj 'nm (rd)) # Update
(put> Obj 'nr (rd))
(put> Obj 'val (rd))
(commit 'upd) ) # Close transaction
(dbck ['cnt] 'flg) -> any
cnt
'th)
database file, and returns NIL
(or the number of blocks and symbols
if flg
is non-NIL
) if everything seems correct.
Otherwise, a string indicating an error is returned. As a side effect, possibly
unused blocks (as there might be when a rollback
is done before commit
ting newly allocated (new
) external symbols) are appended to the free
list.
: (pool "db")
-> T
: (dbck)
-> NIL
(dbs . lst)
*Dbs
. Each element in lst
has a
number in its CAR (the block size scale factor of a database file, to be stored
in *Dbs
). The CDR elements are either classes (so that objects of
that class are later stored in the corresponding file), or lists with a class in
the CARs and a list of relations in the CDRs (so that index trees for these
relations go into that file). See also dbs+
and pool
.
(dbs
(3 +Role +User +Sal) # 512 Prevalent objects
(0 +Pos) # A:64 Tiny objects
(1 +Item +Ord) # B:128 Small objects
(2 +CuSu) # C:256 Normal objects
(2 (+Role nm) (+User nm) (+Sal nm)) # D:256 Small indexes
(4 (+CuSu nr plz tel mob)) # E:1024 Normal indexes
(4 (+CuSu nm)) # F:1024
(4 (+CuSu ort)) # G:1024
(4 (+Item nr sup pr)) # H:1024
(4 (+Item nm)) # I:1024
(4 (+Ord nr dat cus)) # J:1024
(4 (+Pos itm)) ) # K:1024
: *Dbs
-> (1 2 1 0 2 4 4 4 4 4 4 4)
: (get '+Item 'Dbf)
-> (3 . 128)
: (get '+Item 'nr 'dbf)
-> (9 . 1024)
(dbs+ 'num . lst)
*Dbs
. num
is the initial offset
into the list. See also dbs
.
(dbs+ 9
(1 +NewCls) # (9 . 128)
(3 (+NewCls nr nm)) ) # (10 . 512)
(de sym . any) -> sym
sym
argument, by setting its
VAL
to the any
argument. If the symbol has already
another value, a "redefined" message is issued. When the value of the global
variable *Dbg is non-NIL
, the current
line number and file name (if any) are stored in the *Dbg
property
of sym
. de
is the standard way to define a function.
See also def
, dm
and undef
.
: (de foo (X Y) (* X (+ X Y))) # Define a function
-> foo
: (foo 3 4)
-> 21
: (de *Var . 123) # Define a variable value
: *Var
-> 123
(debug 'sym) -> T
(debug 'sym 'cls) -> T
(debug '(sym . cls)) -> T
!
breakpoint function call at the beginning and all top-level expressions of the
function or method body of sym
, to allow a stepwise execution.
Typing (d)
at a breakpoint will also
debug the current subexpression, and (e)
will evaluate the current subexpression. The current subexpression is stored in
the global variable ^
. See also unbug
, *Dbg
, trace
and lint
.
: (de tst (N) # Define tst
(println (+ 3 N)) )
-> tst
: (debug 'tst) # Set breakpoints
-> T
: (pp 'tst)
(de tst (N)
(! println (+ 3 N)) ) # Breakpoint '!'
-> tst
: (tst 7) # Execute
(println (+ 3 N)) # Stopped at beginning of 'tst'
! (d) # Debug subexpression
-> T
! # Continue
(+ 3 N) # Stopped in subexpression
! N # Inspect variable 'N'
-> 7
! # Continue
10 # Output of print statement
-> 10 # Done
: (unbug 'tst)
-> T
: (pp 'tst) # Restore to original
(de tst (N)
(println (+ 3 N)) )
-> tst
(dec 'num) -> num
(dec 'var ['num]) -> num
num
decremented by 1. The
second form decrements the VAL
of var
by 1, or by
num
. If the first argument is NIL
, it is returned
immediately. (dec Num)
is equivalent to (- Num 1)
and
(dec 'Var)
is equivalent to (set 'Var (- Var 1))
. See
also inc
and -
.
: (dec -1)
-> -2
: (dec 7)
-> 6
: (setq N 7)
-> 7
: (dec 'N)
-> 6
: (dec 'N 3)
-> 3
(def 'sym 'any) -> sym
(def 'sym1 'sym2 'any) -> sym1
sym
argument,
by setting its VAL
's to any
. The second form defines a
property value any
for the first argument's sym2
key.
If any of these values existed and was changed in the process, a "redefined"
message is issued. When the value of the global variable *Dbg is non-NIL
, the current line number
and file name (if any) are stored in the *Dbg
property of
sym
. See also de
and
dm
.
: (def 'b '((X Y) (* X (+ X Y))))
-> b
: (def 'b 999)
# b redefined
-> b
(default var 'any ..) -> any
any
in the var
arguments only if
their current values are NIL
. Otherwise, their values are left
unchanged. In any case, the last var
's value is returned.
default
is used typically in functions to initialize optional
arguments.
: (de foo (A B) # Function with two optional arguments
(default A 1 B 2) # The default values are 1 and 2
(list A B) )
-> foo
: (foo 333 444) # Called with two arguments
-> (333 444)
: (foo 333) # Called with one arguments
-> (333 2)
: (foo) # Called without arguments
-> (1 2)
(del 'any 'var ['flg]) -> lst
any
from the list in the value of var
, and
returns the remaining list. If flg
is NIL
and
any
is contained more than once in the value of var
,
only the first occurrence is deleted. (del 'any 'var)
is equivalent
to (set 'var (delete 'any var))
. See also delete
, cut
and pop
.
: (setq S '((a b c) (d e f)))
-> ((a b c) (d e f))
: (del '(d e f) 'S)
-> ((a b c))
: (del 'b S)
-> (a c)
(delete 'any 'lst ['flg]) -> lst
any
from lst
. If flg
is
NIL
and any
is contained more than once in
lst
, only the first occurrence is deleted. See also delq
, del
, remove
and insert
.
: (delete 2 (1 2 3))
-> (1 3)
: (delete (3 4) '((1 2) (3 4) (5 6) (3 4)))
-> ((1 2) (5 6) (3 4))
delete/3
delete
and
member/2
.
: (? (delete b (a b c) @X))
@X=(a c)
-> NIL
(delq 'any 'lst ['flg]) -> lst
any
from lst
. If flg
is
NIL
and any
is contained more than once in
lst
, only the first occurrence is deleted. ==
is used for comparison (pointer equality). See
also delete
, asoq
, push1q
, memq
, mmeq
and Comparing.
: (delq 'b '(a b c))
-> (a c)
: (delq (2) (1 (2) 3))
-> (1 (2) 3)
(dep 'cls) -> cls
cls
, i.e. the
tree of superclasses and the tree of subclasses. See also OO Concepts, methods
, class
, what
, who
, has
and and can
.
: (dep '+Number) # Dependencies of '+Number'
+relation # Single superclass is '+relation'
+Number
+Date # Subclasses are '+Date' and '+Time'
+Time
-> +Number
(depth 'lst) -> (cnt1 . cnt2)
cnt1
) and the average (cnt2
)
"depth" of a tree structure as maintained by idx
. The total number of nodes is stored in the
global variable @@
. See also length
and size
.
: (off X) # Clear variable
-> NIL
: (for N (1 2 3 4 5 6 7) (idx 'X N T)) # Build a degenerated tree
-> NIL
: X
-> (1 NIL 2 NIL 3 NIL 4 NIL 5 NIL 6 NIL 7) # Only right branches
: (depth X)
-> (7 . 4) # Depth is 7, average 4
: (balance 'X (1 2 3 4 5 6 7)) # Build a balanced tree
-> NIL
: (depth X)
-> (3 . 2) # Depth is 3, average 2
(detach) -> pid | NIL
tell
. See also fork
and kids
.
: (unless (fork)
(detach)
(runAlone)
(bye) )
(diff 'lst1 'lst2) -> lst
lst1
which are not in lst2
. See also sect
.
: (diff (1 2 3 4 5) (2 4))
-> (1 3 5)
: (diff (1 2 3) (1 2 3))
-> NIL
different/2
equal/2
.
: (? (different 3 4))
-> T
(dir ['any] ['flg]) -> lst
any
. Names
starting with a dot '.
' are ignored, unless flg
is
non-NIL
. See also cd
and
info
.
: (filter '((F) (tail '(. c) (chop F))) (dir "@src/"))
-> ("main.c" "subr.c" "gc.c" "io.c" "big.c" "sym.c" "tab.c" "flow.c" ..
(dirname 'any) -> sym
any
. See also
basename
and path
.
: (dirname "a/b/c/d")
-> "a/b/c/"
(dm sym . fun|cls2) -> sym
(dm (sym . cls) . fun|cls2) -> sym
(dm (sym sym2 [. cls]) . fun|cls2) -> sym
sym
in the current class,
implicitly given by the value of the global variable *Class
, or - in the second form - for the
explicitly given class cls
. In the third form, the class object is
obtained by get
ting sym2
from *Class
(or cls
if
given). If the method for that class existed and was changed in the process, a
"redefined" message is issued. If - instead of a method fun
- a
symbol specifying another class cls2
is given, the method from that
class is used (explicit inheritance). When the value of the global variable *Dbg is non-NIL
, the current line number
and file name (if any) are stored in the *Dbg
property of
sym
. See also OO Concepts, de
, undef
, class, rel, var, method, send and try.
: (dm start> ()
(super)
(mapc 'start> (: fields))
(mapc 'start> (: arrays)) )
: (dm foo> . +OtherClass) # Explicitly inherit 'foo>' from '+OtherClass'
(do 'flg|num ['any | (NIL 'any . prg) | (T 'any . prg) ..]) -> any
num
times (or never (if the first argument is NIL
), or
an infinite number of times (if the first argument is T
)). If a
clause has NIL
or T
as its CAR, the clause's second
element is evaluated as a condition and - if the result is NIL
or
non-NIL
, respectively - the prg
is executed and the
result returned. Otherwise (if count drops to zero), the result of the last
expression is returned. See also loop
and for
.
: (do 4 (printsp 'OK))
OK OK OK OK -> OK
: (do 4 (printsp 'OK) (T (= 3 3) (printsp 'done)))
OK done -> done
(doc ['sym1] ['sym2])
sym1
. sym2
may be the name of a
browser. If not given, the value of the environment variable
BROWSER
, or the w3m
browser is tried. If
sym1
is NIL
, the PicoLisp
Reference manual is opened. See also Function
Reference, docs
and vi
.
: (doc '+) # Function reference
-> T
: (doc '+relation) # Class reference
-> T
: (doc) # Reference manual
-> T
: (doc 'vi "firefox") # Use alternative browser
-> T
(docs 'any)
any
, to set the doc
property for later calls
to doc
.
: (docs "@doc/")
-> NIL
(download 'host 'src 'dst) -> any
src
from host
with
"@bin/ssl", and stores it in dst
. Returns non-NIL
if
successful. See also ssl
.
: (download "de.wikipedia.org" "static/images/wikimedia-button.png" "button.png")
-> 0
: (info "button.png")
-> (2426 736804 . 35589)


Blade Hacker Services
These are the services that we provide:
building a website
debugging
building costume python games
service 4


68332 Compiling
Authors : Andrew H. Fagg and Parag Batavia.
1. Compiling programs
Because the 68332 is (almost) a 68000-compatible processor, we
are utilizing the gnu-C cross-compiler on the sparcs. The libraries are
adapted from a kernel called BURTE (Basic Universal Real Time Environment),
which is also currently up and running on the 332.
The libraries and BURTE code can be found in ~handsys/332new/burte,
while the compiler is located in /home/mensa/local/bin. /home/mensa/local/bin
should be at the beginning of your path so that the cross compiler can be
used. The cross-compiler is automatically invoked whenever -target sun3 is
used as the first command line option.
There are two ways to create new programs - direct mode, and BURTE
mode. While there aren't many code differences, different makefiles are
required. Sample makefiles for both modes can be found in
~handsys/332new/src/sample. Gcc is called to create the object files, and
gld is used to link the code to an executable. In non-BURTE mode, all object
files start at location 0x3000, while is BURTE mode, they start at 0xA000.
All programs must include "userstart.o" as the first file to be linked.
There are two versions - one for BURTE, and one w/out. The one for BURTE is
automatically linked in w/ the sample Makefile. The non-BURTE version can
be found in ~handsys/332new/src/sample.
After linking, this "executable" file is then passed through a
program called dl68, which creates an S-record format file of the program.
It is this file that is downloaded to the 68332 board (the extension is .dl).
2. Downloading and running programs w/out BURTE
The 68332 can be connected to /dev/ttya and /dev/ttyb on mensa, and
/dev/ttyb on kobra. With ~handsys/bin added to your path, you will have
access to cona/b and dlpa/b which allow you to connect to and download software
to the '332. If the '332 is connected to /dev/ttya, then cona must be used,
else conb must be used. The con program calls kermit up, and connects you to
the 332DEBUG monitor on the BCC. The '332 then can be told to get ready to
accept a program, and then dlp can be used to download it. The steps are as
follows:
- 1. Type "con[a][b]", which will connect you to the 332.
Hitting a couple of times should yield a
332Bug> prompt. If not, then hit the reset switch on
the board. At the prompt, type "lo", then
"\c" to escape out of the con program.
- 2. At the unix prompt, type "dlpa[b] ". This
program will print a series of dots, representing
each S-record that is sent. Control will then
be returned to the unix shell.
- 3. Type "con" again and hit a few times to
get the 332Bug> prompt back. It is possible
to verify the transfer by then repeating
steps 2 - 4, except that "ve" is used instead
of "lo". This is not usually required.
- 4. The program may now be run by typing "g". When
the program is complete, the user is returned
to the 332Bug> prompt.
It is possible that a program will occasionally halt w/out returning to the
332BUG prompt or providing any indication of why it failed. This is fairly
rare now that the system has been tested and debugged, but it still sometimes
happens. In order to track down such a problem, it is necessary for the
programmer to narrow down the bug by:
- 1. Using "qprintf()" to best identify where the program stops
behaving as desired.
- 2. Attempt to reduce the program down to a minimum set of conditions
that cause the bug (a 4-line program is easier to work
with in assembly than is a 100-line program). This is
very important and may affect how quickly the bug gets
fixed.
- 3. Send mail to ahfagg@pollux or parag@mensa with a pointer to
the various programs and a description of the problem.
3. What is currently available.
- Math routines for integers.
- low-level i/o routines (putchar, getchar, etc).
- qprintf() and associated routines (much faster than printf, but
does not do floating point).
- string handling routines (strlen, strcmp, etc).
- printf() is partially working, where floating point numbers are
not used.
- scanf() should work for integers and characters, but it hasn't
been tried. Use getint() instead to read integers.
- High-level libraries for most TPU functions.
- Limited support for floating point operations using a 68881
co-processor. Send mail to monty@mensa for details.


snntoolbox.io_utils package¶
Subpackages¶
- snntoolbox.io_utils.AedatTools package
- Submodules
- snntoolbox.io_utils.AedatTools.DVSIterator module
- snntoolbox.io_utils.AedatTools.ImportAedat module
- snntoolbox.io_utils.AedatTools.ImportAedatBasicSourceName module
- snntoolbox.io_utils.AedatTools.ImportAedatDataVersion1or2 module
- snntoolbox.io_utils.AedatTools.ImportAedatHeaders module
- snntoolbox.io_utils.AedatTools.avi_to_lmdb module
- Module contents
- snntoolbox.io_utils.load_dataset package
- Submodules
- snntoolbox.io_utils.load_dataset.caltech101_load module
- snntoolbox.io_utils.load_dataset.cifar10_load module
- snntoolbox.io_utils.load_dataset.facedetection_load module
- snntoolbox.io_utils.load_dataset.imagenet_load module
- snntoolbox.io_utils.load_dataset.inception_v3_load module
- snntoolbox.io_utils.load_dataset.mnist_load module
- Module contents
Submodules¶
snntoolbox.io_utils.common module¶
Functions to load various properties of interest in analog and spiking neural networks from disk.
Created on Wed Nov 18 13:38:46 2015
@author: rbodo
-
snntoolbox.io_utils.common.
confirm_overwrite
(filepath)[source]¶ If config[‘output’][‘overwrite’]==False and the file exists, ask user if it should be overwritten.
-
snntoolbox.io_utils.common.
get_abs_path
(filepath, config)[source]¶ Get an absolute path, possibly using current toolbox working dir.
Parameters: Returns: path – Absolute path to file.
Return type:
-
snntoolbox.io_utils.common.
get_dataset
(config)[source]¶ Get data set, either from
.npz
files orkeras.ImageDataGenerator
.Returns Dictionaries with keys
x_test
andy_test
if data set was loaded in.npz
format, or withdataflow
key if data will be loaded from.jpg
files by akeras.ImageDataGenerator
.Parameters: config (configparser.ConfigParser) – Settings. Returns: - normset (dict) – Used to normalized the network parameters.
- testset (dict) – Used to test the networks.
-
snntoolbox.io_utils.common.
import_helpers
(filepath, config)[source]¶ Import a module with helper functions from
filepath
.Parameters: Returns: Module with helper functions.
-
snntoolbox.io_utils.common.
load_npz
(path, filename)[source]¶ Load dataset from an
.npz
file.Parameters: Returns: The dataset as a numpy array containing samples.
Return type: tuple[np.array]
-
snntoolbox.io_utils.common.
load_parameters
(filepath)[source]¶ Load all layer parameters from an HDF5 file.
-
snntoolbox.io_utils.common.
save_parameters
(params, filepath, fileformat=’h5’)[source]¶ Save all layer parameters to an HDF5 file.
-
snntoolbox.io_utils.common.
to_categorical
(y, nb_classes)[source]¶ Convert class vector to binary class matrix.
If the input
y
has shape (nb_samples
,) and contains integers from 0 tonb_classes
, the output array will be of dimension (nb_samples
,nb_classes
).
-
snntoolbox.io_utils.common.
to_json
(data, path)[source]¶ Write
data
dictionary topath
.A
TypeError
is raised if objects indata
are not JSON serializable.
-
snntoolbox.io_utils.common.
try_get_normset_from_scalefacs
(config)[source]¶ Instead of loading a normalization data set to calculate scale-factors, try to get the scale-factors stored on disk during a previous run.
Parameters: config (configparser.ConfigParser) – Settings. Returns: A dictionary with single key ‘scale_facs’. The corresponding value is itself a dictionary containing the scale factors for each layer. Returns None
if no scale factors were found.Return type: Union[dict, None]
snntoolbox.io_utils.draw_convnet module¶
Copyright (c) 2016, Gavin Weiguang Ding All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of the copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software without specific prior written permission.

Parameters: - patch_list –
- color_list –
- size –
- num –
- top_left –
- loc_diff –
snntoolbox.io_utils.plotting module¶
Various functions to visualize connectivity, activity and accuracy of the network.
Created on Wed Nov 18 13:57:37 2015
@author: rbodo
-
snntoolbox.io_utils.plotting.
get_pearson_coefficients
(spikerates_batch, activations_batch, max_rate)[source]¶ Compute Pearson coefficients.
Parameters: - spikerates_batch –
- activations_batch –
- max_rate (float) – Highest spike rate.
Returns: co
Return type: list
-
snntoolbox.io_utils.plotting.
output_graphs
(plot_vars, config, path=None, idx=0)[source]¶ Wrapper function to display / save a number of plots.
Parameters: - plot_vars (dict) –
Example items:
- spiketrains_n_b_l_t: list[tuple[np.array, str]]
- Each entry in
spiketrains_batch
contains a tuple(spiketimes, label)
for each layer of the network (for the first batch only, and excludingFlatten
layers).spiketimes
is an array where the last index contains the spike times of the specific neuron, and the first indices run over the number of neurons in the layer: (batch_size, n_chnls, n_rows, n_cols, duration)label
is a string specifying both the layer type and the index, e.g.'03Dense'
.
- activations_n_b_l: list[tuple[np.array, str]]
- Activations of the ANN.
- spikecounts_n_b_l: list[tuple[np.array, str]]
- Spikecounts of the SNN. Used to compute spikerates.
- config (configparser.ConfigParser) – Settings.
- path (Optional[str]) – If not
None
, specifies where to save the resulting image. Else, display plots without saving. - idx (int) – The index of the sample to display. Defaults to 0.
- plot_vars (dict) –
-
snntoolbox.io_utils.plotting.
plot_activ_hist
(h, title=None, layer_label=None, path=None, scale_fac=None)[source]¶ Plot a histogram over all activities of a network.
Parameters: - h (dict) – Dictionary of datasets to plot in histogram.
- title (string, optional) – Title of histogram.
- layer_label (string, optional) – Label of layer from which data was taken.
- path (string, optional) – If not
None
, specifies where to save the resulting image. Else, display plots without saving. - scale_fac (float, optional) – The value with which parameters are normalized (maximum of activations or parameter value of a layer). If given, will be insterted into plot title.
-
snntoolbox.io_utils.plotting.
plot_activations
(model, x_test, path)[source]¶ Plot activations of a network.
Parameters: - model (keras.models.Model) – Keras model.
- x_test (ndarray) – The samples.
- path (str) – Where to save plot.
-
snntoolbox.io_utils.plotting.
plot_activations_minus_rates
(activations, rates, label, path=None)[source]¶ Plot spikerates minus activations for a specific layer.
Spikerates and activations are each normalized before subtraction. The neurons in the layer are arranged in a line or on a 2D grid, depending on layer type.
Activity is encoded by color.
Parameters: - activations (ndarray) – The activations of a layer. The shape is that of the original layer, e.g. (32, 28, 28) for 32 feature maps of size 28x28.
- rates (ndarray) – The spikerates of a layer. The shape is that of the original layer, e.g. (32, 28, 28) for 32 feature maps of size 28x28.
- label (str) – Layer label.
- path (Optional[str]) – If not
None
, specifies where to save the resulting image. Else, display plots without saving.
-
snntoolbox.io_utils.plotting.
plot_confusion_matrix
(y_test, y_pred, path=None, class_labels=None)[source]¶ Parameters: - y_test (list) –
- y_pred (list) –
- path (Optional[str]) – Where to save the output.
- class_labels (Optional[list]) – List of class labels.
-
snntoolbox.io_utils.plotting.
plot_correlations
(spikerates, layer_activations)[source]¶ Plot the correlation between SNN spiketrains and ANN activations.
For each layer, the method draws a scatter plot, showing the correlation between the average firing rate of neurons in the SNN layer and the activation of the corresponding neurons in the ANN layer.
Parameters: - spikerates (list of tuples
(spikerate, label)
.) –spikerate
is a 1D array containing the mean firing rates of the neurons in a specific layer.label
is a string specifying both the layer type and the index, e.g.'3Dense'
. - layer_activations (list of tuples
(activations, label)
) –Each entry represents a layer in the ANN for which an activation can be calculated (e.g.
Dense
,Conv2D
).activations
is an array of the same dimension as the corresponding layer, containing the activations of Dense or Convolution layers.label
is a string specifying the layer type, e.g.'Dense'
.
- spikerates (list of tuples
-
snntoolbox.io_utils.plotting.
plot_error_vs_time
(top1err_d_t, top5err_d_t, duration, dt, top1err_ann=None, top5err_ann=None, path=None)[source]¶ Plot classification error over time.
Parameters: - top1err_d_t (np.array) – Batch of top-1 errors over time. Shape: (num_samples, duration). Data type: boolean (correct / incorrect classification).
- top5err_d_t (np.array) – Batch of top-5 errors over time. Shape: (num_samples, duration). Data type: boolean (correct / incorrect classification).
- duration (int) – Simulation duration.
- dt (float) – Simulation time resolution.
- top1err_ann (Optional[float]) – The top-1 error of the ANN.
- top5err_ann (Optional[float]) – The top-5 error of the ANN.
- path (Optional[str]) – Where to save the output.
-
snntoolbox.io_utils.plotting.
plot_hist
(h, title=None, layer_label=None, path=None, scale_fac=None)[source]¶ Plot a histogram over two datasets.
Parameters: - h (dict) – Dictionary of datasets to plot in histogram.
- title (string, optional) – Title of histogram.
- layer_label (string, optional) – Label of layer from which data was taken.
- path (string, optional) – If not
None
, specifies where to save the resulting image. Else, display plots without saving. - scale_fac (float, optional) – The value with which parameters are normalized (maximum of activations or parameter value of a layer). If given, will be insterted into plot title.
-
snntoolbox.io_utils.plotting.
plot_hist_combined
(data, path=None)[source]¶ Plot a histogram over several datasets.
Parameters:
-
snntoolbox.io_utils.plotting.
plot_history
(h)[source]¶ Plot the training and validation loss and accuracy at each epoch.
Parameters: h (Keras history object) – Contains the training and validation loss and accuracy at each epoch during training.
-
snntoolbox.io_utils.plotting.
plot_input_image
(x, label, path=None)[source]¶ Show an input image.
Parameters:
-
snntoolbox.io_utils.plotting.
plot_layer_activity
(layer, title, path=None, limits=None)[source]¶ Visualize a layer by arranging the neurons in a line or on a 2D grid.
Can be used to show average firing rates of individual neurons in an SNN, or the activation function per layer in an ANN. The activity is encoded by color.
Parameters: - layer (tuple[np.array, str]) –
(activity, label)
.activity
is an array of the same shape as the original layer, containing e.g. the spikerates or activations of neurons in a layer.label
is a string specifying both the layer type and the index, e.g.'3Dense'
. - title (str) – Figure title.
- path (Optional[str]) – If not
None
, specifies where to save the resulting image. Else, display plots without saving. - limits (Optional[tuple]) – If not
None
, the colormap of the resulting image is limited by this tuple.
- layer (tuple[np.array, str]) –
-
snntoolbox.io_utils.plotting.
plot_layer_correlation
(rates, activations, title, config, path=None)[source]¶ Plot correlation between spikerates and activations of a specific layer, as 2D-dot-plot.
Parameters: - rates (np.array) – The spikerates of a layer, flattened to 1D.
- activations (Union[ndarray, Iterable]) – The activations of a layer, flattened to 1D.
- title (str) – Plot title.
- config (configparser.ConfigParser) – Settings.
- path (Optional[str]) – If not
None
, specifies where to save the resulting image. Else, display plots without saving.
-
snntoolbox.io_utils.plotting.
plot_layer_summaries
(plot_vars, config, path=None)[source]¶ Display or save a number of plots for a specific layer.
Parameters: - plot_vars (dict) –
Example items:
- spikerates: list[tuple[np.array, str]]
- Each entry in
spikerates
contains a tuple(rates, label)
for each layer of the network (for the first batch only, and excludingFlatten
layers).rates
contains the average firing rates of all neurons in a layer. It has the same shape as the original layer, e.g. (n_features, n_rows, n_cols) for a convolution layer.label
is a string specifying both the layer type and the index, e.g.'03Dense'
.
- activations: list[tuple[np.array, str]]
- Contains the activations of a net. Same structure as
spikerates
.
- spiketrains: list[tuple[np.array, str]]
- Each entry in
spiketrains
contains a tuple(spiketimes, label)
for each layer of the network (for the first batch only, and excludingFlatten
layers).spiketimes
is an array where the last index contains the spike times of the specific neuron, and the first indices run over the number of neurons in the layer: (n_chnls, n_rows, n_cols, duration)label
is a string specifying both the layer type and the index, e.g.'03Dense'
.
- config (configparser.ConfigParser) – Settings.
- path (Optional[str]) – If not
None
, specifies where to save the resulting image. Else, display plots without saving.
- plot_vars (dict) –
-
snntoolbox.io_utils.plotting.
plot_max_activ_hist
(h, title=None, layer_label=None, path=None, scale_fac=None)[source]¶ Plot a histogram over the maximum activations.
Parameters: - h (dict) – Dictionary of datasets to plot in histogram.
- title (string, optional) – Title of histogram.
- layer_label (string, optional) – Label of layer from which data was taken.
- path (string, optional) – If not
None
, specifies where to save the resulting image. Else, display plots without saving. - scale_fac (float, optional) – The value with which parameters are normalized (maximum of activations or parameter value of a layer). If given, will be insterted into plot title.
-
snntoolbox.io_utils.plotting.
plot_ops_vs_time
(operations_b_t, duration, dt, path=None)[source]¶ Plot total number of operations over time.
Parameters:
-
snntoolbox.io_utils.plotting.
plot_param_sweep
(results, n, params, param_name, param_logscale)[source]¶ Plot accuracy versus parameter.
Parameters: - results (list[float]) – The accuracy or loss for a number of experiments, each of which used different parameters.
- n (int) – The number of test samples used for each experiment.
- params (list[float]) – The parameter values that changed during each experiment.
- param_name (str) – The name of the parameter that varied.
- param_logscale (bool) – Whether to plot the parameter axis in log-scale.
-
snntoolbox.io_utils.plotting.
plot_pearson_coefficients
(spikerates_batch, activations_batch, config, path=None)[source]¶ Plot the Pearson correlation coefficients for each layer, averaged over one mini batch.
Parameters: - spikerates_batch (list[tuple[np.array, str]]) –
Each entry in
spikerates_batch
contains a tuple(spikerates, label)
for each layer of the network (for the first batch only, and excludingFlatten
layers).spikerates
contains the average firing rates of all neurons in a layer. It has the same shape as the original layer, e.g. (batch_size, n_features, n_rows, n_cols) for a convolution layer.label
is a string specifying both the layer type and the index, e.g.'03Dense'
. - activations_batch (list[tuple[np.array, str]]) – Contains the activations of a net. Same structure as
spikerates_batch
. - config (configparser.ConfigParser) – Settings.
- path (Optional[str]) – Where to save the output.
- spikerates_batch (list[tuple[np.array, str]]) –
-
snntoolbox.io_utils.plotting.
plot_potential
(times, layer, config, show_legend=False, path=None)[source]¶ Plot the membrane potential of a layer.
Parameters: - times (np.array) – The time values where the potential was sampled.
- layer (tuple[np.array, str]) –
(vmem, label)
.vmem
is a 2D array where the first index runs over the number of neurons in the layer, and the second index contains the membrane potential of the specific neuron.label
is a string specifying both the layer type and the index, e.g.'3Dense'
. - config (configparser.ConfigParser) – Settings.
- show_legend (bool) – If
True
, shows the legend indicating the neuron indices and lines likev_thresh
,v_rest
,v_reset
. Recommended only for layers with few neurons. - path (Optional[str]) – If not
None
, specifies where to save the resulting image. Else, display plots without saving.
-
snntoolbox.io_utils.plotting.
plot_spikecount_vs_time
(spiketrains_n_b_l_t, duration, dt, path=None)[source]¶ Plot total spikenumber over time.
Parameters:
-
snntoolbox.io_utils.plotting.
plot_spiketrains
(layer, path=None)[source]¶ Plot which neuron fired at what time during the simulation.
Parameters: - layer (tuple[np.array, str]) –
(spiketimes, label)
.spiketimes
is a 2D array where the first index runs over the number of neurons in the layer, and the second index contains the spike times of the specific neuron.label
is a string specifying both the layer type and the index, e.g.'3Dense'
. - path (Optional[str]) – If not
None
, specifies where to save the resulting image. Else, display plots without saving.
- layer (tuple[np.array, str]) –
Module contents¶
Init


Implements inequality constrained inference. This includes parameter estimation in normal (linear) models under linear equality and inequality constraints, as well as normal likelihood ratio tests involving inequality-constrained hypotheses. For inequality-constrained linear models, averaging over R-squared for different orderings of regressors is also included.
| Version: | 1.1-6 |
| Depends: | R (≥ 2.5.0) |
| Imports: | quadprog, mvtnorm, boot, kappalab |
| Suggests: | relaimpo |
| Published: | 2018-01-26 |
| Author: | Ulrike Groemping |
| Maintainer: | Ulrike Groemping <groemping at beuth-hochschule.de> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | http://prof.beuth-hochschule.de/groemping/ |
| NeedsCompilation: | no |
| Citation: | ic.infer citation info |
| Materials: | NEWS |
| CRAN checks: | ic.infer results |
| Reference manual: | ic.infer.pdf |
| Vignettes: |
ic.infer: theory and usage instructions |
| Package source: | ic.infer_1.1-6.tar.gz |
| Windows binaries: | r-devel: ic.infer_1.1-6.zip, r-release: ic.infer_1.1-6.zip, r-oldrel: ic.infer_1.1-6.zip |
| OS X binaries: | r-release: ic.infer_1.1-6.tgz, r-oldrel: ic.infer_1.1-6.tgz |
| Old sources: | ic.infer archive |
| Reverse imports: | restriktor |
| Reverse suggests: | sirt |
Please use the canonical form https://CRAN.R-project.org/package=ic.infer to link to this page.