Introduction
Success Response (Single resource)
{
"data" : {
"key" : "value"
}
}
Success Response (Multiple resource)
{
"data" : [
{
"key" : "value"
},
{
"key" : "value"
}
]
}
Error Response
{
"error" : {
"message" : "Relevant error message",
"code" : "500"
}
}
Some fancy intro
For testing purpose, please use http://apis.sandbox.avana.asia/
Response
All response from the API is enveloped in a common envelope
Authentication
To authenticate using
client_credentials
grant, use the following:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded"\
-d 'grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET'\
"https://apis.avana.asia/v1/oauth/access_token"
//to be added
<?php
//to be added
To authenticate using
auth_code
grant, use the following following
# to be added
// to be added
<?php
//to be added
To authenticate using
password
grant, use the following following
curl -X POST -H "Content-Type: application/x-www-form-urlencoded"\
-d 'grant_type=password&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&username=USERNAME&password=PASSWORD' \
"https://apis.avana.asia/v1/oauth/access_token"
// to be added
<?php
//to be added
AVANA uses OAuth2 to allow access to the API and supports the following grants:
- Client Credentials (Trusted Third Party Platform)
- Authorization Code
- Resource Owner Password Credentials
Authentication Flow
Client Credentials
Plese refer to RFC6749 Section-4.4
Authorization Code
Plese refer to RFC6749 Section-4.1
Resource Owner Password Credentials
Plese refer to RFC6749 Section-4.1
access_token
is long lived.
AVANA expects for the access_token to be included in all API requests to the server in a header that looks like the following:
Authorization : Bearer access_token
Third Party API
Integration
In order for a third party to push product to AVANA platform, they will have to have the shop’s valid INTEGRATION_KEY, AVANA user must be able to add the INTEGRATION_KEY on third party’s platform.
Validating Integration Key
To validate
INTEGRATION_KEY
, use the following:
curl -X POST "https://apis.avana.asia/v1/vendor/integrate?integration_key=INTEGRATION_KEY -H "Authorization: Bearer access_token"
//to be added
<?php
//to be added
A successful response will look like the following
{
"data": [
{
"secure_key" : "SECURE_KEY",
"validity": true,
"shop_id": 1
}
]
}
A failed response will look like the following
{
"error": {
"message": "No shop is associated with this key: INTEGRATION_KEY",
"code": 500
}
}
All INTEGRATION_KEY that is being added must be validated against AVANA to make sure the INTEGRATION_KEY is a valid key. Upon successful validation, AVANA will respond with a shop_id
and SECURE_KEY
. This shop_id
can be used to keep track of activities that involes AVANA.
In order to push product to AVANA, the push product request must be accompined with the received SECURE_KEY
in Avana-Secure-Key
header.
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Request Parameter
| Name | Value |
|---|---|
integration_key |
INTEGRATION_KEY |
Product
Add Product
To add product, use the following:
curl -X POST -H "Avana-Secure-Key: secure_key" -H "Content-Type: application/json" -H "Accept: application/json" -H "Authorization: Bearer access_token"
-d '{
"name": "Product name",
"model": "Product model",
"category": "Product Category",
"option": {
"name": "Size",
"for": "Shirt",
"variation" : ["s","m","l"],
"quantity": {
"s" : 10,
"m" : 10,
"l" : 10
}
},
"quantity": 10,
"price": 12,
"description": "Product description",
"weight":{
"value" : 1,
"unit": "kg"
},
"primary_image": "http://example.org/images/image_1.png",
"images": ["http://example.org/images/image_2.png"],
"EDT": "1-2 Days",
"label" : ["label_1", "label_2", "label_3"],
"tax" : {
"value": 6,
"name": "GST"
},
"published": true
}' "https://apis.avana.asia/v1/vendor/product"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": [
{
"product_id": 1
}
]
}
A failed response will look like the following
{
"error": {
"message": "Adding product failed",
"code": 500
}
}
Edit Product
Mobile API
Registeration
//to be added
<?php
//to be added
End point
https://apis.avana.asia/v1/oauth/register
Request Method
POST
Request Header
| Name | Value |
|---|---|
Content-Type |
application/x-www-form-urlencoded |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
email |
email, |
password |
password, |
client_id |
CLIENT_ID , |
client_secret |
CLIENT_SECRET , |
grant_type |
register |
Possible error
to be added
//to be added
<?php
//to be added
End point
https://apis.avana.asia/v1/facebook/signon
Request Method
POST
Request Header
| Name | Value |
|---|---|
Content-Type |
application/x-www-form-urlencoded |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
access_token |
facebook access_token |
client_id |
CLIENT_ID , |
client_secret |
CLIENT_SECRET , |
grant_type |
facebook |
Possible error
to be added
Shop
Shop List
To get shop list of current logged in user, use the following:
curl -X GET -H "Authorization: Bearer access_token"\
-H "Content-Type: application/json" -H "Accept: application/json"\
"https://apis.avana.asia/v1/mobile/shop"
// to be added
<?php
//to be added
A successful response will look like the following
With data
{
"data": [
{
"id": 1,
"name": "Shop name one"
},
{
"id": 2,
"name": "Shop name two"
},
]
}
Without data
{
"data": []
}
Retrive the shop list for currently logged in user
End point
https://apis.avana.asia/v1/mobile/shop
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Shop Information
To get shop information, use the following:
curl -X GET -H "Authorization: Bearer access_token"\
-H "Content-Type: application/json" -H "Accept: application/json"\
"https://apis.avana.asia/v1/mobile/shop/{shop_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 1,
"shop_name": "Some Shop Name",
"profile_picture": "https://s3.amazonaws.com/uifaces/faces/twitter/nuraika/128.jpg",
"product": 11,
"order": 1,
"customer": 1,
"sales": 28
}
}
Retrive the information of a shop
End point
https://apis.avana.asia/v1/mobile/shop/{shop_id}
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Create Shop
To create a shop, use the following:
curl -X POST -H "Authorization: Bearer access_token"\
-H "Content-Type: application/json" -H "Accept: application/json"\
"https://apis.avana.asia/v1/mobile/shop?name=name&email=email&phone=phone"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 181,
"name": "Test Shop",
"phone": "0123456789",
"email"<EMAIL_ADDRESS>}
}
Create a shop
End point
https://apis.avana.asia/v1/mobile/shop
Request Method
POST
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
the shop name |
email |
the shop email |
phone |
the shop phone |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Order
Order List
To get the order list for a shop, use the following:
curl -X GET -H "Authorization: Bearer access_token"\
-H "Content-Type: application/json" -H "Accept: application/json"\
"https://apis.avana.asia/v1/mobile/shop/{shop_id}/order"
// to be added
<?php
//to be added
A successful response will look like the following
With data
{
"data": [
{
"id": 1,
"status": "Processing",
"customer_name": "Customer Name",
"date": "2016-04-18 12:07:53"
},
{
"id": 2,
"status": "Processing",
"customer_name": "Another Customer Name",
"date": "2016-04-18 11:07:53"
}
]
}
Without data
{
"data": []
}
Retrive the order list for a shop
End point
https://apis.avana.asia/v1/mobile/shop/{shop_id}/order
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
status |
Processing ,Shipped ,Refunded ,Pending ,Paid ,Cancelled |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Order Info
To get the info of a specific order, use the following:
curl -X GET -H "Authorization: Bearer access_token"\
-H "Content-Type: application/json" -H "Accept: application/json"\
"https://apis.avana.asia/v1/mobile/order/{order_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 779,
"sub_total": 20,
"shipping": 8,
"tax": 0,
"coupon": 0,
"total": 28,
"order_date": "2016-04-18 12:07:53",
"status": "Shipped",
"billing_name": "Avana",
"billing_company": "Avana.asia",
"billing_address1": "B-3-3A, Pacific Place Commercial Center",
"billing_address2": "Jalan PJU 1A/4, Ara Damansara",
"billing_city": "Petaling Jaya",
"billing_postcode": "47301",
"billing_state": "Selangor",
"billing_country": "Malaysia",
"billing_phone": "0122444444",
"billing_email"<EMAIL_ADDRESS>"shipping_name": "Avana",
"shipping_company": "Avana.asia",
"shipping_address1": "B-3-3A, Pacific Place Commercial Center",
"shipping_address2": "Jalan PJU 1A/4, Ara Damansara",
"shipping_city": "Petaling Jaya",
"shipping_postcode": "47301",
"shipping_state": "Selangor",
"shipping_country": "Malaysia",
"shipping_phone": "0122444444",
"shipping_email"<EMAIL_ADDRESS>"merchant_notes": "Completed",
"products": [
{
"id": 284,
"name": "Baby Booties",
"model": "Booties",
"quantity": 1,
"images": [
{
"path": "https://placekitten.com/500/300"
}
]
}
]
}
}
Retrive info of a specific order
End point
https://apis.avana.asia/v1/mobile/order/{order_id}
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 404 | Order not found | The requested order does not exist |
Tax
Tax List
To get the tax list for a shop, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/tax"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": [
{
"id": 1,
"name": "GST",
"value": "6.0000"
},
{
"id": 1,
"name": "Sales",
"value": "10.0000"
}
]
}
Retrive the tax list for a shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/tax
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Tax Info
To get a tax info, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/tax/{tax_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 1,
"name": "GST",
"value": "6.0000"
}
}
Retrive info for a tax
End point
https://apis.avana.asia/v1/mobile/tax/{tax_id}
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 404 | Tax not found | No tax found for the specified tax_id |
Create Tax
To create a tax, use the following:
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/tax?name={tax_name}&value={tax_value}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 1,
"name": "GST",
"value": "6.0000"
}
}
Create a tax for a shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/tax
Request Method
POST
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
tax name |
value |
tax value |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Update Tax
To update a tax, use the following:
curl -X PATCH -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/tax/{tax_id}?name={new_name}&value={new_value}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 1,
"name": "GST",
"value": "6.0000"
}
}
Update info for a tax
End point
https://apis.avana.asia/v1/mobile/tax/{tax_id}
Request Method
PATCH
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
tax name |
value |
tax value |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 500 | Input cannot be empty, accepted input: {valid_inputs} | Request cannot be empty, needs atleast one input |
| 500 | Invalid input({invalid_inputs}), accepted input: {valid_inputs} | Request needs a valid input |
Delete Tax
To delete a tax, use the following:
curl -X DELETE -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/tax/{tax_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"delete": true
}
}
Delete a tax
End point
https://apis.avana.asia/v1/mobile/tax/{tax_id}
Request Method
DELETE
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 404 | Tax not found | No tax found for the specified tax_id |
Label
Label List
To get label list for a specific shop, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/label"
// to be added
<?php
//to be added
A successful response will look like the following
With data
{
"data": [
{
"id": 1,
"name": "New Arrival"
},
{
"id": 2,
"name": "On Sale"
}
]
}
Without data
{
"data": []
}
Retrive the label list for a specific shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/label
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Label Info
To get a label info, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/label/{label_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 1,
"name": "New Arrival"
}
}
Retrive info for a label
End point
https://apis.avana.asia/v1/mobile/label/{label_id}
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 403 | Forbidden | label_id does not belong to current user |
| 404 | Label not found | No label found for the specified label_id |
Create Label
To create a label, use the following:
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/label"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 3,
"name": "New label"
}
}
Create a label for a shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/label
Request Method
POST
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
tax name |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Update Label
To update a label, use the following:
curl -X PATCH -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/label/{label_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 3,
"name": "Updated label"
}
}
Update info for a tax
End point
https://apis.avana.asia/v1/mobile/label/{label_id}
Request Method
PATCH
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
labal name |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 403 | Forbidden | label_id does not belong to current user |
| 500 | Input cannot be empty, accepted input: {valid_inputs} | Request cannot be empty, needs atleast one input |
| 500 | Invalid input({invalid_inputs}), accepted input: {valid_inputs} | Request needs a valid input |
Delete Label
To delete a labale, use the following:
curl -X DELETE -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/label/{label_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"delete": true
}
}
Delete a label
End point
https://apis.avana.asia/v1/mobile/label/{label_id}
Request Method
DELETE
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 403 | Forbidden | label_id does not belong to current user |
| 404 | Label not found | No label found for the specified label_id |
Category
Category List
To get the category list for a shop, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/category"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": [
{
"id": 1,
"name": "Baby Hat"
},
{
"id": 2,
"name": "Baby Shirt"
}
]
}
Retrive the category for a shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/category
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Category Info
To get a category info, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/category/{category_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data":{
"id": 1,
"name": "Baby Hat"
}
}
Retrive info for a category
End point
https://apis.avana.asia/v1/mobile/category/{category_id}
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 404 | Category not found | No category found for the specified category_id |
Create Category
To create a category, use the following:
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/category"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data":{
"id": 1,
"name": "Baby Hat"
}
}
Create a category for a shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/category
Request Method
POST
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
category name |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Update Category
To update a category, use the following:
curl -X PATCH -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/category/{category_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data":{
"id": 1,
"name": "Baby Hat Updated"
}
}
Update info for a category
End point
https://apis.avana.asia/v1/mobile/category/{category_id}
Request Method
PATCH
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
Category name |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 403 | Forbidden | category_id does not belong to current user |
| 500 | Input cannot be empty, accepted input: {valid_inputs} | Request cannot be empty, needs atleast one input |
| 500 | Invalid input({invalid_inputs}), accepted input: {valid_inputs} | Request needs a valid input |
Delete Category
To delete a category, use the following:
curl -X DELETE -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/category/{category_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"delete": true
}
}
Delete a category
End point
https://apis.avana.asia/v1/mobile/category/{category_id}
Request Method
DELETE
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 404 | Category not found | No category found for the specified category_id |
Variation
Variation List
To get the variation list for a shop, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/variation"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": [
{
"id": 62,
"name": "Color",
"for": "Shirt",
"variation": [
{
"id": 234,
"name": "white"
},
{
"id": 233,
"name": "green"
},
{
"id": 232,
"name": "black"
},
{
"id": 231,
"name": "red"
}
]
},
{
"id": 61,
"name": "Size",
"for": "Pant",
"variation": [
{
"id": 230,
"name": "xxl"
},
{
"id": 229,
"name": "xl"
},
{
"id": 228,
"name": "l"
},
{
"id": 227,
"name": "m"
},
{
"id": 226,
"name": "s"
}
]
},
{
"id": 60,
"name": "Size",
"for": "Shirt",
"variation": [
{
"id": 225,
"name": "xxl"
},
{
"id": 224,
"name": "xl"
},
{
"id": 223,
"name": "l"
},
{
"id": 222,
"name": "m"
},
{
"id": 221,
"name": "s"
}
]
}
]
}
Retrive the varation list for a shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/variation
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Varation Info
To get a variation info, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/variation/{variation_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 62,
"name": "Color",
"for": "Shirt",
"variation": [
{
"id": 234,
"name": "white"
},
{
"id": 233,
"name": "green"
},
{
"id": 232,
"name": "black"
},
{
"id": 231,
"name": "red"
}
]
}
}
Retrive info for a variation
End point
https://apis.avana.asia/v1/mobile/variation/{variation_id}
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 404 | Variation not found | No variation found for the specified variation_id |
Create Variation
To create a variation, use the following:
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/variation"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 62,
"name": "Color",
"for": "Shirt",
"variation": [
{
"id": 234,
"name": "white"
},
{
"id": 233,
"name": "green"
},
{
"id": 232,
"name": "black"
},
{
"id": 231,
"name": "red"
}
]
}
}
Create a variation for a shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/variation
Request Method
POST
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
name. Ex: Color |
for |
for. Ex: Shirt |
variation |
comma seperated value. Ex: s,m,l,xl,xxl |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Update Variation
To update a variation, use the following:
curl -X PATCH -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/variation/{variation_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 62,
"name": "Color",
"for": "Shirt",
"variation": [
{
"id": 234,
"name": "white"
},
{
"id": 233,
"name": "green"
},
{
"id": 232,
"name": "black"
},
{
"id": 231,
"name": "red"
}
]
}
}
Update info for a variation
End point
https://apis.avana.asia/v1/mobile/variation/{variation_id}
Request Method
PATCH
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
name. Ex: Color |
for |
for. Ex: Shirt |
variation |
comma seperated value. Ex: s,m,l,xl,xxl |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 400 | The selected variation already in use, updating not possible | variation_id already in use, no updating is possible |
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 403 | Forbidden | variation_id does not belong to current user |
| 500 | Input cannot be empty, accepted input: {valid_inputs} | Request cannot be empty, needs atleast one input |
| 500 | Invalid input({invalid_inputs}), accepted input: {valid_inputs} | Request needs a valid input |
Delete Category
To delete a variation, use the following:
curl -X DELETE -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/variation/{variation_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"delete": true
}
}
Delete a variation
End point
https://apis.avana.asia/v1/mobile/variation/{variation_id}
Request Method
DELETE
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 400 | The selected variation already in use, deleting not possible | variation_id already in use, no deleting is possible |
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 404 | Variation not found | No variation found for the specified variation_id |
Product
Product List
To get the product list for a shop, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/product"
// to be added
<?php
//to be added
A successful response will look like the following for product without variant
{
"data": [
{
"id": 397,
"name": "Product name",
"description": "Product description",
"model": "Product model",
"quantity": 12,
"price": 120,
"sale": false,
"sale_price": 0,
"weight": 1,
"estimated_delivery_time": "",
"estimated_delivery_time_shopbased": true,
"category": {
"id": 104,
"name": "Product Category"
},
"tax": {
"id": 30,
"name": "GST",
"value": "6.0000"
},
"image": {
"primary": 401,
"items": [
{
"id": 400,
"path": "https://apis.avana.asia/uploads/0474194d-387a-57ab-b67d-ba3109a1d8f7.png"
},
{
"id": 401,
"path": "https://apis.avana.asia/uploads/23a4d39c-8294-5cd6-8cf5-bcaaa23d0335.png"
}
]
}
}
]
}
A successful response will look like the following for product with variant
{
"data": [
{
"id": 397,
"name": "Product name",
"description": "Product description",
"model": "Product model",
"price": 120,
"sale": false,
"sale_price": 0,
"weight": 1,
"estimated_delivery_time": "",
"estimated_delivery_time_shopbased": true,
"category": {
"id": 104,
"name": "Product Category"
},
"tax": {
"id": 30,
"name": "GST",
"value": "6.0000"
},
,
"image": {
"primary": 401,
"items": [
{
"id": 400,
"path": "https://apis.avana.asia/uploads/0474194d-387a-57ab-b67d-ba3109a1d8f7.png"
},
{
"id": 401,
"path": "https://apis.avana.asia/uploads/23a4d39c-8294-5cd6-8cf5-bcaaa23d0335.png"
}
]
},
"variant": [
{
"id": 1,
"name": "s",
"quantity": 14
},
{
"id": 2,
"name": "m",
"quantity": 14
},
{
"id": 3,
"name": "l",
"quantity": 14
}
]
}
]
}
Retrive the product list for a shop. For product without image, image
key will not exist, do your checking accordingly.
End point
https://apis.avana.asia/v1/mobile/{shop_id}/product
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Product Info
To get a product info, use the following:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/product/{product_id}"
// to be added
<?php
//to be added
A successful response will look like the following for product without variant
{
"data": {
"id": 397,
"name": "Product name",
"description": "Product description",
"model": "Product model",
"quantity": 12,
"price": 120,
"sale": false,
"sale_price": 0,
"weight": 1,
"estimated_delivery_time": "",
"estimated_delivery_time_shopbased": true,
"category": {
"id": 104,
"name": "Product Category"
},
"tax": {
"id": 30,
"name": "GST",
"value": "6.0000"
}
}
}
A successful response will look like the following for product with variant
{
"data": {
"id": 397,
"name": "Product name",
"description": "Product description",
"model": "Product model",
"price": 120,
"sale": false,
"sale_price": 0,
"weight": 1,
"estimated_delivery_time": "",
"estimated_delivery_time_shopbased": true,
"category": {
"id": 104,
"name": "Product Category"
},
"tax": {
"id": 30,
"name": "GST",
"value": "6.0000"
},
"variant": [
{
"id": 1,
"name": "s",
"quantity": 14
},
{
"id": 2,
"name": "m",
"quantity": 14
},
{
"id": 3,
"name": "l",
"quantity": 14
}
]
}
}
Retrive info for a product
End point
https://apis.avana.asia/v1/mobile/product/{product_id}
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 404 | Product not found | No product found for the specified product_id |
Create Product
To create a product, use the following:
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/{shop_id}/product"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data":{
"id": 1
}
}
Create a product for a shop
End point
https://apis.avana.asia/v1/mobile/{shop_id}/product
Request Method
POST
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value | Required |
|---|---|---|
name |
Product name | Yes |
description |
Product description | No |
price |
Product price | Yes |
category |
Category ID | Yes |
tax |
Tax ID | Yes |
weight |
Weight in KG | Yes |
quantity |
Product quamtity | Yes without variation |
sale |
Is product on sale?( 1 or 0) | No |
sale_price |
The price of product if its on sale | Yes if sale is true |
estimated_delivery_time |
Estimated delivery time | Yes if global_estimated_delivery_time is not specified |
global_estimated_delivery_time |
User global estimated delivery time (1 or 0) | Yes if estimated_delivery_time is not specified |
variation_id |
The variant_id | Yes without quantity |
variation_value |
The variant values(json object, { id:quantity} ). |
Yes without quantity and with variation_id |
variation_value
example
Consider the following variation
variation_value
value should look like the following:
variation_value: { 234: 5, 233:5, 232:5, 231: 5}
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 422 | Validation error | If there is any validation error |
| 422 | Variant values not complete | Variant values not complete, missing or exceed the required value |
| 422 | Variants data does not match the variant_id | The varaint value id does not belong to varaint_id |
Update Product
To update a product, use the following:
curl -X PATCH -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/product/{product_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"id": 397,
"name": "Product name",
"description": "Product description",
"model": "Product model",
"price": 120,
"sale": false,
"sale_price": 0,
"weight": 1,
"estimated_delivery_time": "",
"estimated_delivery_time_shopbased": true,
"category": {
"id": 104,
"name": "Product Category"
},
"tax": {
"id": 30,
"name": "GST",
"value": "6.0000"
},
"variant": [
{
"id": 1,
"name": "s",
"quantity": 14
},
{
"id": 2,
"name": "m",
"quantity": 14
},
{
"id": 3,
"name": "l",
"quantity": 14
}
]
}
}
Update a product for a shop
End point
https://apis.avana.asia/v1/mobile/product/{product_id}
Request Method
PATCH
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value | Required |
|---|---|---|
name |
Product name | Yes |
description |
Product description | No |
price |
Product price | Yes |
category |
Category ID | Yes |
tax |
Tax ID | Yes |
weight |
Weight in KG | Yes |
quantity |
Product quamtity | Yes without variation |
sale |
Is product on sale?( 1 or 0) | No |
sale_price |
The price of product if its on sale | Yes if sale is true |
estimated_delivery_time |
Estimated delivery time | Yes if global_estimated_delivery_time is not specified |
global_estimated_delivery_time |
User global estimated delivery time (1 or 0) | Yes if estimated_delivery_time is not specified |
variation_id |
The variant_id | Yes without quantity |
variation_value |
The variant values(json object, { id:quantity} ). |
Yes without quantity and with variation_id |
variation_value
example
Consider the following variation
variation_value
value should look like the following:
variation_value: { 234: 5, 233:5, 232:5, 231: 5}
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 422 | Validation error | If there is any validation error |
| 422 | Variant values not complete | Variant values not complete, missing or exceed the required value |
| 422 | Variants data does not match the variant_id | The varaint value id does not belong to varaint_id |
Product Image
To add a image to a product, use the following:
curl -X POST -H "Authorization: Bearer access_token" -F<EMAIL_ADDRESS>"http://apis.avana.asia/v1/mobile/product/{product_id}}/image"
// to be added
<?php
//to be added
A successful response will look like the following for product without variant
{
"data": {
"upload": true,
"path": "https://apis.avana.asia/uploads/96ccf48e-c64f-598d-bb01-fd724e11dd27.png"
}
}
Add image to a product. One product can have a maximum of 4 images. This is a multipart form request
End point
http://apis.avana.asia/v1/mobile/product/{product_id}}/image
Request Method
POST
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
image |
the image file |
primary |
1 or 0 . Set image as primary |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 403 | Forbidden | 403 |
| 404 | Product not found | No product found for the specified product_id |
| 422 | Validation Error | Validation error |
| 422 | Minimum image width must be {width}px’ | Minimum image width not met |
| 500 | Image limit reached for this product | Image limit reached for this product |
Delete Product
To delete a product, use the following:
curl -X DELETE -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/product/{product_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"delete": true
}
}
Delete a product
End point
https://apis.avana.asia/v1/mobile/product/{product_id}
Request Method
DELETE
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 403 | Forbidden | product_id does not belong to current user |
| 404 | Product not found | No product found for the specified product_id |
Delete Image
To delete a image, use the following:
curl -X DELETE -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/image/{image_id}"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"delete": true
}
}
Delete a image
End point
https://apis.avana.asia/v1/mobile/image/{image_id}
Request Method
DELETE
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 403 | Forbidden | image_id does not belong to current user |
| 404 | Image not found | No image found for the specified image_id |
Setting
Basic Setting
To get shop’s basic setting, use the following
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token"\
"https://apis.avana.asia/v1/mobile/shop/{shop_id}/setting"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"shop_information": {
"basic_information": {
"name": "Shop name",
"description": "Shop description",
"shop_email"<EMAIL_ADDRESS>"phone_number": "123456789",
"company_reg_no.": "123456789"
},
"address": {
"country": "Malaysia",
"state": "Perak",
"post_code": "31900"
},
"reporting": {
"google_analytic_account_id": "",
"facebook_pixel_id": ""
}
},
"checkout": {
"payment_information": {
"currency": "MYR",
"paypal_email_address"<EMAIL_ADDRESS>"molpay_merchant_admin": "",
"molpay_verification_code": "",
"enable_molpay": 0
}
},
"others": {
"enable_comment_on_product_page": 0
},
"invoicing": {
"logo": "https://apis.avana.asia/188.logo.png"
}
}
}
Retrive the shop setting
End point
https://apis.avana.asia/v1/mobile/shop/{shop_id}/setting
Request Method
GET
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
none
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
Update Basic Setting
To update a shop setting, use the following:
curl -X PATCH -H "Content-Type: application/json" -H "Accept: application/json"\
-H "Authorization: Bearer access_token" \
"https://apis.avana.asia/v1/mobile/shop/{shop_id}/setting"
// to be added
<?php
//to be added
A successful response will look like the following
{
"data": {
"shop_information": {
"basic_information": {
"name": "Shop name",
"description": "Shop description",
"shop_email"<EMAIL_ADDRESS>"phone_number": "123456789",
"company_reg_no.": "123456789"
},
"address": {
"country": "Malaysia",
"state": "Perak",
"post_code": "31900"
},
"reporting": {
"google_analytic_account_id": "",
"facebook_pixel_id": ""
}
},
"checkout": {
"payment_information": {
"currency": "MYR",
"paypal_email_address"<EMAIL_ADDRESS>"molpay_merchant_admin": "",
"molpay_verification_code": "",
"enable_molpay": 0
}
},
"others": {
"enable_comment_on_product_page": 0
},
"invoicing": {
"logo": "https://apis.avana.asia/188.logo.png"
}
}
}
Update a shop setting
End point
https://apis.avana.asia/v1/mobile/shop/{shop_id}/setting
Request Method
PATCH
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Content-Type |
application/json |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
name |
shop name |
description |
shop description |
shop_email |
shop email |
phone_number |
phone number |
company_reg_no. |
company registeration number |
post_code |
post code |
google_analytic_account_id |
GA code |
facebook_pixel_id |
Pixel code |
paypal_email_address |
paypal email address |
molpay_merchant_admin |
molpay merchant admin |
molpay_verification_code |
molpay verification code |
enable_molpay |
enable molpay. Boolean |
enable_comment_on_product_page |
enable comment on product page. Boolean |
country |
Country (iso_3166_2) |
state |
State |
currency |
Currency code. Ex: MYR |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 500 | Input cannot be empty, accepted input: {valid_inputs} | Request cannot be empty, needs atleast one input |
| 500 | Invalid input({invalid_inputs}), accepted input: {valid_inputs} | Request needs a valid input |
Invoice Image
To add invoice image, use the following:
curl -X POST -H "Authorization: Bearer access_token" -F<EMAIL_ADDRESS>"http://apis.avana.asia/v1/mobile/shop/{shop_id}/setting/invoice"
// to be added
<?php
//to be added
A successful response will look like the following for product without variant
{
"data": {
"shop_information": {
"basic_information": {
"name": "Shop name",
"description": "Shop description",
"shop_email"<EMAIL_ADDRESS>"phone_number": "123456789",
"company_reg_no.": "123456789"
},
"address": {
"country": "Malaysia",
"state": "Perak",
"post_code": "31900"
},
"reporting": {
"google_analytic_account_id": "",
"facebook_pixel_id": ""
}
},
"checkout": {
"payment_information": {
"currency": "MYR",
"paypal_email_address"<EMAIL_ADDRESS>"molpay_merchant_admin": "",
"molpay_verification_code": "",
"enable_molpay": 0
}
},
"others": {
"enable_comment_on_product_page": 0
},
"invoicing": {
"logo": "https://apis.avana.asia/188.logo.png"
}
}
}
Add invoice image. This is a multipart form request
End point
http://apis.avana.asia/v1/mobile/shop/{shop_id}/setting/invoice
Request Method
POST
Request Header
| Name | Value |
|---|---|
Authorization |
Bearer access_token |
Accept |
application/json |
Request Parameter
| Name | Value |
|---|---|
image |
the image file |
Possible error
| Code | Error Message | Explanation |
|---|---|---|
| 401 | Please login to continue | There is no user authenticated for the supplied access_token |
| 422 | Validation Error | Validation error |


{% extends "layout.html" %} {% block body %}
PubMed Labs includes a new search algorithm that uses machine learning to more accurately find the best matches.
PubMed Labs uses a clean and modern user interface designed to work well on your phone as well as other devices.
To help you identify articles of interest, PubMed labs includes “snippets” – highlights from the article abstract that are related to your query.


Validates an individuals ability to:
Security
Quality of Service
Scalability
Fault tolerance
A Reliable Network consists of:
Networks then (Multiple services - multiple networks)
Networks now (Multiple services - one network)
The type depends on a few factors:
Toloplogy diagrams:
Today common methods:
Criteria to choose the network media:
Devices:
Media:
Services:
In a Peer to Peer network a computer is server and client at the same time
Advantages of Peer to Peer
Disadvantages of Peer to Peer
A Network consists of servers and clients
Server:
Client:
A network could look like this:
There are many networks in many different sizes:
Small Home Networks
Small Office/Home Office Networks
Medium to Large Networks
World Wide Networks


{% extends "layout.html" %} {% block title %}User{% endblock %} {% block content %}
Google Service Account: {{ userdata['display_name'] }}
{% endif %} {% if cloud == "azure" %}Azure Service Principal Display Name: {{ userdata['display_name'] }}
Azure Service Principal Application ID: {{ userdata['hail_identity'] }}
{% endif %}Trial Billing Project: {{ userdata['trial_bp_name'] }}
Notice: The Hail system records your email address and IP address. Your email address is recorded so that we can authenticate you. Your IP address is tracked as part of our surveillance of all traffic to and from the Hail system. This broad surveillance enables the protection of the Hail system from malicious actors.


{% extends 'wizard_base.html' %} {% block title %}Upload data - Geomancer{% endblock %} {% block wizard_content %}
Pick a spreadsheet that includes a column about a location, like city, state or congressional district, and then pick additional data to add about that location.
Take a look at the data sources and geographies we have, or learn how to add your own.
Spreadsheet format (learn more)


{% extends 'base.html' %} {% load filter_tags %} {% block bodydata %} data-project-id="{{ project.id }}" data-project-locked="{{ project.islocked }}" data-usergroup-id="{{ usergroup.id }}" {% endblock %} {% block title %} | Project: {{ project.name }} - User group: {{ usergroup.name }} - Data{% endblock %} {% block main %}
The project is locked, therefore user group data cannot be edited. If you wish to edit it, you have to unlock the project in the project settings first.
The project has no categories, therefore subset data cannot be edited. If you wish to edit it, you have to create a new category first.
This project is public, therefore all data of the project is public too. To restrict access make the project private under project settings first.


[gecode-users] posting of expressions
Christian Schulte
cschulte at kth.se
Tue Jul 13 17:42:29 CEST 2010
Hi Kish,
No, it is as you say, ~ only works in the context of posting linear
relations. This will disappear.
I just attach a draft of the chapter that explains it (even though the
structure is now totally misleading).
Christian
--
Christian Schulte, web.ict.kth.se/~cschulte/
-----Original Message-----
From: Kish Shen [mailto:kisshen at cisco.com]
Sent: Tuesday, July 13, 2010 5:30 PM
To: cschulte at kth.se
Cc: 'Guido Tack'; users at gecode.org
Subject: Re: [gecode-users] posting of expressions
Christian Schulte wrote:
> Hi Kish,
>
> There is one more thing that might be valuable to you: we have changed the
> way how to post expressions and relations for the upcoming 3.4.0 (which
> should be available end of this month at the latest).
>
> It is way more powerful (including arbitrary arithmetic expressions, set
> variables, and so on) and distinguishes between a function expr() that
posts
> an expression (and hence returns a variable) and a function rel() that
posts
> a relation (and hence does not return a variable). This removes the
> reification operator ~ and the confusion it caused.
>
Hi Christian,
Thanks for the info. Hmm...much of the reorganisation of the code I
mentioned was to handle the general expressions allowed in ECLiPSe (or
more precisely, the ic/fd libraries), to separate out non-linear
components and reifiable constraints (ic allows (reifiable) constraints
to occur in expressions and simply use the reified value of the
constraint in the expression). [The aim is to make the ECLiPSe Gecode
interface as source compatible to the ic library as possible]
I am not certain if I know what the reification operator is -- is this
the ~ used in BoolExpr to reify LinRel? I currently use this in
BoolExpr, but are you suggesting other constraints can be reified with
this? Am I correct in think for integer finite domain, only LinRel and
the dom constraints are currently reifiable? These are the only cases I
am handling in expressions at the moment (and I am currently posting an
extra reified dom constraint and using its boolean variable in the
BoolExpr).
Cheers,
Kish
--
This e-mail may contain confidential and privileged material for the
sole use of the intended recipient. Any review, use, distribution or
disclosure by others is strictly prohibited. If you are not the intended
recipient (or authorized to receive for the recipient), please contact
the sender by reply e-mail and delete all copies of this message.
Cisco Systems Limited (Company Number: 02558939), is registered in
England and Wales with its registered office at 1 Callaghan Square,
Cardiff, South Glamorgan CF10 5BT.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: MPG.pdf
Type: application/pdf
Size: 71807 bytes
Desc: not available
URL: <http://www.gecode.org/pipermail/users/attachments/20100713/7cd5a0df/attachment-0001.pdf>
More information about the users
mailing list


SELF-AWARENESS STRATEGIES
- Quit treating your feelings as good or bad
- Observe the ripple effect from your emotions
- Lean into your discomfort (do not avoid uncomfortable feelings)
- Feel your emotions physically
- Know who and what pushes your buttons
- Watch yourself like a hawk
- Keep a journal about your emotions
- Don't be fooled by a bad mood
- Don't be fooled by a good mood either
- Stop and ask yourself why you do the things you do
- Visit your values
- Check yourself
- Spot your emotions in books, movies, and music
- Seek feedback
- Get to know yourself under stress
SELF-MANAGEMENT STRATEGIES
- Breathe right
- Create an emotion vs. reason list
- Make your goals public
- Count to ten
- Sleep on it
- Talk to a skilled self-manager
- Smile and laugh more
- Set aside some time in your day for problem-solving
- Take control of your self-talk
- Visualize yourself succeeding
- Clean up your sleep hygiene
- Focus your attention on your freedoms, rather than your limitations
- Stay synchronized
- Speak to someone who is not emotionally invested in your problem
- Learn a valuable lesson from everyone you encounter
- Put a mental recharge into your schedule
- Accept that change is just around the corner
SOCIAL AWARENESS STRATEGIES
- Greet people by name
- Watch body language
- Make timing everything
- Develop a back-pocket question (to break up an awkward silence)
- Don't take notes at meetings
- Plan ahead for social gatherings
- Clear away the clutter
- Live in the moment
- Go on a 15-minute tour (around your office and observe people's moods)
- Watch EQ at the movies
- Practice the art of listening
- Go people watching
- Understand the rules of the culture game
- Test for accuracy
- Step into their shoes
- Seek the whole picture
- Catch the mood of the room
RELATIONSHIP MANAGEMENT STRATEGIES
- Be open and be curious
- Enhance your natural communication style
- Avoid giving mixed signals
- Remember the little things that pack a punch
- Take feedback well
- Build trust
- Have an "open-door" policy
- Only get mad on purpose
- Don't avoid the inevitable
- Acknowledge the other person's feelings
- Complement the other person's emotions or situation
- When you care, show it
- Explain your decisions, don't just make them
- Make your feedback direct and constructive
- Align your intention with your impact
- Offer a "fix-it" statement during a broken conversation
- Tackle a tough conversation


## Adapter-based Maps
Maps functionalities are abstracted in **Pacem JS** while their contextualization into a specific _Maps_ technology is delegated to adapter interfaces.
Currently available adapters are:
- the **LeafletJS** adapter
- the **Azure** maps adapter
- and the **Google** maps adapter
OpenStreetMap Foundation
Microsoft HeadQuarters
Google HeadQuarters
## Leaflet JS
Open source mappings with **OpenStreetMaps** tiles and **LeafletJS** engine flow naturally using the `<pacem-map-adapter-leaflet>` component (aka `PacemLeafletMapAdapterElement`).
> Leaflet JS + OpenStreetMaps is the preferred option in Pacem JS. Updates to the API will be added giving priority to this technology.
## Azure Maps
Azure cloud-powered maps are activated by referring the `<pacem-map-adapter-azure>` component (aka `PacemAzureMapAdapterElement`).
## Google Maps
Google (well-known) maps are available via `<pacem-map-adapter-google` component (aka `PacemGoogleMapAdapterElement`).
## Layering
WMS and TMS outputs can be easily overlayed to the map via the `<pacem-map-layer>` component.
In the following snippet a WMS tile layer gets added to the map (only for a specific zoom-range).


Football Genie
Treat it like your Football Dictionary
You name the teams, players and leagues. It is all in your hands.
Team
Player
All Players By Team
All Leagues By Country
All Teams By League
Go!
©Hyunmo Yang's website 2017


|
Complicated
(Avril Lavigne) |
|
Uh
huh, life's like this
Uh huh, uh huh, that's the way it is Cause life's like this Uh huh, uh huh that's the way it is Chill out whatcha yelling' for?


TITLE: BRADEN SCALE DATE OF NOTE: MAR 30,2009@16:25 ENTRY DATE: AUG 10,2009@16:27:54 AUTHOR: HANKE,KRIS EXP COSIGNER: URGENCY: STATUS: COMPLETED SENSORY PERCEPTION: No Impairment Score = 4 MOISTURE: Rarely Moist Score = 4 ACTIVITY: Walks Occasionally Score = 3 MOBILITY: Very Limited Score = 2 NUTRITION: Very Poor Score = 1 FRICTION & SHEAR: Potential Problem Score = 2 ________________________________________________ TOTAL BRADEN SCALE SCORE: Total Braden Scale Score is 15-18. Patient is at risk for skin breakdown. INTERVENTIONS BASED ON BRADEN SCALE RESULTS: Skin Care Nurse Consult ordered STAT. Clinical Dietitian Consult ordered for treatment recommendations. ************************************************************* � Copyright Barbara Braden and Nancy Bergstrom, 1988 All rights reserved /es/ KRIS HANKE Signed: 08/10/2009 16:31


|
BitMagic-C++
|
Class reference implements an object for bit assignment. More...
#include <bm.h>
Public Member Functions | |
| reference (bvector< Alloc > &bv, bm::id_t position) | |
| reference (const reference &ref) | |
| operator bool () const | |
| const reference & | operator= (const reference &ref) const |
| const reference & | operator= (bool value) const |
| bool | operator== (const reference &ref) const |
| const reference & | operator &= (bool value) const |
| const reference & | operator|= (bool value) const |
| const reference & | operator^= (bool value) const |
| bool | operator! () const |
| bool | operator~ () const |
| reference & | flip () |
Class reference implements an object for bit assignment.
Since C++ does not provide with build-in bit type supporting l-value operations we have to emulate it.
|
inline |
|
inline |
|
inline |
Negates the bit value
Definition at line 242 of file bm.h.
References bm::bvector< Alloc >::reference::flip().
Referenced by bm::bvector< Alloc >::reference::flip().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |


Lets Make Your Morning Better With This Quote
Write it on your heart that every day is the best day in the year.
- Ralph Waldo Emerson
Lets Make Your Morning Better With This Quote
Write it on your heart that every day is the best day in the year.
- Ralph Waldo Emerson


A place for general developer talk – for everyone! | Documentation https://developers.komodoplatform.com | MoreDev Docs - https://docs.komodoplatform.com | Mastering CryptoConditions - https://github.com/KomodoPlatform/Mastering_CryptoConditions
100 messages
Before 05-Dec-19 12:00 AM
artemciy_dice26-Oct-18 09:22 AM
So my advice would be to go with a fresh SQLite, using a simple table as a KV store, and having the power of introducing more complex structures if and when you need it.(edited)
Advantages of SQLite over LevelDB/RocksDB is that the classical B+tree algorithm, when done right, is still faster than the LevelDB layered append-only thing. And that you can connect from multiple processes, watching what's going on in the database while your app works (plus SQL makes it easier to do). And when you need indexing and stuff, you just have it and don't need to compensate with complex database-like layers in your app.(edited)
On the other hand, if you need the absolute-best recoverability, or if you want to be able to backup your database always with but a simple rsync, then go with LevelDB/RocksDB. The append-only approach there makes the database pretty much unsinkable (until there's a bug in the implementation, unfortunately LevelDB isn't 100% bug free, but a chance of stumbling upon one is very small).(edited)
Ping me if you need further help with [tuning] SQLite.
Mylo26-Oct-18 09:51 AM
Absolute best recoverability is handled by the blockchain if resync required if the design/workflow of this app can be handled like this. Portability and sql-ness of using SQLite sounds much more advantageous imo
But not sure exactly what app is doing, so maybe not a good opinion:)
artemciy_dice26-Oct-18 09:57 AM
So, blockchain is a distributed database which is of course cool but an entirely different field. But the local database used by a blockchain isn't always reliable. When you crash or kill komodod, for example, you can loose the local blockchain and will need to wait for quite some time for resync. LevelDB/RocksDB approach and implementation, if we look at them in isolation from the distributed ledger/backup aspects, is the most resilient one in that local operation regard.
SQLite is durable as well, but due to the more invasive nature of B+tree operations the durability there is more precarious and can be toppled when hardware misbehaves.(edited)
artemciy_dice26-Oct-18 10:21 AM
Or when the user misbehaves, like when I copy a database which is being in use (my favorite thing to do with embedded database).
grewalsatinder26-Oct-18 10:22 AM
@artemciy_dice thanks for detailed advice
artemciy_dice26-Oct-18 10:22 AM
So if you want your app on a USB stick...
grewalsatinder26-Oct-18 10:22 AM
I'll give sqlite try with go
so far I couldn't find b-tree with sqlite3 packages for golang
but, after reading your details on it, looks good option.
will be experimenting with first file system append only file
and then sqlite
artemciy_dice26-Oct-18 10:28 AM
Cool. On spindle disks I would usually doPRAGMA page_size = 32768 in Sqlite in order to decrease the number of I/O seeks in B+tree, though on the SSD you should match the page_size to the SSD page size instead.(edited)
grewalsatinder26-Oct-18 10:29 AM
@artemciy_dice do you know if there's recthinkdb portable ?
means using the rethinkdb as portable database ?
or what you think of rethinkdb in general?
artemciy_dice26-Oct-18 10:30 AM
Yes, RocksDB can be embedded and used for portable (think USB stick) databases, it's a very good match.
I think LevelDB is Google's abandonware and RocksDB is a version where developers cared to tune the performance more and kept adding features to it.
I got confused of your RocksDB reference with RethinkDb for a moment
artemciy_dice26-Oct-18 10:35 AM
Ah, sorry.
grewalsatinder26-Oct-18 10:35 AM
I have seen golanguage packages which uses RethinkDB as portable database, but I fear to use them, considering how experimental they could be
since all of them are 3rd party
artemciy_dice26-Oct-18 10:37 AM
RethinkDB developers never went embedded AFAIK, they didn't even manage to go as far as making the core database reasonably efficient. I love the interface and the automatic High-Availability reliability aspects, but it wasn't a very practical solution last time I checked, performance-wise.(edited)
What do you mean by portable?
grewalsatinder26-Oct-18 10:41 AM
means if I have on my machine rethinkdb installed, and I run rethinkdb as a daemon, I can make the database talk to my app.
on user end, they would not necessarily have the rethinkdb daemon installed.
the other option is I bundle the cross-platform rethinkdb binaries with the app and run it in the backend, but then again I think if it's good to it that way
I mainly like rethinkdb for it's realtime data updates
artemciy_dice26-Oct-18 10:46 AM
Using a database you like is a long-term investment (that is, it should help you to do more stuff with the project), I'd say try bundling it and see how it goes. But maybe give this experiment a timeframe.(edited)
1
grewalsatinder26-Oct-18 11:15 AM
agree
thanks for your advice. It's really helpful to give me a thought and decide how I want to plan my app development.
BoltDB (or Bolt) is a safe and fast embedded key-value database written in Go. It is a great persistence solution for Golang projects! Learn how to use it.
has to experiment with this one first.
1
dukeleto26-Oct-18 01:24 PM
@grewalsatinder I am partial to Redis for key-value DB, it's served me well in production
1
KomodoWorld26-Oct-18 03:16 PM
do you heard anyone who has been working on the CC solidity interpreter?
I only rember this guy @Clément#9327 asking info here but he seems no longer reacheable
thanks to @sφldat we could have soon people working on it
I will close the bounty in such case(edited)
sφldat26-Oct-18 03:19 PM
I hope so! Anyway I met the manager Epitech (https://international.epitech.eu/) and he is interested in setting up a workshop over several weeks with his students for this CC Solidity challenge. Now I'm waiting for him to come back next week, but it's on the right track.
KomodoWorld26-Oct-18 03:22 PM
great, if this works I see it bringing more collaborations in future
$ pip install lnet
Use clightning to spin up a Lightning Network for testing purposes. Describe your desired network topology of nodes and channels, lnet sets it up. Uses bitcoind in regtest mode. Parallelizable, can have multiple networks.
Heisenberg28-Oct-18 12:04 AM
Hey guys. We’re looking to add Komodo support in our wallet. Would like to collaborate with the team or any of dev contributors.
Hermes28-Oct-18 12:13 AM
That sound awesome let us know if you need any help on how to do this ...or if any other information is needed.
Deleted User28-Oct-18 12:37 AM
Hoard wallet guy? Welcome
Heisenberg28-Oct-18 12:37 AM
@Hermes thanks. We could use some extra hands in the process. Our team is flooded with work atm. It’s completely open source.
@Deleted User
Deleted User28-Oct-18 12:48 AM
@Heisenberg Just checked out your website. Forgot to mention, Komodo is also open source and have a fully working DEX that uses atomic swaps (currently has over 115,000 successful swaps)
Supports 95% of all coins in existance, may be something for you to check out
https://komodoplatform.com/decentralized-exchange/
BarterDEX: Decentralised Exchange and Cryptocurrency Market - KomodoPlatform/BarterDEX
Heisenberg28-Oct-18 02:12 AM
We agree. KMD is dope. Looking forward to integration in the wallet.
Along with our network, we may actually be able to do a lot more for each other.
2
Alright28-Oct-18 04:57 AM
is anyone familiar with usenet? I was thinking a usenet indexer chain would be relatively straight forward to create
store nzbs via oracles
could have a business based on it. "Please find me this nzb" then an oracle post said nzb for the data fee
dukeleto28-Oct-18 11:11 AM
@Alright i was a sysadmin for some usenet servers in the 90's at an ISP, does that count? Your idea sounds interesting
1
grewalsatinder28-Oct-18 01:05 PM
@Alright@dukeleto do it! (edited)
dukeleto28-Oct-18 01:45 PM
@Alright how about a peer-reviewed article chain, where you ask for a publication by DOI or other unique identifier, pay a fee, and then it gets injected by some oracle into a chain ?
Первый в мире пиратский ресурс, который открыл массовый доступ к десяткам миллионов научных статей
That service is not legal in some jurisdictions, because it ends the horrible monopoly of a few companies owning and charging for academic research
Alright28-Oct-18 01:47 PM
same thing for indexers
dukeleto28-Oct-18 01:47 PM
which is often funded by taxpayers and should be open source/public anyway
put it on the blockchain, let the lawyers figure it out, they said....
Sci-Hub
the first pirate website in the world to provide mass and public access to tens of millions of research papers
(edited)
@FishyGuts sounds like a marketing opportunity for you...
pirates love academic papers!
man, i haven't heard a good alt.sex.computers joke in a while
so many memes that are lost on this generation
@Alright it would be interesting to create a bridge, where something send to alt.data.komodo gets injected into a KV chain or something, so people without any kind of access to blockchains can post to usenet and embed data in a DPoW blockchain
"easy onramps" to store data, protected by DPoW
jl777c28-Oct-18 01:53 PM
use oracles CC , not KV
blackjok3r28-Oct-18 03:06 PM
@dukeleto Any idea how i can change this loop to a while loop?


Namespace: CommandLineHelper
Assembly: CommandLineHelper (CommandLineHelper.dll) version <IP_ADDRESS>
Inheritance: object→
Attribute→
HelpAttribute
[Help(@"Write any information which will help a user to understand your command line application. It can be anything from 'intended use', 'examples', 'common misconceptions' or any other helpful information you are able to provide.")] class ParameterExtended : ParameterBase { }
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public class HelpAttribute : Attribute
| Constructor | Description |
|---|---|
| HelpAttribute(string) | Constructor of the 'HelpAttribute' class. |
| Property | Description |
|---|---|
| Help | The help string which will be used in the help screen of the attached parameter object. |


#!/usr/bin/python
from gen_py.datahub.account import AccountService from gen_py.datahub import DataHub from gen_py.datahub.constants import * from gen_py.datahub.account.constants import * from thrift import Thrift from thrift.protocol import TBinaryProtocol from thrift.transport import THttpClient from thrift.transport import TTransport
‘’’ @author: anant bhardwaj @date: Oct 11, 2013
Sample Python client for DataHub Account Creation ‘’‘
- try:
print “nnTrying to create and delete an account...” # This will initially thrown an exception since # You will need to register an application and assign # the variables below. # then, log in as the user, and visit this url to authorize the app: ERNAME # see the /developer/apps page to register an application.
username=”USERNAME” password=”PASSWORD” email=”EMAIL” repo_name=”REPO_NAME” # the username of the account you are accessing app_id=”APP_ID” # your app’s unique id app_token=”APP_TOKEN” # your app’s unique token
datahub_transport = THttpClient.THttpClient(‘http://datahub.csail.mit.edu/service‘) datahub_transport = TTransport.TBufferedTransport(datahub_transport) datahub_protocol = TBinaryProtocol.TBinaryProtocol(datahub_transport) datahub_client = DataHub.Client(datahub_protocol) print “Version: %s” %(datahub_client.get_version())
account_transport = THttpClient.THttpClient(‘http://datahub.csail.mit.edu/service/account‘) account_transport = TTransport.TBufferedTransport(account_transport) account_protocol = TBinaryProtocol.TBinaryProtocol(account_transport) account_client = AccountService.Client(account_protocol)
print “nTrying to query a user’s table...”
# RECOMMENDED (How an app should read/write in a users’ repo) # Connect to the user repository through app_id + app_token. # Don’t expose their password con_params_app = ConnectionParams(app_id=app_id, app_token=app_token, repo_base=username) con_app = datahub_client.open_connection(con_params=con_params_app)
createSQL =”CREATE TABLE “+repo_name+”.app_table(content text)” insertSQL = “INSERT INTO “+repo_name+”.app_table VALUES(‘Anant Bhardwaj’)” selectSQL = “SELECT * FROM “+repo_name+”.app_table”
print datahub_client.list_repos(con=con_app) print datahub_client.list_tables(con=con_app, repo_name=repo_name) print datahub_client.execute_sql(con_app, createSQL, query_params=None) print datahub_client.list_tables(con=con_app, repo_name=repo_name) print datahub_client.execute_sql(con_app, insertSQL, query_params=None); print datahub_client.execute_sql(con_app, selectSQL, query_params=None);
- except Exception, e:
- print ‘Something went wrong : %s’ % (e) print ‘n Please make sure that you authorized the app at https://datahub.csail.mit.edu/permissions/apps/allow_access/‘ + app_id + ‘/’ + repo_name


influenza virus patients human {border-style px;} #ffffff;} avian infection al.[] viral viruses treatment poultry severe China Influenza associated detection reported Chinese Med– clinical corticosteroids px; respiratory study {font-family Care China. cases cells font-size infected inhibit mainly new novel pneumonia (HN) HN, Infect RNA acute case double; drug main mortality replication showed -day China, Fudan anti-influenza border-color border-width cause corticosteroid directly epidemiological mainland medicine pandemic significantly solid; {font-style {font-weight A(HN) Dis– ECMO Fifth H/H Hospital However, Respir Shanghai, Therefore, Wang bold confirmed courier; disease em; group high important induce inflammatory inhibitors live method mmHg molecule oxygenation performed prevent prolonged pt;} rate recent results severity therapy vaccination vaccine vaccines virus.


Content table
In following list you can find all available examples of otobox.
Hello world with input
Hello world with textarea


PRIVATE PARTS PREDICTIONS OF FIRE A film review by Dave Cowen Copyright 1997 Dave Cowen
In order to write this review, I need to admit that at one time I considered myself to be something of a Howard Stern fan. It was about the time back in college when I had shown a number of friends Stern's Pay-Per-View special, in which a man sets his private parts aflame. The man explained that he was trying to combat a case of the crabs and had succeeded in burning them to death by dousing that area of his body with lighter fluid. This sparked a discussion among my friends about the safety of using lighter fluid to burn off bodily hair, which ultimately ended in one of them running down the hallway of the dorm to the bathroom with a flaming hand. He spent the rest of the day with his hand in a bucket of water. So much for the safety of using lighter fluid to burn off bodily hair.
But watching Howard Stern's PRIVATE PARTS provoked something in me that I've only felt one other time when watching a movie, and it wasn't the kind of combination of titillation and amazement that Stern's radio and TV work seems to inspire. During the climactic scene, after Howard is cut off of the air after interviewing the first naked woman on radio and has stormed into his producer's office provoking a fight, I felt nauseous. My legs gave out, my stomach seized, and for once, I wanted nothing more than to get out of the theater. The other time this had happened was during the second half of Scorcese's GOODFELLAS, in which I was overwhelmed by the paranoia Ray Liotta's character was experiencing. At the viewing of PRIVATE PARTS I attended, though, it wasn't paranoia that made we want to leave the theater. It was disgust.
Throughout the past couple of years, I've found myself strangely charmed by two movies which portrayed men who found success in life by doing things that offended other people: Terry Zwigoff's CRUMB, and Milos Forman's PEOPLE VS. LARRY FLYNT. CRUMB, seemed to overcome the insanity present in his family and provide brilliant social commentary by venting those impulses through brilliantly illustrated comics. Flynt, in a somewhat inadvertant way, upheld the rights for Americans to parody public figures and display the human body without restriction. I expected PRIVATE PARTS to trigger the same feeling in me: the triumph of an underdog who pays his dues, but ultimately gets what he wants in life by acting on his impulses, the "moral majority" be damned. But after Stern's on-air massage from a naked woman, during the fight, I didn't find Stern heroic... but pitiful. What was he fighting for?
Critics have expressed surprise that PRIVATE PARTS would portray Stern as being a good-hearted family man, and that at many times, PRIVATE PARTS seems to want to do nothing but espouse family values. How could it be any different?  Of course not. With the vast majority of life stories, the film would be a huge flop. It's all ridiculously cynical -- in order to make the film make money, you've got to play to the type of person that the masses want to see, so you make yourself seem like you're just "playing a role," that you're really a sweet person underneath it all to win over both friends and enemies. Throughout the film, Stern gripes that he's always misunderstood. No wonder!  "Put the kids in the last scene! People will eat it up!" It's that cynical calculation of alternating sleaze with a family values image that made me literally sick to my stomach.
The film isn't without good points. Stern's acting is natural, and his co-hosts Robin Quivers and Fred Norris do an admirable job in front of the camera. The film moves at a fast pace, and Stern, when he's shown doing the show itself, never fails to be hilarious. It's when the movie goes "behind the scenes" that it become artificial, treacly and rings horribly false.
The Neue Slowenische Kunst have a similar problem. NSK, an art collective based out of Ljubljana, Slovenia, bathe traditional art such as music, painting and dance with the overtones of fascism. Adopting the images and sounds of the totalitarian rule of their hometown Ljublijana, industrial musicians Laibach create pounding modern symphonies, often converting American or European pop standards into a frightening, pounding industrial brew. Their album Let it Be, in which the entire Beatles album Let It Be is transmogrified into a throbbing, stomping teutonic sound, is a classic of industrial music. It's also very funny, and very obviously an ironic joke. It's a pity that PREDICTIONS OF FIRE isn't as well.
In a completely deadpan style, director Michael Benson analyzes the development of the Neue Slowenische Kunst and the origins of their art, linking it with Ljublijana's history of occupation. Benson spends most of the movie's time showing old newsreel footage and reciting, in a dry and monotonous tone, the history of Slovenia.
How does hostory ultimately affect Neue Slowenische Kunst's art? Very little, it would seem. In what brief moments of what we see of Laibach, Irwin, or any of the other artists in the collective, it would seem that they're doing nothing more than pulling off postmodern pranks in the art world (similar to Britain's K Foundation, whose film debut was the much more impressive and direct WATCH THE K FOUNDATION BURN A MILLION QUID), adopting the image of fascism to do nothing more than shock. The mixture of dry documentary footage and art terrorism never meld, and much of the output of the NSK is glossed over to make way for history lessons which sound recited from a textbook. Like PRIVATE PARTS, PREDICTIONS OF FIRE seems to be revisionist history, trying to force NSK's output into a historical context to make it look serious or important, and ultimately, PREDICTIONS OF FIRE rings just as false.
Signed: ESCHATFISCHE, david<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


An Introduction to Automatic Differentiation with a Visualization Tool
¶
Module 1: The Basics of Forward Mode
Introduction
The Basics of Forward Mode
A Tool for Visualizing Automatic Differentiation
A First Demo of Automatic Differentiation
Exercises
Module 2: Deeper Into Forward Mode
The Computational Trace and Practice with the Visualization Tool
More Theory
Exercises
Module 3: The Reverse Mode of Automatic Differentiation
The Basics of Reverse Mode
Practice with the Visualization Tool
More Theory
A Comparison of Forward and Reverse Mode
Going Forward
Exercises
Beyond the Basics: Extensions and Software Development
The Dual Numbers
Toward Software Implementation
Exercises
Referernces and Additional Resources
Solutions to Exercises
Module 1 Exercise Solutions
Module 2 Exercise Solutions
Module 3 Exercise Solutions
Beyond the Basics Exercise Solutions
Indices and tables
¶
Index
Module Index
Search Page
Auto-eD
Navigation
Module 1: The Basics of Forward Mode
Module 2: Deeper Into Forward Mode
Module 3: The Reverse Mode of Automatic Differentiation
Beyond the Basics: Extensions and Software Development
Referernces and Additional Resources
Solutions to Exercises
Related Topics
Documentation overview
Next:
Module 1: The Basics of Forward Mode
Quick search


Identity, Values and Strengths Exploration
• A description of your own strengths and limitations
My main strengths are that I like to do new things and make new and interesting things. Main limitations are that I can get stuck in a situation and can’t find my way out of it.
• Based on the above description, a commitment to how you will manage your workload in this programme. This should include - an explanation of how you will manage yourself to work productively and safely with other learners, facilitators and industry/community representatives.
As long as things are going in a forward direction there is no issue. I find that when they are not going in the right direction I will close off from others and try to work it out, unless it is about working together then I will sit back and listen and observe, hopefully able to connect the dots. When all else fails I will take a break, leave the work area and just clear out. This could upset some people who think I am giving up but the fact is, hitting your head against a door over and over may work but it will hurt and sometimes the best solution is to sit back and completely ignore the problem and come back to it with a clear mind.


RoScooter
RoChair
RoTrike
Store
Why Row?


announced at Macworld in January 2007: it is the iPhone.
The iPhone project started in 2003 — although rumors about such a product had circulated even before that, with the much-hyped Apple PDA. The basic idea was to build a digital convergence product, the ultimate digital device that would combine a phone, PDA, and iPod. Actually, Apple had already moved into the phone business with the Motorola ROCKR in late 2005 — a standard chipset that was compatible with iTunes. But the product was lame, and it was just a temporary solution before Apple came up with its own phone.


This page uses exactly zero cookies. Null. None. However, if we one day should add one or two, this is the place where we would write which ones and why.


Ford F-150 Sleeper Packs 700 HP EcoBoost V6, Fears No Muscle Car
It goes 0-60 in 3.9 seconds and runs the quarter in 11.6 seconds.
by Christopher SmithWhat better way to get through the middle of the week than to present a good-old-fashioned sleeper story. No, this Ford F-150 isn’t out on the street, bashing the egos of unsuspecting muscle car owners. It’s still in the tuning phase at 5 Star Tuning in South Carolina, but this video from TFLNow showing development and testing at Pageland Dragway suggests things are off to a very good start.
They Won't Suspect A Thing:
If this all sounds a bit familiar, we recently covered another 5 Star Tuning project at this location. With an ECM reprogram and an E60 blend of pump gas and E85, a Ford Explorer ST easily outran a Hemi-powered Dodge Durango SRT. This F-150 project is a bit more ambitious, however, because the goal is to see how much power can be had from a stock 3.5-liter EcoBoost V6 engine without experiencing a catastrophic failure.
There are some peripheral upgrades, namely with the intercooler, air intake, and high-flow exhaust. The fuel system is also upgraded to match the significantly increased airflow, and of course, there’s a radical ECM tune that tweaks everything from boost to timing. The tune also requires straight E85 fuel, but the engine – from the crankshaft to the turbos – is as factory stock as the new truck sitting in your dealer lot down the street.
Gallery: Ford F-150 700 HP Sleeper
Not factory stock is the power this truck makes. Out of three dyno pulls, the highest number was 603 horsepower (450 kilowatts), with subsequent runs in the 590 hp (440 kW) range. Keep in mind, that’s power to the wheels. Estimates put crankshaft power in the neighborhood of 720 hp, and there’s enough torque to tow a dwarf planet should you so desire. On the drag strip, it's enough to send this completely normal-looking F-150 to 60 mph in 3.97 seconds. It clears the eighth-mile in 7.64 seconds and it passes the quarter-mile mark in 11.6 seconds at 116 mph. That’s quick enough to hang with a Camaro ZL1, never mind the plethora of unsuspecting Mustang GT, Camaro SS, or Challenger drivers who would see taillights.
These F-150s Advertise Their Power:
The million-dollar question you’re probably asking right now is whether such a tune on an otherwise stock F-150 is even remotely reliable. That’s something 5 Star Tuning is exploring as well, because such power will certainly take its toll on driveline components to say the very least. But for the time being anyway, this truck is one helluva sneaky sleeper. And we absolutely love it.


Hi! I'm a PhD student at University of Washington with Luke Zettlemoyer and Tim Althoff. I work on NLP and Dialogue. I'm specifically interested in efficiently training and generating from large language models, controllability and safety, and applications to mental health.
Previously, I was a Research Engineer at Facebook AI Research (now Meta AI) in New York, mostly working on open domain dialogue.
CSE481DS Data Science Capstone
Zero-Knowledge Proofs; Introduction to Reinforcement Learning
Fundamentals of Computer Science
Combinatorics I & II
CIS160 Mathematical Foundations of Computer Science
(Discrete Maths & Graph Theory)
Various courses
AMC8 & MathCounts Competition Math
Various subjects: AP subject tests, SAT & SATII prep, ESL, Secondary Math
Margaret Li*, Suchin Gururangan*, Tim Dettmers, Mike Lewis, Tim Althoff, Noah A. Smith, Luke Zettlemoyer
arXiv PDF
Margaret Li*, Julian Michael*
ACL PDF
Danielle Rothermel, Margaret Li, Tim Rocktäschel, Jakob Foerster
arXiv PDF
Jing Xu, Da Ju, Margaret Li, Y-Lan Boureau, Jason Weston, Emily Dinan
arXiv PDF
Prithviraj Ammanabrolu, Jack Urbanek, Margaret Li, Arthur Szlam, Tim Rocktäschel, Jason Weston.
arXiv PDF
Shrimai Prabhumoye*, Margaret Li*, Emily Dinan, Jack Urbanek, Douwe Kiela, Jason Weston, Arthur Szlam.
arXiv PDF
Margaret Li, Stephen Roller, Ilia Kulikov, Sean Welleck, Spencer Poff, Emily Dinan, Y-Lan Boureau, Kyunghyun Cho, and Jason Weston.
arXiv PDF
Stephen Roller*, Y-Lan Boureau*, Jason Weston*, Antoine Bordes, Emily Dinan, Angela Fan, David Gunning, Da Ju, Margaret Li, Spencer Poff, Pratik Ringshia, Kurt Shuster, Eric Michael Smith, Arthur Szlam, Jack Urbanek, Mary Williamson.
arXiv PDF
Margaret Li, Jason Weston, and Stephen Roller.
arXiv PDF
Hannah Rashkin, Eric M. Smith, Margaret Li, and Y-Lan Boureau.
arXiv PDF
For all the generalities I've read and heard about failure being ok and imposter syndrome being universal, I so rarely get to see behind the curation of CVs and posts. So I've made what I wish I saw more of -- a 'failure' resume. But I do hope that you'll try to see my supposed failures, and yours, as vital and constructive building blocks of life. So here's an excerpt (such a small slice) of my career-related rejections and such since undergraduate.
There are plenty more for all other aspects of my life too, and I'm happy to chat about those, or anything listed below, in detail. Especially if I know you personally, feel free to reach out anytime to talk about what you're going through.
I transferred into CS from Bioengineering during undergrad and had never coded before. With less experience and coursework than many of my peers, I applied to > 100 internships during my undergraduate years and got rejected from them all -- except for Facebook, Google, and a startup my final summer.
I had 0 ML experience coming out of university, and when I tried to join FAIR, I was rejected the first time. A research scientist later accepted me on their team, and I'm super grateful to have gotten that opportunity despite there being more qualified engineers (who maybe had at least taken a Machine Learning course for their degree). But I was team-less for nearly 3 months, longer than anyone else I knew.
I struggled to ramp up on both engineering and machine learning knowledge at the same time, because of the aforementioned lack of experience in ...both. So I took longer to get my (mandatory) first promotion than anyone else I knew, including a negative rating the cycle before I did get the promotion.
I didn't get any kind of outreach or interview, didn't even get explicitly rejected. Got ghosted by a professor who had asked me to email them -- no hard feelings to that person, who is definitely very busy! But I did take it as negative personal feedback then.
I spent about 4-5 weeks of my life doing nothing but applying, and got exactly one interview over the course of 2 years. One fellowship, notably, gave me wildly opposite feedback the second year I applied compared to the first year, which just goes to show that the application readers aren't perfect and the process is super noisy.
Most got in on resubmission, but it didn't make the first rejection pleasant. Rebuttals can be extremely demoralizing, and reviewers can state their opinions as fact sometimes.
I went almost 3 years from 2019 - 2022 without writing a single first-author paper. I was doing research! I just got no results I felt were worth publishing.
When I'm not doing research or teaching, I enjoy walking to every bubble tea shop within 5 miles, singing mostly on-key, rewatching/rereading the Lord of the Rings trilogy, lifting heavy things and putting them down, and listening to people on Youtube talk about absolutely anything. I also spend far too much time online window-shopping and window-eating, which is exactly what it sounds like, in an attempt to limit my actual shopping and eating (the latter is a lost cause).
I've decided to do my best to fit in while living in the PNW by taking up hiking and snowboarding, or just walking around with hiking and snowboarding equipment. I'm always interested in new hobbies, so if you have a beginner- and klutz-friendly one to share, let me know :).


Below, a template element is defined. You can't see it because it's a template element.
This instance is may be described as
For my next trick, I will attempt to create an instance of the template with data:
Here is another instance:
Did you see what I did there? I kept some of the content the same, but changed the rest of it. Because templates.
Make your own copies of the template by filling out the fields and clicking the button:


Getting started
The blocks
<head>
<script type="text/javascript" src="../js-graph-it.js"></script>
<link rel="stylesheet" type="text/css" href="../js-graph-it.css">
.block { position: absolute; }
</style>
<body onload="initPageObjects();">
<div class="canvas" id="mainCanvas"
style="width: 350px; height: 250px; border: 1px solid black;">
style="left: 10px; top:10px;">
h1 block
</h1>
style="left: 200px; top: 100px;">
h2 block
</h2>
</body>
</html>
Absolute positioning is not required for js-graph-it to work, hence, we must explicitly declare that we want the blocks to be placed in an absolute position within the canvas.
This can be done declaring that the block
class has absolute positioning in a style section,
into an external css file or in the style attribute of each block.
Any html element within a canvas can be a block and can be connected with other blocks.
In this sample we place a h1
element into the page as the first block.
To declare that our h1
element is a block, add the block
class to it.
A unique id is required and we will use it to refer to the block.
Since we specified absolute positioning for blocks, we need to set the top left corner coordinates for the
h1
element.
Note: the top
and left
styles values for a block are considered relative to
the top left corner of the canvas.
A second block is a h2
element.


|
Ocular Engine
|
#include <Profiler.hpp>
Public Member Functions | |
| void | beginBlock (std::string const &name, std::string const &segment) |
| void | endBlock () |
| void | printToConsole (bool prettify=true) const |
| void | printToTXT (std::string const &path) const |
| void | printToHTML (std::string const &path) const |
Protected Member Functions | |
| void | destroy () |
| void | destroyNode (ProfilerNode *node) const |
| void | createLogBuffer (std::stringstream &stream, bool prettify) const |
| void | createLogForNode (ProfilerNode *node, std::stringstream &stream, bool prettify) const |
| std::string | prettifyName (std::string const &name) const |
A simple CPU performance profiler. Records the amount of time it takes to execute a given segment of code. The profiler may be invoked directly, or the PROFILE family of macros can be used instead.
Performance readings are done in a series of nested blocks, and the results can either be queried at runtime or saved to an external log.
In order for profiling to occur, the OCULAR_PROFILE flag must be enabled. By default, all debug builds of the Ocular Engine have this flag enabled.
It should be noted that while the act of profiling may cause a slowdown in program performance, the recording results of the profiling are of the true execution time of the code segment. So, deeply nested instances of profiling will not affect the performance readings.
There are two different types of profiling: per scope or per designated block. These can be seen in the following example:
void ParentMethod() { PROFILE() ChildMethod(); } void ChildMethod() { PROFILE() // ... SubchildMethod(); } void SubchildMethod() { PROFILE_START("Segment A") // ... PROFILE_END() PROFILE_START("Segment B") // ... PROFILE_END() }
Which results in the following output (when printed to console or as plain-text):
- ParentMethod [1] [100.0ms] [100.0ms] - ChildMethod [1] [100.0ms] [100.0ms] - SubchildMethod "Segment A" [1] [50.0ms] [50.0ms] - SubchildMethod "Segment B" [1] [50.0ms] [50.0ms]
The output lines are formatted as follows:
Name Segment Calls Elapsed Average
Where,
Name: Name of the profiled function/method Segment: Name of the block segment (optional) Calls: Total amount of times this segment of code had been called Elapsed: Total amount of elapsed time spent in the code segment Average: Average amount of time spent executing the code segment
| void Ocular::Core::Profiler::beginBlock | ( | std::string const & | name, |
| std::string const & | segment | ||
| ) |
Begins a new block of code to profile.
| [in] | name | Name of the code block. |
| [in] | segment | Optional segment name if part of a larger block of profiled code. Use this if, for example, you are profiling multiple individual segments of a single function. |
| void Ocular::Core::Profiler::endBlock | ( | ) |
Ends the current profile block.
|
protected |
Regex to search for match inbetween (but not including) ' ' and '(' Breaking the regex down as I will most likely forget what is happening:
\b : Selection starts on a word boundary ([^\s])+ : Selection contains 1 or more non-space characters ?(?=\() : Selection ends with a '(' but does not include it (using lookahead)
| void Ocular::Core::Profiler::printToConsole | ( | bool | prettify = true | ) | const |
Prints the current profiler data to the console (standard out).
| [in] | prettify | If TRUE, function signatures are trimmed to just their names (namespace::class:method). |
| void Ocular::Core::Profiler::printToHTML | ( | std::string const & | path | ) | const |
| void Ocular::Core::Profiler::printToTXT | ( | std::string const & | path | ) | const |
Prints the current profiler data to the specified .txt file. Output is formatted in the same manner as the prettified console output.
| [in] | path | File path to output the data to (expects a .txt) |


The CSS padding properties are used to generate space around content.
The padding properties set the size of the white space between the element content and the element border.
This element has a padding of 50px.
The CSS padding properties define the white space between the element content and the element border.
The padding clears an area around the content (inside the border) of an element.
| Note: The padding is affected by the background color of the element! |
With CSS, you have full control over the padding. There are CSS properties for setting the padding for each side of an element (top, right, bottom, and left).
CSS has properties for specifying the padding for each side of an element:
padding-top
padding-right
padding-bottom
padding-left
All the padding properties can have the following values:
The following example sets different padding for all four sides of a <p> element:
p {
padding-top: 50px;
padding-right: 30px;
padding-bottom: 50px;
padding-left: 80px;
}
To shorten the code, it is possible to specify all the padding properties in one property.
The padding
property is a shorthand property for the following individual padding properties:
padding-top
padding-right
padding-bottom
padding-left
p {
padding: 50px 30px 50px 80px;
}
So, here is how it works:
If the padding
property has four values:
If the padding
property has three values:
If the padding
property has two values:
If the padding
property has one value:


Backchart
A MVC framework based on Backbone and your chart library
Backchart is open source.If you want to help me to do better, please View on github
Currently v0.1.0
A MVC framework based on Backbone and your chart library
Backchart is open source.If you want to help me to do better, please View on github
Currently v0.1.0