Installing Freedom E SDK¶
Supported Systems¶
Freedom E SDK is supported on Linux, MacOS, and Windows.
Linux support is officially provided to distributions we distribute builds of the RISC-V toolchain for. Currently, these distributions are
- Ubuntu
- CentOS
We expect other Linux distributions to work as well, provided that the user can either run our provided toolchains on them or produce their own toolchain.
Windows support is not directly provided by Freedom E SDK, but through our Integrated Development Environment, Freedom Studio.
Prerequisites¶
To use this SDK, you will need the following software available on your machine:
- GNU Make
- Git
- The RISC-V GNU Embedded Toolchain
- RISC-V OpenOCD (for use with development board and FPGA targets)
Install the RISC-V Toolchain and OpenOCD¶
The RISC-V GNU Toolchain and OpenOCD are available from the SiFive Website.
For OpenOCD and/or RISC-V GNU Toolchain, download the .tar.gz for your platform,
and unpack it to your desired location. Then, set the RISCV_PATH
and
RISCV_OPENOCD_PATH
environment variables when using the tools:
cp openocd-<date>-<platform>.tar.gz /my/desired/location/
cp riscv64-unknown-elf-gcc-<date>-<platform>.tar.gz /my/desired/location
cd /my/desired/location
tar -xvf openocd-<date>-<platform>.tar.gz
tar -xvf riscv64-unknown-elf-gcc-<date>-<platform>.tar.gz
export RISCV_OPENOCD_PATH=/my/desired/location/openocd
export RISCV_PATH=/my/desired/location/riscv64-unknown-elf-gcc-<date>-<version>
Install Segger J-Link Software¶
Some targets supported by Freedom E SDK (like the SiFive HiFive1 Rev B) use Segger J-Link OB for programming and debugging. If you intend to use these targets, install the Segger J-Link Software and Documentation Pack for your machine:
Cloning the Repository¶
This repository can be cloned by running the following commands:
git clone --recursive https://github.com/sifive/freedom-e-sdk.git
cd freedom-e-sdk
The --recursive
option is required to clone the git submodules included in the
repository. If at first you omit the --recursive
option, you can achieve
the same effect by updating submodules using the command:
git submodule update --init --recursive
Updating the SDK¶
If you’d like to update your SDK to the latest version:
git pull origin master
git submodule update --init --recursive


Next Page
You are login as ${user.name}, you can logout to switch to another account, or modify your profile.
Use BBCode
You need login with your Google account to comment.


{{blog.blog_desc}}
Learn about HP printers, laptops, desktops, storage solutions, cloud solutions, servers, enterprise services, solutions and more at the Official HP® Website.
Official Dell site covering the personal computers and technology related products they manufacture, support and sell.
Learn about HP printers, laptops, desktops, storage solutions, cloud solutions, servers, enterprise services, solutions and more at the Official HP® Website.
Official Dell site covering the personal computers and technology related products they manufacture, support and sell.
Official Dell site covering the personal computers and technology related products they manufacture, support and sell.
Official Dell site covering the personal computers and technology related products they manufacture, support and sell.
Our office is strategically located in the heart of Makati.
You can visit our office at Unit 308 The Atrium of Makati,
Makati Avenue, Makati City.
You may contact us at our landline,
(02) 893-1610 | 0917-527-8926 | 0917-527-9750
or
View our map
Here
You may contact us at our landline,
(02) 893-1610 | 0917-527-8926 | 0917-527-9750
or
View our map
Here


A Fortran interface to the METIS graph partitioning library.
http://glaros.dtc.umn.edu/gkhome/node/877
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public, | parameter | :: | idx_t | = | c_int32_t | |
| integer, | public, | parameter | :: | real_t | = | c_float | |
| integer(kind=idx_t), | public, | parameter | :: | METIS_NOPTIONS | = | 40 | Number of METIS OPTIONS |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OK | = | 1 | Returned normally. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_ERROR_INPUT | = | -2 | Returned due to erroneous inputs and/or options. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_ERROR_MEMORY | = | -3 | Returned due to insufficient memory. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_ERROR | = | -4 | Return status: some other type of error. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_PTYPE | = | 0 | Specifies the partitioning method. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_OBJTYPE | = | 1 | Specifies the type of objective. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_CTYPE | = | 2 | Specifies the matching scheme to be used during coarsening. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_IPTYPE | = | 3 | Determines the algorithm used during initial partitioning. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_RTYPE | = | 4 | Determines the algorithm used for refinement. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_DBGLVL | = | 5 | Specifies the amount of progress/debugging information will be printed. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_NITER | = | 6 | Specifies the number of iterations for the refinement algorithm. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_NCUTS | = | 7 | Specifies the number of different partitionings that it will compute. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_SEED | = | 8 | Specifies the seed for the random number generator. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_NO2HOP | = | 9 | Specifies that the coarsening will not perform any 2–hop matchings when the standard matching approach fails to sufficiently coarsen the graph. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_MINCONN | = | 10 | Specifies that the partitioning routines should try to minimize the maximum degree of the subdomain graph. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_CONTIG | = | 11 | Specifies that the partitioning routines should try to produce partitions that are contigous. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_COMPRESS | = | 12 | Specifies that the graph should be compressed by combining together vertices that have identical adjacency lists. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_CCORDER | = | 13 | Specifies if the connected components of the graph should first be identifies and ordered separately. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_PFACTOR | = | 14 | Specifies the minimum degree of the vertices that will be ordered last. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_NSEPS | = | 15 | Specifies the number of different separators that it will compute at each level of nested dissection. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_UFACTOR | = | 16 | Specifies the maximum allowed load imbalance among the partitions. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OPTION_NUMBERING | = | 17 | Used to indicate which numbering scheme is used for the adjacency structure of a graph or the element-node structure of a mesh |
| integer(kind=idx_t), | public, | parameter | :: | METIS_PTYPE_RB | = | 0 | Multilevel recursive bisectioning. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_PTYPE_KWAY | = | 1 | Multilevel \(k\)-way partitioning. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_CTYPE_RM | = | 0 | Random matching. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_CTYPE_SHEM | = | 1 | Sorted heavy-edge matching. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_IPTYPE_GROW | = | 0 | Grows a bisection using a greedy strategy. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_IPTYPE_RANDOM | = | 1 | Computes a bisection at random followed by a refinement. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_IPTYPE_EDGE | = | 2 | Derives a separator form an edge cut. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_IPTYPE_NODE | = | 3 | Grows a bisection using a greedy node-based strategy. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_IPTYPE_METISRB | = | 4 | |
| integer(kind=idx_t), | public, | parameter | :: | METIS_RTYPE_FM | = | 0 | FM-based cut refinement. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_RTYPE_GREEDY | = | 1 | Greedy-based cut and volume refinement. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_RTYPE_SEP2SIDED | = | 2 | Two-sided node FM refinement. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_RTYPE_SEP1SIDED | = | 3 | One-sided node FM refinement. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_INFO | = | 1 | Shows various diagnostic messages. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_TIME | = | 2 | Perform timing analysis. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_COARSEN | = | 4 | Show the coarsening progress. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_REFINE | = | 8 | Show the refinement progress. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_IPART | = | 16 | Show info on initial partitioning. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_MOVEINFO | = | 32 | Show info on vertex moves during refinement. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_SEPINFO | = | 64 | Show info on vertex moves during sep refinement. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_CONNINFO | = | 128 | Show info on minimization of subdomain connectivity. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_CONTIGINFO | = | 256 | Show info on elimination of connected components. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_DBG_MEMORY | = | 2048 | Show info related to wspace allocation. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OBJTYPE_CUT | = | 0 | Edge-cut minimization. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OBJTYPE_VOL | = | 1 | Total communication volume minimization. |
| integer(kind=idx_t), | public, | parameter | :: | METIS_OBJTYPE_NODE | = | 2 |
This function is used to partition a graph into nparts
parts using recursive bisection.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=idx_t), | intent(in) | :: | nvtxs | The number of vertices in the graph. |
||
| integer(kind=idx_t), | intent(in) | :: | ncon | The number of balancing constraints. It should be atleast 1. |
||
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | xadj | The adjacency structure of the graph as described in section 5.5 of the manual. |
|
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | adjncy | The adjacency structure of the graph as described in section 5.5 of the manual. |
|
| integer(kind=idx_t), | intent(in), | optional | dimension(*) | :: | vwgt | The weights of the vertices as described in Section 5.5 of the manual. |
| integer(kind=idx_t), | intent(in), | optional | dimension(*) | :: | vsize | The size of the vertices for computing the total communication volume as described in section 5.7 of the manual. |
| integer(kind=idx_t), | intent(in), | optional | dimension(*) | :: | adjwgt | The weights of the edges as describe in Section 5.5 of the manual. |
| integer(kind=idx_t), | intent(in) | :: | nparts | The number of parts to partition the graph. |
||
| real(kind=real_t), | intent(in), | optional | :: | tpwgts(nparts*ncon) | An array of size |
|
| real(kind=real_t), | intent(in), | optional | :: | ubvec(ncon) | An array of size |
|
| integer(kind=idx_t), | intent(in), | optional | :: | options(METIS_NOPTIONS) | An array of options as described in Section 5.4 of the METIS manual. See description for valid options. |
|
| integer(kind=idx_t), | intent(out) | :: | objval | Upon successful completion, this variable stores the edge-cut or the total communication volume of the partitioning solution. The value returned depends on the partitioning's objective function. |
||
| integer(kind=idx_t), | intent(out) | :: | part(nvtxs) | This is a vector of size |
METIS_OK
- Indicates that the function returned normally.
METIS_ERROR_INPUT
- Indicates an input error.
METIS_ERROR_MEMORY
- Indicates that it could not allocate the required memory.
METIS_ERROR
- Indicates some other type of error.
This function is used to partition a graph into nparts
parts using multilevel \(k\)-way partitioning.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=idx_t), | intent(in) | :: | nvtxs | The number of vertices in the graph. |
||
| integer(kind=idx_t), | intent(in) | :: | ncon | The number of balancing constraints. It should be at least 1. |
||
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | xadj | The adjacency structure of the graph as described in section 5.5 of the manual. |
|
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | adjncy | The adjacency structure of the graph as described in section 5.5 of the manual. |
|
| integer(kind=idx_t), | intent(in), | optional | dimension(*) | :: | vwgt | The weights of the vertices as described in Section 5.5 of the manual. |
| integer(kind=idx_t), | intent(in), | optional | dimension(*) | :: | vsize | The size of the vertices for computing the total communication volume as described in section 5.7 of the manual. |
| integer(kind=idx_t), | intent(in), | optional | dimension(*) | :: | adjwgt | The weights of the edges as describe in Section 5.5 of the manual. |
| integer(kind=idx_t), | intent(in) | :: | nparts | The number of parts to partition the graph. |
||
| real(kind=real_t), | intent(in), | optional | :: | tpwgts(nparts*ncon) | An array of size |
|
| real(kind=real_t), | intent(in), | optional | :: | ubvec(ncon) | An array of size |
|
| integer(kind=idx_t), | intent(in), | optional | :: | options(METIS_NOPTIONS) | An array of options as described in Section 5.4 of the manual. See description for valid options. |
|
| integer(kind=idx_t), | intent(out) | :: | objval | Upon successful completion, this variable stores the edge-cut or the total communication volume of the partitioning solution. The value returned depends on the partitioning's objective function. |
||
| integer(kind=idx_t), | intent(out) | :: | part(nvtxs) | This is a vector of size |
METIS_OK
- Indicates that the function returned normally.
METIS_ERROR_INPUT
- Indicates an input error.
METIS_ERROR_MEMORY
- Indicates that it could not allocate the required memory.
METIS_ERROR
- Indicates some other type of error.
This function is used to partition a mesh into nparts
parts based on a partitioning of the mesh's dual graph.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=idx_t), | intent(in) | :: | ne | The number of elements in the mesh. |
||
| integer(kind=idx_t), | intent(in) | :: | nn | The number of nodes in the mesh. |
||
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | eptr | The pair of arrays storing the mesh as described in Section 5.6 of the manual. |
|
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | eind | The pair of arrays storing the mesh as described in Section 5.6 of the manual. |
|
| integer(kind=idx_t), | intent(in), | optional | :: | vwgt(ne) | An array of size |
|
| integer(kind=idx_t), | intent(in), | optional | :: | vsize(ne) | An array of size |
|
| integer(kind=idx_t), | intent(in) | :: | ncommon | |||
| integer(kind=idx_t), | intent(in) | :: | nparts | The number of parts to partition the mesh. |
||
| integer(kind=idx_t), | intent(in), | optional | :: | tpwgts(nparts) | An array of size |
|
| integer(kind=idx_t), | intent(in), | optional | :: | options(METIS_NOPTIONS) | An array of options as described in Section 5.4 of the manual. See description for valid options. |
|
| integer(kind=idx_t), | intent(out) | :: | objval | Upon successful completion, this variable stores either the edgecut or the total communication volume of the dual graph's partitioning. |
||
| integer(kind=idx_t), | intent(out) | :: | epart(ne) | A vector of size |
||
| integer(kind=idx_t), | intent(out) | :: | npart(nn) | A vector of size |
METIS_OK
- Indicates that the function returned normally.
METIS_ERROR_INPUT
- Indicates an input error.
METIS_ERROR_MEMORY
- Indicates that it could not allocate the required memory.
METIS_ERROR
- Indicates some other type of error.
This function us used to partition a mesh into nparts
parts based on a
partitioning of the mesh's nodal graph.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=idx_t), | intent(in) | :: | ne | The number of elements in the mesh. |
||
| integer(kind=idx_t), | intent(in) | :: | nn | The number of nodes in the mesh. |
||
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | eptr | The pair of arrays storing the mesh as described in Section 5.6 of the manual. |
|
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | eind | The pair of arrays storing the mesh as described in Section 5.6 of the manual. |
|
| integer(kind=idx_t), | intent(in), | optional | :: | vwgt(nn) | An array of size |
|
| integer(kind=idx_t), | intent(in), | optional | :: | vsize(nn) | An array of size |
|
| integer(kind=idx_t), | intent(in) | :: | nparts | The number of parts to partition the mesh. |
||
| integer(kind=idx_t), | intent(in), | optional | :: | tpwgts(nparts) | An array of size |
|
| integer(kind=idx_t), | intent(in), | optional | :: | options(METIS_NOPTIONS) | An array of options as described in Section 5.4 of the manual. See description for valid options. |
|
| integer(kind=idx_t), | intent(out) | :: | objval | Upon successful completion, this variable stores either the edgecut or the total communication volume of the nodal graph's partitioning. |
||
| integer(kind=idx_t), | intent(out) | :: | epart(ne) | A vector of size |
||
| integer(kind=idx_t), | intent(out) | :: | npart(nn) | A vector of size |
METIS_OK
- Indicates that the function returned normally.
METIS_ERROR_INPUT
- Indicates an input error.
METIS_ERROR_MEMORY
- Indicates that it could not allocate the required memory.
METIS_ERROR
- Indicates some other type of error.
This function computes fill reducing orderings of sparse matrices using the multilevel nested dissection algorithm.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=idx_t), | intent(in) | :: | nvtxs | The number of vertices in the graph. |
||
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | xadj | The adjacency structure of the graph as described in Section 5.5 of the manual. |
|
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | adjncy | The adjacency structure of the graph as described in Section 5.5 of the manual. |
|
| integer(kind=idx_t), | intent(in), | optional | :: | vwgt(nvtxs) | An array of size |
|
| integer(kind=idx_t), | intent(in), | optional | :: | options(METIS_NOPTIONS) | This is the array of options as described in Section 5.4 of the manual. See description for valid options. |
|
| integer(kind=idx_t), | intent(out) | :: | perm(nvtxs) | Vectors of size |
||
| integer(kind=idx_t), | intent(out) | :: | iperm(nvtxs) | Vectors of size |
METIS_OK
- Indicates that the function returned normally.
METIS_ERROR_INPUT
- Indicates an input error.
METIS_ERROR_MEMORY
- Indicates that it could not allocate the required memory.
METIS_ERROR
- Indicates some other type of error.
This function is used to generate the dual graph of a mesh.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=idx_t), | intent(in) | :: | ne | The number of elements in the mesh. |
||
| integer(kind=idx_t), | intent(in) | :: | nn | The number of nodes in the mesh. |
||
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | eptr | The pair of arrays storing the mesh as described in Section 5.6 of the manual. |
|
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | eind | The pair of arrays storing the mesh as described in Section 5.6 of the manual. |
|
| integer(kind=idx_t), | intent(in) | :: | ncommon | The number of common nodes that two elements must have in order to put an edge between them in the dual graph. |
||
| integer(kind=idx_t), | intent(in) | :: | numflag | Used to indicate which numbering scheme is used for |
||
| type(c_ptr), | intent(out) | :: | xadj | These arrays store the adjacency structure of the generated dual graph. The format of the adjacency structure is described in Section 5.5 of the manual. |
||
| type(c_ptr), | intent(out) | :: | adjncy | These arrays store the adjacency structure of the generated dual graph. The format of the adjacency structure is described in Section 5.5 of the manual. |
METIS_OK
- Indicates that the function returned normally.
METIS_ERROR_INPUT
- Indicates an input error.
METIS_ERROR_MEMORY
- Indicates that it could not allocate the required memory.
METIS_ERROR
- Indicates some other type of error.
This function is used to generate the nodal graph of a mesh.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=idx_t), | intent(in) | :: | ne | The number of elements in the mesh. |
||
| integer(kind=idx_t), | intent(in) | :: | nn | The number of nodes in the mesh. |
||
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | eptr | The pair of arrays storing the mesh as described in Section 5.6 of the manual. |
|
| integer(kind=idx_t), | intent(in), | dimension(*) | :: | eind | The pair of arrays storing the mesh as described in Section 5.6 of the manual. |
|
| integer(kind=idx_t), | intent(in) | :: | numflag | Used to indicate which numbering scheme is used for |
||
| type(c_ptr), | intent(out) | :: | xadj | These arrays store the adjacency structure of the generated dual graph. The format of the adjacency structure is described in Section 5.5 of the manual. |
||
| type(c_ptr), | intent(out) | :: | adjncy | These arrays store the adjacency structure of the generated dual graph. The format of the adjacency structure is described in Section 5.5 of the manual. |
METIS_OK
- Indicates that the function returned normally.
METIS_ERROR_INPUT
- Indicates an input error.
METIS_ERROR_MEMORY
- Indicates that it could not allocate the required memory.
METIS_ERROR
- Indicates some other type of error.
Initializes the options array into its default values.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=idx_t), | intent(out) | :: | options(METIS_NOPTIONS) | The array of options that will be initialized. |
METIS_OK
- Indicates that the function returned normally.
Frees the memory that was allocated by either the METIS_MeshToDual or the METIS_MeshToNodal routines for returning the dual or nodal graph of a mesh.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(c_ptr), | value | :: | ptr | The pointer to be freed. This pointer should be one of the |
METIS_OK
- Indicates that the function returned normally.


This page is where the Challenge Designer sets up the Challenge.
- Edit the Challenge Settings. Next determine the number and length of the Rounds. Then edit the
Score Settings.
- Create the Groups, there must be at least one Group. The the Teams, finally the individual players.
- Checkout the PageInfo items to determine which pages are displayed in the Challenge. Update
any of the Help Topics and Notice Templates.
- (Optionally) Edit the Scheduler information. The default settings should be good.
- Edit the Game settings, enabling or disabling the games and setting their specific settings.


QuantumCast FM
Toggle radioplayer.de Menu
Apps Download
Search
Search
Clear search terms
radioplayer.de
All
All
Live
Catch Up
My Stations
My Stations
Recent
Recommended
A-Z List
#
QuantumCast FM
Player Controls
Toggle this station in My Stations
Play
Pause
Stop
Mute or unmute volume
Set volume to 20%
Set volume to 40%
Set volume to 60%
Set volume to 80%
Set volume to 100%
Live
Loading...
Skip
Live
Stream-Qualität:
LQ
HQ
Now Playing:
Next:
Streamtype:
Duration:


If you already do Ruby development on your Mac or would just like to have greater flexibility, you can install the SproutCore Dev Tools as a Ruby gem.
However, it is not recommended that you use the system installation, so we show you how to install with RVM. If you already have Ruby 1.9.2 installed, skip to Step 4.
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
$ curl -s https://rvm.beginrescueend.com/install/rvm -o rvm-installer
$ chmod +x rvm-installer
$ ./rvm-installer --version latest
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session
$ rvm install ruby-1.9.2
$ rvm --default use 1.9.2
$ gem install sproutcore


Henrik Kristoffersen beats Clement Noel for 1st slalom win in 22 months
LEVI, FINLAND – Henrik Kristoffersen has finally triumphed again in a men’s World Cup slalom after 22 months, winning the first race since the retirement of his longtime nemesis Marcel Hirscher.
Competing in foggy conditions and snowfall, Kristoffersen edged first-run leader Clement Noel on Sunday to win the first slalom of the season.
It was the Norwegian’s 16th career victory in the discipline, but the first since winning in Kitzbuehel in January 2018.
“After the first run I thought: ‘Seven-tenths on Noel, that’s a bit too much,'” said Kristoffersen, who trailed the Frenchman by 0.68 seconds after the opening leg but beat his French rival by 0.09 thanks to a near-flawless second run.
“My skiing in slalom is much better than last year, we have worked a lot,” he said. “It was not a perfect run but it’s going in the right direction.”
Kristoffersen and Hirscher dominated the slalom circuit for years, with the Austrian mostly coming out on top.
No other skier than Hirscher (six times) or Kristoffersen (once) has won the season title in the discipline in the past seven seasons.
“In 2015, 16, 17, we were very fast, Marcel and me. Then we were a bit over the limit, I think,” Kristoffersen said. “I had to take back a bit: a bit less speed and a bit more focus on technique. Taking one step back to go three steps forward.”
With Hirscher, the record eight-time overall champion from Austria, now retired, the competition for a new slalom champion is wide open.
Noel confirmed his status as one the leading racers in the discipline by posting the fastest time in the opening run, building a lead of 0.39 seconds over Britain’s Dave Ryding.
In the second run, however, Noel had a costly mistake going into the steep part of the Levi Black course while Ryding, chasing his first win, slid off the course midway down the hill and failed to finish.
“It was a good race. It was really difficult in the second run,” Noel said. “It’s a good way to start the season. I am playing with the big boys and I am happy about that.”
Noel had his breakthrough in the final two months of last season. Without a World Cup podium finish to his name, Noel finished runner-up in Adelboden in January before winning races in Wengen, Kitzbuehel and Soldeu.
It earned him second place, shared with Switzerland’s Daniel Yule, behind Hirscher in the slalom season standings.
On Sunday, Yule improved from seventh after the opening run to third, 0.18 behind Kristoffersen.
Noel’s French teammate Alexis Pinturault finished 2.48 off the lead in the opening run and failed to qualify for the second.
Pinturault won the season-opening giant slalom last month and is widely regarded a main candidate for the overall title.
The men’s World Cup continues next week in Lake Louise, Alberta, with a downhill on Saturday and a super-G the following day, the first speed events of the season.
GET THE BEST OF THE JAPAN TIMES IN FIVE EASY PIECES WITH TAKE 5
JOIN THE CONVERSATION


{% extends "base.html" %} {% block content %} Database operations Here you can calculate indices for every scientist in database. Indices Check this if you want to save calculations to CSV file. h-index Calculate m quotient Calculate e-index Calculate m-index Calculate r-index Calculate ar-index Calculate Calculate all indices at once Calculate {% endblock %}
Here you can calculate indices for every scientist in database.


SCEEM SPACE
Menu
Home
List of Members
List of Allocations
List of Locations
Add new Members
Add new Locations
Add new Allocations
View all accounts
MEMBERS IN ORDER OF PRIORITY
Note : Use 'empty member' to create a new member by modifying
Register a member
Search
Student Number
Priority
Email
First name
Last name
Pathway
Department
Group Allocation
Role
Supervisor
Research Group
Notes
Action
MODIFY


First name:
Last name:
Hello world webpage
Good night
i am feeling lucky
Life is real, life is earnest.
First name:
Last name:
Try it


Katipunan member who later married Artemio Ricarte.
She commuted from Cavite to Manila to buy saltpeter,
lead, and copper which where used to make ammunitions.
She also carried secret messages about the planned offensives against the Spanish posts.


mongoc_stream_t
Synopsis
typedef struct _mongoc_stream_t mongoc_stream_t
mongoc_stream_t provides a generic streaming IO abstraction based on a struct of pointers interface. The idea is to allow wrappers, perhaps other language drivers, to easily shim their IO system on top of mongoc_stream_t.
The API for the stream abstraction is currently private and non-extensible.
Stream Types
There are a number of built in stream types that come with mongoc. The default configuration is a buffered unix stream. If SSL is in use, that in turn is wrapped in a tls stream.


Styling (React) Components With Emotion
The answer to your web component styling problems
@devanPapaya
What is CSS-In-JS
Really any library that puts styles in JS…
CSS-In-JS attempts to put the best of the css pre-processors on the same build pipeline as the rest of your
React/Angular/Vue code to give you the developer a better experience and while improving build performance
tldr;
CSS-In-JS is the new CSS and Emotion is the new Sass
Who is it for?
Anyone who is already developing with React, Angular, or Vue. That want to improve the performance
and development experience of styling their apps.
What makes her so special?
- Best of CSS Modules and inline styles
- Backwords compatible with inline-styles
- Pages styles load really really fast
- Super Simple Server Side Rendering
- Automagical style caching
- Works with React, React Native, and even React VR!
Learn more at emotion.sh
What makes her so special?
- Best of CSS Modules and inline styles
- Backwords compatible with inline-styles
- Pages styles load really really fast
- Super Simple Server Side Rendering
- Automagical style caching
- Works with React, React Native, and even React VR!
Learn more at emotion.sh


2050 Employee Sales by function
food
auto
household
Taco
Ford
Cleaner
Taco
Ford
Carpet
Roti
Ford
Shampoo
2022 Employee Sales by Department
food
auto
household
190
160
40
300
40
30
10
180
10


I just checked and the metadata files are there now. I know they were temporarily deleted in some Google Drive reorg, but they are back.
Unless there's something that I'm missing, this should just be ingesting those four items.
These four items are ingested and attached to the new Versailles collection: https://figgy.princeton.edu/?f%5Bmember_of_collection_titles_ssim%5D%5B%5D=Versailles
@cwulfman, see above.
labeled
by Esmé Cowles at 2020-06-10 14:06:04.labeled
by Esmé Cowles at 2020-06-10 14:06:04.assigned
by Esmé Cowles at 2020-06-10 14:40:59.closed
by Esmé Cowles at 2020-06-10 17:46:53.mentioned
by Cliff Wulfman at 2020-06-10 18:44:45.subscribed
by Cliff Wulfman at 2020-06-10 18:44:45.referenced
by Eliot Jordan at 2020-06-10 21:12:26.merged
by Eliot Jordan at 2020-06-10 21:12:26.closed
by Eliot Jordan at 2020-06-10 21:12:26.head_ref_deleted
by Eliot Jordan at 2020-06-10 21:12:30.@kevinreiss there is a template file for blocked. once we get more information about the content to include, i can update it.
mentioned
by Kevin Reiss at 2020-06-10 12:58:35.subscribed
by Kevin Reiss at 2020-06-10 12:58:35.assigned
by Christina Chortaria at 2020-06-10 14:36:48.transferred
by Christina Chortaria at 2020-06-10 14:37:02.deployed
by Trey Pendragon at 2020-06-10 12:26:13.referenced
by Axa Mei Liauw at 2020-06-10 12:43:26.merged
by Axa Mei Liauw at 2020-06-10 12:43:26.closed
by Axa Mei Liauw at 2020-06-10 12:43:26.head_ref_deleted
by Axa Mei Liauw at 2020-06-10 12:43:29.completed and closed by https://github.com/pulibrary/orangelight/pull/2031
closed
by Christina Chortaria at 2020-06-10 22:11:36.Coverage remained the same at 100.0% when pulling f4284845936f29a7a398b0a17278fce58c764a8a on 784-rabbit-errors into 6e98c3277208b1f799e73823e186fac37982e7ef on 785-rabbit-delete-errors.
This didn't actually address the error that was ticketed. closing; will open new PR.
head_ref_force_pushed
by None at 2020-06-10 16:31:14.closed
by None at 2020-06-10 16:32:18.Looks like the actor field needs to be handled in the jsonld; solr says it's trying to index docs with children.
example jsonld: https://figgy.princeton.edu/catalog/cd10e61e-23aa-40c6-befc-d2f7db2209a0.jsonld
assigned
by None at 2020-06-10 16:39:33.Coverage remained the same at 100.0% when pulling 134a9325f43fddbd688a40a6d70793247476930e on 784-rabbit-errors into b73b4af4c78a722753933e5e428c6a119a4a0077 on master.
referenced
by Christina Chortaria at 2020-06-10 17:19:17.merged
by Christina Chortaria at 2020-06-10 17:19:17.closed
by Christina Chortaria at 2020-06-10 17:19:17.assigned
by None at 2020-06-10 14:05:07.referenced
by None at 2020-06-10 14:36:26.referenced
by None at 2020-06-10 16:31:14.referenced
by None at 2020-06-10 16:33:23.closed
by Christina Chortaria at 2020-06-10 17:19:17.I was able to replicate this error with a test for deleting a resource that has no exhibit. I didn't think this was a thing, so maybe we have orphaned resources? Regardless it should probably be able to delete them.
In the case of the record mentioned above, it exists in the database but not in the index. Its exhibit does not exist. Deleting exhibits does not delete resources?
#<IIIFResource id: 29745, exhibit_id: 44, type: "IIIFResource", url: "https://figgy.princeton.edu/concern/scanned_resour...", data: {"noid"=>"4x51hn65g"}, indexed_at: nil, created_at: "2019-03-13 20:39:32", updated_at: "2019-03-13 20:39:32", metadata: nil, index_status: nil, upload_id: nil>
referenced
by None at 2020-06-10 14:02:31.closed
by Eliot Jordan at 2020-06-10 17:43:58.Coverage remained the same at 100.0% when pulling 6e98c3277208b1f799e73823e186fac37982e7ef on 785-rabbit-delete-errors into b73b4af4c78a722753933e5e428c6a119a4a0077 on master.
referenced
by Eliot Jordan at 2020-06-10 17:43:58.merged
by Eliot Jordan at 2020-06-10 17:43:58.closed
by Eliot Jordan at 2020-06-10 17:43:58.head_ref_deleted
by Eliot Jordan at 2020-06-10 17:44:01.referenced
by Eliot Jordan at 2020-06-10 21:14:45.merged
by Eliot Jordan at 2020-06-10 21:14:45.closed
by Eliot Jordan at 2020-06-10 21:14:46.head_ref_deleted
by Eliot Jordan at 2020-06-10 21:14:49.assigned
by None at 2020-06-10 14:24:38.renamed
by Christina Chortaria at 2020-06-10 15:27:15.Ansible is not set up to use rbsc.princeton.edu as the base url. I'm not entirely sure how it got set that way...
assigned
by None at 2020-06-10 14:24:25.closed
by None at 2020-06-10 15:53:43.convert_to_draft
by None at 2020-06-10 15:14:57.head_ref_force_pushed
by None at 2020-06-10 15:25:24.ready_for_review
by None at 2020-06-10 15:43:40.referenced
by Christina Chortaria at 2020-06-10 16:07:36.merged
by Christina Chortaria at 2020-06-10 16:07:36.closed
by Christina Chortaria at 2020-06-10 16:07:36.see work from @carolyncole https://github.com/pulibrary/princeton_ansible/pull/1562/files
mentioned
by None at 2020-06-10 16:12:20.subscribed
by None at 2020-06-10 16:12:20.renamed
by Christina Chortaria at 2020-06-10 16:13:09.assigned
by Eliot Jordan at 2020-06-10 17:02:24.assigned
by Francis Kayiwa at 2020-06-10 17:17:58.Already migrated; see pulibrary/figgy#3962.
Now we need to
closed
by Cliff Wulfman at 2020-06-10 18:55:33.reopened
by Cliff Wulfman at 2020-06-10 18:56:04.Already migrated; see pulibrary/figgy#3962.
Now we need to
update the PUDL page create DPUL exhibit?
closed
by Cliff Wulfman at 2020-06-10 18:55:44.reopened
by Cliff Wulfman at 2020-06-10 18:56:01.Already migrated; see pulibrary/figgy#3962.
Now we need to
update the PUDL page create DPUL exhibit?
closed
by Cliff Wulfman at 2020-06-10 18:55:15.reopened
by Cliff Wulfman at 2020-06-10 18:56:09.referenced
by Cliff Wulfman at 2020-06-10 18:41:35.merged
by Cliff Wulfman at 2020-06-10 18:41:35.closed
by Cliff Wulfman at 2020-06-10 18:41:35.labeled
by None at 2020-06-10 18:42:00.referenced
by Cliff Wulfman at 2020-06-10 18:46:05.merged
by Cliff Wulfman at 2020-06-10 18:46:05.closed
by Cliff Wulfman at 2020-06-10 18:46:05.head_ref_deleted
by None at 2020-06-10 18:46:17.labeled
by None at 2020-06-10 18:42:00.head_ref_force_pushed
by None at 2020-06-10 18:46:47.closed
by Axa Mei Liauw at 2020-06-09 22:08:16.referenced
by Axa Mei Liauw at 2020-06-09 22:08:16.referenced
by Axa Mei Liauw at 2020-06-09 22:08:15.merged
by Axa Mei Liauw at 2020-06-09 22:08:15.closed
by Axa Mei Liauw at 2020-06-09 22:08:15.head_ref_deleted
by Axa Mei Liauw at 2020-06-09 22:08:18.assigned
by Christina Chortaria at 2020-06-10 13:19:24.closed
by Kevin Reiss at 2020-06-10 13:23:30.closed
by Kevin Reiss at 2020-06-10 13:23:30.head_ref_force_pushed
by Christina Chortaria at 2020-06-09 22:11:06.head_ref_force_pushed
by Christina Chortaria at 2020-06-09 22:34:02.renamed
by Christina Chortaria at 2020-06-09 22:35:38.review_requested
by Christina Chortaria at 2020-06-09 22:41:37.review_requested
by Christina Chortaria at 2020-06-09 22:41:38.referenced
by Kevin Reiss at 2020-06-10 13:23:30.merged
by Kevin Reiss at 2020-06-10 13:23:30.closed
by Kevin Reiss at 2020-06-10 13:23:31.head_ref_deleted
by Kevin Reiss at 2020-06-10 13:23:38.closed
by Kevin Reiss at 2020-06-10 13:25:23.closed
by Kevin Reiss at 2020-06-10 13:26:08.assigned
by Kevin Reiss at 2020-06-10 13:32:17.https://catalog.princeton.edu/requests/857469?mfhd=977101&source=pulsearch
assigned
by Kevin Reiss at 2020-06-10 13:39:16.Changed these to circulates=false.
closed
by Kevin Reiss at 2020-06-10 13:44:28.Here is an example of how a Princeton one looks: https://catalog.princeton.edu/catalog/857469
Look at the location has more/less in the above as a way to handle the large location has statement all these individual items will produce.
assigned
by Christina Chortaria at 2020-06-10 14:07:05.closed
by Kevin Reiss at 2020-06-10 14:08:05.assigned
by Axa Mei Liauw at 2020-06-10 14:42:52.renamed
by Kevin Reiss at 2020-06-10 13:57:30.assigned
by None at 2020-06-10 17:09:16.closed
by Kevin Reiss at 2020-06-11 01:57:44.head_ref_force_pushed
by Christina Chortaria at 2020-06-10 17:58:15.head_ref_force_pushed
by Christina Chortaria at 2020-06-10 17:59:21.head_ref_force_pushed
by Christina Chortaria at 2020-06-10 20:30:32.ready_for_review
by Christina Chortaria at 2020-06-10 20:32:14.referenced
by Kevin Reiss at 2020-06-11 01:57:44.merged
by Kevin Reiss at 2020-06-11 01:57:44.closed
by Kevin Reiss at 2020-06-11 01:57:44.head_ref_deleted
by Kevin Reiss at 2020-06-11 01:57:50.@kevinreiss does not ring a bell for me. it's not clear to me how this was set up. looks like that feature, rbsc_faq, was last updated 5 years ago. there is a faq importer content type called libanswers faqs importer. maybe this is the source? https://library.princeton.edu/special-collections/node/16473/log
for that particular faq entry, it has an empty "answer" value. instead, the answer is associated with the "details" key. https://faq.library.princeton.edu/admin/faq?faqid=303964. I moved the content of details into answers. this should resolve the issue with that entry.
mentioned
by Kevin Reiss at 2020-06-09 23:10:10.subscribed
by Kevin Reiss at 2020-06-09 23:10:10.


Preparation time
30 mins to 1 hour
Cooking time
1 to 2 hours
Serves
Serves 4
This Asian-inspired crab ravioli dish uses nduja, a spicy salami paste that really packs a punch.
Put the crab shells, prawn heads and shells, star anise, chicken stock and brandy in a large saucepan and cook for 40–50 minutes. Strain, reserve the liquid and set aside.
Fill a deep-fat fryer or large, deep, heavy-bottomed saucepan two-thirds full with the oil. Heat to 180C (a cube of bread should turn brown in 1 minute when dropped in.) CAUTION: Hot oil can be dangerous. Do not leave unattended.
Crack the crab claws to expose most of the flesh and remove the shell. Mix the finely chopped prawns, ginger, garlic, soy sauce, sesame oil and sherry together to form a paste, or blend in a food processor. Coat the crab claw flesh in the paste.
Put the flour, eggs and breadcrumbs in separate bowls. Coat the crab claws in the flour, then with the eggs and then the breadcrumbs.
Deep-fry the claws for 2–4 minutes, or until cooked through. Put them on a plate lined with kitchen paper to drain.
Mix 150g/5½oz brown crab meat and the nduja paste together. Place a teaspoon of the mixture in the centre of a wonton wrapper and wet the edges. Place another wonton wrapper on top and press down to seal. Use a pastry cutter to cut out a perfect circle. Repeat with the rest of the wrappers to make 12 ravioli.
Cook the ravioli in a large pan of boiling salted water for 1–2 minutes or until they rise to the surface. Meanwhile, gently heat the reserved crab stock.
To serve, place the white crab meat in the bottom of a serving bowl, add three ravioli, ladle over the stock and top with a claw. Garnish with the coriander.


This notebook loads the movie rating data from DSX's local storage then it trains an alternating least square (ALS) model using Spark's Machine Learning library (MLlib).
For more information on Spark ALS, see here:
Again, let's preview the data
!head -3 ratings.dat
!echo
!tail -3 ratings.dat
The data is in the format:
UserID::MovieID::Rating::Timestamp
Now load it into an RDD
from pyspark.mllib.recommendation import Rating
ratingsRDD = sc.textFile('ratings.dat') \
.map(lambda l: l.split("::")) \
.map(lambda p: Rating(
user = int(p[0]),
product = int(p[1]),
rating = float(p[2]),
)).cache()
It's useful to check some highlevel statistics on the data. At this point, I'm mainly interested in the row count.
ratingsRDD.toDF().describe().show()
Next we split the data into training and testing data sets
(training, test) = ratingsRDD.randomSplit([0.8, 0.2])
numTraining = training.count()
numTest = test.count()
# verify row counts for each dataset
print("Total: {0}, Training: {1}, test: {2}".format(ratingsRDD.count(), numTraining, numTest))
I've chosen some values for the ALS parameters. You should probaly experiment with different values.
from pyspark.mllib.recommendation import ALS
rank = 50
numIterations = 20
lambdaParam = 0.1
model = ALS.train(training, rank, numIterations, lambdaParam)
Let's save the model ...
# if there is an existing model, delete it
!rm -rf ./recommender_model
# save the model
model.save(sc, './recommender_model')
Just for curiosities sake, let's see what the model looks like on the file system
!find ./recommender_model
First we create a crude (baseline) model that takes the mean rating for the whole dataset.
We can then compare the ALS model against the baseline model.
Calculate Root Mean Squared Error (RMSE) when using the mean value of all ratings for the predicted rating
mean_rating = training.map(lambda x: x[2]).mean()
# we need to structure the (user, product (movie)) pairs with the mean rating
predictions = test.map(lambda r: ((r.user, r.product), mean_rating))
# predictions.take(2) looks like this:
# [((1, 1193), 3.581855855112805), ((1, 661), 3.581855855112805)]
#
# I.e.
# [((user, movie), rating), ...]
ratesAndPreds = test.map(lambda r: ((r.user, r.product), r.rating)) \
.join(predictions)
# ratesAndPreds.take(2) looks like this:
# [((4520, 2502), (3.0, 3.581855855112805)), ((1320, 1230), (5.0, 3.581855855112805))]
#
# I.e.
# [((user, movie), (actual_rating, predicted_rating)), ...]
#
# The (user, product (movie)) tuple is the key and the value is another tuple
# representing the actual rating and the mean rating.
# subtract the mean rating from the actual rating, square the result and take the
# mean of the results
MSE = ratesAndPreds.map(lambda r: (r[1][0] - r[1][1])**2).mean()
import math
RMSE = math.sqrt(MSE)
print("Mean Squared Error = " + str(MSE))
print("Root Mean Squared Error = " + str(RMSE))
Calculate Root Mean Squared Error (RMSE) when using spark ALS to predict ratings
# get a RDD that is a list of user + product (movie) pairs
test_without_rating = test.map(lambda r: (r.user, r.product))
# pass the (user, product (movie)) pairs to the model to predict the values
predictions = model.predictAll(test_without_rating) \
.map(lambda r: ((r.user, r.product), r.rating))
# predictions.take(2) looks like this:
# [((4904, 2346), 4.138371476123861), ((4904, 2762), 5.076268198843158)]
#
# I.e.
# [((user, movie), rating), ...]
# next we join the a RDD with the actual rating to the predicted rating
ratesAndPreds = test.map(lambda r: ((r.user, r.product), r.rating)) \
.join(predictions)
# ratesAndPreds.take(2) looks like this:
# [((4520, 2502), (3.0, 3.948614784605795)), ((1320, 1230), (5.0, 4.648257851849921))]
#
# I.e.
# [((user, movie), (actual_rating, predicted_rating)), ...]
#
# The (user, product (movie)) tuple is the key and the value is another tuple
# representing the actual rating and the mean rating.
# subtract the mean rating from the actual rating, square the result and take the
# mean of the results
MSE = ratesAndPreds.map(lambda r: (r[1][0] - r[1][1])**2).mean()
import math
RMSE = math.sqrt(MSE)
print("Mean Squared Error = " + str(MSE))
print("Root Mean Squared Error = " + str(RMSE))
We can see that Spark's ALS RMSE is much lower than the baseline predictor - this is good news :)
Next let's plot the Squared Error (SE) from the Spark ALS model.
First, split out the data for matplotlib.
from pyspark.sql.functions import min, max
user = predictions.map(lambda x: int(x[0][0])).cache()
movie = predictions.map(lambda x: int(x[0][1])).cache()
se = ratesAndPreds.map(lambda r: (r[1][0] - r[1][1])**2).cache()
Next, let's plot the data
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import numpy as np
ratingsDF = ratingsRDD.toDF()
max_user = ratingsDF.select(max('user')).take(1)[0]['max(user)']
max_movie = ratingsDF.select(max('product')).take(1)[0]['max(product)']
width = 10
height = 10
plt.figure(figsize=(width, height))
plt.xlim([0,max_user])
plt.ylim([0,max_movie])
plt.xlabel('User ID')
plt.ylabel('Movie ID')
plt.title('Prediction Squared Error')
ax = plt.gca()
ax.patch.set_facecolor('#898787') # dark grey background
colors = plt.cm.YlOrRd(se.collect())
plt.scatter(
user.collect(),
movie.collect(),
s=1,
edgecolor=colors)
plt.legend(
title='Normalised Squared Error',
loc="upper left",
bbox_to_anchor=(1,1),
handles=[
mpatches.Patch(color=plt.cm.YlOrRd(0), label='0'),
mpatches.Patch(color=plt.cm.YlOrRd(0.25), label='0.25'),
mpatches.Patch(color=plt.cm.YlOrRd(0.5), label='0.5'),
mpatches.Patch(color=plt.cm.YlOrRd(0.75), label='0.75'),
mpatches.Patch(color=plt.cm.YlOrRd(0.99), label='1')
])
plt.show()
As expected, the prediction errors seem to be fairly random.
The main discernable pattern seems to be the grey areas, which represent no ratings.
We would probably want to dig into the grey areas - why do we have no predictions here?
- Are there gaps in the movie IDs?
- Do some movies have no ratings at all?
You may want to automatically build the model on a scheduled basis.
Checkout out the schedule (clock) button in the toolbar to see how you can automate running a notebook.


This is Benjamin Enwegbara, first African member of Austria Parliament
by Nneoma BENSONAdvertisement
ON Friday, a Nigerian Economist, Benjamin Enwegbara was announced to have been elected into the parliament in Austria, a country in Central Europe, making it the first of its kind.
This information was disclosed by his delighted brother, Odilim Enwegbara, a development economist and a digital technology management analyst who lives in the capital city of Austria, Vienna.
“My immediate younger brother, Benjamin Enwegbara, who has lived in Austria and the UK since the 1980s and a cerebral economist with a master’s degrees in business administration and public security has just been elected a member of the Austrian Parliament.
 This is truly the biggest news ever happened to my family. He is the first African to be elected a member of the Austrian Parliament,” he said.
Advertisement
The parliament in Austria has two chambers namely; the national council and federal council. The national council of 183 members are elected by all citizens entitled to vote, every year or sometimes sooner.
Benjamin, 57, has worked as a management consultant and a director of Meriben Limited, a London-based company, with years of experience in the management sub-sector.
Nigerians have proven viable outside the country, getting elected as lawmakers in foreign parliaments.
The likes of Uzoma Asagwara, a nurse, broke a 150-year record in Canadian Parliament after emerging as the first black to be elected to the Manitoba legislature representing Union station constituency.
Also, Zulfat Suara, a Nigerian-American, emerged as the first Muslim lawmaker in Tennessee in the United States, after making it into the runoff of a Nashville council at-large election.


| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| back.js | 94.23% | 98/104 | 78.57% | 22/28 | 100% | 21/21 | 94.23% | 98/104 | |
| common.js | 93.51% | 144/154 | 82.14% | 69/84 | 92.31% | 24/26 | 94.04% | 142/151 | |
| delayed_body.js | 45.45% | 20/44 | 42.86% | 6/14 | 25% | 3/12 | 45.45% | 20/44 | |
| global_emitter.js | 100% | 2/2 | 100% | 0/0 | 100% | 0/0 | 100% | 2/2 | |
| intercept.js | 95.03% | 172/181 | 81.82% | 72/88 | 96.67% | 29/30 | 94.97% | 170/179 | |
| interceptor.js | 92.86% | 221/238 | 88.95% | 161/181 | 92.31% | 24/26 | 92.86% | 221/238 | |
| match_body.js | 97.3% | 36/37 | 97.62% | 41/42 | 100% | 2/2 | 97.22% | 35/36 | |
| mixin.js | 81.82% | 9/11 | 50% | 2/4 | 100% | 1/1 | 100% | 9/9 | |
| request_overrider.js | 93.85% | 244/260 | 88.24% | 150/170 | 93.33% | 28/30 | 94.53% | 242/256 | |
| scope.js | 92.61% | 163/176 | 78.75% | 63/80 | 89.19% | 33/37 | 92.57% | 162/175 | |
| socket.js | 97.22% | 35/36 | 83.33% | 10/12 | 100% | 6/6 | 97.22% | 35/36 |


The writeWithCommas function is supposed to print its nonnegative int argument with commas properly inserted (every three digits, starting at the right). The problem is that writeWithCommas doesn’t always work as intended. Which of the following integer arguments will not be printed correctly:
365051
896
251462251
278278
4


Russia flags possible 2019 summit on eastern Ukraine
MOSCOW (Reuters) - A summit between France, Germany, Russia and Ukraine to try to resolve the conflict in eastern Ukraine is possible this year but no date has been agreed, a Kremlin aide said on Sunday.
France said on Friday that the so-called Normandy summit will take place in Paris on Dec. 9, but Moscow has not confirmed either the plans or the date.
“I think there will be a chance to organize (the summit) this year. I can’t say the exact date, because it is still under discussion, but, obviously, this year,” Kremlin aide Yuri Ushakov told a news show on local TV network Russia-1.
If it happens, the Normandy summit, named after a meeting in the northwestern French region of the leaders of the four countries in 2014, will take place following a breakthrough in relations between Russia and Ukraine.
Moscow and Kiev exchanged prisoners in September and this month Ukrainian government forces and Russian-backed rebels began withdrawing from a village in the disputed Donbass region.
Russia began moving three captured Ukrainian navy ships on Sunday, Reuters reported, after a Russian newspaper said Moscow would return them to Ukraine ahead of a summit.
The summit plans are not directly tied to legislation giving Donbass a special status, Kremlin spokesman Dmitry Peskov said during the same Sunday news show, Interfax reported.


This project was made to graph out and compare the trend of all current hockey player's stats throughout their career.
Get Started!Just select a player position and a stat category, then one of the teams from the dropdown menu, and then select a player you would like to view. Skater stats are calculated on a per game basis while goalie stats are on a per season basis
To compare multiple players, select a player, then click on the add button to save that player, then select/add other players to compare their various stats.
Changing the player position will clear any currently saved players as you can only compare players of the same position.


|
QuantLib: a free/open-source library for quantitative finance
Fully annotated sources - version 1.30
|
#include <ql/instruments/creditdefaultswap.hpp>
Public Member Functions | |
| arguments () | |
| void | validate () const override |
| Public Member Functions inherited from PricingEngine::arguments | |
| virtual | ~arguments ()=default |
| virtual void | validate () const =0 |
Public Attributes | |
| Protection::Side | side |
| Real | notional |
| ext::optional< Rate > | upfront |
| Rate | spread |
| Leg | leg |
| ext::shared_ptr< SimpleCashFlow > | upfrontPayment |
| ext::shared_ptr< SimpleCashFlow > | accrualRebate |
| bool | settlesAccrual |
| bool | paysAtDefaultTime |
| ext::shared_ptr< Claim > | claim |
| Date | protectionStart |
| Date | maturity |
Definition at line 311 of file creditdefaultswap.hpp.
| arguments | ( | ) |
Definition at line 451 of file creditdefaultswap.cpp.
|
overridevirtual |
Implements PricingEngine::arguments.
Definition at line 455 of file creditdefaultswap.cpp.
| Protection::Side side |
Definition at line 315 of file creditdefaultswap.hpp.
| Real notional |
Definition at line 316 of file creditdefaultswap.hpp.
| ext::optional<Rate> upfront |
Definition at line 317 of file creditdefaultswap.hpp.
| Rate spread |
Definition at line 318 of file creditdefaultswap.hpp.
| Leg leg |
Definition at line 319 of file creditdefaultswap.hpp.
| ext::shared_ptr<SimpleCashFlow> upfrontPayment |
Definition at line 321 of file creditdefaultswap.hpp.
| ext::shared_ptr<SimpleCashFlow> accrualRebate |
Definition at line 322 of file creditdefaultswap.hpp.
| bool settlesAccrual |
Definition at line 323 of file creditdefaultswap.hpp.
| bool paysAtDefaultTime |
Definition at line 324 of file creditdefaultswap.hpp.
| ext::shared_ptr<Claim> claim |
Definition at line 325 of file creditdefaultswap.hpp.
| Date protectionStart |
Definition at line 326 of file creditdefaultswap.hpp.
| Date maturity |
Definition at line 327 of file creditdefaultswap.hpp.


Migranier Pizzeria Webpage Project
For this pair project, Erica and her partner Dylan S. created a website for a fictional pizzeria restaurant named Migranier. This site contained multiple webpages with content. Once the basic site template was created, this project was all about experimenting with CSS techniques as well as working with branching in Github.
Several different branches were created in order to experiment with the layout of the content already created within the HTML file pages. The first branch was entitled "side-menu", and this one was stylized so that the navigation menu bar appeared to the right of the page content.
The first version with the side menu looked as follows:
The second version has the menu at the bottom, and we were going to move it to a navigation bar at the top but have not yet done so within the CSS. This simple version so far looks like this:
The page was created in steps with the following tools:
- HTML
- CSS
- Markdown for the README file
The Github repository for this project is available here: https://github.com/ericaw21/pizzeria.
If there are any issues or concerns with this project, please email me.
Previous Project Quick Links
Animal Shelter Webpage
As a pair project along with a partner, I created a web page for an animal shelter, while learning about media queries and utilizing cascading style effects and classes. Find out more on the Animal Shelter project page.
Drewpedia Webpage
Along with my partner, we created a Wikipedia look-alike webpage titled "Drewpedia" in order to learn how to design and code a similarly-styled page from scratch. Find out more on the Drewpedia project page.


WITNESS LIST Economic Development Committee February 22, 2005-10:30A Org 2 On: Adams, Edward (Texas Workforce Investment Council) Chrobak, Michael (Office of the Governor) Fuller, Cheryl (Texas Workforce Investment Council) Moseley, Jeff (Office of the Governor) Registering, but not testifying: On: Chase, Julie (Office of the Governor)


+1<PHONE_NUMBER><EMAIL_ADDRESS>123456, Silicon walley str. Nonest. building 663
+1<PHONE_NUMBER>45<EMAIL_ADDRESS>123456, Silicon walley str. Nonest. building 33
+1<PHONE_NUMBER>23 chuck@company.com


Server
Database
HTTP API
Resources
${include:database.html} ${include:api.html} ${include:resources.html}
${include:popup-login.html}
Copyright 2021
Arcade Data Ltd


Creates property methods and places them into a folder with the property name.
|
Property Name Name of the property. |
|
Attribute Name of the attribute to use. |
|
Dynamic Dispatch Dynamic dispatch (virtual) method. |
|
Get Property Get property method will be created. |
|
Set Property Set property method will be created. |
|
Description Property description. |
|
Scope Property access scope. |
| Public |
| Protected |
| Private |
|
Create Property Create property. |
|
Cancel Cancel. |
|
Help Help. |


Speier Gets A Round Of Applause After Zinger During Sondland Testimony
Rep. Jackie Speier (D-CA) got a round of applause after delivering a dig against President Trump during the public testimony of EU Ambassador Gordon Sondland Wednesday.
After Rep. Mike Conway (R-TX) brought up a Washington Post article, which mentioned that House Intelligence Chair Adam Schiff’s (D-CA) claim that “the whistleblower has a statutory right to anonymity received three Pinocchios,” Speier said that “the President of the United States has five Pinocchios on a daily basis — so let’s not go there.”
Speier’s remark prompted laughs and applause.
Watch Speier’s comment below:


You get access to the course and will be assigned to a group of 5 people. Your group will get access to a special forum where you can discuss your projects and your progress. I will be available as well for questions and help.
{{ if .group.discount }}
$450
{{end }}
${{ .group.price | default 450}}


Track this PVT test, JIRA ISSUE .
Tests: ${report.count}, Passed: ${report.passed}, Not passed: ${report.notPassed}, Time consumed: ${report.during}ms
<#if report.notPassedTestReports?has_content> <#list report.getNotPassedTestReports().keySet() as testName> <#assign testReport = report.getTestReport(testName)/>| File name | Path | Status |
| ${filterEntry.key} |
<#list filterEntry.value as path>
${path}
<#if path_has_next>#if> #list> |
not_passed |
Passed: ${testReport.validation.valid?c}
Description: ${testReport.validation.testcase.getDescription()}
Time consumed: ${testReport.during}ms
Testcase Class: ${testName}
Test Config:
resources: ${testReport.testConfig.resources}
filters: ${testReport.testConfig.filters}
params: ${testReport.testConfig.params}
Exception: <#if testReport.validation.throwable?has_content>${testReport.validation.throwable}#if>
<#if !testReport.validation.throwable?has_content>| File name | Path | Status |
| ${filterEntry.key} |
<#list filterEntry.value as path>
${path}
<#if path_has_next>#if> #list> |
not_passed |
| File | Status |
| ${filter} | passed |
| File name | Path | Status |
| ${filterEntry.key} |
<#list filterEntry.value as path>
${path}
<#if path_has_next>#if> #list> |
filtered |
| File name | Path | Status |
| ${filterEntry.key} |
<#list filterEntry.value as path>
${path}
<#if path_has_next>#if> #list> |
not_passed |
| File name | Path | Status |
| ${filterEntry.key} |
<#list filterEntry.value as path>
${path}
<#if path_has_next>#if> #list> |
added |
| File name | Path | Status |
| ${filterEntry.key} |
<#list filterEntry.value as path>
${path}
<#if path_has_next>#if> #list> |
removed |
| File name | Size | Status |
| ${filterEntry.key} | ${filterEntry.value[0].length()} -> ${filterEntry.value[1].length()} | changed |
| File name | Path | Status |
| ${filterEntry.key} |
<#list filterEntry.value as path>
${path}
<#if path_has_next>#if> #list> |
unchanged |
| File name | Path | Status |
| ${filterEntry.key} |
<#list filterEntry.value as path>
${path}
<#if path_has_next>#if> #list> |
filtered |
This report is generated by PVT(Productisation Verification Tool), part of Project-PNC.


Little Paws Are Cold: Golden Retriever Pup Wants to Go Home
Every doggo likes to eat and play, but their favourite thing is to go outside and walk for a few hours… or for a few days. But sometimes it is too cold even for those that have a thick coat of fur, so they have to hurry and rush back to warm and cozy houses.
 But the snow is too cold for the pup – so it needs to wrap it up as fast as possible.


--- title: "3rd - 6th Grade Summer Camps" layout: "default" published: false ---
Back to main Summer Camp page
2020 Summer Camp registration will open on February 24 to Garden members and February 26 to the public.
Check back in mid/late January for updated 2020 Summer Camp classes!
Calling all actors and actresses! Spend the week exploring drama, dance, visual arts, and more in this FULL-DAY theater camp. Throughout camp, you'll learn to act, create props and backdrops, and work with your fellow thespians to produce and star in a real play. End the week with a live performance of your play in the Garden showcasing all you've learned.
Click Here for Camp Overview.
{% include register-button.html %}Red Butte Garden
Members: $252 Public: $315
801-581-8454


~12:40AM, June 16, 2005.
I had decided to try Salvia tonight. The main reason being that I when I took my garbage-can to the road, I caught a whiff of the minty-aroma that Salvia stores and took this as a hint. I went up to my room, got all the essentials for a Salvia smoke, and had only one dim light on in my room. I put my laptop to play Nitrogen by Juno Reactor, as always. I crumbled some of the new plain leaf that I had received and lit it up. About 20 seconds in, I started to feel the slight buzz of Salvia. I decided to try out the Standardized 6x this time, as the Non-Standardized 10x had done nothing before. I took about 1/6th of a gram and put it in the bowl, lit it, and inhaled.
Wham! ----------No, really . . . WHAM!!!!!
I don’t even remember exhaling the smoke from my lungs. The feeling was so sudden, and so confusing, that I had lost track of who I was, where I was, and what the hell I was doing. I looked down in front of me at my supplies I had used to smoke with. My vision was faint and dim like the reverberation effect when a video camera is pointed at a blank TV screen, but the supplies (lighter, bong, Salvia, trash bag) I could see seemed like they were 10 feet apart from each other. I tried to realize what the purpose of this trip was, but the feeling and “quest” had already engulfed me; I was to put back all my credentials in their appropriate spot in a certain amount of time. Why? I have NO idea. It was like something or someone would find them and punish me for having them (i.e. my mother).
So I sat there, DAZED as ALL HELL, holding my bong in my hand, trying to figure out what it was that I was holding. Reality came in for a split second, just long enough to say “It’s a BONG!” So I got up, still dazed and confused to eternity, and wobbled over to my bed with the bag of leaves that I smoked in one hand and my bong in the other. These items were supposed to go in my dresser and my desk – on the OTHER side of the room. I had NO idea what I was doing or where I was going. So I finally made it to my desk and put the leaves in safely, then went over to my dresser and hid my bong.  I don’t know of any other way to put it.
I picked up the rest of the things that needed placing back. Again, still dazed out of my mind. I couldn’t see straight for the life of me and I was beginning to panic. I’ve never been drunk (only buzzed) but from what I’ve experienced with alcohol, I don’t think you could get any more “drunk” feeling than this. The feeling I had was worse than fear. It was a feeling of never coming back to my real self. At that moment, I realized just how much I missed reality and being “normal”. This “Salvia” feeling was not to my liking at ALL. The feeling that this would never end was in the back of my head the whole time, but I kept telling myself that it would be over soon, and that it had already been a few minutes since I had inhaled the smoke.
I panicked even more.  It also felt like part of my brain (possibly even my mind) was extending out of my ears, like it was trying to expand (funny, huh?). I felt like I wasn’t in my body. It resembled the feeling of being at the point of asleep and awake at the same time. I could SEE what I was doing, but I wasn’t exactly CONTROLLING it. Everything that I did was out of sheer habit, and nothing more. I had no mind to guide my body and tell it what to do, and I was scared shitless that this feeling would never end. I took a few deep breaths and drank some water to try and calm myself down (myself = my mind that I couldn’t control).
I went downstairs and outside to try and get some fresh air. I was stumbling
around aimlessly on my porch thrusting my body back and forth to get some air into my lungs as if it were the first time I had tried the little technique of “breathing”. My cat was on the rim of my pool, in which he quickly sprang forth towards me and ran his body on the side of my leg. I went around the corner of my house where my dog was barking uncontrollably and tried to whistle for her to come back near the house. Instead of a whistle that came out of my mouth, I made the noise “Shhhh!” Odd.
I went back inside, still panicking to get rid of this “non-existing” feeling now, and went back upstairs to take a shower. I managed to set towels out and turn the faucet on a decent temperature for the water. I jumped in, and splashed water all over my face trying to wake myself up from this nightmare it had become. I managed to clean myself, only asking controversial questions like if I had washed my hair yet, but not remembering a thing that I had done 20 seconds ago. I peaked out of the curtains at my sink to see if I might be coming down from all of this, but as I saw all of the colors and light from my sink look as if a sunburst had appeared in my bathroom, I decided to stay in the shower a bit longer to see if the water might help to wake me.
What seemed 10 minutes later, I stepped out, with still a very euphoric-like feeling, got dressed, and went back into my room which had become a horror scene in my mind from what had happened in the last 30 minutes. All of the fear I had was still with me. I could have broken down and cried from the agony that my mind had weighed upon me. The feeling of this “fear” was similar to the feeling of being so utterly and dreadfully bored to the point that you just “give up” on finding something to do and feel like doing nothing else but dieing. Although it may have been that feeling, multiplied by about 5.
About 10-15 minutes later, I had made up my mind that the feeling WAS going to pass, after all. It had come down quite a bit since taking a shower, now that I had realized it. I just hoped that I wouldn’t have to interact with any of my late-night family members that might be wandering the house. I decided to interact with a game on my downstairs’ computer, instead. I always got myself engulfed by the game, wasting hours of enjoyment playing, so I decided that this would probably be my best bet at losing some time to release me of this prison I was in. About 30 minutes passed, and I looked around in the kitchen at my surroundings. They all seemed very still and quiet, and more importantly, I was back to myself again.
I sat there for a few minutes, trying to recollect what all had happened to me in the past hour or so, but couldn’t even comprehend the fact that everything that happened in that 1 hour time period seemed like 5 minutes. And now, I am writing this report, informing you that it will be a loooooong time before I embark on another journey with Salvia. I think this was her fair warning of telling me that I am not quite ready – and I don’t plan on arguing with something that can throw me for a complete loop in my existence. Maybe a later day.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


- ColorFinder - a tool for exploring the relationship between colors (chroma, tints, tones, shades etc.)
- Fixed Size Div - This is a test of an interesting responsive div layout I've played with off and on for quite a while
- Fixed Header 'Table' - This is a test to see if I could create a 'table' layout with a fixed header
- Simple Menu - a test of a simple menu layout
- Flexbox - tweaking a flexbox layout
- SaltGenerator - a tool for generating salt based on user interaction


This is the title of my latest journal article.
{{ site.name }}, Author Two, Author Three
Journal title volume (year) page-page.
This is the title of my second most recent journal article.
{{ site.name }}, Author Two, Author Three
Journal title volume (year) page-page.


This site is intended to host the Mustang index JSON file
[link]
Payton Dwyer
[link]
Captain America
[link]


Abstract
- Background
Visualizing your data can be the key to success in projects because it can reveal hidden insights in the data, and improve understanding. The best way to convince people is by letting them see and interact with their data. Despite many visualization packages being available in Python, it is not always straightforward to make beautiful stand-alone and interactive charts that can also work outside your own machine. The key advantage of D3 is that it works with web standards so you don’t need any other technology than a browser to make use of D3. Importantly, interactive charts can help to not just tell the reader something but let the reader see, engage, and ask questions.
- Aim
Creating a a python package that simplifies the task of creating interactive and stand-alone networks in d3 javascript using python.
- Results
The
d3graph
library is a Python library that is built on D3 and creates a stand-alone, and interactive force-directed network graph. The input data is an adjacency matrix for which the columns and indexes are the nodes and the elements with a value of one or larger are considered to be an edge. The output is a single HTML file that contains the interactive force-directed graph.d3graph
has several features, among them a slider that can break the edges of the network based on the edge value, a double click on a node will highlight the node and its connected edges and many more options to customize the network based on the edge and node properties.For this package I was inspired by d3 javascript examples but there was no python package that could create such interactive networks. Therefore I decided to create a package that automatically creates d3js javascript and html code based on a input adjacency matrix in python! This library does not require you any additional installation, downloads or setting paths to your systems environments. You just need python and this library. All other is taken care off. Huray!
Schematic overview
The schematic overview of our approach is as following:


Toggle navigation
BOOM!
WORK
About
Next Project
Student Brief at Shillington college.
TECHNOLOGIES USED
SKILLS USED
Adobe Photoshop
Grapic Design | Branding
Adobe Indesign | Adobe Illustrator
Web Design


DRESSES
RENTED DRESSES
Edit rent
Please fix errors below:
Dress name
Tulle dress with fringes
[errors]
Client
[errors]
Date
[errors]


Hello!
I am very excited to welcome you to our brand new website the-teachers-coach.com. We hope that you become part of our community.
Sarah x
Watch this fabulous video of Dr Robert Anthony's to appreciate the good things you already have in your life. Diamonds
Can you think of three diamonds you already possess. Email them to me at<EMAIL_ADDRESS>and I will post my three favourites!


TOMMY BOY A film review by Jer Fairall Copyright 1996 Jer Fairall
(1995) ** Starring Chris Farley, David Spade, Brian Dennehy, Bo Derek, Rob Lowe, Dan Aykroyd Directed By Peter Segal
I know that the critics of America all disagree with me but I think that Chris Farley is pretty funny. He was enjoyable back when Saturday night Live was still watchable and he had a funny cameo in fellow SNL-alumni Adam Sandler's vehicle "Billy Madison" and he is just as amusing in his first starring vehicle "Tommy Boy." The plot is pretty simple. Farley plays Tommy, the clumsy, overweight and dim witted son of the wealthy owner of an automobile company (played nicely Brian Dennehy). When tommy's father has an untimely passing, the company is in danger of slipping out of the families hands and into the posession of two scam artists (Bo Derek and Rob Lowe). So Tommy, with the help of one of the companies ass-kissing employees (smugly played by SNL's David Spade) goes on the road in order to sell enough goods to save the company. The bulk of the movie consists pretty much of things going wrong on the road and Spade getting mad at Farley who is always screwing up somehow. Alot of it seems to be trying to imitate the same formula from the great John Candy/Steve Martin film "Planes Trains and Automobiles." This is not a very hard movie to review. It's pretty much a hit-and-miss comedy. I did enjoy Farley and I especially like the scene where he and Spade end up singing along to the Carpenters shmaltz classic "Superstar." I just wish that the movie hit more than it missed.
Review By Jer Fairall<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Define the “#uses_yui_tree” class
method, which sets up instance variables “@yui_tree_options
”
and “@uses_yui_tree
” within any controller calling the method.
See “self.included” in the plugin code for more information.
The “#uses_yui_tree”
method can be passed two optional options hashes. The first specifies
options for the YUI tree. The second is passed directly to the Rails before_filter
method as filter options and this lets you state conditions for which “#uses_yui_tree” applies
(e.g. “:only => ...
” for only certain actions or
“:except => ...
” for all actions except those listed). See
the Rails filter API documentation
for full details.
Most options for YUI trees can be specified in any of three places:
In the YAML configuration file.
In a call to “#uses_yui_tree” from a controller.
In a call to the “YuiTree::YuiTreeHelper#yui_tree” helper method from a view.
Options in the YAML file are application-global and overriden by those specified in a controller, which are controller-global and in turn overriden by local options given to helper method calls in views.
Some options only make sense if specified in the YAML configuration file and so cannot be specified elsewhere. When installed the plugin writes a default configuration file in “config/yui_tree.yml”; see this for further information on the option meainings:
:version
:javascript_base_uri
:additional_yui_javascripts
(an optional item)
The following options usually only make sense if given in the YAML configuration file and have default values written there, but they can be specified per-controller or in each helper call in views if you really want to do that:
:xhr_timeout
:div_class
(the class assigned to any DIV into which a YUI
tree is built)
These options can appear in the YAML file or here only, but not in helper calls for individual views:
:body_class
(a class name added to any existing class name(s)
on the BODY element of the HTML document) - if “yui-skin-sam
”
is used then CSS files for this skin will be included automatically, else
you must manually ensure that all relevant CSS resources are included.
Other options must be specified in calls to “#uses_yui_tree”, or to a helper function like “YuiTree::YuiTreeHelper#yui_tree” as they have no default values. You could put them into the YAML file but due to the nature of the options it is very likely that you'll specify them in method calls instead. In fact it's more likely that you will want to specify them in calls made in views rather than here in “#uses_yui_tree”, but you can establish Controller-global defaults by specifying the options here if you find this useful.
:root_model
If your model supports tree/nested-set like behaviour - for example, if
your model declares “acts_as_nested_set
” via the Awesome Nested Set
plugin - then specify the root model class here (e.g specify
“:root_model => Location
” or “:root_model =>
Category
”) as a Controller-global default. Nested set behaviour
assumes a class method called “roots” which takes no parameters and returns
an array of model instances which are tree roots; and an instance method
“leaf?” which also takes no parameters and returns
'true
' if the instance has no children (is a leaf
node), else returns 'false
'.
The root model is used by YUI tree creation code (e.g. see helper method
“YuiTree::YuiTreeHelper#yui_tree”)
to generate the root data set for the initial tree view. Alternatively,
specify this when you make the call to e.g. “YuiTree::YuiTreeHelper#yui_tree”
if you don't want to set a default here. By default the helper code
calls an instance method called “name” to obtain label text for the tree
nodes. Use the “:root_title_method
” option (see below) to
specify a different method name if necessary.
The root and child items can be sorted in various ways. See method “yui_tree_handled_xhr_request?” method for further information.
If you want to supply the collection of root objects yourself, rather than
using a “:root_model
” (see above) and its “roots” class
method, you can do so when building the tree in a view through a call to
the “YuiTree::YuiTreeHelper#yui_tree”
helper method. See its “:root_collection
” option for details.
Whenever you need to assemble an array of objects to be used as roots or
children, you must always build those objects with the “YuiTree.make_node_object”
method.
:root_title_method
If using “:root_model
” (see above) but with a model which uses
something other than a “name” method to return text for showing in tree
nodes, then specify the alternative method's name here as a symbol. It
must be an instance method for the model in question and should return a
non-empty string.
:xhr_url_method
Name of a method which will be invoked to get the prefix
of a URL used to fetch more tree data (when parent nodes are expanded for
the first time). This is usually a path to a controller's
'index' action, e.g. “:locations_path
” or
“:categories_path
”. The corresponding Controller action must
return an array of child data. It can use the
“yui_tree_handled_xhr_request?” method to do this or use entirely custom
code. It must return an array of child data as described above (see
“:root_model
”), generating array entries with the “YuiTree.make_node_object”
method. The parent's database ID is delivered to the controller action
via the “params” hash under key “:tree_parent_id
” and may have
a string, symbol or integer value type.
Some options are likely to be set per-tree but do have default values:
:select_leaf_only
Set to 'true
' if leaves (nodes without children) can
be selected but parents cannot, else 'false
'. Has an
internal default value of 'false
' (i.e. can select
anything).
A few YUI tree options can be set as global defaults when making calls to “#uses_yui_tree”, but such defaults only make sense if you use a single tree in any of the containing controller's views. For example, the option giving the ID of enclosing DIV inside which the tree is built falls into this category, since no two elements in a valid HTML document are allowed to have the same ID. It is up to you where you choose to specify these options - here, or individual calls to “YuiTree::YuiTreeHelper#yui_tree”.
:div_id
ID given to the DIV container into which trees are built. Only specify this as a controller-global default if you are only going to use one tree control in any given view, else more than one DIV container for more than one tree view would have the same ID; or make very sure that any views using more than one tree view specify overriding DIV IDs in those views' calls to “YuiTree::YuiTreeHelper#yui_tree”.
:div_class
As “:div_id
”, but even less frequently used! Usually you will
want application-wide styles to apply to trees via CSS and thus specify a
single application-global class name in the YUI tree plugin's YAML
configuration file, rather than specifying a controller-global value here,
or even a per-tree value in indivdual calls to “YuiTree::YuiTreeHelper#yui_tree”.
Nonetheless, the facility exists to use any of those three approaches
should they prove useful to you.
:target_form_field_id
Whenever a node is selected, its database ID is written as a value of the
“value
” (sic.) attribute of the HTML element identified by
this option so that a related form submission will contain the selected ID.
The field is usually a hidden INPUT element.
Although the tree has a multiple selection mode (see the documentation for “YuiTree::YuiTreeHelper#yui_tree” for details), by default it assumes that you always want to ultimately let the user select a single item in the tree and have that item's database ID passed back to a controller in a related form submission.
A value of 0 may indicate that a blank entry is use and has been selected.
See option “:include_blank
” in helper method “YuiTree::YuiTreeHelper#yui_tree”.
An empty string indicates that no nodes were highlighted at all. If you allow such things you should probably interpret this the same as the user explicitly selecting a blank entry. It's good to allow both as it isn't too friendly to assume the user will mean that deselecting all nodes means “none/blank”; it's good to have an explicit entry for that. You can still fault a no-selection form submission from the controller if the target form field value is empty rather than zero, should you wish to do so.
:target_name_field_id
Optional; if included, then when a node is selected, its display text is written as innerHTML inside the identified element. This lets you show the user which node was selected by its text, as well as by the TreeView's own highlight mechanism. This is handy if you're worried that a selected node in a collapsed branch remains selected, albeit invisibly - a TreeView implementation quirk, it seems.
If you specify a value for the “:include_blank
” option in a
call to helper method “YuiTree::YuiTreeHelper#yui_tree”,
then note that the specified string will be written into the name field if
either a “blank” tree entry item is explicitly selected, or if all items in
the tree are entirely deselected. This goes back to the idea in
“:target_form_field_id
” above of a zero ID value, or a blank
ID value, being usually treated as the same thing; but again, the
controller can always treat the two conditions as distinct from one another
if it so wishes.
# Location model "acts_as_nested_set"; uses Awesome Nested Set plugin; # thus has "roots" and "leaf?" methods which act as expected. Location # objects have a displayable name property in "name". uses_yui_tree( { :root_model => Location, :xhr_url_method => :locations_path }, { :only => [ :edit, :update ] } )
This prepares the Controller for a YUI tree using a “Location” model. The tree will obtain new data by a JSON XHR request to the URL returned by a call to “locations_path” with “.js” added as a suffix. Only the “:edit” and “:update” actions can use the tree. Listing both of these actions in the “:only” clause is vital since the Controller's “update” code might re-render the “edit” view (and thus the tree) because of form validation errors. Alternatively use “:exclude” rather than “:only”, or omit such a clause altogether to prepare all the controller's views for YUI trees.
An XHR URL method of “locations_path” will (assuming sane routes!) lead to
an “index” action of a controller for the Location model. The index method
must be aware of the YUI tree JSON requests - see
“yui_tree_handled_xhr_request?” or use the usual Rails “respond_to do
|format| ... format.js do ...
” construct.
def index return if yui_tree_handled_xhr_request?( Location ); # ...other processing code... end
A helper method such as “YuiTree::YuiTreeHelper#yui_tree” must be invoked somewhere in the “:edit” action's view (e.g. in “edit.html.erb”) so that the tree actually gets built:
<%= hidden_field_tag( 'foo', '[currently selected item ID here]' ) %> <%= yui_tree( :target_form_field_id => 'foo' ) %>
# File lib/yui_tree/yui_tree.rb, line 247 def uses_yui_tree( tree_options = {}, filter_options = {} ) proc = Proc.new do | c | c.instance_variable_set( :@yui_tree_options, tree_options ) c.instance_variable_set( :@uses_yui_tree, true ) end before_filter( proc, filter_options ) # See the dummy, static version of "yui_tree_handled_xhr_request?" below # for documentation. # self.class_eval %Q( define_method( :yui_tree_handled_xhr_request? ) do | model, *optional | result = false # WARNING: By default Rails treats XHR requests as ".js" format, if # no other format indication (e.g. filename extension, very specific # HTTP Accept header) exists. As a result this code can be run for # other XHR requests coming into your controller even though you # think it ought not to be. Hence the "params.has_key?" check, to try # and guard against accidental execution. if ( request.xhr? && params.has_key?( :tree_parent_id ) ) respond_to do | format | format.js do # Use find_by_id() rather than just find() to avoid an exception if # the item cannot be located. parent = model.find_by_id( params[ :tree_parent_id ] ) if ( parent.nil? ) render :json => [] else children = parent.children() if ( model.respond_to?( :apply_default_sort_order ) ) model.apply_default_sort_order( children ) end children.map!() do | child | YuiTree::make_node_object( child.id, child.send( optional[ 0 ] || YuiTree::YUI_TREE_DEFAULT_TITLE_METHOD ), child.send( optional[ 1 ] || :leaf? ) ) end render :json => children end result = true end # format.js do end # respond_to do | format | end # if ( request.xhr? ... ) result # Can't do "return result"; leads to ThreadError exception. end # define_method... ) end
When the tree calls back via AJAX and needs some children to fill in a tree branch, call here to return appropriate data. Pass in the model to find from (e.g. Category, Location - a class, not a string or symbol), then optionally the name of the model instance method used to obtain the text to show for each node (default is “name”) and the name of a method used to find out if the item is a leaf (default is “leaf?”) - it should return 'true' if so, else 'false'. Models which “act_as_nested_set” using the Awesome Nested Set plug-in are compatible with the defaults.
If you want the tree order items automatically sorted then add a class method called “apply_default_sort_order” to your model. This is passed an array of model object instances and should sort the array in-place (e.g. with the Array “sort!” method). The method's return value is ignored. If the model has no “apply_default_sort_order” method then the collection retrieved from the database is left in default sort order. If you have simple requirements then using a call to Rails' “default_scope” method from your model is the most efficient way to achieve sorted results. For example, in your model issue:
default_scope( { :order => 'name DESC' } )
…to have all collections of that model returned by finder methods sorted in descending order by a “name” field by default. This applies to all finds done by your application, not just those related to YUI trees, so use the “apply_default_sort_order” approach to restrict the ordering to YUI tree views only.
A controller example inside an action which gets invoked when the XHR request comes in:
def action_name return if yui_tree_handled_xhr_request?( Location, :title, :isLeaf? ) # ...rest of normal action code... end
This would handle YUI tree requests for a Location model using method “title” (rather than the default of “name”) to obtain the human-readable names of locations and method “isLeaf?” (rather than the default of “leaf?”) to determine whether or not the item is at the end of a branch.
# File lib/yui_tree/yui_tree.rb, line 354 def yui_tree_handled_xhr_request? # This method is generated dynamically at run-time, the dynamic version # overwriting this one. The method here exists purely so that the RDoc # documentation generator will create documentation for the method. # Please see the implementation of "uses_yui_tree" above to see the code # for the dynamically generated method. end


 I’ve found it makes a great pie filling when combined with a little pancetta, to balance its leanness. Make this warming, hearty dish during autumn and winter when you’ll really appreciate it and rabbit is at its best.
Equipment and preparation: you will need four individual pie dishes.
Combine the flour and salt in a large bowl. Put the butter and lard in a separate bowl, mixing them together loosely.
Take one quarter of the mixed fats and rub them into the flour lightly with your fingertips.
Combine the lemon juice and 130ml/4fl oz of water and mix lightly into the flour to form a soft dough.
Roll out the dough on a well-floured surface to a rectangle, about 10x30cm/4x12in.
Take another quarter of the diced fats and dot evenly over the top two-thirds of the pastry rectangle.
Now fold the empty bottom third up and the top third down over it, as if folding a letter.
Turn the dough 90° and seal the edges by pressing down with your fingers.
Roll out the dough and repeat the dotting and folding three times to use all of the fat.
Wrap the dough in cling film and leave to chill in the fridge for at least 30 minutes.
For the filling, heat a large flameproof casserole over a high heat and add the butter and oil. Working in batches, brown the rabbit well all over (include the liver and kidneys, if you have them, for extra flavour).
Remove from the pan and set aside. Add the pancetta to the pan, reduce the heat a little and cook for four minutes, or until golden-brown and beginning to crisp around the edges. Add to the rabbit.
Turn the heat to low. Add the onion, garlic and fennel to the pan and cook gently for 2-3 minutes. Add the wine, increase the heat and let it bubble for a couple of minutes, scraping the base of the pan with a spatula to release any caramelised bits. Return the rabbit and pancetta to the pan. Add the stock and bay leaf, bring to a simmer, cover and simmer gently for 1½ hours, until the rabbit is tender.
Remove the rabbit from the pan and leave until cool enough to handle, then strip the meat from the bones and put into a large bowl.
Bring the contents of the pan to the boil and boil to reduce the volume of liquid by half. Stir in the cream and bring back to the boil. Add the parsley, taste the sauce and season with salt and pepper as required. Return the rabbit meat to the pan and turn to coat in the sauce. Divide the filling between four individual pie dishes. Leave to cool.
Preheat the oven to 200C/400F/Gas 6.
On a floured surface, roll out the pastry to about 5mm thick. Brush the edges of the pie dishes with beaten egg and cut pieces of pastry to place over each. Press round the edges to seal and trim off the excess pastry neatly. Brush the top of the pies with more egg.
Bake for 20–30 minutes, or until the pastry is golden-brown and the filling bubbling. Leave to settle for 10 minutes or so, then serve, with plain boiled potatoes, carrots and a green vegetable.


| Setting | Default | Description |
|---|---|---|
| context | body | Context which sidebar will appear inside |
| exclusive | false | Whether multiple sidebars can be open at once |
| closable | true | Whether sidebar can be closed by clicking on page |
| dimPage | true | Whether to dim page contents when sidebar is visible |
| scrollLock | false | Whether to lock page scroll when sidebar is visible |
| returnScroll | false | Whether to return to original scroll position when sidebar is hidden, automatically occurs with transition: scale |
| delaySetup | false | When sidebar is initialized without the proper HTML, using this option will defer creation of DOM to use requestAnimationFrame .
|
| Setting | Default | Description |
|---|---|---|
| transition | auto | Named transition to use when animating sidebar. Defaults to 'auto' which selects transition from defaultTransition based on direction.
|
| mobileTransition | auto | Named transition to use when animating when detecting mobile device. Defaults to 'auto' which selects transition
from defaultTransition based on direction.
|
| defaultTransition |
|
Default transitions for each direction and screen size, used with transition:
auto |
| useLegacy | false | Whether Javascript animations should be used. Defaults to false . Setting to
auto will use legacy animations only for browsers that do not support CSS transforms
|
| duration | 500 | Duration of sidebar animation when using legacy Javascript animation |
| easing | easeInOutQuint | Easing to use when using legacy Javascript animation |
| Setting | Context | Description |
|---|---|---|
| onVisible | Sidebar | Is called when a sidebar begins animating in. |
| onShow | Sidebar | Is called when a sidebar has finished animating in. |
| onChange | Sidebar | Is called when a sidebar begins to hide or show |
| onHide | Sidebar | Is called before a sidebar begins to animate out. |
| onHidden | Sidebar | Is called after a sidebar has finished animating out. |
| Setting | Default |
|---|---|
| namespace | sidebar |
| className |
|
| regExp |
|
| selector |
|
| Setting | Default | Description |
|---|---|---|
| name | Sidebar | Name used in debug logs |
| silent | False | Silences all console output including error messages, regardless of other debug settings. |
| debug | False | Provides standard debug output to console |
| performance | True | Provides standard debug output to console |
| verbose | True | Provides ancillary debug output to console |
| errors |
|