In this project, you'll use generative adversarial networks to generate new images of faces.
You'll be using two datasets in this project:
Since the celebA dataset is complex and you're doing GANs in a project for the first time, we want you to test your neural network on MNIST before CelebA. Running the GANs on MNIST will allow you to see how well your model trains sooner.
If you're using FloydHub, set data_dir
to "/input" and use the FloydHub data ID "R5KrjnANiKVhLWAkpXhNBe".
data_dir = './data'
# FloydHub - Use with data ID "R5KrjnANiKVhLWAkpXhNBe"
#data_dir = '/input'
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import helper
helper.download_extract('mnist', data_dir)
helper.download_extract('celeba', data_dir)
show_n_images = 25
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
%matplotlib inline
import os
from glob import glob
from matplotlib import pyplot
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'mnist/*.jpg'))[:show_n_images], 28, 28, 'L')
pyplot.imshow(helper.images_square_grid(mnist_images, 'L'), cmap='gray')
The CelebFaces Attributes Dataset (CelebA) dataset contains over 200,000 celebrity images with annotations. Since you're going to be generating faces, you won't need the annotations. You can view the first number of examples by changing show_n_images
.
show_n_images = 25
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'img_align_celeba/*.jpg'))[:show_n_images], 28, 28, 'RGB')
pyplot.imshow(helper.images_square_grid(mnist_images, 'RGB'))
Since the project's main focus is on building the GANs, we'll preprocess the data for you. The values of the MNIST and CelebA dataset will be in the range of -0.5 to 0.5 of 28x28 dimensional images. The CelebA images will be cropped to remove parts of the image that don't include a face, then resized down to 28x28.

You'll build the components necessary to build a GANs by implementing the following functions below:
model_inputs
discriminator
generator
model_loss
model_opt
train
This will check to make sure you have the correct version of TensorFlow and access to a GPU
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
from distutils.version import LooseVersion
import warnings
import tensorflow as tf
# Check TensorFlow Version
assert LooseVersion(tf.__version__) >= LooseVersion('1.0'), 'Please use TensorFlow version 1.0 or newer. You are using {}'.format(tf.__version__)
print('TensorFlow Version: {}'.format(tf.__version__))
# Check for a GPU
if not tf.test.gpu_device_name():
warnings.warn('No GPU found. Please use a GPU to train your neural network.')
else:
print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
Implement the model_inputs
function to create TF Placeholders for the Neural Network. It should create the following placeholders:
image_width
, image_height
, and image_channels
.z_dim
.Return the placeholders in the following the tuple (tensor of real input images, tensor of z data)
import problem_unittests as tests
def model_inputs(image_width, image_height, image_channels, z_dim):
"""
Create the model inputs
:param image_width: The input image width
:param image_height: The input image height
:param image_channels: The number of image channels
:param z_dim: The dimension of Z
:return: Tuple of (tensor of real input images, tensor of z data, learning rate)
"""
real_image_input = tf.placeholder(tf.float32,
(None, image_width, image_height , image_channels),
name='real_input')
z_data_input = tf.placeholder(tf.float32, (None, z_dim), name='z_input')
learning_rate = tf.placeholder(tf.float32, name='learning_rate')
return real_image_input, z_data_input, learning_rate
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_inputs(model_inputs)
Implement discriminator
to create a discriminator neural network that discriminates on images
. This function should be able to reuse the variabes in the neural network. Use tf.variable_scope
with a scope name of "discriminator" to allow the variables to be reused. The function should return a tuple of (tensor output of the discriminator, tensor logits of the discriminator).
def discriminator(images, reuse=False):
"""
Create the discriminator network
:param image: Tensor of input image(s)
:param reuse: Boolean if the weights should be reused
:return: Tuple of (tensor output of the discriminator, tensor logits of the discriminator)
"""
alpha = 0.2
with tf.variable_scope('discriminator', reuse=reuse):
# 28x28 (dim)
conv1 = tf.layers.conv2d(images, 64, 5, strides=2, padding='same')
relu1 = tf.maximum(conv1, alpha*conv1)
# 14x14 (dim)
conv2 = tf.layers.conv2d(relu1, 128, 5, strides=2, padding='same')
bn2 = tf.layers.batch_normalization(conv2, training=True)
relu2 = tf.maximum(bn2, alpha*bn2)
# 7x7 (dim)
conv3 = tf.layers.conv2d(relu2, 256, 5, strides=2, padding='same')
bn3 = tf.layers.batch_normalization(conv3, training=True)
relu3 = tf.maximum(bn3, alpha*bn3)
# logits
logits = tf.nn.dropout(tf.layers.dense(tf.reshape(relu3, (-1, 4*4*256)), 1), keep_prob=0.9)
out = tf.sigmoid(logits)
return out, logits
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_discriminator(discriminator, tf)
Implement generator
to generate an image using z
. This function should be able to reuse the variabes in the neural network. Use tf.variable_scope
with a scope name of "generator" to allow the variables to be reused. The function should return the generated 28 x 28 x out_channel_dim
images.
def generator(z, out_channel_dim, is_train=True):
"""
Create the generator network
:param z: Input z
:param out_channel_dim: The number of channels in the output image
:param is_train: Boolean if generator is being used for training
:return: The tensor output of the generator
"""
alpha = 0.2
with tf.variable_scope('generator', reuse= not is_train):
# fully connected first layer
fc = tf.reshape(tf.layers.dense(z, 7*7*256), (-1, 7, 7, 256))
bn1 = tf.layers.batch_normalization(fc, training=is_train)
relu1 = tf.maximum(alpha*bn1, bn1)
# 7x7x256
# first transpose conv
conv1 = tf.layers.conv2d_transpose(relu1, 128, 5, strides=2, padding='same')
bn2 = tf.layers.batch_normalization(conv1, training=is_train)
relu2 = tf.maximum(alpha*bn2, bn2)
# 14x14x128
# conv3 = tf.layers.conv2d_transpose(relu2, 128, 5, strides=1, padding='same')
# bn3 = tf.layers.batch_normalization(conv3, training=is_train)
# relu3 = tf.maximum(alpha*bn3, bn3)
# # 14x14x128
# second transpose conv
logits = tf.layers.conv2d_transpose(relu2, out_channel_dim, 5, strides=2, padding='same')
return tf.tanh(logits)
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_generator(generator, tf)
Implement model_loss
to build the GANs for training and calculate the loss. The function should return a tuple of (discriminator loss, generator loss). Use the following functions you implemented:
discriminator(images, reuse=False)
generator(z, out_channel_dim, is_train=True)
def model_loss(input_real, input_z, out_channel_dim):
"""
Get the loss for the discriminator and generator
:param input_real: Images from the real dataset
:param input_z: Z input
:param out_channel_dim: The number of channels in the output image
:return: A tuple of (discriminator loss, generator loss)
"""
smooth = 0.1
g_model = generator(input_z, out_channel_dim, is_train=True)
d_model_real, d_logits_real = discriminator(input_real)
d_model_fake, d_logits_fake = discriminator(g_model, reuse=True)
d_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(
logits=d_logits_real,
labels=tf.ones_like(d_model_real)*(1-smooth)))
d_loss_fake = tf.reduce_mean(
tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_fake,
labels = tf.zeros_like(d_model_fake)))
d_loss = d_loss_real + d_loss_fake
g_loss = tf.reduce_mean(
tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_fake,
labels=tf.ones_like(d_model_fake)))
return d_loss, g_loss
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_loss(model_loss)
Implement model_opt
to create the optimization operations for the GANs. Use tf.trainable_variables
to get all the trainable variables. Filter the variables with names that are in the discriminator and generator scope names. The function should return a tuple of (discriminator training operation, generator training operation).
def model_opt(d_loss, g_loss, learning_rate, beta1):
"""
Get optimization operations
:param d_loss: Discriminator loss Tensor
:param g_loss: Generator loss Tensor
:param learning_rate: Learning Rate Placeholder
:param beta1: The exponential decay rate for the 1st moment in the optimizer
:return: A tuple of (discriminator training operation, generator training operation)
"""
t_vars = tf.trainable_variables()
d_vars = [var for var in t_vars if var.name.startswith('discriminator')]
g_vars = [var for var in t_vars if var.name.startswith('generator')]
with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
d_train_opt = tf.train.AdamOptimizer(learning_rate, beta1=beta1).minimize(d_loss,
var_list=d_vars)
g_train_opt = tf.train.AdamOptimizer(learning_rate, beta1=beta1).minimize(g_loss,
var_list=g_vars)
return d_train_opt, g_train_opt
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_opt(model_opt, tf)
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import numpy as np
def show_generator_output(sess, n_images, input_z, out_channel_dim, image_mode):
"""
Show example output for the generator
:param sess: TensorFlow session
:param n_images: Number of Images to display
:param input_z: Input Z Tensor
:param out_channel_dim: The number of channels in the output image
:param image_mode: The mode to use for images ("RGB" or "L")
"""
cmap = None if image_mode == 'RGB' else 'gray'
z_dim = input_z.get_shape().as_list()[-1]
example_z = np.random.uniform(-1, 1, size=[n_images, z_dim])
samples = sess.run(
generator(input_z, out_channel_dim, False),
feed_dict={input_z: example_z})
images_grid = helper.images_square_grid(samples, image_mode)
pyplot.imshow(images_grid, cmap=cmap)
pyplot.show()
Implement train
to build and train the GANs. Use the following functions you implemented:
model_inputs(image_width, image_height, image_channels, z_dim)
model_loss(input_real, input_z, out_channel_dim)
model_opt(d_loss, g_loss, learning_rate, beta1)
Use the show_generator_output
to show generator
output while you train. Running show_generator_output
for every batch will drastically increase training time and increase the size of the notebook. It's recommended to print the generator
output every 100 batches.
def train(epoch_count, batch_size, z_dim, learning_rate, beta1, get_batches, data_shape, data_image_mode):
"""
Train the GAN
:param epoch_count: Number of epochs
:param batch_size: Batch Size
:param z_dim: Z dimension
:param learning_rate: Learning Rate
:param beta1: The exponential decay rate for the 1st moment in the optimizer
:param get_batches: Function to get batches
:param data_shape: Shape of the data
:param data_image_mode: The image mode to use for images ("RGB" or "L")
"""
# Building Model
print("batch size: {}".format(batch_size))
real_image_input, z_data_input, learning_rate_t = model_inputs(data_shape[1], data_shape[2]
, data_shape[3], z_dim)
d_loss, g_loss = model_loss(input_real=real_image_input, input_z=z_data_input,
out_channel_dim=data_shape[3])
d_opt, g_opt = model_opt(d_loss, g_loss, learning_rate_t, beta1)
steps = 0
print_every = 5
show_every = 60
to_show_images = 25
# losses = []
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch_i in range(epoch_count):
batch_ = 0
for batch_images in get_batches(batch_size):
steps += 1
batch_ += 1
# scale from [-.5, +.5] to [-1, 1]
batch_images = batch_images*2
batch_z = np.random.uniform(-1, 1, size=[batch_size, z_dim])
_ = sess.run(d_opt, feed_dict={real_image_input:batch_images,
z_data_input: batch_z,
learning_rate_t: learning_rate})
_ = sess.run(g_opt, feed_dict={real_image_input:batch_images,
z_data_input: batch_z,
learning_rate_t: learning_rate})
if steps % print_every == 0:
train_loss_d = d_loss.eval({real_image_input:batch_images,
z_data_input: batch_z})
train_loss_g = g_loss.eval({z_data_input: batch_z})
print("Epoch {}/{}... batch: {}".format(epoch_i+1, epoch_count, batch_),
"Discriminator Loss: {:.4f}...".format(train_loss_d),
"Generator Loss: {:.4f}".format(train_loss_g))
# Save losses to view after training
# losses.append((train_loss_d, train_loss_g))
if steps % show_every == 0:
show_generator_output(sess, to_show_images, z_data_input, data_shape[3], data_image_mode)
# final model state (visualization)
show_generator_output(sess, to_show_images, z_data_input, data_shape[3], data_image_mode)
Test your GANs architecture on MNIST. After 2 epochs, the GANs should be able to generate images that look like handwritten digits. Make sure the loss of the generator is lower than the loss of the discriminator or close to 0.
batch_size = 32
z_dim = 100
learning_rate = 0.0003
beta1 = 0.5
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 2
mnist_dataset = helper.Dataset('mnist', glob(os.path.join(data_dir, 'mnist/*.jpg')))
print(mnist_dataset.shape, mnist_dataset.image_mode)
with tf.Graph().as_default():
train(epochs, batch_size, z_dim, learning_rate, beta1, mnist_dataset.get_batches,
mnist_dataset.shape, mnist_dataset.image_mode)
Run your GANs on CelebA. It will take around 20 minutes on the average GPU to run one epoch. You can run the whole epoch or stop when it starts to generate realistic faces.
batch_size = 64
z_dim = 100
learning_rate = 0.0003
beta1 = 0.5
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 1
celeba_dataset = helper.Dataset('celeba', glob(os.path.join(data_dir, 'img_align_celeba/*.jpg')))
with tf.Graph().as_default():
train(epochs, batch_size, z_dim, learning_rate, beta1, celeba_dataset.get_batches,
celeba_dataset.shape, celeba_dataset.image_mode)
When submitting this project, make sure to run all the cells before saving the notebook. Save the notebook file as "dlnd_face_generation.ipynb" and save it as a HTML file under "File" -> "Download as". Include the "helper.py" and "problem_unittests.py" files in your submission.


--- title: dl server keywords: fastai sidebar: home_sidebar summary: "notes from building" description: "notes from building" ---


{% load static %} {% load crispy_forms_tags %}
Doist is a carefully crafted tool which helps you stay on top of your productivity game.


{% extends 'explorer/base.html' %} {% block title %} | Budget Process{% endblock %} {% block content %} {% load static %}
The Toronto budget process begins with internal staff discussions and planning in May, and ends with final City Council Approval in February.
Official public input begins in November with Budget committee meetings and public hearings.
Internal Staff work and consultations.
This is a closed process, where only paid lobbyists and bagmen get to influence what goes on.
Sucks for you!
Buy a councillor!
Closed committee meetings to review initial budget proposals and finalize for presentation at open committee meetings.
Theoretically, this process is closed to all but budget committee members and city staff.
Bribe a city official!
A series of Budget Committee meetings to go over preliminary staff estimates and allow councillors to blow hot air and pretend to care about the future of the city.
Some meetings are open to the public and for public deputations.
The meetings discussing graft are closed.
(list of open meeting dates, links to meetings, stuff on deupting at city council etc - probably a link to some part of other resources)
Public and closed committee meetings to review and amend budget
Public and closed committee meetings to review and amend budget


Account Information
Email address
Username
First Name
Last Name
Save
Delete Account
Delete Account
×
Please enter your password to confirm deletion:


daybreak
فجر
- Tommorrow:
- The day after:
- near future:
high-noon
ظهر
- Tommorrow:
- The day after:
- near future:
Mid-Afternoon
عصر
- Tommorrow:
- The day after:
- near future:
Sunset
مغرب
- Tommorrow:
- The day after:
- near future:
Evening
أشى
- Tommorrow:
- The day after:
- near future:


Package com.google.api
Interface DistributionOrBuilder
- All Superinterfaces:
com.google.protobuf.MessageLiteOrBuilder
,com.google.protobuf.MessageOrBuilder
- All Known Implementing Classes:
Distribution
,Distribution.Builder
public interface DistributionOrBuilder
extends com.google.protobuf.MessageOrBuilder
-
Method Summary
Modifier and TypeMethodDescriptionlong
getBucketCounts
(int index) The number of values in each bucket of the histogram, as described in `bucket_options`.int
The number of values in each bucket of the histogram, as described in `bucket_options`.The number of values in each bucket of the histogram, as described in `bucket_options`.Defines the histogram bucket boundaries.Defines the histogram bucket boundaries.long
getCount()
The number of values in the population.getExemplars
(int index) Must be in increasing order of `value` field.int
Must be in increasing order of `value` field.Must be in increasing order of `value` field.getExemplarsOrBuilder
(int index) Must be in increasing order of `value` field.List<? extends Distribution.ExemplarOrBuilder>
Must be in increasing order of `value` field.double
getMean()
The arithmetic mean of the values in the population.getRange()
If specified, contains the range of the population values.If specified, contains the range of the population values.double
The sum of squared deviations from the mean of the values in the population.boolean
Defines the histogram bucket boundaries.boolean
hasRange()
If specified, contains the range of the population values.Methods inherited from interface com.google.protobuf.MessageLiteOrBuilder
isInitialized
Methods inherited from interface com.google.protobuf.MessageOrBuilder
findInitializationErrors, getAllFields, getDefaultInstanceForType, getDescriptorForType, getField, getInitializationErrorString, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof
-
Method Details
-
getCount
long getCount()The number of values in the population. Must be non-negative. This value must equal the sum of the values in `bucket_counts` if a histogram is provided.
int64 count = 1;
- Returns:
- The count.
-
getMean
double getMean()The arithmetic mean of the values in the population. If `count` is zero then this field must be zero.
double mean = 2;
- Returns:
- The mean.
-
getSumOfSquaredDeviation
double getSumOfSquaredDeviation()The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, "The Art of Computer Programming", Vol. 2, page 232, 3rd edition describes Welford's method for accumulating this sum in one pass. If `count` is zero then this field must be zero.
double sum_of_squared_deviation = 3;
- Returns:
- The sumOfSquaredDeviation.
-
hasRange
boolean hasRange()If specified, contains the range of the population values. The field must not be present if the `count` is zero.
.google.api.Distribution.Range range = 4;
- Returns:
- Whether the range field is set.
-
getRange
Distribution.Range getRange()If specified, contains the range of the population values. The field must not be present if the `count` is zero.
.google.api.Distribution.Range range = 4;
- Returns:
- The range.
-
getRangeOrBuilder
Distribution.RangeOrBuilder getRangeOrBuilder()If specified, contains the range of the population values. The field must not be present if the `count` is zero.
.google.api.Distribution.Range range = 4;
-
hasBucketOptions
boolean hasBucketOptions()Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
.google.api.Distribution.BucketOptions bucket_options = 6;
- Returns:
- Whether the bucketOptions field is set.
-
getBucketOptions
Distribution.BucketOptions getBucketOptions()Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
.google.api.Distribution.BucketOptions bucket_options = 6;
- Returns:
- The bucketOptions.
-
getBucketOptionsOrBuilder
Distribution.BucketOptionsOrBuilder getBucketOptionsOrBuilder()Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
.google.api.Distribution.BucketOptions bucket_options = 6;
-
getBucketCountsList
The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N'th value in `bucket_counts` is the count for the overflow bucket (number N-1).
repeated int64 bucket_counts = 7;
- Returns:
- A list containing the bucketCounts.
-
getBucketCountsCount
int getBucketCountsCount()The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N'th value in `bucket_counts` is the count for the overflow bucket (number N-1).
repeated int64 bucket_counts = 7;
- Returns:
- The count of bucketCounts.
-
getBucketCounts
long getBucketCounts(int index) The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N'th value in `bucket_counts` is the count for the overflow bucket (number N-1).
repeated int64 bucket_counts = 7;
- Parameters:
index
- The index of the element to return.- Returns:
- The bucketCounts at the given index.
-
getExemplarsList
List<Distribution.Exemplar> getExemplarsList()Must be in increasing order of `value` field.
repeated .google.api.Distribution.Exemplar exemplars = 10;
-
getExemplars
Must be in increasing order of `value` field.
repeated .google.api.Distribution.Exemplar exemplars = 10;
-
getExemplarsCount
int getExemplarsCount()Must be in increasing order of `value` field.
repeated .google.api.Distribution.Exemplar exemplars = 10;
-
getExemplarsOrBuilderList
List<? extends Distribution.ExemplarOrBuilder> getExemplarsOrBuilderList()Must be in increasing order of `value` field.
repeated .google.api.Distribution.Exemplar exemplars = 10;
-
getExemplarsOrBuilder
Must be in increasing order of `value` field.
repeated .google.api.Distribution.Exemplar exemplars = 10;
-


Barbecue Party Tips For A Truly Amazing Event
Once upon a time, in an age before the Internet, the only way to meet people was to leave your home and interact with humanity.
The Principles Of Scientific Cooking
If you're shy about going out alone, bring a book or a journal at first, and take small steps to get comfortable with the feeling.
How To Meet That Special Someone
Once upon a time, in an age before the Internet, the only way to meet people was to leave your home and interact with humanity.
How To Meet That Special Someone
Considering how long the human race existed before online dating, it looks like meeting people in real life was really working for them.
How To Meet That Special Someone
Once upon a time, in an age before the Internet, the only way to meet people was to leave your home and interact with humanity.
How To Meet That Special Someone
Considering how long the human race existed before online dating, it looks like meeting people in real life was really working for them.
How To Meet That Special Someone
Once upon a time, in an age before the Internet, the only way to meet people was to leave your home and interact with humanity.


Used cars, second-hand cars, repossessed cars, segunda-mano – however you call it – there’s lots out there and there are many places you can buy them. Despite these choices, Automart is the best place for you to buy your dream car. You see, Automart is an online vehicle auction platform for buying new and used cars. As such, we offer a lot of advantages over your more typical avenues of buying used cars. Below are a few of the reasons buy your dream vehicle at Automart.
Everyone always wants to pay the lowest possible price for their products. AutoMart makes that possible for you. Here, you can simply enter the maximum amount you’re willing to pay for a vehicle, and the system gives you the best possible deal.
Gone are the days when you need to trek far away and sit in the sun just to bid on a vehicle auction. Browse, bid and win from your phone, tablet or desktop – on the bus, your couch or even from abroad. You can bid on cars far away, and just pick them up if you win.
We understand how important your data and privacy are. We’ve invested in making sure our website has robust security settings.
+234-816-511-0000
+234-816-512-0000
+234-816-513-0000
<EMAIL_ADDRESS><EMAIL_ADDRESS>All car data including images, descriptions & pricing on Auto Mart is supplied by our advertising partners. Although we pride ourselves in supplying accurate data, images and pricing, neither Auto Mart nor our advertising partners may be held responsible for any errors that may occur. A detailed email will be supplied by Auto Mart and/or the relevant car dealer upon enquiring on any vehicle.


Games Won: {{gamesWon}}
Welcome Newbie. Join a Game
{{game.datePlayed}}
{{game.rounds}} Rounds
{{game.winner}}
View Players
Playersclose
- {{player}}
Nothing for you here.
Invite Friends| # | User | Games Won |
|---|---|---|
| {{$index + 1}} | {{user.username}} | {{user.gamesWon}} |
No Children Fed By You.
Donate Now| # | Date |
|---|---|
| {{$index + 1}} | {{donation.date}} |


Toggle navigation
Caregiver Dashboard
Update(s)
0
New GPS Update(s)
0
New MemTest Result(s)
0
New Journal Entry/Entries
0
New WeMo Update(s)
See All Alerts
Dashboard
Event Scheduler
Dashboard
0
New GPS Updates!
0
New MemTest Results!
0
New Journal Entries!
0
New WeMo Updates!
Latest Totals
Actions
Action
Another action
Something else here
Separated link
GPS Entries:
MemTest Entries:
Journal Entries:
WeMo Entries:
Latest Geolocation Update
Actions
Action
Another action
Something else here
Separated link
Address:
Latest GPS Stats
Actions
Action
Another action
Something else here
Separated link
Lon:
Lat:
Time:
Device ID:
Latest MemTest Stats
Actions
Action
Another action
Something else here
Separated link
Score:
User:
Time:
Latest Journal Stats
Actions
Action
Another action
Something else here
Separated link
Took Medication:
Message:
Time:
Activites:
Latest Z-Wave Stats
Actions
Action
Another action
Something else here
Separated link
Time:
Date:
Latest WeMo Stats
Actions
Action
Another action
Something else here
Separated link
Time:
Date:


Web assets can be static (unmanaged in SBT terminology) or generated during the build (managed). Their location in distribution archive is by convention inside public directory although this path can be configured.
Unmanaged assets are files (e.g. images, css and javascript files), by convention located inside public directory, which should be copied to distibution archive without any processing.
Managed assets are created during the build process usually by transforming other files (e.g. less, coffeescript). Input files are located by convention inside app/assets directory.
There is no one, proper way of processing web assets. Processing is not tightly coupled with building server side of Play! Framework application. They can even be processed by separate build system (e.g. Grunt).
In fact in Play! Framework this changed over time.
In versions 2.0.x to 2.2.x unmanaged assets were treated as resources and were just copied to build output directory. Managed assets were processed by CoffeescriptCompiler, LessCompiler and JavascriptCompiler and generated files were added to build output directory as well.
In Play! Framework 2.3.x things changed. Web assets processing (both unmanaged and managed) was moved to external SbtWeb plugins family.
I Maven build assets should be treated as resources. Below are described some build configurations.
The simplest case is a project with static assets only. Configuration is very simple.
<build> ... <resources> ... <resource> <directory>${basedir}/public</directory> <targetPath>public</targetPath> </resource> </resources> </build>
This plugin contains three simple assets-processing goals: coffee-compile, less-compile and closure-compile.
They implement subset of the features of similar tasks used for assets processing in Play! Framework SBT build before SbtWeb introduction (in version 2.3.x). Check original Play! Framework 2.2.x managed assets documentation for details.
Although these goals have limited functionality, they have some advantages:
Maven configuration is simple. Add static assets as resources (as in previous scenario) and dynamic assets processing goals:
<build> ... <resources> ... <resource> <directory>${basedir}/public</directory> <targetPath>public</targetPath> </resource> </resources> ... <plugins> ... <plugin> <groupId>com.google.code.play2-maven-plugin</groupId> <artifactId>play2-maven-plugin</artifactId> <version>1.0.0-beta7</version> <extensions>true</extensions> <executions> ... <execution> <id>default-play2-compile-assets</id> <goals> <goal>closure-compile</goal> <!-- only if precompiling js assets --> <goal>coffee-compile</goal> <!-- only if precompiling coffee assets --> <goal>less-compile</goal> <!-- only if precompiling less assets --> </goals> </execution> </executions> </plugin> ... </plugins> ... </build>
Check original SbtWeb documentation to learn all its features.
SBTWeb and its plugins cannot be used in Maven build. The workaround is to create auxiliary SBT build for web assets processing purpose only and call it from Maven build using SBT Runner Maven Plugin.
The simplest configuration is presented below. It may not be clear, why Play! Framework SBT plugin ("com.typesafe.play" % "sbt-plugin") is not used. It’s on purpose. SbtWeb plugin has many less dependencies and therefore forked SBT build initialization time is much shorter.
Maven configuration is different. Resource directory must point to the place, where SBTWeb writes all (static and generated) web assets. It’s web/public/main subdirectory of SBT build output directory. Complete configuration:
<build> ... <resources> ... <resource> <directory>${basedir}/target/sbt/web/public/main</directory> <targetPath>public</targetPath> </resource> </resources> ... <plugins> ... <plugin> <groupId>com.google.code.sbtrun-maven-plugin</groupId> <artifactId>sbtrun-maven-plugin</artifactId> <version>1.0.0-beta4</version> <executions> <execution> <id>compile-assets</id> <phase>generate-resources</phase> <goals> <goal>run</goal> </goals> <configuration> <args>web-assets:assets</args> <jvmArgs>-Dscala.version=${scala.version}</jvmArgs> </configuration> </execution> </executions> </plugin> ... </plugins> ... </build>
SBT build files:
scalaVersion := Option(System.getProperty("scala.version")).getOrElse("2.11.8") lazy val main = (project in file(".")) .enablePlugins(SbtWeb) .settings( sourceDirectory in Assets := baseDirectory.value / "app/assets", resourceDirectory in Assets := baseDirectory.value / "public", target := baseDirectory.value / "target/sbt" )
sbt.version=0.13.13
addSbtPlugin("com.typesafe.sbt" % "sbt-web" % "1.4.0") addSbtPlugin("com.typesafe.sbt" % "sbt-js-engine" % "1.1.4") addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0") addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.1")


A class designed to simplify animations.
More...
|
| | Animation (float frameLength) |
| | A constructor. More...
|
| |
|
void | loadContent (ContentManager contentManager, string folderName, string fileStructure, int amount) |
| |
| void | update (float elapsed) |
| | Updates the animation frame. More...
|
| |
| Texture2D | getTexture () |
| | Returns the current texture of the animation. More...
|
| |
| int | size () |
| | Returns amount of frames in the animation. More...
|
| |
| float | getFrameLength () |
| | Return the length of a single frame in the animation. More...
|
| |
|
void | stop () |
| | Stops the animation.
|
| |
|
void | start () |
| | Starts the animation from the last frame.
|
| |
|
void | reset () |
| | Resets the animation to the first frame.
|
| |
A class designed to simplify animations.
Manages multiple textures. Before using this take a look at the AnimatedObject class because you'd probably rather use it!
Part of the animation partition.
| wp_engine.Animation.Animation |
( |
float |
frameLength | ) |
|
|
inline |
A constructor.
Loads all the files in a folder as animation frames and initializes the class.
- Parameters
-
| contentManager | the content manager for the game |
| folderName | the name of the folder which contains the frames |
| frameLength | the length of a single frame in seconds |
| float wp_engine.Animation.getFrameLength |
( |
| ) |
|
|
inline |
Return the length of a single frame in the animation.
- Returns
- length of a single frame in the animation
| Texture2D wp_engine.Animation.getTexture |
( |
| ) |
|
|
inline |
Returns the current texture of the animation.
- Returns
- current texture of the animation
| int wp_engine.Animation.size |
( |
| ) |
|
|
inline |
Returns amount of frames in the animation.
- Returns
- amount of frames in the animation
| void wp_engine.Animation.update |
( |
float |
elapsed | ) |
|
|
inline |
Updates the animation frame.
- Parameters
-
The documentation for this class was generated from the following file:


As I've have been doing self-development for the last two years, I've come across the core topics before. It is one of the reasons why I wanted to study at Dev Academy. The biggest impact for me was reapplied these techniques as once again, If you do not apply in this technique on a daily practice you don't develop them. I excited to develop these techniques. When I can across these techniques that I can learn more than I thought could, only by challenging myself. Over the last year, I have had a lot of challenges that required to us emotional intelligence and it has been helpful, I excited to improve my EQ at EDA. As I have come across these topics before, I didn't find the topic surprising. I believe that there is more to learn from this topic and there will be something surprising about them. Listing and looping is challenging for me and I hopes to practise it more.


MOD
returns the remainder after a number is divided by another, or the number if the divisor is 0 (zero).
NUMBER
MOD(n2, n1)
n2
is a numeric expression for the number to be divided.
n1
is a numeric expression for the divisor.
MOD(13,7)
returns the value 6
.


{% extends 'layout.html' %} {% block title %}Crawling {{ network.number }} ({{ network.term }}){% endblock %} {% block content %}
Crawling a course can take a long time. When you press the button below to start a crawl, we will begin crawling {{ network.number }} from {{ network.term }} in the background. You will be able to see the progress of the crawl on this page once it has been started.
{% else %}{% if network.crawl.errors | length == 1 %} There was an error encountered during the crawl. {% else %} There were some errors encountered during the crawl. {% endif %}
{% for error in network.crawl.errors %}If you would like to retry the crawl, click the "Restart crawl" button below.
This will delete all analyses for this network! {% if network.crawl.analyses | count == 1 %} There is currently one analysis associated with this crawl. {% else %} There are currently {{ network.crawl.analyses | count }} analyses associated with this crawl. {% endif %}
{% endif %} {% endif %} {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %}


| 20640 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20641 |
INTERNET |
<init> |
activity |
Unknown |
Unknown |
Unknown |
onItemClick |
| 20642 |
INTERNET |
<init> |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20643 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20644 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20645 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 20646 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20647 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20648 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20649 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 20650 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 20651 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20652 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 20653 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20654 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 20655 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20656 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 20657 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20658 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 20659 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20660 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 20661 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20662 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20663 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20664 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 20665 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20666 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20667 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20668 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 20669 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20670 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20671 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20672 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 20673 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 20674 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20675 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 20676 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20677 |
INTERNET |
<init> |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20678 |
INTERNET |
<init> |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 20679 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20680 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 20681 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 20682 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 41396 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41397 |
INTERNET |
<init> |
activity |
Unknown |
Unknown |
Unknown |
onItemClick |
| 41398 |
INTERNET |
<init> |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41399 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41400 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41401 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 41402 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41403 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41404 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41405 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 41406 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 41407 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41408 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 41409 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41410 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 41411 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41412 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 41413 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41414 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 41415 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41416 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 41417 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41418 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41419 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41420 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 41421 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41422 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41423 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41424 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 41425 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41426 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41427 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41428 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 41429 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 41430 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41431 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 41432 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41433 |
INTERNET |
<init> |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41434 |
INTERNET |
<init> |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 41435 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41436 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 41437 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 41438 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 65958 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65959 |
INTERNET |
<init> |
activity |
Unknown |
Unknown |
Unknown |
onItemClick |
| 65960 |
INTERNET |
<init> |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65961 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65962 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65963 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 65964 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65965 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65966 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65967 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 65968 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 65969 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65970 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 65971 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65972 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 65973 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65974 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 65975 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65976 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 65977 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65978 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 65979 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65980 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65981 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65982 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 65983 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65984 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65985 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65986 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 65987 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65988 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65989 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65990 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 65991 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 65992 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65993 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 65994 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65995 |
INTERNET |
<init> |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 65996 |
INTERNET |
<init> |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 65997 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65998 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 65999 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 66000 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 82908 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82909 |
INTERNET |
<init> |
activity |
Unknown |
Unknown |
Unknown |
onItemClick |
| 82910 |
INTERNET |
<init> |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82911 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82912 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82913 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 82914 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82915 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82916 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82917 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 82918 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 82919 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82920 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 82921 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82922 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 82923 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82924 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 82925 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82926 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 82927 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82928 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 82929 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82930 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82931 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82932 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 82933 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82934 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82935 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82936 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 82937 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82938 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82939 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82940 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 82941 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 82942 |
ACCESS_WIFI_STATE |
getConnectionInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82943 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 82944 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82945 |
INTERNET |
<init> |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82946 |
INTERNET |
<init> |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |
| 82947 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82948 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 82949 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 82950 |
INTERNET |
openConnection |
activity |
Unknown |
Unknown |
Unknown |
onBackPressed |


The Android build system doesn't compile kernel on-fly. It just contains a prebuilt kernel binary which will be added to the target image. This approach may be good enough for the arm emulator target, but not suitable for x86 platforms. The x86 platforms have various hardware. The kernel binary and its modules may need to be adjusted at compile time or runtime.
This article explains an extra feature of the android-x86 build system. That is, the ability to build kernel and modules by a predefined or customized config during the building process.
We have modified the Android build system to compile a kernel image on-fly. You need to use our repository to get this feature. Read the article for details.
We put default configs of supported targets of android-x86 in kernel/arch/x86/configs/. The corresponding defconfig of a selected target will be used automatically. For example,
make iso_img TARGET_PRODUCT=android_x86_64
By specifying the TARGET_PRODUCT to android_x86_64, the build system automatically selects the config android-x86_64_defconfig to compile the kernel binary and its modules. The binary will be generated in out/target/product/x86_64/kernel, and the modules is put under out/target/product/x86_64/system/lib/modules/. The final target out/target/product/x86_64/android_x86_64.iso will contain the kernel binary and its modules.
To build the kernel and its modules solely, change the goal iso_img to kernel:
. build/envsetup.sh; lunch android_x86_64-userdebug
make kernel
Then you can copy $OUT/kernel and $OUT/system/lib/modules/ to the target device. Put the former to the android-x86 installation directory, and the latter to /system/lib/modules. Note the /system must be installed as read-write mode.
Since Android 5.0 it supports both 32-bit and 64-bit images. Usually 32-bit userspace works with 32-bit kernel, while 64-bit userspace must work with 64-bit kernel. Android-x86 build system supports both since lollipop-x86.
Sometimes you may want to run 32-bit userspace with 64-bit kernel. In this case, you may specify kernel architecture by TARGET_KERNEL_ARCH:
. build/envsetup.sh; lunch android_x86-userdebug
m -j8 iso_img TARGET_KERNEL_ARCH=x86_64
Android and kernel use entirely different build systems. Though we combine them together, the integration doesn't work very well. An example is if you modify the kernel tree, Android build system won't notice the change. That means, the kernel won't be rebuilt automatically if you rebuild the image.
There are several ways to overcome that. One is to touch the defconfig like:
touch kernel/arch/x86/configs/android-x86_*
Or remove the kernel config in the out/ directory:
rm $OUT/obj/kernel/.config
Or remove the kernel image:
rm $OUT/obj/kernel/arch/x86/boot/bzImage
Since we build kernel with modules support, to replace the kernel of an installed system, you have to replace the corresponding modules as well. To do that, copy the kernel image to the android-x86 installation directory, and copy modules to /system/lib/modules. You can do that by booting to debug mode like:
exit
mount /dev/sdb1 /hd
cp /hd/kernel /src
rm -rf /system/lib/modules/*
cp -a /hd/modules/* /system/lib/modules
sync; umount /hd; reboot -f
Suppose you already have a workable kernel config for you hardware, it's easy to tell the build system to use your config to build the iso. Just put your config file to kernel/arch/x86/configs/, and run (suppose the name of your config is my_defconfig)
make iso_img TARGET_PRODUCT=android_x86 TARGET_KERNEL_CONFIG=my_defconfig
It is never advisable to edit the kernel config file directly, as it may generate faulty configuration (dependencies not met etc.). The correct way to customize the kernel config is (on the top of android-x86 tree)
. build/envsetup.sh; lunch android_x86_64-userdebug
make -C kernel O=$OUT/obj/kernel ARCH=x86 menuconfig
If you get an error message Unknown option: -C, change make to /usr/bin/make. That's because since Android 8 the build system overrides the default make command of the system by its own make function (to invoke soong rules) which doesn't recognize the -C option. To overcome that, just use the make command of the system.
The generated config is $OUT/obj/kernel/.config. Copy it to where you want it to be.
DO NOT issue make menuconfig in the kernel/ directory directly. If you do so, the build rules may be broken. In this case, try this way to recover it (on the top of android-x86 tree):
make -C kernel distclean
rm -rf $OUT/obj/kernel
If you have a workable prebuilt kernel binary for your hardware, you can generate the iso with it:
make iso_img TARGET_PRODUCT=android_x86 TARGET_PREBUILT_KERNEL=<path to the prebuilt kernel>
The kernel build system can also be used to compile kernel for ARM. For example, to compile kernel 2.6.29 for the goldfish CPU of the arm emulator, run
cd kernel
git checkout x86/android-goldfish-2.6.29
cd ..
make kernel TARGET_KERNEL_CONFIG=goldfish_defconfig TARGET_NO_KERNEL=


If the file format could not be recognized it will be uploaded and stored into the system as a file type. You will be able to annotate this file textually and download the original at any moment.
BisQue ingest system supports most common compressed file formats and can perform operations with their content. Supported formats are:
After unpacking files can be ingested as:
BisQue archives contain all metadata about binary resources, they can also contain datasets and analysis results. Once can download a BisQue archive by using "Download manager".
BisQue can represent 5D images composed by many files using original files. BisQue will read appropriate sub-files as needed and try to reconstruct images only as needed. Such files should be packaged into a ZIP or TAR archive and when dragged into the uploader you will be given a chance to specify the number of Time and Z planes. There are some restrictions regarding file names. They must be sortable alphanumerically to produce an order of Channel -> Z -> T. All channels (samples) first, then Z positions for a given time point, then all channels then Z positions for the next time point, etc... One can skip some of these dimensions but must preserve the order. If channels are stored as separate file one must indicate their number.
Sorting is done using a block algorithm where letters and numbers are split in blocks and sorted according to their type. This means that dapi_z1, dapi_z2, ..., dapi_10 will be sorted properly.
Example file names composing a 4D file with 2 time points and 3 Z planes sample_4d.zip:
Example file names composing a 3D file with 3 Z slices and 2 channels stored as separate files sample_3d_2c.zip:
BisQue Ingest proprietory multi-file-multi-image files, such as: Volocity, AndorIQ, Leica LEI, Olympus OIF, etc. Such files should be uplaoded in one package, such as ZIP or TAR. Currently only one proprietory multi-file-multi-image per package is processed. Files will be unpacked and a multi-file resource will be created from an original set of files. Downloading such a resource back will create a packaged archive and stream its contents.
BisQue will group multiple DICOM files contained in packages using their metadata. Such imports will produce a dataset with N-D images and otehr files properly imported and annotated using DICOM metadata. Most useful fields are annotated onto image resources directly and all others are available via embedded metadata view. Due to the nature of current BisQue import system DICOM images composed of multiple files should be uploaded in one package.


Assertive programming follows the principles of fail fast and fail visibly. It is implemented by issuing an informative error message if the function arguments fail to satisfy specific criteria. This is particularly important in R because it is a dynamically typed language.
There are a host of R packages to facilitate assertive programming. Here I am interested in those packages that are
The most useful packages that I am aware of that satisfy these criteria are
This vignette consists of an overview of each package followed by a comparison.
The base
package offers the stopifnot()
function.
height <- dplyr::starwars$height
stopifnot(is.character(height))
#> Error: is.character(height) is not TRUE
The error message is not that helpful if the user doesn’t know what is.character()
tests for.
In a function it behaves as follows:
The assertthat
package offers assert_that()
.
The error message is a big improvement on stopifnot()
’s.
In a function it behaves as follows:
my_fun <- function(x) assert_that(is.character(x))
my_fun(dplyr::starwars$height)
#> Error: x is not a character vector
Perhaps the neatest feature is the ability to set your own error message for an assertion function using on_failure()
.
The checkmate
package provides a plethora of functions to check the type and related properties of common objects.
library(checkmate)
assert_character(height)
#> Error in withCallingHandlers({: Assertion on 'height' failed: Must be of type 'character', not 'integer'.
In a function it behaves as follows
my_fun <- function(x) assert_character(x)
my_fun(height)
#> Error in withCallingHandlers({: Assertion on 'x' failed: Must be of type 'character', not 'integer'.
In addition, the assert()
function allows multiple alternative check**
functions (those which return a string of the error message on failure and a TRUE
on success) to be combined into one assertion.
If all checks are passed stopifnot()
returns an invisible NULL
, while assert_that()
returns TRUE
. In contrast, checkmate::assert_**
and checkr::check_**
return a copy of the original object which allows them to be used in pipes.
Although there is no way to customize the error message produced by stopifnot()
, assert_that()
allows the programmer to specify the message for a individual test using the msg
argument. In the case of checkmate
and checkr
the programmer can specify the variable name using the .var.name
and x_name
argument, respectively. This can be very helpful in functions.


Module for constructing RNN Cells.
class BasicLSTMCell
: DEPRECATED: Please use tf.compat.v1.nn.rnn_cell.LSTMCell
instead.
class BasicRNNCell
: The most basic RNN cell.
class DeviceWrapper
: Operator that ensures an RNNCell runs on a particular device.
class DropoutWrapper
: Operator adding dropout to inputs and outputs of the given cell.
class GRUCell
: Gated Recurrent Unit cell (cf.
class LSTMCell
: Long short-term memory unit (LSTM) recurrent network cell.
class LSTMStateTuple
: Tuple used by LSTM Cells for state_size
, zero_state
, and output state.
class MultiRNNCell
: RNN cell composed sequentially of multiple simple cells.
class RNNCell
: Abstract object representing an RNN cell.
class ResidualWrapper
: RNNCell wrapper that ensures cell inputs are added to the outputs.


Contents
-
Great coordination
-
Greet management
- Be more interactive
- Post about anything
-
May 22: 1PM --> Titus House
-
No more meetings
-
From Sunday -> Monday:
-
Monday -> Sunday (29):
-
Monday, Wednesday, Friday, Sunday:
-
Tuesday, Thursday, Saturday:
-
Paul, Yi, Jason, Titus --> Film at Titus's house
-
Parin --> Film at his own home
- Reherse your script
- Stabilzer
- Paul


unwind the stack
`Prev `__
U
`Next `__
--------------
**unwind the stack**: vi.
1. [techspeak] During the execution of a procedural language, one is
said to unwind the stack from a called procedure up to a caller when one
discards the stack frame and any number of frames above it, popping back
up to the level of the given caller. In C this is done with
**longjmp**/**setjmp**, in LISP or C++ with **throw/catch**. See also
`*smash the stack* <../S/smash-the-stack.html>`__.
2. People can unwind the stack as well, by quickly dealing with a bunch
of problems: “Oh heck, let's do lunch. Just a second while I unwind my
stack.”
--------------
+------------------------------+----------------------------+-----------------------------------+
| `Prev `__ | `Up <../U.html>`__ | `Next `__ |
+------------------------------+----------------------------+-----------------------------------+
| unswizzle | `Home <../index.html>`__ | unwind-protect |
+------------------------------+----------------------------+-----------------------------------+


You have approved this document.
You have rejected this document. Please contact the Project Manager to explain your decision.
This document is now marked as incomplete.
The-uploaded-file-example.pdf
This will not be visible to the applicant.


Across: 1,9. Crazy body shop man, I hear, put out by Queen (8,8) 5. A 1 touch on face of casual top from Indian beach destination? (6) 9. see 1 10. Colder times upset things (6) 12. U.S. aid is arranged for such a state (5) 13. Party ripe for destruction - it's a long way back, I hear (9) 14. They gather the statistics social programs heed carefully (12) 18. Out-of-order turn at getting busy is not fair (12) 21. Eating out, dishonest fellow almost reveals rude bits (9) 23.  Don't touch pole, as this will make it rise (6) 25. Crashing, aviator 99 loses top mark from Queen (8) 26. Colder times written about without the repetition (6) 27,7dn. Hit of hits at one-way rave party? (8,2,6) Down: 1. Thus can addled star be most revealing (6) 2. Break the confused Siamese American (6) 3. Lead astray by Mr. D.? Cities are so devised! (9) 4. As well as ill today - and I improved (12) 6. It's nothing to keep body and soul together with this source of oil (5) 7. see 27 Ac. 8. Ideas man the dailies say is too often cut short (8) 11.  Crashing: aviator, with little point being a singer (9) 16. Home with some room to blow a gun off? (8) 17. Keep up twice in a scramble with little mount (8) 19. So right to have argument in this woeful state (6) 20. Stayed, possibly? (6) 22. Article and object of first person's preoccupation (5)


Man Utd ready to hijack Liverpool's move for Timo Werner in January transfer window
EXCLUSIVE: The Red Devils want to beat their fiercest rivals to the to the RB Leipzig striker
by Simon Mullock, https://www.mirror.co.uk/authors/simon-mullock/Manchester United are ready to hijack Liverpool’s bid to bring German striker Timo Werner to the Premier League.
United, who drew a blank in defeat at Bournemouth , are ready to make a move for 23-year-old RB Leipzig hit-man in the January transfer window in an effort to beat their Anfield rivals to one of Europe’s most highly-rated finishers.
Werner signed a new four-year contract with Leipzig in the summer when his dream move to Bayern Munich failed to materialise.
But the agreement included a buy-out clause of just £27million.
And after failing to replace Romelu Lukaku after allowing Belgian – who had topped the Old Trafford goal charts in each of the previous two seasons to move to Inter Milan – Ole Gunnar Solskjaer has a weakness in his squad that needs addressing.
United believe the promise of regular starts under Solskjaer will enable them to beat Jurgen Klopp to his countryman.
Werner fits the profile United now use to identify targets in terms of age and ability to develop into a world-class talent.
And he also offers genuine value for money in an increasingly competitive market.
Liverpool already have Mo Salah, Sadio Mane and Roberto Firminho as their front three and would ideally like to sign the player next year.
Werner, who moved to east Germany from his hometown club in 2016, has won 28 caps for his country.
United have sent scouts to watch him in every game he has played this season for Leipzig.
Werner has netted 11 goals in 16 appearances for club and country after scoring 21 times last season.


Woman Enlists Sugar Ray’s Mark McGrath To Breakup With Her Boyfriend
by Aynslee DarmonIt looks like fans can turn to Mark McGrath if they need help letting their significant other down easy.
In a now-viral video posted to Twitter, the Sugar Ray frontman helped a woman (named Cheyenne) break up with her now ex-boyfriend, Bradyn.
“She wants you to know that you mean a lot to her,” McGrath said in a clip. “You mean the world to her. But she’s having difficulty staying in this long-distance relationship.”
“She still wants to be friends with you, and she wants you to know, good luck on your thesis coming up — probably not the best timing, Cheyenne, when he’s doing his thesis, but I understand!” he added while referring his own marriage and the difficult part of being on the road touring.
McGrath made the video through an app called Cameo, which allows fans to purchase personalized shoutouts from their favourite celebrities. McGrath’s services cost $100.
When a fan shared the clip on Twitter, McGrath replied, revealing, “Also doing real ones for the holidays my brother!”


OS X Leopard comes with a VNC client, /System/Library/CoreServices/Screen Sharing.app
.
Connecting to favorite servers isn’t as easy as it should be. If the remote computer is in your local network, you can click “Share Screen” in Finder. You can also type a vnc://
URI in a browser, do open vnc://…
from Terminal etc.
As has been blogged elsewhere, you can run
defaults write com.apple.ScreenSharing ShowBonjourBrowser_Debug 1
in Terminal to see a list of local and manually added computers on launching Screen Sharing. Turn it off again with
defaults write com.apple.ScreenSharing ShowBonjourBrowser_Debug 0
What’s less well known is that you can drag the computer names from this list to e.g. the desktop. This creates a .vncloc
shortcut file. Double-click it to connect to that computer.
If you don’t want to bother with the Bonjour browser, you can create them manually. They look like this:
1 2 3 4 5 6 7 8 |
|
Just change the URI.
These shortcuts are handy, but I don’t like them on my desktop, so I put them in a Stack.
First, I created a ~/Library/Remote Machines
directory and put the shortcuts in there. Then, I dragged it to the right-hand side (or bottom, in my case) of the dock, next to the Trash, where Stacks go.
That’s it, really. The effect is a nice menu for your VNC favorites.
To make it look nicer, find an icon in /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources
. It’s one of the com.apple.
files for a Mac, or public.generic-pc
otherwise. Select the icon, run ⌘I
. Click the icon in the top left of the info pane (not the proxy icon in the title bar) so that it’s highlighted, and copy it with ⌘C
. Select the .vncloc
file, run ⌘I
, select its icon and paste with ⌘V
. Done!


public class TrcElapsedTimer
extends java.lang.Object
| Constructor and Description |
|---|
TrcElapsedTimer(java.lang.String instanceName,
double averageWindow)
Constructor: Creates an instance of the object.
|
| Modifier and Type | Method and Description |
|---|---|
double |
getAverageElapsedTime()
This method calculates the average elapsed time within the given time window.
|
double |
getLastElapsedTime()
This method returns the last recorded elapsed time in seconds.
|
double |
getMaxElapsedTime()
This method returns the maximum elapsed time since the last reset.
|
double |
getMinElapsedTime()
This method returns the minimum elapsed time since the last reset.
|
void |
printElapsedTime(TrcDbgTrace tracer)
This method prints the elapsed time info using the given tracer.
|
void |
recordEndTime()
This method is called to record the elapsed time since the last start time into the elapsed time queue.
|
void |
recordPeriodTime()
This method is called in a loop to have its period time measured.
|
void |
recordStartTime()
This method is called to record the start time.
|
void |
reset()
This method resets the performance data.
|
java.lang.String |
toString()
This method returns the performance data in string form.
|
public TrcElapsedTimer(java.lang.String instanceName, double averageWindow)
instanceName
- specifies the name to identify this instance of the timer.averageWindow
- specifies the time window in seconds for averaging elapsed time.public java.lang.String toString()
toString
in class java.lang.Object
public void reset()
public void recordStartTime()
public void recordEndTime()
public void recordPeriodTime()
public double getLastElapsedTime()
public double getAverageElapsedTime()
public double getMinElapsedTime()
public double getMaxElapsedTime()
public void printElapsedTime(TrcDbgTrace tracer)
tracer
- specifies the tracer to use for printing elapsed time info.