Chapter 2 Introduction
2.1 Scope
This guide provides an brief overview of the package TreeExp which is developed to provides useful phylogenetic tools applicable to RNA-seq data.
Statistical methods implemented in the package was based on Ornstein-Uhlenbeck (OU) model of transcriptome evolution which claims that expression changes are constrained by stabilizing selection.
The package can be applied to comparative expression evolution analysis based on RNA-seq data, which includes but not liminited to:
- pairwise expression distance estimation
- relative rate test for transcriptome evolution
- the strength of expression conservation estimation
- ancestral transcriptome inference
This guide begins with brief description of the input data manipulation and storage and then gives key capabilities of package. Each main feature of the package consists of two parts: biological model and fully worked case studies for real data.
2.2 Installation
A convenient way to install package from github is through devtools package:
install.packages('devtools')
devtools::install_github("jingwyang/TreeExp")
After installation, TreeExp can be loaded in the usual way:
library('TreeExp')
2.3 Citation
The TreeExp package implements statistical methods from the following publications. If you use TreeExp in publised research, please cite the appropriate articles
Ruan,H. et al. (2016) TreeExp1.0: R package for analyzing expression
evolution based on rna-seq data. Journal of Experimental Zoology Part B:
Molecular and Developmental Evolution, 326, 394–402.
- This paper (Ruan, Su, and Gu 2016) released the 1.0 version of TreeExp that can perform comparative expression evolution analysis based on RNA-seq data, which include optimized input formatting, normalizeation, pairwise expression distance estimation, expression character tree inference, and prliminary expression phylogenetic network analysis.
Yang,J. et al. (2018) Ancestral transcriptome inference based on
rna-seq and chip-seq data. Methods.
- This paper(Yang et al. 2018) reported an updated verson of ancestral state inference originally developed by (Gu 2004). With special reference to the transcriptome evolution, the algorithm implemented is feasible, which can deal with RNA-seq and ChIP-seq data.
Gu, Xun, Hang Ruan, and Jingwen Yang. 2019. “Estimating the Strength of
Expression Conservation from High Throughput RNA-seq Data.” Bioinformatics, May.
- This paper (Gu, Ruan, and Yang 2019) developed a gamma distribution model to describe how the strength of expression conservation (denoted by W) varies among genes. Given the high throughput RNA-seq datasets from multiple species, we have formulated an empirical Bayesian procedure to estimate W for each gene.
2.4 How to Get Help?
Each function in TreeExp has online help page. If users have a question about a particular function, reading the function’s help page will be very useful. For example, a detailed description of the arguments and output of the RelaRate.test function can be read by typing
?RelaRate.test()
or
help(RelaRate.test)
at R console. Users can also read the tutorial file embeded in the package to have more detailed information about the pacakge.
It seems that vigenette file was not build by default when installing the pacakge from github through devtools package.Before we can check the vigenettes, we should build it first.
One way is to build it when we install the package:
devtools::install_github('jingwyang/TreeExp',build_opts = c("--no-resave-data", "--no-manual"))
Then we can list available vigenettes in an HTML browser through browseVignettes
function:
browseVignettes('TreeExp')
Besides, authors are appreciated to recieve reports of bugs in the functions or well-considered suggestions for improvements for the package.
2.5 RNA-seq Data Enbeded
RNA-seq datasets used in cased studies (brain, cerebellum, heart, liver, kidney and testis) were collected from the work of (Brawand et al. 2011), each of which include eigth species: Human (Homo sapiens), Chimpanzee (Pan troglodytes), Orangutan (Pongo abelii), Macaque (Macaca mulatta), Mouse (Mus musculus), Platypus (Ornithorhynchus anatinus), Opossum (Monodelphis domestica) and Chicken (Gallus gallus).
Single expression value for each gene per species was obtained by taking the median of TPM (Transcripts per Million) among biological replicates.
References
Brawand, David, Magali Soumillon, Anamaria Necsulea, Philippe Julien, Gábor Csárdi, Patrick Harrigan, Manuela Weier, et al. 2011. “The evolution of gene expression levels in mammalian organs.” Nature 478:343. https://doi.org/10.1038/nature10532.
Gu, Xun. 2004. “Statistical Framework for Phylogenomic Analysis of Gene Family Expression Profiles.” Genetics 167:531–42. https://doi.org/10.1534/genetics.167.1.531.
Gu, Xun, Hang Ruan, and Jingwen Yang. 2019. “Estimating the Strength of Expression Conservation from High Throughput RNA-seq Data.” Bioinformatics, May. https://doi.org/10.1093/bioinformatics/btz405.
Ruan, Hang, Zhixi Su, and Xun Gu. 2016. “TreeExp1.0: R Package for Analyzing Expression Evolution Based on Rna-Seq Data.” Journal of Experimental Zoology Part B: Molecular and Developmental Evolution 326 (7):394–402. https://doi.org/10.1002/jez.b.22707.
Yang, Jingwen, Hang Ruan, Yangyun Zou, Zhixi Su, and Xun Gu. 2018. “Ancestral Transcriptome Inference Based on Rna-Seq and Chip-Seq Data.” Methods. https://doi.org/10.1016/j.ymeth.2018.11.010.


This Python 3 notebook contains some solutions for the Project Euler challenge.
I (Lilian Besson) started in February 2015, and worked occasionally on Project Euler problems in March and April 2015. I should try to work on it again, hence this notebook…
- More information about notebooks (on the documentation of IPython) or on the FAQ on Jupyter’s website.
- More information about mybinder.org: on this example repository.
All the notebooks in this repository are published under the terms of the MIT license (file LICENSE.txt). © Lilian Besson, 2016-17.


The button component changes the default browser buttons to special buttons with additional configuration options, such as an icon, corners, and a shadow.
By default, all <button>
elements are displayed as Tizen Web UI buttons.
In addition, all elements with the class="ui-btn"
and data-role="button"
attribute are displayed as Tizen Web UI buttons.
To manually create a button component, use the component constructor from the tau
namespace:

The constructor requires an HTMLElement
parameter to create the component, and you can get it with the document.getElementById()
method. The constructor can also take a second parameter, which is an object defining the configuration options for the component.
To create a simple button from a link using the class
selector:
Link button
To create a simple button using the <button>
element:
<button>Button element</button>
The options for a component can be defined as data-...
attributes or passed as parameters to the constructor.
You can change an option for the component using the option
method.
| Option | Input type | Default value | Description |
|---|---|---|---|
| data-icon | string | null | null | Icon type. |
| data-iconpos | "left" | "right" | "top" | "bottom" | "notext" | null | "left" | Position of the icon. |
| data-inline | boolean | false | If the value is true , the button has the display = "inline" CSS property. |
| data-disabled | boolean | false | If the value is true , the button has disabled status. |
| data-style | "circle" | "nobg" | null | null | Style of the button. |
By default, all buttons in the body content are styled as block-level elements, so they fill the width of the screen. If you want a more compact button that is only as wide as the text and icons inside it, add the data-inline="true"
attribute to the button.
Cancel
If you have multiple buttons that must sit side-by-side on the same line, add the data-inline="true"
attribute to each button. This styles the buttons to be the width of their content and floats the buttons so that they sit on the same line.
Cancel Save
By default, all icons in buttons are placed to the left of the button text. This default can be overridden using the data-iconpos
attribute.
Delete
Possible values for the data-iconpos
attribute:
"left"
: Creates the button with a left-aligned icon."right"
: Creates the button with a right-aligned icon."top"
: Creates the button with the icon positioned above the text."bottom"
: creates the button with the icon positioned below the text.You can also create an icon-only button by setting the data-iconpos
attribute to "notext"
. The button plugin hides the text on-screen, but adds it as a title attribute to the link to provide context for screen readers and devices that support tooltips.
Delete
To call a method on the component, use one of the existing APIs:

| Method | Description |
|---|---|
Button disable() |
Disables the button. |
Button enable() |
Enables the button. |
Button refresh() |
Refreshes a button markup. |
string value(string? value) |
Gets or sets a value. |
disable
Disables the button.
Button disable()
The method sets the disabled attribute for the button and changes the look of the button to the disabled state.
Return value:
| Type | Description |
|---|---|
| Button | Returns this. |
Code example:

enable
Enables the button.
Button enable()
The method removes the disabled attribute from the button and changes the look of the button to the enabled state.
Return value:
| Type | Description |
|---|---|
| Button | Returns this. |
Code example:

refresh
Refreshes a button markup.
Button refresh()
The method rebuilds the DOM structure of the button component. It must be called after you manually change the HTML attributes of the component's DOM structure.
The method is called automatically after any component option is changed.
Return value:
| Type | Description |
|---|---|
| Button | Returns this. |
Code example:

value
Gets or sets a value.
string value(string? value)
Since: 2.3
The method returns the inner text of the button or sets the text of the button.
Parameters:
| Parameter | Type | Required/optional | Default value | Description |
|---|---|---|---|---|
| value | string | Optional | Text to set for the button. |
Return value:
| Type | Description |
|---|---|
| string | In the get mode, returns the inner text of the button. |
Code example:


Address:
{{seller.company}}
{{seller.address.street}}
{{seller.address.city}}
{{seller.address.country}}
{{seller.address.zip}}
Email: {{seller.email}}
Phone: {{seller.phone}}
Website: {{seller.website}}
Subscriber :
Phone: {{buyer.phone}}
| Nr. crt |
Description |
Unit |
Qty. |
Unit price. –{{invoice.currency.main}}– |
Total Amount. –{{invoice.currency.main}}– |
|---|


Please enter a user name or password that is authorized to access
this application. For this application, this means a user that
has been created in the file
realm and has been
assigned to the group of LearnJavaEEUser
.


StudentID
EnglishName
ArrivalDate
Status
please choose
unstart
learning
done
Inquire
ImportStudent
AddStudent
RoomInquiry


These instructions are very similar to the master set-up above, but they are duplicated for clarity.
You need to repeat these instructions for each node you want to join the cluster.
We will assume that the IP address of this node is ${NODE_IP}
and you have the IP address of the master in ${MASTER_IP}
that you created in the master instructions.
For each worker node, there are three steps:
flanneld
on the worker nodeAs before, the Flannel daemon is going to provide network connectivity.
Note: There is a bug in Docker 1.7.0 that prevents this from working correctly. Please install Docker 1.6.2 or wait for Docker 1.7.1.
As previously, we need a second instance of the Docker daemon running to bootstrap the flannel networking.
Run:
sudo sh -c 'docker -d -H unix:///var/run/docker-bootstrap.sock -p /var/run/docker-bootstrap.pid --iptables=false --ip-masq=false --bridge=none --graph=/var/lib/docker-bootstrap 2> /var/log/docker-bootstrap.log 1> /dev/null &'
Important Note: If you are running this on a long running system, rather than experimenting, you should run the bootstrap Docker instance under something like SysV init, upstart or systemd so that it is restarted across reboots and failures.
To re-configure Docker to use flannel, we need to take docker down, run flannel and then restart Docker.
Turning down Docker is system dependent, it may be:
sudo /etc/init.d/docker stop
or
sudo systemctl stop docker
or it may be something else.
Now run flanneld itself, this call is slightly different from the above, since we point it at the etcd instance on the master.
sudo docker -H unix:///var/run/docker-bootstrap.sock run -d --net=host --privileged -v /dev/net:/dev/net quay.io/coreos/flannel:0.5.0 /opt/bin/flanneld --etcd-endpoints=http://${MASTER_IP}:4001
The previous command should have printed a really long hash, copy this hash.
Now get the subnet settings from flannel:
sudo docker -H unix:///var/run/docker-bootstrap.sock exec <really-long-hash-from-above-here> cat /run/flannel/subnet.env
You now need to edit the docker configuration to activate new flags. Again, this is system specific.
This may be in /etc/default/docker
or /etc/systemd/service/docker.service
or it may be elsewhere.
Regardless, you need to add the following to the docker command line:
--bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}
Docker creates a bridge named docker0
by default. You need to remove this:
sudo /sbin/ifconfig docker0 down
sudo brctl delbr docker0
You may need to install the bridge-utils
package for the brctl
binary.
Again this is system dependent, it may be:
sudo /etc/init.d/docker start
it may be:
systemctl start docker
Again this is similar to the above, but the --api-servers
now points to the master we set up in the beginning.
sudo docker run \
--volume=/:/rootfs:ro \
--volume=/sys:/sys:ro \
--volume=/dev:/dev \
--volume=/var/lib/docker/:/var/lib/docker:rw \
--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
--volume=/var/run:/var/run:rw \
--net=host \
--privileged=true \
--pid=host \
-d \
gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube kubelet --api-servers=http://${MASTER_IP}:8080 --v=2 --address=<IP_ADDRESS> --enable-server --hostname-override=$(hostname -i) --cluster-dns=<IP_ADDRESS> --cluster-domain=cluster.local
The service proxy provides load-balancing between groups of containers defined by Kubernetes Services
sudo docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube proxy --master=http://${MASTER_IP}:8080 --v=2
Move on to testing your cluster or add another node](#).


Theory
Publications
- TMI: needle localization (deadline:
1/312/28) - Radiology: PCa detection (deadline: 3/31)
- Clinical Oncology: GBM Overall survival prediction (deadline: 4/30)
- Radiology: Lung Malignancy (deadline: challenge 4/7, submit: 5/31)
- TMI: RALP patient-specific models (deadline: 6/30)
- NeuroImage: Brain Tumor Segmentation, CNS Extraction (deadline: 8/31)
- Liver (deadline: 10/31)
- Domain Adaptation, few shots learning, MR parameters (deadline: 12/31)
Technical
Read & Exercises
- PRML, Bishop
- Introduction to Probability, Blitzstein
- Linear Algebra, Strang
- Information Theory, Mackay
- Deep Learning, Goodfellow
Pet projects
PhD
- KTH (deadline: 3/22)
- WIN (deadline: 5/31)
- Write thesis (deadline: 11/31)
- Defend (deadline: 12/31)
Learn more
- Deep leanring summer school videos
- Coursera Andrew Ng deep learning courses
- Coursera web development courses


NPC Editor
X
_
Select an Npc:
Name:
Sprite:
Logic Type:
Wander (Friendly)
Attack on Sight
Edit
Cancel


full stack software developer with experience in Java Enterprise technologies, Scala, Play Framework, AngularJS, Amazon Web Services, and mobile. Always working within agile software development life cycle frameworks (SCRUM), and focused on delivering tested solutions to customer driven requirements. Strong communication skills and a desire to engage with fellow team members to collaborate and learn more. Pursuing web application, mobile application, backend, or full stack development employment opportunities that have an opportunity to work on newer technology stacks and can expand my knowledge into new areas of software development.


public class Registry
extends totalcross.lang.Object
ListBox lb; private void log(totalcross.lang.String s) { lb.add(s); lb.selectLast(); } public void initUI() { ByteArrayStream bas = new ByteArrayStream(10); DataStreamLE ds = new DataStreamLE(bas); lb = new ListBox(); lb.enableHorizontalScroll(); add(lb, LEFT,TOP,FILL,FILL); try { log("adding int 0x12345678"); Registry.set(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","IntKey",0x12345678); log("added. now retrieving..."); int ires = Registry.getInt(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","IntKey"); log("int retrieved: "+Convert.unsigned2hex(ires,8)); log("adding string \"Bárbara\""); Registry.set(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","StringKey","B�rbara"); log("added. now retrieving..."); totalcross.lang.String sres = Registry.getString(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","StringKey"); log("string retrieved: "+sres); double dvalue = 1234.56789; log("adding blob double value: "+dvalue); ds.writeDouble(dvalue); Registry.set(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","BlobKey",bas.toByteArray()); log("added. now retrieving..."); byte[] bres = Registry.getBlob(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","BlobKey"); bas.setBuffer(bres); double dres = ds.readDouble(); log("double retrieved: "+dres); log("deleting string value"); Registry.delete(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","StringKey"); log("deleted. trying to retrieve..."); try { sres = Registry.getString(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","StringKey"); log("Failure! delete didn't work"); } catch (ElementNotFoundException enfe) { log("Success: the deleted key was not found (as expected)"); } log("deleting the whole key"); Registry.delete(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test"); log("deleted. trying to retrieve..."); try { sres = Registry.getString(Registry.HKEY_CURRENT_USER, "Software\\TotalCross\\appSettings\\Test","IntKey"); log("Failure! delete didn't work"); } catch (ElementNotFoundException enfe) { log("Success: the deleted key was not found (as expected)"); } log("Tests finished."); } catch (Exception e) { MessageBox.showException(e, true); } }And here's a full sample for Palm OS.
ListBox lb; private void log(totalcross.lang.String s) { lb.add(s); lb.selectLast(); } public void initUI() { ByteArrayStream bas = new ByteArrayStream(10); DataStreamLE ds = new DataStreamLE(bas); lb = new ListBox(); lb.enableHorizontalScroll(); add(lb, LEFT,TOP,FILL,FILL); try { // retrieves the ROM version from the Feature manager int ret = Registry.getInt(Registry.FEATURE, "psys", "1"); log("rom version: "+Convert.unsigned2hex(ret,8)); log("adding int 0x12345678"); Registry.set(Registry.UNSAVED_PREFERENCES, Settings.applicationId,"1",0x12345678); log("added. now retrieving..."); int ires = Registry.getInt(Registry.UNSAVED_PREFERENCES, Settings.applicationId,"1"); log("int retrieved: "+Convert.unsigned2hex(ires,8)); log("adding string \"Bárbara\""); Registry.set(Registry.UNSAVED_PREFERENCES, Settings.applicationId,"2","B�rbara"); log("added. now retrieving..."); totalcross.lang.String sres = Registry.getString(Registry.UNSAVED_PREFERENCES, Settings.applicationId,"2"); log("string retrieved: "+sres); double dvalue = 1234.56789; log("adding blob double value: "+dvalue); ds.writeDouble(dvalue); Registry.set(Registry.UNSAVED_PREFERENCES, Settings.applicationId,"3",bas.toByteArray()); log("added. now retrieving..."); byte[] bres = Registry.getBlob(Registry.UNSAVED_PREFERENCES, Settings.applicationId,"3"); bas.setBuffer(bres); double dres = ds.readDouble(); log("double retrieved: "+dres); log("deleting string value"); Registry.delete(Registry.UNSAVED_PREFERENCES, Settings.applicationId,"2"); log("deleted. trying to retrieve..."); try { sres = Registry.getString(Registry.UNSAVED_PREFERENCES, Settings.applicationId,"2"); log("Failure! delete didn't work"); } catch (ElementNotFoundException enfe) { log("Success: the deleted key was not found (as expected)"); } log("Tests finished."); } catch (Exception e) { MessageBox.showException(e, true); } }
| Modifier and Type | Field and Description |
|---|---|
static int |
FEATURE
PalmOS-specific value to be used in the hk parameter.
|
static int |
HKEY_CLASSES_ROOT
Windows-specific value to be used in the hk parameter.
|
static int |
HKEY_CURRENT_USER
Windows-specific value to be used in the hk parameter.
|
static int |
HKEY_LOCAL_MACHINE
Windows-specific value to be used in the hk parameter.
|
static int |
HKEY_USERS
Windows-specific value to be used in the hk parameter.
|
static int |
SAVED_PREFERENCES
PalmOS-specific value to be used in the hk parameter.
|
static int |
UNSAVED_PREFERENCES
PalmOS-specific value to be used in the hk parameter.
|
| Constructor and Description |
|---|
Registry() |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
delete(int hk,
String key)
Deletes a key with all its values.
|
static boolean |
delete(int hk,
String key,
String value)
Deletes a specific value.
|
static byte[] |
getBlob(int hk,
String key,
String value)
Returns a totalcross.lang.String at the given location.
|
static int |
getInt(int hk,
String key,
String value)
Returns an integer at the given location.
|
static String |
getString(int hk,
String key,
String value)
Returns a totalcross.lang.String at the given location.
|
static String[] |
list(int hk,
String key)
Lists all children keys of the given key.
|
static void |
set(int hk,
String key,
String value,
byte[] data)
Sets a byte array (blob) value at the given location.
|
static void |
set(int hk,
String key,
String value,
int data)
Sets an integer value at the given location.
|
static void |
set(int hk,
String key,
String value,
String data)
Sets a totalcross.lang.String value at the given location.
|
public static final int HKEY_CLASSES_ROOT
public static final int HKEY_CURRENT_USER
public static final int HKEY_LOCAL_MACHINE
public static final int HKEY_USERS
public static final int FEATURE
public static final int SAVED_PREFERENCES
public static final int UNSAVED_PREFERENCES
public static int getInt(int hk, String key, String value) throws ElementNotFoundException, totalcross.lang.Exception
hk
- In Windows, can be HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE or HKEY_USERS.
In Palm OS, can be FEATURE, SAVED_PREFERENCES or UNSAVED_PREFERENCES.key
- In Windows, its the full path to the key (E.G.: "Software\\TotalCross\\appSettings\\Test".
In Palm OS, its the application id (E.G.: Settings.applicationId).value
- In Windows, is the value to be retrieved (E.G.: "IntData").
In Palm OS, is an integer representing the number of the preference (from 0 to 32767).ElementNotFoundException
- if the hk, key or value was not found.totalcross.lang.Exception
- if there was an error when retrieving the data.public static String getString(int hk, String key, String value) throws ElementNotFoundException, totalcross.lang.Exception
hk
- In Windows, can be HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE or HKEY_USERS.
In Palm OS, can be FEATURE, SAVED_PREFERENCES or UNSAVED_PREFERENCES.key
- In Windows, its the full path to the key (E.G.: "Software\\TotalCross\\appSettings\\Test".
In Palm OS, its the application id (E.G.: Settings.applicationId).value
- In Windows, is the value to be retrieved (E.G.: "IntData").
In Palm OS, is an integer representing the number of the preference (from 0 to 32767).ElementNotFoundException
- if the hk, key or value was not found.totalcross.lang.Exception
- if there was an error when retrieving the data.public static byte[] getBlob(int hk, String key, String value) throws ElementNotFoundException, totalcross.lang.Exception
hk
- In Windows, can be HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE or HKEY_USERS.
In Palm OS, can be FEATURE, SAVED_PREFERENCES or UNSAVED_PREFERENCES.key
- In Windows, its the full path to the key (E.G.: "Software\\TotalCross\\appSettings\\Test".
In Palm OS, its the application id (E.G.: Settings.applicationId).value
- In Windows, is the value to be retrieved (E.G.: "IntData").
In Palm OS, is an integer representing the number of the preference (from 0 to 32767).ElementNotFoundException
- if the hk, key or value was not found.totalcross.lang.Exception
- if there was an error when retrieving the data.public static void set(int hk, String key, String value, int data) throws totalcross.lang.Exception
hk
- In Windows, can be HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE or HKEY_USERS.
In Palm OS, can be FEATURE, SAVED_PREFERENCES or UNSAVED_PREFERENCES.key
- In Windows, its the full path to the key (E.G.: "Software\\TotalCross\\appSettings\\Test".
In Palm OS, its the application id (E.G.: Settings.applicationId).value
- In Windows, is the value to be retrieved (E.G.: "IntData").
In Palm OS, is an integer representing the number of the preference (from 0 to 32767).data
- The data to be written.totalcross.lang.Exception
- if there was an error when setting the data.public static void set(int hk, String key, String value, String data) throws totalcross.lang.Exception
hk
- In Windows, can be HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE or HKEY_USERS.
In Palm OS, can be FEATURE, SAVED_PREFERENCES or UNSAVED_PREFERENCES.key
- In Windows, its the full path to the key (E.G.: "Software\\TotalCross\\appSettings\\Test".
In Palm OS, its the application id (E.G.: Settings.applicationId).value
- In Windows, is the value to be retrieved (E.G.: "IntData").
In Palm OS, is an integer representing the number of the preference (from 0 to 32767).data
- The data to be written. In Palm OS, its limited to 64KB.totalcross.lang.Exception
- if there was an error when setting the data.public static void set(int hk, String key, String value, byte[] data) throws totalcross.lang.Exception
hk
- In Windows, can be HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE or HKEY_USERS.
In Palm OS, can be FEATURE, SAVED_PREFERENCES or UNSAVED_PREFERENCES.key
- In Windows, its the full path to the key (E.G.: "Software\\TotalCross\\appSettings\\Test".
In Palm OS, its the application id (E.G.: Settings.applicationId).value
- In Windows, is the value to be retrieved (E.G.: "IntData").
In Palm OS, is an integer representing the number of the preference (from 0 to 32767).data
- The data to be written. In Palm OS, its limited to 64KB.totalcross.lang.Exception
- if there was an error when setting the data.public static boolean delete(int hk, String key)
public static String[] list(int hk, String key)
hk
- In Windows, can be HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE or HKEY_USERS.key
- In Windows, its the full path to the key (E.G.: "Software\\TotalCross\\appSettings\\Test".


--- layout: default ---
My name is So Young Park and I am a fifth year graduate student in the Department of Statistics at North Carolina State University. I am currently working on my thesis that focuses on developing statistical methods for longitudinal functional data, under supervision of my advisor, Dr. Ana-Maria Staicu. In addition I am a member of health birth, growth and development knowlege integration (HBGDki) group at Bill & Melinda Gates Foundataion and am closely working with Dr. Luo Xiao on a project related to child growth.
My research interests include functional data analysis, longitudinal data analysis, nonparametric and semiparametric regression, visualization, quantile regression, and biomedical applications (child growth, neuroimaging, physical activity, etc.).


What's your take on the DBC / EDA experience?
This is a very special opportunity for me. It seemed that the river of my life was flowing along at a very sedate pace, when suddenly, there was a bend in the river, and around that corner were some very unexpected rapids. I had a choice to either paddle to the side and stay in the shallows or start paddling and face the challenge. I have chosen to head out to deeper water (turning down a safe and boring job) and start paddling furiously towards the EDA rapids and hopefully a new adventure beyond.


@(request: Request[AnyContent])
POST body should be a SPARQL query. No titles / formatting is required - just the SPARQL. Supported SPARQL Query Types: SELECT, CONSTRUCT Available query parameters: verbose, intermediate-limit, results-limit verbose - displays information about the query planning and execution runtimes intermediate-limit - limits each iteration of triple-matching (expected value is a positive Integer) results-limit - limits the amount of returning results (expected value is a positive Integer) Examples: (assuming example data from _sp exists) curl -X POST<EMAIL_ADDRESS>--data-binary ' SELECT DISTINCT ?name ?active WHERE { ?name <http://www.tr-lbd.com/bold#active> ?active . } ORDER BY DESC(?active) ' and the results are: ------------------------------------------------------------- | name | active | ============================================================= | <http://example.org/Individuals/BruceWayne> | "true" | | <http://example.org/Individuals/DonaldDuck> | "true" | | <http://example.org/Individuals/HarryMiller> | "true" | | <http://example.org/Individuals/JohnSmith> | "true" | | <http://example.org/Individuals/MartinOdersky> | "true" | | <http://example.org/Individuals/NatalieMiller> | "true" | | <http://example.org/Individuals/PeterParker> | "true" | | <http://example.org/Individuals/RonaldKhun> | "true" | | <http://example.org/Individuals/SaraSmith> | "true" | | <http://example.org/Individuals/DaisyDuck> | "false" | | <http://example.org/Individuals/RebbecaSmith> | "false" | ------------------------------------------------------------- curl "http://@request.host/_sparql?verbose" --data-binary ' PREFIX rel: <http://purl.org/vocab/relationship/> CONSTRUCT { ?uncle rel:demoUncleOf ?nephew . } WHERE { ?uncle rel:parentOf ?x . ?x rel:siblingOf ?nephew . }' and the results are: [Plan 25] 00:00:00.027 Planning started. [Plan 25] 00:00:00.029 Optimizing 2 statements... [Plan 25] 00:00:01.066 Planning completed. [Exec 25] 00:00:01.066 Executing started. [Exec 25] 00:00:01.332 Executing completed. <http://example.org/Individuals/JohnSmith> <http://purl.org/vocab/relationship/demoUncleOf> <http://example.org/Individuals/RebbecaSmith> .


03 February, 2014
Note: Silk has been discontinued as of August 2016 and this project is no longer available
Project appeared on multiple news outlets, like The International Business Times, Schneier on Security, Netzpolitik, and Disinformation.
On the 15th of September 2014 WikiLeaks released its last batch of leaked Spy Files – which it had started releasing in 2011. I cleaned and structured the data to build an interactive database combining the four Spy Files releases. Currently, there are 559 leaked company documents, and 15 location tracking reports from WikiLeaks Counter Intelligence Unit (WLCIU). The 559 files disclose to the public internal documents from more than 100 companies specialized in intelligence and (mass) surveillance technologies. These technologies are sold both to Western governments and to dictators, and have been used by the Syrian government. The 15 documents from WLCIU reveal the timestamps and locations of 20 members of these companies, whose whereabouts WikiLeaks has decided to track in order to show where the main surveillance contractors are sending its people.
But what does the Spy Files database actually contain? Which are the most recurring intelligence companies and what systems do they target? How to download exactly the leaked document your research calls for? To answer these questions, I’ve decided to import WikiLeaks’s DB into Silk, to combine it with semantic technologies, a powerful query engine and a user-friendly interactive visualization interface.


Room Options - roomAutoCreateEnable - Enables the creation of rooms from the API. Occurs when client joins a nonexistent room. - Defaults to: true - roomDefaultEnable - Enables connections joining a default room if it is not initially specified. If false, than a connection initially may be in no room. - Defaults to: true - roomDefaultFieldObj - Default fields which are set when a room is created. In form of {"fieldName":{fieldValue:<JsonObj>, fieldOption:{isShared:<boolean>}}[, ...]} - Defaults to: null - roomDefaultName - The default room a connection joins if it is not initially specified. - Defaults to: "default"
Joining a room is handled using the joinRoom function. This can be run before or after easyrtc.connect()
or easyrtc.easyApp()
. It may be called multiple times to be in multiple rooms simultaneously. It may be called before or after connecting to the server.
Note: the successCB and failureDB will only be called if you are already connected to the server.
Format
easyrtc.joinRoom(roomName, roomParameters, successCB, failureCB)
Parameters
- roomName - String. Unique room name
- roomParameters - Can be null. Parameters set here are sent to the server and seen in the roomJoin
event.
- successCB - Success callback which expects a function(roomName). May be null. Is only called if client is already connected to the server.
- failureCB - Failure callback which expects a function(errorCode, errorText, roomName). May be null. Is only called if client is already connected to the server.
Leaving a room is handled using the leaveRoom function, or through disconnecting.
Format
easyrtc.leaveRoom(roomName, successCB, failureCB)
Parameters - roomName - String. Unique room name - successCB - Success callback which expects a function(roomName). May be null. Is only called if client is already connected to the server. - failureCB - Failure callback which expects a function(errorCode, errorText, roomName). May be null. Is only called if client is already connected to the server.
When a client has requested to create a room, the "roomCreate" event is fired. By setting a new listener for the "roomCreate" event, the default behavior can be overruled.
Note: The roomCreate event will be fired when a client requests to join a room which doesn't exist and the "roomAutoCreateEnable" option is set to true. Upon successful callback.
Controlling who can join an existing room, and what occurs when joining is controlled by a listener for the "roomJoin" event. By setting a new listener for the "roomJoin" event, the default behavior can be overruled.
When a client has requested to leave a room, the "roomLeave" event is fired. By setting a new listener for the "roomLeave" event, the default behavior can be overruled.
Please feel free to post on our discussion forum:


hmac(3)
HMAC, HMAC_CTX_init, HMAC_Init, HMAC_Init_ex, HMAC_Update, HMAC_Final,
HMAC_CTX_cleanup, HMAC_cleanup - HMAC message authentication code
#include <openssl/hmac.h>
unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
int key_len, const unsigned char *d, int n,
unsigned char *md, unsigned int *md_len);
void HMAC_CTX_init(HMAC_CTX *ctx);
int HMAC_Init(HMAC_CTX *ctx, const void *key, int key_len,
const EVP_MD *md);
int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int key_len,
const EVP_MD *md, ENGINE *impl);
int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len);
int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len);
void HMAC_CTX_cleanup(HMAC_CTX *ctx);
void HMAC_cleanup(HMAC_CTX *ctx);
HMAC is a MAC (message authentication code), i.e. a keyed hash function
used for message authentication, which is based on a hash function.
HMAC() computes the message authentication code of the n bytes at
d using the hash function evp_md and the key key which is
key_len bytes long.
It places the result in md (which must have space for the output of the hash function, which is no
more than EVP_MAX_MD_SIZE bytes). If md is NULL, the digest is placed in a static array. The size of the output is
placed in md_len, unless it is NULL.
evp_md can be EVP_sha1(), EVP_ripemd160() etc.
HMAC_CTX_init() initialises a HMAC_CTX before first use. It must be called.
HMAC_CTX_cleanup() erases the key and other data from the HMAC_CTX
and releases any associated resources. It must be called when an
HMAC_CTX is no longer required.
HMAC_cleanup() is an alias for HMAC_CTX_cleanup()
included for back compatibility with 0.9.6b, it is deprecated.
The following functions may be used if the message is not completely stored
in memory:
HMAC_Init() initializes a HMAC_CTX structure to use the hash function evp_md and the key key which is key_len bytes long. It is deprecated and only included for backward compatibility
with OpenSSL 0.9.6b.
HMAC_Init_ex() initializes or reuses a HMAC_CTX structure to use the function evp_md and key key. Either can be NULL, in which case the existing one will be reused.
HMAC_CTX_init() must have been called before the first use of
an HMAC_CTX in this function. N.B. HMAC_Init() had this undocumented behaviour in
previous versions of OpenSSL - failure to switch to HMAC_Init_ex() in
programs that expect it will cause them to stop working.
HMAC_Update() can be called repeatedly with chunks of the
message to be authenticated (len bytes at data).
HMAC_Final() places the message authentication code in md, which must have space for the hash function output.
HMAC() returns a pointer to the message authentication code or
NULL if an error occurred.
HMAC_Init_ex(), HMAC_Update() and
HMAC_Final() return 1 for success or 0 if an error occurred.
HMAC_CTX_init() and HMAC_CTX_cleanup() do not
return values.
RFC 2104
sha(3), evp(3)
HMAC(), HMAC_Init(), HMAC_Update(),
HMAC_Final() and HMAC_cleanup() are available
since SSLeay 0.9.0.
HMAC_CTX_init(), HMAC_Init_ex() and
HMAC_CTX_cleanup() are available since OpenSSL 0.9.7.
HMAC_Init_ex(), HMAC_Update() and
HMAC_Final() did not return values in versions of OpenSSL
before 1.0.0.
|


Ocean [am09], ocean, in The Outer Sea
Last updated Turn #122
Ocean [am09], ocean, in The Outer Sea
------------------------------------------------------------------------
20: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
20: 13% damaged, arrived from Ocean [am08], owner:
20: Phantasm [n4b], Imperial Empire, duke, with two workers,
20: eight sailors
21: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
21: 13% damaged, departed for Ocean [al09].
30: It is no longer windy.
Routes leaving Ocean:
North, to Ocean [al09], 6 days
East, to Ocean [am10], 6 days
South, to Ocean [an09], 6 days
West, to Ocean [am08], 6 days
The province is blanketed in fog.
No one can be seen through the fog.


Button demo
Overview
A simple button demo showcasing the use of GPIO input with interrupts. If the button is pressed, it will set a value at the location 0x2000F000 in memory. With openocd or any other debugger you can peek at this location.
Requirements
The demo assumes that a push button is connected to one of GPIO lines. The sample code is configured to work on boards with user defined buttons and that have defined the SW0_* variables.
To use this sample, you will require a board that defines the user switch in its
header file. The board.h
must define the following variables:
SW0_GPIO_NAME (or DT_ALIAS_SW0_GPIOS_CONTROLLER)
DT_ALIAS_SW0_GPIOS_PIN
Alternatively, this could also be done by defining ‘sw0’ alias in the board devicetree description file.
Building and Running
This sample can be built for multiple boards, in this example we will build it for the pinetime
After startup, the program looks up a predefined GPIO device, and configures the pin in input mode, enabling interrupt generation on falling edge. During each iteration of the main loop, the state of GPIO line is monitored and printed to the serial console. When the input button gets pressed, the interrupt handler will print an information about this event along with its timestamp.


RTÉ journalists call on management to slash "indefensible" salaries
by James CoxMembers of the National Union of Journalists (NUJ) working in RTÉ have called on the state broadcaster to cut the salaries of its top presenters and managers immediately.
It's part of a resolution which was backed at an on-campus NUJ meeting held on Thursday.
Journalists in the organisation said current salary levels were "indefensible".
The resolution said "The RTÉ sub-branch notes the gravity of the current financial crisis that has enveloped the organisation.
"It notes that RTÉ has referred to the crisis as an 'existential' one, and it accepts this description.
"In light of the existential nature of this crisis we believe that it is now more than ever indefensible that RTÉ continues to pay exorbitant salaries of up to close to half a million euro to a small number of people in this organisation.
"We understand the public anger at this and believe that that anger is justified."
It also cited a new law in the Netherlands which prevents anyone working in the public or semi-public sector from earning more than €187,000.
This is done by comparing all top salaries to that of the country's prime minister.
NUJ members added: "We believe that the RTÉ proposal to cut 15% off payments to its top contracted presenters does not go far enough.
"We are calling on RTÉ management to immediately move to reduce the fees of the top presenters so that no one in the organisation is earning more than the top civil service salary, that of Secretary-General.
"We believe this would be an important first step towards addressing the valid concerns felt by the public we serve."
Earlier on this month, RTÉ announced plans to cut some 200 jobs as a part of plans to reduce projected costs by €60 million over three years.
The RTÉ Guide will also be sold while the Limerick studio will be closed by 2020.


Please wait, loading user #{{id}}...
Name: {{ userData.name }}
Age: {{ userData.age }}
Users not loaded.
Click here to load the users


{% load django_import_data_tags %} {% if current == 'importee' and not importee.file_import_attempt_was_successful %}
Warning: May contain incomplete information! The File Importer this {{ importee|model_name }} is from is both unacknowledged and failed to import properly! You will need to fix this, then re-import the file.


Copyright © 2010 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
In this document we present a method for writing, marking-up, and analyzing conformance requirements in technical specifications.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This is the first publication of this document as a Working Group Note by the Mobile Web Initiative Test Suites Working Group. This publication results from the collaboration between the Mobile Web Initiative Test Suites Working Group and the Web Applications Working Group on the development of test suites for the Widgets family of specifications.This document was published by the Mobile Web Test Suites Working Group as a Working Group Note. If you wish to make comments regarding this document, please send them to<EMAIL_ADDRESS>(subscribe, archives). All feedback is welcome.
Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
In this document we present a method for writing, marking-up, and analyzing conformance requirements in technical specifications.
We argue that the method yields specifications whose conformance requirements are testable: that is, upon applying the method, parts of what is written in the specification can be converted into a test suite without requiring, for instance, the use of a formal language.
The method was derived from a collaboration between the W3C's Mobile Web Initiative: Test Suites Working Group and the Web Applications Working Group. This collaboration aimed to improve the written quality and testability of various specifications. The applications, limitations, as well as possible directions for future work that could refine this method are described in this document.
When working on a specification, there are common mistakes an editor can make when writing conformance requirements that makes them difficult, if not impossible, to test. For technical specifications, the testability of a conformance requirement is imperative: conformance requirements eventually become the test cases that implementations rely on to claim conformance to a specification. If no implementation can claim conformance, or if aspects of the specification are not testable, then the probability of a specification becoming a ratified standard, and, more importantly, achieving interoperability among implementations, is significantly reduced.
The most common mistakes that editors make when writing conformance requirements include, but are not limited to:
Creating conformance requirements for products that don’t have behavior, e.g. “an XML file must be well-formed.” — this cannot be tested since it doesn’t say what the outcome is on that condition.
Using a passive voice for describing the behavior, e.g. “an invalid XML file must be ignored” — this hides what product is supposed to follow the prescribed behavior.
Using under-defined behaviors, e.g. “a user agent must reject malformed XML” without defining the algorithmic process that is to “reject” something — this makes it impossible to define the outcome of the testable assertion.
Because conformance requirements are intertwined as part of the text of a specification (as sentences, paragraphs, dot points, etc.), it can be difficult to detect the various common mistakes. For this reason, the first step in our method is to identify and mark-up (using HTML) various structural components that constitute a conformance requirement. Understanding these structural components is important, because it is that structure that determines the testability of a conformance requirement. We discuss the structure of conformance requirements, as well as how to mark them up, in more detail below.
Once conformance requirements have been marked up into their component parts, then they can be extracted and analyzed outside the context of the specification. Seeing a conformance requirement out of context can often expose inconsistencies and redundancies that may otherwise been difficult for the editor, or an independent reviewer, to identify. The ability to extract conformance requirements from a specification also allows them to be used in other contexts, such as in the creation of a test suite.
The general process that constitutes the method is as follows:
Markup conformance requirements that need to be tested and give them a stable identifier that will persist across drafts of the specification.
Extract the conformance requirements and examine them independently of the specification. Fix common mistakes and remove any duplicates.
Establish a quality assurance process for both creating and verifying the test cases. In our case, this included providing a set of tools, templates, and methods explaining how to build useful test cases for the said specification (see [WIDGETS-PC-TESTS]). During the creation of the test suite for the [WIDGETS] specification, we also imposed a rule within those working on the test suite that a test case had to be independently verified before being committed into the final test suite. Although defective test cases still made it into the test suite, as more implementers worked their way through the test suite, the more bugs were found and fixed (both in the specification and in the test suite).
Create test cases and corresponding testable assertions. The act of converting prose into a computational form (a test case) can also help expose redundancies, ambiguities, and common mistakes. Bind the testable assertions to a conformance requirement via a stable identifier.
Build at least one test case for each conformance requirement. On average, our test suite contains 3 test cases per conformance requirement, with some assertions having 10 or more test cases.
Compare the results of running these test cases on existing implementations to find bugs in the specification or in the test suite. For example, if one finds that all implementations are failing a test case, it might mean that the test case is defective.
As the Web Applications Working Group learned, it can be problematic to enter the W3C’s Candidate Recommendation phase without having a complete and thoroughly verified test suite: because this method was mostly applied during Candidate Recommendation, so many redundancies and issues where found that the specification had to drop back to Working Draft. This demonstrated that the method was effective, but needs to be applied as early as possible in the specification writing process.
The standards organization, which in this case is the W3C, plays a significant role in relation to the method: the standards organization provides access to a community of experts, as well as the tools that facilitate the interaction and communication between actors and the deliverables that are the outputs of a working group.
Deliverables include the specification, testable assertions, and test cases that constitute the test suite. Actors include editors, test creators, QA engineers, implementers, and specification reviewers. Actors, which in many cases will be the same person in multiple roles, literally provide the intelligence that improves the quality of deliverables.
 Some of the tools provided by the W3C include CVS, IRC, a web server, phone bridge, the technical report repository, publication rules checker, issue tracking software, and a mailing list. The standards organization also provides the legal framework that allows multiple competing entities to share intellectual property and collaborate with each other.
The method simply taps into the community-driven process that is standardization, which, through its process, is structured to produce high-quality peer-reviewed work. The following diagram visualizes how actors communicate with each other to improve the quality of various deliverables through tools provided by the standards organization. As can be seen, interaction between actors, tools, and deliverables form feedback loops that serve to improve the work being produced by the working group.
An economic case can be made for identifying and removing
redundant conformance requirements from a specification: consider
that an average size specification can have around 50 conformance
requirements, and each conformance requirement will require one or
more test cases. Each test case will require a testable assertion,
which may be either written in prose (e.g., “to pass,
a
must equal b
.”) or expressed
computationally (e.g., if(a===b)
). In terms of
resource allocation, someone needs to either manually create or
computationally generate the test cases. Someone then needs to
verify if each test case actually tests the conformance
requirement, and, where it doesn’t, fixes need to be made to either
the test case or to the specification.
Eventually, QA engineers will need to run the test cases and conformance violations will need to be reported by filling bug reports. Even in a pure computational setting, having redundant tests in a test suite still results in wasted CPU cycles every time a build of software is run against the test suite. If redundant tests build up, it can have a significant impact on quality assurance processes where it can take hours - or sometimes days - to run builds of a product through various test suites.
Simply put, a test suite for a specification should only test what is necessary for a product to conform - and no more.
It should be noted that “acid tests” (e.g., the Acid3 test) certainly have an important role in creating interoperability by exposing erroneous edge-case behavior and the limitations of implementations. But such stress tests are typically beyond the scope of a test suite for a specification.
To be testable, a conformance requirement must contains certain the necessary information to create a testable assertions, as described in The Structure of a Test Assertion in the Test Assertions Guidelines [OASIS-TAG].
Consider the following conformance requirement from the [WIDGETS] specification:
If the
src
attribute of thecontent
element is absent or an empty string, then the user agent must ignore this element.
The structure of the conformance requirement can be decomposed into the following structural components:
A product that is supposed to follow the requirement — in this case, the “user agent”. (see also the definition of “classes of product” in [QAFRAME-SPEC])
The strictness of the applicability of the requirement to a product — in this case, “the user agent must” do something. W3C specifications use the [RFC2119] keywords (must, should, may, etc.) to indicate the level of requirement that is imposed on a product.
An explanation of the prerequisites that need to be in place in order for the requirement to apply — in this case, “if the src attribute of the content element is absent or an empty string”.
a clear explanation of what the product is supposed to do — in this case, “ignore this element”.
Keywords that are relevant to understanding how to apply the desired behavior. For instance, what it actually means to “ignore” (definitively and algorithmically) needs to be specified somewhere in the specification.
Terms take one of the three forms in a specification: an algorithm, a definition, or a statement of fact.
An example of an algorithm:
In the case the user agent is asked to ignore an [XML] element or node, a user agent:
Stops processing the current element, ignoring all of the element‘s attributes and child nodes (if any), and proceed to the next element in the elements list.
Make a record that it has attempted to process an element of that type.
An example of a definition:
A user agent is an implementation of this specification that also supports XML…
An example of a statement of fact:
A user agent will need to keep a record of all element types it has attempted to process even if they were ignored (this is to determine if the user agent has attempted to process an element of a given type already).
Having an understanding of the structural components that need to be present in every conformance requirement, an editor can then use the following conventions to mark-up their specification.
Using mark-up makes it possible to exploit the structure of conformance requirements for various purposes, particularly for analysing that conformance requirements don’t exhibit the common mistakes. Here, we describe how we made use of HTML to markup conformance requirements in the [WIDGETS] specifciation. However, this should be considered purely as an example that would need to be adapted to fit each specification particularities.
Consider the following conformance requirement from the [WIDGETS] specification, as we will make use of it in this section:
If a user agent encounters a file matching a file name given in the file name column of the default start files table in an arbitrary folder, then user agent must treat that file as an arbitrary file.
From the previous section, we know that the relevant structural components are:
the user agent.
must.
If a user agent encounters a file matching a file name given in the file name column of the default start files table in an arbitrary folder
treat that file as an arbitrary file.
file,
folder,
file name,
arbitrary,
default start files table.
Having identified all the component parts, our method for marking up the conformance requirement is as follows (in no particular order):
Isolate each conformance requirement within an appropriate HTML
element, such as a p
element — this isolates all the
useful information into a single logical container, making it easy
to extract and examine out of context. We discuss methods for
extracting conformance requirements in the next section of this
document.
Assigning a unique identifier to each conformance requirement
and mark it as testable— In our case, each conformance requirement
is uniquely identified through the id
attribute on the
p
element; the unique identifier starts by convention
with ta-
, which denotes it as conformance requirement,
followed by a randomly generated string (e.g.,

). The uniqueness of the id can be verified
by running the HTML document through a validator.
This same id
attribute is also useful as it allows
linking back to the specification exactly to the point where the
assertion is made. This proved useful during testing, where the
tester can get more context on the definitions and the spirit of
the assertion when the letter of it is not enough.
When creating the test suite, distinguishing conformance requirements from other parts of the specification allows test cases to be grouped by conformance requirement through exploiting this identifier. In addition, examining how many test cases are grouped around a conformance requirement is useful for assessing how much of the specification has been, or needs to be, tested and verified.
Note that in the case of the [WIDGETS] specification, the randomly generated strings were 10 characters long (e.g., ta-qxLSCRCHlN) which proved somewhat cumbersome for people to work with. Other specifications the Working Group is working on use much shorter identifiers (two letters).
Explicitly identify the product to which the conformance
requirement applies — this defines how the test cases are built in
the test suite, based on how the product is supposed to operate.
The conformance product to which the requirement applies is marked
up with a class attribute set to one of the predefined values — in
the case of the [WIDGETS] specification, the product was identified
using a span element with a class atttribute value of
product-ua
. For example, “A user agent…
”.
Identify the level of requirement for conformance — that is, use an element to explicitly mark-up [RFC2119] keywords (must, should, may, etc.). Doing so is useful for identifying aspects of the specification that must be included in the test suite, and aspects in the specification that might not be worth testing (e.g., conformance requirements that make use of the RFC2119 “optional” keyword).
The level of requirement is marked up by an emphasis element
(
) with a class
defined to
ct
; this mark-up convention also allows determining if
a given paragraph of the specification contains a requirement or
not. For example, must
.
Hyperlink to the appropriate terms. For example, “encounters a

file
matching”.
The following code shows what the conformance requirement presented at the start of this section would look like once the above dot points are applied:

If a user agent encounters a
file
matching a file name given in the file name column of the
default start files table
in an
arbitrary
folder
, then
user agent
must
treat that file as an
arbitrary
file.

After the [WIDGETS] specification was marked up using the conventions described above, the conformance requirements were extracted using an XSLT style sheet which served as the basis for a review of the testability of the specification.
Over time, the XSLT style sheet was discarded in favor of using a JavaScript system. The JavaScript-based system replicates what the XSLT style sheet was doing, but then mashes the conformance requirements with an XML document that describes all the tests cases in the test suite. This allows those working on the specification and on the test suite to not only see the conformance requirements, but also what test cases have been created.
Because we wrap all conformance requirements in p
elements, the actual process of extracting conformance requirements
is relatively simple. We use the JQuery JavaScript library, in conjunction
with a simple CSS selector, as the means to extract the conformance
requirements. The CSS selector finds all p
elements in
the document that have an id
attribute that starts
with the string ta-
. For example:
function processSpec(spec){
//CSS selector
var taSelector = 'p[id^="ta-"]';
//Extracted nodes
var requirements = $(spec).find(taSelector, false);
//Display the resuts...
requirements.each(function(){...}}
}
The working groups found that once conformance requirements have been extracted, the work of creating test cases for a test suite was significantly simplified.
A test case is a machine processable object that is used to test one or more conformance requirements. A testable assertion, on the other hand, is a prose description of a test case intended for human testers - i.e., for a given test case, testable assertion defines exactly what the user agent needs to do (behaviorally or conditionally) to pass the test case. It is important to note that testable assertions don’t appear in a specification - they only appear in a test suite to describe a test case.
To create a test, a test writer looks at a given conformance requirement, creates a test case that matches the pre-requisites set in the requirement, and documents the expected outcome described by the required behavior as a testable assertion (or vice versa).
To demonstrate how testable assertions are written, again consider the following conformance requirement from the Widgets Packaging and Configuration [WIDGETS] specification:
If the
src
attribute of thecontent
element is absent or an empty string, then the user agent must ignore this element.
After following the definitions to the terms given in the specification, the conformance requirement above can be turned into one or more testable assertions (which are used to derive test cases for the test suite).
An example of two testable assertion derived from the above conformance requirement:
Test that the user agent skips a content element with no src attribute and loads default start file. To pass, the user agent must use as start fileindex.htm
at the root of the widget.
Test that the user agent skips a content element that points to a non-existing file. To pass, the user agent must use as start fileindex.htm
.
And the corresponding test cases for the testable assertions take the following computable form (inteded for the user agent):
<widget xmlns="http://www.w3.org/ns/widgets">
<content src="" type="text/html"/>
</widget>
<widget xmlns="http://www.w3.org/ns/widgets">
<content src="doesnotexist.html"/>
</widget>
Each test case can be associated to a given testable assertion; later on, when running the test suite and finding test cases that fail, it allows identifying the assertion behind it that has failed, and thus evaluate which of the implementation, the test case, or the specification is wrong.
To maintain the association between test cases and test assertions, a simple XML file was created:
<testsuite for="http://www.w3.org/TR/widgets/"> <test id="b5" for="ta-a1" src="test-cases/ta-a1/000/b5.wgt"> Tests that a UA does not go searching in an arbitrary folder ("abc123") for default start files. To pass, the user agent must treat this widget as an invalid widget. </test> <test ...> ... </test> </testsuite>
The testsuite
element serves as a wrapper for the
test cases of the test suite. It also identifies which test suite
was tested through a URI; set in the for
attribute.
The test
element, on the other had, describes a
single test case by:
Providing a unique identifier for the test case; set in the
id
attribute.
Identifying the conformance requirement being tested; set in the
for
attribute.
Linking to the resource that represents the test case; set in
the src
attribute.
And finally, describing the expected outcome of the test; set as the textual content of the element.
This XML file allows generating the final round of packaging and information needed for the test suite:
its content is integrated in the test suite description document [WIDGETS-PC-TESTS] with JavaScript to attach test cases to the previously extracted test assertions.
it allows quick assessment of the coverage of the test suite by finding which conformance requirements don’t have matching test cases.
the list of test cases can be used to create simple test harnesses for widget runtime engines.
The same list is used to generate an implementation report [WIDGETS-PC-INTEROP] comparing the results of running the test cases for various run time engines.
The implementation reports also leverage the identifiers assigned to each test case to indicate if the implementation has passed or failed a test. In order to create the implementation reports, the Working Group created another simple XML format: each implementer is assigned an XML file, which in most cases they themselves maintain.
An example of the results format:
<results testsuite="http://dev.w3.org/2006/waf/widgets/test-suite/test-suite.xml"
id="Opera"
product="Opera widgets"
href="http://opera.com/browser/next">
<result for="b5" verdict="pass"/>
<result for="dn" verdict="fail">
Opera did not process the file because it did not
have a .wgt file extension.
</result>
</results>
The results
element serves as a wrapper that
describes what test suite was tested, and some basic details about
the implementation by:
Identifying the test suite by its URI, set in the
testsuite
attribute.
Identifying the product in a human legible form; set in the product attribute.
Providing a hyperlink to where independent parties can either get more information about a product, or actually download the product so they can, where possible, verify the results independently.
The result
element, on the other hand, describes
individual results gained from testing including:
identifying the test case by its id, set in the for
attribute.
verdict
attribute commonly to the value
pass
or fail
. In certain cases, however,
it was not possible for a tester to say if a test had passed or
failed, so new verdicts had to be created. We discuss these
below.Tallying the results allowed the working group to easily visualize the data in the test suite for each product:
At at glance, it is possible to see for an implementation the
number of tests cases passed, failed, and untested. Where the
testing was being conducted independently (i.e., not by the
implementer), it was also possible to visualize where it was not
possible to run a test because, for example, there was no way to
get at a result without having direct access to the source code of
the product. And where the test ran, but it was not possible to
determine if the test actually passed or failed, the verdict was
labeled as incomplete
.
Having the raw results data also allowed the working group to visualize at a glance how conformant each implementation is to the specification:
The above meter simply represents the number of tests passed by an implementation. However, the working groups found it particularly useful to be able to see all the meters and charts together:
While the method described in this document uses three separate steps (marking it up the specification, making the specification testable, and linking test assertions to test cases), these steps don’t have to be applied sequentially, and in practice work best as an iterative process.
Althought it has some limitations and shortcomings, this method has proved effective for the [WIDGETS] specification, and is now being applied to the other Widgets specifications developed by the Web Applications Working Group.
No normative references.


Your browser does not support iFrames
Navigation menu
Office of General Services
Real Estate
Downtown Albany Employee Parking
State Building Directory
Food Services in OGS Buildings
Leasing
State Lands
Tenant Information
Tenant Representatives
Deliveries to the Empire State Plaza
Design & Construction
Contract Opportunities
Construction Contractors
Consultant Professionals
Client Agencies
Emergency Construction
Forms
Minority and Women-Owned Businesses
Previously Approved Construction Vendors
Service-Disabled Veteran-Owned Businesses
Procurement
Contracts
Bid Opportunities
Bid Openings
Announcements
Do Business
Buyer Information
Green Purchasing
Preferred Sources
Vehicle Marketplace
State Procurement Council
Government Support
Emergency Preparedness & Response
Energy Planning
Federal Surplus
Fleet Management
Mail & Freight
Plaza Dockmaster
Printing & Copying
Risk & Insurance
State Surplus
USDA Food Distribution
Do Business
Construction Opportunities
Event Vendor Opportunities
Leasing Opportunities
Minority and Women-Owned Businesses
Procurement Opportunities
Service-Disabled Veteran-Owned Businesses
Visit
Empire State Plaza
Harriman State Office Campus
State Building Directory
Upcoming Events
Food Services in OGS Buildings


--- title: "LED PAR64-A-IP65, LED Par 64 Cans, 36W High Power LED Stage Lighting, IP65, DMX512, Professional Lighting, LED Stage Wash, LED Par 64 Light, LED Par 64 Pro, LED Par 64 White, LED Par 64 Fixture" description: "LED PAR64-A-IP65, LED Par 64 Cans, 36W High Power LED Stage Lighting, IP65, DMX512, Professional Lighting, LED Stage Wash, LED Par 64 Light, LED Par 64 Pro, LED Par 64 White, LED Par 64 Fixture" keywords: - LED Par 64 Cans - 36W High Power LED Stage Lighting - IP65 - DMX512 - Professional Lighting - LED Stage Wash - LED Par 64 Light - LED Par 64 Pro - LED Par 64 White - LED Par 64 Fixture ---
|
LED PAR64-A-IP65 |
|||||||
|
LED PAR64 Can with RGB Color mixing. 5 DMX channels and built-in programs available. Very smooth projection on walls with rich palates of color created by mixing the Red, Green and Blue LEDs. which can generate various colors changing effects, such as flashing, fading, steady ,seven color jumping synchronously etc. Standard DMX512 , Master and Slave Mode. Electronic Dimming: 0 - 100%, Includes hanging bracket. |
|||||||
|
MODEL: LED PAR64-1-36P-IP65
LED: 36pcs 1W High Power LED
Input Volt.: 100～240V AC |
|||||||


%= stylesheet_link_tag css_js_section!, media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag css_js_section!, 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
422
The change you wanted was rejected
Maybe you tried to change something you didn't have access to. If you are the application owner check the logs for more information.
You can go back to main page:
<%= link_to 'Home', home_index_path, class: "btn btn-primary m-t"%>


is coding literacy something that is motivated primarily by the socio-economic embedding of code or is it in general an “improvement” in human cognition?
we are humanizing thoughts and processes
evolution: from storage to memory (von neumann’s jump)
the more human languages you know, the more you know about writing literacy, so the more programming languages you know, the better/more ideal it is
clean coding? don’t think that everyone should go that route (messy writing is fine too)


The float
property specifies whether or not an element should float.
The clear
property is used to control the behavior of floating elements.
In its simplest use, the float
property can be used to wrap text around images.
The following example specifies that an image should float to the right in a text:
img {
float: right;
margin: 0 0 10px 10px;
}
The clear
property is used to control the behavior of floating elements.
Elements after a floating element will flow around it. To avoid this, use the clear
property.
The clear
property specifies on which sides of an element floating elements are not allowed to float:
div {
clear: left;
}
If an element is taller than the element containing it, and it is floated, it will overflow outside of its container.
Then we can add overflow: auto;
to the containing element to fix this problem:
.clearfix {
overflow: auto;
}
It is common to do entire web layouts using the float
property:
div {
border: 3px solid blue;
}
.clearfix {
overflow: auto;
}
nav {
float: left;
width: 200px;
border: 3px solid #73AD21;
}
section {
margin-left: 206px;
border: 3px solid red;
}


Second Test: Australia win toss, elect to bat, wicket falls in Adelaide
by The New DailySecond Test, day one, Adelaide OVal
First innings: Australia 1/70
Warner 45, Labuschagne 18, 22 overs, early tea break
Pakistan broke through early after Australia won the toss and elected to bat on the opening session of the day-night second Test against Pakistan in Adelaide.
The Australian openers, David Warner and Joe Burns endured two opening maiden overs before David Warner found a gap backward of point to score the first four runs.
But Burns fell soon after for just four, caught behind by Mohammad Rizwan off the bowling of Shaheen Shah Afridi – Australia 1-8.
Warner was joined by Marnus Labuschagne and the pair notched a quickfire 50 partnership to steady the innings.
Rain brought on an early tea break, with the covers brought out after 22 overs.
Rain had earlier delayed play by ten minutes, however wet weather is forecast for the majority of the weekend.
Unchanged from last week’s convincing win at the Gabba, the Aussies are aiming to clean sweep Pakistan in the two-Test series.
The tourists have made three changes following their first Test drubbing.
Seamer Mohammad Abbas was recalled after running through Australia in the UAE last year, while teenage quick Muhammad Musa will debut.
Sixteen-year-old sensation Naseem Shah was dropped following his debut as well as Imran Khan.
Haris Sohail was also omitted, allowing captain Azhar Ali to move to No.3 and Imam-ul-Huq to come into the team as an opener.
Azhar said at the toss he would have bowled first anyway, but Paine insisted it was best to bat in the day on what appears a drier-than-usual Adelaide wicket.
“The wicket looks really good, pink ball, we like to bat first,” he said.
“There might be a bit of rain around so will be interesting to see how the pink ball handles it.”
Australia have never lost a pink-ball Test, with Friday the sixth in their history and the fourth to be played at the Adelaide Oval.
Pakistan meanwhile have played three, having only lost narrowly to Australia in their only day-night clash in the country in 2016 at the Gabba.
The tourists are still searching for their first Test win on Australian soil since 1995, having lost 13 in a row.
With a big crowd expected for day one, the tourists earlier lamented that they have two cracks at the home side in this series.
This summer’s two-Test series is the first time the two teams haven’t met over at least three matches in Australia since 1978-79.
Two-Test series have become far more common in the UAE, where Pakistan has hosted Australia’s last two visits.
With harder pitches and extra bounce in Australia, Pakistan’s batters have little time to adjust from the slow and low wickets of the sub-continent, while bowlers are far too often enticed to bowl too short.
Pakistan captain Azhar Ali said touring sides had to learn how long it takes to build pressure on Australian wickets and he wants a longer series having gone 10 months without a red-ball fixture against any nation.
“Obviously we always love to play more Tests,” Azhar said. “As the Pakistan team, we don’t play too many Tests. That’s not good for any team.
“If we play more Tests, we’ll have a better chance to even adjust to different conditions.
“The last time we played three Tests here, and if you see our batsmen scored hundreds in all Tests.
This is one country where you can score big runs. And if you get, here early and get more Tests it will be better.”
Pakistan’s problems exist well beyond Australia. They have played more than two Tests just twice in the last seven series.
AUSTRALIA: Joe Burns, David Warner, Marnus Labuschagne, Steve Smith, Travis Head, Matthew Wade, Tim Paine (c), Pat Cummins, Mitchell Starc, Josh Hazlewood, Nathan Lyon.
PAKISTAN: Shan Masood, Imam-ul-Huq, Azhar Ali (c), Asad Shafiq, Iftikhar Ahmed, Babar Azam, Muhammad Rizwan, Yasir Shah, Shaheen Shah Afridi, Mohammad Abbas, Muhammad Musa.
-with AAP


Most readers will be aware how irksome it is to be trapped in a wind tunnel with an enormous bittern, especially when a newly-developed nerve gas is being pumped into the tunnel at the same time. For the few of you who are unfamiliar with this situation, further information can be found by reading chapter twelve of Unspeakable Desolation Pouring Down From The Stars, our hugely exciting weekly serial, which appears today.
If you are unsure whether or not you have ever been trapped in a wind tunnel with an enormous bittern, this picture may help jog your memory.


So you're thinking of leaving. Okay, that makes us sad, but JS Bin won't stop you - we're all sure you're destined to do great things, with JS Bin or not.
The Cancellation Zone
This will delete your profile, your settings, your history of bins and all the bins you've created (all {{user.bincount}} of them). It will leave a permanent hole in the interwebs.
Proceed with caution, as this process cannot, under any circumstances, be reversed.