Google Protocol Buffers (AKA protobuf) is a popular data serialization scheme used for communication protocols, data storage, etc. There are implementations are available for almost every popular language. The focus points of this scheme are brevity (data is encoded in a very size-efficient manner) and extensibility (one can add keys to the structure, while keeping it readable in previous version of software).
Protobuf uses semi-self-describing encoding scheme for its
messages. It means that it is possible to parse overall structure of
the message (skipping over fields one can't understand), but to
fully understand the message, one needs a protocol definition file
(.proto
). To be specific:
.proto
file provides info on
which symbolic field names these field tags map to.sint32
vs uint32
vs some enum, or string
from bytes
), but
it's enough information to determine how many bytes to
parse. Interpretation of the value should be done according to the
type specified in .proto
file.This page hosts a formal specification of Google Protocol Buffers (protobuf) using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.
All parsing code for C# generated by Kaitai Struct depends on the C# runtime library. You have to install it before you can parse data.
The C# runtime library is available in the NuGet Gallery. Installation instructions can also be found there.
Parse a local file and get structure in memory:
var data = GoogleProtobuf.FromFile("path/to/local/file.bin");
Or parse structure from a byte array:
byte[] someArray = new byte[] { ... };
var data = new GoogleProtobuf(new KaitaiStream(someArray));
After that, one can get various attributes from the structure by accessing properties like:
data.Pairs // => Key-value pairs which constitute a message
// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
using System.Collections.Generic;
namespace Kaitai
{
///
/// Google Protocol Buffers (AKA protobuf) is a popular data
/// serialization scheme used for communication protocols, data storage,
/// etc. There are implementations are available for almost every
/// popular language. The focus points of this scheme are brevity (data
/// is encoded in a very size-efficient manner) and extensibility (one
/// can add keys to the structure, while keeping it readable in previous
/// version of software).
///
/// Protobuf uses semi-self-describing encoding scheme for its
/// messages. It means that it is possible to parse overall structure of
/// the message (skipping over fields one can't understand), but to
/// fully understand the message, one needs a protocol definition file
/// (`.proto`). To be specific:
///
/// * "Keys" in key-value pairs provided in the message are identified
/// only with an integer "field tag". `.proto` file provides info on
/// which symbolic field names these field tags map to.
/// * "Keys" also provide something called "wire type". It's not a data
/// type in its common sense (i.e. you can't, for example, distinguish
/// `sint32` vs `uint32` vs some enum, or `string` from `bytes`), but
/// it's enough information to determine how many bytes to
/// parse. Interpretation of the value should be done according to the
/// type specified in `.proto` file.
/// * There's no direct information on which fields are optional /
/// required, which fields may be repeated or constitute a map, what
/// restrictions are placed on fields usage in a single message, what
/// are the fields' default values, etc, etc.
///
/// <remarks>
/// Reference: Source
/// </remarks>
public partial class GoogleProtobuf : KaitaiStruct
{
public static GoogleProtobuf FromFile(string fileName)
{
return new GoogleProtobuf(new KaitaiStream(fileName));
}
public GoogleProtobuf(KaitaiStream p__io, KaitaiStruct p__parent = null, GoogleProtobuf p__root = null) : base(p__io)
{
m_parent = p__parent;
m_root = p__root ?? this;
_read();
}
private void _read()
{
_pairs = new List<Pair>();
{
var i = 0;
while (!m_io.IsEof) {
_pairs.Add(new Pair(m_io, this, m_root));
i++;
}
}
}
///
/// Key-value pair
///
public partial class Pair : KaitaiStruct
{
public static Pair FromFile(string fileName)
{
return new Pair(new KaitaiStream(fileName));
}
public enum WireTypes
{
Varint = 0,
Bit64 = 1,
LenDelimited = 2,
GroupStart = 3,
GroupEnd = 4,
Bit32 = 5,
}
public Pair(KaitaiStream p__io, GoogleProtobuf p__parent = null, GoogleProtobuf p__root = null) : base(p__io)
{
m_parent = p__parent;
m_root = p__root;
f_wireType = false;
f_fieldTag = false;
_read();
}
private void _read()
{
_key = new VlqBase128Le(m_io);
switch (WireType) {
case WireTypes.Varint: {
_value = new VlqBase128Le(m_io);
break;
}
case WireTypes.LenDelimited: {
_value = new DelimitedBytes(m_io, this, m_root);
break;
}
case WireTypes.Bit64: {
_value = m_io.ReadU8le();
break;
}
case WireTypes.Bit32: {
_value = m_io.ReadU4le();
break;
}
}
}
private bool f_wireType;
private WireTypes _wireType;
///
/// "Wire type" is a part of the "key" that carries enough
/// information to parse value from the wire, i.e. read correct
/// amount of bytes, but there's not enough informaton to
/// interprete in unambiguously. For example, one can't clearly
/// distinguish 64-bit fixed-sized integers from 64-bit floats,
/// signed zigzag-encoded varints from regular unsigned varints,
/// arbitrary bytes from UTF-8 encoded strings, etc.
///
public WireTypes WireType
{
get
{
if (f_wireType)
return _wireType;
_wireType = (WireTypes) (((WireTypes) (Key.Value & 7)));
f_wireType = true;
return _wireType;
}
}
private bool f_fieldTag;
private int _fieldTag;
///
/// Identifies a field of protocol. One can look up symbolic
/// field name in a `.proto` file by this field tag.
///
public int FieldTag
{
get
{
if (f_fieldTag)
return _fieldTag;
_fieldTag = (int) ((Key.Value >> 3));
f_fieldTag = true;
return _fieldTag;
}
}
private VlqBase128Le _key;
private object _value;
private GoogleProtobuf m_root;
private GoogleProtobuf m_parent;
///
/// Key is a bit-mapped variable-length integer: lower 3 bits
/// are used for "wire type", and everything higher designates
/// an integer "field tag".
///
public VlqBase128Le Key { get { return _key; } }
///
/// Value that corresponds to field identified by
/// `field_tag`. Type is determined approximately: there is
/// enough information to parse it unambiguously from a stream,
/// but further infromation from `.proto` file is required to
/// interprete it properly.
///
public object Value { get { return _value; } }
public GoogleProtobuf M_Root { get { return m_root; } }
public GoogleProtobuf M_Parent { get { return m_parent; } }
}
public partial class DelimitedBytes : KaitaiStruct
{
public static DelimitedBytes FromFile(string fileName)
{
return new DelimitedBytes(new KaitaiStream(fileName));
}
public DelimitedBytes(KaitaiStream p__io, GoogleProtobuf.Pair p__parent = null, GoogleProtobuf p__root = null) : base(p__io)
{
m_parent = p__parent;
m_root = p__root;
_read();
}
private void _read()
{
_len = new VlqBase128Le(m_io);
_body = m_io.ReadBytes(Len.Value);
}
private VlqBase128Le _len;
private byte[] _body;
private GoogleProtobuf m_root;
private GoogleProtobuf.Pair m_parent;
public VlqBase128Le Len { get { return _len; } }
public byte[] Body { get { return _body; } }
public GoogleProtobuf M_Root { get { return m_root; } }
public GoogleProtobuf.Pair M_Parent { get { return m_parent; } }
}
private List<Pair> _pairs;
private GoogleProtobuf m_root;
private KaitaiStruct m_parent;
///
/// Key-value pairs which constitute a message
///
public List<Pair> Pairs { get { return _pairs; } }
public GoogleProtobuf M_Root { get { return m_root; } }
public KaitaiStruct M_Parent { get { return m_parent; } }
}
}


| DOSE: |
repeated |
inhaled |
Ether |
I was taking an organic chemistry class at the university. We had one lab experiment involving grignard reactions. Anyways, the reaction required the use of 99.5% pure A.C.S. grade anhydrous diethyl ether. I managed to take home about two 300mL vials of this nice anesthetic. Me and my roommate started huffing.
What we did was just open the vial put a paper towel folded in fourths on it and turn it over to saturate a small circle in the center of the towel. We would then exhale sharply, hold the paper towel over our mouths and inhale deeply and hold for as long as possible.
The first thing I notice about ether is that it smells really bad... and it feels cold and 'chemically' when it hits my lungs. It smells like turpentine or gasoline. After we inhaled a few times from the paper towel we noticed effects akin to nitrous oxide. All we got were some 'wah-wah' sounds and a slight loss of coordination. No spectatular hallucinations or dreams, more like a generalized numbing of the mind and senses. Maybe we've done nitrous too many times to really feel psychedelic from ether or maybe we were doing it wrong... Anyhow, I tried huffing for every breath until my entire jar was gone (about 25 consecutive breaths of turpentine nastyness) and felt nothing more than I would from two whippets of nitrous oxide.
The worst part about ether is 'ether breath' for 12-24 hours after I finish doing ether, my breath and mouth reek of ETHER.  In the movie 'Fear and Loathing in Las Vegas' they go into a casino and they let them in...
My suggestion to anyone who wants to get messed up, do nitrous instead. For those people who want to do it to check it off their list of 'cool' exotic drugs that they have done, be my guest but be prepared for nothing spectacular and a horrible aftertaste that just lingers on.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Loading ...
Climate change doesn't mean it's always hot outside, or that the world will warm uniformly. The average temperature of the United States was below 20th century historical averages as recently as February 2015. You can use the following visualization to check the temperature anomaly levels for the contiguous United States or the state you live in. Data ranges from 1895 to 2015. Years marked in red are the ten most recent years. Hover over a line to see data for that year. (Note: does not include Alaska or Hawaii. Average anomaly for a year is the average of the monthly averages for that year.)
Notice that averages temperature anomalies by decade can vary widely by state. Decades where the average temperature anomaly was at or above 0.5 degrees are marked in red. Again, Data ranges from 1895 to 2014. Hover over a line to see data for that decade. (Note: 1890s only show average for the five years available. 2010s only show average for the six years available. Average anomaly for a decade is the average of the monthly averages for that decade.)


The Fringes application
This is an application written in Python for fringe pattern
analysis. A fringe pattern is a two-dimensional (2D) image that
modulates phase information. Its basic model is the following:
\[I(x,y) = a(x,y) + b(x,y)\cos(\phi(x,y))\]
where \(a(x,y)\) is the background illumination, \(b(x,y)\)
the constrast or modulation term and \(\phi(x,y)\) is the
modulating phase.
Here we present the documentation of modules that conform the
Fringes application.
fringes module
| platform: | Unix, Mac OSX |
| sinopsys: | Main module. |
This is the main module that executes the fringes program.
-
fringes.main(argv)
Starts the fringes application.
When the application is started, it is shown the graphic user interface
| Parameters: | argv – argument list passed by user. |
gui module
| platform: | Unix, MacOs X |
| sinopsys: | Graphic User interface |
This module defined the classes of objects that are used in the user interface.
mainwindow module
| platform: | Unix, MacOS X |
| sinopsys: | Main window. |
The main window of the graphic user interface.
The graphic user interface is composed by the following:
- The menu.
It get acces to different commands.
- The view area.
Here it is shown the images that are processed and results.
-
class gui.mainwindow.MainWindow(parent=None)
This is the main window of the user interface.
The user interface interacts with the user. The main window has menus that
let user do actions or execute commands. Actions are enabled when the
conditions for executing an action are present. For example, you can not
apply some kind of process if there is not any data present. This behaivor
is implemented by using some kind of a state machine.
The state machine works in the folliwing way: The aplication has states
are constrain that enable or disable some actions from the user interface.
When an action is executed, it stablishs the state that this action
produces. For example, when user execute an action like open file, when
the file is opened and its conted loaded the action will produce a
data loaded state. This state is a constrains that will enable or
disable other actions.
An action is a command to be executed by the user. Then, most actions has
a dialog that interacts with the user to set parameters for the command
being executed.
User loads data for being processed. When the user loads data, this data is
treated as a document. Then, a document represents the data on which the
user is working on.
Protected attributes
-
_state
type: Constrains
Has the current state of the application.
-
_actionDialog
type: ActionDialog
Reference to the current action dialog executed.
-
_doc
type: Document
Reference to the current document
-
MainWindow.__init__(parent=None)
Constructs the main window.
| Parameters: | parent – The parent window of this main window.
Usually you pass parent=None in most cases.
|
-
MainWindow.connectSignals()
Connects the signals and slots of user actions.
User actions are accesed usually from a graphic menu. When user selects
an action, this actions emits a signal that is catched by an slot.
Then, an slot is a function that executes the action.


6 major ways that shopping has changed over the last decade, from the death of the mall to virtual dressing rooms
by Shoshy Ciment, Business Insider US- Shopping has changed a lot in the last 10 years.
- The rise and Amazon and e-commerce are just a few factors that have forced traditional retailers to change the way they function.
- From virtual and augmented reality and technological improvements to new e-commerce channels, here are six major ways shopping has changed in the last decade.
- Sign up for Business Insider’s retail newsletter, The Drive-Thru, to get more stories like this in your inbox.
- Visit Business Insider’s homepage for more stories.
Shopping is different today than it was 10 years ago.
In the last decade, shopping has gone through a serious evolution that was in no small way impacted by the rise of e-commerce, Amazon, and augmented and virtual reality, as well as the decline of the department store.
“E-commerce giant Amazon got one component right of the shopping experience – they focused on access, ease and convenience when customers wanted it,” Leesa Wytock, the group director of experience at global brand strategy firm Siegel+Gale, told Business Insider in an email.
The Amazon threat is just one of the factors spurring this shopping evolution. With the retail apocalypse ripping through the US, more than 9,100 stores are expected to close in 2019. Malls across the country are dying as department stores like Macy’s and Sears, once important anchors for mall foot traffic, are closing down for good.
Stores and brands are being propelled into a new era of shopping, one where brick-and-mortar stores must adapt to survive.
Business Insider consulted with Wytock and Brian Byer, the vice president and general manager of Blue Fountain Media, to find the six biggest changes to shopping in the last decade.
Here’s what they said:
1. Malls have been dying.
Mass store closures are crippling shopping centers. More than 9,100 stores are expected to close in 2019.
Source: Business Insider
Between 20% to 25% of malls will close by 2022, according to a report done by Credit Suisse in 2017.
Source: Business Insider, Business Insider
2. Online shopping has taken off.
Online shopping overtook general merchandise sales (including department store sales) for the first time ever in February, according to the US Census Bureau.
Source: Business Insider
Major companies like Target and Walmart rely on online channels in addition to in-store sales.
And companies that have failed to understand online channels for growth have suffered because of it.
Bed Bath & Beyond, for example, has been accused of failing to adapt to compete with online sellers.
3. The growth of Amazon has forced companies to adapt.
“E-commerce giant Amazon got one component right of the shopping experience — they focused on access, ease and convenience when customers wanted it,” Wytock said.
Retailers have utilized different tactics to compete. Kohl’s announced a partnership with Amazon in 2017 to accept returns for the e-commerce giant in its stores, a move that boosted traffic nearly 24% in the three weeks after the partnership began, data from inMarket revealed.
“The move aimed to lure more people to Kohl’s locations and give Amazon a physical presence to simplify the return process,” Wytock said.
Source: Business Insider
4. The shipping wars have intensified.
Amazon said in April that it would cut its Prime two-day shipping guarantee to just one day.
Source: Business Insider
Walmart said in May that it would launch free, next-day shipping on orders costing at least $35.
Source: Business Insider
Other companies like Target have instituted similar programs to cut delivery time.
Source: Target
5. Buy online, pick up in store — or BOPIS — is growing.
This option helps customers avoid shipping costs, as shoppers can order online and then pick up items from designated locations in stores. Kohl’s, for example, has lockers in some of its stores designated for this program.
Source: Kohl’s
“For many consumers, free same-day pickup or drive-up service is more convenient than shopping,” Wytock said.
6. Experiential elements are challenging the relevancy of brick-and-mortar stores.
Virtual or augmented reality apps and dressing rooms are a recent and massive advancement in shopping.
Source: Business Insider


|
PyFlow
|
Base class for all function libraries some common utilities can be moved here in future. More...
Public Member Functions | |
| def | __init__ (self) |
| def | getFunctions (self) |
Base class for all function libraries some common utilities can be moved here in future.


Sinbad. Pirates of the seven storms
Sinbad, a young cheerful pirate, is not very lucky in the pirate industry - for a year he and his crew failed to capture a single ship. But fate smiles at Sinbad: the old man Antiochus shows him the old map and suggests to sail to Skeleton Island, where the treasures are kept. Sinbad does not know that this Antioch is a wizard who pursues his own selfish plans ...
Why, there's Solara, Sinbad's girlfriend in children's games, fell on his head! Is love really? No, Sinbad does not give up so easily! The path to the island of Skeleton lies through the Sea of Seven Storms. Xindabad and his team will face a battle with Kanatny Monster and meet their sworn enemy pirate Kesam. Yes, and on the island is not without adventures: the Cyclops, the Bird of Ruch and her Little Chick have been waiting for guests for a long time.


Heavy traffic faced motorists in Bristol this morning - this was why
Emergency roadworks were party to blame
by Andrew McQuarrieMotorists endured severe rush hour delays in Bristol today (December 9).
Two lanes were shut on the M32 northbound between Junction 3 (St Pauls) and Junction 2 (Eastville) while emergency pothole repairs were carried out.
Traffic was reduced to a standstill, according to an eyewitness, with queues stretching back to the city centre near Cabot Circus.
The lanes had re-opened by 8.10am, but delays remained for another hour or so.
Repairs on the same section of road took place on Saturday (December 7), with Highways England describing the task as "emergency pothole repair".
Elsewhere today, delays were also experienced on the A369 coming into Bristol with a lane closed at the turning for the Clifton Suspension Bridge at Bridge Road.
One motorist said: "I saw the lane closed on Sunday and so today I knew it was going to be bad so set off much earlier. The lane was still closed and traffic was backing up.
"I'm curious to know what it is for."
The lane closure was not listed under this week's scheduled roadworks by Bristol City Council.
You can click here to look back on the scenes as they unfolded.
For the latest news in and around Bristol, visit and bookmark Bristol Live's homepage.


climate change future risk Clim uncertainty events extreme model event [], aspects physical storyline storylines models {border-style approach precipitation px;} #ffffff;} grid.. Change Climate regional understanding used weather global impacts projections changes Chang New University information scientific warming water Res extremes human level past response sea (e.g. Nat Storylines York associated atmospheric dynamic episodic flooding plausible potential using Netherlands Shepherd circulation compound decision-making given provide relevant Environ Sci adaptation case component different events, new possible probability px; rise robust simulations thermodynamic {font-family ./s--- Department Lett October change. conventional develop factors flood font-size impact including local probabilistic science similar uncertainties use way ./nclimate Alps Dessai However, Research University, Wilby analysis approaches awareness context decision deep distinction double; ensembles events. example framework historical important infrastructure instead knowledge modelling moisture plausibility provided provides quantitative represent risks scenario scenarios semantic simulated statistical storm studies (Shepherd (or Centre Earth Environmental European Geophys Hurk Rev School Van assessment based border-color border-width boundaries change, common consequences den development direct directly emerging environmental fact increase led likely management mean measures natural observed physically predictions range reasons representing research responses risk, river solid; specific statements temperature term {font-style {font-weight (Sect. (panel Institute London National Pfahl Proc Soc Swiss Tulving allowing alternative amounts available basis bias bold catastrophe components confidence courier; define does effects em; emphasis event, evidence example, improve include increased infrastructure, just known large limitations long-term making memory mudflows observations occurred offer participants policy presented process processes providing pt;} rain-on-snow reduce respond risk. source station storms storylines, stress study subway taken uncertainty, useful van winter work


|
FIRST PHASE - Each player on each turn
drops one of his stones into an empty cell (not in the Pond). This is
repeated until 10 stones are placed on the board (5 of each
color).
|
|
SECOND PHASE - Each player on his turn, may do one
of the following options:
|
Move one of his stones into an adjacent cell
(orthogonal or diagonal) not in the Pond;
|
|
Select one stone to jump and another stone
(any color) as a pivot. The stone jumps as many cells after the
pivot, as the distance between the pivot and the jumping stone.
Restrictions:
|
Both stones must be on a straight
(orthogonal or diagonal) line with no stones in-between the
jumping stone, the pivot and the final cell. |
|
The cells inside the Pond cannot be used. |
|
|
After the first jump, the player places
another stone on the original cell (the referee), and continues to
jump with the jumping stone while it is possible and until he
wants. After the jump sequence is over, the referee is removed. |
|
|
CYCLE - A stone makes a cycle when it
crosses the finish line twice. After that, the stone is removed and
placed inside the Pond. |
|
GOAL - Wins the player which has all his
stones inside the Pond. |
|


French interior minister blames protest violence on 'thugs'
by Dominique VidalonPARIS (Reuters) - French Interior Minister Christophe Castaner blamed “thugs” and “bullies” on Sunday for the violence that hit demonstrations the previous day marking marked the first anniversary of the anti-government “yellow vest” protests.
“Yesterday, what we saw were few (legitimate) demonstrators but thugs, bullies and morons,” Castaner told Europe 1 radio when asked about the violence in Paris on Saturday.
Demonstrators torched cars and pelted police with stones and bottles and police fired tear gas and water cannon during the rallies to mark a year since the birth of the anti-government yellow vest movement.
Across France, police arrested 264 people on Saturday, including 173 in Paris, Castaner said.
Some 28,000 people demonstrated across France on Saturday, including 4,700 in Paris.
This was more than in recent weeks but less than the record 282,000 estimated for the whole country on Nov. 17, 2018.
Yellow vest activists were staging protests in France on Sunday though these were largely peaceful.
In early afternoon around 50 people, some wearing yellow vests, briefly entered the Galeries Lafayette flagship department store on Boulevard Haussman, a tourist hotspot in the centre of Paris.
The activists were quickly evacuated by staff and police.
The disruption forced the store to shut down for the rest of the day. A spokeswoman for Galeries Lafayette said the store will open as usual on Monday.


The Core module is actually no source code module but contains all base libraries needed for KIT Data Manager Web applications (ReST-only or UI-based).
It contains all generic base libraries, e.g. for MetaDataManagement, BaseMetaData- and DataOrganization-Entities. Community-specific dependencies like
content metadata or enhanced search must be added externally. Including the module is rather simple and can be achieved by adding the Maven artifact edu.kit.dama.Core of
type 'war' to the project. During build the WAR file will be processed as overlay and is integrated into the child project's WAR.


{#==========================================
Docs : "Request Context"
==========================================#}
The
Those functionalities are provided by simple methods, or by
{% verbatim %}
The Request Context
Request Context
is the
object associated with the current request that Spincast passes
to your matching Route Handlers
. Its main purpose is to allow you to access information
about the request, and to build the response to send.
add-ons
. What
we call an "add-on"
is an intermediate class
containing a set of methods
made available through the Request Context
parameter.
Here's an example of using the routing()
add-on :
public void myHandler(DefaultRequestContext context) {
if(context.routing().isNotFoundRoute()) {
//...
}
}
{% endverbatim %}
routing()
add-on
is available to any Route Handler
, via its Request Context
parameter, and
provides a set of utility methods.
Here are some add-ons
and some standalone methods available by default on a
Request Context
object :
{% verbatim %}
public void myHandler(DefaultRequestContext context) { // Accesses the request information String name = context.request().getPathParam("name"); // Sets the response context.response().sendPlainText("Hello world"); // Gets information about the routing process and the current route boolean isNotFoundRoute = context.routing().isNotFoundRoute(); // Gets/Sets request-scoped variables String someVariable = context.variables().getAsString("someVariable"); // Direct access to the Json manager JsonObject jsonObj = context.json().create(); // Direct access to the XML manager JsonObject jsonObj2 = context.xml().fromXml("<someObj></someObj>"); // Direct access the Guice context SpincastUtils spincastUtils = context.guice().getInstance(SpincastUtils.class); // Direct access to the Templating Engine Map<String, Object> params = new HashMap<String, Object>(); params.set("name", "Stromgol"); context.templating().evaluate("Hello {{name}}", params); // Gets the best Locale to use for the current request Locale localeToUse = context.getLocaleToUse(); // Gets the best TimeZone to use for the current request TimeZone timeZoneToUse = context.getTimeZoneToUse(); // Sends cache headers context.cacheHeaders().cache(3600); // ... }{% endverbatim %}
Again, the main job of the Request Context
is to allow the Route Handlers
to deal with the
request and the response. But it's also an extensible object on which various functionalities can be added
to help the Route Handlers
do their job! Take the "templating()"
add-on, for example:
{% verbatim %}
public void myRouteHandler(DefaultRequestContext context) { Map<String, Object> params = new HashMap<String, Object>(); params.set("name", "Stromgol"); String content = context.templating().evaluate("Hi {{name}}!", params); // Do something with the evaluated content... }{% endverbatim %}
The templating()
add-on does not directly manipulate the request or the response.
But it still provides a useful set of methods for the Route Handlers
.
If you have experience with Guice, or with dependency injection in general,
you may be thinking that we could simply inject a TemplatingEngine
instance in the controller and access it that way :
{% verbatim %}
public class AppController { private final TemplatingEngine templatingEngine; @Inject public AppController(TemplatingEngine templatingEngine) { this.templatingEngine = templatingEngine; } protected TemplatingEngine getTemplatingEngine() { return this.templatingEngine; } public void myRouteHandler(DefaultRequestContext context) { Map<String, Object> params = new HashMap<String, Object>(); params.set("name", "Stromgol"); String content = getTemplatingEngine().evaluate("Hi {{name}}!", params); // Do something with the evaluated content... } }{% endverbatim %}
The two versions indeed lead to the exact same result. But, for functionalities that
are often used inside Route Handlers
, or
for functionalities that should be request scoped, extending
the Request Context
can be very useful.
Imagine a plugin
which job is to manage authentification and autorization.
Wouldn't it be nice if this plugin could add some extra functionalities to the Request Context
object? For example :
public void myHandler(ICustomRequestContext context) { if(context.auth().isAuthenticated()) { String username = context.auth().user().getUsername(); // ... } }
There is some boilerplate code involved to get
such custom Request Context
type but, when it's in place, it's pretty easy to tweak
and extend. In fact, we highly recommend that you use a custom Request Context
as soon as possible
in your application. That way, you will be able to easily add add-ons
when you need them.
If you use the Quick Start
as a start for your application, a custom
Request Context
type is already provided.
But if you start from scratch, an upcoming section will show you how to
extend the default Request Context type, by yourself.
add-ons
There are add-ons
which are always available on a Request Context
object,
in any Spincast application. Let's have a quick look at them :
RequestRequestContextAddon<R> request()
The request()
add-on allows access to
information about the current request
: its body, its headers, its URL, etc. The default
implementation, SpincastRequestRequestContextAddon
, is provided by the
Spincast Request plugin. Check this plugin's documentation
for all the available API.
// Gets the request full URL String fullUrl = context.request().getFullUrl(); // Gets the request body as a JsonObject JsonObject body = context.request().getJsonBody(); // Gets a HTTP header String authorization = context.request().getHeaderFirst(HttpHeaders.AUTHORIZATION); // Gets a cookie value String sesionId = context.request().getCookie("sess"); // Gets a queryString parameter String page = context.request().getQueryStringParamFirst("page"); // Gets the value of a dynamic path token. // For example for the route "/users/${userId}" String userId = context.request().getPathParam("userId");
ResponseRequestContextAddon<R> response()
The response()
add-on allows you to build
the response
: its content, its content-type, its HTTP status, its headers.
The default implementation, SpincastResponseRequestContextAddon
, is provided by the
Spincast Response plugin. Check this plugin's documentation
for all the available API.
// Sets the status code context.response().setStatusCode(HttpStatus.SC_FORBIDDEN); // Sets a HTTP header value context.response().setHeader(HttpHeaders.CONTENT_LANGUAGE, "en"); // Sets the content-type context.response().setContentType(ContentTypeDefaults.JSON.getMainVariation()); // Sets a cookie context.response().setCookie("locale", "en-US"); // Permanently redirects to a new url (the new url // can be absolute or relative). A Flash message // can be provided. context.response().redirect("/new-url", true, myFlashMessage); // Adds an element to the response model context.response().getModel().set("name", "Stromgol"); // Sends the response model as Json context.response().sendJson(); // Sends some bytes context.response().sendBytes("Hello World".getBytes("UTF-8")); // Sends a specific object as Json context.response().sendJson(user); // Sends HTML evaluated from a template, using the response // model to provide the required variables context.response().sendHtmlTemplate("/templates/user.html");
RoutingRequestContextAddon<R> routing()
The routing()
add-on allows you to get
information about the current routing process
.
// Gets all the matches returned by the Router. IRoutingResult<DefaultRequestContext> routingResult = context.routing().getRoutingResult(); // Gets the current match : the Route Handler, its position // and its parsed path parameters. RouteHandlerMatch<DefaultRequestContext> currentMatch = context.routing().getCurrentRouteHandlerMatch(); // Is the current Route a "Not found" one? boolean isNotFoundRoute = context.routing().isNotFoundRoute(); // Are we currently on a Route to handle an exception? boolean isExceptionHandling = context.routing().isExceptionRoute();
TemplatingRequestContextAddon<R> templating()
The templating()
add-on gives access to the Templating Engine
functionalities.
{% verbatim %}
Map<String, Object> params = new HashMap<>(); params.set("name", "Stromgol"); // Evaluation of inline content String html = context.templating().evaluate("Hello {{name}}", params); // Evaluation of a template file String html = context.templating().fromTemplate("/templates/user.html", params);{% endverbatim %}
VariablesRequestContextAddon<R> variables()
The variables()
add-on allows you to add
variables which are request scoped. They will only be available to
the components accessing the current request. They are a good way to make a
Route Handler
communicate some informations to others.
// Gets a request scoped variable as a JsonObject. JsonObject info = context.variables().getAsJsonObject("someObjectName"); // Gets a request scoped variable as a String. String info = context.variables().getAsString("someKey"); // Adds a new request scoped variable context.variables().set("someKey", "someValue");
CacheHeadersRequestContextAddon<R> cacheHeaders()
The cacheHeaders()
add-on allows you to validate the HTTP
cache headers sent by the client and
to add such headers for the requested resource. Have a look at the HTTP Caching
section for more information.
// Tells the client to cache the resource for 3600 seconds context.cacheHeaders().cache(3600); // Tells the client to disable any cache for this resource context.cacheHeaders().noCache(); // ETag and last modification date validation if(context.cacheHeaders().eTag(resourceEtag).lastModified(modifDate).validate(true)) { return; }
JsonManager json()
Provides easy access to the
JsonManager,
for
Json related methods.
XmlManager xml()
Provides easy access to the XmlManager,
for
XML related methods.
Injector guice()
Provides easy access to the Guice
context of the application.
<T> T get(Class<T> clazz)
Shortcut to get an instance from the Guice
context. Will also cache the instance
(as long as it is request scoped or is a singleton).
Locale getLocaleToUse()
The best Locale
to use for the current request, as found by the
LocaleResolver.
TimeZone getTimeZoneToUse()
The best TimeZone
to use for the current request, as found by the
TimeZoneResolver.
Object exchange()
The underlying "exchange"
object, as provided by the HTTP
Server.
If you know for sure what the
implementation of this object is, you may cast it to access extra functionalities not provided by Spincast out of the box.
Extending the Request Context
is probably to most advanced thing to
learn about Spincast. Once in place, a custom Request Context
is quite
easy to adjust and extend, but the required code to start may be somewhat challenging.
This is why we recommend that you start your application with the Quick Start!
This template already contains a custom Request Context
type,
so you don't have to write the bootstrapping code by yourself! But if you start from scratch or if you
are curious about how a custom Request Context
type is possible, keep
reading.
First, let's quickly repeat why we could want to extend the default Request Context
type...
There may be a "translate(...)
" method on some class and we frequently use it by our various
Route Handlers
. Let's say this is a method helping translate a sentence from one language
to another.
Instead of injecting the class where this method is
defined each time we need to use it, wouldn't it be nice if we would have access to it
directly from a Request Context
object? For example:
public class AppController { public void myRouteHandler(AppRequestContext context) { String translated = context.translate("Hello World!", Locale.ENGLISH, Locale.FRENCH); // ... } }
Since this method doesn't exist on the default
RequestContext
interface,
we'll have to create a custom type and add the method to it. In the previous snippet,
this custom type is called "AppRequestContext"
.
Let's create this custom Request Context
type...
public interface AppRequestContext extends RequestContext<AppRequestContext> { public void translate(String sentense, Locale from, Locale to); // Other custom methods and/or add-ons... }
Note that we extend RequestContext
, which is the
base interface for any Request Context
, but we parameterize it using our custom type.
This is required because the base interface needs to know about it.
Then, the implementation:
public class AppRequestContextDefault extends RequestContextBase<AppRequestContext> implements AppRequestContext { @AssistedInject public AppRequestContextDefault(@Assisted Object exchange, RequestContextBaseDeps<AppRequestContext> requestContextBaseDeps) { super(exchange, requestContextBaseDeps); } @Override public String translate(String sentense, Locale from, Locale to) { // More hardcoded than translated here! return "Salut, monde!"; } }
Explanation :
RequestContextBase
,
to keep the default methods implementations and simply add our custom one. We also need to parameterize
this base class with our custom AppRequestContext
type.
exchange
object and a RequestContextBaseDeps
parameter,
which are going to be injected using an
assisted factory. Don't
worry too much about this. Simply add this constructor, and things should be working.
translate(...)
method.
Last, but not the least, we need to tell Spincast about
our new custom Request Context
type! This is done by using the
requestContextImplementationClass(...)
of the
Bootstrapper :
public static void main(String[] args) { Spincast.configure() .module(new AppModule()) .requestContextImplementationClass(AppRequestContextDefault.class) .init(args); //.... }
Note that it is the implementation, "AppRequestContextDefault
", that we have to specify,
not the interface!
This is to simplify your job : Spincast will automatically find the associated
interface and will use it to parameterize the required components.
And that's it! From now on, when you are using a routing related component, which has to be parameterized with the
Request Context
type, you use your new custom type. For example:
Router<AppRequestContext, DefaultWebsocketContext> router = getRouter(); router.GET("/").handle(context -> { String translated = context.translate("Hello World!", Locale.ENGLISH, Locale.FRENCH); // do something with the translated sentence... });
Or, using an inline Route Handler
:
Router<AppRequestContext, DefaultWebsocketContext> router = getRouter(); router.GET("/").handle(new Handler<AppRequestContext>() { @Override public void handle(AppRequestContext context) { String translated = context.translate("Hello World!", Locale.ENGLISH, Locale.FRENCH); // do something with the translated sentence... } });
(You may have motice that the parameterized version of the Router
doesn't simply contain
a Request Context
type, but also a Websocket context
type. This is
because this type can also be extended.)
This may seem like a lot of boilerplate code! But it has to be done only one time and, once in place,
it's easy to add new methods and add-ons
to your Request Context
objects! Also,
using a unparameterized version of those generic components, it's way nicer. Let's see how
to creat those unparameterized versions...
You can do for your custom types what we already did for the default ones : to create an unparameterized version for each of them. For example, here's how the provided DefaultRouter is defined :
public interface DefaultRouter extends Router<DefaultRequestContext, DefaultWebsocketContext> { // nothing required }
This interface has no other goal than to "hide" the parameterization, to be more visually appealing,
more easy to use...
Thanks to this definition, you can inject DefaultRouter
instead of Router<DefaultRequestContext, DefaultWebsocketContext>
, which is arguably nicer. Both
types are interchangeable.
You can do the exact same thing with your custom Route Context
type :
public interface AppRouter extends Router<AppRequestContext, DefaultWebsocketContext> { // nothing required }
Now, you can inject AppRouter
instead of Router<AppRequestContext, DefaultWebsocketContext>
when you
need an instance of your custom router! Here again, it's a matter of taste... Noth types are interchangeable.
For more details, have a look at the Quick Start application. It implements exactly this.


|
|
1.0
|
org.easymock.tests.MockingTest.testNiceInterfaceMocking
org.easymock.tests.MockingTest.testNiceInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testPrimitiveVsObject
org.easymock.tests2.CaptureTest.testPrimitiveVsObject
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testPrimitive
org.easymock.tests2.CaptureTest.testPrimitive
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateStrictMock
org.easymock.tests2.EasyMockSupportTest.testCreateStrictMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateMock
org.easymock.tests2.EasyMockSupportTest.testCreateMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testRecordingInMultipleThreads
org.easymock.tests2.ThreadingTest.testRecordingInMultipleThreads
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testMockUsedCorrectly
org.easymock.tests2.ThreadingTest.testMockUsedCorrectly
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureLast
org.easymock.tests2.CaptureTest.testCaptureLast
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageTest.resumeIfFailure
org.easymock.tests2.UsageTest.resumeIfFailure
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNamedMock
org.easymock.tests2.EasyMockSupportTest.testCreateNamedMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageTest.strictResetToDefault
org.easymock.tests2.UsageTest.strictResetToDefault
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.nullDelegationNotAllowed
org.easymock.tests2.DelegateToTest.nullDelegationNotAllowed
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCapture2_2446744
org.easymock.tests2.CaptureTest.testCapture2_2446744
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageTest.defaultResetToNice
org.easymock.tests2.UsageTest.defaultResetToNice
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MockedExceptionTest.testRealException
org.easymock.tests2.MockedExceptionTest.testRealException
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockClassExtensionTest.testInterfaceMocking
org.easymock.tests2.EasyMockClassExtensionTest.testInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageTest.defaultResetToNice
org.easymock.tests2.UsageTest.defaultResetToNice
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testThreadNotSafe
org.easymock.tests2.ThreadingTest.testThreadNotSafe
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.NameTest.nameForMock
org.easymock.tests2.NameTest.nameForMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.NameTest.nameForMock
org.easymock.tests2.NameTest.nameForMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageTest.resumeIfFailure
org.easymock.tests2.UsageTest.resumeIfFailure
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testVerify
org.easymock.tests2.EasyMockSupportTest.testVerify
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.MockingTest.testNiceInterfaceMocking
org.easymock.tests.MockingTest.testNiceInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.MockingTest.testInterfaceMocking
org.easymock.tests.MockingTest.testInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureRightOne
org.easymock.tests2.CaptureTest.testCaptureRightOne
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testThreadSafe
org.easymock.tests2.ThreadingTest.testThreadSafe
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.NameTest.nameForStrictMock
org.easymock.tests2.NameTest.nameForStrictMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateControl
org.easymock.tests2.EasyMockSupportTest.testCreateControl
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.AnswerTest.testGenericityFlexibility
org.easymock.tests2.AnswerTest.testGenericityFlexibility
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCapture_2617107
org.easymock.tests2.CaptureTest.testCapture_2617107
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.nullStubDelegationNotAllowed
org.easymock.tests2.DelegateToTest.nullStubDelegationNotAllowed
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNamedMock
org.easymock.tests2.EasyMockSupportTest.testCreateNamedMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageTest.strictResetToDefault
org.easymock.tests2.UsageTest.strictResetToDefault
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MockedExceptionTest.testMockedException
org.easymock.tests2.MockedExceptionTest.testMockedException
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testAnd
org.easymock.tests2.CaptureTest.testAnd
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureStrictControl_2133741
org.easymock.tests2.CaptureTest.testCaptureStrictControl_2133741
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.testDelegate
org.easymock.tests2.DelegateToTest.testDelegate
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.testStubDelegate
org.easymock.tests2.DelegateToTest.testStubDelegate
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.MockingTest.testStrictInterfaceMocking
org.easymock.tests.MockingTest.testStrictInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateStrictControl
org.easymock.tests2.EasyMockSupportTest.testCreateStrictControl
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureNonStrictControl_2133741
org.easymock.tests2.CaptureTest.testCaptureNonStrictControl_2133741
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureFirst
org.easymock.tests2.CaptureTest.testCaptureFirst
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MockedExceptionTest.testNotMockedFillInStackTrace
org.easymock.tests2.MockedExceptionTest.testNotMockedFillInStackTrace
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.MockNameTest.defaultName
org.easymock.tests.MockNameTest.defaultName
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.testDelegate
org.easymock.tests2.DelegateToTest.testDelegate
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ClassExtensionHelperTest.testGetControl_EasyMock
org.easymock.tests2.ClassExtensionHelperTest.testGetControl_EasyMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateMock
org.easymock.tests2.EasyMockSupportTest.testCreateMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.UsageUnorderedTest.message
org.easymock.tests.UsageUnorderedTest.message
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.strictResetToDefault
org.easymock.tests2.EasyMockSupportTest.strictResetToDefault
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DependencyTest.testInterfaceMocking
org.easymock.tests2.DependencyTest.testInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureNonStrictControl_2133741
org.easymock.tests2.CaptureTest.testCaptureNonStrictControl_2133741
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.niceToStrict
org.easymock.tests2.EasyMockSupportTest.niceToStrict
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.UsageUnorderedTest.message
org.easymock.tests.UsageUnorderedTest.message
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testVerify
org.easymock.tests2.EasyMockSupportTest.testVerify
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testRecordingInMultipleThreads
org.easymock.tests2.ThreadingTest.testRecordingInMultipleThreads
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCapture_2617107
org.easymock.tests2.CaptureTest.testCapture_2617107
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.SerializationTest.test
org.easymock.tests2.SerializationTest.test
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureAll
org.easymock.tests2.CaptureTest.testCaptureAll
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNamedNiceMock
org.easymock.tests2.EasyMockSupportTest.testCreateNamedNiceMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.testStubDelegate
org.easymock.tests2.DelegateToTest.testStubDelegate
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureAll
org.easymock.tests2.CaptureTest.testCaptureAll
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureNone
org.easymock.tests2.CaptureTest.testCaptureNone
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testThreadNotSafe
org.easymock.tests2.ThreadingTest.testThreadNotSafe
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.defaultResetToNice
org.easymock.tests2.EasyMockSupportTest.defaultResetToNice
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNiceControl
org.easymock.tests2.EasyMockSupportTest.testCreateNiceControl
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.NameTest.nameForNiceMock
org.easymock.tests2.NameTest.nameForNiceMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.testReturnException
org.easymock.tests2.DelegateToTest.testReturnException
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.MockingTest.testStrictInterfaceMocking
org.easymock.tests.MockingTest.testStrictInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureStrictControl_2133741
org.easymock.tests2.CaptureTest.testCaptureStrictControl_2133741
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.strictResetToDefault
org.easymock.tests2.EasyMockSupportTest.strictResetToDefault
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CallbackAndArgumentsTest.callbackGetsArgumentsEvenIfAMockCallsAnother
org.easymock.tests2.CallbackAndArgumentsTest.callbackGetsArgumentsEvenIfAMockCallsAnother
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.MockingTest.testInterfaceMocking
org.easymock.tests.MockingTest.testInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureFromStub
org.easymock.tests2.CaptureTest.testCaptureFromStub
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.NameTest.nameForStrictMock
org.easymock.tests2.NameTest.nameForStrictMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MockedExceptionTest.testExplicitFillInStackTrace
org.easymock.tests2.MockedExceptionTest.testExplicitFillInStackTrace
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNiceMock
org.easymock.tests2.EasyMockSupportTest.testCreateNiceMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCapture2_2446744
org.easymock.tests2.CaptureTest.testCapture2_2446744
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MockedExceptionTest.testMockedException
org.easymock.tests2.MockedExceptionTest.testMockedException
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testPrimitiveVsObject
org.easymock.tests2.CaptureTest.testPrimitiveVsObject
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testCleanupAfterFailureInRecordPhase
org.easymock.tests2.ThreadingTest.testCleanupAfterFailureInRecordPhase
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureNone
org.easymock.tests2.CaptureTest.testCaptureNone
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNamedStrictMock
org.easymock.tests2.EasyMockSupportTest.testCreateNamedStrictMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DependencyTest.testInterfaceMocking
org.easymock.tests2.DependencyTest.testInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureFirst
org.easymock.tests2.CaptureTest.testCaptureFirst
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.SerializationTest.test
org.easymock.tests2.SerializationTest.test
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageTest.niceToStrict
org.easymock.tests2.UsageTest.niceToStrict
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.NameTest.nameForNiceMock
org.easymock.tests2.NameTest.nameForNiceMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.NameTest.nameForMocksControl
org.easymock.tests2.NameTest.nameForMocksControl
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateStrictMock
org.easymock.tests2.EasyMockSupportTest.testCreateStrictMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateStrictControl
org.easymock.tests2.EasyMockSupportTest.testCreateStrictControl
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNiceControl
org.easymock.tests2.EasyMockSupportTest.testCreateNiceControl
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageMatchersTest.additionalMatchersFailAtReplay
org.easymock.tests2.UsageMatchersTest.additionalMatchersFailAtReplay
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testThreadSafe
org.easymock.tests2.ThreadingTest.testThreadSafe
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MocksControlTest.testMocksControl_Interface
org.easymock.tests2.MocksControlTest.testMocksControl_Interface
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageTest.niceToStrict
org.easymock.tests2.UsageTest.niceToStrict
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CallbackAndArgumentsTest.callbackGetsArgumentsEvenIfAMockCallsAnother
org.easymock.tests2.CallbackAndArgumentsTest.callbackGetsArgumentsEvenIfAMockCallsAnother
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockClassExtensionTest.testInterfaceMocking
org.easymock.tests2.EasyMockClassExtensionTest.testInterfaceMocking
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.testWrongClass
org.easymock.tests2.DelegateToTest.testWrongClass
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MockedExceptionTest.testExplicitFillInStackTrace
org.easymock.tests2.MockedExceptionTest.testExplicitFillInStackTrace
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.nullDelegationNotAllowed
org.easymock.tests2.DelegateToTest.nullDelegationNotAllowed
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCapture1_2446744
org.easymock.tests2.CaptureTest.testCapture1_2446744
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MocksControlTest.testMocksControl_Interface
org.easymock.tests2.MocksControlTest.testMocksControl_Interface
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureRightOne
org.easymock.tests2.CaptureTest.testCaptureRightOne
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ClassExtensionHelperTest.testGetControl_EasyMock
org.easymock.tests2.ClassExtensionHelperTest.testGetControl_EasyMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.UsageMatchersTest.additionalMatchersFailAtReplay
org.easymock.tests2.UsageMatchersTest.additionalMatchersFailAtReplay
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.NameTest.nameForMocksControl
org.easymock.tests2.NameTest.nameForMocksControl
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.AnswerTest.testGenericityFlexibility
org.easymock.tests2.AnswerTest.testGenericityFlexibility
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testMockUsedCorrectly
org.easymock.tests2.ThreadingTest.testMockUsedCorrectly
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureFromStub
org.easymock.tests2.CaptureTest.testCaptureFromStub
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCaptureLast
org.easymock.tests2.CaptureTest.testCaptureLast
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MockedExceptionTest.testNotMockedFillInStackTrace
org.easymock.tests2.MockedExceptionTest.testNotMockedFillInStackTrace
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testPrimitive
org.easymock.tests2.CaptureTest.testPrimitive
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.testWrongClass
org.easymock.tests2.DelegateToTest.testWrongClass
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.defaultResetToNice
org.easymock.tests2.EasyMockSupportTest.defaultResetToNice
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNamedStrictMock
org.easymock.tests2.EasyMockSupportTest.testCreateNamedStrictMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.ThreadingTest.testCleanupAfterFailureInRecordPhase
org.easymock.tests2.ThreadingTest.testCleanupAfterFailureInRecordPhase
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.niceToStrict
org.easymock.tests2.EasyMockSupportTest.niceToStrict
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateControl
org.easymock.tests2.EasyMockSupportTest.testCreateControl
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNamedNiceMock
org.easymock.tests2.EasyMockSupportTest.testCreateNamedNiceMock
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testAnd
org.easymock.tests2.CaptureTest.testAnd
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.testReturnException
org.easymock.tests2.DelegateToTest.testReturnException
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.DelegateToTest.nullStubDelegationNotAllowed
org.easymock.tests2.DelegateToTest.nullStubDelegationNotAllowed
|
1
PASS
|
|
|
1.0
|
org.easymock.tests.MockNameTest.defaultName
org.easymock.tests.MockNameTest.defaultName
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.MockedExceptionTest.testRealException
org.easymock.tests2.MockedExceptionTest.testRealException
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.CaptureTest.testCapture1_2446744
org.easymock.tests2.CaptureTest.testCapture1_2446744
|
1
PASS
|
|
|
1.0
|
org.easymock.tests2.EasyMockSupportTest.testCreateNiceMock
org.easymock.tests2.EasyMockSupportTest.testCreateNiceMock
|
1
PASS
|


This page is currently offline for maintenance
This page is currently unavailable while we carry out some essential maintenance to the DOAJ. Please check again later.
{% extends "sidebar-page.html" %} {% block content %}
This page is currently unavailable while we carry out some essential maintenance to the DOAJ. Please check again later.


NBC 5 and Telemundo 39 Take Home 35 Lone Star Emmy Awards
NBC 5 wins 'Overall Excellence' and Telemundo 39 wins 'News Excellence’ for third consecutive year and the stations share 'Community Service' category win for collaborative work on 'Supporting Our Schools/Apoyando A Nuestras Escuelas' annual school supply
The Lone Star Chapter of the National Academy of Television Arts and Sciences awarded NBC 5 and Telemundo 39 a total of 35 Lone Star Emmy® Awards, including the 'Overall Excellence' award for NBC 5 along with 'News Excellence' for Telemundo 39 during the 17th annual awards gala held Saturday, Nov. 16, 2019.
Tom Ehlmann, NBC 5 and Telemundo 39 President and General Manager accepted the 'Overall Excellence' award for NBC 5 and recognized the successful effort of both stations. "Our teams work very hard to tell the stories of North Texans and provide the information they need to make their daily lives more livable – in both English and Spanish,' said Ehlmann. "It’s rewarding for the teams when industry peers recognize our work with honors like the Lone Star Emmys.'
Telemundo 39 received 23 Emmy® awards across various categories including their third consecutive win in the 'News Excellence' category, plus top newscast awards for 'Morning/Daytime, Evening and Weekend.'
"We are particularly proud of being honored for 'News Excellence' once again this year and earning a record setting number of awards for Telemundo 39 overall," said Freddy Oldenburg, Telemundo 39 Vice President of News.
NBC 5 and Telemundo 39 were also awarded a Lone Star Emmy® in the 'Community Service' category in recognition of their collaborative work on Supporting Our Schools / Apoyando A Nuestras Escuelas, an annual school supply drive focused on raising awareness about classroom needs and what communities can do to help local students and teachers have the necessary resources for a successful school year.
In three categories: education, technology and talent-anchor-news, NBC 5 and Telemundo 39 dominated the competition by winning the Emmy for both English and Spanish-language.
"I'm proud of the consistent, high-level effort our teams put forth every day to keep our viewers informed," said John Stone, NBC 5 Vice President of News. "We never rest on our laurels, but earning a total of 13 Lone Star Emmys is a wonderful sign of success for our staff."
Following is the full list of wins for NBC 5 Dallas-Fort Worth and Telemundo 39 Dallas-Fort Worth:
NBC 5 and Telemundo 39 Dallas-Fort Worth (joint)
COMMUNITY SERVICE
Supporting Our Schools
Nada J. Ruddock, Vice President Community Affairs
Krishma Trejo, Marketing Coordinator
NBC 5 Dallas-Fort Worth:
OVERALL EXCELLENCE
NBC5: Texas Connects Us
Tom Ehlmann, President/General Manager
GENERAL ASSIGNMENT REPORT - WITHIN 24 HOURS
We're Glad You're Home
Noelle Walker, Reporter
Ryan Oliveira, Photojournalist
ARTS/ENTERTAINMENT - NEWS SINGLE STORY / SERIES / FEATURE
Keller Kindness
Kristin Dickerson, Reporter
Noah Bullard, Photojournalist
EDUCATION/SCHOOLS - NEWS SINGLE STORY / SERIES / FEATURE
Carter In The Classroom
Wayne Carter, Reporter
HUMAN INTEREST - NEWS SERIES
Courageous Kids
Mike Heimbuch, Photojournalist
Kristin Dickerson, Reporter
MILITARY - NEWS SINGLE STORY / FEATURE / SERIES
Basic Training For Civilian Life
Noelle Walker, Reporter
Ryan Oliveira, Photojournalist
TEXAS HERITAGE - NEWS SINGLE STORY / SERIES / FEATURE
Rockwall's Rock Wall
Kristopher Gutierrez, Reporter
Peter Hull, Photojournalist
TECHNOLOGY - NEWS SINGLE STORY / SERIES / FEATURE
Dallas To Fort Worth In Six Minutes
Nefty Gonzalez, Photographer/Editor
Brian Curtis, Reporter
DOCUMENTARY - TOPICAL
Behind The Cameras: The Fall Of Dallas County Schools
Jack Douglas, Investigative Producer
Jose Sanchez, Investigative Photojournalist
Scott Friedman, Investigative Reporter
PROMOTION – PROGRAM
KXAS 70th Anniversary
Nicholas Muthersbaugh, Writer/Producer
Adrian Dominguez, Shooter/Editor
Candelaria Vidana, Designer
Ashish Banthia, Designer
TALENT - ANCHOR - NEWS
Gutz & Boots
Kristopher Gutierrez, News Anchor
TALENT - REPORTER - LIVE
LIVE: Scope And Perspective
Larry Collins, Reporter
Telemundo 39 Dallas-Fort Worth:
NEWS EXCELLENCE
Noticiero Telemundo 39 Contigo Primero
Freddy Oldenburg, Vice President of News
NEWSCAST - EVENING - LARGER MARKETS (1-25)
Telemundo 39 Allen Raid Coverage
Georgina Gonzalez-Campo, Producer
Freddy Oldenburg, Vice President Of News
Cynthia Garcia, Assignment Editor
Manuel Moreno, Assistant News Director
NEWSCAST - MORNING/DAYTIME - LARGER MARKETS (1-25)
Telemundo 39 At 11 AM: A Busy Day In The Metroplex
Freddy Oldenburg, Vice President Of News
Alexis Orengo, Meteorologist
Manuel Moreno, Assistant News Director
Adriana Lopez, Anchor
Lucas Arizpe, Director
Analía Fiestas, Anchor
Ramon Diaz, Anchor
Jimen Fraga, Producer
NEWSCAST - WEEKEND- LARGER MARKETS (1-25)
Telemundo 39 Elecciones Mexico
Martha Minjarez, Anchor
Geovana Herrera, Producer
NEWS SPECIAL
Earthquake In Mexico, One Year Anniversary
Norma Garcia, Producer
EDUCATION/SCHOOLS - NEWS SINGLE STORY / SERIES / FEATURE
Su Penultima Mision
Enrique Teutelo, Reporter
RELIGION - NEWS SINGLE STORY / SERIES / FEATURE
Apocalipsis El Juicio Final En Texas
Carlos Zapata, Reporter
Arnaldo Gines, Editor
TECHNOLOGY - NEWS SINGLE STORY / SERIES / FEATURE
The Dangers Of Virtual Reality
Adriana Lopez, Reporter
Jose D. Orsini, Photographer
WEATHER - NEWS WEATHERCAST
Weather Coverage
Pablo Sánchez Nuñez, Meteorologist
POLITICS/GOVERNMENT - PROGRAM / SPECIAL / FEATURE / SEGMENT
Augmented Reality Meets Politics
Georgina Gonzalez-Campo, Producer
TEXAS HERITAGE - PROGRAM / SPECIAL / FEATURE / SEGMENT
T39 Contigo Primero La Ciudad Vaquera
Krishma Trejo, Field Producer
Carlos Zapata, Anchor
WEATHER - PROGRAM / SPECIAL / FEATURE/SEGMENT
La Furia Del Tiempo
Arnaldo Gines, Photographer
Néstor Flecha, Chief Meteorologist-Producer
Alexis Orengo, Meteorologist
Pablo Sánchez Nuñez, Meteorologist
Daniel Colon Gomez, Director
Freddy Oldenburg, VP Of News
INFORMATIONAL/INSTRUCTIONAL - PROGRAM / SPECIAL / FEATURE / SEGMENT / SERIES
Amenaza Invernal
Néstor Flecha, Chief Meteorologist/Producer
Alexis Orengo, Meteorologist
Pablo Sánchez Nuñez, Meteorologist
Daniel Colon Gomez, Director
Freddy Oldenburg, Vice President Of News
PROMOTION - NEWS PROMO - CAMPAIGN / IMAGE
Telemundo 39 Brand Reel
Rafael Gonzalez-Vega, Director/Editor/Producer
Moises Munoz, Photographer
Edwin Mendez, Associate Producer
Tom Salazar, Jr., Photographer
Victoria DeAnda, Associate Producer
Krishma Trejo, Associate Producer
EDITOR - NEWS
The "Boris" Composite
Arnaldo Gines, News Editor
TALENT - ANCHOR - NEWS
El Duo Dinamico
Nancy Leal, Anchor
Carlos Zapata, Anchor
TALENT - ANCHOR – WEATHER
Chief Meteorologist Nestor Flecha
Néstor Flecha, Chief Meteorologist
TALENT - REPORTER - GENERAL ASSIGNMENT / SPOT NEWS
Carlos Zapata Una Mano Amiga En El Dolor
Carlos Zapata, Reporter
TALENT - REPORTER - SPECIALTY ASSIGNMENT
Cobertura Electoral
Martha Minjarez, Reporter
PHOTOGRAPHER - NEWS
El Bori - Takes Texas By Storm 2.0
Arnaldo Gines, Photographer
VIDEO JOURNALIST - WITHIN 24 HOURS
Las Voces De Mi Comunidad
Andrea Aguirre Alvarado, Videojournalist
WRITER - NEWS
Tragedy In Mexico One Year Later
Norma Garcia, Writer
NBC 5 and Telemundo 39 are co-located in The Studios at DFW. The television station duopoly works closely together to leverage their collective strengths and resources to better serve viewers – both Spanish and English-speaking – in North Texas.
For complete details on all of the winners and categories, please access The National Academy of Television Arts and Sciences Lone Star Chapter’s official 2019 Lone Star Emmy Awardees list here.


Cohort {{ cohort.name }} has {{ review.matchedParticipantCount }} participants for possible review. How many would you like to review? (max 10000)


Slides are here:
http://mhellar.github.io/mhellar/ga_iart2/day1
Grab the code here:
http://bit.ly/1MJP0M1
run 'sudo npm install n -g'
run 'n 0.12.0'
Packages to connect with Arduino
Packages to connect with Arduino
Connect a potentiometer
Connect a potentiometer
1: Upload AnalogInOutSerial.ino to arduino from AnalogInOutSerial in the code folder
2: Run 'npm install' in the serialbasic code folder
3: Run node index.js from the serialbasic from serialbasic in the code folder
2: Run 'npm install' in the serial_ws code folder
1: Run node index.js from the serialbasic from serial_ws in the code folder
Johnny-Five is the original JavaScript Robotics programming framework. Released by Bocoup in 2012, Johnny-Five is maintained by a community of passionate software developers and hardware engineers. Over 75 developers have made contributions towards building a robust, extensible and composable ecosystem.
1: Upload firmata to arduino
2: Run node app.js from the from j5_circle in the code folder
contents of package.json
{
"name": "J5_led_1",
"version": "1.0.0",
"description": "A Johnny Five LED app",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"johnny-five": "^0.8.106"
}
}
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var led = new five.Led(6);
led.blink(500);
});
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var led = new five.Led(6);
led.pulse(500);
});
Led Animations
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var led = new five.Led(6);
led.pulse({
easing: "linear",
duration: 3000,
cuePoints: [0, 0.2, 0.4, 0.6, 0.8, 1],
keyFrames: [0, 10, 0, 50, 0, 255],
onstop: function() {
console.log("Animation stopped");
}
});
});
Reference
Update code in code/twitter-ard/app.js
var client = new Twitter({
consumer_key: 'Enter Here',
consumer_secret: 'Enter Here',
access_token_key: 'Enter Here',
access_token_secret: 'Enter Here'
})
Twitter API Reference
Update code in code/twitter-ard/app.js
var client = new Twitter({
consumer_key: 'Enter Here',
consumer_secret: 'Enter Here',
access_token_key: 'Enter Here',
access_token_secret: 'Enter Here'
})


 Google Ventures' Daniel Burka dives into the data.
-
Kevin Rose Steps Into Part-Time Role At Google Ventures To Build A New ...
techcrunch.com
Serial entrepreneur, investor, and overall Internet good guy Kevin Rose is stepping down from his role of general partner at Google Ventures. The ...
-
AltspaceVR Seed Investment Tops $5.2 Million, Software Details Revealed ...
www.roadtovr.com
Altspace VR has today announced significant follow-on funding to their initial investment round which more than doubles the company’s seed funding, ...
-
Confide Updates Its App To Make Sending Text-Based Ephemeral Messages ...
techcrunch.com
Confide launched the first version of its app to enable enterprise users to send and receive text-based messages that disappear when you're done ...
-
The 'Google of sales & marketing' raises $2M to tell you who's using ...
venturebeat.com
Knowing who uses your competitors' products can be a huge competitive advantage. Knowing when potential customers start a trial of your competitor's ...
-
Introducing the URX App Search API
blog.urx.com
Today, we are excited to announce the world’s first App Search API, which enables developers to find and link users directly to relevant actions ...
-
Introducing the Uber API
blog.uber.com
Meet the Uber API. As of today, we officially open—to all developers—access to many of the primitives that power Uber’s magical experience. Apps can ...
-
Google Ventures' Formula For Attracting Top Design Talent
www.fastcodesign.com
Google Ventures partner Daniel Burka on how to write a great job description for designers in demand
-
Senior Sales Engineer at Tamr - Job Board | VentureFizz
venturefizz.com
Sales Engineer position posted by Data-Tamer in Cambridge
-
Kevin Systrom
www.gv.com
After interning at Odeo and working at Google, Kevin founded Instagram, the popular photo sharing app for the iPhone.
-
How to find great participants for your user study
www.gv.com
“It’s too hard to find users for usability tests.” Startups often point to recruiting users as one of the biggest reasons they’re not regularly ...
-
Ubersense Joins the Hudl Team - Blog - Hudl
public.hudl.com
Posted on September 17, 2014 by John Wirtz | Link
-
DataFox Pushes Its Business Intelligence Service Into Beta | TechCrunch
techcrunch.com
Last week at Disrupt SF, DataFox pitched what it called a "predictive intelligence" service, aimed at bringing a wealth of data concerning ...
-
Careers | Adimab
www.adimab.com
Our goal is to offer our employees an environment full of challenge, real opportunity, collaboration, enjoyment, and a chance to make a big ...
-
If you don’t think you need it, you haven’t seen greatness
www.gv.com
One thing I can hear with some regularity from a small founding team is something like "we don't think we need a marketing person" or "we're not ...
-
Weotta for iOS review - CNET
www.cnet.com
No matter your interests or tastes, Weotta is a great addition to your app library because it draws from several sources to help you find the perfect ...
-
GV guide to research
www.gv.com
Research provides the inspiration, guidance, and validation we need to design great products. From the personal (like interviewing users) to the ...
-
Smart Home Company Vivint Just Bought Cloud Storage Startup Space Monkey
www.forbes.com
Smart homes collect lots of data about you and how you live your life. Where's all that data going? Mostly to some cloud server hosted by Amazon. But ...
-
Replay | TechCrunch
techcrunch.com
Replay | CrunchUp & August Capital Party 2012 - Redwood City, CA - August 3, 2012
-
Leah Busque
www.gv.com
Leah is the founder of TaskRabbit, a marketplace helping you connect with people to get things done.
-
How to hire a product manager
www.gv.com
It's been a while since I was hiring at a startup, and recruiting at a startup is very different from hiring at a big company. At Yahoo! Search, it ...
-
How We Redesigned Our Product in Less Than a Week
thenextweb.com
The 6-step process is an adapted version of the process Google Ventures taught us. It's applicable whether you’re a startup or a Fortune 500 company.
-
Grading Teachers, With Data From Class
www.nytimes.com
Panorama Education, aided by prominent tech investors, is refining student feedback through innovative data collection. School systems are embracing ...
-
A new app hopes to get people talking on their phones again
www.theverge.com
Increasingly our smartphones are being used to send text, photos, and video, but not as phone to make voice calls. A new app, Cord, wants to change ...
-
ZenPayroll Gives Small Business the Tech Tools of Big Business
bits.blogs.nytimes.com
For all the crowing about small business as an engine of the economy, makers of business software have focused on big companies. Now a group of ...
-
We’re hiring: Inside Sales Associate | DataFox
www.datafox.co
Our first Inside Sales Associate will work with the CEO to drive new business, build an effective sales process, and instill a client-centric culture ...
-
Why you should move that button 3px to the left
www.gv.com
When a product is close to launch, I become a perfectionist. Each misaligned element or awkward interaction is like a thorn in my side. There’ll be a ...


PureModal.js
A lightweight, accessible, vanilla JavaScript modal component.
Examples
Basic modal
Modal without transition
Open modal 1 by link
Modal title 1
Content of modal 1
Modal title 2
Content of modal 2


A few ajax includes using data-after
at (min-width: 1000px)
:
onManualCall:true
(allows loading in smaller devices that dont match media) onOrientationChange:false
as well (avoids loading when matching media as a result of a change in device Orientation, but leaving onManualCall as a fallback to load the content)


|
This module creates a shared library for use by V-REP (from Coppelia Robotics). It adds haptic capability to V-REP by creating an invisible CHAI3D scene that runs concurrently to V-REP and interacts with any connected haptic device. The plugin can be controlled by from V-REP LUA scripts using the LUA functions referenced in the documentation. |
V-REP Module Resources
CHAI3D Library |


public class OSCBundle extends OSCPacket
The bundle time can be calculated in
different ways: specifying a long
which represents the milliseconds since
1 jan 1970 as returned by System.currentTimeMillis()
,
produces the required network time tag
as required by the OSC specification.
Alternatively, using a float
for a relative time offset in seconds can
be used when running SuperCollider in offline
mode. Third, there is a version that calculates
a sample accurate time tag. However, scsynth
doesn't process bundles with this accuracy, so
it's kind of useless.
To assemble a bundle, you create a new instance of
OSCBundle
, call addPacket
one or several times, then write the contents of
the bundle to a ByteBuffer
using the
method encode
. The byte buffer can then
be written to a DatagramChannel
. Here is an example:
OSCBundle bndl; DatagramChannel dch = null; final ByteBuffer buf = ByteBuffer.allocateDirect( 1024 ); final SocketAddress addr = new InetSocketAddress( "localhost", 57110 ); final long serverLatency = 50; final long now = System.currentTimeMillis() + serverLatency; try { dch = DatagramChannel.open(); dch.configureBlocking( true ); bndl = new OSCBundle( now ); bndl.addPacket( new OSCMessage( "/s_new", new Object[] { "default", new Integer( 1001 ), new Integer( 1 ), new Integer( 0 ), "out", new Integer( 0 ), "freq", new Float( 666 ), "amp", new Float( 0.1f )})); bndl.encode( buf ); buf.flip(); dch.send( buf, addr ); buf.clear(); bndl = new OSCBundle( now + 2000 ); // two seconds later bndl.addPacket( new OSCMessage( "/n_free", new Object[] { new Integer( 1001 )})); bndl.encode( buf ); buf.flip(); dch.send( buf, addr ); } catch( IOException e2 ) { System.err.println( e2.getLocalizedMessage() ); } finally { if( dch != null ) { try { dch.close(); } catch( IOException e4 ) {}; } }Note that this example uses the old way of sending messages. A easier way is to create an
OSCTransmitter
which
handles the byte buffer for you. See the OSCReceiver
doc
for an example using a dedicated transmitter.OSCReceiver
| Modifier and Type | Field and Description |
|---|---|
protected java.util.List |
collPackets |
static long |
NOW
The special timetag value
to indicate that the bundle be
processed as soon as possible
|
static java.lang.String |
TAG
This is the initial string
of an OSC bundle datagram
|
| Constructor and Description |
|---|
OSCBundle()
Creates a new empty OSCBundle
with timetag set to "immediately".
|
OSCBundle(double when)
Creates a new empty OSCBundle
with timetag specified by 'when'
which is seconds relative to start
of session.
|
OSCBundle(long when)
Creates a new empty OSCBundle
with timetag specified by 'when'
which is milliseconds since 1 jan 1970
as returned by System.currentTimeMillis().
|
OSCBundle(long absMillisOffset,
long sampleFrames,
int sampleRate)
Creates a new empty OSCBundle
with timetag specified by a sample
frame offset and an absolute time
in milliseconds since 1 jan 1970
as returned by
System.currentTimeMillis() |
| Modifier and Type | Method and Description |
|---|---|
void |
addPacket(OSCPacket p)
Adds a new
OSCPacket to the tail
of the bundle. |
OSCPacket |
getPacket(int idx)
Gets the
OSCPacket at the provided
index which must be between 0 inclusive
and getPacketCount() exclusive. |
int |
getPacketCount()
Returns the number of packets
currently assembled in this bundle.
|
long |
getTimeTag()
Returns the raw format time tag
of the bundle
|
void |
removePacket(int idx)
Removes the specified packet
|
void |
setTimeTagAbsMillis(long when)
Sets the bundle's timetag
specified by a long
which is milliseconds since 1 jan 1970
as returned by
System.currentTimeMillis() . |
void |
setTimeTagRaw(long raw) |
void |
setTimeTagRelSecs(double when)
Sets the bundle's timetag
specified by a double
which is seconds relative to start
of session.
|
void |
setTimeTagSamples(long absMillisOffset,
long sampleFrames,
int sampleRate)
Sets the bundle's timetag as
a combination of system absolute time
and sample offset.
|
decode, encode, encode, getSize, getSize, printHexOn, printTextOn
public static final java.lang.String TAG
public static final long NOW
protected final java.util.List collPackets
public OSCBundle()
public OSCBundle(long when)
when
- absolute time tag for the bundleSystem.currentTimeMillis()
public OSCBundle(double when)
when
- relative time tag for the bundlepublic OSCBundle(long absMillisOffset, long sampleFrames, int sampleRate)
System.currentTimeMillis()
absMillisOffset
- time offset as returned by System.currentTimeMillis
sampleFrames
- this offset is added to the milli second offset.sampleRate
- used in conjunction with sampleFrames
to
calculate the time offset.public void addPacket(OSCPacket p)
OSCPacket
to the tail
of the bundle. Passing null
is
allowed in which case no action
is performed.p
- the packet to add to the tail of the bundlepublic OSCPacket getPacket(int idx)
OSCPacket
at the provided
index which must be between 0 inclusive
and getPacketCount()
exclusive.
If bundles are nested, each nested
bundle will count as one packet of course.idx
- index of the packet to getidx
public int getPacketCount()
public void removePacket(int idx)
idx
- the index of the packet to removepublic void setTimeTagAbsMillis(long when)
System.currentTimeMillis()
.
This is converted into an absolute time
offset since 1 jan 1900 as required by
the OSC specs.when
- absolute time tag for the bundleSystem.currentTimeMillis()
public void setTimeTagRaw(long raw)
public void setTimeTagRelSecs(double when)
when
- relative time tag for the bundlepublic void setTimeTagSamples(long absMillisOffset, long sampleFrames, int sampleRate)
absMillisOffset
- time offset as returned by System.currentTimeMillis
sampleFrames
- this offset is added to the milli second offset.sampleRate
- used in conjunction with sampleFrames
to
calculate the time offset.public long getTimeTag()


Before Change
// Spikes at time 0 are forbidden (and indeed prevented in the
// simulation), because of this difficulty to distinguish them from a 0
// entry indicating no spike.
spiketrain = spiketrain[spiketrain.nonzero()]
// Create an array of the same size as the spikelist containing just
// the neuron index.
y = np.ones_like(spiketrain) * neuron
plt.plot(spiketrain, y, ".")
plt.title("Spiketrains \n of layer {}".format(layer[1]))
plt.xlabel("time [ms]")
plt.ylabel("neuron index")
After Change
plt.title("Spiketrains \n of layer {}".format(layer[1]))
plt.xlabel("time [ms]")
plt.ylabel("neuron index")
plt.xlim(min([dt, np.min(layer[0])]), (duration + 1) * dt)
if path is not None:
filename = "7Spiketrains"
plt.savefig(os.path.join(path, filename), bbox_inches="tight")


1. Philosophy (428 B . c .-present)
* Can formal rules be used to draw valid conclusions?
* How does the mental mind arise from a physical brain?
* Where does knowledge come from? How does knowledge lead to action?
2. Mathematics (c. 800-present)
* What are the formal rules to draw valid conclusions?
What can be computed?
How do we reason with uncertain information?
3. Economics (1776-present)
* How should we make decisions so as to maximize payoff?
* How should we do this when others may not go along?
* How should we do this when the payoff may be f,x in the future?
4. Neuroscience (1861-present)
* How do brains process information?
5. Psychology (1879-present)
* How do humans and animals think and act?
6. Computer engineering (1940-present)
* How can we build an efficient computer?
7. Control theory and Cybernetics (1948-present)
* How can artifacts operate under their own control?
8. Linguistics (1957-present)
* How does language relate to thought?


+++
title = "PopUpGardens"
linkTitle = "PopUpGardens"
+++
{{< blocks/cover title="Welcome to PopUpGardens" image_anchor="top" height="full" color="orange" >}}
}}">
Research
Education
Poplar common gardens aross the US for research and education
{{< blocks/link-down color="info" >}}
{{< /blocks/cover >}}
{{% blocks/lead color="primary" %}}
This is a place to breifly explain the overarching goals of the project
{{% /blocks/lead %}}
{{< blocks/section color="dark" >}}
{{% blocks/feature icon="fa-leaf" title="Educational Resources" %}}
Browse our lesson plans for teaching concepts in ecology and evolution in the gardens, in the classroom, and in your home
Please follow this space for updates!
{{% /blocks/feature %}}
{{% blocks/feature icon="fa-school" title="Get Involved!" url="https://github.com/google/docsy-example" %}}
See if your school can get involved. Click [here_dead_link](https://github.com/arboreta_lists) to find ways your class can join the project!
{{% /blocks/feature %}}
{{% blocks/feature icon="fab fa-twitter" title="Follow us on Twitter!" url="https://twitter.com/docsydocs" %}}
If we wanted to do social media...
{{% /blocks/feature %}}
{{< /blocks/section >}}
{{< blocks/section >}}
This is the second Section
{{< /blocks/section >}}
{{< blocks/section >}}
Another Section
{{< /blocks/section >}}
{{< blocks/section >}}
This is another Section
{{< /blocks/section >}}


|
xpcc
|
Converting multiple channels in free running mode.
#include <xpcc/architecture/platform/driver/adc/lpc/adc.hpp>
Public Types | |
| enum | Resolution { Resolution::BITS_10, Resolution::BITS_9, Resolution::BITS_8, Resolution::BITS_7, Resolution::BITS_6, Resolution::BITS_5, Resolution::BITS_4, Resolution::BITS_3 } |
| Resolution of the successive-approximation ADC. More... | |
| Public Types inherited from xpcc::lpc::Adc | |
| enum | ChannelMask { PIO0_11, PIO1_0, PIO1_1, PIO1_2, PIO1_4, PIO1_10, PIO1_11, CHANNEL_0, CHANNEL_1, CHANNEL_2, CHANNEL_3, CHANNEL_5, CHANNEL_6, CHANNEL_7 } |
| Channels which can be used as ADC input. More... | |
| enum | Channel { PIO0_11, PIO1_0, PIO1_1, PIO1_2, PIO1_4, PIO1_10, PIO1_11, CHANNEL_0, CHANNEL_1, CHANNEL_2, CHANNEL_3, CHANNEL_5, CHANNEL_6, CHANNEL_7 } |
Static Public Member Functions | |
| static void | initialize (Resolution resolution=Resolution::BITS_10) |
| Initialise the ADC module in free running mode. More... | |
| static void | startConversion (uint8_t channelMask, uint8_t interruptMask=0) |
| Start a conversion of the selected channel(s). More... | |
| static bool | isConversionFinished (Channel channel) |
| Check if a single channel has finished. | |
| static bool | isConversionFinished (uint8_t channelMask) |
| Check if a group of channels have finished. More... | |
| static uint16_t | getValue (Channel channel) |
| Get the value of a single channel. More... | |
| static bool | read (uint16_t &val, Channel channel) |
| Returns true if the value is ready and puts it into the variable. | |
| Static Public Member Functions inherited from xpcc::lpc::Adc | |
| static void | configurePins (uint8_t channelBitmask=0xff) |
| Configure the selected channels as analog input. More... | |
Additional Inherited Members | |
| Static Protected Member Functions inherited from xpcc::lpc::Adc | |
| static uint32_t | getAdcRegister (Channel channel) |
| Read a ADC data register. More... | |
|
strong |
|
inlinestatic |
| resolution | More bits mean lower conversion rate. |
|
inlinestatic |
The conversion is repeated automatically. When using interrupts it may be a good idea to set only on bit in the interruptMask to generate an interrupt when all channels are converted once.
| channelMask | Bitmask of the channels that should be converted |
| interruptMask | Bitmask of channels that will generate an interrupt. |
|
inlinestatic |
Can be used for a single channel too if the ChannelMask is known.
|
inlinestatic |
Check before if result is ready.


Defines | |
| #define | ADL_CONNECTOR_TYPE_UNKNOWN 0 |
| Indicates unknown Connector type. | |
| #define | ADL_CONNECTOR_TYPE_VGA 1 |
| Indicates VGA Connector type. | |
| #define | ADL_CONNECTOR_TYPE_DVI_D 2 |
| Indicates DVI-D Connector type. | |
| #define | ADL_CONNECTOR_TYPE_DVI_I 3 |
| Indicates DVI-I Connector type. | |
| #define | ADL_CONNECTOR_TYPE_ATICVDONGLE_NA 4 |
| Indicates Active Dongle-NA Connector type. | |
| #define | ADL_CONNECTOR_TYPE_ATICVDONGLE_JP 5 |
| Indicates Active Dongle-JP Connector type. | |
| #define | ADL_CONNECTOR_TYPE_ATICVDONGLE_NONI2C 6 |
| Indicates Active Dongle-NONI2C Connector type. | |
| #define | ADL_CONNECTOR_TYPE_ATICVDONGLE_NONI2C_D 7 |
| Indicates Active Dongle-NONI2C-D Connector type. | |
| #define | ADL_CONNECTOR_TYPE_HDMI_TYPE_A 8 |
| Indicates HDMI-Type A Connector type. | |
| #define | ADL_CONNECTOR_TYPE_HDMI_TYPE_B 9 |
| Indicates HDMI-Type B Connector type. | |
| #define | ADL_CONNECTOR_TYPE_DISPLAYPORT 10 |
| Indicates Display port Connector type. | |
| #define | ADL_CONNECTOR_TYPE_EDP 11 |
| Indicates EDP Connector type. | |
| #define | ADL_CONNECTOR_TYPE_MINI_DISPLAYPORT 12 |
| Indicates MiniDP Connector type. | |
| #define | ADL_CONNECTOR_TYPE_VIRTUAL 13 |
| Indicates Virtual Connector type. |
| #define ADL_CONNECTOR_TYPE_UNKNOWN 0 |
Indicates unknown Connector type.
| #define ADL_CONNECTOR_TYPE_VGA 1 |
Indicates VGA Connector type.
| #define ADL_CONNECTOR_TYPE_DVI_D 2 |
Indicates DVI-D Connector type.
| #define ADL_CONNECTOR_TYPE_DVI_I 3 |
Indicates DVI-I Connector type.
| #define ADL_CONNECTOR_TYPE_ATICVDONGLE_NA 4 |
Indicates Active Dongle-NA Connector type.
| #define ADL_CONNECTOR_TYPE_ATICVDONGLE_JP 5 |
Indicates Active Dongle-JP Connector type.
| #define ADL_CONNECTOR_TYPE_ATICVDONGLE_NONI2C 6 |
Indicates Active Dongle-NONI2C Connector type.
| #define ADL_CONNECTOR_TYPE_ATICVDONGLE_NONI2C_D 7 |
Indicates Active Dongle-NONI2C-D Connector type.
| #define ADL_CONNECTOR_TYPE_HDMI_TYPE_A 8 |
Indicates HDMI-Type A Connector type.
| #define ADL_CONNECTOR_TYPE_HDMI_TYPE_B 9 |
Indicates HDMI-Type B Connector type.
| #define ADL_CONNECTOR_TYPE_DISPLAYPORT 10 |
Indicates Display port Connector type.
| #define ADL_CONNECTOR_TYPE_EDP 11 |
Indicates EDP Connector type.
| #define ADL_CONNECTOR_TYPE_MINI_DISPLAYPORT 12 |
Indicates MiniDP Connector type.
| #define ADL_CONNECTOR_TYPE_VIRTUAL 13 |
Indicates Virtual Connector type.


The app will return popular movies of that genre. Additionally, it will provide an analysis of how Twitter feels about each movie based upon NLP of tweets about that movie.


Hosker's Almanack
Hosker's Almanack is a almanac in which a longer poem, a shorter poem and a proverb --- drawn from English literature --- are provided for each day of the Cyprian calendar.
Editions
None as yet.
Drafts
None as yet.
Hosker's Almanack is a almanac in which a longer poem, a shorter poem and a proverb --- drawn from English literature --- are provided for each day of the Cyprian calendar.
None as yet.
None as yet.


{% extends "base.html" %} {% set active_page = "food_search" %} {% block content %} {# removed it for now, but can be included again {% include 'searchbar_jinja.html' %} #}
Health Index for: {{ name }}


Wireframe Sites
The plan is to have the new site be responsive for two screen sizes, one for screens > 450px and those <= 450px and to add basic jquery to make the site more interactive.
Here is my initial wireframe of the new site.
The plan is to have the new site be responsive for two screen sizes, one for screens > 450px and those <= 450px and to add basic jquery to make the site more interactive.
Here is my initial wireframe of the new site.


Constant Field Values
Contents
TADK.*
-
TADK.DeviceConstants Modifier and Type Constant Field Value public static final int
TADK_ACTION_BM_DISABLE
8
public static final int
TADK_ACTION_BM_ENABLE
7
public static final int
TADK_ACTION_BRODCAST
10
public static final int
TADK_ACTION_MAP_DIOS
16
public static final int
TADK_ACTION_MODE
1
public static final int
TADK_ACTION_RT_HOST_INI
12
public static final int
TADK_ACTION_RT_HOST_INIT_COMPLETE
13
public static final int
TADK_ACTION_SET_BC
2
public static final int
TADK_ACTION_SET_BM
4
public static final int
TADK_ACTION_SET_DIOS
18
public static final int
TADK_ACTION_SET_ILLEGAL_ADDRESS
15
public static final int
TADK_ACTION_SET_LEGAL_ADDRESS
14
public static final int
TADK_ACTION_SET_RT
3
public static final int
TADK_ACTION_SETTRAP
5
public static final int
TADK_ACTION_UNMAP_DIOS
17
public static final int
TADK_ACTION_UNSET_DIOS
19
public static final int
TADK_ACTION_UNSETTRAP
6
public static final int
TADK_ACTION_VECT
0
public static final int
TADK_BC_TO_RT
0
public static final int
TADK_COMMAND_CONFIG
2
public static final int
TADK_COMMAND_GET
0
public static final int
TADK_COMMAND_RTRT
3
public static final int
TADK_COMMAND_SET
1
public static final int
TADK_RESPONSE_AUTO_UPDATE
0
public static final int
TADK_RESPONSE_CONFIG_FAILED
-4
public static final int
TADK_RESPONSE_CONFIG_SUCCESS
4
public static final int
TADK_RESPONSE_FAILED_MODE_RT_BC
-5
public static final int
TADK_RESPONSE_FAILED_RX_BC_RT
-1
public static final int
TADK_RESPONSE_FAILED_RX_BOCAT
-3
public static final int
TADK_RESPONSE_FAILED_TX_RT_BC
-2
public static final int
TADK_RESPONSE_GEN_ERROR
-100
public static final int
TADK_RESPONSE_SUCCESSFULL_MODE_RT_BC
5
public static final int
TADK_RESPONSE_SUCCESSFULL_RX_BC_RT
1
public static final int
TADK_RESPONSE_SUCCESSFULL_RX_BOCAT
3
public static final int
TADK_RESPONSE_SUCCESSFULL_TX_RT_BC
2
public static final int
TADK_RT_TO_BC
1


Home
@blockmason/link-workshop-tor-react 2019.4.27
Stamp Collector
Demo app for Blockmason Link using React with Redux.
Home


mart
home
about us
page
shop
blog
contact us
affordable paris tours
city tours /tour tickets /tour guides
new collection
blue tshirt
$26
add to cart
woman shirt
$31
add to cart
yellow tshirt
$21
add to cart
yellow tshirt
$21
add to cart


I am currently a Ph.D. student in Data Science in Universidad Loyola Andalucía.
cperalesg at outlook.es
Department of Quantitative Methods University Loyola Andalucía Sevilla Spain


== Validation ==
'''Correlation between Tools'''
When working with multiple tools the need for correlation of findings can become complicated. Correlation can be broken down into two distinct styles, specific and categorical correlation of items, both are useful based on the type of information, metrics and statistics you are trying to gather on a given target.
Specific correlation relates to a specific definable issue such as vulnerability ID, CVE, OSVDB, vendor indexing numbers, known issue with a software product, etc. and can be grouped with micro factors such as hostname, IP, FQDN, MAC Address etc. An example of this would be grouping the findings for host x by CVE number as they would index the same issue in multiple tools.
Categorical correlation relates to a categorical structure for issues such as in compliance frameworks (i.e. NIST SP 800-53, DoD 5300 Series, PCI, HIPPA, OWASP List, etc.) that allow you to group items by macro factors such as vulnerability types, configuration issues, etc. An example of this would be grouping all the findings for hosts with default passwords into a group for password complexity within NIST 800-53 (IA-5).
In most cases penetration testers are going to focus on the micro issues of specific vulnerabilities found in redundancy between multiple tools on the same host. This redundancy can skew the statistical results in the test output leading to a false increased risk profile.
The inverse of this is with an over reduction or simplification in macro correlation (i.e. top 10/20 lists) as the results can skew the output resulting in a false reduced risk profile.
'''Manual Testing/Protocol Specific'''
'''VPN'''
''Fingerprinting''
Fingerprinting is useful to determine the type of VPN device and correct version of code released installed. By accurately fingerprinting the device, proper research and analysis can then be conducted against the target system.
''Authentication''
VPN devices can operate with various forms of authentication. Using VPN toolkits that are not part of conventional vulnerability assessment tools allow for proper identification of the authentication mechanisms and determine weaknesses that may exist such as pre-shared keys or default group IDs.
'''Citrix'''
''Enumeration''
Many default installations and poorly configured Citrix appliances provide a means to enumerate published applications and determine valid usernames that are configured to authenticate to the device. This information becomes crucial during brute force attacks and attempts to break out of predefined profiles for authorized users.
'''DNS'''
Domain Name Systems can offer an abundance of information to an attacker when they are not properly hardened. Version information allow for proper identification and accurate research analysis. Weaknesses such as zone transfers provide an exhaustive list of additional targets for attack as well as information leakage of potentially sensitive data pertaining to the target organization.
'''Web'''
Web services provide a large landscape for an attacker. Unlike most other protocols and services, web services are often found running on multiple ports of a single system. Administrators may focus their hardening on the common ports for web services or published directories and neglect to properly harden additional attributes. Web services should always be reviewed in a manual fashion as automated assessment tools are not capable of identifying most weaknesses in their services.
'''Mail'''
Mail servers can provide an abundance of information about a target organization. Using inherent functions in the target device, confirmation of valid accounts can be conducted as well as developing a list of potential usernames for additional attacks on other systems. Vulnerabilities such as mail relaying can be leveraged for additional attacks on the organization such as phishing. Often, mail servers will provide a web interface for remote access that can be targeted in brute force campaigns.
'''Attack Avenues'''
'''Creation of attack trees'''
During a security assessment, it is crucial to the accuracy of the final report to develop an attack tree as testing progresses throughout the engagement. As new systems, services and potential vulnerabilities are identified; an attack tree should be developed and regularly updated. This is especially important during the exploitation phases of the engagement as one point of entry that materializes could be repeated across other vectors mapped out during the development of the attack tree.
'''Isolated Lab Testing'''
The accuracy of vulnerability analysis and exploitation is substantially greater when replicated environments are setup in an isolated lab. Often times, systems may be hardened with specific control sets or additional protection mechanisms. By designing a lab that mimics that of the target organization, the consultant can ensure that the vulnerabilities identified and exploits attempted against the desired targets are reliable and lessen the opportunity for inaccurate results or system inoperability.
'''Visual Confirmation'''
''Manual Connection with Review''
While proper correlation can help reduce false findings and increase overall accuracy, there is no substitute for visually inspecting a target system. Assessment tools are designed to review the results of a protocol/service connection or the response and compare to known signatures of vulnerabilities. However, tools are not always accurate in identifying services on uncommon ports or custom logic that may be built into an application. By manually assessing a target system, its services available and the applications that provide functionality for those services, a tester can ensure that proper validation and vulnerability identification have been completed.


Sign up form
Sign up form
First name:
Last name:
Email:
Birthday:
Favourite sport
Select your favourite sport
Football
Tennis
Basketball
Golf
Boxing
Baseball
Rugby
Biography: