Repository: incubator-edgent-website Updated Branches: refs/heads/asf-site da863a762 -> b92976088
from bfa4d7c81810d8f6a09904781b1b9610ce613831 Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/commit/b9297608 Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/tree/b9297608 Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/diff/b9297608 Branch: refs/heads/asf-site Commit: b929760888b5a7187d011669cc02c60113aaa43d Parents: da863a7 Author: Queenie Ma <[email protected]> Authored: Mon Jan 23 10:37:48 2017 -0800 Committer: Queenie Ma <[email protected]> Committed: Mon Jan 23 10:37:48 2017 -0800 ---------------------------------------------------------------------- content/404.html | 2 +- content/algolia_search.json | 4 +- content/docs/committers.html | 2 +- content/docs/common-edgent-operations.html | 2 +- content/docs/community.html | 2 +- content/docs/console.html | 2 +- content/docs/downloads.html | 10 +-- content/docs/edgent-getting-started.html | 74 ++++++++++++++----- content/docs/edgent_index.html | 2 +- content/docs/faq.html | 2 +- content/docs/home.html | 2 +- content/docs/images/Build_Path_Jars.JPG | Bin 157003 -> 87322 bytes content/docs/images/New_Java_Project.JPG | Bin 80080 -> 103655 bytes content/docs/overview.html | 2 +- content/docs/quickstart.html | 2 +- content/docs/samples.html | 2 +- content/docs/search.html | 2 +- content/docs/streaming-concepts.html | 2 +- content/docs/tag_collaboration.html | 2 +- content/docs/tag_content_types.html | 2 +- content/docs/tag_formatting.html | 2 +- content/docs/tag_getting_started.html | 2 +- content/docs/tag_mobile.html | 2 +- content/docs/tag_navigation.html | 2 +- content/docs/tag_publishing.html | 2 +- content/docs/tag_single_sourcing.html | 2 +- content/docs/tag_special_layouts.html | 2 +- content/index.html | 5 +- .../recipe_adaptable_deadtime_filter.html | 2 +- .../recipes/recipe_adaptable_filter_range.html | 2 +- .../recipe_adaptable_polling_source.html | 2 +- ...pe_combining_streams_processing_results.html | 2 +- .../recipes/recipe_concurrent_analytics.html | 2 +- ...ipe_different_processing_against_stream.html | 2 +- .../recipe_dynamic_analytic_control.html | 2 +- .../recipes/recipe_external_filter_range.html | 2 +- content/recipes/recipe_hello_edgent.html | 2 +- content/recipes/recipe_parallel_analytics.html | 2 +- content/recipes/recipe_source_function.html | 2 +- content/recipes/recipe_value_out_of_range.html | 2 +- content/recipes/recipe_writing_a_connector.html | 2 +- content/titlepage.html | 4 +- content/tocpage.html | 2 +- 43 files changed, 104 insertions(+), 65 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/404.html ---------------------------------------------------------------------- diff --git a/content/404.html b/content/404.html index 316c3bf..d8ffe06 100644 --- a/content/404.html +++ b/content/404.html @@ -690,7 +690,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/algolia_search.json ---------------------------------------------------------------------- diff --git a/content/algolia_search.json b/content/algolia_search.json index 2bd439e..7adad08 100644 --- a/content/algolia_search.json +++ b/content/algolia_search.json @@ -65,7 +65,7 @@ "keywords": "", "url": "../docs/downloads", "summary": "", -"body": "Official Apache Edgent releases are available for download from the ASF distribution site. A release consists of a source code bundle and a convenience binary bundle. See the table below for a release's download links.If you just want to use Edgent, it is easiest to download and unpack a binary bundle. The bundle includes the release's javadoc. The javadoc is also accessible online. For more information, please refer to the [Getting started guide](edgent-getting-started)A source bundle contains a README describing how to build the sources.If you want to access the latest unreleased Edgent source or to contribute to the Edgent runtime development, use the [GitHub repository]({{ site.data.project.source_repository_mirror }}). You can also select a particular release version by release tag (e.g., 1.0.0-incubating). See README.md and DEVELOPMENT.md in the repository for more information.See [community](community.html) for more information about contributing to Edgent developme nt.## Apache Edgent ReleasesInformation about verifying the integrity of a bundle can be found at the bottom of the bundle's download page.Download the [KEYS]({{ site.data.downloads.edgent_keys_file_location }}) file for verifying a bundle's PGP signature.| Version | Date | Bundles | Release Notes | Docs | PGP | MD5 | SHA ||:-----------------:|:--------------:|:-------:|:-------------:|:----:|:---:|:---:|:-----:|| 1.0.0-incubating | 2016-12-15 | [Source]({{ site.data.downloads.edgent_1-0-0_dist_location }}) | [1.0.0 Release]({{ site.data.downloads.edgent_1-0-0_release_note }}) | [JavaDoc]({{ site.data.downloads.edgent_1-0-0_doc_location }}) | [ASC]({{ site.data.downloads.edgent_1-0-0_asc_location }}) | [MD5]({{ site.data.downloads.edgent_1-0-0_md5_location }}) | [SHA]({{ site.data.downloads.edgent_1-0-0_sha_location }}) || | | [Binary]({{ site.data.downloads.edgent_1-0-0_bin_dist_location }}) | | | [ASC]({{ site.data.dow nloads.edgent_1-0-0_bin_asc_location }}) | [MD5]({{ site.data.downloads.edgent_1-0-0_bin_md5_location }}) | [SHA]({{ site.data.downloads.edgent_1-0-0_bin_sha_location }}) |" +"body": "Official Apache Edgent releases are available for download from the ASF distribution site. A release consists of a source code bundle and a convenience binary bundle. See the table below for a release's download links.If you just want to use Edgent, it is easiest to download and unpack a binary bundle. The bundle includes the release's Javadoc. The Javadoc is also accessible online. For more information, please refer to the [Getting started guide](edgent-getting-started).A source bundle contains a README describing how to build the sources.If you want to access the latest unreleased Edgent source or contribute to the Edgent runtime development, use the [GitHub repository]({{ site.data.project.source_repository_mirror }}). You can also select a particular release version by release tag (e.g., 1.0.0-incubating). See [README.md](https://github.com/apache/incubator-edgent/blob/master/README.md) and [DEVELOPMENT.md](https://github.com/apache/incubator-edgent/blob/master/DEVELOP MENT.md) in the repository for more information.See the [community](community) page for more information about contributing to Edgent development.## Apache Edgent ReleasesInformation about verifying the integrity of a bundle can be found at the bottom of the bundle's download page.Download the [KEYS]({{ site.data.downloads.edgent_keys_file_location }}) file for verifying a bundle's PGP signature.| Version | Date | Bundles | Release Notes | Docs | PGP | MD5 | SHA ||:-----------------:|:--------------:|:-------:|:-------------:|:----:|:---:|:---:|:-----:|| 1.0.0-incubating | 2016-12-15 | [Source]({{ site.data.downloads.edgent_1-0-0_dist_location }}) | [1.0.0 Release]({{ site.data.downloads.edgent_1-0-0_release_note }}) | [Javadoc]({{ site.data.downloads.edgent_1-0-0_doc_location }}) | [ASC]({{ site.data.downloads.edgent_1-0-0_asc_location }}) | [MD5]({{ site.data.downloads.edgent_1-0-0_md5_location }}) | [SHA]({{ site.data.downloads.edgent_1-0-0_sha_locat ion }}) || | | [Binary]({{ site.data.downloads.edgent_1-0-0_bin_dist_location }}) | | | [ASC]({{ site.data.downloads.edgent_1-0-0_bin_asc_location }}) | [MD5]({{ site.data.downloads.edgent_1-0-0_bin_md5_location }}) | [SHA]({{ site.data.downloads.edgent_1-0-0_bin_sha_location }}) |" }, @@ -78,7 +78,7 @@ "keywords": "", "url": "../docs/edgent-getting-started", "summary": "", -"body": "## What is Apache Edgent?Edgent is an open source programming model and runtime for edge devices that enables you to analyze streaming data on your edge devices. When you analyze on the edge, you can:* Reduce the amount of data that you transmit to your analytics server* Reduce the amount of data that you storeFor more information, see the [Edgent overview](home).### Apache Edgent and streaming analyticsThe fundamental building block of an Edgent application is a **stream**: a continuous sequence of tuples (messages, events, sensor readings, and so on).The Edgent API provides the ability to process or analyze each tuple as it appears on a stream, resulting in a derived stream.Source streams are streams that originate data for analysis, such as readings from a device's temperature sensor.Streams are terminated using sink functions that can perform local device control or send information to centralized analytic systems through a message hub.Edgent's primary API is functional where streams are sourced, transformed, analyzed or sinked though functions, typically represented as lambda expressions, such as `reading -> reading 80` to filter temperature readings in Fahrenheit.### Downloading Apache EdgentTo use Edgent you need the Edgent jars. You can either download the Edgent source and build it or you can download a pre-built version of Edgent. See the [download page]({{ site.data.project.download }}).After you have the Edgent jars, you can set up your environment.### Setting up your environmentEnsure that you are running a supported environment. For more information, see the [Edgent overview](home). This guide assumes you're running Java 8.The Edgent Java 8 JAR files are located in the `edgent/java8/lib` directory.1. Create a new Java project in Eclipse, and specify Java 8 as the execution environment JRE: 2. Modify the Java build path to include all of the JAR files in the `edgent\\java8\\lib` directory: Your environment is set up! You can start writing your first Edgent application.## Creating a simple applicationIf you're new to Edgent or to writing streaming applications, the best way to get started is to write a simple program.Edgent is a framework that pushes data analytics and machine learning to *edge devices*. (Edge devices include things like routers, gateways, machines, equipment, sensors, appliances, or vehicles that are connected to a network.) Edgent enables you to process data locally—such as, in a car engine, on an Android phone, or Raspberry Pi—before you send data over a network.For example, if your device takes temperature readings from a sensor 1,000 times per second, it is more efficient to process the data locally and send only interesting or unexpected results over the network. To simulate this, let's define a (simulated) TempSensor class:```javaimport java.util.Random;import org.apache.edgent.function.Supplier;/** * Every time get() is called, TempSensor generates a temperature reading. */ public class TempSensor implements Supplier { double currentTemp = 65.0; Random rand; TempSensor(){ rand = new Random(); } @Override public Double get() { // Change the current temperature some random amount double newTemp = rand.nextGaussian() + currentTemp; currentTemp = newTemp; return currentTemp; }}```Every time you call `TempSensor.get()`, it returns a new temperature reading. The continuous temperature readings are a stream of data that an Edgent application can process.Our sample Edgent application processes this stream by filtering the data and printing the results. Let's define a TempSensorApplication class for the application:```javaimport java.util.concurrent.TimeUnit;import org.apache.edgent.providers.direct.DirectProvider;import org.apache.edgent.topology.TStream;import org.apache.edgent.topology.Topology;public class TempSensorApplication { public static void main(String[] args) throws Exception { TempS ensor sensor = new TempSensor(); DirectProvider dp = new DirectProvider(); Topology topology = dp.newTopology(); TStream tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS); TStream filteredReadings = tempReadings.filter(reading -> reading 80); filteredReadings.print(); dp.submit(topology); }}```To understand how the application processes the stream, let's review each line.### Specifying a providerYour first step when you write an Edgent application is to create a [`DirectProvider`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/providers/direct/DirectProvider.html):```javaDirectProvider dp = new DirectProvider();```A `Provider` is an object that contains information on how and where your Edgent application will run. A `DirectProvider` is a type of Provider that runs your application directly within the current virtual machine when its `submit()` method is called.### Creating a topologyAdditionally a Provider is used to create a [`Topology`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/topology/Topology.html) instance:```javaTopology topology = dp.newTopology();```In Edgent, `Topology` is a container that describes the structure of your application:* Where the streams in the application come from* How the data in the stream is modifiedIn the TempSensor application above, we have exactly one data source: the `TempSensor` object. We define the source stream by calling `topology.poll()`, which takes both a `Supplier` function and a time parameter to indicate how frequently readings should be taken. In our case, we read from the sensor every millisecond:```javaTStream tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS);```### Defining the `TStream` objectCalling `topology.poll()` to define a source stream creates a `TStream` instance, which represents the series of readings taken from the temperature sensor.A streaming application can run i ndefinitely, so the `TStream` might see an arbitrarily large number of readings pass through it. Because a `TStream` represents the flow of your data, it supports a number of operations which allow you to modify your data.### Filtering a `TStream`In our example, we want to filter the stream of temperature readings, and remove any \"uninteresting\" or expected readings—specifically readings which are above 50 degrees and below 80 degrees. To do this, we call the `TStream`'s `filter` method and pass in a function that returns *true* if the data is interesting and *false* if the data is uninteresting:```javaTStream filteredReadings = tempReadings.filter(reading -> reading 80);```As you can see, the function that is passed to `filter` operates on each tuple individually. Unlike data streaming frameworks like [Apache Spark](https://spark.apache.org/), which operate on a collection of data in batch mode, Edgent achieves low latency processing by manipulating each piece of data as s oon as it becomes available. Filtering a `TStream` produces another `TStream` that contains only the filtered tuples; for example, the `filteredReadings` stream.### Printing to outputWhen our application detects interesting data (data outside of the expected parameters), we want to print results. You can do this by calling the `TStream.print()` method, which prints using `.toString()` on each tuple that passes through the stream:```javafilteredReadings.print();```Unlike `TStream.filter()`, `TStream.print()` does not produce another `TStream`. This is because `TStream.print()` is a **sink**, which represents the terminus of a stream.In addition to `TStream.print()` there are other sink operations that send tuples to an MQTT server, JDBC connection, file, or Kafka cluster. Additionally, you can define your own sink by invoking `TStream.sink()` and passing in your own function.### Submitting your applicationNow that your application has been completely declared, the final step is to r un your application.`DirectProvider` contains a `submit()` method, which runs your application directly within the current virtual machine:```javadp.submit(topology);```After you run your program, you should see output containing only \"interesting\" data coming from your sensor:```49.90403231177259647.9783750403908446.5927233630903146.68154455165293447.400819234155236...```As you can see, all temperatures are outside the 50-80 degree range. In terms of a real-world application, this would prevent a device from sending superfluous data over a network, thereby reducing communication costs.## Further examplesThis example demonstrates a small piece of Edgent's functionality. Edgent supports more complicated topologies, such as topologies that require merging and splitting data streams, or perform operations which aggregate the last *N* seconds of data (for example, calculating a moving average).For more complex examples, see:* [Edgent sample programs](samples)* [Stream processing conce pts](streaming-concepts)* [Common Edgent operations](common-edgent-operations)" +"body": "## What is Apache Edgent?Edgent is an open source programming model and runtime for edge devices that enables you to analyze streaming data on your edge devices. When you analyze on the edge, you can:* Reduce the amount of data that you transmit to your analytics server* Reduce the amount of data that you storeFor more information, see the [Edgent overview](home).### Apache Edgent and streaming analyticsThe fundamental building block of an Edgent application is a **stream**: a continuous sequence of tuples (messages, events, sensor readings, and so on).The Edgent API provides the ability to process or analyze each tuple as it appears on a stream, resulting in a derived stream.Source streams are streams that originate data for analysis, such as readings from a device's temperature sensor.Streams are terminated using sink functions that can perform local device control or send information to centralized analytic systems through a message hub.Edgent's primary API is functional where streams are sourced, transformed, analyzed or sinked though functions, typically represented as lambda expressions, such as `reading -> reading 80` to filter temperature readings in Fahrenheit.### Downloading Apache EdgentTo use Edgent, you need the Edgent JAR files, which you may obtain by completing the following steps.1. Locate the Edgent release you would like to use on the [downloads page]({{ site.data.project.download }})2. In the Bundles column for the desired release: * Click on the _Binary_ link if you simply want to use Edgent. This is the easiest method is to get up and running as it contains a pre-built version of Edgent. * Click on the _Source_ link if you would like access to the Edgent source files. If you choose this method, you must manually build Edgent yourself.3. Download the .tgz file from one of the mirror sites4. Unpack the downloaded file: `tar zxvf apache-edgent-X.X.X-incubating-XXX.tgz`5. Obtain the JARs * If you are using a binary bundle, then the Java 8 JARs are located in `edgent-X.X.X/java8` * If you are using a source bundle, build the source code: 1. Install [Gradle](https://gradle.org/) if it is not yet installed 2. Navigate to the unpacked directory: `cd edgent-X.X.X-src` 3. Run `gradle` to initialize the Gradle wrapper 4. Build the code and Javadoc: `./gradlew assemble` 5. The Java 8 JARs are located in `edgent-X.X.X-src/build/distributions/java8`### Setting up your environmentEnsure that you are running a supported environment. For more information, see the [Edgent overview](home). This guide assumes you're running Java 8. The Edgent Java 8 JAR files are located in either the `edgent-X.X.X/java8` or `edgent-X.X.X-src/build/distributions/java8` directory, depending on whether you downloaded a binary or source bundle.1. Create a new Java project in Eclipse, and specify Java 8 as the execution environment JRE: 2. Include one or more Edgent JARs in your project's build pa th depending on what features your application uses: 1. Include one or more of the topology providers: * `java8/lib/edgent.providers.development.jar` (if using the [DevelopmentProvider]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/providers/development/DevelopmentProvider.html)) * `java8/lib/edgent.providers.direct.jar`(if using the [DirectProvider]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/providers/direct/DirectProvider.html)) * `java8/lib/edgent.providers.iot.jar` (if using the [IotProvider]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/providers/iot/IotProvider.html)) 2. Include the JARs for any Edgent connectors or analytic features you use in `java8/connectors` and `java8/analytics`, respectively 3. Include the JARs for any Edgent utility features you use: * `java8/utils/metrics/lib/edgent.utils.metrics.jar` (for the [org.apache.edgent.metrics]({{ site.docsurl }}/org/apache/{{ site. data.project.unix_name }}/metrics/package-summary.html) package) * `java8/utils/streamscope/lib/edgent.utils.streamscope.jar` (for the [org.apache.edgent.streamscope]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/streamscope/package-summary.html) package) 4. Include the JAR for the [java.util.logging](https://docs.oracle.com/javase/8/docs/api/java/util/logging/package-summary.html) framework for [SLF4J](https://www.slf4j.org/): `java8/ext/slf4j-jdk14-X.X.X.jar` Your environment is set up! You can start writing your first Edgent application.## Creating a simple applicationIf you're new to Edgent or to writing streaming applications, the best way to get started is to write a simple program.Edgent is a framework that pushes data analytics and machine learning to *edge devices*. (Edge devices include things like routers, gateways, machines, equipment, sensors, appliances, or vehicles that are connected to a network.) Edgent enables you to process data loca lly—such as, in a car engine, on an Android phone, or on a Raspberry Pi—before you send data over a network.For example, if your device takes temperature readings from a sensor 1,000 times per second, it is more efficient to process the data locally and send only interesting or unexpected results over the network. To simulate this, let's define a (simulated) TempSensor class:```javaimport java.util.Random;import org.apache.edgent.function.Supplier;/** * Every time get() is called, TempSensor generates a temperature reading. */public class TempSensor implements Supplier { double currentTemp = 65.0; Random rand; TempSensor(){ rand = new Random(); } @Override public Double get() { // Change the current temperature some random amount double newTemp = rand.nextGaussian() + currentTemp; currentTemp = newTemp; return currentTemp; }}```Every time you call `TempSensor.get()`, it returns a new temperature reading. The continu ous temperature readings are a stream of data that an Edgent application can process.Our sample Edgent application processes this stream by filtering the data and printing the results. Let's define a TempSensorApplication class for the application:```javaimport java.util.concurrent.TimeUnit;import org.apache.edgent.providers.direct.DirectProvider;import org.apache.edgent.topology.TStream;import org.apache.edgent.topology.Topology;public class TempSensorApplication { public static void main(String[] args) throws Exception { TempSensor sensor = new TempSensor(); DirectProvider dp = new DirectProvider(); Topology topology = dp.newTopology(); TStream tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS); TStream filteredReadings = tempReadings.filter(reading -> reading 80); filteredReadings.print(); dp.submit(topology); }}```To understand how the application processes the stream, let's review each line.### Specifying a pro viderYour first step when you write an Edgent application is to create a [`DirectProvider`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/providers/direct/DirectProvider.html):```javaDirectProvider dp = new DirectProvider();```A `Provider` is an object that contains information on how and where your Edgent application will run. A `DirectProvider` is a type of Provider that runs your application directly within the current virtual machine when its [`submit()`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/providers/direct/DirectProvider.html#submit-org.apache.{{ site.data.project.unix_name }}.topology.Topology-) method is called.### Creating a topologyAdditionally, a Provider is used to create a [`Topology`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/topology/Topology.html) instance:```javaTopology topology = dp.newTopology();```In Edgent, `Topology` is a container that describes the structure of your appl ication:* Where the streams in the application come from* How the data in the stream is modifiedIn the TempSensorApplication class above, we have exactly one data source: the `TempSensor` object. We define the source stream by calling [`topology.poll()`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/Topology.html#poll-org.apache.{{ site.data.project.unix_name }}.function.Supplier-long-java.util.concurrent.TimeUnit-), which takes both a [`Supplier`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/function/Supplier.html) function and a time parameter to indicate how frequently readings should be taken. In our case, we read from the sensor every millisecond:```javaTStream tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS);```### Defining the `TStream` objectCalling `topology.poll()` to define a source stream creates a `TStream` instance, which represents the series of readings taken from the temperature sensor.A streamin g application can run indefinitely, so the [`TStream`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/topology/TStream.html) might see an arbitrarily large number of readings pass through it. Because a `TStream` represents the flow of your data, it supports a number of operations which allow you to modify your data.### Filtering a `TStream`In our example, we want to filter the stream of temperature readings, and remove any \"uninteresting\" or expected readings—specifically readings which are above 50 degrees and below 80 degrees. To do this, we call the `TStream`'s [`filter`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#filter-org.apache.{{ site.data.project.unix_name }}.function.Predicate-) method and pass in a function that returns *true* if the data is interesting and *false* if the data is uninteresting:```javaTStream filteredReadings = tempReadings.filter(reading -> reading 80);```As you can see, the f unction that is passed to `filter` operates on each tuple individually. Unlike data streaming frameworks like [Apache Spark](https://spark.apache.org/), which operate on a collection of data in batch mode, Edgent achieves low latency processing by manipulating each piece of data as soon as it becomes available. Filtering a `TStream` produces another `TStream` that contains only the filtered tuples; for example, the `filteredReadings` stream.### Printing to outputWhen our application detects interesting data (data outside of the expected parameters), we want to print results. You can do this by calling the [`TStream.print()`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#print--) method, which prints using `.toString()` on each tuple that passes through the stream:```javafilteredReadings.print();```Unlike `TStream.filter()`, `TStream.print()` does not produce another `TStream`. This is because `TStream.print()` is a **sink**, which represents the terminus of a stream.In addition to `TStream.print()` there are other sink operations that send tuples to an MQTT server, JDBC connection, file, or Kafka cluster. Additionally, you can define your own sink by invoking [`TStream.sink()`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#sink-org.apache.{{ site.data.project.unix_name }}.function.Consumer-) and passing in your own function.### Submitting your applicationNow that your application has been completely declared, the final step is to run your application.`DirectProvider` contains a `submit()` method, which runs your application directly within the current virtual machine:```javadp.submit(topology);```After you run your program, you should see output containing only \"interesting\" data coming from your sensor:```49.90403231177259647.9783750403908446.5927233630903146.68154455165293447.400819234155236...```As you can see, all temperatures are outside the 50-80 degree range. In terms of a real-world application, this would prevent a device from sending superfluous data over a network, thereby reducing communication costs.## Further examplesThis example demonstrates a small piece of Edgent's functionality. Edgent supports more complicated topologies, such as topologies that require merging and splitting data streams, or perform operations which aggregate the last *N* seconds of data (for example, calculating a moving average).For more complex examples, see:* [Edgent sample programs](samples)* [Stream processing concepts](streaming-concepts)* [Common Edgent operations](common-edgent-operations)" }, http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/committers.html ---------------------------------------------------------------------- diff --git a/content/docs/committers.html b/content/docs/committers.html index bf7b166..1eeec43 100644 --- a/content/docs/committers.html +++ b/content/docs/committers.html @@ -702,7 +702,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/common-edgent-operations.html ---------------------------------------------------------------------- diff --git a/content/docs/common-edgent-operations.html b/content/docs/common-edgent-operations.html index 6997132..a216d18 100644 --- a/content/docs/common-edgent-operations.html +++ b/content/docs/common-edgent-operations.html @@ -735,7 +735,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/community.html ---------------------------------------------------------------------- diff --git a/content/docs/community.html b/content/docs/community.html index 47ae23d..dc337a1 100644 --- a/content/docs/community.html +++ b/content/docs/community.html @@ -756,7 +756,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/console.html ---------------------------------------------------------------------- diff --git a/content/docs/console.html b/content/docs/console.html index 36f83f7..16c32cc 100644 --- a/content/docs/console.html +++ b/content/docs/console.html @@ -1161,7 +1161,7 @@ Metrics.rateMeter(individualAlerts3.get(0)); <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/downloads.html ---------------------------------------------------------------------- diff --git a/content/docs/downloads.html b/content/docs/downloads.html index 6107e26..9f78810 100644 --- a/content/docs/downloads.html +++ b/content/docs/downloads.html @@ -659,13 +659,13 @@ $('#toc').on('click', 'a', function() { <p>Official Apache Edgent releases are available for download from the ASF distribution site. A release consists of a source code bundle and a convenience binary bundle. See the table below for a release's download links.</p> -<p>If you just want to use Edgent, it is easiest to download and unpack a binary bundle. The bundle includes the release's javadoc. The javadoc is also accessible online. For more information, please refer to the <a href="edgent-getting-started">Getting started guide</a></p> +<p>If you just want to use Edgent, it is easiest to download and unpack a binary bundle. The bundle includes the release's Javadoc. The Javadoc is also accessible online. For more information, please refer to the <a href="edgent-getting-started">Getting started guide</a>.</p> <p>A source bundle contains a README describing how to build the sources.</p> -<p>If you want to access the latest unreleased Edgent source or to contribute to the Edgent runtime development, use the <a href="https://github.com/apache/incubator-edgent">GitHub repository</a>. You can also select a particular release version by release tag (e.g., 1.0.0-incubating). See README.md and DEVELOPMENT.md in the repository for more information.</p> +<p>If you want to access the latest unreleased Edgent source or contribute to the Edgent runtime development, use the <a href="https://github.com/apache/incubator-edgent">GitHub repository</a>. You can also select a particular release version by release tag (e.g., 1.0.0-incubating). See <a href="https://github.com/apache/incubator-edgent/blob/master/README.md">README.md</a> and <a href="https://github.com/apache/incubator-edgent/blob/master/DEVELOPMENT.md">DEVELOPMENT.md</a> in the repository for more information.</p> -<p>See <a href="community.html">community</a> for more information about contributing to Edgent development.</p> +<p>See the <a href="community">community</a> page for more information about contributing to Edgent development.</p> <h2 id="apache-edgent-releases">Apache Edgent Releases</h2> @@ -690,7 +690,7 @@ $('#toc').on('click', 'a', function() { <td style="text-align: center">2016-12-15</td> <td style="text-align: center"><a href="https://www.apache.org/dyn/closer.cgi/incubator/edgent/1.0.0-incubating">Source</a></td> <td style="text-align: center"><a href="https://github.com/apache/incubator-edgent/blob/1.0.0-incubating/RELEASE_NOTES">1.0.0 Release</a></td> -<td style="text-align: center"><a href="https://edgent.incubator.apache.org/javadoc/r1.0.0/index.html">JavaDoc</a></td> +<td style="text-align: center"><a href="https://edgent.incubator.apache.org/javadoc/r1.0.0/index.html">Javadoc</a></td> <td style="text-align: center"><a href="https://www.apache.org/dist/incubator/edgent/1.0.0-incubating/apache-edgent-1.0.0-incubating-src.tgz.asc">ASC</a></td> <td style="text-align: center"><a href="https://www.apache.org/dist/incubator/edgent/1.0.0-incubating/apache-edgent-1.0.0-incubating-src.tgz.md5">MD5</a></td> <td style="text-align: center"><a href="https://www.apache.org/dist/incubator/edgent/1.0.0-incubating/apache-edgent-1.0.0-incubating-src.tgz.sha">SHA</a></td> @@ -738,7 +738,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/edgent-getting-started.html ---------------------------------------------------------------------- diff --git a/content/docs/edgent-getting-started.html b/content/docs/edgent-getting-started.html index 8236875..96851b0 100644 --- a/content/docs/edgent-getting-started.html +++ b/content/docs/edgent-getting-started.html @@ -682,23 +682,63 @@ $('#toc').on('click', 'a', function() { <h3 id="downloading-apache-edgent">Downloading Apache Edgent</h3> -<p>To use Edgent you need the Edgent jars. You can either download the Edgent source and build it or you can download a pre-built version of Edgent. See the <a href="downloads">download page</a>.</p> +<p>To use Edgent, you need the Edgent JAR files, which you may obtain by completing the following steps.</p> -<p>After you have the Edgent jars, you can set up your environment.</p> +<ol> +<li>Locate the Edgent release you would like to use on the <a href="downloads">downloads page</a></li> +<li>In the Bundles column for the desired release: -<h3 id="setting-up-your-environment">Setting up your environment</h3> +<ul> +<li>Click on the <em>Binary</em> link if you simply want to use Edgent. This is the easiest method is to get up and running as it contains a pre-built version of Edgent.</li> +<li>Click on the <em>Source</em> link if you would like access to the Edgent source files. If you choose this method, you must manually build Edgent yourself.</li> +</ul></li> +<li>Download the .tgz file from one of the mirror sites</li> +<li>Unpack the downloaded file: <code>tar zxvf apache-edgent-X.X.X-incubating-XXX.tgz</code></li> +<li>Obtain the JARs + +<ul> +<li>If you are using a binary bundle, then the Java 8 JARs are located in <code>edgent-X.X.X/java8</code></li> +<li>If you are using a source bundle, build the source code: + +<ol> +<li>Install <a href="https://gradle.org/">Gradle</a> if it is not yet installed</li> +<li>Navigate to the unpacked directory: <code>cd edgent-X.X.X-src</code></li> +<li>Run <code>gradle</code> to initialize the Gradle wrapper</li> +<li>Build the code and Javadoc: <code>./gradlew assemble</code></li> +<li>The Java 8 JARs are located in <code>edgent-X.X.X-src/build/distributions/java8</code></li> +</ol></li> +</ul></li> +</ol> -<p>Ensure that you are running a supported environment. For more information, see the <a href="home">Edgent overview</a>. This guide assumes you're running Java 8.</p> +<h3 id="setting-up-your-environment">Setting up your environment</h3> -<p>The Edgent Java 8 JAR files are located in the <code>edgent/java8/lib</code> directory.</p> +<p>Ensure that you are running a supported environment. For more information, see the <a href="home">Edgent overview</a>. This guide assumes you're running Java 8. The Edgent Java 8 JAR files are located in either the <code>edgent-X.X.X/java8</code> or <code>edgent-X.X.X-src/build/distributions/java8</code> directory, depending on whether you downloaded a binary or source bundle.</p> <ol> <li><p>Create a new Java project in Eclipse, and specify Java 8 as the execution environment JRE:</p> -<p><img src="images/New_Java_Project.JPG" style="width:448px;height:589px;"></p></li> -<li><p>Modify the Java build path to include all of the JAR files in the <code>edgent\java8\lib</code> directory:</p> +<p><img src="images/New_Java_Project.jpg"></p></li> +<li><p>Include one or more Edgent JARs in your project's build path depending on what features your application uses:</p> + +<ol> +<li>Include one or more of the topology providers: + +<ul> +<li><code>java8/lib/edgent.providers.development.jar</code> (if using the <a href="/javadoc/latest/org/apache/edgent/providers/development/DevelopmentProvider.html">DevelopmentProvider</a>)</li> +<li><code>java8/lib/edgent.providers.direct.jar</code>(if using the <a href="/javadoc/latest/org/apache/edgent/providers/direct/DirectProvider.html">DirectProvider</a>)</li> +<li><code>java8/lib/edgent.providers.iot.jar</code> (if using the <a href="/javadoc/latest/org/apache/edgent/providers/iot/IotProvider.html">IotProvider</a>)</li> +</ul></li> +<li>Include the JARs for any Edgent connectors or analytic features you use in <code>java8/connectors</code> and <code>java8/analytics</code>, respectively</li> +<li>Include the JARs for any Edgent utility features you use: + +<ul> +<li><code>java8/utils/metrics/lib/edgent.utils.metrics.jar</code> (for the <a href="/javadoc/latest/org/apache/edgent/metrics/package-summary.html">org.apache.edgent.metrics</a> package)</li> +<li><code>java8/utils/streamscope/lib/edgent.utils.streamscope.jar</code> (for the <a href="/javadoc/latest/org/apache/edgent/streamscope/package-summary.html">org.apache.edgent.streamscope</a> package)</li> +</ul></li> +<li>Include the JAR for the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/logging/package-summary.html">java.util.logging</a> framework for <a href="https://www.slf4j.org/">SLF4J</a>: <code>java8/ext/slf4j-jdk14-X.X.X.jar</code></li> +</ol> -<p><img src="images/Build_Path_Jars.JPG" style="width:660px;height:469px;"></p></li> +<p><img src="images/Build_Path_JARs.jpg"></p></li> </ol> <p>Your environment is set up! You can start writing your first Edgent application.</p> @@ -707,7 +747,7 @@ $('#toc').on('click', 'a', function() { <p>If you're new to Edgent or to writing streaming applications, the best way to get started is to write a simple program.</p> -<p>Edgent is a framework that pushes data analytics and machine learning to <em>edge devices</em>. (Edge devices include things like routers, gateways, machines, equipment, sensors, appliances, or vehicles that are connected to a network.) Edgent enables you to process data locally—such as, in a car engine, on an Android phone, or Raspberry Pi—before you send data over a network.</p> +<p>Edgent is a framework that pushes data analytics and machine learning to <em>edge devices</em>. (Edge devices include things like routers, gateways, machines, equipment, sensors, appliances, or vehicles that are connected to a network.) Edgent enables you to process data locally—such as, in a car engine, on an Android phone, or on a Raspberry Pi—before you send data over a network.</p> <p>For example, if your device takes temperature readings from a sensor 1,000 times per second, it is more efficient to process the data locally and send only interesting or unexpected results over the network. To simulate this, let's define a (simulated) TempSensor class:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kn">import</span> <span class="nn">java.util.Random</span><span class="o">;</span> @@ -763,11 +803,11 @@ $('#toc').on('click', 'a', function() { <p>Your first step when you write an Edgent application is to create a <a href="/javadoc/latest/index.html?org/apache/edgent/providers/direct/DirectProvider.html"><code>DirectProvider</code></a>:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">DirectProvider</span> <span class="n">dp</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DirectProvider</span><span class="o">();</span> </code></pre></div> -<p>A <code>Provider</code> is an object that contains information on how and where your Edgent application will run. A <code>DirectProvider</code> is a type of Provider that runs your application directly within the current virtual machine when its <code>submit()</code> method is called.</p> +<p>A <code>Provider</code> is an object that contains information on how and where your Edgent application will run. A <code>DirectProvider</code> is a type of Provider that runs your application directly within the current virtual machine when its <a href="/javadoc/latest/org/apache/edgent/providers/direct/DirectProvider.html#submit-org.apache.edgent.topology.Topology-"><code>submit()</code></a> method is called.</p> <h3 id="creating-a-topology">Creating a topology</h3> -<p>Additionally a Provider is used to create a <a href="/javadoc/latest/index.html?org/apache/edgent/topology/Topology.html"><code>Topology</code></a> instance:</p> +<p>Additionally, a Provider is used to create a <a href="/javadoc/latest/index.html?org/apache/edgent/topology/Topology.html"><code>Topology</code></a> instance:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">Topology</span> <span class="n">topology</span> <span class="o">=</span> <span class="n">dp</span><span class="o">.</span><span class="na">newTopology</span><span class="o">();</span> </code></pre></div> <p>In Edgent, <code>Topology</code> is a container that describes the structure of your application:</p> @@ -777,30 +817,30 @@ $('#toc').on('click', 'a', function() { <li>How the data in the stream is modified</li> </ul> -<p>In the TempSensor application above, we have exactly one data source: the <code>TempSensor</code> object. We define the source stream by calling <code>topology.poll()</code>, which takes both a <code>Supplier</code> function and a time parameter to indicate how frequently readings should be taken. In our case, we read from the sensor every millisecond:</p> +<p>In the TempSensorApplication class above, we have exactly one data source: the <code>TempSensor</code> object. We define the source stream by calling <a href="/javadoc/latest/org/apache/edgent/topology/Topology.html#poll-org.apache.edgent.function.Supplier-long-java.util.concurrent.TimeUnit-"><code>topology.poll()</code></a>, which takes both a <a href="/javadoc/latest/index.html?org/apache/edgent/function/Supplier.html"><code>Supplier</code></a> function and a time parameter to indicate how frequently readings should be taken. In our case, we read from the sensor every millisecond:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">TStream</span><span class="o"><</span><span class="n">Double</span><span class="o">></span> <span class="n">tempReadings</span> <span class="o">=</span> <span class="n">topology</span><span class="o">.</span><span class="na">poll</span><span class="o">(</span><span class="n">sensor</span><span class="o">,</span> <span class="mi">1</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">MILLISECONDS</span><span class="o">);</span> </code></pre></div> <h3 id="defining-the-tstream-object">Defining the <code>TStream</code> object</h3> <p>Calling <code>topology.poll()</code> to define a source stream creates a <code>TStream<Double></code> instance, which represents the series of readings taken from the temperature sensor.</p> -<p>A streaming application can run indefinitely, so the <code>TStream</code> might see an arbitrarily large number of readings pass through it. Because a <code>TStream</code> represents the flow of your data, it supports a number of operations which allow you to modify your data.</p> +<p>A streaming application can run indefinitely, so the <a href="/javadoc/latest/index.html?org/apache/edgent/topology/TStream.html"><code>TStream</code></a> might see an arbitrarily large number of readings pass through it. Because a <code>TStream</code> represents the flow of your data, it supports a number of operations which allow you to modify your data.</p> <h3 id="filtering-a-tstream">Filtering a <code>TStream</code></h3> -<p>In our example, we want to filter the stream of temperature readings, and remove any "uninteresting" or expected readings—specifically readings which are above 50 degrees and below 80 degrees. To do this, we call the <code>TStream</code>'s <code>filter</code> method and pass in a function that returns <em>true</em> if the data is interesting and <em>false</em> if the data is uninteresting:</p> +<p>In our example, we want to filter the stream of temperature readings, and remove any "uninteresting" or expected readings—specifically readings which are above 50 degrees and below 80 degrees. To do this, we call the <code>TStream</code>'s <a href="/javadoc/latest/org/apache/edgent/topology/TStream.html#filter-org.apache.edgent.function.Predicate-"><code>filter</code></a> method and pass in a function that returns <em>true</em> if the data is interesting and <em>false</em> if the data is uninteresting:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">TStream</span><span class="o"><</span><span class="n">Double</span><span class="o">></span> <span class="n">filteredReadings</span> <span class="o">=</span> <span class="n">tempReadings</span><span class="o">.</span><span class="na">filter</span><span class="o">(</span><span class="n">reading</span> <span class="o">-></span> <span class="n">reading</span> <span class="o"><</span> <span class="mi">50</span> <span class="o">||</span> <span class="n">reading</span> <span class="o">></span> <span class="mi">80</span><span class="o">);</span> </code></pre></div> <p>As you can see, the function that is passed to <code>filter</code> operates on each tuple individually. Unlike data streaming frameworks like <a href="https://spark.apache.org/">Apache Spark</a>, which operate on a collection of data in batch mode, Edgent achieves low latency processing by manipulating each piece of data as soon as it becomes available. Filtering a <code>TStream</code> produces another <code>TStream</code> that contains only the filtered tuples; for example, the <code>filteredReadings</code> stream.</p> <h3 id="printing-to-output">Printing to output</h3> -<p>When our application detects interesting data (data outside of the expected parameters), we want to print results. You can do this by calling the <code>TStream.print()</code> method, which prints using <code>.toString()</code> on each tuple that passes through the stream:</p> +<p>When our application detects interesting data (data outside of the expected parameters), we want to print results. You can do this by calling the <a href="/javadoc/latest/org/apache/edgent/topology/TStream.html#print--"><code>TStream.print()</code></a> method, which prints using <code>.toString()</code> on each tuple that passes through the stream:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">filteredReadings</span><span class="o">.</span><span class="na">print</span><span class="o">();</span> </code></pre></div> <p>Unlike <code>TStream.filter()</code>, <code>TStream.print()</code> does not produce another <code>TStream</code>. This is because <code>TStream.print()</code> is a <strong>sink</strong>, which represents the terminus of a stream.</p> -<p>In addition to <code>TStream.print()</code> there are other sink operations that send tuples to an MQTT server, JDBC connection, file, or Kafka cluster. Additionally, you can define your own sink by invoking <code>TStream.sink()</code> and passing in your own function.</p> +<p>In addition to <code>TStream.print()</code> there are other sink operations that send tuples to an MQTT server, JDBC connection, file, or Kafka cluster. Additionally, you can define your own sink by invoking <a href="/javadoc/latest/org/apache/edgent/topology/TStream.html#sink-org.apache.edgent.function.Consumer-"><code>TStream.sink()</code></a> and passing in your own function.</p> <h3 id="submitting-your-application">Submitting your application</h3> @@ -862,7 +902,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/edgent_index.html ---------------------------------------------------------------------- diff --git a/content/docs/edgent_index.html b/content/docs/edgent_index.html index 2e393c3..c892579 100644 --- a/content/docs/edgent_index.html +++ b/content/docs/edgent_index.html @@ -715,7 +715,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/faq.html ---------------------------------------------------------------------- diff --git a/content/docs/faq.html b/content/docs/faq.html index d058e54..7737ecd 100644 --- a/content/docs/faq.html +++ b/content/docs/faq.html @@ -772,7 +772,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/home.html ---------------------------------------------------------------------- diff --git a/content/docs/home.html b/content/docs/home.html index 10c84b6..a679115 100644 --- a/content/docs/home.html +++ b/content/docs/home.html @@ -777,7 +777,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/images/Build_Path_Jars.JPG ---------------------------------------------------------------------- diff --git a/content/docs/images/Build_Path_Jars.JPG b/content/docs/images/Build_Path_Jars.JPG index 4290ba0..f7c1619 100644 Binary files a/content/docs/images/Build_Path_Jars.JPG and b/content/docs/images/Build_Path_Jars.JPG differ http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/images/New_Java_Project.JPG ---------------------------------------------------------------------- diff --git a/content/docs/images/New_Java_Project.JPG b/content/docs/images/New_Java_Project.JPG index d80070f..c535c6d 100644 Binary files a/content/docs/images/New_Java_Project.JPG and b/content/docs/images/New_Java_Project.JPG differ http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/overview.html ---------------------------------------------------------------------- diff --git a/content/docs/overview.html b/content/docs/overview.html index 3f64fb5..6e22f34 100644 --- a/content/docs/overview.html +++ b/content/docs/overview.html @@ -762,7 +762,7 @@ medical device.</li> <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/quickstart.html ---------------------------------------------------------------------- diff --git a/content/docs/quickstart.html b/content/docs/quickstart.html index 034d997..ed64203 100644 --- a/content/docs/quickstart.html +++ b/content/docs/quickstart.html @@ -732,7 +732,7 @@ and Edgent provides a <a href="/javadoc/latest/index.html?org/apache/edgent/conn <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/samples.html ---------------------------------------------------------------------- diff --git a/content/docs/samples.html b/content/docs/samples.html index eb1a1ef..ee4913b 100644 --- a/content/docs/samples.html +++ b/content/docs/samples.html @@ -753,7 +753,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/search.html ---------------------------------------------------------------------- diff --git a/content/docs/search.html b/content/docs/search.html index 67cbb37..80237d9 100644 --- a/content/docs/search.html +++ b/content/docs/search.html @@ -680,7 +680,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/streaming-concepts.html ---------------------------------------------------------------------- diff --git a/content/docs/streaming-concepts.html b/content/docs/streaming-concepts.html index 59066b1..d9d3eb0 100644 --- a/content/docs/streaming-concepts.html +++ b/content/docs/streaming-concepts.html @@ -1441,7 +1441,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_collaboration.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_collaboration.html b/content/docs/tag_collaboration.html index fa3cd3f..d82af42 100644 --- a/content/docs/tag_collaboration.html +++ b/content/docs/tag_collaboration.html @@ -787,7 +787,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_content_types.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_content_types.html b/content/docs/tag_content_types.html index 5dbe297..67b0e18 100644 --- a/content/docs/tag_content_types.html +++ b/content/docs/tag_content_types.html @@ -787,7 +787,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_formatting.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_formatting.html b/content/docs/tag_formatting.html index 5695c01..5429887 100644 --- a/content/docs/tag_formatting.html +++ b/content/docs/tag_formatting.html @@ -787,7 +787,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_getting_started.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_getting_started.html b/content/docs/tag_getting_started.html index de9a6a0..b3a1c13 100644 --- a/content/docs/tag_getting_started.html +++ b/content/docs/tag_getting_started.html @@ -792,7 +792,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_mobile.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_mobile.html b/content/docs/tag_mobile.html index 7db0fb1..bd8c3eb 100644 --- a/content/docs/tag_mobile.html +++ b/content/docs/tag_mobile.html @@ -787,7 +787,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_navigation.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_navigation.html b/content/docs/tag_navigation.html index ab104cc..eb1d54e 100644 --- a/content/docs/tag_navigation.html +++ b/content/docs/tag_navigation.html @@ -787,7 +787,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_publishing.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_publishing.html b/content/docs/tag_publishing.html index 0630b5c..46d4524 100644 --- a/content/docs/tag_publishing.html +++ b/content/docs/tag_publishing.html @@ -787,7 +787,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_single_sourcing.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_single_sourcing.html b/content/docs/tag_single_sourcing.html index 4c6668c..0f1605f 100644 --- a/content/docs/tag_single_sourcing.html +++ b/content/docs/tag_single_sourcing.html @@ -787,7 +787,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/docs/tag_special_layouts.html ---------------------------------------------------------------------- diff --git a/content/docs/tag_special_layouts.html b/content/docs/tag_special_layouts.html index f5348bc..b5d2b61 100644 --- a/content/docs/tag_special_layouts.html +++ b/content/docs/tag_special_layouts.html @@ -787,7 +787,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/index.html ---------------------------------------------------------------------- diff --git a/content/index.html b/content/index.html index 3a40b5c..7898fe1 100644 --- a/content/index.html +++ b/content/index.html @@ -174,7 +174,6 @@ --> <section id="services"> - <div class="content-section-b"> <div class="container"> @@ -182,8 +181,8 @@ <div class="row"> <div class="col-lg-5 col-sm-6"> - <img class="img-responsive center-block" src="http://blog.nycdatascience.com/wp-content/uploads/2016/11/meetuplogo1000.png" alt=""> - </div> + <img class="img-responsive center-block" src="http://blog.nycdatascience.com/wp-content/uploads/2016/11/meetuplogo1000.png" alt=""> + </div> <div class="col-lg-7 col-sm-6"> <h2 ><a href="https://www.meetup.com/SF-Data-Science/events/236682354/">Meetup: Introduction to Apache Edgent at Galvanize</a></h2> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_adaptable_deadtime_filter.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_adaptable_deadtime_filter.html b/content/recipes/recipe_adaptable_deadtime_filter.html index bd363b5..93b5951 100644 --- a/content/recipes/recipe_adaptable_deadtime_filter.html +++ b/content/recipes/recipe_adaptable_deadtime_filter.html @@ -824,7 +824,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_adaptable_filter_range.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_adaptable_filter_range.html b/content/recipes/recipe_adaptable_filter_range.html index 73d89dc..054f339 100644 --- a/content/recipes/recipe_adaptable_filter_range.html +++ b/content/recipes/recipe_adaptable_filter_range.html @@ -798,7 +798,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_adaptable_polling_source.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_adaptable_polling_source.html b/content/recipes/recipe_adaptable_polling_source.html index f5a92fb..d0c7976 100644 --- a/content/recipes/recipe_adaptable_polling_source.html +++ b/content/recipes/recipe_adaptable_polling_source.html @@ -810,7 +810,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_combining_streams_processing_results.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_combining_streams_processing_results.html b/content/recipes/recipe_combining_streams_processing_results.html index cbc96a2..cf75e4a 100644 --- a/content/recipes/recipe_combining_streams_processing_results.html +++ b/content/recipes/recipe_combining_streams_processing_results.html @@ -929,7 +929,7 @@ EMERGENCY! SEE TO PATIENT IMMEDIATELY! <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_concurrent_analytics.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_concurrent_analytics.html b/content/recipes/recipe_concurrent_analytics.html index a665d21..ea36b2d 100644 --- a/content/recipes/recipe_concurrent_analytics.html +++ b/content/recipes/recipe_concurrent_analytics.html @@ -856,7 +856,7 @@ stream -> |-> isolate(1) -> pipeline2 -> |-> barrier(10) -> co <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_different_processing_against_stream.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_different_processing_against_stream.html b/content/recipes/recipe_different_processing_against_stream.html index da76fc6..b54029e 100644 --- a/content/recipes/recipe_different_processing_against_stream.html +++ b/content/recipes/recipe_different_processing_against_stream.html @@ -878,7 +878,7 @@ Gallons of gas: 9.1 <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_dynamic_analytic_control.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_dynamic_analytic_control.html b/content/recipes/recipe_dynamic_analytic_control.html index 92f19fe..cd5c038 100644 --- a/content/recipes/recipe_dynamic_analytic_control.html +++ b/content/recipes/recipe_dynamic_analytic_control.html @@ -730,7 +730,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_external_filter_range.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_external_filter_range.html b/content/recipes/recipe_external_filter_range.html index fc4fbf3..79f7bf3 100644 --- a/content/recipes/recipe_external_filter_range.html +++ b/content/recipes/recipe_external_filter_range.html @@ -792,7 +792,7 @@ optimalTempRange=[77.0..91.0] <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_hello_edgent.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_hello_edgent.html b/content/recipes/recipe_hello_edgent.html index e4b490c..70de39e 100644 --- a/content/recipes/recipe_hello_edgent.html +++ b/content/recipes/recipe_hello_edgent.html @@ -746,7 +746,7 @@ Edgent! <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_parallel_analytics.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_parallel_analytics.html b/content/recipes/recipe_parallel_analytics.html index fb56747..9f6c932 100644 --- a/content/recipes/recipe_parallel_analytics.html +++ b/content/recipes/recipe_parallel_analytics.html @@ -845,7 +845,7 @@ stream -> split(width,splitter) -> |-> isolate(10) -> pipeline-ch1 - <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_source_function.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_source_function.html b/content/recipes/recipe_source_function.html index c0ba31c..a065e10 100644 --- a/content/recipes/recipe_source_function.html +++ b/content/recipes/recipe_source_function.html @@ -761,7 +761,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_value_out_of_range.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_value_out_of_range.html b/content/recipes/recipe_value_out_of_range.html index 337019f..d89bf32 100644 --- a/content/recipes/recipe_value_out_of_range.html +++ b/content/recipes/recipe_value_out_of_range.html @@ -874,7 +874,7 @@ Temperature may not be optimal! It is 77.5°F! <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/recipes/recipe_writing_a_connector.html ---------------------------------------------------------------------- diff --git a/content/recipes/recipe_writing_a_connector.html b/content/recipes/recipe_writing_a_connector.html index 57ede25..ec7e73e 100644 --- a/content/recipes/recipe_writing_a_connector.html +++ b/content/recipes/recipe_writing_a_connector.html @@ -694,7 +694,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/titlepage.html ---------------------------------------------------------------------- diff --git a/content/titlepage.html b/content/titlepage.html index 061b3e4..37fde32 100644 --- a/content/titlepage.html +++ b/content/titlepage.html @@ -660,7 +660,7 @@ $('#toc').on('click', 'a', function() { <div class="printTitleArea"> <div class="printTitle"></div> <div class="printSubtitle"></div> - <div class="lastGeneratedDate">Last generated: January 10, 2017</div> + <div class="lastGeneratedDate">Last generated: January 23, 2017</div> <hr /> <div class="printTitleImage"> @@ -707,7 +707,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/b9297608/content/tocpage.html ---------------------------------------------------------------------- diff --git a/content/tocpage.html b/content/tocpage.html index 122f504..1483b71 100644 --- a/content/tocpage.html +++ b/content/tocpage.html @@ -901,7 +901,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Jan 10, 2017 <br/> + generated: Jan 23, 2017 <br/> </div> </div>
