In this tutorial, we will learn how to recognize handwritten digit using a simple Multi-Layer Perceptron (MLP) in Keras. We will also learn how to build a near state-of-the-art deep neural network model using Python and Keras. A quick Google search about this dataset will give you tons of information - MNIST.
Update: As Python2 faces end of life, the below code only supports Python3.
This tutorial is intended for beginners exploring how to implement a neural network using Keras. We will strictly focus towards the implementation of a neural network without concentrating too much on the theory part. To learn more Deep Learning theory, please visit this awesome website.
Note: Before implementing anything in code, we need to setup our environment to do Deep Learning. Make sure you use the below links to do that and then come here.
1
2
3
4
5
6
7
* What is MNIST dataset?
* How to load and pre-process MNIST dataset in Keras?
* How to use one-hot encoding in Keras?
* How to create a multi-layer perceptron in Keras?
* How to perform Deep Learning on MNIST dataset using Keras?
* How to save history of model and visualize metrics using Keras and matplotlib?
* How to recognize digits in real-images by segmenting each digit and then classifying it?
Dependencies
You will need the following software packages and libraries to follow this tutorial.
- Python
- NumPy
- Matplotlib
- Theano or TensorFlow
- Keras
Pipeline
Any deep learning implementation in Keras follows the below pipeline. It is highly recommended that you go through this first before writing any code so that you get a clear sense of what you are going to achieve through Deep Learning.
Dataset summary
- MNIST - Mixed National Institute of Standards and Technology database.
- Created by - Yaan LeCun, Corinna Cortes, Christopher Burges.
- Image size - 28 x 28 pixel square (784 pixels in total).
- Training images - 60,000
- Testing images - 10,000
- Top error rate - 0.21 (achieved by CNN)
- Dataset size in Keras - 14.6 MB
Note: To look at state-of-the-art accuracies on standard datasets such as MNIST, CIFAR-10 etc., please visit this excellent website by Rodrigo Benenson.
Organize imports
We will need the following python libraries to build our neural network.
- NumPy - To perform matrix/vector operations as we are working with Images (3D data).
- Matplotlib - To visualize what’s happening with our neural network model.
- Keras - To create the neural network model with neurons, layers and other utilities.
1
2
3
4
5
6
7
8
9
10
11
# organize imports
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.datasets import mnist
from keras.utils import np_utils
# fix a random seed for reproducibility
np.random.seed(9)
Define user inputs
In a neural network, there are some variables/parameters that could be tuned to obtain good results. These variables are indeed user inputs which needs some experience to pick up the right one. Such user-defined inputs are given below -
- nb_epoch - Number of iterations needed for the network to minimize the loss function, so that it learns the weights.
- num_classes - Total number of class labels or classes involved in the classification problem.
- batch_size - Number of images given to the model at a particular instance.
- train_size - Number of training images to train the model.
- test_size - Number of testing images to test the model.
- v_length - Dimension of flattened input image size i.e. if input image size is [28x28], then v_length = 784.
1
2
3
4
5
6
7
# user inputs
nb_epoch = 25
num_classes = 10
batch_size = 128
train_size = 60000
test_size = 10000
v_length = 784
Prepare the dataset
- Loading the MNIST dataset is done simply by calling mnist.load_data() function in Keras. It returns two tuples holding (train data and train label) in one tuple, and (test data and test label) in another tuple.
- If you run this function for the first time, it will download the MNIST dataset to a local folder ~/.keras/datasets/mnist.pkl.gz which is 14.6 MB in size.
- After loading the dataset, we need to make it in a way that our model can understand. It means we need to analyze and pre-process the dataset.
- Reshaping - This is needed because, in Deep Learning, we provide the raw pixel intensities of images as inputs to the neural nets. If you check the shape of original data and label, you see that each image has the dimension of [28x28]. If we flatten it, we will get 28x28=784 pixel intensities. This is achieved by using NumPy’s reshape function.
- Data type - After reshaping, we need to change the pixel intensities to float32 datatype so that we have a uniform representation throughout the solution. As grayscale image pixel intensities are integers in the range [0-255], we can convert them to floating point representations using .astype function provided by NumPy.
- Normalize - Also, we normalize these floating point values in the range (0-1) to improve computational efficiency as well as to follow the standards.
1
2
3
4
5
6
# split the mnist data into train and test
(trainData, trainLabels), (testData, testLabels) = mnist.load_data()
print("[INFO] train data shape: {}".format(trainData.shape))
print("[INFO] test data shape: {}".format(testData.shape))
print("[INFO] train samples: {}".format(trainData.shape[0]))
print("[INFO] test samples: {}".format(testData.shape[0]))
[INFO] test data shape: (10000L, 28L, 28L)
[INFO] train samples: 60000
[INFO] test samples: 10000
1
2
3
4
5
6
7
8
9
10
11
12
# reshape the dataset
trainData = trainData.reshape(train_size, v_length)
testData = testData.reshape(test_size, v_length)
trainData = trainData.astype("float32")
testData = testData.astype("float32")
trainData /= 255
testData /= 255
print("[INFO] train data shape: {}".format(trainData.shape))
print("[INFO] test data shape: {}".format(testData.shape))
print("[INFO] train samples: {}".format(trainData.shape[0]))
print("[INFO] test samples: {}".format(testData.shape[0]))
[INFO] test data shape: (10000L, 784L)
[INFO] train samples: 60000
[INFO] test samples: 10000
One Hot Encoding
The class labels for our neural network to predict are numeric digits ranging from (0-9). As this is a multi-label classification problem, we need to represent these numeric digits into a binary form representation called as one-hot encoding.
It simply means that if we have a digit, say 8, then we form a table of 10 columns (as we have 10 digits), and make all the cells zero, except 8. In Keras, we can easily transform numeric value to one-hot encoded representation using np_utils.to_categorical function, which takes in labels and number of class labels as input.
For better understanding, see the one-hot encoded representation of 5, 8 and 3 below.
| d | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 |
|---|---|---|---|---|---|---|---|---|---|---|
| 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 3 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
1
2
3
# convert class vectors to binary class matrices --> one-hot encoding
mTrainLabels = np_utils.to_categorical(trainLabels, num_classes)
mTestLabels = np_utils.to_categorical(testLabels, num_classes)
Create the model
We will use a simple Multi-Layer Perceptron (MLP) as our neural network model with 784 input neurons.
Two hidden layers are used with 512 neurons in hidden layer 1 and 256 neurons in hidden layer 2, followed by a fully connected layer of 10 neurons for taking the probabilities of all the class labels.
ReLU is used as the activation function for hidden layers and softmax is used as the activation function for output layer.
After creating the model, a summary of the model is presented with different parameters involved.
We are still allowed to tune these parameters (called as hyperparameters) based on the model’s performance. In fact, there are algorithms to get the best possible hyper-parameters for our model which could be read here.
1
2
3
4
5
6
7
8
9
10
11
12
13
# create the model
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(256))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(num_classes))
model.add(Activation("softmax"))
# summarize the model
model.summary()
Compile the model
After creating the model, we need to compile the model for optimization and learning. We will use categorical_crossentropy as the loss function (as this is a multi-label classification problem), adam (gradient descent algorithm) as the optimizer and accuracy as our performance metric.
1
2
# compile the model
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
Fit the model
After compiling the model, we need to fit the model with the MNIST dataset. Using model.fit function, we can easily fit the created model. This function requires some arguments that we created above. Train data and train labels goes into 1st and 2nd position, followed by the validation_data/validation_split. Then comes nb_epoch, batch_size and verbose. Verbose is for debugging purposes. To view the history of our model or to analyse how our model gets trained with the dataset, we can use history object provided by Keras.
1
2
# fit the model
history = model.fit(trainData, mTrainLabels, validation_data=(testData, mTestLabels), batch_size=batch_size, nb_epoch=nb_epoch, verbose=2)
Evaluate the model
After fitting the model, the model can be evaluated on the unseen test data. Using model.evaluate function in Keras, we can give test data and test labels to the model and make predictions. We can also use matplotlib to visualize how our model reacts at different epochs on both training and testing data.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# print the history keys
print(history.history.keys())
# evaluate the model
scores = model.evaluate(testData, mTestLabels, verbose=0)
# history plot for accuracy
plt.plot(history.history["acc"])
plt.plot(history.history["val_acc"])
plt.title("Model Accuracy")
plt.xlabel("Epoch")
plt.ylabel("Accuracy")
plt.legend(["train", "test"], loc="upper left")
plt.show()
# history plot for accuracy
plt.plot(history.history["loss"])
plt.plot(history.history["val_loss"])
plt.title("Model Loss")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.legend(["train", "test"], loc="upper left")
plt.show()
# print the results
print("[INFO] test score - {}".format(scores[0]))
print("[INFO] test accuracy - {}".format(scores[1]))
[INFO] test score - 0.0850750412192
[INFO] test accuracy - 0.9815
Results
As you can see, our simple MLP model with just two hidden layers achieves a test accuracy of 98.15%, which is a great thing to achieve on our first attempt. Normally, training accuracy reaches around 90%, but test accuracy determines how well your model generalizes. So, it is important that you get good test accuracies for your problem.
Complete code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# organize imports
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.datasets import mnist
from keras.utils import np_utils
# fix a random seed for reproducibility
np.random.seed(9)
# user inputs
nb_epoch = 25
num_classes = 10
batch_size = 128
train_size = 60000
test_size = 10000
v_length = 784
# split the mnist data into train and test
(trainData, trainLabels), (testData, testLabels) = mnist.load_data()
print("[INFO] train data shape: {}".format(trainData.shape))
print("[INFO] test data shape: {}".format(testData.shape))
print("[INFO] train samples: {}".format(trainData.shape[0]))
print("[INFO] test samples: {}".format(testData.shape[0]))
# reshape the dataset
trainData = trainData.reshape(train_size, v_length)
testData = testData.reshape(test_size, v_length)
trainData = trainData.astype("float32")
testData = testData.astype("float32")
trainData /= 255
testData /= 255
print("[INFO] train data shape: {}".format(trainData.shape))
print("[INFO] test data shape: {}".format(testData.shape))
print("[INFO] train samples: {}".format(trainData.shape[0]))
print("[INFO] test samples: {}".format(testData.shape[0]))
# convert class vectors to binary class matrices --> one-hot encoding
mTrainLabels = np_utils.to_categorical(trainLabels, num_classes)
mTestLabels = np_utils.to_categorical(testLabels, num_classes)
# create the model
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(256))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(num_classes))
model.add(Activation("softmax"))
# summarize the model
model.summary()
# compile the model
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
# fit the model
history = model.fit(trainData, mTrainLabels, validation_data=(testData, mTestLabels), batch_size=batch_size, nb_epoch=nb_epoch, verbose=2)
# print the history keys
print(history.history.keys())
# evaluate the model
scores = model.evaluate(testData, mTestLabels, verbose=0)
# history plot for accuracy
plt.plot(history.history["acc"])
plt.plot(history.history["val_acc"])
plt.title("Model Accuracy")
plt.xlabel("Epoch")
plt.ylabel("Accuracy")
plt.legend(["train", "test"], loc="upper left")
plt.show()
# history plot for accuracy
plt.plot(history.history["loss"])
plt.plot(history.history["val_loss"])
plt.title("Model Loss")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.legend(["train", "test"], loc="upper left")
plt.show()
# print the results
print("[INFO] test score - {}".format(scores[0]))
print("[INFO] test accuracy - {}".format(scores[1]))
Testing the model
In order to test the model, we can use some images from the testing dataset. These are taken from the testing dataset because these images are unknown to our model, so that we can test our model’s performance easily. We will grab few images from those 10,000 test images and make predictions using model.predict_classes function which takes in the flattened raw pixel intensities of the test image.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import matplotlib.pyplot as plt
# grab some test images from the test data
test_images = testData[1:5]
# reshape the test images to standard 28x28 format
test_images = test_images.reshape(test_images.shape[0], 28, 28)
print("[INFO] test images shape - {}".format(test_images.shape))
# loop over each of the test images
for i, test_image in enumerate(test_images, start=1):
# grab a copy of test image for viewing
org_image = test_image
# reshape the test image to [1x784] format so that our model understands
test_image = test_image.reshape(1,784)
# make prediction on test image using our trained model
prediction = model.predict_classes(test_image, verbose=0)
# display the prediction and image
print("[INFO] I think the digit is - {}".format(prediction[0]))
plt.subplot(220+i)
plt.imshow(org_image, cmap=plt.get_cmap('gray'))
plt.show()
[INFO] I think the digit is - 2
[INFO] I think the digit is - 1
[INFO] I think the digit is - 0
[INFO] I think the digit is - 4
Summary
Thus, we have built a simple Multi-Layer Perceptron (MLP) to recognize handwritten digit (using MNIST dataset). Note that we haven’t used Convolutional Neural Networks (CNN) yet. As I told earlier, this tutorial is to make us get started with Deep Learning.
To build a system that is capable of recognizing our own hand-writing, we must take one step further to apply this approach i.e. we need to segment each digit in our hand-written image and then make our model to predict each segmented digit.
In case if you found something useful to add to this article or you found a bug in the code or would like to improve some points mentioned, feel free to write it down in the comments. Hope you found something useful here.


SONGCATCHER
Reviewed by Harvey Karten Lions Gate Films Director:Maggie Greenwald Writer: Maggie Greenwald Cast: Janet McTeer, Emmy Rossum, Jane Adams, E. Katherine Kerr, Pat Carroll, Aidan Quinn
Remember this one from English class?
In London town where I was born, And where I got my learning, Sweet William Green took to his bed, For love of Barbara Allen.
Strangely enough medieval ballads like this one were among my favorite memories from college sophomore English class and what's more I think they could be appealing even to high school kids because a good deal of them are blood-curdling. Poisoning and suicide by lovers ("Barbara Allen"), stabbings of fathers by their sons ("Edward"), drownings on the high seas because of predicted storms ignored by seamen ("Sir Patrick Spens") pop up among other casualties. Then again, a modern kid would want the ballads set to rap and that would kind of destroy the lovely lilt that always undercut the subversive nature of the words. In Maggie Greenwald's exquisitely sensitive and sincere film "Songcatcher," the title character laments the fact that people today may read the words to the songs, but what good are mere statements without the music that makes them soar? Ms. Greenwald, whose previous and largely ignored film "The Ballad of Little Jo" (about a woman in 1866, disgraced by her out-of- wedlock baby, who runs to the West and like Yentl pretends she's a man), comes across once again. With the help of "Little Jo"'s music composer David Mansfield Greenwald has fashioned a film that's a revelation. With a superlative cast acting the roles of mountain people who react to a city slicker in their midst, "Songcatcher" could forever alter your impression of hillbillies.
Filmed on location in the western mountains of North Carolina north of Asheville, "Songcatcher" centers on Janet McTeer in the role of Dr. Lily Penleric who, upon being passed over in 1907 for a promotion to full professor of music (in favor of a male outsider) becomes a feminist albeit in a less aggressive manner than did Suzi Amis's title character in "The Ballad of Little Jo." She quits her job and heads for the hills, aiming to capture Appalachian music from its source and that music's relationship to the Scotch- Irish ballads that were anonymously composed between 1200 and 1700 and passed on through the generations. Taking up residence in a snug wooden cabin with her schoolteacher sister Elna (Jane Adams), she is well on her way to writing her book when she hears the words to several ballads beautifully performed by a teenage girl, Deladis Slocumb (Emmy Rossum). Lily realizes straight away that these ballads are in the pure form not yet known by so-called outlanders (those who do not live in these Appalachian communities). She transcribes the notes and records the songs on a primitive cylinder to be placed by one of those Victrolas you see in the RCA ads now and then.
Two other people change her life as dramatically. One is Viney Butler (Pat Carroll) in an Earth-mother role, shotgun in hand, who knocks the city out of Lily by commanding her to assist in a bloody childbirth. The other is a man with whom she becomes romantically involved--kept apart for a while as Tom Bledsoe (Aidan Quinn), wants her off the property because he considers her writing and recording to be an exploitation of his people.
"Songcatcher" is a happy combination of captivating music sung by the local L'iL Abners either a capella or to the accompaniment of banjos and fiddles and splendid ensemble acting, the performers enacting the types of disputes that even citizens in big cities are a part of--intellectual theft, exploitation by capitalists, Bible-thumping gay bashers to cite a few. McTeer does a super job, wide-eyed throughout a good deal of the proceedings as she watches a manager of a mining company buying up land at Depression prices from the poor denizens, and again in the middle of a fiery confrontation that erupts when one of the villagers discovers her sister, Elna, in flagrante with her teaching partner and lover, Harriet Tolliver (E. Katherine Kerr).
I took issue with two points, however minor. In one case, the educated mining company manager holds that Johann Sebastian Bach's music is superior to folk songs. Lily responds that this is like comparing apples and oranges "to the detriment of both traditions." Contrary to her rejoinder, one could hardly say that the simple, repetitive melodies of the mountain people, however lovely, can compare with the profound variations of, say, the Brandenburg concerti or the Passacaglia and Fugue in B minor. In another segment of the story, Tom tells Lily that the outlanders will never be interested in the music of the mountain people because they consider hillbillies "dirty and illiterate." Well...in fact for all the goodness in their hearts, for the most part those depicted in "Songcatcher" simply are.
I was hoping that at some point in the 109 minute picture, Lily would explain why these medieval ballads (which she erroneously calls "ancient") are so bloody in contrast to the purely romantic songs of, say, the U.S. during the 1950's as performed on TV in "Your Hit Parade." These cavils aside, "Songcatcher" is an absolutely graceful and enchanting look at music that is so pure you may just come away wishing that all the punk rock, acid rock and even rock 'n' roll could just disappear so that we can at least return to the innocence and charm of the folk era that informed the generation of Pete Seeger, the Weavers, and the like.
Rated PG-13. Running time: 109 minutes. (C) 2001 by Harvey Karten<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


E.on and RWE Renewables agree clean power deal
by Edward ThicknesseE.on and RWE Renewables have agreed a two and a half year deal that will see E.on purchase the power output of 20 of its fellow German company’s British wind farms.
The deal will help E.on provide renewable power to 3.3m UK homes. Earlier this year the energy giant announced that it was switching all of its British customers to a 100 per cent renewable supply, with no change in tariffs.
Read more: Just one in ten energy suppliers have made net zero plans
The wind farms have a capacity of 892 megawatts and include part of the London Array, the world’s second largest offshore wind farm.
RWE Renewables is the newest subsidiary of RWE, and has an installed capacity of 9 gigawatts, with a further 2.6 under construction.
E.on built the wind assets as part of its £3.3bn investment into the UK over the last decade, before transferring ownership to RWE in October.
In return, E.on took over RWE’s stake in Essen-based Innogy.
Michael Lewis, chief executive of E.on UK, said: “A significant element of our commitment to providing all our residential customers with renewable electricity – a change at a scale never seen before in Britain – was the fact we have invested more than £3.3bn in renewable energy in the UK in recent years.
“We have now secured the power coming from all those wind farms, as well as similar arrangements we have with more than a dozen independent generators around the country, which means our customers can continue to enjoy an electricity supply backed by UK renewables.”
Read more: Wind power industry could be worth $1 trillion by 2040
Lewis added that the company would also try to help customers better manage their energy consumption by developing solutions such as heat pumps and electric vehicle chargers.
RWE Renewables chief operating officer Tom Glover said: “Great Britain, where we already operate over 2,000 megawatts of renewable energy plants, is a very attractive market for RWE due to its well-functioning framework.
Main image credit: Getty


shipcloud API v1
Shipments
The following is a section of resources related to shipments. Be advised: We will charge you only for shipments that a label was created for.
Parameters:
- carrier* (string), the carrier you want to use. Possible values are “dpd”, “dhl”, “gls”, “hermes”, “iloxx”, “ups”
- to*, object describing the receivers address
- company (string), the receivers company name
- first_name (string, optional), the receivers first name
- last_name (string), the receivers last name
- care_of (string, optional), name of the person that should be able to receive the package
- street (string), street name
- street_no (string), house number
- city (string), city
- zip_code (string), zip code
- state (string, optional), state
- country (string), country as Uppercase ISO 3166-1 alpha-2 code
- from*, object describing the senders address. Address definition: see “to”. If missing, the default sender address (if defined in your shipcloud account) will be used
- package*, object describing the package dimensions
- width (float), width of the package in cm
- length (float), length of the package in cm
- height (float), height of the package in cm
- weight (float), weight in kg
- description (string), if you’re using UPS returns or DHL express this is mandatory otherwise it’s optional
- service (string, optional), additional service. Available values are “returns”, “standard”, “one_day” (Express),”one_day_early” (Express until 10 o’clock). default: standard
- reference_number (string, optional), a reference number (max. 30 characters) that you want this shipment to be identified with. You can use this afterwards to easier find the shipment in the shipcloud.io backoffice
- notification_email (string, optional), email address that we should notify once there’s an update for this shipment
- create_shipping_label (boolean), determines if a shipping label should be created at the carrier (this means you will be charged)
Creating a shipment
If you want to create a shipment, this is the way to go!
Request
POST /v1/shipments
{
"to": {
"company": "Receiver Inc.",
"first_name": "Max",
"last_name": "Mustermann",
"street": "Beispielstrasse",
"street_no": "42",
"city": "Hamburg",
"zip_code": "22100",
"country": "DE"
},
"package": {
"weight": 1.5,
"length": 20,
"width": 20,
"height": 20
},
"carrier": "dhl",
"service": "standard",
"reference_number": "ref123456",
"create_shipping_label": true
}
JSON schema: Shipments request
Response
200 (OK)
{
"id": "3a186c51d4281acbecf5ed38805b1db92a9d668b",
"carrier_tracking_no": "84168117830018",
"tracking_url": "http://track.shipcloud.io/3a186c51d4",
"label_url": "http://api.shipcloud.io/shipping_label_3a186c51d4.pdf",
"price": 3.4
}
JSON schema: Shipments response
Getting information about a shipment
Only shipments where create_shipping_label is true contain prices and may contain tracking_events
Shipments that are created on the sandbox system aren't send to the carriers. Therefore they won't contain tracking_events.
Request
GET /v1/shipments/:id
no payload
URL parameters:
- id, the id attribute that was returned when creating the shipment
JSON schema: Shipments response
Response
200 (OK)
{
"id": "3a186c51d4281acbecf5ed38805b1db92a9d668b",
"carrier_tracking_no": "84168117830018",
"carrier": "dhl",
"created_at": "2013-04-16T10:43:04Z",
"tracking_url": "http://track.shipcloud.io/3a186c51d4",
"label_url": "http://api.shipcloud.io/shipping_label_3a186c51d4.pdf",
"from": {
"company": "Musterfirma",
"first_name": "Hans",
"last_name": "Meier",
"care_of": null,
"street": "Musterstraße",
"street_no": "22",
"city": "Musterstadt",
"zip_code": "12345",
"state": null,
"country": "DE"
},
"to": {
"company": "Receiver Inc.",
"first_name": "Max",
"last_name": "Mustermann",
"street": "Beispielstrasse",
"street_no": "42",
"city": "Hamburg",
"zip_code": "22100",
"state": null,
"country": "DE"
},
"packages": [
{
"id": "3af8f7e5af196e1950deebd389a87406e1e5bb80",
"weight": 1.5,
"length": 10.0,
"width": 6.0,
"height": 8.0,
"tracking_events": [
{
"timestamp": "2013-05-26T16:55:24+02:00",
"location": "Hamburg, Deutschland",
"status": "delivered",
"details": "Die Sendung wurde erfolgreich zugestellt."
},
{
"timestamp": "2013-05-26T08:12:12+02:00",
"location": "Hamburg, Deutschland",
"status": "out_for_delivery",
"details": "Die Sendung wurde in das Zustellfahrzeug geladen."
},
{
"timestamp": "2013-05-25T11:46:34+02:00",
"location": "Hamburg, Deutschland",
"status": "transit",
"details": "Die Sendung wurde im Start-Paketzentrum bearbeitet."
}
]
}
],
"price": 3.4,
"reference_number": "ref123456"
}
Updating a shipment
Request
PUT /v1/shipments/:id
{
"to": {
"company": "Receiver Inc.",
"first_name": "Max",
"last_name": "Mustermann",
"street": "Beispielstrasse",
"street_no": "42",
"city": "Hamburg",
"zip_code": "22100",
"country": "DE"
},
"package": {
"weight": 1.5,
"length": 20,
"width": 20,
"height": 20
},
"carrier": "dhl",
"service": "standard",
"reference_number": "ref123456",
"create_shipping_label": true
}
Response
200 (OK)
{
"id": "3a186c51d4281acbecf5ed38805b1db92a9d668b",
"carrier_tracking_no": "84168117830018",
"tracking_url": "http://track.shipcloud.io/3a186c51d4",
"label_url": "http://api.shipcloud.io/shipping_label_3a186c51d4.pdf",
"price": 3.4
}
Deleting a shipment
Request
DELETE /v1/shipments/:id
Only shipments where create_shipping_label is false can be deleted, because no transaction with a carrier has been done until this point.
no payload
URL parameters:
- id, the id attribute that was returned when creating the shipment
Response
204 (No Content)
{}
Carrier
Get all carriers available for your account
Request
GET /v1/carriers
no payload
Response
200 (OK)
[
{
"name": "dhl",
"display_name": "Deutsche Post DHL"
},
{
"name": "hermes",
"display_name": "Hermes Europe"
}
]
Rates
Getting the rate for a package
With this call you can find out how much a specific package will cost you.
You'll have to use your live api key to get the correct prices.
Request
POST /v1/rates
{
"carrier": "dhl",
"weight": 1.5,
"length": 20,
"width": 20,
"height": 20
}
Parameters:
- carrier (string, optional), the carrier you want to use. Possible values are “dpd”, “dhl”, “gls”, “hermes”, “iloxx”, “ups”.
- width (float), width of the package in cm
- length (float), length of the package in cm
- height (float), height of the package in cm
- weight (float), weight in kg
Response
200 (OK)
{
"rate": 3.80
}
Pickup requests
Requesting pickup
With this you’re requesting pickup of packages for a specific carrier
Request
POST /v1/pickup_requests
{
"carrier": "dhl",
"pickup_date": "2014/02/12"
}
Parameters:
- carrier (string), the carrier you want to use. Possible values are “dhl”, “gls”, “hermes”, “ups”.
- pickup_date (string), pickup date (e.g. 2014/02/12)
Response
200 (OK)
{
"id": "123456",
"carrier": "dhl",
"pickup_date": "2014/02/12"
}


Home
Our Story
Menu
Catering
Contact
Ready to Order?
Call us at<PHONE_NUMBER>
See Packages
Packages
Please call us for pricing
Available buns: Sun-kissed Veggie Bun, Uni-Pork Bun, Cosmic Chicken Curry Bun. Head on over to our
menu
to see more details!
Send Us Your Order
We'll try to respond as soon as possible!
Send Message


(How To) Use the Demo
Wait for the map to load (it is fetched using the Google maps API). When the map is ready, the "Init Time &
Space" will be activated.
-
(when activated) Click "Init Time & Space", to fetch video with associated Spatiotemporal
data, center map and place markers..
-
(when activated) Click "Play", to start playback.
-
To change active view during playback:
- Click on a map marker, to navigate to this view
- Click on the "Switch" button, to navigate to the next view
- Select a recording from the dropdown
If during playback the video stops responding, click "Fix MSE"
The recommended browser to view the demo is Chrome. Tested on Firefox and Chrome. Does NOT work on Edge (
issue [4]).
For hickups or suggestions, you can
file an issue on github, or
contact us.
(How To) Reproduce / Modify The Demo
This demo is part of the
SWAPUGC platform. Threre are no external dependencies or libraries used, except Google Maps for the map rendering.
In order to run it locally, or on your own server, you should perform the following steps:
-
Clone, or check-out the source code, from the
github repository.
-
(Optional) add your own dataset in the
samples folder
-
(Optional) modify the parameters in
parameters.js and
main.js
-
Run a local server on the top level, or upload the repository contents to your server.
-
Use your browser to navigate to
-
www.server-domain.com/index.html , for remote server
-
localhost:8000/index.html , if you are running it locally (with an example port of 8000)
You can find more information
about SWAPUGC, or consult the
README.
As long as you see this text, the map is still loading. After the map is loaded, click on "Init Time and Space" button.
NOTE: this demo uses the Google Maps API. If the map is not loading, make sure that the Google Maps service
is online and that it is not blocked by your firewall/proxy


PIG DICE GAME RULES
The Objective of the Pig Game is
to score 100 Poimts before the opponent does .


class: center, middle # erlchronos # `erlchronos`: A gen_server wrapper with ticks
Guilherme Andrade --- class: middle * *erlang:send_after/3* approach is very susceptible to jitter on processes that receive a lot of messages * We could pattern match directly over the process inbox, effectively turning into a priority queue * But this is very inefficient and performance would suffer the more the inbox grew * Regular gen_server callbacks support specifying an extra 'timeout' value on return, which gets fed directly to the receive/after clause deep inside the gen_server code ```erlang % [...] loop(Parent, Name, State, Mod, Time, Debug) -> Msg = receive Input -> Input after Time -> timeout end, % [...] ``` * Maybe we can use this to trigger our timers on idle periods * ...and busy waiting to cover more the active periods --- ## Example ## ```erlang -module(simple_tick). -behaviour(ticked_gen_server). % [...] start_link() -> ticked_gen_server:start_link(?MODULE, [], [{ticks, ["a simple tick"]}]). % [...] tick_duration("a simple tick", State) -> % duration in milliseconds {50, State}. % [...] handle_tick(TickId, TickGeneration, ActualTickDuration, State) -> io:format("tick! ~p / ~p in ~pms", [TickId, TickGeneration, ActualTickDuration]), % % tick! "a simple tick" / 0 in 0ms % tick! "a simple tick" / 1 in 50ms % tick! "a simple tick" / 2 in 49ms % tick! "a simple tick" / 3 in 50ms % ... {noreply, State}. % [...] ``` --- class: middle ### Pros: * Ticks should be more precise - save for flooded inboxes * Tick duration can be dinamycally adjusted on overload * Ticking logic is abstracted away ### Cons: * Slight execution overhead * Losing the ability of specifying timeouts on regular gen_server callbacks * Losing the ability of receiving messages made only of the atom 'timeout' ### Unsolved problems: * Jitter introduced by events that take too much time to handle * Tick burst if the process execution is blocked for a while --- class: middle, center # Thank you! * github.com/g-andrade/erlchronos ![Default-aligned image](qr.jpg)


Indians Carrasco, Perez honored for strong 2019 seasons
CLEVELAND (AP) - Carlos Carrasco’s courage while fighting cancer and community service earned him another postseason honor.
Carrasco won the Frank Gibbons-Steve Olin Good Guy Award, given annually by the Cleveland chapter of the Baseball Writers’ Association of America, for being accommodating with media members as well as for his work in the Cleveland community.
The right-hander was honored along with catcher Roberto Pérez, who was named the team’s Man of the Year.
Carrasco was diagnosed with leukemia in May. The 32-year-old was always available while battling the blood disorder and his inspirational battle became one of baseball’s biggest stories this season. Carrasco was a unanimous selection by a panel of writers.
Carrasco recently received the Roberto Clemente Award for his charitable efforts.
Pérez emerged as one of the Indians’ most consistent players in his first season as a full-time starter.
After being a backup for the past five seasons, Pérez became a regular when the Indians traded Yan Gomes to Washington last winter. Pérez became the first catcher not to allow a passed ball in at least 118 games since Hall of Famer Johnny Bench in 1975.
He also made just three errors in 1,137 total chances while playing on an ankle that required postseason surgery.
Pérez batted .239 with a career-24 homers and 63 RBIs.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP_Sports
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


 -.-
To clarify: On the server browser there's the "Advanced settings" area which let's you set various custom filters.
The problem is, that if any of those adv. filters are active and you happen to have a preset (normal, hardcore, inf-only) activated, too, you won't find any servers at all.
Some people - including me - think that this isn't obvious enough. That's why i'm proposing it here: if "Filters" is checked under "Advanced settings", automatically de-select all of the "Presets".


Aaron teaches in the CENT department at HCC. He is known for teaching cyber security-related courses such as Security Essentials, network security, and ethical Hacking
Sally teaches in the CENT department at HCC. She is known for teaching courses such as networking, system administration with Unix/Linux, and telecommunications
Vern teaches in the CENT/ICS department at HCC. He is known for teaching computer science-related courses that revolves around object-oriented programming and server-side web applications
Brad teaches in the CENT department at HCC. He is Known for teaching networking-related courses such as Telecommunications and intermediate-level CCNA networking


In 2020, Luke Fickell led the Cincinnati Bearcats to a 9-1 campaign including Cincinnati's second perfect regular season which included winning the 2020 AAC Championship Game against the Tulsa Golden Hurricane.
Ridder was named the Walter Camp Offensive Player of the Week and the Davey O'Brien National Quarterback of the Week after completing 13-of-21 passes for 126 yards and a touchdown and also rushing eight times for 179 yards and three touchdowns in a 42-13 win over 16th-ranked SMU on October 24, 2020. At the conclusion of the regular season, Ridder was named the AAC Offensive Player of the Year.
In 2019, his true freshman season, Gardner played in 11 games. He had 31 tackles and three interceptions, two of which he returned for touchdowns. He also tallied 11 passes defended and eight pass breakups. After the season, Gardner was the only true freshman named to the All-American Conference first team. As a sophomore in 2020, Gardner began the season atop the depth chart as a starter.
UC capped a perfect season, beating No. 23 Tulsa, 27-24, at Nippert Stadium to win the 2020 American Athletic Conference championship game. And a season that initially looked like it might not happen ended with the school’s first AAC championship game win in program history.
Season tickets for the 2021 season are on sale now! Get them before they are gone!!!


Home
doctor
schedule
patient
patient Info
appoinment
health tips
About
contact
Hospital management system
Hello Admin !
LOGOUT
update patient list :
Patient Name:
Doctor Name:
Gender:
Time:
Date:
Contact Number:


{% extends "/pyshop/layout.html" %} {% block maintitle %}{% endblock %} {% block subnav %}{% endblock %} {% block nav_bar %}{% endblock %} {% block nav_third %}{% endblock %} {% block toolbar %} {% endblock %} {% block main %}
You can install or upgrade Python packages for android platform through qpython's qpypi.
Besides qpypi, you can install many pure python packages from python's pypi through pip console manually


Environment Setup
This document helps you setting up the developer environment. It is useful if you would like to contribute to the codebase of the engine or the website.
Quick Start
After cloning the repository run these commands from the root directory.
npm install
npm start
This will compile the development version of the code and start a web server. Now you can open http://localhost:8080
to check the result.
Environments
The solution is implemented as ES6 modules. It means that it must be bundled together to one file to make it usable on the website. The development and production environment is separated, see the Scripts section for more details.
- Development: The development bundle will be created in the
build
folder. The code of the website references this directly during development, so you can just open thewebsite
folder and try it out. - Production: The entire self-containing package will be created in the
build
folder. In this case all the required files are copied to this folder so you can just upload it to any web server to make it work.
Source Structure
The source contains the following folders.
- assets: Various assets used in the code or in any other media platforms.
- docs: Code of this documentation.
- libs: External libraries used by the solution.
- sandbox: Various examples mostly for using the engine.
- source: Source code of the engine and the website.
- engine: Source code of the engine. It doesn't contain any website specific codes.
- website: Source code of the website.
- test: Automatic tests for the engine.
- tools: Tools for building the library.
- website: Static resources for the website.
Scripts
Several scripts are available for building, testing and publishing.
Building
npm run build_dev
: Builds the development version of the engine and the website.npm run build_engine_dev
: Builds the development version of the engine.npm run build_engine
: Builds the production version of the engine.npm run build_engine_module
: Builds the ES6 module version of the engine. This is the main entry point when using the npm package.npm run build_website_dev
: Builds the development version of the website.npm run build_website
: Builds the production version of the website.
Testing
npm run test
: Runs all unit tests.npm run lint
: Runs eslint on the codebase.
Packaging
npm run create_package
: Generates the production version of the engine and the website.npm run create_dist
: Generates the production version of the engine and the website, and runs all the possible checks.
Tools
npm run generate_docs
: Generates this documentation.npm run generate_icon_font
: Generates the icon font used on the website.npm run update_libs
: Updates the used external libraries.


Many of us have used the internet but how does it work exactly? Well the internet is just like a telephone network and our computer's send information to other computers through a common connection. All the internet does is move computerized information from one place to another. Like the postal service it doesn't matter why people send stuff or what they send just that it needs a way to be sent and received.
It's like the postal service where letters are passed from one place to another, and it doesn't matter what it contains or who it's from. All thing's on the internet are treated equally so no type of information is handled differently when being sent.
So how does it get sent from place to another? Well if you guys remember dial-up, it would directly use your phone line so you can either talk on the phone or use the internet. Obviously this isn't a very effective way to use the internet. This is called circuit switching. Now we use packet switching which is much more effective. What packet switching does, is to break the data into small parts and then send it to the destination and allow each piece to get seperate routes. This allows you to not have to be dedicated to one connection because your information is going through several ways instead of just the one connection. This is just some basic information about the internet and how it works.


You can save and reload the current state of the game. The savegame is also loaded when the page is refreshed.


--- layout: page title: About header-img: "img/about-bg.png" ---
I'm the Curriculum Director for the non-profit All Star Code. I enjoy coding, cooking, and archery (when I get the time!).


- [PUT Command]
@MAIN:INP=Parameter
- [GET Command]
-
@MAIN:INP=?
Operating & retrieving Main Zone Input state.
Initial Auto Feedback is Available
-
[Parameters]
TUNER
PUT: selecting input TUNER / GET: indicating current input is TUNER
MULTI CH
PUT: selecting input MULTI CH / GET: indicating current input is MULTI CH
PHONO
PUT: selecting input PHONO / GET: indicating current input is PHONO
AV1
PUT: selecting input AV1 / GET: indicating current input is AV1
AV2
PUT: selecting input AV2 / GET: indicating current input is AV2
AV3
PUT: selecting input AV3 / GET: indicating current input is AV3
AV4
PUT: selecting input AV4 / GET: indicating current input is AV4
AV5
PUT: selecting input AV5 / GET: indicating current input is AV5
AV6
PUT: selecting input AV6 / GET: indicating current input is AV6
AV7
PUT: selecting input AV7 / GET: indicating current input is AV7
V-AUX
PUT: selecting input V-AUX / GET: indicating current input is V-AUX
AUDIO1
PUT: selecting input AUDIO1 / GET: indicating current input is AUDIO1
AUDIO2
PUT: selecting input AUDIO2 / GET: indicating current input is AUDIO2
AUDIO3
PUT: selecting input AUDIO3 / GET: indicating current input is AUDIO3
AUDIO4
PUT: selecting input AUDIO4 / GET: indicating current input is AUDIO4
DOCK
PUT Only: selecting input DOCK
iPod
PUT: selecting input iPod / GET: indicating current input is iPod
Bluetooth
PUT: selecting input Bluetooth / GET: indicating current input is Bluetooth
UAW
PUT: selecting input UAW / GET: indicating current input is UAW
NET
PUT Only: selecting input NET
Napster
PUT: selecting input Napster / GET: indicating current input is Napster
PC
PUT: selecting input PC / GET: indicating current input is PC
NET RADIO
PUT: selecting input NET RADIO / GET: indicating current input is NET RADIO
USB
PUT Only: selecting input USB
iPod (USB)
PUT: selecting input iPod (USB) / GET: indicating current input is iPod (USB)


MKH Player - jQuery plugin for HTML 5 video and audio
Small and lightweight jQuery plugin for HTML 5 video and audio player
View on GitHub
Sample Audio Player
Sample Video Player


Our most recent project at gSchool, called SalesEngine, was quite a stretch for a lot of us in the class. Beyond the complexity of EventReporter, we had not had any time to recover from that project, overview the lessons learned, and reinforce the most important concepts from from the project. Instead, we jumped right into the next project, some of us without even having touched EventReporter, others with only half of the project completed.
With our new pairs, we dove into the requirements. The project looked massive at first glance, but slowly we started to follow through the requirements (with very handy method and class name requirement) and made progress.
Our progress skidded to a halt once we hit the relationships piece. Although I understand databases, foreign key relationships and how to get my data in and out of MySQL using PHP, I had no idea how to get my objects to pass around stored information to each other in Ruby.
My partner was equally confused. We stepped through an explanation with Jorge on Friday, and spent the weekend putting it together. We took the approach of calling our main interface class, SalesEngine, from every other piece of the program, so that we could reach through SalesEngine down into our data storage collections (called Repositories in this project). Apparently, we didn’t understand the Object Model, but then again we haven’t talked much about the Object Model except for the fact that everything is an object.
Having completed our relationships piece exactly the wrong way, we were on to building the pieces of business intelligence into the program. Suddenly we had to actually make our idea of the relationships make sense in our heads to get these pieces working, and suddenly everything seemed to be running in circles. On Monday, our instructor Katrina helped us understand where we went wrong, and showed us how to pass through a copy of SalesEngine (by using self
) to each repository, and in turn to each individual piece of the program.
We spent a good deal of time of Monday refactoring our relationship model, and finally were back to our original issue: how do we grab and compare data stored in different places in the application?
After some nudging and help from various instructors, we started to understand how things were supposed to work. On Tuesday, with two days to go, we got to building the first few pieces of business intelligence. I sat down to read the piece on the first item, and this is what my psuedocode looked like:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
In the end, this pseudocode actually didn’t help me out at all. It wasn’t until I stepped back and read through
all of the requirements that I realized that starting at the top of the list would not get us to the final endpoint. In order to report the top x
merchants based on revenue, we would have to create helper classes associated with invoices and transactions.
Eventually, by the end of the night we had tested and created methods for our individual Merchant
, Invoice
, Transaction
, and MerchantRepository
classes to help us get some sort of response from the system.
But there was a bug. And that it turns out that wherever there is one bug, there are many more in hiding. It was 4:30, and the instructors were leaving for the day, and we were stuck.
Thankfully, Cory LaNou and Levi Cook, founders and developers at SupportLocal, offer their time and energy for help on Tuesday evenings to gSchool students.
Cory spent four hours with my partner and I that night, showing us how to debug a program, and exploring with us where things were going wrong. Besides various errors that we have made using core methods, we also discovered that our test data set was completely useless without our foreign keys matching up. It took us that fours hours to get two tests to pass.
I couldn’t believe how much time he had spent with us, going around in circles, walking us through debugging, and helping us find the issues in our program. I would love it if every mentor out there were as patient as Cory.
Although in the end we did not finish SalesEngine, I believe the lessons we learned from Cory about debugging, and the persistence needed when tracking down issues, were monumental, and very important to the success of our future projects.


Password for {{ users[app.uindex].username }}
Modify
Statistic from to grouped by hour day month Query
Scale
Filter (RegExp is Enabled)
Update :: Regenerate the configuration file and restart Shadowsocks.
This feature is dangerous. Be careful.


Toggle navigation
Express Hotels - Mini Hotel Management
Team 7
Make Reservation
Gallery
Express Hotel Gallery
Dining
Hotel Sky View
King Smoking
King-Non Smoking
Lobby
Lounge
Open Terrace Pool
Pool Side
Queen Smoking
Queen-Non Smoking
Waiting Room 1
Waiting Room 2


 Rules expected in keys: minutes, hours, dow, dom (all arrays) and day_type (string: dow or dom) Array rules are in format: -1 means "any", any other value means on those specific occurances. DoW runs 0 (Sunday) to 6 (Saturday).
- Parameters
-
| array | $runRules | Run rules. See above for format. |
| integer | null | $currentTime | Current timestamp; null to use current time from application |
- Returns
- integer Next run timestamp
◆ getMinimumNextRunTime()
| getMinimumNextRunTime |
( |
| ) |
|
Gets the minimum next run time stamp (ie, time next entry is due to run).
- Returns
- integer
◆ modifyRunTimeDayOfMonth()
| modifyRunTimeDayOfMonth |
( |
array |
$dayRules, |
|
|
\DateTime & |
$nextRun |
|
) |
| |
|
protected |
Modifies the next run time based on the day of month rules. Note that if the required DoM doesn't exist (eg, Feb 30), it will be rolled over as if it did (eg, to Mar 2).
- Parameters
-
| array | $hourRules | Rules about what days are valid (-1, or any number of values 0-31) |
| \DateTime | $nextRun | Date calculation object. This will be modified. |
◆ modifyRunTimeDayOfWeek()
| modifyRunTimeDayOfWeek |
( |
array |
$dayRules, |
|
|
\DateTime & |
$nextRun |
|
) |
| |
|
protected |
Modifies the next run time based on the day of week rules.
- Parameters
-
| array | $hourRules | Rules about what days are valid (-1, or any number of values 0-6 [sunday to saturday]) |
| \DateTime | $nextRun | Date calculation object. This will be modified. |
◆ modifyRunTimeHours()
| modifyRunTimeHours |
( |
array |
$hourRules, |
|
|
\DateTime & |
$nextRun |
|
) |
| |
|
protected |
Modifies the next run time based on the hour rules.
- Parameters
-
| array | $hourRules | Rules about what hours are valid (-1, or any number of values 0-23) |
| \DateTime | $nextRun | Date calculation object. This will be modified. |
◆ modifyRunTimeMinutes()
| modifyRunTimeMinutes |
( |
array |
$minuteRules, |
|
|
\DateTime & |
$nextRun |
|
) |
| |
|
protected |
Modifies the next run time based on the minute rules.
- Parameters
-
| array | $minuteRules | Rules about what minutes are valid (-1, or any number of values 0-59) |
| \DateTime | $nextRun | Date calculation object. This will be modified. |
◆ modifyRunTimeUnits()
| modifyRunTimeUnits |
( |
array |
$unitRules, |
|
|
\DateTime & |
$nextRun, |
|
|
|
$currentUnitValue, |
|
|
|
$unitName, |
|
|
|
$rolloverUnitName |
|
) |
| |
|
protected |
General purpose run time calculator for a set of rules.
- Parameters
-
| array | $unitRules | List of rules for unit. Array of ints, values -1 to unit-defined max. |
| \DateTime | $nextRun | Date calculation object. This will be modified. |
| integer | $currentUnitValue | The current value for the specified unit type |
| string | $unitName | Name of the current unit (eg, minute, hour, day, etc) |
| string | $rolloverUnitName | Name of the unit to use when rolling over; one unit bigger (eg, minutes to hours) |
◆ updateCronRunTimeAtomic()
Atomically update the next run time for a cron entry. This allows you to determine whehter a cron entry still needs to be run.
- Parameters
-
| \XF\Entity\CronEntry | $entry | Cron entry info |
- Returns
- boolean True if updated (thus safe to run), false otherwise
◆ updateMinimumNextRunTime()
| updateMinimumNextRunTime |
( |
| ) |
|
Updates the entry for the minimum next run time. Cron calls are not needed until that point.
- Returns
- integer Minimum next run time
The documentation for this class was generated from the following file:
- C:/Users/Michel/Downloads/xenforo-2-0-2/upload/src/XF/Service/CronEntry/CalculateNextRun.php


License¶
This software is distributed under the Public Domain. Since it is
not enough anymore to tell people: 'hey, just do with it whatever
you like to do', you can consider this software being distributed
under the CC0 Public Domain Dedication
(http://creativecommons.org/publicdomain/zero/1.0/legalcode.txt).
In cases, where the law prohibits the recognition of Public Domain
software, this software can be licensed under the zlib license as
stated below:
pysdl2e Copyright (C) 2017 Lucas Siqueira<EMAIL_ADDRESS>pysdl2 Copyright (C) 2012-2014 Marcus von Appen<EMAIL_ADDRESS>This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgement in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Some files are not covered by the license above.
For
examples/resources/tuffy.ttf
,examples/resources/tuffy.copy.ttf
andsdl2/test/resources/tuffy.ttf
the following terms apply:We, the copyright holders of this work, hereby release it into the public domain. This applies worldwide. In case this is not legally possible, We grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law. Thatcher Ulrich<EMAIL_ADDRESS>http://tulrich.com Karoly Barta<EMAIL_ADDRESS>Michael Evans http://www.evertype.com
doc/python.inv
An inventory index for linking to the proper places in the Python documentation, taken from http://docs.python.org/2/. Its copyright and license information can be found at http://docs.python.org/2/copyright.html and http://docs.python.org/2/license.html.


hi guys: I am using emon library to measure the RMS current.
this library has a function is to calculate the current RMS , it allows the user to define the number of the samples taken to calculate the RMS value
double EnergyMonitor::calcIrms(unsigned int Number_of_Samples)
{
#if defined emonTxV3 int SupplyVoltage=3300;
#else int SupplyVoltage = readVcc();
#endif
for (unsigned int n = 0; n < Number_of_Samples; n++)
{
sampleI = analogRead(inPinI);
// Digital low pass filter extracts the 2.5 V or 1.65 V dc offset, // then subtract this - signal is now centered on 0 counts.
offsetI = (offsetI + (sampleI-offsetI)/1024);
filteredI = sampleI - offsetI;
// Root-mean-square method current // 1) square current values
sqI = filteredI * filteredI;
// 2) sum
sumI += sqI;
}
double I_RATIO = ICAL *((SupplyVoltage/1000.0) / (ADC_COUNTS));
Irms = I_RATIO * sqrt(sumI / Number_of_Samples);
//Reset accumulators
sumI = 0;
//--------------------------------------------------------------------------------------
return Irms;
}
my problem is the with the OFFSET VALUE, as I understand the offset is supposed to be 2.5 volt when the voltage is 5 volt which is 512 (10 adc ) or 1.65 volt when the voltage is 3.3 volt .
but here in this library, the offset is constantly changing as in this line of code :
offsetI = (offsetI + (sampleI-offsetI)/1024);
filteredI = sampleI - offsetI;
the initial value of the offset is 512 (2.5 volt )
but it keeps changing, I couldn’t find any explanation for this although the results are accurate.
Does anybody have an explanation for this ?
Re: HOW does the offset code work in emon library
Who said the offset itself is constant? Read up on filters of the digital kind.
Re: HOW does the offset code work in emon library
thanks Robert, yeah that explained a lot
here is the link in case someone needs to refer to.
http://openenergymonitor.org/emon/buildingblocks/digital-filters-for-off...
Re: HOW does the offset code work in emon library
As Robert Wall suggested it is probably because the offset of 512 is not always at 512. But what causes it to shift? Does it significantly shift during use? Or are we using it mainly to avoid calibration for the deviation in the components of our PCB?
Re: HOW does the offset code work in emon library
Yes, I did write that it is not always 512. The resistors that fix the midpoint voltage are 1% tolerance devices, so if one is high and the other low, the midpoint will be shifted, which will falsely increase the reading if the software cannot follow it. It will also move due to temperature effects, and possibly due to component ageing.
Why fix it and add to the calibration procedure (which some users don't want to or don't have the necessary equipment to follow) and decrease the accuracy, particularly at low currents, if a few simple lines of code solve the problem for everybody for ever?
Re: HOW does the offset code work in emon library
I think this solution with the digital filter is quite brilliant, but when I first read the referenced article I was unsure why they did such a complex calculation for a simple offset.
Do you also happen to know: is the most recent firmware working with high-pass or low-pass filter?
Re: HOW does the offset code work in emon library
The low-pass should have replaced the high pass in all versions - it can be initialised very easily so negates the need to make dummy readings to allow the filter to settle.
It's quite easy to check which you have - just look at the source code, the low pass won't have a constant like 0.995 (I think it was) in the filter maths.
Re: HOW does the offset code work in emon library
I am just wondering what this LOW PASS filter exactly filters? For the high pass filter I can understand that a high-pass filter with a cut-off frequency of less than 50 Hz will filter out all the frequency components below 50 Hz including the DC offset which is 0 Hz component. But for the low pass filter , what does exactly it filter out?
Re: HOW does the offset code work in emon library
It filters out the standing offset - which is subsequently subtracted (and if you look at the code, you'll see that).
Re: HOW does the offset code work in emon library
the offset of 512 is not always at 512. But what causes it to shift? Does it significantly shift during use?
Yes, it does. The offset value is continuously drifting up and down to accommodate changes in the shape of the waveform that is being monitored. With the 'half-power' waveform for current shown below, where power is only consumed for one half of each mains cycle, the offset will settle to the 'true' mid-point rather than the 0V point. The filtered waveform for current can be seen to be correctly 'balanced' around the 0V point.
Note also the slope on the 'flat' sections. This nicely demonstrates how the LPF is always drifting towards its goal. This effect is not apparent when continuous waveforms are present.
Re: HOW does the offset code work in emon library
The offset value is continuously drifting up and down to accommodate changes in the shape of the waveform that is being monitored.
I think that's more an unfortunate consequence of the filter, rather than a desired outcome(*). In an ideal world you'd subtract out exactly what you added in (the mid-rail offset) and leave the original signal unmolested. In the real world the filter used to track the mid-rail offset (and even before that, the CT itself) removes any DC from the signal. Whether or not that matters depends on what you're trying to measure. It has pretty much no impact on Real Power but will give you the wrong answer for Irms.
(*) To the extent that you might argue: I'm not interested in anything below 50Hz and am deliberately filtering it out to increase my dynamic range, I guess you could claim it's a desired outcome. I have one Fluke meter that deliberately filters out anything below 45Hz and another that deliberately goes all the way to DC. You need to know which one you're using to know how to interpret the AC amps reading.
In the attached scope trace you can see the three different readings (green trace). Note that 3.182 + 2.832 = 4.262. By the time time the signal has been molested by the CT (pink trace) any attempt to calculate Irms will only reveal 3.18A as the DC component has been lost forever.
Re: HOW does the offset code work in emon library
dBC: I think that's more an unfortunate consequence of the filter ... It has pretty much no impact on Real Power but will give you the wrong answer for Irms.
My ASCII plots of the raw sample values, and your 'scope traces, serve to show the floating nature of the CT. No filters have been applied at this stage. It's the sensor hardware itself which is drifting, always to minimise the DC content with reference to the mid-rail reference voltage.
For non-symmetrical waveforms, it's not obvious where the software should regard the mid-point as being. One option may be to measure the quiescent offset and then subtract this value from all subsequent readings.
Another possible approach which I posted a while back is to regard the mid-point of the waveform for current to occur at the same moment as when the waveform for voltage is at its own mid point. This will only be true when Power Factor is unity. This work is recorded in my Summary Page as follows:
temporalAlignment_dev.ino This demonstrates an alternative way of tracking the true zero point of the current waveform. With non-sinusoidal waveforms, such as half-rectified AC, this works much better than the standard HP filter. Could be useful for applications where Power Factor is required. Originally posted on 20/12/12 at http://openenergymonitor.org/emon/node/1705, this code is available at
http://openenergymonitor.org/emon/sites/default/files/temporalAlignment_...


By utilizing the browser’s built in geolocation feature, Alerts from SmartSDK allows you to track where you are when sending an alert. To use this feature, you must first “Enable geolocation tracking” in your browser settings, then going to the Map screen. Make sure 443 and 8443 ports of your network are also enabled.
Once enabled, whenever you enter the page to send an alert, your browser will ask you to allow it to track current location. You must choose “allow” in order for this feature to work. How to allow location tracking will differ depending on your browser, but here’s what it looks like in Internet Explorer and Chrome:
iPhone (Safari)
If you’re clocking in from an iPhone, location services must be enabled for Safari in order for us to track your location. To enable location tracking, go to your iPhone Settings > Privacy > Location Services, and make sure to allow “Safari Websites” to access your location “While Using the App”. More info here:
https://support.apple.com/en-us/HT201357
iPhone (Chrome)
https://support.google.com/chrome/answer/142065?hl=en
- Open your device’s settings app.
- From the list, touch Chrome .
- Touch Location.
- Choose to either have Chrome never access your location, or allow Chrome access to your location only while using the app.
Android (Chrome)
https://support.google.com/chrome/answer/142065?hl=en
- Open the Google Chrome app.
- Touch the Chrome menu .
- Touch Settings > Site settings > Location.
- Use the switch to either have Chrome ask before accessing your location, or to block all sites from accessing your location.
- Touch the specific blocked or allowed sites to manage exceptions.
Internet Explorer 11
Chrome
(If you don’t see this popup, you may have to refresh the page)
- Open Chrome.
- In the top right, click the Chrome menu .
- Click Settings > Show advanced settings.
- In the “Privacy” section, click Content settings.
- In the dialog that appears, scroll down to the “Location” section. Select your default permission
for future location requests:
- Allow all sites to track your physical location: Select this option to let all sites automatically see your location.
- Ask when a site tries to track your physical location: Select this option if you want Google Chrome to alert you whenever a site wants to see your location.
- Do not allow any site to track your physical location: Select this option to automatically deny requests for your location.
- Click Manage exceptions if you want to remove permissions you gave before to specific sites.
Once you send an alert with geolocation enabled, you can see this information by clicking on their clock time, and choosing “History”:
For more accurate location tracking, we recommend using this feature on wifi. If you are connected to the internet via ethernet cable, we won’t be able to pinpoint your location as well.


1 reference to VerifyPipeName
System.Management.Automation (1)
engine\remoting\commands\EnterPSHostProcessCommand.cs (1)
182
VerifyPipeName
(CustomPipeName);


--- status: "ready" title: "Callout - complete" text: "The callout can include a heading and CTA button" ---
Our one-on-one consultations are designed to hone in on your objectives and provide practical guidance about your study options
Book one-on-one


---
start: 2019-06-12 18:30
edition: 51
participate: "https://www.eventbrite.com/e/man-mind-and-ai-machines-tickets-62408974924"
talk: "https://goo.gl/forms/m9aPSXemMLPBj35k1"
subheader: "Man, Mind and AI Machines"
subnote: ""
agenda:
-
time: "6:30 pm - 7:30 pm"
title: "Man, Mind and AI Machines"
subtitle: "AI is changing the way businesses learn, develop and compete. AI brings not only competitive advantage to businesses but also to individuals. Professionals should embrace the emerging technologies to stay relevant in fast emerging digitised and automated world. In such world, nurturing one’s own thinking skills is equally important to stay ahead."
speaker_profile: " By: Bhat Dittakavi is a seasoned and serial entrepreneur with 21+ years of technology experience in all things data including 18 years of technology entrepreneurship in business analytics and artificial intelligence. Bhat has one successful exit in USA. Bhat has co-founded, bootstrapped, built and scaled VEDICSOFT, an NJ based analytics solutions company, from zero to $40 million in sales. Bhat has successfully sold VEDICSOFT in 2014 to Dallas based PE firm, Sowell & Co. Variance.AI is his new startup in health tech.
Bhat has extensive business experience across investment banking, healthcare, pharmaceutical, insurance, manufacturing and public sector industries. Bhat has solid experience in building teams and retaining talent base specializing in design and development of business integration and data analytics applications."
-
time: "7:30 pm - 7:45 pm"
title: "Break & Networking"
-
time: "7:45 pm - 8:30 pm"
title: "Continued..."
---


Chapter 2 “DRAFT - Reading guide Chapter 2: Tree thinking & its importance in the development of evolutionary thought”
Chapter commentary
NOTE: this chapter has NOT been assigned as of 8/30/2019
2.1 Vocab summary
2.2 Notes
No figures or tables in this chapter require particular attention.
2.3 (Introduction)
- [ladder thinking]
2.4 “Before Charles Darwin” (OPTIONAL)
This section is optional.
2.5 “Charles Darwin’s role in the development of tree thinking”
[common ancestry]
2.6 “Evidence for evolution and common ancestry”
- separate ancestry
- homologous features: This is a very important concept, though we will primarily think about it in terms of DNA, protein, etc.
- [transitional fossils’
- nested structure: A great analogy for understnading nested structure, aka “nestedness”, are Russina dolls which all fit inside each other. See https://en.wikipedia.org/wiki/Matryoshka_doll
- hierarchical structure: In human society hiearchies are common, eg the leadership structure of the military, feudal systems with kinds, barons, etc.
- Consistency index (CI): This will be elaborated on in future chapters.
Figure 2.4 provides a visual explanation of homology. In this course we will typically talk about homologies at the macromolecular sequence level. Thinking in terms of homology at this molecular level might be a bit trickier.
2.7 “The emergence of phylogenetic systematics”
- common descent
- [phyletic series]
- [phylogenetic systematics]
2.8 “Vestiges of ladder thinking in the popular understanding of evolution”
2.9 Chapter 2 Quiz
2.9.1 General biology questions:
The following questions are mostly relevant for intro biology students, but may be useful for computational biology students to review.
1, 2, 10, 12, 13, 14
2.9.2 Computational biology questions:
9
2.9.3 Interesting questions:
3, 6, 7, 15
2.10 Further reading
Similar ideas are discussed in these papers:
Baum et al. The tree-thinking challenge. Science
Baum and Offner. 2008. Phylogenics & tree-thinking. American Biology Teacher.


When it takes longer than you would like to get the code logic sorted. Another trigger is when someone interrupts me, while I am busy trying to understand the cod,e like a phone call or physical presence. This will depend on how big the interruption is and it may take me a little bit of time to get back into it again.
When you spend a while trying to get the code correct and it doesn't quite work. Another is when I spend a long time getting code started, it's working OK, but then you spot some code that you think you don't need, take it out and it doesn't work anymore. A classic example of this, is what I am experiencing with minesweeper at the moment.
I thought the whole process was really well explained, especially with the five steps: stop, breathe, notice, reflect and respond or SBNRR. I think it would be useful in a work situation, infact I used a bit of it at work last week. In this situation at work, I did everything, except the breathing wasn't completely textbook. I will continue to improve my technique with this in the future and especially focus on the sacred pause and breathing.


Hi I'm Will. If you're reading this, you probably already know me.
I stole this template from another website and am changing it to how I want it. Thanks for checking it
out!
Ontario Canada
Phone: +69 420 69666
Email<EMAIL_ADDRESS>pls don't talk to me


Unlike other jQuery projects, such as jQuery and jQuery UI, jQuery Mobile automatically applies many markup enhancements as soon as it loads (long before the document.ready
event fires). These enhancements are applied based on jQuery Mobile's default settings, which are designed to work with common scenarios. If changes to the settings are needed, they are easy to configure.
When jQuery Mobile starts, it triggers a mobileinit
event on the document
object. To override default settings, bind to mobileinit
.
$(document).bind("mobileinit", function(){
//apply overrides here
});
Because the mobileinit
event is triggered immediately, you'll need to bind your event handler before jQuery Mobile is loaded. Link to your JavaScript files in the following order:
<script src="jquery.js"></script>
<script src="custom-scripting.js"></script>
<script src="jquery-mobile.js"></script>
You can override default settings by extending the $.mobile
object using jQuery's $.extend
method.
$(document).bind("mobileinit", function(){
$.extend( $.mobile , {
foo: bar
});
});
Alternatively, you can set them using object property notation.
$(document).bind("mobileinit", function(){
$.mobile.foo = bar;
});
To explore the effects of global configuration options, see the config test pages.
The following defaults are configurable via the $.mobile
object:
activeBtnClass
string, default: "ui-btn-active"activePageClass
string, default: "ui-page-active"ajaxEnabled
boolean, default: trueallowCrossDomainPages
boolean, default: false$.mobile.loadPage()
. This will only allow cross-domain requests if $.mobile.allowCrossDomainPages
is set to true. Because the jQuery Mobile framework tracks what page is being viewed within the browser's location hash, it is possible for a cross-site scripting (XSS) attack to occur if the XSS code in question can manipulate the hash and set it to a cross-domain URL of its choice. This is the main reason that the default setting for $.mobile.allowCrossDomainPages is set to false. In PhoneGap apps that must "phone home" by loading assets off a remote server, both the $.support.cors
AND $.mobile.allowCrossDomainPages
must be set to true.autoInitializePage
boolean, default: true$.mobile.initializePage
. If false, the page will not initialize and will be visually hidden until $.mobile.initializePage
is manually called.buttonMarkup.hoverDelay
integer, default: 200defaultDialogTransition
string, default: 'pop'defaultPageTransition
string, default: 'fade'gradeA
function that returns a boolean, default: a function returning the value of $.support.mediaqueryhashListeningEnabled
boolean, default: trueignoreContentEnabled
boolean, default: falsedata-enhance=false
parent node. If one is found the markup will be ignored. This setting and the accompanying data attribute provide a mechanism through which users can prevent enhancement over large sections of markup.linkBindingEnabled
boolean, default: trueloadingMessage
string, default: "loading"loadingMessageTextVisible
boolean, default: falseloadingMessageTheme
string, default: "a"minScrollBack
string, default: 250ns
string, default: ""data-mynamespace-foo="..."
.
If you use data- namespacing, you will need to update/override one selector in the theme CSS. The following data selectors should incorporate the namespace you're using:
.ui-mobile [data-mynamespace-role=page], .ui-mobile [data-mynamespace-role=dialog], .ui-page { ...
pageLoadErrorMessage
string, default: "Error Loading Page"pageLoadErrorMessageTheme
string, default: "e"pushStateEnabled
boolean, default: truehistory.replaceState
in supported browsers, to convert the hash-based Ajax URL into the full document path. Note that we recommend disabling this feature if Ajax is disabled or if extensive use of external links are used.subPageUrlKey
string, default: "ui-page"touchOverflowEnabled
boolean, default: falseoverflow:
and overflow-scrolling: touch;
CSS properties. Note: Deprecated for 1.1.0.


You can reduce the target's exhaustion level by one, or end one of the following effects on the target: • One effect that charmed or petrified the target • One curse, including the target's attunement to a cursed magic item • Any reduction to one of the target's ability scores • One effect reducing the target's hit point maximum


|
| Local Properties | ||
| Managed Object Types | Data Object Types | All Properties | All Methods |
All fields are optional. If you set the modify
parameter to
true
when you call ReconfigureComputeResource_Task,
an unset property has no effect on the existing property value in the
cluster configuration on the Server. If you set the modify
parameter to false
when you reconfigure a cluster, the cluster
configuration is reverted to the default values, then the new configuration
values are applied.
Properties
| Name | Type | Description |
|---|---|---|
| isolationResponse* | xsd:string |
Indicates whether or not the virtual machine should be powered off if a
host determines that it is isolated from the rest of the compute
resource.
If not specified at either the cluster level or
the virtual machine level, this will default to |
| restartPriority* | xsd:string |
Restart priority for a virtual machine.
If not specified at either the cluster level or
the virtual machine level, this will default to |
| restartPriorityTimeout* | xsd:int |
This setting is used to specify a maximum time the lower priority VMs
should wait for the higher priority VMs to be ready. If the higher
priority Vms are not ready by this time, then the lower priority VMs
are restarted irrespective of the VM ready state. This timeout can be
used to prevent the failover of lower priority VMs to be stuck
infinitely.
This timeout is not used if ready condition is none Timeout specified in seconds. To use cluster setting for a VM override, set to -1 in per-VM. setting. Since vSphere API 6.5 |
| vmComponentProtectionSettings* | ClusterVmComponentProtectionSettings |
Configuration for the VM Component Protection Service.
Since vSphere API 6.0 |
| vmToolsMonitoringSettings* | ClusterVmToolsMonitoringSettings |
Configuration for the VM Health Monitoring Service.
Since vSphere API 4.0 |
| Properties inherited from DynamicData | ||
| None |
| Top of page | Local Properties | ||
| Managed Object Types | Data Object Types | All Properties | All Methods |


The C++ callback interface to be externally implemented. More...
#include <DataDistributionManager.h>
Public Member Functions | |
| virtual void | OnClusterStateChange (DDM_CLUSTEREVENT change, int64_t serverid)=0 |
| Callback invoked to report cluster state change. More... | |
| virtual void | OnStateChange (DDM_INSTANCE_STATE newState, DDM_INSTANCE_STATE oldState)=0 |
| Callback invoked to report a state change. More... | |
| virtual void | OnStateReady (void *pState, int64_t len)=0 |
| Callback invoked when a state transfer is completed. More... | |
| virtual void | OnRequestedState (void **pState, size_t *len)=0 |
| Callback invoked when a state transfer is requested. More... | |
| virtual void | OnMultiplePrimary (int64_t myId, int64_t otherId)=0 |
| Callback invoked when multiple primary server are detected. More... | |
| virtual void | FirstStateChange (DDM_INSTANCE_STATE newState)=0 |
| Callback invoked to report a first state change. More... | |
| virtual void | ChangingState (DDM_INSTANCE_STATE actualState, DDM_INSTANCE_STATE futureState)=0 |
| Callback invoked to report a starting instance state change. More... | |
| virtual void | ChangedState (DDM_INSTANCE_STATE actualState)=0 |
| Callback invoked to report a finished instance state change. More... | |
The C++ callback interface to be externally implemented.
Implement this interface in an external class and pass the pointer to IDataDistribution::RequestMastershipManager. The external class will be called conseguently.
|
pure virtual |
Callback invoked to report a finished instance state change.
Callback invoked when subsystem needs to report a state change.
actualState
reports the actual DDM_INSTANCE_STATE state
Implemented in SmartDataDistributionBase.
|
pure virtual |
Callback invoked to report a starting instance state change.
Callback invoked when subsystem needs to report a state change.
futureState
reports the future DDM_INSTANCE_STATE state actualState
reports the actual DDM_INSTANCE_STATE state
Implemented in SmartDataDistributionBase.
|
pure virtual |
Callback invoked to report a first state change.
Callback invoked when subsystem needs to to report a first state change
newState
DDM_INSTANCE_STATE state
Implemented in SmartDataDistributionBase.
|
pure virtual |
Callback invoked to report cluster state change.
Callback invoked when subsystem needs to report a cluster state change.
change
reports the DDM_CLUSTEREVENT event serverid
the server id reporting the change
Implemented in SmartDataDistributionBase.
|
pure virtual |
Callback invoked when multiple primary server are detected.
Callback invoked when subsystem needs to report there are multiple primary server are detected
myId
my primary identifier otherId
other primary identifier
Implemented in SmartDataDistributionBase.
|
pure virtual |
Callback invoked when a state transfer is requested.
Callback invoked when subsystem needs to request a state transfer. Fill pState
and len
with state information
pState
pointer to the buffer of the state len
the length of the buffer
Implemented in SmartDataDistributionBase.
|
pure virtual |
Callback invoked to report a state change.
Callback invoked when subsystem needs to report a state change.
newState
reports the new DDM_INSTANCE_STATE state oldState
reports the new DDM_INSTANCE_STATE state
Implemented in SmartDataDistributionBase.
|
pure virtual |
Callback invoked when a state transfer is completed.
Callback invoked when subsystem needs to report a completed state transfer
pState
pointer to the buffer of the state len
the length of the buffer
Implemented in SmartDataDistributionBase.


|
Aether
SDL2 based UI Framework for NX
|
Class storing metrics for a font's character. Designed to be read-only as it is only able to return values passed at construction. More...
#include <GlyphMetrics.hpp>
Public Member Functions | |
| GlyphMetrics () | |
| Recommended height of a line containing the glyph. More... | |
| GlyphMetrics (const uint16_t ch, const int width, const int height, const int lineHeight) | |
| Create a new GlyphMetrics object. More... | |
| uint16_t | character () |
| Returns character referenced by metrics. More... | |
| int | width () |
| Return the width of the glyph. More... | |
| int | height () |
| Return the height of the glyph. More... | |
| int | lineHeight () |
| Return the recommend line height for the glyph. More... | |
Class storing metrics for a font's character. Designed to be read-only as it is only able to return values passed at construction.
| Aether::GlyphMetrics::GlyphMetrics | ( | ) |
Recommended height of a line containing the glyph.
Default constructor to initialize with blank values
| Aether::GlyphMetrics::GlyphMetrics | ( | const uint16_t | ch, |
| const int | width, | ||
| const int | height, | ||
| const int | lineHeight | ||
| ) |
Create a new GlyphMetrics object.
| ch | Character metrics are for |
| width | Width of glyph |
| height | Height of glyph |
| lineHeight | Height of line containing glyph |
| uint16_t Aether::GlyphMetrics::character | ( | ) |
Returns character referenced by metrics.
| int Aether::GlyphMetrics::height | ( | ) |
Return the height of the glyph.
| int Aether::GlyphMetrics::lineHeight | ( | ) |
Return the recommend line height for the glyph.
| int Aether::GlyphMetrics::width | ( | ) |
Return the width of the glyph.


Hello my dear My name is Prince George Sanoussi, I am the first son of Late Zainoul Abidine Sanoussi.The former foreign Affairs Ministerof my country (Guinea-Conakry). My father revealed to me about a deposit of a trunk box . The content of these trunk box is fhe sum of (Eighteen Million United States of American Dollars) which was his share from a secret sale of Diamond when he was in the office, he could not deposit this funds However, I sincerely ask for your assistance to get this Funds out and your share for assisting me will be 15% . Please mail me back so that we can do this together Best Regards George Sanoussi ........................................................ you may reply me through my secure email george01sanoussi@latinmail.com


Main
Project 1
Project 2
Weikun
Energy is neither created or destroyed it just moves around like a feral cat -- Albert (put your own quote here)
{Project 1}
(Make your into remarks here)
Go to Project 1
X
X


{% extends "base.html" %} {% block content %} Create Event Supper Club This is your chance to really wow your future guests. Please fill in all the fields below with as much detail as possible. Remember this is the first interaction your guests will have with you, so make it count! Event Cuisine {% for category in categories %} {{ category.category_name }} {% endfor %} Menu Extras Create Event {% endblock %}
This is your chance to really wow your future guests. Please fill in all the fields below with as much detail as possible. Remember this is the first interaction your guests will have with you, so make it count!


Hierarch Kekropus:
%name1% Ah, it's you. What brings you here to me?
I want to walk the path of a Soul Breaker.


Applies a linear or nonlinear transformation to an image I. Takes the center of the image as the origin, not the top left corner. Also, the coordinate system is row/column format, so H must be also. The bounding box of the image is set by the BBOX argument, a string that can be 'loose' (default) or 'crop'. When BBOX is 'loose', J includes the whole transformed image, which generally is larger than I. When BBOX is 'crop' J is cropped to include only the central portion of the transformed image and is the same size as I. The 'loose' flag is currently inexact (because of some padding/cropping). Preserves I's type. USAGE J = imtransform2( I, H, varargin ) INPUTS - common I - input image [converted to double] H - 3x3 nonsingular homography matrix varargin - additional params (struct or name/value pairs) .method - ['linear'] 'nearest', 'spline', 'cubic' (for interp2) .bbox - ['crop'] or 'loose' .show - [0] figure to use for optional display .pad - [0] padding value (scalar, 'replicate' or 'none') .useCache - [0] optionally cache precomp. for given transform/dims. .us - [] can specify source r/c for each target (instead of H) .vs - [] can specify source r/c for each target (instead of H) OUTPUTS J - transformed image EXAMPLE - rigid transformation (rotation + translation) I=imread('peppers.png'); R = rotationMatrix(pi/4); T=[1; 3]; H=[R T; 0 0 1]; J = imtransform2(I,H,'show',1,'pad','replicate'); EXAMPLE - general homography (out of plane rotation) load trees; I=X; S=eye(3); S([1 5])=1/500; % zoom out 500 pixels H=S^-1*rotationMatrix([0 1 0],pi/4)*S; J = imtransform2(I,H,'bbox','loose','show',1); EXAMPLE - rotation using three approaches (and timing) load trees; I=imResample(X,4); angle=35; method='bilinear'; % (1) rotate using imrotate (slow) tic; J1 = imrotate(I,angle,method,'crop'); toc % (2) rotate using a homography matrix R=rotationMatrix(angle/180*pi); H=[R [0; 0]; 0 0 1]; tic; J2 = imtransform2(I,H,'bbox','crop','method',method); toc % (3) rotate by explicitly specifying target rs/cs m=size(I,1)+4; n=size(I,2)+4; m2=(m-1)/2; n2=(n-1)/2; [cs,rs]=meshgrid(-n2:n2,-m2:m2); vs=R*[cs(:) rs(:)]'; us=reshape(vs(2,:),m,n)-rs; vs=reshape(vs(1,:),m,n)-cs; tic, J3=imtransform2(I,[],'us',us,'vs',vs,'method',method); toc % compare all results figure(1); clf; subplot(3,2,1); im(I); subplot(3,2,2); im(J1); subplot(3,2,3); im(J2); subplot(3,2,4); im(abs(J1-J2)); title('J1-J2') subplot(3,2,5); im(J3); subplot(3,2,6); im(abs(J2-J3)); title('J2-J3') See also TEXTUREMAP, INTERP2 Piotr's Computer Vision Matlab Toolbox Version 3.01 Copyright 2014 Piotr Dollar. [pdollar-at-gmail.com] Licensed under the Simplified BSD License [see external/bsd.txt]


Vancouver Santa Claus Parade: All the road closures in effect this Sunday
by Elana ShepertThe jolliest parade of the year returns to Vancouver this weekend, and with it some major street closures.
The festive parade kicks off at noon; the 1.8 kilometre route begins at Georgia and Broughton, travels east on Georgia to Howe, turns south on Howe, and finishes at Howe and Davie.
The festive event features marching bands, dance troupes, festive floats and community groups, which entertain over 300,000 spectators. As a result, it requires a great deal of space.
Parking restrictions in effect 6:30 am to 4:00 pm
Road Closure 8:30 am to 3:00 pm
(Except Broughton, from Robson to Alberni Road Closure is 7:00 to 3:00 pm)
- South side West Georgia between Cardero and Broughton
- Both sides Alberni between Cardero and Jervis
- Both sides Nicola between West Georgia and Robson
- Both sides Broughton between West Georgia and Robson
- West Georgia will remain open as long as possible prior to the parade but road closures will be in effect on above sections of Alberni, Nicola and Broughton.
Parade Route: (See below)
Parking restrictions in effect 8:00 am to 4:00 pm
Road Closure in effect 11:00 am to 4:00 pm
- West Georgia from Cardero to Seymour
- Howe from Dunsmuir to Davie
Dispersal Area: – see streets listed below
Parking restrictions in effect 7:00 am to 4:00 pm
Road Closure 10:00 am to 4:30 pm
- Both sides Hornby, between Davie and Pacific
- Both sides Drake, between Howe and Burrard
- East side Burrard from Pacific to Davie
- The above sections of Hornby, Drake and Burrard
In order to ensure the safety of the parade participants and spectators, City work crews will be posting temporary no stopping signs along the parade route and in the marshalling and dispersal areas. Vancouver Police will be on hand to assist with road closures and any safety related issues. We will make every effort to ensure the roads are re-opened as quickly as possible.
Telus presents the Vancouver Santa Claus Parade
When: Sunday, December 1 at noon
Where: Parade route begins at Georgia and Broughton in downtown Vancouver
Cost: Free
With files from Lindsay William-Ross.


While viewing a playback, a comment can be added by pausing and adding text, an image, or a video recording. The comment will be stored at the pause point. Future playbacks will pause on the comment and it will be displayed.
To start a playback from VS Code open the command pallette (ctrl/cmd + shift + p)
and type in "Storyteller: Start Playback".
A browser window will open with a playback at the beginning of the project's history.
A developer can review the project's history and add comments to it. The comments will be stored permanently and will be displayed in future playbacks.
Tip: A playback can also be started from VS Code by clicking on the status bar item on the bottom left side of the screen that says "Storyteller- Start Playback". If a playback is already open in the browser a simple refresh will reload it.
To make it easier to add a comment about the latest changes a playback can be started at the end of the project's history by opening the command pallette and typing in "Storyteller: Comment". The code in the playback starts in the same state as it is in the editor so the developer does not have to move the playback to the end in order to comment on the latest changes.
Tip: Sometimes it makes sense to wait until a feature is complete before commenting on it. However, many times it is best to comment while the code is being written. This option gives the developer flexibilty to quickly add comments as they are writing code.
A text description of the code can be added at a pause point in the text area in the "Text for the Comment" section.
Clicking the "Add Comment" button adds a comment at the pause point.
The author of the playback can highlight one or more sections of code in the playback window to go along with the comment. This makes it easy to direct the viewer to the code that is being described. The selected code will be highlighted when the comment is displayed.
Tip: More than one block of code from the playback
window can be selected as long as the author hits the ctrl
button while selecting
multiple sections.
Clicking the "Add a picture" button will bring up the picture modal. The playback author can draw a picture or add a saved picture, for example, like a screenshot. The picture will be displayed as part of the comment in the playback.
After drawing a picture or adding a screenshot the playback author must hit the "Use this image" button to add the picture to the comment. A preview of the comment pictures will be displayed in the user interface. Multiple pictures can be added for a single comment.
All previous comment pictures can be used as the starting point for a new drawing. They are available to select at the bottom of the modal. This makes it easy to build a picture over time along with the code that is being built.
There is a basic drawing pallette for hand drawing images.
Tip: If you have access to more powerful drawing software you can use it along
with a screen clipping tool to add pictures to your comments. If you have a hand drawn image on your clipboard you can paste it
in the drawing canvas with this command ctrl/cmd + P
.
A stored picture can be added in one of three ways. If the picure is stored on the file system a file chooser dialog is activated with the "Browse for an image" button. The user can select the picture and it will be added to the drawing window.
An image can be dragged from a file explorer into the drawing window.
If there is an image on the clipboard a paste operation will add it to the drawing window. This is useful because many screen snipping tools add an image to the clipboard.
Tip: A playback author can draw on a screenshot to highlight something or to add more information to it.
A computer with a web cam can be used to add video comments. By default, capturing video is not enabled. It has to be explicitly enabled in the user interface by clicking the "Enable video comments" checkbox. The browser may ask for permission to begin using the camera.
Once video recording has been enabled a preview window will show what the camera is capturing. The playback author can hit the "Start Recording" button to begin recording. Once the author is done recording the "Stop Recording" button will end the recording.
After a video has been made a preview of the video is shown. The author can replay the video before saving it. If the author wishes, they can delete the video and try again. More than one video can be added to a comment.


ALGI
Transport and Logistics
Integrity | Service | Security
Service
We do more than just the transportation of your goods.
We offer
FreightTracker
Free | Easy | online
Track your goods from the comfort of you home or office. FreightTracker is an online service that provides up-to-date information on your goods.
Sign Up NowSafeFreight
Secure | Affordable | Insurance
Track your goods from the comfort of you home or office. FreightTracker is an online service that provides up-to-date information on your goods.
Sign Up NowRapidFreight
Fast| On Time | Convinient
Track your goods from the comfort of you home or office. FreightTracker is an online service that provides up-to-date information on your goods.
Get a quote nowTransMetrix
Easy| Affordable | Management
We work with other transporters to take the hustle out of fleet management. TransMetrix is more than a truck locator. Milage, fuel consumption, idle time, load time analysis and more.
Learn More


Toggle navigation
My News
Get News Articles
Saved Articles
View Source
News Website
Get the Latest News from The NY Times
Get News Articles
Saved Articles
View Source
×
Getting Your News
You can view your saved articles by clicking Saved Articles
Leave A Comment