No matter how great we are at programming, sometimes our scripts have errors. They may occur because of our mistakes, an unexpected user input, an erroneous server response, and for a thousand other reasons.
Usually, a script “dies” (immediately stops) in case of an error, printing it to console.
But there’s a syntax construct try..catch
that allows us to “catch” errors so the script can, instead of dying, do something more reasonable.
The try..catch
construct has two main blocks: try
, and then catch
:
It works like this:
try {...}
is executed.catch(err)
is ignored: the execution reaches the end of try
and goes on, skipping catch
.try
execution is stopped, and control flows to the beginning of catch(err)
. The err
variable (we can use any name for it) will contain an error object with details about what happened.So, an error inside the try {…}
block does not kill the script – we have a chance to handle it in catch
.
Let’s look at some examples.
An errorless example: shows alert
(1)
and (2)
:
```js run try {
alert('Start of try runs'); // *!*(1) <--*/!*
// ...no errors here
alert('End of try runs'); // *!*(2) <--*/!*
} catch(err) {
alert('Catch is ignored, because there are no errors'); // (3)
} ```An example with an error: shows (1)
and (3)
:
```js run try {
alert('Start of try runs'); // *!*(1) <--*/!*
! lalala; // error, variable is not defined! /!
alert('End of try (never reached)'); // (2)
} catch(err) {
alert(`Error has occurred!`); // *!*(3) <--*/!*
} ```
```warn header="
try..catchonly works for runtime errors" For
try..catch` to work, the code must be runnable. In other words, it should be valid JavaScript.
It won’t work if the code is syntactically wrong, for instance it has unmatched curly braces:
js run try { {{{{{{{{{{{{ } catch(e) { alert("The engine can't understand this code, it's invalid"); }
The JavaScript engine first reads the code, and then runs it. The errors that occur on the reading phase are called “parse-time” errors and are unrecoverable (from inside that code). That’s because the engine can’t understand the code.
So, try..catch
can only handle errors that occur in valid code.
 ); } }, 1000);
````
When an error occurs, JavaScript generates an object containing the details about it. The object is then passed as an argument to catch
:
try {
// ...
} catch(err) { // <-- the "error object", could use another word instead of err
// ...
}
For all built-in errors, the error object has two main properties:
name
"ReferenceError"
.
message
There are other non-standard properties available in most environments. One of most widely used and supported is:
stack
For instance:
```js run untrusted try { ! lalala; // error, variable is not defined! /! } catch(err) { alert(err.name); // ReferenceError alert(err.message); // lalala is not defined alert(err.stack); // ReferenceError: lalala is not defined at (…call stack)
// Can also show an error as a whole // The error is converted to string as “name: message” alert(err); // ReferenceError: lalala is not defined } ```
[recent browser=new]
If we don’t need error details, catch
may omit it:
Let’s explore a real-life use case of try..catch
.
As we already know, JavaScript supports the JSON.parse(str) method to read JSON-encoded values.
Usually it’s used to decode data received over the network, from the server or another source.
We receive it and call JSON.parse
like this:
```js run let json = ‘{“name”:“John”, “age”: 30}’; // data from the server
! let user = JSON.parse(json); // convert the text representation to JS object /!
// now user is an object with properties from the string alert( user.name ); // John alert( user.age ); // 30 ```
You can find more detailed information about JSON in the info:json chapter.
If json
is malformed, JSON.parse
generates an error, so the script “dies”.
Should we be satisfied with that? Of course not!
This way, if something’s wrong with the data, the visitor will never know that (unless they open the developer console). And people really don’t like when something “just dies” without any error message.
Let’s use try..catch
to handle the error:
```js run let json = “{ bad json }”;
try {
! let user = JSON.parse(json); // <– when an error occurs… /! alert( user.name ); // doesn’t work
} catch (e) { ! // …the execution jumps here alert( “Our apologies, the data has errors, we’ll try to request it one more time.” ); alert( e.name ); alert( e.message ); /! } ```
Here we use the catch
block only to show the message, but we can do much more: send a new network request, suggest an alternative to the visitor, send information about the error to a logging facility, … . All much better than just dying.
What if json
is syntactically correct, but doesn’t have a required name
property?
Like this:
```js run let json = ‘{ “age”: 30 }’; // incomplete data
try {
let user = JSON.parse(json); // <– no errors ! alert( user.name ); // no name! /!
} catch (e) { alert( “doesn’t execute” ); } ```
Here JSON.parse
runs normally, but the absence of name
is actually an error for us.
To unify error handling, we’ll use the throw
operator.
The throw
operator generates an error.
The syntax is:
Technically, we can use anything as an error object. That may be even a primitive, like a number or a string, but it’s better to use objects, preferably with name
and message
properties (to stay somewhat compatible with built-in errors).
JavaScript has many built-in constructors for standard errors: Error
, SyntaxError
, ReferenceError
, TypeError
and others. We can use them to create error objects as well.
Their syntax is:
let error = new Error(message);
// or
let error = new SyntaxError(message);
let error = new ReferenceError(message);
// ...
For built-in errors (not for any objects, just for errors), the name
property is exactly the name of the constructor. And message
is taken from the argument.
For instance:
```js run let error = new Error(“Things happen o_O”);
alert(error.name); // Error alert(error.message); // Things happen o_O ```
Let’s see what kind of error JSON.parse
generates:
js run try { JSON.parse("{ bad json o_O }"); } catch(e) { *!* alert(e.name); // SyntaxError */!* alert(e.message); // Unexpected token b in JSON at position 2 }
As we can see, that’s a SyntaxError
.
And in our case, the absence of name
is an error, as users must have a name
.
So let’s throw it:
```js run let json = ‘{ “age”: 30 }’; // incomplete data
try {
let user = JSON.parse(json); // <– no errors
if (!user.name) { ! throw new SyntaxError(“Incomplete data: no name”); // () /!* }
alert( user.name );
} catch(e) { alert( “JSON Error:” + e.message ); // JSON Error: Incomplete data: no name } ```
In the line (*)
, the throw
operator generates a SyntaxError
with the given message
, the same way as JavaScript would generate it itself. The execution of try
immediately stops and the control flow jumps into catch
.
Now catch
became a single place for all error handling: both for JSON.parse
and other cases.
In the example above we use try..catch
to handle incorrect data. But is it possible that another unexpected error occurs within the try {...}
block? Like a programming error (variable is not defined) or something else, not just this “incorrect data” thing.
For example:
```js run let json = ‘{ “age”: 30 }’; // incomplete data
try { user = JSON.parse(json); // <– forgot to put “let” before user
// … } catch(err) { alert(“JSON Error:” + err); // JSON Error: ReferenceError: user is not defined // (no JSON Error actually) } ```
Of course, everything’s possible! Programmers do make mistakes. Even in open-source utilities used by millions for decades – suddenly a bug may be discovered that leads to terrible hacks.
In our case, try..catch
is placed to catch “incorrect data” errors. But by its nature, catch
gets all errors from try
. Here it gets an unexpected error, but still shows the same "JSON Error"
message. That’s wrong and also makes the code more difficult to debug.
To avoid such problems, we can employ the “rethrowing” technique. The rule is simple:
Catch should only process errors that it knows and “rethrow” all others.
The “rethrowing” technique can be explained in more detail as:
catch(err) {...}
block we analyze the error object err
.throw err
.Usually, we can check the error type using the instanceof
operator:
js run try { user = { /*...*/ }; } catch(err) { *!* if (err instanceof ReferenceError) { */!* alert('ReferenceError'); // "ReferenceError" for accessing an undefined variable } }
We can also get the error class name from err.name
property. All native errors have it. Another option is to read err.constructor.name
.
In the code below, we use rethrowing so that catch
only handles SyntaxError
:
```js run let json = ‘{ “age”: 30 }’; // incomplete data try {
let user = JSON.parse(json);
if (!user.name) { throw new SyntaxError(“Incomplete data: no name”); }
! blabla(); // unexpected error /!
alert( user.name );
} catch(e) {
! if (e instanceof SyntaxError) { alert( “JSON Error:” + e.message ); } else { throw e; // rethrow () } /!*
} ```
The error throwing on line (*)
from inside catch
block “falls out” of try..catch
and can be either caught by an outer try..catch
construct (if it exists), or it kills the script.
So the catch
block actually handles only errors that it knows how to deal with and “skips” all others.
The example below demonstrates how such errors can be caught by one more level of try..catch
:
```js run function readData() { let json = ‘{ “age”: 30 }’;
try { // … ! blabla(); // error! /! } catch (e) { // … if (!(e instanceof SyntaxError)) { ! throw e; // rethrow (don’t know how to deal with it) /! } } }
try { readData(); } catch (e) { ! alert( “External catch got:” + e ); // caught it! /! } ```
Here readData
only knows how to handle SyntaxError
, while the outer try..catch
knows how to handle everything.
Wait, that’s not all.
The try..catch
construct may have one more code clause: finally
.
If it exists, it runs in all cases:
try
, if there were no errors,catch
, if there were errors.The extended syntax looks like this:
*!*try*/!* {
... try to execute the code ...
} *!*catch*/!*(e) {
... handle errors ...
} *!*finally*/!* {
... execute always ...
}
Try running this code:
js run try { alert( 'try' ); if (confirm('Make an error?')) BAD_CODE(); } catch (e) { alert( 'catch' ); } finally { alert( 'finally' ); }
The code has two ways of execution:
try -> catch -> finally
.try -> finally
.The finally
clause is often used when we start doing something and want to finalize it in any case of outcome.
For instance, we want to measure the time that a Fibonacci numbers function fib(n)
takes. Naturally, we can start measuring before it runs and finish afterwards. But what if there’s an error during the function call? In particular, the implementation of fib(n)
in the code below returns an error for negative or non-integer numbers.
The finally
clause is a great place to finish the measurements no matter what.
Here finally
guarantees that the time will be measured correctly in both situations – in case of a successful execution of fib
and in case of an error in it:
```js run let num = +prompt(“Enter a positive integer number?”, 35)
let diff, result;
function fib(n) { if (n < 0 || Math.trunc(n) != n) { throw new Error(“Must not be negative, and also an integer.”); } return n <= 1 ? n : fib(n - 1) + fib(n - 2); }
let start = Date.now();
try { result = fib(num); } catch (e) { result = 0; ! } finally { diff = Date.now() - start; } /!
alert(result || “error occurred”);
alert( execution took ${diff}ms
); ```
You can check by running the code with entering 35
into prompt
– it executes normally, finally
after try
. And then enter -1
– there will be an immediate error, and the execution will take 0ms
. Both measurements are done correctly.
In other words, the function may finish with return
or throw
, that doesn’t matter. The finally
clause executes in both cases.
``smart header="Variables are local inside
try..catch..finally" Please note that
resultand
diffvariables in the code above are declared *before*
try..catch`.
Otherwise, if we declared let
in try
block, it would only be visible inside of it. ```
```smart header="
finallyand
return" The
finallyclause works for *any* exit from
try..catch. That includes an explicit
return`.
In the example below, there’s a return
in try
. In this case, finally
is executed just before the control returns to the outer code.
```js run function func() {
try { ! return 1; /!
} catch (e) { /* … / } finally { ! alert( ‘finally’ ); /!* } }
alert( func() ); // first works alert from finally, and then this one
```smart header="
try..finally`"
The try..finally
construct, without catch
clause, is also useful. We apply it when we don’t want to handle errors here (let them fall through), but want to be sure that processes that we started are finalized.
function func() {
// start doing something that needs completion (like measurements)
try {
// ...
} finally {
// complete that thing even if all dies
}
}
In the code above, an error inside try
always falls out, because there’s no catch
. But finally
works before the execution flow leaves the function. ````
warn header="Environment-specific" The information from this section is not a part of the core JavaScript.
Let’s imagine we’ve got a fatal error outside of try..catch
, and the script died. Like a programming error or some other terrible thing.
Is there a way to react on such occurrences? We may want to log the error, show something to the user (normally they don’t see error messages), etc.
There is none in the specification, but environments usually provide it, because it’s really useful. For instance, Node.js has process.on("uncaughtException")
for that. And in the browser we can assign a function to the special window.onerror property, that will run in case of an uncaught error.
The syntax:
message
url
line
, col
error
For instance:
``html run untrusted refresh height=1 <script> *!* window.onerror = function(message, url, line, col, error) { alert(
${message}At line:{col} of ${url}`); }; /!
function readData() { badFunc(); // Whoops, something went wrong! }
readData();```
The role of the global handler window.onerror
is usually not to recover the script execution – that’s probably impossible in case of programming errors, but to send the error message to developers.
There are also web-services that provide error-logging for such cases, like https://errorception.com or http://www.muscula.com.
They work like this:
window.onerror
function.The try..catch
construct allows to handle runtime errors. It literally allows to “try” running the code and “catch” errors that may occur in it.
The syntax is:
try {
// run this code
} catch(err) {
// if an error happened, then jump here
// err is the error object
} finally {
// do in any case after try/catch
}
There may be no catch
section or no finally
, so shorter constructs try..catch
and try..finally
are also valid.
Error objects have following properties:
message
– the human-readable error message.name
– the string with error name (error constructor name).stack
(non-standard, but well-supported) – the stack at the moment of error creation.If an error object is not needed, we can omit it by using catch {
instead of catch(err) {
.
We can also generate our own errors using the throw
operator. Technically, the argument of throw
can be anything, but usually it’s an error object inheriting from the built-in Error
class. More on extending errors in the next chapter.
Rethrowing is a very important pattern of error handling: a catch
block usually expects and knows how to handle the particular error type, so it should rethrow errors it doesn’t know.
Even if we don’t have try..catch
, most environments allow us to setup a “global” error handler to catch errors that “fall out”. In-browser, that’s window.onerror
.


class: center, middle, main-title # Getting to know your data: Cleaning and Exploration These notes will show an overview of the process by which you can prepare your data for further analysis, as well as how you can further get to know your data. Some steps of this process are not fun at all, but they are an important part of the data science pipeline. --- ## Data Cleaning **Data Cleaning:** the process by which you "tame" your "wild" data. This is an important step of the process because it is at this step where *measurement* is determined. (e.g. "how many cigarettes per day do I define to be 'smoking'?") You may do the following steps during the data cleaning process: - **Convert** file format - e.g. JSON to CSV - **Rectangularize** your data - e.g. store in data frame (or other useful container) - **Clean up string** variables - e.g. remove "stop words" like "the," remove punctuation, keep only word stems - Convert **format** of variables for downstream use - e.g. convert dates to specific format - **Normalize** values of numerical data - e.g. standard deviation units - **Impute** missing values - **Merge** with other existing data sources - **Remove** outlier observations - e.g. by top- or bottom-coding aka *winsorizing* - **Fix typos** in numeric variables - e.g. `5.25` instead of `525` - **Browse** the data --- ## Data Exploration **Data Exploration:** the process by which you more fully inspect your data. Data cleaning and data exploration constitute an interative process. (Yet another reason to make sure you write code that is reproducible!) Data exploration includes the following steps: - Computing **descriptive statistics** - e.g. mean, variance, min, max, median, etc. - Creating **frequency tables** - e.g. to tell if a variable is continuous or discrete - Creating **transformations** of existing variables - e.g. `x^2`, `ln(x)`, etc. - Creating **new variables** from combinations of existing variables - e.g. `x*z`, `x*w*z`, etc. - This is also called "feature engineering" - **Visualizing** your data - e.g. charts, graphs, scatter plots, etc. - Running **preliminary models** - e.g. pairwise correlations, regressions, etc. - **Selecting subsamples** - e.g. throw out baby boomers because millenials are the population of interest --- ## Questions you should ask yourself Throughout the process of data cleaning/exploration, you should constantly be asking yourself the following questions: - What is my unit of analysis? - How am I measuring the phenomena I am attempting to research? - Do the variables mean what I think they should mean? - Does my data set have the expected number of observations? - What fraction of values are missing in my data? Is this what I would have expected? - Are variables named in such a way that if I were to give this data set to someone else, they would understand the contents of the data? - Are the variables I am interested in continuous or discrete? - Does anything about my data look *funny*? --- ## Normalization of (continuous) numerical data Often, it will be useful to normalize your data in specific ways. Why is it advantaeous to normalize numerical data? 1. It often greatly enhances numerical performance 1. It can help you interpret your model's results down the line (i.e. "A one-unit increase in X corresponds to a one-standard-deviation increase in Y") --- ### Z-score This is done by computing `z = (x-mu)/sigma` where `mu` is the sample average and `sigma` is the sample standard deviation. The resulting variable takes on values typically between -5 and +5, and each unit is interpreted as one standard deviation. **example** In education data, student test scores are often expressed in z-score units to facilitate "apples to apples" comparisons In data science applications, many ML algorithms require z-scored data to appropriately run. This is because unscaled data can sometimes cause numerical issues. Some ML packages will do this z-scoring for the user as part of the algorithm. --- ### max-min normalization This is done by normalizing the variable relative to its max and min. The transformed variable takes on values in [0,1]: `z = (x-min(x))/(max(x)-min(x))` The issue with this method is that if your data set has crazy outliers, 95% of the data will be clustered at 0.5 in the normalized variable. --- ### Sigmoidal normalization This is another way to transform a variable to fall in the (0,1) interval. This method is immune to outliers: `z = exp(x)/(1+exp(x))` or equivalently `z = 1/(1+exp(-x))` It's called *sigmoidal* because the function `f(x) = 1/(1+exp(-x))` is known as the sigmoid (or logistic) function. --- ### Hyperbolic tangent normalization If one wanted to normalize a variable to fall in the interval (-k,k), one can use the hyperbolic tangent function: `z = k*tanh(x)` This is a lot like the sigmoid function, only it goes from (-k,k) instead of (0,1). --- ## Discretization Sometimes, it's useful to convert a continuous variable into a discrete one. This can be done in a myriad of ways. (We won't cover these in detail, but think of how a histogram is built.) --- ## Other transformations It may also help to transform variables to fit your specific needs. One common transformation is the `log` transformation: `z = ln(x)` If you are examining earnings, sales, or some other nominal currency quantity, these distributions often are approximately log-normal. If you take the log of a log-normal distribution, you get back a normal distribution, which is very convenient to work with. In general, you should think "log-normal" if you see a variable that is: 1. continuous 1. always positive 1. has a lot of observations clustered around a small(ish) value 1. has a really, really long tail --- ## Imputation So you've got some missing values in your data. What can you do to fix them? - Listwise deletion - Mean (or mode) substitution - Regression (or k-nearest neighbors) matching - Multiple imputation - Bayesian methods - Create a binary variable indicating missingness and use it as a control in downstream models - Interpolate missing values (very useful for panel data!) --- ### Why are the values missing? The key to choosing an imputation scheme is knowing why the values are missing in the first place. Are they missing e.g. because users randomly had a glitch that kicked them off the website? Or are they missing because some users didn't feel like clicking "purchase" and instead logged off, leaving the product in their cart? There are three types of "missingness": 1. **Missing Completely At Random (MCAR)**: values are missing for completely random reasons. i.e. a weighted coin was flipped which determined whether the value made it into our data set - Think of this like a randomized experiment 1. **Missing At Random (MAR)**: values are not missing at random, but we can account for their missingness by using variables for which we have information - like a regression model which satisfies the unconfoundedness assumption 1. **Missing Not At Random (MNAR)**: values are missing for reasons that are not random, and which cannot fully be accounted for by other variables for which we have information - like an endogenous choice which is made based on utility maximization - **sample selection bias** - canonical example: only observe wages for people who are employed; employment is not randomly assigned - newer example: only observe tweets of twitter users; twitter accounts (and usage) not randomly assigned --- ### Listwise deletion If the values are **missing completely at random (MCAR)** then we can simply drop the entire offending row and our final results will not be biased. The downside is that we will lose statistical power (because we will have fewer observations) Also, if lots of variables are MCAR in different ways, this can drastically reduce the number of observations. --- ### Mean (or mode) substitution Another way to impute missing values is to fill in missings with the mean (if variable is continuous) or the mode (if variable is discrete). This is not a great way to fix the problem. On the one hand, the average (mode) is unchanged. On the other hand, the variance is severely deflated. --- ### Matching One can also impute by picking another observation for which the value is not missing, and which all other variables are as similar as possible. Essentially, we find a "donor" for the observation that is missing, and say "If the observations look similar enough, we can plug in the donor's non-missing value." We can use a number of ways to find the donor: OLS, k-nearest neighbors, random forest, etc. This method works great if values are MAR. It is important to keep in mind that these model-based imputation methods may understate the true variance of the distribution, so it is sometimes helpful to inject noise into the imputed values. --- ### Multiple imputation Multiple imputation is a multi-step process: 1. Impute values M different times (via any of the above methods) 1. With M different data sets, conduct your analysis on each data set 1. Consolidate analyses (e.g. by averaging) Example: `MICE` (Mulitple Imputation by Chained Equations) At the end of the day, most multiple imputation methods are variations on "matching" which requires MAR. --- ### Bayesian methods Another way to impute is to use Bayesian methods. The R package `MixedDataImpute` uses a state-of-the-art statistical model to impute missing values. Its performance exceeds that of MICE and other multiple imputation methods. --- ### Create binary variable for missing values My preferred way to impute is to create a new variable that is `1` when the values of `x` are missing, and `0` otherwise.To create this, I follow these two steps: 1. Create the variable (e.g. `m_x`) equal to 1 if `x` is missing, 0 otherwise. 1. Recode the missing values of `x` to be some constant value outside the support (e.g. 50) The key thing to remeber is that `x` now has a mass point at 50, so when computing summary statistics, you should exclude these observations. The nice thing about this is that you can, for example, run a regression and include `m_x` as a control variable, and it will estimate a separate effect for `x` for the group of values that are missing. --- ### Interpolation If one has repeated observations of the same unit, one can fill in the values by interpolating. Example from my research: - follow individuals over extended period of time - in some years (e.g. 2010), individuals don't report their earnings - but I can see that they are working at the same job in 2009 and 2011, and I see their earnings in those years - I can **interpolate** their 2010 earnings by taking the average of the 2009 and 2011 earnings **Note:** Interpolation requires having valid values on each boundary point. If you don't have this, then it's called *extrapolation* and it's much more prone to error. In my example above, if I observed earnings in 2009 and 2010, but not 2011, I would not be comfortable setting 2011 earnings to be the average of 2009 and 2010 because the individual may have gotten a promotion, etc. --- ## Data exploration: descriptive statistics Descriptive statistics (mean, median, variance, min, max) may seem "boring" but they are the easiest way for you to summarize your data. It's often helpful to generate a summary table that lists the descriptive statistics for each of the variables you are studying (either outcomes or controls). For example: | Variable | Obs. | Mean | Std. Dev. | Median | Min | Max | |--|--|--|--|--|--|--| | Sales | 15,147 | 13,456.50 | 16,579.81 | 10,500.00 | 501.00 | 165,789.00 | | Morning | 363,528 | 0.24 | 0.43 | 0.00 | 0.00 | 1.00 | | Afternoon | 363,528 | 0.36 | 0.48 | 0.00 | 0.00 | 1.00 | | Evening | 363,528 | 0.35 | 0.48 | 0.00 | 0.00 | 1.00 | | Night | 363,528 | 0.05 | 0.22 | 0.00 | 0.00 | 1.00 | | Income | 363,528 | 96,501.73 | 87,389.19 | 82,000.00 | 23,000.00 | 425,000.00 | | Age | 363,528 | 55.87 | 12.77 | 52.00 | 14.00 | 96.00 | | Female | 363,528 | 0.42 | 0.49 | 0.00 | 0.00 | 1.00 | Anything wrong with this table? Anything that jumps out at you? --- ## Data exploration: frequency tables It's often helpful to compute frequency tables of each of your variables that are discrete (categorical). This will help you visualize the distribution of these variables. For example: - Is the distribution of this three-category variable roughly uniform? - Or are 95% of the values in one of the three categories? --- ## Data exploration: preliminary models It often helps to run preliminary statistical models to see how your variables covary, how sensitive raw correlations are to inclusion of additional predictors, etc. - pairwise correlations (including rank correlations) - concordance indices (e.g. Jaccard similarity) - OLS - Logit, Probit, etc. We'll talk more about these next week --- ## Data visualization Commonly used data visualization types that are useful in getting to know your data: - box-and-whisker plot - scatter plot - histogram - kernel density plot - [binned scatter plots](https://michaelstepner.com/binscatter/binscatter-StataConference2014.pdf) (aka "binscatter") - line charts - maps - summary tables (tables are a visualization tool!) - word clouds (for textual data) - many others --- ## When to use various visuals? Different visualization tools can be used for different tasks: - Find outliers - Examine distribution of values - box-and-whisker, histogram, kernel density - Report correlations - scatter plot or binscatter (for two continuous variables) - plots by "facet" (for one continuous variable and one categorical variable) - Examine trends in time series data - line charts - Text trends - word clouds - word trees --- ## Coding visuals in R: ggplot2 See [here](http://r4ds.had.co.nz/data-visualisation.html) for a step-by-step guide on the basics of creating data visuals in R using `ggplot2`. R package for binscatters: [binscattr](https://github.com/paulgp/binscattr) (still in its infancy) --- ## Directory of visualization types (from Duke library) [This website](https://guides.library.duke.edu/datavis/vis_types) has a nice summary of types of visuals that may be helpful in telling your story. --- ## The OG data visualization
--- ## Beautiful visualization
More beautiful visualizations available at [r/dataisbeautiful](https://www.reddit.com/r/dataisbeautiful/) Comical opponent: [r/dataisugly](https://www.reddit.com/r/dataisugly/) - You don't want to end up on that site --- ## Be careful how you visualize!
Always make sure that your image conveys useful information --- ## Jupyter notebooks (in Python) created by Jason DeBacker (U of South Carolina) - [Static Visualizations](https://github.com/jdebacker/CompEcon_Fall17/blob/master/Visualization/StaticVisualization.ipynb) - [Dynamic Visualizations](https://github.com/jdebacker/CompEcon_Fall17/blob/master/Visualization/DynamicVisualization.ipynb) --- ## Economic mobility data used by DeBacker This module of the course covers data visualization tools. We'll learn these tools by studying economic mobility using data from the [Equality of Opportunity Project](http://www.equality-of-opportunity.org). [Where is the Land of Opportunity? The Geography of Intergenerational Mobility in the United States](https://eml.berkeley.edu/~saez/chetty-friedman-kline-saezQJE14mobility.pdf) --- ## Useful Links - [Matplotlib guide](http://pbpython.com/effective-matplotlib.html) - [Overview of Python visualization tools](http://pbpython.com/visualization-tools-1.html) - [A Dramatic Tour Through Python's Data Visualization Landscape](https://dsaber.com/2016/10/02/a-dramatic-tour-through-pythons-data-visualization-landscape-including-ggplot-and-altair/) - [A Detailed Matplotlib Example](https://www.dataquest.io/blog/making-538-plots/) - [Matplotlib Gallery](https://matplotlib.org/gallery.html) - [Seaborn Gallery](https://seaborn.pydata.org/examples/index.html) - [Bokeh Gallery](https://bokeh.pydata.org/en/latest/docs/gallery.html)


Bloom City 2Burgula Village, Shadnagar
A fine selection of residential plots for sale. Wonderful destination strategically chosen for its connectivity and potential for growth.


RESTAURANTS.com is a dynamic web application for restaurant search and
recommendation based on users' preferences (content-based
recommendation algorithm).
Back-End: Java servlets with RESTful APIs to handle HTTP requests and
responses; relational and NoSQL databases (MySQL, MongoDB) to capture
real restaurant data from Yelp API
Front-End: Interactive web page utilizing AJAX technology (with HTML,
CSS and JavaScript)


Audi reveals its second electric car, the E-Tron Sportback
Coming to Europe in 2020 with over 200 miles of range
by Sean O'KaneAudi just pulled the wraps off of the E-Tron Sportback, the company’s second electric car, at the 2019 LA Auto Show. Coming to Europe in the first half of 2020, the top-tier version of the new premium EV will offer up to 446 kilometers of range (277 miles) and is powered by dual electric motors with a total power output of 265kW, or around 350 horsepower. A slightly less powerful version of the Sportback with a smaller battery will start at €71,350 (around $79,000).
If some of those numbers sound familiar, it’s because the E-Tron Sportback will be built using the same electric drivetrain and battery as the E-Tron SUV Audi revealed last year. The company is simply now using the platform it developed for the original E-Tron to power a fastback-style sedan variant. Both E-Trons represent the first flagship vehicles of Audi’s forthcoming lineup of EVs, which is part of an even bigger push into the space by parent company Volkswagen.
Audi says the higher-spec version of its new electric car will come to the United States in the middle of 2020. When it does, the E-Tron Sportback will likely wind up with a far more conservative range figure, seeing as how the E-Tron SUV received a 204-mile estimate from the EPA. That said, Audi claims the sedan styling has resulted in a lower drag coefficient, and says it’s possible the vehicle will squeeze a few more miles out of the same 95kWh battery pack.
The E-Tron Sportback’s interior also mimics that of the E-Tron SUV. There’s a 12.3-inch digital instrument cluster behind the steering wheel, a 12.1-inch main touchscreen in the dashboard, and another 8.6-inch touchscreen below that for text input and climate controls. (Audi’s infotainment system also allows for voice controls, and Amazon Alexa is built in as well.)
Audi originally teased the E-Tron Sportback in concept form back in 2017, but not much has changed since then. The biggest difference is Audi chose a more standard grille on the final production version of the E-Tron Sportback over the concept version’s gaping maw. Some of the styling of the bodywork has been toned down a bit, too, though the overall shape of the car looks very similar. The production version will even have virtual mirrors like the concept, at least in Europe. (Virtual mirrors aren’t currently allowed in the US, but regulators are considering changing that rule.) It will also feature Audi’s new LED matrix headlights, which the company says can dynamically illuminate the road with ultra precision.
The E-Tron SUV has been relatively well-received in the few short months that it’s been available, and so it’s not hard to imagine the Sportback version meeting a similar fate. That said, the E-Tron SUV’s initial rollout did not go according to plan. The release of Audi’s first EV was delayed for months due to battery supply issues — a disruption that also reportedly pushed back production of the Sportback. Once the E-Tron SUV did hit the market, Audi had to recall hundreds of vehicles due to a battery fire risk. The company says it has since resolved both issues.


#include <uwicrp-module-sink.h>
UwIcrpSink class is used to represent the routing layer of a node.
Definition at line 65 of file uwicrp-module-sink.h.
◆ UwIcrpSink()
| UwIcrpSink::UwIcrpSink |
( |
| ) |
|
◆ ~UwIcrpSink()
| UwIcrpSink::~UwIcrpSink |
( |
| ) |
|
◆ command()
| int UwIcrpSink::command |
( |
int |
argc, |
|
|
const char *const * |
argv |
|
) |
| |
|
protectedvirtual |
TCL command interpreter.
It implements the following OTcl methods:
- Parameters
-
| argc | Number of arguments in argv. |
| argv | Array of strings which are the command parameters (Note that argv[0] is the name of the object). |
- Returns
- TCL_OK or TCL_ERROR whether the command has been dispatched successfully or not.
Definition at line 105 of file uwicrp-module-sink.cpp.
◆ getAckPktHeaderSize()
| static const int UwIcrpSink::getAckPktHeaderSize |
( |
| ) |
|
|
inlinestaticprotected |
◆ getDataPktHeaderSize()
| static const int UwIcrpSink::getDataPktHeaderSize |
( |
| ) |
|
|
inlinestaticprotected |
◆ getStatusPktHeaderSize()
| static const int UwIcrpSink::getStatusPktHeaderSize |
( |
| ) |
|
|
inlinestaticprotected |
◆ initialize()
| void UwIcrpSink::initialize |
( |
| ) |
|
|
protectedvirtual |
◆ initStatusPkt()
| void UwIcrpSink::initStatusPkt |
( |
Packet * |
p_old, |
|
|
Packet * |
p_new |
|
) |
| |
|
protectedvirtual |
Initializes a Status Packet previously allocated.
- Parameters
-
| Packet* | Pointer to a PT_UWICRP_STATUS Packet to use to retrieve the information to initialize the new packet. |
| Packet* | Pointer to a PT_UWICRP_STATUS Packet to initialize. |
Definition at line 221 of file uwicrp-module-sink.cpp.
◆ printIP()
| string UwIcrpSink::printIP |
( |
const uint8_t |
_ip | ) |
|
|
protectedvirtual |
Return a string with an IP in the classic form "x.x.x.x" converting an ns2 nsaddr_t address.
- Parameters
-
- Returns
- String that contains a printable IP in the classic form "x.x.x.x"
Definition at line 261 of file uwicrp-module-sink.cpp.
◆ recv()
| void UwIcrpSink::recv |
( |
Packet * |
p | ) |
|
|
protectedvirtual |
Performs the reception of packets from upper and lower layers.
- Parameters
-
| Packet* | Pointer to the packet will be received. |
Definition at line 144 of file uwicrp-module-sink.cpp.
◆ recvAsyncClMsg()
| int UwIcrpSink::recvAsyncClMsg |
( |
ClMessage * |
m | ) |
|
|
protectedvirtual |
◆ recvSyncClMsg()
| int UwIcrpSink::recvSyncClMsg |
( |
ClMessage * |
m | ) |
|
|
protectedvirtual |
Cross-Layer messages synchronous interpreter.
- Parameters
-
| ClMessage* | an instance of ClMessage that represent the message received |
- Returns
- 0 if successful.
Definition at line 80 of file uwicrp-module-sink.cpp.
◆ sendBackAck()
| void UwIcrpSink::sendBackAck |
( |
const Packet * |
p | ) |
|
|
protectedvirtual |
Creates an ack packet and sends it to the previous hop using the information contained in the header of the data packet passed as input parameter.
It is an ack to the previous hop, and not to the source of the packet.
- Parameters
-
| Packet* | Pointer to a Data packet to acknowledge. |
Definition at line 269 of file uwicrp-module-sink.cpp.
◆ ipAddr_
| uint8_t UwIcrpSink::ipAddr_ |
|
protected |
◆ numberofackpkt_
| long UwIcrpSink::numberofackpkt_ = 0 |
|
staticprivate |
◆ numberofstatuspkt_
| long UwIcrpSink::numberofstatuspkt_ = 0 |
|
staticprivate |
◆ printDebug_
| int UwIcrpSink::printDebug_ |
|
protected |
The documentation for this class was generated from the following files:


Presented by Milan Popović / @komita1981
PHP developer
Work for Navus Consulting Gmbh
I like to learn and share knowledge
Active member of PHP Srbija
Why Laravel?
Enables rapid development
Stable and well tested
Community support
Documentation
Learning resources
Easy to recruit developers
LTS
Why Laravel for quick API development?
DB Migration
DB seeding
Model factory
Form request
Testing
3rd Party Packages
Version control for you DB schema
Laravel Schema facade provides database agnostic support for creating and manipulating tables
// Create new migration
php artisan make:migration create_users_table
// Run migration
php artisan migrate
// Rollback migration
php artisan migrate
Sample/Test data for your DB
// Create new seeder
php artisan make:seeder UsersTableSeeder
// Run seeders
php artisan db:seed
// Run seeders v2
php artisan migrate --seed
// Run single seeder
php artisan db:seed --class=UsersTableSeeder
Default model attributes
Uses Faker for generating values
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'remember_token' => str_random(10),
];
});
Multiple Factory Types - multiple factories for the same Eloquent model class
$factory->defineAs(App\User::class, 'admin', function ($faker) use ($factory) {
$user = $factory->raw(App\User::class);
return array_merge($user, ['admin' => true]);
});
Attach relationships
$factory->define(App\Post::class, function ($faker) {
return [
'title' => $faker->title,
'content' => $faker->paragraph,
'user_id' => function () {
return factory(App\User::class)->create()->id;
},
'user_type' => function (array $post) {
return App\User::find($post['user_id'])->type;
}
];
});
Using factories
// Create three App\User instances...
$users = factory(App\User::class, 3)->make();
// Create three App\User "admin" instances...
$users = factory(App\User::class, 'admin', 3)->make();
// Create App\User user with given name...
$user = factory(App\User::class)->make([
'name' => 'Abigail',
]);
// Persisting Factory Models
$user = factory(App\User::class)->create();
Special class for validating request params and authorizing
Each class has rules() (returns array) and authorize() (returns boolean) methods
Type Hinting in Controller methods
public function rules()
{
return [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
];
}
public function authorize()
{
$commentId = $this->route('comment');
return Comment::where('id', $commentId)
->where('user_id', Auth::id())->exists();
}
PHPUnit is included out of the box
Laravel is built with testing in mind
It's also ships with convenient helper methods
Uses Mockery as mock object framework
Using Migrations - DatabaseMigrations trait
DatabaseTransactions - DatabaseTransactions trait
Model Factories
SeeInDatabase helper
seeInDatabase($table, array $data, $connection = null)
NotSeeInDatabase helper
notSeeInDatabase($table, array $data, $connection = null)
Seed (seed($class = 'DatabaseSeeder')
// Main method
public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
// There are also methods for other http verbs
public function post($uri, array $data = [], array $headers = [])
// Visit the given URI with a JSON request.
public function json($method, $uri, array $data = [], array $headers = [])
{
// removed code from original method
$content = json_encode($data);
$headers = array_merge([
'CONTENT_LENGTH' => mb_strlen($content, '8bit'),
'CONTENT_TYPE' => 'application/json',
'Accept' => 'application/json',
], $headers);
}
// Call a named route and return the Response.
public function route($method, $name, $routeParameters = [], $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
assertResponseOk()
assertResponseStatus($code)
seeStatusCode($status)
seeHeader($headerName, $value)
seeJsonEquals($data)
seeJsonStructure($structure, $responseData)
seeJsonContains($data, $negate)
seeJsonSubset($data)
Dingo API
Dredd
Repositories
CORS
"require": {
"dingo/api": "1.0.*@dev"
}
Provides set of tools to easily and quickly build your own API
Requires Laravel 5.1+ or Lumen 5.1+ and PHP 5.5.9+
Much of the package comes preconfigured
Use your .env file to configure most of the package
Finer tuning of the package will require publishing the configuration file
Configure:
Name
Default Version
Authentication Provider
Throttling / Rate Limiting (Disabled by default)
Response Transformer (Fractal is the default)
Response Format (JSON and a JSON response format is registered by default)
Error Format
// To avoid complications with your main application routes this package utilizes its own router.
$api = app('Dingo\Api\Routing\Router');
$api->version(
'v1',
function ($api) {
$api->post('register', 'SampleApi\Http\Controllers\RegisterController@process');
$api->post('login', 'SampleApi\Http\Controllers\LoginController@login');
$api->get('blocks', 'SampleApi\Http\Controllers\BlocksController@getAll');
$api->get('blocks/{id}', 'SampleApi\Http\Controllers\BlocksController@get');
$api->post('blocks', 'SampleApi\Http\Controllers\BlocksController@create');
$api->put('blocks/{id}', 'SampleApi\Http\Controllers\BlocksController@update');
$api->delete('blocks/{id}', 'SampleApi\Http\Controllers\BlocksController@delete');
}
);
//protected with JWT
$api->version(
'v1',
['middleware' => 'api.auth'],
function ($api) {
$api->post('logout', 'Ematerials\Api\Http\Controllers\LoginController@logout');
}
);
There's a number of different ways to return responses
Use Response Builder
Provides a fluent interface to easily build a more customizable response
Generally used in conjunction with transformers.
Use the Dingo\Api\Routing\Helpers trait
use Dingo\Api\Routing\Helpers;
use Illuminate\Routing\Controller;
class ApiController extends Controller
{
use Helpers;
}
public function show($id)
{
$block = $this->block->find($id);
return $this->response->array($block->toArray());
}
public function show($id)
{
$block = $this->block->find($id);
return $this->response->item($block, new BlockTransformer);
}
public function show($id)
{
$blocks = $this->block->find($id);
return $this->response->collection($blocks, new BlockTransformer);
}
public function show($id)
{
$blocks = $this->block->find($id);
return $this->response->pagination($blocks, new BlockTransformer);
}
// Responding With No Content
return $this->response->noContent();
// Responding With Created Response
return $this->response->created();
// A generic error with custom message and status code.
return $this->response->error('This is an error.', 404);
// A not found error with an optional message as the first parameter.
return $this->response->errorNotFound();
// There are also errorBadRequest, errorForbidden, errorInternal, errorUnauthorized
Adding Additional Headers
return $this->response->item($user, new UserTransformer)->withHeader('X-Foo', 'Bar');
Adding Meta Data
return $this->response->item($user, new UserTransformer)->addMeta('foo', 'bar');
// set an array of meta data instead of chaining multiple method calls
return $this->response->item($user, new UserTransformer)->setMeta($meta)
Setting Response Status Code
return $this->response->item($user, new UserTransformer)->setStatusCode(200);
Easily and consistently transform objects into an array
Type-cast integers and booleans, include pagination results, and nest relationships
Fractal is the default transformation layer used by Dingo
public function __construct()
{
$this->availableIncludes = [
'presentations',
'block_settings',
];
$this->defaultIncludes = [
'block_settings',
];
}
public function transform(Block $block)
{
return [
'id' => (int)$block->id,
'name' => $block->name,
'start_at' => $block->start_at->toDateTimeString(),
'ends_at' => $block->ends_at->toDateTimeString(),
'code' => $block->code,
];
}
public function includePresentations(BlockModel $block)
{
return $this->collection($block->presentations, new PresentationTransformer());
}
public function includeBlockSettings(BlockModel $block)
{
return $this->item($block->blockSettings, new BlockSettingsTransformer());
}
Extend the base API form request class
Implement your own class
Dingo\Api\Exception\ValidationHttpException should be thrown
HTTP Basic (Dingo\Api\Auth\Provider\Basic)
JSON Web Tokens (Dingo\Api\Auth\Provider\JWT)
OAuth 2.0 (Dingo\Api\Auth\Provider\OAuth2)
Custom Authentication Providers
API Blueprint Documentation
Annotate API controllers
Generate documentation using the Artisan command
But...
“
Dredd is a language-agnostic command-line tool for validating API documentation written
in API Blueprint format against its backend implementation.
”
Dredd reads your API description
Validates whether API replies with expected responses
Continuous Integration Support
Hooks — a glue code for each test setup and teardown
Use of Gavel.js library
Do not install dredd manually on Homestead - use after.sh
PHP Dredd hook handler
Provides a bridge between the Dredd API Testing Framework and PHP environment
"require-dev": {
"ddelnano/dredd-hooks-php": "~1.0.0",
}
Loading db fixtures
Cleanup after test step or steps
Handling authentication and sessions
Passing data between transactions (saving state from responses to stash)
Modifying request generated from blueprint
Changing generated expectations
Setting custom expectations
Debugging via logging stuff
require __DIR__ . '/../../../vendor/autoload.php';
$app = require __DIR__ . '/../../../bootstrap/app.php';
$app->make(\Illuminate\Contracts\Console\Kernel::class)->bootstrap();
Artisan::call('migrate');
$user = factory(\Ematerials\Api\Models\User::class)->create([
'email' =><EMAIL_ADDRESS>]);
Hooks::beforeEach(function (&$transaction) use ($app) {
$app->make('db')->beginTransaction();
});
Hooks::afterEach(function (&$transaction) use ($app) {
$app->make('db')->rollback();
});
Hooks::afterAll(function (&$transaction) use ($app) {
Artisan::call('migrate:rollback');
});
Hooks::before('Authentication > Logout', function (&$transaction) {
$transaction->skip = true;
});
Hooks::after('Block > Show', function (&$transaction) {
// Some actions to do
});
dredd documentation.apib
http://localhost:8001
--server "php -S <IP_ADDRESS>:8001 -t public/"
--language vendor/bin/dredd-hooks-php
--hookfiles tests/dredd/hooks/hookfile.php
"require": {
"bosnadev/repositories": "0.*"
}
Container where data access logic is stored
Hides the details of data access logic from business logic
interface RepositoryInterface
{
public function all($columns = array('*'));
public function paginate($perPage = 15, $columns = array('*'));
public function create(array $data);
public function update(array $data, $id);
public function delete($id);
public function find($id, $columns = array('*'));
public function findBy($field, $value, $columns = array('*'));
}
use App\Repositories\FilmRepository as Film;
class FilmsController extends Controller
{
/**
* @var Film
*/
private $film;
public function __construct(Film $film)
{
$this->film = $film;
}
public function index()
{
return \Response::json($this->film->all());
}
}
Basic actions are just enough for simple querying
Added CriteriaInterface
interface CriteriaInterface
{
public function skipCriteria($status = true);
public function getCriteria();
public function getByCriteria(Criteria $criteria);
public function pushCriteria(Criteria $criteria);
public function applyCriteria();
}
class LengthOverTwoHours implements CriteriaInterface
{
public function apply($model, Repository $repository)
{
$query = $model->where('length', '>', 120);
return $query;
}
}
use App\Repositories\Criteria\Films\LengthOverTwoHours;
use App\Repositories\FilmRepository as Film;
class FilmsController extends Controller
{
/**
* @var Film
*/
private $film;
public function __construct(Film $film)
{
$this->film = $film;
}
public function index()
{
$this->film->pushCriteria(new LengthOverTwoHours());
return \Response::json($this->film->all());
}
}
"require": {
"barryvdh/laravel-cors": "^0.7.2"
}
Allows you to send CORS headers with ACL-style per-url configuration.
Supports Laravel & Lumen
- Laravel documentation
- Why choose Laravel
- Using Repository


Before Change
"""
for codeobj_class in codeobj_classes:
G = NeuronGroup(10, "v:1", codeobj_class=codeobj_class)
mon = StateMonitor(G, "v", record=True,
codeobj_class=codeobj_class)
indices = np.array([3, 2, 1, 1, 4, 5])
times = np.array([6, 5, 4, 3, 3, 1]) * ms
SG = SpikeGeneratorGroup(10, indices, times,
codeobj_class=codeobj_class)
After Change
net = Network(SG, s_mon)
net.run(5*ms)
for idx in xrange(5):
generator_spikes = sorted([(idx, time) for time in times[indices==idx]])
recorded_spikes = sorted([(idx, time) for time in s_mon.t["i==%d" % idx]])
assert generator_spikes == recorded_spikes


Customer Id
Name
Country
1
John Hammond
United States
2
Mudassar Khan
India
3
Suzanne Mathews
France
4
Robert Schidner
Russia


Tickets and Seating
Reserving and Picking Up Tickets
Parents of seniors will be sent a letter regarding tickets containing the following important information:
- The number of tickets per graduating student will be announced
- Ticket pickup date is to be announced
- Parents are required to show photo ID and sign for the tickets when they pick them up. Students will NOT be allowed to pick up tickets.
- Remember that everyone is required to have a ticket for entrance to graduation.
Ticket Collection Procedures and Seating at Community of Christ Auditorium
- Graduation announcements ordered through Jostens are NOT tickets to the ceremony.
- A ticket is not a reserved seat. A ticket gains one person per ticket entrance to the building. Tickets do not assign seats in the auditorium.
- No one may gain admittance to the auditorium without a ticket in hand. One ticket per seat. Toddlers and infants require their own ticket if they are not in the lap of an adult - age limit for lap-seating is younger than 3 years of age.
- Once a guest’s ticket stub has been collected and he/she needs to exit the building; a ticket stub will be given to the guest in order to exit and return. The stub will be collected upon return. Again no person will gain access to the building without a ticket in hand.
- There is no "saving seats" at commencement. Guests will be reminded that they cannot save seats and noncompliance to this requrest will be referred to security.
- ONCE THE CEREMONY HAS BEGUN, LATE GUESTS WILL BE DIRECTED TO BALCONY SEATING ONLY
- Guests cannot stand in the aisles because of the violation of fire codes and safety.
- Guests who shout or use noisemakers will be escorted out. The most important part of the
Handicapped Seating (wheelchair accessibility)
- Handicapped Seating
(wheelchair accessibility) is available.
The west entrance to the Auditorium has wheelchair accessibility and seating. This is the main entrance as most of the parking is available on the West Side. A circle drop-off area is at the west entrance. The auditorium has other handicapped seating on the floor level East Side. Elevators and ramps are available inside the auditorium. Parking is restricted to areas designated on the map as "Auditorium Parking" only.
Community of Christ Auditorium Access
- The auditorium has four entrances: north, south, east, and west. The west entrance is the main parking area (off Crysler St.) of the auditorium. Reserved seating for graduates is provided. Uniformed police officers as well as off duty LSPD officers and a hired event security company will assist in crowd control, emergencies and traffic safety. See the
directions and maps page for
diagrams.


Google tightens political ads policy to thwart abuse
San Francisco – Google on Wednesday updated how it handles political ads as online platforms remain under pressure to avoid being used to spread misleading information intended to influence voters.
The internet company said its rules already ban any advertiser, including those with political messages, from lying. But it is making its policy clearer and adding examples of how that prohibits content such as doctored or manipulated images or video.
"It's against our policies for any advertiser to make a false claim – whether it's a claim about the price of a chair or a claim that you can vote by text message, that election day is postponed, or that a candidate has died," Google ads product management vice president Scott Spencer said in an online post.
Examples of banned ad material included ads or links to information making demonstrably false claims that could undermine voter trust or participation in elections.
"Of course, we recognise that robust political dialogue is an important part of democracy, and no one can sensibly adjudicate every political claim, counterclaim, and insinuation," Spencer said.
"So we expect that the number of political ads on which we take action will be very limited – but we will continue to do so for clear violations."


You can use Scapy to make your own automated tools. You can also extend Scapy without having to edit its source file.
If you have built some interesting tools, please contribute back to the mailing-list!
You can easily use Scapy in your own tools. Just import what you need and do it.
This first example take an IP or a name as first parameter, send an ICMP echo request packet and display the completely dissected return packet:
#! /usr/bin/env python
import sys
from scapy.all import sr1,IP,ICMP
p=sr1(IP(dst=sys.argv[1])/ICMP())
if p:
p.show()
This is a more complex example which does an ARP ping and reports what it found with LaTeX formating:
#! /usr/bin/env python
# arping2tex : arpings a network and outputs a LaTeX table as a result
import sys
if len(sys.argv) != 2:
print "Usage: arping2tex <net>\n eg: arping2tex <IP_ADDRESS>/24"
sys.exit(1)
from scapy.all import srp,Ether,ARP,conf
conf.verb=0
ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=sys.argv[1]),
timeout=2)
print r"\begin{tabular}{|l|l|}"
print r"\hline"
print r"MAC & IP\\"
print r"\hline"
for snd,rcv in ans:
print rcv.sprintf(r"%Ether.src% & %ARP.psrc%\\")
print r"\hline"
print r"\end{tabular}"
Here is another tool that will constantly monitor all interfaces on a machine and print all ARP request it sees, even on 802.11 frames from a Wi-Fi card in monitor mode. Note the store=0 parameter to sniff() to avoid storing all packets in memory for nothing:
#! /usr/bin/env python
from scapy.all import *
def arp_monitor_callback(pkt):
if ARP in pkt and pkt[ARP].op in (1,2): #who-has or is-at
return pkt.sprintf("%ARP.hwsrc% %ARP.psrc%")
sniff(prn=arp_monitor_callback, filter="arp", store=0)
For a real life example, you can check Wifitap.
If you need to add some new protocols, new functions, anything, you can write it directly into Scapy source file. But this is not very convenient. Even if those modifications are to be integrated into Scapy, it can be more convenient to write them in a separate file.
Once you’ve done that, you can launch Scapy and import your file, but this is still not very convenient. Another way to do that is to make your file executable and have it call the Scapy function named interact():
#! /usr/bin/env python
# Set log level to benefit from Scapy warnings
import logging
logging.getLogger("scapy").setLevel(1)
from scapy.all import *
class Test(Packet):
name = "Test packet"
fields_desc = [ ShortField("test1", 1),
ShortField("test2", 2) ]
def make_test(x,y):
return Ether()/IP()/Test(test1=x,test2=y)
if __name__ == "__main__":
interact(mydict=globals(), mybanner="Test add-on v3.14")
If you put the above listing in the test_interact.py file and make it executable, you’ll get:
# ./test_interact.py
Welcome to Scapy (<IP_ADDRESS>beta)
Test add-on v3.14
>>> make_test(42,666)
<Ether type=0x800 |<IP |<Test test1=42 test2=666 |>>>


You can zoom into the graph by moving outwards and inwards with two finders.
You can scroll horizontally by swiping left and right with one finger.
Double tap on the graph to restore default position and zoom level.
You can tap on points in the graph to get the exact values at this position.
There is a menu in the upper right corner of the graph, which lets you choose different options for this graph, such as display a trend line.


Are you eligible?
First, you'll need to meet our essential criteria, which includes having the right to work in the UK. Beyond that, we'll check things like your eyesight and physical fitness. We'll also expect you to pass a basic maths test and demonstrate the personal qualities we're looking for, when you come in for an assessment day.
These tests aren't just to make the selection process easier. They're designed to make sure you have the right skills and attitude to get the most from the role. You can get a sense of what each test involves by downloading the practice tests on the links below.


Username:
Password:
Game genres
Choose your favorite genre to meet like-minded people
I am a
Women
Man
Gamer
I am looking for a
Man
Women
Gamer
For and by gamers
Find your player 2
Organized events


JavaScript is disabled on your browser.
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev Letter
Next Letter
Frames
No Frames
All Classes
A
B
C
D
F
G
I
K
L
M
N
P
R
S
T
W
D
delete(Action)
- Method in class com.ex.services.
ActionService
delete(Creature)
- Method in class com.ex.services.
CreatureService
delete(DnDClass)
- Method in class com.ex.services.
DnDClassService
delete(Key)
- Method in class com.ex.services.
KeyService
delete(PlayerCharacter)
- Method in class com.ex.services.
PlayerCharacterService
delete(Room)
- Method in class com.ex.services.
RoomService
delete(Rope)
- Method in class com.ex.services.
RopeService
delete(Species)
- Method in class com.ex.services.
SpeciesService
delete(Spell)
- Method in class com.ex.services.
SpellService
delete(Torch)
- Method in class com.ex.services.
TorchService
delete(Weapon)
- Method in class com.ex.services.
WeaponService
DnDClass
- Class in
com.ex.pojos.player
DnDClass()
- Constructor for class com.ex.pojos.player.
DnDClass
DnDClass(String, int, int, int, int, int, int, List<Weapon>, List<Spell>)
- Constructor for class com.ex.pojos.player.
DnDClass
DnDClassController
- Class in
com.ex.controllers
DnDClassController()
- Constructor for class com.ex.controllers.
DnDClassController
DnDClassController(DnDClassService)
- Constructor for class com.ex.controllers.
DnDClassController
DnDClassMongoRepository
- Interface in
com.ex.repositories
DnDClassService
- Class in
com.ex.services
DnDClassService()
- Constructor for class com.ex.services.
DnDClassService
DnDClassService(DnDClassMongoRepository)
- Constructor for class com.ex.services.
DnDClassService
DnDClassTest
- Class in
com.ex.pojos.player
DnDClassTest()
- Constructor for class com.ex.pojos.player.
DnDClassTest
A
B
C
D
F
G
I
K
L
M
N
P
R
S
T
W
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev Letter
Next Letter
Frames
No Frames
All Classes


SHADOW OF THE VAMPIRE (2000) / ** 1/2
Directed by E Elias Merhige. Screenplay by Steven Katz. Starring John Malkovich, Willem Dafoe, Cary Elwes. Running time: 90 minutes. Rated AA by the MFCB. Reviewed on April 8th, 2001.
By SHANNON PATRICK SULLIVAN
Though it may seem hard to believe, movies have now been around for more than a century. One of the interesting phenomena accompanying this venerability is that the dawn of film history has begun to pass into modern mythology; names like Valentino and Griffiths seem as ancient and as far removed from the present day as Abraham Lincoln and Queen Victoria. As a result, cinema's early years have become fair game for speculative fiction: stories that wonder "what if" things had been just a little different.
"Shadow Of The Vampire" is just such a movie, depicting the making of the 1922 German classic "Nosferatu", one of the earliest and most renowned horror pictures. Although "Nosferatu" does not quite date from the start of the film era, its mystique was amplified when the estate of Bram Stoker successfully sued its makers, claiming (quite rightly) that "Nosferatu" was a thinly-veiled reworking of Stoker's seminal novel "Dracula". An effort was then made to purge all extant prints of "Nosferatu", and while some copies have (fortunately) survived, it has helped give the movie a legend all its own.
Even without it, "Nosferatu" would still be an ideal subject for this kind of film. It is, after all, a vampire movie made in the very Eastern European locales where vampire myths first arose. It features a rivetting, convincing performance by Max Schreck as the bloodsucking Count Orlok (or Orlock, a spelling disparity given sly reference -- one I can only assume was intentional -- by the makers of "Shadow"). And so effective was the make-up transforming Schreck into the baleful Orlok that it stands up even by today's standards.
In "Shadow", then, writer Steven Katz asks the obvious question: what if Max Schreck really was a vampire -- or, more specifically, "a vampire playing an actor playing a vampire"?
To explore the notion, Katz focusses on director FW Murnau (played by John Malkovich), who is painted here as a zealous, almost fanatical artist. Katz's point is clear: the medium of film can be every bit as life-draining as a vampire, and the director's fangs are far more deadly than those of any creature of the night. Murnau stalks about his sets and locations, often clad in dark glasses, looking every bit as fearsome as his star. For Murnau, there is nothing more important than the realisation of his vision. He will take any measures necessary to ensure that "Nosferatu" is completed, even making a deal with the devil; and, for all intents and purposes, he has.
In the fictional reality of "Shadow Of The Vampire", Murnau has sought out a genuine vampire (Willem Dafoe) living in the wilds of Hungary. Murnau christens him "Max Schreck" and pretends he is an old acting acquaintance. He explains Schreck's idiosyncrasies and bizarre appearance by claiming that Schreck is a consummate performer who totally immerses himself in his role, to the extent of not even removing his "costume". Schreck, meanwhile, has his own motivations, and soon begins to prey upon the cast and crew of "Nosferatu", putting not just the production at risk, but also the lives of all those involved.
Malkovich is terrific as the obsessed Murnau, but it is Dafoe who steals the show. His realisation of the vampire is unforgettable, neatly capturing the essence of the real Schreck's performance and extending it naturally to flesh out a full character. Dafoe completely eschews the suave modern vampires of Anne Rice and Joss Whedon; his Schreck is barely removed from vermin, constantly clicking his enormous claws and thinking of little more than his hunger. It would be an oversight not to also mention the work of make-up designer Pauline Fowler and her team. They have done a phenomenal job recreating the original "Nosferatu" design and, moreover, making Schreck seem like a real, (un)living creature.
Under the guidance of director E Elias Merhige, "Shadow" successfully transports us back to the 1920s. This is particularly evident in Merhige's use of clips from "Nosferatu" itself. Rather than contrasting with Merhige's own footage, this material fits into "Shadow" seamlessly. And while "Shadow" is ultimately a dark comedy, Merhige does not let this interfere with the fearful, oppressive atmosphere he crafts: the two aspects of the picture work together to impact the viewer instead of diminishing each other.
Consider, for example, a terrific sequence in which Schreck joins other crewmembers who are drinking around a fire. The crew, still believing that Schreck is merely an actor who has immersed himself in his vampire "character", asks his opinion of "Dracula". Schreck responds that he views the novel as a tragedy, and cites the seemingly innocuous scene where Dracula prepares his dining room for Harker's arrival. Schreck views this with sadness because he sees it as a reminder of all that Dracula (and, by extension, himself) has forgotten in the centuries since he lost his humanity. And then, if this weren't bizarre enough, he grabs a bat out of the air and feasts upon it. Should we laugh? Should we be frightened? Merhige successfully inspires both emotions, no mean feat to be sure.
It is unfortunate, then, that "Shadow" gradually loses its way as the movie progresses. Like a particularly grotesque "Saturday Night Live" sketch, Katz and Merhige seem to run out of ideas of where to take their premise next. As a result, the film's final reel feels distinctly fragmented, with ideas and new characters (such as Cary Elwes' cinematographer, introduced when Schreck feeds on his predecessor) coming seemingly at random.
The ending is particularly disappointing, its unrelenting savagery delivering a poor climax to an original and intelligent concept. It also represents a major deviation from established movie history. The best speculative fiction leaves us with the lingering suspicion that maybe, just maybe, such events really could have taken place. "Shadow Of The Vampire" just makes us glad that they didn't.
Copyright © 2001 Shannon Patrick Sullivan. Archived at The Popcorn Gallery, http://www.physics.mun.ca/~sps/movies/ShadowOfTheVampire.html
| Shannon Patrick Sullivan |<EMAIL_ADDRESS>| +----------------------------------+----------------------------------+ / Popcorn Gallery Movies Reviews www.physics.mun.ca/~sps/movies.html \ | Doctor Who: A Brief History of Time (Travel) /drwho.html |
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


Marky Mark is a quick and simple wrapper for Google maps V3. I wrote this library for one reason and one reason only… to simplify the creation of map markers in google maps! It’s meant to be extremely simple and doesn’t do advanced things, but it does the following things well:
Remember if you need more advanced features, just drop down into the actual API code, it’s really not that hard, just gets repetitive sometimes, this small library is meant to alleviate some of the more trivial things like setting Markers and customizing Info Windows
function init () { // find more map options at : http://code.google.com/apis/maps/documentation/v3/reference.html#MapOptions var map_opts = { zoom: 14, center: set_latlng(coordinates.USA.MN), mapTypeId: google.maps.MapTypeId.ROADMAP }; map = create_map("map",map_opts); set_markers([ { address: 'Powderhorn Park, Minneapolis, MN', map: map }, { address: 'Corcoran Park, Minneapolis, MN', map: map, center: true, icon: "images/aim_16.png", info: "#special-house" }, { address: 'Sibley Park, Minneapolis, MN', map: map, info: "Sibley Park" } ]); } window.onload = function(){ init(); }
You can also use marky_mark to retrieve markers from a remote json file. NOTE: the following example requires JQuery.
set_remote_markers("addresses.json",remote_map);
{ "locations": [ { "address": "Powderhorn Park, Minneapolis, MN", "info": "Remote Request to Powderhorn Park" }, { "address": "Corcoran Park, Minneapolis, MN", "center": "true", "icon": "images/aim_16.png", "info": "Remote request for Corcoran" }, { "address": "Sibley Park, Minneapolis, MN", "info": "Remote Request for Sibley Park" } ] }


Well, we went to leave Fajardo, and guess what - the engine
would not start again. The anchor was partway up and
Kris had a major breakdown and long story short - the anchor
went back down and a mechanic was called to fix the engine.
We could not get one that day, but first thing the next morning
he came out, and got it running.
The moral of the engine story is - its a boat - what did you
expect?
Kris's worked with the fuel injector - which of course caused a
wiring problem in the relay area (it wasn't the relay after all,
but a corroded wire underneath the relay) - which of course led
us to not getting fuel and the fuel filter clogged because the
rubber primer bulb decayed and plugged the fuel line. And
of course these all happened simultaneously making logical
thought process to problem solving all but worthless. Hey
- its a boat!
Anyway, with a now functioning engine - somewhat - there is
still something fishy going on - we moved to Culebra.
This is an island just east of Puerto Rico, governed by Puerto
Rico. We went snorkeling on a reef and it was the largest
and most diverse one yet. It had taken some bad damage in
a hurricane and is still recovering, but it was beautiful
snorkeling. We saw several turtles and a small pair of
rays gliding along gracefully, and numerous small colorful fish.
The other night we went to dinner at "Zaco's Tacos" and had a
great meal. We ate on the outdoor shaded patio, and the
kids played in the tire swing and watched the chickens running
around the deck. The food was delicious, and the dessert -
mud pie and southern style banana pudding pie was the best I
have ever eaten.
There are several boats in the harbor, and of course, several
that never leave as Culebra is one of those spots that is easy
to get to and hard to leave as it is just so nice.
03/25/2013 - Fixing the engine again???? Culebra
The harbor at Culebra |
The dinghy dock and restaurant of same name |
Our choice for dinner |
Cleaning up crumbs from the diners |
The island of Culebra |
|


| Package | idv.cjcat.stardust.threeD.particles |
| Class | public class Particle3D |
| Inheritance | Particle3D Particle |
| Property | Defined by | ||
|---|---|---|---|
| alpha : Number
The alpha value of the particle.
| Particle | ||
| collisionRadius : Number
The collision radius of the particle.
| Particle | ||
| color : uint
Particle color.
| Particle | ||
| dictionary : Dictionary
Dictionary for storing additional information.
| Particle | ||
| initAlpha : Number
The normal alpha value upon birth.
| Particle | ||
| initLife : Number
The initial life upon birth.
| Particle | ||
| initScale : Number
The normal scale upon birth.
| Particle | ||
| isDead : Boolean
Whether the particle is marked as dead.
| Particle | ||
| life : Number
The remaining life of the particle.
| Particle | ||
| mask : int
The mask value of the particle.
| Particle | ||
| mass : Number
The mass of the particle.
| Particle | ||
| omegaX : Number | Particle3D | ||
| omegaY : Number | Particle3D | ||
| omegaZ : Number | Particle3D | ||
| recyclers : Dictionary | Particle | ||
| rotationX : Number | Particle3D | ||
| rotationY : Number | Particle3D | ||
| rotationZ : Number | Particle3D | ||
| scale : Number
The scale of the particle.
| Particle | ||
| screenVX : Number | Particle3D | ||
| screenVY : Number | Particle3D | ||
| screenX : Number | Particle3D | ||
| screenY : Number | Particle3D | ||
| sortedIndexIterator : ParticleIterator
The sorted index iterator.
| Particle | ||
| target : *
Custom user data of the particle.
| Particle | ||
| vx : Number | Particle3D | ||
| vy : Number | Particle3D | ||
| vz : Number | Particle3D | ||
| x : Number | Particle3D | ||
| y : Number | Particle3D | ||
| z : Number | Particle3D |
| omegaX | property |
public var omegaX:Number
| omegaY | property |
public var omegaY:Number
| omegaZ | property |
public var omegaZ:Number
| rotationX | property |
public var rotationX:Number
| rotationY | property |
public var rotationY:Number
| rotationZ | property |
public var rotationZ:Number
| screenVX | property |
public var screenVX:Number
| screenVY | property |
public var screenVY:Number
| screenX | property |
public var screenX:Number
| screenY | property |
public var screenY:Number
| vx | property |
public var vx:Number
| vy | property |
public var vy:Number
| vz | property |
public var vz:Number
| x | property |
public var x:Number
| y | property |
public var y:Number
| z | property |
public var z:Number
| Particle3D | () | constructor |
public function Particle3D()
| init | () | method |
public final override function init():void


Flute
Create new report
Report properties
Name
Metric pattern
Time windows
+
days
hours
minutes
seconds
Max
99.999%ile
99.99%ile
99.9%ile
99%ile
50%ile
Mean
Create
Delete
Check to confirm


Running Skyline in a Python 2.7 virtualenv
Note
This is no longer supported with the EOL of Python 2 but this documentation remains for anyone still using py2 until it does not work any longer.
Running Skyline in a Python virtualenv is the recommended way to run Skyline. This allows for Skyline apps and all dependencies to be isolated from the system Python version and packages and allows Skyline be be run with a specific version of Python and as importantly specific versions of the dependencies packages.
The possible overhead of adding Python virtualenv functionality to any configuration management is probably worth the effort in the long run.
sudo
Use sudo
appropriately for your environment wherever necessary.
HOWTO Python virtualenv Skyline
Dependencies
Building Python versions from the Python sources in Python virtualenv requires the following system dependencies:
RedHat family
yum -y install epel-release
yum -y install autoconf zlib-devel openssl-devel sqlite-devel bzip2-devel \
gcc gcc-c++ readline-devel ncurses-devel gdbm-devel compat-readline5 \
freetype-devel libpng-devel python-pip wget tar git
Debian family
apt-get -y install build-essential
apt-get -y install autoconf zlib1g-dev libssl-dev libsqlite3-dev libbz2-dev \
libreadline6-dev libgdbm-dev libncurses5 libncurses5-dev libncursesw5 \
libfreetype6-dev libxft-dev python-pip wget tar git
virtualenv
Regardless of your OS as long as you have pip installed you can install virtualenv. NOTE: if you are using a version of Python virtualenv already, this may not suit your setup.
virtualenv must be >= 15.0.1 and <16.0.0 due to some recent changes in pip, setuptools and virtualenv, see Recent changes in the pip environment section in Requirements for more details.
This is using your system pip at this point only to install virtualenv.
pip install 'virtualenv==15.2.0'
openssl (optional)
Depending on your OS if it is a bit older you may need to compile Python with a newer version of openssl.
openssl_version="1.1.1g"
mkdir /opt/openssl
mkdir -p "/usr/local/openssl/openssl-${openssl_version}"
cd /opt/openssl
wget -q "https://www.openssl.org/source/openssl-${openssl_version}.tar.gz"
tar -zxvf "openssl-${openssl_version}.tar.gz"
cd "/opt/openssl/openssl-${openssl_version}"
/opt/openssl/openssl-${openssl_version}/config --prefix=/usr/local/openssl/openssl-${openssl_version} --openssldir=/usr/local/openssl/openssl-${openssl_version}
make
make install
Python version
Note
Python-2.7.14 should still work as well, but all documentation has been updated to use Python-2.7.16.
Below we use the path /opt/python_virtualenv
, which you can substitute
with any path you choose. We are going to use the Python-2.7.16 source and
build and install an isolated Python-2.7.16, this has no effect on your system
Python:
PYTHON_VERSION="2.7.16"
PYTHON_MAJOR_VERSION="2.7"
PYTHON_VIRTUALENV_DIR="/opt/python_virtualenv"
mkdir -p "${PYTHON_VIRTUALENV_DIR}/versions/${PYTHON_VERSION}"
mkdir -p "${PYTHON_VIRTUALENV_DIR}/projects"
cd "${PYTHON_VIRTUALENV_DIR}/versions/${PYTHON_VERSION}"
wget -q "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz"
tar -zxvf "Python-${PYTHON_VERSION}.tgz"
cd ${PYTHON_VIRTUALENV_DIR}/versions/${PYTHON_VERSION}/Python-${PYTHON_VERSION}
./configure --prefix=${PYTHON_VIRTUALENV_DIR}/versions/${PYTHON_VERSION}
make
# Optionally here if you have the time or interest you can run
# make test
make altinstall
You will now have a Python-2.7.16 environment with the Python
executable: /opt/python_virtualenv/versions/2.7.16/bin/python2.7
Create a Skyline Python virtualenv
A word of warning relating to pip, setuptools and distribute if you have opted not to use the above as you have Python virtualenv already. As of virtualenv 15.0.1 the pip community adopted the new pkg_resources _markerlib package structure, which means the following in the virtualenv context:
distribute cannot be installed
pip must be >=8.1.0
setuptools must be >=20.2.2
Once again using Python-2.7.16:
PYTHON_VERSION="2.7.16"
PYTHON_MAJOR_VERSION="2.7"
PYTHON_VIRTUALENV_DIR="/opt/python_virtualenv"
PROJECT="skyline-py2716"
cd "${PYTHON_VIRTUALENV_DIR}/projects"
virtualenv --python="${PYTHON_VIRTUALENV_DIR}/versions/${PYTHON_VERSION}/bin/python${PYTHON_MAJOR_VERSION}" "$PROJECT"
Make sure to add the /etc/skyline/skyline.conf
file - see
Installation


Previous: Tilde O-> Octal, Up: FORMAT Radix Control
This is just like ~D but prints in hexadecimal radix (radix 16) instead of decimal. The full form is therefore ~mincol,padchar,commachar,comma-intervalX.
~X binds *print-escape* to false, *print-radix* to false, *print-base* to 16,
and *print-readably* to false.


{% extends './base.html' %} {% load static %} {% block other_navs %}
During the process of creating or updating an account on our website or any of our other services, you provide us (Simple Portfolio) with your personal information like; your name, pictures, birth date, e-mail address, etc. And by so doing, you thereby explicitly grant Simple Portfolio, the access to obtain, keep and necessarily use such personal information and possibly other additional information from your social media account(s) which may aswell include your friends and contacts lists. You agree that any information which you provide pursuant to this EULA will be accurate and complete, and that you will update such information promptly following any changes or when required.
In addition, certain personal information may be used by us (Simple Portfolio) or made available publicly, without such publication directly and explicitly disclosing your identity. You are aware and agree that in some cases it may be possible to analyse such information and trace your identity, and we (Simple Portfolio) shall not be held responsible in such event. Specifically, you hereby grant Simple Portfolio permission and access to display the name and/or logo of you or your company as part of its customer/user list.
The information collected by us (Simple Portfolio) will be held and used in accordance with the Privacy Policy. Simple Portfolio will not sell, lease, rent or otherwise disclose such information other than as stated in the Privacy Policy, provided that we (Simple Portfolio) and its affiliates may use such information, among other things for identification purposes, for the purpose of providing you information, alerts and reports, for improving the Website/Software, products and services provided by Simple Portfolio, for conducting the services and for other communications with you. You acknowledge and agree that Simple Portfolio may use the services of third parties for the above mentioned purposes and therefore share your information with such third parties. You acknowledge and agree that certain personal information which is collected in accordance with the foregoing provisions will be available if necessary to other users of the Website/Software or third parties which were approved by you or your organization, to the extent the license granted hereunder was granted to your organization (including without limitation, your username and profile picture, etc). You are aware that we (Simple Portfolio) may be required, pursuant to applicable laws, rules and regulation, to disclose certain of your information, and you hereby irrevocably and unconditionally agree to any such disclosure.
Like many other websites, we use “cookies” (a small file sent to your computer by a website to allow the website to store information which uniquely identifies you) or other similar software to collect data in order to assist you or other users and provide you/them with a more personal experience visits in our Website. You can always disable cookies at your browser, but please note that if you do so, some (or all) of the features and functionality of our Service may not be available to you.
We may occasionally inform you of new features, functionality, services and products, and other promotions from Simple Portfolio or its sibling (including parent and or child) websites and or companies as well as send you periodic updates, tips and newsletters/emails. You may opt-out of receiving these correspondences from us by following the unsubscribe instructions included in each Newsletter/email. Note that regardless of your election, we may continue sending you notices to update you on revisions/additions made to this Privacy Policy or to our Terms of Service and other Core Security or Privacy related changes/additions made on our website or other products and services.
Thank you for your consent and approval.


Prez rule revoked in Maharashtra at 5.47 am
IMAGE: The notification revoking President's rule in Maharashtra. Photograph: ANI
The Bharatiya Janata Party and Nationalist Congress Party government took charge in Maharashtra on Saturday after the President's rule, imposed in the state a fortnight ago, was revoked at 5.47 am.
According to a home ministry notification, President Ram Nath Kovind issued the proclamation for revocation of the central rule on Saturday morning.
The gazette notification to this effect was issued by Union Home Secretary Ajay Kumar Bhalla at 5.47 am.
BJP's Devendra Fadnavis and NCP's Ajit Pawar took oath as the chief minister and deputy chief minister of Maharashtra after the President's rule was revoked.


JS9 Imexam Plugins
These tasks perform various types of image analysis using a rectangular box
surrounding the selected region. That is, the actual region shape is ignored
and the analysis reflects a rectangular section of image pixels. The selected
section can be rotated for box, ellipse, and line regions. For a line region,
the width is the length of the line, while the height is set to the value of
the JS9.globalOpts.imexamLineHeight parameter (default is 1).
Region Statistics
A rectangular box of image pixels is selected and some statistical
values are computed from the data.
Notes
- Totcounts and bscounts
Totcounts are the total counts in the box region, while bscounts
has the calculated background (see below) subtracted from the total.
- Background and Noise
The background and noise are obtained from the outer 4 pixel-wide
perimeter of the selected region. The background value is the median
value of this area and the noise value is the RMS.
- Centroid
The centroid is obtained by locating the brightest 9 pixel box and
computing the centroid of the background subtracted data about this point.
- FWHM
The FWHM is estimated from the image moments about the centroid, assuming
a Gaussian distribution.
X and Y Projection Plot
A rectangular box of image pixels is selected and the projection along
the region's X (width) or Y (height) axis is plotted. The sum,
average, or median of the projected pixels may be selected.
Radial Profile
A rectangular box of image pixels is selected and the pixels values
are plotted against their respective radii. A Gaussian is fit to the
radial profile data and the result is also plotted. The fitted
results of the 4 parameter fit are displayed with the plot.
The center pixel from which the radii are computed is determined from the
background subtracted centroid taken about the brightest 9 pixels in the data
(same centroid as is displayed in the region stats plugin).
Pixel Value Histogram
A rectangular box of image pixels is selected and a histogram of the
values is plotted. The selected pixels are binned into 250 bins
between the minimum and maximum value found in the selected region.
Encircled Energy
A rectangular box of image pixels is selected and background subtracted. The
analysis radius is determined from the region as follows:
- circle: region radius
- annulus: max annulus radius
- box: half the average height an width
- ellipse: average axis radius
- polygon: half the average of the height and width of polygon bounding box
The values within the analysis radius are binned in 1 pixel radial bins. The
bins are normalized by the sum of all pixels and the result is plotted.
The background is obtained as the median from the outer 4 pixel wide perimeter of the
selected region.
The center pixel from which the encircled energy is computed is determined from
the background subtracted centroid taken about the brightest 9 pixels in the
data (same centroid as is displayed in the region stats plugin).
The 50 and 80 percent encircled energy points are displayed over the plot.
3d Surface Plot
A rectangular box of image pixels is selected and plotted as a surface.


Inputs
Source
No sources loaded yet...
Address
From
Until
Load JSON
Create table
Export to csv
API url:
Table
Date
ETH earned
Price per ETH on date
USD payout equiv (on date)
Current price of ETH
Capital gains if sold today (not account for transaction fees)


2 killed when car crashes into second floor of building in New Jersey
by WPIX StaffTOMS RIVER, N.J. — Two people were killed when the sports car they were in went off the road and crashed into a building in New Jersey early Sunday morning, police said.
According to authorities, the Porsche went off the road around 6:30 a.m. local time and went airborne, sending it crashing into the second story of a commercial building on Hooper Avenue in Toms River, across the street from Hooper Avenue Elementary School.
Police confirmed the driver and a passenger in the car were both dead as a result of the crash.
The commercial building was vacant at the time of the crash, authorities said.
The deadly crash is under investigation and the identities of the deceased are not known at this time.
This story was originally published by Mark Sundstrom on WPIX in New York.


0.2.x(checkbox.react 自带label)
default
default
focus
disabled
focus checked
checked
disabled checked
face-checkbox--themes-partial
default
focus
disabled
focus checked
checked
disabled checked
face-checkbox--themes-green (实验themes)


{% extends 'base.html' %} r {% block content %}
Ever had a pitch that you needed to get out to investors? This platform is for making those pitches, 60 seconds. 1 Pitch, we might show the world what the next new thing is!
{{pitch.category}}
{{pitch.description}}
{{pitch.author.username}}


Cheese on cheese on cheese is the perfect way to describe this type of crust.
we have the perfect type of crust for you and it's the cheesiest around!
6000 RWF
+ Neapolitan Crust
The perfect thickness of the crust and the heavenly airiness of each bite takes you straight to a little pizzeria in Roma.
LIMITED EDITION
7000 RWF
+ Thin Crust
It has a nice crunch to it, and the pizza's toppings shine on their own.
So, if you judge a pizza by the quality of its toppings, this is the best type of pizza crust for you.
7000 RWF
+ Flatbread
For people who want to eat pizza while staying bougie, flatbread is your perfect cover!


This is me, Mark Parnell.
Likisha Dukes-Parnell is my wife.
Dillon Parnell is my son.
Felicity Parnell is my daughter
Lyfe Dukes-Parnell is my son.


Across: 1. Would this cause me harm? (6) 5. Force tears in to build structures (8) 9. Blimey, free gold found in passage! (8) 10. Junkie did surprising turnabout (6) 11. More and more followed Racine one by one (12) 13. Formerly working with the church (4) 14. Dido draws strange things! (8) 17. I test one piece of meat (8) 18. Almost crash on curves (4) 20. William and I gain information in Nice — secret information? (12) 23. River enters the sea by a harbour (6) 24. Able to walk to get a malt bun (8) 25. Agreed when dispatched to journalist (8) 26. Recaps about tricky situation (6) Down: 2. Eager to go back after silver (4) 3. Cruel crimes involving the French (9) 4. Edit left-wing part of play (6) 5.  See drain next to the kerb (8) 7. Artist and scholar produce gas (5) 8. Goodness, Terry gets caught in former church! (10) 12. Minions’ accounts reveal very tired people! (10) 15. Bank clerk takes in Ravi but I leave with gypsy (9) 16. Strong growth found behind St Albans semi (8) 19. I snub a god! (6) 21. Throw out 49 into river (5) 22. Cut a really good deal! (4)


surveillance health data []. Health information public antibody infection viral Surveillance United virus disease hepatitis surveys used diseases laboratory serological clinical influenza cases infectious sera collection immunization tests persons population prevalence {border-style Accessed Disease infections px;} reporting studies â€" #ffffff;} Information antibodies collected Control HIV States blood serum survey type use new programs systems testing NHANES States, early human need sample specific CDC National Public World [], case conducted different example, measles methods sources time vaccine Sept analysis diseases, healthcare primary viruses age diseases. groups immunity national occurrence sampling seroprevalence support using years available countries developed developing epidemiologic example number poliomyelitis specimens state test vaccination various (e.g., antigen based cohort community development identify important network program provided records reports seroepidemiology uses .Centers However, Infect New Prevention. Rep Table associated data, drug electronic evaluation geographic identification infection, networks outbreaks px; related report research resources response samples selected techniques useful usually variety {font-family .collab: AIDS Centers Global allow clinics communities control critical current designed determine effectiveness font-size genetic improve incidence method outbreak participants past patterns populations provide providers representative similar study surveillance. tested users virus, Exchange HIE Program Risk Sources Viral York areas available, biological certain children chronic data. death departments design disease, distribution double; duration epidemic epidemiology evidence exchange global high-risk importance including infections. international levels long medical monitor objective patients physicians quality results reveal risk routine safety seroepidemiologic serosurveys state, surveillance, target total Data Department HBV HIEs Human Immunization Laboratory Med Morb Mortal Network Organ States. Survey University Wkly accurate acute aged application border-color border-width communication compared countries, countries. described diagnostic documented following higher history household illness impact indicated influenza, laboratories local local, major markers means measles, measurement molecular natural positive programs, provides purposes. rate recognized reportable reported secondary select selection solid; special status stored susceptibility targeted transmission vaccines wide {font-style {font-weight (i.e., Advantages Behavioral Center European Exchanges Hepatitis, Notifiable Organization Prevalence San Sentinel Seroepidemiology Services Study Syndromic advantage agent agents alert and/or antibody, assessment availability bold burden called cases. clusters collect components concept conditions consistent country courier; created cumulative deaths defined detect em; established ethical experience facilities follow-up frequency households identified implemented improving include included includes individuals infections, injection laboratories, list low material measure microtiter mortality national, nationally neutralization norovirus occurred order outbreaks. particular pattern permits persons. physician polio populations, practices presence principles probability pt;} purpose purposes received region rubella self-reported sentinel serostudies services simple standardized started strains surveillance; systematic time. treatment trends types value varicella vital year


| created | 2019-04-20T18:30:24Z |
|---|---|
| begin | 2019-04-16T00:00:00Z |
| end | 2019-04-17T00:00:00Z |
| path | src/sys |
| commits | 8 |
| date | 2019-04-16T04:04:19Z | |||
|---|---|---|---|---|
| author | dlg | |||
| files | src/sys/net/if.c | log | diff | annotate |
| src/sys/net/if_var.h | log | diff | annotate | |
| src/sys/net/ifq.c | log | diff | annotate | |
| src/sys/net/ifq.h | log | diff | annotate | |
| message |
have another go at tx mitigation the idea is to call the hardware transmit routine less since in a lot of cases posting a producer ring update to the chip is (very) expensive. it's better to do it for several packets instead of each packet, hence calling this tx mitigation. this diff defers the call to the transmit routine to a network taskq, or until a backlog of packets has built up. dragonflybsd uses 16 as the size of it's backlog, so i'm copying them for now. i've tried this before, but previous versions caused deadlocks. i discovered that the deadlocks in the previous version was from ifq_barrier calling taskq_barrier against the nettq. interfaces generally hold NET_LOCK while calling ifq_barrier, but the tq might already be waiting for the lock we hold. this version just doesnt have ifq_barrier call taskq_barrier. it instead relies on the IFF_RUNNING flag and normal ifq serialiser barrier to guarantee the start routine wont be called when an interface is going down. the taskq_barrier is only used during interface destruction to make sure the task struct wont get used in the future, which is already done without the NET_LOCK being held. tx mitigation provides a nice performanace bump in some setups. up to 25% in some cases. tested by tb@ and hrvoje popovski (who's running this in production). ok visa@ |
| date | 2019-04-16T09:40:21Z | |||
|---|---|---|---|---|
| author | dlg | |||
| files | src/sys/dev/pci/if_myx.c | log | diff | annotate |
| message |
make sff page reads work on little endian archs too. like amd64. some modules seem to need more time when waiting for bytes while here. hrvoje popovski hit the endian issue |
| date | 2019-04-16T11:42:56Z | |||
|---|---|---|---|---|
| author | dlg | |||
| files | src/sys/dev/pci/if_myx.c | log | diff | annotate |
| message |
i2c reads are more reliable a byte at a time. reading all 256 at a time was a nice idea, but meant page 0xa2 wasnt appearing like it should. this follows what freebsd does more closely too. |
| date | 2019-04-16T13:15:31Z | |||
|---|---|---|---|---|
| author | kettenis | |||
| files | src/sys/arch/arm64/dev/simplebus.c | log | diff | annotate |
| src/sys/arch/arm64/dev/simplebusvar.h | log | diff | annotate | |
| message |
Prevent attaching drivers to devices for which we attached a driver early. ok patrick@, dlg@, visa@ |
| date | 2019-04-16T13:15:32Z | |||
|---|---|---|---|---|
| author | yasuoka | |||
| files | src/sys/kern/uipc_socket2.c | log | diff | annotate |
| message |
Use the actual cluster size instead of fixed MCLBYTES for the condition in sb_compress(). Currently the actual cluster size might be 9KB even if the mtu is 1500, in this case a lot of memory space had been wasted, since sbcompress() doesn't compress because of previous condition. ok dlg claudio |
| date | 2019-04-16T13:16:06Z | |||
|---|---|---|---|---|
| author | kettenis | |||
| files | src/sys/arch/arm/simplebus/simplebus.c | log | diff | annotate |
| src/sys/arch/arm/simplebus/simplebusvar.h | log | diff | annotate | |
| message |
Prevent attaching drivers to devices for which we attached a driver early. ok patrick@, dlg@, visa@ |
| date | 2019-04-16T14:32:44Z | |||
|---|---|---|---|---|
| author | patrick | |||
| files | src/sys/arch/arm64/arm64/pmap.c | log | diff | annotate |
| message |
When entering kernel pages uncached we need to make sure to flush the caches. If the physical page was previously used by userland it is likely that this page is still in the cache and writing to the newly mapped page could result in unexpected behaviour. ok kettenis@ |
| date | 2019-04-16T18:03:07Z | |||
|---|---|---|---|---|
| author | patrick | |||
| files | src/sys/dev/pci/ppb.c | log | diff | annotate |
| message |
When we encounter ppb(4)s that are not configured we allocate a range of bus numbers from the parent's bus extent. On detach, which can happen with hotplug-able devices, we should free those busses. ok kettenis@ |


This project is experimental and not an official Neos CMS project
Switzerland
France
Germany
Switzerland
France
Germany
Switzerland
France
Germany
Switzerland
France
Germany
Confirm
Publish
Did you love Neos?
Delete
Delete
Confirm
Publish
Did you love Neos?
Delete
Delete
required
required
pdf
readonly
computed