Classes
A class is a record that has several useful properties. A class is defined in the same way as a record, but it begins with the keyword \class instead of \record. Classes can extend other classes and records and vice versa. The first explicit parameter of a class is called its classifying field. Classes are implicitly coerced to the type of the classifying field. Let us consider an example:
\class Semigroup (E : \Set)
| \infixl 7 * : E -> E -> E
| *-assoc (x y z : E) : (x * y) * z = x * (y * z)
\func square {S : Semigroup} (x : S) => x * x
It is allowed to write x : S instead of x : S.E since S is implicitly coerced to an element of type \Set, that is S.E.
In case a parameter of a definition has type, which is an extension C { … } of C, it is marked as a local instance of class C. Implicit parameter \this of a field of class C is also a local instance.
If a parameter p : C { … } of a definition f is a local instance, then the corresponding implicit argument of f can be inferred by the instance inference algorithm. It looks for the first available instance v : C { … } such that the expected value of the classifying field coincides with the value of the classifying field in v. For instance, the function square in the example above has one local instance S of the class Semigroup. The field * of the class Semigroup is used in the body of square and the expected type of its call in x * x is S.E -> S.E -> {?}. This implies that the expected value of the classifying field is S.E, which coincides with the value of the classifying field in S, so this instance is inferred as the implicit argument of *.
Classifying fields
The classifying field can be specified explicitly with keyword \classifying as follows:
\class C (A : \Set) (\classifying B : \Set)
| f : B -> A
\func test {c : C} (x : c) => f x
Since field B is marked as classifying, the type of x is c.B and the instance for f will be successfully inferred.
It is also possible to define a class without classifying fields. If the class has some explicit parameters, then this can be done using keyword \noclassifying, which is written after the name of the class.
Instances
It is also possible to define global instances. To do this, one needs to use the keyword \instance:
\instance NatSemigroup : Semigroup Nat
| * => Nat.+
| *-assoc (x y z : Nat) : (x Nat.+ y) Nat.+ z = x Nat.+ (y Nat.+ z) \elim z {
| 0 => idp
| suc z => pmap suc (*-assoc x y z)
}
An implementation of a field can be defined by pattern matching as demonstrated above. In this case, a separate function with the same name as the field is created in the namespace of the instance.
A global instance is just a function, defined by copattern matching. It can be used as an ordinary function. The only difference with an ordinary function is that it can only be defined by copattern matching and must define an instance of a class. Also, the classifying field of an instance must be a data or a record applied to some arguments and if some parameters of the instance have a class as a type, its classifying field must be an argument of the classifying field of the resulting instance.
If there is no local instance with the expected classifying field, then such an instance will be searched among global instances. There is no backtracking, so the first appropriate instance will be chosen. A global instance is appropriate in a usage if the expected classifying field is the same data or record as the data or the record in the classifying field of the instance. If this holds, the global instance is appropriate even if the data or the record are applied to different arguments.


= [1,3,5,7]
my_list print( my_list )
[1, 3, 5, 7]
lists
and dicts
Data structures are collection types that group lots of data into a single object and make working with lots of data easier. Python has some built in data structures we can use. In this section we’ll look at using some of the most common and fundamental ones. As you gain exeperience with Python, you’ll find that many other more complex data structures are made out of these.
The simplest data structure is a list
. We can create a list simply by enclosing our data in square brackets.
= [1,3,5,7]
my_list print( my_list )
[1, 3, 5, 7]
More often, though, we’ll get a list
as the result of a function. Recall the random
library we used earlier, it can sample k
items from a list.
import random
= random.sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=3)
selected
print( selected )
['red', 'red', 'blue']
Here we get a list of integers. The point being it is now a collection of data that we can refer to as a single entity.
Lists can mix up any sort of data type,
= [1,2, 'three', 'IV', 5.0 ]
numbers_and_letters print( numbers_and_letters )
[1, 2, 'three', 'IV', 5.0]
including other lists.
= [ [1,2,3], ["a","b","c"] ]
list_of_lists
print( list_of_lists )
[[1, 2, 3], ['a', 'b', 'c']]
List elements can be accessed using indexing, like with strings.
print( numbers_and_letters[0] )
print( numbers_and_letters[2:4] )
1
['three', 'IV']
Indexing an element returns the whole element - so if that element happens to be a list itself - you get a whole list back
print( list_of_lists[1] )
['a', 'b', 'c']
To get at a single element in this case you must use multiple sets of square brackets, one for each list.
print( list_of_lists[0][1] )
print( list_of_lists[1][0] )
2
a
As they’re still a regular Python object, just like strings or they have lots of methods. Much of what you’ll want to do with a list is accomplished with methods. Again, there are many - here’s a list of useful ones https://www.w3schools.com/python/python_ref_list.asp. As a single example from the list, let’s look at .append()
, which is used to stick something on the right hand side of the list.
"ninety")
numbers_and_letters.append(print( numbers_and_letters )
[1, 2, 'three', 'IV', 5.0, 'ninety']
Another very common data structure is a dictionary. A dictionary is a data structure that has many unique keys
, each of which refers to a bit of other data called a value
. We can construct them using the curly brackets and the key/value
pairs
= {
my_dict "key1" : "value1",
"key2" : "value2"
}
print( my_dict )
{'key1': 'value1', 'key2': 'value2'}
Note the order in the dictionary isn’t preserved. The information is stored according to an internal algorithm, not the order the informaion is added. We can use the square brackets to get a single value, but as a dictionary has no order and therefore no numeric index, we must use the key as the index.
print( my_dict["key1"] )
value1
Dictionaries are useful when you want to ask for a bit of data by some name, rather than by its position in a list.
Dictionaries can hold anything in their values. But keys are restricted to particular datatypes. Strings and numbers are good keys, lists are not allowed.
print( { ["list_key", 1, 2] : ["some data"] } )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
As with lists there are methods on Python Dictionaries. Here’s a useful list https://www.w3schools.com/python/python_ref_dictionary.asp. These are mostly related to getting items on and off the list, we’ll see some when we use dictionaries in loops later.
= [["fluorine", "F"],
list_for_slicing "chlorine", "Cl"],
["bromine", "Br"],
["iodine", "I"],
["astatine", "At"]] [
Modify list_for_slicing
using the .reverse()
method. Verify that it is reversed as you expected.
Can you work out how to correct the wrong data in the dictionary below? Try to think of a way that doesn’t involve re-writing the whole dictionary. Hint: can you assign straight to a key?
= {
seasons 'spring' : ['mar', 'apr', 'may' ],
'autumn' : ['jun', 'jul', 'aug'],
'winter' : ['dec', 'jan', 'feb']
}


|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Interface Summary | |
|---|---|
| Reflector | The Reflector obtains informations on a certain
class by converting it into an instance of JavaSource . |
| VersionGenerator.ColumnUpdater | The ColumnUpdater is able to update one or more columns in a table. |
| Class Summary | |
|---|---|
| Ant | A set of Ant tasks for running the generators in the pattern package. |
| Ant.AntChainGenerator | Ant task for the ChainGenerator . |
| Ant.AntProxyGenerator | The AntProxyGenerator is an Ant task
providing access to the ProxyGenerator . |
| Ant.AntTypesafeEnumerationGenerator | Ant task for generating typesafe enumerations. |
| Ant.AntVersionGenerator | Ant task for the VersionGenerator |
| Ant.BasicAntTask | |
| Ant.ReallyBasicAntTask | |
| Ant.XmlRpcGenerator | An ant task for the XmlRpcClientGenerator . |
| Ant.XmlRpcGenerator.Dispatcher | The nested child element "dispatcher". |
| ChainGenerator | This class generates so-called event chains. |
| CompiledClassReflector | Reflector for gathering information on a compiled class. |
| InterfaceDescription | The InterfaceDescription is used by the
ProxyGenerator as information storage about
the interfaces being implemented.The main purporse of an intermediate class is to encapsulate the way, how information about these classes is gathered: If the interface being implemented is a compiled class, then Java reflection is used. Otherwise, if the interface being implemented is present as a Java source file, then the JavaParser
is used.
|
| MethodKey | This class is a key for generated methods. |
| ProxyGenerator | This class is a generator for the proxy object pattern. |
| SourceReflector | Reflector for gathering information about a Java source file. |
| TypesafeEnumerationGenerator | This class is a generator for the typesafe enumeration pattern. |
| TypesafeEnumerationGenerator.Item | |
| VersionGenerator | The VersionGenerator is able to clone a version of a row in a database. |
| VersionGenerator.TableInfo | This class is used internally to maintain the informations on the tables being cloned. |
This package contains a set of design patterns implemented with the JaxMe JavaSource generator framework. It is provided both for demonstration and actual use. Each pattern is accompanied with a corresponding Ant task that allows to invoke the respective generator from within an Ant build script. The patterns are:
| Design pattern(s) | Class | Ant task | Description |
|---|---|---|---|
| Proxy objects Multiple inheritance |
ProxyGenerator |
proxyGenerator | Proxy are instances that delegate most or all method calls to another
object. Proxy objects in Java are typically created by the class
Proxy . Compared to this class, the generator
has the advantage, that it is much easier to adapt the proxy object
to your own needs: In our case you simple subclass the generated
Proxy class.Proxy objects can also be used to implement something like multiple inheritance. This is demonstrated in the Unit test MultipleInheritanceTest ,
where a subclass of Observable is created,
that is also an instance of List by inheriting
from ArrayList . |
| Typesafe enumerations | TypesafeEnumerationGenerator |
enumGenerator | A typesafe enumeration is a Java class that guarantees that only a specified set of instances can exist. These instances are part of the class and accessible through public, static, final fields. |
| Proxy chains | ChainGenerator |
chainGenerator | A proxy chain can be viewed as a set of event handlers implementing a common interface. The interface methods are the events being processed. Each element in the chain can decide to process an event alone (by returning immediately), to delegate the event to the next element in the chain (by calling the interface method in its superclass) or to post process the result of the delegated event. |
|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


Good morning, Julie
Hey there! What's up?
Quick links
Simply-solar!
Brightspace
GitHub
Julie's google drive
Shot google drive
To do Today
Item 1
Item 2
Item 3
Write a new mail
Chris Mills
Manchester
The Grim North
UK
Tel: 01234 567 890
Email: me@grim-north.co.uk


| MPI_FILE_CLOSE(fh) | |
| INOUT fh | file handle (handle) |
int MPI_File_close(MPI_File *fh)
MPI_File_close(fh, ierror)
TYPE(MPI_File), INTENT(INOUT) :: fh
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
MPI_FILE_CLOSE(FH, IERROR)
INTEGER FH, IERROR
MPI_FILE_CLOSE first synchronizes file state (equivalent to performing an MPI_FILE_SYNC), then closes the file associated with fh. The file is deleted if it was opened with access mode MPI_MODE_DELETE_ON_CLOSE (equivalent to performing an MPI_FILE_DELETE). MPI_FILE_CLOSE is a collective routine.
Advice to users.
If the file is deleted on close, and there are
other processes currently accessing the file,
the status of the file and the behavior of future accesses
by these processes are implementation dependent.
( End of advice to users.)
The user is responsible for ensuring that all outstanding
nonblocking requests and split collective
operations associated with fh
made by a process have completed
before that process calls MPI_FILE_CLOSE.
The MPI_FILE_CLOSE routine deallocates the file handle object and sets fh to MPI_FILE_NULL.


The core allows you to perform automatic accessibility evaluations on web pages. It contains 3 evaluation modules:
You can also perform evaluations at http://qualweb.di.fc.ul.pt/evaluator/, or by installing the chrome extension.
$ npm i @qualweb/core --save
'use strict';
const { QualWeb, generateEARLReport } = require('@qualweb/core');
(async () => {
const plugins = {
// Check https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-adblocker
adBlock: true, // Default value = false
// Check https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth
stealth: true // Default value = false
};
const qualweb = new QualWeb(plugins);
const clusterOptions = {
maxConcurrency: 5, // Performs several urls evaluations at the same time - the higher the number given, more resources will be used. Default value = 1
timeout: 60 * 1000, // Timeout for loading page. Default value = 30 seconds
monitor: true // Displays urls information on the terminal. Default value = false
};
const launchOptions = {
... // check https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#puppeteerlaunchoptions
// In most cases there's no need to give additional options. Just leave the field undefined
};
// Starts the QualWeb core engine
await qualweb.start(clusterOptions, launchOptions);
// QualWeb evaluation report
const qualwebOptions = {
url: 'https://act-rules.github.io/pages/about/',
...
};
// Evaluates the given options - will only return after all urls have finished evaluating or resulted in an error
const reports = await qualweb.evaluate(qualwebOptions);
console.log(reports);
// {
// "url": "report",
// "url2": "report2"
// }
// Stops the QualWeb core engine
await qualweb.stop();
const earlOptions = {
// Check the options in the section below
};
// if you want an EARL report
const earlReports = generateEARLReport(reports, earlOptions);
console.log(earlReports);
// {
// "url": "earlReport",
// "url2": "earlReport2"
// }
})();
The available options fot the evaluate() function are:
{
"url": "https://act-rules.github.io/pages/about/", // url to evaluate
"urls": ["https://act-rules.github.io/pages/about/", "https://act-rules.github.io/rules/"], // Array of urls
"file": "/path/to/file/with/urls", // urls must be separated by a newline (\n)
"crawl": "https://act-rules.github.io", // Experimental feature - domain to crawl and obtain the urls
"viewport": {
"mobile": false, // default value = false
"landscape": true, // default value = viewPort.width > viewPort.height
"userAgent": "custom user agent", // default value for desktop = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0', default value for mobile = 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; DROID2 GLOBAL Build/S273) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
"resolution": {
"width": 1920, // default value for desktop = 1366, default value for mobile = 1080
"height": 1080 // default value for desktop = 768, default value for mobile = 1920
}
},
"waitUntil": ["load", "networkidle0"], // Events to wait before starting evaluation, default value = "load". For more check https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#pagegotourl-options
"validator": "http://<IP_ADDRESS>/validate", // HTML validator service endpoint. The url will be attached after of the given endpoint
"crawlOptions": {
"maxDepth": 2, // max depth to search, 0 to search only the given domain. Default value = -1 (search everything)
"maxUrls": 100, // max urls to find. Default value = -1 (search everything)
"timeout": 60, // how many seconds the domain should be crawled before it ends. Default value = -1 (never stops)
"maxParallelCrawls": 10, // max urls to crawl at the same time. Default value = 5
"logging": true // logs domain, current depth, urls found and time passed to the terminal
},
"execute": {
// choose which modules to execute
"wappalyzer": false, // wappalyzer module (https://github.com/qualweb/wappalyzer) - default value = false
"act": true, // act-rules module (https://github.com/qualweb/act-rules) - default value = true
"wcag": true, // wcag-techniques module (https://github.com/qualweb/wcag-techniques) - default value = true
"bp": false, // best-practices module (https://github.com/qualweb/best-practices) - default value = true
"counter": false // counter module (https://github.com/qualweb/counter) - default value = false
},
"act-rules": {
// More information about this options at https://github.com/qualweb/act-rules
"rules": ["QW-ACT-R1", "b5c3f8"], // Array of rules to execute, can be passed the QualWeb Rule ID or the ACT Rule ID
"exclude": ["QW-ACT-R1", "b5c3f8"], // Array of rules to exclude, can be passed the QualWeb Rule ID or the ACT Rule ID
"levels": ["A", "AA", "AAA"], // Conformance levels to execute,
"principles": ["Perceivable", "Operable", "Understandable", "Robust"] // Principles to execute
},
"wcag-techniques": {
// More information about this options at https://github.com/qualweb/wcag-techniques
"rules": ["QW-WCAG-T1", "H39"], // Array of techniques to execute, can be passed the QualWeb Technique ID or the WCAG 2.1 Technique Code
"exclude": ["QW-WCAG-T1", "H39"], // Array of techniques to exclude, can be passed the QualWeb Technique ID or the WCAG 2.1 Technique Code
"levels": ["A", "AA", "AAA"], // Conformance levels to execute,
"principles": ["Perceivable", "Operable", "Understandable", "Robust"] // Principles to execute
},
"best-practices": {
// More information about this options at https://github.com/qualweb/best-practices
"bestPractices": ["QW-BP1", "QW-BP2"], // Array of best practices to execute
"exclude": ["QW-BP1", "QW-BP2"] // Array of best practices to exclude
}
}
The available options fot the generateEARLReport() function are:
{
"aggregated": true, // default value = false
"aggregatedName": "websites.json", // The name to save the aggregated earl reports. default value = first url of the list
"modules": {
// Choose which modules to convert the report to earl, by default all modules are converted if they were executed
"act": true, // default value = true
"wcag": false, // default value = true
"best-practices": false // default value = true
} // If the "modules" value is given, any missing module value missing it's automatically set to false
}
In this section it's explained the evaluation report in detail. For a detailed version of the EARL report check @qualweb/earl-reporter.
{
"type": "evaluation",
"system": {
"name": "QualWeb",
"description": "QualWeb is an automatic accessibility evaluator for webpages.",
"version": "QualWeb version",
"homepage": "http://www.qualweb.di.fc.ul.pt/",
"date": "date of the evaluation",
"hash": "unique hash",
"url": {
"inputUrl": "inserted url",
"protocol": "protocol of the url",
"domainName": "domain name of the url",
"domain": "domain of the url",
"uri": "uri of the url",
"completeUrl": "complete url after all redirects"
},
"page": {
"viewport": {
"mobile": "was evaluated on a mobile context or not",
"landscape": "was evaluated on a landscape context or not",
"userAgent": "user agent used",
"resolution": {
"width": "window's width used",
"height": "window's height used",
}
},
"dom": {
"html": "html code as a string",
"title": "Title of the webpage",
"elementCount": "Element count of the webpage"
}
}
},
"metadata": {
"passed": "number of passed rules/techniques/best practices",
"warning": "number of warning rules/techniques/best practices",
"failed": "number of failed rules/techniques/best practices",
"inapplicable": "number of inapplicable rules/techniques/best practices",
},
"modules": {
"act-rules": {
"type": "act-rules",
"metadata": {
"passed": "number of passed rules",
"warning": "number of warning rules",
"failed": "number of failed rules",
"inapplicable": "number of inapplicable rules",
},
"assertions": {
"QW_ACT_R1": {
"name": "Name of the rule",
"code": "QualWeb rule id",
"mapping": "ACT rule id mapping",
"description": "Description of the rule",
"metadata": {
"target": "Any target, can be one element, multiple elements, attributes, a relation between elements",
"success-criteria?": [
{
"name": "Name of the success criteria",
"level": "Level of conformance of the success criteria",
"principle": "Principle of the success criteria",
"url": "Url of the success criteria"
}
],
"related?": [], // related WCAG 2.1 techniques
"url?": "Url of the rule",
"passed": "Number of passed results",
"warning": "Number of warning results",
"failed": "Number ff failed results",
"type?": [], // usually "ACTRule" or "TestCase"
"a11yReq?": [], // WCAG 2.1 relation - something like "WCAG21:language"
"outcome": "Outcome of the rule",
"description": "Description of the outcome";
},
"results": [
{
"verdict": "Outcome of the test",
"description": "Description of the test",
"resultCode": "Test identifier",
"pointer?": "Element pointer in CSS notation",
"htmlCode?": "Element html code",
"attributes?": "Attributes of the element",
"accessibleName?": "Accessible name of the test target"
},
{ ... }
]
},
"...": { ... }
}
},
"wcag-techniques": {
"type": "wcag-techniques",
"metadata": {
"passed": "number of passed techniques",
"warning": "number of warning techniques",
"failed": "number of failed techniques",
"inapplicable": "number of inapplicable techniques",
},
"assertions": {
"QW_WCAG_T1": {
"name": "Name of the technique",
"code": "QualWeb technique id",
"mapping": "WCAG techniques code mapping",
"description": "Description of the technique",
"metadata": {
"target": "Any target, can be one element, multiple elements, attributes, a relation between elements",
"success-criteria?": [
{
"name": "Name of the success criteria",
"level": "Level of conformance of the success criteria",
"principle": "Principle of the success criteria",
"url": "Url of the success criteria"
}
],
"related?": [], // related WCAG 2.1 techniques
"url?": "Url of the technique",
"passed": "Number of passed results",
"warning": "Number of warning results",
"failed": "Number ff failed results",
"type?": [], // usually "ACTRule" or "TestCase"
"a11yReq?": [], // WCAG 2.1 relation - something like "WCAG21:language"
"outcome": "Outcome of the technique",
"description": "Description of the outcome";
},
"results": [
{
"verdict": "Outcome of the test",
"description": "Description of the test",
"resultCode": "Test identifier",
"pointer?": "Element pointer in CSS notation",
"htmlCode?": "Element html code",
"attributes?": "Attributes of the element" // if available
},
{ ... }
]
},
"...": { ... }
}
},
"best-practices": {
"type": "best-practices",
"metadata": {
"passed": "number of passed best practices",
"warning": "number of warning best practices",
"failed": "number of failed best practices",
"inapplicable": "number of inapplicable best practices",
},
"assertions": {
"QW_BP1": {
"name": "Name of the technique",
"code": "QualWeb best practices id",
"description": "Description of the best practices",
"metadata": {
"target": "Any target, can be one element, multiple elements, attributes, a relation between elements",
"success-criteria?": [
{
"name": "Name of the success criteria",
"level": "Level of conformance of the success criteria",
"principle": "Principle of the success criteria",
"url": "Url of the success criteria"
}
],
"related?": [], // related WCAG 2.1 techniques
"passed": "Number of passed results",
"warning": "Number of warning results",
"failed": "Number ff failed results",
"type?": [], // usually "ACTRule" or "TestCase"
"a11yReq?": [], // WCAG 2.1 relation - something like "WCAG21:language"
"outcome": "Outcome of the best practices",
"description": "Description of the outcome";
},
"results": [
{
"verdict": "Outcome of the test",
"description": "Description of the test",
"resultCode": "Test identifier",
"pointer?": "Element pointer in CSS notation",
"htmlCode?": "Element html code",
"attributes?": "Attributes of the element" // if available
},
{ ... }
]
},
"...": { ... }
}
},
"counter": {
"type": "counter",
"data": {
"roles": {
"button": 2,
"link": 4,
...
},
"tags": {
"div": 10,
"table": 3,
...
}
}
}
}
}
| QualWeb Rule ID | ACT Rule ID | ACT Rule Name |
|---|---|---|
| QW-ACT-R1 | 2779a5 | HTML Page has a title |
| QW-ACT-R2 | b5c3f8 | HTML has lang attribute |
| QW-ACT-R3 | 5b7ae0 | HTML lang and xml:lang match |
| QW-ACT-R4 | bc659a | Meta-refresh no delay |
| QW-ACT-R5 | bf051a | Validity of HTML Lang attribute |
| QW-ACT-R6 | 59796f | Image button has accessible name |
| QW-ACT-R7 | b33eff | Orientation of the page is not restricted using CSS transform property |
| QW-ACT-R9 | b20e66 | Links with identical accessible names have equivalent purpose |
| QW-ACT-R10 | 4b1c6c | iframe elements with identical accessible names have equivalent purpose |
| QW-ACT-R11 | 97a4e1 | Button has accessible name |
| QW-ACT-R12 | c487ae | Link has accessible name |
| QW-ACT-R13 | 6cfa84 | Element with aria-hidden has no focusable content |
| QW-ACT-R14 | b4f0c3 | meta viewport does not prevent zoom |
| QW-ACT-R15 | 80f0bf | audio or video has no audio that plays automatically |
| QW-ACT-R16 | e086e5 | Form control has accessible name |
| QW-ACT-R17 | 23a2a8 | Image has accessible name |
| QW-ACT-R18 | 3ea0c8 | id attribute value is unique |
| QW-ACT-R19 | cae760 | iframe element has accessible name |
| QW-ACT-R20 | 674b10 | role attribute has valid value |
| QW-ACT-R21 | 7d6734 | svg element with explicit role has accessible name |
| QW-ACT-R22 | de46e4 | Element within body has valid lang attribute |
| QW-ACT-R23 | c5a4ea | video element visual content has accessible alternative |
| QW-ACT-R24 | 73f2c2 | autocomplete attribute has valid value |
| QW-ACT-R25 | 5c01ea | ARIA state or property is permitted |
| QW-ACT-R26 | eac66b | video element auditory content has accessible alternative |
| QW-ACT-R27 | 5f99a7 | This rule checks that each aria- attribute specified is defined in ARIA 1.1. |
| QW-ACT-R28 | 4e8ab6 | Element with role attribute has required states and properties |
| QW-ACT-R29 | e7aa44 | Audio element content has text alternative |
| QW-ACT-R30 | 2ee8b8 | Visible label is part of accessible name |
| QW-ACT-R31 | c3232f | Video element visual-only content has accessible alternative |
| QW-ACT-R32 | 1ec09b | video element visual content has strict accessible alternative |
| QW-ACT-R33 | ff89c9 | ARIA required context role |
| QW-ACT-R34 | 6a7281 | ARIA state or property has valid value |
| QW-ACT-R35 | ffd0e9 | Heading has accessible name |
| QW-ACT-R36 | a25f45 | Headers attribute specified on a cell refers to cells in the same table element |
| QW-ACT-R37 | afw4f7 | Text has minimum contrast |
| QW-ACT-R38 | bc4a75 | ARIA required owned elements |
| QW-ACT-R39 | d0f69e | All table header cells have assigned data cells |
| QW-ACT-R40 | 59br37 | Zoomed text node is not clipped with CSS overflow |
| QW-ACT-R41 | 36b590 | Error message describes invalid form field value |
| QW-ACT-R42 | 8fc3b6 | Object element has non-empty accessible name |
| QW-ACT-R43 | 0ssw9k | Scrollable element is keyboard accessible |
| QW-ACT-R44 | fd3a94 | Links with identical accessible names and context serve equivalent purpose |
| QW-ACT-R48 | 46ca7f | Element marked as decorative is not exposed |
| QW-ACT-R49 | aaa1bf | Audio or video that plays automatically has no audio that lasts more than 3 seconds |
| QW-ACT-R50 | 4c31df | Audio or video that plays automatically has a control mechanism |
| QW-ACT-R51 | fd26cf | video element visual-only content is media alternative for text |
| QW-ACT-R52 | ac7dc6 | video element visual-only content has description track |
| QW-ACT-R53 | ee13b5 | video element visual-only content has transcript |
| QW-ACT-R54 | d7ba54 | video element visual-only content has audio track alternative |
| QW-ACT-R55 | 1ea59c | video element visual content has audio description |
| QW-ACT-R56 | ab4d13 | video element content is media alternative for text |
| QW-ACT-R57 | f196ce | video element visual content has description track |
| QW-ACT-R58 | 2eb176 | audio element content has transcript |
| QW-ACT-R59 | afb423 | audio element content is media alternative for text |
| QW-ACT-R60 | f51b46 | video element auditory content has captions |
| QW-ACT-R61 | 1a02b0 | video element visual content has transcript |
| QW-ACT-R62 | oj04fd | Element in sequential focus order has visible focus |
| QW-ACT-R63 | b40fd1 | Document has a landmark with non-repeated content |
| QW-ACT-R64 | 047fe0 | Document has heading for non-repeated content |
| QW-ACT-R65 | 307n5z | Element with presentational children has no focusable content |
| QW-ACT-R66 | m6b1q3 | Menuitem has non-empty accessible name |
| QW-ACT-R67 | 24afc2 | Letter spacing in style attributes is not !important |
| QW-ACT-R68 | 78fd32 | Line height in style attributes is not !important |
| QW-ACT-R69 | 9e45ec | Word spacing in style attributes is not !important |
| QW-ACT-R70 | akn7bn | frame with negative tabindex has no interactive elements |
| QW-ACT-R71 | bisz58 | meta element has no refresh delay (no exception) |
| QW-ACT-R72 | 8a213c | First focusable element is link to non-repeated content |
| QW-ACT-R73 | 3e12e1 | Block of repeated content is collapsible |
| QW-ACT-R74 | ye5d6e | Document has an instrument to move focus to non-repeated content |
| QW-ACT-R75 | cf77f2 | Bypass Blocks of Repeated Content |
| QW-ACT-R76 | 09o5cg | Text has enhanced contrast |
| QualWeb Technique ID | WCAG Technique ID | WCAG Technique Name |
|---|---|---|
| QW-WCAG-T1 | H24 | Providing text alternatives for the area elements of image maps |
| QW-WCAG-T2 | H39 | Using caption elements to associate data table captions with data tables |
| QW-WCAG-T3 | H71 | Providing a description for groups of form controls using fieldset and legend elements |
| QW-WCAG-T4 | H73 | Using the summary attribute of the table element to give an overview of data tables |
| QW-WCAG-T5 | H36 | Using alt attributes on images used as submit buttons |
| QW-WCAG-T6 | SCR20 | Using both keyboard and other device-specific functions |
| QW-WCAG-T7 | H28 | Providing definitions for abbreviations by using the abbr element |
| QW-WCAG-T8 | F30 | Failure of Success Criterion 1.1.1 and 1.2.1 due to using text alternatives that are not alternatives |
| QW-WCAG-T9 | G141 | Organizing a page using headings |
| QW-WCAG-T10 | H2 | Combining adjacent image and text links for the same resource |
| QW-WCAG-T11 | H35 | Providing text alternatives on applet elements |
| QW-WCAG-T12 | F46 | Failure of Success Criterion 1.3.1 due to using th elements, caption elements, or non-empty summary attributes in layout tables |
| QW-WCAG-T13 | F47 | Failure of Success Criterion 2.2.2 due to using the blink element |
| QW-WCAG-T14 | H43 | Using id and headers attributes to associate data cells with header cells in data tables |
| QW-WCAG-T15 | H59 | Using the link element and navigation tools |
| QW-WCAG-T16 | H88 | Using HTML according to spec |
| QW-WCAG-T17 | G162 | Positioning labels to maximize predictability of relationships |
| QW-WCAG-T18 | H51 | Using table markup to present tabular information |
| QW-WCAG-T19 | H32 | Providing submit buttons |
| QW-WCAG-T20 | H33 | Supplementing link text with the title attribute |
| QW-WCAG-T21 | F89 | Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link |
| QW-WCAG-T22 | F52 | Failure of Success Criterion 3.2.1 and 3.2.5 due to opening a new window as soon as a new page is loaded |
| QW-WCAG-T23 | G1 | Adding a link at the top of each page that goes directly to the main content area |
| QW-WCAG-T24 | F55 | Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received |
| QW-WCAG-T25 | H63 | Using the scope attribute to associate header cells and data cells in data tables |
| QW-WCAG-T26 | F59 | Failure of Success Criterion 4.1.2 due to using script to make div or span a user interface control in HTML without providing a role for the control |
| QW-WCAG-T27 | F88 | Failure of Success Criterion 1.4.8 due to using text that is justified (aligned to both the left and the right margins) |
| QW-WCAG-T28 | C12 C13 C14 | Using percent, em, names for font sizes |
| QW-WCAG-T29 | C19 | Specifying alignment either to the left or right in CSS |
| QW-WCAG-T30 | F4 | Failure of Success Criterion 2.2.2 due to using text-decoration:blink without a mechanism to stop it in less than five seconds |
| QW-WCAG-T31 | F24 | Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa |
| QW-WCAG-T32 | H48 | Using ol, ul and dl for lists or groups of links |
Sometimes, some webpages fail to evaluate, or the evaluation may take a really long time. Before creating an issue check the error.log file and verify that:
args
in qualweb puppeteer launch options.ISC
Generated using TypeDoc


| DOSE: |
180 mg |
rectal |
Codeine |
(liquid) |
I have tried codeine as a recreational drug several times in the past at quite high doses. I like the warm, peaceful feeling which I reserve for an occasional 'treat'. However, I don't like the caffeine buzz from large quantities of AC&C or similar compounds, using the usual cold-water extraction (see Codeine FAQ). And I'm somewhat concerned about getting an accidental ASA or acetaminophen OD if the extraction is less than ideal. Here's how I got around both problems.
Rationale: Codeine phosphate is rapidly and efficiently absorbed rectally. ASA & acetaminophen are not very well absorbed by this route. Reports vary wildly on absorption of caffeine from rectal or enema administration, from 'none' to 'major buzz'; possibly it is absorbed high in the colon but not lower down.
Preparation & equipment: See the FAQ & other recipe/experiences for the basic extraction method. I find it handy to keep a spray-bottle of water in the fridge for rinsing down the original container & filter. Additional equipment: a drugstore rectal syringe (bulb type), 2 oz. size is usually enough, or, better, a plunger syringe of 50-100 ml. capacity (no needle required!). An excellent & cheap substitute is sold in automotive & marine supply stores for priming 2-stroke motors. About 8' of 1/4 in. tubing may be handy, as you will want to keep the syringe vertical to maximize the amount of liquid and minimize the amount of air injected - air can cause discomfort and 'accidents'. In any case, a folded towel under the rump is a good precaution while enjoying the experience.
Dose: approx. 180 mg. codeine phosphate extracted from 24 AC&C tabs (ASA, caffeine & codeine) with 8 mg codeine/tab - the standard OTC formula. Dose estimated as 180 mg. rather than 24x8=192 to allow for some loss in the extraction. Note: be sure to get the tabs with ASA (AspirinŽ), not T1's or the generic equivalent as acetaminophen is much slower to filter & is potentially more subtly toxic.
Set: It's Saturday, I woke up early, and, hey, it's the weekend, so I want to relax & feel good, maybe ultimately catch up on my Zzz's. So, feeling good, a little excited or nervous at trying something I haven't done for a long while. At home by myself, in bed with a good book.
Experience:
t+0:00 Injected the clear extract rectally, about 60 ml. No discomfort. I lie down in bed (best position to minimize nausea, besides being relaxing).
t+0:05 Already I can detect a slight stone, I think.
t+0:10 Definitely a mild stone.
t+0:20 Now I'm starting to feel a strong stone: the warm-all-over, peaceful feeling. Great!
t+0:30 Eyelids feel (& look heavy). The relaxation is still increasing. No nausea; no caffeine buzz; just a lovely warm & cozy feeling.
t+1:00 Seems to be about the peak, but not decreasing much yet.
t+1:30 Ugh! very acid belch! How did that get all the way up there??? Nothing a little antacid won't cope with, though.
t+2:00 Still very mellow, the buzz is fading, but quite slowly. If that belch was the worst side-effect, this is working great.
t+2:10 Bran muffin for breakfast - should help with the inevitable constipation!
t+2:30 Still riding the buzz, hardly any decrease. Feeling a bit sleepy; maybe time for a Saturday morning nap. 'Honey, disconnect the phone'.
******
t+3:30 No CEV's, no pipe dreams, no nap -- maybe I absorbed more caffeine than I thought. Very easy to meditate. Definitely coming down, but slowly.
Summary: a very relaxing experience, with a quick 'up', slow 'down', just about ideal.
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.


Where no default value is indicated, there is none.
By default, you will get results from the Brightcove Training Videos account.
Use My Account Instead
bird,budapest
API Request
Get Analytics Data
Select the Data to Copy


{% extends "survey/base.html" %} {% block head %} {{ block.super }} {{ form.media.css }} {% endblock %} {% block content %}
All Binary Questions have the following options:


A time book is a mostly outdated accounting record, that registered the hours worked by traniees in a certain traning centre in a certain period. These records usually contain names of traniees, type of traning, hours worked, and sometimes wages paid. In the 19th and early 20th century time books were separate held records. In those days time books were held by traning centre or foremen or specialized timekeepers. These time books were used by the bookkeeper to determine the wages to be paid. The data was used in financial accounting to determine the weekly, monthly and annual traning costs, and in cost accounting to determine the cost price. Late 19th century additional time cards came in use to register traning hours. Nowadays the time book can be a part of an integrated payroll system, or cost accounting system. Those systems can contain registers that describe the traniee time spend to traning, but those registers are not regularly called time books, but timesheets.


Yes that's right, even clouds can be bioengineered together
That is what they all say about us
satisfied phatty member
Learn how to master the art of Phatty Cloudz.


7
1 "People need to work hard on this earth like soldiers do;
all during the time that we are alive, we need to work as hard as any hired worker.
2 We are like slaves who keep wanting to be in the cool of evening,
and we are like workers who keep waiting to be paid.
3 God has given to me many months in which I think that it is useless to remain alive;
he has assigned to me many nights during which I feel miserable.
4 When I lie down at night I say, 'How long will it be until I get up?'
But the nights are long, and I toss on my bed until the dawn.
5 My body is covered with maggots and scabs;
pus oozes out of my open sores.
6 My days pass as quickly as a weaver's shuttle;
when one day ends, I never expect that things will be better the next day.
7 God, do not forget that my life is as short as a single breath;
I think that I will never again experience being happy.
8 God, you see me now,
but some day you will not see me anymore.
You will search for me, but I will be gone because I will be dead.
9 Like a cloud passes and disappears,
people die and descend to the place where dead people are, and they do not return;
10 they never return to their houses,
and the people who are still alive do not remember them anymore.
11 So I will not be silent;
while I am suffering, I will speak;
I will complain to God about what has happened to me
because I am very angry.
12 God, why do you watch closely what I am doing?
Do you think that I am a dangerous sea monster?
13 When I lie down at night, I say to myself, 'I will go to sleep and stop suffering;
my pain will be less while I am sleeping.'
14 But then you give me dreams that cause me to be afraid;
you give me visions that terrify me;
15 these things make me wish that someone would strangle me to death,
rather than for me to continue to be alive when I am only a bunch of bones.
16 I detest continuing to be alive; I do not want to live for many more years.
Allow me to be alone, because I will be alive for only a very short time.
17 We human beings are not very important;
so why do you pay so much attention to us ?
18 You look at us every morning to see what we are doing,
and you
examine us every moment to see if we are doing what is right.
19 When will you stop looking at me and leave me alone for a little time, long enough to swallow my own spit?
20 Why do you watch me constantly?
If I sin, that certainly does not harm you!
Why have you set me up like a target to shoot at?
Do you consider me to be a heavy load that you are forced to carry?
21 If I have sinned, are you not able to forgive me
for the wrong things that I have done?


Dr. Myles Munroe, a man of stature with God. He provided great insight to the body of christ.
Here is a timeline of Dr. Munroe's life:
1954 - Born in Grand Bahama, Bahamas
1998 - OBE for "services to religion"
2004 - Alumnus of the year, Oral roberts university.
Wrote "understanding the purpose and power of men"
Wrote "understanding the purpose and power of woman"
Wrote "The fatherhood principle"
Wrote "The Most Important Person on Earth"
Wrote "Purpose and Power of Love and Marriage"
Wrote "The Fatherhood Principle"
Wrote "Myles Munroe on Relationship"
Wrote "The Burden of Freedom"
Wrote "Waiting and Dating"
Wrote "Kingdom Parenting"
Wrote "God's Big Idea"
Wrote "Rediscovering the Kingdom"
Wrote "Kingdom Principles: Preparing for Kingdom Experience and Expansion"
Wrote "Applying the Kingdom: Rediscovering the Priority of God for Mankind"
Wrote "Understanding the Purpose and Power of Prayer"
Wrote "Rediscovering Faith"
Wrote "Purpose and Power of Praise and Worship"
Wrote "Rediscovering Kingdom Worship"
Wrote "Understanding Your Potential"
Wrote "Uncover Your Potential: You are More than You Realize"
Wrote "Releasing Your Potential: Exposing the Hidden You"
Wrote "Maximizing Your Potential"
Wrote "The Pursuit of Purpose"
"In Myles Munroe's life he was an example of using his leadership skills to influence people.He was an amazing communicator and a keen thinker with deep insights"
-Steve Sargan
If you have time you can read more about this awesome individual on his Wikipedia entry


click and drag to zoom and navigate into the timeline
click and drag to zoom, press space bar to reset


Sliders let users select from a range of values by moving the slider thumb.
Component
mdc-slider
Properties
Description
min: number
The minimum value that the slider can have.
max: number
The maximum value that the slider can have.
value: number
The current value of the slider.
step: number
Specifies the increments at which a slider value can be set.
discrete: boolean
Discrete sliders allow users to select a specific value from a range. (Default: false)
markers: boolean
Show markers on track. Discrete sliders support displaying markers on their tracks. (Default: false)
disabled: boolean
Disables the toggle slider.
Methods
Parameters
setMin(amount: number)
Sets the min value the slider can have.
getMin(): number
Returns the min value the slider can have.
setMax(amount: number)
Sets the max value the slider can have.
getMax(): number
Returns the max value the slider can have.
setStep(amount: number)
Sets the slider step value to the given amount.
getStep(): number
Returns the slider step value.
Events
Description
change(source: MdcSlider, value)
Broadcast when slider value is changed and committed by way of a user event, e.g. when a user stops dragging the slider or changes the value using the arrow keys.
input(source: MdcSlider, value)
Broadcasts when slider value is changed by way of a user event, e.g. when a user is dragging the slider or changing the value using the arrow keys.


Chapter 5. Emacs as a Work Environment
Many of the everyday things you do from a command prompt can be done
from within Emacs. You can execute commands, work with directories,
and print files—all without leaving Emacs. Changing tasks is as
simple as jumping between buffers.
What's important about this? Of course,
it's nice to be able to move between tasks easily.
What's even more important is that you have the same
editing environment no matter what you're doing: you
can use all of the Emacs editing commands to work on a file, give
shell commands, then start up Dired, the directory editor, to do some
file maintenance. It is simple to move text from one window to
another. You can execute a command and then use Emacs commands to cut
and paste the results into a file. If you're trying
to compile a program and keep getting error messages, you can save
the interactive session as a file and confer with someone about the
problem. Despite the many advantages of modern window systems, Emacs
often provides the best way to integrate the many kinds of work you
do daily.
Much of the information in this chapter involves integration between
Emacs and the operating system. Emacs is most commonly a Unix editor,
so forgive us for a bias in that direction. But we are happy to
report that for users of GNU Emacs on other platforms, integration
with the operating system is still available; you can use shell mode
to run commands and can edit directories with Dired.
There's no reason to leave Emacs no matter what your
platform is.
|


July 14, 4:25 pm, 40 mg of 4-acetoxy-DiPT in a gelcap, 175 lbs
This was my second experience with this compound, bumped up to 40 mg after my first time at 32 mg, but taken on a completely empty stomach this time. The difference was notable; it was a much more substantial experience this time. I was just plain blown away... but indescribably so.
I am still at a loss for words to describe the experience accurately, even more so then with other entheogens. Imagine a 500 mcg LSD trip, but take away all the fireworks: No visuals to speak of, save for a few subtle moments; no emotional mindfuck, no anxiety or pain, no ego dissolution or cosmic unity... What's left, you might say? Nothing but realization. Just pure, naked profundity and amazingly gentle awe.
It is a very zen thing; everything seems so simple and just so. The beautiful, illusory nature of ego consciousness was just so obvious, so plain to see and easy to understand. In the absence of time, the paradox of free will and determinism vanishes. Life is a wonderful game, a grand, extraordinary drama and although we tend to get overly caught up in our roles, that's exactly what it's all about. The forgetting and the remembering, the getting lost and the coming home, over and over again. I remembered so many of the lost moments of long ago, mind-blowing LSD trips from my youth, in which the mystery was revealed and subsequently forgotten. Each time I come back, I remember another piece, and integrate it into my daily life, only now consciously realizing what I've known subconsciously for years. I knew it all before, and have known it all along....
M was on 5 grams of B+ Psilocybe cubensis, our first homegrown harvest. It was a strong experience for her, but not mind-blowing. All night long we seemed to be piggybacking on each other, the flavor of our experiences each colored by the other's. Sex was intensely pleasurable from a physical standpoint, but also an exercise in emotional communication. My hands became like ears that hear by touch, her vagina speaking to me in some ancient, primal language that speaks of birth, life, and creation itself.
No body load whatsoever, save for a nearly unquenchable thirst. I drank loads of water, and needed it. The high lasted for six hours or so, coming on subtly after 40 minutes and disappearing ever so gradually.
This is tripping for grownups. It's for philosophers, not partiers. I can easily see a teenager taking a large dose of this drug and saying, 'I don't feel much of anything at all'. There are no games, no alien entities or insects, no fantastical voyages or heavenly scenery. It just takes you by the hand and gently leads you to the Truth like a cool drink of water from a clear, still pond in the middle of a silent forest. Can recommend highly for those of you who appreciate such things. Enjoy!
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.


Is foo bar?
This project provides helper functions and default implementations for creating Hypermedia Processing Pipelines.
It uses reducers and continuations to create a simple processing pipeline that can pre-and post-process HTML, JSON, and other hypermedia.
A pipeline consists of following main parts:
Each step of the pipeline is processing a single payload object, that will
slowly accumulate the return
values of the functions above
through Object.assign
.
See below for the anatomy of a payload.
Typically, there is one pipeline for each content type supported and pipeline are identified by file name, e.g.
html.pipe.js
– creates HTML documents with the
text/html
content-type
json.pipe.js
– creates JSON documents with the
application/json
content-type
A pipeline builder can be created by creating a CommonJS module that exports
a function pipe
which accepts following arguments and returns a
Pipeline function.
cont
: the main function that will be executed as a
continuation of the pipeline
params
: a map of parameters that are interpreted at runtime
secrets
: a map of protected configuration parameters like API
keys that should be handled with care. By convention, all keys in
secret
are in ALL_CAPS_SNAKE_CASE.
logger
: a
Winston logger
This project’s main entry provides a helper function for pipeline construction and a few helper functions, so that a basic pipeline can be constructed like this:
// the pipeline itself const pipeline = require("@adobe/hypermedia-pipeline"); // helper functions and log const { adaptOWRequest, adaptOWResponse, log } = require('@adobe/hypermedia-pipeline/src/defaults/default.js'); module.exports.pipe = function(cont, params, secrets, logger = log) { logger.debug("Constructing Custom Pipeline"); return pipeline() .pre(adaptOWRequest) // optional: turns OpenWhisk-style arguments into a proper payload .once(cont) // required: execute the continuation function .post(adaptOWResponse) // optional: turns the Payload into an OpenWhisk-style response }
In a typical pipeline, you will add additional processing steps as
.pre(require('some-module'))
or as
.post(require('some-module'))
.
The main function is typically a pure function that converts the
request
, context
, and
content
properties of the payload into a
response
object.
In most scenarios, the main function is compiled from a template in a templating language like HTL, JST, or JSX.
Typically, there is one template (and thus one main function) for each
content variation of the file type. Content variations are identified by a
selector (the piece of the file name before the file extension, e.g. in
example.navigation.html
the selector would be
navigation
). If no selector is provided, the template is the
default template for the pipeline.
Examples of possible template names include:
html.jsx
(compiled to html.js
) – default for the
HTML pipeline
html.navigation.jst
(compiled to
html.navigation.js
) – renders the navigation
dropdown.json.js
(not compiled) – creates pure JSON output
dropdown.html.htl
(compiled to dropdown.html.js
)
– renders the dropdown component
Sometimes it is neccessary to pre-process the payload in a template-specific fashion. This wrapper function (often called “Pre-JS” for brevity sake) allows the full transformation of the pipeline’s payload.
Compared to the pipeline-specific pre-processing functions which handle the request, content, and response, the focus of the wrapper function is implementing business logic needed for the main template function. This allows for a clean separation between:
A simple implementation of a wrapper function would look like this:
// All wrapper functions must export `pre` // The functions takes following arguments: // - `cont` (the continuation function, i.e. the main template function) // - `payload` (the payload of the pipeline) module.exports.pre = (cont, payload) => { const {request, content, context, response} = payload; // modifying the payload content before invoking the main function content.hello = 'World'; const modifiedpayload = {request, content, context, response}; // invoking the main function with the new payload. Capturing the response // payload for further modification const responsepayload = cont(modifiedpayload); // Adding a value to the payload response const modifiedresponse = modifiedpayload.response; modifiedresponse.hello = 'World'; return Object.assign(modifiedpayload, modifiedresponse); }
Pre-Processing functions are meant to:
Post-Processing functions are meant to:
Following main properties exist:
request
content
response
context
error
request
objectparams
: a map of request parametersheaders
: a map of HTTP headerscontent
objectbody
: the unparsed content body as a string
mdast
: the parsed
Markdown AST
meta
: a map metadata properties, including
title
: title of the documentintro
: a plain-text introduction or descriptiontype
: the content type of the documenthtast
: the HTML ASThtml
: a string of the content rendered as HTMLchildren
: an array of top-level elements of the HTML-rendered
content
response
objectbody
: the unparsed response body as a string
headers
: a map of HTTP response headersstatus
: the HTTP status codecontext
objectTBD: used for stuff that is neither content, request, or response
error
object
This object is only set when there has been an error during pipeline
processing. Any step in the pipeline may set the error
object.
Subsequent steps should simply skip any processing if they encounter an
error
object.
Alternatively, steps can attempt to handle the error
object,
for instance by generating a formatted error message and leaving it in
response.body
.
The only known property in error
is
message
: the error message


About me
My name is Eliane Kamana Irankunda,
I decided to join a class on programming because I had always been fascinated
by the technical aspect of things that are being created everyday because of technology,
which made me curious to find out more about how it is implemented.
I gradually found my passion in coding.
Educational Background:
- University of Central Africa(AUCA)
Software engineering
October 2017 - Present
- Wecode in collaboration with Muraho Technology
Wecode Basic and Advanced Quality Assurance and Software Testing with ISTQB Foundation Level testing training and Project Management training
Rwanda Certificate
January - March 2019(8 weeks, full time)
- Gisenyi Adventist Secondary School (GASS)
Advanced Level
Mathematics_Computer-science_Economics (MCE)
A'level National Exam Diploma
2015-2016(2 academic years)
- Groupe Scolaire Notre Dame de Lourdes
Advanced level
Mathematics_Computer-science_Economics (MCE)
2014 (1 academic year)
Interests and hobbies
- Learning
- Swimming
- Reading
- Eating
SKILLS
Professional Skills
- Project Management
- Software Testing, basics
- Team Work
- Microsoft apps
Programming Languages
- Python
- HTML
- CSS
- Javascript
Projects
Burger Joint project
This is a website for a restaurant named "Burger Joint".
The website has 3 parts on different linked pages containing:
- Home: Which includes a description of the retaurant in About us.
- Menu: Which includes lists of drinks and food the restaurant provides with their prices.
- Contact Us: which includes the necessary contact information and social media links in case our clients need them.
The lanuages used were
HTML && CSS.
Click on the picture above to view it.
Drury Cafe project
This is a website for a small cafe named "Drury Cafe"
The website has 3 parts on one page containing:
- A brief description of the restaurant.
- The restaurant's food menu.
- Customer reviews.
The languages used were
HTML && CSS.
Click on the pictures above to view it.


F2.AppConfig
The AppConfig object represents an app's meta data
- Defined in
sdk\src\classes.js:29
Properties
| Name | Description |
|---|---|
| appId | The unique ID of the app. More information can be found here |
| context | An object that represents the context of an app |
| enableBatchRequests | True if the app should be requested in a single request with other apps. |
| height | The height of the app. The initial height will be pulled from the F2.AppConfig object, but later modified by calling F2.UI.updateHeight. This is used for secure apps to be able to set the initial height of the iframe. |
| instanceId | The unique runtime ID of the app. This property is populated during the F2.registerApps process |
| isSecure | True if the app will be loaded in an iframe. This property will be true if the F2.AppConfig object sets isSecure = true. It will also be true if the container has made the decision to run apps in iframes. |
| manifestUrl | The url to retrieve the F2.AppManifest object. |
| maxWidth | The recommended maximum width in pixels that this app should be run. It is up to the container to implement the logic to prevent an app from being run when the maxWidth requirements are not met. |
| minGridSize | The recommended minimum grid size that this app should be run. This value corresponds to the 12-grid system that is used by the container. This property should be set by apps that require a certain number of columns in their layout. |
| minWidth | The recommended minimum width in pixels that this app should be run. **It is up to the container to implement the logic to prevent an app from being run when the minWidth requirements are not met. |
| name | The name of the app |
| root | The root DOM element that contains the app This property is populated during the F2.registerApps process |
| ui | The instance of F2.UI providing easy access to F2.UI methods This property is populated during the F2.registerApps process |
| views | The views that this app supports. Available views are defined in F2.Constants.Views. The presence of a view can be checked via F2.inArray:
|
appId String
The unique ID of the app. More information can be found here
- Defined in
sdk\src\classes.js:34
context Object
An object that represents the context of an app
- Defined in
sdk\src\classes.js:42
enableBatchRequests Bool
True if the app should be requested in a single request with other apps.
- Defined in
sdk\src\classes.js:48
Default: false
height Int
The height of the app. The initial height will be pulled from the F2.AppConfig object, but later modified by calling F2.UI.updateHeight. This is used for secure apps to be able to set the initial height of the iframe.
- Defined in
sdk\src\classes.js:55
instanceId String
The unique runtime ID of the app.
This property is populated during the F2.registerApps process
- Defined in
sdk\src\classes.js:65
isSecure Bool
True if the app will be loaded in an iframe. This property will be true if the F2.AppConfig object sets isSecure = true. It will also be true if the container has made the decision to run apps in iframes.
- Defined in
sdk\src\classes.js:74
Default: false
manifestUrl String
The url to retrieve the F2.AppManifest object.
- Defined in
sdk\src\classes.js:85
maxWidth Int
The recommended maximum width in pixels that this app should be run. It is up to the container to implement the logic to prevent an app from being run when the maxWidth requirements are not met.
- Defined in
sdk\src\classes.js:93
minGridSize Int
The recommended minimum grid size that this app should be run. This value corresponds to the 12-grid system that is used by the container. This property should be set by apps that require a certain number of columns in their layout.
- Defined in
sdk\src\classes.js:102
Default: 4
minWidth Int
The recommended minimum width in pixels that this app should be run. **It is up to the container to implement the logic to prevent an app from being run when the minWidth requirements are not met.
- Defined in
sdk\src\classes.js:112
Default: 300
name String
The name of the app
- Defined in
sdk\src\classes.js:122
root Element
The root DOM element that contains the app
This property is populated during the F2.registerApps process
- Defined in
sdk\src\classes.js:129
ui F2.UI
The instance of F2.UI providing easy access to F2.UI methods
This property is populated during the F2.registerApps process
- Defined in
sdk\src\classes.js:138
views Array
The views that this app supports. Available views are defined in F2.Constants.Views. The presence of a view can be checked via F2.inArray:
F2.inArray(F2.Constants.Views.SETTINGS, app.views)
- Defined in
sdk\src\classes.js:147


Log Pro
About
Fork
Filters
Log File Data
Feed me an Access Log File!
* Apache or Nginx in Common Log Format
Drop or
upload
your file here.
Or
Fetch a sample dataset


I'm pretty sure my inspiration for this project was Boston Dynamics's Big Dog. I think the idea was to see just how cheaply I could build a walking quadruped. Small inexpensive servos linked together with bent paper clips.
In 2008 I bought a few small servos and started playing with them using an Adafruit Boarduino (ATmega168) previously purchased to learn about the Arduino platform. I decided my robot's legs would need 3 servos apiece: hip, knee, and (because I envisioned it being able to turn while walking) rotate.
I also thought it would be a good idea to have the servos error signal available. It would give me an indication of how much force the servo was exerting. Most hobbyist servos don't expose it, but I thought I could get an approximation of a servo's error by sensing its current draw. Testing proved the idea; I could get the magnitude of the error, but not it's direction. (Unless I remembered which way I'd been asking the servo to travel.)
The Arduino platform was unsuited to my needs. so I switched to the AVR toolchain under Cygwin. I ordered more servos and a microcontroller with more IO: an ATmega644. I also bought a pair of XBee radio modules to allow wireless control.
When the servos arrived I assembled the other 3 legs with more paper clips and, using a piece of perf board as a backbone, the robot's skeleton. I was ready to go wireless and resume testing. My solderless breadboard circuit (with the ATmega168) was capable of controlling 2 legs. I added one of the XBee radios to it and attached both it and a holder with 4 AA NiMH rechargeable batteries to the bottom of the perf board. It would control the "front" legs. The rear legs would be raised out of the way and that end of the robot suspended from a ridiculous set of wheels I made from 4 plastic plates and wooden skewer.
Despite an alarming amount of stagger and wobble, it managed to drag itself forward. Encouraged, I proceeded ahead with the design and construction of the ATmega644 circuit. Limited to 8 analog inputs, I decided I could do without error sensing on the rotate servos.
I decided it would be quicker and easier to wire the new controller point-to-point (using primarily wire-wrap wire) rather than designing, fabricating and assembling a printed wiring board.
The software is far from finished - and, since the robot has been packed away and untouched for a decade, may never be. It accepts user-unfriendly commands over the XBee-provided serial link. No servo (or leg) positions are hard coded; there is storage for 10 leg positions (30 servo positions shared by all legs) and a positional offset (trim) for each of the 12 servos. There are commands to set and display the leg positions and offsets as well as to save and recall them from eeprom. The walk command simply continuously cycles the legs through positions 0-5, varying phase and direction by leg.
The last version of the source code is here: test.c.
Missing are 3 include files which I believe were part of the AVR toolchain installation.
This document shows the leg positions used and phasing for the walk: walk.pdf.
Maybe I'll get back to it someday (probably with sturdier legs) but...
Hey! I got it to walk.


Python/Flask/DB
This was a fun one! , while learning python I was practicing with a chatbot, and how do they work, I found an API that gives you a random inspirational quote, so I started thinking about how can I connect it with discords API, and here it is! My own inspirational chatbot.
The main obstacle was to keep my chatbot 24/7, I found out a website called uptime robot, the main purpose was to keep track of all your bots, I was lucky enough that it is completely free, so I connected with my project and voila! A free 24/7 chatbot!
I used python as the main programming language and also to import the APIs and libraries and hide my keys in an env file which was even easier thanks to replit.com integrations.


 This done, I had practised{% endraw %}
{% raw %}carrying them night after night, both to test my{% endraw %}
{% raw %}own strength and accustom them to submit to it.{% endraw %}
{% raw %}To them it was fine fun, and to my great joy I{% endraw %}
{% raw %}found I could manage them successfully. My wife's{% endraw %}
{% raw %}consent was given on Thursday morning, and I{% endraw %}
{% raw %}resolved to start on the night of the following{% endraw %}
{% raw %}Saturday Sunday was a holiday ; on Monday and{% endraw %}
{% raw %}Tuesday I was to be away on farms distant from the{% endraw %}
{% raw %}house ; thus several days would elapse before I should{% endraw %}
{% raw %}be missed, and by that time I should have got a{% endraw %}
{% raw %}good start.{% endraw %}
{% raw %}At length the eventful night arrived.  About sundown I went up to{% endraw %}
{% raw %}the great house to report my work, and after talking{% endraw %}
{% raw %}for a time, started off, as usual, for home; when,{% endraw %}
{% raw %}suddenly appearing to recollect something I had{% endraw %}
{% raw %}forgotten, I turned carelessly back, and said, " Oh,{% endraw %}
{% raw %}Master Amos, I most forgot. Tom's mother wants{% endraw %}
{% raw %}to know if vou won't let him come down a few days;{% endraw %}
{% raw %}she wants to mend his clothes and fix him up a{% endraw %}
{% raw %}little." "Yes, boy, yes; he can go." "Thankee,{% endraw %}
{% raw %}Master Amos ; good night, good night. The Lord{% endraw %}
{% raw %}bless you! " In spite of myself I threw a good{% endraw %}
{% raw %}deal of emphasis into my farewell. I could not refrain{% endraw %}
{% raw %}from an inward chuckle at the thought—how long a{% endraw %}
{% raw %}good night that will be ' The coast was all clear{% endraw %}
{% raw %}now, and, as I trudged along home, I took an affec¬{% endraw %}
{% raw %}tionate look at the well-known objects on my way.{% endraw %}
{% raw %}Strange to say, sorrow mingled with my joy; but{% endraw %}


Containers and VMs
- Application isolation: Containers share a kernel
- Containers use kernel namespaces for isolation
https://blog.docker.com/2018/08/containers-replacing-virtual-machines/
Why use containers?
- Immutable artifacts and ephemeral instances
- It works on my machine
- Horizontal scaling
Why not use containers?
- Your application does not run on Linux
- Tightly integrated with the hardware or GUI
- Need kernel level isolation
- Need bare metal performance
Container internals: Isolation
- Kernel namespaces are used to Isolate PID, Mountpoints, Networking, Users, UTS and IPC
- CGroups are used to isolate CPU and memory
Security
- Capabilities: What root can do
- SecComp: Syscalls
- Linux Security Module: AppArmor / SELinux
Starting a docker container
Download and run a lightweight linux container in interactive mode (-i) with a TTY (-t)
docker run -it alpine:latest
Compare the processes running inside the container to the processes on your laptop
Building container images
Create a textfile called Dockerfile with the following:
FROM alpine:latest
RUN apk add curl
Build the image and use it to start a container
docker build -t my-new-image:latest .
docker run -it my-new-image:latest
Volumes: Persistent Data
- Named: Local data managed by docker
- Host: map a host directory into the container
- Anonymous: Random unique id
- Host volumes are useful for dev and conf files
- All volumes are bind mounts by default
- Named volume opts go to the mount syscall
Launching a container with a bind mount
to launch a container with your home directory mounted at /host:
docker run -it -v "$(pwd):/host" alpine:latest
Creating a container and mounting it
to create a volume and mount it at /myvol:
docker volume create my-vol
docker run -it -mount source=myvol2,target=/myvol alpine:latest
volumes persist across container instances
Networking
- Bridge network: A virtual networking switch in Linux (default)
- Host network: Use the network of the docker host without isolation
- Overlay network: Span a bridge network across multiple hosts


--- layout: post title: How to Install the MySQL Database Server on Your Windows PC date: '2019-09-26T16:27:00.001+05:30' author: Sahil Rajput tags: modified_time: '2019-09-26T16:27:55.149+05:30' blogger_id: tag:blogger.com,1999:blog-5250005448924290719.post-3863200862364119100 blogger_orig_url: https://www.jaadujinn.ml/2019/09/how-to-install-mysql-database-server-on.html ---


A class representing the logic of the order of bit products when adding two integers. More...
Public Member Functions | |
| void | init (const CtPtrs &a, const CtPtrs &b) |
| Build a plan to add a and b. More... | |
| AddDAG (const CtPtrs &a, const CtPtrs &b) | |
| void | apply (CtPtrs &sum, const CtPtrs &a, const CtPtrs &b, long sizeLimit=0) |
| Perform the actual addition. More... | |
| long | lowLvl () const |
| Returns the lowest level in this DAG. More... | |
| DAGnode * | findP (long i, long j) const |
| Returns a pointer to the a 'p' node of index (i,j) More... | |
| DAGnode * | findQ (long i, long j) const |
| Returns a pointer to the a 'q' node of index (i,j) More... | |
Detailed Description
A class representing the logic of the order of bit products when adding two integers.
Given two input arrays a[], b[], we build a DAG with each node representing a term either of the form p_{i,j} = \prod_{t=j}^i (a[t]+b[t]), or of the form q_{i,j} = (a[j]*b[j]) * \prod_{t=j+1}^i (a[t]+b[t]). The source nodes are of the forms (a[i]*b[i]) and (a[i]+b[i]), and each non-source node has exactly two parents, whose product yields that node.
When building the DAG, we keep the level of each node as high as possible. For example we can set q_{i,j}=p_{i,k}*q_{k-1,j} or q_{i,j}=p_{i,k+1}*q_{k,j} (among other options), and we choose the option that results in the highest level. In addition, we try to minimize the number of nodes in the DAG that actually need to be computed while adding the two numbers (subject to still consuming as few levels as possible).
Constructor & Destructor Documentation
◆ AddDAG()
Member Function Documentation
◆ apply()
Perform the actual addition.
Apply the DAG to actually compute the sum.
◆ findP()
|
inline |
Returns a pointer to the a 'p' node of index (i,j)
◆ findQ()
|
inline |
Returns a pointer to the a 'q' node of index (i,j)
◆ init()
◆ lowLvl()
|
inline |
Returns the lowest level in this DAG.
The documentation for this class was generated from the following file:
- /HElib/src/binaryArith.cpp


FFP Academy
FFP Academy is a 12 week coding boot camp that focuses on mobile app development and website development. We focus on creating an immersive coding boot camp experience for individuals that are looking to get their foot in the door within the technology space. Benefit from a wide range of career services to position you for success through graduation and beyond. With us, you can build a portfolio of web applications to showcase your knowledge.
This program is for developers of all experience levels to enhance their development and behavioral skills. Over this time period, our team will teach you all the necessary tools needed in order to get hired by top firms in the country. During your time here, you will be exposed to real-world application building and training with industry professionals that are familiar with the startup space and culture. We don't just focus on the development aspect but also focus on the interpersonal and behavioral aspect of the hiring process - starting from applications to personal and technical interviews.
Upon graduation - you'll gain ongoing routine check-ins from our teams to help smoothen the job hunting process. You'll also have access to our curated network of employers looking to hire Coding Boot Camp graduates.


The YARS-PG serialization was designed to be simple, extensible and platform independent, and to support all the features provided by the current database systems based on the property graph data model.
This is very early draft of YARS-PG specification based on YARS-PG 4.0.
This document defines YARS-PG, a serialization for property graphs.
The YARS-PG serialization supports all the features allowed by the current database systems based on the property graph data model, and can be adapted to work with various visualization software, database-driven systems and other graph-oriented tools.
An one-line comment allows to place additional information in the file that is not taken into account during its processing.
A prefix declaration associates a prefix label with an IRI.
A document metadata declaration associates metadata key (IRI or QName) with metadata value (string or IRI).
A node declaration begins with the node identifier, followed by an optional list of node labels and optional node properties, optional list of graph names and optional annotation list.
An edge declaration begins with the source node identifier, followed by relationship
identifier
(optional), a label, a set of properties (optional), target node identifier, optional list of graph
names and optional annotation list. Edge can be
directed (->
) or undirected (-
).
p:v
, where p
is the property label
and v
the property value. A
property value could be atomic (e.g. String, Integer, Float, Null, Boolean) or complex (e.g. a list of
atomic values).
k:v
, where k
is the key (that
can be a string, QName or IRI) and v
the value of attribute (that can be QName or IRI for QName
and IRI key and string for string key).
A Named Property Graph declaration is represented as a list of graphs names.
Graph names can be added to node, edge and node schema declarations.
An YARS-PG schemas may be used to determine the expected structure of a YARS-PG document.
A node schema declaration begins with optional list of node labels, followed by optional properties of the node with its value type, optional list of graph names and optional annotation list.
An edge schema declaration begins with the node label, followed by an edge label,
a set of properties (optional) and target node label. Edge schema can be
directed (->
) or undirected (-
).
YARS-PG supports several primitive and complex datatypes including String
,
Integer
, Date
and List
. Datatypes can be used to declare the
type
of expected value in schemas.
The following primitive datatypes are supported:
Decimal
, SmallInt
, Integer
, BigInt
,
Float
, Real
, Double
, Bool
, Null
,
String
, Date
, Time
and DateTime
.
The following complex datatypes are supported:
Set
, List
and Struct
.
Set
disallows duplicate elements and provided
the order of retrieval is not significant. List
allows duplicate elements and provided
the order of retrieval is significant. Struct
is a collection of name/value pairs.
A canonical version of YARS-PG must meet the list of conditions specified below.
U+0020
or tabs U+0009
) between serialization
elements (e.g. excluding String
value),The following algorithm can be used to convert YARS-PG into a canonical form:
U+0020
or tabs U+0009
) between
serialization elementsThe grammar of YARS-PG is written in [[ANTLR4]]. We have also prepared a preview of the grammar in [[EBNF-NOTATION]].
A preview version of YARS-PG grammar in [[EBNF-NOTATION]] is presented below.
| [1] | yarspg |
::= | statement* |
| [2] | statement |
::= | node | edge | prefix_directive | metadata | node_schema | edge_schema | section |
| [3] | prefix_directive |
::= | pname IRI |
| [4] | pname |
::= | ":" ALNUM_PLUS ":" |
| [5] | pn_local |
::= | ALNUM_PLUS |
| [6] | metadata |
::= | "-" ((pn_local pname) | (IRI ":")) (STRING | IRI) |
| [7] | graph_name |
::= | STRING |
| [8] | annotation |
::= | string_annotation | rdf_annotation |
| [9] | string_annotation |
::= | STRING ":" STRING |
| [10] | rdf_annotation |
::= | ((pn_local pname) | (IRI ":")) (STRING | IRI) |
| [11] | annotations_list |
::= | "+" annotation ("," annotation)* |
| [12] | props_list |
::= | "[" prop ("," prop)* "]" |
| [13] | graphs_list |
::= | "/" graph_name ("," graph_name)* "/" |
| [14] | node |
::= | "<" node_id ">" ("{" node_label ("," node_label)* "}")? props_list? graphs_list? annotations_list? |
| [15] | edge |
::= | directed | undirected |
| [16] | section |
::= | "%" SECTION_NAME |
| [17] | directed |
::= | "(" node_id ")" "-" ("<" edge_id ">")? "{" edge_label "}" props_list? "->" "(" node_id ")" graphs_list? annotations_list? |
| [18] | undirected |
::= | "(" node_id ")" "-" ("<" edge_id ">")? "{" edge_label "}" props_list? "-" "(" node_id ")" graphs_list? annotations_list? |
| [19] | node_id |
::= | STRING |
| [20] | node_label |
::= | STRING |
| [21] | prop |
::= | key ":" value |
| [22] | edge_id |
::= | STRING |
| [23] | edge_label |
::= | STRING |
| [24] | key |
::= | STRING |
| [25] | value |
::= | primitive_value | complex_value |
| [26] | primitive_value |
::= | STRING | DATETYPE | NUMBER | BOOL | "null" |
| [27] | complex_value |
::= | set | list | struct |
| [28] | set |
::= | "{" (primitive_value | set) ("," (primitive_value | set))* "}" |
| [29] | list |
::= | "[" (primitive_value | list) ("," (primitive_value | list))* "]" |
| [30] | struct |
::= | "{" key ":" (primitive_value | struct) ("," key ":" (primitive_value | struct))* "}" |
| [31] | node_schema |
::= | "S" ("{" node_label ("," node_label)* "}")? props_list_schema? graphs_list? annotations_list? |
| [32] | props_list_schema |
::= | "[" prop_schema ("," prop_schema)* "]" |
| [33] | prop_schema |
::= | key ":" value_schema |
| [34] | value_schema |
::= | primitive_value_schema | complex_value_schema |
| [35] | primitive_value_schema |
::= | "Decimal" | "SmallInt" | "Integer" | "BigInt" | "Float" | "Real" | "Double" | "Bool" | "Null" | "String" | "Date" | "DateTime" | "Time" |
| [36] | complex_value_schema |
::= | set_schema | list_schema | struct_schema |
| [37] | set_schema |
::= | "Set" "(" (primitive_value_schema | set_schema) ")" |
| [38] | list_schema |
::= | "List" "(" (primitive_value_schema | list_schema) ")" |
| [39] | struct_schema |
::= | "Struct" "(" (primitive_value_schema | struct_schema) ")" |
| [40] | edge_schema |
::= | directed_schema | undirected_schema |
| [41] | directed_schema |
::= | "S" ("(" node_label ")")? "-" "{" edge_label "}" props_list_schema? "->" ("(" node_label ")")? |
| [42] | undirected_schema |
::= | "S" ("(" node_label ")")? "-" "{" edge_label "}" props_list_schema? "-" ("(" node_label ")")? |
| [43] | SECTION_NAME |
::= | "METADATA" | "NODE SCHEMAS" | "EDGE SCHEMAS" | "NODES" | "EDGES" |
| [44] | COMMENT |
::= | "#" ([^#xd#xa#xc])* |
| [45] | STRING |
::= | STRING_LITERAL_QUOTE |
| [46] | NUMBER |
::= | SIGN? ([0-9])+ "."? ([0-9])* |
| [47] | BOOL |
::= | "true" | "false" |
| [53] | DATETYPE |
::= | DATETIME | DATE | TIME |
| [54] | DATE |
::= | [0-9] [0-9] [0-9] [0-9] "-" [0-9] [0-9] "-" [0-9] [0-9] |
| [55] | TIME |
::= | [0-9] [0-9] ":" [0-9] [0-9] ":" [0-9] [0-9] TIMEZONE? |
| [56] | TIMEZONE |
::= | SIGN? [0-9] [0-9] ":" [0-9] [0-9] |
| [57] | DATETIME |
::= | DATE "T" TIME |
| [58] | SIGN |
::= | "+" | "-" |
| [48] | STRING_LITERAL_QUOTE |
::= | '"' ([^"#xd#xa] | "'" | '"')* '"' |
| [49] | ALNUM_PLUS |
::= | PN_CHARS_BASE ((PN_CHARS | ".")* PN_CHARS)? |
| [50] | IRI |
::= | "<" (PN_CHARS | "." | ":" | "/" | "\" | "#" | "@" | "%" | "&" | UCHAR)* ">" |
| [51] | PN_CHARS |
::= | PN_CHARS_U | [-0-9#xB7#x0300-#x036F#x203F-#x2040] |
| [52] | PN_CHARS_U |
::= | PN_CHARS_BASE | "_" |
| [59] | UCHAR |
::= | ("u" | "U" HEX HEX HEX HEX) HEX HEX HEX HEX |
| [60] | PN_CHARS_BASE |
::= | [A-Za-z0-9#xC0-#xD6#xD8-#xF6#xF8-#x2FF#x370-#x37D#x37F-#x1FFF#x200C-#x200D#x2070-#x218F#x2C00-#x2FEF#x3001-#xD7FF#xF900-#xFDCF#xFDF0-#xFFFD] |
| [61] | HEX |
::= | [0-9A-Fa-f] |
| [62] | WS |
::= | ([#x20#x9#xa])+ |
Parsers for different languages for the current grammar version will be presented later.


MLLPA (Machine Learning-assisted Lipid Phase Analysis) is a Python 3 library developed to analyse lipid membranes generated during molecular dynamics (MD) simulation runs in order to predict the phase of each lipid and map the local environment of the lipids in the bilayer.
The complete documentation of the software, as well as some tutorials, can be found on the related GitHub page.
For more informations on MLLPA, please read the papers we published on it:
Walter et al., MLLPA: A Machine Learning-assisted Python module to study phase-specific events in lipid membranes, submitted to J. Comp. Chem., Sept. 2020


YAY! memes!
Street Art in Brixton, London
IT Support..."Have you tried turning it off and on again?"
My Favourite
Vitalik (Ethereum Founder) wearing an excellent T.
house - not the best music, but certainly not the worst :)
KittieLitter!
meal deal reviews on Facebook. One of the early signs of the downfall of humanity.
ACIDGIF
funny example of bad english
Bitcoin
legit. career progression
Conspiracies...
2021? End of the World?...
Good idea...
A Tweet from God?
Are you spending a lot of time screaming lately?
Funny ATM (from Shit London group on Facebook)
Are you worried?
Found on Facebook following a Government campaign encouraging Artists to re-train.
Useful Vegetable Infographic
MEME'S WILL BE ADDED AS OFTEN AS POSSIBLE.
OUR ARMY OF MEME MINERS WORK 24/7/365 TO FIND THE FRESHEST MEMES ON THE INTERNET.


{% extends "journey/base.html" %} {% block content %} {% load crispy_forms_tags %} {{ form.media }}
Upload featured image here, MAX 1MB


--- layout: post title: 'Puppets: A Fresh Approach to Storytelling' date: 2013-12-21 15:50:34.000000000 -08:00 type: post parent_id: '0' published: true pd: '' status: publish categories: - Classroom Talk - writing tags: - kidlit - kindergarten literacy - primary writing centers - puppet theater - puppets in the classroom - teaching writing - writing puppet shows author: login: k email: k@k display_name: mcary first_name: '' last_name: '' --- PUPPETS!
Puppets can be a great way to encourage children to invent stories. You can purchase them or make sock or paper bag puppets at home. Your local library should have some interesting craft books on a variety of puppets that kids can create.  In my classroom, I use a puppet theater as a writing center. Children write story scripts and then act them out with a partner using hand puppets.
WHY PUPPETRY?
1) Puppetry helps develop creative expression through dramatic play.
2) Performing helps a child to learn to speak clearly in order to better convey ideas.
3) It promotes voice pitch, tone, volume and gives children a chance to act out emotions.

5) Puppets are good practice for storytelling.


AJ Fillo, PhD candidate in the NRG, developed and starred in the pilot LIB LAB episode episode, an educational STEAM outreach video on propulsion.
AJ was also recently featured in a story on the MIME website about both his research and the LIB LAB video series.


HSJ Health Check: ‘Sane’ Labour’s plans for the NHS
Listen to the HSJ Health Check podcast — this week we examine the Labour party’s big NHS announcement, and the exit of Greater Manchester’s “devo health” chief.
Each week, HSJ Health Check gathers a cast from our team of expert journalists, to explain and debate the most important news issues right now in NHS policy and leadership.
You can listen above, follow us on Spotify, listen on Apple Podcasts, or other podcast platforms.
The latest episode features HSJ editor Alastair McLellan, deputy editor Dave West, correspondent Annabelle Collins, and bureau chief Lawrence Dunhill.
We examine what we learned from Labour’s big election campaign NHS funding announcement this week – and what it says about how the party would manage the service. Plus we talk about the decision of Greater Manchester’s “devo” health and care chief Jon Rouse to quit, and what this means for GM and the devo health agenda.
The podcast will be available every Friday morning here and across the major platforms including Spotify, Apple Podcasts, and others.
Got feedback or something you would like us to discuss? Contact<EMAIL_ADDRESS>or @davewwest.


We are based out of San Antonio, Texas and pride ourselves in offering quality products and services at a reasonable price. Our courteous customer support staff is knowledgeable and have been working in the safe deposit industry for over twenty years. Our service area extends throughout a large part of the state. Our response time meets or exceeds customer expectations.
Several years ago our founding team members saw a need in the banking industry for an Honest Safe Deposit Service Company dedicated to customer service and quality lockwork. Thus, AdvanceTec was born.
AdvanceTec believes that without dedicated customer service a company will not survive. Our customers make us a successful company. Myself and my staff strive to help you keep your safe deposit area in compliance and running smooth. When you contact us with a safe deposit issue we will advise you of the most efficient and cost effective way to solve the problem. Like all companies, we are in business to make money, however, not at the expense of our customers!
Although our office hours are Monday thru Friday, if you have an emergency at any time, you will always be able to reach an AdvanceTec representative (24/7) by calling our office number.
We sincerely appreciate your business!!
Charles Staats
Owner / General Manager
Bonded & Insured
State License # B16631
References available upon request


--- title: Blog layout: blog abstract: Personal blog keywords: blog,software,developer,programming,java,android ---


Congratulations on reaching the final project of the Robotics Nanodegree!
Previously, you worked on the Semantic Segmentation lab where you built a deep learning network that locates a particular human target within an image. For this project, you will utilize what you implemented and learned from that lab and extend it to train a deep learning model that will allow a simulated quadcopter to follow around the person that it detects!
Most of the code below is similar to the lab with some minor modifications. You can start with your existing solution, and modify and improve upon it to train the best possible model for this task.
You can click on any of the following to quickly jump to that part of this notebook:
We have provided you with a starting dataset for this project. Download instructions can be found in the README for this project's repo. Alternatively, you can collect additional data of your own to improve your model. Check out the "Collecting Data" section in the Project Lesson in the Classroom for more details!
import os
import glob
import sys
import tensorflow as tf
from scipy import misc
import numpy as np
from tensorflow.contrib.keras.python import keras
from tensorflow.contrib.keras.python.keras import layers, models
from tensorflow import image
from utils import scoring_utils
from utils.separable_conv2d import SeparableConv2DKeras, BilinearUpSampling2D
from utils import data_iterator
from utils import plotting_tools
from utils import model_tools
In the Classroom, we discussed the different layers that constitute a fully convolutional network (FCN). The following code will introduce you to the functions that you need to build your semantic segmentation model.
The Encoder for your FCN will essentially require separable convolution layers, due to their advantages as explained in the classroom. The 1x1 convolution layer in the FCN, however, is a regular convolution. Implementations for both are provided below for your use. Each includes batch normalization with the ReLU activation function applied to the layers.
def separable_conv2d_batchnorm(input_layer, filters, strides=1):
output_layer = SeparableConv2DKeras(filters=filters,kernel_size=3, strides=strides,
padding='same', activation='relu')(input_layer)
output_layer = layers.BatchNormalization()(output_layer)
return output_layer
def conv2d_batchnorm(input_layer, filters, kernel_size=3, strides=1):
output_layer = layers.Conv2D(filters=filters, kernel_size=kernel_size, strides=strides,
padding='same', activation='relu')(input_layer)
output_layer = layers.BatchNormalization()(output_layer)
return output_layer
The following helper function implements the bilinear upsampling layer. Upsampling by a factor of 2 is generally recommended, but you can try out different factors as well. Upsampling is used in the decoder block of the FCN.
def bilinear_upsample(input_layer):
output_layer = BilinearUpSampling2D((2,2))(input_layer)
return output_layer
In the following cells, you will build an FCN to train a model to detect and locate the hero target within an image. The steps are:
encoder_block
decoder_block
Create an encoder block that includes a separable convolution layer using the separable_conv2d_batchnorm()
function. The filters
parameter defines the size or depth of the output layer. For example, 32 or 64.
def encoder_block(input_layer, filters, strides):
# TODO Create a separable convolution layer using the separable_conv2d_batchnorm() function.
separated_layer = separable_conv2d_batchnorm(input_layer, filters, strides)
return separated_layer
The decoder block is comprised of three parts:
def decoder_block(small_ip_layer, large_ip_layer, filters):
# TODO Upsample the small input layer using the bilinear_upsample() function.
sample_layer = bilinear_upsample(small_ip_layer)
# TODO Concatenate the upsampled and large input layers using layers.concatenate
skip_layer = layers.concatenate([sample_layer, large_ip_layer])
# TODO Add some number of separable convolution layers
separated_layer = separable_conv2d_batchnorm(skip_layer, filters)
return separated_layer
Now that you have the encoder and decoder blocks ready, go ahead and build your FCN architecture!
There are three steps:
def fcn_model(inputs, num_classes):
conv_1 = conv2d_batchnorm(inputs, 64, kernel_size=4, strides=1)
# TODO Add Encoder Blocks.
# Remember that with each encoder layer, the depth of your model (the number of filters) increases.
encoder_layer_1 = encoder_block(conv_1, 32, 2)
encoder_layer_2 = encoder_block(encoder_layer_1, 64, 2)
encoder_layer_3 = encoder_block(encoder_layer_2, 128, 2)
# TODO Add 1x1 Convolution layer using conv2d_batchnorm().
one_one_layer = conv2d_batchnorm(encoder_layer_3, 256, kernel_size=1, strides=1)
# TODO: Add the same number of Decoder Blocks as the number of Encoder Blocks
decoder_layer_1 = decoder_block(one_one_layer, encoder_layer_2, 256)
decoder_layer_2 = decoder_block(decoder_layer_1, encoder_layer_1, 128)
decoder_layer_3 = decoder_block(decoder_layer_2, inputs, 64)
x = decoder_layer_3
# The function returns the output layer of your model. "x" is the final layer obtained from the last decoder_block()
return layers.Conv2D(num_classes, 1, activation='softmax', padding='same')(x)
The following cells will use the FCN you created and define an ouput layer based on the size of the processed image and the number of classes recognized. You will define the hyperparameters to compile and train your model.
Please Note: For this project, the helper code in data_iterator.py
will resize the copter images to 160x160x3 to speed up training.
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
image_hw = 160
image_shape = (image_hw, image_hw, 3)
inputs = layers.Input(image_shape)
num_classes = 3
# Call fcn_model()
output_layer = fcn_model(inputs, num_classes)
Define and tune your hyperparameters.
learning_rate = 0.005
batch_size = 20
num_epochs = 20
steps_per_epoch = 465
validation_steps = 75
workers = 4
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
# Define the Keras model and compile it for training
model = models.Model(inputs=inputs, outputs=output_layer)
model.compile(optimizer=keras.optimizers.Adam(learning_rate), loss='categorical_crossentropy')
# Data iterators for loading the training and validation data
train_iter = data_iterator.BatchIteratorSimple(batch_size=batch_size,
data_folder=os.path.join('..', 'data', 'train'),
image_shape=image_shape,
shift_aug=True)
val_iter = data_iterator.BatchIteratorSimple(batch_size=batch_size,
data_folder=os.path.join('..', 'data', 'validation'),
image_shape=image_shape)
logger_cb = plotting_tools.LoggerPlotter()
callbacks = [logger_cb]
model.fit_generator(train_iter,
steps_per_epoch = steps_per_epoch, # the number of batches per epoch,
epochs = num_epochs, # the number of epochs to train for,
validation_data = val_iter, # validation iterator
validation_steps = validation_steps, # the number of batches to validate on
callbacks=callbacks,
workers = workers)
# Save your trained model weights
weight_file_name = 'model_weights'
model_tools.save_network(model, weight_file_name)
Now that you have your model trained and saved, you can make predictions on your validation dataset. These predictions can be compared to the mask images, which are the ground truth labels, to evaluate how well your model is doing under different conditions.
There are three different predictions available from the helper code provided:
# If you need to load a model which you previously trained you can uncomment the codeline that calls the function below.
# weight_file_name = 'model_weights'
# restored_model = model_tools.load_network(weight_file_name)
The following cell will write predictions to files and return paths to the appropriate directories.
The run_num
parameter is used to define or group all the data for a particular model run. You can change it for different runs. For example, 'run_1', 'run_2' etc.
run_num = 'run_1'
val_with_targ, pred_with_targ = model_tools.write_predictions_grade_set(model,
run_num,'patrol_with_targ', 'sample_evaluation_data')
val_no_targ, pred_no_targ = model_tools.write_predictions_grade_set(model,
run_num,'patrol_non_targ', 'sample_evaluation_data')
val_following, pred_following = model_tools.write_predictions_grade_set(model,
run_num,'following_images', 'sample_evaluation_data')
Now lets look at your predictions, and compare them to the ground truth labels and original images. Run each of the following cells to visualize some sample images from the predictions in the validation set.
# images while following the target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','following_images', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
# images while at patrol without target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','patrol_non_targ', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
# images while at patrol with target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','patrol_with_targ', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
Evaluate your model! The following cells include several different scores to help you evaluate your model under the different conditions discussed during the Prediction step.
# Scores for while the quad is following behind the target.
true_pos1, false_pos1, false_neg1, iou1 = scoring_utils.score_run_iou(val_following, pred_following)
# Scores for images while the quad is on patrol and the target is not visable
true_pos2, false_pos2, false_neg2, iou2 = scoring_utils.score_run_iou(val_no_targ, pred_no_targ)
# This score measures how well the neural network can detect the target from far away
true_pos3, false_pos3, false_neg3, iou3 = scoring_utils.score_run_iou(val_with_targ, pred_with_targ)
# Sum all the true positives, etc from the three datasets to get a weight for the score
true_pos = true_pos1 + true_pos2 + true_pos3
false_pos = false_pos1 + false_pos2 + false_pos3
false_neg = false_neg1 + false_neg2 + false_neg3
weight = true_pos/(true_pos+false_neg+false_pos)
print(weight)
# The IoU for the dataset that never includes the hero is excluded from grading
final_IoU = (iou1 + iou3)/2
print(final_IoU)
# And the final grade score is
final_score = final_IoU * weight
print(final_score)


WIN is a weapons inventory tracker and lender application that gathers the most needed and useful functionalities for Wellesley Wushu (a performance martial arts organization) in a centralized location. WIN has a database that stores the conditions, locations, and other related information of every weapon in Wellesley Wushu’s possession, and includes features that enhances the ease of checking in and checking out weapons and navigating Wushu’s weapons inventory.
GitHub Repo


- The description clearly demonstrates relevance between activity observations and studio brief.
- The observation description for each subject explains the activity.
- The observation description for each subject explains the subject’s actions in the activity.
- The observation description for each subject explains both successes AND breakdowns.
- At least 8 needs were submitted, excluding redundant needs.
- At least 15 needs were submitted, excluding redundant needs
- Needs specifically address breakdowns found in observations.
- Sketches or photos show subjects in the setting of the observed activity.
- Photo captions clearly identify successes AND breakdowns found during the observation.
- Point of View describes a core problem without offering a solution.
- Student gave a needfinding talk in studio.
- Student’s needfinding talk was well-prepared, explaining their observations and the successes/breakdowns found.