Introduction
Welcome to the Minto API! You can use our API to access Minto API endpoints, which can get information on various products in our database.
We have language bindings in JavaScript only! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
This example API documentation page was created with Slate. Feel free to edit it and use it as a base for your own API's documentation.
Authentication
To authorize, use this code:
{
"x-auth-token": "token"
}
Make sure to replace
token
with your uniquely generated token.
Minto uses Passport's facebook-token
and pure email and password as part of the authentication process.
Once a user is verified by the Facebook Login process a x-auth-token
is using JWT is generated and sent.
Here after, the token should be included in the header of each request to gain access to secured routes.
This should look something like this:
x-auth-token: EAAZAKwmZC5Ki4BAD0fCZAZCyVQZ...
Manual Email login
REQUEST:
{
"first_name": "john",
"last_name":"doe",
"username": "johndoe",
<EMAIL_ADDRESS>"password":"password"
}
RESPONSE:
{
"data": {
"id": 32,
"first_name": "justin",
"last_name": "lai",
"username": "justintlai",
"email"<EMAIL_ADDRESS>"password": null,
"fb_id": null,
"fb_token": null,
"stripe_customer_id": null,
"profile_URL": null,
"national_id_URL": null,
"email_verified_YN": false,
"seller_YN": false,
"disabled_YN": false,
"admin_YN": false,
"deleted_YN": false,
"created_at": "2018-09-09T19:56:41.000Z",
"updated_at": "2018-09-09T19:56:41.000Z",
"user_id": null
},
"info": "Success: User Found"
}
This endpoint will create a new user or login an existing user.
HTTP Request
POST api/v1/auth/login
URL Parameters
- No parameters required
SCOPES
- This endpoint requires Facebook Login to Authenticate
Users
CREATE a new user
REQUEST:
{
"first_name": "John",
"last_name": "Doe",
"username": "JohnDoe",
"email"<EMAIL_ADDRESS>"profile_URL":"https://demos.subinsb.com/isl-profile-pic/image/person.png"
}
RESPONSE:
{
"DEBUG": "POST create new user",
"status": 200,
"message": "Success: User successfully created",
"data": {
"first_name": "John",
"last_name": "Doe",
"username": "JohnDoe",
"email"<EMAIL_ADDRESS>"profile_URL":"https://demos.subinsb.com/isl-profile-pic/image/person.png",
"national_id_URL":"https://demos.subinsb.com/isl-profile-pic/image/person.png"
}
This endpoint creates a new user.
HTTP Request
POST api/v1/users
URL Parameters
- No parameters required
SCOPES
- This endpoint requires Facebook Login to Authenticate
READ a Specific User
RESPONSE:
{
"DEBUG": "GET user",
"status": 200,
"message": "Success: User successfully retrieved",
"data": {
"user_id": 1,
"first_name": "Mark",
"last_name": "Robins",
"username": "MarkRobins",
"email"<EMAIL_ADDRESS>"profile_URL": "https://source.unsplash.com/collection/888146/300x300",
"total_followers": 12,
"total_following": 1,
"total_products": 6
}
}
This endpoint retrieves a specific user.
It will return a users profile along with the number of followers, likes and profile picture.
HTTP Request
GET api/v1/users/:user_id
Example: GET User Id 1
URL Parameters
| Parameter | Description |
|---|---|
| user_id | The id of the user to retrieve |
SCOPES
- No permission required
READ a list of all users
RESPONSE:
{
"DEBUG": "GET All users",
"status": 200,
"message": "Success: User successfully retrieved",
"data": [
{
"user_id": 1,
"first_name": "Mark",
"last_name": "Robins",
"username": "MarkRobins",
"email"<EMAIL_ADDRESS>"profile_URL": "https://source.unsplash.com/collection/888146/300x300",
"national_id_URL": null,
"email_verified_YN": 0,
"seller_YN": 0,
"disabled_YN": 0,
"admin_YN": 0,
"total_followers": 12,
"total_following": 1,
"total_products": 6
}...
]
}
This endpoint retrieves a list of all users.
You can optionally add parameters to further define your output but defaults are applied if nothing is supplied.
HTTP Request
GET api/v1/users/
Example: GET User All
GET api/v1/users?page=1&limit=20
Example: GET User All
URL Query
| Parameter | Description | required? |
|---|---|---|
| page | set the page number to retrieve | optional (default to 1) |
| limit | set the size of the page limit | optional (default to 15) |
SCOPES
- This endpoint requires an admin authorisation token to access.
FIELDS
These fields are available to be updated:
| Field | Description |
|---|---|
| first_name | First name extracted from a users facebook account |
| last_name | Last name extracted from a users facebook account |
| username | User selected username depending on availability (unqiue) |
| The email address linked to their facebook account | |
| profile_URL | By default from a user's facebook account |
| national_id_URL | Uploaded by a user to become an approved seller |
| email_verified_YN | Determined email verification |
| seller_YN | Determine whether a user is a seller |
| disabled_YN | Determine whether an account is disabled/suspended |
| admin_YN | Determine whether a user has admin rights |
| total_followers | The number of followers a user has |
| total_following | The number of people following this user |
| total_products | The number of products a user has uploaded |
UDPATE a user
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"first_name": "Jon",
"last_name": "Snow"
}
RESPONSE:
{
"DEBUG": "PUT user 18's header profile page",
"status": 200,
"message": "Success: User successfully updated",
"data": {
"first_name": "Jon",
"last_name": "Snow",
"username": "JonDoe",
"email"<EMAIL_ADDRESS>"profile_URL": "https://demos.subinsb.com/isl-profile-pic/image/person.png"
}
}
This endpoint creates a new user.
HTTP Request
UPDATE api/v1/users/
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
FIELDS
These fields are available to be updated:
| Field | Description | Permission |
|---|---|---|
| first_name | First name extracted from a users facebook account | loggedIn |
| last_name | Last name extracted from a users facebook account | loggedIn |
| username | User selected username depending on availability (unqiue) | loggedIn |
| profile_URL | By default from a user's facebook account | loggedIn |
| national_id_URL | Uploaded by a user to become an approved seller | loggedIn |
| email_verified_YN | Determined email verification | admin |
| seller_YN | Determine whether a user is a seller | admin |
| disabled_YN | Determine whether an account is disabled/suspended | admin |
| admin_YN | Determine whether a user has admin rights | admin |
DELETE a user
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"first_name": "Jon",
"last_name": "Snow"
}
RESPONSE:
{
"DEBUG": "PUT user 18's header profile page",
"status": 200,
"message": "Success: User successfully updated",
"data": {
"first_name": "Jon",
"last_name": "Snow",
"username": "JonDoe",
"email"<EMAIL_ADDRESS>"profile_URL": "https://demos.subinsb.com/isl-profile-pic/image/person.png"
}
}
This endpoint deletes a user. Currently, this will not completely delete all user actions in the database. It will only delete the user from the user table.
HTTP Request
DELETE api/v1/users/
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
Followers
CREATE a new follower
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
REQUEST:
{
"folloing_id": 1,
}
RESPONSE:
{
"data": {
"id": 2,
"follower_id": 17,
"following_id": 4,
"follow_date": "2018-09-26T05:24:08.000Z"
},
"info": "Success: Follower data successfully created"
}
This endpoint creates a new follower for the user logged in.
HTTP Request
POST api/v1/followers
URL Parameters
- No parameters required
SCOPES
- This endpoint requires Facebook Login to Authenticate
READ a Specific User's Follower List
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"data": {
"count": 2,
"rows": [
{
"id": 1,
"follower_id": 1,
"following_id": 2,
"follow_date": "2017-12-01T00:00:00.000Z",
"created_at": "2018-08-30T08:30:33.000Z",
"updated_at": "2018-08-30T08:30:33.000Z"
},
{
"id": 2,
"follower_id": 1,
"following_id": 3,
"follow_date": "2017-12-03T00:00:00.000Z",
"created_at": "2018-08-30T08:30:33.000Z",
"updated_at": "2018-08-30T08:30:33.000Z"
}
]
},
"info": "Success: Follower data successfully retrieved"
}
This endpoint retrieves a specific user.
It will return a users profile along with the number of followers, likes and profile picture.
HTTP Request
GET api/v1/followers/:user_id
URL Parameters
| Parameter | Description |
|---|---|
| user_id | The id of the user to retrieve |
SCOPES
- This endpoint requires Facebook Login to Authenticate
READ a list of followers
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"data": {
"count": 2,
"rows": [
{
"id": 1,
"follower_id": 1,
"following_id": 2,
"follow_date": "2017-12-01T00:00:00.000Z",
"created_at": "2018-08-30T08:30:33.000Z",
"updated_at": "2018-08-30T08:30:33.000Z"
},
{
"id": 2,
"follower_id": 1,
"following_id": 3,
"follow_date": "2017-12-03T00:00:00.000Z",
"created_at": "2018-08-30T08:30:33.000Z",
"updated_at": "2018-08-30T08:30:33.000Z"
}
]
},
"info": "Success: Follower data successfully retrieved"
}
This endpoint retrieves a list of all follower for the user logged in.
You can optionally add parameters to further define your output but defaults are applied if nothing is supplied.
HTTP Request
GET api/v1/followers/
GET api/v1/followers?page=1&limit=20
URL Query
| Parameter | Description | required? |
|---|---|---|
| page | set the page number to retrieve | optional (default to 1) |
| limit | set the size of the page limit | optional (default to 15) |
SCOPES
- This endpoint requires Facebook Login to Authenticate
DELETE a follower
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"data": {
"id": 40,
"follower_id": 17,
"following_id": 6,
"follow_date": "2018-09-26T11:30:53.000Z",
"created_at": "2018-09-26T11:30:53.000Z",
"updated_at": "2018-09-26T11:30:53.000Z"
},
"info": "Success: User id 17 has unfollowed user id 6"
}
This endpoint deletes a follower from the logged in user's follower list.
HTTP Request
DELETE api/v1/followers/:follower_id
URL Parameters
| Parameter | Description |
|---|---|
| follower_id | The id of the user to unfollow |
SCOPES
- This endpoint requires Facebook Login to Authenticate
Addresses
CREATE an Address
REQUEST:
{
"address_type": "delivery", (delivery or billing ONLY)
"address_name": "Shoreditch Home",
"address1": "Flat 5",
"address2": "176 Shoreditch High Street",
"city": "London",
"postcode": "E1 6AX",
"country": "United Kingdom",
"country_code": "UK",
"primary_YN": true
}
RESPONSE:
{
"data": {
"user_id": 17,
"address_type": "delivery",
"address_name": "Shoreditch Home",
"address1": "Flat 5",
"address2": "176 Shoreditch High Street",
"city": "London",
"postcode": "E1 6AX",
"country": "United Kingdom",
"country_code": "UK",
"primary_YN": true
},
"info": "Success: Address data successfully created"
}
This endpoint creates a new address.
HTTP Request
POST api/v1/addresses
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
GET an Address for an User
RESPONSE:
{
"data": {
"count": 1,
"rows": [
{
"id": 1,
"user_id": 17,
"address_type": "delivery",
"address_name": "Shoreditch Home",
"address1": "Flat 5",
"address2": "176 Shoreditch High Street",
"address3": null,
"address4": null,
"city": "London",
"county": null,
"postcode": "E1 6AX",
"country": "United Kingdom",
"country_code": "UK",
"primary_YN": false,
"created_at": "2018-09-26T07:42:56.000Z",
"updated_at": "2018-09-26T07:54:59.000Z"
}
]
},
"info": "Success: Address data successfully retrieved"
}
This endpoint retrieves a list of addresses for user specified.
HTTP Request
GET api/v1/addresses/:user_id
URL Parameters
| Parameter | Description |
|---|---|
| user_id | The id of the user's address to retrieve |
SCOPES
- This endpoint requires an authentication token to access.
GET Address list
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"data": {
"count": 1,
"rows": [
{
"id": 1,
"user_id": 17,
"address_type": "delivery",
"address_name": "Shoreditch Home",
"address1": "Flat 5",
"address2": "176 Shoreditch High Street",
"address3": null,
"address4": null,
"city": "London",
"county": null,
"postcode": "E1 6AX",
"country": "United Kingdom",
"country_code": "UK",
"primary_YN": false,
"created_at": "2018-09-26T07:42:56.000Z",
"updated_at": "2018-09-26T07:54:59.000Z"
}
]
},
"info": "Success: Address data successfully retrieved"
}
This endpoint retrieves a list of all addresses for the logged in user.
HTTP Request
GET api/v1/addresses
GET api/v1/addresses/?page=1&limit=20
URL Query
| Parameter | Description | required? |
|---|---|---|
| page | set the page number to retrieve | optional (default to 1) |
| limit | set the size of the page limit | optional (default to 15) |
SCOPES
- You must be logged in to access this endpoint
UPDATE an Address
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"address_type": "delivery",
"address_name": "Shoreditch Home",
"address1": "Flat 5",
"address2": "176 Shoreditch High Street",
"city": "London",
"postcode": "E1 6AX",
"country": "United Kingdom",
"country_code": "GB",
"primary_YN": true,
}
RESPONSE:
{
"data": {
"user_id": 17,
"address_type": "delivery",
"address_name": "New Name",
"address1": "Flat 5",
"address2": "176 Shoreditch High Street",
"address3": null,
"address4": null,
"city": "London",
"county": null,
"postcode": "E1 6AX",
"country": "United Kingdom",
"country_code": "UK",
"primary_YN": false
},
"info": "Success: Address data successfully updated"
}
This endpoint update an address.
For country codes see: https://www.nationsonline.org/oneworld/country_code_list.htm
HTTP Request
UPDATE api/v1/addresses/:address_id
URL Parameters
| Parameter | Description |
|---|---|
| address_id | The id of the address to be deleted |
SCOPES
- This endpoint requires an authentication token to access.
FIELDS
These fields are available to be updated:
| Field | Description | Permission |
|---|---|---|
| address_type | billing or delivery | loggedIn |
| address_name | the name of the address given by user | loggedIn |
| address1 | first line of address | loggedIn |
| address2 | second line of address | loggedIn |
| address3 | third line of address | loggedIn |
| address4 | fourth line of address | loggedIn |
| city | city | loggedIn |
| county | county see above list of names of countries | loggedIn |
| postcode | postcode area | loggedIn |
| country | name of the country | loggedIn |
| country_code | country code - 2 characters (see above for list) | loggedIn |
| primary_YN | description of the product | loggedIn |
DELETE a Product
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"data": {
"id": 5,
"user_id": 17,
"address_type": "delivery",
"address_name": "Shoreditch Home",
"address1": "Flat 5",
"address2": "176 Shoreditch High Street",
"address3": null,
"address4": null,
"city": "London",
"county": null,
"postcode": "E1 6AX",
"country": "United Kingdom",
"country_code": "UK",
"primary_YN": false,
"created_at": "2018-09-26T07:55:22.000Z",
"updated_at": "2018-09-26T07:58:35.000Z"
},
"info": "Success: Addresses 5 data successfully deleted!"
}
This endpoint deletes an address.
HTTP Request
DELETE api/v1/adresses/:address_id
URL Parameters
| Parameter | Description |
|---|---|
| address_id | The id of the address to be deleted |
SCOPES
- This endpoint requires an authentication token to access.
Products
CREATE a Product
REQUEST:
{
//Product Category
"category_id":11,
"description":"test description",
//Price
"price":"100",
"currency_id":"GBP",
"shipping_YN":1,
"meet_in_person_YN":1,
//Image Information
"images": [
{
"image_URL": "image1.com",
"image_description": "test image description",
"image_date": ""
},
{
"image_URL": "image2.com",
"image_description": "test 2 image description",
"image_date": ""
}
]
}
RESPONSE:
{
"DEBUG": "POST create new product",
"status": 200,
"message": "Success: Product successfully created",
"data": {
"user_id": 16,
"first_name": "Jon",
"last_name": "Snow",
"username": "JonSnow",
"product_id": 110,
"category_id": 11,
"entry_date": "2018-07-13T12:32:10.000Z",
"description": "King of the North",
"shipping_YN": true,
"meet_in_person_YN": true,
"images": [
{
"image_id": 120,
"image_URL": "Wolves.com",
"image_description": "My Wolves",
"image_date": "2018-07-13T12:32:10.000Z",
"primary_YN": false
},
{
"image_id": 121,
"image_URL": "Selfie.com",
"image_description": "Jon snow",
"image_date": "2018-07-13T12:32:10.000Z",
"primary_YN": true
}
],
"price": "100",
"active_YN": true,
"currency_id": "GBP"
}
}
This endpoint creates a new product.
HTTP Request
POST api/v1/products
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
GET a Specific Product
RESPONSE:
{
"DEBUG": "GET product by ProductID",
"status": 200,
"message": "Success: Product data successfully retrieved",
"data": [
{
"product_id": 1,
"category_id": 6,
"entry_date": "2017-11-15T00:00:00.000Z",
"description": "PRE-OWNED 9CT YELLOW GOLD FULL KRUGERRAND MOUNT PENDANT",
"shipping_YN": false,
"meet_in_person_YN": false,
"User": {
"user_id": 13,
"first_name": "Rachel",
"last_name": "Green",
"username": "RachelGreen"
},
"Images": [
{
"image_URL": "https://picsum.photos/200/300",
"image_description": "Bacon ipsum dolor amet shankle porchetta brisket beef alcatra, tongue venison.",
"image_date": "2017-11-01T00:00:00.000Z"
}
],
"Prices": [
{
"price": 538.8
}
]
}
]
}
This endpoint retrieves a specific product.
HTTP Request
GET api/v1/products/:product_id
Example: GET Product Id 1
URL Parameters
| Parameter | Description |
|---|---|
| product_id | The id of the product to retrieve |
SCOPES
- No permission required
GET Product list
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "GET user: 1's product",
"status": 200,
"message": "Success: Product data successfully retrieved",
"data": [
{
"product_id": 28,
"category_id": 1,
"entry_date": "2018-01-07T00:00:00.000Z",
"description": "PRE-OWNED 9CT YELLOW GOLD ONYX SIGNET RING",
"shipping_YN": true,
"meet_in_person_YN": true,
"User": {
"user_id": 1,
"first_name": "Mark",
"last_name": "Robins",
"username": "MarkRobins"
},
"Images": [
{
"image_URL": "https://picsum.photos/200/300",
"image_description": "Bacon ipsum dolor amet shankle porchetta brisket beef alcatra, tongue venison.",
"image_date": "2017-12-29T00:00:00.000Z"
}
],
"Prices": [
{
"price": 583.2
}
]
}
]
}
This endpoint retrieves a list of all products for the logged in user.
HTTP Request
GET api/v1/products
Example: GET User All
GET api/v1/products?page=1&limit=20
Example: GET Products All
URL Query
| Parameter | Description | required? |
|---|---|---|
| page | set the page number to retrieve | optional (default to 1) |
| limit | set the size of the page limit | optional (default to 15) |
SCOPES
- You must be logged in to access this endpoint
UPDATE a Product
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"category_id":8,
"description":"test description 23",
"shipping_YN":false,
"price": 999,
"product_id":100
}
RESPONSE:
{
"DEBUG": "PUT user: 16's product",
"status": 200,
"message": "Success: Product successfully updated",
"data": {
"user": {
"user_id": 16,
"first_name": "Jon",
"last_name": "Snow",
"username": "JonSnow"
},
"category_id": 8,
"entry_date": "2018-07-13T12:17:39.000Z",
"description": "test description 23",
"shipping_YN": true,
"meet_in_person_YN": true,
"Price": {
"price": 999,
"entry_date": "2018-07-13T13:38:35.000Z",
"active_YN": true
}
}
}
This endpoint update a product.
HTTP Request
UPDATE api/v1/products
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
FIELDS
These fields are available to be updated:
| Field | Description | Permission |
|---|---|---|
| category_id | category of the product | loggedIn |
| description | description of the product | loggedIn |
| shipping_YN | seller allowing shipping conditions | loggedIn |
| meet_in_person_YN | seller will meet in person to exchange goods | loggedIn |
| price | update the price of the product | loggedIn |
DELETE a Product
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "DELETE productId: 103",
"status": 200,
"message": "Success: Product successfully deleted",
"data": [
{
"id": 103,
"category_id": 11,
"user_id": 16,
"entry_date": "2018-07-13T12:22:17.000Z",
"description": "test description",
"shipping_YN": true,
"meet_in_person_YN": true,
"created_at": "2018-07-13T12:22:17.000Z",
"updated_at": "2018-07-13T12:22:17.000Z",
"product_id": null
},
{
"id": 103,
"currency_id": "GBP",
"product_id": 103,
"price": 100,
"entry_date": "2018-07-13T12:22:17.000Z",
"active_YN": true,
"created_at": "2018-07-13T12:22:17.000Z",
"updated_at": "2018-07-13T12:22:17.000Z"
},
{
"id": 106,
"product_id": 103,
"image_URL": "image1.com",
"image_description": "test image description",
"image_date": "2018-07-13T12:22:17.000Z",
"primary_YN": false,
"created_at": "2018-07-13T12:22:17.000Z",
"updated_at": "2018-07-13T12:22:17.000Z"
}
]
}
This endpoint deletes a product.
HTTP Request
DELETE api/v1/products/:product_id
URL Parameters
| Parameter | Description |
|---|---|
| product_id | The id of the product to be deleted |
SCOPES
- This endpoint requires an authentication token to access.
Orders
CREATE a Order
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
//Product
"product_id":11,
"delivery_method": "shipping"
}
RESPONSE:
{
"DEBUG": "POST create new order",
"status": 200,
"message": "Success: Order successfully created",
"data": {
"order_id": 47,
"order_date": "2018-07-14T19:59:04.000Z",
"delivery_method": "shipping",
"Product": {
"id": 15,
"category_id": 1,
"user_id": 11,
"entry_date": "2017-12-28T00:00:00.000Z",
"description": "PRE-OWNED 18CT YELLOW GOLD FANCY BAND RING",
"shipping_YN": true,
"meet_in_person_YN": false,
"created_at": "2018-07-13T12:16:20.000Z",
"updated_at": "2018-07-13T12:16:20.000Z",
"product_id": null,
"Prices": [
{
"price": 331.2
}
]
},
"OrderStatus": {
"description": "OPEN"
}
}
}
This endpoint creates a new order.
HTTP Request
POST api/v1/orders
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
GET a Specific Order
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "GET order",
"status": 200,
"message": "Success: Order successfully found",
"data": {
"order_id": 41,
"order_date": "2018-07-14T14:13:51.000Z",
"delivery_method": "shipping",
"Product": {
"id": 11,
"category_id": 1,
"user_id": 11,
"entry_date": "2017-11-14T00:00:00.000Z",
"description": "PRE OWNED 9CT YELLOW GOLD 7 BAR GATE BRACELET",
"shipping_YN": false,
"meet_in_person_YN": true,
"created_at": "2018-07-13T12:16:20.000Z",
"updated_at": "2018-07-13T12:16:20.000Z",
"product_id": null,
"Prices": [
{
"price": 106.8
}
]
},
"OrderStatus": {
"description": "OPEN"
}
}
}
This endpoint retrieves a specific order.
HTTP Request
GET api/v1/orders/:order_id
Example: GET order Id 1
URL Parameters
| Parameter | Description |
|---|---|
| order_id | The id of the order to retrieve |
SCOPES
- This endpoint requires an authentication token to access.
GET Order list
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "GET All orders for current logged in user",
"status": 200,
"message": "Success: Orders successfully found",
"data": [
{
"order_id": 41,
"order_date": "2018-07-14T14:13:51.000Z",
"delivery_method": "shipping",
"Product": {
"id": 11,
"category_id": 1,
"user_id": 11,
"entry_date": "2017-11-14T00:00:00.000Z",
"description": "PRE OWNED 9CT YELLOW GOLD 7 BAR GATE BRACELET",
"shipping_YN": false,
"meet_in_person_YN": true,
"created_at": "2018-07-13T12:16:20.000Z",
"updated_at": "2018-07-13T12:16:20.000Z",
"product_id": null,
"Prices": [
{
"price": 106.8
}
]
},
"OrderStatus": {
"description": "OPEN"
}
},
]
}
This endpoint retrieves a list of all orders for the logged in user.
HTTP Request
GET api/v1/orders
Example: GET User All
GET api/v1/orders?page=1&limit=20
Example: GET Orders All
URL Query
| Parameter | Description | required? |
|---|---|---|
| page | set the page number to retrieve | optional (default to 1) |
| limit | set the size of the page limit | optional (default to 15) |
SCOPES
- You must be logged in to access this endpoint
UPDATE a Order
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"category_id":8,
"description":"test description 23",
"shipping_YN":0,
"price": 999,
"product_id":100
}
RESPONSE:
{
"DEBUG": "PUT user: 16's order",
"status": 200,
"message": "Success: Order successfully updated",
"data": {
"user": {
"user_id": 16,
"first_name": "Jon",
"last_name": "Snow",
"username": "JonSnow"
},
"category_id": 8,
"entry_date": "2018-07-13T12:17:39.000Z",
"description": "test description 23",
"shipping_YN": true,
"meet_in_person_YN": true,
"Price": {
"price": 999,
"entry_date": "2018-07-13T13:38:35.000Z",
"active_YN": true
}
}
}
This endpoint update a order.
HTTP Request
UPDATE api/v1/orders
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
FIELDS
These fields are available to be updated:
| Field | Description | Permission |
|---|---|---|
| delivery_method | The method chosen by the buyer to receive the goods | loggedIn |
DELETE a Order
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "DELETE order deleted",
"status": 200,
"message": "Success: Order successfully deleted",
"data": {
"id": 48,
"user_id": 16,
"product_id": 15,
"order_date": "2018-07-14T20:03:34.000Z",
"order_status_id": 5,
"delivery_method": "shipping",
"created_at": "2018-07-14T20:03:34.000Z",
"updated_at": "2018-07-14T20:03:34.000Z"
}
}
This endpoint deletes a order.
HTTP Request
DELETE api/v1/orders/:order_id
URL Parameters
| Parameter | Description |
|---|---|
| order_id | The id of the product to be deleted |
SCOPES
- This endpoint requires an authentication token to access.
Order Statuses
CREATE Order Status
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
//Order Status
"id":11,
"description": "Another Order Status"
}
RESPONSE:
{
"DEBUG": "GET orderStatus",
"status": 200,
"message": "Success: orderStatus data successfully created",
"data": {
"id": 11,
"description": "Another Order Status"
}
}
This endpoint creates a new order status.
HTTP Request
POST api/v1/orderstatuses
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
GET Order Status list
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "GET orderStatus",
"status": 200,
"message": "Success: OrderStatus data successfully retrieved",
"data": [
{
"orderstatus_id": 5,
"description": "OPEN"
},
{
"orderstatus_id": 10,
"description": "CLOSED"
},
{
"orderstatus_id": 99,
"description": "CANCELLED"
}
]
}
This endpoint retrieves a list of all order statuses.
HTTP Request
GET api/v1/ordersstatuses
Example: GET Order Statuses All
URL Parameters
- No parameters required
SCOPES
- You must be logged in to access this endpoint
UPDATE Order Status
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"description":"updated a description"
}
RESPONSE:
{
"DEBUG": "Update a specific orderStatus",
"status": 200,
"message": "Success: orderStatus data successfully updated",
"data": {
"id": 5,
"description": "I CHANGED THIS"
}
}
This endpoint update an order status.
HTTP Request
UPDATE api/v1/ordersstatuses
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
FIELDS
These fields are available to be updated:
| Field | Description | Permission |
|---|---|---|
| description | The description of an order status | loggedIn |
DELETE an Order Status
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "DELETE an orderStatus",
"status": 200,
"message": "Success: Order Status successfully deleted",
"data": {
"id": 21,
"description": "some description",
"created_at": "2018-07-16T13:55:35.000Z",
"updated_at": "2018-07-16T13:55:35.000Z"
}
}
This endpoint deletes an order status.
HTTP Request
DELETE api/v1/orderstatuses/:orderstatus_id
URL Parameters
| Parameter | Description |
|---|---|
| orderstatus_id | The id of the order status to be deleted |
SCOPES
- This endpoint requires an authentication token to access.
Categories
CREATE a category
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"product_type": "Back",
"description": "Jerwellery for your back",
"active_YN": 1
}
RESPONSE:
{
"DEBUG": "CREATE a new category",
"status": 200,
"message": "Success: Category data successfully created",
"data": {
"product_type": "Back",
"description": "Jerwellery for your back"
}
}
This endpoint creates a new category.
HTTP Request
POST api/v1/categories
URL Parameters
- No parameters required
SCOPES
- This endpoint requires **ADMIN* token to access.*
GET Categories list
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "GET category",
"status": 200,
"message": "Success: Category data successfully retrieved",
"data": [
{
"category_id": 1,
"product_type": "Hair and head ornaments",
"description": "Jewellery for your hair and head"
},
{
"category_id": 2,
"product_type": "Neck",
"description": "Anything that goes on your neck"
},
{
"category_id": 3,
"product_type": "Arms",
"description": "Jewellery for your arms"
},
{
"category_id": 4,
"product_type": "Hands",
"description": "Jewellery for your hands like rings"
},
{
"category_id": 5,
"product_type": "Body",
"description": "Anything that goes on your body"
},
{
"category_id": 6,
"product_type": "Feet",
"description": "Jewellery for your feet"
},
{
"category_id": 7,
"product_type": "Back",
"description": "Jerwellery for your back"
}
]
}
This endpoint retrieves a list of all categories.
HTTP Request
GET api/v1/categories
Example: GET Categories All
URL Query
- No parameters required
SCOPES
- You must be logged in to access this endpoint
GET a Specific Category
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "GET a specific category",
"status": 200,
"message": "Success: Category data successfully retrieved",
"data": {
"id": 1,
"product_type": "Hair and head ornaments",
"description": "Jewellery for your hair and head",
"active_YN": true,
"created_at": "2018-08-05T09:34:14.000Z",
"updated_at": "2018-08-05T09:34:14.000Z"
}
}
This endpoint retrieves a specific order.
HTTP Request
GET api/v1/categories/:category_id
Example: GET a specific category Id 1
URL Parameters
| Parameter | Description |
|---|---|
| category_id | The id of the category to retrieve |
SCOPES
- This endpoint requires an authentication token to access.
UPDATE a Category
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"product_type": "Updated Category",
"description":"This is definitely not a category",
"active_YN": 1
}
RESPONSE:
{
"DEBUG": "UPDATE a category",
"status": 200,
"message": "Success: Category data successfully created",
"data": {
"product_type": "Updated Category",
"description": "This is definitely not a category",
"active_YN": true
}
}
This endpoint will update a specific category.
HTTP Request
UPDATE api/v1/categories
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an ADMIN authentication token to access.
FIELDS
These fields are available to be updated:
| Field | Description | Permission |
|---|---|---|
| product_type | category product name | ADMIN |
| description | description of the category | ADMIN |
| active_YN | determine if category is used | ADMIN |
DELETE a cateogry
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
RESPONSE:
{
"DEBUG": "DELETE category",
"status": 200,
"message": "Success: categories 6 data successfully deleted!",
"data": [
{
"fieldCount": 0,
"affectedRows": 1,
"insertId": 0,
"info": "",
"serverStatus": 2,
"warningStatus": 0
},
{
"fieldCount": 0,
"affectedRows": 1,
"insertId": 0,
"info": "",
"serverStatus": 2,
"warningStatus": 0
}
]
}
This endpoint deletes a specific category.
HTTP Request
DELETE api/v1/categories/:category_id
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
Uploads
CREATE S3 Upload URL
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"upload_type":"documents",
"document_type":"national_id",
"images":["nationalid.png", "cat.png", "dob.png"]
}
RESPONSE:
[
{
"imageName": "nationalid.png",
"key": "16/documents/national_id/69dbd320-998e-11e8-8796-272fbb9ba1a5.png",
"url": "https://jwl-public.s3.eu-west-2.amazonaws.com/16/documents/national_id/69dbd320-998e-11e8-8796-272fbb9ba1a5.png?Content-Type=image%2Fpng&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIKFT6IEBSN7KHXRQ%2F20180806%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20180806T153557Z&X-Amz-Expires=900&X-Amz-Signature=1ea36e60a940f1d02ab1b674219066cd1f5f2d2b7c17d7a93bf5fb18cdc4944c&X-Amz-SignedHeaders=host"
},
{
"imageName": "cat.png",
"key": "16/documents/national_id/69dc4850-998e-11e8-8796-272fbb9ba1a5.png",
"url": "https://jwl-public.s3.eu-west-2.amazonaws.com/16/documents/national_id/69dc4850-998e-11e8-8796-272fbb9ba1a5.png?Content-Type=image%2Fpng&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIKFT6IEBSN7KHXRQ%2F20180806%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20180806T153557Z&X-Amz-Expires=900&X-Amz-Signature=515ffece8e866981f24f13b0226fa5b6188451ae7a48dd8522014e51f2f27eaa&X-Amz-SignedHeaders=host"
},
{
"imageName": "dob.png",
"key": "16/documents/national_id/69dc4851-998e-11e8-8796-272fbb9ba1a5.png",
"url": "https://jwl-public.s3.eu-west-2.amazonaws.com/16/documents/national_id/69dc4851-998e-11e8-8796-272fbb9ba1a5.png?Content-Type=image%2Fpng&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIKFT6IEBSN7KHXRQ%2F20180806%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20180806T153557Z&X-Amz-Expires=900&X-Amz-Signature=4b1d6a96ff1e7855d97cfb72a2da16dabba70fbd62cfcfaea1c68cbd4cc5ec92&X-Amz-SignedHeaders=host"
}
]
This endpoint will generate unique URLS to enable the front end client to upload pictures to AWS S3s
HTTP Request
POST api/v1/upload
URL Parameters
- No parameters required
SCOPES
- This endpoint requires a user to be **Logged In* to access.*
Feeds
GET a Feed List
RESPONSE:
{
"DEBUG": "GET Feed",
"status": 200,
"message": "Success: Feed data successfully retrieved",
"data": [
{
"product_id": 32,
"category_id": 4,
"entry_date": "2018-01-20T00:00:00.000Z",
"description": "PRE OWNED 9CT YELLOW GOLD JUG CHARM",
"shipping_YN": false,
"meet_in_person_YN": true,
"User": {
"user_id": 9,
"first_name": "Bat",
"last_name": "Man",
"username": "BatMan",
"profile_URL": "https://source.unsplash.com/collection/888146/300x300"
},
"Images": [
{
"image_URL": "https://picsum.photos/200/300",
"image_description": "Bacon ipsum dolor amet shankle porchetta brisket beef alcatra, tongue venison.",
"image_date": "2017-11-28T00:00:00.000Z"
}
],
"Prices": [
{
"price": 549.6
}
]
}
]
}...
This endpoint retrieves a feed list.
HTTP Request
GET api/v1/feeds?page=1&limit=15
Example: GET Feed
Filter by options:
GET api/v1/feeds?page=1&limit=15&max_price=500&user_id=1
Example: GET Feed Filtered by Max Price and User ID
URL Query
| Parameter | Description | required? |
|---|---|---|
| page | set the page number to retrieve | optional (default to 1) |
| limit | set the size of the page limit | optional (default to 15) |
| user_id | the user id that is to be filtered by | optional |
| category_id | the category id that is to be filtered by | optional |
| description | the description that is to be filtered by | optional |
| max_price | filter by the maximum price amount | optional |
| min_price | filter by the minimum price amount | optional |
SCOPES
- You must be logged in to access this endpoint
Payments (STRIPE)
CREATE a Payment Charge
REQUEST:
// --------
// HEADER
// --------
{
"x-auth-token":"token"
}
// --------
// BODY
// --------
{
"stripeToken":"stripeToken",
"product_id": 2
}
RESPONSE:
// ---------
// SUCCESS
// ---------
{
"DEBUG": "POST create a payment against a product",
"status": 200,
"message": "Success: Payment successfully made",
"data": {
"data": {
"order_id": 41,
"order_date": "2018-08-31T12:11:57.000Z",
"delivery_method": null,
"Product": {
"id": 2,
"category_id": 3,
"user_id": 13,
"entry_date": "2017-11-26T00:00:00.000Z",
"description": "PRE-OWNED 1982 HALF SOVEREIGN COIN PENDANT",
"shipping_YN": true,
"meet_in_person_YN": false,
"created_at": "2018-08-30T18:15:41.000Z",
"updated_at": "2018-08-30T18:15:41.000Z",
"product_id": null,
"Prices": [
{
"price": 590.4
}
]
},
"OrderStatus": {
"description": "OPEN"
}
},
"info": "Success: Order successfully created"
}
}
// --------
// ERROR
// --------
{
"status": 400,
"message": "Server Error!",
"err": "Product already sold",
"redirect": "/"
}
This endpoint will create a charge for a product. If successful it will generate an order.
HTTP Request
POST api/v1/payments/stripe/charge
URL Parameters
- No parameters required
SCOPES
- This endpoint requires an authentication token to access.
Images
GET Images list
Errors
The Kittn API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request -- Your request is invalid. |
| 401 | Unauthorized -- Your API key is wrong. |
| 403 | Forbidden -- The kitten requested is hidden for administrators only. |
| 404 | Not Found -- The specified kitten could not be found. |
| 405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
| 406 | Not Acceptable -- You requested a format that isn't json. |
| 410 | Gone -- The kitten requested has been removed from our servers. |
| 418 | I'm a teapot. |
| 429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |


* Soft corals and tropical fish at the summit of East Diamante volcano, nicknamed by scientists as the “Aquarium.”
Located in the Mariana Archipelago east of the Philippines, the Marianas Trench Marine National Monument protects approximately 95,216 square miles of submerged lands and waters.
This unique place on Earth includes three units:
The waters and submerged lands of the three northernmost Mariana Islands.
The submerged lands extending from the northern limit of the Exclusive Economic Zone of the United States in the Commonwealth of the Northern Mariana Islands (CNMI) to the southern limit of the Exclusive Economic Zone of the United States in the Territory of Guam.
The submerged lands within 1 nautical mile of 21 designated volcanic sites.
No waters are included in the Volcanic and Trench Units, and CNMI maintains all authority for managing the three islands within the Islands Unit (Farallon de Pajaros or Uracas, Maug, and Asuncion) above the mean low water line. Presidential Proclamation 8335 established the monument in January 2009 and assigned management responsibility to the Secretary of the Interior, in consultation with the Secretary of Commerce. The Interior Secretary placed the Mariana Trench and Volcanic Units within the National Wildlife Refuge System, and delegated his management responsibility to the Fish and Wildlife Service.
The Secretary of Commerce, through the National Oceanic and Atmospheric Administration (NOAA), has primary management responsibility for fishery related activities in the waters of the Islands Unit.
The Secretaries have established a Mariana Trench Monument Advisory Council to provide advice and recommendations on the development of management plans and management of the monument. The Council currently includes three officials of the CNMI government and one representative each from the Department of Defense and the U.S. Coast Guard.
This interactive project was created for educational purposes at Diablo Valley College and is in no way intended for commercial gain or as a source of public information.


Vive la Difference!
问题描述 :
Take any four positive integers: a, b, c, d. Form four more, like this:
|a-b| |b-c| |c-d| |d-a|
That is, take the absolute value of the differences of a with b, b with c, c with d, and d with a. (Note that a zero could crop up, but they’ll all still be non-negative.) Then, do it again with these four new numbers. And then again. And again. Eventually, all four integers will be the same. For example, start with 1,3,5,9:
1 3 5 9
2 2 4 8 (1)
0 2 4 6 (2)
2 2 2 6 (3)
0 0 4 4 (4)
0 4 0 4 (5)
4 4 4 4 (6)
In this case, the sequence converged in 6 steps. It turns out that in all cases, the sequence converges very quickly. In fact, it can be shown that if all four integers are less than 2^n, then it will take no more than 3*n steps to converge!
Given a, b, c and d, figure out just how quickly the sequence converges.
That is, take the absolute value of the differences of a with b, b with c, c with d, and d with a. (Note that a zero could crop up, but they’ll all still be non-negative.) Then, do it again with these four new numbers. And then again. And again. Eventually, all four integers will be the same. For example, start with 1,3,5,9:
1 3 5 9
2 2 4 8 (1)
0 2 4 6 (2)
2 2 2 6 (3)
0 0 4 4 (4)
0 4 0 4 (5)
4 4 4 4 (6)
In this case, the sequence converged in 6 steps. It turns out that in all cases, the sequence converges very quickly. In fact, it can be shown that if all four integers are less than 2^n, then it will take no more than 3*n steps to converge!
Given a, b, c and d, figure out just how quickly the sequence converges.
输入:
There will be several test cases in the input. Each test case consists of four positive integers on a single line (1 ≤ a,b,c,d ≤ 2,000,000,000), with single spaces for separation. The input will end with a line with four 0s.
输出:
There will be several test cases in the input. Each test case consists of four positive integers on a single line (1 ≤ a,b,c,d ≤ 2,000,000,000), with single spaces for separation. The input will end with a line with four 0s.
样例输入:
1 3 5 9 4 3 2 1 1 1 1 1 0 0 0 0
样例输出:
6 4 0
/** * ID: ping128 * LANG: C++ */ #include <stdio.h> #include <iostream> #include <sstream> #include <stdlib.h> #include <string> #include <vector> #include <set> #include <queue> #include <stack> #include <list> #include <math.h> #include <algorithm> #include <map> #include <string.h> using namespace std; typedef long long LL; typedef pair<int,int>PII; typedef pair<PII,int>PII2; LL absL(LL x) { if(x < 0) return -x; return x; } int main(){ LL in[4]; LL a[4]; while(1) { cin >> in[0] >> in[1] >> in[2] >> in[3]; if(!in[0] && !in[1] && !in[2] && !in[3]) break; int num = 0; while(in[0] != in[1] || in[1] != in[2] || in[2] != in[3]) { num++; for(int i = 0; i < 4; i++ ) { a[i] = absL(in[i] - in[(i + 1)%4]); } for(int i = 0; i < 4; i++ ) in[i] = a[i]; } cout << num << endl; } return 0; }
(adsbygoogle = window.adsbygoogle || []).push({});
理论片基本都不能看
理论片基本都不能看
“嗯”换成“喵”
“嗯”换成“喵”
“嗯”换成“喵”
“嗯”换成“喵”
“嗯”换成“喵”
“嗯”换成“喵”
“嗯”换成“喵”
“嗯”换成“喵”
“嗯”换成“喵”
“嗯”换成“喵”


{% extends "app_base.html" %} {% block head_title %}Delete Course Task{% endblock %} {% block main %}
Description:
Are you sure you want to delete this task? Any associated student coursework will also be deleted.


|
Creating Simple Form Elements.
Back to Contents
First, make sure you have:
(as of June 2020)
You will learn:
- How to make simple text entry boxes, check boxes, and radio buttons
- How to create inputs which control the viewer's windowing
- How to integrate your forms dynamically with the viewer.
For these code heavy tutorials, it is recommended to full screen the video and watch at 720p
Resources
The changed files for this step can be found here.
Notes:
- I only casually carry over windows from the demo. If you want to set your own windows
see how on the shader page.
- If you are making new files in MS Windows, it is probably best to set their line endings to Unix (to prevent potential compatibility issues
later when you move your experiment to a remote server).
- I am using click events to dynamically create text boxes. It is the dynamic nature of the form which creates
all of the complexity in this tutorial (as well as complexity in the validation and data transmission tutorials).
If you only want to see where a user clicks, this is very simple with either the viewer specific function:
viewerGetClicksFor ,
or the function in common.js addClickData which allows you to grab click data the same way you get scroll times.
- The changed files above are slightly different from the tutorial
- The None Found check box for the windowing trial page (Trial2) has been fixed so
that it has the proper label
- The
User1 shader was removed from customInit.js
Proceed to learn how to validate these inputs
| |


If enabled, when an event is received from TFS/Team Services for a Git repository, all the Jenkins jobs that use that Git repository will be automatically triggered, even if they didn't enable the "Build when a change is pushed to TFS/Team Services" trigger.
Individual jobs can opt-out of this global opt-in by enabling the Poll SCM trigger and checking its Ignore post-commit hooks checkbox.


Gilt releases Mockingbird Data Environment open-source project for iOS
For more than 5 years, Gilt’s Mobile team has been developing and using a platform that lets its iOS applications adapt to server-side changes long after they’ve been released.
This platform has been the backbone of an application that has served millions of users, handled hundreds of millions in sales, and has been consistently highly-rated in the App Store and repeatedly featured in Apple keynotes.
Today, we’re excited to reveal the official open-source release of this platform: announcing the Mockingbird Data Environment 1.0!
From the project’s description on GitHub:
It is a common scenario for iOS app publishers to have a population of users running old application versions. Often, users are stuck on old versions because the current version requires a release of iOS more recent than their hardware will support. Such users won’t be running your latest app version until they buy a new device, assuming they ever do.
For some types of apps, this isn’t a big problem. But for apps that must communicate with network-based services, having a wide variety of old versions out in the wild makes it difficult to evolve and maintain your services.
Eventually, you will be faced with accepting one of these tradeoffs:
- Do you drop support for old versions, knowing that there’s a risk of severing valuable relationships with some of your users?
- Do you take on the expense and difficulty of maintaining and operating a growing number of legacy backend services over time?
- Or do you resign yourself to never evolving your backend systems—or doing it much more slowly than you’d like?
The purpose of the Mockingbird Data Environment is to free you from having to make these compromises.
To experiment with the Mockingbird Data Environment in your own iOS project, use CocoaPods and add the following line to your Podfile
:
pod 'MBDataEnvironment'
Then, run pod install
from within the directory containing your project’s Podfile
.
The Mockingbird Data Environment is available for use under the MIT license.


Salmon Cookies Sales
Home
Sales (secret page)
Store
Sales form
Store Name
Minimum Per Hour
Maximum Per Hour
Average Per Customer
Submit


Christmas Fondue
Sweet Potato Skins
Pork Roll Benedict
Korean Cuban Sandwich
Head Cheese
Buffalo Wings
PB & Bacon Burger
Sourdough Cinnamon Rolls
Bacon Blue Burger
Sourdough Hamburger Buns
Budweiser Sourdough Starter
You should really just make a starter right now. It's flour and Budweiser (or water if you're short on the beer). It takes 60 seconds. Make it, you won't regret it.
Maple Cheddar Biscuits
Gluten-Free Cheesesteak
Sourdough Garlic Knots
Coconut Shrimp
Garlic Shoot Pizza
Sourdough Margherita Pie
Fried Game Hen
Brunch Tortellini
Steak Tip Salad
Catfish Tacos
Sourdough Waffles
Baguette
Coconut Creme Brulee
Pork and Polenta
Beef Sous Vide
Piñapeño Chicken
Pollo Asado
French Fries
Salmon Sliders
Gnocchi
Raw Surf and Turf
Foolproof Popcorn
Basil Risotto
Budweiser Wings
Shrimp Pad Thai
New Jersey Pizza


--- title: "Apicurio Projects - API design and registration" permalink: / layout: page ---
All things API, because APIs are the cure
Design beautiful, functional APIs with zero coding, using OpenAPI
High performance, runtime registry for schemas and API designs
Data modeling library for OpenAPI and AsyncAPI specifications
Mini/embedded version of Apicurio Studio - all editing, all the time


| Application version | 1.0 |
| Trad4 version | 3.2 |
| Document version | 1.0 |
| Author | schevans |
| Date | 26-06-2010 |
This application is a concurrent additive synthesiser. The principal of additive synthesis is that any periodic waveform can be synthesised by adding together sine waves. There's a good introduction to additive synthesis here.
This is a simplified model using no phase shifting and therefore only sinusoidal components. ADSR envelopes are not implemented.
In this beta six presets are available: sine, pulse, sawtooth, square, triangle and Hammond.
This model has an inverse - fourier_transform. Once you've read through this you should take a look at that.
The model itself is made up of three or more tiers. On the first tier are the harmonics - the pure sine wave feedstock of our synthesiser. Next come one or more tiers of mixers, where the harmonics are added concurrently. On the last tier there is only an amplifier, which serves to normalise the output as appropriate.
The concurrency comes from the fact that each mixer subscribes to a sub-set of harmonics - in all the configurations presented here there are four harmonics per mixer - and the mixers in turn run concurrently. This model uses the Inheritance of Interface (IoI) feature of trad4 where a mixer can subscribe to a set number of harmonics or a set number of mixers, as both types isa sample.
The number of samples per mixer is an optimisation parameter - the fewer samples per mixer you have the more concurrency you get but you also get more tiers. Optimisation of this application is beyond the scope of this document (though highly suitable for analysis as the app involves simple operations on large slabs of RAM which have to get dragged across buses). The concrete diagram below shows 2 samples per mixer for brevity. The application as configured in the distribution uses 4.
A new feature in trad4v3.1.2 is that the abstract and concrete graphs can now be generated for you, the first examples of which are below.
This application uses inheritance of interface (IoI), so it's abstract graph looks a little strange. Each type is considered separately and the tier axis on the left is relative. So that, from right to left, an amplifier of tier m subscribes to a sample of tier n, where m>n. A harmonic can exist on any tier and subscribes to nothing. A mixer subscribes to an array of in this case 4 samples. A sample as our base type does nothing at all.
A generated inheritance diagram has been added which should clarify the situation.
Amplifier, harmonic and mixer all inherit their interface (i.e. pub section) from sample. This means, looking at the abstract diagram, an amplifier could subscribe to a harmonic, or a mixer, or indeed another amplifier, as all three present the same pub interface. Likewise a mixer could subscribe to an array of harmonics, mixers or amplifiers for the same reason.
The concrete graph should look more familiar. This shows a graph where NUM_HARMONICS=8 and NUM_HARMONICS_PER_MIXER=2.
From this you can see that in practise, mixers subscribe to harmonics or other mixers. Only one amplifier is used and is only subscribes to a mixer.
The naming convention for the files below is as follows: name+frequency+num_harmonics. So "square_f1_h1024.wav" is a square wave with frequency 1Hz, synthesised using 1024 harmonics. Likewise "hammond_f261_h16.wav" is the Hammond preset with frequency 262Hz (middle C), synthesised using 16 harmonics. Be aware that only the Hammond wave is at an audible frequency.
The sine wave is the simplest waveform, comprising simply of a single sine wave of the base frequency. As such, there is no difference between the 16- and 1024-harmonic versions, so only the 16-harmonic is shown here.
sine_f1_h16.wav
This is given by:
if ( id == 1 ) level = 1.0; else level = 0.0;
The pulse waveform comprises of an equal amount of each harmonic.
This is given by:
level = 1.0;
The sawtooth waveform has a geometric drop-off of the amplitude of the component harmonics.
Using 16 harmonics:
Using 64 harmonics:
This is given by:
level = 1.0 / id;
The square waveform has a geometric drop-off of the amplitude of the odd component harmonics.
Using 16 harmonics:
Using 1024 harmonics:
This is given by:
if ( id % 2 != 0 ) // Is odd id level = 1.0 / id; else // Is even id level = 0.0;
The square waveform has an exponential drop-off of the amplitude, where every second active harmonic amplitude is negative.
Using 16 harmonics:
Using 1024 harmonics:
This is given by:
if ( id % 2 != 0 ) // Is odd id level = pow( -1.0, ( id - 1 ) / 2 ) * ( 1.0 / (id*id) ); else // Is even id level = 0.0;
This is a basic model of a Hammond tonewheel organ.
The classic Hammond organ has nine drawbars, each controlling the amplitude of a subset of harmonics. The drawbar amplitudes are labelled from 0 to 8, so it's characteristic to discuss the various arrangements or 'presets' as '800000000' for just a sine wave of the fundamental frequency or '88888888' - all the drawbars fully open.
More detailed information may be found here
As these files are at an audible frequency they are best downloaded and viewed using a sound editor such as Audacity.
To run the application:
1) Download and unpack the distribution
2) cd into trad4_v3_2/additive_synth:
3) Source additive_synth.conf:$ cd trad4_v3_2/additive_synth
4) Start additive_synth:additive_synth$ . ./additive_synth.conf
additive_synth$ additive_synth
To increase or decrease the number of threads used (the default is 4), set NUM_THREADS and re-start the application:
$ export NUM_THREADS=64 $ additive_synth
To load a different waveform to be generated or to change the base frequency, use the load_waveform command, with the two arguments being the waveform.csv file and the fundamental frequency of the sample you want generated. E.g (261.626Hz is middle C):
additive_synth$ load_waveform.pl input/sine.csv 261.626
This can be done while additive_synth is running.
NOTE: If you try and model very high frequencies using the 44100Hz sample rate and many harmonics you may run up against the Nyquist frequency cutoff. The Nyquist frequency is the highest frequency a particular sample rate can support. If this happens, you will see a warning that these higher frequencies are being ignored.
To add a new waveform, set up a new input.csv file and place it in additive_synth/input. It should have the format "id,amplitude" e.g. (for sine):
1,1.0 2,0.0 3.0.0 ...
See the existing files in this directory for examples.
The default configuration of the distribution is with NUM_HARMONICS_PER_MIXER=4 and NUM_HARMONICS=16. If you want to increase the number of harmonics, you do so as follows:
First, edit src/constants.t4s as appropriate and save. The two values must be set do that NUM_HARMONICS is equal to NUM_HARMONICS_PER_MIXER raised to an integer power, where that integer power specifies the number of tiers of mixers you'll have, so that:
If NUM_HARMONICS_PER_MIXER=4 pow=2 gives NUM_HARMONICS=16 so that T3: 1 mixer T2: 4 mixers T1: 16 harmonics pow=3 gives NUM_HARMONICS=64 so that T4: 1 mixer T3: 4 mixers T2: 16 mixers T1: 64 harmonics If NUM_HARMONICS_PER_MIXER=8 pow=2 gives NUM_HARMONICS=64 so that T3: 1 mixer T2: 8 mixers T1: 64 harmonics pow=3 gives NUM_HARMONICS=512 so that T4: 1 mixer T3: 8 mixers T2: 64 mixers T1: 512 harmonics
There's a performance trade-off with NUM_HARMONICS_PER_MIXER where the fewer mixers you have to sum you'll get more concurrency, but more objects to run. The optimal setting will depend on your hardware and the size of the samples you are using. This discussion is beyond the scope of this document but would make in interesting study.
Next, run the precompiler and compile as normal. There's some flakiness in the makefiles when adjusting just the constants so you should do a clean build (-a for t4p):
additive_synth$ t4p -a additive_synth$ make clean additive_synth$ make
The generated data is keyed off the constants, so it will need regenerating and and the database will need recreating and reloading. The default location of the generated data is data/worked_example. This is done as follows:
additive_synth/data$ generate_data.pl additive_synth/data$ recreate_db.sh additive_synth/data$ reload_db.sh worked_example
additive_synth$ additive_synth


n-ary Nodes have an item value, which can be any data type, although preferably an object, and an array of reference pointers to the node's children
This is an implementation of an iterable n-ary tree data structure and associated methods. An n-ary tree is a tree data structure where any node may have an arbitrary number of child nodes. This can potentially used as a trie, but it is not designed for that purpose.
n-ary Nodes have an item value, which can be any data type, although preferably an object, and an array of reference pointers to the node's children
Kind: global class
| Param | Type | Description |
|---|---|---|
| childObj | Object |
any object type - The object to be inserted at the new n-ary node |
Array.<Object>
Retrieve the children of this node
Kind: instance property of NaryNode
Returns: Array.<Object>
- children - an array of child nodes
Object
Retrieve the object stored in this node
Kind: instance property of NaryNode
Returns: Object
- value object - the object stored in this node
Replace the children array associated with this node
Kind: instance property of NaryNode
| Param | Type | Description |
|---|---|---|
| newArray | Array.<array> |
a new array of child object references |
Replace the object stored in this node
Kind: instance property of NaryNode
| Param | Type | Description |
|---|---|---|
| newValue | Object |
any object type - the new object to store in this node |
This is an implementation of an iterable n-ary tree data structure and associated methods. An n-ary tree is a tree data structure where any node may have an arbitrary number of child nodes. This can potentially used as a trie, but it is not designed for that purpose.
Kind: global class
Object
boolean
boolean
boolean
boolean
boolean
boolean
boolean
Object
Object
Object
Object
number
boolean
boolean
boolean
boolean
boolean
number
string
string
Instantiates an empty n-ary tree as a JavaScript object
Object
Return the root node of this n-ary tree
Kind: instance property of NaryTree
Returns: Object
- NaryNode node object - returns a reference to the root node
boolean
Adds the parameter child object as root or the root node's next child
Kind: instance method of NaryTree
Returns: boolean
- boolean value - success of operation
| Param | Type | Description |
|---|---|---|
| childObj | Object |
object value - an object to store in the node |
boolean
Adds child as the the first child of the parent node in the n-ary tree
Kind: instance method of NaryTree
Returns: boolean
- boolean value - success of operation
| Param | Type | Description |
|---|---|---|
| childObj | Object |
object value - an object to store in the node |
| parent | Object |
NaryNode node object - the parent n-ary node |
boolean
Adds child as the the last child of the parent node in the n-ary tree Returns a boolean value
Kind: instance method of NaryTree
Returns: boolean
- boolean value
| Param | Type | Description |
|---|---|---|
| childObj | Object |
object value - an object to store in the node |
| parent | Object |
NaryNode node object - the parent n-ary node |
boolean
Adds child as the the position child of the parent node in the n-ary tree using level-order traversal Returns a boolean value
Kind: instance method of NaryTree
Returns: boolean
- boolean value
| Param | Type | Description |
|---|---|---|
| childObj | Object |
object value - an object to store in the node |
| parent | Object |
NaryNode node object - the parent n-ary node |
| position | number |
integer - the position number where the child should be included in the children array for this node |
boolean
Make this n-ary tree empty
Kind: instance method of NaryTree
Returns: boolean
- boolean value
boolean
Indicates whether an existing object, passed as an argument, exists in this n-ary tree If parentNode is specified contains only looks within the subtree rooted in the parentNode If obj is itself an n-ary Node a search-by-node is performed instead of a search for a matching object Returns a boolean value
Kind: instance method of NaryTree
Returns: boolean
- boolean value
| Param | Type | Description |
|---|---|---|
| obj | Object |
an object stored in any node |
| parentNode | Object |
NaryNode object - the parent n-ary node |
boolean
In no object parameter is specified, return the root node object In an object is specified, get returns the first occurrence of the specified object using a level-order tree traversal iterator.
Kind: instance method of NaryTree
Returns: boolean
- boolean value
| Param | Type | Description |
|---|---|---|
| obj | Object |
object - an object stored in a node somewhere in this tree |
Object
getNode returns the n-ary tree node reference for the first occurrence of the specified object passed as an argument to the method.
Kind: instance method of NaryTree
Returns: Object
- NaryNode node object - a reference to first node found containing a reference to the specified object
| Param | Type | Description |
|---|---|---|
| obj | Object |
an object store in a node |
Object
In no object parameter is specified, return the root node object In an object is specified, get returns the first occurrence of the specified object using a level-order tree traversal iterator.
Kind: instance method of NaryTree
Returns: Object
- node value object - returns the first object found containing the specified property and property value
| Param | Type | Description |
|---|---|---|
| obj | Object |
{key:value} object - a property key and value object |
Object
getNode returns the n-ary tree node reference for the first occurrence of the specified object passed as an argument to the method.
Kind: instance method of NaryTree
Returns: Object
- NaryNode node object - returns the first node found containing an object with the specified property and property value
| Param | Type | Description |
|---|---|---|
| obj | Object |
{key:value} object - a property key and value object |
Object
returns the object in the root node of the tree
Kind: instance method of NaryTree
Returns: Object
- root node value object - a reference to the object stored in the root node of the tree
number
if naryNode is not specified, height returns the height of the naryTree from the root to the leaf nodes if naryNode is specified, height return the height of the naryTree from the naryNode to the leaf nodes
Kind: instance method of NaryTree
Returns: number
- height integer - the height of the tree in levels from the reference node to the deepest leaf node
| Param | Type | Description |
|---|---|---|
| NaryNode | Object |
node object - an n-ary node present in this tree |
boolean
Returns a boolean value reflecting whether the n-ary tree is empty or not
Kind: instance method of NaryTree
Returns: boolean
- boolean value - is the tree empty?
returns a level-order iterator for this n-ary tree
Kind: instance method of NaryTree
| Param | Type | Description |
|---|---|---|
| node | Object |
NaryNode object - the parent n-ary node of the tree or contained subtree |
returns a level-order iterator for this n-ary tree
Kind: instance method of NaryTree
| Param | Type | Description |
|---|---|---|
| node | Object |
NaryNode object - the parent n-ary node of the tree or contained subtree |
returns a pre-order iterator for this n-ary tree
Kind: instance method of NaryTree
| Param | Type | Default | Description |
|---|---|---|---|
| node | Object |
NaryNoe object - the parent n-ary node | |
| [node] | number |
this._modCount |
number - the modCount value is used to track whether the tree has been modified during the iteration, which is an error condition |
boolean
If obj is not specified, remove removes the first item in the n-ary tree If obj is specified, remove removes the first occurrence of the specified object If object and parent are specified, remove removes the first occurrence of the specified object which is a descendant of the parent obj
Kind: instance method of NaryTree
Returns: boolean
- boolean value
| Param | Type | Description |
|---|---|---|
| obj | Object |
an object stored in any node |
| parent | Object |
NaryNode parent object - the parent n-ary node |
boolean
Removed the n-ary Node passed as a parameter. If no value is passed, the root node is used.
Kind: instance method of NaryTree
Returns: boolean
- boolean value
| Param | Type | Description |
|---|---|---|
| naryNode | Object |
node object - the n-ary node to remove |
boolean
Removes the complete subtree having the specified object in the subtree's root node If parent node is specified the object must be underneath the parent node
Kind: instance method of NaryTree
Returns: boolean
- boolean value
| Param | Type | Description |
|---|---|---|
| obj | Object |
object - an object stored in any node |
| parentNode | Object |
NaryNode parent node - the parent n-ary node |
boolean
Removes the complete subtree where the naryTree node parameter is the root node of the sub-tree
Kind: instance method of NaryTree
Returns: boolean
- boolean value
| Param | Type | Description |
|---|---|---|
| naryNode | Object |
node object - an n-ary node positioned at the root of the subtree to remove |
number
If naryNode is not specified, returns in the current size of the n-ary tree as a node count If naryNode is specified, returns in the current size of the n-ary tree rooted from the specified node as a node count
Kind: instance method of NaryTree
Returns: number
- integer value - a count of the nodes comprising the tree rooted at the specified node parameter
| Param | Type | Description |
|---|---|---|
| naryNode | Object |
parent node - the parent n-ary node |
string
If naryNode is not specified, returns a string representation of the entire n-ary tree If naryNode is specified, returns a string representation of the n-ary tree from the specified naryNode
Kind: instance method of NaryTree
Returns: string
- a string representation of the nodes in this n-ary tree instance
| Param | Type | Default | Description |
|---|---|---|---|
| [naryNode] | Object |
this._root |
NaryNode object - an optional parameter specifying the root node of the tree or subtree to be printed as a string representation |
| [relLevel] | number |
1 |
number - a number used internally to track the correct level indention through recursive calls |
string
If naryNode is not specified, returns a JSON representation of the entire n-ary tree If naryNode is specified, returns a JSON representation of the n-ary tree from the specified naryNode
Kind: instance method of NaryTree
Returns: string
- a JSON encoded string representation of the nodes in this n-ary tree instance
| Param | Type | Default | Description |
|---|---|---|---|
| [naryNode] | Object |
this._root |
NaryNode object - an optional parameter specifying the root node of the tree or subtree to be converted to a JSON encoded representation |
| [relLevel] | number |
1 |
number - a number used internally to track the correct level indention through recursive calls |


This is an early prototype of a travellers' community for sharing, hosting and getting people together. Built with hitchhikers in mind.
Travel anywhere and easily find great people who want to meet you as well. See where other travellers are and help each other out, whether through welcoming them to your home, sharing your stories or becoming friends.
By connecting to other social networks (e.g. Facebook), you can see where all your friends are on the map, what you have in common and show others who you are even without filling your profile or having many references.
This is still a feature in planning.
 We are long time hospitality exchange enthusiasts with backgrounds in some other notable projects.
Every site user will belong to one or more communities. For example, you could join the "hitchhiker", "geek", “musician”, and “vegan” communities. You might decide to be visible to the members of all of them – or only one or two where you feel you best belong.
Trustroots is being built at first with hitchhikers in mind. We will expand later for other target groups. When travelling by hitchhiking, searching for a host in the hitching community makes sense. Another hitchhiker will better understand a traveller not knowing the exact date of arrival or showing up in the middle of the night.
This is still a feature in planning.
We appreciate a hard working, getting things done attitude. And we love great ideas. We'll aim to keep the entry level for volunteers as low as possible. No bureaucracy. Pragmatic approach. Trust.
Right now structures for volunteering are still getting underway, but you can simply drop us a line and tell us about your ideas! If you're a developer, check GitHub.
You can trust us. We think it's a shame that former non profits have been sold to venture capital. We've been running other free and open projects for a decade now and we hope our deeds so far speak for us. This is not a startup.
We will form a legal organization behind Trustroots and your help with this is very welcome.
We're huge fans of distributed networks, self hosted apps, API first approach etc. While it might not be the time to concentrate on this stuff just yet, it certainly gets us excited thinking about all the possibilities.


[OPINION] Circumnavigating the circumnavigators
Magellan and Elcano's voyage were part and parcel of an ongoing Spanish imperial project to dominate the world
by Vicente L. RafaelSubscribe
Email Address
Newsletters
- Glenda Gloria's Take this Tuesday
- Huddle by Miriam Grace Go
- The Newsbreak Agenda by Chay Hofileña
- Sometimes, all you need is video by Lilibeth Frondoso


IoMT Thing Activation
Fill out the form below with your email, as well as the serial number, client ID, and activation code included
with the device you are activating.
When you are finished filling out the form, click submit. You will recieve an email with a link to finish activating
your device.


H_ART the BAND is a Kenyan band comprising Mordecai Mwini, Wachira Gatama and Kenneth Muya.
MORDECAI MWINI KIMWEU
WACHIRA GATAMA
WACHIRA GATAMA
H_art the band is My Favorite since they have a somewhat gospel record off the album dubbed ‘El Shaddai’ that features the super talented record producer Cedo that you can’t seem to get enough of once you listen to it for the very first time. I for one, have had that song on rotation since Friday to this day, I guess that’s what happens when talented artistes and record producers decide to work together.


Cardboard Fantasy
The best Cover Band in Central Magnet history.
The best Cover Band in Central Magnet history.
music is best thing
This band is the best band in the history of all bands. You can't change my mind.
Cool Dood 5/7 Too Much Water
Do ur gosh darn homework, Jeormoy KNix
YEAH! LOOK AT US. WE"RE A BAND. YEAH WE BAND TOGETHER. HUEHUEHUE. ALSO WE LUV MUSICO


Woman relieved of gold chain in Hudkeshwar
by Nagpur Today, Nagpur NewsNagpur: A 39-year-old woman was robbed of her gold chain worth Rs 12,000 near Rajapeth Bus-stop on Wednesday afternoon. The incident took place under Hudkeshwar police station.
According to police sources, Vidya Sadanand Kopre (39), a resident of Flat No. 25, Govindprabhu Nagar was sweeping outside her house on Wednesday.
At around 2.30 pm some unidentified youth on Activa moped approached her and snatched away her gold mangalstura. Though Vidya raised an alarm, however the accused had managed to zoom away from the spot.


--- layout: post title: What editor do you use? date: '2011-04-20T18:20:00.003+02:00' author: Luca Ferrari tags: - opensource modified_time: '2011-04-20T18:20:40.758+02:00' thumbnail: http://4.bp.blogspot.com/-XGXtzXNi5go/Ta8HwbB0H2I/AAAAAAAAAgQ/ILJRRnpjlh4/s72-c/emacs.png blogger_id: tag:blogger.com,1999:blog-1836481905487384887.post-2390667514833563330 blogger_orig_url: http://fluca1978.blogspot.com/2011/04/what-editor-do-you-use.html permalink: /:year/:month/:day/:title.html ---


Star Wars: Episode I - The Phantom Menace (1999)
a review by Christian Pyle
I had the good fortune to be eight years old in 1977 when "Star Wars" appeared at the recently-constructed two-screen theater in Danville, Kentucky. I vividly recall how the destruction of the Death Star seemed the most spectacular thing I had ever seen. I saw the movie several times and accumulated an impressive collection of action figures which has long since disappeared with my lost youth. I remember reading in "Dynamite!" that George Lucas planned for "Star Wars" to be the fourth part of a nine-movie series: three trilogies, the next to be set fifty years before "Star Wars," the third fifty years after.
Twenty-two years later, Lucas has lowered his expectations to six movies and has finally released "episode one" of the saga. By its very nature, "The Phantom Menace" will probably disappoint a lot of moviegoers: it's the first chapter of a serial, so it only hints at the conflicts to come. We shouldn't be surprised; after all, we've already seen the second half of the serial and know how it all comes out.
After seeing "The Phantom Menace", I shoved the fourth, fifth, and sixth episodes into the VCR and reflected on what a tall task Lucas had set for himself in making "episode one." There's no Empire and no Rebellion; all of that will come later, out of the events set in motion in this chapter. Instead, "Phantom" concerns a smaller conflict as the Trade Federation, spurred on by "the phantom menace" of a Dark Lord of the Sith, creates a blockade around the peace-loving planet of Naboo. The Republic, also a peace-loving bunch, dispatches two Jedi knights to settle the conflict.
Enter Qui-Gon Jinn (Liam Neeson) and his apprentice Obi-Wan Kenobi (Ewan McGregor). Within a few minutes, the two Jedis are being chased by the bad guys, befriending the Naboo queen Amidala (Natalie Portman), and taking on a comedy sidekick, Jar Jar Binks (a computer-generated character voiced by Ahmed Best). Escaping from Naboo, they take refuge on the desert planet of Tatooine. While hunting for parts for their ship, Qui-Gon discovers a slave boy, Anakin Skywalker (Jake Lloyd), who seems to have a powerful connection to the Force. Anakin, we learn, was a virgin birth (prediction: the Christian Coalition will not be happy about this), and Qui-Gon becomes convinced that Anakin is the prophesied Chosen One who will bring balance to the Force. (This is a puzzling turn-of-events-Darth Vader is the Jedi Messiah? But I suppose by being both the champion of the Dark Side and the father of Luke and Leia, who eventually defeat the Dark Side, he did bring balance. Or maybe Qui-Gon was just wrong.)
Meanwhile sinister forces are brewing. The Dark Lord Darth Sidious sends his apprentice, Darth Maul (body of Ray Park, voice of Peter Serafinowicz -- it's strange they paid somebody to do the voice; Maul's dialogue is limited to "Yes, master") after Qui-Gon. Naboo's Senator Palpatine (Ian McDiarmid), who will become the evil Emperor Luke faces in "Return of the Jedi," uses the conflict to begin his rise to power. (The movie hints heavily that Palpatine is Sidious without actually revealing it even though it hardly seems surprising since we know that Palpatine is Darth Vader's master).
Along the way, we find some old friends: R2-D2 and C-3PO (played as always by Kenny Baker and Anthony Daniels), Jabba the Hut, and Yoda (voiced as always by Frank Oz). As required there are several big battle sequences and a climactic light-saber duel. John Williams provides a score with many familiar themes.
There are a lot of reasons to dislike "Phantom Menace." First and foremost, there's Jar Jar Binks, who seems to be universally hated by fans and critics alike. He is a slapstick oaf who speaks in a pidgin English usually reserved for native sidekicks in old adventure movies (you'll also discover that the Trade Federation leaders sound exactly like Japanese officers in WWII movies and that Tatooine junk dealer Waddo sound like an Arab with a head cold). Jar Jar even brings with him manure and fart jokes, which seem out of place in the "Star Wars" saga.
Also, many of the most interesting characters, especially Darth Maul and Obi-Wan, are underdeveloped. Lucas seems more concerned with creating impressive computer-generated aliens and landscapes than in dealing with the human characters. He should remember where this all started. The special effects of the original "Star Wars" are, by contemporary standards, cheap and cheesy, but that movie has pleased audiences for twenty years. Special effects are a means, not an end. There's a huge battle sequence between Jar Jar's people and a legion of battle-droids that generates little interest -- no character we know except Jar Jar is involved, so we don't care who wins.
And the movie's most impressive "special effect" doesn't come from Industrial Light and Magic. It's McGregor's Alec Guinness imitation, which is entirely convincing. When he was cast in the role, my first reaction was "Obi-Wan the young heroin addict?"  He did a great job; I only wish his part was bigger.
Despite the film's weak points, I still enjoyed "Phantom Menace." The primary reason is that Anakin appeals to the nine-year-old in all of us. He gets to pilot a starfighter in battle with R2-D2; that's all I wanted when I was nine.
To enjoy "Phantom," you have to view it as "Episode One" -- it's the first chapter in a six-chapter serial. The goal of the first episode is to set the central conflicts in motion and to get you to come back for the second episode. I can't wait.
Grade: B-
© 1999 Christian L. Pyle
Read my reviews and others at the Mad Review: http://www.wpd.net/madreview/
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


|
older
bibliography
glossary
|
This is not a general Lisp glossary. It only has terms used in the
text of this site. The ANSI Standard for Common Lisp has an extensive glossary.
- Common Lisp Object System (CLOS)
- The object-oriented features of Common Lisp. These are
introduced on this site and defined in the Common Lisp and Meta
Object Protocol references.

- First Class
- A language supports some data type as first-class when
the objects of the type can be created and used as data at run time.
First-class data can be kept in variables, and passed to and returned from
functions. In dynamically typed languages,
first-class data can also have its type examined at run-time.
- Heterogeneous
- A set of objects which are of different types. For example, any
element of a heterogenous array might contain integers or floating point
numbers, or another array, or any kind of data.
- Homogeneous
- A set of objects
that are required to all be of the same type. For example a
homegenous array of integers can contain only integers.
- Iteration
- The mechanism for repeatedly
performing a series of actions. Common Lisp provides a number of
constructions for performing iteration, as well as support for recursion.
- Meta Object Protocol (MOP)
- In general, an object oriented program, accessible to
programers, which defines the internals of a supported system in such
a way as to allow programmers to tailor the system to better meet
their particular needs. Such needs might include efficiency or
expressive power.
In particular, a MOP has been defined for the Common Lisp Object System, which is implemented
using this particular MOP. Often, when people refer to
"the MOP" as opposed to "a MOP",
they are refering to the CLOS MOP. However, AMOP is short for
The Art of the Metaobject
Protocol, which defines "the MOP".
See the MOP references.
- Pretty Printing
- An object-oriented, programmer-definable, formatted printing system.
- Symbolic Processing
- The processing of information, as opposed to the mere
crunching of numbers. Information may indeed be numeric, but may also
include arbitrary, heterogeneous objects.
Usually, it is convenient in such processing to assign names to
things which can themselves be accessed as first class data, and to be able to determine
the type and internal representation of objects at run time.
- Signature
- A specification for the number and types of arguments to a
function, and the number and types of return values. A function with
optional or named (keyword) arguments can still have a signature.
|


|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.bcel.verifier.VerificationResult
A VerificationResult is what a PassVerifier returns after verifying.
| Field Summary | |
static int |
VERIFIED_NOTYET
Constant to indicate verification has not been tried yet. |
static int |
VERIFIED_OK
Constant to indicate verification was passed. |
static int |
VERIFIED_REJECTED
Constant to indicate verfication failed. |
static VerificationResult |
VR_NOTYET
Canonical VerificationResult for not-yet-tried verifications. |
static VerificationResult |
VR_OK
Canonical VerificationResult for passed verifications. |
| Constructor Summary | |
VerificationResult(int status,
java.lang.String message)
The usual constructor. |
| Method Summary | |
boolean |
equals(java.lang.Object o)
Returns if two VerificationResult instances are equal. |
java.lang.String |
getMessage()
Returns a detailed message. |
int |
getStatus()
Returns one one the VERIFIED_OK, VERIFIED_NOTYET, VERIFIED_REJECTED constants. |
java.lang.String |
toString()
Returns a String representation of the VerificationResult. |
| Methods inherited from class java.lang.Object |
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
public static final int VERIFIED_NOTYET
public static final int VERIFIED_OK
public static final int VERIFIED_REJECTED
public static final VerificationResult VR_NOTYET
public static final VerificationResult VR_OK
| Constructor Detail |
public VerificationResult(int status, java.lang.String message)
| Method Detail |
public int getStatus()
public java.lang.String getMessage()
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


IK Examples
Simple
Simple IK
Basic IK
Translate IK
3D Character Base Example
Bone IK
Limit Ik Bone
Add Ik Endsite
Ik Ratio.Each bone has different max angle
Preset Ik
TODO
test other lib
License
3D Character is created by Manuel Bastioni, CCBY4 Licensed
Links
Three.js Core library
https://github.com/animate1978/MB-Lab Manuel Bastioni project is shutdown.This Project is one of successor


Amid Political Turmoil In Maharashtra, NCP Chief Sharad Pawar To Meet PM Modi Today To Discuss ‘Farmers’ Issues’
by IANSNationalist Congress Party (NCP) supremo Sharad Pawar will meet Prime Minister Narendra Modi on Wednesday (20 November) afternoon in Parliament to discuss issues related to farmers distress in Maharashtra.
According to NCP leaders, Pawar will meet Modi in Parliament at 12.30 pm to discuss several issues related to the state, especially the agrarian crisis following unprecedented rainfall.
The meeting of the two leaders comes two days after Modi praised the Sharad Pawar-led party during his speech in Rajya Sabha on Monday (18 November).
Speaking on the occasion of 250th Session of the Upper House, Modi said other parties, including the BJP, should learn from the NCP and Biju Janata Dal (BJD) of Naveen Patnaik how to adhere to parliamentary norms.
The praise for the Pawar-led party comes at a time when the NCP and Congress are trying to keep the BJP away from power in Maharashtra, where the President's rule was imposed on 12 November.
The BJP and the Shiv Sena fought the Assembly elections for the 288 member House, and they bagged 105 and 56 seats, respectively. However, the alliance came undone after Shiv Sena chief Uddhav Thackeray demanded rotational chief ministerial post -- a request denied by the BJP.
On the other hand, the Congress and the NCP won 44 and 54 seats, respectively, in the state.
Several senior leaders of Congress and NCP are also set to meet during the day to discuss the Common Minimum Programme (CMP) for Maharashtra and to forge an alliance with Shiv Sena possibly to form government in the state.
(This story has been published from a wire agency feed without modifications to the text. Only the headline has been changed.)