AGENDA for Thursday, July 12th
=========================
Version 4 and the future direction for V4.
9.15 Morning
------------
9.15 Functional requirements for scan engines and data rates as services, *Daron Chabot*
[Anyone else from PSI or Diamond?]
10.00 *Bob Dalesio* V3 limitations with respect to scanning.
10.30 Break
10.45 *Markus* (for MJ and DM), on PSI thoughts on EPICS and IOC
11.15 Discussion on V3 IOC limitations with respect to scanning and other beamline requirements
[*Bob Dalesio* leads]
12.15 Lunch
1.30 Afternoon
--------------
1.30 Thoughts on requirements for leveraging the combined V3/V4 system (*Greg*, 30 min)
IOC getting static data, IOC publishing structured data, IOC fast feedback support,
EPICS system instrumentation, Directory Service search and data acq integration, V4 IOC
SNL (I'm lookin' at you Ben!), Web Services
2.00 pm Data Analysis Requirements
[Would prefer to hear this form a PSI or diamond guy – kind of data – results of analysis]
Break
3.00 Visualization requirements and solutions
*Everyone*, - inventory – what exists – what kind of interface? HDF5?
3.30 Discussion to formulate what is sensible for the EPICS embedded IOC in the short and medium term.
Outcomes and recommendations of this discussion would used in friday's session to build objectives
for the coming year.
[*Bob Dalesio* leads]
MINUTES
=======
Present: DH, Mark Heron (MH) subject to availability), BD, GS, MK, Michael Abbot (MA), JR, TK, Daniel Meyer (DM), Markus Janousch (MJ), MS, Daron Chabot (DC),Paul Gibbons, Tom Cobb
*********
PRESENTATION: Functional requirements for scan engines and data rates as services, Daron Chabot, BNL
*********
Example beamline data rates:
CSX: 8Gbps, 4 TB/day
CHX, 4-40Gbps, 4 TB/day
IXS: ~10 Mbps, <1 GB/day
The experimental method very often involved "Scanning", and that most often involves physical motion.
Motion is of sample, detector, optics etc.
* Stepwise
* Continuous (on-the-fly). Involves a single acceleration/deceleration cycle.
Recently, continuous has become much more common. It requires buffering close to hw. Requires trigger distribution.
So, need to focus on continuous scanning requirements [for future controls].
Places lacking in EPICS:
1. Reciprocal space. aka (q-space, k-space).
It's the frequency domain space. 1/distance, not 1/time.
Crystallography defines teh space in 3 axes: [h k l]. The orientation of [h k l] maps to several physical axes.
There is direct support of this axis space in EPICS.
Therefore no alarm, archive, direct control in [h k l] space in EPICS.
Many scanning operations are defined in terms of reciprocal space operations, particularly for materials science. Eg X-ray
photon correlation spectroscopy (XPCS).
In XPCS the objective is to study the timescales of material processes. These are derived from scanned "frames", often 20K frames/s. Frame acq is very bursty. You have to aggregate each pixel in a sequence of frames.
A particular difficulty is in the coordination of the frame data acquisition, and the online data analysis.
PG: But can't any process monitor the data acq and start processing on given frame number.
BD: [missed reply...?]
DC: The point is there is no framework for coordination. There are solutions, but it's not supported.
BD: Yes, our objective is to finish a framework.
PG: Do you want this f/w on the IOC?
BD: In the IOC or even lower, such as in the DAQ. Particularly for short term.
MJ: There are limitations to the extent one can do that in different exp. setups.
BD/MJ: Much of the data is 0s. Would be easier if formally sparsified (get rid of 0s).
BD: Essentially, all analysis that is now below the E DB, is there because the EDB isn't presently suitable.
MJ: Human interaction is needed to manage the coordination of data acq and analysis.
PG: yes, but there are ways to do that coordination.
Three Biggest Areas of Open Issues:
1. Scanning framework. Start, stop, control of scans.
2. Online data analysis frameworks (ODA)
3. Data Formats (HDF5).
GW: Question about role of EPICS in data processing...
Split between data acquisition and later analysis is not more feasible because of the data rates
Diamond is doing pre-analysis (visualization)
Access to the data from user's home labs is important
Standardization, formats, metadata etc. is important (collaborations)
MJ: In tomography, they need the whole data set. For visulaization you need the whole data set.
PG: That's true.
BD: This suggests the need for a data pipe that can give data to any client.
With a proper architecture, one has more freedom of selecting where the data processing takes place
MJ: One issue is that we store a huge amount of data for experimenters, but there are some groups that
aren't set up to access or process that data (needs lots of computing resources).
NEXUS defines semantics over HDF5 format.
Service for collecting metadata ("gather") would be useful
Metadata stored in DB and used used for data queries
********
PRESENTATION: Thoughts on EPICS4 on beam lines. Markus Janosh, PSI
********
Experimental techniques
Tomography, diffraction, spectroscopy (electron, photon)
Scanning of actuators and reading out detectors. Often simultaneously changing external parameter (temp, pressure,...)
STXM: raster scan of the sample, pixel at a time
acq time a few ms
Synchronous scanning in 1,2,3 dimensions
Data rates from KBytes/sec to 800 MBytes/sec
Require metadata of machine, BL status, experiment needed
Synchronization in hardware. Eg, the "whole status of the machine on a bunch-to-bunch basis, SwissFEL at 100Hz."
DAQ as dedicated apps or scripts
(scribe disconnected for a while)
EIGER: 50 Gb/s for a module
8 GB RAM on module
9M: 906 Gb/s
Compression on-module (data rate a few GB/sec)
How can Epics V4 Help
----------------------------------
* General scanning framework, like sscan record
* General Data Acq
* Anti-collision management
* Simple DAQ -> Sophisticated and easily configurable state machine! [BEN, you listening to this!]
* Integration of RDB for samples
* Data processing queues
* Meta data of the IOC (status, health, ...)
Address the different programmer levels/skills:
+ Have a very easy and robust get, set, monitor (one usable by scientists)
+ Provide this in several scripting languages, and command line
+ Have an easy interface to the archiver and history
+ Have a tool to easily/quickly plot data and correlate them
Have a plugin architecture and developer tools.
EPICS 4 is EPICS V3 plus a platform for (scientific) services, plus possibly a frameork for aggregating data in an embedded IOC (V3).
GW: propose two working groups, one for services, one for "base" EPICS 4
MJ would like:
Collaboration provides reference services, on one platform (Linux)
Client tools and the framework work on many clients
Development tool: make
Error logging: use the pvAccess protocol, mec
JR: Does Ev4 aim to replace 0MQ? Would you use 0mq for high perf, and ev4 for others.
MS: Most of the main good things in 0mq are in pvAccess
PG: What about guaranteed delivery. I found not all messages in v4 were getting through.
MS: In pva you may loose monitors, but you're notified about it.
MS: in pva you monitor signals. If the signal changes a lot, then some notifications may be lost.
JR: What should you use when you want to monitor data, like publish and subscribe.
MS: Lets say you have acq, and it may be bursty, then set the queue length appropriately.
JR: Ok, makes sense. That's functionally equivalent to 0mq.
PG: But that's not the case in V3.
MK: In v3 you can't set the queue length for data.
PG: I used caput to put to a V4 ioc, and I lost some data.
MK: Well, you should have seen all. I'd have to see.
*******
AI on JR: Add pattern for Caput to V4 IOC to Archictures Document.
*******
********
PRESENTATION: EPICS V4 ideas in support of beamline science. Tom Cobb, Diamond
********
Beamlines are characterised by:
* Motors, lots of motors
- mainly delta-tau, with diff coord systems
* Cameras and detectors
*It takes longer than it should to create support for such collections of such systems
V3 Useful features
---------------------------
* rewireable links in records
* scan rate changes in records
* streamDevice - stops you writing boilerplate C code for comminicating with simeple devices
* areaDetector
V3 annoyances
----------------------
* 3 fold duplication of Driver, databases, screen
* The pain of building an IOC, undocumented template macro, etc.
* Lack of structured data types and metadata
* Can't create and delete records on teh fly.
* Can't form explressions in macro substitutions.
* Concurrency in multiple fields and multiple records
* syncing demand and readback fields. There is no pattern for this, have to decide how
* Only 16 fields in an mbbo and only 39 chars in a char string!!
V4 ideas
-------------
* Objects (created at init) with field list that can row and shrink.
....
S: "example"
Example of a motor high level interface would be a record composed of a conglomeration of V3 [or v4] recrords.
S: How would the "database" work"
TC describes how a notional next gen EPICS database would work. Describes a 3 tier system
soft support"/intelligent device (a pump) -> streamDevice -> IP port (low levelo IO)
JR: At Diamon, we mainly add functionality at the asyn [driver] level, rather than at record support level.
TC: Therefore, you really only need one smart record, than can be used with asyn.
[need this discussion summarized]
S: Structured Data
TC would like:
Metadata that can be attached to any data [this is provided].
Like to be able to choose which fields and metadata are displayed
Functionality now handled by NTNDarray
S: Template
Describes teh idea of creating device objects from parameterized templates.
PG: On metadata, I think that's a missuse. In the stats example, that's data too. Missue of the word.
********
NEW TOPIC: Scanning Limitations. Bob Dalesio, BNL
********
Large buffer management
Arrays are not supported (only one-dimensional array)
No metadata, limited support for operations on arrays
Scanning
Handling of large datasets
Multi-core support in database
Timestamping from various I/O
Requirements
normative types for images, ndim arrays, nodes of HDF5?
records that support operations on arrays, tables, etc.
buffer life cycle from driver through communication
thread assignment to cores
PG: Diamond is defining the scans in Python HL apps
How to provide a scan system? A service in the V4 framework?
Should the collaboration try to provide an IOC that is able to run a scan service?
PG: If yes, should be flexible (with a python interface)
GW: are the requirements general enough to make it worthwhile writing general-purpose services?
MJ: yes; every beamline has a defined (photon) energy, the reciprocal space is well defined, etc.
BD: two areas: data processing (area detector) and DA/experiment control (scan)
DC: Presently the scan record is an interface to a scan engine... [more not recorded]
PG: The service should be implemented in Python.
DC: Only the interface to the scan engine is important, the details
ofthe implementation of the scan engine (eg its language) is not
important.
DC: What is it about the real-time OS that you use - that drives it being real-time, for beamline control?
many: nothing.
JR: In fact, we started to use Linux instead.
TK: We probably won't use VxWorks for SwissFEL.
********
BD: Bob asks beamline group representatives do we need to form a "EPICS V4 beamline working group" (to define normative types, ...)?
DC, PG, ... :Yes.
BD: If we agree on normative types this would be a BIG win.
PG: Normative types for images would be really usefull.
GW: Should the working group define normative types and then define scan service.
TC: Do not push it, start with areaDetector
DC: Grey area: what are plans to support framework to get data from HW into the NT?
BD: Nothing was done in this area. We pull the data to the service. An aggregator can pull data from V3 and provide it in a form of a NT.
Ralph: What about areaDetector plugin for NT.
JR: We've aready done this. AD serializes images into NT and sends it over the sockets (pvAccess was not ready then).
PG: GDA receives data/images over pure sockets (for test purposes).
********
NEW TOPIC: MK: pvIOCCPP Thought about future development
********
pvIOCCPP module currently implements/contains:
- implemenation of V3 channel provider (no aggregation)
- service support (RPC support)
- obsolete header for easyPVA
What should pvIOCCPP provide? Most what pvIOCJava provides (3-4mm) in addition to implement Dirk's goal.
pvIOCJava features:
- database (set of PVRecords)
- install (support to dynamicall install/remove PVRecords)
- pvCopy (utility to access subset of the fields of the PVStructure)
- pvAccess (implementation of ChannelProvider and Channel that access local PVRecords)
- monitor (monitor support)
- support (record processing, code attached to a field of PVRecord)
- portDriver (V4 equvivalent of asynManager)
- caV3 (client/server support for CAV3)
- xml (reading XML to populate database)
- swtshell (test GUI, ugly, used as debugging tool)
Features usefull for implementing Services: database, install, pvCopy, pvAccess, and monitor. In addition some subset of "support".
pvIOCJava implements portDriver. Attaches to the fields.
portDriver does not know (define) anything about V4 records.
swtshell - no need to implement it in CPP. swtshell should be taken out of pvIOCJava and redone. Based on SWT.
GW: Marty do you suggest next year (after Sep) more work should be spent to fully implement CPP IOC.
MK: Yes.
GW/MK: Motivation is to access HW.
GW: Is it important to run on VME/embedded IOC?
MK: Yes. We (MK and MS) hope that V4 base will compile on VME platforms.
GW: Would you still call it pvIOC (when coexisting with V3 IOC)?
MK: "Marketing people" should decide.
GS: What about "V4 engine"?
DC: Naming should be revised (confusing for new people).
BD: Do we have a standard record set?
MK: I've done a standard components that build records. I've implemented something similar to ai, etc.
GW: Let's try to make a list of items for next charter!
********
NEW TOPIC: Beam line directed V4 working group.
********
[Group went through the basic charter deliverables that might be the remit of a new beamline oriented EPICS V4 working group]
1) heterogeneous data aggregator on epics V3 - part of this charter. No normative type. MK: Not hard (when implemented as channel RPC request).
2) connect ntimage and ndarray into v4 server
3) actions on images (ala areaDetector, such as background substraction...)
4) review normative types in light of beam line control.
5) fully implemented pvIOCCPP for supporting beam line control
6) prototype V4 record using V3 image-processing record
7) scan service
MK: Re 5, we can directly access V3 record data (C++ pointer) as CPP caV3 does.
MK: Wants to spent time to implement CPP pvCopy ("nobody" wants to implement get/put/... support code).
GW: Re 1, Not much work if done if done in V3 IOC.
PG: What about using directory service to build up...?
TC: XML?!
GW: This can be quickly done in V4 (as service) in Java. However, we want address Dirk's requirement - easy to do/deploy for V3 developer.
TC: Wants it all done in the V3 IOC.
MK: Feasible to do with not much of work: start V3 IOC, and within the IOC you also start a pvAccess server using caV3. There is a configuration file that specifies what fields to aggregate into PVRecord-s.
MK: Willing to work with Dirk from start of September (done till end of September)
---
PG: Interested in points 2, 3, 4


Introduction
There are two UD treebanks of Modern Greek (EL): UD_Greek-GDT, UD_Greek-GUD.
- GDT and GUD have adopted the same tokenization and word segmentation guidelines.
- The two treebanks present notable differences as regards morphological annotation; these differences are presented in index.
The UD documentation for EL morphology (el_pos and el_feat) is based on research in the context of the GUD.
The UD documentation for EL syntax syntactic structures is based on research in the context of the Greek Dependency Treebank (GDT). On the other hand, in GUD, the syntactic guidelines of GDT are taken as a baseline but they are being edited with an ongoing project whose results will be reported in due time.
GDT is a resource for Modern Greek manually annotated for morphology, syntax and semantics. It is an ongoing project led by researchers at the Institute for Language and Speech Processing (ILSP/Athena Research Centre), with the help of students from the Technoglossia postgraduate program and the National and Kapodistrian University of Athens. The texts include transcripts of European parliamentary sessions, articles from the Greek Wikipedia, and web documents pertaining the politics, health, and travel domains. The annotation scheme used for the original syntactic layer of the GDT is based on an adaptation of the guidelines for the Prague Dependency Treebank.
GUD is a resource for EL manually annotated for morphology and syntax. It is an ongoing project led by Stella Markantonatou and Vivian Stamou (hereinafter: the GUD team), both researchers at the Institute for Language and Speech Processing (ILSP/Athena Research Centre), with the contribution of students of Language Technology, an MSc program co-organised by the National and Kapodistrian University of Athens (NKUA) and ILSP. The texts include randomly selected extracts of Modern Greek fiction. The annotation scheme used for the morphological annotation of GUD is based on UD.v2.
Acknowledgments
The GDT team wish to thank ILSP researchers Haris Papageorgiou and Maria Koutsombogera, as well as all student annotators for their contributions to the GDT effort.
The GUD team ows special thanks to Socratis Vakirtzian (NKUA). Thanks are also expressed to the NKUA students Fei Poulou, Georgia Apostolopoulou, Antonis Balas and Maria Panagiotopoulou, as well as the 2020-2023 students of Language Technology for their contribution to the morphological and syntactic annotation of the treebank.
References
- Prokopis Prokopidis and Haris Papageorgiou. Experiments for Dependency Parsing of Greek. In Proceedings of the First Joint Workshop on Statistical Parsing of Morphologically Rich Languages and Syntactic Analysis of Non-Canonical Languages, pages 89 -96, Dublin, Ireland, August 2014.


|
OCHamcrest
|
Matchers that decorate other matchers for better expression.
Defines | |
| #define | describedAs HC_describedAs |
| describedAs(description, matcher, ...) - Adds custom failure description to a given matcher. | |
| #define | is HC_is |
| is(aMatcher) - Decorates another matcher, or provides a shortcut to the frequently used is(equalTo(x)). |
Matchers that decorate other matchers for better expression.
| #define describedAs HC_describedAs |
describedAs(description, matcher, ...) - Adds custom failure description to a given matcher.
| description | Overrides the matcher's description. |
| matcher,... | The matcher to satisfy, followed by a comma-separated list of substitution values ending with nil . |
The description may contain substitution placeholders %0, %1, etc. These will be replaced by any values that follow the matcher.
(In the event of a name clash, don't #define HC_SHORTHAND
and use the synonym HC_describedAs
instead.)
is(aMatcher) - Decorates another matcher, or provides a shortcut to the frequently used is(equalTo(x)).
| aMatcher | The matcher to satisfy, or an expected value for equalTo matching. |
This matcher compares the evaluated object to the given matcher.
If the aMatcher argument is a matcher, its behavior is retained, but the test may be more expressive. For example:
assertThatInt(value, equalToInt(5))
assertThatInt(value, is(equalToInt(5)))
If the aMatcher argument is not a matcher, it is wrapped in an equalTo matcher. This makes the following statements equivalent:
assertThat(cheese, equalTo(smelly))
assertThat(cheese, is(equalTo(smelly)))
assertThat(cheese, is(smelly))
Choose the style that makes your expression most readable. This will vary depending on context.
(In the event of a name clash, don't #define HC_SHORTHAND
and use the synonym HC_is
instead.)


Satechi Releases New Compact Bluetooth Keyboard
by Andrew OrrSatechi announced today the release of its compact Bluetooth keyboard featuring a full keyboard layout with dedicated number keys.
Compact Bluetooth Keyboard
The keys are backlit and can last up to 600 hours on a single charge (depending on backlight usage). The keyword recharges via USB-C and features Bluetooth 5.0. You can connect up to three devices at once by just pressing a button.
Compatible Devices
2019/2018/2017/2016 MacBook Pro, 2018 MacBook Air, 2018 iPad Pro, 2018 iMac, iMac Pro, iPhone 11 Plus Max/11 Plus/11, XS Max/XS/XR/X, 8 Plus/8, and most other Bluetooth-enabled iOS & Mac devices.
You can pick one up for US$79.99, and from November 25 to November 27 Satechi is offering a 20% discount if you use the code BACKLIT20.
Further Reading:


On 25 July 2019, 10 new articles were published in 8 journals.
Randy K Lippert and Kevin Walby, A Criminology of Policing and Security Frontiers
Innovations in Empirical Research Into Human Trafficking: Introduction to the Special Edition
Revolting Prostitutes: the Fight For Sex Workers’ Rights
Indus Water Treaty in the Doldrums Due to Water–power Nexus
Police Response to Violence and Conflict Between Parents and Their Minor Children
Police Officers’ Self-Assessed Legitimacy: A Theoretical Extension and Empirical Test
Weighing Words: the Impact of Non-Victim Correspondence on Parole Board Decisions
Engaging With Online Extremist Material: Experimental Evidence


Symbol Index for "Location"
Symbol Index for diagram
"Location"
from (Association)
Location (Class)
location for (Association)
Location Structure (Class)
Reference Point (Class)
RP/Dimension (Generalization Node)
Subject Contact (Class)
Timepoint (Class)
to (Association)


process_ez module¶
-
class
process_ez.
ProcessEZ
[source]¶ Bases:
process_co_pc.ProcessCOPC
Creates columns found only in the EZ dataframe
-
ez_calculate
()[source]¶ Base method for calling all of the methods to calculate the columns for the 990 EZ form.
ARGUMENTS None
RETURNS None
-
ez_filename
(ez)[source]¶ Assembles the FILENAME column from the EIN and TAXPER columns, which is used to build the URL to the PDF of the 990 filing on the Foundation Center’s website. The full construction is:
http://990s.foundationcenter.org/990_pdf_archive/<FIRST THREE DIGITS OF EIN>/<FULL EIN>/<FILENAME>.pdf
for 990 Full or EZ filings, or
http://990s.foundationcenter.org/990pf_pdf_archive/<FIRST THREE DIGITS OF EIN>/<FULL EIN>/<FILENAME>.pdf
for 990 PF filings.
ARGUMENTS ez (DataFrame) : Core file dataframe
RETURNS Series
-
ez_grrec
(ez)[source]¶ Calculates the GRREC column. Note that the same column has a different calculation for EINs from the Full 990 and EINS from the 990 EZ.
ARGUMENTS ez (DataFrame) : Core file dataframe
RETURNS Series
-
ez_manual
()[source]¶ Applies any manual, one-time fixes to the EZ data. This is usually defined as a change to a single EIN from a single year, in a non-generalizable way, e.g. a mistyped EIN in the raw IRS data.
ARGUMENTS None
RETURNS None
-
ez_netgnls
(ez)[source]¶ Returns the SALEOTHN column exactly. Redundant holdover from the old SQL process.
ARGUMENTS ez (DataFrame) : Core file dataframe
RETURNS Series
-
ez_progrev
(ez)[source]¶ Calculates the PROGREV column.
ARGUMENTS ez (DataFrame) : Core file dataframe
RETURNS Series
-
ez_spevtg
(ez)[source]¶ Calculates the SPEVTG column.
ARGUMENTS ez (DataFrame) : Core file dataframe
RETURNS Series
-
ez_totrev
(ez)[source]¶ Calculates the PROGREV column. Note that TOTREV2 is taken from 990EZ part I, 9, while TOTREV is calculated from the expense and income subtotals. This is the only column like this, and usually any discrepencies between stated and calculated values are tested in the validation steps. However, it was always done this way before, so it continues.
ARGUMENTS ez (DataFrame) : Core file dataframe
RETURNS Series
-


Ensemble BMA for social science data.
| Version: | 0.52 |
| Depends: | stats, graphics, separationplot, plyr, methods, Hmisc, abind |
| Imports: | Rcpp (≥ 0.11.3) |
| LinkingTo: | Rcpp |
| Published: | 2016-02-10 |
| Author: | Jacob M. Montgomery, Florian M. Hollenbach, and Michael D. Ward |
| Maintainer: | Florian M. Hollenbach <fhollenbach at tamu.edu> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | yes |
| CRAN checks: | EBMAforecast results |
| Reference manual: | EBMAforecast.pdf |
| Package source: | EBMAforecast_0.52.tar.gz |
| Windows binaries: | r-devel: EBMAforecast_0.52.zip, r-release: EBMAforecast_0.52.zip, r-oldrel: EBMAforecast_0.52.zip |
| OS X binaries: | r-release: EBMAforecast_0.52.tgz, r-oldrel: EBMAforecast_0.52.tgz |
| Old sources: | EBMAforecast archive |
Please use the canonical form https://CRAN.R-project.org/package=EBMAforecast to link to this page.


1.4.0
(24 Jan 2021)
(Current version)
- Skip loading data for every visit
- Fix keyword not update if blank
- Amendment of skill and effect filter logic
1.3.1
(21 Jan 2021)
1.3.0
(20 Jan 2021)
- Track Page Index and Page Size
1.2.1
(18 Jan 2021)
- Fix search keywords leak to the next page
1.2.0
(15 Jan 2021)
- Crew image support
- Add keyword filtering to Effect page
- Minor revamp and update on pages and filter logic
- Performance tuning using paginator
- Misc bug fix and enhancement
1.1.0
(14 Jan 2021)
- Add Skill Tab on home page
- List skill level in reverse order in skill page
- Add link for uw6 tutorial
- Misc bug fix and enhancement
1.0.1
(2 Jan 2021)
- Misc bug fix and enhancement
1.0.0
(1 Jan 2021)


{% extends "_base.html" %}
{% load static %}
{% load humanize %}
{% block page_name %}homepage{% endblock %}
{% block css %}
{% endblock %}
{% block content %}
We aim to create new knowledge by participating and collaborating in research projects and developing new open source tools.
We aim to gather and curate (all) knowledge around island metabolism in one central platform in order to make it accessible to different target audiences.
We help policy makers and practitioners to tackle their challenges with Island Metabolism thinking.
We believe that tackling the island sustainability challenge can not be done alone. We want to foster a community of stakeholders that collaborates on developing solutions.
{{ each.last_update.get_description|truncatewords_html:20 }}
What we do
Create knowledge
Share knowledge
Apply knowledge
Foster a community
Latest forum posts
Latest news


2 Kings 25:5
And the army of the Chaldees pursued after the king, and overtook him in the plains of Jericho: and all his army were scattered from him.


Open main menu
Dashboard
Dashboard2
Team
Projects
Calendar
Test
Test2
Simple Web Component
Err
View notifications
Open user menu
Your Profile
Settings
Sign out
Dashboard
Dashboard2
Team
Projects
Calendar
Test
Simple Web Component


Binds validation conditions with the validators, without writing additional code like valueChanges subscription/global validator.
Compares password with optimum approach without creating custom directives.
Without putting more *ngIf to show the error messages easily.
Binds the Reactive Form with your model and with completely strongly typed Typescript to HTML.
Uploads multiple files in reactive forms to rest api by setting html attribute instead of custom events.


Two-factor authentication adds an extra layer of security to your account. In addition to your username and password, you’ll need to enter a code that Wlodzimierz sends to you via an app on your phone.
Use an application on your phone to get two-factor authentication codes when prompted.
Set up using an appWe recommend using an application such as Google Authenticator, Microsoft Authenticator or LastPass Authenticator. These applications support secure backup of your authentication codes in the cloud and can be restored if you lose access to your device.


--- layout: post title: 'Better alternative for PHP sleep: use a dotted progress bar with Javascript' image: javascript_dotted_bar.png summary: From PHP sleep to Javascript setInterval, choosing the best tool for the job to create a visual dotted progress bar in the browser. date: 2015-11-19 22:47:59.000000000 +01:00 type: post published: true status: publish categories: - Coding - Web development tags: - html - javascript - php - progressbar - sharemovies - sleep meta: _edit_last: '1' _thumbnail_id: '2750' featured_posts_widget_flag: 'false' _at_widget: '1' dsq_thread_id: '4334171987' _wp_old_slug: how-to-have-a-dotted-progress-bar-alternative-for-php-sleep-function author: login: bbWebdesign email<EMAIL_ADDRESS>display_name: Bob first_name: Bob last_name: Belderbos ---
Last week I developed a playing/upcoming movie HTML newsletter. I just added a feature to add the movies to your watch list on sharemovi.es. You have to be authenticated to FB. If not I am redirecting from the adder script to the main page:
This taught me a cool trick: you need to pause a bit so the user can read the message before being redirected. My first approach was PHP's sleep function, but that would show the initial echo only after the sleep, rendering it useless.
Then I read about ob_start() and ob_flush(). This did not work either, reason: browsers also contain their own buffers. I realized that apart from sleeping I wanted to show some sort of progress bar.
Here we enter JavaScript which is great for this kind of asynchronous stuff. I used this solution. As explained at w3schools: "the setInterval() method calls a function or evaluates an expression at specified intervals (in milliseconds). The setInterval() method will continue calling the function until clearInterval() is called".
<script> var div = document.getElementById('wait'); var counter = 0; var waitSecs = 8; var refreshId = setInterval(function () { ++counter; div.innerHTML = div.innerHTML + '●' if(counter == waitSecs){ clearInterval(refreshId); top.location.href='http://sharemovi.es' } }, 1000); </script>
1. to learn to code: practice, fail, get better by doing, it takes time and effort. This is a small feature, but it taught me a few valuable things about PHP and Javascript. Follow Alec Baldwin's ABC: always be closing and replace closing by coding :)
2. the featured image for this and last 2 posts were made with a new webtool I built: CSS Featured Image Creator. I will write a blog post about it soon, it is still work in progress ...


That's because we're a global Christian humanitarian organization. We partner with children, families, and their communities to reach their full potential by tackling the causes of poverty and injustice.
We are a global Christian humanitarian organization. We partner with children, families and their communities to help them reach their full potential by tackling the causes of poverty and injustice in Rwanda
We want to see all children in Rwanda have the opportunity to receive a quality education that will prepare them for the opportunities and challenges of the future. We are working towards
Beata, 45, is a mother of two. She was among the poorest, living in abject poverty in her community.


Broadcast reliable test result: waiting
Broadcast unreliable test result: waiting
Send reliable test result: waiting
Send unreliable test result: waiting


Attn: Please, I am Mr Yousf Ahmed from Cote-Ivory Abijan.I am 25years old and presently residing in Dakar-Senegal because of the political crisis in my Country. I got your contact in strict confidence through Senegal Chamber of Commerce. I would Honestly want to seek for an immediate assistance from you, I have $12.5 Million US dollars belonging to my late Father Mr MUSA AHMED, who was held bondage by the Rebels during the crisis and was letter killed. I ran to Senegal refugee Camp when I Discovered danger to my life and that of my only sister.My late father has deposited the above mentioned Amount as a consignment with a FINANCE COMPANY for safe keeping before his death and i have every Documents regards the transaction I have contacted the FINANCE COMPANY and confirmed the safety of the money/ inheritance. As it is, I have the intention of investing the money oversees and however needed a Foreigner who is capable of giving adequate assistance to me by the way of clearing the money from the FINANCE COMPANY and the reafter forwarding it to your Account for investments. I have map out 35% percentage of the fund for you.My Althernative EMAIL<EMAIL_ADDRESS>) If Necessary, Please do feel free to ask me questions on this as I wait for your reply soonest. Thanks. Mr Yousf Ahmed.


Eat together
There is something profoundly satisfying about sharing. Eating together, breaking bread together, is one of the oldest and most foundamentally unifying of human experiences.
When I was a small boy, my father told me never recommend a church or a woman to anyone. And I have it wise never to recommend anyone to restaurant either. Something always goes wrong with the cheese souffle.
There is something profoundly satisfying about sharing. Eating together, breaking bread together, is one of the oldest and most foundamentally unifying of human experiences.
Burger Pizza
Fries & Drinks
There is something profoundly satisfying
about sharing a meal.Eating together,
breaking bread
together,
is
one of the
oldest and most fundamentally unifying of
human experiences.
There is Something profoundly satisfying about sharing. Eating together, breaking bread togther, is one of the oldest and most foundamentally unifying of human experiences.


{% extends 'base.html' %} {% load static %} {% load crispy_forms_tags %} {% block title %} Login | Robotics Club MNNIT {% endblock %} {% block head %} {% endblock %} {% block body %}
Please enter your login and password!
(Only For MNNIT Students)
Don't have an account? Sign Up


Conserving rhinos: 'Sides of A Horn' film premieres in Uganda
by Daniel MumbereConservation enthusiasts in Uganda celebrated the premiere of a historic wildlife film, ‘Sides of a Horn’ which highlights the conflict between poachers and game rangers in communities.
The film launch held on Thursday at the Speke Resort Hotel in Kampala, is part of a two-week long campaign to engage communities in Uganda on the best ways of conserving wildlife.
Shaban Senyange, a conservation specialist in Uganda, teamed up with the film’s producers Toby Wosskow and Kevin Wolf, to bring the film to the East African country.
‘‘I hope to facilitate dialogue between the government and local communities regarding the utilisation of wildlife resources and the fight against illegal wildlife poaching,’‘ Senyange told journalists ahead of the film premiere.
‘‘No other filmmakers have given a voice to the people at the heart of the issue. The people in the communities, near these protected areas. That’s why I wanted to make a film,’‘ Wosskow explained.
The film, whose executive producer is billionaire philanthropist Richard Branson, has been premiered across the world, including in the United States and South Africa.
‘‘You cannot talk about poaching without talking about poverty, inequality, or corruption. The suffering of the animals is closely linked to the suffering of people, and Toby really brings that across,’‘ Branson said when asked about the decision to present the story as fiction.
ALSO READ: The barefoot ranger protecting animals he once poached
Branson, along with the other film’s partners, Africa Wildlife Foundation and WildAid, hope that Sides of A Horn, can enhance awareness and support for communities at the heart of the fight against poaching.
READ MORE: How to support rhino conservation efforts
Why Rhinos
Rhinos have existed for 50 million years, and yet at the current rate of poaching, the iconic animal may be extinct in the next 10 years.
This extinction is fueled by the demand for rhino horn, which sellers and buyers claim can treat impotence, cancer, fever and hangovers among other ailments.
In reality, rhino horn which is primarily composed of keratin, the same protein found in human hair and fingernails, does not have any unique medicinal value.
The International Rhino Foundation says there are 27,300 rhinos in the world, as of 2019, compared to 29,000 in 2017.
About the film
This 17-minute short film tells the story of two brothers-in-law, who find themselves on opposite sides, as one tries to kill a rhino, and the other tries to save it.
Wosskow, who was inspired by his visit to South Africa in 2016, says he sought to show that illegal wildlife hunting, is not only driving the extinction of rhinos, but is also driving communities apart.
‘‘This tension is escalating between rangers and poachers. It’s not just rhino and other animal lives at stake, it’s also human lives.’‘
The film was shot at the Black Rhino Game Reserve and the nearby township in South Africa.


FSTB User Guide
FSTB stands for FileSystem ToolBox. This library aims to make it easier to interact with the file system in Node.js.
Install
For install FSTB:
npm install fstb --save
Usage
Work with pathes
Most basics way to use FSTB power start from create path to filesystem object using the FSPath function. It can be chained with any key name wich act as path segment.
Example:
FSPath(__dirname).node_modules //work as path.join(__dirname, "node_modules")
FSPath(__dirname)["package.json"] //work as path.join(__dirname, "package.json")
FSPath(__dirname)["node_modules"]["fstb"]["package.json"]
Special directories shortcuts
In many cases, you may need to work with special operating system directories. To do this, you can use a number of shortcuts that will make your code shorter and clearer.
cwd
is shortcut toFSPath(process.cwd())
dirname
is shortcut toFSPath(__dirname)
home
is shortcut toFSPath(os.homedir())
tmp
is shortcut toFSPath(os.tmpdir())
Get path from environment variables
You often need to get different paths for the development, staging, and production environment.
In such cases, it is common practice to store these paths in environment variables.
To support this use case, FSTB provides the envPath
method.
const { envPath } = require('fstb');
const { join } = require('path');
//Throws if no APP_DATA_DIR environment variable was found
const data_path = envPath("APP_DATA_DIR")
////If no APP_DATA_DIR environment variable was found, it fallback to assets/images in work directory
const images_path = envPath("APP_IMAGES_PATH", join(process.cwd(), "assets/images"))
Make temporary directory
Sometimes you need to work with temporary files in your project.
Good practice for this case to do it in OS default temp dir.
mkdtemp
method creates temporary subdir with random name in OS temp directory.
const { mkdtemp } = require('fstb');
//creates temporary directory with 'fstb-' prefix
mkdtemp("fstb-").then(tempdir => {
console.log(tempdir.path)
//Output: C:\Users\user\AppData\Local\Temp\fstb-YBqC2b - for Windows
})
Work with filesystem objects
This is a tricky point to understand about the essence of FSPath. On the one hand, FSPath accepts a property or key with any name and returns a new FSPath, the closure of which contains the specified path. On the other hand, since it is a function, its call returns an object of type FSDirent. Thanks to this, we can construct a path by adding segment after segment, and when the path formation is complete, we just need to call the resulting function to continue working with all features of the FSTB library.
Example:
const root = FSPath(__dirname); //Now root is function which closure __dirname path
//We can chain root path by any property or key
const node_modules_path = root.node_modules
const package_json_path = root["package.json"]
//node_modules_path and package_json_path is function and we can call it.
const node_modules_dir = node_modules_path().asDir() //now node_modules_dir is FSDir object for node_modules directory
const package_json_file = package_json_path().asFile() //and package_json_file is FSFile object for package.json file
//Before this point we didn't interact with filesystem. And now we do.
//iterate node_module subdirs and print names to console
node_modules_dir.subdirs().forEach(async subdir => console.log(subdir.name))
//print package.json content to console
package_json_file.read.txt().then(content => console.log(content))
Work with directories
All specific methods for interacts with directories contains in FSDir
class.
Here is table of it:
| Method name | Description |
|---|---|
dirents() |
Iterates thru all directory contents |
files() |
Iterates thru files in directory |
subdirs(recursive: boolean = false) |
Iterates thru subdirectories in directory. Can iterates all subdirectories tree by set to true optional parameter. |
rmdir() |
Removes directory if its empty |
mkdir(recursive: boolean = false) |
Creates directory. If recursive is true it can create all parent dirs wich not exists. |
isExists() |
Check if directory exist |
totalSize() |
Calculates the size of the entire directory content in bytes |
rimraf() |
Removes directory with all content |
copyTo(targetDir: FSDir) |
Copy directory with all content into target directory |
Also FSDir
has some useful fields:
| Field name | Description |
|---|---|
path |
The full path for this directory |
name |
Name of this directory |
fspath |
FSPath function to construct child pathes from this directory |
Example: mkdtemp, copyTo, totalSize, rimraf usage
const { cwd, mkdtemp } = require('fstb');
(async function() {
// Create temp dir
const tempdir = await mkdtemp('FSTB_Example_');
// Get node_modules directory
const node_modules = cwd.node_modules().asDir();
console.log('Copy node_modules to temporary directory');
const temp_node_modules = await node_modules.copyTo(tempdir);
console.log('Calc node_modules size');
console.log('node_modules size = ', await node_modules.totalSize());
console.log('Calc temporary node_modules size');
console.log('temporary node_modules size = ', await temp_node_modules.totalSize());
console.log('Remove temporary node_modules directory');
await tempdir.rimraf();
})();
Example: files, subdirs
const { cwd } = require('./dist/index');
(async function() {
const node_modules = cwd.node_modules().asDir();
const calcJSSize = async dir =>
await dir
.files()
.filter(async file => file.name.toLowerCase().endsWith('.js'))
.reduce(async (acc, file) => acc + (await file.stat()).size, 0);
console.log('.js files size = ', await node_modules.subdirs(true).reduce(async (acc, dir) => acc + (await calcJSSize(dir)), 0));
})();
More examples
Iterate subdirs:
import { FSPath, cwd } from 'fstb';
cwd.node_modules().asDir().subdirs(async dir=>console.log(dir.name))
Read and write json
const objectToWrite = {
test: 'test',
test1: 123,
};
//constructs path to file and get it as FSFile object
const file1 = cwd.test.testfiles.dir1['file1.json']().asFile();
//serialize object as json and save in to file1.json
await file1.write.json(objectToWrite);
//read json object from file1.json
const readedObject = await file1.read.json();
Get file stats
const stat = await cwd.test.testfiles['2.json']().asFile().stat()
Print all package names and versions from node_modules
It's complex example shows complex use case for FSTB.
const { cwd } = require('fstb');
cwd
.node_modules()
.asDir()
.subdirs(true) //true for recursive scan all subfolders
.map(async dir => dir.fspath['package.json']().asFile())
.filter(async package_json => await package_json.isReadable())
.map(async package_json => await package_json.read.json())
.forEach(async content => console.log(`${content.name}@${content.version}`));
Results:
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>...
yargs-parser@18.1.3


|
LaraCraft
|
#include <glimac/Chunk.hpp>
#include <glimac/ColorMap.hpp>
#include <glimac/ConstrainedCamera.hpp>
#include <glimac/Cube.hpp>
#include <glimac/AntiCube.hpp>
#include <glimac/GLFWWindowManager.hpp>
#include <glimac/SimpleTexturedSkyboxProgram.hpp>
#include <GL/glew.h>
#include <glimac/DirectionalLight.hpp>
#include <glimac/FilePath.hpp>
#include <glimac/GlobalProgram.hpp>
#include <glimac/HeightMap.hpp>
#include <glimac/Image.hpp>
#include <glimac/VegetationMap.hpp>
#include <glimac/common.hpp>
#include <cstddef>
#include <glimac/Pnj.hpp>
#include <glimac/Sphere.hpp>
#include <glimac/Tree.hpp>
#include <iostream>
Go to the source code of this file.
Functions | |
| void | drawVAO (const GlobalProgram &program, long vertexCount, const mat4 &projMatrix, const mat4 &viewMatrix, const mat4 &modelMatrix, const DirectionalLight &light) |
| void | drawSkybox (const SimpleTexturedSkyboxProgram &program, long vertexCount, const mat4 &projMatrix, const mat4 &viewMatrix, const mat4 &modelMatrix) |
| void | generateAllChunks (const HeightMap &heightMap, const OffsetTextureMap &offsetTextureMap, std::vector< std::vector< Chunk >> &chunkVector) |
| void | generateTreeList (const HeightMap &heightMap, const VegetationMap &vegetationMap, std::vector< std::vector< Tree >> &treeList) |
| void | generateSurroundingChunkVertexFromAllChunks (std::vector< std::vector< Chunk >> chunkList, long &globalCount, std::vector< ShapeVertex > &concatDataList, int offsetX1, int offsetX2, int offsetZ1, int offsetZ2) |
| void | refreshChunkVBO (const std::vector< std::vector< Chunk >> &chunkList, std::vector< ShapeVertex > &concatDataList, long &globalNumberOfVertex, GLuint &vbo, int currentChunkX, int currentChunkZ, int distanceChunkLoaded) |
| void | whereAmI (const ConstrainedCamera &camera, int &chunkNumberX, int &chunkNumberZ) |
| void | bindVBOToVAO (GLuint vbo, GLuint vao, const GLuint VERTEX_ATTR_POSITION, const GLuint VERTEX_ATTR_NORMAL, const GLuint VERTEX_ATTR_TEXTURE) |
| void | configureVAO (GLuint vao, GLuint &VERTEX_ATTR_POSITION, GLuint &VERTEX_ATTR_NORMAL, GLuint &VERTEX_ATTR_TEXTURE) |
| void | loadPnjInVBO (const Sphere &sphere, GLuint vboPnj) |
| void | loadPnjTextureLocation (std::unique_ptr< Image > &pnjImagePtr, GLuint pnjTextureLocation) |
| void | loadAtlasTextureLocation (std::unique_ptr< Image > &atlasImagePtr, GLuint atlasTextureLocation) |
| void | loadSkyboxTextureLocation (std::unique_ptr< Image > &skyboxImagePtr, GLuint skyboxTextureLocation) |
| int | main (int argc, char **argv) |
| void bindVBOToVAO | ( | GLuint | vbo, |
| GLuint | vao, | ||
| const GLuint | VERTEX_ATTR_POSITION, | ||
| const GLuint | VERTEX_ATTR_NORMAL, | ||
| const GLuint | VERTEX_ATTR_TEXTURE | ||
| ) |
Binds a vao on a vbo with the common way of doing it in OPENGL with the three attributes that are commonly used in this application
| vbo | VBO to bind |
| vao | VAO to bind to the VBO |
| VERTEX_ATTR_POSITION | Vertex attribute of position |
| VERTEX_ATTR_NORMAL | Vertex attribute for the normals |
| VERTEX_ATTR_TEXTURE | Vertex attribute for the texture coordinates |
| void configureVAO | ( | GLuint | vao, |
| GLuint & | VERTEX_ATTR_POSITION, | ||
| GLuint & | VERTEX_ATTR_NORMAL, | ||
| GLuint & | VERTEX_ATTR_TEXTURE | ||
| ) |
Configures the vao to accept the common attributes that are used by all our basic structures and datas
| vao | VAO to configure |
| VERTEX_ATTR_POSITION | Vertex attribute of position |
| VERTEX_ATTR_NORMAL | Vertex attribute for the normals |
| VERTEX_ATTR_TEXTURE | Vertex attribute for the texture coordinates |
| void drawSkybox | ( | const SimpleTexturedSkyboxProgram & | program, |
| long | vertexCount, | ||
| const mat4 & | projMatrix, | ||
| const mat4 & | viewMatrix, | ||
| const mat4 & | modelMatrix | ||
| ) |
| void drawVAO | ( | const GlobalProgram & | program, |
| long | vertexCount, | ||
| const mat4 & | projMatrix, | ||
| const mat4 & | viewMatrix, | ||
| const mat4 & | modelMatrix, | ||
| const DirectionalLight & | light | ||
| ) |
Draws a VAO already bound with a VBO
| program | Program to use for shaders to use with the uniform variables |
| vertexCount | Number of vertex to draw (in the bounded VBO) |
| projMatrix | Matrix of projection to use |
| viewMatrix | Matrix of view to use |
| modelMatrix | Matrix of model to use |
| light | Directional light for the vao. |
| void generateAllChunks | ( | const HeightMap & | heightMap, |
| const OffsetTextureMap & | offsetTextureMap, | ||
| std::vector< std::vector< Chunk >> & | chunkVector | ||
| ) |
Generating all the computing for the current map loaded
| heightMap | Height map to use to generate the map |
| offsetTextureMap | Offset texture map to use to determine the different texture to use and to fetch the atlas texture |
| chunkVector | Resulting chunk vector that will contains all the chunks of the map |
| void generateSurroundingChunkVertexFromAllChunks | ( | std::vector< std::vector< Chunk >> | chunkList, |
| long & | globalCount, | ||
| std::vector< ShapeVertex > & | concatDataList, | ||
| int | offsetX1, | ||
| int | offsetX2, | ||
| int | offsetZ1, | ||
| int | offsetZ2 | ||
| ) |
Fetch all the surrounding chunks from the pregenerated chunk list based on a given position (the camera position)
| chunkList | Pregenerated list of chunks |
| globalCount | Number of vertex on the whole area (from all the chunks surrounding the player) |
| concatDataList | Concatenation of all the vertex of all the chunks to have a 1D list of vertex |
| offsetX1 | Origin on the x axis for the bundle of chunk considered |
| offsetX2 | End on the x axis for the bundle of chunk considered |
| offsetZ1 | Origin on the z axis for the bundle of chunk considered |
| offsetZ2 | End on the z axis for the bundle of chunk considered |
| void generateTreeList | ( | const HeightMap & | heightMap, |
| const VegetationMap & | vegetationMap, | ||
| std::vector< std::vector< Tree >> & | treeList | ||
| ) |
| int main | ( | int | argc, |
| char ** | argv | ||
| ) |
| void refreshChunkVBO | ( | const std::vector< std::vector< Chunk >> & | chunkList, |
| std::vector< ShapeVertex > & | concatDataList, | ||
| long & | globalNumberOfVertex, | ||
| GLuint & | vbo, | ||
| int | currentChunkX, | ||
| int | currentChunkZ, | ||
| int | distanceChunkLoaded | ||
| ) |
| void whereAmI | ( | const ConstrainedCamera & | camera, |
| int & | chunkNumberX, | ||
| int & | chunkNumberZ | ||
| ) |


It grounds my thoughts, keeps my feet on the ground, especially when the times get tough. Having a purpose gets me through the difficult times, focusing on the things that I enjoy, which eventually gives me pleasure of pursuing and achieving my dreams.
Meditation is like the F5 button for body and soul. It develops one's resilience, which is not the hardship one encounters, but how she/he deals with it.
Don't dwell on what tripped you up, but envisage how to get back up again.


Visualization Catlog FAQ
This addresses most of the questions and issues that arise with these visualizations. If your question or concern is not addresses here, please feel free to contact us.
The License
The Apache License has an associated FAQ, with some of the most important points in the What does it all MEAN? section. Including- It allows you to:
- freely download and use this software, in whole or in part, for personal, company internal, or commercial purposes;
- use this software in packages or distributions that you create.
- It does not allow you to:
- redistribute any piece of the software software without proper attribution;
- It requires you to:
- include a copy of the license in any redistribution you may make that includes the software;
- It does not require you to:
- include the source of the software itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it;
- submit changes that you make to the software back to Vizit Solutions, though it is encouraged.
Downloads
The entire catalog is available through GitHub. Additionally, the toolkit used to build the catalog, and its documentation, is also on GitHub.
Customizations
The efield toolkit used to create the visualizations in the catalog is itself a well documented open source project and can be easily used to generate additional visualizations. The toolkit can itself be extended to model additional charge configurations or Gaussian surfaces.
Additional, potentially complex, visualizations can be commissioned across a broad range of topics. These need not be open source projects, though it will be financially advantageous to commission an open source project or extension to an existing project. They need not even be limited to web based projects. This same OpenGL based methodology is applicable to Android and iOS.
Scaling and Resizing
By default the visualization is displayed in a 200px x 200px canvas. A different size is specified by adding a canvas height and canvas width to the URL. The standard sized entry

The electric field from the positively charged plane diverges from the positive charge.

is easily resized. Further because each visualization is generated dynamically, there are no side effects such as pixelization or distortion from the resizing. This magnification is useful for in class demonstrations or for those who find a larger image easier to view.

The electric field from the positively charged plane diverges from the positive charge.

Known Issues
The site adheres quite closely to the HTML5, ECMAScript (aka JavaScript),
and WebGL standards. However, despite our best efforts not all examples render
as expected on all browsers. For example
There is a known issue with Chrome on some mobile graphics cards where the last
elements drawn with WebGL included in an iframe are lost. Work around this
by including the JavaScript that generates the visualization directly in your
content. The use of iframes in the catalog is for convenience only.
Superior performance can be achieved by including the JavaScript
that generates the visualization directly in your content. The use
of iframes in the catalog is for convenience only.
Firefox mobile has placed
an arbitrary limit of two WebGL contexts that can be active on a page. The pages render
as expected with either a desktop version of Firefox or any version of Chrome. We are
considering rewriting the documentation to limit the number of WebGL examples on any
one page.
The catalog entries do not fully render.
The embedded iframe loads slowly.
On Firefox mobile only two visualizations render on a page


Alert!
Close
Welcome!
This is standard layout made by 100kimch
Wall
Todo
People
OPTIONS
Hello World!
+ MemoPeople
남
여
Form Test
TEST SIDE
TEST SIDE
TEST SIDE
+ MemoTodo
2
이것은 테스트창입니다.
3
4
Todo
A
Andrew W.K.
Apparat
Arcade Fire
At The Drive-In
Aziz Ansari
C
Chromeo
Common
Converge
Crystal Castles
Cursive
E
Explosions In The Sky
T
Ted Leo , The Pharmacists
T-Pain
Thrice
TV On The Radio
Two Gallants
New
응
약속
안녕
테스트
New
People
A
Andrew W.K.
Apparat
Arcade Fire
At The Drive-In
Aziz Ansari
C
Chromeo
Common
Converge
Crystal Castles
Cursive
E
Explosions In The Sky
T
Ted Leo , The Pharmacists
T-Pain
Thrice
TV On The Radio
Two Gallants
1
2
3
4
5
OPTIONS
To-Do
Asset
Store
People


If you've used a standard mouse bungee before, you'll be all too familiar with that extra pulling sensation you feel when you're approaching the edges of your mousepad. That extra tension has caused you to whiff shots, misclick, or rip your bungee out of place. My frustration with existing bungees led me to design a solution to end all of the annoyances that come with using a wired mouse.
The team developed a wireless mechanical keyboard that harnesses excess energy produced during a keystroke to augment the battery life. Our goal was to build a self-sufficient device capable of truly cutting the cord.
The team designed a physical product that prompted seniors to reflect back on happy and memorable moments of their life. The device would record their voice and allow users to make a modern day scrapbook that they could pass onto loved ones.
The team designed an ecosysem of connected devices that would be used to increase security for public parks and playgrounds.
In collaboration with Philips Respironics, I worked on a team as a product developer for Smart Hammer Innovation. Over an 8 week accelerator program, the cross-functioning team explored innovative technologies that could be used for teen sleep applications. We conducted research, created personas, designed a co-create session, and created low-fidelity prototypes.


A Night In is a project that me and three other people worked on (Ali Rahimlou, Seth Dousman, and Nicholas Upshaw). This application allows people to enter what ingredients they have in their fridge and choose what type of movie genres they are into and it'd display a randomly-generated movie and three different recipes they could use with the ingredients they have provided.
This is an application that I've created to search the Giphy API to display 10 random gifs of whatever you searched.
This is a simple game where the application has a random character from the alphabet stored in their memory and the user has to type to guess what letter the application has in memory. The user only has 10 guesses until a loss is recorded.
Another simple game that stores a random amount of points to each "crystal" and the user has to hit the "target score" by clicking on the crystals.
My name is Lance Mok and I am currently a Georgia Tech Bootcamp student looking to finish up the course with a fully-decked out portfolio in order to obtain a job in web development. I previously attended Georgia State University and have obtained my Associate's Degree. However, I ultimately ended up discontinuing my college career in order to pursue my true passion in coding.


QTouch3DInputHandler Class
Basic touch display based input handler. More...
| Header: | #include <QTouch3DInputHandler> |
| Since: | QtDataVisualization 1.0 |
| Instantiated By: | TouchInputHandler3D |
| Inherits: | Q3DInputHandler |
Public Functions
| QTouch3DInputHandler(QObject *parent = Q_NULLPTR) | |
| virtual | ~QTouch3DInputHandler() |
Reimplemented Public Functions
| virtual void | touchEvent(QTouchEvent *event) |
- 12 public functions inherited from Q3DInputHandler
- 12 public functions inherited from QAbstract3DInputHandler
- 32 public functions inherited from QObject
Additional Inherited Members
- 4 properties inherited from Q3DInputHandler
- 3 properties inherited from QAbstract3DInputHandler
- 1 property inherited from QObject
- 1 public slot inherited from QObject
- 4 signals inherited from Q3DInputHandler
- 3 signals inherited from QAbstract3DInputHandler
- 2 signals inherited from QObject
- 1 public variable inherited from QObject
- 10 static public members inherited from QObject
- 4 protected functions inherited from QAbstract3DInputHandler
- 9 protected functions inherited from QObject
- 2 protected variables inherited from QObject
Detailed Description
Basic touch display based input handler.
QTouch3DInputHandler is the basic input handler for touch screen devices.
Default touch input handler has the following functionalty:
| Gesture | Action |
|---|---|
| Touch-And-Move | Rotate graph within limits set for Q3DCamera |
| Tap | Select the item tapped or remove selection if none. May open the secondary view depending on the selection mode. |
| Tap-And-Hold | Same as tap. |
| Pinch | Zoom in/out within the allowable zoom range set for Q3DCamera. |
| Tap on the primary view when the secondary view is visible | Closes the secondary view. Note: Secondary view is available only for Q3DBars and Q3DSurface graphs. |
Rotation, zoom, and selection can each be individually disabled using corresponding Q3DInputHandler properties.
Member Function Documentation
QTouch3DInputHandler::QTouch3DInputHandler(QObject *parent = Q_NULLPTR)
Constructs the basic touch display input handler. An optional parent parameter can be given and is then passed to QObject constructor.
[virtual]
QTouch3DInputHandler::~QTouch3DInputHandler()
Destroys the input handler.
[virtual]
void QTouch3DInputHandler::touchEvent(QTouchEvent *event)
Reimplemented from QAbstract3DInputHandler::touchEvent().
Override this to change handling of touch events. Touch event is given in the event.


- What is this? This is a map showing US presidential election results by state.
- What's interesting about it? It's kinda neat by itself, but the best part is if you change the mode to
Relative to popular vote. Then you can see which states have become more Democratic/Republican relative to the
national popular vote over time!
- What are some interesting states to click on? Here are some good ones:
- Missouri is a state that used to be a true battleground state - as recently as 1992 it was
more Democratic than average. But ever since then it's made an accelerating trend to be more and more Republican.
- Georgia has been pretty consistently more Republican than average...except in 1976 and 1980 when
Jimmy Carter was running. In fact, if you look at it versus the popular vote, the swing from 1972 (R+27) to 1976 (D+32) is 59%, which is the largest I've seen!
- New Hampshire used to be pretty Republican, but ever since 1996 it's been very close to even.
- How does this account for third party candidates? The margin shown is a percentage of the total vote from that state,
including third party candidates. (notice Utah's much lower Republican margin in 2016)
- Why does this only go back to 1972? Honestly, because a third party (the American Independent Party) won
a few states in 1968 and I wasn't sure how best to handle that.
- When is the cartogram data from? I'm using
fivethirtyeight.svg
from this Electoral cartograms page. The data shows the electoral votes for each state from after the 2010 Census - perhaps in the future I could make the map reflect the electoral votes from Censuses in the past.
- How did you make this? Thanks for asking! It's written in React and TypeScript, and the map is available on GitHub.
- Where did the data come from? Mostly from Dave Leip's Atlas of
US Presidential Elections.
See my writeups of the project:
Colors by ColorBrewer 2.0


Bindings to 'libsodium': a modern, easy-to-use software library for encryption, decryption, signatures, password hashing and more. Sodium uses curve25519, a state-of-the-art Diffie-Hellman function by Daniel Bernstein, which has become very popular after it was discovered that the NSA had backdoored Dual EC DRBG.
| Version: | 1.1 |
| Suggests: | knitr, rmarkdown |
| Published: | 2017-03-30 |
| Author: | Jeroen Ooms |
| Maintainer: | Jeroen Ooms <jeroen at berkeley.edu> |
| BugReports: | https://github.com/jeroen/sodium/issues |
| License: | MIT + file LICENSE |
| URL: | https://github.com/jeroen/sodium#readme (devel) https://download.libsodium.org/doc/ (upstream) |
| NeedsCompilation: | yes |
| SystemRequirements: | libsodium (>= 1.0.3) |
| Materials: | NEWS |
| CRAN checks: | sodium results |
| Reference manual: | sodium.pdf |
| Vignettes: |
How does cryptography work Introduction to Sodium for R |
| Package source: | sodium_1.1.tar.gz |
| Windows binaries: | r-devel: sodium_1.1.zip, r-release: sodium_1.1.zip, r-oldrel: sodium_1.1.zip |
| OS X binaries: | r-release: sodium_1.1.tgz, r-oldrel: sodium_1.1.tgz |
| Old sources: | sodium archive |
| Reverse imports: | homomorpheR, keyring, safer |
| Reverse suggests: | bigrquery, remoter |
Please use the canonical form https://CRAN.R-project.org/package=sodium to link to this page.


The sole purpose of whitherweather.org is to collect anonymous text-based weather reports.
There is no clear intention around where or how any reports submitted to the site may (or may not) be published or otherwise used in the future.
If you choose to submit a weather report to whitherweather.org, you agree to report being licensed under the Creative Commons Attribution 4.0 International license.
Work submitted anonymously will be attributed as such in any future use of the work. Because whitherweather.org doesn't collect any identifying information by default, you must include any desired attribution within the text of the weather report.
See the full license terms.
This site does not track users in any way.
This site does not collect any personal information beyond what you submit as part of any weather report you make. Information in a weather report includes:
Any information you submit will be stored and may be used in accordance with the license described above.
This site uses a variety of OSS. A full list of packages used is available in the GitHub repository for this site.
In turn, the code that runs this site is also OSS, licensed under the MIT license. See the full list.
Lightning by Valeriy from the Noun Project.
Umbrella image from the Mechanical Curator's Cuttings Flickr account.


42Crunch Visual Studio OpenAPI Editor
This Visual Studio Code (VS Code) extension adds rich support for the OpenAPI Specification (OAS) (formerly known as Swagger Specification) in JSON or YAML format. The features include, for example, SwaggerUI and ReDoc preview,IntelliSense, linting, schema enforcement, code navigation, definition links, snippets, static security analysis, and more!
API Umbrella
GitHub brings together the world???s largest community of developers to discover, share, and build better software. From open source projects to private team repositories, we???re your all-in-one platform for collaborative development.
APIMan
The apiman project brings an open source development methodology to API Management, coupling a rich API design & configuration layer with a blazingly fast runtime. Flexible, policy-based runtime governance for your APIs. Offer the same API through multiple plans, allowing different levels of service to different API consumers.
Angular Schema Form
Generate forms from JSON schemas using AngularJS! Schema Form is a set of AngularJS directives (and a couple of services). It can do two things to make life easier. Create a form directly from a JSON schema. Validate form fields against that same JSON schema. Schema Form uses convention over configuration, so it comes packaged with some sensible defaults. But you can always customize it by...
Another JSON Schema Validator (AJV)
The fastest JSON Schema validator for Node.js and browser. Supports draft-06/07/2019-09 (draft-04 is supported in version 6).
Apache JMeter
The Apache JMeter application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.
Apicurio
Apicurio is a suite of API design, modeling, and discovery tools. Providing a suite of open source tooling that can help developers during the design, development, and management of APIs throiughout the API lifecycle.
Citrus
Automated integration tests for message protocols and data formats. HTTP REST, JMS, TCP/IP, SOAP, FTP, SSH, XML, JSON and more.
Committee
A collection of middleware to help build services with JSON Schema, OpenAPI 2, OpenAPI 3.
Eclipse OpenAPI Editor
This is the description of the tool.
Gatling
Gatling is designed for continuous load testing and integrates with your development pipeline. Gatling includes a web recorder and colorful reports.
Google API Improvement Proposals (AIP)
AIP stands for API Improvement Proposal, which is a design document providing high-level, concise documentation for API development. The goal is for these documents to serve as the source of truth for API-related documentation at Google and the way API teams discuss and come to consensus on API guidance. The program is named and styled after Python's enhancement proposals (PEPs) which have...
Google Registry API
The Registry API allows teams to upload and share machine-readable descriptions of APIs that are in use and in development. These descriptions include API specifications in standard formats like OpenAPI, the Google API Discovery Service Format, and the Protocol Buffers Language. These API specifications can be used by tools like linters, browsers, documentation generators, test runners, pr...
Graphite
Graphite is an enterprise-ready monitoring tool that runs equally well on cheap hardware or Cloud infrastructure. Teams use Graphite to track the performance of their websites, applications, business services, and networked servers. It marked the start of a new generation of monitoring tools, making it easier than ever to store, retrieve, share, and visualize time-series data.
JSON Editor
JSON Editor takes a JSON Schema and uses it to generate an HTML form. It has full support for JSON Schema version 3 and 4 and can integrate with several popular CSS frameworks (bootstrap, spectre, tailwind).
JSON Form
The JSON Form library is a JavaScript client-side library that takes a structured data model defined using JSON Schema as input and returns a Bootstrap 3-friendly HTML form that matches the schema. The generated HTML form includes client-side validation logic that provides direct inline feedback to the user upon form submission (provided a JSON Schema validator is available). If values are...
JSON Hyper-Schema
JSON Hyper-Schema is a JSON Schema vocabulary that allows you to annotate, JSON documents with RFC 8288-style web links. It is typically used with the vocabularies from the JSON Schema Core and JSON Schema Validation specifications.
JSON Schema Test Suite
This repository contains a set of JSON objects that implementors of JSON Schema validation libraries can use to test their validators. It is meant to be language agnostic and should require only a JSON parser. The conversion of the JSON objects into tests within your test framework of choice is still the job of the validator implementor.
JSON Schema Validator
An online, interactive JSON Schema validator. Supports JSON Schema Draft 3, Draft 4, Draft 6, Draft 7 and Draft 2019-09.
Jekyll/OpenAPI
Jekyll/OpenAPI is an OpenAPI 3 documentation website generator built with Jekyll for use on GitHub Pages.
Karate
Karate is the only open-source tool to combine API test-automation, mocks, performance-testing and even UI automation into a single, unified framework. The BDD syntax popularized by Cucumber is language-neutral, and easy for even non-programmers. Powerful JSON & XML assertions are built-in, and you can run tests in parallel for speed.
Kin OpenAPI
A Go project for handling OpenAPI files. We target the latest OpenAPI version (currently 3), but the project contains support for older OpenAPI versions too.
Mermade Swagger 2.0 to OpenAPI 3.0.0 converter
Convert Swagger 2.0 definitions to OpenAPI 3.0 and resolve/validate/lint.
Microcks
Microcks is a platform for turning your API and microservices assets - OpenAPI specs, AsyncAPI specs, Postman collections, SoapUI projects - into live mocks in seconds. It also reuses these assets for running compliance and non-regression tests against your API implementation. We provide integrations with Jenkins, Tekton and many others through a simple CLI.
Monarch API Manager
100% open source API Management solution for quickly deploying, managing, and analyzing your APIs.
Newman
Newman is a command-line collection runner for Postman. It allows you to effortlessly run and test a Postman collection directly from the command-line. It is built with extensibility in mind so that you can easily integrate it with your continuous integration servers and build systems.
Newman Reporter HTML Extra
A HTML reporter for Postman's Command Line Runner, Newman. Includes Non Aggregated Runs broken down by Iterations, Skipped Tests, Console Logs and the handlebars helpers module for better custom templates.
OWASP Zed Attack Proxy (ZAP)
The world's most widely used web app scanner. Free an dopen source. Actively maintained by a team of volunteers.
Open Integration Hub
This is the description of the tool.
OpenAPI 3.0 to Postman Collection Converter
Plugin for converting OpenAPI 3.0 specs to the Postman Collection (v2) format.
OpenAPI CLI
With openapi-cli, you can quickly validate a multi-file OpenAPI definition. An unbundled definition is far easier to edit and to reduce duplicated type definitions. When the definition is ready, openapi-cli makes it easy to bundle it into one file for distribution.
OpenAPI Core
Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI Specification v3.0.0.
OpenAPI Examples Validator
This is the description of the tool.
OpenAPI GUI
OpenAPI-GUI is a GUI for creating and editing OpenAPI version 3.0.x JSON/YAML definitions. In its current form it is most useful as a tool for starting off and editing simple OpenAPI definitions. Imported OpenAPI 2.0 definitions are automatically converted to v3.0.
OpenAPI Generator
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (both 2.0 and 3.0 are supported).
OpenAPI-Enforcer
The OpenAPI Enforcer is a library that provides tools that make it easy to work with the OpenAPI specification.
PostGrest
PostgREST is a standalone web server that turns your PostgreSQL database directly into a RESTful API. The structural constraints and permissions in the database determine the API endpoints and operations.
Prometheus
Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts when specified conditions are observed.
REST Assured
Testing and validating REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into the Java domain.
RESTX
RESTX is a full lightweight disrupting stack, which includes Swagger-like ui & considers REST specs tests as docs. It shares similarities with modern frameworks like Play! like hot compile and a very productive experience, but focused on REST and pure Java. It's licensed under the very commercial friendly Apache License 2, and is actively maintained by a community of developers.
ReDoc
OpenAPI/Swagger-generated API reference documentation. Extremely easy deployment redoc-cli with ability to bundle your docs into zero-dependency HTML file. Server Side Rendering ready. The widest OpenAPI v2.0 features support (yes, it supports even discriminator). Neat interactive documentation for nested objects. Code samples support (via vendor extension). Responsive three-panel design w...
React JSON Schema Form
A simple React component capable of using JSON Schema to declaratively build and customize web forms.
SpringDoc OpenAPI
The springdoc-openapi Java library helps automating the generation of API documentation using Spring Boot projects. springdoc-openapi works by examining an application at runtime to infer API semantics based on Spring configurations, class structure and various annotations.
StrongLoop
StrongLoop began in 2013 offering an open-source enterprise version of Node.js. Acquired by IBM in 2015, the StrongLoop team continues to build LoopBack, the open-source Node.js API Framework. IBM continues to contribute and support the StrongLoop comm.
Taurus
This is the description of the tool.
Understanding JSON Schema
JSON Schema is a powerful tool for validating the structure of JSON data. However, learning to use it by reading its specification is like learning to drive a car by looking at its blueprints.  This book, therefore, aims to be the friendly driving instructor for JSON Schema. It’s for t...
Web Concepts
The Web's Uniform Interface is based on a large and growing set of specifications. These specifications establish the shared concepts that providers and consumers of Web services can rely on. Web Concepts is providing an overview of these concepts and of the specifications defining them. One example for how this works is the Hypertext Markup Language (HTML), which defines the media type...
avantation
avantation is tool the for generate OpenAPI3.0 from HTTP Archive format(HAR).
express-openapi-validator
An OpenApi validator for ExpressJS that automatically validates API requests and responses using an OpenAPI 3 specification.
gnostic
gnostic reads OpenAPI descriptions into these generated data structures, reports errors, resolves internal dependencies, and writes the results in a binary form that can be used in any language that is supported by the Protocol Buffer tools. A plugin interface simplifies integration with API tools written in a variety of different languages, and when necessary, Protocol Buffer OpenAPI desc...
har2openapi
This program automatically creates API documentation via a OpenApi Spec (OAS) file by using network requests captured in one or more HAR files.
hook.io
Twitter account for hook.io open-source microservice hosting platform. Tweet here for Questions or Support. File support issues @ https://t.co/jHGKd4iuop
openapi2proto
A tool for generating Protobuf v3 schemas and gRPC service definitions from OpenAPI specifications. This tool will accept an OpenAPI/Swagger definition (yaml or JSON) and generate a Protobuf v3 schema and gRPC service definition from it.


Tezos API
(Transport<any>)
import Tezos from "@ledgerhq/hw-app-xtz";
const tez = new Tezos(transport)
get Tezos public key and address (key hash) for a given BIP 32 path.
(string)
a path in BIP 32 format, must begin with 44'/1729'
(boolean)
(number)
(number)
Promise<{publicKey: string, address: string}>
:
an object with a publicKey
tez.getAddress("44'/1729'/0'/0'").then(o => o.address)


fun toString(): String
Return a human readable string representation of the recurrence. This is only for debug purposes and will not even work on release builds. RecurrenceFormatter should be used instead.


This document defines policy markup for Device APIs. It is similar to the XACML 2.0 standard, but different.
The Devices API policy framework [[!DAP-POLICY-FRAMEWORK]] outlines the role and use of policy in the context of Device APIs. This document defines a policy markup similar to XACML 2.0 [[!XACML20]], but different.
Each value in an expression is conceptually a bag of potentially multiple simple values. The bag can be empty, containing no simple values. In practice almost every value encountered in the model is either an empty bag or a bag containing a single simple value. When a bag contains one or more simple values, all the simple values have the same type, one of:
Each modifier function defines its result type, and how the function’s effect depends on the type of the input.
Each matching function defines how it depends on the type of its input.
Where a modifier function or matching function does not specify how it treats an input of a particular type, it implicitly converts the value to a bag of strings before performing its operation.
When evaluating an access control query at a given application Execution Phase, an expression may have undetermined value if one or more of the attributes on which it depends has undetermined value at that execution phase.
For each modifier function and matching function, its result for a given set of inputs is determined if and only if all of its inputs are determined.
The syntax used for encoding a certificate fingerprint in DAP Security Policy documents is the SDP syntax defined in [[!RFC4572]] without the "fingerprint" scheme, as follows:
dapfingerprint = hash-func SP fingerprint
hash-func = "sha-1" / "sha-224" / "sha-256" /
"sha-384" / "sha-512" /
"md5" / "md2" / token
; Additional hash functions can only come
; from updates to [[!RFC3279]]
fingerprint = 2UHEX *(":" 2UHEX)
; Each byte in upper-case hex, separated
; by colons.
UHEX = DIGIT / %x41-46 ; A-F uppercase
An attribute match is a statement about one attribute whose truth can be evaluated, that is it evaluates to true or false (or undetermined). An attribute match is a subject match, resource match or environment match, depending on whether the attribute being matched is a subject, resource or environment attribute.
An attribute match is an expression with a boolean result whose form is limited to one of the following:
Matchfunc is the matching function, a function with a boolean result and two non-boolean inputs. Its result is undetermined if either input is undetermined.
In the first case, modifierfunc is a function with a non-boolean result and a single non-boolean input. The result of modifierfunc is undetermined if its input is undetermined.
In the second case, there is no modifierfunc.
The value to match (matchfunc’s second input) is a sequence of literal text and other attribute references implicitly combined using string concatenation. Thus its type is bag containing a single string, unless there is any reference to an attribute resolving to an empty bag, in which case it is an empty bag. Any reference to a non-string attribute is converted to string bag first. Any reference to an attribute whose value is a bag containing two or more values causes the whole match value to be undefined. Any reference to an undetermined attribute causes the whole value to match to be undetermined.
For a subject attribute match, only a single literal string is allowed, with no attribute references.
If the attribute does not exist, then it has the empty bag value.
A subject
specification consists of a
conjunctive sequence of subject
matches.
A specification is evaluated as follows:
subject
matches has value
TRUEsubject
matches is
undetermined
A subject
match is an attribute match where the
attribute being matched is a subject
attribute,
and the match value is a literal string and does not
contain any attribute references.
The target
of a policy or
policy set identifies the set of
subjects to which the policy or
policy set applies.
The target
consists of a disjunctive sequence of subject
specifications. A target specification is
evaluated as follows:
policy
or policy-set
that has
no target
explicitly specified is
treated as having a target
that
evaluates unconditionally to TRUE.If determined, the result of a rule or
policy or policy set is a
decision, either “not applicable” or any one of
the effects “permit
”,
“prompt-blanket
”, “prompt-session
”, “prompt-oneshot
” or
“deny
”.
The result of a rule or policy or policy set may be undetermined under conditions specified for each below.
A rule consists of a condition and an effect.
The result of a rule is determined if and only if its condition has determined value.
The condition
of a rule
specifies
extra criteria that need to be matched before the
rule
becomes applicable.
The
condition
consists of one or more attribute
matches, combined with AND and OR operators into an
arbitrarily nested tree.
The AND operator is evaluated as follows:
The OR operator is evaluated as follows:
A policy
has a target
, and a list
of zero or more rules
combined using a rule-combining
algorithm
. Where a directive attribute query
finds more than one applicable directive attribute set,
the first one is used.
A policy
optionally has a textual description.
A
policy
optionally has an id. If an
implementation provides a means to provision a security
policy fragment to replace an existing one, this id can
be used to identify the policy or policy
set to replace. No management of ids is mandated,
therefore it is recommended that a standardised textual
representation of a UUID should be used as the id.
The result of a policy is determined if and only if its combining rule has determined value.
The overall security framework is a policy set.
A policy-set
is a target
with a list of zero or more policies
and
policy sets
combined using a policy-combining
algorithm. Where a directive attribute query
finds more than one applicable directive attribute set,
the first one is used.
A policy set
optionally has an id. If an implementation provides a
means to provision a security policy fragment to replace
an existing one, this id can be used to identify the
policy
or policy set
to replace. No
management of ids is mandated, therefore it is
recommended that a standardised textual representation
of a UUID should be used as the id.
The result of a policy is determined if and only if its combining rule has determined value.
Where the implementation supports deployment of a
fragment of policy to add to the existing security
policy framework or to replace a part of it, the
policy document is the unit of addition or
replacement. A policy document can be either a
policy
or a policy-set
.
Where the implementation supports deployment of policy fragments as above, the signed policy documentx is the cryptographically signed unit of deployment. It contains one or more policy documents as well as a single signature.
The matching function used in an attribute match is one of the following.
True if and only if some string from one input string bag is byte-for-byte equal to some string from the other input string bag. Thus an empty bag is not equal to anything, not even another empty bag. An input of type other than empty bag or string bag is converted to string bag first.
True if and only if, for some string in the first input string bag, the entire string matches the glob pattern in some string in the second input string bag. If either input is the empty bag, the result is false. An input of type other than empty bag or string bag is converted to string bag first.
A glob pattern is as described in [[!SUS3]] section 2.13 Pattern Matching Notation but excluding 2.13.3 Patterns Used for Filename Expansion.
Using this function with a glob pattern of “*” (a single asterisk) is a convenient way to test whether the first input is not an empty bag.
True if and only if, for some string in the first input string bag, some part of the string matches the regular expression pattern in some string in the second input string bag. If either input is the empty bag, the result is false. An input of type other than empty bag or string bag is converted to string bag first.
This uses the definition of regular expressions in ECMAScript 3rd edition [[!ECMA-262]].
The modifier function optionally specified in each attribute in a target or condition is one of the following.
If the input is a string bag, first it is converted to a URI bag by interpreting each string as a URI. Any string that does not have the form of a URI is removed from the bag.
Each URI in the bag is converted to a string by taking the URI’s scheme component.
Thus the result type is either the empty bag or string bag.
If the input is a string bag, first it is converted to a URI bag by interpreting each string as a URI. Any string that does not have the form of a URI is removed from the bag.
Each URI in the bag is converted to a string by taking the URI’s scheme and authority components. If the URI does not have an authority component, it is removed from the bag.
Thus the result type is either the empty bag or string bag.
If the input is a string bag, first it is converted to a URI bag by interpreting each string as a URI. Any string that does not have the form of a URI is removed from the bag.
Each URI in the bag is converted to a string by taking the URI’s scheme and authority components. If the URI does not have an authority component, it is removed from the bag.
Thus the result type is either the empty bag or string bag.
The policy-combining algorithm for a policy set determines how child policies and policy sets are combined.
The rule-combining algorithm for a policy determines how child rules are combined.
The algorithms are described in the following subsections. The term “child” is used to mean the child rules in the policy when applying the policy’s rule-combining algorithm, or the child policies and policy sets in the policy set when applying the policy set’s policy-combining algorithm.
The Deny-Overrides Combining Algorithm is usable as a policy-combining algorithm and as a rule-combining algorithm.
The overall result of a query is evaluated as follows:
The Permit-Overrides Combining Algorithm is usable as a policy-combining algorithm and as a rule-combining algorithm. The overall result of a query is evaluated as follows:
The First-Applicable Rule Combining Algorithm is usable as a rule-combining algorithm.
The overall result of a query is evaluated by processing the children in written order as follows:
The First-Matching-Target Policy Combining Algorithm is usable as a policy-combining algorithm.
The overall result of a query is evaluated by processing the children in written order as follows:
The effect of a rule is one of the following:
This effect allows requested access without user interaction.
This effect denies requested access without user interaction.
The prompt-oneshot, prompt-session and prompt-blanket effects allow requested access after explicit confirmation by the user. The implementation MUST prompt the user before allowing access.
The implementation MUST only provide the user the option to grant permission up to the maximum allowed by the effect, ie:
The implementation MUST provide a means to respond with any available option that is applicable in the context in which the prompt is displayed.
Any default action MUST be at least as restrictive as "deny this time".
If the user has the option of deferring a response indefinitely and the user does not respond explicitly, the requested access MUST NOT be allowed.
For a widget, a session lasts while the application is still running and the terminal has not been switched off or placed in standby mode.
For a website, another visit to the same page in the same Browser tab or window is part of the same session.
A query represents a specific instance of a security policy being evaluated in order to make an access control decision relating to an attempted operation by a web application.
A query is characterised by the collection of subject attributes associated with the web application instance, the collection of resource attributes associated with the attempted operation, and the collection of environment attributes associated with the circumstances of the attempt. The determinedness of each of these attributes is in accordance with the execution phase of the attempt.
A query is evaluated against a
policy-set
, resulting in a decision in
accordance with the evaluation rules defined in this
specification.
This section defines a method for representing a Security Policy (e.g. for interchange or device management purposes).
<signed-policy>
ElementThe root element of a signed policy document is a
<signed-policy>>
.
<signed-policy>
contains, in any
order, exactly one <signature>
element and one or more elements each of which is either
<policy-set>
or
<policy>
;.
<signature>
ElementThe <signature>
element, as a
child of <signed-policy>
, specifies
the detached digital signature of the signed policy
document as defined in XML Digital Signature
[[!XMLDSIG-CORE2]], with the following additional
constraints:
<signature>
element MUST contain one or
more valid <Reference> elements;<policy>
; or
<policy-set>
element that is a
sibling of the <signature>
element
in the same Signed Policy Document;<signed-policy>
as invalid if
it has a child <policy>
; or
<policy-set>
element for which
there is no <Reference> element.Processing of the signature is specified in section (*** change ref ***).
<policy-set>
ElementThe root element of a policy document is either a
<policy-set>
or a
<policy>
;.
<policy-set>
has two possible
attributes:
<policy-set>
. <policy-set>
contains an
optional <target>
;, then zero or more
<policy>
; and/or
<policy-set>
elements.
<rule>
Element<rule>
has one possible attribute,
effect, which must take a value of "permit",
"prompt-blanket", "prompt-session", "prompt-oneshot" or
"deny". The attribute is optional; if it is omitted, the
default value is "permit".
<rule>
contains an optional
<condition>
.
<target>
Element<target>
contains one or more
<subject>
elements.
<subject>
Element<subject>
contains one or more
<subject-match>
elements.
<condition>
Element <condition>
has one possible
attribute, combine, which must take a value of "and" or
"or". The attribute is optional; if it is omitted, the
default value is "and".
<condition>
contains one or more
elements, each of which is one of
<condition>
,
<subject-match>
,
<resource-match>
or
<environment-match>
.
<subject-match>
, <resource-match>
, <environment-match>
Elements<subject-match>
represents a
condition on a single subject attribute to be matched in
a target or condition.
<resource-match>
represents a
condition on a single resource attribute to be matched
in a condition. <environment-match>
represents a condition on a single environment attribute
to be matched in a condition.
The element has up to three (XML) attributes:
The contents of a
<subject-match>
,
<resource-match>
or
<environment-match>
element represent
the value to match, only if the match attribute is
absent. If the match attribute is present, then the
element contents are ignored. For a
<subject-match>
, the contents are
PCDATA. For the others, the contents can be any
combination of PCDATA,
<subject-attr>
,
<resource-attr>
and
<environment-attr>
elements, giving
the literal text to match after expanding any
attributes.
<subject-attr>
, <resource-attr>
, <environment-attr>
ElementsEach of these elements represents the value of a subject, resource or environment attribute respectively.
The element has one (XML) attribute, attr, giving the name of the attribute to expand. It has no contents.
The identity of a subject is in one of the following classes. The class determines which attributes are available; other attributes have the undefined value.
| Attribute | Type | Value | Meaning |
|---|---|---|---|
| class | string | "website" | Has the value "website" if and only if the subject is of this class. |
| sign-schema | string | "" (empty string) | Not signed. |
| sign-schema | string | "tls" | The page was fetched using HTTPS and the browser has verified that the site certificate’s Common Name matches the host that the page was fetched from, and it has already applied its own policies regarding whether the root certificate is in an acceptable trust domain. |
| sign-schema | string | "tls-ev" | As "tls", and, additionally, the site certificate has an extended validation field and the browser’s internal policy allows that information to be passed to the security framework. |
| uri | URI | The URI used to access the document that embeds or refers to the JavaScript code, corresponding to the window.location property of the browsing context. In the case of that a feature is accessed from a child browsing context (for example from within a <iframe> within some outer document), this attribute provides the location of the child context. | |
| uri-top | URI | The URI used to access the website that embeds or refers to the JavaScript code, corresponding to the top.window property of the browsing context. In the case that the feature is accessed from a child browsing context (for example from within an <iframe>), this attribute provides the location of the top-level browsing context. If the current browsing context is a child of a widget top-level browsing context, this attribute contains an IRI with the widget: scheme that corresponds to the top-level containing document from the widget resource. | |
| key-root-cn | string | The common name of the root certificate chained to by the site certificate. Empty bag if none. | |
| key-root-fingerprint | string | The fingerprint of the root certificate chained to by the site certificate. Empty bag if none. |
The resource is identified by one or more of the following attributes:
| Attribute | Type | Value | Comment |
|---|---|---|---|
| api-feature (*** ref: ****) | URI | The IRI identifier of the requested Feature converted to URI as per RFC3987 [[!IRI]]. | This uses the same naming scheme as
in a widget’s feature element. Determined for all
applicable application execution phases. |
| device-cap | string | Device capability being accessed, if any. Empty bag if none | See Appendix A (*** change this ref ***). Determined for all applicable application Execution Phases. |
| param:name | See comment | The value of parameter name. | The specification of each Device Capabilities lists the parameters associated with that Device Capability and the type and semantics of each. Empty bag if the parameter is not defined. Determined in the invoke execution phase. Undetermined in all other execution phases. |
| The following resource attributes give information on the source of the implementation of the API Feature. | |||
| feature-install-uri | URI | The URI that the API implementation was originally retrieved from before installation, if known, otherwise the empty bag. | Determined for all applicable application execution phases. |
| feature-key-cn | string | The common name of the end entity certificate for the signature associated with the Feature implementation. Empty bag if none. | Determined for all applicable application execution phases. |
| feature-key-root-cn | string | The common name of the root certificate for the signature associated with the Feature implementation. Empty bag if none | Determined for all applicable application execution phases. |
| feature-key-root-fingerprint | string | The fingerprint of the root certificate of the signature associated with the Feature implementation. Empty bag if none. | Determined for all applicable application execution phases. |
| Attribute | Type | Value | Comment |
|---|---|---|---|
| roaming | string | "national", "international", or empty string | Determined in the following
execution phases:
|
| bearer-type | string | The type of the current network bearer over which a network request will be served, either by request of the application or by default (per the current serving network or the one over which the request will be served, if multiple networks are available). A comma-separated list of one or more of the bearer types given as examples in W3C DCO [[DCONTOLOGY]]. | Determined in the following execution phases:
|
This section outlines some example policies that could be used to deal with abuses of device APIs.
The editors would like to extend special thanks to Nokia, OMTP BONDI, and PhoneGap for providing the foundation of the working group’s requirements discussion.