Debug command line plusargs that are available in the Accellera reference implementation but not documented in the IEEE UVM 1800.2-2017 LRM
| Command Line Debug | |
| Debug command line plusargs that are available in the Accellera reference implementation but not documented in the IEEE UVM 1800.2-2017 LRM | |
| Variables | |
| +UVM_DUMP_CMDLINE_ARGS | +UVM_DUMP_CMDLINE_ARGS allows the user to dump all command line arguments to the reporting mechanism. |
| +UVM_PHASE_TRACE | +UVM_PHASE_TRACE turns on tracing of phase executions. |
| +UVM_OBJECTION_TRACE | +UVM_OBJECTION_TRACE turns on tracing of objection activity. |
| +UVM_RESOURCE_DB_TRACE | +UVM_RESOURCE_DB_TRACE turns on tracing of resource DB accesses. |
| +UVM_CONFIG_DB_TRACE | +UVM_CONFIG_DB_TRACE turns on tracing of configuration DB accesses. |
+UVM_DUMP_CMDLINE_ARGS allows the user to dump all command line arguments to the reporting mechanism. The output in is tree format.
@uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2
+UVM_PHASE_TRACE turns on tracing of phase executions.
@uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2
+UVM_OBJECTION_TRACE turns on tracing of objection activity.
@uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2
+UVM_RESOURCE_DB_TRACE turns on tracing of resource DB accesses.
@uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2
+UVM_CONFIG_DB_TRACE turns on tracing of configuration DB accesses.
@uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2


The cat is a small carnivorous mammal. It is the only domesticated species in the family Felidae and often referred to as the domestic cat to distinguish it from wild members of the family. The cat is either a house cat or a farm cat, which are pets, or a feral cat, which ranges freely and avoids human contact.
New Year’s Eve!
— Moet the Blind Cat (@MoetBlindCat) December 31, 2019
Who’s pawtying tonight?
I fink I’m staying in with mum... and nip and treats!! 🎉🎉🎉#newyearseve #newyear #moetblindcat pic.twitter.com/FyLvYLN7Yn


Detailed Description
Stack implementation.
qstack container is a stack implementation. It represents a last-in-first-out(LIFO). It extends qlist container that allow a linked-list to be treated as a stack.
[Conceptional Data Structure Diagram]
top bottom
DATA PUSH/POP <==> [ C ][ B ][ A ]
(positive index) 0 1 2
(negative index) -3 -2 -1
qstack_t *stack = qstack();
stack->pushint(stack, 1);
stack->pushint(stack, 2);
stack->pushint(stack, 3);
printf("popint(): %d\n", stack->popint(stack));
printf("popint(): %d\n", stack->popint(stack));
printf("popint(): %d\n", stack->popint(stack));
stack->pushstr(stack, "A string");
stack->pushstr(stack, "B string");
stack->pushstr(stack, "C string");
char *str = stack->popstr(stack);
printf("popstr(): %s\n", str);
free(str);
str = stack->popstr(stack);
printf("popstr(): %s\n", str);
free(str);
str = stack->popstr(stack);
printf("popstr(): %s\n", str);
free(str);
stack->push(stack, "A object", sizeof("A object"));
stack->push(stack, "B object", sizeof("B object"));
stack->push(stack, "C object", sizeof("C object"));
void *obj = stack->pop(stack, NULL);
printf("pop(): %s\n", (char*)obj);
free(obj);
str = stack->pop(stack, NULL);
printf("pop(): %s\n", (char*)obj);
free(obj);
str = stack->pop(stack, NULL);
printf("pop(): %s\n", (char*)obj);
free(obj);
stack->free(stack);
[Output]
popint(): 3
popint(): 2
popint(): 1
popstr(): C string
popstr(): B string
popstr(): A string
pop(): C object
pop(): B object
pop(): A object
- Note:
- Use "--enable-threadsafe" configure script option to use under multi-threaded environments.
Functions |
| qstack_t * | qstack (void) |
| | Create a new stack container.
|
| static size_t | setsize (qstack_t *stack, size_t max) |
| | qstack->setsize(): Sets maximum number of elements allowed in this stack.
|
| static bool | push (qstack_t *stack, const void *data, size_t size) |
| | qstack->push(): Pushes an element onto the top of this stack.
|
| static bool | pushstr (qstack_t *stack, const char *str) |
| | qstack->pushstr(): Pushes a string onto the top of this stack.
|
| static bool | pushint (qstack_t *stack, int64_t num) |
| | qstack->pushint(): Pushes a integer onto the top of this stack.
|
| static void * | pop (qstack_t *stack, size_t *size) |
| | qstack->pop(): Removes a element at the top of this stack and returns that element.
|
| static char * | popstr (qstack_t *stack) |
| | qstack->popstr(): Removes a element at the top of this stack and returns that element.
|
| static int64_t | popint (qstack_t *stack) |
| | qstack->popint(): Removes a integer at the top of this stack and returns that element.
|
| static void * | popat (qstack_t *stack, int index, size_t *size) |
| | qstack->popat(): Returns and remove the element at the specified position in this stack.
|
| static void * | get (qstack_t *stack, size_t *size, bool newmem) |
| | qstack->get(): Returns an element at the top of this stack without removing it.
|
| static char * | getstr (qstack_t *stack) |
| | qstack->getstr(): Returns an string at the top of this stack without removing it.
|
| static int64_t | getint (qstack_t *stack) |
| | qstack->getint(): Returns an integer at the top of this stack without removing it.
|
| static void * | getat (qstack_t *stack, int index, size_t *size, bool newmem) |
| | qstack->getat(): Returns an element at the specified position in this stack without removing it.
|
| static size_t | size (qstack_t *stack) |
| | qstack->size(): Returns the number of elements in this stack.
|
| static void | clear (qstack_t *stack) |
| | qstack->clear(): Removes all of the elements from this stack.
|
| static bool | debug (qstack_t *stack, FILE *out) |
| | qstack->debug(): Print out stored elements for debugging purpose.
|
| static void | free_ (qstack_t *stack) |
| | qstack->free(): Free qstack_t
|
Function Documentation
| qstack_t* qstack |
( |
void |
|
) |
|
Create a new stack container.
- Returns:
- a pointer of malloced qstack_t container, otherwise returns NULL.
- Return values:
-
| errno | will be set in error condition.
- ENOMEM : Memory allocation failure.
|
| static size_t setsize |
( |
qstack_t * |
stack, |
|
|
size_t |
max | |
|
) |
| | [static] |
qstack->setsize(): Sets maximum number of elements allowed in this stack.
- Parameters:
-
| stack | qstack container pointer. |
| max | maximum number of elements. 0 means no limit. |
- Returns:
- previous maximum number.
| static bool push |
( |
qstack_t * |
stack, |
|
|
const void * |
data, |
|
|
size_t |
size | |
|
) |
| | [static] |
qstack->push(): Pushes an element onto the top of this stack.
- Parameters:
-
| stack | qstack container pointer. |
| data | a pointer which points data memory. |
| size | size of the data. |
- Returns:
- true if successful, otherwise returns false.
- Return values:
-
| errno | will be set in error condition.
- EINVAL : Invalid argument.
- ENOBUFS : Stack full. Only happens when this stack has set to have limited number of elements)
- ENOMEM : Memory allocation failure.
|
| static bool pushstr |
( |
qstack_t * |
stack, |
|
|
const char * |
str | |
|
) |
| | [static] |
qstack->pushstr(): Pushes a string onto the top of this stack.
- Parameters:
-
| stack | qstack container pointer. |
| data | a pointer which points data memory. |
| size | size of the data. |
- Returns:
- true if successful, otherwise returns false.
- Return values:
-
| errno | will be set in error condition.
- EINVAL : Invalid argument.
- ENOBUFS : Stack full. Only happens when this stack has set to have limited number of elements.
- ENOMEM : Memory allocation failure.
|
| static bool pushint |
( |
qstack_t * |
stack, |
|
|
int64_t |
num | |
|
) |
| | [static] |
qstack->pushint(): Pushes a integer onto the top of this stack.
- Parameters:
-
| stack | qstack container pointer. |
| num | integer data. |
- Returns:
- true if successful, otherwise returns false.
- Return values:
-
| errno | will be set in error condition.
- ENOBUFS : Stack full. Only happens when this stack has set to have limited number of elements.
- ENOMEM : Memory allocation failure.
|
| static void* pop |
( |
qstack_t * |
stack, |
|
|
size_t * |
size | |
|
) |
| | [static] |
qstack->pop(): Removes a element at the top of this stack and returns that element.
- Parameters:
-
| stack | qstack container pointer. |
| size | if size is not NULL, element size will be stored. |
- Returns:
- a pointer of malloced element, otherwise returns NULL.
- Return values:
-
| errno | will be set in error condition.
- ENOENT : Stack is empty.
- ENOMEM : Memory allocation failure.
|
| static char* popstr |
( |
qstack_t * |
stack |
) |
[static] |
qstack->popstr(): Removes a element at the top of this stack and returns that element.
- Parameters:
-
| stack | qstack container pointer. |
- Returns:
- a pointer of malloced string element, otherwise returns NULL.
- Return values:
-
| errno | will be set in error condition.
- ENOENT : Stack is empty.
- ENOMEM : Memory allocation failure.
|
- Note:
- The string element should be pushed through pushstr().
| static int64_t popint |
( |
qstack_t * |
stack |
) |
[static] |
qstack->popint(): Removes a integer at the top of this stack and returns that element.
- Parameters:
-
| stack | qstack container pointer. |
- Returns:
- an integer value, otherwise returns 0.
- Return values:
-
| errno | will be set in error condition.
- ENOENT : Stack is empty.
- ENOMEM : Memory allocation failure.
|
- Note:
- The integer element should be pushed through pushint().
| static void* popat |
( |
qstack_t * |
stack, |
|
|
int |
index, |
|
|
size_t * |
size | |
|
) |
| | [static] |
qstack->popat(): Returns and remove the element at the specified position in this stack.
- Parameters:
-
| stack | qstack container pointer. |
| index | index at which the specified element is to be inserted |
| size | if size is not NULL, element size will be stored. |
- Returns:
- a pointer of malloced element, otherwise returns NULL.
- Return values:
-
| errno | will be set in error condition.
- ERANGE : Index out of range.
- ENOMEM : Memory allocation failure.
|
- Note:
- Negative index can be used for addressing a element from the bottom in this stack. For example, index -1 will always pop a element which is pushed at very first time.
| static void* get |
( |
qstack_t * |
stack, |
|
|
size_t * |
size, |
|
|
bool |
newmem | |
|
) |
| | [static] |
qstack->get(): Returns an element at the top of this stack without removing it.
- Parameters:
-
| stack | qstack container pointer. |
| size | if size is not NULL, element size will be stored. |
| newmem | whether or not to allocate memory for the element. |
- Return values:
-
| errno | will be set in error condition.
- ENOENT : Stack is empty.
- ENOMEM : Memory allocation failure.
|
- Returns:
- a pointer of malloced element, otherwise returns NULL.
| static char* getstr |
( |
qstack_t * |
stack |
) |
[static] |
qstack->getstr(): Returns an string at the top of this stack without removing it.
- Parameters:
-
| stack | qstack container pointer. |
- Returns:
- a pointer of malloced string element, otherwise returns NULL.
- Return values:
-
| errno | will be set in error condition.
- ENOENT : Stack is empty.
- ENOMEM : Memory allocation failure.
|
- Note:
- The string element should be pushed through pushstr().
| static int64_t getint |
( |
qstack_t * |
stack |
) |
[static] |
qstack->getint(): Returns an integer at the top of this stack without removing it.
- Parameters:
-
| stack | qstack container pointer. |
- Returns:
- an integer value, otherwise returns 0.
- Return values:
-
| errno | will be set in error condition.
- ENOENT : Stack is empty.
- ENOMEM : Memory allocation failure.
|
- Note:
- The integer element should be pushed through pushint().
| static void* getat |
( |
qstack_t * |
stack, |
|
|
int |
index, |
|
|
size_t * |
size, |
|
|
bool |
newmem | |
|
) |
| | [static] |
qstack->getat(): Returns an element at the specified position in this stack without removing it.
- Parameters:
-
| stack | qstack container pointer. |
| index | index at which the specified element is to be inserted |
| size | if size is not NULL, element size will be stored. |
| newmem | whether or not to allocate memory for the element. |
- Returns:
- a pointer of element, otherwise returns NULL.
- Return values:
-
| errno | will be set in error condition.
- ERANGE : Index out of range.
- ENOMEM : Memory allocation failure.
|
- Note:
- Negative index can be used for addressing a element from the bottom in this stack. For example, index -1 will always get a element which is pushed at very first time.
| static size_t size |
( |
qstack_t * |
stack |
) |
[static] |
qstack->size(): Returns the number of elements in this stack.
- Parameters:
-
| stack | qstack container pointer. |
- Returns:
- the number of elements in this stack.
| static void clear |
( |
qstack_t * |
stack |
) |
[static] |
qstack->clear(): Removes all of the elements from this stack.
- Parameters:
-
| stack | qstack container pointer. |
| static bool debug |
( |
qstack_t * |
stack, |
|
|
FILE * |
out | |
|
) |
| | [static] |
qstack->debug(): Print out stored elements for debugging purpose.
- Parameters:
-
| stack | qstack container pointer. |
| out | output stream FILE descriptor such like stdout, stderr. |
- Returns:
- true if successful, otherwise returns false.
| static void free_ |
( |
qstack_t * |
stack |
) |
[static] |
qstack->free(): Free qstack_t
- Parameters:
-
| stack | qstack container pointer. |
- Returns:
- always returns true.


There are many types of contribution, for example, helping other users, testing releases, reviewing changes, documentation contribution, bug reporting, JIRA maintenance, code changes, etc. These are documented at the general guidelines. This page focuses on PySpark and includes additional details specifically for PySpark.
Before the official release, PySpark release candidates are shared in the<EMAIL_ADDRESS>mailing list to vote on. This release candidates can be easily installed via pip. For example, in case of Spark 3.0.0 RC1, you can install as below:
pip install https://dist.apache.org/repos/dist/dev/spark/v3.0.0-rc1-bin/pyspark-3.0.0.tar.gz
The link for release files such as https://dist.apache.org/repos/dist/dev/spark/v3.0.0-rc1-bin can be found in the vote thread.
https://dist.apache.org/repos/dist/dev/spark/v3.0.0-rc1-bin
Testing and verifying users’ existing workloads against release candidates is one of the vital contributions to PySpark. It prevents breaking users’ existing workloads before the official release. When there is an issue such as a regression, correctness problem or performance degradation worth enough to drop the release candidate, usually the release candidate is dropped and the community focuses on fixing it to include in the next release candidate.
The release documentation is located under Spark’s docs directory. README.md describes the required dependencies and steps to generate the documentations. Usually, PySpark documentation is tested with the command below under the docs directory:
SKIP_SCALADOC=1 SKIP_RDOC=1 SKIP_SQLDOC=1 bundle exec jekyll serve --watch
PySpark uses Sphinx to generate its release PySpark documentation. Therefore, if you want to build only PySpark documentation alone, you can build under python/docs directory by:
make html
It generates the corresponding HTMLs under python/docs/build/html.
python/docs/build/html
Lastly, please make sure that the new APIs are documented by manually adding methods and/or classes at the corresponding RST files under python/docs/source/reference. Otherwise, they would not be documented in PySpark documentation.
python/docs/source/reference
Before starting to work on codes in PySpark, it is recommended to read the general guidelines. Additionally, there are a couple of additional notes to keep in mind when contributing to codes in PySpark:
See The Zen of Python.
Apache Spark is an unified engine that provides a consistent API layer. In general, the APIs are consistently supported across other languages.
As long as they are Pythonic and do not conflict with other existent APIs, it is fine to raise a API request, for example, decorator usage of UDFs.
See Contributing and Maintaining Type Hints for details.
If you are fixing pandas API on Spark (pyspark.pandas) package, please consider the design principles below:
pyspark.pandas
Often developers face the question whether a particular function should return a pandas-on-Spark DataFrame/Series, or a pandas DataFrame/Series. The principle is: if the returned object can be large, use a pandas-on-Spark DataFrame/Series. If the data is bound to be small, use a pandas DataFrame/Series. For example, DataFrame.dtypes return a pandas Series, because the number of columns in a DataFrame is bounded and small, whereas DataFrame.head() or Series.unique() returns a pandas-on-Spark DataFrame/Series, because the resulting object can be large.
DataFrame.dtypes
DataFrame.head()
Series.unique()
At the risk of overgeneralization, there are two API design approaches: the first focuses on providing APIs for common tasks; the second starts with abstractions, and enables users to accomplish their tasks by composing primitives. While the world is not black and white, pandas takes more of the former approach, while Spark has taken more of the latter.
One example is value count (count by some key column), one of the most common operations in data science. pandas DataFrame.value_count returns the result in sorted order, which in 90% of the cases is what users prefer when exploring data, whereas Spark’s does not sort, which is more desirable when building data pipelines, as users can accomplish the pandas behavior by adding an explicit orderBy.
DataFrame.value_count
orderBy
Similar to pandas, pandas API on Spark should also lean more towards the former, providing discoverable APIs for common data science tasks. In most cases, this principle is well taken care of by simply implementing pandas’ APIs. However, there will be circumstances in which pandas’ APIs don’t address a specific need, e.g. plotting for big data.
Certain operations in pandas are prohibitively expensive as data scales, and we don’t want to give users the illusion that they can rely on such operations in pandas API on Spark. That is to say, methods implemented in pandas API on Spark should be safe to perform by default on large datasets. As a result, the following capabilities are not implemented in pandas API on Spark:
Capabilities that are fundamentally not parallelizable: e.g. imperatively looping over each element
Capabilities that require materializing the entire working set in a single node’s memory. This is why we do not implement pandas.DataFrame.to_xarray. Another example is the _repr_html_ call caps the total number of records shown to a maximum of 1000, to prevent users from blowing up their driver node simply by typing the name of the DataFrame in a notebook.
_repr_html_
A few exceptions, however, exist. One common pattern with “big data science” is that while the initial dataset is large, the working set becomes smaller as the analysis goes deeper. For example, data scientists often perform aggregation on datasets and want to then convert the aggregated dataset to some local data structure. To help data scientists, we offer the following:
DataFrame.to_pandas: returns a pandas DataFrame (pandas-on-Spark only)
DataFrame.to_pandas
DataFrame.to_numpy: returns a numpy array, works with both pandas and pandas API on Spark
DataFrame.to_numpy
Note that it is clear from the names that these functions return some local data structure that would require materializing data in a single node’s memory. For these functions, we also explicitly document them with a warning note that the resulting data structure must be small.
PySpark development requires to build Spark that needs a proper JDK installed, etc. See Building Spark for more details.
If you are using Conda, the development environment can be set as follows.
# Python 3.6+ is required conda create --name pyspark-dev-env python=3.9 conda activate pyspark-dev-env pip install -r dev/requirements.txt
Once it is set up, make sure you switch to pyspark-dev-env before starting the development:
conda activate pyspark-dev-env
Now, you can start developing and running the tests.
With Python 3.6+, pip can be used as below to install and set up the development environment.
pip install -r dev/requirements.txt
PySpark type hints are provided using stub files, placed in the same directory as the annotated module, with exception to:
# type: ignore in modules which don’t have their own stubs (tests, examples and non-public API).
# type: ignore
pandas API on Spark (pyspark.pandas package) where the type hints are inlined.
As a rule of thumb, only public API is annotated.
Annotations should, when possible:
Reflect expectations of the underlying JVM API, to help avoid type related failures outside Python interpreter.
In case of conflict between too broad (Any) and too narrow argument annotations, prefer the latter as one, as long as it is covering most of the typical use cases.
Any
Indicate nonsensical combinations of arguments using @overload annotations. For example, to indicate that *Col and *Cols arguments are mutually exclusive:
@overload
*Col
*Cols
@overload def __init__( self, *, threshold: float = ..., inputCol: Optional[str] = ..., outputCol: Optional[str] = ... ) -> None: ... @overload def __init__( self, *, thresholds: Optional[List[float]] = ..., inputCols: Optional[List[str]] = ..., outputCols: Optional[List[str]] = ... ) -> None: ...
Be compatible with the current stable MyPy release.
Complex supporting type definitions, should be placed in dedicated _typing.pyi stubs. See for example pyspark.sql._typing.pyi.
_typing.pyi
Annotations can be validated using dev/lint-python script or by invoking mypy directly:
dev/lint-python
mypy --config python/mypy.ini python/pyspark
Please follow the style of the existing codebase as is, which is virtually PEP 8 with one exception: lines can be up to 100 characters in length, not 79.
Note that:
the method and variable names in PySpark are the similar case is threading library in Python itself where the APIs were inspired by Java. PySpark also follows camelCase for exposed APIs that match with Scala and Java.
threading
In contrast, functions.py uses snake_case in order to make APIs SQL (and Python) friendly.
functions.py
In addition, pandas-on-Spark (pyspark.pandas) also uses snake_case because this package is free from API consistency with other languages.
PySpark leverages linters such as pycodestyle and flake8, which dev/lint-python runs. Therefore, make sure to run that script to double check.
PySpark follows NumPy documentation style.
In general, doctests should be grouped logically by separating a newline.
For instance, the first block is for the statements for preparation, the second block is for using the function with a specific argument, and third block is for another argument. As a example, please refer DataFrame.rsub in pandas.
These blocks should be consistently separated in PySpark doctests, and more doctests should be added if the coverage of the doctests or the number of examples to show is not enough.


Mines Weeper
Beginner
Medium
Expert
time:
000
| remaining flags:
| lives:
best time:
Safe Click |
click(s) available
Manually Create
Play
mines to place


Linda Summers Design Associates is an award winning full service interior design firm. Our services range from custom home design, remodels and office design to full custom interiors including choosing color, furniture, fabric, and art selection... to implementing final details. We identify areas where savings can be achieved and target areas where spending will bring value. We can collaborate with architect's to design a customized home, select and purchase architectural surfaces through planning and placement of interior layouts.
Our Design Philosophy is simple; we are dedicated to creating unique spaces with style, vision and service. Linda has been creating beautiful homes from her studio in the Pacific Northwest since 1994.
Linda Summers has almost 20 years of award winning interior design experience. Her ability to effectively design space and create beautiful, functional rooms has earned her the respect of both clients and contractors. Linda has designed and collaborated on custom home design, remodels and office design. Linda also draws on her 15 years of fine art experience in the Boston area. She interned with Philip Hugh Smith, a noted Boston Interior Designer and was Gallery Co-ordinator for the South Shore Art Center, Cohasset, MA. Linda Summers received her B.A. from the University of Massachusetts Boston, majoring in Studio Art and Psychology. She earned her A.A. in Interior Design, with honors, from Bellevue Community College’s 3 year program. She has served as an ASID (American Society of Interior Designers) board member and was a Seattle Design Center Studio Designer (1997-2000).
Featured articles appeared in the:


--- layout: default lang: en pageId: sass-variables title: About Sass/CSS variables description: Some general rules about Sass variables keywords: structure, Sass, CSS, design system, proton section: fe-conventions subsection: sass-variables ---
design-system-config
, in order to make people understand that it can be used in several cases.$header-height
: $width-sidebar
: $toolbar-height
: $subnav-width
: $conversations-column-width
: used for conversations column width (!), and to align searchbox container: $pm-primary
: alias for main color on the project (by default to $pm-blue
)$pm-primary-light
: alias for main light color on the project (by default to $pm-blue-light
)$pm-primary-dark
: alias for main dark color on the project (by default to $pm-blue-dark
)For color variables, have a look at colors section.
If you need (for your project) to set up different values than the default one of the design system, do overwrite variables in styles-pm.scss
, not in Sass partials, as they could be updated later.
Each variable in Sass partials must have !default
, in order to avoid break layout on each project with different settings.
These CSS custom properties are present to allow easy theming of the interface. You can see examples in action in Themes section.
--main-bg-color
: global main color--secondary-bg-color
: secondary main color--bgcolor-searchbox-field
: background-color of searchbox--bgcolor-spacebar
: background-color of remaining space bar--bgcolor-aside-link
: background-color of link icons in aside bar.--bgcolor-toolbar
: background-color of the toolbar--bgcolor-item-column-list
: background-color of the list of items/mails (left column in conversations)--bgcolor-unread-item-column-list
: background-color of unread items/mails (left column in conversations)--bgcolor-item-column-active
: background-color of the list of items/mails (left column in conversations)--bgcolor-view-column-detail
: background-color of the detail view of emails (right column in conversations)--bgcolor-main-area
: background-color of the main area (settings)--color-main-area
: color of the main area (settings)--bgcolor-subnav
: background-color of the subnavigation--color-subnav-link
: color of the subnavigation links--bordercolor-input
: border-color of the inputs--bgcolor-input
: background-color of the inputs--color-input
: color of the text in inputs--bgcolor-highlight
: background-color of highlight helper--fillcolor-logo
: color used for filling SVG logo--fillcolor-icons
: color used for filling icons--color-nav-link
: color used for navigation links--color-nav-active
: color used for navigation links when active--color-standard-text
: color used for text--boxshadow-main
: used to apply a box shadow on main content (used for light theme for example)--width-sidebar
: width of the navigation--width-conversation-column
: width of the conversation column--width-subnav
: width of the sub navigation (short links)--body-fontsize
: global font size.--label-width
: the width of label
(in forms)--bgcolor-meterbar
: the background color of meter
--bgcolor-calendar-now-indicator
: background-color for now hour line indicatorUpdating these custom properties allows to create simple themes without surcharging all the CSS stuff.
If you need to check where they are used, perform a search of have a look at design-system-website/_themes.scss
, it contains all rules that are using them. This partial should not be used in production, it is only for testing and reference purposes.
Sass files for themes are in _sass/pm-styles/
, example _sass/pm-styles/_pm-blue-theme.scss
. They are using _sass/pm-styles/_pm-theme-config.scss
partial.


Schema
- The root. Defines what queries you can do, and
what types they return.
Resolver
- Functions that return data.Type
- A type definition describing the shape of the data
you'll return.
{: data-line=“4,5”}
Absinthe is a Plug, and you pass it one Schema.
See: Our first query
{: .-three-column}
defmodule Blog.Schema do
use Absinthe.Schema
import_types Blog.Schema.Types
query do
@desc "Get a list of blog posts"
field :posts, list_of(:post) do
resolve &Blog.PostResolver.all/2
end
end
end
{: data-line=“5,6,7,8,9,10”}
This schema will account for { posts { ··· } }
. It returns a
Type of :post
, and delegates to a
Resolver.
{: data-line=“3”}
This is the function that the schema delegated the
posts
query to.
defmodule Blog.Schema.Types do
use Absinthe.Schema.Notation
@desc "A blog post"
object :post do
field :id, :id
field :title, :string
field :body, :string
end
end
{: data-line=“4,5,6,7,8,9”}
This defines a type :post
, which is used by the resolver.
{ user(id: "1") { ··· } }
query do
field :user, type: :user do
arg :id, non_null(:id)
resolve &Blog.UserResolver.find/2
end
end
{: data-line=“3”}
{: data-line=“1”}
See: Query arguments
{
mutation CreatePost {
post(title: "Hello") { id }
}
}
mutation do
@desc "Create a post"
field :post, type: :post do
arg :title, non_null(:string)
resolve &Blog.PostResolver.create/2
end
end
{: data-line=“1”}
See: Mutations


Methods available globally (within the defined realm)
Assigns the target player their next assassination target (if they are the assassin role).
Realm: Client and Server
Added in: 1.0.0
Parameters:
false
)
Whether the current version is equal to or newer than the version number given.
Realm: Client and Server
Added in: 1.0.0
Parameters:
Finds a possible respawn position based on accessible areas around the given position.
Realm: Server
Added in: 1.0.0
Parameters:
Returns: An accessible position around the given position or false
if none can be found
Generates a new ID to be used for custom scoring events.
Realm: Server
Added in: 1.2.5
Parameters:
ROLE_NONE
if this should not be associated with any role (Added in 1.4.2)NOTE: To get this value on the client, use the TTTSyncEventIDs
hook and pull the value out of the EVENTS_BY_ROLE
global table
Generates a new ID to be used for custom win conditions.
Realm: Server
Added in: 1.2.5
Parameters:
ROLE_NONE
if this should not be associated with any role (Added in 1.4.2)NOTE: To get this value on the client, use the TTTSyncWinIDs
hook and pull the value out of the WINS_BY_ROLE
global table
Gets an equipment item's definition by their ID.
Realm: Client and Server
Added in: 1.0.0
Parameters:
Gets an equipment item's definition by their name.
Realm: Client and Server
Added in: 1.0.0
Parameters:
Dynamically created functions for each role that returns a function that filters net messages to players that are role.
Realm: Server
Added in: Whenever each role is added
Parameters:
false
)
Returns a function that filters net messages to players that are on the innocent team.
Realm: Server
Added in: 1.0.0
Parameters:
false
)
Returns a function that filters net messages to players that are on the jester team.
Realm: Server
Added in: 1.0.0
Parameters:
false
)
Returns a function that filters net messages to players that are on the independent team.
Realm: Server
Added in: 1.0.0
Parameters:
false
)
Returns a function that filters net messages to players that are on the monster team.
Realm: Server
Added in: 1.0.0
Parameters:
false
)
Gets the untranslated name belonging to the specified role team (see ROLE_TEAM_* global enumeration).
Realm: Client and Server
Added in: 1.8.6
Parameters:
Gets the color belonging to the specified role team (see ROLE_TEAM_* global enumeration).
Realm: Client
Added in: 1.1.8
Parameters:
Gets the name and color belonging to the specified role team (see ROLE_TEAM_* global enumeration).
Realm: Client
Added in: 1.2.7
Parameters:
Returns:
Gets the name belonging to the specified role team (see ROLE_TEAM_* global enumeration).
Realm: Client and Server
Added in: 1.2.7 on Client and 1.8.2 on Server
Parameters:
NOTE: This will not use translated names when called on the server
Gets the given player's current sprint multiplier.
Realm: Client and Server
Added in: 1.0.0
Parameters:
Gets a table of role numbers that belong to the team whose lookup table is given.
Realm: Client and Server
Added in: 1.0.2
Parameters:
Returns a function that filters net messages to players that are on the traitor team.
Realm: Server
Added in: 1.0.0
Parameters:
false
)
Used to display a message, play a sound, and/or create confetti when a member of the jester team is killed. Automatically checks ttt_%NAMERAW%_notify_mode
, ttt_%NAMERAW%_notify_sound
, and ttt_%NAMERAW%_notify_confetti
convars.
Realm: Server
Added in: 1.3.1
Parameters:
true
)
Handles player highlighting (colored glow around players) rules for the local player.
Realm: Client
Added in: 1.2.7
Parameters:
false
, jesters will appear in the generic enemy color insteadtrue
, allied roles will be shown in the traitor color. Otherwise allied roles will be shown in the innocent colortrue
then allies will not be highlighted. If both this and showJesters are true
then neither allies nor jesters will be highlighted
Registers a role with Custom Roles for TTT. See here for instructions on how to create a role and role table structure.
Realm: Client and Server
Added in: 1.0.9
Sets the target player's health and max health based on their role convars.
Realm: Client and Server
Added in: 1.0.3
Parameters:
Sets the target player's max health based on their role convars.
Realm: Client and Server
Added in: 1.0.15
Parameters:
Sets the target player's health based on their role convars.
Realm: Client and Server
Added in: 1.0.15
Parameters:
Whether extra information should be shown for the traitor team (e.g. teammate assassin's target and teammate parasite's infection).
Realm: Client and Server
Added in: 1.5.7
Whether an unpromoted detective-like player (deputy/impersonator) should be promoted.
Realm: Server
Added in: 1.2.5
Whether the given string starts with a vowel.
Realm: Client and Server
Added in: 1.0.8
Updates the role color tables based on the color convars and color type convar.
Realm: Client and Server
Added in: 1.0.0
Updates the role string tables based on the role name convars.
Realm: Client and Server
Added in: 1.0.7
Enables and disables weapons based on which roles are enabled.
Realm: Client and Server
Added in: 1.0.5
Updates the team membership, colors, and weapon state based on which roles are enabled and belong to which teams.
Realm: Client and Server
Added in: 1.0.0


Tests verifying the soundness of the Access-Control-Allow-Origin header
*
) to allow multiple origins while at the
same time allowing authenticated requests. This is why many implementations create dynamic
responses based on the Origin
header. If an endpoint blindly allows all origins
while at the same time allowing authenticated requests, either the resource should not require
authentication or it is too sensible to be shared across origin boundaries. This test case
blindly replays the Origin
header in the Access-Control-Allow-Origin
header.
null
origin in an Access-Control-Allow-Origin
header is
equivalent to allowing every origin. Combined with allowing authenticated requests, the same
concerns as with insecure dynamic header generation apply.


|
Project 05: Texture mapping Tushar T. |
|
Regular and Infinite Sphere Texture Mapping with Bi-linear filtering. |
|
Infinite Plane Texture Mapping. |
|
Texture used for Infinite Plane mapping. |
|
Texture used for Sphere mappings. |
|
Texture used for Normal Mapping. |
|
Edit: Texture mapping |
|
|
|
|


Contributed by Geoff Clare
transpose performs a matrix transposition on its input. I wrote this when I saw a script to do this job posted to the Net and thought it was horribly inefficient. I posted mine as an alternative with timing comparisons. If I remember rightly, the original one stored all the elements individually and used a nested loop with a printf for each element. It was immediately obvious to me that it would be much faster to construct the rows of the transposed matrix "on the fly."
My script uses ${1+"$@
"
}
to supply file names on the awk command line
so that if no files are specified awk will read its standard input. This
is much better than plain $*
which can't handle filenames containing
whitexspace.
#! /bin/sh # Transpose a matrix: assumes all lines have same number # of fields exec awk ' NR == 1 { n = NF for (i = 1; i <= NF; i++) row[i] = $i next } { if (NF > n) n = NF for (i = 1; i <= NF; i++) row[i] = row[i] " " $i } END { for (i = 1; i <= n; i++) print row[i] }' ${1+"$@"}
Here's a test file:
1 2 3 4 5 6 7 8 9 10 11 12
Now we run transpose on the file.
$transpose test
1 5 9 2 6 10 3 7 11 4 8 12
This is a very simple but interesting script. It creates an array named row and appends each field into an element of the array. The END procedure outputs the array.


Reports conditional expressions which are negated with a prefix expression. For example:
!(i == 1 ? a : b)
New in 13


Click here to start
Table of Contents: |
Author: jcsc.biz E-mail<EMAIL_ADDRESS>Homepage: http://jcsc.biz/ Further information: ~JCSC DEV Team~ |
Table of Contents: |
Author: jcsc.biz E-mail<EMAIL_ADDRESS>Homepage: http://jcsc.biz/ Further information: ~JCSC DEV Team~ |


This page tests out a couple different venn diagram layout algorithms for accuracy and performance on random data.
Circles are randomly positioned and then the intersection areas are calculated from these circles. Using only the intersection areas, each algorithm has to lay out a venn diagram that is isomorphic to the original input.
The graphs below measure the percentage of the time the algorithm successfully reconstructs the input, and how long it takes to do so.
These charts show the difference in performance from the original version compared with the algorithm improvements detailed in this post.
A failure in this case is if any laid out area differs by a perceptible amount from the input: I chose a 10% difference in size to be perceptible.
The difficulty in this test is strongly dependant on how the circles are positioned randomly. I'm setting the centres of each circle to be in randomly (0, 1) and then setting the radii to be in (0.1, 0.5). This can be made easier by setting the radii to (0.5, 1.0) or harder by setting to (0.1, 0.3) for instance.


Wolves tipped for busy January transfer window as Nuno urged to join Premier League rivals
The latest Wolverhampton Wanderers news and views from BirminghamLive
by Mark WakefieldINJURY LATEST
Wolverhampton Wanderers have provided an injury update on trio Adam Traore, Morgan Gibbs-White and Willy Boly ahead of the November international break.
Traore received his first Spain call-up earlier this month for their Euro 2020 qualifiers against Malta and Romania, but withdraw from the squad due to a hamstring injury.
Gibbs-White has been suffering from a back problem in recent weeks, having not featured in the matchday squad since he was named on the bench for Wolves ' draw with Arsenal earlier this month.
Wolves’ head of medical, Phil Hayward, has confirmed that the pair will remain at Compton to receive treatment during the international break.
WEST HAM URGED TO LURE NUNO AWAY FROM WOLVES
Premier League side West Ham have been urged to "try" and lure manager Nuno Espirito Santo away from Wolverhampton Wanderers .
That is the view of talkSPORT host Adrian Durham, who claims that the Hammers should increase their ambition and bring a new manager in to replace Manuel Pellegrini.
West Ham have had a tough start to the season, amassing just 13 points from their opening 16 Premier League fixtures and are in 16th place in the table and five points above the relegation zone.
Wolves are having a better campaign than the Hammers so far, with Nuno’s side three points better off in the league and are also on course to reach the knockout stages of the Europa League.
Nuno is currently in his third season in Molineux hotseat, and Durham believes he would be a better fit for West Ham than current boss Pellegrini.
Durham also suggested that the Hammers “try” and bring in Jose Mourinho, who is currently out of work after being sacked by Manchester United in December last year.
WOLVES SEND SCOUT TO BELGIUM
Wolverhampton Wanderers reportedly had a scout watching a match in Belgium in recent days.
According to reports in Belgium , a scout from Wolves was in attendance to watch the First Division A clash between Anderlecht and Zulte Waregem.
The report also claims that scouts from other top clubs from across Europe were also watching the game, with Manchester United, Arsenal, Rangers, Ajax, Atalanta, Feyenoord, Genoa, Inter Milan, Marseille, Real Sociedad and Sevilla all represented.
It has been suggested that the players being watched were Anderlecht duo Yari Verschaeren and Albert Sambi Lokonga.
WOLVES TO BATTLE WITH MAN UTD FOR EXCITING FORWARD
Wolverhampton Wanderers are reportedly set to compete with a number of clubs for the signing of Atalanta youngster Dejan Kulusevski.
According to reports in Italy , Wolves will battle with Manchester United and Southampton for the 19-year-old’s signature during the January transfer window.
Italian giants Inter Milan are the club thought to be the most interested in Kulusevski’s signature, but do face competition from the aforementioned English clubs.
It is also believed that those clubs are ready to offer €17-€18m to sign Kulusevski, although that is a figure Atalanta would reject as they would prefer €25m for the player.
WOLVES COULD PLAY ROLE IN MAN UTD TRANSFER
Wolverhampton Wanderers are once again being linked with a move for AC Milan midfielder Franck Kessie.
The 22-year-old has been widely tipped to head for the exit door at the San Siro, with Wolves claimed to be a potential destination.
Fresh reports in Italy claim that Arsenal, Tottenham Hotspur and West Ham have all shown an interest in acquiring Kessie’s signature, but adds that Wolves are “above everyone” because of their relationship with Milan.
Wolves signed striker Patrick Cutrone from the Italian outfit in the summer, and it is believed the two clubs are on good terms following the deal.
It is also being claimed that Kessie’s exit could be accelerated to make way for Manchester United midfielder Nemanja Matic.
KEEPER IMPRESSES AFTER WOLVES HEROICS
Premier League duo Crystal Palace and Brighton are reportedly preparing to make a move for a goalkeeper who recently impressed against Wolverhampton Wanderers .
Dominik Greif , who recently starred for Slovan Bratislava in their Europa League group stage tie against Wolves, is being linked with a move to England.
Football Insider claim that Palace and Brighton sent scouts to watch Greif in action against Wolves in Slovakia earlier this month.
The 22-year-old stopper was called into action multiple times throughout the clash against Wolves, and even saved a penalty from Ruben Neves.


Toggle navigation
User Management
Dashboard
User
New User
Users List
Profile
Logout
User Information
Home /
NewUser
General
First Name
Last Name
Middle Name
Date Of Birth
Gender
---select---
Male
female
Country
---select---
India
Australia
Phone
format :<PHONE_NUMBER>
Phone + Ext
format : 091-123-567-8900
Email
Address
Username
Password
Confirm Password
Role
---select---
Admin
User
Photo
Acceptable image formats are jpg, jpeg, png & gif.
Maximum image size allowed is 2MB.
Click or drag a file to change your image
Update
Reset


List of Exercises # 3
1) Reuse the function to convert Celsius to Fahrenheit made on exercise #2. But this time the celsius temperature should be informed in the input field below and the calculation done after pressing the button.
* To get the input's value, use .value instead of .innerHTML
oC2) Print in the list below the years when the World Cup of Soccer will happen from 2022 to 2050. Remember that the World Cup happens every 4 years.
- Place each year inside an li here
3) Use the input fields below to inform two grades and the number of absences of a student. Follow the rules below to inform the result:
Grade 1
Grade 2
Absences
4) See below the list of sales of an online course.
var sales = [
{
'student': 'Jason Gomes',
'date': '10/06/2018',
'amount': 34.99,
'refundRequested': null
},
{
'student': 'Carlos Blue',
'date': '10/06/2018',
'amount': 29.99,
'refundRequested': null
},
{
'student': 'Martin Heyes',
'date': '11/06/2018',
'amount': 39.99,
'refundRequested': '13/06/2018'
},
{
'student': 'Isabella Hopkins',
'date': '11/06/2018',
'amount': 29.99,
'refundRequested': null
},
{
'student': 'Andrew Walt',
'date': '12/06/2018',
'amount': 34.99,
'refundRequested': null
}
];
Fill the html table below with the sales and print the total amount of sales in the last line. Don't include the sales that had a refund requested.
| Student | Date | Amount |
|---|---|---|
| Student name goes here | Date goes here | Amount goes here |
| Total sold | Total goes here |


Setup Documentation
Setup
To some, setting up Mila can prove challenging if you're not sure what you're doing. To make it easier for you we've put together a simple guide for this, think of it as a nifty hand-book for Mila.
Inviting Mila
Inviting Mila is pretty simple, all you have to do is:
- Make sure you have manage server/owner perms on your server
- Click here to go to the invite page
- Click authorize
Server Setup
Mila's configuration options can be pretty advanced and a bit overwhelming at times, to take some weight off of your back, Mila has a setup command that will run you through a process where you can setup a basic configuration.
Tip
Some settings accept skip
as an option to allow you to leave a certain setting unchanged.
Running Setup
Triggering server setup is pretty simple. Once Mila has joined your server, be sure to run the m.setup
command and follow through everything, this will let you set some basic options without having to read Mila's advanced configuration guide.
Custom Prefix
If you answered yes to Mila's first question, Mila will ask you if you'd like to set a custom prefix for the server. If you do, then simply say the prefix, if not then simply say skip
to skip the step.
Welcome Message
Once you've done that Mila will ask you to set a welcome message. This is the message displayed on the user log sent when a member joins!
Goodbye Message
Next, Mila will ask you for a goodbye message, this is the same as a greeting message, except it is shown when a user leaves.
Logging Channel
After that, Mila will ask you to mention or provide the ID of the channel that you want to use as your logging channels. This is where all of Mila's logs will be sent, these can be set individually with advanced commands.
Logging Messages
Once you've answered that, Mila will ask you if you wish to log message edits and deletes in the logging channel, react accordingly to your desired setting.
Member Role
Finally, Mila will ask you to provide a member role, this is what is assigned to a member when they join. Think of it as an automatic role that is assigned to everyone that joins.
Info
If Mila is missing the Manage Roles
permission then you will not be asked this question.
All Done
Once you've finished the final step, you are done! You've successfully setup a basic configuration that has already given you a taster of Mila's true ability.
Additional Support
In case you need any extra help or support, you can always join Mila's Discord server and the team will do their best to help you out!


Output
CleanUp
Make Authorization Request
Make Token Request
Make Implicit Authorization Request
Make Test Endpoint Request


The Modifications tab is dedicated to peptide-level post translational modifications (PTM) analysis.
The PTM of interest is selected in the top left corner and the modified peptides present in the dataset will be displayed.
The PTM location displayed here is also displayed in the Overview tab and the 3D Structure tab. For example,
it is possible to verify here the correctness of the phosphorylation status of a peptide and to visualize it
on the sequence in the tables in the Overview tab or on the 3D structure in the 3D Structure tab. Finally, you can confront
your results with data in UniProt using the Annotation tab.
The modification of choice can be selected. Note that for the sake of simplicity only variable modifications are displayed in PeptideShaker. Modifications are color coded and the colors can be edited in this table or in the Search Parameters accessible from the Edit menu.
All peptides found in the dataset with the selected variable modification are listed in the Modified Peptides table.
The peptide inference status is displayed like in the Overview tab. Then, the sequence is displayed with the
selected PTM location confidence color coded. Note that the peptide modification status is deduced from the PSMs' modification status.
The confidence in the PTM site assignment is color coded based on the PTM location scores:
When both scores confidently agree on the PTM site, the PTM is labeled as "Very Confident"; if the A-score is confident
but disagrees with the search engine's best assumption, the PTM is labeled as "Confident"; if the A-score is not confident
and the delta score is, the location is labeled as "Doubtful"; finally if no score is confident, the modification is labeled
as "Random".
The scores are annotated on the sequence on the right of the table, the delta score on the top of the selected amino acid
and the A-score below.
The confidence and validation status of the selected peptide is diplayed as in the Overview tab.
Whenever a peptide sequence contains or is contained by the selected peptide sequence, this peptide is displayed in the
Related Peptides table. For instance, non-modified peptides or miscleaved peptides will be displayed and may help to
validate the identification and modification status of the selected peptide.
The structure of the Related Peptides table is similar to the Modified Peptides table.
The Peptide to Spectrum Matches (PSMs) linking to the selected peptide are displayed in the PSM table. The PTM location score of these PSMs will make the peptide score. If you select a row in the PSM table, the corresponding spectrum will be displayed.
The Peptide to Spectrum Matches (PSMs) linking to the selected related peptide are displayed in the related PSM table. The spectrum of the PSM is displayed when clicking on the row of interest.
The spectrum of the selected PSM will be displayed with the peaks annotated according to the ion annotation settings.
Note that the peak annotation has a dramatic effect on the A-score. It is important to carefully tune the annotation
settings when inspecting a doubtful peptide.
For more information on how to interact with the spectrum see the help option in the menu below the spectrum.
(to be added...)


---
layout: default
---
Assignment: Final Project Proposal
Assignment: Final Project Proposal
Please make a second pass through your proposal draft. Go through it in detail:
- Correct any spelling or grammatical errors.
- Expand upon important or interesting points.
- Remove anything unnecessary.
- Add images and descriptions for any new prototypes you've created.
Next, create a schedule of deliverables.
- Create a new section of the document called "Schedule of Deliverables".
- Break down the complete project work into many individual tasks (around 5 - 15 tasks).
- Create a bulleted list with one-sentence descriptions of each task.
- Add up to 5 one-sentence sub-bullets for each task if you feel they are necessary.
- Think about how much work/time each task will likely take.
- Add estimated delivery dates for each task. Keep in mind you have 5 weeks for this work.
- Please fork https://github.com/curran/dataviz-project-template in GitHub, rename your fork, and include the URL of your forked repository in your proposal document. Feel free to start working on your project inside this repository whenever you are ready.
Here's an example schedule of deliverables (feel free to copy and modify this):
- (Oct 9) Create project repository by forking https://github.com/curran/dataviz-project-template
- (Oct 12) Port the visualization example from bl.ocks.org into the repository.
- Add the data to the repository
- Refactor to split the code into ES6 modules.
- Make the visualization respond to resize.
- (Oct 19) Create the second visualization view for the project.
- Make both visualizations appear on the page, possibly using d3-boxes to compute the layout.
- (Oct 25) Add brushing interaction to one of the views.
- (Nov 1) Link the brushing to a filter that feeds into the other view.
- (Nov 9) Fine tuning, color and font adjustments, write documentation, create video.
Please do begin the project by forking https://github.com/curran/dataviz-project-template. This uses Webpack for splitting code into multiple modules, and contains some starter code that responds to resize.


|
API
For Arduino developers
|
Provide an easy-to-use way to manipulate ESP8266. More...
#include <ESP8266.h>
Public Member Functions | |
| bool | kick (void) |
| Verify ESP8266 whether live or not. More... | |
| bool | restart (void) |
| Restart ESP8266 by "AT+RST". More... | |
| String | getVersion (void) |
| Get the version of AT Command Set. More... | |
| bool | setOprToStation (void) |
| Set operation mode to staion. More... | |
| bool | setOprToSoftAP (void) |
| Set operation mode to softap. More... | |
| bool | setOprToStationSoftAP (void) |
| Set operation mode to station + softap. More... | |
| String | getAPList (void) |
| Search available AP list and return it. More... | |
| bool | joinAP (String ssid, String pwd) |
| Join in AP. More... | |
| bool | leaveAP (void) |
| Leave AP joined before. More... | |
| bool | setSoftAPParam (String ssid, String pwd, uint8_t chl=7, uint8_t ecn=4) |
| Set SoftAP parameters. More... | |
| String | getJoinedDeviceIP (void) |
| Get the IP list of devices connected to SoftAP. More... | |
| String | getIPStatus (void) |
| Get the current status of connection(UDP and TCP). More... | |
| String | getLocalIP (void) |
| Get the IP address of ESP8266. More... | |
| bool | enableMUX (void) |
| Enable IP MUX(multiple connection mode). More... | |
| bool | disableMUX (void) |
| Disable IP MUX(single connection mode). More... | |
| bool | createTCP (String addr, uint32_t port) |
| Create TCP connection in single mode. More... | |
| bool | releaseTCP (void) |
| Release TCP connection in single mode. More... | |
| bool | registerUDP (String addr, uint32_t port) |
| Register UDP port number in single mode. More... | |
| bool | unregisterUDP (void) |
| Unregister UDP port number in single mode. More... | |
| bool | createTCP (uint8_t mux_id, String addr, uint32_t port) |
| Create TCP connection in multiple mode. More... | |
| bool | releaseTCP (uint8_t mux_id) |
| Release TCP connection in multiple mode. More... | |
| bool | registerUDP (uint8_t mux_id, String addr, uint32_t port) |
| Register UDP port number in multiple mode. More... | |
| bool | unregisterUDP (uint8_t mux_id) |
| Unregister UDP port number in multiple mode. More... | |
| bool | setTCPServerTimeout (uint32_t timeout=180) |
| Set the timeout of TCP Server. More... | |
| bool | startTCPServer (uint32_t port=333) |
| Start TCP Server(Only in multiple mode). More... | |
| bool | stopTCPServer (void) |
| Stop TCP Server(Only in multiple mode). More... | |
| bool | startServer (uint32_t port=333) |
| Start Server(Only in multiple mode). More... | |
| bool | stopServer (void) |
| Stop Server(Only in multiple mode). More... | |
| bool | send (const uint8_t *buffer, uint32_t len) |
| Send data based on TCP or UDP builded already in single mode. More... | |
| bool | send (uint8_t mux_id, const uint8_t *buffer, uint32_t len) |
| Send data based on one of TCP or UDP builded already in multiple mode. More... | |
| uint32_t | recv (uint8_t *buffer, uint32_t buffer_size, uint32_t timeout=1000) |
| Receive data from TCP or UDP builded already in single mode. More... | |
| uint32_t | recv (uint8_t mux_id, uint8_t *buffer, uint32_t buffer_size, uint32_t timeout=1000) |
| Receive data from one of TCP or UDP builded already in multiple mode. More... | |
| uint32_t | recv (uint8_t *coming_mux_id, uint8_t *buffer, uint32_t buffer_size, uint32_t timeout=1000) |
| Receive data from all of TCP or UDP builded already in multiple mode. More... | |
Provide an easy-to-use way to manipulate ESP8266.
| bool ESP8266::createTCP | ( | String | addr, |
| uint32_t | port | ||
| ) |
Create TCP connection in single mode.
| addr | - the IP or domain name of the target host. |
| port | - the port number of the target host. |
| true | - success. |
| false | - failure. |
Definition at line 191 of file ESP8266.cpp.
| bool ESP8266::createTCP | ( | uint8_t | mux_id, |
| String | addr, | ||
| uint32_t | port | ||
| ) |
Create TCP connection in multiple mode.
| mux_id | - the identifier of this TCP(available value: 0 - 4). |
| addr | - the IP or domain name of the target host. |
| port | - the port number of the target host. |
| true | - success. |
| false | - failure. |
Definition at line 211 of file ESP8266.cpp.
| bool ESP8266::disableMUX | ( | void | ) |
Disable IP MUX(single connection mode).
In single connection mode, only one TCP or UDP communication can be builded.
| true | - success. |
| false | - failure. |
Definition at line 186 of file ESP8266.cpp.
| bool ESP8266::enableMUX | ( | void | ) |
Enable IP MUX(multiple connection mode).
In multiple connection mode, a couple of TCP and UDP communication can be builded. They can be distinguished by the identifier of TCP or UDP named mux_id.
| true | - success. |
| false | - failure. |
Definition at line 181 of file ESP8266.cpp.
| String ESP8266::getAPList | ( | void | ) |
Search available AP list and return it.
Definition at line 138 of file ESP8266.cpp.
| String ESP8266::getIPStatus | ( | void | ) |
Get the current status of connection(UDP and TCP).
Definition at line 167 of file ESP8266.cpp.
| String ESP8266::getJoinedDeviceIP | ( | void | ) |
Get the IP list of devices connected to SoftAP.
Definition at line 160 of file ESP8266.cpp.
| String ESP8266::getLocalIP | ( | void | ) |
Get the IP address of ESP8266.
Definition at line 174 of file ESP8266.cpp.
| String ESP8266::getVersion | ( | void | ) |
Get the version of AT Command Set.
Definition at line 80 of file ESP8266.cpp.
| bool ESP8266::joinAP | ( | String | ssid, |
| String | pwd | ||
| ) |
Join in AP.
| ssid | - SSID of AP to join in. |
| pwd | - Password of AP to join in. |
| true | - success. |
| false | - failure. |
Definition at line 145 of file ESP8266.cpp.
| bool ESP8266::kick | ( | void | ) |
Verify ESP8266 whether live or not.
Actually, this method will send command "AT" to ESP8266 and waiting for "OK".
| true | - alive. |
| false | - dead. |
Definition at line 58 of file ESP8266.cpp.
| bool ESP8266::leaveAP | ( | void | ) |
Leave AP joined before.
| true | - success. |
| false | - failure. |
Definition at line 150 of file ESP8266.cpp.
| uint32_t ESP8266::recv | ( | uint8_t * | buffer, |
| uint32_t | buffer_size, | ||
| uint32_t | timeout = 1000 |
||
| ) |
Receive data from TCP or UDP builded already in single mode.
| buffer | - the buffer for storing data. |
| buffer_size | - the length of the buffer. |
| timeout | - the time waiting data. |
Definition at line 271 of file ESP8266.cpp.
| uint32_t ESP8266::recv | ( | uint8_t | mux_id, |
| uint8_t * | buffer, | ||
| uint32_t | buffer_size, | ||
| uint32_t | timeout = 1000 |
||
| ) |
Receive data from one of TCP or UDP builded already in multiple mode.
| mux_id | - the identifier of this TCP(available value: 0 - 4). |
| buffer | - the buffer for storing data. |
| buffer_size | - the length of the buffer. |
| timeout | - the time waiting data. |
Definition at line 276 of file ESP8266.cpp.
| uint32_t ESP8266::recv | ( | uint8_t * | coming_mux_id, |
| uint8_t * | buffer, | ||
| uint32_t | buffer_size, | ||
| uint32_t | timeout = 1000 |
||
| ) |
Receive data from all of TCP or UDP builded already in multiple mode.
After return, coming_mux_id store the id of TCP or UDP from which data coming. User should read the value of coming_mux_id and decide what next to do.
| coming_mux_id | - the identifier of TCP or UDP. |
| buffer | - the buffer for storing data. |
| buffer_size | - the length of the buffer. |
| timeout | - the time waiting data. |
Definition at line 287 of file ESP8266.cpp.
| bool ESP8266::registerUDP | ( | String | addr, |
| uint32_t | port | ||
| ) |
Register UDP port number in single mode.
| addr | - the IP or domain name of the target host. |
| port | - the port number of the target host. |
| true | - success. |
| false | - failure. |
Definition at line 201 of file ESP8266.cpp.
| bool ESP8266::registerUDP | ( | uint8_t | mux_id, |
| String | addr, | ||
| uint32_t | port | ||
| ) |
Register UDP port number in multiple mode.
| mux_id | - the identifier of this TCP(available value: 0 - 4). |
| addr | - the IP or domain name of the target host. |
| port | - the port number of the target host. |
| true | - success. |
| false | - failure. |
Definition at line 221 of file ESP8266.cpp.
| bool ESP8266::releaseTCP | ( | void | ) |
Release TCP connection in single mode.
| true | - success. |
| false | - failure. |
Definition at line 196 of file ESP8266.cpp.
| bool ESP8266::releaseTCP | ( | uint8_t | mux_id | ) |
Release TCP connection in multiple mode.
| mux_id | - the identifier of this TCP(available value: 0 - 4). |
| true | - success. |
| false | - failure. |
Definition at line 216 of file ESP8266.cpp.
| bool ESP8266::restart | ( | void | ) |
Restart ESP8266 by "AT+RST".
This method will take 3 seconds or more.
| true | - success. |
| false | - failure. |
Definition at line 63 of file ESP8266.cpp.
| bool ESP8266::send | ( | const uint8_t * | buffer, |
| uint32_t | len | ||
| ) |
Send data based on TCP or UDP builded already in single mode.
| buffer | - the buffer of data to send. |
| len | - the length of data to send. |
| true | - success. |
| false | - failure. |
Definition at line 261 of file ESP8266.cpp.
| bool ESP8266::send | ( | uint8_t | mux_id, |
| const uint8_t * | buffer, | ||
| uint32_t | len | ||
| ) |
Send data based on one of TCP or UDP builded already in multiple mode.
| mux_id | - the identifier of this TCP(available value: 0 - 4). |
| buffer | - the buffer of data to send. |
| len | - the length of data to send. |
| true | - success. |
| false | - failure. |
Definition at line 266 of file ESP8266.cpp.
| bool ESP8266::setOprToSoftAP | ( | void | ) |
Set operation mode to softap.
| true | - success. |
| false | - failure. |
Definition at line 104 of file ESP8266.cpp.
| bool ESP8266::setOprToStation | ( | void | ) |
Set operation mode to staion.
| true | - success. |
| false | - failure. |
Definition at line 87 of file ESP8266.cpp.
| bool ESP8266::setOprToStationSoftAP | ( | void | ) |
Set operation mode to station + softap.
| true | - success. |
| false | - failure. |
Definition at line 121 of file ESP8266.cpp.
| bool ESP8266::setSoftAPParam | ( | String | ssid, |
| String | pwd, | ||
| uint8_t | chl = 7 , |
||
| uint8_t | ecn = 4 |
||
| ) |
Set SoftAP parameters.
| ssid | - SSID of SoftAP. |
| pwd | - PASSWORD of SoftAP. |
| chl | - the channel (1 - 13, default: 7). |
| ecn | - the way of encrypstion (0 - OPEN, 1 - WEP, 2 - WPA_PSK, 3 - WPA2_PSK, 4 - WPA_WPA2_PSK, default: 4). |
Definition at line 155 of file ESP8266.cpp.
| bool ESP8266::setTCPServerTimeout | ( | uint32_t | timeout = 180 | ) |
Set the timeout of TCP Server.
| timeout | - the duration for timeout by second(0 ~ 28800, default:180). |
| true | - success. |
| false | - failure. |
Definition at line 231 of file ESP8266.cpp.
| bool ESP8266::startServer | ( | uint32_t | port = 333 | ) |
Start Server(Only in multiple mode).
| port | - the port number to listen(default: 333). |
| true | - success. |
| false | - failure. |
Definition at line 251 of file ESP8266.cpp.
| bool ESP8266::startTCPServer | ( | uint32_t | port = 333 | ) |
Start TCP Server(Only in multiple mode).
After started, user should call method: getIPStatus to know the status of TCP connections. The methods of receiving data can be called for user's any purpose. After communication, release the TCP connection is needed by calling method: releaseTCP with mux_id.
| port | - the port number to listen(default: 333). |
| true | - success. |
| false | - failure. |
Definition at line 236 of file ESP8266.cpp.
| bool ESP8266::stopServer | ( | void | ) |
Stop Server(Only in multiple mode).
| true | - success. |
| false | - failure. |
Definition at line 256 of file ESP8266.cpp.
| bool ESP8266::stopTCPServer | ( | void | ) |
Stop TCP Server(Only in multiple mode).
| true | - success. |
| false | - failure. |
Definition at line 244 of file ESP8266.cpp.
| bool ESP8266::unregisterUDP | ( | void | ) |
Unregister UDP port number in single mode.
| true | - success. |
| false | - failure. |
Definition at line 206 of file ESP8266.cpp.
| bool ESP8266::unregisterUDP | ( | uint8_t | mux_id | ) |
Unregister UDP port number in multiple mode.
| mux_id | - the identifier of this TCP(available value: 0 - 4). |
| true | - success. |
| false | - failure. |
Definition at line 226 of file ESP8266.cpp.


|
Max API
8.2.0
|
ITM Time Objects are a high-level interface to ITM, a tempo-based scheduler API. More...
Typedefs | |
| typedef typedefBEGIN_USING_C_LINKAGE struct _itm | t_itm |
| A low-level object for tempo-based scheduling. More... | |
Enumerations | |
| enum | { TIME_FLAGS_LOCATION , TIME_FLAGS_TICKSONLY , TIME_FLAGS_FIXEDONLY , TIME_FLAGS_LOOKAHEAD , TIME_FLAGS_USECLOCK , TIME_FLAGS_USEQELEM , TIME_FLAGS_FIXED , TIME_FLAGS_PERMANENT , TIME_FLAGS_TRANSPORT , TIME_FLAGS_EVENTLIST , TIME_FLAGS_CHECKSCHEDULE , TIME_FLAGS_LISTENTICKS , TIME_FLAGS_NOUNITS , TIME_FLAGS_BBUSOURCE , TIME_FLAGS_POSITIVE } |
| Flags that determine attribute and time object behavior. More... | |
Functions | |
| void * | itm_getglobal (void) |
| Return the global (default / unnamed) itm object. More... | |
| void * | itm_getnamed (t_symbol *s, void *scheduler, t_symbol *defaultclocksourcename, long create) |
| Return a named itm object. More... | |
| void | itm_reference (t_itm *x) |
| Reference an itm object. More... | |
| void | itm_dereference (t_itm *x) |
| Stop referencing an itm object. More... | |
| double | itm_gettime (t_itm *x) |
| Report the current internal time. More... | |
| double | itm_getticks (t_itm *x) |
| Report the current time of the itm in ticks. More... | |
| void | itm_dump (t_itm *x) |
| Print diagnostic information about an itm object to the Max window. More... | |
| void | itm_settimesignature (t_itm *x, long num, long denom, long flags) |
| Set an itm object's current time signature. More... | |
| void | itm_gettimesignature (t_itm *x, long *num, long *denom) |
| Query an itm object for its current time signature. More... | |
| void | itm_pause (t_itm *x) |
| Pause the passage of time for an itm object. More... | |
| void | itm_resume (t_itm *x) |
| Start the passage of time for an itm object, from it's current location. More... | |
| long | itm_getstate (t_itm *x) |
| Find out if time is currently progressing for a given itm object. More... | |
| void | itm_setresolution (double res) |
| Set the number of ticks-per-quarter-note globally for the itm system. More... | |
| double | itm_getresolution (void) |
| Get the number of ticks-per-quarter-note globally from the itm system. More... | |
| t_symbol * | itm_getname (t_itm *x) |
| Given an itm object, return its name. More... | |
| double | itm_tickstoms (t_itm *x, double ticks) |
| Convert a time value in ticks to the equivalent value in milliseconds, given the context of a specified itm object. More... | |
| double | itm_mstoticks (t_itm *x, double ms) |
| Convert a time value in milliseconds to the equivalent value in ticks, given the context of a specified itm object. More... | |
| double | itm_mstosamps (t_itm *x, double ms) |
| Convert a time value in milliseconds to the equivalent value in samples, given the context of a specified itm object. More... | |
| double | itm_sampstoms (t_itm *x, double samps) |
| Convert a time value in samples to the equivalent value in milliseconds, given the context of a specified itm object. More... | |
| void | itm_barbeatunitstoticks (t_itm *x, long bars, long beats, double units, double *ticks, char position) |
| Convert a time value in bbu to the equivalent value in ticks, given the context of a specified itm object. More... | |
| void | itm_tickstobarbeatunits (t_itm *x, double ticks, long *bars, long *beats, double *units, char position) |
| Convert a time value in bbu to the equivalent value in ticks, given the context of a specified itm object. More... | |
| long | itm_isunitfixed (t_symbol *u) |
| Given the name of a time unit (e.g. More... | |
| void | time_stop (t_timeobject *x) |
| Stop a currently scheduled time object. More... | |
| void | time_tick (t_timeobject *x) |
| Execute a time object's task, then if it was already set to execute, reschedule for the current interval value of the object. More... | |
| double | time_getms (t_timeobject *x) |
| Convert the value of a time object to milliseconds. More... | |
| double | time_getticks (t_timeobject *x) |
| Convert the value of a time object to ticks. More... | |
| void | time_getphase (t_timeobject *tx, double *phase, double *slope, double *ticks) |
| Return the phase of the ITM object (transport) associated with a time object. More... | |
| void | time_listen (t_timeobject *x, t_symbol *attr, long flags) |
| Specify that a millisecond-based attribute to be updated automatically when the converted milliseconds of the time object's value changes. More... | |
| void | time_setvalue (t_timeobject *tx, t_symbol *s, long argc, t_atom *argv) |
| Set the current value of a time object (either an interval or a position) using a Max message. More... | |
| void | class_time_addattr (t_class *c, const char *attrname, const char *attrlabel, long flags) |
| Create an attribute permitting a time object to be changed in a user-friendly way. More... | |
| void * | time_new (t_object *owner, t_symbol *attrname, method tick, long flags) |
| Create a new time object. More... | |
| t_object * | time_getnamed (t_object *owner, t_symbol *attrname) |
| Return a time object associated with an attribute of an owning object. More... | |
| long | time_isfixedunit (t_timeobject *x) |
| Return whether this time object currently holds a fixed (millisecond-based) value. More... | |
| void | time_schedule (t_timeobject *x, t_timeobject *quantize) |
| Schedule a task, with optional quantization. More... | |
| void | time_schedule_limit (t_timeobject *x, t_timeobject *quantize) |
| Schedule a task, with optional minimum interval,. More... | |
| void | time_now (t_timeobject *x, t_timeobject *quantize) |
| Schedule a task for right now, with optional quantization. More... | |
| void * | time_getitm (t_timeobject *ox) |
| Return the ITM object associated with this time object. More... | |
| double | time_calcquantize (t_timeobject *ox, t_itm *vitm, t_timeobject *oq) |
| Calculate the quantized interval (in ticks) if this time object were to be scheduled at the current time. More... | |
| void | time_setclock (t_timeobject *tx, t_symbol *sc) |
| Associate a named setclock object with a time object (unsupported). More... | |
Variables | |
| BEGIN_USING_C_LINKAGE typedef t_object | t_timeobject |
| A high-level time object for tempo-based scheduling. More... | |
ITM Time Objects are a high-level interface to ITM, a tempo-based scheduler API.
They provide an abtraction so your object can schedule events either in milliseconds (as traditional clock objects) or ticks (tempo-relative units).
| typedef typedefBEGIN_USING_C_LINKAGE struct _itm t_itm |
A low-level object for tempo-based scheduling.
| anonymous enum |
Flags that determine attribute and time object behavior.
| void class_time_addattr | ( | t_class * | c, |
| const char * | attrname, | ||
| const char * | attrlabel, | ||
| long | flags | ||
| ) |
Create an attribute permitting a time object to be changed in a user-friendly way.
| c | Class being initialized. |
| attrname | Name of the attribute associated with the time object. |
| attrlabel | Descriptive label for the attribute (appears in the inspector) |
| flags | Options, see "Flags that determine time object behavior" above |
| void itm_barbeatunitstoticks | ( | t_itm * | x, |
| long | bars, | ||
| long | beats, | ||
| double | units, | ||
| double * | ticks, | ||
| char | position | ||
| ) |
Convert a time value in bbu to the equivalent value in ticks, given the context of a specified itm object.
| x | An itm object. |
| bars | The measure number of the location/position. |
| beats | The beat number of the location/position. |
| units | The number of ticks past the beat of the location/position. |
| ticks | The address of a variable to hold the number of ticks upon return. |
| position | Set this parameter to TIME_FLAGS_LOCATION or to zero (for position mode). |
| void itm_dereference | ( | t_itm * | x | ) |
Stop referencing an itm object.
When you are done using an itm object, you must call this function to decrement its reference count.
| x | The itm object. |
| void itm_dump | ( | t_itm * | x | ) |
Print diagnostic information about an itm object to the Max window.
| x | The itm object. |
| void* itm_getglobal | ( | void | ) |
Return the global (default / unnamed) itm object.
Given an itm object, return its name.
| x | The itm object. |
| void* itm_getnamed | ( | t_symbol * | s, |
| void * | scheduler, | ||
| t_symbol * | defaultclocksourcename, | ||
| long | create | ||
| ) |
Return a named itm object.
| s | The name of the itm to return. |
| scheduler | |
| defaultclocksourcename | |
| create | If non-zero, then create this named itm should it not already exist. |
| double itm_getresolution | ( | void | ) |
Get the number of ticks-per-quarter-note globally from the itm system.
| long itm_getstate | ( | t_itm * | x | ) |
Find out if time is currently progressing for a given itm object.
| x | The itm object. |
| double itm_getticks | ( | t_itm * | x | ) |
Report the current time of the itm in ticks.
You can use functions such as itm_tickstobarbeatunits() or itm_tickstoms() to convert to a different representation of the time.
| x | The itm object. |
| double itm_gettime | ( | t_itm * | x | ) |
Report the current internal time.
This is the same as calling clock_getftime();
| x | The itm object. |
| void itm_gettimesignature | ( | t_itm * | x, |
| long * | num, | ||
| long * | denom | ||
| ) |
Query an itm object for its current time signature.
| x | The itm object. |
| num | The address of a variable to hold the top number of the time signature upon return. |
| denom | The address of a variable to hold the bottom number of the time signature upon return. |
| long itm_isunitfixed | ( | t_symbol * | u | ) |
Given the name of a time unit (e.g.
'ms', 'ticks', 'bbu', 'samples', etc.), determine whether the unit is fixed (doesn't change with tempo, time-signature, etc.) or whether it is flexible.
| u | The name of the time unit. |
| double itm_mstosamps | ( | t_itm * | x, |
| double | ms | ||
| ) |
Convert a time value in milliseconds to the equivalent value in samples, given the context of a specified itm object.
| x | An itm object. |
| ms | A time specified in ms. |
| double itm_mstoticks | ( | t_itm * | x, |
| double | ms | ||
| ) |
Convert a time value in milliseconds to the equivalent value in ticks, given the context of a specified itm object.
| x | An itm object. |
| ms | A time specified in ms. |
| void itm_pause | ( | t_itm * | x | ) |
Pause the passage of time for an itm object.
This is the equivalent to setting the state of a transport object to 0 with a toggle.
| x | The itm object. |
| void itm_reference | ( | t_itm * | x | ) |
Reference an itm object.
When you are using an itm object, you must call this function to increment its reference count.
| x | The itm object. |
| void itm_resume | ( | t_itm * | x | ) |
Start the passage of time for an itm object, from it's current location.
This is the equivalent to setting the state of a transport object to 0 with a toggle.
| x | The itm object. |
| double itm_sampstoms | ( | t_itm * | x, |
| double | samps | ||
| ) |
Convert a time value in samples to the equivalent value in milliseconds, given the context of a specified itm object.
| x | An itm object. |
| samps | A time specified in samples. |
| void itm_setresolution | ( | double | res | ) |
Set the number of ticks-per-quarter-note globally for the itm system.
The default is 480.
| res | The number of ticks-per-quarter-note. |
| void itm_settimesignature | ( | t_itm * | x, |
| long | num, | ||
| long | denom, | ||
| long | flags | ||
| ) |
Set an itm object's current time signature.
| x | The itm object. |
| num | The top number of the time signature. |
| denom | The bottom number of the time signature. |
| flags | Currently unused – pass zero. |
| void itm_tickstobarbeatunits | ( | t_itm * | x, |
| double | ticks, | ||
| long * | bars, | ||
| long * | beats, | ||
| double * | units, | ||
| char | position | ||
| ) |
Convert a time value in bbu to the equivalent value in ticks, given the context of a specified itm object.
| x | An itm object. |
| ticks | The number of ticks to translate into a time represented as bars, beats, and ticks. |
| bars | The address of a variable to hold the measure number of the location/position upon return. |
| beats | The address of a variable to hold the beat number of the location/position upon return. |
| units | The address of a variable to hold the number of ticks past the beat of the location/position upon return. |
| position | Set this parameter to TIME_FLAGS_LOCATION or to zero (for position mode). |
| double itm_tickstoms | ( | t_itm * | x, |
| double | ticks | ||
| ) |
Convert a time value in ticks to the equivalent value in milliseconds, given the context of a specified itm object.
| x | An itm object. |
| ticks | A time specified in ticks. |
| double time_calcquantize | ( | t_timeobject * | ox, |
| t_itm * | vitm, | ||
| t_timeobject * | oq | ||
| ) |
Calculate the quantized interval (in ticks) if this time object were to be scheduled at the current time.
| ox | Time object. |
| vitm | The associated ITM object (use time_getitm() to determine it). |
| oq | A time object that holds a quantization interval, can be NULL. |
| void* time_getitm | ( | t_timeobject * | ox | ) |
Return the ITM object associated with this time object.
| ox | Time object. |
| double time_getms | ( | t_timeobject * | x | ) |
Convert the value of a time object to milliseconds.
| x | The time object. |
Return a time object associated with an attribute of an owning object.
| owner | Object that owns this time object (task routine, if any, will pass owner as argument). |
| attrname | Name of the attribute associated with the time object. |
| void time_getphase | ( | t_timeobject * | tx, |
| double * | phase, | ||
| double * | slope, | ||
| double * | ticks | ||
| ) |
Return the phase of the ITM object (transport) associated with a time object.
| tx | The time object. |
| phase | Pointer to a double to receive the progress within the specified time value of the associated ITM object. |
| slope | Pointer to a double to receive the slope (phase difference) within the specified time value of the associated ITM object. |
| ticks |
| double time_getticks | ( | t_timeobject * | x | ) |
Convert the value of a time object to ticks.
| x | The time object. |
| long time_isfixedunit | ( | t_timeobject * | x | ) |
Return whether this time object currently holds a fixed (millisecond-based) value.
| x | Time object. |
| void time_listen | ( | t_timeobject * | x, |
| t_symbol * | attr, | ||
| long | flags | ||
| ) |
Specify that a millisecond-based attribute to be updated automatically when the converted milliseconds of the time object's value changes.
| x | The time object. |
| attr | Name of the millisecond based attribute in the owning object that will be updated |
| flags | If TIME_FLAGS_LISTENTICKS is passed here, updating will not happen if the time value is fixed (ms) based |
Create a new time object.
| owner | Object that will own this time object (task routine, if any, will pass owner as argument). |
| attrname | Name of the attribute associated with the time object. |
| tick | Task routine that will be executed (can be NULL) |
| flags | Options, see "Flags that determine time object behavior" above |
| void time_now | ( | t_timeobject * | x, |
| t_timeobject * | quantize | ||
| ) |
Schedule a task for right now, with optional quantization.
| x | The time object that schedules temporary events. The time interval is ignored and 0 ticks is used instead. |
| quantize | A time object that holds a quantization interval, can be NULL for no quantization. |
| void time_schedule | ( | t_timeobject * | x, |
| t_timeobject * | quantize | ||
| ) |
Schedule a task, with optional quantization.
| x | The time object that schedules temporary events (must have been created with TIME_FLAGS_USECLOCK but not TIME_FLAGS_PERMANENT) |
| quantize | A time object that holds a quantization interval, can be NULL for no quantization. |
| void time_schedule_limit | ( | t_timeobject * | x, |
| t_timeobject * | quantize | ||
| ) |
Schedule a task, with optional minimum interval,.
| x | The time object that schedules temporary events (must have been created with TIME_FLAGS_USECLOCK but not TIME_FLAGS_PERMANENT) |
| quantize | The minimum interval into the future when the event can occur, can be NULL if there is no minimum interval. |
| void time_setclock | ( | t_timeobject * | tx, |
| t_symbol * | sc | ||
| ) |
Associate a named setclock object with a time object (unsupported).
| tx | Time object. |
| sc | Name of an associated setclock object. |
| void time_setvalue | ( | t_timeobject * | tx, |
| t_symbol * | s, | ||
| long | argc, | ||
| t_atom * | argv | ||
| ) |
Set the current value of a time object (either an interval or a position) using a Max message.
| tx | The time object. |
| s | Message selector. |
| argc | Count of arguments. |
| argv | Message arguments. |
| void time_stop | ( | t_timeobject * | x | ) |
Stop a currently scheduled time object.
| x | The time object. |
| void time_tick | ( | t_timeobject * | x | ) |
Execute a time object's task, then if it was already set to execute, reschedule for the current interval value of the object.
| x | The time object. |
| BEGIN_USING_C_LINKAGE typedef t_object t_timeobject |


A string contains one or more characters as text. Strings must always be surrounded by single (') or double (") quotation marks. The characters in a string can be numbered starting from 0, and substrings or characters accessed by these indices. Strings, unlike symbols, are mutable and can be overwritten.
Useful string methods!
These are the basic numerical data types in Ruby. Integers are whole numbers while floats contain a decimal point. (1 is an integer, but 1.0, 1.1, 1.2, etc are floats.) Remember when dividing integers, the nearest whole number rounded down will be returned. Integers and floats can be converted to strings with the #to_s method.
These are data structures that contain objects with an ordered integer index, counting from 0. An array is bracketed by square brackets []. Arrays can contain more than one type of object and the objects can be anything.
Useful array methods!
A kind of data structure made up of key-value pairs, in which the keys are usually strings or symbols and the values are any kind of object.
Useful hash methods! Many that are shared with the Array class come from the Enumerable module.


Mushrooms - P. subaeruginosa
Myself and a friend tried mushrooms for the first time, we headed to my girlfriends house as she was going to sit for us at 12:20 we made our self’s a shroom and peanut sandwich each and munched down. Hrmm didn’t taste to bad. We started playing Cards to past the time on the come up, within 30 minutes my friend was already changing the suit to “queens” so it looked like it was starting to kick in.
It’s the strangest feeling ever on the way up. It felt as if my sense of time was being ripped apart and thrown around like some dogs chew toy. I slowly ate more over the next hour or so as things were starting to kick in. I felt normal but at the same totally different. The world had opened up, in my head I felt as if I could see twice as much as what was there, but it was all still the same?? So out of place and twisted around my thoughts would fly around and collide with each other sending memories off into the darkness of my mind. Things were starting to change. Everything still looked the same but it all had a different feel to it.
My mind was active with 30 different thoughts and ideas at once, each one having to wait in a queue for a matter of seconds until I was able to reach it and think about it. Within the first hours of coming up I learnt the creation of numbers and letters. From the dawn of creation right up until that second. I knew it all. Oh wait. Hang on, what was I thinking about? Something to do with letters or something? Argh. It was gone. These thoughts and new understandings learnt over again were blowing my mind. I arrived at a place where there was no emotion. I wasn’t liking it or hating it and it didn’t matter as for me emotion didn’t exist, just pure blankness covered my senses. We waited for what seemed like forever for the next events to come. We were sure there had to be something more to this then just being a fool with weird vision, waiting for what seemed like forever.
We sat around listening to Pink Floyd eating mushrooms. By this stage I had forgotten how to eat so I just sat on the ground trying to push mushrooms down my throat.  I knew there was a thing called eating but I just didn’t know how to do it. The paintings in my girlfriend’s house started to look a whole lot cooler. I parked my bum down in front of one and within a few seconds the colours slowly started to change going front bright to dark and swimming around with each other. Damn it looked amazing, in fact everything looked amazing and everything sounded amazing. Jokes were magical, the humour I saw in the world was blowing my mind, whoever invented the world was a funny funny person. There are so many hidden humorous things that can only really been seen once in a altered state.
I went and grabbed a pen and paper. Things were starting to get really interesting. I was going to Draw my mate a picture of that the mushroom had just said to me. I headed out into the other room where my girlfriend was watching a movie, I asked her if she was able to get me some paper, once back I got down to work. I must of taken me 30 minutes to draw as my mind was starting to go off and loop around with 1000 thoughts which disappeared as soon as I had thought of them, only to reappear pretending to be new thoughts only a matter of moments latter.  Now this might not sound very interesting but at that moment in time it was the funniest thing I have ever seen.
Just the addiction of minor details sent it off into levels of gold humour I never knew existed.  Everything was way too funny, the thought loops I was going through started to get more extreme and fast. My mind would want to slow down and concentrate on something like a chair but at the same time fly off to the end of the universe and find some little secrets to tell me, only to make me forget in at the very moment it was inside my head. My legs were dead. No way I would be able to stand up for much longer so I fell to the ground in a fit of laughter. Oh man falling down was funny, in fact laughing was funny, so I would laugh at that.
As I lay on the ground giggling like a school girl the bits of dirt and dust started to go into uniform lines and start lighting themselves up like Christmas lights. Wow that was pretty interesting. Then within a matter of seconds the carpet would line up in uniform lines as well and then dance around with 1000 patterns moving and turning every moment into something more magical then before.    I thought this laugh would kill me and I just found that to be more funny.
Next things started to change colour and shape. Oh wow. I forgot the ceiling was blue. Oh wait, no its red, oh hang on, ahh god. The room was alive with colour every second changing shape and colour into something totally new. All the while being covered with the most amazing patterns the world had ever created. Millions of shapes and designs flowed around the walls and covered everything I saw. The world was changing colour at the same time with the music that had now totally controlled everything we felt.
This went on for a while until I could no longer see the room, just colour and patterns. I was in love. Never before had I been so amazed. I wasn’t scared only shocked at what beautiful creation was in front of my vision. It was safe to say my friend was freaking out, I had ended up eating a lot more mushrooms then he did over the day. I managed to hold onto my laughter for a second, I got up and walked out to talk to my girlfriend, I sat down next to her I thanked her for sitting for us, amazing words flowed through my mind I tried my hardest to make out something that would really show how much this meant to me. I came out with “Thanks for being a dumbass” no idea where it came from but it did. After saying sorry 100 times I went back into the other room where I burst out laughing even harder then ever before, this was great everything rocked and saying that to the girl I loved just made it all so much funnier
I was loving the music, at one point I started to do a beat box, holy shit it was the most amazing thing I had ever heard. The most beautiful sound in the world! and I had created it! I could see the notes fly out and go around the room creating new sounds as the bumped into each other. I danced around in a world filled with colour and patterns while my own song was leading the way into total bliss. I was able to grab the sounds out of the air and plus them together, each time grabbing one I got a part of my vision with it as well. Dragging colours over the top of each other in a kind of metallic soup.
This trip was going forever, where had I been for the past 100 years? In this room? Is this even a room? 1000 years? 100000 years? Where was I? This was crazy. Things started to slow down and I was able to see again without the colours flushing out my vision. I looked outside into a world where everything was connected. As I looked I took a breath, I felt it move in side me and mix with my body in a way I never knew before. I was the world and the world was me. The mushrooms were talking to me now, telling me the most amazing things. How the universe was created and how it grew.
But I wasn’t allowed to hold onto these thoughts. The mushrooms had given me the answers creation, but only for a tiny moment. They do not like others to know about what they know. I think they only tell these things as a sign of there magnitude and power. I was unable to tell turk about things I saw, my lips just couldn’t make the sounds. As I talked to the mushrooms and asked them if I could please tell my friend about the tree that turned into a cat they said no, and with that no they messed my head up in some way that I can’t remember now but it was harsh and mean. They aren’t very nice mushrooms sometimes, they want everything to be only between u and them.
 I will do it again very soon for sure.
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.


Angular libraries are fun!
This repository is an example how to set-up an Angular library project.
It features the @my/lib
library package: @my/lib
is packaged with ng-packagr and then imported into an Angular CLI app.
To run the example, do the following steps:
$ yarn install
$ yarn build:lib
$ ng serve
Here are instructions how this demo was created.
Set up an Angular CLI project, add ng-packagr
:
$ ng new ng-packaged
$ yarn add --dev ng-packagr
Create a library in my-lib
.
It's recommended to provide a single public_api.ts
as the entry point to your library.
In root package.json
:
{
"name": "ng-packaged",
"scripts": {
"build:lib": "ng-packagr"
}
}
It picks up a configuration in ng-package.json
:
{
"$schema": "./node_modules/ng-packagr/ng-package.schema.json",
"src": "my-lib",
"dest": "dist/my-lib",
"workingDirectory": ".ng_build",
"lib": {
"entryFile": "my-lib/src/public_api.ts"
}
}
ng-packagr comes with built-in support for autoprefixer and postcss.
It uses browserslist to determine which browser versions should be supported.
Create the file my-lib/.browserslistrc
:
last 2 Chrome versions
iOS > 10
Safari > 10
Now, build your library:
$ yarn build:lib
First, in .angular-cli.json
set outDir
of the Angular CLI app, so that it does not conflict with output directory of your library!
{
"project": {
"name": "ng-packaged"
},
"apps": [
{
"root": "src",
"outDir": "dist/app",
/* ... */
}
]
}
Then, in tsconfig.app.json
, map the TypeScript import path:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"paths": {
"@my/lib": [ "../dist/my-lib" ]
}
}
}
Finally, include in your application.
In app.module.ts
:
import { MyLibModule } from '@my/lib';
@NgModule({
imports: [
/* .. */
MyLibModule.forRoot()
],
})
export class AppModule { }
And use them in components like app.component.ts
:
import { Component } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { BarService } from '@my/lib';
@Component({
selector: 'app-root',
template: `
<my-foo></my-foo>
<hr>
<marquee>{{ value$ | async }}</marquee>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
value$: Observable<string>;
constructor (
bar: BarService
) {
this.value$ = bar.value;
}
}


Note: This may take some time depending on number of starred repos. Please be patient.
Please enter the github username and click on FETCH to download the starred repositories as bookmarks export file.
You can then use this to import on your browser bookmarks or on any of your favorite online bookmarking sites which supports import from the HTML bookmark file.


Chinese restaurant process [Pitman (1995) <doi:10.1007/BF01213386>] is used in order to compose Dirichlet process [Ferguson (1973) <doi:10.1214/aos/1176342360>]. The clustering which uses Chinese restaurant process does not need to decide the number of clusters in advance. This algorithm automatically adjusts it. And this package calculates the ambiguity of clusters as entropy [Yngvason (1999) <doi:10.1016/S0370-1573(98)00082-9>].
| Version: | 1.2 |
| Depends: | R (≥ 3.2.3) |
| Imports: | MASS, mvtnorm, randomcoloR, lucid, dplyr, graphics, stats, utils, png |
| Suggests: | R.rsp |
| Published: | 2018-05-01 |
| Author: | Masashi Okada [aut, cre] |
| Maintainer: | Masashi Okada <okadaalgorithm at gmail.com> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| CRAN checks: | CRPClustering results |
| Reference manual: | CRPClustering.pdf |
| Vignettes: |
How to use package CRPClustering |
| Package source: | CRPClustering_1.2.tar.gz |
| Windows binaries: | r-devel: CRPClustering_1.2.zip, r-release: CRPClustering_1.2.zip, r-oldrel: CRPClustering_1.2.zip |
| OS X binaries: | r-release: CRPClustering_1.2.tgz, r-oldrel: CRPClustering_1.2.tgz |
| Old sources: | CRPClustering archive |
Please use the canonical form https://CRAN.R-project.org/package=CRPClustering to link to this page.


| DOSE: |
11 cups |
oral |
Coca |
(tea) |
I went to Peru this summer with my school. We went to Maccu Piccu, and the hotel we were staying at had two big coca tea dispensers. I had not heard anything about coca tea before except for what it makes, and that in Peru, you can buy leaves on the street really cheap. The first few times I had it in Peru, it did nothing, I felt a little energized, but nothing special. So one night, me and my friends had nothing to do, so we went down to the lobby which had the tea. I had a few glasses, and after a while I noticed that I had downed 11 cups of this stuff. After that point, I was actually starting to feel really good. I had lost a little bit of coordination, but nothing too great. There was no noticeable effects to visuals or sound, I just felt really energized, and happy.
I still would take pot any day, but it was free, and I was with my school, and also I was drinking the tea with one of the adults from our trip, no one cares when you are in Peru. The tea tasted really bad for the first few cups, but once I learned to add sugar, I started to really like it. I was drinking at least 1 cup every morning for the rest of the trip instead of coffie. I really wouldn't reccomend to get it in America, it wouldnt be worth the hassle. But if you happen to go to Peru, drink all you can, because it is at most hotels for free, and they dont care how much you drink.
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.


--- layout: page title: Hi, I'm Guangcan Mai subtitle: Ph.D and Senior Algorithm Engineer in Computer Vision use-site-title: true published: true ---
I am a Senior Computer Vision Algorithm Engineer with YY Live, Guangzhou. My research interests are pattern recognition, biometric recognition and security, computer vision and deep learning.
Before joining YY Live, I was a Staff Researcher with Lenovo Machine Intelligence Center, Hong Kong SAR. I recieved the Ph.D degree in computer science from Hong Kong Baptist University in 2018, and the B.Eng degree in computer science and technology from South China University of Technology, in 2013. I was a visiting scholar at Michigan State University.


This is a website about the Glorious resort. It was written using HTML and styled using CSS.
Here images were embedded and links created.
In this website we were fixing the indentation and spacing.
Here are the links to the projects github pages
Lets Talk