Ubuntu Setup
Get Started ›Installing MXNet on Ubuntu
The following installation instructions are for installing MXNet on computers running Ubuntu 16.04. Support for later versions of Ubuntu is not yet available.
Contents
CUDA Dependencies
If you plan to build with GPU, you need to set up the environment for CUDA and cuDNN.
First, download and install CUDA toolkit. CUDA 9.2 is recommended.
Then download cuDNN 7.1.4.
Unzip the file and change to the cuDNN root directory. Move the header and libraries to your local CUDA Toolkit folder:
tar xvzf cudnn-9.2-linux-x64-v7.1
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
sudo ldconfig
Quick Installation
Install MXNet for Python
Dependencies
The following scripts will install Ubuntu 16.04 dependencies for MXNet Python development.
wget https://raw.githubusercontent.com/apache/incubator-mxnet/master/ci/docker/install/ubuntu_core.sh
wget https://raw.githubusercontent.com/apache/incubator-mxnet/master/ci/docker/install/ubuntu_python.sh
sudo ./ubuntu_core.sh
sudo ./ubuntu_python.sh
Using the latest MXNet with CUDA 9.2 package is recommended for the fastest training speeds with MXNet.
Recommended for training:
bash
pip install mxnet-cu92
Recommended for inference:
bash
pip install mxnet-cu92mkl
Alternatively, you can use the table below to select the package that suits your purpose.
| MXNet Version | Basic | CUDA | MKL-DNN | CUDA/MKL-DNN |
|---|---|---|---|---|
| Latest | mxnet | mxnet-cu92 | mxnet-mkl | mxnet-cu92mkl |
pip Package Availability
The following table presents the pip packages that are recommended for each version of MXNet.
To install an older version of MXNet with one of the packages in the previous table add ==
with the version you require. For example for version 1.1.0 of MXNet with CUDA 8, you would use pip install mxnet-cu80==1.1.0
.
Build MXNet from Source
You can build MXNet from source, and then you have the option of installing language-specific bindings, such as Scala, Java, Julia, R or Perl. This is a two-step process:
- Build the shared library from the MXNet C++ source code.
- (optional) Install the supported language-specific packages for MXNet. Be sure to check that section first, as some scripts may be available to handle all of the dependencies, MXNet build, and language bindings for you. Here they are again for quick access:
Note: To change the compilation options for your build, edit the make/config.mk
file prior to building MXNet. More information on this is mentioned in the different language package instructions.
Build the Shared Library
Quick MXNet Build
You can quickly build MXNet from source with the following script found in the /docs/install
folder:
cd docs/install
./install_mxnet_ubuntu_python.sh
Or you can go through a manual process described next.
Manual MXNet Installation
It is recommended that you review the general build from source instructions before continuing.
On Ubuntu versions 16.04 or later, you need the following dependencies:
Step 1: Install prerequisite packages.
bash
sudo apt-get update
sudo apt-get install -y build-essential git ninja-build ccache
For Ubuntu 18.04 and CUDA builds you need to update CMake
#!/usr/bin/env bash
set -exuo pipefail
sudo apt remove --purge --auto-remove cmake
# Update CMAKE for correct cuda autotedetection: https://github.com/clab/dynet/issues/1457
version=3.14
build=0
mkdir -p ~/tmp
cd ~/tmp
wget https://cmake.org/files/v$version/cmake-$version.$build.tar.gz
tar -xzvf cmake-$version.$build.tar.gz
cd cmake-$version.$build/
./bootstrap
make -j$(nproc)
sudo make install
Step 2: Install a Math Library.
Details on the different math libraries are found in the build from source guide's Math Library Selection section.
For OpenBLAS use:
sudo apt-get install -y libopenblas-dev
For other libraries, visit the Math Library Selection section.
Step 3: Install OpenCV.
MXNet uses OpenCV for efficient image loading and augmentation operations.
sudo apt-get install -y libopencv-dev
Step 4: Download MXNet sources and build MXNet core shared library.
If building on CPU and using OpenBLAS:
Clone the repository:
git clone --recursive https://github.com/apache/incubator-mxnet.git
cd incubator-mxnet
Build with CMake and ninja, without GPU and without MKL.
rm -rf build
mkdir -p build && cd build
cmake -GNinja \
-DUSE_CUDA=OFF \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DCMAKE_CUDA_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
..
ninja
If building on CPU and using MKL and MKL-DNN (make sure MKL is installed according to Math Library Selection and MKL-DNN README):
rm -rf build
mkdir -p build && cd build
cmake -GNinja \
-DUSE_CUDA=OFF \
-DUSE_MKL_IF_AVAILABLE=ON \
-DCMAKE_CUDA_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
..
ninja
If building on GPU (make sure you have installed the CUDA dependencies first): Cuda 10.1 in Ubuntu 18.04 builds fine but is not currently tested in CI.
rm -rf build
mkdir -p build && cd build
cmake -GNinja \
-DUSE_CUDA=ON \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DCMAKE_CUDA_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
..
ninja
Note - You can explore and use more compilation options as they are delcared in the top of CMakeLists.txt
and also review common usage examples.
Optionally, you can also use a higher level, scripted version of the above with an editable CMake options file by doing the
following:
cp cmake/cmake_options.yml .
# Edit cmake_options.yml in the MXNet root to your taste
$EDITOR cmake_options.yml
# Launch a local CMake build
./dev_menu.py build
Building from source creates a library called libmxnet.so
in the build
folder in your MXNet project root.
After building the MXNet library, you may install language bindings.
Installing Language Packages for MXNet
After you have installed the MXNet core library. You may install MXNet interface packages for the programming language of your choice: - Python - C++ - Clojure - Julia - Perl - R - Scala - Java
Install MXNet for Python
To install the MXNet Python binding navigate to the root of the MXNet folder then run the following:
$ cd python
$ pip install -e .
Note that the -e
flag is optional. It is equivalent to --editable
and means that if you edit the source files, these changes will be reflected in the package installed.
Optional Python Packages
You may optionally install graphviz
library that is used for visualizing network graphs you build on MXNet. You may also install Jupyter Notebook which is used for running MXNet tutorials and examples.
sudo pip install graphviz==0.8.4 \
jupyter
Install the MXNet Package for C++
Refer to the C++ Package setup guide.
Install the MXNet Package for Clojure
Refer to the Clojure setup guide.
Install the MXNet Package for Julia
Install Julia
The package available through apt-get
is old and not compatible with the latest version of MXNet.
Fetch the latest version (1.0.3 at the time of this writing).
wget -qO julia-10.tar.gz https://julialang-s3.julialang.org/bin/linux/x64/1.0/julia-1.0.3-linux-x86_64.tar.gz
Place the extracted files somewhere like a julia folder in your home dir.
mkdir ~/julia
mv julia-10.tar.gz ~/julia
cd ~/julia
tar xvf julia-10.tar.gz
Test Julia.
bash
cd julia-1.0.3/bin
julia -e 'using InteractiveUtils; versioninfo()'
If you're still getting the old version, remove it.
bash
sudo apt remove julia
Update your PATH to have Julia's new location. Add this to your .zshrc
, .bashrc
, .profile
or .bash_profile
.
bash
export PATH=~/julia/julia-1.0.3/bin:$PATH
Validate your PATH.
bash
echo $PATH
Validate Julia works and is the expected version.
bash
julia -e 'using InteractiveUtils; versioninfo()'
Setup Your MXNet-Julia Environment
For each of the following environment variables, add the commands to your .zshrc
, .bashrc
, .profile
or .bash_profile
to make them persist.
Create a julia-depot
folder and environment variable.
bash
mkdir julia-depot
export JULIA_DEPOT_PATH=$HOME/julia/julia-depot
To use the Julia binding with an existing libmxnet
installation, set the MXNET_HOME
environment variable to the MXNet source root. For example:
bash
export MXNET_HOME=$HOME/incubator-mxnet
Now set the LD_LIBRARY_PATH
environment variable to where libmxnet.so
is found. If you can't find it, you might have skipped the building MXNet step. Go back and build MXNet first. For example:
bash
export LD_LIBRARY_PATH=$HOME/incubator-mxnet/lib:$LD_LIBRARY_PATH
Verify the location of libjemalloc.so
and set the LD_PRELOAD
environment variable.
bash
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so:$LD_PRELOAD
With all of these updates, here's an example of what you might want to have in your .zshrc
, .bashrc
, .profile
or .bash_profile
.
export PATH=$HOME/bin:$HOME/.local/bin:$HOME/julia/julia-1.0.3/bin:$PATH
export JULIA_DEPOT_PATH=$HOME/julia/julia-depot
export MXNET_HOME=$HOME/incubator-mxnet
export LD_LIBRARY_PATH=$HOME/incubator-mxnet/lib:$LD_LIBRARY_PATH
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so:$LD_PRELOAD
Install MXNet with Julia:
julia --color=yes --project=./ -e \
'using Pkg; \
Pkg.develop(PackageSpec(name="MXNet", path = joinpath(ENV["MXNET_HOME"], "julia")))'
For more details about installing and using MXNet with Julia, see the MXNet Julia documentation.
Install the MXNet Package for Perl
Before you build MXNet for Perl from source code, you must complete building the shared library. After you build the shared library, run the following command from the MXNet source root directory to build the MXNet Perl package:
sudo apt-get install libmouse-perl pdl cpanminus swig libgraphviz-perl
cpanm -q -L "${HOME}/perl5" Function::Parameters Hash::Ordered PDL::CCS
MXNET_HOME=${PWD}
export LD_LIBRARY_PATH=${MXNET_HOME}/lib
export PERL5LIB=${HOME}/perl5/lib/perl5
cd ${MXNET_HOME}/perl-package/AI-MXNetCAPI/
perl Makefile.PL INSTALL_BASE=${HOME}/perl5
make install
cd ${MXNET_HOME}/perl-package/AI-NNVMCAPI/
perl Makefile.PL INSTALL_BASE=${HOME}/perl5
make install
cd ${MXNET_HOME}/perl-package/AI-MXNet/
perl Makefile.PL INSTALL_BASE=${HOME}/perl5
make install
Install the MXNet Package for R
Building MXNet from source is a 2 step process.
1. Build the MXNet core shared library, libmxnet.so
, from source.
2. Build the R bindings.
Quick MXNet-R Installation
You can quickly build MXNet-R with the following two scripts found in the /docs/install
folder:
git clone --recursive https://github.com/apache/incubator-mxnet.git mxnet
cd mxnet/docs/install
./install_mxnet_ubuntu_python.sh
./install_mxnet_ubuntu_r.sh
Or you can go through a manual process described next.
Manual MXNet-R Installation
Minimum Requirements 1. GCC 4.8 or later to compile C++ 11. 2. GNU Make
Build the MXNet core shared library
Step 1 Install build tools and git.
bash
$ sudo apt-get update
$ sudo apt-get install -y build-essential git
Step 2 Install OpenBLAS.
MXNet uses BLAS and LAPACK libraries for accelerated numerical computations on CPU machine. There are several flavors of BLAS/LAPACK libraries - OpenBLAS, ATLAS and MKL. In this step we install OpenBLAS. You can choose to install ATLAS or MKL.
bash
$ sudo apt-get install -y libopenblas-dev liblapack-dev
Step 3 Install OpenCV.
MXNet uses OpenCV for efficient image loading and augmentation operations.
bash
$ sudo apt-get install -y libopencv-dev
Step 4 Download MXNet sources and build MXNet core shared library. You can clone the repository as described in the following code block, or you may try the download links for your desired MXNet version.
$ git clone --recursive https://github.com/apache/incubator-mxnet
$ cd incubator-mxnet
$ echo "USE_OPENCV = 1" >> ./config.mk
$ echo "USE_BLAS = openblas" >> ./config.mk
$ make -j $(nproc)
Note - USE_OPENCV and USE_BLAS are make file flags to set compilation options to use OpenCV and BLAS library. You can explore and use more compilation options in make/config.mk
.
Step 5 Make and install the MXNet-R bindings.
$ make rpkg
Verify MXNet-R Installation
You can verify your MXNet-R installation as follows:
sudo -i R
At the R prompt enter the following:
library(mxnet)
a <- mx.nd.ones(c(2,3), ctx = mx.cpu())
b <- a * 2 + 1
b
You should see the following output:
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
> quit()
Install the MXNet Package for Scala
To use the MXNet-Scala package, you can acquire the Maven package as a dependency.
Further information is in the MXNet-Scala Setup Instructions.
If you use IntelliJ or a similar IDE, you may want to follow the MXNet-Scala on IntelliJ tutorial instead.
Install the MXNet Package for Java
To use the MXNet-Java package, you can acquire the Maven package as a dependency.
Further information is in the MXNet-Java Setup Instructions.
If you use IntelliJ or a similar IDE, you may want to follow the MXNet-Java on IntelliJ tutorial instead.
Contributions
You are more than welcome to contribute easy installation scripts for other operating systems and programming languages. See the community contributions page for further information.


EnrichmentMap Analysis Pipeline
Pathway enrichment analysis helps gain mechanistic insight into large gene lists typically resulting from genome scale (–omics) experiments. It identifies biological pathways that are enriched in the gene list more than expected by chance. We explain pathway enrichment analysis and present a practical step-by-step guide to help interpret gene lists. The protocol is designed for biologists with no prior bioinformatics training and uses freely available software including g:Profiler, GSEA, Cytoscape and Enrichment Map.
Cytoscape is an open source software platform for integrating, visualizing, and analyzing measurement data in the context of networks.
This tutorial will take you through the EnrichmentMap pipeline workflow in Cytoscape. Key aspects covered
in this tutorial are:
- Retrieve example expression data
- Score expression data for differential expression
- Perform Functional Enrichment Analysis using GSEA or g:Profiler
- Create enrichment map with enrichment results
- Interpretation and summarization of enrichment map results
The higlight tag
Use the highlight tag to get this cool orange accent color!
Code snippets
if (files != null) {
for (int i=0; i < files.length; i++) {
String filename = files[i];
}
}
This is the end of this module. See, no more down option in the navigation. Now it's time to move on to the next slide by right arrow or spacebar


{% load static %}
Renchant Accommodations is a data driven housing rental service platform. It's vision is to solve the long-term and short-term rental apartment problem in India. It is committed to transforming the traditional housing rental industry with the use of ML, AI and data driven models. Founded in early 2019, the company is a data-driven, high-quality rental, asset management and residential service platform. The product form covers shared apartments and rented apartments to meet the diverse residential needs of techies in the city.
Bed, Mattress, Cupboards, Fully automatic Washing Machine, Sofa, Fridge, RO Water, Power Backup, Geyser.
We can't compromise on 4th basic necessity of life, that's why we provide you 24*7 High speed internet service.
It may be high voltage match or watching a random youtube video, do that on big screen with smart TV setup.
We care about your health to the most that's why we provide you hygeinic kitchen with gas connection, RO water and yes we provide the utensils as well.
Daily room and washroom cleaning as clean environment makes you happy, motivated and healthy.
Any problem in flat ? Just raise your query anytime.
"I stayed for 6 month during my internship, everything was just perfect."
"I have to move to Bangalore for 3 month project and I can never imagine that I can find such a perfect place to stay near my office house in a day. Thanks Renchant."
" I just provided my office location and these guys came up with a awesome deal. No multiple site visits,No hidden charges, everything was hassle free. More importantly I got great flatmates who works in the same office."
"Moving to a new place was never that easy before. After service was awesome and prompt. Renchant takes care of everything which saved a lot a time and energy for me"


{% extends "base.html" %} {% import 'bootstrap/form.html' as wtf %} {% block app_content %}
Are you sure you want to proceed?
{{ wtf.render_field(form.delete) }} {{ wtf.render_field(form.cancel) }}


Started amongst the residents of Coral Circle in Pismo Beach, CA in 2010, SFL aims to be an equal opportunity provider of bragging rights to all participants, regardless of age, gender, race, hair color, or nfl-fandom.
The premise is simple: pick the winners of as many games as you can each week of the regular nfl season and take your chances head-to-head against the rest of the league for the respect and admiration of your family, peers, and neighbors.
Once you're ready to start, use the navigation at the top of the page to register or login to your existing account.
Good luck!
A few simple rules:
1. All picks must be submitted before the start of the week's play. If the start of play for the week begins on Thursday at 6PM, no picks will be admitted after that time.
2. Only members of the league will be eligible for weekly pick tracking, which can be viewed from the drop-down menu at the top of the page.
3. All members' weekly picks will be made public for viewing on the Game Day Page once the week's play begins.
4. Each week every participant should enter a "tiebreaker" point total for the last game of the week. In the event of a tie between two or more participants in that week, the player whose point total is closer to the actual point total for that game will be crowned the winner.
5. If a player fails to submit their picks by the week's deadline, the player will receive the same amount of points for the week as the lowest of all other participants.


8 references to RemoteRunspace
System.Management.Automation (8)
engine\hostifaces\ConnectionFactory.cs (1)
557
return new
RemoteRunspace
(typeTable, connectionInfo, host, applicationArguments, name);
engine\remoting\commands\newrunspacecommand.cs (5)
697
RemoteRunspace newRemoteRunspace = new
RemoteRunspace
(
755
RemoteRunspace remoteRunspace = new
RemoteRunspace
(
831
RemoteRunspace runspace = new
RemoteRunspace
(
966
runspace = new
RemoteRunspace
(Utils.GetTypeTableFromExecutionContextTLS(),
1031
runspace = new
RemoteRunspace
(Utils.GetTypeTableFromExecutionContextTLS(),
engine\remoting\commands\PSRemotingCmdlet.cs (1)
1431
remoteRunspace = new
RemoteRunspace
(Utils.GetTypeTableFromExecutionContextTLS(), connectionInfo,
engine\remoting\commands\PushRunspaceCommand.cs (1)
561
RemoteRunspace remoteRunspace = new
RemoteRunspace
(


The Gallery of Horns
Page 1
Page 2
Filter by Keyword
Filter by Keyword
Filter by title
Filter by Unicorns


CrowdWon Editor
A visual tool for writing in CrowdWon
Type
Quantity
Stop Condition
Task
Description
Typein
Typeout
Link Condition
VALIDATE
Export
×
Import
×


My Title
Welcome
Hello, friends! Welcome to my website
About
This section is all about me. Here's an image: . And some more text
- Apples
- Oranges
- Pears
Hello, friends! Welcome to my website
This section is all about me. Here's an image: . And some more text


This is the RESTful API for McDefect Solutions. It has been developed using FastAPI & documented using Pycco. It allows for the following requests being made:
Currently, the app uses only one model for defect detection & another for defect categorization. In future, we plan to implement API Key based authentication to allow multiple partners to use the models related to their specific use cases separately & seamlessly.
from fastapi import FastAPI
from fastapi.openapi.utils import get_openapi
from starlette.middleware.cors import CORSMiddleware
from routers import detect, classify
app = FastAPI()
Cross Origin Resource Sharing has been enabled across all hosts (only for demonstration purposes)
app.add_middleware(
CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"]
)
This is the Root of the RESTful API for McDefect Solutions
@app.get("/")
def get_root():
return "This is the RESTful API for McDefect Solutions"
This is the mounting position for all API endpoints related to Defect Detection. Its implementation(s) can be found in routers/detect.py
app.include_router(
detect.router,
prefix="/detect",
tags=["defect detection"],
responses={404: {"description": "Not found"}},
)
This is the mounting position for all API endpoints related to Defect Classification. Its implementation(s) can be found in routers/classify.py
app.include_router(
classify.router,
prefix="/classify",
tags=["defect classification"],
responses={404: {"description": "Not found"}},
)
FastAPI automatically creates an interactive API documentation for the API server being developed. Here, we set some of the details of this documentation page.
The docs can be obtained by hitting the GET /doc endpoint. For example, if the server is deployed at http://localhost:8000
, one can find the interactive
documentation at http://localhost:8000/doc
def custom_openapi():
if app.openapi_schema:
return app.openapi_schema
openapi_schema = get_openapi(
title="McDefect Solutions",
version="0.0.1",
description="This is the RESTful API for McDefect Solutions",
routes=app.routes,
)
openapi_schema["info"]["x-logo"] = {
"url": "https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png"
}
app.openapi_schema = openapi_schema
return app.openapi_schema
app.openapi = custom_openapi


--- layout: default date: 30/06/2020 ---
Covers races from 1st May, 2020 — 19th June, 2020.
Last updated: {{ page.date | date: "%A, %B %e" }}
{% include standings.html riders=site.data.2020.series_3.ages teams=site.data.2020.series_3.agesteam %} {% include datetime.html %}


< Back to Library
Edit
Access via REST or OData
Access via JDBC
REST Endpoint:
Open in Browser
ODATA Endpoint:
Open in Browser
Refer to
Teiid OData documentation
Download the client jar:
Use this connection URL:
To add this service to your code, refer to our
documentation
Example Data


--- layout: components title: Popups ---
Popovers can be triggered by click, on hover and on focus. To set up a popover on an element, use the data attribute data-toggle="popover"
. You can then pass other options with data attributes, like data-trigger=""
, data-placement=""
, data-title=""
and data-content=""
for the popover content.
Use the data-placement=""
attribute to position a popover. Available values are top
, bottom
, left
and right
.
You can customize header colors with more data attributes. Use data-title-backcolor=""
, data-title-textcolor=""
and data-arrowcolor=""
to customize your popover. Check the code examples.
Tooltips can be triggered by click, on hover and on focus. To set up a tooltip on an element, use the data attribute data-toggle="popover"
. You can then pass other options with data attributes, like data-trigger=""
, data-placement=""
.
Use the data-placement=""
attribute to position a tooltip. Available values are top
, bottom
, left
and right
.


I completed my bachelors degree in computer science at Visvesvaraya Technological University, Karnataka, India. in the year 2004-2009. Some of related course work i have completed are : Data structure with C, object oriented programming using C++, Design and analysis of programming, computer organization,software engineering, system software, operating systems, database, management system, computer networks, formal languages and automate theory, compiler design, programming languages.
Obtained masters degree in computer science from Southern university,Baton Rouge,LA.Some of course work i completed are :operating systems, programming languages, computer organization, theory of computing, data structure, software engineering development, object oriented design patterns, supervised research & research techniques and took thesis as part of my graduate degree and graduated in fall 2015.


The Akan are a meta-ethnicity living in the southern regions of present-day Ghana and Ivory Coast in West
Africa.The Akan people of Ghana frequently name their children after the day of the week they were born and the order in
which they were born. These "day names" have further meanings concerning the soul and character of the person. Some notable figures from the Akan community include the first president of Ghana
Kwame Nkurumah and the former UN secretary General Kofi Anan.
This app takes in your birth day and tells you your Akan name depending on your gender.


JavaScript Basics
How does JavaScript compare to HTML and CSS?
JavaScript is used to program the behaviour of web pages. Going back to the earlier house analogy of HTML being the structure of a house and CSS being in charge of the design and layout, then its inhabitants would be JavaScript, that is being able to take commands like "get up", or "if this - do that".
What are control flow and loops?
Control flow is the order in which statements or functions are executed. A real life example would be that I need to wake up first in order to have a shower, then have breakfast, and so on until I go to sleep at night. Somewhere in amongst this flow I would also have to check which day of the week it is as that could change the flow of that day.
Loops are a way to repeat certain instructions over and over again - either for a known amount of time (for), or an unkown amount of time (while) - until a task is completed. A real life terms loop could be a while loop for riding your bike. While you are riding your bike - pedal as hard as you can. When the while condition isn't met anymore (stop at an intersection) - don't pedal!
What is the difference between accessing data from arrays and objects?
Data from arrays gets indexed starting at 0. In order to access data you simply have to call it by its index.
Data in objects gets stored in 'key-value pairs', which means the particular key has to be called to access its value.
What are functions and why are they useful?
Functions are a way of grouping together several operations in function blocks. Functions are useful because they are reusable, which means we don't have to write the same code over and over again, but instead just re-use the function.
Home


freeCodeCamp Survey Form
Thank you for taking the time to help us improve the platform
Name
Email
Age
(optional)
Which option best describes your current role?
Select current role
Student
Full time job
Full time learner
prefer not to say
Other
Would you recommend freeCodeCamp to a friend?
Definitely
Maybe
Not sure
No
What would you like to see improved?
Front-end Projects
Back-end Projects
Challenges
Data Visualization
Open Source Community
Gitter help rooms
Videos
City Meetups
Wiki
Any comments or suggestions?
submit


The Basic Mod Set: Client View
Cartesian
The Cartesian mod provides the item to which it is attached with simple two-dimensional cartesian geometry. It also supports user manipulation of the containership relation between objects. This mod may not be attached to users or contexts.
Representation
{ type:"cart", left:INT, top:INT, width:INT,
height:INT }
where:
left
andtop
are the X and Y coordinates of the screen position (in pixels) of the assocated item, relative to the position of its container.width
andheight
are the X and Y screen dimensions (in pixels) of the associated item.
Messages
move
→ { to:ITEMREF_STR, into:?REF_STR, left:INT,
top:INT }
This message requests the server to change the position and optionally the container of the item to which it is targeted.
into
optionally designates a new container for the item. The designated container must be reachable by the user sending the message.left
andtop
are the new position coordinates for the item, relative to its (new) container. Note that if the container is a user or the context, this is the item's position in the browser window itself.
"move"
message
to all users in the context informing them of the change.
Census
The Census mod allows a client to survey the number of users in a context. It may be attached to any kind of object.
Representation
There is no client-side representation of the Census mod.
Messages
census
→ { to:REF_STR, op:"census" }
This message requests a census of the context. The server will reply to the sender with the message:
← { to:REF_STR, op:"census", occupancy:INT }
where the occupancy
parameter is the number of users in the
context as of the time the message was sent.
Note that this operation works, assuming the mod is present, even in contexts where the users are not visible to each other. That is sort of the point, actually.
Chat
The Chat mod enables multi-user text chat in a context. It is
attached to a context, never to a user or item. On the server, it may be
configured to individually allow or disallow the "say"
or
"push"
messages, both to the context as a whole (public chat or
push) and to individual users (private chat or push).
Representation
There is no client-side representation of the Chat mod.
Messages
say
→ { to:REF_STR, op:"say", text:STR }
This message utters chat text on behalf of its sender. If the message is
targeted at the context and the context's Chat mod is configured to
allow chat, the server will transmit a corresponding "say"
message
to all users in the context, targeted at the context, with the same text, and
marked as being from the user associated with the client sending this message.
See the discussion of the "say"
message in the Generic Messages section of the C-U-I
Model document. If the message is targeted at a user and that user is in the
same context as the sender and the Chat mod is configured to allow
private chat, the server will transmit two copies of a corresponding
"say"
message, one to the targeted user's client and one sent back
to the original sender.
text
is the message being spoken.
If the user sending the "say"
message has a TalkPrefs
mod attached, clients should use its style attributes to render that user's
chat text.
push
→ { to:REF_STR, op:"push", url:STR, frame:?STR }
This message issues a push request on behalf of its sender. If the message
is targeted at the context and the Chat mod is configured to allow
push, the server will transmit a corresponding "push"
message to
all users in the context, targeted at the context, with the same URL and frame,
and marked as being from the user associated with the client sending this
message. See the discussion of the "push"
message in the Generic Messages section of the C-U-I
document. If the message is targeted at a user and that user is in the same
context as the sender and the Chat mod is configured to allow private
push, the server will transmit two copies of a corresponding
"push"
message, one to the targeted user's client and one sent
back to the original sender.
url
is the URL to load.frame
, if given, names the browser HTML frame into which the URL is to be loaded. If omitted, the URL is loaded as an entirely new page.
Dictionary
The Dictionary mod associates a server-moderated name/value lookup table with the object to which it is attached. It may be attached to a context, user or item.
Representation
{ type:"dictionary", names:[STR], values:[STR] }
where:
names
is an array of strings, containing the dictionary's lookup keys.values
is an array of strings parallel tonames
, containing the values. For a given element ofnames
, the element ofvalues
with the same array index contains that name's value.
Messages
delvar
→ { to:REF_STR, op:"delvar", names:[STR] }
This message requests the server to delete one or more name/value pairs from the dictionary.
names
is an array of strings containing the names of the entries to delete. Elements of thenames
parameter array that do not correspond to entries in the dictionary will simply be ignored.
Once the indicated entries are deleted, the "delvar"
message
will be broadcast to all clients in the context, informing them of the change.
setvar
→ { to:REF_STR, op:"setvar", names:[STR], values:[STR] }
This message requests the server to change the value of one or more name/value pairs in the dictionary.
names
is an array of strings containing the names of the entries to be set.values
is a parallel array of strings containing the corresponding values to set those entries to.
Elements of the names
parameter array that do not correspond to
entries in the dictionary may result, at the server's discretion, in the
addition of new name/value entries to the dictionary.
Once the indicated entries are set, the "setvar"
message will
be broadcast to all clients in the context, informing them of the change.
Image
The Image mod associates an image with the object to which it is attached. It may be attached to any kind of object, but normally it will be attached to items. This mod is purely a data object; it has no behavior and no message protocol. It is up to the client application to make use of this data appropriately.
Representation
{ type:"image", img:STR, width:?INT, height:?INT }
where:
img
is the URL of an image.width
andheight
, if given, represent the horizontal and vertical extent of this image, in pixels.
Note
The Note mod associates a block of editable text with the item to which it is attached. It must be attached to an item, not a context or user.
Representation
{ type:"note", text:STR, style:?STYLEDESC }
where:
text
is the text of the note.style
is an optional style description for rendering the text. See below for details on the style descriptor object.
Messages
edit
→ { to:ITEMREF_STR, op:"edit", text:?STR, style:?STYLEDESC }
This message requests the server to alter the text and/or style information on the note.
text
, if given, is new text for the note.style
, if given, is new style information for the note. Only those attributes of the style that are actually sent will be modified; the remainder will be left unchanged.
Once the indicated changes are made to the note on the server, the
"edit"
message will be broadcast to all clients in the context,
informing them of the change.
NoteMaker
The NoteMaker mod provides a facility for creating new items with Notes attached. It is normally attached to the context, but this is not required.
Representation
{ type:"notemaker", styles:STYLEOPTIONSDESC }
where:
styles
is a collection of style options that can constrain the styles associated with notes this mod creates. See below for details on the style options descriptor object.
Messages
makenote
This message requests the server to create a new item with associated Note and Cartesian mods.
→ {
to:REF_STR,
op:"makenote",
into:?REF_STR,
left:INT, top:INT,
width:INT, height:INT,
text:STR,
style:?STYLEDESC
}
into
designates the container for the new item. It must be reachable by the user sending the request. If omitted, the new item is placed into the context itself.left
andtop
are the X and Y coordinates of the screen position (in pixels) of the new note, relative to the position of its container.width
andheight
are the X and Y screen dimensions (in pixels) of the new note.text
is the text of the new note.style
, if given, indicates the style attributes of the new note. Any style attributes which are not given (possibly all of them) will be taken from the defaults configured into the NoteMaker). If any of the style attributes requested are not permitted by the configured style options, the"makenote"
request will fail.
If the request succeeds, a new item will be created in the indicated
container, with attached Note and Cartesian mods according to
the parameters given. The new item will be broadcast to all users in the
context via a "make"
message targeted at the new item's container.
TalkOptions
The TalkOptions mod describes controls the style information
associated with user utterances displayed as a result of "say"
messages. This mod must be attached to a context, not to a user or item. It
operates in conjunction with the Chat and TalkPrefs mods.
This mod is purely a data object; it has no message protocol.
Representation
{ type:"talkoptions", styles:STYLEOPTIONSDESC }
where:
styles
is a collection of style options that can constrain the styles associated with chat. See below for details on the style options descriptor object.
TalkPrefs
The TalkPrefs mod holds a user's current chat text display style settings. It operates in conjunction with the Chat and TalkOptions mods. It is always attached to a user.
Representation
{ type:"talkprefs", style:STYLEDESC }
where:
style
is a style descriptor that indicates how the user's chat utterances (as conveyed by"say"
messages) are to be displayed.
Messages
style
The "style"
message enables a user to request that their talk
preference settings be changed.
→ { to:USERREF_STR, op:"style",
color:?STR,
backgroundColor:?STR,
icon:?STR,
textStyle:?STR }
color
, if given, names the new preferred text color.backgroundColor
, if given, names the new preferred text background color.icon
, if given, is the URL of the marker icon image used to distinguish the user in chat logs.textStyle
, if given, is a style string for the rendering of chat text.
All parameters are optional. Any parameters omitted will result in the
corresponding talk preferences setting remaining unchanged. If there is a
TalkOptions mod attached to the context, the settings specified must
be consistent with what that TalkOptions mod allows. Also note that a
user may only change their own TalkPrefs and not those of other users.
If the changes indicated are acceptable, the server alters the user's talk
preferences and broadcasts the "style"
message to all users in the
context.
Descriptor Objects
There are a couple of JSON objects that are used to carry standard bundles of information in the representations of certain mods and in some messages. These are not mods or messages themselves, but simply bundles of data.
Style Descriptor
The style descriptor contains information for the rendering of text.
Representation
{
type:"style",
color:?STR,
backgroundColor:?STR,
borderColor:?STR,
textStyle:?STR,
icon:?STR
}
where:
color
, if given, is the name of the text color.backgroundColor
, if given, is the name of the text background color.borderColor
, if given, is the name of the text border color.textStyle
, if given, is an HTML CSS style string for a text element.icon
, if given, is the URL of a marker icon.
All elements are optional. Color names are standard HTML color names.
Style Options Descriptor
The style options descriptor contains a collection of text style information. It represents a range of permitted style values for use in preference setting and display.

All elements are optional.


City To Go Dutch!
by Soccer LadumaSiya sources have indicated that Cape Town City are looking to bring in a European coach, particularly of Dutch origin.
The Citizens confirmed at midnight that Benni McCarthy’s contract at the club had been terminated, with Vasili Manousakis taking over the helm in the interim as they hunt for a new coach.
Intially Muhsin Ertugral and Cavin Johnson were believed to be the frontrunners for the vacant City job, however Siya sources have since indicated that bringing in a European coach is now their priority.
Indications are that City Chairman John Comitis is wanting to bring in a head coach from the Netherlands with a Dutch philosophy of football, with the club currently assessing several options, with one being the former Galatasaray and SC Heerenveen head coach, Jan Olde Riekerink.
As things stand, City are still assessing a number of options, although it seems that the Mother City-based outfit are keen on adding another Dutch technical member to their books, after the addition of Sjoerd Woudenberg as a first team goalkeeper coach.
City are expected to make an announcement about their plans for their technical team in the coming days although it remains to be seen who will take over the helm. The Siya crew will investigate further.


For the fig-swirl: Melt butter over medium heat in a saucepan. Add brown sugar and stir to dissolve. Halve all of the figs and toss in the saucepan with water and lemon juice. Cook over medium heat, stirring frequently, until you have a chunky-jammy mixture. Add salt with one or two stirs, set aside and let cool completely.
Ice cream: In a small pot over medium heat, combine milk, and granulated sugar until sugar is completely dissolved and the milk is just barely lukewarm. Whisk in the egg yolks. Set mixture in the fridge and wait until the fig mixture is cooled.
Using an ice cream machine, pour liquids into the frozen basin and process according to manufacturer instructions,i,e., let spin and thinken for 20 minutes before adding mascarporn, fig jam mixture, and the nuts. Continue to process for 10 minutes. Pour semi-frozen mixture into a pyrex dish or glass tupperware. Free for at least two hours before serving.


Found 14 records.
Errata ID: 2525
Status: Verified
Type: Technical
Reported By: Christopher Yeleighton
Date Reported: 2010-09-17
Verifier Name: Alexey Melnikov
Date Verified: 2010-11-12
Section 3.1 says:
Advice for designers of new URI schemes can be found in [RFC2718].
It should say:
Advice for designers of new URI schemes can be found in [RFC4395].
Notes:
The document [RFC2718] is for designers of designers of new URL schemes only. It has been obsoleted by [RFC4395] that covers all URI schemes.
[RFC4395]
T. Hansen, T. Hardie, T. and L. Masinter,
"Guidelines and Registration Procedures for New URI Schemes",
RFC 4395, February 2006.
Errata ID: 4547
Status: Reported
Type: Technical
Reported By: siva elango ramaswamy
Date Reported: 2015-12-01
Section 5.4.2 says:
5.4.2. Abnormal Examples Although the following abnormal examples are unlikely to occur in normal practice, all URI parsers should be capable of resolving them consistently. Each example uses the same base as that above. Parsers must be careful in handling cases where there are more ".." segments in a relative-path reference than there are hierarchical levels in the base URI's path. Note that the ".." syntax cannot be used to change the authority component of a URI. "../../../g" = "http://a/g" "../../../../g" = "http://a/g"
It should say:
5.4.2. Abnormal Examples Although the following abnormal examples are unlikely to occur in normal practice, all URI parsers should be capable of resolving them consistently. Each example uses the same base as that above. Parsers must be careful in handling cases where there are more ".." segments in a relative-path reference than there are hierarchical levels in the base URI's path. Note that the ".." syntax cannot be used to change the authority component of a URI. "../../../g" = "http://a/../g" "../../../../g" = "http://a/../../g"
Notes:
The example which was taken from RFC 1808 had proper resolved URL ( 5.2 ).
As the base URL has two levels ( http://a/b/c/ ) and if the relative url's have two ".." segments then from the resolved URI both the hierarchical levels can be removed to form the resolved URL, as below:
../../g = http://a/g
and if there are more ".." segments than hierarchical level in base URI's path... then the number of ".." segments that doesn't have corresponding segments in base URI should be left as is in the resolved URI, like below
"../../../g" = "http://a/../g"
Errata ID: 4789
Status: Reported
Type: Technical
Reported By: Dinar Qurbanov
Date Reported: 2016-08-31
Section 5.2.3 says:
o If the base URI has a defined authority component and an empty path, then return a string consisting of "/" concatenated with the reference's path; otherwise,
It should say:
o If the base URI has a defined authority component and an empty path, or if the base URI's path is ending with "/..", then return a string consisting of base's path concatenated with "/" and then concatenated with the reference's path; otherwise,
Notes:
this is about case when reference does not have scheme and authority and its path is not starting with "/".
Errata ID: 4942
Status: Reported
Type: Technical
Reported By: r. de raat
Date Reported: 2017-02-19
Section 3.2.2. Host says:
Such a name consists of a sequence of domain labels separated by ".", each domain label starting and ending with an alphanumeric character and possibly also containing "-" characters. The rightmost domain label of a fully qualified domain name in DNS may be followed by a single "." and should be if it is necessary to distinguish between the complete domain name and some local domain. reg-name = *( unreserved / pct-encoded / sub-delims ) If the URI scheme defines a default for host, then that default
It should say:
Such a name consists of a sequence of domain labels separated by ".", each domain label starting and ending with an alphanumeric character and possibly also containing "-" characters. The rightmost domain label of a fully qualified domain name in DNS may be followed by a single "." and should be if it is necessary to distinguish between the complete domain name and some local domain. reg-name = *( unreserved / pct-encoded / "-" / ".") If the URI scheme defines a default for host, then that default
Notes:
sub-delims are defined as "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" these are not characters that are allowed in host, domain or tld names, in addition the sub-delims do not sontain the "-" and "."
therefore the reg-name (fully qualified domain name) definition is incorrect
The same issue appears in "Appendix A."
Errata ID: 5428
Status: Reported
Type: Technical
Reported By: Kevin Layer
Date Reported: 2018-07-17
Section 4.2 says:
relative-part = "//" authority path-abempty / path-absolute / path-noscheme / path-empty
It should say:
relative-part = "//" authority path-abempty / path-absolute / path-noscheme / path-abempty ; this was added / path-empty
Notes:
As written, the ABNF excludes "/" being a valid URI. It is hard to believe that href="/" when converted to a URI, would be illegal.
Errata ID: 2624
Status: Held for Document Update
Type: Technical
Reported By: Peter Saint-Andre
Date Reported: 2010-11-11
Held for Document Update by: Peter Saint-Andre
Date Held: 2011-03-30
Section Appendix B says:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
It should say:
/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/
Notes:
This is a copy of Erratum #1933, reported against RFC 2396.
Errata ID: 2033
Status: Held for Document Update
Type: Editorial
Reported By: Tanaka Akira
Date Reported: 2010-02-05
Held for Document Update by: Alexey Melnikov
Section 3.3. says:
path-empty = 0<pchar>
It should say:
path-empty = ""
Notes:
According to ABNF, 0<pchar> is interpreted as
zero repeatation of the prose-val: pchar.
However pchar is an non-terminal.
So I think the production should be follows:
path-empty = 0pchar
However this production means a empty string.
So
path-empty = ""
is more clear.
Appendix A. has also the same production.
Errata ID: 2933
Status: Held for Document Update
Type: Editorial
Reported By: Bjoern Hoehrmann
Date Reported: 2011-08-13
Held for Document Update by: Peter Saint-Andre
Date Held: 2012-02-27
Section 5.2.2. says:
T.path = merge(Base.path, R.path);
It should say:
T.path = merge(Base, R);
Notes:
In 5.2.3. the "If the base URI has a defined authority component" condition requires knowing the authority component, so passing just the path component is misleading.
During discussion of this issue, Roy Fielding noted: "No, this is not an error in the algorithm. The algorithm is just saying that you need to merge the two paths. The two paths are not parameters to a function, nor is the merge procedure limited to those two parameters." Saving this report as "Hold For Document Update" so that future implementers do not experience the same confusion.
Errata ID: 3330
Status: Rejected
Type: Technical
Reported By: David Sheets
Date Reported: 2012-08-29
Rejected by: Barry Leiba
Date Rejected: 2012-09-04
Section Appendix A says:
fragment = *( pchar / "/" / "?" )
It should say:
fragment = *( pchar / "/" / "?" / "#" )
Notes:
Appendix B's regex doesn't fail with this correction. Additionally, this gives freedom to media type designers. Specifically, the ((path?),(query?),(fragment?)) subsyntax could be reused in hypermedia type design as the "?" delimiter transitions path => query and the "#" delimiter transitions query => fragment. It also follows the pattern:
path = *( pchar / "/" )
query = *( pchar / "/" / "?" )
fragment = *( pchar / "/" / "?" / "#" )
--VERIFIER NOTES--
This is something that should be looked at further, but it is not an error in the spec and is unlikely to be a direct change we'd make in a revision of the spec.
Some applications at the time the specification was written parsed the fragment from left to right, and others parsed from right to left, which means they would get different results if "#" were allowed inside of a fragment. That's why it was not allowed in the ABNF. It's possible that situation has improved in the years since, but it would be difficult to test so many implementations. Deciding the right way to handle this goes beyond what can be handled by an erratum.
Errata ID: 4293
Status: Rejected
Type: Technical
Reported By: Cesar Crusius
Date Reported: 2015-03-07
Rejected by: Barry Leiba
Date Rejected: 2015-03-07
Section Appendix B says:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
It should say:
^(([^:/?#]+):)(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
Notes:
The regular expression makes the scheme part optional, but both the ABNF in Appendix A and the text in Section 3 state that the scheme is in fact required.
--VERIFIER NOTES--
The context is that this is for parsing references:
The following line is the regular expression for breaking-down a
well-formed URI reference into its components.
The ABNF makes it clear that the scheme is, in fact, NOT required for URI references (see the ABNF for the "relative-ref" production).
Errata ID: 4393
Status: Rejected
Type: Technical
Reported By: Steven Liekens
Date Reported: 2015-06-15
Rejected by: Barry Leiba
Date Rejected: 2015-06-15
Section 3.2.2 says:
dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255
It should say:
dec-octet = "25" %x30-35 ; 250-255 / "2" %x30-34 DIGIT ; 200-249 / "1" 2DIGIT ; 100-199 / %x31-39 DIGIT ; 10-99 / DIGIT ; 0-9
Notes:
The 'dec-octet' rule requires more than 1 lookahead symbol.
Example value: 127
Parsers that implement a first-match-wins strategy will erroneously match 127 as ( DIGIT ), followed by two unexpected symbols.
Parsers that implement a first-match-wins strategy with the corrected grammar will correctly match 127 as ( "1" 2DIGIT ).
--VERIFIER NOTES--
Yes, except that ABNF defined in RFC 5234 is designed to describe what's valid to produce -- it's not designed as the definitive source for building a perfect parser. In particular, the order of the alternatives is not significant in ABNF, so reordering them is irrelevant.
In fact, the ABNF here is more specific than it often is. In other RFCs it will say things like
xyz = 0 / %x31-39 *2DIGIT ; valid values are 0-255
...and just let the comment restrict the maximum value.
Errata ID: 4394
Status: Rejected
Type: Technical
Reported By: Steven Liekens
Date Reported: 2015-06-15
Rejected by: Barry Leiba
Date Rejected: 2015-06-15
Section 3.2.2 says:
IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::"
It should say:
IPv6address = ( 6( h16 ":" ) ls32 ) / ( "::" 5( h16 ":" ) ls32 ) / ( [ h16 ] "::" 4( h16 ":" ) ls32 ) / ( [ h16-2 ] "::" 3( h16 ":" ) ls32 ) / ( [ h16-3 ] "::" 2( h16 ":" ) ls32 ) / ( [ h16-4 ] "::" h16 ":" ls32 ) / ( [ h16-5 ] "::" ls32 ) / ( [ h16-6 ] "::" h16 ) / ( [ h16-7 ] "::" ) h16-7 = ( *6( h16 ":" ) h16 ) / h16-6 h16-6 = ( *5( h16 ":" ) h16 ) / h16-5 h16-5 = ( *4( h16 ":" ) h16 ) / h16-4 h16-4 = ( *3( h16 ":" ) h16 ) / h16-3 h16-3 = ( *2( h16 ":" ) h16 ) / h16-2 h16-2 = ( [ h16 ":" ] h16 ) / h16
Notes:
The 'IPv6address' rule requires more than 1 lookahead symbol.
Example value: 1::
Parsers that implement a first-match-wins strategy will erroneously match 1:: as ( h16 ":" ), followed by an unexpected symbol.
Parsers that implement a first-match-wins strategy with the corrected grammar will correctly match 1:: as ( h16 "::" ).
--VERIFIER NOTES--
As with errata report 4393, this is trying to use ABNF beyond what it's meant for.
Errata ID: 1783
Status: Rejected
Type: Editorial
Reported By: Christopher Yeleighton
Date Reported: 2009-05-15
Rejected by: Peter Saint-Andre
Date Rejected: 2010-09-15
Section 3.1. says:
Advice for designers of new URI schemes can be found in [RFC2718].
It should say:
Advice for designers of new URL schemes can be found in [RFC2718].
Notes:
[RFC2718] does not contain advice for designers of new URN schemes; it is applies to URL schemes only and it is titled accordingly.
The information as published is misleading.
--VERIFIER NOTES--
Given that RFC 4395 ("Guidelines and Registration Procedures for New URI Schemes") obsoletes the referenced RFC 2718 ("Guidelines for new URL Schemes"), this erratum is best considered in error.
Errata ID: 2717
Status: Rejected
Type: Editorial
Reported By: Winfred Qin
Date Reported: 2011-02-14
Rejected by: Peter Saint-Andre
Date Rejected: 2011-05-16
Section 3 says:
hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty
It should say:
hier-part = "//" authority path-abempty / path-absolute / path-noscheme / path-rootless / path-empty
Notes:
There are four ABNF rules for path, but the following words says:
'These restrictions result in five different ABNF rules for a path (Section 3.3)'
And in section 3.3, there are five rules.
--VERIFIER NOTES--
PSA: There is no error here, because the hierarchical part excludes
paths that are not preceded by "//", whereas the path rule includes
paths that are not preceded by "//" (thus five rules for "path" but
only four rules for "hier-part").


asList
Returns a list containing all the items within and including the ranges starting and ending points.
at(position)
Rewinds the range, skips forward until we're at the supplied position then returns the value at that position. Raises an exception if the position is out of bounds.
contains
Returns a boolean value if the range contains the argument.
first
Moves the current cursor to the beginning of the range, and returns it.
foreach(optionalIndex, value, message)
Iterates over each item beginning with the starting point, and finishing at
the ending point inclusive. This method can operate several ways; these include:
(1) Takes one argument, the message tree to be executed during each iteration; (2)
Takes two arguments, the first argument is the name of the current value being
iterated over, and the second is the message tree to be executed during each
iteration; (3) Takes three arguments: the first is the current index within the
range, the second is the name of the current value being iterated over, and the
third is the message tree to be executed during each iteration.
For example:
// First method (operating on numbers)
1 to(10) foreach("iterating" print) // prints "iterating" 10 times
// Second method (operating on numbers)
1 to(10) foreach(v, v print) // prints each value
// Third method (operating on numbers)
1 to(10) foreach(i, v, writeln(i .. ": " .. v)) // prints "index: value"
index
Returns the current index number starting from zero and extending
outward up to the maximum number of items in the range.
indexOf(aValue)
Calculates each value, checking to see if it matches the aValue parameter. If so, return the position within the range. NOTE: This method rewinds the range before searching. If you need to revert back to your original position, make a duplicate of the range, and use indexOf on it instead.
last
Moves the current cursor to the end of the range, and returns it.
levenshtein(other)
Returns the levenshtein distance to other.
map(optionalIndex, value, message)
Returns a new list which contains the result of the 'body' for every element
stepped over in the range, from the starting point to the ending point inclusive.
This method can operate several ways; these include:
(1) Takes one argument, the message tree to be executed during each iteration; (2)
Takes two arguments, the first argument is the name of the current value being
iterated over, and the second is the message tree to be executed during each
iteration; (3) Takes three arguments: the first is the current index within the
range, the second is the name of the current value being iterated over, and the
third is the message tree to be executed during each iteration.
For example:
# First method (operating on numbers)
1 to(10) map(*2) # multiply each value by two
# Second method (operating on numbers)
1 to(10) map(v, "#{v}" interpolate) # returns string representation of each value as list
# Third method (operating on numbers)
1 to(10) map(i, v, i*v) # multiply each value by index
next
Sets the current item in the range to the next item in the range,
and returns a boolean value indicating whether it is not at the end of the range.
nextInSequence(skipVal)
Returns the next item in the sequence. The optional skipVal parameter allows you to skip ahead skipVal places.
previous
Sets the current item in the range to the previous item in the range,
and returns a boolean value indicating whether it is not at the beginning of the range.
rewind
Sets the current item and the index to the values the receiver started out with.
select
Operates the same as 'List select'
setRange(start, end, increment)
Has several modes of operation. First, if only two parameters are specified,
the increment value is set to 1 by default, while the first parameter represents
the point to start from, and the second parameter represents the point to end at.
If the second parameter is smaller than the first, the range will operate backwards.
If the third parameter is specified, a custom iteration value will be used instead of 1.
slice(start, end, [by])
Returns a list containing the values from the Range starting at the start parameter, ending at the end parameter, and optionally incremented by the by parameter.
to
Convenience constructor that returns a cursor object representing the range of numbers from the receiver to the 'endingPoint' parameter. Increments over each item in that range by 1.
to(endpoint)
Convenience constructor that returns a range of sequences from the receiver to the endpoint argument. Increments over each item in that range by 1.
toBy(endingPoint, incrementValue)
Convenience constructor that returns a cursor object representing the range of numbers from the receiver to the 'endingPoint' parameter. Increments over each item in that range by the 'incrementValue' parameter.
toBy(endpoint, increment)
Convenience constructor that returns a range of sequences from the receiver to the endpoint argument. Increments over each item in that range by the value of the increment parameter. The increment parameter must be positive.
value
Returns the value of the current item in the range.
|


You're year away from Kids . And want to conceive a baby.We'll guide you through this period.
VicKy DOnoR is idealogy to brings out the small Sexual Helth Clinics to an Online Platorm. It is found in Kalyani in 2020 .Hoping for a great sucess toward the future.
You have questions regaring any fertility process. Or any of the problem regarding your sexual health we will try to answer to your question.
We will help you out, provide best doctors and clinics for according to your problems.
Morden fertility is so advanced. You can help others without disclosing about your personal life.
You will Contact us through creating a profile in our website.
In todays world its very necessary to verify the details provided for you as well as for others.
We will search for sexual health clinic near you .
In the morden era. It is very easy to overcome throgh sexual helth problem. Sexual helth problem can be possible in any Gender. And according to your problem we will solve it out.
In this era of morden thinking. Being a donor is not matter of kalank but a matter of proud. You can help others to fight with their sexual problems.
Sign up as Donor