#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
from __future__ import absolute_import
import random
from pyspark import SparkContext, RDD
from pyspark.mllib.common import callMLlibFunc, JavaModelWrapper
from pyspark.mllib.linalg import _convert_to_vector
from pyspark.mllib.regression import LabeledPoint
__all__ = ['DecisionTreeModel', 'DecisionTree', 'RandomForestModel', 'RandomForest']
[docs]class DecisionTreeModel(JavaModelWrapper):
"""
A decision tree model for classification or regression.
EXPERIMENTAL: This is an experimental API.
It will probably be modified in future.
"""
[docs] def predict(self, x):
"""
Predict the label of one or more examples.
:param x: Data point (feature vector),
or an RDD of data points (feature vectors).
"""
if isinstance(x, RDD):
return self.call("predict", x.map(_convert_to_vector))
else:
return self.call("predict", _convert_to_vector(x))
[docs] def numNodes(self):
return self._java_model.numNodes()
[docs] def depth(self):
return self._java_model.depth()
def __repr__(self):
""" summary of model. """
return self._java_model.toString()
[docs] def toDebugString(self):
""" full model. """
return self._java_model.toDebugString()
[docs]class DecisionTree(object):
"""
Learning algorithm for a decision tree model for classification or regression.
EXPERIMENTAL: This is an experimental API.
It will probably be modified in future.
"""
@classmethod
def _train(cls, data, type, numClasses, features, impurity="gini", maxDepth=5, maxBins=32,
minInstancesPerNode=1, minInfoGain=0.0):
first = data.first()
assert isinstance(first, LabeledPoint), "the data should be RDD of LabeledPoint"
model = callMLlibFunc("trainDecisionTreeModel", data, type, numClasses, features,
impurity, maxDepth, maxBins, minInstancesPerNode, minInfoGain)
return DecisionTreeModel(model)
@classmethod
[docs] def trainClassifier(cls, data, numClasses, categoricalFeaturesInfo,
impurity="gini", maxDepth=5, maxBins=32, minInstancesPerNode=1,
minInfoGain=0.0):
"""
Train a DecisionTreeModel for classification.
:param data: Training data: RDD of LabeledPoint.
Labels are integers {0,1,...,numClasses}.
:param numClasses: Number of classes for classification.
:param categoricalFeaturesInfo: Map from categorical feature index
to number of categories.
Any feature not in this map
is treated as continuous.
:param impurity: Supported values: "entropy" or "gini"
:param maxDepth: Max depth of tree.
E.g., depth 0 means 1 leaf node.
Depth 1 means 1 internal node + 2 leaf nodes.
:param maxBins: Number of bins used for finding splits at each node.
:param minInstancesPerNode: Min number of instances required at child
nodes to create the parent split
:param minInfoGain: Min info gain required to create a split
:return: DecisionTreeModel
Example usage:
>>> from numpy import array
>>> from pyspark.mllib.regression import LabeledPoint
>>> from pyspark.mllib.tree import DecisionTree
>>>
>>> data = [
... LabeledPoint(0.0, [0.0]),
... LabeledPoint(1.0, [1.0]),
... LabeledPoint(1.0, [2.0]),
... LabeledPoint(1.0, [3.0])
... ]
>>> model = DecisionTree.trainClassifier(sc.parallelize(data), 2, {})
>>> print model, # it already has newline
DecisionTreeModel classifier of depth 1 with 3 nodes
>>> print model.toDebugString(), # it already has newline
DecisionTreeModel classifier of depth 1 with 3 nodes
If (feature 0 <= 0.0)
Predict: 0.0
Else (feature 0 > 0.0)
Predict: 1.0
>>> model.predict(array([1.0]))
1.0
>>> model.predict(array([0.0]))
0.0
>>> rdd = sc.parallelize([[1.0], [0.0]])
>>> model.predict(rdd).collect()
[1.0, 0.0]
"""
return cls._train(data, "classification", numClasses, categoricalFeaturesInfo,
impurity, maxDepth, maxBins, minInstancesPerNode, minInfoGain)
@classmethod
[docs] def trainRegressor(cls, data, categoricalFeaturesInfo,
impurity="variance", maxDepth=5, maxBins=32, minInstancesPerNode=1,
minInfoGain=0.0):
"""
Train a DecisionTreeModel for regression.
:param data: Training data: RDD of LabeledPoint.
Labels are real numbers.
:param categoricalFeaturesInfo: Map from categorical feature index
to number of categories.
Any feature not in this map
is treated as continuous.
:param impurity: Supported values: "variance"
:param maxDepth: Max depth of tree.
E.g., depth 0 means 1 leaf node.
Depth 1 means 1 internal node + 2 leaf nodes.
:param maxBins: Number of bins used for finding splits at each node.
:param minInstancesPerNode: Min number of instances required at child
nodes to create the parent split
:param minInfoGain: Min info gain required to create a split
:return: DecisionTreeModel
Example usage:
>>> from pyspark.mllib.regression import LabeledPoint
>>> from pyspark.mllib.tree import DecisionTree
>>> from pyspark.mllib.linalg import SparseVector
>>>
>>> sparse_data = [
... LabeledPoint(0.0, SparseVector(2, {0: 0.0})),
... LabeledPoint(1.0, SparseVector(2, {1: 1.0})),
... LabeledPoint(0.0, SparseVector(2, {0: 0.0})),
... LabeledPoint(1.0, SparseVector(2, {1: 2.0}))
... ]
>>>
>>> model = DecisionTree.trainRegressor(sc.parallelize(sparse_data), {})
>>> model.predict(SparseVector(2, {1: 1.0}))
1.0
>>> model.predict(SparseVector(2, {1: 0.0}))
0.0
>>> rdd = sc.parallelize([[0.0, 1.0], [0.0, 0.0]])
>>> model.predict(rdd).collect()
[1.0, 0.0]
"""
return cls._train(data, "regression", 0, categoricalFeaturesInfo,
impurity, maxDepth, maxBins, minInstancesPerNode, minInfoGain)
[docs]class RandomForestModel(JavaModelWrapper):
"""
Represents a random forest model.
EXPERIMENTAL: This is an experimental API.
It will probably be modified in future.
"""
[docs] def predict(self, x):
"""
Predict values for a single data point or an RDD of points using
the model trained.
"""
if isinstance(x, RDD):
return self.call("predict", x.map(_convert_to_vector))
else:
return self.call("predict", _convert_to_vector(x))
[docs] def numTrees(self):
"""
Get number of trees in forest.
"""
return self.call("numTrees")
[docs] def totalNumNodes(self):
"""
Get total number of nodes, summed over all trees in the forest.
"""
return self.call("totalNumNodes")
def __repr__(self):
""" Summary of model """
return self._java_model.toString()
[docs] def toDebugString(self):
""" Full model """
return self._java_model.toDebugString()
[docs]class RandomForest(object):
"""
Learning algorithm for a random forest model for classification or regression.
EXPERIMENTAL: This is an experimental API.
It will probably be modified in future.
"""
supportedFeatureSubsetStrategies = ("auto", "all", "sqrt", "log2", "onethird")
@classmethod
def _train(cls, data, algo, numClasses, categoricalFeaturesInfo, numTrees,
featureSubsetStrategy, impurity, maxDepth, maxBins, seed):
first = data.first()
assert isinstance(first, LabeledPoint), "the data should be RDD of LabeledPoint"
if featureSubsetStrategy not in cls.supportedFeatureSubsetStrategies:
raise ValueError("unsupported featureSubsetStrategy: %s" % featureSubsetStrategy)
if seed is None:
seed = random.randint(0, 1 << 30)
model = callMLlibFunc("trainRandomForestModel", data, algo, numClasses,
categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity,
maxDepth, maxBins, seed)
return RandomForestModel(model)
@classmethod
[docs] def trainClassifier(cls, data, numClasses, categoricalFeaturesInfo, numTrees,
featureSubsetStrategy="auto", impurity="gini", maxDepth=4, maxBins=32,
seed=None):
"""
Method to train a decision tree model for binary or multiclass
classification.
:param data: Training dataset: RDD of LabeledPoint. Labels should take
values {0, 1, ..., numClasses-1}.
:param numClasses: number of classes for classification.
:param categoricalFeaturesInfo: Map storing arity of categorical features.
E.g., an entry (n -> k) indicates that feature n is categorical
with k categories indexed from 0: {0, 1, ..., k-1}.
:param numTrees: Number of trees in the random forest.
:param featureSubsetStrategy: Number of features to consider for splits at
each node.
Supported: "auto" (default), "all", "sqrt", "log2", "onethird".
If "auto" is set, this parameter is set based on numTrees:
if numTrees == 1, set to "all";
if numTrees > 1 (forest) set to "sqrt".
:param impurity: Criterion used for information gain calculation.
Supported values: "gini" (recommended) or "entropy".
:param maxDepth: Maximum depth of the tree. E.g., depth 0 means 1 leaf node;
depth 1 means 1 internal node + 2 leaf nodes. (default: 4)
:param maxBins: maximum number of bins used for splitting features
(default: 100)
:param seed: Random seed for bootstrapping and choosing feature subsets.
:return: RandomForestModel that can be used for prediction
Example usage:
>>> from pyspark.mllib.regression import LabeledPoint
>>> from pyspark.mllib.tree import RandomForest
>>>
>>> data = [
... LabeledPoint(0.0, [0.0]),
... LabeledPoint(0.0, [1.0]),
... LabeledPoint(1.0, [2.0]),
... LabeledPoint(1.0, [3.0])
... ]
>>> model = RandomForest.trainClassifier(sc.parallelize(data), 2, {}, 3, seed=42)
>>> model.numTrees()
3
>>> model.totalNumNodes()
7
>>> print model,
TreeEnsembleModel classifier with 3 trees
>>> print model.toDebugString(),
TreeEnsembleModel classifier with 3 trees
<BLANKLINE>
Tree 0:
Predict: 1.0
Tree 1:
If (feature 0 <= 1.0)
Predict: 0.0
Else (feature 0 > 1.0)
Predict: 1.0
Tree 2:
If (feature 0 <= 1.0)
Predict: 0.0
Else (feature 0 > 1.0)
Predict: 1.0
>>> model.predict([2.0])
1.0
>>> model.predict([0.0])
0.0
>>> rdd = sc.parallelize([[3.0], [1.0]])
>>> model.predict(rdd).collect()
[1.0, 0.0]
"""
return cls._train(data, "classification", numClasses,
categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity,
maxDepth, maxBins, seed)
@classmethod
[docs] def trainRegressor(cls, data, categoricalFeaturesInfo, numTrees, featureSubsetStrategy="auto",
impurity="variance", maxDepth=4, maxBins=32, seed=None):
"""
Method to train a decision tree model for regression.
:param data: Training dataset: RDD of LabeledPoint. Labels are
real numbers.
:param categoricalFeaturesInfo: Map storing arity of categorical
features. E.g., an entry (n -> k) indicates that feature
n is categorical with k categories indexed from 0:
{0, 1, ..., k-1}.
:param numTrees: Number of trees in the random forest.
:param featureSubsetStrategy: Number of features to consider for
splits at each node.
Supported: "auto" (default), "all", "sqrt", "log2", "onethird".
If "auto" is set, this parameter is set based on numTrees:
if numTrees == 1, set to "all";
if numTrees > 1 (forest) set to "onethird" for regression.
:param impurity: Criterion used for information gain calculation.
Supported values: "variance".
:param maxDepth: Maximum depth of the tree. E.g., depth 0 means 1
leaf node; depth 1 means 1 internal node + 2 leaf nodes.
(default: 4)
:param maxBins: maximum number of bins used for splitting features
(default: 100)
:param seed: Random seed for bootstrapping and choosing feature subsets.
:return: RandomForestModel that can be used for prediction
Example usage:
>>> from pyspark.mllib.regression import LabeledPoint
>>> from pyspark.mllib.tree import RandomForest
>>> from pyspark.mllib.linalg import SparseVector
>>>
>>> sparse_data = [
... LabeledPoint(0.0, SparseVector(2, {0: 1.0})),
... LabeledPoint(1.0, SparseVector(2, {1: 1.0})),
... LabeledPoint(0.0, SparseVector(2, {0: 1.0})),
... LabeledPoint(1.0, SparseVector(2, {1: 2.0}))
... ]
>>>
>>> model = RandomForest.trainRegressor(sc.parallelize(sparse_data), {}, 2, seed=42)
>>> model.numTrees()
2
>>> model.totalNumNodes()
4
>>> model.predict(SparseVector(2, {1: 1.0}))
1.0
>>> model.predict(SparseVector(2, {0: 1.0}))
0.5
>>> rdd = sc.parallelize([[0.0, 1.0], [1.0, 0.0]])
>>> model.predict(rdd).collect()
[1.0, 0.5]
"""
return cls._train(data, "regression", 0, categoricalFeaturesInfo, numTrees,
featureSubsetStrategy, impurity, maxDepth, maxBins, seed)
def _test():
import doctest
globs = globals().copy()
globs['sc'] = SparkContext('local[4]', 'PythonTest', batchSize=2)
(failure_count, test_count) = doctest.testmod(globs=globs, optionflags=doctest.ELLIPSIS)
globs['sc'].stop()
if failure_count:
exit(-1)
if __name__ == "__main__":
_test()


Initializes a new instance of the DateTime to the current date and time.
Initializes a new instance of the DateTime to a specified number of ticks.
A date and time expressed in the number of 100-nanosecond intervals that have elapsed since January 1, 0001 at 00:00:00.000 in the Gregorian calendar.
Initializes a new instance of the DateTime to the current date and time. Initializes a new instance of the DateTime to a specified number of ticks. Initializes a new instance of the DateTime to the specified year, month, and day. Initializes a new instance of the DateTime to the specified year, month, day, hour, minute, and second. Initializes a new instance of the DateTime to the specified year, month, day, hour, minute, second, and millisecond.
Initializes a new instance of the DateTime to the specified year, month, and day.
The year (1 through 9999).
The month (1 through 12).
The day (1 through the number of days in month).
Initializes a new instance of the DateTime to the specified year, month, day, hour, minute, and second.
The year (1 through 9999).
The month (1 through 12).
The day (1 through the number of days in month).
The hours (0 through 23).
The minutes (0 through 59).
The seconds (0 through 59).
Initializes a new instance of the DateTime to the specified year, month, day, hour, minute, second, and millisecond.
The year (1 through 9999).
The month (1 through 12).
The day (1 through the number of days in month).
The hours (0 through 23).
The minutes (0 through 59).
The seconds (0 through 59).
The milliseconds (0 through 999).
Initializes a new instance of the DateTime to the current date and time. Initializes a new instance of the DateTime to a specified number of ticks. Initializes a new instance of the DateTime to the specified year, month, and day. Initializes a new instance of the DateTime to the specified year, month, day, hour, minute, and second. Initializes a new instance of the DateTime to the specified year, month, day, hour, minute, second, and millisecond.
The year (1 through 9999).
The month (1 through 12).
The day (1 through the number of days in month).
The hours (0 through 23).
The minutes (0 through 59).
The seconds (0 through 59).
The milliseconds (0 through 999).
The day-of-month part of this DateTime. The value is between 1 and 31.
The day-of-week part of this DateTime. The returned value is an integer between 0 and 6, where 0 indicates Sunday, 1 indicates Monday, 2 indicates Tuesday, 3 indicates Wednesday, 4 indicates Thursday, 5 indicates Friday, and 6 indicates Saturday.
The day-of-year part of this DateTime. The value is between 1 and 366.
The hour part of this DateTime. The value is between 0 and 23.
The millisecond part of this DateTime. The value is between 0 and 999.
The minute part of this DateTime. The value is between 0 and 59.
The month part of this DateTime. The value is an integer between 1 and 12.
The second part of this DateTime. The value is between 0 and 59.
Returns the tick count for this DateTime. The returned value is the number of 100-nanosecond intervals that have elapsed since 1/1/0001 12:00am.
The year part of this DateTime. The value is between 1 and 9999.
Adds a fractional number of days to this DateTime. The result is computed by rounding the fractional number of days given by value to the nearest millisecond, and adding that interval to this DateTime. The value argument is permitted to be negative.
The number of days to add.
Add a fractional number of hours to this DateTime. The result is computed by rounding the fractional number of hours given by value to the nearest millisecond, and adding that interval to this DateTime. The value argument is permitted to be negative.
The number of hours to add.
Add a given number of milliseconds to this DateTime. The result is computed by rounding the number of milliseconds given by value to the nearest integer, and adding that interval to this DateTime. The value argument is permitted to be negative.
The number of milliseconds to add.
Add a fractional number of minutes to this DateTime. The result is computed by rounding the fractional number of minutes given by value to the nearest millisecond, and adding that interval to this DateTime. The value argument is permitted to be negative.
The number of fractional minutes to add.
Adds the given number of months to this DateTime. The result is computed by incrementing (or decrementing) the year and month parts of this DateTime by months, and, if required, adjusting the day part of the resulting date downwards to the last day of the resulting month in the resulting year. The time-of-day part of the result is the same as the time-of-day part of this DateTime.
In more precise terms, considering this DateTime to be of the form y / m / d + t, where y is the year, m is the month, d is the day, and t is the time-of-day, the result is y1 / m1 / d1 + t, where y1 and m1 are computed by adding months months to y and m, and d1 is the largest value less than or equal to d that denotes a valid day in month m1 of year y1.
The number of months to add.
Adds a fractional number of seconds to this DateTime. The result is computed by rounding the fractional number of seconds given by value to the nearest millisecond, and adding that interval to this DateTime. The value argument is permitted to be negative.
Add the given number of 100-nanosecond ticks to this DateTime. The value argument is permitted to be negative.
the number of ticks to add.
Add the given number of years to this DateTime. The result is computed by incrementing (or decrementing) the year part of this DateTime by value years. If the month and day of this DateTime is 2/29, and if the resulting year is not a leap year, the month and day of the resulting DateTime becomes 2/28. Otherwise, the month, day, and time-of-day parts of the result are the same as those of this DateTime.
The number of years to add.
Compares two DateTimes.
The DateTime to compare to the current instance.
A signed number indicating the relative values of this instance and the value parameter. | Value | Description | | -1 | This instance is earlier than value | | 0 | This instance is same as value | | 1 | This instance is greater than value |
Checks whether a DateTime or Date is equal to current instance.
The object to compare to this instance.
true if the value parameter equals the value of this instance; otherwise, false.
DateTime as Javascript Date
A Javascript Date object that represent this DateTime instance.
Turns DateTime into a string with the specified format.
| Patterns | Format | Description | Example |
|---|---|---|---|
| h | 0 | 12 hour w/o leading zero | 3 |
| hh | 00 | 12 hour with leading zero | 03 |
| hh* | 00 | 12 hour with leading zero | 03 |
| H | 0 | 24 hour w/o leading zero | 8 |
| HH | 00 | 24 hour with leading zero | 08 |
| HH* | 00 | 24 hour with leading zero | 08 |
| m | 0 | minute w/o leading zero | 1 |
| mm | 00 | minute with leading zero | 01 |
| mm* | 00 | minute with leading zero | 01 |
| s | 0 | second w/o leading zero | 5 |
| ss | 00 | second with leading zero | 05 |
| ss* | 00 | second with leading zero | 05 |
| t | - | first character of AM/PM designator | A/P |
| tt | - | AM/PM designator | AM/PM |
| tt* | - | AM/PM designator | AM/PM |
| d | 0 | day w/o leading zero | 1 |
| dd | 00 | day with leading zero | 01 |
| ddd | - | short weekday name (abbreviation) | Mon |
| dddd | - | full weekday name | Monday |
| dddd* | - | full weekday name | Monday |
| M | 0 | month w/o leading zero | 2 |
| MM | 00 | month with leading zero | 02 |
| MMM | - | short month name (abbreviation) | Feb |
| MMMM | - | full month name | February |
| MMMM* | - | full month name | February |
| y | 0 | two digit year (year % 100) w/o leading zero | 1 |
| yy | 00 | two digit year (year % 100) with leading zero | 01 |
| yyyy | 0000 | full year | 2019 |
| yyyy* | 0000 | full year | 2019 |
| '...' | - | quoted string, ignore matching values | 'ABC' |
The format you would like the string in
The number of days in the month
The year of the month
The month we want to know the days of.
Whether a given year is a leap year
A year to check
Generated using TypeDoc
Represents an instant in time, typically expressed as a date and time of day.


Catching your long beard in the clip on your bike helmet. #portlandproblems
4/1/2015, 9:06:48 AM
Favs: 5
Retweets: 2
link--- layout: tweet ---
Catching your long beard in the clip on your bike helmet. #portlandproblems
4/1/2015, 9:06:48 AM
Favs: 5
Retweets: 2
link


--- layout: default title: About permalink: /about/ ---
He is Full Stack Embedded System Developer, a Maker who love to design and develop Computational Gadgets.
He is an Open Source enthusiast.
:Experience:
He is currently working with HBCSE -TFR since Feburary 1st 2017 as a Project Scientific Officer.
Before this he was woking with IIITDMJ as a Design Innovation Centre Fellow, a project of MHRD, India.
:Interests:
Apart from coding, He likes to play volleyball, cyling.
Signing out... Have a Nice Day!!!


GDPR 202: Controllers, processors and subjects’ rights
Perhaps you’ve read our introduction to GDPR for SaaS companies and decided you want to learn more, or perhaps you’ve already been thinking about GDPR but haven’t spent a lot of time analyzing what it might mean for your company. Here, we try to take things a little deeper, looking at some of the core concepts of GDPR compliance and how they might apply to SaaS companies, specifically.
Because there’s still much ambiguity in terms of exactly how certain aspects will be defined and adjudicated in practice, there are places where we present more questions than we do answers. However, it’s nonetheless important to be thinking about these topics and how you’ll address them, both technologically and contractually with your customers, vendors and partners.
Are you a data controller or a data processor? The distinction matters a lot.
One of the major facets of GDPR is that no company processing personal data is free from liability for its protection and proper usage. The definition of processing encompasses everything from storage to behavioral analysis, so if you’re touching personal data in any way, really, you’ll want to act accordingly:
From Article 4: “[P]rocessing” means any operation or set of operations which is performed on personal data or on sets of personal data, whether or not by automated means, such as collection, recording, organisation, structuring, storage, adaptation or alteration, retrieval, consultation, use, disclosure by transmission, dissemination or otherwise making available, alignment or combination, restriction, erasure or destruction
However, your exact role in the personal-data pipeline is critically important because of how the law assigns liability between data controllers and data processors. If you think you might be considered a controller under the GDPR, you’ll want to study the law very carefully. There are many requirements for controllers—especially around getting consent from data subjects, and providing data to / erasing data about data subjects—that are much different and much more laborious than what you might be accustomed to.
A controller is defined as the entity that “determines the purposes and means of the processing of personal data.” More often than not, that’s going to be the company dealing directly with data subjects and collecting the data for its own use, or contracting with other companies to collect data on its behalf. The controller is also going to be the party responsible for obtaining the proper consent from data subjects (for just about every single use of their data); providing information about other companies with which it will be shared; and responding to requests for data records, erasures and other rights afforded by GDPR.
A processor is defined as an entity that processes data on behalf of the controller. Many technology companies also use the term subprocessor to talk about the companies that they use to store or otherwise process personal data, but with which the the controller does not have a contractual relationship. It might be easy to jump to the conclusion that most B2B SaaS vendors will primarily act as processors, but that’s not necessarily the case. In fact, most SaaS providers will almost certainly acting as a controller, at least for data they collect from their users or leads (or EU-based employees).
Let’s walk through a few examples to, hopefully, help clear up these terms:
- Users logs into her Intuit account to check out her personal budget situation on Mint. Intuit uses Mixpanel (which had its own recent personal data situation) to provide detailed website analytics. User is the data subject; Intuit is the controller; Mixpanel is the processor.
- User buys something online using PayPal. PayPal sends the details to Lattice Engines “to develop and optimize predictive models. User is the data subject; PayPal is the controller; Lattice Engines is the processor. (Here’s a visualization of the roughly 600 processors with which PayPal shares personal data.)
- Your company based in the EU uses Slack for internal messaging. Slack collects users’ names, email addresses, phone numbers, activity logs and more, and stores and analyzes everything on AWS. Users are the data subjects; Slack is likely the controller for that data if it uses that data for internal purposes, but a processor for any personal data entered within messages themselves or shared as documents; your company is the controller for personal data entered via messages or shared as documents, and might be the controller for account info if Slack only stores emails, etc., on your behalf and doesn’t use that info for business processes; AWS is a subprocessor.
- Your company uses the Zendesk integration with Slack and an EU customer creates a ticket. This fires an alert with the ticket body and user’s name into your #support Slack channel.  But, wait … hopefully that didn’t trigger an error for Zendesk and accidentally pipe that data into Rollbar, which would then become a subprocessor. Also, if Zendesk logged the IP address of your EU customer who visited their website into Loggly, it is now also a subprocessor.
As the last examples highlights, things can get pretty messy pretty fast, even for B2B SaaS companies whose businesses, on the surface, don’t have much to do with personal data. Every time you’re touching it, you’re doing so as a controller or processor (or subprocessor), with all the responsibilities each role entails.
For more on this topic specific to SaaS companies, read this blog post by Twilio laying out its views on this topic and explaining how companies—including Twilio—can be both data controllers and data processors.
Being a controller means bearing more responsibility
The distinction between controller and processor matters so much not just because controllers are the one responsible for interacting with data subjects and all that entails, but also because controllers are responsible for ensuring that every processor they use complies with GDPR requirements around data privacy and security. Using processors that meet certain certifications or adhere to specific codes of conduct can help controllers meet this obligation, but controllers and processors also must enter into binding contracts around data usage:
From Article 28: Processing by a processor shall be governed by a contract or other legal act under Union or Member State law, that is binding on the processor with regard to the controller and that sets out the subject-matter and duration of the processing, the nature and purpose of the processing, the type of personal data and categories of data subjects and the obligations and rights of the controller.
Apart from fines [LINK] levied for things you might expect (e.g., negligent security practices or failing to get proper consent), controllers can also be fined for violations related to their contracts with data processors. Furthermore, controllers are on the hook for notifying data subjects of any breaches, wherever they happen across the supply chain.
Being a processor still means bearing responsibility
That being said, things are not necessarily any simpler for data processors, which have their own set of rules to follow. For example, processors may not engage any additional processors (if you’re a SaaS company, this includes your IaaS provider) without written consent from the controller. Processors also need to manage their processors contractually and bear responsibility to the controller should their processors mess up:
From Article 28: Where a processor engages another processor for carrying out specific processing activities on behalf of the controller, the same data protection obligations as set out in the contract or other legal act between the controller and the processor as referred to in paragraph 3 shall be imposed on that other processor by way of a contract or other legal act under Union or Member State law, in particular providing sufficient guarantees to implement appropriate technical and organisational measures in such a manner that the processing will meet the requirements of this Regulation. Where that other processor fails to fulfil its data protection obligations, the initial processor shall remain fully liable to the controller for the performance of that other processor’s obligations.
And although they’re not directly responsible for providing data records or other information to data subjects, data processors will be required to store and maintain in a format that makes such disclosures possible.
What if…
There are also gray areas that GDPR doesn’t expressly cover, but which SaaS providers and their customers will certainly want to think about as they engage with other. Here are a couple:
- What if customers share EU personal data without letting you know? Your customer would almost shoulder the majority of liability in this case, but the GDPR is unclear about proper protocol should a SaaS provider discover protected data on its systems. Does an acknowledgement of the personal data constitute constructive notice, at which point your company is required to act under GDPR requirements even if your customer refuses to?
- How do APIs fit into the picture? The controversy over Facebook’s API access and data-sharing policies should also give SaaS companies something the think about. Even if you don’t directly share data with third parties without customer consent, customers may use your APIs to integrate with any number of external services that will then process personal data, or just download data themselves onto their laptops. Who owns those relationships? And is providing a means of data-sharing with a potentially unlimited number of other products really a best practice for data security?
Language in customer contracts or licenses could help protect against this scenario by making users confirm they will only use a product for certain types of data or communication, and by making them assume liability for any use of personal data beyond that scope. You can get an example of how this might look from the Salesforce Data Processing Addendum (and many others in our collection of SaaS-company GDPR policies) that covers the various relationships and liabilities among Salesforce, its customers, and its subcontractors with regard to GDPR and other country-specific laws.
Compliance, administratively
As noted in the introduction, the GDPR is a vast regulation containing many specific rules to follow, and many guidelines—especially around concepts such as data security (Article 32)—that offer suggestions but no prescriptive measures for compliance. Some of the areas you’ll definitely want to assess include:
- How clearly you’re explaining your data-processing activities to data subjects, and whether you’re obtaining express consent for each purpose. Note that opt-out consent forms will not fly. (Article 7)
- How much data you actually need to fulfill a specific purpose. The GDPR mandates that companies don’t collect more data than they need, process data more than required or store data longer than necessary. (Article 5)
- How anonymized and/or encrypted your user data actually is. Truly anonymous data is not subject to GDPR requirements but “pseudonymous” data—that “which could be attributed to a natural person by the use of additional information—is subject to GDPR requirements. (Recital 26) However, the GDPR still does encourage pseudonymization.
- Whether your company is required to appoint a representative located within the EU. (Article 27)
- Whether your company is required to appoint a data protection officer. (Article 37)
- The specificity of record-keeping required around how data is used and with whom it will be shared. Controllers and processors with less than 250 employees don’t have to comply with some of the more-stringent requirements, unless their data-processing “is likely to result in a risk to the rights and freedoms of data subjects … is not occasional, or … includes special categories of data.” (Article 30)
- Whether your relationships with data subjects provide a legitimate interest under which personal data may be processed without express consent. (Article 6) The law is vague on when this might apply, outside of in the case of emergencies, cybersecurity and other non-standard situations, but does caution that “the existence of a legitimate interest would need careful assessment.” (Recital 47)
For a concrete example of GDPR data-minimization in action, here is the partial text of an email that Intercom recently sent to all of its customers:
I’m writing to let you know about an upcoming change to the way we store Visitor data in Intercom, coming into effect on May 11th, 2018.
What’s changing
In preparation for the new EU General Data Protection Regulation (GDPR), we will now be expiring Visitor data once a Visitor has not been seen for nine months. This means that from May 11th, 2018:
- We will automatically delete the IP and location of visitors who have not visited your site in 9 months.
- If a visitor returns after 9 months they will be treated like a new visitor. There will be no record of previous visitor auto messages or conversations.
This change only impacts Visitor data – all other data is unaffected. Note, while GDPR is an EU regulation, it ultimately affects any business with customers in the EU which is why we are applying these changes globally across our entire customer base.
Compliance, technologically
Technologically speaking, one of the bigger hurdles to compliance might be designing your data architectures so that you can easily provide information to data subjects should they request it. It’s technically the job of data controllers to supply this information, but where processors are involved, they’ll be required to supply it to controllers.
Here’s what the GDPR allows for data subjects to demand from controllers (note that clause (h) refers to algorithms, machine learning models and any “automated decision-making”):
- The data subject shall have the right to obtain from the controller confirmation as to whether or not personal data concerning him or her are being processed, and where that is the case, access to the personal data and the following information:
a. the purposes of the processing;
b. the categories of personal data concerned;
c. the recipients or categories of recipient to whom the personal data have been or will be disclosed, in particular recipients in third countries or international organisations;
d. where possible, the envisaged period for which the personal data will be stored, or, if not possible, the criteria used to determine that period;
e. the existence of the right to request from the controller rectification or erasure of personal data or restriction of processing of personal data concerning the data subject or to object to such processing;
f. the right to lodge a complaint with a supervisory authority;
g. where the personal data are not collected from the data subject, any available information as to their source;
h. the existence of automated decision-making, including profiling, referred to in Article 22(1) and (4) and, at least in those cases, meaningful information about the logic involved, as well as the significance and the envisaged consequences of such processing for the data subject.
- Where personal data are transferred to a third country or to an international organisation, the data subject shall have the right to be informed of the appropriate safeguards pursuant to Article 46 relating to the transfer.
- The controller shall provide a copy of the personal data undergoing processing.
(You can also get a sense of the scope in this admittedly played-up sample letter posted by a PricewaterhouseCoopers consultant on LinkedIn.)
Any personal data delivered to data subjects must be delivered in “a structured, commonly used and machine-readable format,” in part so that data can easily be transferred from one controller to another should the subject so desire. The GDPR calls this the “right to data portability.” (Article 20)
Data subjects can also demand that controllers correct inaccurate data about them (Article 16) and, in certain cases, erase (Article 17) or restrict (Article 18) the processing of their personal data. Where personal data is being used for direct marketing, data subjects can object at any time and controllers must stop processing said data for that purpose. (Article 21)
If these seem like unlikely circumstances, don’t be so sure. Since the EU implemented a right to be forgotten in search results in 2014, Google claims it has received more than 650,000 requests, to remove more than 2.3 million URLs in all, from its results. It removed about 43 percent of them. In a recent survey of U.S. consumers, 69 percent said they don’t believe companies are doing all they can to protect user data, and 93 percent said they should be able to delete their online data when they want to.
More reading
Convinced that GDPR will matter to your company and looking for some more guidance on how and where it might apply, or how other SaaS companies are thinking about it? You can check out some of our other pieces on this topic:


Other Artists
-
A Century of Danish Chairs by Various Artists - 2010
$110.00 -
Pink Heart, Jim Dine - 1983
$250.00 -
Frida Kahlo, Guillermo Kahlo - Printed 1997, Original 1932
$125.00 -
National Parks Nature, Ben Shahn - 1974
$130.00 -
1972 Olympics, Allen Jones - 1972
$255.00 -
Olympics 1972, Charles Lapicque - 1972
$130.00 -
Victoria II, Gehard Richter - Printed 2003, Original 1986
$2,500.00 -
"Cream Pie" Original Poster SIGNED by Ralph Goings
$260.00 -
Goutte D'Eau (The Drop) - Circa 1950
$425.00 -
Systeme Metrique (The Metric System) - Circa 1950
$425.00 -
Normandie, A.M. Cassandre - Printed 1998, Original 1935
$175.00 -
Untitled, by Joan Miro - 1979
$185.00 -
Nicolas, by A.M. Cassandre - Printed 1998, Original 1935
$185.00 -
1968 Poster of Allan D'Arcangelo's Yield (1968)
$175.00 -
Haute Couture Signed by Razzia - 2007
$285.00 -
Lake Placid Signed by John Gallucci - 1980
$385.00 -
Golfer by Victor Spahn - 1985
$285.00 -
Benedictine by Makoto Saito
$285.00 -
Benedictine by Paul Davis
$285.00 -
Pasta Signed by Razzia - 2007
$285.00 -
Pret a Porter Signed by Razzia - 2007
$285.00 -
Café de Flore Signed by Razzia - 2007
$285.00 -
Au Sauvignon Signed by Razzia - 2007
$285.00 -
Woman With Purse and Red Hat, Fernando Botero - Printed 1991, Original 1981
$145.00 -
"Infanta Margarita" by Diego Velazquez - 1989
$270.00 -
25 Years, Lincoln Center, Julian Schnabel - 1984
$270.00 -
Paintings and Drawings, Sam Francis - 1979
$370.00 -
"Chicago International Art Exposition" by Antoni Tapies - 1987
$265.00 -
"Molti Baci" by Nicola de Maria - 1989
$150.00 -
Chicago Art Fair, Sam Francis - 1990
$195.00 -
Los Musicos, Fernando Botero - 1980
$450.00 -
"Dahlias" Signed by Gary Bukovnik - 2001
$1,900.00 -
Short Cuts, 8th New York Film Festival, by James Rosenquist - 1970
$250.00 -
Wedgewood, Signed by Ben Schonzeit - 1994
$2,200.00 -
Le Sphynx, Konrad Klapheck - 1985
$130.00 -
Fiori, Fernando Botero - Printed 1991, Original 1988
$85.00 -
Still Life With Newspaper, Fernando Botero - Printed 1991, Original 1989
$155.00 -
Paris Review, Signed by Helen Frankenthaler - 1965
$3,500.00 -
Paddock at Deauville, by Raoul Dufy - 1960
$1,700.00 -
Monaco Grand Prix 1950 - B. Minne - Printed 1995, Original 1950
$160.00 -
Lane, Signed by Davis Cone - 1995
$650.00 -
Balloon Dog by Jeff Koons - Printed 2012, Original 1994
$125.00 -
National Collection, Sam Francis - 1968
$350.00 -
Willi's Wine Bar, A.M. Cassandre - Printed 1984, Original 1920s
$950.00 -
1982 Poster of Alberto Bali's Willi’s Wine Bar (1982)
$850.00 -
Vintage 1969 Poster of Richard Anuszkiewicz's League of Women Voters
$675.00 -
Sun From the Weather Series, by David Hockney - 1981
$550.00 -
My Pal the Elephant, by Mike Hollist - 1987
$55.00


--- layout: default ---
Most recent Blogs:
Integrate Sumo Logic into your applications, access and manage data collectors, build your own search tools, and more using Sumo Logic APIs. Sumo Logic exposes APIs to access resources and log data from third-party scripts and applications, and also to configure Sources via JSON.


P. harmala (Syrian Rue) & LSD
| DOSE: |
0.375 oz |
oral |
Syrian Rue |
(tea) |
| |
2 hits |
oral |
LSD |
(blotter / tab) |
I acquired 3/8 of an ounce of fine ground Syrian rue seed powder. I made it into a tea by boiling the powder in a coffee filter and squeezing it. I filled the abominable tea with sugar, and half and half. Downed the brew in a swift gulp and then proceeded to ingest some LSD, roughly 2 hits.
I have taken large LSD doses of upwards of 15 hits and never had any adverse physical reactions. I have also taken Syrian rue before (with LSD), but never more than 1/8 of an ounce. This was all done with a friend of mine who took a little less than a 1/8 of Syrian rue and also two hits of acid. It was acid from the same sheet and Syrian rue from the same bag. He had no adverse effects.
I knew something was wrong almost immediately. Heavy visuals began within 5-10 minutes of taking the LSD and the Syrian rue. I am not sure if the MAOI increased the uptake of the LSD or if the visuals were purely the Syrian rue. Although I was enjoying myself my body seemed to say 'hello! Hello!!  This is it, you've done it.' No particular pains yet, just an overwhelming feeling of distress.
Roughly 45 minutes later (I really do not know) I began to have very, very severe stomach pains. I stumbled to my room looking for the sanctuary of my space and the comfort of my cats. But it grew worse, I was a being faced with not being, and I was as frightened as any being could be. I began violently vomiting, luckily in the cat's litter box. It was then that I faced my death. I no longer cared if I died on the spot or in sixty years.
It was not a dislike of life; it was an acceptance of my own mortality. Yes I would fight my death, but I would not anguish over my death. I have always tried to understand my mortality, known that I would die. But it was never a possibility NOW, always much much later. But my death was here. I accepted and understood that I would no longer exist. As my death drew nearer and my vomiting more violent, my thoughts became placid and less distressed. Then death left me, I felt fine, besides a sore throat and some mild nausea. More than nauseous, I felt disappointed. I truly believed it was my time (whether it was true or not is not for me to decide) that I would die that night. And I was calm. Accepting of what has happened.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Behind Grid
With the accessibility and resourcefulness of the Internet reaching new heights everyday, the potential for our generation to contribute to the community, assist third-world countries, and pursue passion is limitless. However, many young adults struggle with identifying their fields of interest and are left unexposed to many. The best way to spark and fuel passion is with passion itself.
Technology
React Native, XCode, Android Studio, AWS, Node.js.
What's Next?
Currently in development. Arriving on the Apple App Store & Google PlayStore soon.


Trace the following method given graduationYear = 1984 and currYear = 2020. What does nextReunion() return?
public int nextReunion() { int yearDiff = currYear - graduationYear; if (yearDiff <= 0) return currYear + (5 - yearDiff); else return currYear + (5 - (yearDiff % 5)); }
There are no hints for this question


PLANET SICK-BOY: http://www.sick-boy.com "We Put the SIN in Cinema" ©Copyright 2000 Planet Sick-Boy. All Rights Reserved.
A month or so ago, Sony sent a 30-minute highlight reel of their upcoming film Vertical Limit to Rochester for critics to get a special sneak preview of the mountain climbing movie's dazzling action sequences. Most of the scenes, especially the first, looked pretty good, so there was legitimate potential for Limit to entertain where similar films (like Cliffhanger and K2) succeeded solely in sucking.
They should have left well enough alone, as the additional 96 minutes that were left off Limit's highlight reel are downright awful. The more I learned about the characters, the more I hated them. Ditto for the film's story. Perhaps it's because there is an inherent problem with rooting for those who seek thrills by doing dumb things. People who insist on partaking in death-defying activities, be they bungee jumping, mountain climbing, downhill skiing or masturbating with a kitchen knife while jumping on a trampoline, deserve to be hurt. Badly.
Limit opens similarly to M:I-2, putting its star(s) on the face of a red rock mountain somewhere in the American southwest. Instead of a stealthy spy with no equipment, Limit shows a family of three playing `Name That Tune' while they make their vertical ascent. But something goes wrong, leaving father Royce Garrett (Stuart Wilson, Here on Earth) and his two adult children dangling from a rope meant to hold two people. Royce tells his son Peter (Chris O'Donnell, The Bachelor) to cut him loose, while daughter Annie (Robin Tunney, End of Days) pleads for her father to not sacrifice his life. It's a heart-in-your-throat scene that is well-executed and as dramatic as anything you'll see in an action film.
Unfortunately, the potential for the rest of Limit drops faster than Royce. Flash forward three years, where Peter has sworn off the mountain in favor of a photography career for National Geographic and his estranged sister Annie has become one of the world's top climbers. The siblings haven't spoken since the accident but somehow end up in the same place – at the base of Earth's second-largest peak (called `K2'). Peter is there to film Himalayan snow leopards, while Annie is involved in a climb with a crackpot billionaire (Bill Paxton, U-571) who plans on using the ascent to promote his new airline company.
And, wouldn't you know it, Annie's group is trapped in a crevasse near the peak of K2, and Peter has a limited amount of time to rescue his sister before the cold and high altitudes finish her off. For a climbing mate, Peter chooses the wacky, wizard-like Montgomery Wick (Scott Glenn, The Virgin Suicides), who lost his wife on the same mountain during a climb sponsored by the same billionaire some four years earlier.
Limit is poorly paced, just like director Martin Campbell's last effort, The Mask of Zorro. The scenes filmed outside look fantastic, thanks to the keen eye of cinematographer David Tattersall (The Green Mile), but Limit also features scenes filmed on hokey, ice-covered sets that have "sound stage" written all over them (not literally, but they may as well have). The transition from the lovely outdoors (filmed on and around New Zealand's Mt. Cook) to the pretend outdoors looks awful and, at times, is laughable. Conversely, Limit's jokes and one-liners are anything but.
2:06 – PG-13 for intense life/death situations and brief strong language
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


ADDING DIALOGS USING QT AND MICROSOFT FOUNDATION CLASSES
INDEX
The basic process of adding a dialog/menu in Qt is as follows:
Add Class and menu form
Project -> Add Qt Class -> Qt GUI Class
Fill in class name
Select 'Multiple Inheritance'
Set Parent class to QDialog (rather than QWidget)
This defines 3 new files
.cpp -- implements slots
.h -- includes 'Q_OBJECT' and slot definitions
.ui -- defines the menu look and function
Qt processes that are partially hidden by Visual Studio
Uic'ing -- compiles .ui
From .ui that describes menu created ui_class-name.h to implement menu
Moc'ing -- adds Qt-specific code to VS
Processes class-name.h file with 'Q_OBJECT' to make moc_class-name.obj
This .obj is added to build to implement Qt-specific
Create menu form
Open the .ui file with Qt Designer
Drag and drop menu items from the Widget box at left onto the menu
Rename the item to give it a meaningful name
Define connections between signals from menu to slots in the associated new class
Select 'Edit Signals Slots' from menu bar at top of window to switch to this mode
Drag mouse from signaling object to anyplace on menu
Select a action from left side of popup menu
Probably want to define a new slot so choose 'Edit' from right side of popup
Click '+' and define new slot (eg doAccept() -- make sure to include '()')
Convention is to start every slot name with 'do'
Save the menu (File -> Save)
Compile the ui file (right-click the ui file -> compile)
This creates a ui_class-name.h file
Add functionality to the new dialog class
ui_class-name.h file will show up missing
Right click on it and 'Open Document' will cause VS to recognize it
Copy from previous dialogs to define Slots and other methods
Move new files to proper areas
The new files for the dialog will be defined internally to the Visual Studio solution
Want the files to be in the main Fusion3D tree
.cpp file in Fusion3D/src
.h file in Fusion3D/include/Fusion3D
.ui file in Fusion3D/ui
MAKE NEW SUBMENU AND TEMPLATE FOR ASSOCIATED IMPLEMENTATION CLASS
1) Open Visual Studio and click “View” followed by “Resource View”
2) In the Resource View, expand Map3DViewer.rc and right-click on “Dialog” followed by “Insert Dialog”
3) Resize the dialog box.
4) Right-click on the dialog box, select properties, and rename the Caption to something meaningful.
5) Rename the ID appropriately. I have been using the convention of “IDD_xxx_DIALOG where you place the name of the dialog in the “xxx” such as IDD_CLOCK_DIALOG”. In this example, I will use “IDD_TEST_MODAL_DIALOG”.
6) Open the Toolbox by click the “View” menu item followed by “Toolbox”
7) Add a Slider and an Edit Control to the dialog.
8) For the edit control, right-click on it and select “Add Variable…” and enter name such as “cEdit”.
9) Right-click on the edit control and click “Add Event handler…”.
10) In the “Message type:” box, select EN_KILLFOCUS to capture the event when the user releases focus on the field. Notice the code that is generated.
11) Change the Caption for the static control.
12) For the slider, rename the ID to something meaningful such as IDC_MODAL_SLIDER. Do the same for the other controls (Edit and button).
13) Right-click on the dialog box and use “Add class…”. Enter the new class name such as “dialog_modal” and click “Finish”.
14) For the slider control, right-click on it and select “Add Variable…” and enter name such as “cSlider”. Notice the code that is generated from this step.
15) If you want to generate events from you controls, then you use the “Add Event Handler…”.
16) Right-click on the slider and click “Add Event handler…”.
17) In the “Message type:” box, select NM_CUSTDRAW to capture the event when the user releases the mouse after sliding. Notice the method that is generated.
18) In the “Message type:” box, select NM_RELEASEDCAPTURE to capture the event when the user releases the mouse after sliding.
19a) Make sure that the new dialog_... class can find resource.h where IDD_ and IDC_ resources are -- add #include "internals.h" or equivalent.
19b) Probably want to add the new class to internals.h
19c) Build the project and make sure you have no errors.
ADD NEW SUBMENU TO MAIN MENU
20) Open Resource View and click on Map3DViewer.rc
21) Click on “Menu” followed by double-clicking “IDR_MENU”.
22) Where it says “Add Menu”, type in “Test”
23) Click on “Test” and enter “Modal Test” menu item.
24) Open up the properties inspector for the “Modal Test” menu item.
25) Enter “IDM_MODAL_TEST_MENU” for the ID
26) Open menu_input_sw_class.cpp
27) Find “menu_input_sw_class::WinProcMenu(…) method.
28) Somewhere in the switch clause inside this method add code that looks Like this:
case IDM_MODAL_TEST_MENU:
modalTest();
break;
29) Somewhere above the class::WinProcMenu(…) method, add code that looks like this:
void menu_input_sw_class::modalTest()
{
modalDialog = new dialog_modal(NULL, this);
modalDialog->DoModal();
}
30) In Internal.h place the following line in the #if defined(COIN_LIBRARIES) clause
#include "dialog_modal.h"
31) Place the following declaration and method in menu_input_sw_class.h
class dialog_modal; (near the top where the other dialogs are declared)
dialog_modal* modalDialog; (in public)
void modalTest();
PROCESS INPUTS FROM SUBMENU
32) Create a method to capture all events from the edit controls in the dialog. In dialog_modal.cpp, declare the following method:
// this is used for modal dialog only
BOOL dialog_modal::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE || pMsg->wParam==VK_TAB)
{
int idCtrl = this->GetFocus()->GetDlgCtrlID();
if ( idCtrl == IDC_EDIT1 )
{
OnEnKillfocusEdit ();
pMsg->wParam=NULL ;
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
33) In dialog_modal.h, declare the above method.
virtual BOOL PreTranslateMessage(MSG* pMsg);
34) Place a reference of the menu_input_sw_class in your dialog_modal.h so you can send messages back as a callback:
#include "menu_input_sw_class.h"
class menu_input_sw_class;
35) Declare the menu_input_sw_class in dialog_modal.h:
Public:
menu_input_sw_class* menuInputSWClass;
36) Add code to take the value out of the edit control an send it back to menu_input_sw_class. To do this, place the following code in OnEnKillfocusEdit() method:
CString string;
cEdit.GetWindowText(string);
menuInputSWClass->modalTestCB(ToFloat(string));
37) Create a method ToFloat(string) to convert a cString to a float:
float dialog_modal::ToFloat(CString str)
{
double dvar;
_stscanf(str, _T("%lf"), &dvar);
return dvar;
}
38) Declare it as a private method in dialog_modal.h:
private:
float ToFloat(CString str);
39) In menu_input_sw_class.cpp, declare the callback:
void menu_input_sw_class::modalTestCB(float value)
{
//SoSFFloat* GL_xxx =
(SoSFFloat*)SoDB::getGlobalField("YYY");
//GL_xxx->setValue(value);
}
40) In menu_input_sw_class.h, declare the callback method:
void modalTestCB(float value);
41) Build and run. When you change a value in the text field, the callback should get executed.
42) You can add a method in dialog_non_modal.cpp to do any initialization of the dialog before it is displayed by adding an OnInitDialog method as follows:
BOOL dialog_non_modal::OnInitDialog()
{
CDialog::OnInitDialog();
// define a private float variable called xxx
CString str;
str.Format(_T("%4.2f"), xxx);
cSlider.SetPos((int)( xxx *100));
cEdit.SetWindowText(str);
cEdit.SetLimitText(5);
return TRUE;
}
******************************************************************************************************************************************************
******************************************************************************************************************************************************
******************************************************************************************************************************************************
******************************************************************************************************************************************************
MAKE NEW SUBMENU AND TEMPLATE FOR ASSOCIATED IMPLEMENTATION CLASS
1) Open Visual Studio and click “View” followed by “Resource View”
2) In the Resource View, expand Map3DViewer.rc and right-click on “Dialog” followed by “Insert Dialog”
3) Resize the dialog box.
4) Rename the Caption to something meaningful in the Properties window.
5) Rename the ID appropriately. I have been using the convention of “IDD_xxx_DIALOG where you place the name of the dialog in the “xxx” such as IDD_CLOCK_DIALOG”. In this example, I will use “IDD_TEST_NONMODAL_DIALOG”.
6) Open the Toolbox by clicking the “View” menu item followed by “Toolbox”
7) Add a Static Text, a Slider, an Edit Control, and a Button to the dialog.
8) Change the Caption for the static control and the button.
9) For the slider, rename the ID to something meaningful such as IDC_NON_MODAL_SLIDER. Do the same for the other controls (Edit and button).
10) Right-click on the dialog box and use “Add class…”. Enter the new class name such as “dialog_non_modal” and click “Finish”.
11) For the slider control, right-click on it and select “Add Variable…” and enter name such as “cSlider”.
12) For the edit control, right-click on it and select “Add Variable…” and enter name such as “cEdit”.
13) For the button control, right-click on it and select “Add Variable…” and enter name such as “cButton”. Notice the code that is generated from the last 3 steps.
14) If you want to generate events from you controls, then you use the “Add Event Handler…”. Here are some examples:
15) Right-click on the slider and click “Add Event handler…”.
16) In the “Message type:” box, select NM_CUSTDRAW to capture the event when the user releases the mouse after sliding. Notice the method that is generated.
17) In the “Message type:” box, select NM_RELEASEDCAPTURE to capture the event when the user releases the mouse after sliding.
18) Right-click on the edit control and click “Add Event handler…”.
19) In the “Message type:” box, select EN_KILLFOCUS to capture the event when the user releases focus on the field. Notice the code that is generated.
20) Again, Right-click on the edit control and click “Add Event handler…”.
21) In the “Message type:” box, select EN_SETFOCUS to capture the event when the user places focus on the field.
22) Right-click on the button control and click “Add Event handler…”.
23) In the “Message type:” box, select BN_CLICKED to capture the event when the user clicks the button.
24a) Make sure that the new dialog_... class can find resource.h where IDD_ and IDC_ resources are -- add #include "internals.h" or equivalent.
24b) Probably want to add the new class to internals.h
24c) Build the project and make sure you have no errors.
ADD NEW SUBMENU TO MAIN MENU
25) Open Resource View and click on Map3DViewer.rc
26) Click on “Menu” followed by double-clicking “IDR_MENU”.
27) Click on “Test” and enter “Non Modal Test” menu item.
28) Open up the properties inspector for the “Non Modal Test” menu item (right-click on “Non Modal Test” and select Properties).
29) Enter “IDM_NON_MODAL_TEST_MENU” for the ID
30) Open menu_input_sw_class.cpp
31) Find “menu_input_sw_class::WinProcMenu(…) method.
32) Somewhere in the switch clause inside this method add code that looks Like this:
case IDM_NON_MODAL_TEST_MENU:
nonModalTest();
break;
33) Somewhere above the class::WinProcMenu(…) method, add code that looks like this:
void menu_input_sw_class::nonModalTest()
{
nonModalDialog = new dialog_non_modal();
nonModalDialog->Create(IDD_TEST_NONMODAL_DIALOG);
nonModalDialog->ShowWindow(SW_SHOWNORMAL);
nonModalDialog->UpdateData(0);
}
34) In Internal.h place the following line in the #if defined(COIN_LIBRARIES) clause
#include "dialog_non_modal.h"
35) Place the following declaration and method in menu_input_sw_class.h
class dialog_non_modal; (near the top where the other dialogs are declared)
dialog_non_modal* nonModalDialog; (in public)
void nonModalTest();
PROCESS INPUTS FROM SUBMENU
36) For each edit control in your dialog box, you need to write some code as shown in the following. If you don’t then you will hear a beep when you hit return while editing the control.
37) For the edit control, add a class to dialog_non_modal.h file:
class NonModalEditControl : public CEdit
{
DECLARE_DYNAMIC(NonModalEditControl);
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg UINT OnGetDlgCode();
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
};
38) In the dialog_non_modal.cpp file add the control’s implementation:
IMPLEMENT_DYNAMIC(NonModalEditControl, CEdit)
BEGIN_MESSAGE_MAP(NonModalEditControl, CEdit)
ON_WM_GETDLGCODE()
ON_WM_CHAR()
END_MESSAGE_MAP()
UINT NonModalEditControl::OnGetDlgCode()
{
// Assure we will receive Enter key
return CEdit::OnGetDlgCode() | DLGC_WANTALLKEYS;
}
void NonModalEditControl::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if (nChar == '\r')
{
dialog_non_modal* dialog = (dialog_non_modal *)GetParent();
dialog->OnEnKillfocusNonModalEdit();
return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
39) Rename the edit control to the class you created above:
“CEdit cEdit;” to “NonModalEditControl cEdit;”
40) Place a reference of the menu_input_sw_class in your dialog_non_modal.h so you can send messages back as a callback:
#include "menu_input_sw_class.h"
class menu_input_sw_class;
41) Declare the menu_input_sw_class in dialog_non_modal.h:
Public:
menu_input_sw_class* menuInputSWClass;
42) Add code to take the value out of the edit control an send it back to menu_input_sw_class. To do this, place the following code in OnEnKillfocusNonModaledit() method:
CString string;
cEdit.GetWindowText(string);
menuInputSWClass->nonModalTestCB(ToFloat(string));
43) Create a method ToFloat(string) to convert a cString to a float:
float dialog_non_modal::ToFloat(CString str)
{
double dvar;
_stscanf(str, _T("%lf"), &dvar);
return dvar;
}
44) Declare it as a private method in dialog_non_modal.h:
private:
float ToFloat(CString str);
45) In menu_input_sw_class.cpp, declare the callback:
void menu_input_sw_class::nonModalTestCB(float value)
{
//SoSFFloat* GL_xxx =(SoSFFloat*)SoDB::getGlobalField("YYY");
//GL_xxx->setValue(value);
}
46) In menu_input_sw_class.h, declare the callback method:
void nonModalTestCB(float value);
47) Build and run. When you change a value in the text field, the callback should get executed.
48) You can add a method in dialog_non_modal.cpp to do any initialization of the dialog before it is displayed by adding an OnInitDialog method as follows:
BOOL dialog_non_modal::OnInitDialog()
{
CDialog::OnInitDialog();
// define a private float variable called xxx
CString str;
str.Format(_T("%4.2f"), xxx);
cSlider.SetPos((int)( xxx *100));
cEdit.SetWindowText(str);
cEdit.SetLimitText(5);
return TRUE;
}
Sliders
To initialize parameters like slider limits, create a new method like below in the new dialog implementation class.
This method is called automatically whenever the dialog box is opened.
BOOL dialog_hilite_thesholds::OnInitDialog()
{
CDialog::OnInitDialog();
CHiliteTh1SliderCtrl.SetRangeMin(0);
CHiliteTh1SliderCtrl.SetRangeMax(20);
CHiliteTh2SliderCtrl.SetRangeMin(0);
CHiliteTh2SliderCtrl.SetRangeMax(40);
return TRUE;
}
To display current slider value, you must add a static text variable to the menu at the right of the slider.
Then fill in the auto-defined method below:
void dialog_hilite_thesholds::OnNMCustomdrawHilite1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast(pNMHDR);
// TODO: Add your control notification handler code here
float pos = 0.1 * float(CHiliteTh1SliderCtrl.GetPos());
char* text = new char[8];
sprintf(text,"%4.1f",pos);
CThresh1Val.SetWindowText(convertCharPtrToLPCTSTR(text));
*pResult = 0;
}
Radio Buttons
To set up radio buttons, use msdn doc "Grouping Radio Buttons on a Dialog"
Make sure to configure the associated variable as int as they describe.
To selectively disable some options:
GetDlgItem(IDC_RADIO2)->EnableWindow(FALSE); // where IDC_RADIO2 is the resource name associated with the specific button you want to disable


|
masscalculator-core
|
Class Zinc, that holds all the nessesary information for Zinc and it's types therefore we can use in the interface. More...
#include <zinc.h>
Classes | |
| struct | Properties |
| Struct with material specific properties. More... | |
Public Types | |
| enum class | Type : uint8_t { BEGIN = 0 , Z_190 = BEGIN , Z_310 , Z_320 , Z_500 , Z_700 , Z_720 , Z_750 , UNSPECIFIED , END } |
| Enum that holds the Zinc types. More... | |
| typedef enum Type uint8_t struct MassCalculator::Materials::Zinc::Properties | Properties_t |
| Struct with material specific properties. | |
Public Member Functions | |
| Zinc (void) | |
| Construct a new Zinc object. | |
| Zinc (const Type &type) | |
| Construct a new Zinc object and specify the type. | |
| bool | initLuaScript (void) |
| Function to initialize the Lua object. | |
| bool | setType (const Type &type) |
| Set the Type object. More... | |
| std::pair< std::string, Type > | getType (void) const |
| Get the Type object. More... | |
| std::string | getSpecificColor (void) const |
| Get the Specific Color object. More... | |
| kilograms_per_cubic_meter_t | getSpecificDensity (void) const |
| Get the Specific Density object. More... | |
| meters_per_second_squared_t | getSpecificGravity (void) const |
| Get the Specific Gravity object. More... | |
| kelvin_t | getSpecificMeltingPoint (void) const |
| Get the Specific Melting Point object. More... | |
| double | getSpecificPoissonsRatio (void) const |
| Get the Specific PoissonsRatio object. More... | |
| watt_t | getSpecificThermalConductivity (void) const |
| Get the Specific Thermal Conductivity object. More... | |
| pascal_t | getSpecificModOfElasticityTension (void) const |
| Get the Specific Modulus of Elasticity Tension object. More... | |
| pascal_t | getSpecificModOfElasticityTorsion (void) const |
| Get the Specific Modulus of Elasticity Torsion object. More... | |
| ~Zinc (void)=default | |
| Destroy the Zinc object. | |
| Zinc (const Zinc &)=delete | |
| Delete copy constructor. | |
| Zinc (Zinc &&)=default | |
| Set move constructor to default. | |
| Zinc & | operator= (const Zinc &)=delete |
| Delete assignment operator. | |
| Zinc & | operator= (Zinc &&)=default |
| Allow move assignment operator. | |
Friends | |
| std::ostream & | operator<< (std::ostream &os, const Zinc &obj) |
| Shift operator overload for class Zinc, this will print all the nessesery informations. | |
| std::ostream & | operator<< (std::ostream &os, const Zinc::Type &type) |
| Shift operator overload for Types of Zinc, this will print the name in string. | |
Class Zinc, that holds all the nessesary information for Zinc and it's types therefore we can use in the interface.
|
strong |
Enum that holds the Zinc types.
| Enumerator | |
|---|---|
| Z_190 |
|
| Z_310 |
|
| Z_320 |
|
| Z_500 |
|
| Z_700 |
|
| Z_720 |
|
| Z_750 |
|
| UNSPECIFIED | Unspecified metal alloy. |
| std::string MassCalculator::Materials::Zinc::getSpecificColor | ( | void | ) | const |
Get the Specific Color object.
| kilograms_per_cubic_meter_t MassCalculator::Materials::Zinc::getSpecificDensity | ( | void | ) | const |
Get the Specific Density object.
| meters_per_second_squared_t MassCalculator::Materials::Zinc::getSpecificGravity | ( | void | ) | const |
Get the Specific Gravity object.
| kelvin_t MassCalculator::Materials::Zinc::getSpecificMeltingPoint | ( | void | ) | const |
Get the Specific Melting Point object.
| pascal_t MassCalculator::Materials::Zinc::getSpecificModOfElasticityTension | ( | void | ) | const |
Get the Specific Modulus of Elasticity Tension object.
| pascal_t MassCalculator::Materials::Zinc::getSpecificModOfElasticityTorsion | ( | void | ) | const |
Get the Specific Modulus of Elasticity Torsion object.
| double MassCalculator::Materials::Zinc::getSpecificPoissonsRatio | ( | void | ) | const |
Get the Specific PoissonsRatio object.
| watt_t MassCalculator::Materials::Zinc::getSpecificThermalConductivity | ( | void | ) | const |
Get the Specific Thermal Conductivity object.
| std::pair< std::string, Zinc::Type > MassCalculator::Materials::Zinc::getType | ( | void | ) | const |
Get the Type object.
| bool MassCalculator::Materials::Zinc::setType | ( | const Type & | type | ) |
Set the Type object.
| type | Type of the Zinc |


{% block page_info %}
If you find Life Calendar useful, please consider donating to keep it going.
Running Life Calendar costs money, but the site is free. Help us keep it that way by donating below.


THE WIND WILL CARRY US (1999)
Reviewed by George Wu http://pages.prodigy.net/zvelf/ Copyright 2000 George wu Rating: ***1/2 (out of 4)
Abbas Kiarostami's latest film, The Wind Will Carry Us, starts off with a series of extreme long shots depicting a lone vehicle winding along hillside roads while its inhabitants amusingly discuss how to locate their destination. These people come alive for us before we ever see a face, and this is a tactic Kiarostami utilizes throughout the picture. As a matter of fact, we will only ever see one of these journeymen up close, a certain Behzad (Behzad Dourani), initially identified as a telecommunications engineer. These men reach a provincial village of white buildings couched in a small valley, but what are they doing here?  And is Behzad really who he says he is? Kiarostami is slow in offering up answers, and ironically the film is more interesting before we get them around the midway point.
The film takes its title from a poem recited within it, and refers to how certain things are beyond our control and is simply dependent on nature. Like Kiarostami's Taste of Cherry, the theme of The Wind Will Carry Us is life and death, but more specifically our governance over death and exploitation of life. To this end, Kiarostami injects technology into the mix. The village Behzad finds himself in resists the use of his cell phone in a comical manner, and the villagers resent his camera. Both embody the conflict of technology with a specific culture, a way of life. Metaphorically, Behzad and we, the audience, are continually unable to see many of the people Behzad encounters.
Kiarostami's camera placement and use of space is extraordinary here. His cinematographer, Mahmoud Kalari, perhaps Iran's foremost Director of Photography, deserves praise for capturing landscapes that practically glow. Some of Kiarostami's metaphors are overburdened -- a turtle turned over on its back, a dug-up leg bone -- and the film becomes a little overlong and repetitive, but for the most part, Kiarostami makes nigh a misstep in producing one of his best films yet.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Previous actions
Please note: this is a description of a past ESUG promotion action. All books have been given out, the "Free Books for Academy" has been discontinued.
Smalltalk is a pure object-oriented language that is mostly written in itself. It has good pedagogical properties. It is used at the open university for teaching OO. Have a look at the list of selected universities below.
For this purpose we propose two packages:
- Teacher Excellence Package : a package containing a relevant selection of Smalltalk books at all levels of expertise plus 30 CD's containing all the free or non-commercial Smalltalks (Squeak, VisualWorks, Gnu Smalltalk, Dolphin, Smalltalk/X, Smalltalk/MT) / plus all the freely available books / a ready-to-use lecture (400 slides / 100 pages of exercises)
- Teacher Immersion Package : we offer you to have the possibility to get an intensive lecture for any number of students over 3 or 4 days. The Teacher Immersion Package includes the Teacher Starter Package.
Admissibility conditions.
There no limit of country location (within Europe) to obtain the packages. The only criteria will be your willingness to learn and/or teach Smalltalk. You should write to ESUG a small description (max a page) describing your situation (include any criteria you find relevant) and what your plans are to promote Smalltalk. The package will be given to the local library of the university of the person who contacted us, but with the legal obligation not to do any business such as reselling the books to other party. Please include the library address with your announcement.
Smalltalk Books
Here is the list of the books we will offer to you
- Smalltalk Best Practice Patterns
- Squeak: Object-Oriented Design with Multimedia Applications
- Squeak: Open Personal Computing and Multimedia
- Squeak: A Quick Trip to ObjectLand
- Smalltalk Design Patterns Companion
- Smalltalk with Style
- On to Smalltalk
- Art and Science of Smalltalk
- Smalltalk, Objects, and Design
- Dolphin Smalltalk Companion
- Squeak by Xavier Briffault (French)
Here is the list of the Universities that received the teacher packages. Note that SmallWiki offuscates email addresses so we do not need to use tricks for email address encodings.
Département d'Électronique - Université de Blida
- Contact Information: Cherfa Yazid
Faculté des Sciences et des Sciences de l’Ingénieur – Université Hassiba Ben Bouali de Chlef
- Contact Information: Mohamed Benarous
Universidad Tecnológica Nacional (Buenos Aires)
LIFIA - Facultad de Informática de Universidad Nacional de La Plata
Colegio Schonthal (Buenos Aires)
University of Buenos Aires
Facultad Regional de Villa Maria - Universidad Tecnológica Nacional
Smalltalking (Buenos Aires)
Vrije Universiteit Brussels
Université Libre de Bruxelles
Instituto de Cinecias Matematicas e de Computacao - Universidade de Sao Paulo
Departamento de Ciencias de la Computación - Universidad de Chile
Huazhong University of Science and Technology (Wuhan Hubei)
The State Key Laboratory of Software Engineering - Wuhan Technology University
Brno University of Technology
Department of Information Engineering - Czech University of Agriculture in Prague
Faculty of Electrical Engineering - Czech Technical University (Prague)
IUT de Caen - Université de Caen
Université de Montpellier-II
Université de Bretagne Occidentale
Computer Science Department - Darmstadt University of Technology
FH Nordakademie - Fachbereich Informatik
Department of Computer Science & Engineering - Jawaharlal Nehru Technological University
- Contact Information: Chandra Sekharaiah Kanagaluru chandra_sekharaiah
- Website: http://www.jntu.org
Department of Computer Science - Aligarh Muslim University
Dipartimento di Ingegneria Elettrica e Elettronica -Universitá di Cagliari
Faculty for Automation and Computer Science and Engineering Department of Computers - Politehnica University (Timisoara)
Universitatea Tehnica Cluj-Napoca
Valahia University
Department of Mathematics and Informatics - University of Novi Sad
Faculty of Electrical Egnineering and Information Technology - Slovak University of Technology
Escuela Técnica de Informática de Gestión - Universidad de Vigo
University Jaume I (Castellón)
Department of Creative Techonologies - University of Portsmouth
School of Computing - University of Plymouth


TITLE 33. EVIDENCE
Chapter
621 Evidence and Witnesses, Generally
621C Witness Immunity
622 Documentary Evidence
623 Uniform Judicial Notice of Foreign Laws--Repealed
624 Depositions and Discovery
624D Uniform Interstate Depositions and Discovery Act
625 Notice to Admit, Inspection, and Discovery--Repealed
626 Hawaii Rules of Evidence
CHAPTER 621
EVIDENCE AND WITNESSES, GENERALLY
Section
621-1 Subpoena, issue of
621-2, 3 Repealed
621-4 Compelling attendance
621-5 Bystanders called without subpoena
621-6 Repealed
621-7 Fees; criminal cases
621-8 Attendance roll; parking violations exemption
621-9 Witness and defendant expenses; budgetary procedure
621-10 Reporting daily
621-10.5 Unlawful suspension or discharge from employment;
penalty; right of action
621-11 Repealed
621-12 Oath; affirmation
621-13 Oaths, validity of
621-14 to 25 Repealed
621-26 Confessions, when admissible
621-27 Repealed
621-28 Accompaniment of children at judicial proceedings
621-30 Use of a facility dog
Cross References
Televised testimony of victims and witnesses, see §801D-7.


Symbol Index for "Activity Type Excluded"
Symbol Index for diagram
"Activity Type Excluded"
Activity Type (Class)
Activity Type Excluded (Class)
Agent's Activity Type (Class)
classifier (Association)
subject to constraint (Association)


To get an expression, exp, to appear as a superscript, you just type ^{exp}.
Can be used only in math mode. Thus, for a simple expression that is part of the running text:
x$^3$ is the third power of x
should display as "x3 is the third power of x". Note that the braces around the argument may be omitted if the superscript is a single character.
If a symbol has both subscripts and superscripts, the order doesn't matter. The following are equivalent:
a_n^2
and
a^2_n
Superscripts may have their own superscripts:
$x^{y^{z}}$
should display something like
z y x
See also: Math Formulas,
Subscripts
Back to the Table of Contents


Questhub API is open. In fact, the entire website is built using the same API.
API routes which require authentication require API tokens; you can get one from your settings. Here's an example on how to use tokens:
https://questhub.io/api/current_user?api_login=your_login&api_token=0123456789abcdef0123456789abcdef
Non-modifying routes, such as ones for obtaining quests or activity feeds, usually don't require authentication.
All API routes are described in API.md file in our github repo.
API is not entirely stable and changes often, but usually in a backward-compatible way. If you want to know about upcoming changes, you should consider following the Meta realm.
Things to do with API:
Things not to do with API:
In the future, as questhub grows and develops better ways to filter through large volumes of quests, these rules will be relaxed.
I leave the right to temporarily or permanently revoke the right of anyone's API usage as I see fit.


standard input (stdin)
of the program.\n
appended to the end of the message. This simulates an 'Enter' clickstdin
, which may or may not be necessary for your program to read the input.
signal
to be sent can be a name e.g. 'HUP' or number '1'.kill -l
.


The menu Edit contains the following commands:
| Undo | Reverses the most recent editing action. |
| Redo | Restores the most recenty undone editing action. |
| Cut | Deletes data from the document and transfers it to the clipboard. |
| Copy | Copies data from the document to the clipboard. |
| Paste | Inserts data into the document from the clipboard. |
| Delete | Deletes data from the document. |
| Find/Replace | Searches through the document for a search term and replaces it if necessary. |
| Find Next | Continues a search for the next occurrence of the search term. |
| Select All | Selects the entire document. |
| Show Key | Displays the key with which the document was encrypted. |
| Parent Window | Selects the entire document. |


DARC Email Management{% if not user_is_staff %} - You have no permission to this page.{% endif %}
| DARC Email | ||
|---|---|---|
{{ email.email }} |
{{ email.id }} |
{# Copyright (C) 2013 TopCoder Inc., All Rights Reserved. #} {# This template defines page to show all DARC pages. #} {% extends "base.html" %} {% block bodyid %} id="partnerPage"{% endblock %} {% block content %}
| DARC Email | ||
|---|---|---|
{{ email.email }} |
{{ email.id }} |
Warning: you are about to delete the selected email. Proceed?


Glimpses of women through time: 130 years of National Geographic images
In anticipation of the 100th anniversary of the 19th amendment, National Geographic has published Women: A Century of Change, a book that draws upon the organization’s expansive 130-year-old archive to showcase photographs of and by women. As Susan Goldberg, the editor-in-chief of the magazine, notes in the introduction, the book is meant to “offer glimpses of women through time – how they were perceived, how they were treated, how much power they had or didn’t have – up to the present day.” The ultimate aim, she writes, is to “bring more women’s lives into the light”. Here are some of our favorite photographs from the book
Portrait of an Ojibway, or Chippewa Indian girl
Photograph: Roland W Reed/Courtesy National Geographic
Photo of a women’s suffrage march on Pennsylvania Avenue in Washington DC, which was published in the 1913 issue of National Geographic
Photograph: Courtesy National Geographic
Three Japanese women dressed in traditional kimonos pose behind cherry blossoms in 1918
Photograph: Eliza R Scidmore/Courtesy National Geographic
Jou Jou, captive chimpanzee reaches out its hand to Dr Jane Goodall
Photograph: Michael Nichols/Courtesy National Geographic
Schoolgirls in Ghana help prepare for the opening of the Maranatha maternity clinic by carrying chairs to the ceremony
Photograph: Randy Olson/National Geographic
Dressed in costume, a tourist takes in the views of the canals and gondolas in Venice
Photograph: Jodi Cobb/National Geographic
Chief Caleen Audrey Sisk Franco – the spiritual leader and last speaker of her tribe’s language – sends smoke prayers toward Mount Shasta in California
Photograph: Lynn Johnson/Courtesy National Geographic
An explorer climbs over giant cave mammillaries that were once underwater in Carlsbad Caverns, New Mexico
Photograph: Robbie Shone/Courtesy National Geographic
On a farm in Kentucky, girls play during a break from a daylong mother-daughter retreat to help girls understand and appreciate their bodies as they change with the onset of puberty
Photograph: Kitra Cahana/Courtesy National Geographic
Pregnant Noor Nisa, in labor, is assisted by her mother after her car broke down on the way to the hospital in Afghanistan
Photograph: Lynsey Addario/Courtesy National Geographic


@include('parts/header.html')
@include('parts/hero.html') @include('parts/about.html') @include('parts/services.html') @include('parts/projects.html') @include('parts/mail.html') @include('parts/blog.html')
@include('parts/footer.html')


{% extends "base.html" %} {% block content %}
DNAC-Monitoring-App. In the course of the DEMO, you will have the opportunity to interact with the network equipment, try to configure it and collect data using the Southbound and Northbound APIs. DNAC Monitoring App extends the basic features of DNA-C (Cisco Digital Network Architecture Center). This App help collect information about devices and manage network issues. This App can be useful for Enterprise and Service Providers who want to collect and store different changes about network devices, calculate and manage different indicators such as:
Average MTTR (Mean time to repair);
Average mean time to recover incident; Go to main DNAC-APP page. First add credential of controller (DNA-C) app/#/settings


--- layout: page title: About header-img: "img/about-bg.png" ---
Started as a graphic designer, now learning to handle my new coding super powers. Born in Montevideo, Uruguay. Grew up in between NY and Montevideo. Open to learn and experiment. Passionate about music and art in general.


H.No-2160/13, 3rd 60 feet Road, MolarBand Extn, Badarpur Border, New Delhi | 110044|<EMAIL_ADDRESS>I am a B.tech Graduate in mechanical and Automation engg. From Guru Gobind Singh Indraprastha University, New Delhi. I have completed my graduation in year 2015. After trying for government exams for one and a half year , having no luck there I started to learn coding . From around last 10 month I have been study and coding in android . I have design, coded and published some android apps in play store by myself, also some of projects repos are available on Github. I am also familiar with JavaScript and NodeJS. Actively looking for Job.
Was part of suspension and braking department and prepared suspension report for the team.
Learned about different parts of four stroke IC engine used in cars. Euro and Bharat Standard norms for emission control and Multi Point Fuel Injection (MPFI).
Compared the properties of composites Kevlar(29,49,149) to the conventional metal by using ANSYS(explicit dynamic module) simulation.
made a hybrid vehicle prototype which generate power from four different kind of energy source i.e. solar ,wind, shock or vibration and sound/noise.
JavaScript, NodeJS, MongoDb, Angular 6, Docker
Android (SQLite, Firebase, Networking), Android Canvas, Google Maps Api, Location Services, AdMob, JSON, Java(Core)
Version Control(Git) & Github, Github Pages, Markdown
CSS, HTML, Comfortable with linux command line, Operating System – Windows and Linux( Ubuntu)
Worked on a Couple of Project:
Worked on a Student management App.
mChat is a Chatbox App which uses various feature of Firebase i.e. Realtime Database, Storage, Authentication, Push Notification, Remote-Config, Cloud-function. Also uses JavaScript for function, nodeJS, Firebase CLI for server-Side.
This Repo deals with Token Based Authentication by using JavaScript, NodeJS, MongoDB, Postman, Express, Morgan, JsonWebToken etc.
mSudoku is an intuitive, touchscreen game board that’s easy and fun to play. The objective is to fill a 9x9 grid with 1 to 9 digits without having any conflict in any of the rows, columns, and 3x3 grid regions.
The Bhagavad Gita is a 700-verse( old manuscripts considered to have 745 verses) hindu scripture in Sanskrit that is part of the Hindu epic Mahabharata.The Gita is set in a narrative framework of a dialogue between Pandava prince Arjuna and his guide and charioteer Lord Krishna.
Admin and Student Login/Register System. Admin can generate Authentication keys, which will be required by student during registration process to create there User_id and Password.
This app records and maintain the pets details like name, breed, gender and weight. It uses persistent storage using SQLite database.
This App imitates online Boarding Pass System. Real time data can be bind with Views by using Data-binding library. This is a Responsive design.
This Repository contains a number of Demo Apps that explore Android feature like Google Maps, Location Services, Geo fencing, Activity Recognition APIs, Map types, Flying Effect, Location Marking, StreetView, location coordinate fetching.


SHARES
Admin Username
VIEWS
00
Date Here
'Click here for share link'
00
VIEWS
00
Date Here
'Click here for share link'
00
VIEWS
00
Date Here
'Click here for share link'
00
VIEWS
00
Date Here
'Click here for share link'
00
VIEWS
00
Date Here
'Click here for share link'
00
VIEWS
00
Date Here
'Click here for share link'
00
VIEWS
00
Date Here
'Click here for share link'
00
VIEWS
00
Date Here
'Click here for share link'
00


Next: Error handling, Previous: Starting the API, Up: Top [Contents][Index]
The define-api macro creates a function for accessing the api for each resource operation.
Before using the generated functions, the api backend needs to be selected via the with-api-backend.
Execute the client resource operation calling backend
For instance, for the api defined above, an get-user
and a get-users
functions are created, which can be used like this:
(with-api-backend "http://localhost/api" (get-user 22))
Assuming the api is running on ‘http://localhost/api
’
Next: Error handling, Previous: Starting the API, Up: Top [Contents][Index]


Class: Aws::MediaStore::Types::CorsRule
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-mediastore/lib/aws-sdk-mediastore/types.rb |
Overview
A rule for a CORS policy. You can add up to 100 rules to a CORS policy. If more than one rule applies, the service uses the first applicable rule listed.
Constant Summary
Instance Attribute Summary
-
#allowed_headers ⇒ Array<String>
rw
Specifies which headers are allowed in a preflight
OPTIONS
request through theAccess-Control-Request-Headers
header. -
#allowed_methods ⇒ Array<String>
rw
Identifies an HTTP method that the origin that is specified in the rule is allowed to execute.
-
#allowed_origins ⇒ Array<String>
rw
One or more response headers that you want users to be able to access from their applications (for example, from a JavaScript
XMLHttpRequest
object). -
#expose_headers ⇒ Array<String>
rw
One or more headers in the response that you want users to be able to access from their applications (for example, from a JavaScript
XMLHttpRequest
object). -
#max_age_seconds ⇒ Integer
rw
The time in seconds that your browser caches the preflight response for the specified resource.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#allowed_headers ⇒ Array
<String
> (rw)
Specifies which headers are allowed in a preflight OPTIONS
request
through the Access-Control-Request-Headers
header. Each header
name that is specified in Access-Control-Request-Headers
must have
a corresponding entry in the rule. Only the headers that were
requested are sent back.
This element can contain only one wildcard character (*).
# File 'gems/aws-sdk-mediastore/lib/aws-sdk-mediastore/types.rb', line 161
class CorsRule < Struct.new( :allowed_origins, :allowed_methods, :allowed_headers, :max_age_seconds, :expose_headers) SENSITIVE = [] include Aws::Structure end
#allowed_methods ⇒ Array
<String
> (rw)
Identifies an HTTP method that the origin that is specified in the rule is allowed to execute.
Each CORS rule must contain at least one AllowedMethods
and one
AllowedOrigins
element.
# File 'gems/aws-sdk-mediastore/lib/aws-sdk-mediastore/types.rb', line 161
class CorsRule < Struct.new( :allowed_origins, :allowed_methods, :allowed_headers, :max_age_seconds, :expose_headers) SENSITIVE = [] include Aws::Structure end
#allowed_origins ⇒ Array
<String
> (rw)
One or more response headers that you want users to be able to
access from their applications (for example, from a JavaScript
XMLHttpRequest
object).
Each CORS rule must have at least one AllowedOrigins
element. The
string value can include only one wildcard character (), for
example, http://.example.com. Additionally, you can specify only
one wildcard character to allow cross-origin access for all origins.
# File 'gems/aws-sdk-mediastore/lib/aws-sdk-mediastore/types.rb', line 161
class CorsRule < Struct.new( :allowed_origins, :allowed_methods, :allowed_headers, :max_age_seconds, :expose_headers) SENSITIVE = [] include Aws::Structure end
#expose_headers ⇒ Array
<String
> (rw)
One or more headers in the response that you want users to be able
to access from their applications (for example, from a JavaScript
XMLHttpRequest
object).
This element is optional for each rule.
# File 'gems/aws-sdk-mediastore/lib/aws-sdk-mediastore/types.rb', line 161
class CorsRule < Struct.new( :allowed_origins, :allowed_methods, :allowed_headers, :max_age_seconds, :expose_headers) SENSITIVE = [] include Aws::Structure end
#max_age_seconds ⇒ Integer
(rw)
The time in seconds that your browser caches the preflight response for the specified resource.
A CORS rule can have only one MaxAgeSeconds
element.
# File 'gems/aws-sdk-mediastore/lib/aws-sdk-mediastore/types.rb', line 161
class CorsRule < Struct.new( :allowed_origins, :allowed_methods, :allowed_headers, :max_age_seconds, :expose_headers) SENSITIVE = [] include Aws::Structure end


Home
Reviews
Contact Us
999999999
Twitter
Instagram
Facebook
Toaster waffle with Nuttella
Scotch Pancake
Savory Waffle
German Dutch Baby Pancake
Stroop Waffle
Moroccan Msemen


Orginially from Charlottesville, Virginia. I graduated from James Madison University with a bachelors in Biotechnology. After graduation I entered into a career of Brewing before attending Epicodus.
Blog about trying different curries from around the globe and how delicious they are.
Webpage about my dream vacation to the Arctic and how to achieve that goal.
Webpag about a home remodel including before, during, and after pictures.
Webpage for a private Island Resort.
The official webpage of the SteelDrivers.
A recreation of the Wikipedia webpage.


Quiz ID
errors
Number
errors
Type
errors
Description
errors
Original Image URL (Required for IMAGE type, JPEG, max 1024 x 1024, 1 MB, 1000 characters, must be on HTTPS)
errors
Preview Image URL (Required for IMAGE type, JPEG, max 240 x 240, 1 MB, 1000 characters, must be on HTTPS)
errors
Audio URL (Required for AUDIO type, m4a, max 10 MB, 1000 characters, less than 1 minute, must be on HTTPS)
errors
Audio Duration (Required for AUDIO type, must be less than 1 minute)
errors


Can you think of an analogy to describe HTML, CSS and the DOM? How would you describe it to your non-technical friend?
HTML code is like the walls and foundations of a house. CSS is then what you put on the walls and foundations to make the house visually appealing, and the DOM is the HTML you write once it is passed by the browser and is viewed in DevTools. The DOM might be different from the HTML code as the DOM filters your code for errors.
What is meant by boxifying design?
'Boxifying' is looking at a webpage and breaking it down into boxes. These boxes are then the subject of what is being 'designed up' in CSS.
What is the box model?
The box model shows the structure and format of a single box on a webpage.