Introduction
At 7Park, we are on a mission to help organizations and people make better decisions by tapping into data.
The Key Metrics API enables seamless access to 7Park Data’s portfolio of leading performance indicators, forecasts, and backtests.
For assistance with the Key Metrics API, please contact<EMAIL_ADDRESS>The 7Park Data API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
Click Run in Postman below to save every API request as a Postman collection for ease of testing.
# BASE URL:
https://api.7parkdata.com
Authentication
To authenticate, query using your generated 'client_id' and 'client_secret':
pip install -i https://pypi.7parkdata.com/simple/ parklib-sdk
# replace client_id / client_secret with your credentials.
export PARK_API_CLIENT_ID=<client_id>
export PARK_API_CLIENT_SECRET=<client_secret>
curl -X POST \
https://api.7parkdata.com/oauth/token \
-d '{
"client_id": {client_id},
"client_secret": {client_secret}
}'
# replace {client_id} and {client_secret} with your generated values from the developer portal
The 'access_token' in the below example response will be your {token} for authentication for all future API Requests
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiI",
"expires_in": 86400,
"token_type": "Bearer"
}
7Park Data uses OAuth to authorize users to its APIs. You can register and generate client_id and client_secret credentials at our developer portal
To authenticate, in every API request, you must have the token in the header as such:
Authorization: Bearer {token}
You must replace {token}
with the access token provided in the /oauth/token
response.
Rate Limits
This API is rate limited.
The default user will receive the following usage plan:
- 10 requests per second
- burst 15 requests
- quota of 5,000 requests per week starting on Sunday
If you would like to inquire regarding increasing your rate limit, please contact<EMAIL_ADDRESS>Permissions
Permissions are handled at a company level.
After you have been set up, you can verify which companies you have access to by querying this endpoint.
Example Request:
import requests
url = "https://api.7parkdata.com/permissions"
headers = {"Authorization" : "Bearer " + access_token}
response = requests.request("GET", url, headers = headers, params = querystring)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/permissions' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"data_permission": [
{
"metric_id": 70,
"metric_name": "App Minutes Index",
"company_id": 5820,
"company_name": "Spotify"
},
{
"metric_id": 740,
"metric_name": "App Downloads",
"company_id": 5820,
"company_name": "Spotify"
}
]
}
HTTP Request
GET /permissions
Errors
The 7Park Data API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 429 | Too Many Requests |
| 500 | Internal Server Error |
| 502 | Bad Gateway |
| 503 | Service Unavailable |
| 504 | Gateway Timeout |
Metadata
The Metadata sections will help you build queries for retrieving Time Series and Forecast Data.
The Metadata required in all Time Series and Forecast queries are:
company_id
metric_id
entity_id
Company
The Company Object
| Parameter | Type | Description |
|---|---|---|
| company_id | number | The company identifier. |
| company_name | string | The company name. E.g. Spotify |
| ticker | string | Company ticker symbol. E.g. SPOT |
List all Companies
Example Request:
import requests
url = "https://api.7parkdata.com/companies"
querystring = {"search" : "spotify"}
headers = {"Authorization" : "Bearer " + access_token}
response = requests.request("GET", url, headers = headers, params = querystring)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/companies/?search=spotify' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"company_id": 5820,
"company_name": "Spotify",
"ticker": "SPOT"
}
]
}
Find Available Companies.
HTTP Request
GET /companies/
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| search | query string | false | string | Keyword search |
Retrieve a Company
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820"
headers = {"Authorization" : "Bearer " + access_token}
response = requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"company_id": 5820,
"company_name": "Spotify",
"ticker": "SPOT"
}
Get a Specific Company.
HTTP Request
GET /company/{company_id}
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | number | The company identifier. |
Retrieve a Company's Hierarchy
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/hierarchy"
headers = {"Authorization" : "Bearer " + access_token}
response = requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/hierarchy' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"company_id": 5820,
"parent_company_id": null,
"ultimate_company_id": 5820,
"subsidiaries": [
{
"company_id": 746813,
"external_name": "Crowd Album, Inc.",
"company_name": "Crowd Album, Inc."
},
{
"company_id": 1728912,
"external_name": "Soundtrap AB",
"company_name": "Soundtrap AB"
},
{
"company_id": 1742096,
"external_name": "Spotify USA, Inc.",
"company_name": "Spotify USA, Inc."
},
{
"company_id": 1726139,
"external_name": "Sonalytic Ltd.",
"company_name": "Sonalytic Ltd."
},
{
"company_id": 1833097,
"external_name": "The Echo Nest Corp.",
"company_name": "The Echo Nest Corp."
}
],
"parent_company_name": null,
"parent_company_ticker_region": null,
"ultimate_parent_company_ticker_region": null,
"ultimate_parent_company_name": "Spotify Technology SA"
}
Retrieve Company Hierarchy.
HTTP Request
GET /company/{company_id}/hierarchy
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | number | The company identifier. |
Metric
The Metric Object
| Parameter | Type | Description |
|---|---|---|
| metric_id | number | The metric identifier. |
| metric_name | string | The metric name. E.g. App Downloads |
| metric_description | string | Description of the metric. E.g. Count of Android & iOS app store downloads |
List all Metrics
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/metrics"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/metrics' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"metric_id": 67,
"metric_name": "App DAU Pcnt Panel",
"metric_description": "Percent of app panel who are unique daily active users"
},
{
"metric_id": 740,
"metric_name": "App Downloads",
"metric_description": "Count of Android & iOS app store downloads"
}
]
}
List all Company Metrics.
HTTP Request
GET /company/{company_id}/metrics
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | number | company_id |
Retrieve a Metric
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/metric/740"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/metric/740' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"metric_id": 740,
"metric_name": "App Downloads",
"metric_description": "Count of Android & iOS app store downloads"
}
Retrieve a Company metric.
HTTP Request
GET /company/{company_id}/metric/{metric_id}
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | number | company_id |
| metric_id | path | true | number | metric_id |
Entity
The Entity Object
| Parameter | Type | Description |
|---|---|---|
| entity_id | number | The entity identifier. |
| entity_name | string | The entity name. E.g. Spotify Music |
List all Entities
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/metric/740/entities"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/metric/740/entities' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"entity_id": 1928293,
"entity_name": "Spotify Music"
}
]
}
Get Entities.
HTTP Request
GET /company/{company_id}/metric/{metric_id}/entities
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | number | company_id |
| metric_id | path | true | number | metric_id |
Retrieve a Entity
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/metric/740/entity/1928293"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/metric/740/entity/1928293' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"entity_id": 1928293,
"entity_name": "Spotify Music"
}
Get Entities.
HTTP Request
GET /company/{company_id}/metric/{metric_id}/entity/{entity_id}
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | number | company_id |
| metric_id | path | true | number | metric_id |
Time Series
Retrieve Metadata
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/metric/740/entity/1928293/queries"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/metric/740/entity/1928293/queries' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"queries": [
{
"entity_id": 1928293,
"metric_id": 740,
"metric_periodicity": "Daily",
"discovery_name": "Spotify Music",
"country_name": "Germany",
"company_name": "Spotify"
},
{
"entity_id": 1928293,
"metric_id": 740,
"metric_periodicity": "Daily",
"discovery_name": "Spotify Music",
"country_name": "France",
"company_name": "Spotify"
},
{
"entity_id": 1928293,
"metric_id": 740,
"metric_periodicity": "Daily",
"discovery_name": "Spotify Music",
"country_name": "United States of America",
"company_name": "Spotify"
}
]
}
Retrieve Metadata.
HTTP Request
GET /company/{company_id}/metric/{metric_id}/entity/{entity_id}/queries
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | string | company_id |
| metric_id | path | true | string | metric_id |
| entity_id | path | true | string | entity_id |
Retrieve Timeseries
Example Request:
import requests
url = "https://api.7parkdata.com/data?entity_id=1928293&metric_periodicity=Daily&country_name=United%20States%20of%20America&metric_id=740"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/data?entity_id=1928293&metric_periodicity=Daily&country_name=United%20States%20of%20America&metric_id=740' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"status": "ok",
"query": {
"msa_name": "N/A",
"entity_id": 1928293,
"metric_id": 740,
"metric_periodicity": "Daily",
"world_region_name": "N/A",
"us_region_name": "N/A",
"us_state_name": "N/A",
"country_name": "United States of America",
"cohort_descripton": "{\"gender\":\"N/A\",\"age_group\":\"N/A\",\"cohort_grouping\":\"N/A\"}"
},
"errors": [],
"data": [
{
"world_region_name": "N/A",
"metric_id": 740,
"company": "Spotify",
"us_region_name": "N/A",
"value": 87767.0,
"date": "2015-01-01",
"period_end": "2015-01-01",
"country_name": "United States of America",
"metric_name": "App Downloads"
},
{
"world_region_name": "N/A",
"metric_id": 740,
"company": "Spotify",
"us_region_name": "N/A",
"value": 80433.0,
"date": "2015-01-02",
"period_end": "2015-01-02",
"country_name": "United States of America",
"metric_name": "App Downloads"
},
{
"world_region_name": "N/A",
"metric_id": 740,
"company": "Spotify",
"us_region_name": "N/A",
"value": 84000.0,
"date": "2015-01-03",
"period_end": "2015-01-03",
"country_name": "United States of America",
"metric_name": "App Downloads"
},
{
"world_region_name": "N/A",
"metric_id": 740,
"company": "Spotify",
"us_region_name": "N/A",
"value": 81330.0,
"date": "2015-01-04",
"period_end": "2015-01-04",
"country_name": "United States of America",
"metric_name": "App Downloads"
}
]
}
Data: Retrieve a time series for a specific entity/metric
HTTP Request
GET /data
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| metric_id | path | true | string | metric_id |
| entity_id | path | true | string | entity_id |
| metric_periodicity | path | true | string | metric_periodicity |
| country_name | path | false | string | country_name |
| date_from | path | false | string | date_from |
| date_to | path | false | string | entity_id |
| world_region_name | path | false | string | world_region_name |
| us_region_name | path | false | string | us_region_name |
| discovery_name | path | false | string | discovery_name |
Forecasts
List all Forecasts
Example Request:
import requests
url = "https://api.7parkdata.com/forecasts"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/forecasts' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"company_id": 5820,
"company_name": "Spotify",
"entity_id": 1928293,
"entity_name": "Spotify Music",
"metric_id": 740,
"metric_name": "App Downloads",
"forecast_metric_name": "Total MAU",
"recent_data_through": "2019-06-24"
},
{
"company_id": 5820,
"company_name": "Spotify",
"entity_id": 1899099,
"entity_name": "Spotify Music",
"metric_id": 71,
"metric_name": "App Sessions Index",
"forecast_metric_name": "Total MAU",
"recent_data_through": "2018-07-21"
}
]
}
List all Forecasts.
HTTP Request
GET /forecasts/
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| search | query string | false | string | Keyword search |
| company_id | query string | false | string | company_id |
| ordering | query string | false | string | ordering |
| page | query string | false | string | page |
| page_size | query string | false | string | page_size |
Forecast Snapshots
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/metric/740/entity/1928293/forecast/snapshot"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/metric/740/entity/1928293/forecast/snapshot' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"business_entity_name": "Spotify Music",
"metricvals": [
{
"forecast_model": "Q/Q",
"period_effective_end_date": "2016-06-30",
"methodology": "unspecified",
"forecast":<PHONE_NUMBER>62599,
"data_through": "2018-07-09",
"period_effective_start_date": "2016-04-01",
"is_published": "N"
},
{
"forecast_model": "Q/Q",
"period_effective_end_date": "2016-09-30",
"methodology": "unspecified",
"forecast":<PHONE_NUMBER>58071,
"data_through": "2018-07-09",
"period_effective_start_date": "2016-07-01",
"is_published": "N"
},
{
"forecast_model": "Q/Q",
"period_effective_end_date": "2016-12-31",
"methodology": "unspecified",
"forecast":<PHONE_NUMBER>3493,
"data_through": "2018-07-09",
"period_effective_start_date": "2016-10-01",
"is_published": "N"
}
],
"metric_id": 768,
"company_id": 5820,
"forecast_metric": "Total MAU",
"company_name": "Spotify",
"lpi": "App Downloads"
}
Snapshot of forecasts as published in Excel reports.
HTTP Request
GET /company/{company_id}/metric/{metric_id}/entity/{entity_id}/forecast/snapshot
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | string | company_id |
| metric_id | path | true | string | metric_id |
| entity_id | path | true | string | entity_id |
Forecast Data
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/metric/740/entity/1928293/forecast"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/metric/740/entity/1928293/forecast' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"forecast_metric_name": "Total MAU",
"forecast_unit": "MM",
"period_effective_start_date": "2019-04-01",
"period_effective_end_date": "2019-06-30",
"entity_name": "Spotify Music",
"permission": true,
"data": [
{
"forecast":<PHONE_NUMBER>8129,
"r_squared": "",
"correlation": "",
"description": "Based on quarter over quarter quarterly growth rates.",
"queries": [
{
"entity_id": 1916258,
"metric_id": 768,
"metric_periodicity": "Quarter_Over_Quarter",
"metric_type": "7Park Data"
},
{
"entity_id": 1916258,
"metric_id": 694,
"metric_periodicity": "Quarter_Over_Quarter",
"metric_type": "reported"
}
]
},
{
"forecast": "",
"r_squared": "",
"correlation": "",
"description": "Based on year over year quarterly growth rates.",
"queries": [
{
"entity_id": 1916258,
"metric_id": 768,
"metric_periodicity": "Year_Over_Year",
"metric_type": "7Park Data"
},
{
"entity_id": 1916258,
"metric_id": 694,
"metric_periodicity": "Year_Over_Year",
"metric_type": "reported"
}
]
}
]
}
Forecast info for company, metric and entity.
HTTP Request
GET /company/{company_id}/metric/{metric_id}/entity/{entity_id}/forecast
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | string | company_id |
| metric_id | path | true | string | metric_id |
| entity_id | path | true | string | entity_id |
Historical Forecasts
Example Request:
import requests
url = "https://api.7parkdata.com/company/5820/metric/740/entity/1928293/forecast/history"
headers={"Authorization" : "Bearer " + access_token}
response=requests.request("GET", url, headers = headers)
print(response.text)
curl -X GET \
'https://api.7parkdata.com/company/5820/metric/740/entity/1928293/forecast/history' \
-H 'Authorization: Bearer {token}' \
Example Response:
{
"status": "ok",
"query": {
"reported_metric_id": 694,
"entity_id": 1916258,
"metric_id": 768
},
"errors": [],
"data": [
{
"metric_id": 768,
"metric_periodicity": "Quarter_Over_Quarter",
"entity_name": "Spotify Music",
"company": "Spotify",
"period_effective_end_date": "2018-03-31",
"methodology": "unspecified",
"forecast": 170.156563,
"data_through": "2018-04-09",
"forecast_unit": null,
"correlation": null,
"period_effective_start_date": "2018-01-01",
"r_squared": null,
"metric_name_reported": "Total MAU",
"metric_name": "DownloadsAndroidiOS"
},
{
"metric_id": 768,
"metric_periodicity": "Quarter_Over_Quarter",
"entity_name": "Spotify Music",
"company": "Spotify",
"period_effective_end_date": "2018-03-31",
"methodology": "unspecified",
"forecast": 169.881474,
"data_through": "2018-04-16",
"forecast_unit": null,
"correlation": null,
"period_effective_start_date": "2018-01-01",
"r_squared": null,
"metric_name_reported": "Total MAU",
"metric_name": "DownloadsAndroidiOS"
}
],
"description": "company name: Spotify; entity: Spotify Music; dimensions: {}; metric: DownloadsAndroidiOS; metric_periodicity: N/A"
}
Historical forecast info for company, metric and entity.
HTTP Request
GET /company/{company_id}/metric/{metric_id}/entity/{entity_id}/forecast/history
Parameters
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | true | string | company_id |
| metric_id | path | true | string | metric_id |
| entity_id | path | true | string | entity_id |
Platform
Overview
Cleaning real world data is a painstaking process. Make it easier by using the same tools that 7Park Data uses to deliver insights to hundreds of the leading global financial services companies. 7Park Data’s Python SDK has the core functionality you need to prepare analytics ready data.
Derive the most value from your data with powerful technology proven to accelerate data initiatives, by increasing capacity for internal engineering and data science teams while reducing costs and operational risk. Our machine learning-powered models outperform comparable solutions with a 4x higher F1 score. Designed for scale and versatility, our Platform processes over 4 TB of transaction and natural language data daily.
7Park Data’s tagging, cleansing and linking solutions can be used as part of a comprehensive data preparation program, or for more targeted projects.
Our solutions transform raw data into analytics-ready information, at scale. Here is how our 3 core modules can help:
7Park Tag
(Named Entity Recognition): Bring structure and meaning to make unstructured data useful7Park Cleanse
(Named Entity Disambiguation): Reduce noise and dimensionality by resolving entities in data7Park Link
(Named Entity Linking): Connect and enrich by connecting multiple data sets
If you have technical questions please contact Joel at<EMAIL_ADDRESS>For product feedback and ideas please reach out to Malte at<EMAIL_ADDRESS>Quick Start Guide
1) Set up your credentials and request access.
- Visit the Account Management Page
- Click
Request Credentials
in the Authentication section. - Copy the
client_id
&client_secret
. - Contact customer success to enable 7Park Platform Modules<EMAIL_ADDRESS>2) Install the 7Park Platform SDK from 7Park Data’s pypi server and set your credentials.
pip install -i https://pypi.7parkdata.com/simple/ parklib-sdk
# replace client_id / client_secret with your credentials.
export PARK_API_CLIENT_ID=<client_id>
export PARK_API_CLIENT_SECRET=<client_secret>
3) Set s3 Bucket Policy (only required for Bulk functions)
- Create private s3 bucket
- Create a folder
output
in that bucket - Navigate to your s3 bucket > permissions > bucket policy
- Paste in the following json (replace
{BUCKET_NAME}
with your bucket's name):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::084888172679:role/platform-services",
"arn:aws:iam::084888172679:role/platform-services-lambda"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::{BUCKET_NAME}/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::084888172679:role/platform-services",
"arn:aws:iam::084888172679:role/platform-services-lambda"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::{BUCKET_NAME}"
}
]
}
4) Start coding.
from parklib.sdk.ner import NER
ner_result = NER.execute(
source_type='formal text',
instances=["Netflix beats the street.","Amazon expands to Austin."]
)
print(ner_result)
Examples
Explore common use cases that leverage 7Park Platform SDK to Tag, Link, or Cleanse data.
Enrich records in a SQL table with their parent company’s ticker symbol
1) Load your local SQL table into a dataframe using psycopg2 or any python db client you prefer
import pandas as pd
import pandas.io.sql as sqlio
import psycopg2
conn_str = (
"dbname=<database> "
"user=<username> "
"password=<password> "
"host=<url> "
"port=<port> " )
conn = psycopg2.connect(conn_str)
SQL = '''select company_name as name from dimensions.dim_company
where ticker NOT IN ('N/A')
LIMIT 100'''
df = sqlio.read_sql_query(SQL,conn)
print(df.head())
2) Use Parklib SDK to enrich each row of the dataframe with its parent company’s ticker symbol
from parklib.sdk.nel import NEL
from parklib.sdk.hierarchy import Hierarchy
df['parent_ticker'] = None
def append_ticker(item):
print(item['name'])
resp = NEL.execute(company_name=item['name'])
links = resp['message']['links']
if links: # We found a potential link
company_id = links[0]['company_id']
resp = Hierarchy.get_parent_info(company_id)
item['parent_ticker'] = resp['parent_ticker'] # Add parent_ticker
return item
df.apply(append_ticker,axis=1)
Disambiguate a column of a sql table and link to a canonical company
1) Load your local SQL table into a dataframe using psycopg2 or any python db client you prefer
import pandas as pd
import pandas.io.sql as sqlio
import psycopg2
conn_str = (
"dbname=<database> "
"user=<username> "
"password=<password> "
"host=<url> "
"port=<port> " )
conn = psycopg2.connect(conn_str)
SQL = '''select company_name as name from dimensions.dim_company
where ticker NOT IN ('N/A')
LIMIT 100'''
df = sqlio.read_sql_query(SQL,conn)
print(df.head())
2) Use 7Park NED engine to disambiguate the data
import boto3
bucket_name = '7p-temp'
s3 = boto3.resource('s3')
df.to_csv("data.tsv", sep="\t", index=False) # temp file can be removed after upload to S3
s3.Object(bucket_name, 'test.tsv').put(Body=open('data.tsv', 'rb'))
from parklib.sdk.ned import NED
job_id = NED.run_job_transform(target_col_index=0,
input_path="s3://7p-temp/test.tsv",
output_path="s3://7p-temp/output")
7Park Tag
7Park Tag (Named Entity Recognition)
Create structured datasets from raw inputs
Parse and tag raw, unstructured data to add value to your analytical strategies, and avoid losing precious time trying to make sense of messy files. 7Park Data’s Tag solution brings structure and meaning to your data by identifying and classifying entities in natural language and transaction data, including merchant names, organizations, locations, brands, products, people and more.
Execute
Run Name entity recognition in real time.
Example Request:
from parklib.sdk.ner import NER
ner_result = NER.execute(source_type='formal text', instances=["Apple is a company"])
print(ner_result)
curl -X POST \
https://api.7parkdata.com/ner/annotate \
-H 'Authorization: Bearer {token}' \
-d '{
"source_type": "formal text",
"instances": [
"Apple is a company."
]
}'
Example Response:
{
"results": [
{
"doc_index": 0,
"preprocessed": "Apple is a company.",
"ner": [
{
"start_pos": 0,
"type": "NE_ORG",
"key": "Apple",
"end_pos": 5
}
]
}
]
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| source_type | true | string | Source type to consider. Options include: formal text , informal text , and transaction |
| entity_types | false | array | Entity types to consider. Options include: NE_TITLE , NE_PERSON , NE_ORG , NE_PRODUCT , NE_GPE , NE_CURRENCY , NE_MERCHANT , NE_STORE , NE_PAYMENT , and NE_DATE . |
| instances | true | array | A list of strings that you wish to be recognized. |
Bulk
Run NER bulk job transform.
Example Request:
from parklib.sdk.ner import NER
job_id = NER.run_job_transform(source_type="formal text",
entity_types=["NE_TITLE", "NE_PERSON"],
input_path="s3://7parkdata/example.jsonl",
output_path="s3://7parkdata/output")
print(job_id)
Example Response:
{
"bulk_id": "bulk-ner-349f81b4-2fb5-451f-825c-65243610ebfa"
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| source_type | true | string | Source type to consider. Options include: formal text , informal text , and transaction |
| entity_types | false | array | Entity types to consider. Options include: NE_TITLE , NE_PERSON , NE_ORG , NE_PRODUCT , NE_GPE , NE_CURRENCY , NE_MERCHANT , NE_STORE , NE_PAYMENT , and NE_DATE . |
| input_path | true | string | S3 file path. Example: s3://7p-sdk-examples/bulk_ner_example.jsonl The file should be a jsonlines text file format |
| output_path | true | string | S3 folder path. Example: s3://7p-sdk-examples/output |
Status
Check the status of NER job.
Example Request:
from parklib.sdk.ner import NER
job_status = NER.job_transform_status('bulk-ner-349f81b4-2fb5-451f-825c-65243610ebfb')
print(job_status)
Example Response:
{
"error": None,
"output_path": None,
"status": "InProgress"
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| job_id | true | string | The job id return from run_job_transform |
7Park Cleanse
7Park Cleanse (Named Entity Disambiguation)
Reduce noise and create a standard lexicon
Gain clarity into your data by disambiguating text to establish a single semantic reference for better analysis and enrichment. Our Cleanse solution efficiently and accurately creates consistent text from natural language or transaction data, expediting work that would otherwise be sidelined by discrepancies in spelling, entry methods and miscategorization.
Make sure the input file is in a tsv(tab separated value) format
String Distance
Run NED - String Distance Model.
Example Request:
from parklib.sdk.ned import StringDistanceNED
job_id = StringDistanceNED.run_job_transform(target_col_index=3,
input_path="s3://7parkdata/example.tsv",
output_path="s3://7parkdata/output",
threshold=0.009,
stopwords=["company", "co", "corp", "llc"])
print(job_id)
Example Response:
{
"bulk_id": "bulk-ned-349f81b4-2fb5-451f-825c-65243610ebfc"
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| target_col_index | true | integer | Target column index. 0 Based. Example: 3 |
| input_path | true | string | S3 file path. Example: s3://7p-sdk-examples/bulk_ned_example.tsv The file should be a tab separated value file |
| output_path | true | string | S3 folder path. Example: s3://7p-sdk-examples/output |
| threshold | true | float | Threshold for ned model. default: 0.01 Example: 0.009 |
| stopwords | true | list | Stopwords to ignore. Example: [“company”, “co”, “corp”, “llc”] |
Word Embedding
Run NED - Word Embedding Model.
Example Request:
from parklib.sdk.ned import WordEmbeddingNED
job_id = WordEmbeddingNED.run_job_transform(target_col_index=3,
input_path="s3://7parkdata/example.jsonl",
output_path="s3://7parkdata/output",
supplemental_col_indexes=[2, 3, 4],
angular_distance_threshold=0.4,
max_variation_number=500,
stopwords=["company", "co", "corp", "llc"])
print(job_id)
Example Response:
{
"bulk_id": "bulk-ned-349f81b4-2fb5-451f-825c-65243610ebfc"
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| target_col_index | true | integer | Target column index. 0 Based. Example: 3 |
| input_path | true | string | S3 file path. Example: s3://7p-sdk-examples/bulk_ned_example.tsv The file should be a tab separated value file |
| output_path | true | string | S3 folder path. Example: s3://7p-sdk-examples/output |
| supplemental_col_indexes | true | list | 0 Based. A list of columns containing relevant contextual information |
| angular_distance_threshold | true | float | Max distance in radians between two words that should be disambiguated. A small angular distance between words means the word embedding considers the words synonomous. Default: 0.4 Example: 0.5 |
| max_variation_number | true | int | Maximum number of elements included in one canonical item description. Default: 500. Example: 500 |
| stopwords | true | list | Stopwords. Example: [“company”, “co”, “corp”, “llc”] |
Cosine Distance
Run NED - Cosine Distance Model.
Example Request:
from parklib.sdk.ned import CosineDistanceNED
job_id = CosineDistanceNED.run_job_transform(target_col_index=3,
input_path="s3://7parkdata/example/example.txt",
output_path="s3://7parkdata/example/output",
column_description={"0": "name", "1": "article"})
print(job_id)
Example Response:
{
"bulk_id": "bulk-ned-349f81b4-2fb5-451f-825c-65243610ebfc"
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| target_col_index | true | integer | Target column index. 0 Based. Example: 3 |
| input_path | true | string | S3 file path. Example: s3://7p-sdk-examples/bulk_ned_example.tsv The file should be a tab separated value file |
| output_path | true | string | S3 folder path. Example: s3://7p-sdk-examples/output |
| column_description | true | dictionary | Description of the column. Key should be the index of column, value should be the column type. column type must be in [] Example: {“0”: “name”, “1”: “article”} |
Status
Check the status of NED job transform.
Example Request:
from parklib.sdk.ned import NED
job_status = NED.job_transform_status('bulk-ned-349f81b4-2fb5-451f-825c-65243610ebfc')
print(job_status)
Example Response:
{
"status": "RUNNING",
"output_path": null,
"error": null
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| job_id | true | string | The job id return from run_job_transform |
7Park Link
7Park Link (Named Entity Linking)
Add context by connecting multiple datasets
Expand the utility of your datasets by seamlessly adding descriptive and contextual information from multiple reference sources. 7Park Data’s Link solution creates robust, valuable datasets by joining alternative and fundamental data sets, connecting related entities, organizing by corporate hierarchy and mapping to ticker.
Execute
Run Name entity Linking on real time.
Example Request:
from parklib.sdk.nel import NEL
nel_result = NEL.execute(company_name="7park")
print(nel_result)
Example Response:
{
"message": {
"Confidence Result in Set": 0.0,
"Top link confidence": 0.9,
"links": [
{
"company_id": 378567,
"confidence": 0.9,
"factset_id": "0FM8C2-E",
"name": "7Park Data, Inc.",
"ticker_region": None,
"website": "http://www.7parkdata.com"
},
{
"company_id": 1479086,
"confidence": 0.06,
"factset_id": "0C3LPN-E",
"name": "Park Vida Group, Inc.",
"ticker_region": "PRKV-US",
"website": "http://www.parkvida.com"
}
],
"search_args": {
"company_name": "7park",
"ticker": "",
"website": ""
},
"top_name": "7Park Data, Inc.",
"top_website": "https://www.7parkdata.com/"
}
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| ticker | true | string | Ticker |
| company_name | true | string | Company name |
| website | true | string | Website |
| brand_name | true | string | Brand name |
| industries | true | list | Industries |
| sectors | true | list | Sectors |
Bulk
Run NEL bulk job transform.
Example Request:
from parklib.sdk.nel import NEL
job = NEL.run_job_transform(input_path="s3://7parkdata/example.jsonl",
output_path="s3://7parkdata/output")
print(job)
Example Response:
{
"bulk_id": "bulk-nel-349f81b4-2fb5-451f-825c-65243610ebfa"
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| input_path | true | string | S3 file path. Example: s3://7p-sdk-examples/bulk_nel_example.jsonl The file should be a jsonlines text file format |
| output_path | true | string | S3 folder path. Example: s3://7p-sdk-examples/output |
Status
Check the status of NEL job.
Example Request:
from parklib.sdk.nel import NEL
job_status = NEL.job_transform_status('bulk-nel-349f81b4-2fb5-451f-825c-65243610ebfb')
print(job_status)
Example Response:
{
"error": None,
"output_path": None,
"status": "InProgress"
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| job_id | true | string | bulk_id return from run_job_transform |


EdFi::Client
A utility class for authenticating to and making CRUD calls against an Ed-Fi ODS API.
Installation
Add this line to your application's Gemfile:
gem 'ed_fi_client'
And then execute:
$ bundle
Or install it yourself as:
$ gem install ed_fi_client
Using EdFi::Client
Basic Usage: Reading Data
## Establish a connection to an Ed-Fi ODS / API.
## (We'll use the Alliance-hosted Ed-Fi ODS / API sandbox instance.)
sandbox = EdFi::Client.new(
'https://api.ed-fi.org/api/',
client_id: 'RvcohKz9zHI4',
client_secret: 'E1iEFusaNf81xzCxwHfbolkC'
)
sandbox = sandbox.v2(2017) ## For purposes of these samples, we're only
## concerned with 2017-2018 school-year data.

Basic Usage: Writing Data
sandbox = EdFi::Client.new(
'https://api.ed-fi.org/api/',
client_id: 'RvcohKz9zHI4',
client_secret: 'E1iEFusaNf81xzCxwHfbolkC'
).v2(2017)
school = sandbox.get('schools').sample
original_name = school.name_of_institution ## So we can leave it like we found it.
## Via PUT ...
school.name_of_institution = 'New Name, via PUT'
sandbox.put("schools/#{school.id}", payload: school)
sandbox.get("schools/#{school.id}").name_of_institution ## => "New Name, via PUT"
## Via POST ...
school.name_of_institution = 'New Name, via POST'
sandbox.post("schools", payload: school.except(:id))
sandbox.get("schools/#{school.id}").name_of_institution ## => "New Name, via POST"
## Let's leave things like we found them.
school.name_of_institution = original_name
sandbox.put("schools/#{school.id}", payload: school)
Consult the repo docs for the full EdFi::Client documentation.
Feature Roadmap / Future Development
Additional features/options coming in the future:
-
Cleaner handling of non-body-returning calls.
-
Use the given base endpoint's Swagger API definition file (if present) to make collections/resources more easily reachable:
#schools
,#discipline_incidents
, etc. -
Allow for easier manipulation of resources via AR-like methods (
#find
,#find_by
,#where
,#create
,#update
, etc).
Contribution / Development
Bug reports and pull requests are welcome on GitHub at github.com/nestor-custodio/ed_fi_client.
After checking out the repo, run bin/setup
to install
dependencies. Then, run rake spec
to run the tests. You can
also run bin/console
for an interactive prompt that will allow
you to experiment.
Linting is courtesy of Rubocop and documentation is
built using Yard. Neither is included in
the Gemspec; you'll need to install these locally (gem install
rubocop yard
) to take advantage.
License
The gem is available as open source under the terms of the MIT License.


Bases: object
A graph representing the paths between coordinate frames.
Attributes Summary
| frame_set | A set of all the frame classes present in this TransformGraph. |
Methods Summary
| add_transform(fromsys, tosys, transform) | Add a new coordinate transformation to the graph. |
| find_shortest_path(fromsys, tosys) | Computes the shortest distance along the transform graph from one system to another. |
| get_names() | Returns all available transform names. |
| get_transform(fromsys, tosys) | Generates and returns the CompositeTransform for a transformation between two coordinate systems. |
| invalidate_cache() | Invalidates the cache that stores optimizations for traversing the transform graph. |
| lookup_name(name) | Tries to locate the coordinate class with the provided alias. |
| remove_transform(fromsys, tosys, transform) | Removes a coordinate transform from the graph. |
| to_dot_graph([priorities, addnodes, savefn, ...]) | Converts this transform graph to the graphviz DOT format. |
| to_networkx_graph() | Converts this transform graph into a networkx graph. |
| transform(transcls, fromsys, tosys[, priority]) | A function decorator for defining transformations. |
Attributes Documentation
A set of all the frame classes present in this TransformGraph.
Methods Documentation
Add a new coordinate transformation to the graph.
| Parameters: | fromsys : class
tosys : class
transform : CoordinateTransform or similar callable
|
|---|---|
| Raises: | TypeError
|
Computes the shortest distance along the transform graph from one system to another.
| Parameters: | fromsys : class
tosys : class
|
|---|---|
| Returns: | path : list of classes or None
distance : number
|
Returns all available transform names. They will all be valid arguments to lookup_name.
| Returns: | nms : list
|
|---|
Generates and returns the CompositeTransform for a transformation between two coordinate systems.
| Parameters: | fromsys : class
tosys : class
|
|---|---|
| Returns: | trans : CompositeTransform or None
|
Notes
This function always returns a CompositeTransform, because CompositeTransform is slightly more adaptable in the way it can be called than other transform classes. Specifically, it takes care of intermediate steps of transformations in a way that is consistent with 1-hop transformations.
Invalidates the cache that stores optimizations for traversing the transform graph. This is called automatically when transforms are added or removed, but will need to be called manually if weights on transforms are modified inplace.
Tries to locate the coordinate class with the provided alias.
| Parameters: | name : str
|
|---|---|
| Returns: | coordcls
|
Removes a coordinate transform from the graph.
| Parameters: | fromsys : class or None tosys : class or None transform : callable or None |
|---|
Converts this transform graph to the graphviz DOT format.
Optionally saves it (requires graphviz be installed and on your path).
| Parameters: | priorities : bool
addnodes : sequence of str
savefn : None or str
savelayout : str saveformat : str
|
|---|---|
| Returns: | dotgraph : str
|
Converts this transform graph into a networkx graph.
Note
You must have the networkx package installed for this to work.
| Returns: | nxgraph : networkx.Graph
|
|---|
A function decorator for defining transformations.
Note
If decorating a static method of a class, @staticmethod should be added above this decorator.
| Parameters: | transcls : class
fromsys : class
tosys : class
priority : number
|
|---|---|
| Returns: | deco : function
|
Notes
This decorator assumes the first argument of the transcls initializer accepts a callable, and that the second and third are fromsys and tosys. If this is not true, you should just initialize the class manually and use add_transform instead of using this decorator.
Examples
graph = TransformGraph()
class Frame1(BaseCoordinateFrame):
...
class Frame2(BaseCoordinateFrame):
...
@graph.transform(FunctionTransform, Frame1, Frame2)
def f1_to_f2(f1_obj):
... do something with f1_obj ...
return f2_obj


|
Title
|
Release Date
|
Docked Mode
|
Handheld Mode
|
Single Joy-Con
|
Joy-Con Set
|
Pro Controller
|
Local Play
|
Local Wireless
|
Online Multiplayer
|
Publisher
|
Developer
|
Age Rating
|
|---|
Release Date Change Log: (Note: This data is automated and therefore may not represent all changes.)


Window Content. Click to close.
Use wd-open to open the window (modal).
wd-open
Use wd-open to open the window.


Symbol Index for "Resource For Completed Activity"
Symbol Index for diagram
"Resource For Completed Activity"
actual user (Association)
Completed Activity (Class)
Resource For Abandoned Activity (Class)
Resource For Accepted Activity (Class)
Resource For Activity (Class)
Resource For Completed Activity (Class)
Resource For Scheduled Activity (Class)
Resource For Selected Activity (Class)
Resource For Started Activity (Class)
RFA/Direction (Generalization Node)


A few examples tweaked to make use of the scrollview component.
Alpha Release
Toolbars
Persistent footer nav bar (a)
Persistent footer nav bar (b)
Persistent footer nav bar (c)
List Views
Sticky list dividers
Forms
Form element gallery
Tests
Scroll Direction
Nested Scroll Views
Form Elements Event Test
Form Elements in Scrollview Event Test


PERL573DELTA
Section: Perl Programmers Reference Guide (1)Updated: 2009-02-12
Index Return to Main Contents
NAME
perl573delta - what's new for perl v5.7.3DESCRIPTION
This document describes differences between the 5.7.2 release and the 5.7.3 release.(To view the differences between the 5.6.0 release and the 5.7.0 release, see perl570delta. To view the differences between the 5.7.0 release and the 5.7.1 release, see perl571delta. To view the differences between the 5.7.1 release and the 5.7.2 release, see perl572delta.)
Changes
This is just a selected list of some of the more notable changes. The numbers refer to the Perl repository change numbers; see Changes58 (or Changes in Perl 5.8.1). In addition to these changes, lots of work took place in integrating threads, PerlIO, and Unicode; general code cleanup; and last but not least porting to non-UNIX lands such as Win32, VMS, Cygwin, DJGPP, VOS, MacOS Classic, and EBCDIC.- 11362
- add LC_MESSAGES to POSIX :locale_h export tag
- 11371
- add DEL to [:cntrl:]
- 11375
- make h2ph understand constants like 1234L and 5678LL
- 11405
- Win32: fix bugs in handling of the virtualized environment
- 11410
- fix a bug in the security taint checking of open()
- 11423
- make perl fork() safe even on platforms that don't have pthread_atfork()
- 11459
- make switching optimization and debugging levels during Perl builds easier via the OPTIMIZE environment variable
- 11475
- make split()'s unused captures to be undef, not ''
- 11485
- Search::Dict: allow transforming lines before comparing
- 11490
- allow installing extra modules or bundles when building Perl
- 11516
- add -Wall in cflags when compiling with gcc to weed out dubious C practices
- 11541
- pluggable optimizer
- 11549
- WinCE: integrate the port
- 11589
- Win32: 4-arg select was broken
- 11594
- introduce the perlivp utility for verifying the Perl installation (IVP = Installation Verification Procedure)
- 11623
- rename lib/unicode to lib/unicore to avoid case-insensitivity problems with lib/Unicode
- 111631
- remove Time::Piece
- 11643
- document that use utf8 is not the right way most of the time
- 11656
- allow building perl with -DUSE_UTF8_SCRIPTS which makes UTF-8 the default script encoding (not the default since that would break all scripts having legacy eight-bit data in them)
- 11725
- division preserving 64-bit integers
- 11743
- document the coderef-in-@INC feature
- 11794
- modulo (%) preserving 64-bit integers
- 11825
- update to Unicode 3.1.1
- 11865
- add the \[$@%&*] prototype support
- 11874
- oct() and hex() in glorious 64 bit
- 11877
- Class::Struct: allow recursive classes
- 11993
- fix unpack U to be the reverse of pack U
- 12056
- VMS: waitpid enhancements
- 12180
- unpack(``Z*Z*'', pack(``Z*Z*'', ..)) was broken
- 12243
- Devel::Peek: display UTF-8 SVs also as \x{...}
- 12288
- Data::Dumper: option to sort hashes
- 12542
- add perlpodspec
- 12652
- threadsafe DynaLoader, re, Opcode, File::Glob, and B
- 12756
- support BeOS better
- 12874
- read-only hashes (user-level interface is Hash::Util)
- 13162
- add Devel::PPPort
- 13179
- add the sort pragma
- 13326
- VMS: fix perl -P
- 13358
- add perlpacktut
- 13452
- SUPER-UX: add hints file
- 13575
- Win32: non-blocking waitpid(-1,WNOHANG)
- 13684
- introduce the -t option for gentler taint checking
- 14694
- add the if pragma
- 14832
- implement IV/UV/NV/long double un/packing with j/J/F/D
- 14854
- document the new taint behaviour of exec LIST and system LIST
Reporting Bugs
If you find what you think is a bug, you might check the articles recently posted to the comp.lang.perl.misc newsgroup and the perl bug database at http://bugs.perl.org. There may also be information at http://www.perl.com/, the Perl Home Page.If you believe you have an unreported bug, please run the perlbug program included with your release. Be sure to trim your bug down to a tiny but sufficient test case. Your bug report, along with the output of "perl -V", will be sent off to<EMAIL_ADDRESS>to be analysed by the Perl porting team.
SEE ALSO
The Changes file for exhaustive details on what changed.The INSTALL file for how to build Perl.
The README file for general stuff.
The Artistic and Copying files for copyright information.
HISTORY
Written by Jarkko Hietaniemi<EMAIL_ADDRESS>with many contributions from The Perl Porters and Perl Users submitting feedback and patches.Send omissions or corrections to<EMAIL_ADDRESS>Index
This document was created by man2html, using the manual pages.
Time: 05:29:07 GMT, December 24, 2015


Consultation outcome
Ref: DFE-00031-2015 PDF , 372KB , 24 pages
Summary of consultation responses and the government’s response outlining the next steps to be taken.
The revised SEND code of practice: 0 to 25 years is also available.
This consultation ran from
to
We’re seeking views on the draft SEN and Disability Detained Persons Regulations 2015 and draft revised SEN and disability code of practice.
PDF , 311KB , 14 pages
PDF , 3.21MB , 289 pages
We are consulting on:
The regulations relate to children and young people (under 19 years old) with special educational needs ( SEN ) who are detained in youth custody. They will commence from April 2015 and are being introduced as part of the Children and Families Act 2014.
Published: 22 October 2014
Updated: 29 January 2015


1IMAGE, Integrated Model to Assess the Global Environment, Netherlands Environmental Assessment Agency, Netherlands.
2
GCAM, Global Change Assessment Model, Pacific Northwest National Laboratory, United States.
3
MESSAGE, Model for Energy Supply Strategy Alternatives and their General Environmental Impact, International Institute for Applied Systems Analysis, Austria.


This is a measurement plot in realtime. Readings are presented each second.
Water Pump Manual Control
Project Github
dygraphs
Website Template
FastCGI


Installing the kit
Get up and running with the kit in 30 minutes.
Download the kit
Install the kit
Choose from:
{% extends "layout.html" %} {% block page_title %} Getting Started {% endblock %} {% block body %} {% block after_header %}
Get up and running with the kit in 30 minutes.
Choose from:


This site is about me and contains my (mini)projects
What you see now will change.It 's just a skeleton ATM to test myself


You tell him you cleaned the bathroom yesterday.
He smiles, And you did it so well.
Why not ask George to clean today?
I will clean tomorrow.
His smile disappears.
Fine.
You nod. The cooks tell you the food will be ready soon.
Continue
But my table...
George can take over.
You know this routine all too well.
It takes you almost 45 minutes to clean the bathroom,
and your hands- another 15.
You never want to stop scrubbing.
Continue


I am passionate about web technologies and willing to learn. I have created web sites by using HTML, CSS, Bootstrap and JavaScript. I’m hoping to explore a web developer role at a company that shares my passion.
Reskinning old webpages with bootstrap and implementing interactions using jQuery. Resolving defects raised by QA teams and Product owners. Following Agile methodology by having three weeks iterations
Implemented a new methodology and establish the process of testing. Collaborated closely with the development team so as to detect and fix bugs. Operated with Agile methodology by having two weeks iterations.
Collaborated with non-Korean developer in order to deliver the needs from Korean business. Maintained the official websites and mobile-applications and updated when it was necessary. Translated documentations from English to Korean, vice versa.
GPA: 3.39/4.50


[name]
While importing three.js via script tags is a great way to get up and running fast, it has a few drawbacks for longer lived projects, for example:
- You have to manually fetch and include a copy of the library as part of your project's source code
- Updating the library's version is a manual process
- When checking in a new version of the library your version control diffs are cluttered by the many lines of the build file
Using a dependency manager like npm avoids these caveats by allowing you to simply download and import your desired version of the library onto your machine.
Installation via npm
Three.js is published as an npm module, see: [link:https://www.npmjs.com/package/three npm]. This means all you need to do to include three.js into your project is run "npm install three"
Importing the module
Assuming that you're bundling your files with a tool such as [link:https://webpack.github.io/ Webpack] or [link:https://github.com/substack/node-browserify Browserify], which allow you to "require('modules')" in the browser by bundling up all of your dependencies.
You should now be able to import the module into your source files and continue to use it as per normal.
var THREE = require('three');
var scene = new THREE.Scene();
...
You're also able to leverage [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import ES6 import syntax]:
import * as THREE from 'three';
const scene = new THREE.Scene();
...
or if you wish to import only select parts of three.js library, for example Scene:
import { Scene } from 'three';
const scene = new Scene();
...
Importable Examples
The core of three.js is focused on the most important components of a 3D engine. Many other components like loaders or controls are part of the
examples directory. three.js ensures that these files are kept in sync with the core but users have to import them separately if they are required
for their project. However, not all files are modules which makes their usage in certain cases inconvenient. In order to address this issue,
we are working to provide all the examples as modules in the [link:https://github.com/mrdoob/three.js/tree/master/examples/jsm examples/jsm] directory.
If you install three.js via npm, you can import them like so:
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
The following examples files are already available as modules:
- animation
- AnimationClipCreator
- CCDIKSolver
- MMDAnimationHelper
- MMDPhysics
- TimelinerController
- cameras
- controls
- DeviceOrientationControls
- DragControls
- EditorControls
- FirstPersonControls
- FlyControls
- MapControls
- OrbitControls
- OrthographicTrackballControls
- PointerLockControls
- TrackballControls
- TransformControls
- curves
- CurveExtras
- NURBSCurve
- NURBSSurface
- NURBSUtils
- effects
- AnaglyphEffect
- AsciiEffect
- OutlineEffect
- ParallaxBarrierEffect
- PeppersGhostEffect
- StereoEffect
- exporters
- ColladaExporter
- DRACOExporter
- GLTFExporter
- MMDExporter
- OBJExporter
- PLYExporter
- STLExporter
- TypedGeometryExporter
- geometries
- BoxLineGeometry
- ConvexGeometry
- DecalGeometry
- ParametricGeometries
- TeapotBufferGeometry
- interactive
- SelectionBox
- SelectionHelper
- lights
- LightProbeGenerator
- RectAreaLightUniformsLib
- lines
- Line2
- LineGeometry
- LineMaterial
- LineSegments2
- LineSegmentsGeometry
- Wireframe
- WireframeGeometry2
- loaders
- ctm
- deprecated
- LegacyGLTFLoader
- LegacyJSONLoader
- 3MFLoader
- AMFLoader
- AWDLoader
- AssimpJSONLoader
- AssimpLoader
- BabylonLoader
- BasisTextureLoader
- BVHLoader
- ColladaLoader
- DDSLoader
- DRACOLoader
- EXRLoader
- EquirectangularToCubeGenerator
- FBXLoader
- GCodeLoader
- GLTFLoader
- HDRCubeTextureLoader
- KMZLoader
- KTXLoader
- LWOLoader
- MD2Loader
- MMDLoader
- MTLLoader
- NRRDLoader
- OBJLoader
- PCDLoader
- PDBLoader
- PlayCanvasLoader
- PLYLoader
- PRWMLoader
- PVRLoader
- RGBELoader
- STLLoader
- SVGLoader
- TDSLoader
- TGALoader
- TTFLoader
- VRMLLoader
- VRMLoader
- VTKLoader
- XLoader
- math
- ColorConverter
- ConvexHull
- ImprovedNoise
- Lut
- SimplexNoise
- misc
- CarControls
- ConvexObjectBreaker
- GPUComputationRenderer
- Gyroscope
- MD2Character
- MD2CharacterComplex
- MorphAnimMesh
- MorphBlendMesh
- Ocean
- RollerCoaster
- Volume
- VolumeSlice
- modifiers
- ExplodeModifier
- SimplifyModifier
- SubdivisionModifier
- TessellateModifier
- objects
- Fire
- Lensflare
- Reflector
- Refractor
- ReflectorRTT
- ShadowMesh
- Sky
- Water
- Water2
- pmrem
- PMREMCubeUVPacker
- PMREMGenerator
- postprocessing
- AdaptiveToneMappingPass
- AfterimagePass
- BloomPass
- BokehPass
- ClearPass
- CubeTexturePass
- DotScreenPass
- EffectComposer
- FilmPass
- GlitchPass
- HalftonePass
- MaskPass
- OutlinePass
- RenderPass
- SAOPass
- SavePass
- ShaderPass
- SMAAPass
- SSAARenderPass
- SSAOPass
- TAARenderPass
- TexturePass
- UnrealBloomPass
- renderers
- CSS2DRenderer
- CSS3DRenderer
- Projector
- SoftwareRenderer
- SVGRenderer
- RaytracingRenderer
- WebGLDeferredRenderer
- shaders
- AfterimageShader
- BasicShader
- BleachBypassShader
- BlendShader
- BokehShader
- BokehShader2
- BrightnessContrastShader
- ColorCorrectionShader
- ColorifyShader
- ConvolutionShader
- CopyShader
- DepthLimitedBlurShader
- DigitalGlitch
- DOFMipMapShader
- DotScreenShader
- FilmShader
- FocusShader
- FreiChenShader
- FresnelShader
- FXAAShader
- GammaCorrectionShader
- GodRaysShader
- HalftoneShader
- HorizontalBlurShader
- HorizontalTiltShiftShader
- HueSaturationShader
- KaleidoShader
- LuminosityHighPassShader
- LuminosityShader
- MirrorShader
- NormalMapShader
- OceanShaders
- ParallaxShader
- PixelShader
- RGBShiftShader
- SAOShader
- SepiaShader
- SkinShader
- SMAAShader
- SobelOperatorShader
- SSAOShader
- TechnicolorShader
- TerrainShader
- ToneMapShader
- ToonShader
- TranslucentShader
- TriangleBlurShader
- UnpackDepthRGBAShader
- VerticalBlurShader
- VerticalTiltShiftShader
- VignetteShader
- VolumeShader
- WaterRefractionShader
- utils
- BufferGeometryUtils
- GeometryUtils
- MathUtils
- SceneUtils
- ShadowMapViewer
- SkeletonUtils
- TypedArrayUtils
- UVsDebug
- vr
- deprecated
- DaydreamController
- GearVRController
- PaintViveController
- ViveController
Note: When using code from the examples directory, it's important that all files match the version of
your three.js main file. For example, it's not acceptable to use *GLTFLoader* and *OrbitControls* from R96 together
with three.js R103. You can easily keep your files in sync by using the modules from the JSM directory. If the file
is not available as a module, you can still use third-party npm packages or convert the file to a module by yourself.
In both cases, ensure the code is compatible with your three.js main file.


THE MASK OF ZORRO A film review by David N. Butterworth Copyright 1998 David N. Butterworth
**1/2 (out of ****)
Douglas Fairbanks made his "mark" in 1920, as did Tyrone Power twenty years later. John Carroll "rode again" in 1959. Now it's the turn of Latin heartthrob Antonio Banderas to wear the mask of Zorro. Whether the titular reference be a sign, a ghost, a whip, or a son, the umpteen big- and small-screen variants of the Zorro legend have, by now, milked the living daylights out of the masked avenger who carves his name--or at least his initial--with pride.
While one might have expected a revisionist version of this classic tale for today's audiences, the producers of "The Mask of Zorro" have decided to play this go-round surprisingly straight. Unfortunately, they don't play it straight enough, choosing to pad the two-hours-plus running time with awkward moments of slapstick, primarily on the part of Banderas, which dilute the otherwise splashy, hot-blooded proceedings.
It's almost as if a pre-release audience decided that this interpretation wasn't funny enough.
"Zorro, the Gay Blade," a 1981 spoof starring George Hamilton, was more focused in its lampooning of the title character and a better choice if you're looking for something camp. But when Zorro reminds you more of Inigo Montoya from "The Princess Bride" than he does Errol Flynn buckling swashes, it's clear that the makers of "The Mask of Zorro"--let's blame "GoldenEye" director Martin Campbell--have made a miscalculation somewhere.
Still, when Banderas (or his horse) isn't acting cute, "The Mask of Zorro" is eminently watchable, suffused with solid readings from Anthony Hopkins as Don Diego de la Vega (the older, wiser Zorro), Catherine Zeta-Jones (from British television's "The Darling Buds of May") as his beautiful daughter Elena, and not one but two odious villains to hiss at.
The film opens in old Spanish California, circa 1821. The Baja natives have found a champion in their midst, a mysterious masked man known only as Zorro, who protects them from the money-grubbing land barons. Mean, lean Spanish governor Don Rafael Montero (Stuart Wilson) discovers the identity of Zorro and in the struggle surrounding his apprehension, kills de la Vega's wife and abducts his infant daughter, claiming her as his own.
Twenty years later when Montero returns with plans to make California a republic, de la Vega escapes from prison and takes a common thief, Alejandro Murrieta (Banderas) under his tutelage, grooming him as the next Zorro.
Zeta-Jones, in her first big production since the ill-conceived "The Phantom," gives an uplifting performance as Elena, who finally discovers the truth behind her origins. Elena proves she can parry with the best of them, which is why it's disappointing that her sword fight with Zorro culminates with our black-clad hero stripping her of her dignity. Hopkins is typically commanding as the retired caped crusader (who hangs out in a cave like that other one), and Banderas is suave and dashing as his protégé. In fact, "The Mask of Zorro" fully exploits the good looks of all three of its leads.
Try to ignore the brief farcical lapses and you should find "The Mask of Zorro" to be a flamboyant, rousing display of derring-do.
-- David N. Butterworth<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Pizzaro Pizza was started in the year 2014 by a group of young motivated enterpreuners who wanted to offer quality, healthy and affordable pizzas.We have a dedicated team ready to be of service to our esteem customers.
GreekPizza
HuwaiPizza
NaplesPizza
NeapoletanPizza
New YorkPizza
ChicagoPizza
DetroitPizza


Daily Averages displays the average number of devices detected every day for the selected date range in 15 minute intervals.
Range data is the total number of devices detected at set periods for the selected date range. You can choose between 15 minute or 30 minute intervals.


| deleteAllVisibleCookies |
|
|
| setTimeout |
100000 |
|
| open |
/vivo/ |
|
| assertTitle |
VIVO |
|
| clickAndWait |
link=Log in |
|
| assertTitle |
Log in to VIVO |
|
| type |
loginName |
<EMAIL_ADDRESS>|
| type |
loginPassword |
Password |
| clickAndWait |
loginForm |
|
| clickAndWait |
link=Index |
|
| clickAndWait |
link=Librarian |
|
| assertTitle |
Librarian |
|
| clickAndWait |
link=Librarian, Lily |
|
| assertTitle |
Librarian, Lily |
|
| clickAndWait |
xpath=(//img[@alt='add'])[9] |
|
| assertTitle |
Edit |
|
| select |
typeSelector |
label=Association |
| type |
id=activity |
LITA |
| type |
roleLabel |
Member at Large |
| type |
startField-year |
1999 |
| type |
endField-year |
2009 |
| clickAndWait |
submit |
|
| assertTitle |
Librarian, Lily |
|
| verifyElementPresent |
link=LITA |
|
| verifyTextPresent |
Member at Large 1999 - 2009 |
|
| clickAndWait |
link=LITA |
|
| assertTitle |
LITA |
|
| click |
css=li.selectedGroupTab.clickable |
|
| verifyElementPresent |
link=Librarian, Lily |
|
| verifyTextPresent |
Member at Large |
|
| verifyTextPresent |
1999 - 2009 |
|
| clickAndWait |
link=Librarian, Lily |
|
| assertTitle |
Librarian, Lily |
|
| clickAndWait |
link=LITA |
|
| assertTitle |
LITA |
|
| clickAndWait |
link=Edit this individual |
|
| assertTitle |
Individual Control Panel |
|
| verifyTextPresent |
LITA |
|
| verifyElementPresent |
link=contributor |
|
| verifyElementPresent |
link=Member at Large |
|
| clickAndWait |
//input[@value='Delete'] |
|
| assertConfirmation |
Are you sure you want to delete the property Member at Large contributor? |
|
| waitForPageToLoad |
5000 |
|
| refreshAndWait |
10000 |
|
| refreshAndWait |
10000 |
|
| refreshAndWait |
10000 |
|
| refreshAndWait |
10000 |
|
| refreshAndWait |
10000 |
|
| verifyTextPresent |
LITA |
|
| verifyElementNotPresent |
link=related role |
|
| verifyElementNotPresent |
link=Member at Large |
|
| clickAndWait |
link=Index |
|
| clickAndWait |
link=Librarian |
|
| assertTitle |
Librarian |
|
| clickAndWait |
link=Librarian, Lily |
|
| assertTitle |
Librarian, Lily |
|
| click |
//div[@id='wrapper-content']/ul/li[18] |
|
| verifyTextPresent |
missing activity Member at Large 1999 - 2009 |
|
| verifyElementPresent |
link=missing activity |
|
| clickAndWait |
xpath=(//img[@alt='edit this entry'])[5] |
|
| assertTitle |
Edit |
|
| verifyTextPresent |
Edit membership entry for Librarian, Lily |
|
| verifyTextPresent |
Membership In |
|
| clickAndWait |
submit |
|
| assertTitle |
Edit |
|
| verifyTextPresent |
Please select a type from the drop-down list. |
|
| verifyTextPresent |
Please select an existing value or enter a new value in the Name field. |
|
| select |
typeSelector |
label=Association |
| verifyTextPresent |
Edit membership entry for Librarian, Lily |
|
| verifyTextPresent |
Membership In |
|
| verifyTextPresent |
Organization Name |
|
| verifyTextPresent |
Role in Organization |
|
| verifyTextPresent |
Years of Participation |
|
| verifyTextPresent |
Start Year |
|
| verifyTextPresent |
End Year |
|
| clickAndWait |
submit |
|
| assertTitle |
Edit |
|
| verifyTextPresent |
Please select an existing value or enter a new value in the Name field. |
|
| type |
id=activity |
LITA Too |
| type |
id=roleLabel |
Member at Large |
| type |
id=startField-year |
1999 |
| type |
id=endField-year |
2009 |
| clickAndWait |
submit |
|
| assertTitle |
Librarian, Lily |
|
| verifyTextPresent |
Member at Large 1999 - 2009 |
|
| verifyElementPresent |
link=LITA Too |
|
| clickAndWait |
link=Home |
|
| clickAndWait |
link=Log out |
|
| assertTitle |
VIVO |
|


object Requirements
Defines a simple domain specific language for the specification of financial contracts. Currently covers:
using |
Throws IllegalArgumentException if the given expression evaluates to false. infix fun String.using(expr: Boolean): Unit |


Keyforge deck scoring
Lookup deck for AWP score
Enter a search term, deck id or master vault url to look up scores for a deck:
| Card name |
House |
Win Percentage |
WP score |
AWP information
Each cards Win Percentage (WP) is based on the amount of matches that has been recorded with decks that includes the card.
We count the total number of wins and losses for the card and calculate the Win Percentage:
WP = Wins_b / (Wins_b + Losses).
A decks Average Win Percentage is equal to the average Win Percentage score of each card in a deck:
AWP = (sum(WP_with - WP_without) / 36).
Where WP_with is equal to the win percentage of all decks featuring the card, and WP_without is equal to the win percentage of all decks
of the the same house without the card.
Note that we are simply measuring the relative amount any card improves a deck.
This removes the bias of some houses/house combinations, such as Shadows, which on average have a higher win percentages than other decks.
This gives us a more accurate representation of what is the good and bad card to have in any Individual deck, but it
means that we cannot to some extent compare score absolutly accross houses.
Since tournaments often ends up with an odd number of poeple, a lot of byes are expected. This skews the data to have more wins than losses.
If we assume all byes comes from real byes, and not walkovers, we can adjust all wins by the factor of total byes:
Wins_b = Wins * [1 - (wins - losses)/(wins + losses)].
Some cards are rarer than others and might have less accurate averages. This will even out as more game are recorded.
Individual card WP score
| # |
Card name |
House |
Wins |
Wins - Byes |
Losses |
Win % |
Win % without |
AWP |
Individual house WP score
| # |
House |
Wins |
Wins - Byes |
Losses |
Win % |
Win % without |
WP score |
House combination WP score
| # |
House Combination |
Wins |
Wins - Byes |
Losses |
Win % |
Win % without |
WP score |
Top 100 decks
| # |
Deck name |
AWP score |
Power Level |
Wins |
Losses |
Chains |
Median 100 deck
| # |
Deck name |
AWP score |
Power Level |
Wins |
Losses |
Chains |
Bottom 100 decks
| # |
Deck name |
AWP score |
Power Level |
Wins |
Losses |
Chains |
AWP score distribution over all decks


PARADISE LOST: THE CHILD MURDERS AT ROBIN HOOD HILLS A film review by Scott Renshaw Copyright 1996 Scott Renshaw
(Gotham) Documentary by Bruce Sinofsky and Joe Berlinger. MPAA Rating: Not rated (graphic depictions of corpses, profanity) Running Time: 150 minutes. Reviewed by Scott Renshaw. (*Note: PARADISE LOST premiered on HBO this summer prior to its theatrical release)
Three years ago, I might have given a perfect rating to PARADISE LOST: THE CHILD MURDERS AT ROBIN HOOD HILLS; two years from now, I might be similarly inclined to honor it. Such are the vagaries of critical opinion, that temporal beast, that I found my experience of Joe Berlinger and Bruce Sinofsky's documentary both enhanced and diminished by recent pervasive coverage of high-profile murder cases. As a carefully constructed detective story, PARADISE LOST is riveting; as a study of small town America at its best and its worst, it is compelling. However, as an examination of publicly-aired grief and suspicion of the criminal justice system, it is merely exemplary rather than extraordinary.
PARADISE LOST begins with chilling footage of a May 5, 1993 crime scene outside of West Memphis, Arkansas: 8-year-old classmates Michael Moore, Steven Branch and Christopher Byers have been hot-tied, beaten and stabbed to death, and Byers castrated. The murders naturally outrage the insular and deeply religious community, and families of the victims are only too ready to believe the worst when three likely enough suspects are arrested. 17-year-old Jessie Misskelley confesses under police questioning to participating in a Satanic ritual in which the three boys were killed, and implicates 16-year-old Jason Baldwin and 18-year-old Damien Echols as well. Damien, an occult-fascinated, heavy metal-listening eccentric, is particularly tailor-made for prosecution, but there are potential problems with the case. Jessie has an IQ of only 72, and his confession is riddled with inconsistencies. There also happens to be virtually no physical evidence, and plenty to suggest that the crimes may have occurred somewhere beside the muddy ditch where the bodies were found.
The first half hour of PARADISE LOST introduces us to a fascinating cast of characters, and to a setting which is as critical to the case as any piece of evidence. John Mark Byers, stepfather of victim Christopher Byers, is shown in a tirade against the killers laced both with hatred and with Scripture, and he becomes a personification of a town as obsessed with its perceptions of the devil as it is steadfast in its Christianity. There are moments of powerful emotional honesty which capture the deep conflict between the need for catharsis and the call for forgiveness -- one victim's grandfather holds back tears as he refuses to hate the accused teens, while Byers' mother lashes out against them and "the mothers that bore them." Hovering over the proceedings like a dark angel is the film's most enigmatic figure, Damien Echols -- a perceptive, self-absorbed and vaguely frightening young man who is like a Satanist from central casting. Misskelley and Baldwin, both tiny and timid, seem physically incapable of the crimes; when Echols takes the stand, toying with his hair and answering questions as though the world were wasting his time, you can see him digging shovelsful of his own grave.
The courtroom scenes are rife with the kind of confrontations familiar from both fictional and real-life proceedings, but the knowledge of its reality makes every unexpected revelation all the more enthralling. For much of the film, Sinofsky and Berlinger let the trials of Misskelley (tried separately) and Baldwin and Echols unfold slowly, and it seems their focus is the railroading of the three accused boys as a result of their outsider status. Then new bits of evidence keep exploding like land mines. Another possible suspect emerges after turning over a weapon to the film-makers; Damien's testimony appears to trip him up; another character is revealed to have a brain tumor. It is a case of such complexity that any amateur juror who has railed against noteworthy verdicts should be forced to watch PARADISE LOST as a civics lesson.
The courtroom drama of PARADISE LOST is certainly intriguing, but I think the film spends a bit too much time in the courtroom, because the actual evidence is only half the story. When Sinofsky and Berlinger spend time with the families, they force us to confront the scars the families on both sides will bear, and to confront our own preconceptions in the process. At the same time, it was difficult to listen to the righteous wrath of the victims' parents and not recall the media trials waged by the fathers of Ronald Goldman (in the O.J. Simpson trial) and Polly Klaas (a much-publicized California rape-murder case). Outrage against the concept of presumed innocence just isn't news in this age, and PARADISE LOST simply underlines this trend rather than exposing it. That is not to diminish its power -- PARADISE LOST will have you asking yourself questions long after it ends. Perhaps by the time I reach my own personal verdict, its power will have overwhelmed its familiarity entirely.
On the Renshaw scale of 0 to 10 cult classics: 8.
Visit Scott Renshaw's MoviePage http://www-leland.stanford.edu/~srenshaw Subscribe to receive reviews directly via email See details on the MoviePage
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


How do browsers produce 3D effects?
Browser handles 3D during composition.
Browser offloads 3D rendering to 3D context and GPU.
Primary ways users interact with the web?
User Experience for these types of interactions within a 3D setting is critical.
Input is binary.
Input is two dimensional.
Input is one dimensional.
Selection was generally easier to get right
Related Research


Demonstrates the Model API by dynamically changing data visualized using Chart.js. The result is a highly dynamic visual experience.
Shows how the Activity API can be used to share remote pointers. User can see where eah others pointers are and where they are clicking.
A simple chat room example. Users can join any chat room by name and send messages to other users in the chat room.
This examples demonstrates how the standard JQuery implementation of the Todo MVC is easily enhanced with real time capabilities using Convergence.
A example which shows how the ACE Editor can be easily adapted to support rich collaborative editing. The example demonstrates the model reference API.
A simple example which shows how the Convergence Input Element Binder can be used to easily enable collaborative behavior to regular form elements.
Demonstrates how the integration between JointJS and Convergence can deliver a collaborative graphing experience. Also see the @convergence/joint-utils project.
A simple example which shows how the Convergence Dom Utils can be used to enable rich text content editing.
A lightweight example showing collaborative rich text editing using the Froala WYSIWYG HTML Editor.


Symbols
| A
| B
| C
| D
| E
| F
| G
| H
| I
| K
| L
| M
| N
| O
| P
| Q
| R
| S
| T
| U
| V
| W
| X
| Y
Index: C
- c command (sed)
: 5.5. Append, Insert, and Change
- capitalization, converting
- 5.7. Transform
- 6.3.1. A Capital Transformation
- 9.2. String Functions
- 9.2.4. Converting Case
- case sensitivity
- 3.1. That's an Expression
- 9.2.4. Converting Case
- (see also capitalization, converting)
- character classes for
: 3.2.4. Character Classes
- IGNORECASE variable (gawk)
: <IP_ADDRESS>. Additional variables
- variable names
: 7.6. Expressions
- change command
: (see c command (sed))
- character classes
: 3.2.4. Character Classes
- characters
- hiding special
: 12.3.1. How to Hide a Special Character
- matching at word start/end
: 3.2.11. What's the Word? Part II
- measured span of
- 3.2. A Line-Up of Characters
- 3.2.8. A Span of Characters
- metacharacters
: (see metacharacters)
- newline
: (see newline characters)
- range of
: (see character classes)
- space
: (see space characters)
- stripping non-printable nroff
: 5.6.1. Stripping Out Non-Printable Characters from nroff Files
- circumflex (^)
- ^= (assignment) operator
: 7.6. Expressions
- character classes and
- 3.2. A Line-Up of Characters
- <IP_ADDRESS>. Excluding a class of characters
- exponentiation operator
: 7.6. Expressions
- as metacharacter
- 3.2. A Line-Up of Characters
- 3.2.7. Positional Metacharacters
- in multiline pattern space
: 6.1.1. Append Next Line
- close()
- 10.2. The close() Function
- 10.5.2. Working with Multiple Files
- closing files/pipes
- 10.2. The close() Function
- 10.5.2. Working with Multiple Files
- closure
: 3.2.5. Repeated Occurrences of a Character
- collating symbols
: <IP_ADDRESS>. POSIX character class additions
- colon (:) for labels
: 6.4. Advanced Flow Control Commands
- columns, output as
: 10.6. Generating Columnar Reports
- combine script (example)
: 13.3. combine - Extract Multipart uuencoded Binaries
- "command garbled" message
- <IP_ADDRESS>. Command garbled
- 5.1. About the Syntax of sed Commands
- command-line options, gawk
: <IP_ADDRESS>. Command line options
- command-line parameters
- array of
: 8.6.1. An Array of Command-Line Parameters
- passing into script
: 7.10. Passing Parameters Into a Script
- command-line syntax
- 2.2. Command-Line Syntax
- A.1. Command-Line Syntax
- B.1. Command-Line Syntax
- commands
- 2.4.1. Running awk
- (see also under specific command)
- awk
: B.3. Command Summary for awk
- executing expressions as
: 10.3. The system() Function
- grouping
- 4.2.1. Grouping Commands
- 5.1. About the Syntax of sed Commands
- menu-based generator (example)
: 10.4. A Menu-Based Command Generator
- multiple
: 2.4.1. Running awk
- order of
: 4.1. Applying Commands in a Script
- sed
- 5. Basic sed Commands
- 6. Advanced sed Commands
- A.3. Command Summary for sed
- syntax for
: A.2. Syntax of sed Commands
- comments
- 5.2. Comment
- 10.7.4. Commenting Out Loud
- B.2.2.2. Comments
- in awk scripts
: 7.4.1. Describing Your Script
- commercial versions of awk
: 11.3. Commercial awks
- comparing
- relationship operators for
: 7.8. Relational and Boolean Operators
- strings
: 9.2.5. The match() Function
- concatenation
- 3.1. That's an Expression
- 7.6. Expressions
- conditional statements
- 8.1. Conditional Statements
- 11.1.3. The C Conditional Expression
- constants
: B.2.5.1. Constants
- constants, hexadecimal (tawk)
: <IP_ADDRESS>. Tawk language extensions
- continue statement
: 8.3. Other Statements That Affect Flow Control
- continued lines
: <IP_ADDRESS>. Line continuation
- converting
: 8.4.5. Making Conversions
- acronym processor (example)
: 8.5. An Acronym Processor
- case
: 9.2.4. Converting Case
- numbers to strings
: 7.7. System Variables
- CONVFMT variable
- 7.7. System Variables
- 8.4.1. Associative Arrays
- copying programs
: 10.7.1. Make a Copy
- cos()
: 9.1.1. Trigonometric Functions
- counters in for loops
: 8.2.3. For Loop
- cross-referencing scheme
: 1.1. May You Solve Interesting Problems
- csh shell
- 1.4. Four Hurdles to Mastering sed and awk
- 2.3.1. Specifying Simple Instructions
- curly braces
: (see braces)
- customizing functions
: 9.3. Writing Your Own Functions
Symbols
| A
| B
| C
| D
| E
| F
| G
| H
| I
| K
| L
| M
| N
| O
| P
| Q
| R
| S
| T
| U
| V
| W
| X
| Y
Copyright © 1998
O'Reilly & Associates, Inc.
All Rights Reserved.


File: ../src/away/materials/lightpickers/StaticLightPicker.ts
///<reference path="../../_definitions.ts"/> module away.materials { //import flash.events.Event; //import away3d.events.LightEvent; //import away3d.lights.DirectionalLight; //import away3d.lights.LightBase; //import away3d.lights.LightProbe; //import away3d.lights.PointLight; /** * StaticLightPicker is a light picker that provides a static set of lights. The lights can be reassigned, but * if the configuration changes (number of directional lights, point lights, etc), a material recompilation may * occur. */ export class StaticLightPicker extends LightPickerBase { private _lights : any[] ; // not typed in AS3 - should it be lightbase ? /** * Creates a new StaticLightPicker object. * @param lights The lights to be used for shading. */ constructor(lights) { super(); this.lights = lights; } /** * The lights used for shading. */ public get lights() { return this._lights; } public set lights(value : any[] ) { var numPointLights:number = 0; var numDirectionalLights:number = 0; var numCastingPointLights:number = 0; var numCastingDirectionalLights:number = 0; var numLightProbes:number = 0; var light:away.lights.LightBase; if (this._lights) this.clearListeners(); this._lights = value; this._pAllPickedLights = value; this._pPointLights = new Array<away.lights.PointLight>(); this._pCastingPointLights = new Array<away.lights.PointLight>(); this._pDirectionalLights = new Array<away.lights.DirectionalLight>(); this._pCastingDirectionalLights = new Array<away.lights.DirectionalLight>(); this._pLightProbes = new Array<away.lights.LightProbe>(); var len:number = value.length; for (var i:number = 0; i < len; ++i) { light = value[i]; light.addEventListener(away.events.LightEvent.CASTS_SHADOW_CHANGE, this.onCastShadowChange , this ); if (light instanceof away.lights.PointLight) { if (light.castsShadows) this._pCastingPointLights[numCastingPointLights++] = <away.lights.PointLight> light; else this._pPointLights[numPointLights++] = <away.lights.PointLight> light; } else if (light instanceof away.lights.DirectionalLight) { if (light.castsShadows) this._pCastingDirectionalLights[numCastingDirectionalLights++] = <away.lights.DirectionalLight> light; else this._pDirectionalLights[numDirectionalLights++] = <away.lights.DirectionalLight> light; } else if (light instanceof away.lights.LightProbe) { this._pLightProbes[numLightProbes++] = <away.lights.LightProbe> light; } } if (this._pNumDirectionalLights == numDirectionalLights && this._pNumPointLights == numPointLights && this._pNumLightProbes == numLightProbes && this._pNumCastingPointLights == numCastingPointLights && this._pNumCastingDirectionalLights == numCastingDirectionalLights) { return; } this._pNumDirectionalLights = numDirectionalLights; this._pNumCastingDirectionalLights = numCastingDirectionalLights; this._pNumPointLights = numPointLights; this._pNumCastingPointLights = numCastingPointLights; this._pNumLightProbes = numLightProbes; // MUST HAVE MULTIPLE OF 4 ELEMENTS! this._pLightProbeWeights = new Array<number>(Math.ceil(numLightProbes/4)*4 ); // notify material lights have changed this.dispatchEvent(new away.events.Event(away.events.Event.CHANGE)); } /** * Remove configuration change listeners on the lights. */ private clearListeners() { var len:number = this._lights.length; for (var i:number = 0; i < len; ++i) this._lights[i].removeEventListener(away.events.LightEvent.CASTS_SHADOW_CHANGE, this.onCastShadowChange , this ); } /** * Notifies the material of a configuration change. */ private onCastShadowChange(event:away.events.LightEvent) { // TODO: Assign to special caster collections, just append it to the lights in SinglePass // But keep seperated in multipass var light:away.lights.LightBase = <away.lights.LightBase > event.target; if (light instanceof away.lights.PointLight) { var pl : away.lights.PointLight = <away.lights.PointLight> light; this.updatePointCasting( pl ); } else if (light instanceof away.lights.DirectionalLight) { var dl : away.lights.DirectionalLight = <away.lights.DirectionalLight> light; this.updateDirectionalCasting( dl ); } this.dispatchEvent(new away.events.Event(away.events.Event.CHANGE)); } /** * Called when a directional light's shadow casting configuration changes. */ private updateDirectionalCasting(light:away.lights.DirectionalLight) { var dl : away.lights.DirectionalLight = <away.lights.DirectionalLight> light; if (light.castsShadows) { -- this._pNumDirectionalLights; ++this._pNumCastingDirectionalLights; this._pDirectionalLights.splice(this._pDirectionalLights.indexOf( dl ), 1); this._pCastingDirectionalLights.push(light); } else { ++this._pNumDirectionalLights; --this._pNumCastingDirectionalLights; this._pCastingDirectionalLights.splice(this._pCastingDirectionalLights.indexOf( dl ), 1); this._pDirectionalLights.push(light); } } /** * Called when a point light's shadow casting configuration changes. */ private updatePointCasting(light:away.lights.PointLight) { var pl : away.lights.PointLight = <away.lights.PointLight> light; if (light.castsShadows) { --this._pNumPointLights; ++this._pNumCastingPointLights; this._pPointLights.splice( this._pPointLights.indexOf( pl ), 1); this._pCastingPointLights.push(light); } else { ++this._pNumPointLights; --this._pNumCastingPointLights; this._pCastingPointLights.splice(this._pCastingPointLights.indexOf( pl ) , 1); this._pPointLights.push(light); } } } }


Flawless services for
excellent products!
We offer you the expertise you’ve been looking for to build stable, scalable and, advanced products. No compromises, only promises that are held.
- Web Development
- Mobile Development
- Cloud Services
- Business Analysis
- Project Management
- Product Design
- Quality Assurance
- Maintenance Services
Our Services


Error while interpolating: {0} Strict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce
This error occurs when performing an interpolation that concatenates multiple expressions when a trusted value is required. Concatenating expressions makes it hard to reason about whether some combination of concatenated values are unsafe to use and could easily lead to XSS.
For more information about how AngularJS helps keep your app secure, refer to the $sce API doc.


0"
id="carouselVehicles"
class="carousel slide container"
data-ride="carousel"
style="padding: 0;"
>
Previous
Next
{{ vehicle.make }} - {{ vehicle.model }}
{{ vehicle.user.city || '' }}
Specifications
€{{ vehicle.price }} per day
Extra Information
Vehicle Type: {{ vehicle.type }}
Color: {{ vehicle.colour }}
Mileage: {{ vehicle.mileage }} km
You can only reserve a car if you log in.


Contact the Team
If you want to get in touch with the BloodSpell team, please email us at:
info (at) bloodspell (dot) com.
If you're interested in following what else Hugh Hancock and the BloodSpell team are doing, check out:
Death Knight Love Story
the new film from Strange Company
MMO Melting Pot
the best of the MMO blogosphere
If you want to get in touch with the BloodSpell team, please email us at:
info (at) bloodspell (dot) com.


We collect information from you when you register on our site or mobile application, book a service, or fill out a form.
When booking a service or registering on our site or mobile application, as appropriate, you may be asked to enter your: name, e-mail address, address, phone number,or credit card information. Google, as a third party vendor, uses cookies to serve ads on your site. Google's use of the DART cookie enables it to serve ads to your users based on their visit to your sites and other sites on the Internet. Users may opt out of the use of the DART cookie by visiting the Google ad and content network privacy policy.
Any of the information we collect from you may be used in one of the following ways:
Your information, whether public or private, will not be sold, exchanged, transferred, or given to any other company for any reason whatsoever, without your consent, other than for the express purpose of delivering the purchased product or service requested, to administer a contest, promotion, survey or other site feature or to send periodic emails.
The email address you provide for order processing, may be used to send you information and updates pertaining to your order, in addition to receiving occasional company news, updates, related product or service information, etc.
Note: If at any time you would like to unsubscribe from receiving future emails, we include detailed unsubscribe instructions at the bottom of each email.
We implement a variety of security measures to maintain the safety of your personal information when you place an order or enter, submit, or access your personal information.
We offer the use of a secure server. All supplied sensitive/credit information is transmitted via Secure Socket Layer (SSL) technology and then encrypted into our Database to be only accessed by those authorized with special access rights to our systems, and are required to?keep the information confidential.
After a transaction, your private information (credit cards, social security numbers, financials, etc.) will not be kept on file for more than 60 days.
Yes. Cookies are small files that a site or its service provider transfers to your computers hard drive through your Web browser (if you allow them) that enable the sites or service providers systems to recognize your browser and capture and remember certain information
We use cookies to help us remember and process the items in your shopping cart, understand and save your preferences for future visits, keep track of advertisements and compile aggregate data about site traffic and site interaction so that we can offer better site experiences and tools in the future. We may contract with third-party service providers to assist us in better understanding our site visitors. These service providers are not permitted to use the information collected on our behalf except to help us conduct and improve our business.
 Like most websites, if you turn your cookies off, some of our services may not function properly. However, you can still place orders over the telephone or by contacting customer service.
We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our website, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety. However, non-personally identifiable visitor information may be provided to other parties for marketing, advertising, or other uses.
Occasionally, at our discretion, we may include or offer third party products or services on our website. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these linked sites. Nonetheless, we seek to protect the integrity of our site and welcome any feedback about these sites.
Because we value your privacy we have taken the necessary precautions to be in compliance with the Online Privacy Protection Act. We therefore will not distribute your personal information to outside parties without your consent.
As part of the Online Privacy Protection Act, all users of our site may make any changes to their information at anytime by logging into their control panel and going to the 'Edit Profile' page.
This online privacy policy applies only to information collected through our website and not to information collected offline.
By using our site or mobile application, you consent to our web site privacy policy.
If we decide to change our privacy policy, we will post those changes on this page, send an email notifying you of any changes, and/or update the Privacy Policy modification date below.


Flireh1291.github.io
Beko manuals from the Freezer category - BKManuals.
Beko Freezer Drawer - how-to-repair.com.
Beko manuals from the Freezer category Click on the letter from the alphabet below and you will be directed to the list of models starting with this very letter. Arrange a visit from a Beko engineer. If you do need an engineer to visit your home, help is at hand. We ll arrange for a Beko engineer near you to call in and fix your appliance, at a time that s suitable for you. Book online or give us a call on 0208 226 3633. (London Only - Coverage Area). Our appliance spare parts videos provide detailed repair guides on cookers, washing machines, tumble dryers, dishwashers, fridges and cooker hoods. They range from changing an element, replacing a pump or renewing
Beko GNE114622X Pdf User Manuals. View online or download Beko GNE114622X User Manual. Beko is a global domestic appliance and consumer electronics brand which provides a wide product range to make the best use of space Error Codes - Beko Appliances Fault Codes - Help and Advice. GNE114622X. GNE114632X Please read this user manual first! Dear Customer, We hope that your product, which has been produced in modern plants and checked under the most meticulous quality control procedures, will provide you an effective service. About Us; Contact Us; Call 0844 9777 888 (7p per min + any network access charge). PDF Refrigerator GNE114622X Kühlschrank GNE114632X GNE114632X 3- or 4-doors - be.beko.com.


class AccountUpdateOperationBuilder : Builder<AccountUpdateOperation>
Represents builder for AccountUpdateOperation. Checks required data.
Author
Daria Pechkovskaya
<init> |
Represents builder for AccountUpdateOperation. Checks required data. AccountUpdateOperationBuilder() |
build |
Must be implemented and return the factory is supposed to build. fun build(): AccountUpdateOperation |
setAccount |
Sets account for updating fun setAccount(account: Account): AccountUpdateOperationBuilder |
setActive |
Sets new active EdAuthority for account fun setActive(active: EdAuthority): AccountUpdateOperationBuilder |
setEdKey |
Sets new echorand ed key edKey for account fun setEdKey(edKey: String): AccountUpdateOperationBuilder |
setFee |
Sets actual fee AssetAmount for operation fun setFee(fee: AssetAmount): AccountUpdateOperationBuilder |
setOptions |
Sets new options for account fun setOptions(newOptions: AccountOptions): AccountUpdateOperationBuilder |


I am a hard working Individual who has a 1st class BSc Computer Science Undergraduate degree from Middlesex University.
Knowledge of coding in HTML5 from my time at university and by creating website in my own time.
Know how to make design changes in CSS3 from my time at university and creating websites in my own time.
Learnt how to code in Java during my time at university.
Know how to code in PHP.
Knowledge in creating databases in MySQL
Knowledge in creating Applications in Android


I have got absolutely no clue what I'm doing
But that's okay, right? Truth be told, this is the first proper website I've made. Before this, I've always used wordpress or some shitty WYSIWYG. I ain't about that life no more.  So this is the result. It's a page served to you with a Python module called FastAPI. I really didn't need to use FastAPI for this. Hell, Python didn't need to be part of this project at all.  But nah, that would be boring. I'm going to abuse and exploit my knowledge as much as I can. See below for an important message from our corporate sponsors:
%spicy_bullshit%


JEC ROBO
WORLD
HOME
TUTORIAL
History
IMAGE GALLERY
Alumni
IMAGE GALLERY
Techniche
participated in the glydo rama competition organised by iit Guwahati
Technice 2019 moments
IIt bombay techfest winning moments
VISION ROBOTRICKS WORKSHOP by ROBOSAPIENS INDIA
VISION ROBOTRICKS WORKSHOP by ROBOSAPIENS INDIA organised by Jec ROBOWORLD , 2011
astu hackathon,2019
Technospere moments ,2018
Robo War Technovus
Robo War
Technovus moments
Technovus moments RoboNox
Technovus moments RoboSoccer
ASME HPVC competition Vellor


Pair of integer labels identifying a Face within its Zone.
More...
#include <Face.h>
Pair of integer labels identifying a Face within its Zone.
Definition at line 37 of file Face.h.
◆ FaceID() [1/2]
Default constructor.
Definition at line 46 of file Face.h.
◆ FaceID() [2/2]
| FaceID::FaceID |
( |
const size_t |
zid_in, |
|
|
const short int |
fid_in |
|
) |
| |
|
inline |
Parametrized constructor.
- Parameters
-
Definition at line 53 of file Face.h.
◆ operator!=()
| bool FaceID::operator!= |
( |
const FaceID & |
o | ) |
const |
|
inline |
Overloaded "not equal" comparison operator for class FaceID.
Definition at line 63 of file Face.h.
◆ operator==()
| bool FaceID::operator== |
( |
const FaceID & |
o | ) |
const |
|
inline |
Overloaded "equal" comparison operator for class FaceID.
Definition at line 57 of file Face.h.
◆ to_string()
| std::string FaceID::to_string |
( |
| ) |
const |
|
inline |
String representation of a FaceID object.
- Returns
- String representation of *this
Definition at line 72 of file Face.h.
◆ my_id
◆ my_zone
The documentation for this struct was generated from the following file:


{#- README file included on the index page -#}
Golinks allow assigning a short name for a URL prefix:
Once created, anything placed after the name will be appended to the resulting URL used for the redirect:
http://example.com/foo/
+ bar
)http://example.com/foo/
+ #test
)


--- title: How to work with Twitter API and R author: Sajib Devnath date: '2020-11-26' slug: how-to-work-with-twitter-api-and-r draft: true categories: - Learning tags: - api - twitter --- }}index.en_files/anchor-sections/anchor-sections.css" rel="stylesheet" />
Package needed: rtweet


The ACS asks questions about people's marital status and marital history to help understand marriage trends, and, when combined with other data, to help communities understand if the available social services and programs are meeting residents’ needs.
{% list_tables prefix="12" %}In addition to the core tables listed above, marital status is a factor in several tables associated with other subject areas.
{% list_tables topics='marital status' exclude_prefix="12" %}


Acknowledging the people who made KamandPrompt what it is
Goldman Sachs
Amazon India
CodeNation
Works Applications Co.
Booking.com


Home
Offers
Proposals
Elements
My Items
My Offers
My Proposals
My Items
Price
REX
Sell Duration
minutes
* The sum of item's chances must be 100 on each box!
Sell


Generates HTML for the toolbar item.
getItemHTML(item)
| item |
object, toolbar item object |
Returns HTML string.
Description
The first and only argument item is the item object. This method is called internally to
generate HTML for the item. The .items array holds all item objects for the
toolbar. There is no need to call this method directly, but it can be overwritten.
If you have toolbar defined in the following way:
You can get generate HTML for the item:


Alerter is easy to use! Click here to test it.
You can also hook an event for when your alert is hidden!
See the documentation for more info!