|
C++ Actor Framework 0.18
|
Base class for all actor implementations. More...
#include <abstract_actor.hpp>
Public Member Functions | |
| actor_control_block * | ctrl () const |
| abstract_actor (const abstract_actor &)=delete | |
| abstract_actor & | operator= (const abstract_actor &)=delete |
| virtual void | on_destroy () |
| Cleans up any remaining state before the destructor is called. | |
| bool | enqueue (strong_actor_ptr sender, message_id mid, message msg, execution_unit *host) override |
| Enqueues a new message without forwarding stack to the channel. | |
| virtual bool | enqueue (mailbox_element_ptr what, execution_unit *host)=0 |
Enqueues a new message wrapped in a mailbox_element to the actor. | |
| virtual void | attach (attachable_ptr ptr)=0 |
Attaches ptr to this actor. | |
| template<class F > | |
| void | attach_functor (F f) |
Convenience function that attaches the functor f to this actor. | |
| actor_addr | address () const noexcept |
| Returns the logical actor address. | |
| virtual size_t | detach (const attachable::token &what)=0 |
Detaches the first attached object that matches what . | |
| virtual std::set< std::string > | message_types () const |
| Returns the set of accepted messages types as strings or an empty set if this actor is untyped. | |
| actor_id | id () const noexcept |
| Returns the ID of this actor. | |
| node_id | node () const noexcept |
| Returns the node this actor is living on. | |
| actor_system & | home_system () const noexcept |
| Returns the system that created this actor (or proxy). | |
| Public Member Functions inherited from caf::abstract_channel | |
| virtual bool | enqueue (strong_actor_ptr sender, message_id mid, message content, execution_unit *host=nullptr)=0 |
| Enqueues a new message without forwarding stack to the channel. | |
| bool | is_abstract_actor () const |
| bool | is_abstract_group () const |
| bool | is_actor_decorator () const |
Protected Member Functions | |
| abstract_actor (actor_config &cfg) | |
| Protected Member Functions inherited from caf::abstract_channel | |
| int | flags () const |
| void | flags (int new_value) |
Protected Attributes | |
| std::mutex | mtx_ |
Related Functions | |
(Note that these are not member functions.) | |
| using | actor_id = uint64_t |
| A unique actor ID. | |
Additional Inherited Members | |
| Static Public Attributes inherited from caf::abstract_channel | |
| static constexpr int | is_abstract_actor_flag = 0x01000000 |
| static constexpr int | is_abstract_group_flag = 0x02000000 |
| static constexpr int | is_actor_bind_decorator_flag = 0x04000000 |
| static constexpr int | is_actor_dot_decorator_flag = 0x08000000 |
| static constexpr int | is_actor_decorator_mask = 0x0C000000 |
| static constexpr int | is_hidden_flag = 0x10000000 |
Base class for all actor implementations.
|
pure virtual |
Attaches ptr
to this actor.
The actor will call ptr->detach(...)
on exit, or immediately if it already finished execution.
Implemented in caf::monitorable_actor.
| void caf::abstract_actor::attach_functor | ( | F | f | ) |
Convenience function that attaches the functor f
to this actor.
The actor executes f()
on exit or immediately if it is not running.
|
pure virtual |
Detaches the first attached object that matches what
.
Implemented in caf::monitorable_actor.
|
pure virtual |
Enqueues a new message wrapped in a mailbox_element
to the actor.
This enqueue
variant allows to define forwarding chains.
true
if the message has added to the mailbox, false
otherwise. In the latter case, the actor terminated and the message has been dropped. Once this function returns false
, it returns false
for all future invocations. true
. In particular when dealing with remote actors. Implemented in caf::actor_companion, caf::decorator::sequencer, caf::decorator::splitter, caf::forwarding_actor_proxy, caf::actor_pool, and caf::blocking_actor.
|
overridevirtual |
Enqueues a new message without forwarding stack to the channel.
true
if the message has been dispatches successful, false
otherwise. In the latter case, the channel has been closed and the message has been dropped. Once this function returns false
, it returns false
for all future invocations. Implements caf::abstract_channel.
Reimplemented in caf::actor_companion.
|
virtual |
Returns the set of accepted messages types as strings or an empty set if this actor is untyped.
Reimplemented in caf::decorator::sequencer, caf::decorator::splitter, and caf::typed_event_based_actor< Sigs >.
|
virtual |
Cleans up any remaining state before the destructor is called.
This function makes sure it is safe to call virtual functions in sub classes before destroying the object, because calling virtual function in the destructor itself is not safe. Any override implementation is required to call super::destroy()
at the end.
Reimplemented in caf::actor_pool, and caf::local_actor.


Large Java projects have a lot of classes. It's difficult to manage them if they are stored in the same directory. Packages provide a mechanism to group classes together into the same module (package). A package can contain others packages inside. It's like directories in a file system.
In general, packages give us the following advantages:
According to the naming convention, packages are always written in lowercase, for example:
model
collection
utils
Here is an example project with a simple packages and classes tree.
An example of multi-packages project structure
Here is a directory "src" at the top of the tree. This is the source root directory. In this tree, the full name of the class User is org.company.webapp.data.User.
You can output this using the following code:
System.out.println(User.class.getName()); // org.company.webapp.data.User
Classes declared inside a package has a special keyword package at the top of the file.
package org.company.webapp.data;
public class User {
}
When you use external libraries the situation is possible that two classes have the same name. Packages allow avoiding the conflict of class names because the full class name includes names of packages. Also, it's needed to avoid the conflict between names of packages.
To avoid creating packages with the same names as other public packages it is recommended that you start your package hierarchy with the reverse domain name of your company (or another organization). For example:
org.company
org.stepik
net.labs
If two classes are located in the same package there is no problem to use one class inside another. If one of these classes is located in another package, to use one class inside another you should write an import statement using the keyword import.
Here is an example. We have two public classes in different packages:
org.stepik.alt.java.packages.theory.p1.A
org.stepik.alt.java.packages.theory.p2.B
To use the class B inside the class A we should make an import statement.
package org.stepik.alt.java.packages.theory.p1; // current package
import org.stepik.alt.java.packages.theory.p2.B; // it's required to make the import
public class A {
public static void method() {
B b = new B();
}
}
Also, it's possible to import all classes from the package, using "*" instead of a particular class name.
import org.stepik.alt.java.packages.theory.p3.*; // import all classes from the package
import java.util.Scanner;
java.util.Scanner scanner = new java.util.Scanner(System.in);
java.util.Date now = new java.util.Date();
package org.stepik.alt.java.packages.theory;
import static java.util.Arrays.*; // instead of the statement "import java.util.Arrays;"
public class Main {
public static void main(String[] args) {
int[] numbers = { 10, 4, 5, 47, 5, 12 }; // an array
sort(numbers); // instead of writing Arrays.sort(...)
int[] copy = copyOf(numbers, numbers.length); // instead of writing Arrays.copy(...)
}
}


| Friend Request | see all |
|
khadim hussain rizvi |
| Zulfiqar shah and 3 other have BirthDay today |
| Contacts |
| Qasim Sajjad |
| Alyan Naveed |
| Ahmad Raza |
| Qadri |
| kaka |
|
Group conversations
Creat New Group |


Settings Service
Settings and Feature Switches
Chris Youngclaus
and
Martin Romano
Problem
Applications often need to store/retrieve user-specific data that are not truly attributes of the user. The data is not part of the system of record for the application, and the application should continue to function correctly if this information is not available for a specific user. For example:
- Last requested sort order or selected filter options
- A user's membership in a particular group for an A/B test
- A controlled roll-out to determine if a user should see a new feature
What Settings Service Does
Stores and retrieves:
- Application-level attributes that can be used for information or configuration (example: social media authentication credentials used at the application level)
- Account-level and user-level attributes related to a specific account or user (example: preferred color palate used for editing emails or campaign documents)
- Features switches - controls roll-out schedules for introducing new features (example: phased introduction to the new Toolkit UX or templates)
What It Doesn't Do
- Not a system-of-record for storing core application data
- Does not support reporting/tracking use cases or ad-hoc queries
Unified Linear Create?
The ULC discussions are spec'ing a number of items that currently look like Settings Service settings.
Remains TBD for now.
Settings
- Defined at the application-level, at the account-level within a specific application, or at the user-level within a specific application and account
- Stored as name/value pairs and represented as string values in the MySQL database
- Can be retrieved as a collection, or individually by name
- Values can be up to 1000 characters at the application-level, or up to 256 characters at the account-level or user-level
Feature Switches
Supports feature switches and rollout schedules for multiple models, such as on/off, incremental feature roll-out (RMC/SOProp model), A/B testing, and canary deployments.
Feature Switch Selector Types
- Unconditional On/Off: simple "on" or "off" based on feature value
- Account ID: "on" if account matches specific value from a list of account IDs
- Account percentage: "on" for a given percentage of accounts (hashed: consistent within feature, but random across features)
- Application setting: "on" if a specified application setting is present in the DB
- Server IP: "on" if the calling app's server IP matches
- These values can be negated and "and"-ed or "or"-ed with other selectors
Feature Switches
Feature Configuration
- Feature switches configured as JSON objects, retrieved from Settings Service via a REST web service, then cached and evaluated in the client
- Will be able to update feature switches without redeploying either your app or Settings Service - mechanism still being developed
- Features are identified by application id and feature name, but the same feature can be shared across applications if desired
- Feature JSON currently hand coded - validation UI included
- May provide UI for editing in future release
Current Status
- In production except for feature switch definition deployment
- Used in production by Galileo
- EM-UI and Social Connect are developing integratons
- Feature JSON currently hand coded - validation UI included
Application Architecture
- Java, Spring framework, REST web services, JSON objects
- MySQL database, using Liquibase for schema and data source control
- ULC cases may increase volume and require Cassandra for account/user settings
- Java Client application with client REST service calls
- Ruby client in future release
- Application server caching (Memcached) and client application caching (EhCache)
- Monitoring with StatsD and Grafana Dashboard
Feature Switch Example
An app wants to release a new feature, and would like to introduce this to specific accounts, followed by an incremental rollout over some time period
- Phase 1 - unconditional "off" for all accounts
- Phase 2 - "on" for test accounts
- Phase 3 - "on" for 20% of accounts
- ...
- Final phase - "on" for all accounts
Phase 1 Example
{ "application_id" : "my-app",
"feature_description" : "phase 1 - unconditional off for all accounts ",
"feature_name" : "Cool new feature",
"feature_selectorlist" :
[
{ "selector_type" : "unconditional",
"selector_value" : "off"
}
]
}
Phase 2 Example
{ "application_id" : "my-app",
"feature_description" : "phase 2 - on for selected accounts ",
"feature_name" : "Cool new feature",
"feature_selectorlist" :
[
{ "selector_type" : "accountlist",
"selector_valuelist" : ["1900377702222","1900377701111","190037770333"]
}
]
}
Phase 3 Example
{ "application_id" : "my-app",
"feature_description" : "phase 3 - on for 20% all accounts ",
"feature_name" : "Cool new feature",
"feature_selectorlist" :
[
{ "selector_type" : "accountpercentage",
"selector_value" : "20"
}
]
}


Developer Students Clubs are university based community groups for students interested in Google Developer technologies. Students from all undergraduate or graduate programs with an interest in growing as a developer are welcome. By joinimg a DSC, students grow their knowledge in a peer-to-peer learning environment and build solutions for local businesses and their community


Battlefield Hardline is the newest installment in the popular Battlefield franchise. Battlefield Hardline runs on the Frostbite 3 engine and is unique in the Battlefield franchise because of the fact that the game is police themed, focusing on the continual war on crime, rather than the military setting of all previous Battlefield installments. i3D.net offers servers from 10 up to 70 slots in total, of which 64 are player slots, 2 are dedicated commander slots and 4 are spectator slots.
Title: Battlefield Hardline
Genre: Action, Shooter
Release Date: 20 March 2015
Rating: PEGI : 18+
Publisher: Electronic Arts
Developer: Visceral Games


we have given them version numbers
Applications must be made differently.
"Mobile first" is no longer good enoughForces us to develop websites like web applications.
How is this better?
Use tokens (JWT) to maintain state in client.
Multi-Service Applications
Helping us go from this...
To this...
Micro-service architecture
A community of "application sharing"


Search
Preparing search index...
The search index is not available
@iabtcf/core - API Documentation
Options
All
Public
Public/Protected
All
Inherited
Externals
Only exported
Menu
Globals
FieldEncoderMap
Class FieldEncoderMap
TODO: Can we use the ./model/Fields for the keys?
Hierarchy
FieldEncoderMap
Implements
TCFields
Index
Properties
cmp
Id
cmp
Version
consent
Language
consent
Screen
created
is
Service
Specific
last
Updated
num
Custom
Purposes
policy
Version
publisher
Consents
publisher
Country
Code
publisher
Custom
Consents
publisher
Custom
Legitimate
Interest
publisher
Legitimate
Interest
publisher
Restrictions
purpose
Consents
purpose
Legitimate
Interest
purpose
One
Treatment
segment
Type
special
Feature
Opt
Ins
use
Non
Standard
Stacks
vendor
Consents
vendor
Legitimate
Interest
vendor
List
Version
vendors
Allowed
vendors
Disclosed
version
Properties
cmp
Id
cmp
Id
:
IntEncoder
= IntEncoder
cmp
Version
cmp
Version
:
IntEncoder
= IntEncoder
consent
Language
consent
Language
:
LangEncoder
= LangEncoder
consent
Screen
consent
Screen
:
IntEncoder
= IntEncoder
created
created
:
DateEncoder
= DateEncoder
is
Service
Specific
is
Service
Specific
:
BooleanEncoder
= BooleanEncoder
last
Updated
last
Updated
:
DateEncoder
= DateEncoder
num
Custom
Purposes
num
Custom
Purposes
:
IntEncoder
= IntEncoder
policy
Version
policy
Version
:
IntEncoder
= IntEncoder
publisher
Consents
publisher
Consents
:
FixedVectorEncoder
= FixedVectorEncoder
publisher
Country
Code
publisher
Country
Code
:
LangEncoder
= LangEncoder
publisher
Custom
Consents
publisher
Custom
Consents
:
FixedVectorEncoder
= FixedVectorEncoder
publisher
Custom
Legitimate
Interest
publisher
Custom
Legitimate
Interest
:
FixedVectorEncoder
= FixedVectorEncoder
publisher
Legitimate
Interest
publisher
Legitimate
Interest
:
FixedVectorEncoder
= FixedVectorEncoder
publisher
Restrictions
publisher
Restrictions
:
PurposeRestrictionVectorEncoder
= PurposeRestrictionVectorEncoder
purpose
Consents
purpose
Consents
:
FixedVectorEncoder
= FixedVectorEncoder
purpose
Legitimate
Interest
purpose
Legitimate
Interest
:
FixedVectorEncoder
= FixedVectorEncoder
purpose
One
Treatment
purpose
One
Treatment
:
BooleanEncoder
= BooleanEncoder
segment
Type
segment
Type
:
IntEncoder
= IntEncoder
special
Feature
Opt
Ins
special
Feature
Opt
Ins
:
FixedVectorEncoder
= FixedVectorEncoder
use
Non
Standard
Stacks
use
Non
Standard
Stacks
:
BooleanEncoder
= BooleanEncoder
vendor
Consents
vendor
Consents
:
VendorVectorEncoder
= VendorVectorEncoder
vendor
Legitimate
Interest
vendor
Legitimate
Interest
:
VendorVectorEncoder
= VendorVectorEncoder
vendor
List
Version
vendor
List
Version
:
IntEncoder
= IntEncoder
vendors
Allowed
vendors
Allowed
:
VendorVectorEncoder
= VendorVectorEncoder
vendors
Disclosed
vendors
Disclosed
:
VendorVectorEncoder
= VendorVectorEncoder
version
version
:
IntEncoder
= IntEncoder
Globals
Field
Encoder
Map
cmp
Id
cmp
Version
consent
Language
consent
Screen
created
is
Service
Specific
last
Updated
num
Custom
Purposes
policy
Version
publisher
Consents
publisher
Country
Code
publisher
Custom
Consents
publisher
Custom
Legitimate
Interest
publisher
Legitimate
Interest
publisher
Restrictions
purpose
Consents
purpose
Legitimate
Interest
purpose
One
Treatment
segment
Type
special
Feature
Opt
Ins
use
Non
Standard
Stacks
vendor
Consents
vendor
Legitimate
Interest
vendor
List
Version
vendors
Allowed
vendors
Disclosed
version
Generated using
TypeDoc
TODO: Can we use the ./model/Fields for the keys?


Chapters span across the southwest, including UCLA, University of Southern California, San Diego State University, University of Arizona, and many others, with membership constantly expanding. Our club’s main focus is on group projects, in which we design, manufacture, and test using CAD software and 3D printing. These projects range from recreational, like RC cars, to life-changing, like our prosthetic hand. In addition to our group efforts, 3D4E also supports members with the resources and expertise they might need to pursue their own individual ideas.
3D4E at UCLA is generously sponsored by AIO Robotics, New Matter, Robo3D, and XYZ. Their donations of printers and filament make our club's endeavours possible. Space for storage and operation of our printers is furnished by the UCLA Library system and the Lux Lab. We are also sponsored by Blackstone LaunchPad, a start-up space that supports club events.


Please enter the three-letter currency code using this format. A list of international currency codes can be found here.


{% extends 'base.html' %} {% block header_block %}
This project was created for me to learn Django and because I want to create a tool to help my Pathfinder campaign. And also because all of the online character sheets I've found are retarded and I think maybe I can do better
To see all of the interesting stuff you need to register an account and create a character
{% else %} {% if user.is_authenticated %} {% endif %}Keep all of your character sheets on this website so I can find some way to sell your data and become a big shot like that facebook guy
(This part doesn't really work yet, the GM has to invite you to the game)
Start your own games, create more characters, learn to paint I don't know fuck it's your life man


Cacti - T. pachanoi & Meditation
I had heard of the plant from friends who had taken it. I found their experiences varied and rather bizarre – but that was before I tried it myself.
Armando, who was out from Peru, agreed to provide us with dried cactus and guide us through what he called the gates of San Pedro. We started about 9am one Saturday by ingesting the plant, one handful each, and then once the nausea had passed (or been embraced) we embarked on a blindfolded meditation (the Rainbow light meditation) in which our guide took us through each chakra from root to crown. At each chakra we visualized the corresponding colour, chanted a mantra, focused on the breath and movement which was unique to that chakra. The purpose was to facilitate opening and at each stage I could feel the energy swirling up until we reached the crown chakra at which stage my spirit / soul literally exploded “out” of the top of my head and soared “up” into space or what I believe was the universe.
Silence, darkness and complete love and compassion surrounded me. I was not a separate entity but one with everything. I felt inseparable from the universe as if I was in fact the whole universe and I sensed an increased consciousness, an awareness that was total and unlimited (endless).
I realised that everything I (me on this earth) had experienced up until this point in my life was not “real.” It’s like being in the matrix (the movie) and then having the plug pulled and suddenly you have a “new” reality. It’s the realisation that life as we know it is in fact a manifestation produced by our consciousness, or the universal consciousness.
I believe now that we manifest ourselves on this and other planets to learn and grow spiritually. The earth is one of the “fastest” planets that we can grow spiritually and this is generally achieved by what we perceive as human “suffering”. When we become enlightened, that is, we move out of the victim archetype and into one where we embrace everything and believe that everything happens for a reason, we then are able to manifest on earth whatever we want. But I digress.
Anyway, here I am in this “matrix space” and in truth just a little bit freaked out. So I start “looking” around in the blackness and start to see faint lights like distant hazy stars floating around (and I’m thinking “angels?”) and then start to wonder if there is a heaven and what it would look like and in that instant I heard a booming voice saying “welcome to Nirvana Lounge” and looking around see this bright and sunny pool like setting and there sits Armando and one of the other guys in our group who was training to be a shaman like Armando. I stayed here for a while laughing and talking in the sunshine and then later when I was calmer decided to go back. I start wondering how I’m going to get back to my body.
Instantly I’m back in “space”, slowly feeling the tug / urge to return and simultaneously feeling the fear of going back, back to an existence that’s not “real.” I saw my life on earth through a window, me sitting blindfolded on the floor, the group in the room, my life playing out before me but without me. Did I want to go back? Could I stay? But what would happen to me here? I felt I had to return, but how. I started to get a bit panicky and then I heard a voice in my head (Armando) saying “breathe” and so I did and next thing I felt my body around me. The aches from sitting too long in one position, the sound of my breath and all my senses prickled and felt alive.
It was a truly awakening experience, one that I will strive to attain without the aid of mescaline (which San Pedro is). It took some time to process the information I gained from my “trip” but I am grateful for the knowledge and the experience.
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.


To rename a file or directory on the local system (the computer where JFTP is running), locate and select (highlight) the file or directory that you would like to rename and do any one of the following:
Local File -> Rename...
menu item from
the menu bar
Ctrl + Shift + R
(Command +
Shift + R
on Mac OS X) on your key board
Rename...
from the context menu
When you do any of the above actions, a new dialog titled
Rename Local File or Directory
is displayed allowing you to specify a new name.
From
Enter the name of the file or directory that you would like
to rename.
If you have selected a file or
directory in the local pane before opening the
Rename Local File or Directory
dialog, the
From
field is pre-populated with the selected object's name.
To
Enter the new name for the file or directory that you are
renaming.
Rename
Clicking on this button would rename (or try to rename) the
file or directory and closes the
Rename Local File or Directory
dialog.
Cancel
Clicking this button would discard the input you have
provided and closes the
Rename Local File or Directory
dialog.
Help
Clicking this button displays this help topic.
In the
From
and
To
fields, you may enter absolute, relative or UNC path names. Below are
a few examples to demonstrate how the rename works based on the input
you provide. All examples assume that your current working directory
is set to
C:\wd
.
Example 1
If you enter
old.txt
in the
From
field and
new.txt
in the
To
field, the file
C:\wd\old.txt
will be renamed to
C:\wd\new.txt
.
Example 2
If you enter
old.txt
in the
From
field and
subDir\new.txt
in the
To
field, the file
C:\wd\old.txt
will be renamed to
C:\wd\subDir\old.txt
. In this case, the file is actually moved to another directory. Make
sure that the directory
C:\wd\subDir
exists in order for this to work.
Example 3
If you enter
C:\dir1\sample.txt
in the
From
field and
C:\dir2\sample.txt
in the
To
field, the file
sample.txt
will be moved from
C:\dir1
to
C:\dir2
.
Example 4
If you enter
\\hostName\shareName\old.txt
in the
From
field and
\\hostName\shareName\new.txt
in the
To
field, the file
old.txt
will be renamed to
new.txt
on the remote machine.
All the above examples would work well even with directories; i.e. you can rename or move directories just the same way as you could with files.


{{/*
Use Hugo's native Table of contents feature. You must set `toc: true` in your parameters for this to show.
https://gohugo.io/content-management/toc/
*/}}
{{- if .Params.toc -}}
What's in this {{ humanize .Type }}
{{ .TableOfContents }}
{{- end -}}
{{/*
Use Hugo's native related content feature to pull in content that may have similar parameters, like tags. etc.
https://gohugo.io/content-management/related/
*/}}
{{ $related := .Site.RegularPages.Related . | first 15 }}
{{ with $related }}


| rownames {DBI} | R Documentation |
These functions provide a reasonably automatic way of preserving the row names of data frame during back-and-forth translation to an SQL table. By default, row names will be converted to an explicit column called "row_names", and any query returning a column called "row_names" will have those automatically set as row names. These methods are mostly useful for backend implementers.
sqlRownamesToColumn(df, row.names = NA) sqlColumnToRownames(df, row.names = NA)
df |
A data frame |
row.names |
Either If A string is equivalent to For backward compatibility, |
# If have row names sqlRownamesToColumn(head(mtcars)) sqlRownamesToColumn(head(mtcars), FALSE) sqlRownamesToColumn(head(mtcars), "ROWNAMES") # If don't have sqlRownamesToColumn(head(iris)) sqlRownamesToColumn(head(iris), TRUE) sqlRownamesToColumn(head(iris), "ROWNAMES")


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Packages that use KeySendableData | |
|---|---|
| edu.biu.scapi.midLayer.asymmetricCrypto.encryption | |
| edu.biu.scapi.midLayer.asymmetricCrypto.keys |
| Uses of KeySendableData in edu.biu.scapi.midLayer.asymmetricCrypto.encryption |
|---|
| Methods in edu.biu.scapi.midLayer.asymmetricCrypto.encryption with parameters of type KeySendableData | |
|---|---|
java.security.KeyPair |
CramerShoupAbs.generateKeyPair(KeySendableData publicKeyData,
KeySendableData privateKeyData)
Deprecated. Instead use reconstructPublicKey and reconstructPrivateKey. |
CramerShoupPrivateKey |
CramerShoupAbs.generatePrivateKey(KeySendableData data)
Deprecated. As of SCAPI-V1-0-2-2 use reconstructPrivateKey(KeySendableData data) |
CramerShoupPublicKey |
CramerShoupAbs.generatePublicKey(KeySendableData data)
Deprecated. As of SCAPI-V1-0-2-2 use reconstructPublicKey(KeySendableData data) |
java.security.PrivateKey |
ScDamgardJurikEnc.reconstructPrivateKey(KeySendableData data)
|
java.security.PrivateKey |
RSAOaepAbs.reconstructPrivateKey(KeySendableData data)
|
java.security.PrivateKey |
ElGamalAbs.reconstructPrivateKey(KeySendableData data)
|
CramerShoupPrivateKey |
CramerShoupAbs.reconstructPrivateKey(KeySendableData data)
|
java.security.PrivateKey |
AsymmetricEnc.reconstructPrivateKey(KeySendableData data)
Reconstructs a suitable PrivateKey from data that was probably obtained via a Channel or any other means of sending data (including serialization). |
java.security.PublicKey |
ScDamgardJurikEnc.reconstructPublicKey(KeySendableData data)
|
java.security.PublicKey |
RSAOaepAbs.reconstructPublicKey(KeySendableData data)
|
java.security.PublicKey |
ElGamalAbs.reconstructPublicKey(KeySendableData data)
|
CramerShoupPublicKey |
CramerShoupAbs.reconstructPublicKey(KeySendableData data)
|
java.security.PublicKey |
AsymmetricEnc.reconstructPublicKey(KeySendableData data)
Reconstructs a suitable PublicKey from data that was probably obtained via a Channel or any other means of sending data (including serialization). |
| Uses of KeySendableData in edu.biu.scapi.midLayer.asymmetricCrypto.keys |
|---|
| Classes in edu.biu.scapi.midLayer.asymmetricCrypto.keys that implement KeySendableData | |
|---|---|
class |
ScCramerShoupPrivateKey
This class represents a Private Key suitable for the Cramer Shoup Encryption Scheme. |
static class |
ScCramerShoupPublicKey.ScCramerShoupPublicKeySendableData
|
class |
ScDamgardJurikPrivateKey
This class represents a Private Key suitable for the Damgard-Jurik Encryption Scheme. |
class |
ScDamgardJurikPublicKey
This class represents a Public Key suitable for the Damgard-Jurik Encryption Scheme. |
class |
ScDSAPrivateKey
This class represents a Private Key suitable for the Digital Signature Algorithm. |
static class |
ScDSAPublicKey.ScDSAPublicKeySendableData
|
class |
ScElGamalPrivateKey
This class represents a Private Key suitable for the El Gamal Encryption Scheme. |
static class |
ScElGamalPublicKey.ScElGamalPublicKeySendableData
|
| Methods in edu.biu.scapi.midLayer.asymmetricCrypto.keys that return KeySendableData | |
|---|---|
KeySendableData |
ScElGamalPublicKey.generateSendableData()
|
KeySendableData |
ScElGamalPrivateKey.generateSendableData()
|
KeySendableData |
ScDSAPublicKey.generateSendableData()
(non-Javadoc) |
KeySendableData |
ScDSAPrivateKey.generateSendableData()
This function is used when an DSA Private Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
ScDamgardJurikPublicKey.generateSendableData()
This function is used when an Damgard Jurik Public Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
ScDamgardJurikPrivateKey.generateSendableData()
This function is used when an Damgard Jurik Private Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
ScCramerShoupPublicKey.generateSendableData()
|
KeySendableData |
ScCramerShoupPrivateKey.generateSendableData()
This function is used when an Cramer Shoup Private Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
ElGamalPublicKey.generateSendableData()
This function is used when an El Gamal Public Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
ElGamalPrivateKey.generateSendableData()
This function is used when an El Gamal Private Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
DSAPublicKey.generateSendableData()
This function is used when a DSA Public Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
DSAPrivateKey.generateSendableData()
This function is used when a DSA Private Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
DamgardJurikPublicKey.generateSendableData()
This function is used when a Damgard Jurik Public Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
DamgardJurikPrivateKey.generateSendableData()
This function is used when a Damgard Jurik Private Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
CramerShoupPublicKey.generateSendableData()
This function is used when a Cramer Shoup Public Key needs to be sent via a Channel or any other means of sending data (including serialization). |
KeySendableData |
CramerShoupPrivateKey.generateSendableData()
This function is used when a Cramer Shoup Private Key needs to be sent via a Channel or any other means of sending data (including serialization). |
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


Meet Mayank Pratap Singh: Youngest Judge in The Country
Speaking to news agency ANI, Singh thanked his family, teachers and well-wishers for the success.
Jodhpur: A 21-year-old boy from Jaipur has made history by cracking the Rajasthan Judicial Services exam 2018 in the first attempt, making him the youngest judge in the country.
Speaking to news agency ANI, Singh thanked his family, teachers and well-wishers for the success.
“I was always drawn towards the judicial services going by the importance and respect reserved for the judges in the society. I took admission in 2014 in the five-year LLB course from the Rajasthan University, which ended this year,” Singh told ANI on Thursday.
“I am elated with my success and I thank my family, teachers and all well-wishers for their contribution which helped me crack the exam in the first attempt,” he added.
It must be noted that this year, the Rajasthan High Court had reduced the original age requirement for appearing in the judicial services exam from 23 years to 21 years.
Singh feels that it was a good move as it would also help him help more people throughout his career.
“I could appear in the exam only because the minimum age was reduced. Had it not been so then I would not have been eligible. I think it will benefit me because now I will get more time to learn and do more work and serve more people in my career because I joined at such a young age,” he stated.
For breaking news and live news updates, like us on Facebook or follow us on Twitter and Instagram. Read more on India Latest News on India.com.
Story Timeline
- 22 Nov 2019 Meet Mayank Pratap Singh: Youngest Judge in The Country
- 14 Aug 2019 24 Injured During Communal Unrest in Jaipur, Restrictions Put in Place
- 10 Aug 2019 Gurugram: 4 Dead, 1 Injured in Crash on NH-8, Efforts on to Nab The Accused
- 01 Aug 2019 Parliamentary Democracy Didn't Come Easily to us: Pranab Mukherjee
Comments - Join the Discussion


Installation of No Sketch Engine
Download following packages from here.
- python-signalfd_<version>.deb
- finlib-<version>.deb
- manatee-open-<version>.deb
- manatee-open-python-<version>.deb
- bonito-<version>.deb
- bonito-www-<version>.deb
- As root: apt-get install libpcre3 libpcre++-dev apache2 python python-cheetah python-simplejson libltdl7
- As root install downloaded package: dpkg -i python-signalfd_<version>.deb
- As root install downloaded packages: dpkg -i finlib-<version>.deb manatee-open-<version>.deb manatee-open-python-<version>.deb bonito-<version>.deb bonito-www-<version>.deb
- Restart Apache server: service apache2 restart
Installation of example corpora ‘susanne’
- Download example corpora (manatee-open-susanne_<version>.deb) from here
- As root install example corpora: dpkg -i manatee-open-susanne_<version>.deb
- You are done, go to your <ip or localhost>/bonito.
Post-installation steps
Depending on what corpora you have and where they are located you have to edit the file $CGIPATH/run.cgi file (when installing from packages, this file is located in /var/www/bonito/run.cgi):
- the line corplist = ['susanne', 'bnc'] contains a list of available corpora
- the line corpname = 'bnc' sets the default corpus
- the line os.environ['MANATEE_REGISTRY'] = '/corpora/registry' is the path to the directory with corpus configuration files
Adding new corpora
IMPORTANT!Corpus configuration file name must be same as it is written in config file under NAME “<corpus name> and same name must be u5sed when recompiling corpus.
Required corpora as a vertical file (.vert) and corpora configuration file!
- Create folders where you will keep your corpora
- Folder where data about corpora is stored: mkdir -p /corpora/data/<corpus name>
- Folder where corpora configuration files are stored: mkdir -p /corpora/registry
- Folder where corpora files are stored: mkdir -p /corpora/vert
- Copy or insert your corpus vertical file in the vert folder you created and copy or insert your corpus configuration file in the registry folder you created
- NOTE! corpus configuration file name should be same as your <corpus name> to avoid possible further errors
- EXAMPLE: “<corpus name>.conf” ← BAD!; should be just “<corpus name>”
- In your corpus configuration file correct following paths
- PATH “/corpora/data/<corpus name>”
- VERTICAL “/corpora/vert/<corpus name>.vert”
- If it exists, correct: TERMBASE “corpora/data/<corpus name>/terms-ws”
Correct or delete other variables, such as TERMDEF, DYNLIB,... It's not neccessary to do this step unless you have issues.
- Recompile corpus with (run as root, because it needs to create a directory for log file): compilecorp [OPTIONS] CORPNAME [FILENAME]
- OPTIONS - you have several options listed here
- CORPNAME - corpus name, same name is specified in corpus configuration file, NAME "<corpus name>”
- FILENAME - path to corpus vert file (/corpora/vert/<corpus name>.vert); can be omitted, but specifying it might be more reliable
- Whole command: sudo compilecorp --recompile-corpus <corpus name> <full path to vertical>
- Update “run.cgi" file (by default in /var/www/bonito/run.cgi); assuming example corpus susanne was not installed, after the changes, parameters in run.cgi should look something like this
- OPTIONS - you have several options listed here
- Add your corpus to corplist
- corplist = [u’<corpus name>’, ’<corpus name 2>’, ’<corpus name 3>’]
- Change default corpus
- corpname = u’<corpus name>’
- Change path to corpus configuration files
- os.environ[‘MANATEE_REGISTRY’] = ‘/corpora/registry’
- If no errors or warnings are reported corpus has been successfully added. To add additional corpuses just add another data folder (show in step 1.a.) and repeat steps from 2. to 5.
Comments


Sign In
Sign Up
Username
Password
Account Type
--Select--
Student
Staff
Admin
Forgot Password?
Username
Password
Confirm Password
Account Type
--Select--
Student
Staff
Admin


The SNAC Cooperative Program (SNAC-C) has archive, library, and museum members. The long-term objective of the Cooperative is an ever-expanding international membership that will together build an ever-expanding corpus of reliable descriptions of people linked to and providing contextual understanding of the historical records that are the primary evidence for understanding their lives and work.
The Cooperative will serve both the member institutions, and researchers, teachers, and others that are interested in persons, organizations, and families and the historical records that document their lives and work.
The Cooperative will serve the members institutions in two important ways. First, sharing the descriptions of the people that created and are documented in historical documents will lead to processing efficiencies. When a person, organization, or family is documented by one member institution, it is available for use by all of the other members. Rather than duplicating descriptions within each institution's descriptive system, one well-curated description will be available to all. Second, the links out to holdings in many institutions and the historical social network links within enables unified access to distributed holdings, and provides both documentary and social context for understanding the holdings. Through sharing descriptions, the Cooperative will enable archives, libraries, and museums to realize complementary economic benefits, eliminating duplicative work and producing more effective description.
The Cooperative will serve researchers, teachers, and others in two ways. First, it will significantly ameliorate the challenge of discovering and locating the resources that document our shared history. Painstakingly piecing together these networks constitutes an essential and time-consuming historical research activity. SNAC also makes explicit what has been, at best, implicit in archival description: the social-professional-intellectual networks within which the lives and work of the people documented in historical resources took place. SNAC, in essence, reveals a global social-document network that connects the past to the present.
The U.S. National Archives and Records Administration serves as the Cooperative Secretariat, and the University of Virginia, in collaboration with the California Digital Library, hosts the technological platform.
The current two-year pilot phase (2015-2017) of the SNAC Cooperative formally began August 1, 2015. It is generously funded by a $1 million grant from The Andrew W. Mellon Foundation to the University of Virginia.
The pilot phase of the Cooperative has both social and technological objectives. The social objectives include developing the Secretariat administrative structure, and developing a community-based governance structure. The primary technological objective will be transforming the SNAC R&D platform into a platform that will support ongoing cooperative maintenance of the SNAC description and access data.


Welcome to {{APP_NAME}}, {{APP_TAG}}
The Manager is an interactive webapp intended to make it easier to manage and share your Kingdom Death: Monster campaigns.
This application is fan-maintained and is not supported by or affiliated with Kingdom Death.
To get started, you will have to create a new settlement. Once your new settlement is created, you will be shown a campaign summary, which is like a dashboard for your campaign.
From the campaign summary, you can use the controls in the upper-left corner to add new survivors, view your settlement's "sheet" and add/remove expansion content.
In order to add other players to your campaign, all you have to do is navigate to an individual survivor's "sheet" and change that survivor's email address to the email address of another registered user of this site.
Changes to settlement and survivor sheets are always saved automatically, unless otherwise indicated (e.g. by a "Save" button).
Finally, {{APP_NAME}} is under active development and problems will occur! Please use the controls within the app to report errors/issues.


--- layout: post title: Tea; Cozy date: 2009-05-07 14:45:30.000000000 -07:00 type: post published: true status: publish categories: - Photos tags: - cameraphone - photo meta: _publicize_pending: '1' _edit_last: '6192' original_post_id: '327' _wp_old_slug: '327' author: login: falsefridays email<EMAIL_ADDRESS>display_name: Jim Withington first_name: '' last_name: '' ---
Last night.


Is the data appropriately structured for purposes of analysis?
Because datasets are often created for reasons of administration and reporting, and further that there are generally few constraints on their organization, administrative datasets are often constructed in manners not conducive to statistical analyses. Accordingly, many times there are issues of data structure that must be identified and resolved.


Logged in as {{ current_user["nickname"] }}. Log out?
Comment
Your email address will not be published. Required fields are marked *
Name *
Email *
Website


API
Composi is only 3KB. That means the API surface is fairly small. Composi exposes four functions (h, render, createElement and Fragment) and one class (Component) with four properties, four methods and five life cycle hooks.
- h {function}
- mount {function}
- render {function}
- Fragment {function}
- Component {class}
- Component - (
property
) container - Component - (
method
) render - Component - (
method
) update - Component - (
property
) state - Component - (
method
) setState - Component - (
method
) unmount - Component - (
property
) element - Component - (
property
) componentShouldUpdate - Component - (
method
) componentWillMount - Component - (
method
) componentDidMount - Component - (
method
) componentWillUpdate - Component - (
method
) componentDidUpdate - Component - (
method
) componentWillUnmount
Life Cycle Hooks:
- Component - (
- innerHTML - (
A property
)
Optional Installs
There are several optionals classes that you can import into your project. These are separate from the standard import of Composi. To import them you have to access a sub-folder of Composi: data-store
. In the following example, notice how we use /data-store
after composi
. This is so we can reach the folder where these optional classes are stored.
import { DataStore, DataStoreComponent, Observer, uuid } from 'composi/data-store
- DataStore {class}
- DataStoreComponent {class}
- Observer {class}
- uuid {function}
h
The h
function serves two purposes. Firstly it gets used by Babel during build to convert JSX into a virtual node that Composi can use for diffing and patching the dom. Secondly it provides a way to define component markup without using JSX.
h
takes three arguments:
- type - The type of node to create. This is indicated by providing a lowercase tag name: "ul", "li", "div", etc.
- props - An object literal of properties and their values: {class: 'list-users'}
- children - Either a simple string for a text node, or an array of other
h
definitions: 'Hello' or [h('li')]
To create a node you only really have to provide a type. If an element has no properties you can use and empty object: {}
or null
. Same for children:
const list = h(
// type:
'ul',
// props:
{},
// children:
null
)
// or:
const list = h(
// type:
'ul',
// props:
null,
// children:
null
)
// or:
const list = h(
// type:
'ul'
)
If you are creating a node that doesn't have properties but does have children, you will need to provide either {}
or null
or props:
const list = h(
// type:
'ul',
// props:
{},
// children:
[
h(
// type:
'li',
// props:
{},
// child:
'Apple'
),
h(
// type:
'li',
// props:
{},
// child:
'Orange'
)
]
)
Of course, you would not be putting those comments in your code. That was just to make it clear how the h
call signature works.
mount
When making functional components you use the mount
function to inject the component into the DOM for the first time. After that, if you need to update it, you would use the render
function described next.
The mount
function returns a virtual node representing the mounted component. If you intend to update the component with the render function, you need to capture that reference in a variable so you can pass it to the render
function.
The mount
function takes two arguments: the tag to create and the container in which to insert the component. Notice how we do this:
import { h, mount } from 'composi'
function Title({message}) {
return (

{message}

)
}
// Mount the component in the header tag:
mount(<Title message='Hello World!'/>, 'header')
Hydration with mount
You can use the mount function to hydrate server-rendered markup with a functional component. To do so, just provide a third argument to the mount function, which should reference the element in the DOM tree to hydrate. This can be a DOM node or of a valid CSS selector for the node.
// Markup in html from server:
The Old Title

// Functional component for new title:
function Title({content}) {
return (

{content}

)
}
// Hydrate server makup with new component:
mount(<Title content='The New Title' />, 'header', '#special-title')
In the above markup, the second argument is the container in which to render the functional component. The third argument refers to a node in the container's DOM that the functional component should update. In the example above the DOM node target and the functional component are the same node type and have the same ID. This is not required. Composi takes the third argument, accesses the element in the DOM, creates a virtual node from that and uses it to patch the DOM. This allows the functional component to add events and dynamic behavior to server-rendered markup with minimal DOM manipulation, improving initial load time and time to interactivity.
render
The render
function allows you to update functional components already mounte in the DOM. It takes two arguments:
tag
: Either a JSX tag, and h function or a virtual node.vnode
: The virtual node returned by the mount function.container
: The element in which the component was mounted.
import { h, mount, render } from 'composi'
function ListForm() {
return (

<input class='list-fruits__input-add' placeholder='Enter Item...' type="text"/>
<button class='list-fruits__button-add'>Add Item</button>

)
}
function ListItem(props) {
return (

{props.item}

)
}
function List(props) {
function init(el) {
el.addEventListener('click', events)
}
return (

 init(el)}>
<ListForm />

{props.items.map(item => <ListItem {...{item}}/>)}

)
}
const items = ['Apples', 'Cats', 'Hats']
const events = {
addItem(e) {
const input = document.querySelector('.list-fruits__input-add')
const value = input.value
if (value) {
items.push(value)
// Pass in "list" variable from mounting.
// Capture back into that variable for rendering later.
list = render(<List {...{items}}/>, list, 'section')
input.value = ''
} else {
alert('Please provide an item before submitting!')
}
},
handleEvent(e) {
e.target.className === 'list-fruits__button-add' && this.addItem(e)
}
}
const list = mount(<List {...{items}}/>, 'section')
Fragment
Composi provides a Fragment
tag to let you return multiple siblings without a wrapper tag. When Fragement
is parsed by Composi, only the children are returned. This is useful for creating lists and tables.
import { h, Component, Fragment } from 'composi'
function ListItems({data}) {
return (
<Fragment>
{
data.map(item =>
{item}
)
}
</Fragment>
)
}
class List extends Component {
render(data) {
return (

<Fragment data={data}/>

)
}
}
new List({
container: 'section',
state: todos
})
Please note that Fragment
tags cannot be inserted directly into the DOM. The Fragment
tag does not create a document fragment. It is a functional component that returns its children for inclusion in another virtual node.
Component
The component class is the main part of Composi that you will be using. This class provides a number of properties and methods for you to use.
Extending Component
You create a new component definition by extend the Component class. This lets you create custom properties and methods for your component based on what it needs to do. When you extend Component
, every class method with have access to the class properties and methods through its this
keyword
In the following example, notice how we added the properties state
and key
to the class constructor. Because we are adding properties to the contstructor, we all need to include super
and pass it props
. We also added a render
function, inside of which we can easily access the component's state
property. We also added a method called handleEvent to implement events. And finally a componentDidMount
hook to set up the main event. And finally, we use are class by instantiating it and passing it a value for the container to render in.
class List extends Component {
constructor(props) {
super(propss)
this.state = fruits
// key to use for adding new items:
this.key = 1000
}
render() {
let state = this.state
return (

<input id='nameInput' type='text' />
<button id='addItem'>Add</button>

{
this.state.map(fruit =>
{fruit.name}
)
}

)
}
handleEvent(e) {
// Handle button click:
if (e.target.id === 'addItem') {
const nameInput = this.element.querySelector('#nameInput')
const name = nameInput.value
if (!name) {
alert('Please provide a name!')
return
}
this.setState({name, key: this.key++}, this.state.length)
nameInput.value = ''
nameInput.focus()
// Handle list item click:
} else if (e.target.nodeName === 'LI') {
alert(e.target.textContent.trim())
}
}
componentDidMount() {
this.element.addEventListener('click', this)
}
}
const list = new List({
container: 'section'
})
Component - container
This is a property on the component that is the base element of the component. Many components can share the same container, for example, you might have them rendered directly in the body tag. This means that the contain is not the component. When you access the component from its element
property, you are one level down from the container.
const list = new List({
container: 'section'
})
Notice:
Once you instantiate a component, you cannot change its container. You can change the value of the component's selector or even its container value, but these changes will not affect the container currently used by the component when rendering. During initialization the component tries to get the selector provided. If the selector cannot be found in the DOM, document.body
will be used as the container. Whatever container the component gets during intialization will remain in effective for the duration of the current session. This can only be changed by a page reload.
Component - render
This is a method defined on a component that defines the markup that the component will create. It returns a virtual node when it executes. By default when this is executed it checks for state
to use. You can bypass this by passing data through the component's update
method.
class List extends Component {
render(data) {
return (

{
data.map(item =>
{item}
)
}

)
}
}
Component - update
If you have a component that does not have state
, after initializing it you'll ned to execute udpate
on it. Doing so will cause it to be rendered in the DOM. You can also optionally pass data to the update
method. Doing so allows you to bypass the current state
of the component.
class Title extends Component {
render(message) {
return (
Hello, {message}!
)
}
}
const title = new Title({
container: 'header'
})
// Update the component:
title.update('Harry Potter')
Component - state
Components can be stateless or statefull. You use the state
property to set that up. Once you have given your component state
, you should use the setState
method to update it. When you assign a value to a component's state
property, this causes the component to be rendered to the DOM automatically. This is because the Component class has getters and setters for state
. Whenever the setter is invoked it also invokes the component's update
method, resulting in a render or patching of the component in the DOM.
// Define container and state in constructor:
class Title extends Component {
constructor(props) {
super(props)
this.container = 'header'
this.state = 'Harry Potter'
}
render(message) {
return (
Hello, {message}!
)
}
}
const title = new Title()
//or define container and state during initialization:
class Title extends Component {
render(message) {
return (
Hello, {message}!
)
}
}
const title = new Title({
container: 'header',
state: 'Harry Potter'
})
Component - setState
This method lets you update the state
of a component. When the compoent's state is an object or array, this lets you perform partial updates on the state
, changing a property value of array index value. Internally, setState
invokes the state
setter, which cause the component to be updated.
class Title extends Component {
render(message) {
return (
Hello, {message}!
)
}
}
const title = new Title({
container: 'header'
})
// Set the state with setState:
title.setState('Harry Potter')
Component - unmount
If you want to destroy a component, removing it from the DOM, you will use this method. It gets executed on the component instance. unmount
deletes the component base element from the DOM and nulls out all its properties on its instance for garbage collection. Before version 5.2.2, Composi would try to unbind a whitelist of events from the component base before unmounting. Now, before unmounting you need to remove any event listeners yourself.
// Create component instance:
const title = new Title({
container: 'header',
state: 'Harry Potter'
})
// Sometime later destory the component:
title.unmount()
Component - element
Sometimes you need an easy way to reach child elements in a compnent, either to get a form input value or to register and event. You can do this through the component's element
property. element
is the base or topmost element of your component's markup. This is not the same as a component's container, which is the element into which a component gets rendered. Many components can exist inside the same container, such as the body tag.
Component - componentShouldUpdate
This property determines whether Composi should re-render a component when its state changes or its update
method is invoked. By default it is set to true. Setting it to false will allow the component to render initially but ignore any other updates. As soon as the property is set back to true, the component will begin updating again.
This is useful for situations where you need to pause the update of a component while you perform some complex operations.
class Hello extends Component {
constructor(props) {
super(props)
this.container = 'header',
this.state = 'World'
this.componentShouldUpdate = false
}
render(data) => {
return (

Hello, {data ? `: ${data}`: ''}!

)
}
}
// Create instance of Hello:
const hello = new Hello()
// Some time later update the component's state:
hello.setState('Joe')
// Because componentShouldUpdate is false, the component will not update.
// Some time later set componentShouldUpdate to true:
hello.componentShouldUpdate = true
hello.setState('Joe')
// Now the component updates.
Lifecycle Hooks
Lifecycle hooks allow you to do things at different times during the existence of a component. Composi has five. These are asynchronous. That means that the event may finish before the hook can. This is probably most important when deal with unmounting. If you have a lot of cleanup to do, do it before unmounting. The most useful hook is componentDidMount
.
Component - componentWillMount
This fires right before the component is rendered and inserted into the DOM. This gets passed a done
callback which you call when you finish whatever you were doing:
componentWillMount(done) {
// Do whatever you need to do here...
// The let the mount happen:
done()
}
If you fail to call done()
inside your componentWillMount
funciton, the component will never mount!
Component - componentDidMount
This fires right after the component has been injected into the DOM. You can use this to set up events for the component or start a interval loop for some purpose. You can access the base element of the component from within this lifecycle hook. You do this by using the component's element
property. Notice how we do this to focus on an input:
// Set focus on an input:
componentDidMount() {
// Use the component base to focus on the input:
this.element.querySelector('input').focus()
}
Component - componentWillUpdate
This fires right before the component is updated. Updates happen when the update
method is invoked, or the state
is modified. This gets passed a done
callback which you call when you finish whatever you were doing:
componentWillUpdate(done) {
// Do whatever you need to do here...
// The let the update happen:
done()
}
Component - componentDidUpdate
This fires right after the component was updated. Updates happen when the update
method is invoked, or the state
is modified.
Component - componentWillUnmount
This fires when the unmount method is invoked on the component instance. This gets passed a done
callback which you call when you finish whatever you were doing:
componentWillUnmount(done) {
// Do whatever you need to do here...
// The let the unmount happen:
done()
}
innerHTML
This is a property which you can set on any JSX tag. Its purpose is to allow adding data with markup to be rendered unescaped using innerHTML. You put the property on the element into which you wish to insert the data. Then pass the data to the property inside curly braces like any other dynamic property. You can learn more about how to use it here
Security Warning
Using innerHTML
is very dangerous as it can lead to injection of malicious code in your site by hackers. Only use this if you are absolutely sure your data source is 100% secure. It is best to avoid using innerHTML
and depend on the default rendering methods because these automatically encode the data, preventing script injection.
DataStore
This lets you create a dataStore that you can use with components. DataStore has only one public method: setState
. When you change a dataStore's state with setState
, the dataStore dispatches an event dataStoreStateChanged
. When this happens, it there is a component linked to that dataStore, it will react to it by re-render itself with the current state of the dataStore. This combination gives you state management for stateless components. The component is reactive in that whenever the state of the dataStore changes, the component updates.
Creating a dataStore
To create a dataStore, pass in the data you want to use for state when you instantiate a new instance of DataStore. When you pass the data in, you need to wrap it in an object literal with a property of state
. Pay attention to how we do this below:
import { h } from 'composi'
import { DataStore, DataStoreComponent } from 'composi/data-store'
// Create new dataStore:
const dataStore = new DataStore({
state: {
fruits: ['apples', 'oranges', 'bananas'],
vegetables: ['potatoes', 'onions', 'carrots']
}
})
To access the data in the dataStore we need to do so like this:
dataStore.state.fruits
// or:
dataStore.state.vegetables
setState
When you want to change the state of a dataStore, you use the setState
method. This takes a callback which gets passed the previous state of the dataStore. This is usually refered to as prevState
. This is the state property of the dataStore, so you can access the values of the state directly from it. No need to query from a state property. Notice how we add a new fruit and vegetable to our previous dataStore:
dataStore.setState(prevState => {
prevState.fruits.push('strawberries')
prevState.vegetables.push('tomatoes')
// Don't forget to return prevState or state won't be updated:
return prevState
})
Using setState
on a dataStore cause it to dispatch and event dataStoreStateChanged
along with its updated state. If you have a dataStore component, it is listening for that event. When it sees the event has occurred, it re-renders itself with the data that dataStore passed. To see how this works, read the next section about DataStoreComponent:
DataStoreComponent
DataStoreComponent is a custom version of Composi's Component class. The difference is that DataStoreComponent expects to receive a dataStore when it is initialized. During its initialization, it takes the provided dataStore and setting up a watcher that will re-render the component when the dataStore's state changes.
You create a new dataStore component by extending DataStoreComponent, just like you would with Component. But you will never give it state. Instead you will provide a dataStore as the value of the component's dataStore property during initialization. Otherwise, you will use the render function, lifecycle hooks and whatever methods you need, just like you would with the Component class.
Here is an example of a dataStore with a very simple dataStore component. When we update the dataStore, the component will also update.
import { h } from 'composi'
import { DataStore, DataStoreComponent } from 'composi/data-store'
// Create a dataStore:
const dataStoreTitle = new DataStore({
state: {
title: 'The Default Title'
}
})
// Create a dataStore component:
class Title extends DatatStoreComponent {
render(data) {
return (
{data.title}
)
}
}
// Create an instance of Title:
const new title({
container: 'header',
dataStore: dataStoreTitle
})
// Mount the component instance by passing in the dataStore state:
title.update(dataStore.state)
// Some time later, change the state of the dataStore:
dataStore.setState(prevState => {
prevState.title = 'This is the new title'
// Don't forget to return prevState:
return prevState
})
// The above will cause the title component to update with 'This is the new title'.
For more details on using DataStore and DataStoreComponent, check out the tutorial.
Observer
Composi has an Observer class, which it uses to enable communication between the dataStore and dataStore component. You can also use the Observer in your own code. You need to import it from Composi's data-store
folder, just like you do for DataStore and DataStoreComponent.
Observer has only two methods: watch
and dispatch
. watch
takes two arguments, an event and a callback. The callback receives as its argument any data passed with the event when it occurs. dispatch
takes two arguments, an event and optionally any data you want to pass to the watcher. Data is optional in that you can create an observer that just responds to an event.
Here's an example of a simple observer:
import { Observer } from 'composi/data-store'
const observer = new Observer()
// Set up a watcher on the observer:
observer.watch('something-happened', data => {
console.log('The event "something-happened" just happened')
console.log(`The data is: ${data}`)
})
// Dispatch the event with some data:
observer.dispatch('something-happened', 'This is the data.')
The above is an overly simplist example. You could do much more complicated things with an observer. In fact, DataStore and DataStoreComponent are using it to link them together for reactive rendering.
uuid
Composi uses the uuid
function to create uuids for DataStore. You can also use uuid
inside your code. To do so, just import it from the data-store
folder like DataStore, etc. uuid
creates an RFC4122 version 4 compliant uuid, or string of 36 characters.
import { uuid } from 'composi/data-store'
// Create a new uuid:
const id = new uuid()


Lost and Found app with search and lost/found sorting. Made using Laravel framework on server side. Frontend made using Materialize framework and AJAX technology. You can add new posts if you've lost something.
An FPS zombie shooter game I've made on Unity.
A simple blog with the ablility to add comments and category sorting and an admin panel
WHOA TECHNOLOGY


easy - farm (p10300)
German farmers are given a premium depending on the conditions at their farmyard.
Imagine the following simplified regulation: you know the size of each farmer’s farmyard in square meters and the number of animals living at it. We won’t make a difference between different animals, although this is far from reality. Moreover you have information about the degree the farmer uses environment-friendly equipment and practices, expressed in a single integer greater than zero. The amount of money a farmer receives can be calculated from these parameters as follows. First you need the space a single animal occupies at an average. This value (in square meters) is then multiplied by the parameter that stands for the farmer’s environment-friendliness, resulting in the premium a farmer is paid per animal he owns. To compute the final premium of a farmer just multiply this premium per animal with the number of animals the farmer owns.
Input
The first line of input contains a single positive integer n (< 20), the number of test cases. Each test case starts with a line containing a single integer f (0 < f < 20), the number of farmers in the test case. This line is followed by one line per farmer containing three positive integers each: the size of the farmyard in square meters, the number of animals he owns and the integer value that expresses the farmers environment-friendliness. Input is terminated by end of file. No integer in the input is greater than 100000 or less than 0.
Output
For each test case output one line containing a single integer that holds the summed burden for Germany’s budget, which will always be a whole number. Do not output any blank lines.
Sample Input
Put the following in an input textfile and rename it farm_in.txt .
3
5
1 1 1
2 2 2
3 3 3
2 3 4
8 9 2
3
9 1 8
6 12 1
8 1 1
3
10 30 40
9 8 5
100 1000 70
Sample Output
Output the following in the terminal
38
86
7445
Codepost Guide
Create a program to solve the problem and rename it to farm.cpp. Upload the file to codepost.io An input textfile named farm_in.txt shall be used by codepost to auto check your submission.
sample compile command:
g++ -o farm farm.cpp
sample run command:
./farm farm_in.txt
corresponding output:
38
86
7445
Working Code Template
/*******************************************************
*
* easy - farm (p10300)
*
* compute the german subsidy to farmers
* simplified ( area x environmental-friendliness )
*
sample compile command:
g++ -o farm farm.cpp
sample run command:
./farm farm_in.txt
corresponding output:
38
86
7445
*
* ****************************************************/
#include <bits/stdc++.h>
using namespace std;
int main (int input_count, char* input_array[])
{
ifstream file( input_array[1] );
int cases ;
file >> cases;
for (int i=0; i< cases; i++){
int farms;
file >> farms;
int total_farm_score = 0;
// change the following code to solve the problem
cout << farms << endl;
}
}
Sir Roy's Solution
/*******************************************************
*
* easy - farm (p10300)
*
* compute the german subsidy to farmers
* simplified ( area x environmental-friendliness )
*
sample compile command:
g++ -o farm farm.cpp
sample run command:
./farm farm_in.txt
corresponding output:
38
86
7445
*
* ****************************************************/
#include <bits/stdc++.h>
using namespace std;
int main (int input_count, char* input_array[])
{
ifstream file( input_array[1] );
int cases ;
file >> cases;
for (int i=0; i< cases; i++){
int farms;
file >> farms;
int total_farm_score = 0;
for (int j=0; j<farms; j++){
int area;
int animals;
int environmental_friendliness;
file >> area >> animals >> environmental_friendliness;
int farm_score = area * environmental_friendliness;
total_farm_score += farm_score;
}
cout << total_farm_score << endl;
}
}


What is Pure Barre?
In just 55 minutes you will achieve a full-body workout concentrating on the areas women struggle with the most: hips, thighs, seat, abdominals and arms. The Pure Barre technique is low-impact, protecting your joints by avoiding any bouncing or jumping. Each strength section of the workout is followed by a stretching section in order to create long, lean muscles without bulk. The technique works to defy gravity by tapering everything in and lifting it up!
The concentration involved while taking Pure Barre allows you to block "life" out for the hour, creating the mental benefits similarly obtained by the practice of yoga or meditation. A transformed body and a clear head in just one hour—it doesn't get much better than this.
Click for more details!


WITNESS LIST Veteran Affairs & Military Installations Committee March 1, 1999-11:00A SB 198 For: BAROS, DEBRA (CUERO, I.S.D.), CUERO, TX DAMRON, ROBERT (STAMFORD I.S.D.), STAMFORD, TX MUNOZ, DOLORES DR. (EDGEWOOD I.S.D.), SAN ANTONIO, TX Registering, but not testifying: For: DUNN, DAVID (TEXAS ASSOC. OF SCHOOL BOARDS), AUSTIN, TX SB 606 On: HEALD, CHARLES W. (TEXAS DEPT. OF TRANPORTATION), AUSTIN, TX MITCHELL, GEORGE (TEXAS DEPT. OF ECONOMIC DEVELOPMENT), ROUND ROCK, TX SB 607 On: MITCHELL, GEORGE (TEXAS DEPT. OF ECONOMIC DEVELOPMENT), ROUND ROCK, TX SB 640 For: BIER, SAMUEL (CAPITOL CITY CHAPTER/AM. EX. PRISONERS OF WAR/VFW POST 856), AUSTIN, TX DUNCAN, JIM (KOREAN WAR VETERANS ORGANIZATION), HOUSTON, TX PALMQUIST, MICHAEL (THE AMERICAN LEGION), AUSTIN, TX SB 641 For: BIER, SAMUEL (CAPITOL CITY CHAPT. AM. EX. PRISONERS OF WAR/VFW POST 856), AUSTIN, TX DUNCAN, JIM (TX. LONE STAR CHAPT. KOREAN WAR VETERANS ORG.), HOUSTON, TX PALMQUIST, MICHAEL (THE AMERICAN LEGION), AUSTIN, TX SCR 34 For: BIER, SAMUEL (CAPITOL CITY CHAPT. AM EX-PRISONERS OF WAR, VFW POST 856.), AUSTIN, TX DUNCAN, JIM (TX. LONE STAR CHAPT./KOREAN WAR VETERANS ORG.), HOUSTON, TX PALMQUIST, MICHAEL (THE AMERICAN LEGION), AUSTIN, TX


new Tile(layer, index, x, y, width, height) A Tile is a representation of a single tile within the Tilemap. Parameters: Name Type Description layer object The layer in the Tilemap data that this tile belongs to. index number The index of this tile type in the core map data. x number The x coordinate of this tile. y number The y coordinate of this tile. width number Width of the tile. height number Height of the tile. Source - tilemap/Tile.js, line 19 Members alpha :number The alpha value at which this tile is drawn to the canvas. Source - tilemap/Tile.js, line 84 <readonly> bottom :number The sum of the y and height properties. Source - tilemap/Tile.js, line 396 <readonly> canCollide :boolean True if this tile can collide on any of its faces or has a collision callback set. Source - tilemap/Tile.js, line 344 centerX Properties: Name Type Description width number The width of the tile in pixels. Source - tilemap/Tile.js, line 74 centerY Properties: Name Type Description height number The height of the tile in pixels. Source - tilemap/Tile.js, line 79 collideDown :boolean Indicating collide with any object on the bottom. Source - tilemap/Tile.js, line 138 collideLeft :boolean Indicating collide with any object on the left. Source - tilemap/Tile.js, line 120 collideRight :boolean Indicating collide with any object on the right. Source - tilemap/Tile.js, line 126 <readonly> collides :boolean True if this tile can collide on any of its faces. Source - tilemap/Tile.js, line 331 collideUp :boolean Indicating collide with any object on the top. Source - tilemap/Tile.js, line 132 collisionCallback :function Tile collision callback. Source - tilemap/Tile.js, line 144 collisionCallbackContext :object The context in which the collision callback will be called. Source - tilemap/Tile.js, line 150 faceBottom :boolean Is the bottom of this tile an interesting edge? Source - tilemap/Tile.js, line 104 faceLeft :boolean Is the left of this tile an interesting edge? Source - tilemap/Tile.js, line 109 faceRight :boolean Is the right of this tile an interesting edge? Source - tilemap/Tile.js, line 114 faceTop :boolean Is the top of this tile an interesting edge? Source - tilemap/Tile.js, line 99 flipped :boolean Whether this tile is flipped (mirrored) or not. Source - tilemap/Tile.js, line 49 height :number The height of the tile in pixels. Source - tilemap/Tile.js, line 69 index :number The index of this tile within the map data corresponding to the tileset, or -1 if this represents a blank/null tile. Source - tilemap/Tile.js, line 29 layer :object The layer in the Tilemap data that this tile belongs to. Source - tilemap/Tile.js, line 24 <readonly> left :number The x value in pixels. Source - tilemap/Tile.js, line 357 properties :object Tile specific properties. Source - tilemap/Tile.js, line 89 <readonly> right :number The sum of the x and width properties. Source - tilemap/Tile.js, line 370 rotation :number The rotation angle of this tile. Source - tilemap/Tile.js, line 44 scanned :boolean Has this tile been walked / turned into a poly? Source - tilemap/Tile.js, line 94 <readonly> top :number The y value. Source - tilemap/Tile.js, line 383 width :number The width of the tile in pixels. Source - tilemap/Tile.js, line 64 worldX Properties: Name Type Description x number The x map coordinate of this tile. Source - tilemap/Tile.js, line 54 worldY Properties: Name Type Description y number The y map coordinate of this tile. Source - tilemap/Tile.js, line 59 x :number The x map coordinate of this tile. Source - tilemap/Tile.js, line 34 y :number The y map coordinate of this tile. Source - tilemap/Tile.js, line 39 Methods containsPoint(x, y) ? {boolean} Check if the given x and y world coordinates are within this Tile. Parameters: Name Type Description x number The x coordinate to test. y number The y coordinate to test. Returns: boolean - True if the coordinates are within this Tile, otherwise false. Source - tilemap/Tile.js, line 156 copy(tile) Copies the tile data and properties from the given tile to this tile. Parameters: Name Type Description tile Phaser.Tile The tile to copy from. Source - tilemap/Tile.js, line 305 destroy() Clean up memory. Source - tilemap/Tile.js, line 220 intersects(x, y, right, bottom) Check for intersection with this tile. Parameters: Name Type Description x number The x axis in pixels. y number The y axis in pixels. right number The right point. bottom number The bottom point. Source - tilemap/Tile.js, line 170 isInteresting(collides, faces) ? {boolean} Is this tile interesting? Parameters: Name Type Description collides boolean If true will check any collides value. faces boolean If true will check any face value. Returns: boolean - True if the Tile is interesting, otherwise false. Source - tilemap/Tile.js, line 275 resetCollision() Reset collision status flags. Source - tilemap/Tile.js, line 256 setCollision(left, right, up, down) Sets the collision flags for each side of this tile and updates the interesting faces list. Parameters: Name Type Description left boolean Indicating collide with any object on the left. right boolean Indicating collide with any object on the right. up boolean Indicating collide with any object on the top. down boolean Indicating collide with any object on the bottom. Source - tilemap/Tile.js, line 233 setCollisionCallback(callback, context) Set a callback to be called when this tile is hit by an object. The callback must true true for collision processing to take place. Parameters: Name Type Description callback function Callback function. context object Callback will be called within this context. Source - tilemap/Tile.js, line 205


Class Grid2d
Represents a 2-dimensional grid which can be subdivided
Examples
// Create a 2d grid that's 40 x 30 in size
var grid = new Grid2d(40, 30);
// Access the U and V axes directly and use 1d subdivision methods on them
grid.U.DivideByFixedLength(7, FixedDivisionMode.RemainderAtBothEnds);
grid.V.DivideByPattern(new[] { 2.0, 5.0 });
// Get a row by index
var fifthRow = grid.GetRowAtIndex(4);
// Divide U axis of all cells in row into panels of approximate width 1
fifthRow.ForEach(c => c.U.DivideByApproximateLength(1));
// Get a cell by u, v indices
var cell = grid[1, 1];
// Divide the cell in the V direction
cell.V.DivideByCount(4);
// Create a floor from the entire grid's boundary
var floor = new Floor(new Profile((Polygon)grid.GetCellGeometry()), 0.5, new Transform(0, 0, -0.51));
// Create model curves from all subdivided cells of the grid
var modelCurves = grid.ToModelCurves();
Inheritance
Inherited Members
Namespace: Elements.Spatial
Assembly: Hypar.Elements.dll
Syntax
[JsonConverter(typeof(JsonInheritanceConverter), new object[]{"discriminator"})]
public class Grid2d
Constructors
Grid2d()
Construct a Grid2d with default domain (0,0) to (1,1)
Declaration
public Grid2d()
Grid2d(Polygon, Transform)
Create a Grid2d from a polygon and optional Transform. If the plane is null or not supplied, the identity transform will be used for the grid origin and orientation. Currently only transforms parallel to the supplied polygons are supported. The polygon's bounding box parallel to the supplied transform will be used as the grid extents.
Declaration
public Grid2d(Polygon boundary, Transform transform = null)
Parameters
| Type | Name | Description |
|---|---|---|
| Polygon | boundary | The external boundary of this grid system. |
| Transform | transform | A transform representing the alignment of the grid. |
Grid2d(Polygon, Vector3, Vector3, Vector3)
Create a grid from a single boundary, an origin, and its U and V directions
Declaration
public Grid2d(Polygon boundary, Vector3 origin, Vector3 uDirection, Vector3 vDirection)
Parameters
| Type | Name | Description |
|---|---|---|
| Polygon | boundary | |
| Vector3 | origin | |
| Vector3 | uDirection | |
| Vector3 | vDirection |
Grid2d(Polygon, Grid1d, Grid1d)
Create a grid from a boundary and custom U and V grids
Declaration
public Grid2d(Polygon boundary, Grid1d u, Grid1d v)
Parameters
| Type | Name | Description |
|---|---|---|
| Polygon | boundary | |
| Grid1d | u | |
| Grid1d | v |
Grid2d(Grid1d, Grid1d)
Construct a Grid2d from two Grid1ds in the U and V directions
Declaration
public Grid2d(Grid1d u, Grid1d v)
Parameters
| Type | Name | Description |
|---|---|---|
| Grid1d | u | |
| Grid1d | v |
Grid2d(Grid2d)
Construct a Grid2d from another Grid2d
Declaration
public Grid2d(Grid2d other)
Parameters
| Type | Name | Description |
|---|---|---|
| Grid2d | other |
Grid2d(Grid2d, Grid1d, Grid1d)
Construct a Grid2d using another Grid2d as the base, but with different Grid1ds as its axes.
Declaration
public Grid2d(Grid2d other, Grid1d u, Grid1d v)
Parameters
| Type | Name | Description |
|---|---|---|
| Grid2d | other | The Grid2d to base this one on. |
| Grid1d | u | The Grid1d representing the U Axis. |
| Grid1d | v | The Grid1d representing the V Axis. |
Grid2d(IList<Polygon>, Transform)
Create a Grid2d from a list of boundary polygons and an optional transform. If the transform is null or not supplied, a transform will be generated automatically from the boundaries' normal. Currently only transforms parallel to the supplied polygons are supported. The polygons' bounding box parallel to the supplied transform will be used as the grid extents.
Declaration
public Grid2d(IList<Polygon> boundaries, Transform transform = null)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Generic.IList<Polygon> | boundaries | The external boundaries of this grid system. |
| Transform | transform | A transform representing the alignment of the grid. |
Grid2d(IList<Polygon>, Vector3, Vector3, Vector3)
Create a grid from a list of boundaries, an origin, and its U and V directions
Declaration
public Grid2d(IList<Polygon> boundaries, Vector3 origin, Vector3 uDirection, Vector3 vDirection)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Generic.IList<Polygon> | boundaries | |
| Vector3 | origin | |
| Vector3 | uDirection | |
| Vector3 | vDirection |
Grid2d(IList<Polygon>, Grid1d, Grid1d)
Create a grid from a list of boundaries and custom U and V grids
Declaration
public Grid2d(IList<Polygon> boundaries, Grid1d u, Grid1d v)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Generic.IList<Polygon> | boundaries | |
| Grid1d | u | |
| Grid1d | v |
Grid2d(Double, Double)
Construct a Grid2d with specified dimensions for the U and V direction.
Declaration
public Grid2d(double uDimension, double vDimension)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | uDimension | The size along the U axis |
| System.Double | vDimension | The size along the V axis |
Properties
Cells
Child cells of this Grid. If null, this Grid is a complete cell with no subdivisions.
Declaration
[JsonIgnore]
public List<List<Grid2d>> Cells { get; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<System.Collections.Generic.List<Grid2d>> |
CellsFlat
A flat list of all the top-level cells in this grid. To get child cells as well, use Grid2d.GetCells() instead.
Declaration
[JsonIgnore]
public List<Grid2d> CellsFlat { get; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<Grid2d> |
IsSingleCell
Returns true if this 2D Grid has no subdivisions / sub-grids.
Declaration
[JsonIgnore]
public bool IsSingleCell { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Item[Int32, Int32]
Retrieve a single top-level cell at the specified [u,v] indices.
Declaration
[JsonIgnore]
public Grid2d this[int u, int v] { get; }
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | u | The U index |
| System.Int32 | v | The V index |
Property Value
| Type | Description |
|---|---|
| Grid2d | The cell at these indices |
Type
An optional type designation for this cell.
Declaration
public string Type { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
U
The 1d Grid along the U dimension
Declaration
public Grid1d U { get; }
Property Value
| Type | Description |
|---|---|
| Grid1d |
V
The 1d grid along the V dimension
Declaration
public Grid1d V { get; }
Property Value
| Type | Description |
|---|---|
| Grid1d |
Methods
FindCellAtPosition(Double, Double)
Retrieve the grid cell (as a Grid1d) at a length along the U and V domains.
Declaration
public Grid2d FindCellAtPosition(double uPosition, double vPosition)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | uPosition | U Position |
| System.Double | vPosition | V Position |
Returns
| Type | Description |
|---|---|
| Grid2d |
GetCellAtIndices(Int32, Int32)
Retrieve a single top-level cell at the specified [u,v] indices.
Declaration
public Grid2d GetCellAtIndices(int u, int v)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | u | The U index |
| System.Int32 | v | The V index |
Returns
| Type | Description |
|---|---|
| Grid2d | The cell at these indices |
GetCellGeometry()
Get a rectangular polygon representing this untrimmed cell boundary.
Declaration
public BoundedCurve GetCellGeometry()
Returns
| Type | Description |
|---|---|
| BoundedCurve | A rectangle representing this cell in world coordinates. |
GetCellNodes()
Get the points at the corners of all grid cells. ///
Declaration
public List<Vector3> GetCellNodes()
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.List<Vector3> |
GetCells()
Recursively retrieve all bottom-level cells from this grid.
Declaration
public List<Grid2d> GetCells()
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.List<Grid2d> | A list of all bottom-level cells in the grid. |
GetCellSeparators(GridDirection, Boolean)
Get the top-level lines separating cells from one another.
Declaration
public List<ICurve> GetCellSeparators(GridDirection direction, bool trim = false)
Parameters
| Type | Name | Description |
|---|---|---|
| GridDirection | direction | The grid direction in which you want to get separators. |
| System.Boolean | trim | Whether or not to trim cell separators with the trimmed cell boundary |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.List<ICurve> | The lines between cells, running parallel to the grid direction selected. |
GetColumnAtIndex(Int32)
Get a list of all the top-level cells at a given u index.
Declaration
public List<Grid2d> GetColumnAtIndex(int u)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | u | The u index |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.List<Grid2d> | A list of the column of all cells with this u index. |
GetRowAtIndex(Int32)
Get a list of all the top-level cells at a given v index.
Declaration
public List<Grid2d> GetRowAtIndex(int v)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | v | The v index |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.List<Grid2d> | A list of the row of all cells with this v index. |
GetTrimmedCellGeometry()
Get a list of polygons representing this cell boundary, trimmed by any polygon boundary. If the cell falls completely outside of the boundary, an empty array will be returned.
Declaration
public BoundedCurve[] GetTrimmedCellGeometry()
Returns
| Type | Description |
|---|---|
| BoundedCurve[] | Curves representing this cell in world coordinates. |
GetTrimmedCellProfiles()
Get a list of profiles representing this cell boundary, trimmed by any polygon boundary. Internal polygons that are completely inside the cell and are clockwise, will be added as profile voids. If the cell falls completely outside of the boundary, an empty array will be returned.
Declaration
public IEnumerable<Profile> GetTrimmedCellProfiles()
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<Profile> | Curves representing this cell in world coordinates. |
IsOutside()
Test if the cell is fully outside the boundary.
Declaration
public bool IsOutside()
Returns
| Type | Description |
|---|---|
| System.Boolean | True if the grid cell is totally outside the boundary. |
IsTrimmed(Boolean)
Test if the cell is trimmed by a boundary.
Declaration
public bool IsTrimmed(bool treatFullyOutsideAsTrimmed = true)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Boolean | treatFullyOutsideAsTrimmed | Should cells that fall entirely outside of the boundary be treated as trimmed? True by default. |
Returns
| Type | Description |
|---|---|
| System.Boolean | True if the cell is trimmed by the grid boundary. |
SplitAtPoint(Vector3)
Split the grid at a point in world space
Declaration
public void SplitAtPoint(Vector3 point)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | point | The point at which to split. |
SplitAtPoints(IEnumerable<Vector3>)
Split the grid at points in world space
Declaration
public void SplitAtPoints(IEnumerable<Vector3> points)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Generic.IEnumerable<Vector3> | points | The points at which to split |
SplitAtPosition(Vector3)
Split the grid at a position in the grid's coordinate system
Declaration
public void SplitAtPosition(Vector3 position)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | position | The position at which to split, with X = U and Y = V. |
SplitAtPosition(Double, Double)
Split the grid at a position in the grid's coordinate system
Declaration
public void SplitAtPosition(double uPosition, double vPosition)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | uPosition | The U position |
| System.Double | vPosition | The V position |
SplitAtPositions(IEnumerable<Vector3>)
Split the grid at positions in the grid's coordinate system
Declaration
public void SplitAtPositions(IEnumerable<Vector3> positions)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Generic.IEnumerable<Vector3> | positions | The positions at which to split, with X = U and Y = V. |


Projects
LaiJob: A Java web service with personalized search and recommendation engine- Designed an interactive web page (HTML, CSS, JavaScript, AJAX) for users to search positions and apply online.
- Implemented an Android App using MVVM design pattern, and integrated it with Google Map API and Firebase.
- Deployed a Scrapy web crawler on AWS and integrated it with AWS Elastic-search service to create a customized search engine to crawl job postings from web and provide data to the recommendation engine.
- Created a personalized recommendation engine based on user’s search history and favorite records.
NikoHealthCare: A Spring and Hibernate based Shopping and Ordering system
- Implemented a web application for users to search and shop healthcare products such as facial masks and hand sanitizers online based on Spring MVC (RESTful API, dependency injection, inversion of control, etc.).
- Implemented security workflow via in-memory and JDBC authentication provided by Spring Security.
- Utilized Hibernate to provide better support of MySQL database operations to store user, item and ordering data.
- Developed a fulfillment system by leveraging AWS Lambda and AWS step function.


Xiaomi announces Xiao Ai 3.0 and expands earthquake alerts with MIUI 11
by MichailXiaomi’s Xiao Ai voice assistant is getting a major update. Announced during Xiaomi’s own MIDC develop conference, Xiao Ai 3.0 brings a male voice option, and adds “naturally continuous dialogue” for smartphone users. This is much like how you can speak to Google Assistant and ask it follow up questions with the previous answers as context.
As per GizChina you'll be able to speak to the voice assistant and interrupt it to start a new command. Currently, it's only supported by the Xiaomi Mi 9 Pro 5G and Xiaomi Mi 9.
Xiaomi has continually invested in R&D for its voice platform and today, MiNLP (Xiaomi’s natural language processing platform) is activated over 6 billion times a day.
Xiaomi’s own voice assistant platform first launched in the first half of last year, debuting with the Xiaomi MI Mix 2S. Of course, Xiaomi’s voice assistant platform is intended for the Chinese market and managed to clock 49.9 million monthly active users after a little over a year.
With MIUI 11, Xiaomi is integrating an earthquake alert warning system for phones on MIUI 11 and Mi TV devices within seconds of the arrival of the first quake wave. The system first launched on September 20 in testing phase and Xiaomi will soon expand the program to all of mainland China.
Looking to 2020, Xiaomi plans to launch more than 10 5G-ready smartphones and looks forward to further define the “Smart Home to all” with its massive IoT business.


9 June 2005
On 9 June 2005, six new polio cases were confirmed in Indonesia, bringing the total number of cases to 34. Five of these cases are from neighbouring districts as the index case (Lebak, Cianjur and Bogor districts), while one of these new cases is from the same district as the index case (Sukabumi district).


Improve this Doc
FABs (Floating Action Buttons) are standard material design components. They are shaped as a circle that represents a promoted action. When pressed, it may contain more related actions. FABs as its name suggests are floating over the content in a fixed position.
Basic Usage
Demo Source
```html
```
_For more information, Check out the [API docs](../api/components/fab/FabButton/)._


Intro
- focus of this year's conference
This year, two plenary workshops on ICD-10-AM and HL7 will take place. All attendants are strongly encouraged to attend, as it will serve as an opportunity to strengthen knowledge about existing and future standards for health messaging and disease coding. Lunch will be served.
ICD-10-AM
- ICD-10 by WHO: what is it, what does it do, deficiencies
- aussie mod: y tho
- future ICD: ICD-11, updating our systems
- further reading (i.e. references)
ICD-10 is the tenth revision of the International Classification of Diseases. Developed by the World Health Organization, ICD-10 aims to systematically define and unify disease codes on an international level. ICD-10 allows medical professionals, researchers, and policy-makers to communicate across the globe under a common medical language.
ICD-10-AM modifies ICD-10 standards for Australia's unique healthcare landscape. ICD-10-AM allows for ease of use by Australian medical professionals by complementing international standards set by the WHO with existing local standards. Importantly, coding for procedures is integrated into ICD-10-AM based on the Commonwealth Medical Benefits Schedule.
In 2018, the WHO published the most recent revision of the ICD, ICD-11, to ensure the ICD corroborates with contemporary medical advances. In particular, whereas previous ICD standards have often been accompanied with country-specific modifications, ICD-11 aims to mitigate this by hard-coding tools for regional modification within the international ICD-11 standards. Moving forward, the Australian healthcare system nonetheless faces challenges in adapting the revised ICD such that it remains relevant to Australian healthcare requirements and data.
Further reading:
https://www.who.int/classifications/icd/factsheet/en/
https://www.ihpa.gov.au/what-we-do/icd-10-am-achi-acs-current-edition
https://www.mja.com.au/journal/1998/169/8/introducing-icd-10-am-australian-hospitals
https://www.aihw.gov.au/our-services/international-collaboration/australian-collaborating-centre-for-who/icd-11
HL7
- what is it, what does it do?
- deficiencies
- future modifications
- further reading (i.e. references)
HL7 comprises standards, produced and maintained by HL7 International, which aim to improve interoperability between the variety of information and messaging systems used by healthcare organisations. Efficient electronic messaging is key to streamlining medical interactions at all levels, including consultation, diagnostics, procedures, and even administration.
Internationally, HL7 is comprised of various standards dealing with different applications, including transactions, document exchange, and medical supply dispensing. In particular, the primary standards are most widely used. HL7 Australia is the Australian affiliate of HL7 International, and adapts HL7 standards for Australian healthcare communication requirements.
HL7 Version 2 is currently the most widespread implementation of HL7 standards, including Australia. Notably, Australian Pathology Messaging standards; and Australian Diagnostics and Referral Messaging standards are all localisations of HL7 Standard 2.4.
HL7 Version 3 messaging is intended as a "next generation" implementation of HL7 messaging. In particular, Clinical Document Architecture applies HL7 v3 standards to representing e-health documents. My Health Record, a recent government initiative to summarise Australians' medical information online, is based on HL7 CDA.
FHIR (Fast Healthcare Interoperability Resources) is a developing implementation of HL7 standards. FHIR is oriented around manipulating discrete data elements rather than whole documents. As such, FHIR potentially offers improved granularity in comparison previous HL7 standards, in terms of treating records as sets of independent yet related data objects. Moreover, FHIR also aims to be more user-friendly, providing human-readable records. Australia has yet to widely adopt FHIR, and adapting FHIR in existing Australian health information systems is a key element of this year's conference.
Further reading
https://www.hl7.org/fhir/comparison.html
http://site.hl7.org.au/standards/international-published/
http://www.hl7.org/about/FAQs/index.cfm?ref=nav
http://www.hl7.org/implement/standards/index.cfm?ref=nav
https://confluence.hl7australia.com/display/OOADRM20181/HL7AUSD-STD-OO-ADRM-2018.1
https://confluence.hl7australia.com/display/HA
http://www.e-health.standards.org.au/Home/Publications.aspx