Folding@home (FAH or F@H) is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.
By downloading the software and linking up to the Folding@Home Network, you volunteer the computing power of your desktop or laptop to a global effort to map out the proteins of the Corona Virus – a crucial step towards finding the vaccine. Folding@Home costs nothing and requires little more than running the software in the background.
As part of your participation, you can expect rewards for your contributed computing power to the project that are automatically distributed to your BitGreen wallet upon every 3 hour snapshot – make sure that you have set your F@H username correctly to include your BITG wallet address!
| # | Transaction-ID | Amount | Recipients | Timestamp |
|---|---|---|---|---|
| {{loop.index}} | {{ _24hr_txs.txid }} | {{ _24hr_txs.transacted }} | {{ _24hr_txs.total_workers }} | {{ _24hr_txs.timestamp }} |
Download: 7 days 14 days 1 month
Join the discussion on Discord


Maharashtra governor's action arbitrary, malafide: Shiv Sena to Supreme Court
The party has filed a writ petition in the apex court against the state governor, a Sena functionary said.
by PTIMumbai: The Shiv Sena on Saturday approached the Supreme Court against the "arbitrary and malafide actions/decisions" of Maharashtra governor Bhagat Singh Koshyari in swearing in Devendra Fadnavis as the chief minister.
The party has filed a writ petition in the apex court against the state governor, a Sena functionary said here.


Russian 'Popeye' has 3 pounds of 'dead' muscle removed after DIY bodybuilding injections
by Madeline FarberA 23-year-old bodybuilder in Russia, who has been nicknamed “Popeye” due to his abnormally large biceps, has recently undergone the first of at least three surgeries to remove roughly 3 pounds of “dead” muscle tissue after he injected a dangerous enhancement substance — Synthol — into his biceps and triceps.
Kirill Tereshin used “petroleum jelly” injections, or Synthol oil, to enhance the size of his arms, which, before surgery, were said to be 24-inch around, the New York Post reported.
MAN'S BEDDING WAS MAKING HIM SICK IN ODD CASE OF 'FEATHER DUVET LUNG'
Tereshin, who was reportedly told he could die or face amputation if he did not have the corrective procedure, was also encouraged to have the surgery by a Russian plastic surgery activist named Alana Mamaeva, according to the outlet. The 32-year-old reportedly helped to raise money for the surgery, which occurred at Sechenov Moscow State Medical University.
The surgery was performed by Dr. Dmitry Melnikov, who, according to the Post, estimated that Tereshin injected three liters — about 100 ounces — of the petroleum-jelly like enhancement substance into his arms. About 75 percent of what the doctor described as “scar tissue with fragments of muscles” was removed during the first of possibly three surgeries.
WOMAN'S 'VELVETY' PALMS LEAD TO UNSETTLING DIAGNOSIS
“It saturated the muscle tissues, blocked blood flow,” Melnikov said, according to the Post. “As a result, the tissue dies and gets replaced with a scar which is as tough as a tree.”
He added: “We have seen petroleum jelly injected into breasts, buttocks and other parts of the female body,” he said. “We are warning that it is extremely dangerous.”
Synthol oil is purely cosmetic, causing the muscles to “balloon” and appear bigger than they really are. The substance is injected deeply into the muscle and typically consists of oil, benzyl alcohol, and lidocaine, according to a 2009 review on the usage of Synthol in bodybuilding.
CLICK HERE TO GET THE FOX NEWS APP
The substance, which is most often used in the triceps, biceps, deltoids and calf muscles, has “some serious drawbacks,” per the review. Most obviously, the substance can cause muscles to become abnormally shaped, but “The side effects of Synthol are manifold and they can also cause damage of nerves, oil embolic of the pulmonary, occlusion of the pulmonary artery, myocardial infarction, cerebral stroke, and infectious complications,” according to the review.
Melnikov said his patient was “lucky” that the injections did not affect any other parts of his body.


Batumi is a popular tourist destination known for its varying weather–it is a bustling seaside resort during warm seasons, but it can get entirely covered in snow during winter.
Much of Batumi's economy revolves around tourism and gambling, but the city is also an important sea port and includes industries like shipbuilding, food processing and light manufacturing. Since 2010, Batumi has been transformed by the construction of modern high-rise buildings, as well as the restoration of classical 19th-century edifices lining its historic Old Town.
;
Batumi is the second-largest city of Georgia, located on the coast of the Black Sea in the country's southwest; bordering Turkey.
Here's a really nice video about Batumi:


ppmtopj(1) ppmtopj(1) NAME ppmtopj - convert a portable pixmap to an HP PaintJet file SYNOPSIS ppmtopj [-gamma val] [-xpos val] [-ypos val] [-back dark|lite] [-rle] [-center] [-render none|snap|bw|dither|diffuse|monodither|monodif‐ fuse|clusterdither|monoclusterdither] [ppmfile] DESCRIPTION Reads a portable pixmap as input and converts it into a format suitable to be printed by an HP PaintJet printer. For best results, the input file should be in 8-color RGB form; i.e. it should have only the 8 binary combinations of full-on and full-off pri‐ maries. You could get this by sending the input file through ppmquant -map with a map file such as: P3 8 1 255 0 0 0 255 0 0 0 255 0 0 0 255 255 255 0 255 0 255 0 255 255 255 255 255 Or else you could use use ppmdither -red 2 -green 2 -blue 2. OPTIONS -rle Run length encode the image. (This can result in larger images) -back Enhance the foreground by indicating if the background is light or dark compated to the foreground. -render alg Use an internal rendering algorithm (default dither). -gamma int Gamma correct the image using the integet parameter as a gamma (default 0). -center Center the image to an 8.5 by 11 page -xpos pos Move by pos pixels in the x direction. -ypos pos Move by pos pixels in the y direction. REFERENCES HP PaintJet XL Color Graphics Printer User's Guide SEE ALSO pnmdepth(1), ppmquant(1), ppmdither(1), ppm(5) BUGS Most of the options have not been tested because of the price of the paper. AUTHOR Copyright (C) 1991 by Christos Zoulas. 13 July 1991 ppmtopj(1)


{% extends 'partials/_layout.html' %} {% load static %} {% include "partials/_head.html" %}
Some quick example text to build on the card title.
Some quick example text to build on the card title.
Some quick example text to build on the card title.
Some quick example text to build on the card title.


This example is built with d3.js, data from Modern Information Retrieval and licensed under Apache License


20 March 2001
Disease Outbreak Reported
As of 15 March 2001, WHO has reported a total of 436 suspected cases, including 11 deaths in Nyanje area, Petauke District, Eastern Province. Laboratory investigations confirm Yersinia pestis. The existence of bubonic plague in humans was preceded by a fall in the rodent population in the area. Patients were treated with specific antibiotic therapy.
A team of epidemiologists and bacteriologists were sent to investigate, provide technical support and supplies. Health education messages on the prevention of the disease were distributed in the affected area and surveillance intensified.


Accordion
Alerts
Badge
Button Group
Carousel
Collapse
List Group
Menu
Message
Navs & Tabs
Offcanvas
Panel
Placeholders
Popovers
Scrollspy
Spinners
Toasts
Tool Tips
Card
Card


| WinAPI Wrapper |
The CriticalSection class simplifies the use of critical sections, otherwise known as process-local mutexes (in Windows a mutex is a global, inter-process synchronization object while critical section operates between threads of a single process). See Critical Section Objects for details.
The CriticalSection class has the following functions:
| Function | Related WinAPI function | Description |
|---|---|---|
| CriticalSection | InitializeCriticalSection | Allocates and initializes critical section object. |
| ~CriticalSection | DeleteCriticalSection | Destroys critical section object./td> |
| Enter | EnterCriticalSection | Enters critical section (locks the object). |
| Leave | LeaveCriticalSection | Leaves critical section (unlocks the object). |
| TryEnter | TryEnterCriticalSection | Enters critical section if it is not already entered by another thread. |
WinAPI Wrapper, WinAPI Wrapper classes, Synchronization Overview, Synchronization Functions, Critical Section Objects


For more information about tracking, please see our User Guide.
GET /tracking_settings/click¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/tracking_settings/click' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update Google Analytics Settings¶ ↑
This endpoint allows you to update your current setting for Google Analytics.
For more information about using Google Analytics, please refer to Googles URL Builder and their article on “Best Practices for Campaign Building”.
We default the settings to Googles recommendations. For more information, see Google Analytics Demystified.
You can track a variety of the actions your recipients may take when interacting with your emails including opening your emails, clicking on links in your emails, and subscribing to (or unsubscribing from) your emails.
For more information about tracking, please see our User Guide.
PATCH /tracking_settings/google_analytics¶ ↑
var request = sg.emptyRequest() request.body = { "enabled": true, "utm_campaign": "website", "utm_content": "", "utm_medium": "email", "utm_source": "sendgrid.com", "utm_term": "" }; request.method = 'PATCH' request.path = '/v3/tracking_settings/google_analytics' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve Google Analytics Settings¶ ↑
This endpoint allows you to retrieve your current setting for Google Analytics.
For more information about using Google Analytics, please refer to Googles URL Builder and their article on “Best Practices for Campaign Building”.
We default the settings to Googles recommendations. For more information, see Google Analytics Demystified.
You can track a variety of the actions your recipients may take when interacting with your emails including opening your emails, clicking on links in your emails, and subscribing to (or unsubscribing from) your emails.
For more information about tracking, please see our User Guide.
GET /tracking_settings/google_analytics¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/tracking_settings/google_analytics' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update Open Tracking Settings¶ ↑
This endpoint allows you to update your current settings for open tracking.
Open Tracking adds an invisible image at the end of the email which can track email opens. If the email recipient has images enabled on their email client, a request to SendGrids server for the invisible image is executed and an open event is logged. These events are logged in the Statistics portal, Email Activity interface, and are reported by the Event Webhook.
You can track a variety of the actions your recipients may take when interacting with your emails including opening your emails, clicking on links in your emails, and subscribing to (or unsubscribing from) your emails.
For more information about tracking, please see our User Guide.
PATCH /tracking_settings/open¶ ↑
var request = sg.emptyRequest() request.body = { "enabled": true }; request.method = 'PATCH' request.path = '/v3/tracking_settings/open' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Get Open Tracking Settings¶ ↑
This endpoint allows you to retrieve your current settings for open tracking.
Open Tracking adds an invisible image at the end of the email which can track email opens. If the email recipient has images enabled on their email client, a request to SendGrids server for the invisible image is executed and an open event is logged. These events are logged in the Statistics portal, Email Activity interface, and are reported by the Event Webhook.
You can track a variety of the actions your recipients may take when interacting with your emails including opening your emails, clicking on links in your emails, and subscribing to (or unsubscribing from) your emails.
For more information about tracking, please see our User Guide.
GET /tracking_settings/open¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/tracking_settings/open' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update Subscription Tracking Settings¶ ↑
This endpoint allows you to update your current settings for subscription tracking.
Subscription tracking adds links to the bottom of your emails that allows your recipients to subscribe to, or unsubscribe from, your emails.
You can track a variety of the actions your recipients may take when interacting with your emails including opening your emails, clicking on links in your emails, and subscribing to (or unsubscribing from) your emails.
For more information about tracking, please see our User Guide.
PATCH /tracking_settings/subscription¶ ↑
var request = sg.emptyRequest() request.body = { "enabled": true, "html_content": "html content", "landing": "landing page html", "plain_content": "text content", "replace": "replacement tag", "url": "url" }; request.method = 'PATCH' request.path = '/v3/tracking_settings/subscription' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve Subscription Tracking Settings¶ ↑
This endpoint allows you to retrieve your current settings for subscription tracking.
Subscription tracking adds links to the bottom of your emails that allows your recipients to subscribe to, or unsubscribe from, your emails.
You can track a variety of the actions your recipients may take when interacting with your emails including opening your emails, clicking on links in your emails, and subscribing to (or unsubscribing from) your emails.
For more information about tracking, please see our User Guide.

Your user's account information includes the user's account type and reputation.
Keeping your user profile up to date is important. This will help SendGrid to verify who you are as well as contact you should we need to.
For more information about your user profile:
GET /user/account¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/account' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve your credit balance¶ ↑
This endpoint allows you to retrieve the current credit balance for your account.
Your monthly credit allotment limits the number of emails you may send before incurring overage charges. For more information about credits and billing, please visit our Clssroom.
GET /user/credits¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/credits' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update your account email address¶ ↑
This endpoint allows you to update the email address currently on file for your account.
Keeping your user profile up to date is important. This will help SendGrid to verify who you are as well as contact you should we need to.
For more information about your user profile:
PUT /user/email¶ ↑
var request = sg.emptyRequest() request.body = { "email"<EMAIL_ADDRESS>}; request.method = 'PUT' request.path = '/v3/user/email' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve your account email address¶ ↑
This endpoint allows you to retrieve the email address currently on file for your account.
Keeping your user profile up to date is important. This will help SendGrid to verify who you are as well as contact you should we need to.
For more information about your user profile:
GET /user/email¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/email' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update your password¶ ↑
This endpoint allows you to update your password.
Keeping your user profile up to date is important. This will help SendGrid to verify who you are as well as contact you should we need to.
For more information about your user profile:
PUT /user/password¶ ↑
var request = sg.emptyRequest() request.body = { "new_password": "new_password", "old_password": "old_password" }; request.method = 'PUT' request.path = '/v3/user/password' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update a user's profile¶ ↑
This endpoint allows you to update your current profile details.
Keeping your user profile up to date is important. This will help SendGrid to verify who you are as well as contact you should we need to.
For more information about your user profile:
It should be noted that any one or more of the parameters can be updated via the PATCH /user/profile endpoint. The only requirement is that you include at least one when you PATCH.
PATCH /user/profile¶ ↑
var request = sg.emptyRequest() request.body = { "city": "Orange", "first_name": "Example", "last_name": "User" }; request.method = 'PATCH' request.path = '/v3/user/profile' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Get a user's profile¶ ↑
Keeping your user profile up to date is important. This will help SendGrid to verify who you are as well as contact you should we need to.
For more information about your user profile:
GET /user/profile¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/profile' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Cancel or pause a scheduled send¶ ↑
This endpoint allows you to cancel or pause an email that has been scheduled to be sent.
If the maximum number of cancellations/pauses are added, HTTP 400 will be returned.
The Cancel Scheduled Sends feature allows the customer to cancel a scheduled send based on a Batch ID included in the SMTPAPI header.Scheduled sends cancelled less than 10 minutes before the scheduled time are not guaranteed to be cancelled.
POST /user/scheduled_sends¶ ↑
var request = sg.emptyRequest() request.body = { "batch_id": "YOUR_BATCH_ID", "status": "pause" }; request.method = 'POST' request.path = '/v3/user/scheduled_sends' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve all scheduled sends¶ ↑
This endpoint allows you to retrieve all cancel/paused scheduled send information.
The Cancel Scheduled Sends feature allows the customer to cancel a scheduled send based on a Batch ID included in the SMTPAPI header.Scheduled sends cancelled less than 10 minutes before the scheduled time are not guaranteed to be cancelled.
GET /user/scheduled_sends¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/scheduled_sends' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update user scheduled send information¶ ↑
This endpoint allows you to update the status of a scheduled send
for the given batch_id
.
The Cancel Scheduled Sends feature allows the customer to cancel a scheduled send based on a Batch ID included in the SMTPAPI header.Scheduled sends cancelled less than 10 minutes before the scheduled time are not guaranteed to be cancelled.
PATCH /user/scheduled_sends/{batch_id}¶ ↑
var request = sg.emptyRequest() request.body = { "status": "pause" }; request.method = 'PATCH' request.path = '/v3/user/scheduled_sends/{batch_id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve scheduled send¶ ↑
This endpoint allows you to retrieve the cancel/paused scheduled
send information for a specific batch_id
.
The Cancel Scheduled Sends feature allows the customer to cancel a scheduled send based on a Batch ID included in the SMTPAPI header.Scheduled sends cancelled less than 10 minutes before the scheduled time are not guaranteed to be cancelled.
GET /user/scheduled_sends/{batch_id}¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/scheduled_sends/{batch_id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Delete a cancellation or pause of a scheduled send¶ ↑
This endpoint allows you to delete the cancellation/pause of a scheduled send.
The Cancel Scheduled Sends feature allows the customer to cancel a scheduled send based on a Batch ID included in the SMTPAPI header.Scheduled sends cancelled less than 10 minutes before the scheduled time are not guaranteed to be cancelled.
DELETE /user/scheduled_sends/{batch_id}¶ ↑
var request = sg.emptyRequest() request.method = 'DELETE' request.path = '/v3/user/scheduled_sends/{batch_id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update Enforced TLS settings¶ ↑
This endpoint allows you to update your current Enforced TLS settings.
The Enforced TLS settings specify whether or not the recipient is required to support TLS or have a valid certificate. See the SMTP Ports User Guide for more information on opportunistic TLS.
Note: If either setting is enabled and the recipient does not support TLS or have a valid certificate, we drop the message and send a block event with TLS required but not supported as the description.
PATCH /user/settings/enforced_tls¶ ↑
var request = sg.emptyRequest() request.body = { "require_tls": true, "require_valid_cert": false }; request.method = 'PATCH' request.path = '/v3/user/settings/enforced_tls' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve current Enforced TLS settings.¶ ↑
This endpoint allows you to retrieve your current Enforced TLS settings.
The Enforced TLS settings specify whether or not the recipient is required to support TLS or have a valid certificate. See the SMTP Ports User Guide for more information on opportunistic TLS.
Note: If either setting is enabled and the recipient does not support TLS or have a valid certificate, we drop the message and send a block event with TLS required but not supported as the description.
GET /user/settings/enforced_tls¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/settings/enforced_tls' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update your username¶ ↑
This endpoint allows you to update the username for your account.
Keeping your user profile up to date is important. This will help SendGrid to verify who you are as well as contact you should we need to.
For more information about your user profile:
PUT /user/username¶ ↑
var request = sg.emptyRequest() request.body = { "username": "test_username" }; request.method = 'PUT' request.path = '/v3/user/username' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve your username¶ ↑
This endpoint allows you to retrieve your current account username.
Keeping your user profile up to date is important. This will help SendGrid to verify who you are as well as contact you should we need to.
For more information about your user profile:
GET /user/username¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/username' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update Event Notification Settings¶ ↑
This endpoint allows you to update your current event webhook settings.
If an event type is marked as true
, then the event webhook
will include information about that event.
SendGrids Event Webhook will notify a URL of your choice via HTTP POST with information about events that occur as SendGrid processes your email.
Common uses of this data are to remove unsubscribes, react to spam reports, determine unengaged recipients, identify bounced email addresses, or create advanced analytics of your email program.

If an event type is marked as true
, then the event webhook
will include information about that event.
SendGrids Event Webhook will notify a URL of your choice via HTTP POST with information about events that occur as SendGrid processes your email.
Common uses of this data are to remove unsubscribes, react to spam reports, determine unengaged recipients, identify bounced email addresses, or create advanced analytics of your email program.
GET /user/webhooks/event/settings¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/webhooks/event/settings' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Test Event Notification Settings¶ ↑
This endpoint allows you to test your event webhook by sending a fake event notification post to the provided URL.
SendGrids Event Webhook will notify a URL of your choice via HTTP POST with information about events that occur as SendGrid processes your email.
Common uses of this data are to remove unsubscribes, react to spam reports, determine unengaged recipients, identify bounced email addresses, or create advanced analytics of your email program.
POST /user/webhooks/event/test¶ ↑
var request = sg.emptyRequest() request.body = { "url": "url" }; request.method = 'POST' request.path = '/v3/user/webhooks/event/test' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Create a parse setting¶ ↑
This endpoint allows you to create a new inbound parse setting.
The inbound parse webhook allows you to have incoming emails parsed, extracting some or all of the content, and then have that content POSTed by SendGrid to a URL of your choosing. For more information, please see our User Guide.
POST /user/webhooks/parse/settings¶ ↑
var request = sg.emptyRequest() request.body = { "hostname": "myhostname.com", "send_raw": false, "spam_check": true, "url": "http://email.myhosthame.com" }; request.method = 'POST' request.path = '/v3/user/webhooks/parse/settings' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve all parse settings¶ ↑
This endpoint allows you to retrieve all of your current inbound parse settings.
The inbound parse webhook allows you to have incoming emails parsed, extracting some or all of the contnet, and then have that content POSTed by SendGrid to a URL of your choosing. For more information, please see our User Guide.
GET /user/webhooks/parse/settings¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/webhooks/parse/settings' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update a parse setting¶ ↑
This endpoint allows you to update a specific inbound parse setting.
The inbound parse webhook allows you to have incoming emails parsed, extracting some or all of the contnet, and then have that content POSTed by SendGrid to a URL of your choosing. For more information, please see our User Guide.
PATCH /user/webhooks/parse/settings/{hostname}¶ ↑
var request = sg.emptyRequest() request.body = { "send_raw": true, "spam_check": false, "url": "http://newdomain.com/parse" }; request.method = 'PATCH' request.path = '/v3/user/webhooks/parse/settings/{hostname}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve a specific parse setting¶ ↑
This endpoint allows you to retrieve a specific inbound parse setting.
The inbound parse webhook allows you to have incoming emails parsed, extracting some or all of the contnet, and then have that content POSTed by SendGrid to a URL of your choosing. For more information, please see our User Guide.
GET /user/webhooks/parse/settings/{hostname}¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/user/webhooks/parse/settings/{hostname}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Delete a parse setting¶ ↑
This endpoint allows you to delete a specific inbound parse setting.
The inbound parse webhook allows you to have incoming emails parsed, extracting some or all of the contnet, and then have that content POSTed by SendGrid to a URL of your choosing. For more information, please see our User Guide.
DELETE /user/webhooks/parse/settings/{hostname}¶ ↑
var request = sg.emptyRequest() request.method = 'DELETE' request.path = '/v3/user/webhooks/parse/settings/{hostname}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieves Inbound Parse Webhook statistics.¶ ↑
This endpoint allows you to retrieve the statistics for your Parse Webhook useage.
SendGrid's Inbound Parse Webhook allows you to parse the contents and attachments of incomming emails. The Parse API can then POST the parsed emails to a URL that you specify. The Inbound Parse Webhook cannot parse messages greater than 20MB in size, including all attachments.
There are a number of pre-made integrations for the SendGrid Parse Webhook which make processing events easy. You can find these integrations in the Library Index.
GET /user/webhooks/parse/stats¶ ↑
var request = sg.emptyRequest() request.queryParams["aggregated_by"] = 'day' request.queryParams["limit"] = 'test_string' request.queryParams["start_date"] = '2016-01-01' request.queryParams["end_date"] = '2016-04-01' request.queryParams["offset"] = 'test_string' request.method = 'GET' request.path = '/v3/user/webhooks/parse/stats' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
WHITELABEL¶ ↑
Create a domain whitelabel.¶ ↑
This endpoint allows you to create a whitelabel for one of your domains.
If you are creating a domain whitelabel that you would like a subuser to use, you have two options: 1. Use the “username” parameter. This allows you to create a whitelabel on behalf of your subuser. This means the subuser is able to see and modify the created whitelabel. 2. Use the Association workflow (see Associate Domain section). This allows you to assign a whitelabel created by the parent to a subuser. This means the subuser will default to the assigned whitelabel, but will not be able to see or modify that whitelabel. However, if the subuser creates their own whitelabel it will overwrite the assigned whitelabel.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
POST /whitelabel/domains¶ ↑
var request = sg.emptyRequest() request.body = { "automatic_security": false, "custom_spf": true, "default": true, "domain": "example.com", "ips": [ "<IP_ADDRESS>", "<IP_ADDRESS>" ], "subdomain": "news", "username"<EMAIL_ADDRESS>}; request.method = 'POST' request.path = '/v3/whitelabel/domains' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
List all domain whitelabels.¶ ↑
This endpoint allows you to retrieve a list of all domain whitelabels you have created.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
GET /whitelabel/domains¶ ↑
var request = sg.emptyRequest() request.queryParams["username"] = 'test_string' request.queryParams["domain"] = 'test_string' request.queryParams["exclude_subusers"] = 'true' request.queryParams["limit"] = '1' request.queryParams["offset"] = '1' request.method = 'GET' request.path = '/v3/whitelabel/domains' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Get the default domain whitelabel.¶ ↑
This endpoint allows you to retrieve the default whitelabel for a domain.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
URI Parameters¶ ↑
| URI Parameter | Type | Description | |—|—|—| | domain | string |The domain to find a default domain whitelabel for. |
GET /whitelabel/domains/default¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/whitelabel/domains/default' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
List the domain whitelabel associated with the given user.¶ ↑
This endpoint allows you to retrieve all of the whitelabels that have been assigned to a specific subuser.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
Domain whitelabels can be associated with (i.e. assigned to) subusers from a parent account. This functionality allows subusers to send mail using their parent's whitelabels. To associate a whitelabel with a subuser, the parent account must first create the whitelabel and validate it. The the parent may then associate the whitelabel via the subuser management tools.
For more information on whitelabeling, please see our User Guide
URI Parameters¶ ↑
| URI Parameter | Type | Description | |—|—|—| | username | string | Username of the subuser to find associated whitelabels for. |
GET /whitelabel/domains/subuser¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/whitelabel/domains/subuser' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Disassociate a domain whitelabel from a given user.¶ ↑
This endpoint allows you to disassociate a specific whitelabel from a subuser.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
Domain whitelabels can be associated with (i.e. assigned to) subusers from a parent account. This functionality allows subusers to send mail using their parent's whitelabels. To associate a whitelabel with a subuser, the parent account must first create the whitelabel and validate it. The the parent may then associate the whitelabel via the subuser management tools.
For more information on whitelabeling, please see our User Guide
URI Parameters¶ ↑
| URI Parameter | Type | Required? | Description | |—|—|—|—| | username | string | required | Username for the subuser to find associated whitelabels for. |
DELETE /whitelabel/domains/subuser¶ ↑
var request = sg.emptyRequest() request.method = 'DELETE' request.path = '/v3/whitelabel/domains/subuser' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update a domain whitelabel.¶ ↑
This endpoint allows you to update the settings for a domain whitelabel.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
PATCH /whitelabel/domains/{domain_id}¶ ↑
var request = sg.emptyRequest() request.body = { "custom_spf": true, "default": false }; request.method = 'PATCH' request.path = '/v3/whitelabel/domains/{domain_id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve a domain whitelabel.¶ ↑
This endpoint allows you to retrieve a specific domain whitelabel.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
GET /whitelabel/domains/{domain_id}¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/whitelabel/domains/{domain_id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Delete a domain whitelabel.¶ ↑
This endpoint allows you to delete a domain whitelabel.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
DELETE /whitelabel/domains/{domain_id}¶ ↑
var request = sg.emptyRequest() request.method = 'DELETE' request.path = '/v3/whitelabel/domains/{domain_id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Associate a domain whitelabel with a given user.¶ ↑
This endpoint allows you to associate a specific domain whitelabel with a subuser.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
Domain whitelabels can be associated with (i.e. assigned to) subusers from a parent account. This functionality allows subusers to send mail using their parent's whitelabels. To associate a whitelabel with a subuser, the parent account must first create the whitelabel and validate it. The the parent may then associate the whitelabel via the subuser management tools.
For more information on whitelabeling, please see our User Guide
URI Parameters¶ ↑
| URI Parameter | Type | Description | |—|—|—| | domain_id | integer | ID of the domain whitelabel to associate with the subuser. |
POST /whitelabel/domains/{domain_id}/subuser¶ ↑
var request = sg.emptyRequest() request.body = { "username"<EMAIL_ADDRESS>}; request.method = 'POST' request.path = '/v3/whitelabel/domains/{domain_id}/subuser' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Add an IP to a domain whitelabel.¶ ↑
This endpoint allows you to add an IP address to a domain whitelabel.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
URI Parameters¶ ↑
| URI Parameter | Type | Description | |—|—|—| | id | integer | ID of the domain to which you are adding an IP |
POST /whitelabel/domains/{id}/ips¶ ↑
var request = sg.emptyRequest() request.body = { "ip": "<IP_ADDRESS>" }; request.method = 'POST' request.path = '/v3/whitelabel/domains/{id}/ips' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Remove an IP from a domain whitelabel.¶ ↑
This endpoint allows you to remove a domain's IP address from that domain's whitelabel.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
URI Parameters¶ ↑
| URI Parameter | Type | Description | |—|—|—| | id | integer | ID of the domain whitelabel to delete the IP from. | | ip | string | IP to remove from the domain whitelabel. |
DELETE /whitelabel/domains/{id}/ips/{ip}¶ ↑
var request = sg.emptyRequest() request.method = 'DELETE' request.path = '/v3/whitelabel/domains/{id}/ips/{ip}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Validate a domain whitelabel.¶ ↑
This endpoint allows you to validate a domain whitelabel. If it fails, it will return an error message describing why the whitelabel could not be validated.
A domain whitelabel allows you to remove the via or sent on behalf of message that your recipients see when they read your emails. Whitelabeling a domain allows you to replace sendgrid.net with your personal sending domain. You will be required to create a subdomain so that SendGrid can generate the DNS records which you must give to your host provider. If you choose to use Automated Security, SendGrid will provide you with 3 CNAME records. If you turn Automated Security off, you will be given 2 TXT records and 1 MX record.
For more information on whitelabeling, please see our User Guide
URI Parameters¶ ↑
| URI Parameter | Type | Description | |—|—|—| | id | integer |ID of the domain whitelabel to validate. |
POST /whitelabel/domains/{id}/validate¶ ↑
var request = sg.emptyRequest() request.method = 'POST' request.path = '/v3/whitelabel/domains/{id}/validate' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Create an IP whitelabel¶ ↑
This endpoint allows you to create an IP whitelabel.
When creating an IP whitelable, you should use the same subdomain that you used when you created a domain whitelabel.
A IP whitelabel consists of a subdomain and domain that will be used to generate a reverse DNS record for a given IP. Once SendGrid has verified that the appropriate A record for the IP has been created, the appropriate reverse DNS record for the IP is generated.
For more information, please see our User Guide.
POST /whitelabel/ips¶ ↑
var request = sg.emptyRequest() request.body = { "domain": "example.com", "ip": "<IP_ADDRESS>", "subdomain": "email" }; request.method = 'POST' request.path = '/v3/whitelabel/ips' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve all IP whitelabels¶ ↑
This endpoint allows you to retrieve all of the IP whitelabels that have been createdy by this account.
You may include a search key by using the “ip” parameter. This enables you to perform a prefix search for a given IP segment (e.g. “192.”).
A IP whitelabel consists of a subdomain and domain that will be used to generate a reverse DNS record for a given IP. Once SendGrid has verified that the appropriate A record for the IP has been created, the appropriate reverse DNS record for the IP is generated.
For more information, please see our User Guide.
GET /whitelabel/ips¶ ↑
var request = sg.emptyRequest() request.queryParams["ip"] = 'test_string' request.queryParams["limit"] = '1' request.queryParams["offset"] = '1' request.method = 'GET' request.path = '/v3/whitelabel/ips' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve an IP whitelabel¶ ↑
This endpoint allows you to retrieve an IP whitelabel.
A IP whitelabel consists of a subdomain and domain that will be used to generate a reverse DNS record for a given IP. Once SendGrid has verified that the appropriate A record for the IP has been created, the appropriate reverse DNS record for the IP is generated.
For more information, please see our User Guide.
GET /whitelabel/ips/{id}¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/whitelabel/ips/{id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Delete an IP whitelabel¶ ↑
This endpoint allows you to delete an IP whitelabel.
A IP whitelabel consists of a subdomain and domain that will be used to generate a reverse DNS record for a given IP. Once SendGrid has verified that the appropriate A record for the IP has been created, the appropriate reverse DNS record for the IP is generated.
For more information, please see our User Guide.
DELETE /whitelabel/ips/{id}¶ ↑
var request = sg.emptyRequest() request.method = 'DELETE' request.path = '/v3/whitelabel/ips/{id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Validate an IP whitelabel¶ ↑
This endpoint allows you to validate an IP whitelabel.
A IP whitelabel consists of a subdomain and domain that will be used to generate a reverse DNS record for a given IP. Once SendGrid has verified that the appropriate A record for the IP has been created, the appropriate reverse DNS record for the IP is generated.
For more information, please see our User Guide.
POST /whitelabel/ips/{id}/validate¶ ↑
var request = sg.emptyRequest() request.method = 'POST' request.path = '/v3/whitelabel/ips/{id}/validate' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Create a Link Whitelabel¶ ↑
This endpoint allows you to create a new link whitelabel.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
POST /whitelabel/links¶ ↑
var request = sg.emptyRequest() request.body = { "default": true, "domain": "example.com", "subdomain": "mail" }; request.queryParams["limit"] = '1' request.queryParams["offset"] = '1' request.method = 'POST' request.path = '/v3/whitelabel/links' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve all link whitelabels¶ ↑
This endpoint allows you to retrieve all link whitelabels.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
GET /whitelabel/links¶ ↑
var request = sg.emptyRequest() request.queryParams["limit"] = '1' request.method = 'GET' request.path = '/v3/whitelabel/links' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve a Default Link Whitelabel¶ ↑
This endpoint allows you to retrieve the default link whitelabel.
Default link whitelabel is the actual link whitelabel to be used when sending messages. If there are multiple link whitelabels, the default is determined by the following order: <ul> <li>Validated link whitelabels marked as “default”</li> <li>Legacy link whitelabels (migrated from the whitelabel wizard)</li> <li>Default SendGrid link whitelabel (i.e. 100.ct.sendgrid.net)</li> </ul>
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
GET /whitelabel/links/default¶ ↑
var request = sg.emptyRequest() request.queryParams["domain"] = 'test_string' request.method = 'GET' request.path = '/v3/whitelabel/links/default' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve Associated Link Whitelabel¶ ↑
This endpoint allows you to retrieve the associated link whitelabel for a subuser.
Link whitelables can be associated with subusers from the parent account. This functionality allows subusers to send mail using their parent's linke whitelabels. To associate a link whitelabel, the parent account must first create a whitelabel and validate it. The parent may then associate that whitelabel with a subuser via the API or the Subuser Management page in the user interface.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
GET /whitelabel/links/subuser¶ ↑
var request = sg.emptyRequest() request.queryParams["username"] = 'test_string' request.method = 'GET' request.path = '/v3/whitelabel/links/subuser' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Disassociate a Link Whitelabel¶ ↑
This endpoint allows you to disassociate a link whitelabel from a subuser.
Link whitelables can be associated with subusers from the parent account. This functionality allows subusers to send mail using their parent's linke whitelabels. To associate a link whitelabel, the parent account must first create a whitelabel and validate it. The parent may then associate that whitelabel with a subuser via the API or the Subuser Management page in the user interface.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
DELETE /whitelabel/links/subuser¶ ↑
var request = sg.emptyRequest() request.queryParams["username"] = 'test_string' request.method = 'DELETE' request.path = '/v3/whitelabel/links/subuser' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Update a Link Whitelabel¶ ↑
This endpoint allows you to update a specific link whitelabel. You can use this endpoint to change a link whitelabel's default status.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
PATCH /whitelabel/links/{id}¶ ↑
var request = sg.emptyRequest() request.body = { "default": true }; request.method = 'PATCH' request.path = '/v3/whitelabel/links/{id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Retrieve a Link Whitelabel¶ ↑
This endpoint allows you to retrieve a specific link whitelabel.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
GET /whitelabel/links/{id}¶ ↑
var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/whitelabel/links/{id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Delete a Link Whitelabel¶ ↑
This endpoint allows you to delete a link whitelabel.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
DELETE /whitelabel/links/{id}¶ ↑
var request = sg.emptyRequest() request.method = 'DELETE' request.path = '/v3/whitelabel/links/{id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Validate a Link Whitelabel¶ ↑
This endpoint allows you to validate a link whitelabel.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
POST /whitelabel/links/{id}/validate¶ ↑
var request = sg.emptyRequest() request.method = 'POST' request.path = '/v3/whitelabel/links/{id}/validate' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })
Associate a Link Whitelabel¶ ↑
This endpoint allows you to associate a link whitelabel with a subuser account.
Link whitelables can be associated with subusers from the parent account. This functionality allows subusers to send mail using their parent's linke whitelabels. To associate a link whitelabel, the parent account must first create a whitelabel and validate it. The parent may then associate that whitelabel with a subuser via the API or the Subuser Management page in the user interface.
Email link whitelabels allow all of the click-tracked links you send in your emails to include the URL of your domain instead of sendgrid.net.
For more information, please see our User Guide.
POST /whitelabel/links/{link_id}/subuser¶ ↑
var request = sg.emptyRequest() request.body = { "username"<EMAIL_ADDRESS>}; request.method = 'POST' request.path = '/v3/whitelabel/links/{link_id}/subuser' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })


About The Author and This ProjectI am a thirty-something engineer with twenty years of programming experience (I had my first software job at the age of 16, an accounting program). My degree of Master in computer science is earned at the Humboldt University in Berlin. Apart from that I am holding various smaller degrees in sciences (electronics, chemistry), arts (economy, typography) and languages (english, french). I am currently employed at Tektronix in the telecom protocols simulation group. I am looking to switch into the biotech field which is a much more rapidly a changing environment that fits better to my personality - the telecom sector is currently moving rather slowly on the "evolution" path intead of bringing all new "revolution"s. |
The presented project of "mksite.sh" is the last variation in a long series of website formatters ranging from as low as makefile snippets over perl/python-based generation to full-fledged xslt layouting including specialized xml data mining applications incorporating the last of science innovations (e.g xml/g). The "mksite.sh" script has been cut down by intention but still providing large parts of the functionality usually needed with documentation projects as far as I came across them.
Actually I am involved in many many projects around and many even opensource, just google for "guidod" to get a few references. In many cases programmers keep on making up documentation very late in the process of their spare-time project. And in even more cases it consists of a README.TXT and TODO file shipped along with the sources. And in here it is not uncommon that these very basic paragraphs are folded into websites with the same "plain" style - including hardly any navigation help, cross reference or visual feedback.
Of course programmers did what they do best - they created themselves little tools to do the formatting out of a simple input text into the website presentation thereby making it easier about all that presentation stuff. Freshmeat lists more than a 1000 of such website formatters, some bigger some smaller. But they have atleast one problem - they are written in the favourite programming language of the developer that did need documentation for his project. And so did I.
And now here we finally do it differently - a website formatter with no third-party dependencies, interestingly being unique among the 1000 formatters listed at Freshmeat. There's nothing else like this done before. And its design is targetted so that you do not need to read long documentation to get the hints needed for instructing the tool to build the navigation items right - in its heart the "mksite.sh" program still looks like:
cat site.htm > index.html cat index.htm >> index.html


Manage Settings
Navigator display & behavior settings management
Sidebar display & behavior settings management
Search display & behavior settings management
Package manager?


Implements an S3 class for storing and formatting time-of-day values, based on the 'difftime' class.
| Version: | 0.4.2 |
| Imports: | methods, pkgconfig, rlang |
| Suggests: | crayon, lubridate, pillar (≥ 1.1.0), testthat |
| Published: | 2018-03-10 |
| Author: | Kirill Müller [aut, cre], The R Consortium [fnd] |
| Maintainer: | Kirill Müller <krlmlr+r at mailbox.org> |
| BugReports: | https://github.com/tidyverse/hms/issues |
| License: | GPL-3 |
| URL: | https://github.com/tidyverse/hms |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | hms results |
| Reference manual: | hms.pdf |
| Package source: | hms_0.4.2.tar.gz |
| Windows binaries: | r-devel: hms_0.4.2.zip, r-release: hms_0.4.2.zip, r-oldrel: hms_0.4.2.zip |
| OS X binaries: | r-release: hms_0.4.2.tgz, r-oldrel: hms_0.4.2.tgz |
| Old sources: | hms archive |
| Reverse imports: | AMR, DBItest, feather, haven, odbc, processmapR, progress, readr, RMariaDB, RPostgres, tibbletime, tidyverse |
| Reverse suggests: | bigrquery, DBI, dbx, dplyr, mudata2, scales, tsibble |
Please use the canonical form https://CRAN.R-project.org/package=hms to link to this page.


Web Clients¶
Three sets of web clients are included: FDSN, IRIS web services (IRISws), and SeedLink.
Configuration¶
All web clients are invoked at the command line. Specify channels as a string, string array, or parameter file; the same channel syntax is expected for all web clients and utilities.
FDSN¶
FDSN is a global organization that supports seismology research. The FDSN web protocol offers near-real-time access to data from thousands of instruments across the world.
FDSN queries in SeisIO are highly customizable; see data keywords list and channel id syntax.
-
S = FDSNget(C)
Retrieve data from channels C
in a SeisData structure.
-
S = FDSNsta(C)
Retrieve station/channel info for C
in an empty SeisData structure.
-
H = FDSNevq(T)
Multi-server query for event with origin time(s) closest to T
. Returns a SeisHdr array. T
should be formatted YYYY-MM-DDThh:mm:ss with times in UTC. Incomplete time queries are read to the nearest fully specified time constraint, e.g., FDSNevq(“2001-02-08”) returns the nearest event to 2001-02-08T00:00:00 UTC. If no event is found on any server within one day of the specified search time, FDSNevq exits with an error.
Additional arguments can be passed at the command line for finer control; see the event keywords list in Appendices.
-
V = FDSNevt(T, C)
Get trace data for the event with origin time nearest T
on channels C
. Returns a SeisEvent structure.
IRIS¶
Incorporated Research Institutions for Seismology (IRIS) is a consortium of universities dedicated to the operation of science facilities for the acquisition, management, and distribution of seismological data. IRIS maintains an exhaustive number of data services.
-
S = IRISget(C)
Get near-real-time data from channels in C
. IRISget
is a wrapper to the IRIS timeseries web service. See data keywords list and channel id syntax for options.
- Trace data are de-meaned and stage zero gains are removed.
- Wildcards in channel IDs aren’t allowed.
SeedLink¶
SeedLink is a TCP/IP-based data transmission protocol that allows near-real-time access to data from thousands of geophysical monitoring instruments. See data keywords list and channel id syntax for options.
-
SeedLink!(S, C)
Initiate a SeedLink session in DATA mode to feed data from streams C
to SeisData structure S
. A handle to the TCP connection is appended to S.c
. Data are periodically parsed until the connection is closed. One SeisData object can support multiple connections provided each connection’s streams feed different channels.
close(S.c[i])
ends a SeedLink connection.
!deleteat(S.c, i)
removes a handle to a closed SeedLink connection.
-
S = SeedLink(C)
As above, but a new SeisData object S
is created with a handle to the SeedLink connection in S.c[1]
.
-
T = has_sta(C, url)
Check that station identifiers C
exist at url
. The syntax of C
can be truncated to network and station ids (NN.SSSSS) or a standard id (NN.SSSSS.LL.CC), but only matches on station and network codes.
SeedLink!(... f=0x01)
calls has_sta
before initiating a SeedLink connection.
-
T = has_live_stream(C, url, g=G)
Check that streams with channel identifiers C
have data < G
seconds old at url
. Returns a Boolean array with one entry per channel id.
SeedLink!(... f=0x02)
calls has_live_stream
before initiating a SeedLink connection.


Cryptocurrency is an online store of money shared across a network of computers using blockchain to track transactions. The blockchain is basicly a big public ledger where all of the transactions on the network are stored. What this means in simple terms is that cryptocurrency is money in digital form, that can be used to buy, trade, and transfer across the web. The biggest and first of these was Bitcoin, but many alt coins and tokens have begun to spring up recently, and are worth looking into. Many coins and tokens have other secondary uses, like recording data, running applications or storing files on their network, making them more than just a currency.
It would be easy to ignore crypto, and overlook it as a new fad, or potential bubble ready to pop, but there are so many great new technologies coming out every day related to blockchain and DeFi or decentralized finance. These tools allow us to be our own bank, and can be quite advanced, but also allow us to do things like sending money to relatives overseas without leaving the house. To get started The most important things to know are to do your own research on any coin you may want to purchase (look up the “white paper” on their website!), and avoid panic reactions when working with crypto, for example selling because “It’s crashing down as we speak!” can lead to selling low, and further panic buying at high prices, trying to catch up later.
One of the best strategies for beginners is called DCA, Dollar Cost Averaging, and boils down to buying a set amount of a crypto (ex, $5, $20 or $100), or whatever amount you feel comfortable with possibly losing, each payday, or monthly, or weekly. Whatever you do, do it consistently and stick to the plan. The idea is to keep your average buying price low, and to increase your investment in a slow and steady way.
When buying crypto you don't need to buy a whole "coin" at a time. For example, its possible to start with just $5 of BTC (Bitcoin). Actually, most new investors into bitcoin have less than 0.01 BTC saved up because of its steep price per coin. Every little bit helps, five dollars a month ago could easily turn into fifty dollars with time, inflation, and patience. The following websites can help you get started on your investment into cryptocurrency.
My favorite place to get free bitcoin is on Freebitcoin.com. Their main site is something caled a fountain in crypto cyrcles. A fountain is a site that gives out free crypto in exchange for visiting a site and clicking a button. While it's only 0.2 cents USD, it can add up with time. Freebitcoin.com has been around since 2013 and is transparent in how they move their money. One downside is that you need to have 30,000 satoshi saved up before you withdraw, and at 0.2 cent per hour, that will take a long time. One workaround is to wait until you have a nice stash saved up (over 3,000 satoshi), deposit 30,000 satoshi, and collect 4% interest on your balance for a few days before using the auto withdraw feature when you are ready to trade. There are also many gambling tools available, which is where they make most of their money, so stay clear of the sports betting and hi low games if you do not want to gamble. This site is a free and fun way to get your first cryptocurrency.
Freebitcoin.com also has it's own gambling/gaming themed crypto token for sale called FunFair or FUN token available to buy and sell. My last two tips are to always use your free daily spin from your email for the best returns, and to save your rewards points up for the free BTC bonus rewards to multiply your hourly rolls.
Some coins and tokens, will give you a reward for holding their coin. This is called stakeing, and can act like earning interest at the bank. Stakeing sometimes will cost a little up front, but it works like a savings acount, as long as you leave the money in your wallet, you can earn rewards. Please remember to check the whitepaper on the coins to see the terms you are agreeing to!
A much less complicated way to get interest is by using a trading platform like Gemini that offers earning accounts. The main difference is that stakeing is done on the blockchain, making them decenteralized, and these "earn" accounts are run through a private company.
CryptoCat's Beginners Guide is written by Devon as a web design project. Devon is a full stack web developer in the Denver area. With a focus on building creative, user friendly apps, he is both a great team player, and a natural leader. Devon has a keen eye for detail, and is always ready to learn something new in order to further a project. Leveraging his 5 years experience working in education, Devon knows how to make a solid plan, stick to deadlines and communicate effectively. With a certificate in full stack web development from the University of Denver, Devon enjoys working with new languages and frameworks in order to solve creative problems. To see some past projects, and learn more please visit : devonp702.github.io/home/


.

Syntactically correct sentences can be meaningless
or worse, mean something other than what we intended
"This is grammatically correct, but you probably don't want to do this"
Now that's getting closer!
What if there were some way to enumerate test cases automatically... ;)
This is it. This is the motivation.
The more the computer can understand, the more it can help us.
And I need all the help I can get!
A side effect is "something that happens outside of the function"
rm -rf
Whenever you have an expression that looks like
some_thing = another_thing
Then you can use some_thing and another_thing interchangeably
A phrase that's entirely too fancy
ain't your daddy's int
or ArrayList<String>
or HashMap<String, ArrayList<Object>>
I haven't seen a single map, filter, reduce...
What are those things called...
Yonads? Bronads?

Some of which are actually anti patterns? !?
(Singleton, I'm looking at you)
public final class Main {
public static void main(final String[] args) {
final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
final FizzBuzz myFizzBuzz = (FizzBuzz) context.getBean("standardFizzBuzz");
final FizzBuzzUpperLimitParameter fizzBuzzUpperLimit =
new DefaultFizzBuzzUpperLimitParameter();
myFizzBuzz.fizzBuzz(fizzBuzzUpperLimit.obtainUpperLimitValue());
((ConfigurableApplicationContext) context).close();
}
}
There are no "laws" about OOP
It's a fragile system
Requires a lot of skill and experience to get right
Programming is hard.
Functional programming is like relearning programming over again
I argue that
"Hello" == "Hello"
String a = "Hello";
a == "Hello";
String b = new String("Hello");
a == b;
x == x
foo = x
bar = x
foo == bar
def x
Time.now
end
wat
no really, wat
Immutable Datastructures
Referentially transparent functions
go go go go go go go
Haskell
Consider Haskell


And someone you'll never remember.
You may know many more people today than the average person knew in the year 1800 or 1900. Still, most people alive in your own lifetime will be unknown to you. You won't know them; you won't remember them. They won't know you. They won't remember you.
This need not be a terrible thought. Use it when you feel overwhelmed, as a reminder of what really matters.


Useful tables for 5E Dungeons and Dragons.
| Location | Slow | Normal | Fast |
|---|---|---|---|
| Dungeon | 200 ft/min | 300 ft/min/min | 400 ft/min/min |
| City | 200 ft/min | 300 ft/min | 400 ft/min |
| Province | 2 mi/hr 18 mi/day |
3 mi/hr 24 mi/day |
4 mi/hr 30 mi/day |
| Kingdom | 6 mi/hr 18 mi/day |
6 mi/hr 24 mi/day |
2 mi/hr 30 mi/day |
| Effect | Able to stealth | – | -5 to passive perception |
| Terrain | Visiblity | Noise Level | Audiblity | Weather | Visibility | ||
|---|---|---|---|---|---|---|---|
| Arctic, desert, farmland, or grassland | 6d6 x 10 feet | Quiet | 2d6 x 5 feet | Clear Day | 2 miles | ||
| Forest, swamp, or woodland | 2d8 x 10 feet | Normal | 2d6 x 10 feet | Rain | 1 mile | ||
| Hills or wastelands | 2d10 x 10 feet | Loud | 2d6 x 50 feet | Fog | 100–300 feet | ||
| Jungle | 2d6 x 10 feet | – | – | From a height | x 20 | ||
| Mountains | 4d10 x 10 feet | – | – | – | – |
| Mundane | Bright Light | Dim Light | Duration |
|---|---|---|---|
| Candle | 5 feet | +5 feet | 6 hours |
| Lamp | 15 feet | +30 feet | 6 hours |
| Lantern, bullseye | 60 foot cone | +60 feet | 6 hours |
|
Lantern, hooded
Lowered Hood |
30 feet
- |
+30 feet
+ 5 feet |
6 hours
- |
| Torch | 20 feet | +20 feet | 1 hour |
| Magic | Bright Light | Dim Light | Duration |
| Continual Flame | 20 feet | +20 feet | Until dispelled |
| Dancing Lights | — | 10 feet | 1 minute |
| Faerie Fire | — | 10 feet | 1 minute |
| Flame Blade | 10 feet | + 10 feet | 10 minutes |
| Flaming Sphere | 20 feet | +20 feet | 1 minute |
| Holy Aura | — | 5 feet | 1 minute |
| Light | 20 feet | +20 feet | 1 hour |
| Moonbeam | — | 5 ft cyl | 1 minute |
| Prismatic Wall | 100 feet | +100 feet | 10 minutes |
| Wall of Fire | 60 feet | +60 feet | 1 minute |
| Food and Water Availbality | Survival DC |
|---|---|
| Abundant food and water | 10 |
| Limited food and water sources | 15 |
| Very little, if any, food and water sources | 20 |
| d6 | Summer | Summer-Fall | Fall | Fall Winter |
|---|---|---|---|---|
| 1 | Heavy Winds | Hot | Rain | Cold and Rainy |
| 2 | Very Hot | Warm | Scatter Showers | Clear and Cool |
| 3 | Hot | Clear | Cloudy | Cold and Windy |
| 4 | Warm | Bright | Clear and Cool | Chilly and Overcast |
| 5 | Clear | Scatter Showers | Chilly | Hail |
| 6 | Warm with Cool Breeze | Cloudy | Bright | Light Snowfall |
| d6 | Winter | Winter-Spring | Spring | Spring-Summer |
| 1 | Showers, some Hail | Scattered Showers | Heavy Rain | Cloudy |
| 2 | Scattereed Showers | Snowing | Light Showers | Clear and Cool |
| 3 | Snowing | Freezing | Cloudy | Bright |
| 4 | Freezing | Heavy Rain | Clear and Cool | Windy |
| 5 | Cloudy and Cool | Light Showers | Clear and Cool | Warm |
| 6 | Clear and Cool | Cloudy | Bright | Clear |


Please upload layouts, links, and labels here. File formats need to follow this structures. NOTE: You can not add new projects on the demo server. To do that, you need a stand alone installation.
Create new project


Let us write code that will will be implemented in a virtual puzzle. The size of the puzzle board is N x N, and each tile is either empty or filled in with a 1 x 1 square with a specific colour.
= Original Board
This is the original board. If we rotate this by 90 degrees clockwise, the puzzle board will look like this:
If we allow the blocks to slide down, the puzzle board will look like this:
= SpinAndSlide(Original Board, 1)
Let us define SpinAndSlide as rotating the puzzle board by 90 degrees clockwise and sliding all the coloured tiles to the bottom of the board.
Our goal is to output the puzzle board once SpinAndSlide is applied multiple times onto a given board.
For instance, if we apply SpinAndSlide one more time onto the previous example board, the outcome will look like this:
= SpinAndSlide(Original Board, 2)
First line of input is the size N of the puzzle board. N must be an integer between 1 and 100 inclusive.
Second line of input is M, the number of times you wish to call SpinAndSlide. M must be an integer between 0 and 100 inclusive.
Starting from the third line of input, the original board will be given in N lines.
Each line is made up of N characters and each character that represents a coloured tile is written in capitalised alphabet and if it’s empty, it is represented by ‘.’.
The original set up is always the case in which the blocks are slid to the bottom of the board.
Output the status of the board after SpinAndSlide is executed M number of times across N lines.
Each line needs to be represented by N characters.
If the tile is coloured, the correct capitalised alphabet needs to be in place of the tile, otherwise if empty, ‘.’.
7 2 ....... ....... ...A... ...B... ..ACA.. ..BBB.. .AAAAA.
....... ....... A...... B...... AAA.... BBB.... ACAAA..
Marks will be awarded according to the number of hidden test cases the program passes.
Load widget


Official Statistics
This data on maintained schools and academies covers January to March 2016 (provisional) and September to December 2015 (revised).
MS Word Document , 261KB
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF , 412KB , 10 pages
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
MS Excel Spreadsheet , 12.7MB
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
View online Download CSV 626KB
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
View online Download CSV 5.91MB
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF , 365KB , 19 pages
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF , 110KB , 1 page
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
These statistics of maintained schools and academies inspections in England consist of:
Official statistics are produced impartially and free from political influence.
Published: 29 June 2016


Properties
Private failure
failure: function
Optional method
method: undefined | string
rejected
rejected: boolean = false
resolved
resolved: boolean = false
Private success
success: function
workerId
workerId: number | void
Static Private callCount
callCount: number = 0


Resources loading and initializations routine.
 More...
|
| |
| static void | loadAssets (Game &game) |
| | Load all game assets. More...
|
| |
| template<typename dataType > |
| static void | loadAssetsFromJson (const std::string &dataName, json &paths, std::map< std::string, dataType > &data) |
| | Load assets from a json array. More...
|
| |
Resources loading and initializations routine.
◆ loadAssets()
| void TouhouFanGame::Loader::loadAssets |
( |
Game & |
game | ) |
|
|
static |
Load all game assets.
- Parameters
-
| game | Game state and resources |
◆ loadAssetsFromJson()
template<typename dataType >
| static void TouhouFanGame::Loader::loadAssetsFromJson |
( |
const std::string & |
dataName, |
|
|
json & |
paths, |
|
|
std::map< std::string, dataType > & |
data |
|
) |
| |
|
inlinestatic |
Load assets from a json array.
- Parameters
-
| dataName | The name of the data that are currently loaded |
| paths | Array of json paths |
| data | Map of buffers to load the files in |
◆ loadFile() [1/3]
| bool TouhouFanGame::Loader::loadFile |
( |
sf::Music & |
music, |
|
|
const std::string & |
path |
|
) |
| |
|
static |
Load a music file.
- Parameters
-
| music | Buffer to load the file in |
| path | Path to the file |
- Returns
- Whether the file could be loaded or not
◆ loadFile() [2/3]
| bool TouhouFanGame::Loader::loadFile |
( |
sf::SoundBuffer & |
buffer, |
|
|
const std::string & |
path |
|
) |
| |
|
static |
Load a sound effect file.
- Parameters
-
| buffer | Buffer to load the file in |
| path | Path to the file |
- Returns
- Whether the file could be loaded or not
◆ loadFile() [3/3]
| bool TouhouFanGame::Loader::loadFile |
( |
sf::Texture & |
texture, |
|
|
const std::string & |
path |
|
) |
| |
|
static |
Load a texture file.
- Parameters
-
| texture | Buffer to load the file in |
| path | Path to the file |
- Returns
- Whether the file could be loaded or not
◆ loadSettings()
| void TouhouFanGame::Loader::loadSettings |
( |
Game & |
game | ) |
|
|
static |
Load settings.
- Parameters
-
| game | Game state and resources |
The documentation for this class was generated from the following files:


dgw - basegui - combobox - drawcanvas - hyperhelp - sbuttonbar - seditor - sfilebrowser - sfinddialog - sqlview - statusbar - tablelist - tlistbox - tvmixins - txmixins
dgw::tlistbox - a tablelist based listbox with multiline text support and a search entry.
package require dgw::tlistbox
namespace import ::dgw::tlistbox
tlistbox pathName options
pathName configure -searchentry boolean
pathName configure -browsecmd script
pathName itemconfigure index -option value
pathName itemcget index -option
pathName iteminsert index string
tlistbox - a listbox widget based on the Csaba Nemethis tablelist widget with support for multiline text which can be wrapped. As tlistbox is based on the tablelist widget, it suppports the standard options and commands of tablelist. The tlistbox widget is a two column tablelist widget where the second column is hidden to allow invisible storage of data belonging to a tlistbox item or a cell in tablelist terms.
For convinience, and to make the widget more listbox like, a few options and methods were added in addition to the tablelist options. Beside of standard listbox functionality the user of this widget can display on top of the tlistbox a search entry widget in order to dynamically search the tlistbox.
tlistbox pathName ?options?
Creates and configures a new tlistbox widget using the Tk window id pathName and the given options.
-browsecmd script
Set a command if the user double clicks an entry in the listbox or presses the
Return
key if the widget has the focus. The widget path and the index of the item getting the event are appended to the script call as function arguments. So the implementation of the script should have two arguments in the parameter list as shown in the following example:
proc click {tbl idx} {
puts [$tbl itemcget $idx -text]
}
tlistbox .tl -browsecmd click
Please note that the tablelist options -listvariable should be here a nested list, where each sublist should have at maximum only two values, the first value will be in the first visible cell, the second list value will be placed in the invisible cell. The latter can be retrieved via pathName itemconfigure index -data.
-searchentry boolean
this also in agreement with the manual pages of the standard listbox widget also an item.
The user can enter text in the search widget for searching the tlistbox widget, pressing
Return
in the entry widget invokes the script supplied with the -browsecmd option.Configure the item (first cell of the row) indicated by index with the given value. All options mentioned in cellconfigure of the tablelist manual can be used, such as -text, -foreground, -background. pathName itemcget index option
Retrieves the given option for the item (first cell of the row). See itemconfigure for an explanation of the options.
pathName itemconfigure index option value ?option value ...?
pathName iteminsert index string
Further two listbox like methods are implemented for convinience to configure individual cells, in listbox terms also called items. Please note, that you can also use in a similar way the cellconfigure and cellcget functions of the tablelist widget.
Insert the given string at position index into the tlistbox value. This is just a convinience function which does the same as tablelist insert index {"string"} But here you don't need to add add extra braces. Note, that you can not insert data text into the hidden column with this method and you can only add one element per function call. Example:
tlistbox .tl
.tl insert end {"Hello Text 1"} ;# inserts all
.tl insert end "Hello Text 2" ;# only inserts Hello
.tl iteminsert end "Hello Text 3" ;# inserts all
package require dgw::tlistbox
namespace import ::dgw::tlistbox
set data { {"B. Gates:\nThe Windows Operating System" "Hidden Data"}
{"L. Thorwalds: The Linux Operating System"}
{"C. Nemethi's: Tablelist Programmers Guide"}
{"J. Ousterhout: The Tcl/Tk Programming Language"}
}
proc click {tbl idx} {
puts [$tbl itemcget $idx -text]
}
tlistbox .tl -listvariable data -browsecmd click -searchentry true
lappend data {"A. Anonymous: Some thing else matters"}
.tl insert end {"L. Wall: The Perl Programming Language" "1987"}
pack .tl -side top -fill both -expand yes
.tl itemconfigure end -foreground red
.tl itemconfigure end -data Hello
puts "Hello? [.tl itemcget end -data] - yes!"
Installation is easy you can easily install and use this tlistbox package if you have a working install of:
If you have those Tcl packages installed, you can either use the tlistbox package by sourcing it with:
source /path/to/tlistbox.tcl
, by copying the folder dgw
to a path belonging to your Tcl $auto_path
variable or by installing it as an Tcl-module.
To do this, make a copy of tlistbox.tcl
to a file like tlistbox-0.1.tm
and put this file into a folder named dgw
where the parent folder belongs to your module path.
You must now adapt eventually your Tcl-module path by using in your Tcl code the command:
tcl::tm::path add /parent/dir/
of the dgw
directory.
For details of the latter consult see the manual page of tcl::tm.
Alternatively there is an install option you can use as well.
Try tclsh tlistbox.tcl --install
which should perform the procedure described above automatically.
This requires eventually the setting of an environment variables like if you have no write access to all
your module paths. For instance on my computer I have the following entry in my .bashrc
export TCL8_6_TM_PATH=/home/groth/.local/lib/tcl8.6
If I execute tclsh tlistbox.tcl --install
the file tlistbox.tcl
will be copied to
/home/groth/.local/lib/tcl8.6/dgw/tlistbox-0.1.tm
and is thereafter available for a
package require dgw::tlistbox
.
Example code for this package can be executed by running this file using the following command line:
$ wish tlistbox.tcl --demo
The example code used for this demo can be seen in the terminal by using the following command line:
$ wish tlistbox.tcl --code
The script contains embedded the documentation in Markdown format. To extract the documentation you should use the following command line:
$ tclsh tlistbox.tcl --markdown
This will extract the embedded manual pages in standard Markdown format. You can as well use this markdown output directly to create html pages for the documentation by using the --html flag.
$ tclsh tlistbox.tcl --html
This will directly create a HTML page tlistbox.html
which contains the formatted documentation.
Github-Markdown can be extracted by using the --man switch:
$ tclsh tlistbox.tcl --man
The output of this command can be used to feed a markdown document for conversion into a markdown processor for instance to convert it into a man page a html or a pdf document you could execute the following commands:
# man page
tclsh tlistbox.tcl --man | pandoc -s -f markdown -t man - > tlistbox.n
# html page
tclsh ../tlistbox.tcl --man > tlistbox.md
pandoc -i tlistbox.md -s -o tlistbox.html
# pdf
pandoc -i tlistbox.md -s -o tlistbox.tex
pdflatex tlistbox.tex
The tlistbox widget is based on Csaba Nemethi's great tablelist widget.
The tlistbox widget was written with his help by Detlef Groth, Schwielowsee, Germany.
Copyright (c) 2019 Dr. Detlef Groth, E-mail: detlef(at)dgroth(dot)de
Single-column listbox widget with multiline text and search entry, dgw::tlistbox widget, version 0.2.
Copyright (c) 2019 Dr. Detlef Groth, E-mail: detlef(at)dgroth(dot)de
This library is free software; you can use, modify, and redistribute it for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions.
This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


vignettes/cnn-tuning-with-hyperdrive/cnn-tuning-with-hyperdrive.Rmd
cnn-tuning-with-hyperdrive.Rmd
This article demonstrates how you can efficiently tune hyperparameters for a model using AzureML SDK for R. We will train a Keras model on the CIFAR10 dataset, automate hyperparameter exploration, launch parallel jobs, log our results, and find the best run using AzureML’s HyperDrive service.
Hyperparameters are variable parameters chosen to train a model. Learning rate, number of epochs, and batch size are all examples of hyperparameters.
Using brute-force methods to find the optimal values for parameters can be time-consuming, and poor-performing runs can result in wasted money. To avoid this, HyperDrive automates hyperparameter exploration in a time-saving and cost-effective manner by launching several parallel runs with different configurations and finding the configuration that results in best performance on your primary metric.
Let’s get started with the example to see how it works!
First, we will prepare for training by loading the required package, initializing a workspace, and creating an experiment.
The Workspace
is the top-level resource for the service. It provides us with a centralized place to work with all the artifacts we will create.
You can create a Workspace
object from a local config.json
file
Or load an existing workspace from your Azure Machine Learning account
Now, we will create a compute target for our job to run on. In this example, we are creating a GPU-enabled compute cluster.
cluster_name <- "rcluster"
compute_target <- get_compute(ws, cluster_name = cluster_name)
if (is.null(compute_target))
{
vm_size <- "STANDARD_NC6"
compute_target <- create_aml_compute(workspace = ws, cluster_name = cluster_name,
vm_size = vm_size, max_nodes = 1)
}
wait_for_provisioning_completion(compute_target)
In order to collect and upload run metrics, we need to import the azureml
package at the top of our training script, “cifar10_cnn.R”.
Then, we need to edit our script so that it can log our parameters. We will use the log_metric_to_run
function to log our hyperparameters at the top of the script and to log our primary metric at the bottom of the script.
An Estimator
offers a simple way to launch a training job on a compute target.
Our training script will need the Keras package to run, and we can have it installed in the Docker container where our job will run by passing the package name via the cran_packages
parameter.
In this experiment, we will use four hyperparameters: batch size, number of epochs, learning rate, and decay. In order to begin tuning, we must define the range of values we would like to pull from and how they will be distributed. This is called a parameter space definition and can be created with discrete or continuous ranges.
Discrete hyperparameters are specified as a choice among discrete values represented as a list.
Advanced discrete hyperparameters can also be specified using a distribution. The following distributions are supported:
Continuous hyperparameters are specified as a distribution over a continuous range of values. The following distributions are supported:
Here, we will use the random_parameter_sampling
function to define the search space for each hyperparameter. batch_size
and epochs
will be chosen from discrete sets while lr
and decay
will be drawn from continuous distributions.
Other sampling function options are:
To prevent resource waste, we should detect and terminate poorly performing runs. HyperDrive will do this automatically if we set up an early termination policy.
Here, we will use the bandit_policy
which terminates any runs where the primary metric is not within the specified slack factor with respect to the best performing training run.
Other termination policy options are:
median_stopping_policy(evaluation_interval, delay_evaluation)
truncation_selection_policy(truncation_percentage, evaluation_interval, delay_evaluation)
If no policy is provided, all runs will continue to completion regardless of performance.
Submitting our experiment will start multiple simultaneous runs and return a HyperDriveRun
object that we will use to interface with the run history during and after the job.


Health statement
The quote we have offered you has made some assumptions about you and your circumstances.
In order to continue with your purchase and be covered by this policy, you must agree that, You;
- are medically fit to travel
- are not travelling against medical advice
- are not travelling to seek medical advice, treatment or check-ups
- are not awaiting any surgery or medical procedure
- are not awaiting any tests or investigations, or the results of any tests, or investigations
- do not currently have any undiagnosed symptoms
- have not been given a terminal prognosis
It is also a condition of the cover provided, that you notify us about any change in your health, or the treatment of any of your medical conditions. If you do not advise us, then your cover may become invalid.
I confirm that the information I have provided is correct, to the best of my knowledge and I accept the terms and conditions of this policy


First Tuesday is a bilingual networking forum for start-ups, their mentors, investors and strategic advisers, held every first Tuesday of the month.


Police welcome jail sentences for trio who attacked Market Drayton man in his flat
by Rob SmithPolice have welcomed jail sentences handed down to three men who "viciously" attacked a man in his own home in Market Drayton.
Llewellyn, Supersad and Bratton went to Jamie Jackson's home on April 7 2018 and attacked him with a rock, knocking him unconscious and breaking his jaw.
The three denied grievous bodily harm with intent but were found guilty by a jury at Shrewsbury Crown Court earlier this month.
Following the sentencing, Detective Constable Darren Holmes of Shrewsbury CID said: "We welcome the result and sentencing which reflects the viciousness of the attack on the victim and I hope that it brings some sense of justice to him."
All three men were also ordered not to contact Jamie Jackson for the next ten years.