"""
UDHR translations
-----------------
A collection of translations of the Universal Declaration of Human Rights (UDHR),
a milestone document in the history of human rights that first, formally established
fundamental human rights to be universally protected.
Records include the following fields:
- ``text``: Full text of the translated UDHR document.
- ``lang``: ISO-639-1 language code of the text.
- ``lang_name``: Ethnologue entry for the language (see https://www.ethnologue.com).
The source dataset was compiled and is updated by the Unicode Consortium
as a way to demonstrate the use of unicode in representing a wide variety of languages.
In fact, the UDHR was chosen because it's been translated into more languages
than any other document! However, this dataset only provides access to records
translated into ISO-639-1 languages — that is, major living languages *only*,
rather than every language, major or minor, that has ever existed. If you need access
to texts in those other languages, you can find them at :attr:`UDHR._texts_dirpath`.
For more details, go to https://unicode.org/udhr.
"""
import io
import itertools
import logging
import pathlib
import xml
from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Union
from .. import constants, preprocessing, utils
from .. import io as tio
from .base import Dataset
LOGGER = logging.getLogger(__name__)
NAME = "udhr"
META = {
"site_url": "http://www.ohchr.org/EN/UDHR",
"description": (
"A collection of translations of the Universal Declaration of Human Rights (UDHR), "
"a milestone document in the history of human rights that first, formally established "
"fundamental human rights to be universally protected."
)
}
DOWNLOAD_URL = "https://unicode.org/udhr/assemblies/udhr_txt.zip"
[docs]class UDHR(Dataset):
"""
Stream a collection of UDHR translations from disk, either as texts or
text + metadata pairs.
Download the data (one time only!), saving and extracting its contents to disk::
>>> import textacy.datasets
>>> ds = textacy.datasets.UDHR()
>>> ds.download()
>>> ds.info
{'name': 'udhr',
'site_url': 'http://www.ohchr.org/EN/UDHR',
'description': 'A collection of translations of the Universal Declaration of Human Rights (UDHR), a milestone document in the history of human rights that first, formally established fundamental human rights to be universally protected.'}
Iterate over translations as texts or records with both text and metadata::
>>> for text in ds.texts(limit=5):
... print(text[:500])
>>> for text, meta in ds.records(limit=5):
... print("\\n{} ({})\\n{}".format(meta["lang_name"], meta["lang"], text[:500]))
Filter translations by language, and note that some languages have multiple translations::
>>> for text, meta in ds.records(lang="en"):
... print("\\n{} ({})\\n{}".format(meta["lang_name"], meta["lang"], text[:500]))
>>> for text, meta in ds.records(lang="zh"):
... print("\\n{} ({})\\n{}".format(meta["lang_name"], meta["lang"], text[:500]))
Note: Streaming translations into a :class:`textacy.Corpus <textacy.corpus.Corpus>`
doesn't work as for other available datasets, since this dataset is multilingual.
Args:
data_dir (str or :class:`pathlib.Path`): Path to directory on disk
under which the data is stored, i.e. ``/path/to/data_dir/udhr``.
Attributes:
langs (Set[str]): All distinct language codes with texts in this dataset,
e.g. "en" for English.
"""
def __init__(
self,
data_dir: Union[str, pathlib.Path] = constants.DEFAULT_DATA_DIR.joinpath(NAME),
):
super().__init__(NAME, meta=META)
self.data_dir = utils.to_path(data_dir).resolve()
self._texts_dirpath = self.data_dir.joinpath("udhr_txt")
self._index_filepath = self._texts_dirpath.joinpath("index.xml")
self._index = None
self.langs = None
[docs] def download(self, *, force: bool = False) -> None:
"""
Download the data as a zipped archive of language-specific text files,
then save it to disk and extract its contents under the ``data_dir`` directory.
Args:
force: If True, download the dataset, even if it already exists
on disk under ``data_dir``.
"""
filepath = tio.download_file(
DOWNLOAD_URL,
filename="udhr_txt.zip",
dirpath=self.data_dir,
force=force,
)
if filepath:
tio.unpack_archive(filepath, extract_dir=self.data_dir.joinpath("udhr_txt"))
self._check_data()
def _check_data(self):
"""Check that necessary data is found on disk, or raise an OSError."""
if not self._texts_dirpath.is_dir():
raise OSError(
"data directory {} not found; "
"has the dataset been downloaded?".format(self._texts_dirpath)
)
if not self._index_filepath.is_file():
raise OSError(
"data index file {} not found; "
"has the dataset been downloaded?".format(self._index_filepath)
)
@property
def index(self) -> Optional[List[Dict[str, Any]]]:
if not self._index:
try:
self._index = self._load_and_parse_index()
except OSError as e:
LOGGER.error(e)
return self._index
def _load_and_parse_index(self):
"""
Read in index xml file from :attr:`UDHR._index_filepath`; skip elements
without valid ISO-639-1 language code or sufficient translation quality,
then convert into a list of dicts with key metadata, including filenames.
"""
index = []
tree = xml.etree.ElementTree.parse(self._index_filepath)
root = tree.getroot()
for ele in root.iterfind("udhr"):
iso_lang_code = ele.get("bcp47", "").split("-", 1)[0]
stage = int(ele.get("stage"))
if len(iso_lang_code) != 2 or stage < 3:
continue
else:
index.append(
{
"filename": "udhr_{}.txt".format(ele.get("f")),
"lang": iso_lang_code,
"lang_name": ele.get("n"),
}
)
# get set of all available langs, so users can filter on it
self.langs = {item["lang"] for item in index}
return index
def _load_and_parse_text_file(self, filepath):
with io.open(filepath, mode="rt", encoding="utf-8") as f:
text_lines = [line.strip() for line in f.readlines()]
# chop off the header, if it exists
try:
header_idx = text_lines.index("---")
text_lines = text_lines[header_idx + 1:]
except ValueError:
pass
return preprocessing.normalize_whitespace("\n".join(text_lines))
def __iter__(self):
self._check_data()
for item in self.index:
filepath = self._texts_dirpath.joinpath(item["filename"])
record = item.copy()
record["text"] = self._load_and_parse_text_file(filepath)
yield record
def _filtered_iter(self, lang):
# this dataset is unusual in that the only filter we can really offer is lang
# so we might as well avoid loading texts in unwanted languages
if lang:
self._check_data()
lang = utils.validate_set_members(lang, str, valid_vals=self.langs)
for item in self.index:
if item["lang"] in lang:
filepath = self._texts_dirpath.joinpath(item["filename"])
record = item.copy()
record["text"] = self._load_and_parse_text_file(filepath)
yield record
else:
for record in self:
yield record
[docs] def texts(
self,
*,
lang: Optional[Union[str, Set[str]]] = None,
limit: Optional[int] = None,
) -> Iterable[str]:
"""
Iterate over records in this dataset, optionally filtering by language,
and yield texts only.
Args:
lang: Filter records by the language in which they're written;
see :attr:`UDHR.langs`.
limit: Yield no more than ``limit`` texts that match specified filter.
Yields:
Text of the next record in dataset passing filters.
Raises:
ValueError: If any filtering options are invalid.
"""
for record in itertools.islice(self._filtered_iter(lang), limit):
yield record["text"]
[docs] def records(
self,
*,
lang: Optional[Union[str, Set[str]]] = None,
limit: Optional[int] = None,
) -> Iterable[Tuple[str, dict]]:
"""
Iterate over reocrds in this dataset, optionally filtering by a language,
and yield text + metadata pairs.
Args:
lang: Filter records by the language in which they're written;
see :attr:`UDHR.langs`.
limit: Yield no more than ``limit`` texts that match specified filter.
Yields:
Text of the next record in dataset passing filters,
and its corresponding metadata.
Raises:
ValueError: If any filtering options are invalid.
"""
for record in itertools.islice(self._filtered_iter(lang), limit):
yield record.pop("text"), record


The overall goal of this assignment is to assess your ability to implement and use Active Record model relationships. This includes:
rails g model
or rails g scaffold
):through
optionseeds.rb
filedefault_scope
queriesThe functional goal of this assignment is to implement relationships and query behavior for the following four (4) model classes
Create database migrations for relationships not present when the model classes were created
Create a DB schema for each model class and their relationships
Populate the DB with bootstrap data
Implement relationship features
Implement model class features
Create a new Rails application called todolists
. This will look quite a bit like what you did in the module 1 assignment.
Add the following specification to your Gemfile.
group :test do
gem 'rspec-rails', '~> 3.0'
end
Run the bundle
command to resolve new gems
From the todolists
application root directory, initialize the rspec tests using rails generate rspec:install
command.
[todolists]$ rails generate rspec:install
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
Add the following line to .rspec
to add verbose output to test results.
--format documentation
Download and extract the starter set of boostrap files.
|-- Gemfile
`-- spec
`-- assignment_spec.rb
overwrite your existing Gemfile with the Gemfile from the bootstrap fileset. They should be nearly identical, but this is done to make sure the gems and versions you use in your solution can be processed by the automated Grader when you submit. Any submission should be tested with this version of the file.
add the spec/assignment_spec.rb
file provided with the bootstrap fileset to the corresponding spec
directory that already exists under your application root directory (e.g., application-root-directory/spec/assignment_spec.rb
). This file contains tests that will help determine whether you have completed the assignment.
Run the rspec test(s) to receive feedback. rspec
must be run from the root directory of your application. All tests will (obviously) fail until you complete the specified solution.
$ rspec
...
Finished in 0.02831 seconds (files took 1.39 seconds to load)
56 examples, 1 failure, 54 pending
To focus test feedback on a specific step of the requirements, add "-e rq##" to the rspec command line to only evaluate that requirement. Pad all step numbers to two digits.
$ rspec -e rq01
Run options: include {:full_description=>/rq01/}
Assignment
rq01
Generate Rails application
must have top level structure of a rails application
Finished in 0.00356 seconds (files took 1.3 seconds to load)
1 example, 0 failures
$ rspec -e rq02
...
Finished in 0.00422 seconds (files took 2.16 seconds to load)
6 examples, 1 failure, 5 pending
Failed examples:
rspec ./spec/assignment_spec.rb:50 # Assignment rq02 User Model: User class created
Implement your Models and use the rspec tests to help verify your completed solution.
Submit your Rails app solution for grading.
Create a new Rails app called todolists
. Use the Gemfile provided in the boostrap files. Do not change the Gemfile from what is provided or your submitted solution may not be able to be processed by the grader (i.e., do not add any additional gems or change gem versions).
An Entity Relationship (ER) diagram is provided below to help depict each Model's relationship:
|------| 1 1 |----------|
| User |----------| Profile |
|------| |----------|
\
\
\ 1 * |----------| 1 * |----------|
\------| TodoList |----------| TodoItem |
|----------| |----------|
Re-use the User
model class and database table creation commands implemented in Assignment 1. (i.e., you may re-use the exact rails generate
command you used to generate this class from the previous assignment)
Reminder: Ruby/Rails conventions are that class names are CamelCase and file and method names are snake_case.
You must migrate the database schema at this time and in between each of the following steps to be able to pass the rspec tests incrementally.
$ rake db:migrate
$ rspec -e rq02
Run options: include {:full_description=>/rq02/}
Assignment
rq02
User Model:
User class created
User database structure in place
User class properties added
should respond to #username
should respond to #password_digest
should respond to #created_at
should respond to #updated_at
Finished in 0.19157 seconds (files took 1.27 seconds to load)
6 examples, 0 failures
Re-use the Profile
model class and database table creation commands implemented in Assignment 1, except this time create it with a reference to User
when you create the model class. The grader will look for the relationship to be included in the initial create table migration for this model class.
belongs_to
User)Also define the 1:1 has_one
relationship in the User
model class.
Profile
(i.e., User has_one
profile). Add appropriate options to have the User
model class delete a Profile
in a cascading fashionReminder: Relationships are only generated or migrated in the class forming the relationship (e.g., the many-side of a many:1). The inverse side of a relationship (e.g., the one-side of a 1:many) need only have the relationship declared in the model class and not in the database migration. In this case, Profile
is forming the relationship in the database and User
is the inverse side.
$ rake db:migrate
$ rspec -e rq03
Re-use the TodoList
model class implemented in Assignment 1 (i.e., you may re-use the exact rails generate
command you used to generate this class from the previous assignment). The grader will look for no relations in the initial create table migration for this model class.
$ rake db:migrate
$ rspec -e rq04
Create a database migration (hint: rails g migration
) that adds a database reference from the TodoLists
table to the Users
table. The grader will look for this relationship to be formed by a database table migration.
Also define the many:1 belongs_to
relationship in the TodoList
model class.
User
(i.e., TodoList belongs_to
User)Also define the 1:many has_many
relationship in the User
model class.
TodoList
(i.e., User has_many
todo_lists). Add appropriate options to have the User
model class delete a TodoList
in a cascading fashion$ rake db:migrate
$ rspec -e rq05
Re-use the TodoItem
model class implemented in Assignment 1, except this time create it with a many:1 belongs_to
relationship with TodoList
when you create the model class. The grader will look for the relationship to be included in the initial create table migration for this model class.
Also define the 1:many has_many
relationship in the TodoList
model class.
TodoItem
(i.e., TodoList has_many
todo_items). Add appropriate options to have the TodoList
model class delete a TodoItem
in a cascading fashionshell $ rake db:migrate $ rspec -e rq06
Migrate all database schema changes at this time if you have not yet done so. At this point you should have:
$ rake db:migrate
$ rspec -e rq07
Implement a 1:many :through
relationship from User
to TodoItem
by using the 1:many relationship from User
to TodoLists
as a source.
has_many
todo_items)$ rspec -e rq08
Create a seeds.rb file that will clear the existing data from the model tables and load the database with
User
Profile
for each User
TodoList
per User
that is due one year from the date the database is loaded
Date.today
provides today's date and 1.year
can be used to define one year)TodoList
contains five (5) TodoItems
(there must be 20 total)TodoItem
having a due date of one year from the time the database is loadedTodoItem
must have an arbitrary title
and description
s(Hint: you may want to consider using loops)
Once the seeds.rb file is created, populate the database using rake db:seed
$ rake db:seed
$ rspec -e rq09
Add default_scope
to both TodoList
and TodoItem
models to always return collectons from the database ordered by due dates with earliest dates first.
shell $ rspec -e rq10
Add validation to User
and Profile
models
username
to enforce that username be supplied by using a built-in validatorfirst_name
or last_name
to be null but not bothgender
to be either "male" or "female" by using a built-in validatormale
(gender) from having the first_name
"Sue" ;)$ rspec -e rq11
Add a cascade of deletes that will remove Profile
, TodoList
, and TodoItem
rows for any User
removed.
$ rspec -e rq12
Add a method to the User
model class called get_completed_count
, which:
TodoItems
the User
has completed using an aggregate query function
TodoItems
associated with a specific User
where completed:true
)shell $ rspec -e rq13
Add a class method to the Profile
class, called get_all_profiles
, which:
birth year
BETWEEN
SQL clause in a where
clause to locate Profiles
with birth years that are between min year and max year$ rspec -e rq14
Some unit tests have been provided in the bootstrap files and provide examples of tests the grader will be evaluating for when you submit your solution. They must be run from the project root directory.
$ rspec
...
Finished in 9.56 seconds (files took 1.41 seconds to load)
56 examples, 0 failures
You can run as many specific tests you wish be adding -e rq## -e rq##
shell $ rspec -e rq01 -e rq02
Submit an .zip archive (other archive forms not currently supported) with your solution root directory as the top-level (e.g., your Gemfile and sibling files must be in the root of the archive and not in a sub-folder. The grader will replace the spec files with fresh copies and will perform a test with different query terms.
|-- app
| |-- assets
| |-- controllers
| |-- helpers
| |-- mailers
| |-- models
| `-- views
|-- bin
|-- config
|-- config.ru
|-- db
|-- Gemfile
|-- Gemfile.lock
|-- lib
|-- log
|-- public
|-- Rakefile
|-- README.rdoc
|-- test
`-- vendor


Get(ScriptResult)Use this function as part of a calculation evaluated within a script. If a subscript doesn’t return a result, then the content of the script result will be empty.In the following example, the Find Customers script returns the results of a find request when it is called from the Do Reports script. Script Find Customers uses the optional script result of the Exit Script script step. Script Do Reports then uses Get(ScriptResult) to determine what other script steps should be performed based on the returned result stored in Get(ScriptResult).


Members in this forum can ask questions and get answers from which the members will vote for the most satisfying answer.


Epilogue
Enter your Micro.blog account email address and you'll receive a link to sign in:
Sign In
Email sent! Check your email on this device.


SiteMesh Example Site:
Title goes here
Body goes here. Blah blah blah.
Site disclaimer. This is an example.
Examples:
[
Static example
] [
ThymeLeaf example
] [
Freemarker example
] [
JSP example
] [
404 example
] [
500 example
]


/path/to/somewhere
Name
↓
Size
↓
Date
↓
../
-
-
test file 1
123kB
date
test file 2
321MB
date
test file 3
666
date
Powered by
Fancy Index


Django Stories 1.0.4 documentation
$ pip install django-stories
Add stories to your settings INSTALLED_APPS,
INSTALLED_APPS = (
...
'stories',
...
)
If you want to use story_relations, add the app to INSTALLED_APPS as well.
New in version 1.0.
INSTALLED_APPS = (
...
'stories',
'stories.relations',
...
)
Changed in version 1.0: The only requirement is BeautifulSoup for pagination
$ pip install BeautifulSoup
Stories may also require a couple django apps to be installed.
$ ./manage.py syncdb
If your using South run
New in version 1.0.
$ ./manage.py syncdb --migrate
Note
The initial migration for stories is a little special, if you plan to use a custom author model, please consult Custom Author Model Guide


--- layout: default title: GRITCULT path: home ---
DATABASE REPOSITORY OF MY EXISTENCE, EXEGESIS AND EXOBRAIN. Click here to sign up to my email!


Loading...
FEATURE_AUTOMATIC_GAIN
Audio.h
FEATURE_BASS
Audio.h
FEATURE_BASS_BOOST
Audio.h
FEATURE_BASS_LOUDNESS
Audio.h
FEATURE_DELAY
Audio.h
FEATURE_ENDPOINT_HALT
StdRequestType.h
FEATURE_GRAPHIC_EQUALIZER
Audio.h
FEATURE_MID
Audio.h
FEATURE_MUTE
Audio.h
FEATURE_REMOTE_WAKEUP
StdRequestType.h
FEATURE_TREBLE
Audio.h
FEATURE_VOLUME
Audio.h
Searching...
No Matches


Getting Started¶
This guide is supposed to provide all the information required to run first experiments. For generating series of experiments see Generating Series of Experiments.
Installation¶
The wann_genetic package can be install from the repository via pip. It is recommended to install the package in a virtual environment as the installation will add binaries to the system path (see Command Line Interfaces). Make sure to create the environment with python3.
Installation with virtualenv¶
# create the virtual environment
python3 -m virtualenv -p python3 venv
# activate the virtual environment (can be deactivated using 'deactivate')
. venv/bin/activate
# install the package
pip install<EMAIL_ADDRESS>Execution of a first experiment¶
All specification of wich task to train on and which hyper parameters are to be used is stored in one TOML file. Parameters that are not set in the spec file will take on default values. For a overview over the available parameters and default values see Parameters.
One simple available task is the iris task. A minimal specification could look like this:
[task]
name='iris'
[population]
num_generations=200 # number of iterations
size=100 # number of individuals in the population
[sampling]
# this section determines how weights are sampled
seed=0
distribution='lognormal'
mean=0
sigma=0.25
num_weight_samples_per_iteration=5
[postopt]
# this section determines how the best individuals (collected in the
# hall_of_fame) will be evaluated once the training has been completed
run_postopt=true
# compile a human-readable report
compile_report=true
# evaluate best individuals with 100 weights sampled from the specified random distribution
num_weights=100
# use all test sampels for evaluation (on iris at the moment training and test samples are identical)
num_samples=-1
Store this file (eg. in iris.toml) and invoke wann_genetic execution of the experiment via:
run_experiment iris.toml
For each execution a subdirectory is created in data
directory (see Parameters). The experiment data directory will contain the following file structure:
│ # contains some of the individuals produced during training
├── data.hdf5
│
│ # log output of training and post training evaluation
├── execution.log
│
| # generation-wise population metrics (can be used to track performance during evaluation)
├── metrics.json
│
│ # the parameters that were used for execution (with all default values inserted)
├── params.toml
│
│ # data produced by post training evaluation
└── report
│
│ # statistical measures on the best individuals (used for inter experiment comparisons)
├── stats.json
│
│ # human-readable report (including figures and statistical data)
├── report.md
│
│ # contains all the plot figures required for the report
└── media
To produce a html document from the markdown file, pandoc can be used. To create a pdf using pandoc the svg images might need to be converted to pdfs first (inside the report
subdirectory do):
for svg in $(echo "media/*.svg")
do
pdf="${svg%.*}.pdf"
echo "$svg - > $pdf"
rsvg-convert -f pdf -o "${pdf}" "${svg}"
done
Example report¶
The resulting report might look like this example report:


Okay so Im trying to learn how to write to a txt file and read it. I am still new to programming so I am a big noob :) However, I have come across a problem with my set out. Is there any other errors aswell?
// Cash Register.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include "Cash Register.h"
usingnamespace std;
int main()
{
cin >> Balance;
EndBalance();
return 0;
}
// Open Balance function
void StartBalance()
{
// Aint done this yet
}
// Save Balance function
void EndBalance()
{
EndBalance.open ("EndBalance.txt"); // EndBalance is not recognized either
EndBalance << Balance; // balance is not recognized
EndBalance.close();
};
Cash Register.h
1 2 3 4 5 6 7
#pragma once
class CashRegister
{
ofstream EndBalance;
int Balance;
}
I really think you should learn to use functions before you try to learn how to use a class. You have never declared a variable named Balance, in either main() or EndBalance(). If you're intending to use your class you've never declared an instance of that class either.
The two member variables of your class (EndBalance and Balance) only exist when there is a CashRegister instance (object) to go along with them. I would suggest reading the site's tutorial, where it makes an instance of a Rectangle class, with a length and width property.
I would also not name a function that same as a potential variable.


I am a Computer Science student focusing mainly on Information Systems at Stony Brook University. I am very passionate about building projects that help make our lives easier as well as help protect the environment.
I am very intrested in a variety of topics, ranging from machine learning to cloud computing to app and web dev. I have a lot of experience in computer vision and CNN in terms of machine learning, worked with core data and core vision in terms of app dev, and know full stack web dev.
View ResumeAn app to help keep records of all prescriptions. Uses core vision to read words from the picture taken, which is then converted into words and placed on the correct category which is then placed into a core data database.
The purpose of this app is not only to make the lives of people easier by having to worry less about losing prescriptions or being overwhelmed by having too many prescription papers, but also to limit the amount of trees being cut down which will be better for the environment.
A machine learning progrem dedicated to detect facial expressions. Uses Computer Vision and machine learning technology such keras and CNN to evaluate pixels from the picture which are placed in a matrix to determine what facial expression the person on the picture has. The results are then put onto a confusion matrix to evalute which expressions were detected correctly by the model and which ones the model had trouble predicting.
A progrem dedicated to stitch together different picture in order to create a panorama. Uses computer vision technology such as laplacian blending and perspective wraping to find pixels that are the same between the two picture to help stitch the images together. After finding similar pixels, uses RANSAC to transform and map the pixels so that the pictures overlap and creates a panorama.
Want to collaborate with me? Great!
Email


@fieldHorizontal(form("status"), List("label" -> "Status")) { (field, args) =>
@inputSelect(field, User.Status.all.map(s => (s.value, s.value)))
If your profile is Public, it will be listed in Gospeak speakers.
Otherwise, you can stay under the radar.
}
@fieldHorizontal(form("first-name"), List("label" -> "Name")) { (field, args) =>
@inputText(field, List("placeholder" -> "First Name", "autofocus" -> "true"))
@inputText(form("last-name"), List("placeholder" -> "Last Name"))
}
@fieldHorizontal(form("email"), List("label" -> "Email")) { (field, args) =>
@inputEmail(field, List("placeholder" -> "Email"))
}
@fieldHorizontal(form("avatar"), List("label" -> "Avatar")) { (field, args) =>
@inputImg(field, ImgConf.userAvatar())
}
@fieldHorizontal(form("title"), List("label" -> "Title")) { (field, args) =>
@inputText(field, List("placeholder" -> "Your job title, what you do or a very short intro"))
}
@fieldHorizontal(form("bio"), List("label" -> "Bio")) { (field, args) =>
@inputMarkdown(field, List("placeholder" -> "Tell people a bit more about you"))
}
@fieldHorizontal(form("mentoring"), List("label" -> "Mentoring")) { (field, args) =>
@inputMarkdown(field, List("placeholder" -> "Help new people become speaker..."))
Gospeak encourage people to become speakers. If you have some experience, take some time to mentor them. It will be very kind.
You can offer to to review CFP proposal, slides, give advices, propose repetitions or even be a co-speaker.
Use this area to describe what you can do and on which topics.
}


Well hello there! Welcome to my little corner! Here you can learn a bit more about me. And down below are some of the things I have been working along so far in my journey at Epicodus.
This is where it got a little sticky. We, my partner for the day and I missed the memo that we were supposed to put our work into different repositories for each project. Therefore we have one repository for 6 different mini projects. These two days we worked on getting familiar to HTML and CSS with some basic code.
On Day 3 of Epicodus we learned about the box model and cascading our code. These projects are meant for practice with styling and organizing our code.


Manage a list of approved recipient bitcoin addresses.
You can restrict withdrawals from this wallet to only go to addresses specified in this list. (optional)


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
When with us, you are part of commited colaborators.All aspects of our software development processes are intergrated, interactive
and agile
Our approach unifies designs, development and product management to create exceptional product
We start each project by understanding your business goals, the user's needs and the product requirements.
Then we help them translate them into effective and elegant solutions.
Our design practice offers a full range of services including brand strategy,interaction and visual design and user experience testing.
Throughout yuor project,our designers create and implement visual design and workflows,solicit user feedback and work with you to make sure what gets built is what is needed.
All engineers are fluent in the latest enterprise, mobile and web development technologies. They collaborate with your team to write, and improve code on a daily basis, using proven practices such as test-driven development and pair programming.
Planning and development is iterative. Because we are constantly coding and testing, the products we build are always ready to go live. This iterative process allows for changes as business requirements evolve.
Design
Kenya
Ontario
security
Design
Kenya
Weather
Informer
Lets
Chat
Mobile
Application
Mock-up
Kenya
Giraffe
Restaurant


This is a sample application that demonstrates how Office365 JavaScript APIs can be used to build a basic file explorer that enumerates files in your organizational OneDrive.
Login


Overview
A Kitchen Table event is a fun way to:
- hang out with friends around your kitchen table
- and make cool things on the web.
This guide will help! It's a community document, so please share your ideas to help improve it.
You can also see what other hosts have done or watch a fun slidecast about how to host at kitchen table event.
Facts and figures
{# Copy comes from VPN restricted admin section #} {{ page_data.figures|safe }}Before
Decide what you want to make
- Think about the interests and skill levels of the people you want to have at your event.
- You'll be using a tool called Thimble, which makes it very easy to make things on the web. Preview the Thimble projects and find a few you think your guests will like.
- Read our guidelines on planning safe events
Find a space and a date
- Find a comfortable, flexible space. Your kitchen or living room are good, or a nearby cafe. Make sure you can move the chairs and sit together in a circle.
- Think about wifi and power, good lighting, and snacks.
- Pick a date. Give yourself enough time and make sure the date works for your friends.
Invite your friends
- Create a page for your event.
- Write a short invitation.
- You can use the sample text below.
Want to remix a website? Join me in LOCATION, DATE.
I'm going to learn how play with code & thought you might want to, too!
On DATE we're hanging out in LOCATION to make something together online.
There will be yummy snacks, hacking, and the company of friends.
Bring a computer, if you can.
Let me know if you can come.
— Sincerely, YOU
During
Say hello
- When your guests arrive, make sure everyone has access to a laptop, power and the internet.
- Introduce the group, if they don't know each other.
- Give a brief overview. What will you make today? You can use the sample agenda below.
Learn HTML Fast — 5min
- This starter project helps you play around with the most common HTML elements using a visual editor.
- Open the project.
- Read through the comments on the left.
- Click on some of the HTML tags (marked between < >) to get oriented to the code.
- Try changing the words in between the h2 tags.
- Replace the link on line 47.
- Now you're ready for more advanced projects!
Make a meme — 10min
- This project makes it easy for you to create your own memes by mashing up text and images.
- Open the project.
- Search for a funny photo online. Copy the URL of the image.
- Replacing the link on line 32 with your new image URL.
- Now edit the text between the h1 and the h2 tags to give your image a new caption.
- If you want, you can keep adjusting the page by editing the other attributes, such as the background color.
- Press "Publish" in the top right-hand corner. Share your work!
Awesome Animal Builder — 15min
- Create you own unique Awesome Animal.
- Open the project.
- Scroll down to see what animals exist already. Do you want to borrow parts from them?
- Change line 36 from "changeme" to "rainforest".
- Modify the links on line 41 by copying parts from the animals at the bottom of the page.
- For example, change unknown.png to solenodon-tail.png
- Edit the text starting on line 53 to describe the new animal.
- Press "Publish" in the top right-hand corner. Share your work!
Keep hacking
- Check in with everyone. Answer questions and make sure they're finding projects they like and that fit their skill level.
- Explore more Thimble projects, if time permits.
- You can also create your own project.
Share your hacks
- Hit "Publish" in the top right corner when you're finished.
- Celebrate what you made. Ask your friends to show their work.
- If you like, please share your hacks with the world! You can publish the links to a blog or the social network of your choice.
- Please tag your work with #mozparty.
After
Wrap Up
- Ask everyone how it went. Encourage feedback about the event and the projects. What did they learn? What did they like? If they have suggestions for making it better, be sure to take notes.
- Talk about continuing to hack together. You may want to keep playing with these projects or to try new ones later. Talk about what your friends would like to do next, such as organize another kitchen table event.
- Set a date. If there's interest, pick a date for the next time!
Let us know how it went
- Please share your experience about hosting the event and the projects, including links to the things you made.
- We'll send an email reminder after the event to collect your feedback.
Getting Support
- If you need help at any time before, during or after your event, please contact us. We have a team of volunteers and staff members dedicated to helping organizers like you.


They emit low levels of light while maintaing a high standard of usability.
I like to write case studies, ux critiques, solutions about problems and more.


P1tr is an IRC bot written in Python by the guys of the AustrianGeekForce, which can be limitlessly expended with plugins.
If you are interested in joining the project visit our IRC channel (irc://irc.freenode.net/austriangeekforce). We are a small, friendly, open community. Your language, nationality, religious beliefs (emacs or vim?), and habits don't matter as long as you are able to communicate with us in English or German.
Dependencies:
*** P1tr IRC Bot 0.1alpha ******************* *** by AustrianGeekForce and contributors *** === INTRODUCTION === P1tr is a solid IRC bot written in Python. For establishing a connection it uses Twisted Words by Twisted Laboratories. Later P1tr will be capable of connecting to all protocols available in Twisted Words. Furthermore P1tr provides a powerful plug-in infrastructure which leaves no wish open (if it does, notify us, please). === REQUIREMENTS === Following stuff is required to run P1tr successfully: * Python >= 2.4 * Twisted >= 2.0 * Bazaar VCS (optional; to get the latest sources from trunk) P1tr has been successfully tested on the following Unix-line systems: * Gentoo * Mac OS X 10.5.x * Ubuntu 7.10, 8.04 === INSTALL === In case you want to install a halfway stable version: * Download http://server.austriangeekforce.net/p1tr/p1tr_0.1alpha.tar.gz * Unpack this file in a folder of your choice * Satisfy the requirements if you haven't already done so * Create a copy of file bot.conf.ex called bot.conf and edit it to suit your needs === LAUNCH === Launch P1tr from the command line inside the P1tr directory with: $ python bot.py To make bot.py clickable or to make it launch via $ ./bot.py you may have to make the file executable before: $ chmod +x bot.py === PLUGINS === At launchtime all files inside plugins/ are being loaded as plug-ins. To find out how they work you may have a look at plugins/length.py and plugins/talkback.py. They are heavily commented and give a good impression how that stuff works. One plug-in can provide an unlimited number of keywords as long they don't conflict with the ones of other plug-ins. === FAQs === * IS P1TR CAPABLE OF CONNECTING TO MULTIPLE SERVERS? Yes, it is. In later versions we also plan connectivity to several protocols like Jabber, OSCAR, and MSN. * I MISS A FEATURE; WHAT CAN I DO? If you are lazy you can ask us to do the work for you. We won't discriminate you for that, but we would be even happier if you would send a patch to us which adds the missing feature. If it really does the trick it will be included in the distribution and of course your name appears in big shiny fixed-width letters in the README file. For feature proposals you can use the blueprint function of launchpad.net (https://blueprints.launchpad.net/p1tr) or just use one of the ways of communication mentioned down there. * WHAT AM I ALLOWED TO DO WITH P1TR AND IT'S SOURCE? Thou shalt not skip reading LICENSE. This project is licensed with 4-clause-BSD-license. You can do with P1tr whatever you want as long as you add a notice to the product you make out of it, which says that the product contains code from P1tr. How this notice has to look exactly can be looked up in LICENSE.   No, we are not. Read LICENSE. P1tr is delivered without warranty of function and anything else. * WHY IS IT CALLED P1TR (AND NOT PETER or PITR)? First, P1tr has a certain idol whose name is copyrighted, so we changed the name to avoid copyright infringement.  If you don't like IRC (why are you interested in an IRC bot then?) or you are afraid that we would treat you rude you can also send a decent mail to our mailing list<EMAIL_ADDRESS>=== BUGS === If you find bugs and security issues we ask you to submit these to our launchpad.net bug tracker (https://bugs.launchpad.net/p1tr) === AUTHORS === A list of all people who contributed to P1tr in descending alphabetical order. * EBNER, Stefan- Debian Package Maintainer * GEVATTER, Siegfried-Angel - Core Development * ORTNER, Christian - Core Development * OTTENEDER, Michael - Core Development * REICHEL, Oswald - Plug-In Development
Copyright (c) 2008, AustrianGeekForce All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the AustrianGeekForce and its contributors. * Neither the name of the AustrianGeekForce nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
To get in touch with the developers send a message to the P1tr mailing list.
p1tr@groups.google.com


EVIE can be best described as an EVE Online API viewer, it enables you to view your EVE Online character information without having to log into the game.
My goal is to provide you with a simple-to-use API viewer that gives you as much useful information about your characters as possible.
This website uses SSO login from EVE Online.
This will also enable you to save multiple characters and quickly access their data.
The source code of this website is publicly available on
GitHub,
so feel free to nose around and discover how it all works.
Currently functional pages:


qiskit.unrollers._unrollerbackend module¶
Base backend object for the unroller that raises BackendError.
Members¶
Classes¶
UnrollerBackend |
Backend for the unroller that raises BackendError. |
Reference¶
-
class
qiskit.unrollers._unrollerbackend.
UnrollerBackend
(basis=None)[ソース]¶ ベースクラス:
object
Backend for the unroller that raises BackendError.
This backend also serves as a base class for other unroller backends.
Setup this backend.
basis is a list of operation name strings.
-
barrier
(qubitlists)[ソース]¶ Barrier instruction.
qubitlists is a list of lists of (regname, idx) tuples.
-
cx
(qubit0, qubit1)[ソース]¶ Fundamental two qubit gate.
qubit0 is (regname,idx) tuple for the control qubit. qubit1 is (regname,idx) tuple for the target qubit.
-
define_gate
(name, gatedata)[ソース]¶ Define a new quantum gate.
name is a string. gatedata is the AST node for the gate.
-
end_gate
(name, args, qubits, nested_scope=None)[ソース]¶ End a custom gate.
name is name string. args is list of Node expression objects. qubits is list of (regname, idx) tuples. nested_scope is a list of dictionaries mapping expression variables to Node expression objects in order of increasing nesting depth.
-
get_output
()[ソース]¶ Returns the output generated by the backend. Depending on the type of Backend, the output could have different types. It must be called once the Qasm parsing has finished
-
measure
(qubit, bit)[ソース]¶ Measurement operation.
qubit is (regname, idx) tuple for the input qubit. bit is (regname, idx) tuple for the output bit.
-
set_basis
(basis)[ソース]¶ Declare the set of user-defined gates to emit.
basis is a list of operation name strings.
-
set_condition
(creg, cval)[ソース]¶ Attach a current condition.
creg is a name string. cval is the integer value for the test.
-
start_gate
(name, args, qubits, nested_scope=None, extra_fields=None)[ソース]¶ Start a custom gate.
パラメータ: - name (str) -- name of the gate.
- args (list[Node]) -- list of expression nodes.
- qubits (list[tuple(str, int)]) -- list of (regname, idx) tuples.
- nested_scope (list[dict()]) -- list of dictionaries mapping expression variables to Node expression objects in order of increasing nesting depth.
- extra_fields (dict(str, obj)) -- is a dictionary allowing the extension or overriding of the gate instruction properties.
Raises: BackendError
-- if the gate is not part of the basis.
-


|
|
Download, Install and Execute Jupyter Notebook Environment |
| Tags | install☁jupyter☁notebook☁download |
In every journey we always need to prepare our toolbox with the needed resources !
With biosignalsnotebooks happens the same, being Jupyter Notebook environment the most relevant application (that supports biosignalsnotebooks ) to take the maximum advantage during your learning process.
In the following sequence of instruction it will be presented the operations that should be completed in order to have Jupyter Notebook ready to use and to open our _rev.php files on local server.
| ☌ A journey can be done through multiple paths and at this point you can also start programming with diversified resources and in multiple ways. A complete Python toolbox (which includes Jupyter Notebook environment) is available for world community and a quick installation guide can be accessed on "Download, Install and Execute Anaconda" |
PR - Jupyter Notebook environment is able to run code in multiple programming languages, but his primordial format has origin on IPython Project .
Taking this info into consideration, there is only one prerequisite to install Jupyter Notebook , which is the installation of a Python compilerPR1 - Access to Python main page at https://www.python.org/
PR2 - Click on "Download" tab
PR3 - Select the download link accordingly with your operating system (for the current example we will use Microsoft Windows)
Wait a few moments until the download finishes...
PR4 - Execute the downloaded file (with a double-click in the file icon)
⚠
PR5 - Activate "Add Python *.* to PATH" and click in "Install Now". After this, please, follow the sequential instructions presented in the installer
"Add Python *.* to PATH" option is essential for executing Python in the operating system command line, as will be seen while installing Jupyter Notebook in the next steps
When the installation was complete you finally fulfill the only
Jupyter Notebook
prerequisite.
So, lets advance to the
Jupyter Notebook
installation !!!
1 - Access to the Jupyter Notebook official page at https://jupyter.org/
2 - Go to "Install" tab in order to see detailed installation instructions (with different possibilities)
We will follow the third option
"Install Jupyter with pip"
This option is the most common one when programmers need to install new
Python
packages for use during development tasks.
3 - Open a "Command Prompt"
If you are a Microsoft Windows native, just type click on Windows logo (bottom-left corner of the screen) and type "cmd". Then press "Enter".4 - Type "python -m pip install --upgrade pip" (or "python3 -m pip install --upgrade pip" if you had a previously installed version 2 of Python) to update a very practical Python tool ( pip ) for installing new packages
5 - Type "python -m pip install jupyter" (or "python3 -m pip install jupyter" if you had a previously installed version 2 of Python) to install the amazing Jupyter Notebook environment
Our first mission is now completed with the installation of Jupyter Notebook !
⚠
You can skip step 6 if you did not close the previously opened console !
6 - For executing Jupyter Notebook environment you should open a console (in your operating system).
 Then press "Enter".7 - Type "jupyter notebook" inside the opened console. A local Jupyter Notebook server will be launched.
8 - Now, you should navigate through your directories until reaching the folder where you want to create or open a Notebook (as demonstrated in the following video)
⚠
You should note that your folder hierarchy is unique, so, the steps followed in the next image, will depend on your folder organization, being merely illustrative
9 - For creating a new Notebook, "New" button (top-right zone of Jupyter Notebook interface) should be pressed and Python 3 option selected.
A blank Notebook will arise and now you just need to be creative and expand your thoughts to others persons!!!
This can be the start of something great. Now you have all the software conditions to create and develop interactive tutorials, combining Python with HTML !
We hope that you have enjoyed this guide. biosignalsnotebooks is an environment in continuous expansion, so don"t stop your journey and learn more with the remaining Notebooks !


Define and visualize a tank object.
First, create an empty BaseObject to store basic properties:
Fill it with the identification tag and geometric data:
Create now an empty DerivedObject:
Link it to the respective BaseObject and fill it with position (in relation to the vessel):
Now that the derived object (myObject) was created, we will plot its 3D Visualization. However this can only be done with the tank as part of a ship object, so we need to generate a minimal ship specification:
Then, create a Ship object from that specification and populate it with the base and derived objects:
The visualization is created with an interface built to transform the Ship object above in a Three.js render. The rendering environment can be prepared by copying and pasting the following script:
Once the rendering environment is created, a 3D model of the ship object (which in this particular case contains only one object and no hull or structure) can be generated:
The "stl/" path points to the folder where the STL 3D files are stored. If no related file is specified inside the base object, as is the case here, the function will automatically create a cuboid with the specified dimensions.
Now the 3D render can be added to the scene with the relevant configurations of camera position and control target:
The result is:


{% extends 'base.html' %} {% block head %} {% endblock %} {% block body %}
Keep track of your past and future travel with Trippy


| GEOS SDK TechDocs
|
| 3.1 Printing System Components
| 4 Print Control Instance Data
Now that you're somewhat familiar with these components, you're ready for the detailed account of how they work together to print a job. Note that the application is only involved at one point. The printing system takes care of the rest automatically.
-
User Activates Trigger
Printing normally begins when the user activates the User Print Trigger provided by the Print Control. This trigger sends a message to the Print Control telling it to put up the Print Dialog box.
-
User Interacts with the Print Dialog Box
The Print Control responds to the Print Trigger's message by presenting a dialog box in which the user selects such things as page range and print quality (see. The user then either initiates printing or cancels. If the user wants to print, he'll confirm this by clicking on the appropriate trigger. The application will then get a chance to veto the user's choices. The Print Control asks the dialog box to remove itself, and it then gets ready for the upcoming print job.
-
Print Control Prepares for New Job
Soon the Print Control is going to ask for the page descriptions, but first it needs a place to store the data. It creates a spool file in which to store the upcoming graphics commands. It also allocates a GString handle by which the Print Output can transmit the commands. It then sends a message to the application's Print Output, signalling that the Print Output should supply the job.
-
Application Supplies Job
Having received the Print Control's message, the Print Output supplies graphics routines to the provided GString handle, using the same commands as when printing to any other GState. This string of graphics commands ends with a message saying the job is completed. The Print Control supplies some extra information to the spooler, and the print job is ready to enter the queue.
-
Job Traverses Queue
At this point, the spool library places the print job on a printer queue where the job waits to be printed. (Actually, the Spooler uses a trick to save on overhead. If there are no jobs for a printer, the Spooler doesn't maintain a queue for that printer. When a new job comes in for a printer that has no queue so far, a new queue is prepared for that printer and the job placed on the new queue. When the last job of a queue is printed and there are no more jobs forthcoming, the queue is removed.) The Spooler's various scheduling powers, if exercised, affect jobs in the queue.
-
Printing
Eventually, the job reaches the head of the queue. It is now ready to print. The Spooler works with the Printer Driver to transform the print job into a form that the printer can work with. This may involve building a bitmap depicting the job, or it might involve translating the GString's commands into the commands of some other page description language, such as PostScript.
-
Hard Copy
The printer driver sends the appropriate printer commands to the printer. If the printer doesn't have sufficient memory to hold the whole job, the driver sends only part of the job at a time.
| GEOS SDK TechDocs
|
| 3.1 Printing System Components
| 4 Print Control Instance Data


Schema Summary |
||
|
Fixed Objects accessibility types for IFOPT Fixed Objects in Public Transport.
Target Namespace:
Version:
Defined Components:
Default Namespace-Qualified Form:
Schema Location:
Imports Schemas (1):
Includes Schemas (2):
Imported by Schemas (4):
Included in Schemas (1):
|
||
|
Target Namespace:
Version:
Default Namespace-Qualified Form:
Schema Location:
Includes Schemas (3):
Imported by Schemas (5):
|
||
|
Fixed Objects accessibility limitation types for IFOPT Fixed Objects in Public Transport.
Target Namespace:
Version:
Defined Components:
Default Namespace-Qualified Form:
Schema Location:
Imported by Schemas (2):
Included in Schemas (2):
|
||
|
Fixed Objects accessibility types for IFOPT Fixed Objects in Public Transport.
Target Namespace:
Version:
Defined Components:
Default Namespace-Qualified Form:
Schema Location:
Imported by Schemas (3):
Included in Schemas (2):
|
All Element Summary (local elements unified by type) |
||||||||||
|
The accessibility limitations of a component.
|
||||||||||
|
Whether the passenger is accompanied by a carer or assistant.
|
||||||||||
|
Whether a PLACE / SITE ELEMENT is wheelchair accessible.
|
||||||||||
|
Passenger enceumbrance USER NEED for which SUITABILITY is specified.
|
||||||||||
|
Whether a PLACE / SITE ELEMENT has escalator free access.
|
||||||||||
Excluded (type xsd:boolean) |
Whether USER NEED is included or excluded.
|
|||||||||
Extensions (type xsd:anyType) |
Extensions to USETR NEED.
|
|||||||||
|
Whether a PLACE / SITE ELEMENT allows guide dog access.
|
||||||||||
|
Whether a PLACE / SITE ELEMENT has lift free access.
|
||||||||||
|
Identifier of LIMITATION.
|
||||||||||
|
The Limitations that apply to component.
|
||||||||||
|
Passenger medical USER NEED for which SUITABILITY is specified.
|
||||||||||
|
Summary indication as to whether the component is considered to be accessible or not.
|
||||||||||
|
Passenger mobility USER NEED for which SUITABILITY is specified.
|
||||||||||
NeedRanking (type xsd:integer) |
Relative ranking of USER NEED on a sclae 1-5
|
|||||||||
|
Passenger mobility USER NEED for which SUITABILITY is specified.
|
||||||||||
|
Whether a PLACE / SITE ELEMENT has step free access.
|
||||||||||
|
The Suitability of the component to meet specifc user needs.
|
||||||||||
|
The Suitability of com[onent to meet a specifc user need.
|
||||||||||
|
Whether the Facility is suitable.
|
||||||||||
|
||||||||||
|
Validty condition governing applicability of LIMITATION.
|
||||||||||
|
Whether a PLACE / SITE ELEMENT has Visual signals availble for the free access.
|
||||||||||
|
Whether a PLACE / SITE ELEMENT is wheelchair accessible.
|
Complex Type Summary |
||||||||||
|
Type for Assesment.
|
||||||||||
|
Type for limitation on navigation.
|
||||||||||
|
Type for accessibility.
|
||||||||||
|
Type for reference to an identifier of a hazard within a stop place.
|
||||||||||
|
Type for accessibility needs.
|
||||||||||
|
Type for of a specific SUITABILITY.
|
||||||||||
|
Type for of a specific need.
|
Simple Type Summary |
||||||
|
Enumeration of values for an accessibility value.
|
||||||
|
Enumeration of specific encumbrances USER NEEDs.
|
||||||
|
Type for identifier of a hazard within a stop place.
|
||||||
|
Enumeration of specific Medical USER NEEDs.
|
||||||
|
Identification of mobility USER NEEDs.
|
||||||
|
Enumeration of specific psychosensory USER NEEDs.
|
||||||
|
Identification of specific SUITABILITY.
|
Element Group Summary |
||||||||||
|
Group of mobility LIMITATIONs.
|
||||||||||
|
Group of sensory LIMITATIONs.
|
||||||||||
|
|
This XML schema documentation has been generated with DocFlex/XML 1.9.5 using DocFlex/XML XSDDoc 2.8.1 template set.
DocFlex/XML is a tool for programming and running highly sophisticated documentation and reports generators by the data obtained from
any kind of XML files. The actual doc-generators are implemented in the form of special templates that are designed visually
using a high-quality Template Designer GUI basing on the XML schema (or DTD) files describing the data source XML.
DocFlex/XML XSDDoc is a commercial template application of DocFlex/XML that implements a high-quality XML Schema documentation generator with simultaneous support of framed multi-file HTML,
single-file HTML and RTF output formats. (More formats are planned in the future).
A commercial license for "DocFlex/XML XSDDoc" will allow you:
Once having only such a license, you will be able to run the fully-featured XML schema documentation generator both with DocFlex/XML (Full Edition) and with DocFlex/XML RE, which is a reduced free edition containing only the template interpretor / output generator. No other licenses will be required!
But this is not all. In addition to it, a commercial license for "DocFlex/XML SDK" will allow you to modify the XSDDoc templates themselves as much as you want. You will be able to achieve whatever was impossible to do with the template parameters only.
And, of course, you could develop any template applications by your own!
Please note that by purchasing a license for this software, you not only acquire a useful tool,
you will also make an important investment in its future development, the results of which you could enjoy later by yourself.

To purchase a license, please follow this link: http://www.filigris.com/shop/
|


browse other examples
Multiple component rebuild
This demo allows to trace memory leaks during destroy and rebuild ui-scroll component.
{{switch ? 'Destroy' : 'Build'}}
{{item}}


Try it in your browser with Scastie.
The fastest way to create a new project in Dotty is using sbt (0.13.15+).
Create a Dotty project:
sbt new lampepfl/dotty.g8
Or a Dotty project that cross compiles with Scala 2:
sbt new lampepfl/dotty-cross.g8
For documentation see the Dotty Example Project.


Cazado Dias
Offers varieties of products
footwear, belts, purse, wallet for men as
for ladies.
We offer you at the best price.
Address: Leon San Juan neighborhood of the statue
from the mother, 25 yards to the west.
Phone: +505 6666 6666
Email: cdias@hotmail.com


Introduction
{{siteName}} scans the text on a web page, looking for words and phrases that
can be linked to Wikipedia articles. When matching words or phrases are found,
they are turned into hyperlinks right on the web page. The examples below
illustrate what this looks like.
Before
{{exampleHtmlDescription}}
{{exampleBeforeHtml}}
After
The same excerpt after {{siteName}} has added links to it:
{{exampleAfterHtml}}
{{/index.html?examples??###redirect /examples.html###}}
{{/index.html?try??###redirect /try.html###}}
{{/index.html?bookmarklet??###redirect /bookmarklet.html###}}
{{/index.html?extension??###redirect /extension.html###}}
{{/index.html?privacy??###redirect /privacy.html###}}
{{/index.html?contact??###redirect /contact.html###}}


Art Institute Kiosk
An interactice website built with HTML, CSS, Javascript, and JQuery.
Designer and Programmer
2012
Game Hunter
An E-Commerce website built with HTML, CSS3, Javascript, and jQuery.
Designer and Programmer
2012
Zoo Adventure
An interactive website built with HTML, CSS, Javascript, JQuery and PHP.
Project Leader and Programmer
2012
Tomorrow's Aeronautical Museum
An informational website built with HTML, CSS, Javascript, jQuery, and PHP.
Designer and Front End Programmer
2012
Dinosaurus
A website built with HTML, CSS, Javascript, and JQuery.
Designer and Programmer
2012
Our Blog
A website blog idea built with HTML, CSS, Javascript, and jQuery.
Designer and Programmer
2012
SLYSCRIPT
My portfolio site built with HTML, CSS, Javascript, and jQuery.
Designer and Programmer
2012


How can I change my details once I've signed up?
There is not currently a way to change your details. If you need to make a change, for example if you've had a positive coronavirus test, you need to withdraw your permission and sign up using the service again.
How can I withdraw my permission if I no longer want to be contacted?
You can use this service to withdraw your permission at any time. The link to withdraw your permission is also in the confirmation email you were sent when you signed up to be contacted for coronavirus research.
Who has access to my details if I sign up to be contacted for coronavirus research?
Only researchers working on studies approved to take place in the NHS will be able to see your details when you sign up. They'll access this information directly through NHS Digital, which holds the information securely.
Do I have to take part in a study if I sign up to be contacted?
No. By signing up to be contacted you allow researchers to contact you about specific studies. They'll give you more information about the study, and you'll be able to ask questions. You can then decide if you want to take part or not. It's your choice.
Will I be asked to join a study that's far away from where I live?
Coronavirus vaccine research is taking place across the UK so it's likely there'll be some research taking place near you. If a researcher asks you to take part in a study, you can say no if you feel it's too far away.
I'm a researcher, can I access the information of people who have signed up?
Only researchers working on specific coronavirus vaccine studies can access this information. If you have any queries about this, please use the contact form on the Be Part of Research website.
Could the vaccine give me coronavirus?
No. The vaccines are designed so they do not cause the infection.
What are the side effects I might get if I join a vaccine study?
Common vaccine side effects include soreness, swelling and redness at the site of the vaccination. You may also get more general symptoms like tiredness, aching muscles and a high temperature. These may last for a few days and usually get better by themselves.
How are studies approved?
An overall plan for the research study is called a protocol. Before a study can start, the protocol needs to be approved by a group of researchers who are not involved in the study. This approval is called an independent scientific review, or peer review.
An independent research ethics committee will also review the protocol. This committee is responsible for looking after your rights, safety, dignity and wellbeing when you take part in research. It can also decide whether the study can go ahead.
Researchers are not allowed to change the protocol without telling the ethics committee. The ethics committee can stop a study at any time if it has any concerns about the welfare of people taking part.
More information
Find out more about:
- taking part in health research at the Be Part of Research website
- how clinical trials are run
Page last reviewed: 2 July 2020
Next review due: 2 July 2020


This page was last reviewed at version 595. If the NodeManager class has been updated since that version, this page may not reflect the latest behavior. Please review the release notes to answer any questions.
When a Nyzo verifier is started, it asks other verifiers for information on the current state of the blockchain. The location of verifiers are specified in the file /var/lib/nyzo/production/trusted_entry_points. A copy of this file is included in the Git repository, and it contains entries for verifier0.nyzo.co through verifier9.nyzo.co. Since the deactivation of the official Nyzo verifiers, these names point to multiple arbitrarily selected in-cycle verifiers.
In order to be added to the NodeManager, which is necessary for eventual consideration in the lottery, a verifier must be able to send node-join messages from an IP address and receive node-join messages at the same address. Additionally, a verifier must have exclusive control over that IP address. If multiple verifiers are broadcasting from an IP address, neither will be entered into the lottery.
The following explanations describe the interactions between a single out-of-cycle verifier and a single in-cycle verifier. The end result of this process is addition to the lottery pool of that in-cycle verifier. Because this is a democratic system, and because the in-cycle verifier has only a single vote, the out-of-cycle verifier must repeat this process with the entire cycle in order to have an optimal probability of joining the cycle.
The first step for a new verifier is requesting the cycle from trusted entry points. Due to code changes over time, the following code refers to the "mesh," and that term is incorrect. The "mesh" is an early term that described the set of all in-cycle and out-of-cycle nodes, and it has fallen out of favor in our development as the separation between the cycle and candidate (out-of-cycle) nodes has arisen. This code actually requests just the list of in-cycle nodes from the trusted entry points.
// Send mesh requests to all trusted entry points.
AtomicInteger numberOfMeshResponsesPending = new AtomicInteger(trustedEntryPoints.size());
for (TrustedEntryPoint entryPoint : trustedEntryPoints) {
fetchMesh(entryPoint, numberOfMeshResponsesPending);
sendNodeJoinMessage(entryPoint);
}
In the fetchMesh() method, a node-join message is enqueued for every node in the response. So, as long as one trusted entry point is aware of a node, this node will send a join message to it.
private static void fetchMesh(TrustedEntryPoint entryPoint, AtomicInteger numberOfMeshResponsesPending) {
Message meshRequest = new Message(MessageType.MeshRequest15, null);
Message.fetchTcp(entryPoint.getHost(), entryPoint.getPort(), meshRequest,
new MessageCallback() {
@Override
public void responseReceived(Message message) {
// Enqueue node-join requests for all nodes in the response.
MeshResponse response = (MeshResponse) message.getContent();
for (Node node : response.getMesh()) {
NodeManager.enqueueNodeJoinMessage(node.getIpAddress(),
node.getPortTcp());
}
numberOfMeshResponsesPending.decrementAndGet();
}
});
}
The NodeManager.enqueueNodeJoinMessage() method adds an entry to a map, keyed on the IP address of the receiver. This provides natural de-duplication when the same node is received in the MeshResponse from multiple trusted entry points.
public static void enqueueNodeJoinMessage(byte[] ipAddress, int port) {
nodeJoinRequestQueue.put(ByteBuffer.wrap(ipAddress), port);
}
After the responses are received from the trusted entry points, this node sends node-join requests to all nodes in the node-join request queue.
// Instruct the node manager to send the node-join messages. The queue is based on IP address, so deduping
// naturally occurs and only one request is typically sent to each node at this point. The -1 value tells
// the node manager to empty the queue.
NodeManager.sendNodeJoinRequests(-1);
As we can see here, in its initialization process, a verifier should send node-join requests to every verifier in the cycle. This behavior applies to both in-cycle and out-of-cycle verifiers.
After initial clearing of the node-join queue, the verifier initializes the local blockchain state. It then clears the node-join request queue a second time in case some delayed responses from trusted entry points have caused additional entries to be added.
ChainInitializationManager.initializeFrozenEdge(trustedEntryPoints);
// In order to process efficiently, we need to be well-connected to the cycle. If there are slow-downs that
// have prevented connection to this point, they should be addressed before entering the main verifier loop.
// We set 75% of the current cycle as a threshold, as it is the minimum required for automatic consensus.
NodeManager.sendNodeJoinRequests(-1);
NodeManager.updateActiveVerifiersAndRemoveOldNodes();
A verifier should have sufficient connection to the cycle at this point. If it does not, a supplemental connection process continues to fetch the cycle from trusted entry points and send node-join requests to the nodes in the responses.
// In order to process efficiently, we need to be well-connected to the cycle. If there are slow-downs that
// have prevented connection to this point, they should be addressed before entering the main verifier loop.
// We set 75% of the current cycle as a threshold, as it is the minimum required for automatic consensus.
NodeManager.sendNodeJoinRequests(-1);
NodeManager.updateActiveVerifiersAndRemoveOldNodes();
int meshRequestIndex = 0;
while (NodeManager.getNumberOfActiveCycleIdentifiers() < BlockManager.currentCycleLength() * 3 / 4) {
System.out.println("entering supplemental connection process because only %d
in-cycle " +
"connections have been made for a cycle size of %d (%.1f%%)",
NodeManager.getNumberOfActiveCycleIdentifiers(), BlockManager.currentCycleLength(),
NodeManager.getNumberOfActiveCycleIdentifiers() * 100.0 /
BlockManager.currentCycleLength()));
System.out.println("missing in-cycle verifiers: " +
NodeManager.getMissingInCycleVerifiers());
// Fetch the mesh from one trusted entry point.
numberOfMeshResponsesPending = new AtomicInteger(1);
fetchMesh(trustedEntryPoints.get(meshRequestIndex), numberOfMeshResponsesPending);
meshRequestIndex = (meshRequestIndex + 1) % trustedEntryPoints.size();
// Wait up to two seconds for the mesh response to return.
for (int i = 0; i < 10 && numberOfMeshResponsesPending.get() > 0; i++) {
ThreadUtil.sleep(200L);
}
// Clear the node-join request queue. Then, sleep one second to allow more requests to
return, and wait
// until the message queue has cleared. Finally, before the loop condition is checked
again, update the
// active verifiers to reflect any that have been added since the last iteration.
NodeManager.sendNodeJoinRequests(-1);
ThreadUtil.sleep(1000L);
MessageQueue.blockThisThreadUntilClear();
NodeManager.updateActiveVerifiersAndRemoveOldNodes();
}
When considering this process, keep in mind that connectedness to the cycle serves different purposes for in-cycle and out-of-cycle verifiers. For in-cycle verifiers, connectedness to the rest of the cycle is essential for maintaining communication necessary to build the blockchain. While in-cycle-to-in-cycle connectedness is crucial for proper operation of Nyzo, it is not especially interesting when considering the process of admitting new verifiers to the cycle.
Out-of-cycle verifiers have no responsibility for building the blockchain, and they have no power in the system at all. For them, connectedness serves a different purpose. Maintaining an exclusive presence at a particular IP address lets in-cycle verifiers know that an out-of-cycle verifier controls the IP address. IP addresses are the scarce resource used to control admission into the new-verifier lottery.
In the verifier run loop, a block of "mesh-maintenance" operations is performed roughly once per block duration. As the comment explains, these operations continue to be performed at a regular time interval even if the blockchain is not freezing blocks at normal speed.
// These are mesh-maintenance operations. These were previously performed when a block was frozen,
// but they have been moved to a separate condition, based on block interval, to ensure that they
// still happen regularly when the cycle is experiencing problems or for an out-of-cycle verifier
// that is not always tracking the blockchain.
if (lastMeshMaintenanceTimestamp < System.currentTimeMillis() - Block.blockDuration) {
lastMeshMaintenanceTimestamp = System.currentTimeMillis();
// Reload the node-join queue. The node manager maintains a counter to ensure it is
only
// performed once per cycle equivalent.
NodeManager.reloadNodeJoinQueue();
// Send up to 10 node-join requests. Previously, these were all sent when the mesh
was
// requested. Now, they are enqueued and sent a few at a time to reduce the spike in
network
// activity.
NodeManager.sendNodeJoinRequests(10);
// Update the top-voted verifier. This is done periodically to save frequent
derivation from the
// vote map.
NewVerifierVoteManager.updateTopVerifier();
// Update the new-verifier vote.
NewVerifierQueueManager.updateVote();
}
We have seen several calls to the NodeManager.sendNodeJoinRequests() method. In NodeManager, the queue of node-join requests is stored as a map of IP addresses to port numbers. This method simply removes some number of IP addresses from the map, retrieving their port numbers, and sends node-join requests to those IP addresses on the specified ports. Positive argument values indicate sending a specified maximum number of messages from the queue, while negative argument values indicate emptying the queue.
public static void sendNodeJoinRequests(int count) {
// This method is called from multiple places, and threading issues could result in an
odd state for the
// queue. Rather than adding synchronization or logic to deal with this, the try/catch
will ensure that
// any exceptions do not leave this method.
try {
// A positive value indicates the specified number of requests should be sent from
the queue, emptying the
// queue if the queue size is less than or equal to the specified number. A
negative number indicates that
// the queue should be emptied, regardless of its size.
if (count < 0) {
count = nodeJoinRequestQueue.size();
}
for (int i = 0; i < count && !nodeJoinRequestQueue.isEmpty(); i++) {
ByteBuffer ipAddressBuffer =
nodeJoinRequestQueue.keySet().iterator().next();
Integer port = nodeJoinRequestQueue.remove(ipAddressBuffer);
if (port != null && port > 0) {
nodeJoinRequestsSent.incrementAndGet();
// This is the V2 node-join message.
Message nodeJoinMessage = new Message(MessageType.NodeJoinV2_43,
new NodeJoinMessageV2());
Message.fetchTcp(IpUtil.addressAsString(ipAddressBuffer.array()), port,
nodeJoinMessage,
new MessageCallback() {
@Override
public void responseReceived(Message message) {
if (message != null && message.getContent() instanceof
NodeJoinResponseV2) {
updateNode(message);
NodeJoinResponseV2 response = (NodeJoinResponseV2)
message.getContent();
NicknameManager.put(message.getSourceNodeIdentifier(),
response.getNickname());
}
}
});
}
}
} catch (Exception ignored) { }
}
Now that we have examined how verifiers send node-join requests, we should look at how verifiers process those requests. As mentioned above, in-cycle and out-of-cycle verifiers both send these requests, but they serve different purposes for in-cycle and out-of-cycle verifiers.
In MeshListener, a set is defined with message types that are not allowed over UDP. Because IP addresses can be spoofed over UDP, node-join requests and node-join responses are disallowed. As the comment explains, node-join responses are not processed on incoming connections. However, adding the response type to this set improves robustness and readability.
// To promote forward compatibility with messages we might want to add, the verifier will accept all readable
// messages except those explicitly disallowed. The response types should not be processed for incoming
messages,
// but adding them to this set adds another level of protection.
private static final Set<MessageType> disallowedUdpTypes =
new HashSet<>(Arrays.asList(MessageType.NodeJoinV2_43,
MessageType.NodeJoinResponseV2_44));
In the MeshListener.readDatagramPacket() method, this set is used to ensure that UDP messages of these types are ignored.
...
if (message != null && !disallowedUdpTypes.contains(message.getType())) {
...
This provides an important guarantee for node-join messages. Due to the nature of TCP connection negotiation, the receiver of these messages knows with certainty that the messages actually originate from the IP address where they claim to originate.
Node-join requests received over TCP, along with responses to locally initiated node-join requests (also sent over TCP), are relayed to NodeManager.updateNode().
Requests are processed in the MeshListener.response() method.
public static Message response(Message message) {
// This is the single point of dispatch for responding to all received messages.
Message response = null;
try {
...
MessageType messageType = message.getType();
if (messageType == MessageType.Transaction5) {
...
} else if (messageType == MessageType.NodeJoinV2_43) {
NodeManager.updateNode(message);
NodeJoinMessageV2 nodeJoinMessage = (NodeJoinMessageV2)
message.getContent();
NicknameManager.put(message.getSourceNodeIdentifier(),
nodeJoinMessage.getNickname());
// Send a UDP ping to help the node ensure that it is receiving UDP
messages
// properly.
Message.sendUdp(message.getSourceIpAddress(), nodeJoinMessage.getPortUdp(),
new Message(MessageType.Ping200, null));
response = new Message(MessageType.NodeJoinResponseV2_44,
new NodeJoinResponseV2());
} else if (messageType == MessageType.FrozenEdgeBalanceListRequest45) {
...
}
}
} catch (Exception e) {
...
}
return response;
}
Responses are processed as they are received in the Verifier.sendNodeJoinMessage() method.
private static void sendNodeJoinMessage(TrustedEntryPoint trustedEntryPoint) {
System.out.println("sending node-join messages to trusted entry point: " +
trustedEntryPoint);
Message message = new Message(MessageType.NodeJoinV2_43, new NodeJoinMessageV2());
Message.fetchTcp(trustedEntryPoint.getHost(), trustedEntryPoint.getPort(), message,
new MessageCallback() {
@Override
public void responseReceived(Message message) {
if (message != null) {
NodeManager.updateNode(message);
NodeJoinResponse response = (NodeJoinResponse)
message.getContent();
if (response != null) {
NicknameManager.put(message.getSourceNodeIdentifier(),
response.getNickname());
if
(!ByteUtil.isAllZeros(response.getNewVerifierVote().getIdentifier())) {
NewVerifierVoteManager.registerVote(message.getSourceNodeIdentifier(),
response.getNewVerifierVote(), false);
}
}
}
}
});
}
These are the only two places in the entire codebase that call the NodeManager.updateNode() method.
In earlier versions of Nyzo, the NodeManager.updateNode() method was called for several different messages. Its scope was reduced to accommodate the sentinel, and its scope has been reduced further to tighten the security of the NodeManager. The latest significant change was in version 572, which eliminated immediate reciprocal node-join messages to cap the rate at which new verifiers can be added to the queue. In version 595, legacy node-join messages were removed to improve code readability.
public static void updateNode(Message message) {
// In previous versions, more types of requests were registered to increase mesh
density. However, to make the
// system more flexible, we have changed this to only update a node when explicitly
requested to do so through
// a node join.
if (message.getType() == MessageType.NodeJoinV2_43 || message.getType() ==
MessageType.NodeJoinResponseV2_44) {
PortMessageV2 portMessage = (PortMessageV2) message.getContent();
int portTcp = portMessage.getPortTcp();
int portUdp = portMessage.getPortUdp();
// Determine whether this is a node-join response. This is one of the pieces of
information used to
// determine whether a node is added to the map immediately or if it is deferred to
the node-join queue.
boolean isNodeJoinResponse = message.getType() ==
MessageType.NodeJoinResponseV2_44;
// Update the node.
updateNode(message.getSourceNodeIdentifier(), message.getSourceIpAddress(),
portTcp, portUdp,
isNodeJoinResponse);
} else if (message.getType() == MessageType.MissingBlockVoteRequest23 ||
message.getType() == MessageType.MissingBlockRequest25) {
// This is not a full update. Instead, to offset our marking of in-cycle nodes as
inactive, we allow a
// missing block vote request or a missing block request to reactivate the node.
These requests are
// typically made when a node comes back online after a temporary network
issue.
Node node =
ipAddressToNodeMap.get(ByteBuffer.wrap(message.getSourceIpAddress()));
if (node != null) {
node.markSuccessfulConnection();
}
} else {
LogUtil.println("unrecognized message type in updateNode(): " +
message.getType());
}
}
This method now responds to only four messages: NodeJoinV2_43, NodeJoinResponseV2_44, MissingBlockVoteRequest23, and MissingBlockRequest25.
Looking at disallowedNonCycleTypes in the Message class, we can see that MissingBlockVoteRequest23 and MissingBlockRequest25 will only be processed if they are received from in-cycle verifiers. So, these will not affect the join queue.
private static final Set<MessageType> disallowedNonCycleTypes =
new HashSet<>(Arrays.asList(MessageType.BlockVote19,
MessageType.NewVerifierVote21, MessageType.MissingBlockVoteRequest23,
MessageType.MissingBlockRequest25));
This leaves just two messages, NodeJoinV2_43 and NodeJoinResponseV2_44, possibly adding a node to the join queue. Further examination of the logic, though, will show that only NodeJoinResponseV2_44 actually performs this action.
The private overload of NodeManager.updateNode() does the low-level work of manipulating maps and nodes.
private static void updateNode(byte[] identifier, byte[] ipAddress, int portTcp, int portUdp,
boolean isNodeJoinResponse) {
if (identifier != null && identifier.length == FieldByteSize.identifier &&
ipAddress != null &&
ipAddress.length == FieldByteSize.ipAddress &&
!IpUtil.isPrivate(ipAddress)) {
// Try to get the node from the map.
ByteBuffer ipAddressBuffer = ByteBuffer.wrap(ipAddress);
Node existingNode = ipAddressToNodeMap.get(ipAddressBuffer);
if (existingNode != null && ByteUtil.arraysAreEqual(existingNode.getIdentifier(),
identifier)) {
// This is the case when there is already a node at the IP with the same
identifier. Update the ports
// and mark a successful connection.
existingNode.setPortTcp(portTcp);
if (portUdp > 0) {
existingNode.setPortUdp(portUdp);
}
existingNode.markSuccessfulConnection();
} else {
// If the existing node is not null, remove it.
if (existingNode != null) {
ipAddressToNodeMap.remove(ipAddressBuffer);
}
// Now, determine what to do with the new node.
ByteBuffer identifierBuffer = ByteBuffer.wrap(identifier);
if (BlockManager.verifierInCurrentCycle(identifierBuffer) ||
isNodeJoinResponse) {
// All in-cycle nodes, in addition to out-of-cycle nodes due to node-join
responses, are added now,
// subject to a limit per verifier. Set the timestamp of the node so that
it is immediately eligible
// for the lottery if sufficient history is not present.
int instanceCount = 0;
for (Node mapNode : ipAddressToNodeMap.values()) {
if (ByteUtil.arraysAreEqual(mapNode.getIdentifier(), identifier)) {
instanceCount++;
}
}
if (instanceCount < maximumNodesPerInCycleVerifier) {
Node node = new Node(identifier, ipAddress, portTcp, portUdp);
if (!haveNodeHistory) {
node.setQueueTimestamp(System.currentTimeMillis() -
NewVerifierQueueManager.lotteryWaitTime);
}
ipAddressToNodeMap.put(ipAddressBuffer, node);
if (!BlockManager.verifierInCurrentCycle(identifierBuffer)) {
LogUtil.println("added new out-of-cycle node to NodeManager: "
+
NicknameManager.get(identifier));
}
}
} else {
// Out-of-cycle nodes due to node joins are added to a map for later
querying.
newNodeIpToPortMap.put(ipAddressBuffer, portTcp);
LogUtil.println("added new out-of-cycle node to queue: " +
NicknameManager.get(identifier));
if (newNodeIpToPortMap.size() > maximumNewNodeMapSize) {
newNodeIpToPortMap.remove(newNodeIpToPortMap.keySet().iterator().next());
LogUtil.println("removed node from new out-of-cycle queue due to
size");
}
}
// If the node that was just processed is the local verifier and not the
temporary entry, remove the
// temporary entry.
if (!ByteUtil.isAllZeros(ipAddress) &&
ByteUtil.arraysAreEqual(identifier, Verifier.getIdentifier())) {
ipAddressToNodeMap.remove(ByteBuffer.wrap(new byte[4]));
}
}
}
}
In all of this, only one line will add a new node to the node map.
ipAddressToNodeMap.put(ipAddressBuffer, node);
Additionally, when the have
if (!haveNodeHistory) {
node.setQueueTimestamp(System.currentTimeMillis() -
NewVerifierQueueManager.lotteryWaitTime);
}
This page is under active development.


Annual Race Record
6 - 1 - 0 - 3 ($48,850)
Stakes Record: 2 - 0 - 0 - 0
Stakes Earnings: $0
Annual Rank: 1989th
Conference Rank:
1188th
3888th
Last Six Starts
Wins: 1
Earnings: $48,850
Lifetime Race Record
81 - 29 - 12 - 14 ($2,081,413)
Stake Record21 - 3 - 3 - 3 ($895,400)
Lifetime Mark: 1:51.75
Race Date: Wednesday July 22nd, 2020
Last Race Time: 1:55.63
Race Date: Wednesday May 11th, 2022


A 'shiny' gadget to create 'ggplot2' charts interactively with drag-and-drop to map your variables. You can quickly visualize your data accordingly to their type, export to 'PNG' or 'PowerPoint', and retrieve the code to reproduce the chart.
| Version: | 0.1.7 |
| Imports: | miniUI, rstudioapi, shiny (≥ 1.0.0), htmltools, jsonlite, shinyWidgets (≥ 0.4.1), ggplot2 (≥ 3.0.0), ggthemes, RColorBrewer, viridisLite, scales, stringi |
| Suggests: | officer, rvg, rio, DT, testthat |
| Published: | 2018-11-14 |
| Author: | Fanny Meyer [aut], Victor Perrier [aut, cre], Ian Carroll [ctb] (Facets support) |
| Maintainer: | Victor Perrier <victor.perrier at dreamrs.fr> |
| BugReports: | https://github.com/dreamRs/esquisse/issues |
| License: | GPL-3 | file LICENSE |
| URL: | https://github.com/dreamRs/esquisse |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | esquisse results |
| Reference manual: | esquisse.pdf |
| Package source: | esquisse_0.1.7.tar.gz |
| Windows binaries: | r-devel: esquisse_0.1.7.zip, r-release: esquisse_0.1.7.zip, r-oldrel: esquisse_0.1.7.zip |
| OS X binaries: | r-release: esquisse_0.1.7.tgz, r-oldrel: esquisse_0.1.7.tgz |
| Old sources: | esquisse archive |
Please use the canonical form https://CRAN.R-project.org/package=esquisse to link to this page.