input_rank = array_ops.size(input_shape) # 4
axes = (axes + input_rank) % input_rank
axes_shape = array_ops.shape(axes) # [2]
return gen_data_flow_ops.dynamic_stitch( # [2, 1, 1, 7]
[
range(input_rank), # [0, 1, 2, 3]
axes
], # [1, 2]
[
input_shape, # [2, 3, 5, 7]
array_ops.fill(axes_shape, 1)
]) # [1, 1]
def _unsorted_segment_N(data, segment_ids, num_segments):
""" Helper function for unsorted_segment_mean/_sqrtN.
Computes the number
of segment entries with 0-entries set to 1 to allow division by N.
"""
num_segments = ops.convert_to_tensor(num_segments)
# bincount doesn't support negative indices so we use unsorted_segment_sum
segment_ids_shape = array_ops.shape_internal(segment_ids)
ones_tensor = array_ops.ones(segment_ids_shape, dtype=data.dtype)
n = gen_math_ops.unsorted_segment_sum(ones_tensor, segment_ids, num_segments)
# add dimensions for all non-reduced axes
broadcastable_shape = array_ops.concat(
[num_segments[array_ops.newaxis],
array_ops.ones([array_ops.rank(data)
- array_ops.rank(segment_ids)],
dtype=num_segments.dtype)],
axis=0)
n = array_ops.reshape(n, broadcastable_shape)
return gen_math_ops.maximum(n, 1)
@tf_export(
"math.unsorted_segment_mean",
v1=["math.unsorted_segment_mean", "unsorted_segment_mean"])
@dispatch.add_dispatch_support
@deprecation.deprecated_endpoints("unsorted_segment_mean")
@dispatch.add_dispatch_support
def unsorted_segment_mean(data, segment_ids, num_segments, name=None):
r"""Computes the mean along segments of a tensor.
Read [the section on
segmentation](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/math#about_segmentation)
for an explanation of segments.
This operator is similar to the `tf.math.unsorted_segment_sum` operator.
Instead of computing the sum over segments, it computes the mean of all
entries belonging to a segment such that:
\\(output_i = 1/N_i \sum_{j...} data[j...]\\) where the sum is over tuples
`j...` such that `segment_ids[j...] == i` with \\N_i\\ being the number of
occurrences of id \\i\\.
If there is no entry for a given segment ID `i`, it outputs 0.
If the given segment ID `i` is negative, the value is dropped and will not
be added to the sum of the segment.
Args:
data: A `Tensor` with floating point or complex dtype.
segment_ids: An integer tensor whose shape is a prefix of `data.shape`.
num_segments: An integer scalar `Tensor`. The number of distinct segment
IDs.
name: A name for the operation (optional).
Returns:
A `Tensor`. Has same shape as data, except for the first `segment_ids.rank`
dimensions, which are replaced with a single dimension which has size
`num_segments`.
"""
with ops.name_scope(name, "UnsortedSegmentMean"):
data = ops.convert_to_tensor(data)
segment_ids = ops.convert_to_tensor(segment_ids)
N = _unsorted_segment_N(data, segment_ids, num_segments)
summed = gen_math_ops.unsorted_segment_sum(data, segment_ids, num_segments)
return summed / N
@tf_export(
"math.unsorted_segment_sqrt_n",
v1=["math.unsorted_segment_sqrt_n", "unsorted_segment_sqrt_n"])
@dispatch.add_dispatch_support
@deprecation.deprecated_endpoints("unsorted_segment_sqrt_n")
@dispatch.add_dispatch_support
def unsorted_segment_sqrt_n(data, segment_ids, num_segments, name=None):
r"""Computes the sum along segments of a tensor divided by the sqrt(N).
Read [the section on
segmentation](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/math#about_segmentation)
for an explanation of segments.
This operator is similar to the `tf.math.unsorted_segment_sum` operator.
Additionally to computing the sum over segments, it divides the results by
sqrt(N).
\\(output_i = 1/sqrt(N_i) \sum_{j...} data[j...]\\) where the sum is over
tuples `j...` such that `segment_ids[j...] == i` with \\N_i\\ being the
number of occurrences of id \\i\\.
If there is no entry for a given segment ID `i`, it outputs 0.
Note that this op only supports floating point and complex dtypes,
due to tf.sqrt only supporting these types.
If the given segment ID `i` is negative, the value is dropped and will not
be added to the sum of the segment.
Args:
data: A `Tensor` with floating point or complex dtype.
segment_ids: An integer tensor whose shape is a prefix of `data.shape`.
num_segments: An integer scalar `Tensor`. The number of distinct segment
IDs.
name: A name for the operation (optional).
Returns:
A `Tensor`. Has same shape as data, except for the first `segment_ids.rank`
dimensions, which are replaced with a single dimension which has size
`num_segments`.
"""
with ops.name_scope(name, "UnsortedSegmentSqrtN"):
data = ops.convert_to_tensor(data)
segment_ids = ops.convert_to_tensor(segment_ids)
N = _unsorted_segment_N(data, segment_ids, num_segments)
summed = gen_math_ops.unsorted_segment_sum(data, segment_ids, num_segments)
return summed / gen_math_ops.sqrt(N)
@tf_export(v1=["sparse.segment_sum", "sparse_segment_sum"])
@deprecation.deprecated_endpoints("sparse_segment_sum")
def sparse_segment_sum(data,
indices,
segment_ids,
name=None,
num_segments=None):
r"""Computes the sum along sparse segments of a tensor.
Read [the section on
segmentation](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/math#about_segmentation)
for an explanation of segments.
Like `tf.math.segment_sum`, but `segment_ids` can have rank less than `data`'s
first dimension, selecting a subset of dimension 0, specified by `indices`.
`segment_ids` is allowed to have missing ids, in which case the output will
be zeros at those indices. In those cases `num_segments` is used to determine
the size of the output.
For example:
```python
c = tf.constant([[1,2,3,4], [-1,-2,-3,-4], [5,6,7,8]])
# Select two rows, one segment.
tf.sparse.segment_sum(c, tf.constant([0, 1]), tf.constant([0, 0]))
# => [[0 0 0 0]]
# Select two rows, two segment.
tf.sparse.segment_sum(c, tf.constant([0, 1]), tf.constant([0, 1]))
# => [[ 1 2 3 4]
# [-1 -2 -3 -4]]
# With missing segment ids.
tf.sparse.segment_sum(c, tf.constant([0, 1]), tf.constant([0, 2]),
num_segments=4)
# => [[ 1 2 3 4]
# [ 0 0 0 0]
# [-1 -2 -3 -4]
# [ 0 0 0 0]]
# Select all rows, two segments.
tf.sparse.segment_sum(c, tf.constant([0, 1, 2]), tf.constant([0, 0, 1]))
# => [[0 0 0 0]
# [5 6 7 8]]
# Which is equivalent to:
tf.math.segment_sum(c, tf.constant([0, 0, 1]))
```
Args:
data: A `Tensor` with data that will be assembled in the output.
indices: A 1-D `Tensor` with indices into `data`. Has same rank as
`segment_ids`.
segment_ids: A 1-D `Tensor` with indices into the output `Tensor`. Values
should be sorted and can be repeated.
name: A name for the operation (optional).
num_segments: An optional int32 scalar. Indicates the size of the output
`Tensor`.
Returns:
A `tensor` of the shape as data, except for dimension 0 which
has size `k`, the number of segments specified via `num_segments` or
inferred for the last element in `segments_ids`.
"""
if num_segments is not None:
return gen_math_ops.sparse_segment_sum_with_num_segments(
data=data,
indices=indices,
segment_ids=segment_ids,
num_segments=num_segments,
name=name)
else:
return gen_math_ops.sparse_segment_sum(
data=data, indices=indices, segment_ids=segment_ids, name=name)
@tf_export("sparse.segment_sum", v1=[])
def sparse_segment_sum_v2(data,
indices,
segment_ids,
num_segments=None,
name=None):
r"""Computes the sum along sparse segments of a tensor.
Read [the section on
segmentation](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/math#about_segmentation)
for an explanation of segments.
Like `tf.math.segment_sum`, but `segment_ids` can have rank less than `data`'s
first dimension, selecting a subset of dimension 0, specified by `indices`.
`segment_ids` is allowed to have missing ids, in which case the output will
be zeros at those indices. In those cases `num_segments` is used to determine
the size of the output.
For example:
```python
c = tf.constant([[1,2,3,4], [-1,-2,-3,-4], [5,6,7,8]])
# Select two rows, one segment.
tf.sparse.segment_sum(c, tf.constant([0, 1]), tf.constant([0, 0]))
# => [[0 0 0 0]]
# Select two rows, two segment.
tf.sparse.segment_sum(c, tf.constant([0, 1]), tf.constant([0, 1]))
# => [[ 1 2 3 4]
# [-1 -2 -3 -4]]
# With missing segment ids.
tf.sparse.segment_sum(c, tf.constant([0, 1]), tf.constant([0, 2]),
num_segments=4)
# => [[ 1 2 3 4]
# [ 0 0 0 0]
# [-1 -2 -3 -4]
# [ 0 0 0 0]]
# Select all rows, two segments.
tf.sparse.segment_sum(c, tf.constant([0, 1, 2]), tf.constant([0, 0, 1]))
# => [[0 0 0 0]
# [5 6 7 8]]
# Which is equivalent to:
tf.math.segment_sum(c, tf.constant([0, 0, 1]))
```
Args:
data: A `Tensor` with data that will be assembled in the output.
indices: A 1-D `Tensor` with indices into `data`. Has same rank as
`segment_ids`.
segment_ids: A 1-D `Tensor` with indices into the output `Tensor`. Values
should be sorted and can be repeated.
num_segments: An optional int32 scalar. Indicates the size of the output
`Tensor`.
name: A name for the operation (optional).
Returns:
A `tensor` of the shape as data, except for dimension 0 which
has size `k`, the number of segments specified via `num_segments` or
inferred for the last element in `segments_ids`.
"""
return sparse_segment_sum(
data, indices, segment_ids, name=name, num_segments=num_segments)
@tf_export(v1=["sparse.segment_mean", "sparse_segment_mean"])
@deprecation.deprecated_endpoints("sparse_segment_mean")
def sparse_segment_mean(data,
indices,
segment_ids,
name=None,
num_segments=None):
r"""Computes the mean along sparse segments of a tensor.
Read [the section on
segmentation](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/math#about_segmentation)
for an explanation of segments.
Like `tf.math.segment_mean`, but `segment_ids` can have rank less than
`data`'s first dimension, selecting a subset of dimension 0, specified by
`indices`.
`segment_ids` is allowed to have missing ids, in which case the output will
be zeros at those indices. In those cases `num_segments` is used to determine
the size of the output.
Args:
data: A `Tensor` with data that will be assembled in the output.
indices: A 1-D `Tensor` with indices into `data`. Has same rank as
`segment_ids`.
segment_ids: A 1-D `Tensor` with indices into the output `Tensor`. Values
should be sorted and can be repeated.
name: A name for the operation (optional).
num_segments: An optional int32 scalar. Indicates the size of the output
`Tensor`.
Returns:
A `tensor` of the shape as data, except for dimension 0 which
has size `k`, the number of segments specified via `num_segments` or
inferred for the last element in `segments_ids`.
"""
if num_segments is not None:
return gen_math_ops.sparse_segment_mean_with_num_segments(
data=data,
indices=indices,
segment_ids=segment_ids,
num_segments=num_segments,
name=name)
else:
return gen_math_ops.sparse_segment_mean(
data=data, indices=indices, segment_ids=segment_ids, name=name)
@tf_export("sparse.segment_mean", v1=[])
def sparse_segment_mean_v2(data,
indices,
segment_ids,
num_segments=None,
name=None):
r"""Computes the mean along sparse segments of a tensor.
Read [the section on
segmentation](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/math#about_segmentation)
for an explanation of segments.
Like `tf.math.segment_mean`, but `segment_ids` can have rank less than
`data`'s first dimension, selecting a subset of dimension 0, specified by
`indices`.
`segment_ids` is allowed to have missing ids, in which case the output will
be zeros at those indices. In those cases `num_segments` is used to determine
the size of the output.
Args:
data: A `Tensor` with data that will be assembled in the output.
indices: A 1-D `Tensor` with indices into `data`. Has same rank as
`segment_ids`.
segment_ids: A 1-D `Tensor` with indices into the output `Tensor`. Values
should be sorted and can be repeated.
num_segments: An optional int32 scalar. Indicates the size of the output
`Tensor`.
name: A name for the operation (optional).
Returns:
A `tensor` of the shape as data, except for dimension 0 which
has size `k`, the number of segments specified via `num_segments` or
inferred for the last element in `segments_ids`.
"""
return sparse_segment_mean(
data, indices, segment_ids, name=name, num_segments=num_segments)
@tf_export(v1=["sparse.segment_sqrt_n", "sparse_segment_sqrt_n"])
@deprecation.deprecated_endpoints("sparse_segment_sqrt_n")
def sparse_segment_sqrt_n(data,
indices,
segment_ids,
name=None,
num_segments=None):
r"""Computes the sum along sparse segments of a tensor divided by the sqrt(N).
`N` is the size of the segment being reduced.
Args:
data: A `Tensor` with data that will be assembled in the output.
indices: A 1-D `Tensor` with indices into `data`. Has same rank as
`segment_ids`.
segment_ids: A 1-D `Tensor` with indices into the output `Tensor`. Values
should be sorted and can be repeated.
name: A name for the operation (optional).
num_segments: An optional int32 scalar. Indicates the size of the output
`Tensor`.
Returns:
A `tensor` of the shape as data, except for dimension 0 which
has size `k`, the number of segments specified via `num_segments` or
inferred for the last element in `segments_ids`.
"""
if num_segments is not None:
return gen_math_ops.sparse_segment_sqrt_n_with_num_segments(
data=data,
indices=indices,
segment_ids=segment_ids,
num_segments=num_segments,
name=name)
else:
return gen_math_ops.sparse_segment_sqrt_n(
data=data, indices=indices, segment_ids=segment_ids, name=name)
@tf_export("sparse.segment_sqrt_n", v1=[])
def sparse_segment_sqrt_n_v2(data,
indices,
segment_ids,
num_segments=None,
name=None):
r"""Computes the sum along sparse segments of a tensor divided by the sqrt(N).
Read [the section on
segmentation](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/math#about_segmentation)
for an explanation of segments.
Like `tf.sparse.segment_mean`, but instead of dividing by the size of the
segment, `N`, divide by `sqrt(N)` instead.
Args:
data: A `Tensor` with data that will be assembled in the output.
indices: A 1-D `Tensor` with indices into `data`. Has same rank as
`segment_ids`.
segment_ids: A 1-D `Tensor` with indices into the output `Tensor`. Values
should be sorted and can be repeated.
num_segments: An optional int32 scalar. Indicates the size of the output
`Tensor`.
name: A name for the operation (optional).
Returns:
A `tensor` of the shape as data, except for dimension 0 which
has size `k`, the number of segments specified via `num_segments` or
inferred for the last element in `segments_ids`.
"""
return sparse_segment_sqrt_n(
data, indices, segment_ids, name=name, num_segments=num_segments)
@tf_export("tensordot", "linalg.tensordot")
@dispatch.add_dispatch_support
def tensordot(a, b, axes, name=None):
r"""Tensor contraction of a and b along specified axes and outer product.
Tensordot (also known as tensor contraction) sums the product of elements
from `a` and `b` over the indices specified by `a_axes` and `b_axes`.
The lists `a_axes` and `b_axes` specify those pairs of axes along which to
contract the tensors. The axis `a_axes[i]` of `a` must have the same dimension
as axis `b_axes[i]` of `b` for all `i` in `range(0, len(a_axes))`. The lists
`a_axes` and `b_axes` must have identical length and consist of unique
integers that specify valid axes for each of the tensors. Additionally
outer product is supported by passing `axes=0`.
This operation corresponds to `numpy.tensordot(a, b, axes)`.
Example 1: When `a` and `b` are matrices (order 2), the case `axes = 1`
is equivalent to matrix multiplication.
Example 2: When `a` and `b` are matrices (order 2), the case
`axes = [[1], [0]]` is equivalent to matrix multiplication.
Example 3: When `a` and `b` are matrices (order 2), the case `axes=0` gives
the outer product, a tensor of order 4.
Example 4: Suppose that \\(a_{ijk}\\) and \\(b_{lmn}\\) represent two
tensors of order 3. Then, `contract(a, b, [[0], [2]])` is the order 4 tensor
\\(c_{jklm}\\) whose entry
corresponding to the indices \\((j,k,l,m)\\) is given by:
\\( c_{jklm} = \sum_i a_{ijk} b_{lmi} \\).
In general, `order(c) = order(a) + order(b) - 2*len(axes[0])`.
Args:
a: `Tensor` of type `float32` or `float64`.
b: `Tensor` with the same type as `a`.
axes: Either a scalar `N`, or a list or an `int32` `Tensor` of shape [2, k].
If axes is a scalar, sum over the last N axes of a and the first N axes of
b in order. If axes is a list or `Tensor` the first and second row contain
the set of unique integers specifying axes along which the contraction is
computed, for `a` and `b`, respectively. The number of axes for `a` and
`b` must be equal. If `axes=0`, computes the outer product between `a` and
`b`.
name: A name for the operation (optional).
Returns:
A `Tensor` with the same type as `a`.
Raises:
ValueError: If the shapes of `a`, `b`, and `axes` are incompatible.
IndexError: If the values in axes exceed the rank of the corresponding
tensor.
"""
def _tensordot_reshape(a, axes, flipped=False):
"""Helper method to perform transpose and reshape for contraction op.
This method is helpful in reducing `math_ops.tensordot` to `math_ops.matmul`
using `array_ops.transpose` and `array_ops.reshape`. The method takes a
tensor and performs the correct transpose and reshape operation for a given
set of indices. It returns the reshaped tensor as well as a list of indices
necessary to reshape the tensor again after matrix multiplication.
Args:
a: `Tensor`.
axes: List or `int32` `Tensor` of unique indices specifying valid axes of
`a`.
flipped: An optional `bool`. Defaults to `False`. If `True`, the method
assumes that `a` is the second argument in the contraction operation.
Returns:
A tuple `(reshaped_a, free_dims, free_dims_static)` where `reshaped_a` is
the tensor `a` reshaped to allow contraction via `matmul`, `free_dims` is
either a list of integers or an `int32` `Tensor`, depending on whether
the shape of a is fully specified, and free_dims_static is either a list
of integers and None values, or None, representing the inferred
static shape of the free dimensions
"""
if a.get_shape().is_fully_defined() and isinstance(axes, (list, tuple)):
shape_a = a.get_shape().as_list()
axes = [i if i >= 0 else i + len(shape_a) for i in axes]
free = [i for i in xrange(len(shape_a)) if i not in axes]
free_dims = [shape_a[i] for i in free]
prod_free = int(np.prod([shape_a[i] for i in free]))
prod_axes = int(np.prod([shape_a[i] for i in axes]))
perm = list(axes) + free if flipped else free + list(axes)
new_shape = [prod_axes, prod_free] if flipped else [prod_free, prod_axes]
if (perm != np.arange(len(shape_a))).any():
a_trans = array_ops.transpose(a, perm)
else:
a_trans = a
if a_trans.get_shape().as_list() != new_shape:
reshaped_a = array_ops.reshape(a_trans, new_shape)
else:
reshaped_a = a_trans
return reshaped_a, free_dims, free_dims
else:
if a.get_shape().ndims is not None and isinstance(axes, (list, tuple)):
shape_a = a.get_shape().as_list()
axes = [i if i >= 0 else i + len(shape_a) for i in axes]
free = [i for i in xrange(len(shape_a)) if i not in axes]
axes_dims = [shape_a[i] for i in axes]
free_dims = [shape_a[i] for i in free]
free_dims_static = free_dims
axes = ops.convert_to_tensor(axes, dtype=dtypes.int32, name="axes")
free = ops.convert_to_tensor(free, dtype=dtypes.int32, name="free")
shape_a = array_ops.shape(a)
else:
free_dims_static = None
shape_a = array_ops.shape(a)
rank_a = array_ops.rank(a)
axes = ops.convert_to_tensor(axes, dtype=dtypes.int32, name="axes")
axes = array_ops.where(axes >= 0, axes, axes + rank_a)
free, _ = gen_array_ops.list_diff(range(rank_a), axes, dtypes.int32)
free_dims = array_ops.gather(shape_a, free)
axes_dims = array_ops.gather(shape_a, axes)
prod_free_dims = reduce_prod(free_dims)
prod_axes_dims = reduce_prod(axes_dims)
if flipped:
perm = array_ops.concat([axes, free], 0)
new_shape = array_ops.stack([prod_axes_dims, prod_free_dims])
else:
perm = array_ops.concat([free, axes], 0)
new_shape = array_ops.stack([prod_free_dims, prod_axes_dims])
reshaped_a = array_ops.reshape(array_ops.transpose(a, perm), new_shape)
return reshaped_a, free_dims, free_dims_static
def _tensordot_axes(a, axes):
"""Generates two sets of contraction axes for the two tensor arguments."""
a_shape = a.get_shape()
if isinstance(axes, compat.integral_types):
if axes < 0:
raise ValueError("'axes' must be at least 0.")
if a_shape.ndims is not None:
if axes > a_shape.ndims:
raise ValueError("'axes' must not be larger than the number of "
"dimensions of tensor %s." % a)
return (list(xrange(a_shape.ndims - axes,
a_shape.ndims)), list(xrange(axes)))
else:
rank = array_ops.rank(a)
return (range(rank - axes, rank,
dtype=dtypes.int32), range(axes, dtype=dtypes.int32))
elif isinstance(axes, (list, tuple)):
if len(axes) != 2:
raise ValueError("'axes' must be an integer or have length 2.")
a_axes = axes[0]
b_axes = axes[1]
if isinstance(a_axes, compat.integral_types) and \
isinstance(b_axes, compat.integral_types):
a_axes = [a_axes]
b_axes = [b_axes]
if len(a_axes) != len(b_axes):
raise ValueError(
"Different number of contraction axes 'a' and 'b', %s != %s." %
(len(a_axes), len(b_axes)))
return a_axes, b_axes
else:
axes = ops.convert_to_tensor(axes, name="axes", dtype=dtypes.int32)
return axes[0], axes[1]
with ops.name_scope(name, "Tensordot", [a, b, axes]) as name:
a = ops.convert_to_tensor(a, name="a")
b = ops.convert_to_tensor(b, name="b")
a_axes, b_axes = _tensordot_axes(a, axes)
a_reshape, a_free_dims, a_free_dims_static = _tensordot_reshape(a, a_axes)
b_reshape, b_free_dims, b_free_dims_static = _tensordot_reshape(
b, b_axes, True)
ab_matmul = matmul(a_reshape, b_reshape)
if isinstance(a_free_dims, list) and isinstance(b_free_dims, list):
if (ab_matmul.get_shape().is_fully_defined() and
ab_matmul.get_shape().as_list() == a_free_dims + b_free_dims):
return ab_matmul
else:
return array_ops.reshape(
ab_matmul, a_free_dims + b_free_dims, name=name)
else:
a_free_dims = ops.convert_to_tensor(a_free_dims, dtype=dtypes.int32)
b_free_dims = ops.convert_to_tensor(b_free_dims, dtype=dtypes.int32)
product = array_ops.reshape(
ab_matmul, array_ops.concat([a_free_dims, b_free_dims], 0), name=name)
if a_free_dims_static is not None and b_free_dims_static is not None:
product.set_shape(a_free_dims_static + b_free_dims_static)
return product
@tf_export("math.polyval")
@dispatch.add_dispatch_support
def polyval(coeffs, x, name=None):
r"""Computes the elementwise value of a polynomial.
If `x` is a tensor and `coeffs` is a list n + 1 tensors,
this function returns the value of the n-th order polynomial
`p(x) = coeffs[n-1] + coeffs[n-2] * x + ... + coeffs[0] * x**(n-1)`
evaluated using Horner's method, i.e.
`p(x) = coeffs[n-1] + x * (coeffs[n-2] + ... + x * (coeffs[1]
+ x * coeffs[0]))`
Usage Example:
>>> coefficients = [1.0, 2.5, -4.2]
>>> x = 5.0
>>> y = tf.math.polyval(coefficients, x)
>>> y
<tf.Tensor: shape=(), dtype=float32, numpy=33.3>
Usage Example:
>>> tf.math.polyval([2, 1, 0], 3) # evaluates 2 * (3**2) + 1 * (3**1) + 0 * (3**0)
<tf.Tensor: shape=(), dtype=int32, numpy=21>
`tf.math.polyval` can also be used in polynomial regression. Taking
advantage of this function can facilitate writing a polynomial equation
as compared to explicitly writing it out, especially for higher degree
polynomials.
>>> x = tf.constant(3)
>>> theta1 = tf.Variable(2)
>>> theta2 = tf.Variable(1)
>>> theta3 = tf.Variable(0)
>>> tf.math.polyval([theta1, theta2, theta3], x)
<tf.Tensor: shape=(), dtype=int32, numpy=21>
Args:
coeffs: A list of `Tensor` representing the coefficients of the polynomial.
x: A `Tensor` representing the variable of the polynomial.
name: A name for the operation (optional).
Returns:
A `tensor` of the shape as the expression p(x) with usual broadcasting
rules for element-wise addition and multiplication applied.
@compatibility(numpy)
Equivalent to numpy.polyval.
@end_compatibility
"""
if not isinstance(coeffs, list):
raise ValueError("Argument coeffs must be list type "
"found {}.".format(type(coeffs)))
with ops.name_scope(name, "polyval", nest.flatten(coeffs) + [x]) as name:
x = ops.convert_to_tensor(x, name="x")
if len(coeffs) < 1:
return array_ops.zeros_like(x, name=name)
coeffs = [
ops.convert_to_tensor(coeff, name=("coeff_%d" % index))
for index, coeff in enumerate(coeffs)
]
p = coeffs[0]
for c in coeffs[1:]:
p = c + p * x
return p
@tf_export("math.reciprocal_no_nan")
@dispatch.add_dispatch_support
def reciprocal_no_nan(x, name=None):
"""Performs a safe reciprocal operation, element wise.
If a particular element is zero, the reciprocal for that element is
also set to zero.
For example:
```python
x = tf.constant([2.0, 0.5, 0, 1], dtype=tf.float32)
tf.math.reciprocal_no_nan(x) # [ 0.5, 2, 0.0, 1.0 ]
```
Args:
x: A `Tensor` of type `float16`, `float32`, `float64` `complex64` or
`complex128`.
name: A name for the operation (optional).
Returns:
A `Tensor` of same shape and type as `x`.
Raises:
TypeError: x must be of a valid dtype.
"""
with ops.name_scope(name, "reciprocal_no_nan", [x]) as scope:
x = ops.convert_to_tensor(x, name="x")
one = constant_op.constant(1, dtype=x.dtype.base_dtype, name="one")
return gen_math_ops.div_no_nan(one, x, name=scope)
@tf_export("math.xlog1py")
@dispatch.add_dispatch_support
def xlog1py(x, y, name=None):
r"""Compute x * log1p(y).
Given `x` and `y`, compute `x * log1p(y)`. This function safely returns
zero when `x = 0`, no matter what the value of `y` is.

Returns:
`x * log1p(y)`.
@compatibility(scipy)
Equivalent to scipy.special.xlog1py
@end_compatibility
"""
with ops.name_scope(name, "xlog1py", [x]):
return gen_math_ops.xlog1py(x, y)
@tf_export("math.erfinv")
@dispatch.add_dispatch_support
def erfinv(x, name=None):
"""Compute inverse error function.
Given `x`, compute the inverse error function of `x`. This function
is the inverse of `tf.math.erf`.
Args:
x: `Tensor` with type `float` or `double`.
name: A name for the operation (optional).
Returns:
Inverse error function of `x`.
"""
with ops.name_scope(name, "erfinv", [x]):
return gen_math_ops.erfinv(x)
@tf_export("math.ndtri")
@dispatch.add_dispatch_support
def ndtri(x, name=None):
"""Compute quantile of Standard Normal.
Args:
x: `Tensor` with type `float` or `double`.
name: A name for the operation (optional).
Returns:
Inverse error function of `x`.
"""
with ops.name_scope(name, "ndtri", [x]):
return gen_math_ops.ndtri(x)
@tf_export("math.erfcinv")
@dispatch.add_dispatch_support
def erfcinv(x, name=None):
"""Computes the inverse of complementary error function.
Given `x`, compute the inverse complementary error function of `x`.
This function is the inverse of `tf.math.erfc`, and is defined on
`[0, 2]`.
>>> tf.math.erfcinv([0., 0.2, 1., 1.5, 2.])
<tf.Tensor: shape=(5,), dtype=float32, numpy=
array([ inf, 0.9061935, -0. , -0.4769363, -inf],
dtype=float32)>
Args:
x: `Tensor` with type `float` or `double`.
name: A name for the operation (optional).
Returns:
Inverse complementary error function of `x`.
@compatibility(numpy)
Equivalent to scipy.special.erfcinv
@end_compatibility
"""
with ops.name_scope(name, "erfcinv", [x]):
x = ops.convert_to_tensor(x, name="start")
return -ndtri(0.5 * x) * np.sqrt(0.5)
@tf_export("math.ceil", v1=["math.ceil", "ceil"])
@dispatch.add_dispatch_support
@deprecation.deprecated_endpoints("ceil")
@dispatch.add_dispatch_support
def ceil(x, name=None):
"""Return the ceiling of the input, element-wise.
For example:
>>> tf.math.ceil([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
<tf.Tensor: shape=(7,), dtype=float32,
numpy=array([-1., -1., -0., 1., 2., 2., 2.], dtype=float32)>
Args:
x: A `tf.Tensor`. Must be one of the following types: `bfloat16`, `half`,
`float32`, `float64`. `int32`
name: A name for the operation (optional).
Returns:
A `tf.Tensor`. Has the same type as `x`.
@compatibility(numpy)
Equivalent to np.ceil
@end_compatibility
"""
return gen_math_ops.ceil(x, name)
@tf_export("math.sqrt", "sqrt")
@dispatch.add_dispatch_support
def sqrt(x, name=None): # pylint: disable=redefined-builtin
r"""Computes element-wise square root of the input tensor.
Note: This operation does not support integer types.
>>> x = tf.constant([[4.0], [16.0]])
>>> tf.sqrt(x)
<tf.Tensor: shape=(2, 1), dtype=float32, numpy=
array([[2.],
[4.]], dtype=float32)>
>>> y = tf.constant([[-4.0], [16.0]])
>>> tf.sqrt(y)
<tf.Tensor: shape=(2, 1), dtype=float32, numpy=
array([[nan],
[ 4.]], dtype=float32)>
>>> z = tf.constant([[-1.0], [16.0]], dtype=tf.complex128)
>>> tf.sqrt(z)
<tf.Tensor: shape=(2, 1), dtype=complex128, numpy=
array([[0.0+1.j],
[4.0+0.j]])>
Note: In order to support complex complex, please provide an input tensor
of `complex64` or `complex128`.
Args:
x: A `tf.Tensor` of type `bfloat16`, `half`, `float32`, `float64`,
`complex64`, `complex128`
name: A name for the operation (optional).
Returns:
A `tf.Tensor` of same size, type and sparsity as `x`.
"""
return gen_math_ops.sqrt(x, name)
# pylint: disable=g-docstring-has-escape
@tf_export("math.exp", "exp")
@dispatch.add_dispatch_support
def exp(x, name=None):
r"""Computes exponential of x element-wise. \\(y = e^x\\).
This function computes the exponential of the input tensor element-wise.
i.e. `math.exp(x)` or \\(e^x\\), where `x` is the input tensor.
\\(e\\) denotes Euler's number and is approximately equal to 2.718281.
Output is positive for any real input.
>>> x = tf.constant(2.0)
>>> tf.math.exp(x)
<tf.Tensor: shape=(), dtype=float32, numpy=7.389056>
>>> x = tf.constant([2.0, 8.0])
>>> tf.math.exp(x)
<tf.Tensor: shape=(2,), dtype=float32,
numpy=array([ 7.389056, 2980.958 ], dtype=float32)>
For complex numbers, the exponential value is calculated as
$$
e^{x+iy} = {e^x} {e^{iy}} = {e^x} ({\cos (y) + i \sin (y)})
$$
For `1+1j` the value would be computed as:
$$
e^1 (\cos (1) + i \sin (1)) = 2.7182817 \times (0.5403023+0.84147096j)
$$
>>> x = tf.constant(1 + 1j)
>>> tf.math.exp(x)
<tf.Tensor: shape=(), dtype=complex128,
numpy=(1.4686939399158851+2.2873552871788423j)>
Args:
x: A `tf.Tensor`. Must be one of the following types: `bfloat16`, `half`,
`float32`, `float64`, `complex64`, `complex128`.
name: A name for the operation (optional).
Returns:
A `tf.Tensor`. Has the same type as `x`.
@compatibility(numpy)
Equivalent to np.exp
@end_compatibility
"""
return gen_math_ops.exp(x, name)
# pylint: enable=g-docstring-has-escape
@tf_export("math.sobol_sample")
@dispatch.add_dispatch_support
def sobol_sample(dim, num_results, skip=0, dtype=dtypes.float32, name=None):
"""Generates points from the Sobol sequence.
Creates a Sobol sequence with `num_results` samples. Each sample has dimension
`dim`. Skips the first `skip` samples.
Args:
dim: Positive scalar `Tensor` representing each sample's dimension.
num_results: Positive scalar `Tensor` of dtype int32. The number of Sobol
points to return in the output.
skip: (Optional) Positive scalar `Tensor` of dtype int32. The number of
initial points of the Sobol sequence to skip. Default value is 0.
dtype: (Optional) The `tf.Dtype` of the sample. One of: `tf.float32` or
`tf.float64`. Defaults to `tf.float32`.
name: (Optional) Python `str` name prefixed to ops created by this function.
Returns:
`Tensor` of samples from Sobol sequence with `shape` [num_results, dim].
"""
with ops.name_scope(name, "sobol", [dim, num_results, skip]):
return gen_math_ops.sobol_sample(dim, num_results, skip, dtype=dtype)
@tf_export("math.rsqrt", v1=["math.rsqrt", "rsqrt"])
@dispatch.add_dispatch_support
@deprecation.deprecated_endpoints("rsqrt")
@dispatch.add_dispatch_support
def rsqrt(x, name=None):
"""Computes reciprocal of square root of x element-wise.
For example:
>>> x = tf.constant([2., 0., -2.])
>>> tf.math.rsqrt(x)
<tf.Tensor: shape=(3,), dtype=float32,
numpy=array([0.707, inf, nan], dtype=float32)>
Args:
x: A `tf.Tensor`. Must be one of the following types: `bfloat16`, `half`,
`float32`, `float64`.
name: A name for the operation (optional).
Returns:
A `tf.Tensor`. Has the same type as `x`.
"""
return gen_math_ops.rsqrt(x, name)
@tf_export("math.acos", "acos")
@dispatch.add_dispatch_support
def acos(x, name=None):
"""Computes acos of x element-wise.
Provided an input tensor, the `tf.math.acos` operation
returns the inverse cosine of each element of the tensor.
If `y = tf.math.cos(x)` then, `x = tf.math.acos(y)`.
Input range is `[-1, 1]` and the output has a range of `[0, pi]`.
For example:
>>> x = tf.constant([1.0, -0.5, 3.4, 0.2, 0.0, -2], dtype = tf.float32)
>>> tf.math.acos(x)
<tf.Tensor: shape=(6,), dtype=float32,
numpy= array([0. , 2.0943952, nan, 1.3694383, 1.5707964, nan],
dtype=float32)>
Args:
x: A `Tensor`. Must be one of the following types: `bfloat16`, `half`,
`float32`, `float64`, `uint8`, `int8`, `int16`, `int32`, `int64`,
`complex64`, `complex128`, `string`.
name: A name for the operation (optional).
Returns:
A `Tensor`. Has the same type as x.
"""
return gen_math_ops.acos(x, name)
@tf_export("math.floor", "floor")
@dispatch.add_dispatch_support
def floor(x, name=None):
"""Returns element-wise largest integer not greater than x.
Both input range is `(-inf, inf)` and the
ouput range consists of all integer values.
For example:
>>> x = tf.constant([1.3324, -1.5, 5.555, -2.532, 0.99, float("inf")])
>>> tf.floor(x).numpy()
array([ 1., -2., 5., -3., 0., inf], dtype=float32)
Args:
x: A `Tensor`. Must be one of the following types: `bfloat16`, `half`,
`float32`, `float64`.
name: A name for the operation (optional).
Returns:
A `Tensor`. Has the same type as x.
"""
return gen_math_ops.floor(x, name)


{{data.ServiceTitle}}
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Read MoreLorem Ipsum is simply dummy text of the printing and typesetting industry.
Read MoreLorem Ipsum is simply dummy text of the printing and typesetting industry.
Read More


| CS 111 - Introduction to
Computer Science I Course Information |
On the surface it appears that Computer Science is a very dynamic discipline. However, there are certain principles that are basic to Computer Science. These are the fundamentals that enable us to solve problems within the context of a hardware environment. For that reason this course has a heavy emphasis on the methodology of problem solving with the use of computing equipment, algorithms, and the implementation of those algorithms in a specific programming language. Because of the importance of the Internet and the World Wide Web, this course will be taught using the Java programming language. Exercises will introduce the student to basic computing concepts, data types, classes and methods, decisions, iteration, testing and debugging, arrays and vectors, and other selected topics. The goal of these exercises is to illustrate good programming principles, an understanding of object oriented programming, programming and elementary data structures, as well as some basic software engineering principles. Students will have weekly homework exercises throughout the term that will provide a solid foundation of experience for future problem-solving.
Introduction to Java Programming, Comprehensive Version (10th Edition) by Y. Daniel Liang Text Home Page (author), (Pearson) ISBN-13:<PHONE_NUMBER>463 ISBN-10:<PHONE_NUMBER> © 2014 |
Section A - Glatfelter 112 M,W,F 11:00-11:50AM:
Section B - Glatfelter 112 M,W,F
12:00-12:50PM:
Todd Neller
Office: Glatfelter 209
Office Hours: Mo-Fr 2-4PM or by appointment. Note: Generally,
feel free to drop in if my office door is open (i.e., most of the time
beyond class).
Phone: 337-6643
E-mail:
In-class Assistants:
Section A: Thy Do (TA office hours Thursday,
7:30-9:30PM, Glatfelter 207)
Section B: Alexi Doak (TA
office hours Tuesday, 7-9PM, Glatfelter 207)
Grading Assistants: Will Czubakowski (TA office hours Monday, 7-9PM, Glatfelter 207) and Kevin Maldonado (TA office hours Wednesday, 7-9PM, Glatfelter 207)
You are responsible to know the material from each lecture and reading assignment before the start of the next class. Homework is due at the beginning of lecture on the due date. Late homework will not necessarily be accepted. Source code that does not compile may not receive partial credit. You are required to attend 2 colloquia or approved departmental events over the course of the semester.
Class attendance and participation is required. If you attend all classes and are willing to participate, you'll get 100% for this part of your grade. Even if you know enough to give a particular lecture, please consider the value of helping your peers during in-class exercises.
Woody Allen is quoted as saying "80% of success is just showing up." While our class attendance/participation grade is not 80% of the final grade, it is critical that late arrivals and unexcused absences are not excessive. Missing more than half of class unexcused is considered being absent. An unexcused late arrival is counted as a half absence. If the total number of absences counted this way exceeds 20% of class meetings, i.e. 8.5 absences or more, the student will have failed the course.
You are expected to work an average of 9 hours per week beyond class time. Gettysburg College policy, in accordance with federal and state standards, equates 1 credit unit with an average of 12 hours of work per week with 50 minute classes counting as 1 full hour of work. During these remaining 9 hours beyond class, a student is expected to learn from assigned readings, complete exercises related to such readings, attend required colloquia, and complete assignments.
Think of your college studies as a more-than-full-time job, and engage in it with passion. After all, you get out of it what you put into it, and it is my hope that you'll gain much from your investment in this course. If you'd like to learn more about how to better track tasks and manage time as a student, consider watching my short tutorial on getting things done.
Honesty, Integrity, Honor. These are more important than anything we will teach in this class. Students can and are encouraged to help each other understand course concepts, but all graded work must be done independently unless otherwise specified (e.g. group work). Submitted work should be created by those submitting it. Submission of plagiarized code or design work is a violation of the Honor Code, which I strictly enforce. For detailed information about the Honor Code, see http://www.gettysburg.edu/about/offices/provost/advising/honor_code/index.dot.
What is permitted:
What is not permitted:
Put simply, students may discuss assignments at an abstract level (e.g. specifications, algorithm pseudocode), but must actually implement solutions independently or in permitted groups. Credit should be given where credit is due. Let your conscience be your guide. Do not merely focus on the result; learn from the process.


|
| enum | AudioFormat { mp3 =1,
wav =2,
ogg =3
} |
| |
| enum | ActionType {
record =1,
conversation =2,
connect =3,
talk =4,
stream =5,
input =6,
notify =7
} |
| |
|
| AudioFormat | Format [get, set] |
| | Record the Call in a specific format. The default value is mp3, or wav when recording more than 2 channels. More...
|
| |
| string | Split [get, set] |
| | Record the sent and received audio in separate channels of a stereo recording—set to conversation to enable this. More...
|
| |
| uint | Channels [get, set] |
| | The number of channels to record (maximum 32). If the number of participants exceeds channels any additional participants will be added to the last channel in file. split conversation must also be enabled More...
|
| |
| string | EndOnSilence [get, set] |
| | Stop recording after n seconds of silence. Once the recording is stopped the recording data is sent to event_url. The range of possible values is 3<=endOnSilence<=10. More...
|
| |
| string | EndOnKey [get, set] |
| | Stop recording when a digit is pressed on the handset. Possible values are: *, # or any single digit e.g. 9 More...
|
| |
| string | TimeOut [get, set] |
| | The maximum length of a recording in seconds. One the recording is stopped the recording data is sent to event_url. The range of possible values is between 3 seconds and 7200 seconds (2 hours) More...
|
| |
| string | BeepStart [get, set] |
| | Set to true to play a beep when a recording starts More...
|
| |
| string[] | EventUrl [get, set] |
| | The URL to the webhook endpoint that is called asynchronously when a recording is finished. If the message recording is hosted by Nexmo, this webhook contains the URL you need to download the recording and other meta data. More...
|
| |
| string | EventMethod [get, set] |
| | The HTTP method used to make the request to eventUrl. The default value is POST. More...
|
| |
|
ActionType | Action [get, protected set] |
| |
|
|
override string | ToString () |
| |
◆ BeepStart
| string Nexmo.Api.Voice.Nccos.RecordAction.BeepStart |
|
getset |
Set to true to play a beep when a recording starts
◆ Channels
| uint Nexmo.Api.Voice.Nccos.RecordAction.Channels |
|
getset |
The number of channels to record (maximum 32). If the number of participants exceeds channels any additional participants will be added to the last channel in file. split conversation must also be enabled
◆ EndOnKey
| string Nexmo.Api.Voice.Nccos.RecordAction.EndOnKey |
|
getset |
Stop recording when a digit is pressed on the handset. Possible values are: *, # or any single digit e.g. 9
◆ EndOnSilence
| string Nexmo.Api.Voice.Nccos.RecordAction.EndOnSilence |
|
getset |
Stop recording after n seconds of silence. Once the recording is stopped the recording data is sent to event_url. The range of possible values is 3<=endOnSilence<=10.
◆ EventMethod
| string Nexmo.Api.Voice.Nccos.RecordAction.EventMethod |
|
getset |
The HTTP method used to make the request to eventUrl. The default value is POST.
◆ EventUrl
| string [] Nexmo.Api.Voice.Nccos.RecordAction.EventUrl |
|
getset |
The URL to the webhook endpoint that is called asynchronously when a recording is finished. If the message recording is hosted by Nexmo, this webhook contains the URL you need to download the recording and other meta data.
◆ Format
| AudioFormat Nexmo.Api.Voice.Nccos.RecordAction.Format |
|
getset |
Record the Call in a specific format. The default value is mp3, or wav when recording more than 2 channels.
◆ Split
| string Nexmo.Api.Voice.Nccos.RecordAction.Split |
|
getset |
Record the sent and received audio in separate channels of a stereo recording—set to conversation to enable this.
◆ TimeOut
| string Nexmo.Api.Voice.Nccos.RecordAction.TimeOut |
|
getset |
The maximum length of a recording in seconds. One the recording is stopped the recording data is sent to event_url. The range of possible values is between 3 seconds and 7200 seconds (2 hours)
The documentation for this class was generated from the following file:
- C:/Users/slore/Documents/projects/slorello89/nexmo-dotnet/Nexmo.Api/Voice/Nccos/RecordAction.cs


Adds an item in a list box or drop-down control on a worksheet or dialog sheet control.
Syntax
ADD.LIST.ITEM(text, index_num)
Text specifies the text of the item to be added. Instead of text, an empty string may be inserted.
Index_num is the list index to be used for the new item. Blank entries are created from the end of the current list to the new item index. If index_num is omitted the new item is appended to the list.
Remarks
If the list box or drop-down box was already filled using the LISTBOX.PROPERTIES function, then adding an item with ADD.LIST.ITEM causes the fillrange contents to be discarded in favor of the new list.
Related Functions
REMOVE.LIST.ITEM Removes an item in a list box or drop-down box
SELECT.LIST.ITEM Selects an item in a list box or in a group box
Return to index


{include file="index/common/head"/}
{include file="index/common/header" /}
{include file="index/common/sidenav" /}
Message prompt
{include file="index/common/footer" /} {include file="index/common/script" /} {block name="js"} {/block}


|
| virtual bool | DestroyContent [get, set] |
| | If true then Component will search components inside Content area and destroy it during own destroy More...
|
| |
| virtual JFunction | PreInit [get, set] |
| |
| virtual string | TagHiddenName [get, set] |
| |
| virtual object | Tag [get, set] |
| | An Object that contains data about the Component. The default is a null reference. More...
|
| |
| virtual string | TagString [get, set] |
| |
| virtual TitleBarItemAlign | Align [get, set] |
| | The Component's alignment inside a TitleBar. Only applicable if the Component is inside a TitleBar. More...
|
| |
| virtual string | BaseCls [get, set] |
| | The base CSS class to apply to this component's element. This will also be prepended to other elements within this component. To add specific styling for sub-classes, use the cls config. More...
|
| |
| virtual bool | Border [get, set] |
| | Enables or disables bordering on this component. More...
|
| |
| virtual Unit | Bottom [get, set] |
| | The absolute bottom position of this Component in pixels. Explicitly setting this value will make this Component become 'floating', which means its layout will no longer be affected by the Container that it resides in. More...
|
| |
| virtual string | BottomSpec [get, set] |
| | The absolute bottom position of this Component as a CSS value with units. Explicitly setting this value will make this Component become 'floating', which means its layout will no longer be affected by the Container that it resides in. More...
|
| |
| virtual bool | Centered [get, set] |
| | Whether or not this Component is absolutely centered inside its Container More...
|
| |
| virtual string | Cls [get, set] |
| | The CSS class to add to this component's element, in addition to the baseCls. In many cases, this property will be specified by the derived component class. See userCls for adding additional CSS classes to component instances (such as items in a Ext.Container). More...
|
| |
| virtual object | Data [get, set] |
| | The initial set of data to apply to the tpl to update the content area of the Component. More...
|
| |
| virtual bool | Disabled [get, set] |
| | Whether or not this component is disabled More...
|
| |
| virtual string | DisabledCls [get, set] |
| | The CSS class to add to the component when it is disabled. Defaults to 'x-item-disabled'. More...
|
| |
| virtual Dock | Docked [get, set] |
| | The dock position of this component in its container More...
|
| |
| virtual int | Flex [get, set] |
| | The flex of this item if this item item is inside a Ext.layout.HBox or Ext.layout.VBox layout. More...
|
| |
| virtual string | FloatingCls [get, set] |
| | The CSS class to add to this component when it is floatable.. Defaults to 'x-floating'. More...
|
| |
| virtual bool | FullScreen [get, set] |
| | Force the component to take up 100% width and height available, by adding it to Ext.Viewport. More...
|
| |
| virtual bool | Hidden [get, set] |
| | Whether or not this Component is hidden (its CSS display property is set to none). More...
|
| |
| virtual string | HiddenCls [get, set] |
| | The CSS class to add to the component when it is hidden. Defaults to 'x-item-hidden'. More...
|
| |
| virtual string | HideAnimation [get, set] |
| | Animation effect to apply when the Component is being hidden. Typically you want to use an outbound animation type such as 'fadeOut' or 'slideOut'. More...
|
| |
| virtual string | Html [get, set] |
| | Optional HTML content to render inside this Component, or a reference to an existing element on the page. More...
|
| |
| virtual Unit | Left [get, set] |
| | The absolute left position of this Component in pixels. Explicitly setting this value will make this Component become 'floating', which means its layout will no longer be affected by the Container that it resides in. More...
|
| |
| virtual string | LeftSpec [get, set] |
| | The absolute left position of this Component as a CSS value with units. Explicitly setting this value will make this Component become 'floating', which means its layout will no longer be affected by the Container that it resides in. More...
|
| |
| virtual int | Margin [get, set] |
| | The margin as a number to use on this Component. All edges get the same margin. More...
|
| |
| virtual string | MarginSpec [get, set] |
| | The margin as a CSS string like '5 10 10 10' to use on this Component. More...
|
| |
| virtual int | MaxHeight [get, set] |
| | The maximum height of this Component in pixels. Note: that this config will not apply if the Component is 'floating' (absolutely positioned or centered). More...
|
| |
| virtual string | MaxHeightSpec [get, set] |
| | The maximum height of this Component as a CSS length value. Note: that this config will not apply if the Component is 'floating' (absolutely positioned or centered). More...
|
| |
| virtual int | MaxWidth [get, set] |
| | The maximum width of this Component in pixels. Note: that this config will not apply if the Component is 'floating' (absolutely positioned or centered). More...
|
| |
| virtual string | MaxWidthSpec [get, set] |
| | The maximum width of this Component as a CSS length value. Note: that this config will not apply if the Component is 'floating' (absolutely positioned or centered). More...
|
| |
| virtual int | MinHeight [get, set] |
| | The minumum height of this Component in pixels. More...
|
| |
| virtual string | MinHeightSpec [get, set] |
| | The minimum height of this Component as a CSS lenght value. More...
|
| |
| virtual int | MinWidth [get, set] |
| | The minumum width of this Component in pixels. More...
|
| |
| virtual string | MinWidthSpec [get, set] |
| | The minimum width of this Component as a CSS lenght value. More...
|
| |
| virtual int | Padding [get, set] |
| | The padding in pixels to use on this Component. More...
|
| |
| virtual string | PaddingSpec [get, set] |
| | The padding as a CSS string like '10 5 3 10' to use on this Component. More...
|
| |
| ItemsCollection< Plugin > | Plugins [get] |
| | An object or array of objects that will provide custom functionality for this component. The only requirement for a valid plugin is that it contain an init method that accepts a reference of type Ext.Component. When a component is created, if any plugins are available, the component will call the init method on each plugin, passing a reference to itself. Each plugin can then call methods or respond to events on the component as needed to provide its functionality. More...
|
| |
| virtual string | RenderTo [get, set] |
| | Optional element to render this Component to. Usually this is not needed because a Component is normally full screen or automatically rendered inside another Container More...
|
| |
| virtual Unit | Right [get, set] |
| | The absolute right position of this Component in pixels. Explicitly setting this value will make this Component become 'floating', which means its layout will no longer be affected by the Container that it resides in. More...
|
| |
| virtual string | RightSpec [get, set] |
| | The absolute right position of this Component as a CSS value with units. Explicitly setting this value will make this Component become 'floating', which means its layout will no longer be affected by the Container that it resides in. More...
|
| |
| virtual ScrollableOption | Scrollable [get, set] |
| | Configuration options to make the Component scrollable More...
|
| |
| virtual string | ShowAnimation [get, set] |
| | Animation effect to apply when the Component is being hidden. Typically you want to use an outbound animation type such as 'fadeOut' or 'slideOut'. More...
|
| |
| virtual string | StyleHtmlCls [get, set] |
| | The class that is added to the content target when you set styleHtmlContent to true. Defaults to 'x-html'. More...
|
| |
| virtual bool | StyleHtmlContent [get, set] |
| | True to automatically style the html inside the content target of this component (body for panels). Defaults to false. More...
|
| |
| virtual Unit | Top [get, set] |
| | The absolute top position of this Component in pixels. Explicitly setting this value will make this Component become 'floating', which means its layout will no longer be affected by the Container that it resides in. More...
|
| |
| virtual string | TopSpec [get, set] |
| | The absolute top position of this Component as a CSS value with units. Explicitly setting this value will make this Component become 'floating', which means its layout will no longer be affected by the Container that it resides in. More...
|
| |
| virtual XTemplate | Tpl [get, set] |
| | An XTemplate which used in conjunction with the data and tplWriteMode configurations. More...
|
| |
| virtual TemplateWriteMode | TplWriteMode [get, set] |
| | The Ext.(X)Template method to use when updating the content area of the Component. Defaults to 'overwrite' More...
|
| |
| virtual UI | UI [get, set] |
| | The predefined UI to be used on this Component. "Default" is the only predefined UI which is currently supported. To apply a custom UI, use the Component's UIName property. More...
|
| |
| virtual string | UIName [get, set] |
| | The custom UI to be used on this Component More...
|
| |
| virtual int | ZIndex [get, set] |
| | The z-index to give this Component when it is rendered More...
|
| |
| ResponsiveRules | ResponsiveConfig [get] |
| |
| ResponsiveFormulas | ResponsiveFormulas [get] |
| |
| ItemsCollection< Observable > | Bin [get] |
| |
| ParameterCollection | Bind [get] |
| | Setting this config option adds or removes data bindings for other configs. More...
|
| |
| virtual object | BindObject [get, set] |
| | Setting this config option adds or removes data bindings for other configs. More...
|
| |
| virtual string | BindString [get, set] |
| | Setting this config option adds or removes data bindings for other configs. More...
|
| |
| virtual string | DefaultBindProperty [get, set] |
| | This property is used to determine the property of a bind config that is just the value. Defaults to 'html'. More...
|
| |
| virtual bool | DefaultListenerScope [get, set] |
| | If true, this component will be the default scope (this pointer) for events specified with string names so that the scope can be dynamically resolved. The component will automatically become the defaultListenerScope if a controller is specified. More...
|
| |
| override Unit | Height [get, set] |
| | The height of this Component in pixels. More...
|
| |
| virtual string | HeightSpec [get, set] |
| | The height of this Component as a CSS value with units. More...
|
| |
| virtual string | Publishes [get, set] |
| | One or more names of config properties that this component should publish to its ViewModel. Some components override this and publish their most useful configs by default. More...
|
| |
| virtual string [] | PublishesArray [get, set] |
| | One or more names of config properties that this component should publish to its ViewModel. Some components override this and publish their most useful configs by default. More...
|
| |
| virtual object | PublishesObject [get, set] |
| | One or more names of config properties that this component should publish to its ViewModel. Some components override this and publish their most useful configs by default. More...
|
| |
| virtual string | Reference [get, set] |
| | Specifies a name for this Component inside its component hierarchy. This name must be unique within its view or its ViewController. See the documentation in Ext.container.Container for more information about references. More...
|
| |
| virtual bool | Session [get, set] |
| | If provided this creates a new Session instance for this component. If this is a Container, this will then be inherited by all child components. More...
|
| |
| virtual string | StyleSpec [get, set] |
| | Additional CSS styles that will be rendered into an inline style attribute when the widget is rendered. More...
|
| |
| virtual string | TwoWayBindable [get, set] |
| | This object holds a map of config properties that will update their binding as they are modified. For example, value is a key added by form fields. The form of this config is the same as publishes. More...
|
| |
| virtual string [] | TwoWayBindableArray [get, set] |
| | This object holds a map of config properties that will update their binding as they are modified. For example, value is a key added by form fields. The form of this config is the same as publishes. More...
|
| |
| virtual object | TwoWayBindableObject [get, set] |
| | This object holds a map of config properties that will update their binding as they are modified. For example, value is a key added by form fields. The form of this config is the same as publishes. More...
|
| |
| virtual string | UserCls [get, set] |
| | One or more CSS classes to add to the component's primary element. This config is intended solely for use by the component instantiator (the "user"), not by derived classes. More...
|
| |
| virtual object | ViewModel [get, set] |
| | The ViewModel is a data provider for this component and its children. The data contained in the ViewModel is typically used by adding bind configs to the components that want present or edit this data. More...
|
| |
| override Unit | Width [get, set] |
| | The width of this Component in pixels. More...
|
| |
| virtual string | WidthSpec [get, set] |
| | The width of this Component as a CSS value with units. More...
|
| |
| ConfigItemCollection | CustomConfig [get] |
| | Collection of custom js config More...
|
| |
| virtual string | ItemID [get, set] |
| | An itemId can be used as an alternative way to get a reference to a component when no object reference is available.


Server-side processing can be exceptionally useful in DataTables when dealing with massive data sets, and ColReorder works with this as would be expected.
It is recommend that you use object based data with server-side processing and ColReorder, as this provides easily understandable mapping between the the columns and the data relation on the server, otherwise you need to work out array indexes on each call!
| Name | Position | Office | Extn. | Start date | Salary |
|---|---|---|---|---|---|
| Name | Position | Office | Extn. | Start date | Salary |
The Javascript shown below is used to initialise the table shown in this example:
$(document).ready(function()
{ $('#example').dataTable( { dom: 'Rlfrtip',
processing: true, serverSide: true, ajax:
"../../../examples/server_side/scripts/objects.php",
columns: [ { data: "first_name" }, {
data: "last_name" }, { data:
"position" }, { data:
"office" }, { data:
"start_date" }, { data:
"salary" } ] } ); } );
In addition to the above code, the following Javascript library files are loaded for use in this example:
The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:
This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The additional CSS used is shown below:
The following CSS library files are loaded for use in this example to provide the styling of the table:
This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is loaded.
The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side processing scripts can be written in any language, using the protocol described in the DataTables documentation.


{% include header.html %}
{% include recipe-schema.html %} {% include splash.html %}Want to learn how to make {{ page.title }}? We put together our favorite recipe, it takes about {{ page.time }}, makes enough slime for {{ page.servings }} and only needs {{ page.ingredients.size }} ingredients!


MetaClass: 2
Utility Messages
| GEOS SDK TechDocs
|
|
| 1 Special Messages
| 3 Exported Message Ranges
MetaClass
also provides a number of other messages that are used throughout the system. These messages have been separated into loosely-defined categories and listed in the sections below.
Object Creation and Destruction
Class Messages
Object Management Messages
User Interface Utility Meta Messages
Event Messages
Variable Data Messages
Notification Messages
Options Messages
Suspending and Unsuspending
Help Files
| GEOS SDK TechDocs
|
|
| 1 Special Messages
| 3 Exported Message Ranges


Event Location:
Canadian Western Bank Conference Centre
10303 Jasper Avenue NW
Edmonton, Alberta, Canada
Abstract:
Legacy corporate applications that are built in-house can quite often be tightly coupled together. Either you have cross database connections, load jobs, linked servers, multiple copies of data, etc. These design patterns increase your technical debt and application changes will need to carefully consider the impact to the downstream applications. Tightly coupled databases can also make migration/upgrade projects more difficult, especially as you start to looking towards cloud based solutions. What if your organization has started to implement newer design patterns and technologies like microservices, restful web integration or enterprise service buses? Do you have to re-write all of your legacy applications to use these new technologies? This presentation will show a method that was used to update legacy applications to utilize an integration middleware platform without a major re-write of the application. We will then expand on this and show how your SQL Server database could
Speaker(s): Ian Chamberland,
Abstract:
You want Enterprise Edition of SQL Server? Not gonna happen! When we are limited by having just the Standard version we have to dig into our “Blue Collar” roots, we need to become more creative and squeeze every penny it has to offer out of it. In this session, we will review some of the limitations that Standard has. Then review items such as basic normalization and High Availability options available to Standard. You will also learn Blue Collar techniques to implement partitioning using techniques like as indexed views and partitioned views. Let’s dig in and learn to make use of all we have until we beg our bosses enough to get Enterprise Edition!
Speaker(s): William Wolf,
Abstract:
Now that SQL Server loves PowerShell and Microsoft loves open source, it is even easier to automate even your most time-consuming, repetitive, mundane or burdensome tasks. Using the DbaChecks PowerShell module released at the SQLBits 2018 conference we can: Track SQL Server instance configurations Promptly provide required information to managmement, change configuration or developers Deftly respond to audit change requirements across your entire estate (and impress your auditor with PowerShell;) Restore SQL Servers to their correct state prior and post deployment Test *everything* from configuration to permissions, SQL service account share access to sysadmins, Agent Jobs to SPNs This session will look at how to install and use this module . With multiple examples we will look at both running the checks and viewing the data in the supplied PowerBI reports. Pre-requisites Some basic knowledge of PowerShell and DBA
Speaker(s): Patrick Flynn,
Abstract:
If you are involved in data warehouse development using the Microsoft technology stack, then you have been introduced SSIS. The question you will have asked yourself many times as you develop is: "What the #%@ were they thinking?". This session is dedicated to providing an overview to some of the items that just drive you nutz using this tool in an enterprise environment, and having a laugh while we learn. From tiny windows designed for a 640x480 monitor, to clicky-clicky-clicky madness, to the tool being anti-agile. Developing and maintaining code with SSIS is enough to turn your hair gray early. But it sure looked "snazzy" when your boss got a demo of it, so now it is your problem. So if you are a seasoned developer come on out and commiserate with the community, and if you haven't used to tool yet you can find out what your boss is asking you to get involved with.
Speaker(s): Doran Douglas,
Abstract:
Overview of Columnstore indexes introduced in SQL Server 2012 and its evolution through each release. We will explore how data is organized differently in Columnstore and its impact on query performances. We would cover some of best practices when using this new technology and pitfalls to watch out for when designing your system.
Speaker(s): Sepand Gojgini,
Abstract:
Data is today’s currency. Azure Data Catalog (ADC) is a relatively unknown resource in the IT community. This is an unfortunate state since ADC is an incredibly useful tool that is easy to implement and use. Companies that are able to leverage their data have seen the greatest gains in growth and market capitalization. The reason for this is simple: We live in the information age. Being able to leverage the data you gather is the invitation you need just to compete in information age. ADC is an indispensable tool that helps companies organize and make sense of the mountains of data they collect every day. By walking participants through an implementation of ADC, I will introduce them to the product, and show how easy it is to use. By presenting concrete examples of how ADC is used, I will demonstrate its importance. Participants should leave this session determined to introduce ADC to their team and resolute in their intention to implement it within their company.
Speaker(s): Melody Zacharias,
Abstract:
Powershell has been part of Windows for > 10 years and has been part of SQL Server since 2008. In spite of this the adoption among Database Professionals for use in investigating and managing their environments has been low. With the release of the open source DBA Tools module from DBATools.IO, with its 300+ commands, the time has arrived for Database Professionals to embrace PowerShell and upgrade their skills to support the modern Hybrid environment. In this session we will look how to download, install and begin using the power within both this module and Powershell. No prior experience with Powershell required!
Speaker(s): Patrick Flynn,
Abstract:
R is the premiere language for data analysis. If the world of data science sounds fun and exciting, now is the time to get into R. We will walk through the core constructs of R, learn how to retrieve data from flat files and databases, and get a peek at the power behind R. This session will also give resources on where to go in order to become more familiar with statistics, R the language, and the R package ecosystem.
Speaker(s): Kevin Feasel,
Abstract:
Restoring service broker from a live system to a test system can give you strange results. From messages that refuse to send to messages that appear to send but never arrive. We will be troubleshooting using SQL profiler and some DMV’s to see what goes on in the background when service broker is misbehaving. Nothing more worrying than performing a disaster recovery and having service broker messages not send. We will also be doing a quick overview of what Service broker does and what is required for a service broker setup. Once we have shown the profiler method of diagnosing problems, I will show a quicker and easier way to find and resolve service broker issues.
Speaker(s): Brian Gale,
Abstract:
Power BI v1. Started off in Excel. Today Power BI v2 has Excel capabilities, a free desktop app for development, native mobile apps for consuming on all devices, and a cloud service to distribute your data visualizations at scale. Let's look at some common architectures for pieces and how they can deliver value to your business.
Speaker(s): Scott Stauffer,
Abstract:
Optimize SQL Server from the roots. Through demonstrations this session will teach the intermediate user diverse, solid and rounded fundamentals that SQL Server offers. Explore the Master database to retrieve records for improved database administration. Learn how to query the Report Server database for essential information. Use Begin… END with TRY… CATCH: to Drop or Truncate tables with Set Operators. The goal of this presentation is to expose how fundamentals of SQL Server can be applied in ways that may be overlooked and how to enhance query performance optimization. Pick up a trick or two along the way.
Speaker(s): Evin Fenton,
Abstract:
You've heard about Power BI, and you've seen it, but you haven't yet rolled up your sleeves and got your hands dirty. It looks like it is really easy, but sometimes it helps to have someone step you through it the first time to help you hit the ground running. We will grab various public data sources, join them together in a model and build an interactive pièce de ré·sis·tance on the visual design surface!
Speaker(s): Scott Stauffer,
Abstract:
Desired State Configuration (DSC) is PowerShell add-on released with PowerShell 4.5 update and updated with PowerShell 5.0. In this session we'll look at how DSC can be used to deploy monitoring for configuration drift using industry standard approach.
Speaker(s): Mohit Gupta,
Abstract:
tSQLt is a database unit testing framework for Microsoft SQL Server. tSQLt is ideal for the database developer because tests are written in TSQL and is easy to use. In this session you’ll learn how to use tSQLt to add automated tests to your database to ensure your code produces desired results even after modifications.
Speaker(s): Janice Gerbrandt,
Abstract:
Back to the Future is the greatest time travel movie ever. I'll show you how temporal tables work, in both SQL Server and Azure SQL Database, without needing a DeLorean. We cover point in time analysis, reconstructing state at any time in the past, recovering from accidental data loss, calculating trends, and my personal favourite: auditing. There's even a bit of In-Memory OLTP. There might even be time for demos!
Speaker(s): Randolph West,
Abstract:
If you're interested in Hadoop but don't know where to begin, this session will give you an idea of what you can do with the open-source platform. We will see an overview of the Hadoop architecture, becoming familiar with the overall platform and its solutions for warehousing, ETL, streaming data ingest, in-memory processing, and more. We will compare Hadoop to SQL Server to help gain an understanding of when to deploy which technology.
Speaker(s): Kevin Feasel,
Abstract:
SQL Server 2016 and 2017 introduced a number of features and improvements over previous versions. This session will take you through them at a high level, and help you decide on an appropriate upgrade path from older versions of SQL Server. I think this will work
Speaker(s): Randolph West,
Abstract:
This talk introduces DBAs to Object-Relational Mapping (ORM) from the point of view of a software developer creating a simple website. Aside from introducing ORM I'll explain why developers like to use them, their strengths and weaknesses, and how DBAs and ORM developers can work together in perfect harmony.
Speaker(s): Chris C,
Abstract:
Confidence is the fuel for action. How often have you thought about wanting to do something and thought you may not be successful at it, so it then became too much work to try? The American Pastor Robert Shuler famously asked a very powerful question: “What would you do if you knew you could not fail?” Come explore this exciting topic with me, and we will see what we can accomplish together!
Speaker(s): Melody Zacharias,
Abstract:
Where do you look when you are having performance problems? What tools you have available? In this session I'll share with everyone a troubleshooting methodology that can help you identify and focus your search. In addition, we'll walk through some hands on scenarios to fix performance issues.
Speaker(s): Mohit Gupta,
Abstract:
Enjoy a fun filled adventure through the landscape of data and information security options available within SQL Server as we explore the promises, perils, and pitfalls of CRUD, Data Masking, Row Level Security, Transparent Data Encryption, and Always Encrypted.
Speaker(s): Brent Flesher,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
LinkedIn: https://ca.linkedin.com/in/evin-fenton-495b4a87
Evin Fenton has a decade of experience in the aviation industry. A holder of numerous awards for employee excellence, Evin is presently a Business Intelligence Analyst, following key positions as a Reservation Systems Analyst, Intermediate Quality Software Assurance Analyst, Database Developer, and Systems Coordinator. Holding a sound knowledge of SQL, Evin has extensive experience with Enterprise System Administration and General Business Intelligence, including the significant use of data and database tools. A graduate of Carleton Unversity, Evin was also a world ranked snowboarder.
LinkedIn: https://www.linkedin.com/in/sgojgini/
Product Director at Datateam Services, 10+ years of experience designing data warehouse model and ETL engines used globally. Had a chance of working on world biggest relational Data Warehouse at Amazon managing 5+ PetaByte of data with growth 7+ TeraByte daily. Seeking to apply best software development practices to ETL development and streamlining development process.
LinkedIn: http://ca.linkedin.com/in/melodyzacharias
Contact: http://sqlmelody.com
Melody is the Sr. Microsoft Solutions Manager at Pure and has been in love with data since 1991. She has been sharing her passion with the community in technical sessions and blogs since 2014. She has been a Microsoft MVP since 2016, including winning Rookie of the year for Canada that year. This last year, she was elected to the board of directors for PASS.org, the professional association for SQL Server and was awarded Regional Director by Microsoft. She has co-authored 3 books, including, SQL Server 2019 Administration inside out by Microsoft Press.
LinkedIn: https://ca.linkedin.com/in/rabryst
Contact: https://bornsql.ca/blog/
Randolph West (they / them), founder of Born SQL, is an independent IT consultant, speaker, Calgary PASS user group leader, Microsoft Data Platform MVP, and lead author of “SQL Server 2019 Administration Inside Out”. Randolph specialises in SQL Server performance tuning, disaster recovery, and migrations from really old versions, with an emphasis on implementing best practices. Randolph has presented at PASS Summit, SQLBits, SQL Saturdays, and user groups. You can also find Randolph acting and directing on screen or the stage, or annoying people on Twitter. Do not trust Randolph around chocolate.
LinkedIn: https://www.linkedin.com/in/janice-gerbrandt-3236651a/
Contact: https://islandsql.com/
Janice has been designing and implementing database solutions to improve business functionality since 2001. She is an active PASS member and leads her local user group and a virtual group, as well as organizing SQL Saturday Victoria.
LinkedIn: https://www.linkedin.com/pub/kevin-feasel/7/716/504
Contact: http://www.catallaxyservices.com
Kevin Feasel is a Microsoft Data Platform MVP and CTO at Envizage, where he specializes in data analytics with T-SQL and R, forcing Spark clusters to do his bidding, fighting with Kafka, and pulling rabbits out of hats on demand. He is the lead contributor to Curated SQL (https://curatedsql.com), president of the Triangle Area SQL Server Users Group (https://www.meetup.com/tripass), and author of PolyBase Revealed (https://www.apress.com/us/book/9781484254608). A resident of Durham, North Carolina, he can be found cycling the trails along the triangle whenever the weather's nice enough.
LinkedIn: https://www.linkedin.com/in/chris-cumming
Contact: https://nftb.saturdaymp.com/
Chris's first computer was a Commodore 64 but he didn’t realize how awesome computers were until he discovered he could create his own Doom levels. The original Doom not the remake (i.e he is an experienced developer, not old). While he still enjoys computer games his true passion is solving unique and challenging problems. He knows what it takes to get software out the door and get stuff done. Coincidentally he also runs a basement based software consulting company called Saturday Morning Productions that also prides itself on getting stuff done.
LinkedIn: https://www.linkedin.com/in/doran-douglas-540028b
I am a data warehouse hoser from rural Alberta.
LinkedIn: https://ca.linkedin.com/in/rabryst
Contact: https://bornsql.ca/blog/
Randolph West (they / them), founder of Born SQL, is an independent IT consultant, speaker, Calgary PASS user group leader, Microsoft Data Platform MVP, and lead author of “SQL Server 2019 Administration Inside Out”. Randolph specialises in SQL Server performance tuning, disaster recovery, and migrations from really old versions, with an emphasis on implementing best practices. Randolph has presented at PASS Summit, SQLBits, SQL Saturdays, and user groups. You can also find Randolph acting and directing on screen or the stage, or annoying people on Twitter. Do not trust Randolph around chocolate.
LinkedIn: https://www.linkedin.com/in/williamjwolf
Contact: http://www.sqlwarewolf.com
Bill is the Manager of SQL Server Performance Tuning for RDX. He works with over 400 customers on solutions within the SQL Server environment and specialized in code tuning and mentoring the team within RDX. He has become a SQL Saturday veteran speaking at nearly 40 SQL Saturdays in the last 3 years. He has also spoken at Summit and is an Idera Ace class of 2018. Bill is active in the Pittsburgh SQL Server User Group. He is also the chapter lead for the DevOps Virtual User Group. He is passionate about educating users on SQL Server and mentoring others.
LinkedIn: http://ca.linkedin.com/in/ianachamberland
Ian has been working as a SQL Server Database Administrator since 2010. He focuses on new implementations of SQL Server environments and improving existing ones. He enjoys working with HA/DR technologies, ensuring performance requirements are met and automating tasks with PowerShell.
LinkedIn: http://www.linkedin.com/in/scottstauffer
Contact: http://scottstauffer.ca
Scott Stauffer (@SQLSocialite) is very PASSionate about data and enjoys meeting with like-minded data geeks. He started the Vancouver PASS Chapter in 2004. In 2008, Scott was recognized by Microsoft with a SQL Server MVP award. In 2009, Scott started a PASS BI Chapter in Vancouver, and was also at one time the PASS Regional Chapter Mentor for Canada. For over 10 years he has been an independent consultant working with clients to solve their data woes and extract insight from their business data.
LinkedIn: http://ca.linkedin.com/in/melodyzacharias
Contact: http://sqlmelody.com
Melody is the Sr. Microsoft Solutions Manager at Pure and has been in love with data since 1991. She has been sharing her passion with the community in technical sessions and blogs since 2014. She has been a Microsoft MVP since 2016, including winning Rookie of the year for Canada that year. This last year, she was elected to the board of directors for PASS.org, the professional association for SQL Server and was awarded Regional Director by Microsoft. She has co-authored 3 books, including, SQL Server 2019 Administration inside out by Microsoft Press.
LinkedIn: https://www.linkedin.com/in/guptamohitk
Contact: http://www.sqlcan.com
Microsoft SQL Server PFE for 6+ years; focusing primary on PTO amp; HADR.
LinkedIn: https://www.linkedin.com/in/guptamohitk
Contact: http://www.sqlcan.com
Microsoft SQL Server PFE for 6+ years; focusing primary on PTO amp; HADR.
LinkedIn: https://www.linkedin.com/in/brentflesher/
I have been working with SQL Server since 1998 (SQL 6.5 sp3a ) in a variety of industries including: Energy, Utilities, Finance, Education, Health and Insurance. I live in Edmonton, Alberta, Canada, and am fascinated by data and databases.
Contact: http://sqllensman.com/blog/
Patrick Flynn is a Senior Database Administrator with 10 years experience in large 24 x 7 enterprise environments. He is a certified master for SQL Server and a regular attendee of the PASS Summit. Has presented at SQLSaturday events in Sydney, Melbourne, Brisbane and Auckland, Edmonton and Calgary, Oslo and Cambridge
Contact: http://sqllensman.com/blog/
Patrick Flynn is a Senior Database Administrator with 10 years experience in large 24 x 7 enterprise environments. He is a certified master for SQL Server and a regular attendee of the PASS Summit. Has presented at SQLSaturday events in Sydney, Melbourne, Brisbane and Auckland, Edmonton and Calgary, Oslo and Cambridge
Brian Gale is a DBA at Vecima Networks and has been in this position for approximately 8 years. He experience has been in query optimizing, random troubleshooting and administration of SQL Server. In his administrative tasks, he has been required to learn about various SQL things and currently is focusing on Service Broker and Query Store.
LinkedIn: https://www.linkedin.com/pub/kevin-feasel/7/716/504
Contact: http://www.catallaxyservices.com
Kevin Feasel is a Microsoft Data Platform MVP and CTO at Envizage, where he specializes in data analytics with T-SQL and R, forcing Spark clusters to do his bidding, fighting with Kafka, and pulling rabbits out of hats on demand. He is the lead contributor to Curated SQL (https://curatedsql.com), president of the Triangle Area SQL Server Users Group (https://www.meetup.com/tripass), and author of PolyBase Revealed (https://www.apress.com/us/book/9781484254608). A resident of Durham, North Carolina, he can be found cycling the trails along the triangle whenever the weather's nice enough.
LinkedIn: http://www.linkedin.com/in/scottstauffer
Contact: http://scottstauffer.ca
Scott Stauffer (@SQLSocialite) is very PASSionate about data and enjoys meeting with like-minded data geeks. He started the Vancouver PASS Chapter in 2004. In 2008, Scott was recognized by Microsoft with a SQL Server MVP award. In 2009, Scott started a PASS BI Chapter in Vancouver, and was also at one time the PASS Regional Chapter Mentor for Canada. For over 10 years he has been an independent consultant working with clients to solve their data woes and extract insight from their business data.
The following is a list of sponsors that helped fund the event.


Name
*
First
Last
Email
*
Your Experience
*
Overall,how would you rate your experience with us?
How satisfied are you with
*
Very Unsatisfied
Unsatisfied
Neutral
Satisfied
Very Satisfied
Purchase
Service
Company Overall
How likely are you to
*
Very Unlikely
Unlikely
Neutral
Likely
Very Likely
Buy from us again
Recommend our product to others
Recommend our company to others
Additional comments or suggestions
Submit


Sorry, the access to the resource you are requesting is restricted. You may wish to go
back,
or to Biosamples Home.
We value your feedback. If you believe there was an error and wish to report it,
please do not hesitate to drop us a line to biosamples(at)ebi.ac.uk or use
EBI Support Feedback form.


| Number of Classes | Line Coverage | Mutation Coverage | Test Strength |
|---|---|---|---|
| 6 | 94% | 97% | 100% |
| Name | Line Coverage | Mutation Coverage | Test Strength |
|---|---|---|---|
| CssImageDeclaration.java | 100% |
100% |
100% |
| CssImageInlineUtils.java | 92% |
100% |
100% |
| CssImageInlinerConstants.java | 89% |
67% |
100% |
| MatchedUrl.java | 83% |
50% |
100% |
| RegexAttachBackgroudImageInliner.java | 100% |
100% |
100% |
| RegexBase64BackgroundImageInliner.java | 100% |
100% |
100% |


For the next 2 months, starting November 15, Steel will share 95% of the forged amount to the voters
***If Steel becomes an active delegate before Christmas, the 95% period will be extended by another 2 months***
After that it will most likely be changed to 85%, but it will depend on how OXY develops. Will keep you posted here!
The node is running on an Ubunto VM in Azure.
- Update 2017-11-30: Aaaaaaaaaand we're active. Before Christmas !


It's the evening before your 7th birthday.  Your father brought a cake from the city! It's made of your favorite, chocolate! You've never seen anything this pretty before - it's three layers of chocolate cake with jam and custard in-between the layers, completely covered by a dark chocolate glaze, and topped with different fruits.   Nope, it's still here! You're really excited, and your father also brought you a couple birthday presents.  Your father is the one earning money, and he's spoiling you.   She tenses up at first, but then she relaxes and returns your hug with warmth.
"I love you, Ma." you whisper into her ear.
"I love you, too." she smiles hugely at you.
You feel the love radiating from her. You close your eyes and enjoy this moment, you wish it could last forever. She smells of herbs and fresh air, being in her arms make you feel safe.  She would always stroke your hair, and sing an old lullaby in a language you don't know. The lullaby would captivate you and the sparks from the fire become alive. It scared you at first, but it was also calming, it always comforted and soothed you.
"Hey, kid. Why don't you open your presents?" your father's voice snaps you back to reality.
You look up at your mother, who isn't looking ashamed anymore, and she gives you an encouraging nod.
The first present is wrapped in brown paper with a green bow tied around it. You eagerly rip the paper of the present, and your hands shakingly reveal a backpack, its dark grey and black, with a white symbol of the brand in the front. You stare at it, can't believe it! You start examining it, checking all the pockets. You can feel your jaw aching from grinning.
"Thanks, Pa" you exclaim.
"You're welcome, boy. It's for school, make me proud." he says sternly.
"I promise" you agree eagerly.
You grab the next present, it's wrapped in a shiny silvery paper, with a blue ribbon around it. It's a very small box, and very light. You slowly unwrap it, delicately, and lift the lid to the box inside. It's a new pencil, you take it out and spin it between your fingers. It's your first pen, you're excited about starting school. You turn to the last present, it's pretty big, wrapped in red paper with a golden bow. You open your last present, and it's a brand new football - made of black and white leather patches. The smell of new leather hits your nostrils, and you hug the presents to your chest and turn to your family.
"Thank you!" you say, feeling your voice stock in your throat.
You can feel tears starting to form in your eyes. You blink trying to get them away, but you fail. You can feel a single tear of happiness drip down your cheek. Your family comes up to hug you, one by one - your father, mother, and lastly your sisters. You're so happy. Your happiness is diminished by the dirty looks you're getting from your youngest sister, Faith.  You know that your father doesn't show any interest for anyone else in the family. You swallow hard, and avoid Faith's glares.  Your father growls at her.
 he glares at her.
"I...I'm sorry." she looks down at her feet, and hands him her plate.
There's no more cake left.
"Stop being ungrateful, kid" he yells at you, looming over you.
You cringe under his gaze, and you look down at the ground.  You look up in time to see your father stomp out, leaving both plates of cake untouched. He gets into his truck and drives off. You feel a knot in your stomach.  she looks at you with affection in her eyes.
You reach up and wipe a tear away with your sleeve.  You eat your cake in silence, it's not tasting as good as you thought it would.  Your mother's kind words, are already long forgotten. The only thing occupying your mind is your father's scowl as he stomped out.


First Name:
Last Name:
FirstName:{{reverse(firstname)}}
Last Name:{{reverse(lastname)}}
FirstName:
{{name}}


New Project Last saved 2 minutes ago Last saved 2 minutes ago Publish Project Delete Project Save as Draft Preview Project Project Flow Initiative When you have a greate idea but haven’t money and team for its realization create an initiative project. If your idea will be supported by Lykke members, Lykke will create a project and set a prize fund. No votes yet Registration Lykke members have to summit the project application form to take part in your project. Registration deadline is time when you announce your project and early birds can register. Other participants may register any time from the project start till is implementation deadline. No participants yet Submissions Participants have to send project results before the implementation deadline. No participants yet Voting Project Creator should select the best quality project solutions by his own or organize voting process. No results yet Project Task Project name Category: All All All2 Tags (comma separated) Abstract Describe the project Add File Attachments PDF Brief and concept.pdf 24.8MB AI Brief and concept.ai 24.8MB Add Resource Programming Resources GitHub Prize Fund Any of the citizens of Lykke City will be able to finance the project. You can enter the estimated budget of the project. You can give the project the entire fund to one winner, and can spread among several. 1st prize Wallet Address: 19ZKM6JFvCiBQbqqHPzRDLGHpN6wkQnXDs 2nd prize Wallet Address: 19ZKM6JFvCiBQbqqHPzRDLGHpN6wkQnXDs 3rd prize Wallet Address: 19ZKM6JFvCiBQbqqHPzRDLGHpN6wkQnXDs 4th prize Wallet Address: 19ZKM6JFvCiBQbqqHPzRDLGHpN6wkQnXDs Experts Kaylee Harper Deep Learning Patterns, Methodology and Strategy Kaylee Harper Deep Learning Patterns, Methodology and Strategy Kaylee Harper Deep Learning Patterns, Methodology and Strategy 1 Kaylee Harper Blockchain Leroy Cox Software Development None Existing New Stream You can add this project to the overall chain, which is called Stream. The current project will be one of the stages of the Stream. Stream name High Frequency Trading Risk Management Tools Based on Scaling Law High Frequency Trading Risk Management Tools Based on Scaling Law High Frequency Trading Risk Management Tools Based on Scaling Law 2 High Frequency Trading Risk Management Tools Based on Scaling Law Current project Lykke Wallet’s Private key distributed backup Stage 2 Add Stage Atomic crosschain swap transactions (Bitcoin-Ethereum) Lykke services identity Atomic crosschain swap transactions (Bitcoin-Ethereum) Lykke wallet app educational videos Lykke Wallet’s Private key distributed backup Atomic crosschain swap transactions (Bitcoin-Ethereum) Lykke services identity Lykke wallet app educational videos Lykke Wallet’s Private key distributed backup Atomic crosschain swap transactions (Bitcoin-Ethereum) Lykke services identity Lykke wallet app educational videos Lykke Wallet’s Private key distributed backup Atomic crosschain swap transactions (Bitcoin-Ethereum) Lykke services identity Confirm fields: Category Publish Project


Hi and welcome to my About Me page. I’m Tasha, I live in South Petherton with my partner, Mike, our two cats, Hamilton and Nala, and the latest addition to the family, Luther the cocker spaniel puppy, who is growing fast.
I started my career working as an associate lecturer at a local college, teaching ‘A’ level and GCSE psychology.
I found my interest lay with mental health and I made the decision to work within the NHS. My first role was as a nursing assistant on a mental health inpatient unit before I moved to work in the community mental health team. This gave me the opportunity to start working with people experiencing mental health difficulties in their own homes and in the community. After more than 5 years in the NHS I moved to work for a mental health charity where I have been working for over 3 years.
In my current role I coordinate a mental health outreach service, facilitate self-management training and work as a mentor with people referred through Somerset Partnership Talking Therapies Service.


ABOUT ME
My name is Anya, and I reside on the intersection of Tech and Culture.
CONTACT ME!
Have a question? A comment or concern? A cool fact you'd like to share?
San Francisco State University || Walnut Creek, CA
+1<PHONE_NUMBER>
anyalivshyts@gmail.com


README for Sake: a build tool written in Scala
Dean Wampler
<EMAIL_ADDRESS>I wrote Sake (pronounced like the Japanese rice beverage) as a learning exercise to experiment with Scala features, like DSL creation. It is inspired by Ruby Rake and Unix Make, hence the name. (I know that there is already a distributed build system for Ruby called Sake...) Sake is used to build the code examples for Programming Scala
Sake is very incomplete and it has plenty of warts. If you want a “production quality” build tool, consider Simple Build Tool (sbt), which uses Scala for build scripts, or Buildr, which uses Ruby scripts, but has built-in support for building Scala code.
Sake is maintained on GitHub.
Getting Started
The distribution is already built, but you can run “bin/sake” to re-build it at any time. (See also the note below.)
It is easiest to copy the whole distribution somewhere useful and then define a SAKE_HOME environment variable that points to that root directory. Follow these steps.
- Copy the distribution somewhere convenient, e.g., /usr/local/sake.
- Define SAKE_HOME, e.g., SAKE_HOME = /usr/local/sake (using appropriate syntax for your shell).
- Add $SAKE_HOME/bin to your path.
To use Sake in a project:
- Create a “sake.scala” file in the root of your project.
- Copy the “sake.scala” contents from the Sake distribution to your sake.scala.
- Edit to taste.
- Copy the versions of Sake's jars that you want to use, either "lib/2.7.7/sake-2.7.7-1.1.jar" or "lib/2.8.0.RC7/sake-2.8.0.RC7-1.1.jar"
- Build with “bin/sake [targets]”, where one or more targets can be specified. (Defaults to “all”.)
Note: To bootstrap sake when there is not a previous version built, use the included Makefile. For example, this will be necessary when upgrading to a newer version of Scala that is not binary compatible with the previous version. (I had to do this when migrating from v2.7.7 to 2.8.0.)
Layout of the Distribution
- README.txt – This file.
- sake.scala – Sake build file that builds sake itself. Used by “bin/sake”
- bin – Directory with the “sake” UNIX shell script and “sake.bat” Windows script.
- build – Directory where build projects are staged.
- lib – Directory of 3rd party libraries necessary to build and use Sake and where the sake jars themselves are also written.
- spec – Directory of “specs” files for testing.
- src – Directory of Sake source code.
History
- December 6, 2008: Created Sake project.
- December 20, 2008: First “bootstrap” build of Sake with itself!
- April 18, 2009: Added sxr to build for generating browsable HTML of the source.
- September 21, 2009: Moved Sake to GitHub.
- July 10, 2010: Ported to Scala v2.8.0.RC7.
TODO
- Add a built-in jar command.
- Add copy and mv/rename commands.
- Add ScalaTest and ScalaCheck commands.
- Support setting environment options through command-line options.
- Provide a way for the user to specify the default target.
- Get “sxr” (http://github.com/harrah/browse/tree/master) to work. It generates a browsable HTML version of the Sake source code. When you compile, it should be written into the “browse” directory, but for some reason it isn’t working. See comments in the “sake.scala” file.
- Interactive Mode:
- Run targets, if specified, after loading file.
- If a target fails, don’t exit!
- Use implicits to convert from strings to symbols where “useful”. Same for A* vs. List[A] ??
- Support using tuples when defining dependencies, where lists are now required.
- Work around the 2.8.0 problem with the scala script driver.
Implementation Notes
- You’ll notice that a lot of types have small, protected methods that are often one liners for creating Files, etc. They could be easily in-lined. Usually, they are there to facilitate testing. A spec can subclass the type under test (TUT) and override the method to return a test double, etc.


{% extends "base.html" %} {% block title %}{{ username }}'s Artists{% endblock %} {% block tagline %}This is {{ username }}'s artists. Click one to see a history.{% endblock %} {% block content %}


We are a local Seattle business that makes cookies with chunks of fresh, Pacific salmon in them.
6am to 8pm


Resuming the project
Notes from the old team
Register as an attendee journey
This journey involves a user going from our page to the external SSO login and then back to our register for event journey to complete registration.
See the most recent research finding on this.
It was too long and disjointed and didn't tell people up front about multiple stapes and what the account was.
Create an event journey
Most of what is in the prototype has tested well and most of the validation states are in the prototype or the JIRA stories.
The skip button allows for many odd validation states to pass through. All these are reflected on the summary page. Some of which should block an event from being published. Thought that blocking page is not automatic int he prototype.
Monitoring a live event
Monitoring first and second tabs have tested well.
The final tab hasn't been tested and checkin functionality doesn't work in the prototype. Who attended and who didn't will need to be recorded at some point.
The registrations tab has way too many actions exposed as empty links. These links need the functionality behind them designing and perhaps being shown in an expandable area.
There will likely be many lists for the different states attendees can get in. e.g cancelled, waiting list, etc. So a short list of link contents might be useful to jump to these lists.