See this post on GitLab's blog here.
NYU reproducibility librarian Vicky Steeves shares why GitLab is her choice for ongoing collaborative research, and how it can help overcome challenges with sharing code in academia.
GitLab is a great platform for active, ongoing, collaborative research. It enables folks to work together easily and share that work in the open. This is especially poignant given the problems in sharing code in academia, across time and people.
It's no surprise that GitLab, a platform for collaborative coding and Git repository hosting, has features for reproducibility that researchers can leverage for their own and their communities' benefit.
Reproducibility is a core component in a variety of work, from software engineering to research. For software engineers, the ability to reproduce errors or functionality is key to development. For researchers, reproducibility is about independent verification of results/methods, to build on top of previous work, and to increase the impact, visibility, and quality of research. Y'know. That Sir Isaac Newton quote in every reproducibility presentation ever: "If I have seen further, it is by standing on the shoulders of giants."
Like all things, reproducibility exists on a spectrum. I like Stodden et al's definitions from the 2013 ICERM report, so I'll use those:
| ICERM Report Definitions | Potential Real-World Examples |
|---|---|
| Reviewable Research: Sufficient detail for peer review and assessment | The code and data are openly available |
| Replicable Research: Tools are available to duplicate the author's results using their data | The tools (software) used in the analysis are freely available for others to confirm results |
| Confirmable Research: Main conclusions can be attained independently without author's software | Others can reach the conclusion using similar tools, not necessarily the same as the author, or on a different operating system |
| Auditable Research: Process and tools archived such that it can be defended later if necessary | The tools, environment, data, and code are put into a preservation-ready format |
| Open/Reproducible Research: Auditable research made openly available | Everything above is made available in a repository for others to examine and use |
The last bullet there is the goal – open and reproducible research. Releasing code and data are key to open research, but not necessarily enough for reproducibility. This is where the concept of computational reproducibility becomes important, where whole environments are captured. You could also look at it this way:
There are a few solutions out there, including containers (such as Docker or Singularity) for active research, and o2r and ReproZip for capturing and reproducing completed research. For this post, I'm going to focus on active research and containers.
I like GitLab for research reproducibility because it makes working together simple, and seamless. There's no hacking together 100 different third-party services. GitLab has hosting, LFS, and integrated Continuous Integration for free, for both public and private repositories! Everything is integrated in a single GitLab repository which, if made publicly available, can enable secondary users to reproduce results in a more streamlined fashion. You can also keep these private to a group – you control the visibility of everything in one repository in one place, as opposed to updating permissions across multiple services.
There are a few key features that set GitLab apart when it comes to containers and reproducibility. The first is that GitLab doesn't use a third-party service for continuous integration. It's shipped with CI runners which can use Docker images from GitLab's registry. Basically, you can use the Docker Container Registry, a secure, private Docker registry, to choose a container that GitLab CI uses to run each job in a separate and isolated container.
If you don't feel like using the GitLab registry, you can also use images from DockerHub or a custom Docker container you're already using locally. These can be integrated with GitLab CI, and if made public, any secondary users can use it as well!
This process is set up in a single file, a .gitlab-ci.yml
. Another feature that makes my life easier – GitLab can syntax-check the CI config files! The .gitlab-ci.yml
file describes the pipelines and stages, each of which has a different function and can have its own tags, produce its own artifacts, and reuse artifacts from other stages. These stages can also run in parallel if needed. Here's an example of what a basic config file looks like with R:
image: jangorecki/r-base-dev
test:
script:
- R CMD build . --no-build-vignettes --no-manual
- PKG_FILE_NAME=$(ls -1t *.tar.gz | head -n 1)
- R CMD check "${PKG_FILE_NAME}" --no-build-vignettes --no-manual --as-cran
And here's an example of building a website using the GitLab and the static site generator, Nikola:
image: registry.gitlab.com/paddy-hack/nikola:7.8.7
test:
script:
- nikola build
except:
- master
pages:
script:
- nikola build
artifacts:
paths:
- public
only:
- master
It's also worth noting that you can use different containers per step in your workflow, if you outline it in your .gitlab-ci.yml. If your data collection script runs in one environment but your analysis script needs another, that's perfectly fine using GitLab, and others have the information to reproduce it easily! Another feature that puts GitLab apart is that a build of one project can trigger a build of another – AKA, multi-project pipelines. For those of you working with big data, you can automatically spin up and down VMs to make sure your builds get processed immediately with GitLab's CI as well.
Here are some other great resources and examples of using GitLab to make research more reproducible:


Asynchronously build a mapping of entries in hostRoot
to
application root paths and proxy ports. For each symlink, store the
symlink’s name and the real path of the application it points to.
For each directory, store the directory’s name and its full path.
For each file that contains a port number, store the file’s name and
the port. The mapping is passed as an object to the second argument
of callback
. If an error is raised, callback
is called with the
error as its first argument.
The mapping object will look something like this:
{
"basecamp": { "root": "/Volumes/37signals/basecamp" },
"launchpad": { "root": "/Volumes/37signals/launchpad" },
"37img": { "root": "/Volumes/37signals/portfolio" },
"couchdb": { "url": "http://localhost:5984" }
}
gatherHostConfigurations: (callback) ->
hosts = {}
mkdirp @hostRoot, (err) =>
return callback err if err
fs.readdir @hostRoot, (err, files) =>
return callback err if err
async.forEach files, (file, next) =>
root = path.join @hostRoot, file
name = file.toLowerCase()
rstat root, (err, stats, path) ->
if stats?.isDirectory()
hosts[name] = root: path
next()
else if stats?.isFile()
fs.readFile path, 'utf-8', (err, data) ->
return next() if err
data = data.trim()
if data.length < 10 and not isNaN(parseInt(data))
hosts[name] = {url: "http://localhost:#{parseInt(data)}"}
else if data.match("https?://")
hosts[name] = {url: data}
next()
else
next()
, (err) ->
callback err, hosts


Easy Day
Home
Vegetables
Fruits
Meat
Cart
Vegetables
Fruits
Meat
VEGETABLES
Okra
$3.99
ADD TO CART
Broccoli
$5.99
ADD TO CART
Kale
$2.99
ADD TO CART
Asparagus
$6.99
ADD TO CART
FRUITS
Kiwi
$1.99
ADD TO CART
Orange
$3.99
ADD TO CART
Strawberry
$6.99
ADD TO CART
Apple
$2.99
ADD TO CART
MEAT
Chicken
$8.99
ADD TO CART
Lamb
$10.99
ADD TO CART
Ham
$3.99
ADD TO CART
Steak
$11.99
ADD TO CART
CART
ITEM
PRICE
QUANTITY
Total
$0
PURCHASE
2021 By Easy Day Grocery Corp


Gets the authenticaiton value for the $authVar supplied. If the $authVar is set, it is is used. Otherwirse, the supplied $authenticationIni is queired for the variable. If none is found NULL is returned.
Tags:
return:
the authentication variable value
access:
protected
Parameters:
string
$authVar
the default value for the authenticaiton variable
string
$authVarName
the name of the authencation variable
array
$authIni
the array of authentication variables from an INI file
Loads the settings for this client library. If the settings INI file located at $settingsIniPath cannot be loaded, then the parameters passed into this method are used.
Tags:
access:
public
Parameters:
string
$settingsIniPath
the path to the settings INI file
string
$defaultVersion
the default version if the settings INI file cannot be loaded
string
$defaultServer
the default server if the settings INI file cannot be loaded
string
$defaultLogsDir
the default logs directory if the settings INI file cannot be loaded
Initiates the default logging behavior of logging all HTTP headers and SOAP XML to the soap_xml.log file and all request information to the request_info.log file under the logs directory.


Folders
<Go Back>
css
effects
manipulation
ajax
data
event
queue
attributes
deferred
exports
traversing
core
deprecated
Folders: 14


|
QtConcurrent
Trial to use Doxygen to generate UML class diagram of QtConcurrent module.
|
#include <qtconcurrentthreadengine.h>
Public Member Functions | |
| ThreadEngineStarterBase (ThreadEngine< T > *_threadEngine) | |
| ThreadEngineStarterBase (const ThreadEngineStarterBase &other) | |
| QFuture< T > | startAsynchronously () |
| operator QFuture< T > () | |
Protected Attributes | |
| ThreadEngine< T > * | threadEngine |
|
inline |
|
inline |
|
inline |
|
inline |
|
protected |


|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
| Interface Summary | |
|---|---|
| DropboxAPI.UploadRequest | A request to upload a file to Dropbox. |
| Class Summary | |
|---|---|
| DropboxAPI<SESS_T extends Session> | Location of the Dropbox API functions. |
| DropboxAPI.Account | Information about a user's account. |
| DropboxAPI.BasicUploadRequest | |
| DropboxAPI.ChunkedUploadRequest | Class representing the uploading of a single chunk of data to Dropbox using the long upload protocol. |
| DropboxAPI.ChunkedUploadResponse | Represents Dropbox's response to a call to the /chunked_upload endpoint, which contains the uploadId of the upload as well as the expected file offset. |
| DropboxAPI.CreatedCopyRef | |
| DropboxAPI.DeltaEntry<MD> | A single entry in a DeltaPage . |
| DropboxAPI.DeltaEntry.JsonExtractor<MD> | |
| DropboxAPI.DeltaPage<MD> | A page of DeltaEntry s (returned by delta ). |
| DropboxAPI.DropboxFileInfo | Contains info describing a downloaded file. |
| DropboxAPI.DropboxInputStream | An InputStream for a file download that includes the associated
DropboxAPI.DropboxFileInfo . |
| DropboxAPI.DropboxLink | Contains a link to a Dropbox stream or share and its expiration date. |
| DropboxAPI.Entry | A metadata entry that describes a file or folder. |
| DropboxAPI.RequestAndResponse | Holds an HttpUriRequest and the associated HttpResponse . |
| ProgressListener | Receives file transfer progress updates for some API calls, e.g. |
| ProgressListener.Adjusted | A progress listener that forwards on to another ProgressListener
after adjusting the total and bytes . |
| ProgressListener.ProgressHttpEntity | A wrapper for an HttpEntity that can count the number of bytes
transferred. |
| RESTUtility | This class is mostly used internally by DropboxAPI for creating and
executing REST requests to the Dropbox API, and parsing responses. |
| SdkVersion | Contains the SDK verison number. |
| Enum Summary | |
|---|---|
| DropboxAPI.ThumbFormat | Represents the image format of thumbnails that the API can return. |
| DropboxAPI.ThumbSize | Represents the size of thumbnails that the API can return. |
| RESTUtility.RequestMethod |
|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


--- layout: default ---
Open data is only one component of transparency at the City of Beverly Hills. This site focuses on data that can be downloaded for your use. For more forms of transparency, please visit http://www.beverlyhills.org/transparency.
If you are looking for interactive map visualizations, please visit http://www.beverlyhills.org/gis


§674-13 Legal adviser. The panel, in accordance with section 28-8.3, shall obtain its own legal counsel to provide legal services necessary to implement the purposes of this chapter. [L 1991, c 323, pt of §1; am L Sp 1993, c 8, §53; am L 2015, c 35, §40]


This class represents a GameResultComponent. This must be attached to the game object that is responsible for altering the game state. In most cases this will be the player object.
More...
#include <GameResultComponent.hpp>
This class represents a GameResultComponent. This must be attached to the game object that is responsible for altering the game state. In most cases this will be the player object.
◆ GameResultComponent()
| GameResultComponent::GameResultComponent |
( |
GameObject * |
player_object, |
|
|
TTF_Font * |
game_status_font, |
|
|
GameManager * |
game_manager |
|
) |
| |
|
explicit |
Public constructor for the class.
- Parameters
-
| player_object | The associated game object. For this component, this should most likely be the player object. |
| game_status_font | The font in which the game status text will be shown on screen. |
| game_manager | A pointer to the GameManager object which can influence the global state of the game. |
◆ ~GameResultComponent()
| GameResultComponent::~GameResultComponent |
( |
| ) |
|
◆ GetComponentCardinality()
◆ GetComponentType()
◆ Init()
| void GameResultComponent::Init |
( |
| ) |
|
|
overridevirtual |
Overridden implementation for init, this method initializes the surface onto which the game result may be displayed to the user.
Reimplemented from Component.
◆ ProcessUpdate()
| void GameResultComponent::ProcessUpdate |
( |
float |
delta_time | ) |
|
|
overridevirtual |
Overridden implementation for process update that updates the game result once per frame update.
- Parameters
-
| delta_time | The time difference between two consecutive frame updates. |
Reimplemented from Component.
◆ Render()
| void GameResultComponent::Render |
( |
SDL_Renderer * |
renderer | ) |
|
|
overridevirtual |
Overridden implementation for render that renders the game result once per frame update.
- Parameters
-
| renderer | The SDL_Renderer that can be used to draw on screen. |
Reimplemented from Component.
◆ Update()
| void GameResultComponent::Update |
( |
SDL_Event & |
event | ) |
|
|
overridevirtual |
Overridden implementation for update that updates the game result based on user actions.
- Parameters
-
| event | The user event that has occurred. |
Reimplemented from Component.
◆ UpdateGameStatus()
| void GameResultComponent::UpdateGameStatus |
( |
GameStatus |
game_status | ) |
|
This method can be used to update the current status of the game.
- Parameters
-
| game_status | The new GameStatus for the game. |
The documentation for this class was generated from the following files:


The TeamWave API is organized around REST. Our API has predictable, resource-oriented URLs, and uses HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients. We support cross-origin resource sharing, allowing you to interact securely with our API from a client-side (though you should never expose your secret API key). This API reference provides information on available endpoints and how to interact with it. JSON is returned by all API responses, including errors, although our API libraries convert responses to appropriate language-specific objects.
Authentication
Authenticate your account when using the API by including your secret API key in the request. Your API keys carry many privileges, so be sure to keep them secret!
Get API Key
You can get your API key from your TeamWave Account Profile --> You --> API Key. Copy the API key.
GET/api/crm/deals/{deal_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
To make an API call, use this key as url parameter or header parameter with the url of the API (http://app.teamwave.com/api/)
Add api_key=Your API Key to your API url link for requests (POST, PATCH, GET, PUT).
Status Codes
Our REST API uses the following status codes:
Status Code
Meaning
200
Request OK
201
Resource created
400
Bad Request – Your request is bad
401
Unauthorized – Your API key is wrong
402
Failed request
403
Forbidden – requested is hidden for administrators only
404
Not Found – The specified item could not be found
50x
Internal Server Error
Projects
Projects provides various project management related operations using the /projects resource and related sub-resources. Use projects for managing new projects and existing projects. You can also use sub-resources to get tasks, milestones, events, files, reports, timelog and notes related details.
Projects
Project Object
Sample Object
{"id":280,"name":"Explore AdHome","description":"This template will give you to create sample project","logo":"https://twprofile.s3.amazonaws.com/logo.jpg","owner":{"id":2,"name":"adhome","domain":"adhome","logo":null,"email":"sam@adhome.com","tenant_domain":"adhome.com","created_on":"2015-06-04","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"adhome","status":"paying","trial_end_on":"2016-07-07"},"clients":[],"users":[537,3300,3692,3858,3633,491,493,58,4,8],"is_trashed":false,"start_date":null,"end_date":null,"budget":0.0,"privacy_enabled":false,"permissions":{"can_add_messages":true,"can_delete_messages":true,"can_add_tasks":true,"can_delete_tasks":true,"can_add_milestones":true,"can_delete_milestones":true,"can_add_timelogs":true,"can_delete_timelogs":true,"can_add_files":true,"can_delete_files":true,"can_add_notebooks":true,"can_delete_notebooks":true,"can_add_events":true,"can_delete_events":true,"project":280,"is_active":true,"calendar_enabled":true,"messages_enabled":true,"tasks_enabled":true,"notes_enabled":true,"milestones_enabled":true,"files_enabled":true,"time_enabled":true},"last_updated":"2016-07-22T09:36:11.442229Z","tasks_enabled":true,"created_by":8,"milestones_enabled":true,"messages_enabled":true,"files_enabled":true,"time_enabled":true,"notes_enabled":true,"calendar_enabled":true,"label_color":null,"label_txt":"Ex","created_on":"2015-10-15T07:49:41.957253Z","modified_on":"2015-10-15T07:49:43.119392Z","resource_url":"/projects/280","drive_access":null,"drop_box_access":null,"is_active":true,"owner_name":"adhome","is_template":false,"creating":false,"tags":null}
if the project is also a template in templates section
creating (boolean)
if the project is under creation, it will be true. After creating, it will be false.
tags (string)
tags given for the project.
Permissions Object
Following permission fields are set for the project.
Attrbute
Description
can_add_messages (boolean)
can add new messages
can_delete_messages (boolean)
can delete messages
can_add_tasks (boolean)
can add tasks
can_delete_tasks (boolean)
can delete task
can_add_milestones (boolean)
can add milestone
can_delete_milestones (boolean)
can delete milestone
can_add_timelogs (boolean)
can add timelog
can_delete_timelogs (boolean)
can delete timelog
can_add_files (boolean)
can add files
can_delete_files (boolean)
can delete files
can_add_notebooks (boolean)
can add notebook
can_delete_notebooks (boolean)
can delete notebooks
can_add_events (boolean)
can add events
can_delete_events (boolean)
can delete events
project (integer)
ID of the project
is_active (boolean)
is the project active
calendar_enabled (boolean)
calender enabled or not for the project
messages_enabled (boolean)
messages enabled or not for the project
tasks_enabled (boolean)
tasks enabled for the project or not
notes_enabled (boolean)
notes are enabled for the project
milestones_enabled (boolean)
milestones feature enable in the project
files_enabled (boolean)
files are enabled for this project
time_enabled (boolean)
time is enabled for the project
List all Projects
GETapi/projectsHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Create Project
POSTapi/projectsHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"name":"Explore AdHome","description":"Unified Platform for Collaboration, Sales,
Marketing & Support","logo":"https://twprofile.s3.amazonaws.com/image.jpg","Invite_data":[11],"Invite_note":"I invite you to work with me on this project.
Please feel free to share ideas, participate in discussions and give feedback. ","label_txt":"Ex","new_invite_data":[],"share_data":null,"share_note":"We invite you to collaborate with us on AdHome
for this project. We use AdHome to manage tasks, share ideas and discuss issues.","share_type":"c"}
Attribute
Description
name (string)
Name of the project
description (string)
Description of the project
logo (string)
Logo url of the project
Invite_data (array)
List of user who already exists in the organization
Invite_note (string)
Invite message to be send to the invited user’s email
GETapi/projectsHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
[{"id":280,"name":"Explore AdHome","description":"This template will give you to create sample project","logo":"https://twprofile.s3.amazonaws.com/image.jpg","label_color":null,"tags":null,"owner_id":2,"label_txt":"Ex","resource_url":"/projects/280","last_updated":"2016-07-22T09:36:11.442229Z","is_active":true,"owner_name":"adhome","creating":false},{"id":253,"name":"AdHome","description":"Unified Platform for Collaboration, Sales, Marketing & Support","logo":"https://twprofile.s3.amazonaws.com/image.jpg","label_color":"#9da2a6","tags":{"28":{"color":"label-color-6","tag":"AdHome"}},"owner_id":2,"label_txt":"Te","resource_url":"/projects/253","last_updated":"2016-07-22T08:09:24.534065Z","is_active":true,"owner_name":"adhome","creating":false}]
Attribute
Description
Id (integer)
Identification number of the project
name (string)
Name of the project
description (string)
Description of the project
logo (uel string)
Logo of the project
label_txt (string)
Label text for the project
owner_id
owner of the project
resource_url (url string)
project access url
last_updated (date string)
Last updated time of the project
owner_name (string)
Project’s organization Name
creating (boolean)
status whether the project is still creating by the celery or not. If it is still creating, the status is True else false
Task Group
Sample Object
{"id":901,"name":"Customer Issues","description":"This will contain all the issues reported by customers.","milestones":{"id":384,"title":"Customer issue completely fixed","start":"2016-08-02","resource_url":"/projects/565/milestones/384","modified_on":"2016-07-21T05:48:56.164094Z"},"created_on":"2016-07-21T05:49:43.007788Z","resource_url":"/projects/565/taskgroups/901","created_by":{"id":1,"first_name":"Sathish","last_name":"Venkat","label_txt":"SV","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"adhome","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/logo.jpg","email":"sathish@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-07","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"adhomemediaindiapvtltd","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"Sathish Venkat","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:33:10.384807Z","job_title":"Product Engineer","time_zone":"Europe/Kaliningrad","uuid":"dda0c7e8e1ed4231a2794c99d19be85b","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"modified_by":{"id":1,"first_name":"Sathish","last_name":"Venkat","label_txt":"SV","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"adhome","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/logo.jpg","email":"sathish@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-07","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"adhomemediaindiapvtltd","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"Sathish Venkat","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:33:10.384807Z","job_title":"Product Engineer","time_zone":"Europe/Kaliningrad","uuid":"dda0c7e8e1ed4231a2794c99d19be85b","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"modified_on":"2016-07-21T06:00:02.519776Z","is_trashed":false,"tasks":[{"name":"Important - Monitoring Third-party Services1","index":1,"id":3164,"assigned_to":{"id":273,"first_name":"Rajdeep","last_name":"Sharma","label_txt":"RS","is_crm_enabled":true,"is_crm_admin":false,"is_pm_enabled":true,"is_hrm_admin":false,"corp_email":false,"organization":{"id":1,"name":"adhome","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/logo.jpg","email":"sathish@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-07","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"adhomemediaindiapvtltd","status":"paying","trial_end_on":"2016-07-07"},"image":null,"email":"rjdp9736@gmail.com","full_name":"Rajdeep Sharma","is_owner":false,"is_admin":false,"is_active":true,"last_login":"2016-06-22T06:55:34.531894Z","job_title":"Dev","time_zone":"Asia/Kolkata","uuid":"6f85ece234da4fc6809841e93f2106bb","country":"US","is_noticeboard_enabled":true,"is_user_directory_enabled":true},"due_date":"2016-07-29","completed_by":null,"modified_by":null,"created_by":{"id":1,"first_name":"Sathish","last_name":"Venkat","label_txt":"SV","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"adhome","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/logo.jpg","email":"sathish@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-07","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"adhomemediaindiapvtltd","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"Sathish Venkat","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:33:10.384807Z","job_title":"Product Engineer","time_zone":"Europe/Kaliningrad","uuid":"dda0c7e8e1ed4231a2794c99d19be85b","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"estimate":0,"completed_date":null,"is_completed":false,"timelog":"0:00","created_on":"2016-07-21T06:10:31.053920Z","modified_on":"2016-07-21T06:10:31.239412Z","taskgroup_is_private":true,"project_name":"DQNC Inc.","project_id":565,"tags":null,"taskgroup_name":"Customer Issues","taskgroup_id":901,"taskgroup_is_trashed":false,"is_trashed":false,"comment_count":0,"resource_url":"/projects/565/taskgroups/901/tasks/3164","tmp_due_date":null,"attachments":[3781],"attachments_detail":[{"id":3781,"title":"canceled.png","attachment":"https://mediatw.s3.amazonaws.com/projects/565/1469081412471_canceled.png?Signature=LcpcsUDJm5vcDqy0kWl%2Fqsq90uk%3D&Expires=1469086474&AWSAccessKeyId=AKIAJ3XCFVTYA","object_id":3164,"is_drivebox":false,"is_trashed":false,"modified_by":null,"project":565,"size":"42817","for_comment":false,"content_object_detail":{"display_name":"Important - Monitoring Third-party Services1","url":"/projects/565/taskgroups/901/tasks/3164","group_name":"Customer Issues","group_url":"/projects/565/taskgroups/901","group_id":"901","id":"3164"},"created_by":{"id":1,"first_name":"Sathish","last_name":"Venkat","label_txt":"SV","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"adhome","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/logo.jpg","email":"sathish@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-07","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"adhomemediaindiapvtltd","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"Sathish Venkat","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:33:10.384807Z","job_title":"Product Engineer","time_zone":"Europe/Kaliningrad","uuid":"dda0c7e8e1ed4231a2794c99d19be85b","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"created_on":"2016-07-21T06:10:16.516429Z","is_live":true,"thumbnail":"https://mediatw.s3.amazonaws.com/projects/565","comment_count":0,"modified_on":"2016-07-21T06:10:31.077537Z","is_shared":false,"shared_note":null,"content_type":"task","ext":"png","resource_url":"/projects/565/files/3781","download_url":"https://app.goAdHome.com/api/projects/565/files/download/3781","is_private":false,"tgs":null}]}],"index":3,"total":1,"completed":0,"incompleted":1,"comment_count":0,"is_private":true,"default_asignee":null,"default_duedays":8}
Status to identify user can access the noticeboard( in app notification) or not,
is_user_directory_enabled (boolean)
Status to identify user can view the employees directory (in hrm ) or not
PM Organization Object
Attribute
Description
id (integer)
Identification number of the Organization,
name (string)
Name of the Organization,
domain (string)
DomainName of the Organization,
logo(url)
Logo url of the Organization,
email (email)
Email given to the Organization,
tenant_domain (string)
Tenant_domain of the Organization,
created_on (date)
Organization created date,
default_currency (string)
Default Currency of the Organization,
default_currency_symbol (string)
Default Currency symbol of the Organization,
label_txt (string)
Label text of the Organization,
orgkey (string)
Organization key,
status (string)
Status of the organization . eg,.paying,
trial_end_on (date)
Date on which AdHome account will end.
Create Task Group
POST/api/projects/{project_id}/taskgroupsHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"name":"Customer Issues","description":"This will contain all the issues reported by customers.","is_private":true,"default_asignee_id":273,"default_duedays":8,"milestones":{"id":384}}
Update Task Group
PATCH/api/projects/{project_id}/taskgroups/{task_group_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":901,"name":"Customer Issues","description":"This will contain all the issues reported by customers.","is_private":true,"default_asignee_id":273,"default_duedays":8,"milestones":{"id":384}}
PATCH/api/projects/{project_id}/files/activateHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Sample Response
{"ids":[4413],"is_private":false}
Delete File
PATCH/api/projects/{project_id}/files/{file_id}/trashHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Sample Response
{"trashed":"success"}
Notes
Note Object
{"id":518,"name":"Creating a Template from an Existing Project","content":"
Create a template by copying the customizations of an existing project.
You will be given option to either include or exclude the assigned tasks
 to the new template. The new template will have all the discussions,
tasks, files, notes, milestones and team members of the existing
project. The completed tasks will be reopened automatically in the new
template.

","modified_by":null,"resource_url":"/projects/1190/notes/518","is_trashed":false,"created_on":"2016-07-21T10:53:26.663830Z","modified_on":"2016-07-21T10:53:26.663857Z","comment_count":0,"created_by":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/logos/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/users/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"versions":[{"id":972,"name":"Creating a Template from an Existing Project","created_on":"2016-07-21T10:53:26.773477Z","version":1,"is_current":true,"created_by":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/logos/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/users/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"resource_url":"/projects/1190/notes/518/version/972"}],"is_private":false}
Status to identify this is the current version of the note or not
created_by (object)
User object who created the note version
resource_url (string)
Note Version’s detail page access url
Create Note
POSTapi/projects/{project_id}/notes/{note_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"project":"1190","name":"Creating a Template from an Existing Project","content":"
Create a template
by copying the customizations of an existing project.
You will be given option to either include
or exclude the assigned tasks
 to the new template. The new template will have all the discussions
,
tasks, files, notes, milestones and team members of the existing
project. The completed tasks
will be reopened automatically in the new
template.

"}
Update Note
PATCHapi/projects/{project_id}/notes/{note_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":520,"name":"Creating a Template from an Existing Project","content":"
Create a template by
copying the customizations of an existing project.
You will be given option to either include
or exclude the assigned tasks
 to the new template. The new template will have all the discussions
,
tasks, files, notes, milestones and team members of the existing
project. The completed tasks
will be reopened automatically in the new
template.

","modified_by":null,"resource_url":"/projects/1190/notes/520","is_trashed":false,"created_on":"2016-07-21T11:08:40.692271Z","modified_on":"2016-07-21T11:08:40.692310Z","comment_count":0,"created_by":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"versions":[{"id":972,"name":"Creating a Template from an Existing Project","created_on":"2016-07-21T10:53:26.773477Z","version":1,"is_current":true,"created_by":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"resource_url":"/projects/1190/notes/518/version/972"}],"is_private":true,}
Returns
If the call succeeds, it will return the Note object.
Delete Note
PATCHapi/projects/{project_id}/notes/{note_id}/trashHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"trashed":"success"}
Milestone
Milestone Object
{"id":682,"title":"Customer issue completely fixed","completed":false,"completed_on":null,"task_groups":[],"created_by":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"post_count":0,"resource_url":"/projects/1190/milestones/682","modified_on":"2016-07-21T11:42:02.351870Z","modified_by":null,"start":"2016-07-22","created_on":"2016-07-21T11:42:02.199063Z","assigned_to":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"notify_when":"0","notify_time":"06:00:00","description":"fix all the issues","is_trashed":false,"project":1190,"is_private":false,"tmp_start":null,"project_name":"Pro_11"}
User object who is assigned to the milestone to complete,
notify_when (string)
get a notification of the milestone on notify time,
notify_time (time)
notification time of the milestone,
description (string)
Description of the milestone,
is_trashed (boolean)
Status to check milestone is trashed or not,
project (integer)
Identification number of the project,
is_private (boolean)
Status to check milestone is private or not,
tmp_start (date)
Temporary start date of the milestone,
project_name (string)
name of the project,
Create Milestone
POSTapi/projects/{project_id}/milestonesHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":0,"title":"Customer issue completely fixed","is_milestone":true,"notify_when":0,"notify_time":"06:00:00","start":"2016-08-10","assigned_to":{"id":1},"description":"fix all the issues","object_id":"1190","is_private":false}
Update Milestone
PATCHapi/projects/{project_id}/milestones/{milestone_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":683,"title":"Customer issue completely fixed","completed":false,"completed_on":null,"task_groups":[],"created_by":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"post_count":0,"resource_url":"/projects/1190/milestones/683","modified_on":"2016-07-21T11:59:54.589285Z","modified_by":null,"start":"2016-08-11","created_on":"2016-07-21T11:59:54.589259Z","assigned_to":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"notify_when":"0","notify_time":"06:00:00","description":"fix all the issues","is_trashed":false,"project":1190,"is_private":true,"tmp_start":null,"project_name":"Pro_11","action_type":"added","is_milestone":true,"_id":"683","_start":"2016-08-09T18:30:00.000Z","end":null,"_end":null,"allDay":true,"className":[]}
Complete the Milestone
PATCHapi/projects/{project_id}/milestones/{milestone_id}/completeHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Sample Response
{"completed":"success"}
Delete Milestone
PATCHapi/projects/{project_id}/milestones/{milestone_id}/trashHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
POST/api/projects/{project_id}/timelogsHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"description":"Issues fixed and updated.","logdate":"2016-07-22","logtime":"4:18","task":5403,"is_billable":true}
Update Time log
PATCH/api/projects/{project_id}/timelogs/{timelog_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"description":"New dependencies are added for monitoring and updated on online.","logdate":"2016-07-22","logtime":"5:30","task":5403,"is_billable":true}
Delete Time log
DELETEapi/projects/{project_id}/timelogs/{timelog_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Events
Event Object
{"id":3633,"title":"Slide Presentation","description":"Give a detail about upcoming projects","start_dt":"2016-07-22T16:30:00Z","end_dt":"2016-07-22T17:30:00Z","start":"2016-07-22 16:30:00+00:00","end":"2016-07-22 17:30:00+00:00","all_day":false,"start_time":"04:30 PM","end_time":"05:30 PM","rule_txt":false,"rule_id":null,"end_type":"never","occurrence_count":"2","end_recurring_period":null,"is_private":false,"post_count":0}
Attribute
Description
id (integer)
Identificatoin number of the Event,
title (string)
Title of the Event,
description (string)
Description given of the Event,
start_dt (date)
Start date of the Event,
end_dt (date)
End date the Event,
start (datetime)
Start date time of the Event,
end (datetime)
End date time of the Event,
all_day (boolean)
Status to check the event will occur all day or not,
start_timet (datetime)
Start time of the Event,
end_timet (datetime)
End time of the Event,
rule_txt (string)
Event repeat information,
rule_id (string)
Id of the repeat mode,
end_type (string)
end_type can be ‘never’,'occurrence’ or 'date’,
occurrence_count (integer)
Occurrence count of the event,
end_recurring_period (string)
It can be null if end_type is 'never’ or a paricular date if end_type is 'date,
is_private (boolean)
Status to check note is private or not,
post_count (integer)
Post count of the event
Create Event
POSTapi/projects/{project_id}/eventsHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":0,"title":"Slide Presentation","occurrence_count":0,"rule_id":0,"end_type":"never","start":"2016-07-22","start_time":"10:00 PM","end_time":"11:00PM","end":"2016-07-22","all_day":false,"end_recurring_period":"","repeat":false,"send_email":true,"description":"Give a detail about upcoming projects","emails":[1],"is_repeating":false}
Update Event
PATCHapi/projects/{project_id}/events/{event_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":13633,"event":3633,"all_day":true,"order_no":1,"title":"Slide Presentation Every day","created_by":{"id":1,"first_name":"sathish","last_name":"","label_txt":"s","is_crm_enabled":true,"is_crm_admin":true,"is_pm_enabled":true,"is_hrm_admin":true,"corp_email":true,"organization":{"id":1,"name":"Dsqqqqqqq ds 2123","domain":"adhome","logo":"https://twprofile.s3.amazonaws.com/image.jpeg","email":"geo.jacob@adhome.com","tenant_domain":"adhome.com","created_on":"2015-03-10","default_currency":"USD","default_currency_symbol":"$","label_txt":null,"orgkey":"Dsq","status":"paying","trial_end_on":"2016-07-07"},"image":"https://twprofile.s3.amazonaws.com/image.jpg","email":"sathish@adhome.com","full_name":"sathish ","is_owner":true,"is_admin":true,"is_active":true,"last_login":"2016-07-21T06:24:04.037715Z","job_title":"Developer","time_zone":"Asia/Kolkata","uuid":"7452387e2f1d4eda952cb12ffbefb6b1","country":null,"is_noticeboard_enabled":true,"is_user_directory_enabled":true},"emails":[1],"is_repeating":false,"is_private":false,"start":"2016-07-22","start_time":"10:00PM","old_start":"2016-07-22","old_start_time":"10:00 PM","end":"2016-07-22","end_time":"11:00 PM","old_end":"2016-07-22","old_end_time":"11:00 PM","description":"Give a detail about upcoming projects","rule_txt":false,"rule_id":0,"end_type":"never","occurrence_count":0,"end_recurring_period":"","durationEditable":false,"is_milestone":false,"post_count":0,"send_email":true,"_id":"13633","_start":"2016-07-21T18:30:00.000Z","_end":null,"allDay":true,"className":[],"repeat":false,"event_id":3633,"old_event_data":{"event_id":3633,"title":"SlidePresentation","start":"2016-07-22","end":"2016-07-22","start_time":"10:00 PM","end_time":"11:00 PM"}}
Delete Event
PATCHapi/projects/{project_id}/events/{event_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
CRM
CRM provides various Customer related operations using the /crm resource and related sub-resources. Use HRM for managing new employees, timeoff, and automatic check-ins. You can also use sub-resources to get employees, timeoff, tasks and automatic check-ins related details.
If the call succeeds, it will return the mail object with updated deal name.
Activities
Activity Object
{"id":409,"act_type":{"icon":"icon-send","id":463,"title":"Email"},"assigned_to":{"url":"/users/272","image":"","id":272,"full_name":"Rajdeep Sharma","email":"rajdeep@adhome.com","label_txt":"RS"},"person":{"phone":null,"name":"testContsct","full_name":"testContsct","image":null,"job_title":null,"id":15435,"ctype":"person","email":null},"company":{"domain":null,"name":"adhome","image":null,"ctype":"company","phone":"96633","address":"15/1","id":8452},"deal":{"id":2757,"ctype":"deal","dealname":"Segment Deal"},"activity_due_on":"2016-07-13T08:15:00","due_time":"08:15 AM","act_on":"2016-07-13T08:15:00","add_next":false,"title":"Email","note":"Please fill in your Folio No., Name, PAN & Bank Account
details in Section 2 & 3, and then proceed to Section 5","due_date":"2016-07-13","duration":"00:30","is_completed":false,"completed_on":null,"is_trashed":false}
POSTapi/crm/activitiesHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Sample Request
{"due_date":"2016-07-18","title":"Email","act_type":{"id":463,"title":"Email","icon":"icon-send","is_trashed":false},"assigned_to":{"id":1,"full_name":"Sathish Venkat"},"person":1,"company":10141,"deal":3376,"note":"This is a test deadline activity","due_time":"08:00 AM","duration":"01:00"}
Sample Response
{"id":424,"act_type":{"icon":"icon-send","id":463,"title":"Email"},"assigned_to":{"url":"/users/1","image":"https://twprofile.s3.amazonaws.com/users/user-8011f79c-007c-4943-a968-1d13dd13b1d9-image.jpg","id":1,"full_name":"Sathish Venkat","email":"sathish@adhome.com","label_txt":"SV"},"person":{"phone":"8884546564","name":"Sachin N","full_name":"Sachin N","image":null,"job_title":"Designer","id":1,"ctype":"person","email":"sachin@adhome.com"},"company":{"domain":"www.google.com","name":"adhome
Media India pvt Ltd","image":null,"ctype":"company","phone":"080-41250414","address":"Frazer Town","id":10141},"deal":{"id":3376,"ctype":"deal","dealname":"Test Deal"},"activity_due_on":"2016-07-18T08:00
:00","due_time":"08:00 AM","act_on":"2016-07-18T08:00:00","add_next":false,"title":"Email","note":"This
is a test deadline activity","due_date":"2016-07-18","duration":"01:00","is_completed":false,"completed_on":null,"is_trashed":false}
Returns
If the call succeeds, it will return the activity object with given data.
Update Activity
PUTapi/crm/activities/{activity_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":17782,"email":"ajithpaul@adhome.com","first_name":"Ajith","last_name":"Paul M","phone":"4568595442","full_name":"Ajith Paul M","job_title":"SW","owner":{"url":"/users/1","image":"https://twprofile.s3.amazonaws.com/image.jpg","id":1,"full_name":"SathishVenkat","email":"sathish@adhome.com","label_txt":"SV"},"company":{"domain":null,"name":"adhome","image":null,"ctype":"company","phone":null,"address":null,"id":10224},"created_by":{"url":"/users/1","image":"https://twprofile.s3.amazonaws.com/image.jpg","id":1,"full_name":"Sathish Venkat","email":"sathish@adhome.com","label_txt":"SV"},"created_on":"2016-07-18T12:28:02.165162Z","tags":null,"custom_fields":{"25":{"field_type":"text","name":"Deal","value":"Test","key":"deal","options":[],"is_add_field":true},"26":{"field_type":"date","name":"Date","value":"2016-07-07T18:30:00.000Z","key":"date","options":null,"is_add_field":true}}}
DELETEapi/contacts/companies/{organization_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
HRMS
HRMS provides various HRM related operations using the /hrm resource and related sub-resources. Use HRM for managing new employees, timeoff, and automatic check-ins. You can also use sub-resources to get employees, timeoff, tasks and automatic check-ins related details.
Time Off Policy
Time off Policy Object
GET/api/hrm/organization/settings/timeoff-policy/{timeoff_policy_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
number of days after which new hire can apply for leave
Returns
If the call succeeds, the timeoff policy object is returned with all the information about the timeoff policy.
Update Time Off Policy
PATCH/api/hrm/organization/settings/timeoff-policy/{timeoff_policy_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Sample Request
{"id":71,"name":"test","policy_effective_date":"2016-05-31","total_timeoff":30,"schedule":71,"timeoff_interval":15,"is_public":true,"timeoff_type":"D","timeoff_disply_type":"D","day_hours":9,"policy_renew_type":"YF","total_employees":3,"modified_on":"2016-06-02T12:32:24.887566Z","is_active":false,"is_default":false,"assigned_users":[{"id":202,"label_txt":"GT","image":null,"full_name":"Geo Test 12","email":"geo.jacob12@adhome.com","upcoming_birthday":null},{"id":76,"label_txt":"GY","image":null,"full_name":"Geo Yahoo","email":"geojacobm6@yahoo.com","upcoming_birthday":null},{"id":77,"label_txt":"Go","image":null,"full_name":"Geo outlook","email":"geojacobm6@outlook.com","upcoming_birthday":null}]}
Sample Response
{"id":71,"name":"test","policy_effective_date":"2016-05-31","total_timeoff":30,"schedule":71,"timeoff_interval":15,"is_public":true,"timeoff_type":"D","timeoff_disply_type":"D","day_hours":9,"policy_renew_type":"YF","total_employees":3,"modified_on":"2016-07-25T07:04:23.225067Z","is_active":false,"is_default":false,"assigned_users":[{"id":202,"label_txt":"GT","image":null,"full_name":"Geo Test 12","email":"geo.jacob12@adhome.com","upcoming_birthday":null},{"id":76,"label_txt":"GY","image":null,"full_name":"Geo Yahoo","email":"geojacobm6@yahoo.com","upcoming_birthday":null},{"id":77,"label_txt":"Go","image":null,"full_name":"Geo outlook","email":"geojacobm6@outlook.com","upcoming_birthday":null}]}
Returns
If the call succeeds, the timeoff policy object is returned with all the information about the updated timeoff policy.
Delete Time Off Policy
DELETE/api/hrm/organization/settings/timeoff-policy/{timeoff_policy_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Time Off Requests
GET/api/hrm/people/{id}/time-off-requestHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
[{"id":208,"start_date":"2016-06-22","end_date":"2016-06-24","time_off_policy":1,"status":"AP","modified_on":"2016-06-22T11:57:19.317340Z","act_on":"2016-06-22T11:57:19.294813Z","comment":"this is a leave application","modified_by":{"url":"/users/1","image":"https://pexels.com/image.jpg","id":1,"full_name":"Sathish Venkat","email":"sathish@adhome.com","label_txt":"SV"},"days_of_leave":3.0,"activities":[{"id":443,"act_on":"2016-06-22T11:57:36.295290Z","action_type":"replied","action_field":"comment","verb":"replied","class_name":"replied","organization_id":1,"created_on":"2016-06-22T11:57:36.295290Z","is_deleted":false,"actor":{"url":"/users/1","image":"https://example.com/image.jpg","id":"1","email":"sathish@adhome.com","full_name":"Sathish Venkat","label_txt":"SV"},"action_obj":{"id":"208","ctype":"employeetimeoff"},"source_obj":{"comment_detail":"hello test","id":"126","ctype":"hrmcomment"},"target_obj":null},{"id":444,"act_on":"2016-06-22T11:57:47.566159Z","action_type":"replied","action_field":"comment","verb":"replied","class_name":"replied","organization_id":1,"created_on":"2016-06-22T11:57:47.566159Z","is_deleted":false,"actor":{"url":"/users/1","image":"https://example.com/image.jpg","id":"1","email":"sathish@adhome.com","full_name":"Sathish Venkat","label_txt":"SV"},"action_obj":{"id":"208","ctype":"employeetimeoff"},"source_obj":{"comment_detail":"hello test2","id":"127","ctype":"hrmcomment"},"target_obj":null}],"can_approve":true,"created_by":{"url":"/users/274","image":"https://example.com/mage.jpg","id":274,"full_name":"Ajith Paul","email":"ajith.paul@adhome.com","label_txt":"AP"},"created_on":"2016-06-22T11:57:19.296021Z","policy_detail":{"is_expired":false,"id":1,"name":"adhome"},"entered_by":{"url":"/users/1","image":"https://example.com/image.jpg","id":1,"full_name":"Sathish Venkat","email":"sathish@adhome.com","label_txt":"SV"},"is_entered":true}]
API endpoint for the list of all time-off requests made by the employee.
PATCHapi/hrm/people/{people_id}/files/activateHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"file_ids":[234],"is_shared":true}
Delete Document
DELETEapi/hrm/people/{people_id}/files/{file_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Tasks
Lists all the tasks assigned to the employee
Task Object
GETapi/hrm/people/{id}/tasksHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":141,"title":"Task to aravind","description":"Finish it","created_on":"2016-01-14T12:21:47.924548Z","due_date":null,"assigned_to":{"user_id":11,"id":32,"full_name":"Aravind dsSpring"},"related_to":null,"task_type":"G","timeoff_id":"None","can_edit":true,"created_by":{"url":"/users/1","image":"https://twprofile.s3.amazonaws.com/image.jpg","id":1,"full_name":"SathishVenkat","email":"sathish@adhome.com","label_txt":"SV"},"task_url":"tasks/11","default_policy_id":null}
POSTapi/hrm/people/{id}/tasksHTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"title":"Test task","assigned_to":224,"due_date":"2016-07-01","description":"This is a test task."}
Sample Response
{"id":297,"title":"Test task","description":"This is a test task.","created_on":"2016-07-13T06:11:24.679141Z","due_date":"2016-07-01","assigned_to":{"user_id":274,"id":224,"full_name":"Ajith Paul M"},"related_to":null,"task_type":"G","timeoff_id":"None","can_edit":true,"created_by":{"url":"/users/1","image":"https://twprofile.s3.amazonaws.com/image.jpg","id":1,"full_name":"Sathish Venkat","email":"sathish@adhome.com","label_txt":"SV"},"task_url":"tasks/274","default_policy_id":null}
Update Task
Sample Request
PUTapi/hrm/people/{profile_id}/tasks/{task_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
{"id":297,"title":"Test tasks","description":"This is a test task.","created_on":"2016-07-13T06:11:24.679141Z","due_date":"2016-07-06","assigned_to":8,"related_to":null,"task_type":"G","timeoff_id":"None","can_edit":true,"created_by":{"url":"/users/1","image":"https://twprofile.s3.amazonaws.com/image.jpg","id":1,"full_name":"Sathish Venkat","email":"sathish@adhome.com","label_txt":"SV"},"task_url":"tasks/274","default_policy_id":null}
Sample Response
{"id":297,"title":"Test tasks","description":"This is a test task.","created_on":"2016-07-13T06:11:24.679141Z","due_date":"2016-07-06","assigned_to":{"user_id":96,"id":8,"full_name":"alok vats"},"related_to":null,"task_type":"G","timeoff_id":"None","can_edit":true,"created_by":{"url":"/users/1","image":"https://twprofile.s3.amazonaws.com/image.jpg","id":1,"full_name":"Sathish Venkat","email":"sathish@adhome.com","label_txt":"SV"},"task_url":"tasks/96","default_policy_id":null}
Returns
If the call succeeds, it will return the task object. If any of the fields have invalid values, it will throw an error.
Delete Task
Sample Request
DELETEapi/hrm/people/{profile_id}/tasks/{task_id}HTTP/1.1Accept:application/jsonAuthorization:Token "YOUR ACCESS TOKEN"
HTTP/1.1 200 OK
Content-Type: application/json
Automatic Check-ins
Automatic Check-ins Object
Samle Object
{"id":34,"question":"This is a checkin question","is_active":true,"is_public":true,"created_by":1,"schedule_day":"EFR","schedule_time":"ED","people_count":2,"assigned_to":[{"id":30,"emp_type":null,"start_date":"2015-10-26","job_description":null,"emp_status":"AV","job_title":"dev","user":{"url":"/users/201","image":"","id":201,"full_name":"Geo Jacob","email":"geo.jacob11@adhome.com","label_txt":"GJ"}},{"id":224,"emp_type":"FT","start_date":"2016-05-13","job_description":null,"emp_status":"AV","job_title":"Developer","user":{"url":"/users/274","image":"https://twprofile.s3.amazonaws.com/image.jpg","id":274,"full_name":"Ajith Paul","email":"ajith.paul@adhome.com","label_txt":"AP"}}],"created_on":"2016-07-13T09:59:44.840079Z","scheduled_on":null,"is_responded":true}


[gecode-users] Version 3.x.x and Microsoft Visual C++ 2005 Express Edition
David Rijsman
David.Rijsman at quintiq.com
Thu Sep 3 15:03:06 CEST 2009
Hi,
I noticed that version 3.0.x no longer supports the Microsoft Visual C++ 2005 Express Edition and indeed the code does not compile using this compiler. Although the Microsoft Visual C++ 2008 Express Edition is free it is no option for me to use this one.
I also noticed it is pretty easy to get the code compiling, running and passing al the tests again using the Microsoft Visual C++ 2005 Express Edition. All one has to do is change in "thread.hh"
#ifdef GECODE_THREADS_WINDOWS
#include <windows.h>
#endif
into
#ifdef GECODE_THREADS_WINDOWS
#ifndef _WIN32_WINNT
# define _WIN32_WINNT 0x400
#endif
#include <windows.h>
#endif
this works for 32 bits and 64 bits machine. Perhaps this can be added in the next releases?
thanks,
David J Rijsman
Algorithm Lead
Quintiq
T +31 (0)73 691 07 39
F +31 (0)73 691 07 54
M +31 (0)62 127 68 29
E david.rijsman at quintiq.nl
I www.quintiq.com
More information about the gecode-users
mailing list


Validate Your Age!
Please verify that you are 21 years or older, before continuing.
Yes
No
'T
E
N
D
E
R
Randomize
Quiz


During sleep, the normal breathing rate is 18-26 times per minute. The average and the highest value exceeding 18-26 can be judged as high the respiratory rate. If it exceeds a certain range, breathing difficulties may occur. If the condition is serious, must be sent to hospital for rescue in time.
The medical term for the number of breaths per minute. One up and down of the chest is a breath, that is, one breath in and one out.
①Breathing too slow: The rhythm of the breathing is neat but the frequency is less than 10 beats/min, which is common in the end of life or before the apnea. Menstruation, metabolic diseases, or excessive intake of certain medicine can also cause hypothermia due to inhibition of the respiratory center.
②Breathing too fast: shortness of breath, feeling respiratory distress.
For Difficulty breathing, the emergency actions at home are as follows:
①Keep quiet and avoid emotional stress to prevent worse breathing difficulties.
②Take a semi-recumbent position or a sitting position to reduce fatigue and oxygen consumption.
③Keep indoor air fresh and ventilated.
④Give a light diet and encourage patients to eat more vegetables and fruits to replenish the body's water.
⑤Appropriate phlegm and antispasmodic medicine such as Bibiping, aminophylline, etc. to keep the respiratory tract smooth.
⑥When the condition is serious, send patients to a nearby hospital for rescue.


Jeff Kynaston
Full stack web application developer
See my portfolio at
http://jeffkynaston.com
Github
Portfolio


For further information please visit CS-Script official home page: http://www.csscript.net
This document provides only information regarding CS-Script engine. It does not cover in any way general C# programming issues. These are some links you can visit for more information about C# programming:
http://www.csharp-station.com
Tutorials and articles on C#
http://www.codeproject.com
Free Source Code and Tutorials
http://www.c-sharpcorner.com
A free source site for C# and .NET developers
http://www.developerfusion.co.uk
Tutorials and source code
http://www.csharphelp.com
C# portal with articles, message forum and sample source code
http://msdn.microsoft.com/vcsharp
Microsoft Visual C# .NET -The home of C#
http://msdn.microsoft.com/netframework
Download of the Microsoft .NET Framework SDK
http://samples.gotdotnet.com/quickstart
Microsoft .NET Framework SDK QuickStart Tutorials


Drexel battles Rosemont College
by Associated PressRosemont College vs. Drexel (3-3)
John A Daskalakis Center, Philadelphia; Monday, 11:30 a.m. EST
BOTTOM LINE: The Drexel Dragons will be taking on the Ravens of Division III Rosemont College. Drexel is coming off an 86-74 win at home over Bryant in its most recent game.
BIG MEN ON CAMPUS: James Butler has averaged 14.8 points and 12.2 rebounds this year for Drexel. Zach Walton is also a key contributor, with 14 points per game.JUMPING FOR JAMES: In six appearances this season, Drexel’s James Butler has shot 60 percent.
 The Dragons offense scored 76.3 points per matchup in those 12 contests.
___
For more AP college basketball coverage: https://apnews.com/Collegebasketball and http://twitter.com/AP_Top25
___
This was generated by Automated Insights, http://www.automatedinsights.com/ap, using data from STATS LLC, https://www.stats.com


The <md-content>
directive is a container element useful for scrollable content. It achieves
this by setting the CSS overflow
property to auto
so that content can properly scroll.
In general, <md-content>
components are not designed to be nested inside one another. If
possible, it is better to make them siblings. This often results in a better user experience as
having nested scrollbars may confuse the user.
In some cases, you may wish to apply the md-no-momentum
class to ensure that Safari's
momentum scrolling is disabled. Momentum scrolling can cause flickering issues while scrolling
SVG icons and some other components.
Additionally, we now also offer the md-no-flicker
class which can be applied to any element
and uses a Webkit-specific filter of blur(0px)
that forces GPU rendering of all elements
inside (which eliminates the flicker on iOS devices).
_Note: Forcing an element to render on the GPU can have unintended side-effects, especially related to the z-index of elements. Please use with caution and only on the elements needed._
Add the [layout-padding]
attribute to make the content padded.


Michael Wong's Blog Index
Culture Blog 1
Technical Blog 1
Technical Blog 2
Culture Blog 3
Technical Blog 3


Welcome to CMPT 295
Introduction to Computer Systems
My name is Anne Lavergne
Lecture 1 – Course Overview + Activity
Today’s Menu [1]
- COVID Protocol
- What is CMPT 295?
- What shall we learn in CMPT 295?
- What should we already know?
- Which resources do we have to help us learn all this?
- Activity
- Questions
COVID protocol – About masks! [2]
Here is a message from Elizabeth Elle, SFU Vice Provost Learning & Teaching, based on the public health order:
- Unless we have an approved exemption, we are required to wear a mask in all indoor common and learning spaces, including classrooms. Please come to campus prepared with a non-medical mask.
- If we forget our mask, disposable masks are available from Student Central in Burnaby and at the information desks in Vancouver and Surrey.
- If we require a mask exemption in the classroom for medical reasons, please contact the Centre for Accessible Learning at<EMAIL_ADDRESS>for assistance.
- If we are requesting mask exemptions on other protected grounds, such as religion, we can contact the Office of Student Support, Rights and Responsibilities at<EMAIL_ADDRESS>- And please remember to be kind to each other. If we see someone not wearing a mask, do not make assumptions or judgments as that person may be exempt.
What is CMPT 295? [3]
- The goal of this course is to give us, software developers, a look “under the hood” of a computer, i.e., to learn about Computer Systems => microprocessor, memory, …
- This knowledge will allow us to become more efficient software developers
The big picture: [4]
In CMPT 295, we shall learn …
- C programs (.c) – How our code and data are represented in memory
- Assembly programs (.s) – How a compiler transforms our code into machine executable code in several steps
- Object (.o) file an executable – How a compiler optimizes (or not) our code
- Computer executes it – How a microprocessor is designed and how it executes our code
- CPU, Memory – How memory is designed
How all of this can impact the execution of our code How to write more efficient and reliable code:
- Be able to find and eliminate bugs more efficiently
- Be able to ascertain program performance and tune it by optimizing our code
What should we already know? [5]
- Write correct C programs
- C constructs (variables, data types, pointers, if/else, switch/case, for/while/do while, function calls, arrays, …)
- What a stack is and how it works
- Binary/decimal/hexadecimal numeral systems
- How to convert from one numeral system to the others
- Basic arithmetic
- Perform Boolean algebra using and, or, not, xor
Which resources do we have? [6]
- Course web site https://www2.cs.sfu.ca/CourseCentral/295/alavergn/index.html
- Textbook
- Computer Systems: A Programmer’s Perspective, 3/E, Randal E. Bryant, David R. O’Hallaron, Pearson, 2016
- Labs in CSIL (Computing Science Instructional Lab)
- Target Machine: CSIL workstation
- Linux platform (or OS)
- C programming language
- x86-64 assembly language
- gcc compiler
- Target Machine: CSIL workstation
- Instructor and TAs - Office hours
Activity - Discover our resources [7]
Instructions:
- Form teams of 3 to 4
- Do Lecture 1 Activity on CourSys
- Time: about 30 minutes
Question? [8]
Blank page.
Summary [9]
- COVID Protocol
- What is CMPT 295?
- What shall we learn in CMPT 295?
- What should we already know?
- Which resources do we have to help us learn all this?
- Activity
- Questions
Next Lecture [10]
- Data Representation
- Representing information as bits
- To get ready for our next lecture:
- Optional: Read Chapter 1 of textbook
- Not so optional: Read Section 2.1 of Chapter 2
- Download the partial lecture notes found under the column Lecture in the table on our course web site


C.4 Issues
Squid's delay pools are often useful, but not
perfect. You need to be aware of a few drawbacks and limitations
before you use them.
C.4.1 Fairness
One of the most important things to realize about the current delay
pools implementation is that it does nothing to guarantee fairness
among all users of a single bucket. This is especially important for
aggregate buckets (where sharing is high), but less so for individual
buckets (where sharing is low).
Squid generally services requests in order of increasing file
descriptors. Thus, a request whose server-side TCP connection has a
lower file descriptor may receive more bandwidth from a shared bucket
than it should.
C.4.2 Application Versus Transport Layer
Bandwidth shaping and
rate limiting usually
operate at the network transport layer. There, the flow of packets
can be controlled very precisely. Delay pools, however, are
implemented in the application layer. Because Squid
doesn't actually send and receive TCP packets (the
kernel does), it has less control over the flow of individual
packets. Rather than controlling the transmission and receipt of
packets on the wire, Squid controls only how many bytes to read from
the kernel.
This means, for example, that incoming response data is queued up in
the kernel. The TCP/IP stack can buffer some number of bytes that
haven't yet been read by Squid. On most systems, the
default TCP receive buffer size is usually between 32 KB and 64 KB.
In other words, this much data can arrive over the network very
quickly, regardless of anything Squid can do. On the one hand, it
seems silly to read this data slowly even though it is already on
your system. On the other hand, because the client
doesn't receive the whole response right away, it is
likely to postpone any future requests until the delayed responses
are complete.
If you are concerned that the kernel buffers too much server-side
data, you can decrease the TCP receive buffer size with the
tcp_recv_bufsize directive. Even better, your
operating system probably has a way to set this parameter for the
whole system. On NetBSD/FreeBSD/OpenBSD, you can use the sysctl
variable named net.inet.tcp.recvspace. For
Linux, read about /proc/sys/net/ipv4/tcp_rmem in
Documentation/networking/ip-sysctl.txt.
C.4.3 Fixed Subnetting Scheme
The current delay pools implementation assumes that your LAN uses
/24 (class C) subnets, and that all users are in the same /16 (class
B) subnet. This might not be so bad, depending on how your network is
configured. However, it would be nice if the delay pools subnetting
scheme were fully customizable.
If your address space is larger than a /24 and smaller than a 16/,
you can always create a class 3 pool and treat it as a class 2 pool
(that is one of the examples given earlier).
If you use just one class 2 pool with more than 256 users, some users
will share the individual buckets. That might not be so bad, unless
you happen to have a bunch of heavy users fighting over one measly
bucket.
You might also create multiple class 2 pools and use
delay_access rules to divide them up among all
users. The problem with this approach is that you
can't have all users share a single aggregate
bucket. Instead, each subgroup has their own aggregate bucket. You
can't make a single client go through more than one
delay pool.
|


If you don't have pwn tools, or don't want to use them, you can use the builtin python struct for easier memory address formatting
import struct
buf = struct.pack("<I",0xd3adc0d3) # the "<I" is for little endian (it's an i)


module Bigarray: BatBigarray
This module implements multi-dimensional arrays of integers and floating-point numbers, thereafter referred to as ``big arrays''. The implementation allows efficient sharing of large numerical arrays between OCaml code and C or Fortran numerical libraries.
Concerning the naming conventions, users of this module are encouraged
to do open Bigarray
in their source, then refer to array types and
operations via short dot notation, e.g. Array1.t
or Array2.sub
.
Big arrays support all the OCaml ad-hoc polymorphic operations:
=
, <>
, <=
, etc, as well as Pervasives.compare
);Hash
);Pervasives.output_value
and Pervasives.input_value
, as well as the functions from the
Marshal
module).This module implements multi-dimensional arrays of integers and floating-point numbers, thereafter referred to as ``big arrays''. The implementation allows efficient sharing of large numerical arrays between OCaml code and C or Fortran numerical libraries.
Concerning the naming conventions, users of this module are encouraged
to do open Bigarray
in their source, then refer to array types and
operations via short dot notation, e.g. Array1.t
or Array2.sub
.
Big arrays support all the OCaml ad-hoc polymorphic operations:
=
, <>
, <=
, etc, as well as Pervasives.compare
);Hash
);Pervasives.output_value
and Pervasives.input_value
, as well as the functions from the
Marshal
module).This module implements multi-dimensional arrays of integers and floating-point numbers, thereafter referred to as ``big arrays''. The implementation allows efficient sharing of large numerical arrays between OCaml code and C or Fortran numerical libraries.
Concerning the naming conventions, users of this module are encouraged
to do open Bigarray
in their source, then refer to array types and
operations via short dot notation, e.g. Array1.t
or Array2.sub
.
Big arrays support all the OCaml ad-hoc polymorphic operations:
=
, <>
, <=
, etc, as well as Pervasives.compare
);Hash
);Pervasives.output_value
and Pervasives.input_value
, as well as the functions from the
Marshal
module).Bigarray.float32_elt
),Bigarray.float64_elt
),Bigarray.complex32_elt
),Bigarray.complex64_elt
),Bigarray.int8_signed_elt
or Bigarray.int8_unsigned_elt
),Bigarray.int16_signed_elt
or Bigarray.int16_unsigned_elt
),Bigarray.int_elt
),Bigarray.int32_elt
),Bigarray.int64_elt
),Bigarray.nativeint_elt
).type float32_elt=
Bigarray.float32_elt
=
| |
Float32_elt |
type float64_elt=
Bigarray.float64_elt
=
| |
Float64_elt |
type complex32_elt=
Bigarray.complex32_elt
=
| |
Complex32_elt |
type complex64_elt=
Bigarray.complex64_elt
=
| |
Complex64_elt |
type int8_signed_elt=
Bigarray.int8_signed_elt
=
| |
Int8_signed_elt |
type int8_unsigned_elt=
Bigarray.int8_unsigned_elt
=
| |
Int8_unsigned_elt |
type int16_signed_elt=
Bigarray.int16_signed_elt
=
| |
Int16_signed_elt |
type int16_unsigned_elt=
Bigarray.int16_unsigned_elt
=
| |
Int16_unsigned_elt |
type int_elt=
Bigarray.int_elt
=
| |
Int_elt |
type int32_elt=
Bigarray.int32_elt
=
| |
Int32_elt |
type int64_elt=
Bigarray.int64_elt
=
| |
Int64_elt |
type nativeint_elt=
Bigarray.nativeint_elt
=
| |
Nativeint_elt |
type kind'a 'b
=Bigarray.kind 'a 'b
=
| |
Float32 : |
|||
| |
Float64 : |
|||
| |
Int8_signed : |
|||
| |
Int8_unsigned : |
|||
| |
Int16_signed : |
|||
| |
Int16_unsigned : |
|||
| |
Int32 : |
|||
| |
Int64 : |
|||
| |
Int : |
|||
| |
Nativeint : |
|||
| |
Complex32 : |
|||
| |
Complex64 : |
|||
| |
Char : |
(* |
To each element kind is associated an OCaml type, which is
the type of OCaml values that can be stored in the big array
or read back from it. This type is not necessarily the same
as the type of the array elements proper: for instance,
a big array whose elements are of kind
float32_elt contains
32-bit single precision floats, but reading or writing one of
its elements from OCaml uses the OCaml type float , which is
64-bit double precision floats.
The GADT type Using a generalized algebraic datatype (GADT) here allows to write well-typed polymorphic functions whose return type depend on the argument type, such as:
# 160 "src/batBigarray.mliv" | *) |
let float32 : kind float float32_elt
Bigarray.char
.let float64 : kind float float64_elt
Bigarray.char
.let complex32 : kind Complex.t complex32_elt
Bigarray.char
.let complex64 : kind Complex.t complex64_elt
Bigarray.char
.let int8_signed : kind int int8_signed_elt
Bigarray.char
.let int8_unsigned : kind int int8_unsigned_elt
Bigarray.char
.let int16_signed : kind int int16_signed_elt
Bigarray.char
.let int16_unsigned : kind int int16_unsigned_elt
Bigarray.char
.let int : kind int int_elt
Bigarray.char
.let int32 : kind int32 int32_elt
Bigarray.char
.let int64 : kind int64 int64_elt
Bigarray.char
.let nativeint : kind nativeint nativeint_elt
Bigarray.char
.let char : kind char int8_unsigned_elt
float32_elt
and float64_elt
are
accessed using the OCaml type float
. Big arrays of complex kinds
complex32_elt
, complex64_elt
are accessed with the OCaml type
Complex.t
. Big arrays of
integer kinds are accessed using the smallest OCaml integer
type large enough to represent the array elements:
int
for 8- and 16-bit integer bigarrays, as well as OCaml-integer
bigarrays; int32
for 32-bit integer bigarrays; int64
for 64-bit integer bigarrays; and nativeint
for
platform-native integer bigarrays. Finally, big arrays of
kind int8_unsigned_elt
can also be accessed as arrays of
characters instead of arrays of small integers, by using
the kind value char
instead of int8_unsigned
.let kind_size_in_bytes : kind 'a 'b => int
kind_size_in_bytes k
is the number of bytes used to store
an element of type k
.type c_layout=
Bigarray.c_layout
=
| |
C_layout_typ |
(* |
See
Bigarray.fortran_layout . | *) |
type fortran_layout=
Bigarray.fortran_layout
=
| |
Fortran_layout_typ |
(* |
To facilitate interoperability with existing C and Fortran code,
this library supports two different memory layouts for big arrays,
one compatible with the C conventions,
the other compatible with the Fortran conventions.
In the C-style layout, array indices start at 0, and
multi-dimensional arrays are laid out in row-major format.
That is, for a two-dimensional array, all elements of
row 0 are contiguous in memory, followed by all elements of
row 1, etc. In other terms, the array elements at
In the Fortran-style layout, array indices start at 1, and
multi-dimensional arrays are laid out in column-major format.
That is, for a two-dimensional array, all elements of
column 0 are contiguous in memory, followed by all elements of
column 1, etc. In other terms, the array elements at
Each layout style is identified at the type level by the
abstract types | *) |
type layout'a
=Bigarray.layout 'a
=
| |
C_layout : |
|||
| |
Fortran_layout : |
(* |
The type
'a layout represents one of the two supported
memory layouts: C-style if 'a is Bigarray.c_layout , Fortran-style
if 'a is Bigarray.fortran_layout . | *) |
The abstract values c_layout
and fortran_layout
represent
the two supported layouts at the level of values.
let c_layout : layout c_layout
let fortran_layout : layout fortran_layout
module Genarray:{
..}
module Array1:{
..}
module Array2:{
..}
module Array3:{
..}
let genarray_of_array1 : Array1.t 'a 'b 'c => Genarray.t 'a 'b 'c
let genarray_of_array2 : Array2.t 'a 'b 'c => Genarray.t 'a 'b 'c
let genarray_of_array3 : Array3.t 'a 'b 'c => Genarray.t 'a 'b 'c
let array1_of_genarray : Genarray.t 'a 'b 'c => Array1.t 'a 'b 'c
Invalid_argument
if the generic big array
does not have exactly one dimension.let array2_of_genarray : Genarray.t 'a 'b 'c => Array2.t 'a 'b 'c
Invalid_argument
if the generic big array
does not have exactly two dimensions.let array3_of_genarray : Genarray.t 'a 'b 'c => Array3.t 'a 'b 'c
Invalid_argument
if the generic big array
does not have exactly three dimensions.let reshape : Genarray.t 'a 'b 'c =>
array int => Genarray.t 'a 'b 'c
reshape b [|d1;...;dN|]
converts the big array b
to a
N
-dimensional array of dimensions d1
...dN
. The returned
array and the original array b
share their data
and have the same layout. For instance, assuming that b
is a one-dimensional array of dimension 12, reshape b [|3;4|]
returns a two-dimensional array b'
of dimensions 3 and 4.
If b
has C layout, the element (x,y)
of b'
corresponds
to the element x * 3 + y
of b
. If b
has Fortran layout,
the element (x,y)
of b'
corresponds to the element
x + (y - 1) * 4
of b
.
The returned big array must have exactly the same number of
elements as the original big array b
. That is, the product
of the dimensions of b
must be equal to i1 * ... * iN
.Invalid_argument
otherwise.let reshape_1 : Genarray.t 'a 'b 'c => int => Array1.t 'a 'b 'c
Bigarray.reshape
for reshaping to
one-dimensional arrays.let reshape_2 : Genarray.t 'a 'b 'c =>
int => int => Array2.t 'a 'b 'c
Bigarray.reshape
for reshaping to
two-dimensional arrays.let reshape_3 : Genarray.t 'a 'b 'c =>
int => int => int => Array3.t 'a 'b 'c
Bigarray.reshape
for reshaping to
three-dimensional arrays.


I use web languages along with a vast background and knowledge of everything art to bring you what you dream up.
I enjoy code - the mathematical construct of the language of art...
Pretty much just tweet me... @Dr.Apery


{{ define "main" }} {{ "" | safeHTML }}
This page contains temporary content only, related to prototyping, development or just plain experimental.


A permit is required under the Historic Shipwrecks Act 1976 to enter the protected zone.Permits to enter the protected zone can be obtained from the Department of Environment and Resource Management (DERM). An application can be lodged through the "Forms and Documents" field on the right hand side of this page.


# Meta
- Models (concept)
DroneCategory cat-name
Drone cat-fk, name, manu-date, parti-or-not, inserted-timestamp
Pilot name, gender, how-many-races-parti, inserted-timestamp
Competition pilot-fk, drone-fk, distance-in-feet, date-drone-reached-timestamp
- Operations
- GET single
- GET list
- POST add
- PUT update
- PATCH update
- DELETE delete
- OPTIONS check what methods are supported
# Foreword
- Bascically the same conf as the previous project, but a bit more complex.
- Also, we added postgreSQL. Here's the steps
1. Basics
$ brew update && brew install postgresql
$ createuser -dP djrestful
$ createdb -E utf-8 -U djrestful drones
2. Configuration
'ENGINE' : 'django.db.backends.postgresql',
'NAME' : os.environ.get('POSTGRE_DRONE_DB_NAME'),
'USER' : os.environ.get('POSTGRE_DRONE_DB_USER'),
'PASSWORD': os.environ.get('POSTGRE_DRONE_DB_PSWD'),
3. Sync to DB, a few notes here
since I was using sqlite before, you might be better run the initial
updates first (the basic tables like '...content_types'), then run the
new migrations (i.e. drones) (of course, do this AFTER you wrote those models)
4. Checking (check if our database is correctly created)
$ psql --username=djrestful --dbname=drones
drones=> \dt list tables
drones=> \d+ drones_drone check column info
drones=> SELECT * FROM drones_drone;
HyperlinkedModelSerializer | ModelSerializer
- Use hyperlinks to indicate relationships instead of primary key (I think)
# Writing a bunch of serializers for different models
- what's in there
`class Meta` controls what to display,
stuff outside of `Meta`, they do stuff like creating relationships
- some hard parts
- view_name specify what view'd be used when users clicks on it (browse related models)
- SlugRelatedField "represents the target of the relationship"
# Writing views
we're using another high level comparing to `APIView`, that is the generics.
We got two of them: ListCreateAPIView, RetrieveUpdateDestropAPIView, oh! just
remember, this kind of generics did almost all the stuff for us, the basic APIView
implemented methods like `create` & `update`, and the generics (bulit by many Mixins),
did the job like "what HTTP verbs are supported" kind of thing :)
After you've written those views (**List and **Detail), add `ApiRoot`
it basicall serves for the "routes" (list/ list/NUM)
# Writing routes
One root routes,
url(r'^$',
views.ApiRoot.as_view(), name=views.ApiRoot.name),
and the rest is pretty the same
url(r'^drones/$',
views.DroneList.as_view(), name=views.DroneList.name),
url(r'^drones/(?P[0-9]+)$',
views.DroneDetail.as_view(), name=views.DroneDetail.name),
lastly,
add url(r'^', include('drones.urls')), (do NOT add 'namespace=..')
remove 'app_name' in 'drones/urls.py'
----- ----- ----- -----
# Adding constraints
simply add a new 'unique=True' to current 'name' field (DroneCat.. Drone Pilot)
then making migrations
$ ./manage.py makemigrations drones
$ ./manage.py migrate
Testing
~ :8000/drone-categories/
~ :8000/pilots/
# Adding pagination feature
Two ways doing it
pages/4 4th page maybe you have 3 items in page just saying)
offset 4,5 from 4, get 5 a lot more freedom (advanced paging IMHO)
Simply add this to achieve the basic pagination
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE' : 3
}
Adding an upper bound to limit the items in one page
1. Add 'drones/custompagination.py'
2. Then override `LimitOffsetPagination` with `max_limit = 8`
3. Replace the default with 'drones.custompagination.YOUR_CLASS_NAME'
Then you can test it (whether it's browser or httpie)
$ http GET ":8000/drones/"
$ http GET ":8000/drones/?limit=1"
$ http GET ":8000/drones/?offset=2"
$ http GET ":8000/drones/?limit=3&offset=3"
# Adding features like filtering|searching|sorting
New package needed (why 1.0.4? it's (100%) compatible with current djREST(3.6.4))
https://pypi.org/project/django-filter/1.0.4/
remember adding it to 'INSTALLED_APPS' ('django_filters',)
and adding the configurations ('DEFAULT_FILTER_BACKENDS': (.. .. ..))
There are the classes would be used
* rest_framework.filters.SearchFilter
* rest_framework.filters.OrderingFilter
* django_filters.rest_framework.filters.FilterSet
* django_filters.rest_framework.DjangoFilterBackend
Adding stuff to our view functions
Add these {
* filter_fields powered by djfilter (~.rest_...DjangoFilterBackend)
* search_fields powered by djrest (~.filters.OrderingFilter)
* ordering_fields powered by djrest (~.filters.SearchFilter)
}
add three fields above to {
DroneCategoryList filter/order by 'name', search 'name' (O => O..)
DroneCategoryDetail filter/order by 'name', search 'name' (O => O..)
DroneList f|o|s -> name/cat/manu-date/has-it-completed
PilotList f|o|s -> name/gender/races_count
CompetitionList f(customized) o(dist-feet,dist-date) s(nope)
}
Notes on "Adding features like filtering|searching|sorting"
For those props who contains the same fields (aka. 'name')
> filter_fields must be fullname (it's not searching)
> search_fields depends on how you write it (^ OR = OR @ OR $)
About the props in view class
> filter_fields it's a shortcut actually (just like the 'CompetitionFilter')
> search_fields it actually based the built-in admin functionality (?S=XXX)
> ordering_fields (based on serializer_class OR '__all__') or you control it
https://django-filter.readthedocs.io/en/1.1.0/ref/filters.html
> About the 'CompetitionFilter' (<= djfilter.FilterSet)
~ first, we don't need the 'search' feature
~ second, this time we use the FULL (not shortcut) to named the filter fields
+ this time it's a class inherited from 'rest_.. .filters.FilterSet'
and we're also using the filters provided by 'django-filter'
+ DateTimeFilter(
label='WHAT_U_SEE_ABOVE_THE_FILTER_FORM', // '👩 Pilots'
name='THE_ACTUALY_FIELD_NAME_IN_THE_MODEL', // 'drone__name'
lookup_expr='EXPRESSIONS_LIKE_EXACT_CONTAINS_GTE' // 'lte'
)
~ third, as for the 'DateTimeFilter', 'NumberFilter' ...
+ a simple example
- DateTimeFilter <> models.DateTimeFilter
- CharFilter <> models.CharField, models.TextField
~ fourth, the `class Meta` is pretty straightforward
+ model what models were related
+ fields what fields should be displayed at the form
~ lastly, we add the 'filter_class' and the 'ordering_fields'
+ filter_class = CompetitionFilter (customized filter (>filter_fields))
+ ordering_fields (ordering by WHAT)
https://www.django-rest-framework.org/api-guide/filtering/#searchfilter
> Searching behavior
~ ^name starts-with Search 'O' => "Olive", "Oriana"
~ =username exact matches Search 'O' => \ (it has be full name)
~ @ (Full-text, mySQL only)
~ $ (Regex)
Testing it {
since Django REST framework also provided a browser UI
you can test in there and then copy/check the generated URLs/Params
}


Pay back what you owe without the hassle of late fees and interest accrual
Avoid late fees and other charges that normally come with missed payments
Our mission is to provide you peace of mind so you can focus on paying off your current loan without worrying about aditional fees stacking up against you.


apt-sortpkgs - Utility to sort package index files
apt-sortpkgs [-s] [-o=config_string] [-c=config_file] filename... {-v | --version} {-h | --help}
apt-sortpkgs will take an index file (source index or package index) and sort the records so that they are ordered by the package name. It will also sort the internal fields of each record according to the internal sorting rules.
All output is sent to standard output; the input must be a seekable file.
All command line options may be set using the configuration file, the descriptions indicate the configuration option to set. For boolean options you can override the config file by using something like -f-,--no-f, -f=no or several other variations.
-s, --source
Use source index field ordering. Configuration Item: APT::SortPkgs::Source.
-h, --help
Show a short usage summary.
-v, --version
Show the program version.
-c, --config-file
Configuration File; Specify a configuration file to use. The program will read the default configuration file and then this configuration file. If configuration settings need to be set before the default configuration files are parsed specify a file with the APT_CONFIG environment variable. See apt.conf(5) for syntax information.
-o, --option
Set a Configuration Option; This will set an arbitrary configuration option. The syntax is -o Foo::Bar=bar. -o and --option can be used multiple times to set different options.
apt-sortpkgs returns zero on normal operation, decimal 100 on error.
m[blue]APT bug pagem[]s-2u[1]ds+2. If you wish to report a bug in APT, please see /usr/share/doc/debian/bug-reporting.txt or the reportbug(1) command.
Jason Gunthorpe
APT team
APT bug page
%http://bugs.debian.org/src:apt


| Methods' Details |
startAnimation
| void |
| startAnimation( |
[in] double |
nSpeed ); |
- Description
- Start animation sequence of this sprite.
The speed of the animation is given in cycles per second
(where a cycle is defined as one full animation run, i.e. the
full [0,1] range of the XAnimation::render's
t parameter, or a full sequence of sprite bitmaps drawn). Once
an animation is running, the associated
XSpriteCanvas handles screen updates
automatically. That means, changes to position or alpha are
reflected on screen automatically. Please note further that
sprite visibility and animation are unrelated, i.e. a hidden
sprite can have a running animation, which then displays in
the middle of the animation sequence, when a show() is called
later on.
- Parameter nSpeed
- The speed of the animation in cycles per second (where a cycle
is defined as one full animation run, i.e. the full [0,1]
range of the XAnimation::render's t
parameter, or a full sequence of sprite bitmaps drawn).
|
|
stopAnimation
- Description
- Stop the animation sequence.
A subsequent XAnimatedSprite::startAnimation
will commence the sequence at the point where it was stopped
with here. Once an animation is stopped, the associated
XSpriteCanvas does not update changed sprites
anymore.
|
|
resetAnimation
- Description
- Reset the animation sequence to start with the first frame.
If the animation is currently running, the next frame that is
drawn after this method has finished, will be the first
one. Please note that if an animation is not started, the
associated XSpriteCanvas does not update changed
sprites automatically.
|
|
updateAnimation
- Description
- Issue an additional render call to this sprite's
animation.
This method has no effect when called for a bitmap-sequence
sprite. Please note that if an animation is not started, the
associated XSpriteCanvas does not update changed
sprites automatically, but has to be told to do so via
XSpriteCanvas::updateScreen().
|
|
setViewState
- Description
- Changes the view state in place for this sprite's
animation.
The state given here is used when calling the
XAnimation::render() method, or when drawing
the sprite's bitmaps, respectively. There's no need to call
XSpriteCanvas::updateAnimation() after this
method, as it automatically rerenders, if necessary. Please
note that if an animation is not started, the associated
XSpriteCanvas does not update changed sprites
automatically, but has to be told to do so via
XSpriteCanvas::updateScreen().
- Parameter aViewState
- The state given here is used when calling the
XAnimation::render() method, or when drawing
the sprite's bitmaps, respectively.
- Throws
- com::sun::star::lang::IllegalArgumentException
if the view transformation matrix is singular.
|
|
setAll
- Description
- Changes all of the sprite's attributes at one atomic
instance.
This is useful at times where one does not want multiple
redraws for every state change.
Please note that if an animation is not started, the
associated XSpriteCanvas does not update changed
sprites automatically, but has to be told to do so via
XSpriteCanvas::updateScreen().
- Parameter aNewPos
- New left,top output position of the sprite. This position gets
transformed by the view and render state.
- Parameter aViewState
- New view state of the sprite, and part of the transformation
that is applied to aNewPos. The view transformation matrix
must not be singular.
- Parameter aRenderState
- New render state of the sprite, and part of the transformation
that is applied to aNewPos. The render transformation matrix
must not be singular.
- Parameter nAlpha
- New alpha value of the sprite. This value must be within the
[0,1] range.
- Parameter bUpdateAnimation
- Whether this method should implicitely call
XSpriteCanvas::updateAnimation or not.
- Throws
- com::sun::star::lang::IllegalArgumentException
if one of the passed parameters does not lie in the specified,
permissible range.
|
|
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


Graphs are generated dynamically through the R package
knitr.
The source code to these posts are available on
GitHub.
Latest posts
{% for post in site.posts limit:10 %}
- {{ post.date | date_to_string }} » {{ post.title }}
{% endfor %}
- Read More...
{% for post in paginator.posts limit:1 %}
{{post.date | date: "%Y-%m-%d"}}
{{ post.content }}
{% endfor %}
## Copyright
All the content in this website is licensed under
[CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/).