--- layout: post permalink: adultclothdiapercom.html Tags: Array NameOfCoupon: AdultClothDiaper.Com Cash Back Summary: See our AdultClothDiaper.Com Coupon Code, AdultClothDiaper.Com Rebate, AdultClothDiaper.Com Promo Code, AdultClothDiaper.Com Discount, AdultClothDiaper.Com Coupon Cash Back Rebate here. MetaKeywords: AdultClothDiaper.Com Coupon Code, AdultClothDiaper.Com Rebate, AdultClothDiaper.Com Promo Code, AdultClothDiaper.Com Cash Back Rebate, AdultClothDiaper.Com Discount, AdultClothDiaper.Com Coupon Image: images/19672.jpg LinkURL: http://www.shareasale.com/r.cfm?b=147870&u=412002&m=19672 affiliate_url_link: http://www.icouponblog.com/jane.php?id=802 thesis_readmore: See the AdultClothDiaper.Com Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=adultclothdiaper.com Title: Save 5% - AdultClothDiaper.Com Coupon Code for adultclothdiaper.com. AdultClothDiaper.Com Rebate & Discount thesis_description: Our AdultClothDiaper.Com Discount Coupon Code for adultclothdiaper.com. We have the best AdultClothDiaper.Com Rebate anywhere. thesis_keywords: AdultClothDiaper.Com, AdultClothDiaper.Com Coupon Code, AdultClothDiaper.Com Discount, AdultClothDiaper.Com Rebate product_name: AdultClothDiaper.Com hop_url: http://www.icouponblog.com/hop.php?id=802 ---
Do you suffer from incontinence? You are not alone, there are over 24 million incontinent Americans. There are many healthy, active people who suffer from this problem. AdultClothDiaper.Com has the products to make your life comfortable and easy. They carry 5 styles of adult cloth diapers and five styles of adult plastic pants in 17 colors. AdultClothDiaper.Com also has other continence related products and accessories. You do not have to suffer if you have incontinence. You can lead a normal, active life with the help of products made just to help you out. Use our discount coupons to get a good price on all products on AdultClothDiaper.Com.
AdultClothDiaper.Com has comfortable diapers that can be reused so it’s economical. You can get it delivered discreetly and fast. Check it out on AdultClothDiaper.Com. The website is easy to use and navigate. You will find the right product for you within minutes. For comfortable, convenient and breathable diapers, cloth diapers are the best. Guard against painful diaper rashes, use cloth diapers from AdultClothDiaper.Com. Use our cash back rebate coupon for perfect savings on AdultClothDiaper.Com.
AdultClothDiaper.Com also carries useful accessories. You can get diaper pins and diaper covers. You can also get mini shower and hand held bidet for the highest personal hygiene. If you suffer from incontinence you will find AdultClothDiaper.Com very useful. For the best products and prices check out AdultClothDiaper.Com today.


Friday
I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively. I am similar to what is called a panel in other frameworks.
settings
Settings
colour
A period
red
deep-orange


Nito vs. React
Benchmark concept originally by
Jonathan Miles.
Start Chrome with --enable-precise-memory-info
for accurate memory stats.
NitoDashboard.js

S

ReactDashboard.jsx
S


5.2.1.c built-in data types which allow empty content for basic processors
When you activate the Run Test trigger below you must see an 'xforms-valid' output for all the
data types. If the data type does not accept empty content you will see an 'XFORMS-INVALID' output.
An 'XFORMS-INVALID' output is a failure for this test case.


Spaghetti carbonara like you've never tasted before
Daily Dish: Jenny Holland of Bia Rebel in Belfast combines caramelised turnip, sage and hazelnuts for a carbonara with a difference
About two years ago, a friend gave us a load of turnips, grown in his back garden. I was only a recent convert to the turnip, I must admit. For years, I only associated it with a soggy, mushy and flavourless mass heaped on to a plate next to boiled meat. It did nothing for me.
Then I had my partner Brian’s salt-baked drunken turnip at our restaurant. What a revelation. Cooked well, the vegetable is soft, yes, but dry, not soggy. There is a hint of liquorice and a crispness to a well-cooked turnip that makes it at once sharp and sweet.
Still, faced with a crate full of the stuff, I wasn’t sure what to do. Then inspiration struck. I love proper, no-cream carbonara. That particular evening I just craved the lovely unctuousness of the uncooked egg on the strands of spaghetti, and I had a feeling the sharpness of the turnip would blend well with the silkiness of the egg. The sage and hazelnut, I surmised, would class it up a bit. I was right. It was divine.
What you’ll need:
Serves 4
Irish Times
Food&Drink Club
Exclusive events, competitions, reviews & recipes Join now
1 turnip
40g butter
80g crushed or chopped hazelnuts
1 tbsp olive oil
6 sage leaves, chop five and keep one for garnish
3 large eggs
70g Parmesan, grated
Enough spaghetti for four people
Salt and pepper
How to make it:
1. Peel and dice the turnip into very small cubes. Sauté in half the butter and a tablespoon of olive oil, until just soft. I like the turnip to be a little on the crunchy side.
2. Sprinkle the hazelnuts into the pan and finish with diced sage, leaving some to add at the end, and a whole sage leaf for garnish. Set aside.
3. In a bowl, beat the eggs with a spoon. Add salt and pepper to taste, and most of the Parmesan.
4. In a small saucepan, melt the remaining butter then take it off the heat.
5. Cook the spaghetti to your desired tenderness, then drain it. Put the spaghetti in a serving bowl. Do not put the spaghetti back into the hot pot or the frying pan used for cooking the turnip, as the hot pans could cause the eggs to scramble.
6. Mix the turnip and hazelnuts into the spaghetti. Add the melted butter and finally add the egg and Parmesan, mixing thoroughly until all the strands of spaghetti are coated in the sauce. Add some freshly ground pepper and more Parmesan, and the rest of the sage.
Jenny Holland is co-owner of Bia Rebel ramen restaurant in Belfast.


public class AddItemActivity
extends Activity
| Constructor and Description |
|---|
AddItemActivity() |
| Modifier and Type | Method and Description |
|---|---|
void |
addImageOption(View view)
opens camera to take photo
|
Button |
addItemButton() |
void |
cancelButtonClick(View view)
Closes the activity when user clicks cancel button
|
boolean |
checkDate(java.lang.String date)
Function to check the valid date format
|
EditText |
descriptionText() |
Spinner |
eitherPublicOrPrivateSpinner() |
EditText |
gameTitleText() |
protected void |
onActivityResult(int requestCode,
int resultCode,
Intent data)
after taking a photo, displays the resulting image taken
|
protected void |
onCreate(Bundle savedInstanceState)
Called when the activity is first created
It creates the UI and initializes the spinners
|
void |
onItemSelected(
A necessary function that must be added to choose the item in the spinner
|
void |
onNothingSelected(
A necessary function to implement spinners if nothing is chosen
|
Spinner |
platformSpinner() |
Spinner |
quailitySpinner() |
EditText |
releaseDataText() |
void |
saveButtonClick(View view)
Saves the data from the inputs we enter
|
protected void onCreate(Bundle savedInstanceState)
savedInstanceState
- public void onItemSelected(parent, View view, int pos, long id)
parent
- : The AdapterView where the selection happenedview:
- The view within the adapterView that was clickedpos:
- position of the item selectedid:
- The row id of the item that is selectedpublic void onNothingSelected(parent)
parent:
- The AdapterView where the selection happenedpublic void addImageOption(View view)
view:
- Add image button viewprotected void onActivityResult(int requestCode, int resultCode, Intent data)
requestCode
- resultCode:
- data:
- intent data returned from launched intentpublic void saveButtonClick(View view)
view:
- save button viewpublic void cancelButtonClick(View view)
view
- : View of cancel buttonpublic boolean checkDate(java.lang.String date)
date:
- Date that the user entered for the itempublic Button addItemButton()
public EditText gameTitleText()
public EditText releaseDataText()
public EditText descriptionText()
public Spinner platformSpinner()
public Spinner quailitySpinner()
public Spinner eitherPublicOrPrivateSpinner()


The Heart: A Table of Contents
The developmental process of the heart has many unique phases
.
Learn how to have a healthy heart
.
Learn how exercise helps your heart
.
Consider the different kinds of exercise
.
If you're just getting started, consult a beginner's guide to exercise
.
Take some tips for making exercise part of your daily routine
.
Learn how a healthy eating plan helps your heart
.
The Food Pyramid is a popular healthy eating plan
.
Take some hints for healthy eating
.
Learn how a drug-free lifestyle helps your heart
.
Learn about heart disease
.
The American Heart Association's statistics are staggering
.
Blood pressure provides a picture of the heart's health
.
Your heart fights back during a heart attack
.
You can be a heart saver
.
Diabetes can lead to heart disease
.
Heart disease effects women and men differently
.
To treat heart disease, surgery is sometimes necessary
.
Sometimes, open heart surgery is necessary for the patient's survival
.
Watch a video of heart bypass surgery
.
Technology has created the artificial heart
.
Meet Doctor Joel Posner and learn about heart doctors
.
Watch the introduction to "The Beat," a series of videos that address healthy heart issues
.
Watch the episode of "The Beat" that addresses diet
.
Watch the episode of "The Beat" that addresses exercise
.
Watch the episode of "The Beat" that addresses smoking
.
Watch the conclusion of "The Beat
."
Learn about the blood vessels that wind throughout your body
.
Arteries carry oxygen-rich blood away from the heart
.
Capillaries connect arteries to veins
.
Veins carry waste products for removal
.
The pulmonary system allows the exchange of oxygen and carbon dioxide
.
The circulatory system carries blood throughout the body
.
The coronary system moves blood through the heart
.
Systemic circulation delivers blood to all parts of the body
.
Learn about how you and your doctor monitor your heart
.
Vital statistics, like pulse and blood pressure, allow us to "see" the heart
.
Look at a picture of blood pressure being measured
.
Look at a picture of a patient having blood pressure measured
.
See how to take your pulse
.
See five ways to take your pulse
.
Look at a comparison of two heart x-ray images
.
Echocardiography uses sound to "see" the heart
.
Watch a video of echocardiograms
.
Look at a picture of an echocardiography machine
.
Electrocardiography uses electrical impulses to monitor the heart
.
Listen to the heartbeats
.
Learn about the fascinating fluid of life
.
The red blood cells supply oxygen
.
The white blood cells attack foreign bodies
.
Don't underestimate the importance of plasma
.
Blood platelets aid clotting
.
What's your blood type
?
What's your rh factor
?
Learn about the history of the heart
.
Milestones in cardiology reveal the rapid development of heart treatment and technology
.
Consider the role of the heart in popular culture
.
Write a poem about the heart
.
To continue learning about the heart, try some enrichment activities
.
A glossary of terms used in the exhibit is available
.
Recommended resource materials are listed
.
Back to The Heart


'Ever After'
by Simon Calloway
Cast: Drew Barrymore; Anjelica Huston; Dougray Scott
DVD Widescreen 2.35:1/Trailer/Dolby 5.1/Language Selection
When I was a kid and my parents brought me to the movies, I saw a film by Disney called Cinderella. I never fully understood why kids liked this particular cartoon. I found it annoying and boring, even for a cartoon, with the magic pumpkin and talking mice simply uninteresting. But, I was never a Disney-type kid.
Now, when I heard Drew Barrymore would be starring in a live action story of Cinderella, not produced by Disney, I thought, It could be interesting. And Anjelica Huston as the wicked stepmother? I'm there.
Little did I know, I have found my new favorite movie. Ever After is an enchanting, lovely adaptation of the silly Disney cartoon. It is told through different versus, such as Cinderella's name being Danielle, and the magic pumpkin and mice have taken a hike (thank God!). This is one of the reasons Ever After works.
Since you know the story, I will not waste the time to tell it. I will tell, however, that the story takes different turns, resulting in very (crowd) pleasing excitment. Barrymore is just perfect for the role of Danielle, while Huston is, of course, chillingly excellent as the evil stepmom. This is her film, so to speak. She steals all her scenes, although Barrymore has a certain sparkle that makes you want to just watch her and nothing else.
Do yourself a favor and see this film. It will restore your faith in movies.
***** ~TeenViews (c) 1999~
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


<mat-slide-toggle>
is an on/off control that can be toggled via clicking.
The slide-toggle behaves similarly to a checkbox, though it does not support an indeterminate
state like <mat-checkbox>
.
The slide-toggle label is provided as the content to the <mat-slide-toggle>
element.
If you don't want the label to appear next to the slide-toggle, you can use
aria-label
or
aria-labelledby
to
specify an appropriate label.
@angular/forms
<mat-slide-toggle>
is compatible with @angular/forms
and supports both FormsModule
and ReactiveFormsModule
.
The color of a <mat-slide-toggle>
can be changed by using the color
property. By default,
slide-toggles use the theme's accent color. This can be changed to 'primary'
or 'warn'
.
The <mat-slide-toggle>
uses an internal <input type="checkbox">
to provide an accessible
experience. This internal checkbox receives focus and is automatically labelled by the text content
of the <mat-slide-toggle>
element.
Slide toggles without text or labels should be given a meaningful label via aria-label
or
aria-labelledby
.


import { BadgeModule } from 'easy-framework';
Badges are styled with a .badge-[sm || md || lg]
class.
1
20
300
import { BadgeModule } from 'easy-framework';
Badges are styled with a .badge-[sm || md || lg]
class.
1
20
300
If a badge does not contain text, it is not rendered.
1


--- layout: post title: "Move Back to Wordpress" date: 2009-09-26 15:07:30 +0000 permalink: /2009/09/26/move-back-to-wordpress/ category: Meta redirect_from: - /blog/move-back-to-wordpress/ ---
As you may have noticed, my site (Tuxteam.com) has moved back to Wordpress. While I still support Drupal (and use it at work), it did not meet my needs for my site. Specifically, the ability to create per-tag feeds was lacking, and it used a LOT of RAM for such a simple site. (This site runs on a Linode-360.) The theme is a stock community theme, but I hope to be switching that around some in the near future. I'm also going to be starting a couple of new things on here, but we'll see how those work out.


Description of the Problem
https://www.lintcode.com/problem/3sum-closest/description
59. 3Sum Closest Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. Example For example, given array S = [-1 2 1 -4], and target = 1. The sum that is closest to the target is 2. (-1 + 2 + 1 = 2). Challenge O(n^2) time, O(1) extra space
Idea to solve the problem
Sorting/Two pointers
My codes
public class Solution {
/**
* @param numbers: Give an array numbers of n integer
* @param target: An integer
* @return: return the sum of the three integers, the sum closest target.
*/
// Total runtime 2243 ms. Your submission beats 88.60% Submissions!
public int threeSumClosest(int[] numbers, int target) {
if ( numbers == null || numbers.length < 3 ) return -1;
Arrays.sort(numbers);
int diff = Integer.MAX_VALUE , dsum = -1;
for (int i=0; i< numbers.length - 1; i++) {
int left = i+1, right = numbers.length -1;
while (left < right ) {
int sum = numbers[i] + numbers[left] + numbers[right];
if ( sum == target) {
return sum;
}
int ndiff = Math.abs(sum - target);
if ( ndiff < diff ) {
diff = ndiff;
dsum = sum;
}
if ( sum > target ) {
right--;
} else
left++;
}
}
return dsum;
}
}


First name:
Last name:
Email
Telephone
Volvo
Saab
Fiat
Audi
First name:
Last name:
Email
Telephone
Volvo
Saab
Fiat
Audi


HTML Forms and AJAX
Default HTML form behavior
Submit the form below to have your browser perform an HTTP GET request to the server.
HTML form using AJAX
Submit the form below to have your browser perform an HTTP GET request to the server.


Teaching materials
work only just started, aiming for a couple of lectures worth by mid-Nov 2020
I’ll link from homepage when there’s something worth looking at


WELCOME TO MY BLOG
I am Okoye Somtochukwu Valentine
Enjoy the blog: As you get a glimpse of my life!
About me
My Hobbies
My Country


Main Page
Data Structures
Files
File List
Globals
libsched File List
Here is a list of all files with brief descriptions:
l_delay_slots.c
[code]
l_dependence.c
[code]
l_dependence.h
[code]
l_mcb.c
[code]
l_mcb.h
[code]
l_queue.c
[code]
l_regpres.c
[code]
l_ru_interface.c
[code]
l_ru_interface.h
[code]
l_schedule.c
[code]
l_schedule.h
[code]
l_statistic.c
[code]
l_wbs.c
[code]
old_sm.h
[code]
old_sm_rmap.c
[code]
RU_manager.c
[code]
RU_manager.h
[code]
Generated on Sat Aug 30 17:59:02 2014 for libsched by
1.4.7


DNS lookup
Input a domain name to look up:
Host resolver cache
- May break pages with active connections
HSTS/PKP
Add HSTS domain
Input a domain name to add it to the HSTS set:
Query HSTS/PKP domain
Input a domain name to query the current HSTS/PKP set:
Expect-CT
To protect against cross-site tracking, Expect-CT data will soon be keyed on the site of the main frame and innermost frame when an Expect-CT header is encountered. When that behavior is enabled, both adding and querying an Expect-CT domain use the eTLD+1 of the provided domain as the site for both frames. Deleting policies affects information stored for that domain in the context of all sites, however.
Add Expect-CT domain
Input a domain name to add it to the Expect-CT set. Leave Enforce unchecked to configure Expect-CT in report-only mode.
Query Expect-CT domain
Input a domain name to query the current Expect-CT set:
Send test Expect-CT report
Trigger a test report to the given report URI. The report will contain a hostname of "expect-ct-report.test" and dummy data in other fields.
Delete domain security policies
Input a domain name to delete its dynamic domain security policies (HSTS and Expect-CT). (You cannot delete preloaded entries.):


About Me:
I am Madicken Munk, a Graduate Student at the University of California-Berkeley.
My Work:
Currently I am employed as a Graduate Student Researcher at UCB. I am interested in a variety of applications of nuclear science, and have worked on Research Projects in several different topical areas of nuclear engineering. At present, I am interested in hybrid monte carlo methods.
My Education:
I attended Oregon State University from 2007 to 2011 for my undergraduate studies, where I majored in Nuclear Engineering. I worked with Dr. Steve Reese and Dr. Todd Palmer on designing a device optimized for the production of 99Mo in small, thermal reactors.
I am currently at the University of California - Berkeley for my graduate studies. I earned a Master's of Science in Nuclear Engineering in 2013 by implementing a method to evaluate the lifetime of structural components in a Pebble-Bed Fluoride Salt-Cooled High Temperature Reactor (PB-FHR). My PhD work will be developing a hybrid monte carlo algorithm for global solutions where there is strong angular anisotropy.
My Interests:
Outside of nuclear engineering, I have many pastimes. I am an avid reader of fiction. I am part of a muay thai kicboxing gym, and really enjoy the art and finesse involved in the martial arts. If I have time, I like backpacking in the mountains of California, or hiking the coastline. I also am fond of cats and cat videos.
Find Me Elsewhere on the Web:


threedna: Simple DNA molecules using three.js.
Usage:
In order to add the content canvas to an element on your page with
id="canvas", containing 50 objects, with specified object and background
colors, and with falling objects, use:
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r83/three.min.js"></script>
<script src="threedna.js"></script>
<script>
const threeDNAConfig = {
element: "canvas",
noOfObjects: 50,
objectColor: 0x6D6D6D,
bgColor: 0xDBDBDB,
cameraDistance: 500,
rainSpeed: 0.005,
maxRotationSpeed: 0.01,
deleteOnError: false
};
var tdna = new ThreeDNA(threeDNAConfig);
</script>
Calling ThreeDNA() with a subset of the settings, or without argument, results in default settings.


Scottish Fairy and Folk Tales, by George Douglas, [1901], at sacred-texts.com
A BEE met a mouse and said--
"Come over till we, make a house."
"I will not," said Luchag, the mousie.
"He to whom thou gavest thy summer honey,
Let him make a winter house for thee;
I have a little house under the ground, p. 98
That can reach neither cold nor breeze,
Thou wilt be a ragged creature,
Running on the tops of the trees."


If you're new to Mesos
See the getting started page for more information about downloading, building, and deploying Mesos.
If you'd like to get involved or you're looking for support
See our community page for more details.
Operator HTTP API
Mesos 1.0.0 added experimental support for v1 Operator HTTP API.
Overview
Both masters and agents provide the /api/v1
endpoint as the base URL for performing operator-related operations.
Similar to the Scheduler and Executor HTTP APIs, the operator endpoints only accept HTTP POST requests. The request body should be encoded in JSON (Content-Type: application/json) or Protobuf (Content-Type: application/x-protobuf).
For requests that Mesos can answer synchronously and immediately, an HTTP response will be sent with status 200 OK, possibly including a response body encoded in JSON or Protobuf. The encoding depends on the Accept header present in the request (the default encoding is JSON). Responses will be gzip compressed if the Accept-Encoding header is set to “gzip”.
For requests that require asynchronous processing (e.g., RESERVE_RESOURCES
), an HTTP response will be sent with status 202 Accepted. For requests that result in a stream of events (SUBSCRIBE
), a streaming HTTP response with RecordIO encoding is sent. Currently, gzip compression is not supported for streaming responses.
Master API
This API contains all the calls accepted by the master. The canonical source of this information is master.proto (NOTE: The protobuf definitions are subject to change before the beta API is finalized). These calls are typically made by human operators, tooling or services (e.g., Mesos WebUI). While schedulers can make these calls as well, schedulers are expected to use the Scheduler HTTP API.
Calls To Master And Responses
Below are the example calls to master that result in synchronous responses from the API.
GET_HEALTH
This call retrieves the health status of master.
GET_HEALTH HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_HEALTH"
}
GET_HEALTH HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_HEALTH",
"get_health": {
"healthy": true
}
}
GET_FLAGS
This call retrieves the master’s overall flag configuration.
GET_FLAGS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_FLAGS"
}
GET_FLAGS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_FLAGS",
"get_flags": {
"flags": [
{
"name": "acls",
"value": ""
},
{
"name": "agent_ping_timeout",
"value": "15secs"
},
{
"name": "agent_reregister_timeout",
"value": "10mins"
},
{
"name": "allocation_interval",
"value": "1secs"
},
{
"name": "allocator",
"value": "HierarchicalDRF"
},
{
"name": "authenticate_agents",
"value": "true"
},
{
"name": "authenticate_frameworks",
"value": "true"
},
{
"name": "authenticate_http_frameworks",
"value": "true"
},
{
"name": "authenticate_http_readonly",
"value": "true"
},
{
"name": "authenticate_http_readwrite",
"value": "true"
},
{
"name": "authenticators",
"value": "crammd5"
},
{
"name": "authorizers",
"value": "local"
},
{
"name": "credentials",
"value": "/tmp/directory/credentials"
},
{
"name": "framework_sorter",
"value": "drf"
},
{
"name": "help",
"value": "false"
},
{
"name": "hostname_lookup",
"value": "true"
},
{
"name": "http_authenticators",
"value": "basic"
},
{
"name": "http_framework_authenticators",
"value": "basic"
},
{
"name": "initialize_driver_logging",
"value": "true"
},
{
"name": "log_auto_initialize",
"value": "true"
},
{
"name": "logbufsecs",
"value": "0"
},
{
"name": "logging_level",
"value": "INFO"
},
{
"name": "max_agent_ping_timeouts",
"value": "5"
},
{
"name": "max_completed_frameworks",
"value": "50"
},
{
"name": "max_completed_tasks_per_framework",
"value": "1000"
},
{
"name": "quiet",
"value": "false"
},
{
"name": "recovery_agent_removal_limit",
"value": "100%"
},
{
"name": "registry",
"value": "replicated_log"
},
{
"name": "registry_fetch_timeout",
"value": "1mins"
},
{
"name": "registry_store_timeout",
"value": "100secs"
},
{
"name": "registry_strict",
"value": "true"
},
{
"name": "root_submissions",
"value": "true"
},
{
"name": "user_sorter",
"value": "drf"
},
{
"name": "version",
"value": "false"
},
{
"name": "webui_dir",
"value": "/usr/local/share/mesos/webui"
},
{
"name": "work_dir",
"value": "/tmp/directory/master"
},
{
"name": "zk_session_timeout",
"value": "10secs"
}
]
}
}
GET_VERSION
This call retrieves the master’s version information.
GET_VERSION HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_VERSION"
}
GET_VERSION HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_VERSION",
"get_version": {
"version_info": {
"version": "1.0.0",
"build_date": "2016-06-24 23:18:37",
"build_time":<PHONE_NUMBER>,
"build_user": "root"
}
}
}
GET_METRICS
This call gives the snapshot of current metrics to the end user. If timeout
is
set in the call, it would be used to determine the maximum amount of time the
API will take to respond. If the timeout is exceeded, some metrics may not be
included in the response.

GET_LOGGING_LEVEL HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_LOGGING_LEVEL"
}
GET_LOGGING_LEVEL HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_LOGGING_LEVEL",
"get_logging_level": {
"level": 0
}
}
SET_LOGGING_LEVEL
Sets the logging verbosity level for a specified duration for master. Mesos uses glog for logging. The library only uses verbose logging which means nothing will be output unless the verbosity level is set (by default it’s 0, libprocess uses levels 1, 2, and 3).
SET_LOGGING_LEVEL HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "SET_LOGGING_LEVEL",
"set_logging_level": {
"duration": {
"nanoseconds":<PHONE_NUMBER>0
},
"level": 1
}
}
SET_LOGGING_LEVEL HTTP Response:
HTTP/1.1 202 Accepted
LIST_FILES
This call retrieves the file listing for a directory in master.
LIST_FILES HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "LIST_FILES",
"list_files": {
"path": "one/"
}
}
LIST_FILES HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "LIST_FILES",
"list_files": {
"file_infos": [
{
"gid": "root",
"mode": 16877,
"mtime": {
"nanoseconds":<PHONE_NUMBER>000000000
},
"nlink": 2,
"path": "one/2",
"size": 4096,
"uid": "root"
},
{
"gid": "root",
"mode": 16877,
"mtime": {
"nanoseconds":<PHONE_NUMBER>000000000
},
"nlink": 2,
"path": "one/3",
"size": 4096,
"uid": "root"
},
{
"gid": "root",
"mode": 33188,
"mtime": {
"nanoseconds":<PHONE_NUMBER>000000000
},
"nlink": 1,
"path": "one/two",
"size": 3,
"uid": "root"
}
]
}
}
READ_FILE
Reads data from a file. This call takes path of the file to be read in the master, offset to start reading position and length for the maximum number of bytes to read.
READ_FILE HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "READ_FILE",
"read_file": {
"length": 6,
"offset": 1,
"path": "myname"
}
}
READ_FILE HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "READ_FILE",
"read_file": {
"data": "b2R5",
"size": 4
}
}
GET_STATE
This call retrieves the overall cluster state.
GET_STATE HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_STATE"
}
GET_STATE HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_STATE",
"get_state": {
"get_agents": {
"agents": [
{
"active": true,
"agent_info": {
"hostname": "myhost",
"id": {
"value": "628984d0-4213-4140-bcb0-99d7ef46b1df-S0"
},
"port": 34626,
"resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 2.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "disk",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 32000
}
]
},
"role": "*",
"type": "RANGES"
}
]
},
"pid": "slave(3)@<IP_ADDRESS>:34626",
"registered_time": {
"nanoseconds":<PHONE_NUMBER>046531840
},
"total_resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 2.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "disk",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 32000
}
]
},
"role": "*",
"type": "RANGES"
}
],
"version": "1.1.0"
}
]
},
"get_executors": {
"executors": [
{
"agent_id": {
"value": "628984d0-4213-4140-bcb0-99d7ef46b1df-S0"
},
"executor_info": {
"command": {
"shell": true,
"value": ""
},
"executor_id": {
"value": "default"
},
"framework_id": {
"value": "628984d0-4213-4140-bcb0-99d7ef46b1df-0000"
}
}
}
]
},
"get_frameworks": {
"frameworks": [
{
"active": true,
"connected": true,
"framework_info": {
"checkpoint": false,
"failover_timeout": 0.0,
"hostname": "abcdev",
"id": {
"value": "628984d0-4213-4140-bcb0-99d7ef46b1df-0000"
},
"name": "default",
"principal": "my-principal",
"role": "*",
"user": "root"
},
"registered_time": {
"nanoseconds":<PHONE_NUMBER>039300864
},
"reregistered_time": {
"nanoseconds":<PHONE_NUMBER>039300864
}
}
]
},
"get_tasks": {
"completed_tasks": [
{
"agent_id": {
"value": "628984d0-4213-4140-bcb0-99d7ef46b1df-S0"
},
"executor_id": {
"value": "default"
},
"framework_id": {
"value": "628984d0-4213-4140-bcb0-99d7ef46b1df-0000"
},
"name": "test-task",
"resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 2.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "disk",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 32000
}
]
},
"role": "*",
"type": "RANGES"
}
],
"state": "TASK_FINISHED",
"status_update_state": "TASK_FINISHED",
"status_update_uuid": "IWjmPnfgQCWxGVlNNwctcg==",
"statuses": [
{
"agent_id": {
"value": "628984d0-4213-4140-bcb0-99d7ef46b1df-S0"
},
"container_status": {
"network_infos": [
{
"ip_addresses": [
{
"ip_address": "<IP_ADDRESS>"
}
]
}
]
},
"executor_id": {
"value": "default"
},
"source": "SOURCE_EXECUTOR",
"state": "TASK_RUNNING",
"task_id": {
"value": "eb5cb680-a998-4605-8811-e79db8734c02"
},
"timestamp":<PHONE_NUMBER>.07315,
"uuid": "hTaLQ0b5Q1OZuab7QclTKQ=="
},
{
"agent_id": {
"value": "628984d0-4213-4140-bcb0-99d7ef46b1df-S0"
},
"container_status": {
"network_infos": [
{
"ip_addresses": [
{
"ip_address": "<IP_ADDRESS>"
}
]
}
]
},
"executor_id": {
"value": "default"
},
"source": "SOURCE_EXECUTOR",
"state": "TASK_FINISHED",
"task_id": {
"value": "eb5cb680-a998-4605-8811-e79db8734c02"
},
"timestamp":<PHONE_NUMBER>.09382,
"uuid": "IWjmPnfgQCWxGVlNNwctcg=="
}
],
"task_id": {
"value": "eb5cb680-a998-4605-8811-e79db8734c02"
}
}
]
}
}
}
GET_AGENTS
This call retrieves information about all the agents known to the master.
GET_AGENTS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_AGENTS"
}
GET_AGENTS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{{
"type": "GET_AGENTS",
"get_agents": {
"agents": [
{
"active": true,
"agent_info": {
"hostname": "host",
"id": {
"value": "3669ea49-c3c4-4b13-adee-05b8f9cb2562-S0"
},
"port": 34626,
"resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 2.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "disk",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 32000
}
]
},
"role": "*",
"type": "RANGES"
}
]
},
"pid": "slave(1)@<IP_ADDRESS>:34626",
"registered_time": {
"nanoseconds":<PHONE_NUMBER>393027072
},
"total_resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 2.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "disk",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 32000
}
]
},
"role": "*",
"type": "RANGES"
}
],
"version": "1.1.0"
}
]
}
}
GET_FRAMEWORKS
This call retrieves information about all the frameworks known to the master.
GET_FRAMEWORKS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_FRAMEWORKS"
}
GET_FRAMEWORKS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_FRAMEWORKS",
"get_frameworks": {
"frameworks": [
{
"active": true,
"connected": true,
"framework_info": {
"checkpoint": false,
"failover_timeout": 0.0,
"hostname": "myhost",
"id": {
"value": "361be53a-4d1b-42c1-bec3-e3979eff90bd-0000"
},
"name": "default",
"principal": "my-principal",
"role": "*",
"user": "root"
},
"registered_time": {
"nanoseconds":<PHONE_NUMBER>578306816
},
"reregistered_time": {
"nanoseconds":<PHONE_NUMBER>578306816
}
}
]
}
}
GET_EXECUTORS
Queries about all the executors known to the master.
GET_EXECUTORS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_EXECUTORS"
}
GET_EXECUTORS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_EXECUTORS",
"get_executors": {
"executors": [
{
"agent_id": {
"value": "f2ddc41d-6284-405e-8642-34953093140f-S0"
},
"executor_info": {
"command": {
"shell": true,
"value": "exit 1"
},
"executor_id": {
"value": "default"
},
"framework_id": {
"value": "f2ddc41d-6284-405e-8642-34953093140f-0000"
}
}
}
]
}
}
GET_TASKS
Query about all the tasks known to the master.
GET_TASKS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_TASKS"
}
GET_TASKS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_TASKS",
"get_tasks": {
"tasks": [
{
"agent_id": {
"value": "d4bd102f-e25f-46dc-bb5d-8b10bca133d8-S0"
},
"executor_id": {
"value": "default"
},
"framework_id": {
"value": "d4bd102f-e25f-46dc-bb5d-8b10bca133d8-0000"
},
"name": "test",
"resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 2.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "disk",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 32000
}
]
},
"role": "*",
"type": "RANGES"
}
],
"state": "TASK_RUNNING",
"status_update_state": "TASK_RUNNING",
"status_update_uuid": "ycLTRBo8TjKFTrh4vsBERg==",
"statuses": [
{
"agent_id": {
"value": "d4bd102f-e25f-46dc-bb5d-8b10bca133d8-S0"
},
"container_status": {
"network_infos": [
{
"ip_addresses": [
{
"ip_address": "<IP_ADDRESS>"
}
]
}
]
},
"executor_id": {
"value": "default"
},
"source": "SOURCE_EXECUTOR",
"state": "TASK_RUNNING",
"task_id": {
"value": "1"
},
"timestamp":<PHONE_NUMBER>.32565,
"uuid": "ycLTRBo8TjKFTrh4vsBERg=="
}
],
"task_id": {
"value": "1"
}
}
]
}
}
GET_ROLES
Query the information about roles.
GET_ROLES HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_ROLES"
}
GET_ROLES HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_ROLES",
"get_roles": {
"roles": [
{
"name": "*",
"weight": 1.0
},
{
"frameworks": [
{
"value": "74bddcbc-4a02-4d64-b291-aed52032055f-0000"
}
],
"name": "role1",
"resources": [
{
"name": "cpus",
"role": "role1",
"scalar": {
"value": 0.5
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "role1",
"scalar": {
"value": 512.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 31001
}
]
},
"role": "role1",
"type": "RANGES"
},
{
"name": "disk",
"role": "role1",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
}
],
"weight": 2.5
}
]
}
}
GET_WEIGHTS
This call retrieves the information about role weights.
GET_WEIGHTS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_WEIGHTS"
}
GET_WEIGHTS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_WEIGHTS",
"get_weights": {
"weight_infos": [
{
"role": "role",
"weight": 2.0
}
]
}
}
UPDATE_WEIGHTS
This call updates weights for specific role. This call takes weight_infos
which needs role
value and weight
value.
UPDATE_WEIGHTS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "UPDATE_WEIGHTS",
"update_weights": {
"weight_infos": [
{
"role": "role",
"weight": 4.0
}
]
}
}
UPDATE_WEIGHTS HTTP Response:
HTTP/1.1 202 Accepted
GET_MASTER
This call retrieves the information on master.
GET_MASTER HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_MASTER"
}
GET_MASTER HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_MASTER",
"get_master": {
"master_info": {
"address": {
"hostname": "myhost",
"ip": "<IP_ADDRESS>",
"port": 34626
},
"hostname": "myhost",
"id": "310ffdac-0b73-408d-acf0-2adcd21cb4b7",
"ip": 16842879,
"pid": "master@<IP_ADDRESS>:34626",
"port": 34626,
"version": "1.1.0"
}
}
}
RESERVE_RESOURCES
This call reserve resources dynamically on a specific agent. This call takes
agent_id
and resources
details like the following.
RESERVE_RESOURCES HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "RESERVE_RESOURCES",
"reserve_resources": {
"agent_id": {
"value": "1557de7d-547c-48db-b5d3-6bef9c9640ef-S0"
},
"resources": [
{
"type": "SCALAR",
"name": "cpus",
"reservation": {
"principal": "my-principal"
},
"role": "role",
"scalar": {
"value": 1.0
}
},
{
"type": "SCALAR",
"name": "mem",
"reservation": {
"principal": "my-principal"
},
"role": "role",
"scalar": {
"value": 512.0
}
}
]
}
}
RESERVE_RESOURCES HTTP Response:
HTTP/1.1 202 Accepted
UNRESERVE_RESOURCES
This call unreserve resources dynamically on a specific agent. This call takes
agent_id
and resources
details like the following.
UNRESERVE_RESOURCES HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "UNRESERVE_RESOURCES",
"unreserve_resources": {
"agent_id": {
"value": "1557de7d-547c-48db-b5d3-6bef9c9640ef-S0"
},
"resources": [
{
"type": "SCALAR",
"name": "cpus",
"reservation": {
"principal": "my-principal"
},
"role": "role",
"scalar": {
"value": 1.0
}
},
{
"type": "SCALAR",
"name": "mem",
"reservation": {
"principal": "my-principal"
},
"role": "role",
"scalar": {
"value": 512.0
}
}
]
}
}
UNRESERVE_RESOURCES HTTP Response:
HTTP/1.1 202 Accepted
CREATE_VOLUMES
This call create persistent volumes on reserved resources. The request is
forwarded asynchronously to the Mesos agent where the reserved resources are
located. That asynchronous message may not be delivered or creating the volumes
at the agent might fail. This call takes agent_id
and volumes
details like
the following.
CREATE_VOLUMES HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "CREATE_VOLUMES",
"create_volumes": {
"agent_id": {
"value": "919141a8-b434-4946-86b9-e1b65c8171f6-S0"
},
"volumes": [
{
"type": "SCALAR",
"disk": {
"persistence": {
"id": "id1",
"principal": "my-principal"
},
"volume": {
"container_path": "path1",
"mode": "RW"
}
},
"name": "disk",
"role": "role1",
"scalar": {
"value": 64.0
}
}
]
}
}
CREATE_VOLUMES HTTP Response:
HTTP/1.1 202 Accepted
DESTROY_VOLUMES
This call destroys persistent volumes. The request is forwarded asynchronously to the Mesos agent where the reserved resources are located.
DESTROY_VOLUMES HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "DESTROY_VOLUMES",
"destroy_volumes": {
"agent_id": {
"value": "919141a8-b434-4946-86b9-e1b65c8171f6-S0"
},
"volumes": [
{
"disk": {
"persistence": {
"id": "id1",
"principal": "my-principal"
},
"volume": {
"container_path": "path1",
"mode": "RW"
}
},
"name": "disk",
"role": "role1",
"scalar": {
"value": 64.0
},
"type": "SCALAR"
}
]
}
}
DESTROY_VOLUMES HTTP Response:
HTTP/1.1 202 Accepted
GET_MAINTENANCE_STATUS
This call retrieves the cluster’s maintenance status.
GET_MAINTENANCE_STATUS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_MAINTENANCE_STATUS"
}
GET_MAINTENANCE_STATUS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_MAINTENANCE_STATUS",
"get_maintenance_status": {
"status": {
"draining_machines": [
{
"id": {
"ip": "<IP_ADDRESS>"
}
},
{
"id": {
"hostname": "myhost"
}
}
]
}
}
}
GET_MAINTENANCE_SCHEDULE
This call retrieves the cluster’s maintenance schedule.
GET_MAINTENANCE_SCHEDULE HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_MAINTENANCE_SCHEDULE"
}
GET_MAINTENANCE_SCHEDULE HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_MAINTENANCE_SCHEDULE",
"get_maintenance_schedule": {
"schedule": {
"windows": [
{
"machine_ids": [
{
"hostname": "myhost"
},
{
"ip": "<IP_ADDRESS>"
}
],
"unavailability": {
"start": {
"nanoseconds":<PHONE_NUMBER>150643200
}
}
}
]
}
}
}
UPDATE_MAINTENANCE_SCHEDULE
This call updates the cluster’s maintenance schedule.
UPDATE_MAINTENANCE_SCHEDULE HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "UPDATE_MAINTENANCE_SCHEDULE",
"update_maintenance_schedule": {
"schedule": {
"windows": [
{
"machine_ids": [
{
"hostname": "myhost"
},
{
"ip": "<IP_ADDRESS>"
}
],
"unavailability": {
"start": {
"nanoseconds":<PHONE_NUMBER>192017920
}
}
}
]
}
}
}
UPDATE_MAINTENANCE_SCHEDULE HTTP Response:
HTTP/1.1 202 Accepted
START_MAINTENANCE
This call starts the maintenance of the cluster, this would bring a set of machines down.
START_MAINTENANCE HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "START_MAINTENANCE",
"start_maintenance": {
"machines": [
{
"hostname": "myhost",
"ip": "<IP_ADDRESS>"
}
]
}
}
START_MAINTENANCE HTTP Response:
HTTP/1.1 202 Accepted
STOP_MAINTENANCE
Stops the maintenance of the cluster, this would bring a set of machines back up.
STOP_MAINTENANCE HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "STOP_MAINTENANCE",
"stop_maintenance": {
"machines": [
{
"hostname": "myhost",
"ip": "<IP_ADDRESS>"
}
]
}
}
STOP_MAINTENANCE HTTP Response:
HTTP/1.1 202 Accepted
GET_QUOTA
This call retrieves the cluster’s configured quotas.
GET_QUOTA HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "GET_QUOTA"
}
GET_QUOTA HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_QUOTA",
"get_quota": {
"status": {
"infos": [
{
"guarantee": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 1.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 512.0
},
"type": "SCALAR"
}
],
"principal": "my-principal",
"role": "role1"
}
]
}
}
}
SET_QUOTA
This call sets the quota for resources to be used by a particular role.
SET_QUOTA HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "SET_QUOTA",
"set_quota": {
"quota_request": {
"force": true,
"guarantee": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 1.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 512.0
},
"type": "SCALAR"
}
],
"role": "role1"
}
}
}
SET_QUOTA HTTP Response:
HTTP/1.1 202 Accepted
REMOVE_QUOTA
This call removes the quota for a particular role.
REMOVE_QUOTA HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "REMOVE_QUOTA",
"remove_quota": {
"role": "role1"
}
}
REMOVE_QUOTA HTTP Response:
HTTP/1.1 202 Accepted
Events
Currently, the only call that results in a streaming response is the SUBSCRIBE
call sent to the master API.
SUBSCRIBE Request (JSON):
POST /api/v1 HTTP/1.1
Host: masterhost:5050
Content-Type: application/json
Accept: application/json
{
"type": "SUBSCRIBE"
}
SUBSCRIBE Response Event (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
<event-length>
{
"type": "SUBSCRIBED",
"subscribed" : {
"get_state" : {...}
}
}
<more events>
The client is expected to keep a persistent connection open to the endpoint even after getting a SUBSCRIBED
HTTP Response event. This is indicated by “Connection: keep-alive” and “Transfer-Encoding: chunked” headers with no “Content-Length” header set. All subsequent events generated by Mesos are streamed on this connection. The master encodes each Event in RecordIO format, i.e., string representation of length of the event in bytes followed by JSON or binary Protobuf encoded event.
The following events are currently sent by the master. The canonical source of this information is at master.proto. Note that when sending JSON encoded events, master encodes raw bytes in Base64 and strings in UTF-8.
SUBSCRIBED
The first event sent by the master when a client sends a SUBSCRIBE
request on the persistent connection. This includes a snapshot of the cluster state. See SUBSCRIBE
above for details. Subsequent changes to the cluster state can result in more events (currently only TASK_ADDED
and TASK_UPDATED
are supported).
TASK_ADDED
Sent whenever a task has been added to the master. This can happen either when a new task launch is processed by the master or when an agent re-registers with a failed over master.
TASK_ADDED Event (JSON)
<event-length>
{
"type": "TASK_ADDED",
"task_added": {
"task": {
"name": "dummy-task",
"task_id": {
"value": "d40f3f3e-bbe3-44af-a230-4cb1eae72f67"
},
"agent_id": {
"value": "f1c9cdc5-195e-41a7-a0d7-adaa9af07f81"
},
"command": {
"value": "sleep",
"arguments": [
"100"
]
}
}
}
}
TASK_UPDATED
Sent whenever the state of the task changes in the master. This can happen when a status update is received or generated by the master. Since status updates are retried by the agent, not all status updates received by the master result in the event being sent.
TASK_UPDATED Event (JSON)
<event-length>
{
"type": "TASK_UPDATED",
"task_updated": {
"task_id": {
"value": "42154f1b-adcd-4421-bf13-8bd11adfafaf"
},
"framework_id": {
"value": "49154f1b-8cf6-4421-bf13-8bd11dccd1f1"
},
"agent_id": {
"value": "2915adf-8aff-4421-bf13-afdafaf1f1"
},
"executor_id": {
"value": "adfaf-adff-2421-bf13-adf23tafa21"
},
"state" : "TASK_RUNNING"
}
}
Agent API
This API contains all the calls accepted by the agent. The canonical source of this information is agent.proto (NOTE: The protobuf definitions are subject to change before the beta API is finalized). These calls are typically made by human operators, tooling or services (e.g., Mesos WebUI). While executors can make these calls as well, it is expected for those to use the Executor HTTP API.
Calls To Agent And Responses
Below are the example calls to agent that result in synchronous responses from the API.
GET_HEALTH
Request and Response are similar to GET_HEALTH call to master.
GET_FLAGS
This call retrieves the agent’s flag configuration.
GET_FLAGS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "GET_FLAGS"
}
GET_FLAGS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_FLAGS",
"get_flags": {
"flags": [
{
"name": "acls",
"value": ""
},
{
"name": "appc_simple_discovery_uri_prefix",
"value": "http://"
},
{
"name": "appc_store_dir",
"value": "/tmp/mesos/store/appc"
},
{
"name": "authenticate_http_readonly",
"value": "true"
},
{
"name": "authenticate_http_readwrite",
"value": "true"
},
{
"name": "authenticatee",
"value": "crammd5"
},
{
"name": "authentication_backoff_factor",
"value": "1secs"
},
{
"name": "authorizer",
"value": "local"
},
{
"name": "cgroups_cpu_enable_pids_and_tids_count",
"value": "false"
},
{
"name": "cgroups_enable_cfs",
"value": "false"
},
{
"name": "cgroups_hierarchy",
"value": "/sys/fs/cgroup"
},
{
"name": "cgroups_limit_swap",
"value": "false"
},
{
"name": "cgroups_root",
"value": "mesos"
},
{
"name": "container_disk_watch_interval",
"value": "15secs"
},
{
"name": "containerizers",
"value": "mesos"
},
{
"name": "credential",
"value": "/tmp/directory/credential"
},
{
"name": "default_role",
"value": "*"
},
{
"name": "disk_watch_interval",
"value": "1mins"
},
{
"name": "docker",
"value": "docker"
},
{
"name": "docker_kill_orphans",
"value": "true"
},
{
"name": "docker_registry",
"value": "https://registry-1.docker.io"
},
{
"name": "docker_remove_delay",
"value": "6hrs"
},
{
"name": "docker_socket",
"value": "/var/run/docker.sock"
},
{
"name": "docker_stop_timeout",
"value": "0ns"
},
{
"name": "docker_store_dir",
"value": "/tmp/mesos/store/docker"
},
{
"name": "docker_volume_checkpoint_dir",
"value": "/var/run/mesos/isolators/docker/volume"
},
{
"name": "enforce_container_disk_quota",
"value": "false"
},
{
"name": "executor_registration_timeout",
"value": "1mins"
},
{
"name": "executor_shutdown_grace_period",
"value": "5secs"
},
{
"name": "fetcher_cache_dir",
"value": "/tmp/directory/fetch"
},
{
"name": "fetcher_cache_size",
"value": "2GB"
},
{
"name": "frameworks_home",
"value": ""
},
{
"name": "gc_delay",
"value": "1weeks"
},
{
"name": "gc_disk_headroom",
"value": "0.1"
},
{
"name": "hadoop_home",
"value": ""
},
{
"name": "help",
"value": "false"
},
{
"name": "hostname_lookup",
"value": "true"
},
{
"name": "http_authenticators",
"value": "basic"
},
{
"name": "http_command_executor",
"value": "false"
},
{
"name": "http_credentials",
"value": "/tmp/directory/http_credentials"
},
{
"name": "image_provisioner_backend",
"value": "copy"
},
{
"name": "initialize_driver_logging",
"value": "true"
},
{
"name": "isolation",
"value": "posix/cpu,posix/mem"
},
{
"name": "launcher_dir",
"value": "/my-directory"
},
{
"name": "logbufsecs",
"value": "0"
},
{
"name": "logging_level",
"value": "INFO"
},
{
"name": "oversubscribed_resources_interval",
"value": "15secs"
},
{
"name": "perf_duration",
"value": "10secs"
},
{
"name": "perf_interval",
"value": "1mins"
},
{
"name": "qos_correction_interval_min",
"value": "0ns"
},
{
"name": "quiet",
"value": "false"
},
{
"name": "recover",
"value": "reconnect"
},
{
"name": "recovery_timeout",
"value": "15mins"
},
{
"name": "registration_backoff_factor",
"value": "10ms"
},
{
"name": "resources",
"value": "cpus:2;gpus:0;mem:1024;disk:1024;ports:[31000-32000]"
},
{
"name": "revocable_cpu_low_priority",
"value": "true"
},
{
"name": "sandbox_directory",
"value": "/mnt/mesos/sandbox"
},
{
"name": "strict",
"value": "true"
},
{
"name": "switch_user",
"value": "true"
},
{
"name": "systemd_enable_support",
"value": "true"
},
{
"name": "systemd_runtime_directory",
"value": "/run/systemd/system"
},
{
"name": "version",
"value": "false"
},
{
"name": "work_dir",
"value": "/tmp/directory"
}
]
}
}
GET_VERSION
Request and Response are similar to GET_VERSION call to master.
GET_METRICS
Request and Response are similar to GET_METRICS call to master.
GET_LOGGING_LEVEL
Request and Response are similar to GET_LOGGING_LEVEL call to master.
SET_LOGGING_LEVEL
Request and Response are similar to SET_LOGGING_LEVEL call to master.
LIST_FILES
Request and Response are similar to LIST_FILES call to master.
READ_FILE
Request and Response are similar to READ_FILE call to master.
GET_STATE
This call retrieves full state of the agent i.e. information about the tasks, frameworks and executors running in the cluster.
GET_STATE HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "GET_STATE"
}
GET_STATE HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_STATE",
"get_state": {
"get_executors": {
"executors": [
{
"executor_info": {
"command": {
"arguments": [
"mesos-executor",
"--launcher_dir=/my-directory"
],
"shell": false,
"value": "my-directory"
},
"executor_id": {
"value": "1"
},
"framework_id": {
"value": "8903b84e-112f-4b5f-aad3-7366f6ae7ecc-0000"
},
"name": "Command Executor (Task: 1) (Command: sh -c 'sleep 1000')",
"resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 0.1
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 32.0
},
"type": "SCALAR"
}
],
"source": "1"
}
}
]
},
"get_frameworks": {
"frameworks": [
{
"framework_info": {
"checkpoint": false,
"failover_timeout": 0.0,
"hostname": "myhost",
"id": {
"value": "8903b84e-112f-4b5f-aad3-7366f6ae7ecc-0000"
},
"name": "default",
"principal": "my-principal",
"role": "*",
"user": "root"
}
}
]
},
"get_tasks": {
"launched_tasks": [
{
"agent_id": {
"value": "8903b84e-112f-4b5f-aad3-7366f6ae7ecc-S0"
},
"framework_id": {
"value": "8903b84e-112f-4b5f-aad3-7366f6ae7ecc-0000"
},
"name": "",
"resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 2.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "disk",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 32000
}
]
},
"role": "*",
"type": "RANGES"
}
],
"state": "TASK_RUNNING",
"status_update_state": "TASK_RUNNING",
"status_update_uuid": "2qlPayEJRJGPeaWlahI+WA==",
"statuses": [
{
"agent_id": {
"value": "8903b84e-112f-4b5f-aad3-7366f6ae7ecc-S0"
},
"container_status": {
"executor_pid": 19846,
"network_infos": [
{
"ip_addresses": [
{
"ip_address": "<IP_ADDRESS>"
}
]
}
]
},
"executor_id": {
"value": "1"
},
"source": "SOURCE_EXECUTOR",
"state": "TASK_RUNNING",
"task_id": {
"value": "1"
},
"timestamp":<PHONE_NUMBER>.48066,
"uuid": "2qlPayEJRJGPeaWlahI+WA=="
}
],
"task_id": {
"value": "1"
}
}
]
}
}
}
GET_CONTAINERS
This call retrieves information about containers running on this agent. It contains ContainerStatus and ResourceStatistics along with some metadata of the containers.
GET_CONTAINERS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "GET_CONTAINERS"
}
GET_CONTAINERS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_CONTAINERS",
"get_containers": {
"containers": [
{
"container_id": {
"value": "f0f97041-1860-4b4a-b279-91fec4e0ebd8"
},
"container_status": {
"network_infos": [
{
"ip_addresses": [
{
"ip_address": "<IP_ADDRESS>"
}
]
}
]
},
"executor_id": {
"value": "default"
},
"executor_name": "",
"framework_id": {
"value": "cbe3c0f1-5655-4110-bc01-ae658a9dbab9-0000"
},
"resource_statistics": {
"mem_limit_bytes": 2048,
"timestamp": 0.0
}
}
]
}
}
GET_FRAMEWORKS
This call retrieves information about all the frameworks known to the agent.
GET_FRAMEWORKS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "GET_FRAMEWORKS"
}
GET_FRAMEWORKS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_FRAMEWORKS",
"get_frameworks": {
"frameworks": [
{
"framework_info": {
"checkpoint": false,
"failover_timeout": 0.0,
"hostname": "myhost",
"id": {
"value": "17e8c0d4-5ee2-4937-bc1c-06c39eddb004-0000"
},
"name": "default",
"principal": "my-principal",
"role": "*",
"user": "root"
}
}
]
}
}
GET_EXECUTORS
This call retrieves information about all the executors known to the agent.
GET_EXECUTORS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "GET_EXECUTORS"
}
GET_EXECUTORS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_EXECUTORS",
"get_executors": {
"executors": [
{
"executor_info": {
"command": {
"arguments": [
"mesos-executor",
"--launcher_dir=/my-directory"
],
"shell": false,
"value": "/my-directory"
},
"executor_id": {
"value": "1"
},
"framework_id": {
"value": "5ffcfa79-00c4-4d93-94a3-2f3844126fd9-0000"
},
"name": "Command Executor (Task: 1) (Command: sh -c 'sleep 1000')",
"resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 0.1
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 32.0
},
"type": "SCALAR"
}
],
"source": "1"
}
}
]
}
}
GET_TASKS
This call retrieves information about all the tasks known to the agent.
GET_TASKS HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "GET_TASKS"
}
GET_TASKS HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "GET_TASKS",
"get_tasks": {
"launched_tasks": [
{
"agent_id": {
"value": "70770d61-d666-4547-a808-787f63b00cf2-S0"
},
"framework_id": {
"value": "70770d61-d666-4547-a808-787f63b00cf2-0000"
},
"name": "",
"resources": [
{
"name": "cpus",
"role": "*",
"scalar": {
"value": 2.0
},
"type": "SCALAR"
},
{
"name": "mem",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "disk",
"role": "*",
"scalar": {
"value": 1024.0
},
"type": "SCALAR"
},
{
"name": "ports",
"ranges": {
"range": [
{
"begin": 31000,
"end": 32000
}
]
},
"role": "*",
"type": "RANGES"
}
],
"state": "TASK_RUNNING",
"status_update_state": "TASK_RUNNING",
"status_update_uuid": "0RC72iyRTQefoUL0ClcL0g==",
"statuses": [
{
"agent_id": {
"value": "70770d61-d666-4547-a808-787f63b00cf2-S0"
},
"container_status": {
"executor_pid": 27140,
"network_infos": [
{
"ip_addresses": [
{
"ip_address": "<IP_ADDRESS>"
}
]
}
]
},
"executor_id": {
"value": "1"
},
"source": "SOURCE_EXECUTOR",
"state": "TASK_RUNNING",
"task_id": {
"value": "1"
},
"timestamp":<PHONE_NUMBER>.21577,
"uuid": "0RC72iyRTQefoUL0ClcL0g=="
}
],
"task_id": {
"value": "1"
}
}
]
}
}
LAUNCH_NESTED_CONTAINER
This call launches a nested container. Any authorized entity, including the executor itself, its tasks, or the operator can use this API to launch a nested container.
LAUNCH_NESTED_CONTAINER HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "LAUNCH_NESTED_CONTAINER",
"launch_nested_container": {
"container_id": {
"parent": {
"parent": {
"value": "27d44d12-ce9e-455f-9282-f580d8b56cad"
},
"value": "f5015d94-8093-477d-9551-9452acfad495"
},
"value": "3192b9d1-db71-4699-ae25-e28dfbf42de1"
},
"command": {
"environment": {
"variables": [
{
"name": "ENV_VAR_KEY",
"type": "VALUE",
"value": "env_var_value"
}
]
},
"shell": true,
"value": "exit 0"
}
}
}
LAUNCH_NESTED_CONTAINER HTTP Response (JSON):
HTTP/1.1 200 OK
WAIT_NESTED_CONTAINER
This call waits for a nested container to terminate or exit. Any authorized entity, including the executor itself, its tasks, or the operator can use this API to wait on a nested container.
WAIT_NESTED_CONTAINER HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "WAIT_NESTED_CONTAINER",
"wait_nested_container": {
"container_id": {
"parent": {
"value": "6643b4be-583a-4dc3-bf23-a1ffb26dd452"
},
"value": "3192b9d1-db71-4699-ae25-e28dfbf42de1"
}
}
}
WAIT_NESTED_CONTAINER HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "WAIT_NESTED_CONTAINER",
"wait_nested_container": {
"exit_status": 0
}
}
KILL_NESTED_CONTAINER
This call initiates the destruction of a nested container. Any authorized entity, including the executor itself, its tasks, or the operator can use this API to kill a nested container.
KILL_NESTED_CONTAINER HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "KILL_NESTED_CONTAINER",
"kill_nested_container": {
"container_id": {
"parent": {
"value": "62d15977-acd4-4167-ae08-2e3738dc3ad6"
},
"value": "3192b9d1-db71-4699-ae25-e28dfbf42de1"
}
}
}
KILL_NESTED_CONTAINER HTTP Response (JSON):
HTTP/1.1 200 OK
LAUNCH_NESTED_CONTAINER_SESSION
This call launches a nested container whose lifetime is tied to the lifetime of the HTTP call establishing this connection. The STDOUT and STDERR of the nested container is streamed back to the client so long as the connection is active.
LAUNCH_NESTED_CONTAINER_SESSION HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/recordio
Message-Accept: application/json
{
"type": "LAUNCH_NESTED_CONTAINER_SESSION",
"launch_nested_container_session": {
"container_id": {
"parent": {
"parent": {
"value": "bde04877-cb26-4277-976e-3ecf0c02e76b"
},
"value": "134bae93-cf5c-4938-87bf-f779bfcd0092"
},
"value": "e193a755-8528-4673-a05b-2cc2a01a8b94"
},
"command": {
"environment": {
"variables": [
{
"name": "ENV_VAR_KEY",
"type": "VALUE",
"value": "env_var_value"
}
]
},
"shell": true,
"value": "while [ true ]; do echo $(date); sleep 1; done"
}
}
}
LAUNCH_NESTED_CONTAINER_SESSION HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/recordio
Message-Content-Type: application/json
90
{
"type":"DATA",
"data": {
"type":"STDOUT",
"data": "TW9uIEZlYiAyNyAwNzozOTozOCBVVEMgMjAxNwo="
}
}90
{
"type":"DATA",
"data": {
"type":"STDOUT",
"data": "TW9uIEZlYiAyNyAwNzozOTozOSBVVEMgMjAxNwo="
}
}90
{
"type":"DATA",
"data": {
"type":"STDERR",
"data": "TW9uIEZlYiAyNyAwNzozOTo0MCBVVEMgMjAxNwo="
}
}
...
ATTACH_CONTAINER_INPUT
This call attaches to the STDIN of the primary process of a container and streams input to it. This call can only be made against containers that have been launched with an associated IOSwitchboard (i.e. nested containers launched via a LAUNCH_NESTED_CONTAINER_SESSION call or normal containers launched with a TTYInfo in their ContainerInfo). Only one ATTACH_CONTAINER_INPUT call can be active for a given container at a time. Subsequent attempts to attach will fail.
The first message sent over an ATTACH_CONTAINER_INPUT stream must be of type CONTAINER_ID and contain the ContainerID of the container being attached to. Subsequent messages must be of type PROCESS_IO, but they may contain subtypes of either DATA or CONTROL. DATA messages must be of type STDIN and contain the actual data to stream to the STDIN of the container being attached to. Currently, the only valid CONTROL message sends a heartbeat to keep the connection alive. We may add more CONTROL messages in the future.
ATTACH_CONTAINER_INPUT HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/recordio
Message-Content-Type: application/json
Accept: application/json
214
{
"type": "ATTACH_CONTAINER_INPUT",
"attach_container_input": {
"type": "CONTAINER_ID",
"container_id": {
"value": "da737efb-a9d4-4622-84ef-f55eb07b861a"
}
}
}163
{
"type": "ATTACH_CONTAINER_INPUT",
"attach_container_input": {
"type": "PROCESS_IO",
"process_io": {
"type": "DATA",
"data": {
"type": "STDIN",
"data": "dGVzdAo="
}
}
}
}210
{
"type":
"ATTACH_CONTAINER_INPUT",
"attach_container_input": {
"type": "PROCESS_IO",
"process_io": {
"type": "CONTROL",
"control": {
"type": "HEARTBEAT",
"heartbeat": {
"interval": {
"nanoseconds":<PHONE_NUMBER>0
}
}
}
}
}
}
...
ATTACH_CONTAINER_INPUT HTTP Response (JSON):
HTTP/1.1 200 OK
ATTACH_CONTAINER_OUTPUT
This call attaches to the STDOUT and STDERR of the primary process of a container and streams its output back to the client. This call can only be made against containers that have been launched with an associated IOSwitchboard (i.e. nested containers launched via a LAUNCH_NESTED_CONTAINER_SESSION call or normal containers launched with a TTYInfo in their ContainerInfo field). Multiple ATTACH_CONTAINER_OUTPUT calls can be active for a given container at once.
ATTACH_CONTAINER_OUTPUT HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/recordio
Message-Accept: application/json
{
"type": "ATTACH_CONTAINER_OUTPUT",
"attach_container_output": {
"container_id": {
"value": "e193a755-8528-4673-a05b-2cc2a01a8b94"
}
}
}
ATTACH_CONTAINER_OUTPUT HTTP Response (JSON):
HTTP/1.1 200 OK
Content-Type: application/recordio
Message-Content-Type: application/json
90
{
"type":"DATA",
"data": {
"type":"STDOUT",
"data": "TW9uIEZlYiAyNyAwNzozOTozOCBVVEMgMjAxNwo="
}
}90
{
"type":"DATA",
"data": {
"type":"STDOUT",
"data": "TW9uIEZlYiAyNyAwNzozOTozOSBVVEMgMjAxNwo="
}
}90
{
"type":"DATA",
"data": {
"type":"STDERR",
"data": "TW9uIEZlYiAyNyAwNzozOTo0MCBVVEMgMjAxNwo="
}
}
...
REMOVE_NESTED_CONTAINER
This call triggers the removal of a nested container and its artifacts (e.g., the sandbox and runtime directories). This call can only be made against containers that have already terminated, and whose parent container has not been destroyed. Any authorized entity, including the executor itself, its tasks, or the operator can use this API call.
REMOVE_NESTED_CONTAINER HTTP Request (JSON):
POST /api/v1 HTTP/1.1
Host: agenthost:5051
Content-Type: application/json
Accept: application/json
{
"type": "REMOVE_NESTED_CONTAINER",
"remove_nested_container": {
"container_id": {
"parent": {
"value": "6643b4be-583a-4dc3-bf23-a1ffb26dd452"
},
"value": "3192b9d1-db71-4699-ae25-e28dfbf42de1"
}
}
}
REMOVE_NESTED_CONTAINER HTTP Response (JSON):
HTTP/1.1 200 OK


Quotes
-
The scientist is not a person who gives the right answers, he’s one who asks the right questions.
Claude Lévi-Strauss -
The most exciting phrase to hear in science, the one that heralds new discoveries, is not ‘Eureka!’ (I found it!) but ‘That’s funny…’
Isaac Asimov -
In theory, there is no difference between theory and practice. But, in practice, there is.
Jan L. A. van de Snepscheut -
Contrary to what Asimov says, the most exciting phrase in science, the one that heralds new discoveries, is not ‘Eureka!’ or ‘That’s funny…,’ it’s ‘Your research grant has been approved.’
John Alejandro King -
A theory is something nobody believes, except the person who made it. An experiment is something everybody believes, except the person who made it.
Attributed to Albert Einstein -
The purpose of models is not to fit the data but to sharpen the questions.
Samuel Karlin -
Research is what I’m doing when I don’t know what I’m doing.
Wernher von Braun -
Nothing is more practical than a good theory.
Kurt Lewin -
Just as there are odors that dogs can smell and we cannot, as well as sounds that dogs can hear and we cannot, so too there are wavelengths of light we cannot see and flavors we cannot taste. Why then, given our brains wired the way they are, does the remark, “Perhaps there are thoughts we cannot think,” surprise you?
Richard Hamming -
An expert is a person who has made all the mistakes that can be made in a very narrow field.
Niels Bohr -
An expert is one who knows more and more about less and less until he knows absolutely everything about nothing.
Nicholas Butler -
Essentially, all models are wrong, but some are useful.
George E. P. Box -
Theory is when you know everything but nothing works. Praxis is when everything works but no one knows why. In our lab, theory and praxis are combined: nothing works and no one know why.
Unknown -
The great tragedy of Science — the slaying of a beautiful hypothesis by an ugly fact.

Mark Watney -
The fact that we live at the bottom of a deep gravity well, on the surface of a gas covered planet going around a nuclear fireball 90 million miles away and think this to be normal is obviously some indication of how skewed our perspective tends to be.

Ernest Cline, Ready Player One -
When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.
Sherlock Holmes -
With four parameters I can fit an elephant, and with five I can make him wiggle his trunk.
John von Neumann -
The purpose of computing is insight, not numbers.
Richard Hamming -
The most important thing about an equation is all the quantities that don’t appear in it; once we know what the essentials are, figuring out how they depend on each other is often the easier part.
Pedro Domingos, The Master Algorithm -
Thermodynamics is easy – I’ve learned it many times.
Harvey S. Leff -
Far better an approximate answer to the right question, which is often vague, than an exact answer to the wrong question, which can always be made precise.
John Tukey, The future of data analysis -
An article about computational result is advertising, not scholarship. The actual scholarship is the full software environment, code and data, that produced the result.
Buckheit and Donoho (1995) -
”Forty-two!” yelled Loonquawl. ”Is that all you’ve got to show for seven and a half million years’ work?”
”I checked it very thoroughly,” said the computer, ”and that quite definitely is the answer. I think the problem, to be quite honest with you, is that you’ve never actually known what the question is.”
”But it was the Great Question! The Ultimate Question of Life, the Universe and Everything!” howled Loonquawl.
”Yes,” said Deep Thought with the air of one who suffers fools gladly, ”but what actually is it?”
A slow stupefied silence crept over the men as they stared at the computer and then at each other.
”Well, you know, it’s just Everything … Everything … ” offered Phouchg weakly.
”Exactly!” said Deep Thought. ”So once you do know what the question actually is, you’ll know what the answer means.”
Douglas Adams, The Hitchiker’s Guide to the Galaxy -
Computers are useless. They can only give you answers.
Pablo Picasso -
The true and only goal of science is to reveal unity rather than mechanism.
Henri Poincaré -
One of the principal objects of theoretical research is to find the point of view from which the subject appears in the greatest simplicity.
Josiah Willard Gibbs -
The future is already here — it’s just not very evenly distributed.
William Gibson -
True science teaches, above all, to doubt and to be ignorant.
Miguel de Unamuno -
If you are the smartest person in the room, then you are in the wrong room. Unknown
-
Dividing one number by another is mere computation; knowing what to divide by what is mathematics.
Jordan Ellenberg, How Not to Be Wrong: The Power of Mathematical Thinking -
I’ve been in this argument a thousand times. Won them all and convinced nobody.
Amos Tversky, on the hot hand fallacy -
Mathematics is the extension of common sense by other means.
Jordan Ellenberg, How Not to Be Wrong: The Power of Mathematical Thinking -
If I had more time, I would have written a shorter letter.
Blaise Pascal -
I am going to give what I will call an elementary demonstration. But elementary does not mean easy to understand. Elementary means that very little is required to know ahead of time in order to understand it, except to have an infinite amount of intelligence. There may be a large number of steps that hard to follow, but to each does not require already knowing the calculus or Fourier transforms.
Richard P. Feynman -
In this section a mathematical model of the growing embryo will be described. This model will be a simplification and an idealization, and consequently a falsification. It is to be hoped that the features retained for discussion are those of greatest importance in the present state of knowledge.
Alan Turing, The Chemical Basis of Morphogenesis -
Problems worthy of attack prove their worth by hitting back.
Piet Hein -
Art is solving problems that cannot be formulated before they have been solved. The shaping of the question is part of the answer.
Piet Hein -
Physics is the simplest of all the sciences, and fundamental physics—the study of the basic pieces of reality at the deepest level—is the simplest of all. Not “simple” in the sense that the homework problems are easy, but simple in the sense that Galileo’s trick of ignoring friction and air resistance makes our lives easier. The reason why physics classes seem so hard is not because physics is so hard—it’s because we understand so much of it that there’s a lot to learn, and that’s because it’s fundamentally pretty simple.
Sean Carroll, The Big Picture -
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
Edsger W. Dijkstra -
The fundamental role of a teacher is not to deliver information. It is guide the social process of learning. The job of a teacher is to inspire, to challenge, to excite their students to want to learn. Yes, they also do explain and demonstrate and show things, but fundamentally that is beside the point. The most important thing a teacher does is make every student feel like they are important, to make them feel accountable for doing the work of learning.
Derek Alexander Muller, youtube -
What is the first business of one who practices philosophy? To get rid of self-conceit. For it is impossible for anyone to begin to learn that which he thinks he already knows.
Epictetus -
Confusion is a feeling that precedes learning something. It means you should pay closer attention, not disengage.
The Stoic Emperor, twitter -
Let no one ignorant of geometry enter here.
Said to be engraved on the door of Plato’s Academy, the oldest recorded entrance requirement of a college -
We don’t use heuristics just because they are fast and efficient. We use them because they are less precise and thus less vulnerable to be misled by noise. A good heuristic is to distrust whoever adds or requires unnecessary precision. Another good heuristic is to distrust whoever thinks that precision always correlates with correctness.
Luca Dellanna, twitter -
The comments aren’t there to explain the code to the programmers, the code is there to explain the comments to the computer.
Andy Harris, How to begin thinking like a programmer


@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Import(value=IntegrationManagementConfiguration.class) public @interface EnableIntegrationManagement
The resulting IntegrationManagementConfigurer
bean is defined under the name integrationManagementConfigurer
.
| Modifier and Type | Optional Element and Description |
|---|---|
String[] |
countsEnabled
A list of simple patterns for component names for which message counts will be
enabled (defaults to '*').
|
String |
defaultCountsEnabled
The default setting for enabling counts when a bean name is not matched by
countsEnabled . |
String |
defaultLoggingEnabled
Use to disable all logging in the main message flow in framework components.
|
String |
defaultStatsEnabled
The default setting for enabling statistics when a bean name is not matched by
statsEnabled . |
String |
metricsFactory
The bean name of a
MetricsFactory . |
String[] |
statsEnabled
A list of simple patterns for component names for which message statistics will be
enabled (response times, rates etc), as well as counts (a positive match here
overrides
countsEnabled , you can't have statistics without
counts). |
public abstract String[] countsEnabled
statsEnabled
which is additional
functionality over simple counts. If a pattern starts with `!`, counts are disabled
for matches. For components that match multiple patterns, the first pattern wins.
Disabling counts at runtime also disables stats.
Defaults to no components, unless JMX is enabled in which case, defaults to all
components. Overrides defaultCountsEnabled()
for matching bean names.public abstract String[] statsEnabled
countsEnabled
, you can't have statistics without
counts). (defaults to '*'). Enables
statistics for those components that support statistics (channels - when sending,
message handlers, etc). This is the initial setting only, individual components can
have stats enabled/disabled at runtime. If a pattern starts with `!`, stats (and
counts) are disabled for matches. Note: this means that '!foo' here will disable
stats and counts for 'foo' even if counts are enabled for 'foo' in
countsEnabled
. For components
that match multiple patterns, the first pattern wins. Enabling stats at runtime
also enables counts.
Defaults to no components, unless JMX is enabled in which case, defaults to all
components.public abstract String defaultCountsEnabled
countsEnabled
.public abstract String defaultStatsEnabled
statsEnabled
.public abstract String defaultLoggingEnabled
It has been found that in high-volume messaging environments, calls to methods such as
logger.isDebuggingEnabled()
can be quite expensive and account for an inordinate amount of CPU
time.
Set this to false to disable logging by default in all framework components that implement
IntegrationManagement
(channels, message handlers etc). This turns off logging such as
"PreSend on channel", "Received message" etc.
After the context is initialized, individual components can have their setting changed by invoking
IntegrationManagement.setLoggingEnabled(boolean)
.
public abstract String metricsFactory
MetricsFactory
. The DefaultMetricsFactory
is used
if omitted.


The events are raised when the size or position of a view changes due to the chart
reader's interaction with the chart. The AxisViewChanged event is raised when a view is changed.
The AxisViewChanging event is raised before a view is redrawn.


pnmnlfilt(1) pnmnlfilt(1) NAME pnmnlfilt - non-linear filters: smooth, alpha trim mean, optimal estima‐ tion smoothing, edge enhancement. SYNOPSIS pnmnlfilt alpha radius [pnmfile] DESCRIPTION pnmnlfilt produces an output image where the pixels are a summary of mul‐ tiple pixels near the corresponding location in an input image. This program works on multi-image streams. This is something of a swiss army knife filter. It has 3 distinct operat‐ ing modes. In all of the modes each pixel in the image is examined and processed according to it and its surrounding pixels values. Rather than using the 9 pixels in a 3x3 block, 7 hexagonal area samples are taken, the size of the hexagons being controlled by the radius parameter. A radius value of 0.3333 means that the 7 hexagons exactly fit into the center pixel (ie. there will be no filtering effect). A radius value of 1.0 means that the 7 hexagons exactly fit a 3x3 pixel array. Alpha trimmed mean filter. (0.0 <= alpha <= 0.5) The value of the center pixel will be replaced by the mean of the 7 hexagon values, but the 7 values are sorted by size and the top and bot‐ tom alpha portion of the 7 are excluded from the mean. This implies that an alpha value of 0.0 gives the same sort of output as a normal convolu‐ tion (ie. averaging or smoothing filter), where radius will determine the "strength" of the filter. A good value to start from for subtle filtering is alpha = 0.0, radius = 0.55 For a more blatant effect, try alpha 0.0 and radius 1.0 An alpha value of 0.5 will cause the median value of the 7 hexagons to be used to replace the center pixel value. This sort of filter is good for eliminating "pop" or single pixel noise from an image without spreading the noise out or smudging features on the image. Judicious use of the radius parameter will fine tune the filtering. Intermediate values of alpha give effects somewhere between smoothing and "pop" noise reduction. For subtle filtering try starting with values of alpha = 0.4, radius = 0.6 For a more blatant effect try alpha = 0.5, radius = 1.0 Optimal estimation smoothing. (1.0 <= alpha <= 2.0) This type of filter applies a smoothing filter adaptively over the image. For each pixel the variance of the surrounding hexagon values is calcu‐ lated, and the amount of smoothing is made inversely proportional to it. The idea is that if the variance is small then it is due to noise in the image, while if the variance is large, it is because of "wanted" image features. As usual the radius parameter controls the effective radius, but it probably advisable to leave the radius between 0.8 and 1.0 for the variance calculation to be meaningful. The alpha parameter sets the noise threshold, over which less smoothing will be done. This means that small values of alpha will give the most subtle filtering effect, while large values will tend to smooth all parts of the image. You could start with values like alpha = 1.2, radius = 1.0 and try increasing or decreas‐ ing the alpha parameter to get the desired effect. This type of filter is best for filtering out dithering noise in both bitmap and color images. Edge enhancement. (-0.1 >= alpha >= -0.9) This is the opposite type of filter to the smoothing filter. It enhances edges. The alpha parameter controls the amount of edge enhancement, from subtle (-0.1) to blatant (-0.9). The radius parameter controls the effec‐ tive radius as usual, but useful values are between 0.5 and 0.9. Try starting with values of alpha = 0.3, radius = 0.8 Combination use. The various modes of pnmnlfilt can be used one after the other to get the desired result. For instance to turn a monochrome dithered image into a grayscale image you could try one or two passes of the smoothing filter, followed by a pass of the optimal estimation filter, then some subtle edge enhancement. Note that using edge enhancement is only likely to be useful after one of the non-linear filters (alpha trimmed mean or optimal estimation filter), as edge enhancement is the direct opposite of smooth‐ ing. For reducing color quantization noise in images (ie. turning .gif files back into 24 bit files) you could try a pass of the optimal estimation filter (alpha 1.2, radius 1.0), a pass of the median filter (alpha 0.5, radius 0.55), and possibly a pass of the edge enhancement filter. Sev‐ eral passes of the optimal estimation filter with declining alpha values are more effective than a single pass with a large alpha value. As usual, there is a tradeoff between filtering effectiveness and loosing detail. Experimentation is encouraged. References: The alpha-trimmed mean filter is based on the description in IEEE CG&A May 1990 Page 23 by Mark E. Lee and Richard A. Redner, and has been enhanced to allow continuous alpha adjustment. The optimal estimation filter is taken from an article "Converting Dithered Images Back to Gray Scale" by Allen Stenger, Dr Dobb's Journal, November 1992, and this article references "Digital Image Enhancement and Noise Filtering by Use of Local Statistics", Jong-Sen Lee, IEEE Transac‐ tions on Pattern Analysis and Machine Intelligence, March 1980. The edge enhancement details are from pgmenhance(1), which is taken from Philip R. Thompson's "xim" program, which in turn took it from section 6 of "Digital Halftones by Dot Diffusion", D. E. Knuth, ACM Transaction on Graphics Vol. 6, No. 4, October 1987, which in turn got it from two 1976 papers by J. F. Jarvis et. al. SEE ALSO pgmenhance(1), pnmconvol(1), pnm(5) BUGS Integers and tables may overflow if PPM_MAXMAXVAL is greater than 255. AUTHOR Graeme W. Gill<EMAIL_ADDRESS>5 February 1993 pnmnlfilt(1)


halfplayer V1.1
Cream Of The Earth (Romeo Knight/ TRSRI)
In The Kitchen (4mat/Anarchy)
How To Skin A Cat (Melon Dezign)
One Finger (The Fox II)
Kurkkukipu (vesuri/da jormas)
Chip Set I (halfbyte/pandemon!um)
You can also drop ProTracker files here!
STOP
PLAY


--- layout: post authors: ["Onno Broekmans"] title: Amsterdam Bootcamp date: 2013-06-06 time: "09:00:00" tags: ["Vrije Universiteit"] ---
What started out as an unexpected proposal from Greg became very much alive on May 2nd, as 40 physicists poured into the classroom at VU University Amsterdam and started up their laptops. After introducing the teachers (Stefano Cozzini and Justin Ely) and the helpers, we were off: the very first Software Carpentry bootcamp in the Netherlands!
In the months leading up to the bootcamp, I had been surprised at the sense of timeliness the bootcamp generated. People here clearly see the need for computational training, most importantly young scientists themselves—available tickets were mostly gone within a week.
The program of the workshop had been announced as being geared towards teaching you "how to build better code in less time". It included the usual Software Carpentry topics: the UNIX shell, Python programming, version control (Subversion, by popular request), and some data management and matplotlib.
During the two days of the bootcamp, Justin and Stefano did a great job at teaching these topics, mixing interactive sessions with some more theoretical material on software lifecycles. Especially the session on Subversion was a big hit: people made over 80 commits to our shared repository within an hour, and seemed to grasp the material well. (Today, an attendee told me he's actually using it for his work now).
Some other things that worked well included:
And yet, I'm not sure the bootcamp was a definite success overall. Looking back, and reading the feedback, we hit two snags.
The first will be familiar to Software Carpentry regulars: we had a large, inhomogeneous group. This made it very hard to teach everyone something new, while at the same time not losing anyone. Especially while teaching Python, we stuck too much to tutorial-level topics. This didn't leave enough time for more advanced topics such as program structuring, debugging, or object-oriented programming.
Secondly, and more importantly, I'm not sure we kept our promise of teaching "how to build better code in less time". Sure, judging from the feedback, some people clearly got useful skills out of the workshop. But quotes like this one…
The bootcamp was advertised as saving time writing code. I really wanted to learn that, and I don't think I did see anything saving time.
…and this one…
I went looking for strategy in software building, learning how to make a plan and follow it together with other people. Sadly the course stayed in a much more introductory stage to particular tools.
…show that this was not enough.
Could we have done better? I think we could have, if we'd put more effort into teaching materials in a useful context. This was one of the reasons why the version control topic was a success: people went through real-life scenarios, got their hands dirty, and learnt something useful that way. Doing something similar for Python programming—letting people work on a real program, while learning about structure, documentation, refactoring, etc.—would have made a difference. Many attendees are longing for such realistic examples.
And, of course, if you're organizing a bootcamp: think twice about the type of audience you're inviting. A generic mix of everything from novice to expert will make teaching the bootcamp more difficult. That's certainly something I'm going to keep in mind for next time.


This Java snippet will authenticate with a Google Account, use the SDK to check is a point named foo exists, if not the point is created. Then 100 random values are recorded with the current time.
String email =<EMAIL_ADDRESS>String password = "pa$$word" String url = "appid.appspot.com" String pointName = "foo"; GoogleUser user = UserFactory.createGoogleUser(email, password); Random r = new Random(); NimbitsClient client = NimbitsClientFactory.getInstance(user, url); Point p = client.getPoint(pointName); if (p == null) { //point does not exist, let's create it. p = client.addPoint(pointName); } // record 100 random values for (int i = 0; i < 100; i++) { client.recordValue(pointName, r.nextDouble()); }


User Requirements
- Player can select “Play Game” to begin a new game
- Player will be able to control the actions of a Knight who can
- move around within the boundaries of the room
- access inventory to use consumables and switch weapons
- interact with static world objects such as doors and chests
- Player’s Knight will encounter enemies in rooms, triggering combat phase where the Knight
- attack the enemy
- can heal
- run away from combat
- Player can end the game by
- finding and defeating the dungeon’s boss in combat
- letting their Knight’s hit points drop below 1
- quitting out of the game


| Home | Libraries | People | FAQ | More |
The
algorithm used in this library is designed to provide best possible worst-case
performance, while still being cache-friendly. It provides the better of
𝑶(N*log(K/S + S)) and 𝑶(N*log(N))
worst-case time, where K is the log of the range.
The log of the range is normally the length in bits of the data type; 32
for a 32-bit integer.
spreadsort
flash_sort
(another hybrid
algorithm), by comparison is 𝑶(N) for evenly distributed
lists. The problem is, flash_sort
is merely an MSD radix
sort combined with 𝑶(N*N) insertion sort to
deal with small subsets where the MSD Radix Sort is inefficient, so it
is inefficient with chunks of data around the size at which it switches
to insertion_sort
, and
ends up operating as an enhanced MSD Radix Sort. For uneven distributions
this makes it especially inefficient.
and integer_sort
use introsort
instead, which provides 𝑶(N*log(N)) performance for
these medium-sized pieces. Also, float_sort
flash_sort
's
𝑶(N) performance for even distributions comes at the
cost of cache misses, which on modern architectures are extremely expensive,
and in testing on modern systems ends up being slower than cutting up the
data in multiple, cache-friendly steps. Also worth noting is that on most
modern computers, log2(available
RAM)/log2(L1 cache
size)
is around 3, where a cache miss takes more than 3 times as long as an in-cache
random-access, and the size of max_splits is tuned
to the size of the cache. On a computer where cache misses aren't this
expensive, max_splits could be increased to a large
value, or eliminated entirely, and integer_sort/float_sort
would have the same 𝑶(N) performance on even distributions.
Adaptive Left Radix (ALR) is similar to flash_sort
,
but more cache-friendly. It still uses insertion_sort. Because ALR uses
𝑶(N*N) insertion_sort
,
it isn't efficient to use the comparison-based fallback sort on large lists,
and if the data is clustered in small chunks just over the fallback size
with a few outliers, radix-based sorting iterates many times doing little
sorting with high overhead. Asymptotically, ALR is still 𝑶(N*log(K/S
+ S)), but with a very small S (about 2
in the worst case), which compares unfavorably with the 11 default value
of max_splits for Spreadsort.
ALR also does not have the 𝑶(N*log(N)) fallback, so
for small lists that are not evenly distributed it is extremely inefficient.
See the alrbreaker
and
binaryalrbreaker
testcases
for examples; either replace the call to sort with a call to ALR and update
the ALR_THRESHOLD at the top, or as a quick comparison make get_max_count return
ALR_THRESHOLD
(20 by default
based upon the paper). These small tests take 4-10 times as long with ALR
as std::sort
in the author's testing, depending on the test system, because they are
trying to sort a highly uneven distribution. Normal Spreadsort does much
better with them, because get_max_count
is designed around minimizing worst-case runtime.
burst_sort
is an efficient
hybrid algorithm for strings that uses substantial additional memory.
uses minimal additional memory by comparison. Speed comparisons between
the two haven't been made, but the better memory efficiency makes string_sort
more general.
string_sort
postal_sort
and
are similar. A direct performance comparison would be welcome, but an efficient
version of string_sort
postal_sort
was not found in a search for source.
is most similar to the American
flag sort algorithm. The main difference is that it doesn't bother
trying to optimize how empty buckets/piles are handled, instead just checking
to see if all characters at the current index are equal. Other differences
are using std::sort
as the fallback algorithm, and a larger fallback size (256 vs. 16), which
makes empty pile handling less important.
string_sort
Another difference is not applying the stack-size restriction. Because
of the equality check in
,
it would take m*m memory worth of strings to force
string_sort
to create a stack of depth m. This problem isn't a
realistic one on modern systems with multi-megabyte stacksize limits, where
main memory would be exhausted holding the long strings necessary to exceed
the stacksize limit. string_sort
can be thought of as modernizing American
flag sort to take advantage of introsort
as a fallback algorithm. In the author's testing, American
flag sort (on string_sort
std::strings
)
had comparable runtime to introsort,
but making a hybrid of the two allows reduced overhead and substantially
superior performance.


TEXDIRFLATTEN(1) User Contributed Perl Documentation TEXDIRFLATTEN(1) NAME texdirflatten - Collects all components of a (La)TeX file in a single output directory -- i.e., flattens its hierarchy. SYNOPSIS texdirflatten -f input.tex [-o outputdir] DESCRIPTION It parses the source file, following its included children (La)TeX files recursively, to collect together its components, such as graphics and BiBTeX bibliography files in different directories. OPTIONS -f input.tex Specifies input (La)TeX file. -o outputdir Directory to collect all files. texdirflatten will copy each source file, graphics and bibliography file to this directory. It will be created if it is unexistent. If unspecified, it defaults to "flat/". EXAMPLES The following example scans "manuscript.tex" in the current directory and gathers it and all its components in the "submit_01/" directory: $ texdirflatten -f manuscript.tex -o submit_01 CAVEATS Please take backups before running this command. No warranties whatsoever provided. BUGS Bug reports and patches are welcome. AUTHOR Cengiz Gunay <cengique<AT>users.sf.net> COPYRIGHT AND LICENSE Copyleft 2003-2009, Cengiz Gunay This library is free software; you may redistribute it and/or modify it under the same terms as Perl itself. perl v5.10.0 2009-04-17 TEXDIRFLATTEN(1)


Throughout the course of 2019 our Konexio team worked on a brand new matching platform that would match the volunteer mentors at Konexio to low income individuals who looked for specific skills.
We created a simple form for mentees to fill out and get matched to a mentor.
There is an account page where users can make sure their information is correct and that the server is running properly(the latter will be removed in hte official release).
A welcoming home page can direct users, whether mentor or mentee, to the right sign up or log in page.


This is a website dedicated to compiling an open source voice corpus to advance open source Speech To Text (STT) development in hopes that tehy will be able to compete with commerial applications such as Siri


Microbay Wiki View
Wiki view interacts with wikipedias api to deliver the most relevant results of a search query. It provides a brief synopsis and suggestions for further reading.
Microbay Twitch TV View
Twitch TV View uses the Twitch TV api to gather up to date relevant info about several twitch channels. It checks if the channels are live and uses javascript and ajax to build out the majority of the page.


Popular Areas in cz 75 sp-01 phantom
CZ 75 - Wikipedia, the free encyclopedia
CZ 75 SP-01 Phantom: The CZ 75 Phantom has a polymer frame, is 33% lighter than steel frame models, with accessory rail and a forged steel slide with a .
http://en.wikipedia.org/wiki/CZ_75
Pistol Ceska Zbrojovka (CZ) 75 SP-01 - special-ops.org | Elite ...
Sep 27, 2012 . Seemingly, CZ 75 SP-01 is more like a model CZ 97 in .45 ACP caliber . polymer frame, so if you're not comfortable weight-please Phantom.
http://www.special-ops.org/pistol-ceska-zbrojovka-cz-75-sp-01/
CZ 75 - Internet Movie Firearms Database - Guns in Movies, TV and ...
9 CZ 85. 9.1 Specifications. 9.1.1 Video Games. 10 CZ 85B. 10.1 Specifications. 10.1.1 Film. 11 CZ 75 SP-01 PHANTOM. 11.1 Specifications. 11.1.1 Video .
http://www.imfdb.org/wiki/CZ_75
Filing Extra Slots on CZ75 SP-01 Tactical?
Mar 7, 2013 . Thread: Filing Extra Slots on CZ75 SP-01 Tactical? . in the front but sits flush on a SP-01 Phantom because the Phantom has 2 extra rail slots.
http://www.northwestfirearms.com/gunsmithing-repairs/127122-filing-extra-slots-cz75-sp-01-tactical.html
CZ 75 SP-01 PHANTOM | Law Enforcement - Pistols - Ceska ...
The CZ 75 SP-01 PHANTOM is a variant of the CZ 75 SP-01 TACTICAL pistol. Thanks to its low weight achieved by the use of heavy-duty plastic is this handgun .
http://www.czub.cz/en/catalog/86-law-enforcement-military/OS/CZ_75_SP-01_PHANTOM.aspx
Phantom magazine compatibility?
I am new to CZ and recently bought a SP-01 Phantom. . That is a great gun and I believe the 75B mags are compatible with the Phantom.
http://www.czforum.com/index.php?topic=1772.0


Interactive server-side Python shell for Google App Engine. (source)
log in | Ctrl-Up for history | Shift-Enter for newline |