ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dsetrak...@apache.org
Subject svn commit: r1657913 - in /incubator/ignite/site/branches/sidenav: css/all.css features.html scss/all.scss
Date Fri, 06 Feb 2015 18:24:58 GMT
Author: dsetrakyan
Date: Fri Feb  6 18:24:57 2015
New Revision: 1657913

URL: http://svn.apache.org/r1657913
Log:
features patch.

Modified:
    incubator/ignite/site/branches/sidenav/css/all.css
    incubator/ignite/site/branches/sidenav/features.html
    incubator/ignite/site/branches/sidenav/scss/all.scss

Modified: incubator/ignite/site/branches/sidenav/css/all.css
URL: http://svn.apache.org/viewvc/incubator/ignite/site/branches/sidenav/css/all.css?rev=1657913&r1=1657912&r2=1657913&view=diff
==============================================================================
--- incubator/ignite/site/branches/sidenav/css/all.css (original)
+++ incubator/ignite/site/branches/sidenav/css/all.css Fri Feb  6 18:24:57 2015
@@ -7628,261 +7628,6 @@ p {
   }
 }
 
-.sidebar {
-  display: block;
-  padding: 100px 30px;
-}
-.sidebar .nav > li > a {
-  padding: 7px 7px;
-}
-.sidebar a {
-  display: block;
-  font-size: 17px;
-  font-weight: 900;
-  color: #808080;
-  padding-left: 10px;
-}
-.sidebar a:hover {
-  color: #f00;
-  background-color: transparent;
-}
-.sidebar h1 {
-  position: relative;
-  color: #fff;
-  background-color: #f00;
-  padding: 0 10px  0 10px;
-}
-
-.sidebar-sub-menu li {
-  margin-top: 2px;
-  margin-bottom: 2px;
-}
-.sidebar-sub-menu li a {
-  margin-left: 25px;
-  font-size: 16px;
-  font-weight: 400;
-  color: #999;
-}
-
-.main-content {
-  display: block;
-  padding-top: 30px;
-  padding-left: 150px;
-}
-@media (max-width: 992px) {
-  .main-content {
-    margin: 0;
-    padding: 30px 0 0;
-  }
-}
-.main-content h1 {
-  margin: 80px 0 10px;
-}
-.main-content h2 {
-  margin: 0 0 10px;
-}
-.main-content li {
-  padding: 0 0 0 20px;
-  position: relative;
-  position: relative;
-  border-color: #373435;
-}
-.main-content li:before {
-  position: absolute;
-  content: "";
-  width: 0;
-  height: 0;
-  border-color: #373435;
-  top: 4px;
-  left: 100%;
-  margin-left: -1px;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #373435;
-  border-left-color: inherit;
-}
-.main-content li:before {
-  left: 0;
-  margin: 0;
-}
-
-.hpc {
-  margin: -8px 0 0;
-  padding: 80px 0 0;
-  position: relative;
-  z-index: 4;
-}
-@media (max-width: 992px) {
-  .hpc {
-    margin: 0;
-    padding: 30px 0 0;
-  }
-}
-.hpc h2 {
-  position: relative;
-  padding: 3px 0 12px 40px;
-}
-.hpc h2:after {
-  width: 21px;
-  height: 25px;
-  position: absolute;
-  content: "";
-  top: 0;
-  right: auto;
-  bottom: auto;
-  left: 0;
-  background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
-  .hpc h2 {
-    margin: 0;
-  }
-}
-
-.clustering {
-  margin: -8px 0 0;
-  padding: 80px 0 0;
-  border-top: 2px solid #ebebeb;
-  position: relative;
-  z-index: 4;
-}
-@media (max-width: 992px) {
-  .clustering {
-    margin: 0;
-    padding: 30px 0 0;
-  }
-}
-.clustering h2 {
-  position: relative;
-  padding: 3px 0 12px 40px;
-}
-.clustering h2:after {
-  width: 21px;
-  height: 25px;
-  position: absolute;
-  content: "";
-  top: 0;
-  right: auto;
-  bottom: auto;
-  left: 0;
-  background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
-  .clustering h2 {
-    margin: 0;
-  }
-}
-
-.distributedmessaging {
-  margin: -8px 0 0;
-  padding: 80px 0 0;
-  border-top: 2px solid #ebebeb;
-  position: relative;
-  z-index: 4;
-}
-@media (max-width: 992px) {
-  .distributedmessaging {
-    margin: 0;
-    padding: 30px 0 0;
-  }
-}
-.distributedmessaging h2 {
-  position: relative;
-  padding: 3px 0 12px 40px;
-}
-.distributedmessaging h2:after {
-  width: 21px;
-  height: 25px;
-  position: absolute;
-  content: "";
-  top: 0;
-  right: auto;
-  bottom: auto;
-  left: 0;
-  background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
-  .distributedmessaging h2 {
-    margin: 0;
-  }
-}
-
-.distributedevents {
-  margin: -8px 0 0;
-  padding: 80px 0 0;
-  border-top: 2px solid #ebebeb;
-  position: relative;
-  z-index: 4;
-}
-@media (max-width: 992px) {
-  .distributedevents {
-    margin: 0;
-    padding: 30px 0 0;
-  }
-}
-.distributedevents h2 {
-  position: relative;
-  padding: 3px 0 12px 40px;
-}
-.distributedevents h2:after {
-  width: 21px;
-  height: 25px;
-  position: absolute;
-  content: "";
-  top: 0;
-  right: auto;
-  bottom: auto;
-  left: 0;
-  background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
-  .distributedevents h2 {
-    margin: 0;
-  }
-}
-
-.managedservices {
-  margin: -8px 0 0;
-  padding: 80px 0 0;
-  border-top: 2px solid #ebebeb;
-  position: relative;
-  z-index: 4;
-}
-@media (max-width: 992px) {
-  .managedservices {
-    margin: 0;
-    padding: 30px 0 0;
-  }
-}
-.managedservices h2 {
-  position: relative;
-  padding: 3px 0 12px 40px;
-}
-.managedservices h2:after {
-  width: 21px;
-  height: 25px;
-  position: absolute;
-  content: "";
-  top: 0;
-  right: auto;
-  bottom: auto;
-  left: 0;
-  background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
-  .managedservices h2 {
-    margin: 0;
-  }
-}
-
-.tabs ul.nav.nav-tabs li a {
-  color: black;
-}
-.tabs ul.nav.nav-tabs li a:hover {
-  color: #f00;
-}
-
 /*
  ▄▄▄       ██▓███   ▄▄▄     
 ▄████▄   ██░ ██ ▓█████
    ██▓  ▄████  ███▄    █
 ██▓▄▄▄█████▓▓█████
 ▒████▄    ▓██░  ██▒▒████▄
   ▒██▀ ▀█  ▓██░ ██▒▓█
  ▀    ▓██▒ ██▒ ▀█▒ ██ ▀█
  █ ▓██▒▓  ██▒ ▓▒▓█   ▀

Modified: incubator/ignite/site/branches/sidenav/features.html
URL: http://svn.apache.org/viewvc/incubator/ignite/site/branches/sidenav/features.html?rev=1657913&r1=1657912&r2=1657913&view=diff
==============================================================================
--- incubator/ignite/site/branches/sidenav/features.html (original)
+++ incubator/ignite/site/branches/sidenav/features.html Fri Feb  6 18:24:57 2015
@@ -90,21 +90,191 @@ under the License.
                         <td class="datagrid"><a href="#datagrid">Data Grid</a></td>
                         <td class="computegrid"><a href="#computegrid">Compute
Grid</a></td>
                         <td class="servicegrid"><a href="#servicegrid">Service
Grid</a></td>
-                        <td class="streaming"><a href="#streaming">Streaming</a></td>
+                        <td class="streaming"><a href="#datastreaming">Streaming</a></td>
                         <td class="hadoop"><a href="#hadoop">Hadoop Acceleration</a></td>
                     </tr>
                     <tr>
-                        <td class="filesystem"><a href="#clustering">Distributed
File System</a></td>
+                        <td class="filesystem"><a href="#filesystem">Distributed
File System</a></td>
                         <td class="clustering"><a href="#clustering">Advanced
Clustering</a></td>
                         <td class="messaging"><a href="#messaging">Distributed
Messaging</a></td>
-                        <td class="events"><a href="#clustering">Distributed
Events</a></td>
-                        <td class="datastructures"><a href="#clustering">Distributed
Data Structures</a></td>
+                        <td class="events"><a href="#events">Distributed Events</a></td>
+                        <td class="datastructures"><a href="#datastructures">Distributed
Data Structures</a></td>
                     </tr>
                 </tbody>
             </table>
-            <p align="center">
-                <img src="images/fabric.jpg" alt="image description" class="img-responsive"
width="550px" style="padding-top: 30px">
+        </section>
+
+        <section id="datagrid" class="feature-section">
+            <h2>Data Grid</h2>
+            <p>
+                Ignite In-Memory Data Fabric stores their data in-memory as opposed to traditional
+                Database Management Systems that utilize disk as their primary storage mechanism.
+                By utilizing system memory rather than disk, Ignite In-Memory Data Fabric
is orders
+                of magnitude faster than traditional DBMS systems.
             </p>
+            <div class="features-heading">Features:</div>
+            <ul class="features-list">
+                <li>Distributed In-Memory Caching</li>
+                <li>Lightning Fast Performance</li>
+                <li>Elastic Scalability</li>
+                <li>Distributed In-Memory Transactions</li>
+                <li>Distributed In-Memory Queue and Other Data Structures</li>
+                <li>Web Session Clustering</li>
+                <li>Hibernate L2 Cache Integration</li>
+                <li>Tiered Off-Heap Storage</li>
+                <li>Distributed SQL Queries with Distributed Joins</li>
+            </ul>
+
+            <div class="code-examples">
+                <div class="examples-heading">Examples:</div>
+                <!-- Nav tabs -->
+                <ul id="datagrid-examples" class="nav nav-tabs">
+                    <li class="active"><a href="#datagrid-example-basic" aria-controls="home"
data-toggle="tab">Basic Cache Operations</a></li>
+                    <li><a href="#datagrid-example-transactions" aria-controls="profile"
data-toggle="tab">Distributed Transactions</a></li>
+                    <li><a href="#datagrid-example-locks" aria-controls="profile"
data-toggle="tab">Distributed Locking</a></li>
+                    <li><a href="#datagrid-example-queries" aria-controls="profile"
data-toggle="tab">Cache Queries</a></li>
+                </ul>
+
+                <!-- Tab panes -->
+                <div class="tab-content">
+                    <div class="tab-pane active" id="datagrid-example-basic">
+                        <br/>
+                        <p>
+                            Basic cache operations example
+                        </p>
+                        <pre class="brush:java">
+                            try (Ignite ignite = Ignition.start("examples/config/example-cache.xml"))
{
+
+                                final IgniteCache&lt;Integer, String&gt; cache =
ignite.jcache("partitioned");
+
+                                final int keyCnt = 20;
+
+                                // Store keys in cache.
+                                for (int i = 0; i < keyCnt; i++)
+                                    cache.put(i, Integer.toString(i));
+
+                                for (int i = 0; i < keyCnt; i++)
+                                    System.out.println("Got [key=" + i + ", val=" + cache.get(i)
+ ']');
+
+                                // Remove objects from cache.
+                                for (int i = 0; i < keyCnt; i++)
+                                    cache.remove(i);
+                            }
+                        </pre>
+                    </div>
+                    <div class="tab-pane" id="datagrid-example-transactions">
+                        <br/>
+                        <p>
+                            Transaction example demonstrating multiple reads and puts done
atomically
+                        </p>
+                        <pre class="brush:java">
+                            // Clone every object we get from cache, so we can freely update
it.
+                            IgniteCache&lt;Integer, Account&gt; cache = Ignition.ignite().jcache("partitioned");
+
+                            try (IgniteTx tx = Ignition.ignite().transactions().txStart(PESSIMISTIC,
REPEATABLE_READ)) {
+                                Account acct = cache.get(acctId);
+
+                                assert acct != null;
+
+                                // Deposit $20 into account.
+                                acct.setBalance(acct.getBalance() + 20);
+
+                                // Store updated account in cache.
+                                cache.put(acctId, acct);
+
+                                tx.commit();
+                            }
+                        </pre>
+                    </div>
+                    <div class="tab-pane" id="datagrid-example-locks">
+                        <br/>
+                        <p>
+                            Synchronously acquire and release lock by key
+                        </p>
+                        <pre class="brush:java">
+                            final GridCache&lt;String, Integer&gt; cache = Ignition.ignite.jcache("partitioned");
+
+                            cache.lock("Hello");
+
+                            try {
+                                cache.put("Hello", 11);
+                                cache.put("World", 22);
+                            }
+                            finally {
+                                cache.unlock("Hello");
+                            }
+                        </pre>
+                    </div>
+                    <div class="tab-pane" id="datagrid-example-queries">
+                        <br/>
+                        <p>
+                            Index definition example
+                        </p>
+                        <pre class="brush:java">
+                            private static class Person implements Serializable {
+                                /** Person ID (indexed). */
+                                @CacheQuerySqlField(index = true)
+                                private long id;
+
+                                /** Organization ID (indexed). */
+                                @CacheQuerySqlField(index = true)
+                                private long orgId;
+
+                                /** First name (not-indexed). */
+                                @CacheQuerySqlField
+                                private String firstName;
+
+                                ...
+                            }
+                        </pre>
+                        <br/>
+                        <p>
+                            Simple distributed SQL query
+                        </p>
+                        <pre class="brush:java">
+                            try (Ignite ignite = Ignition.start("examples/config/example-cache.xml"))
{
+                                GridCache&lt;Long, Person&gt; cache = ignite.jcache("partitioned");
+
+                                // Create query which selects salaries based on range.
+                                CacheQuery&lt;Map.Entry&lt;Long, Person&gt;&gt;
qry =
+                                    cache.queries().createSqlQuery(Person.class, "salary
> ? and salary <= ?");
+
+                                // Execute queries for salary ranges.
+                                print("People with salaries between 0 and 1000: ", qry.execute(0,
1000).get());
+
+                                print("People with salaries between 1000 and 2000: ", qry.execute(1000,
2000).get());
+
+                            }
+                        </pre>
+                        <br/>
+                        <p>
+                            Distributed query with SQL join between Person and Organization
+                        </p>
+                        <pre class="brush:java">
+                            try (Ignite ignite = Ignition.start("examples/config/example-cache.xml"))
{
+                                GridCache&lt;Long, Person&gt; cache = ignite.jcache("partitioned");
+
+                                // Create query which joins on 2 types to select people for
a specific organization.
+                                CacheQuery&lt;Map.Entry&lt;Long, Person&gt;&gt;
qry =
+                                    cache.queries().createSqlQuery(Person.class, "from Person,
Organization " +
+                                        "where Person.orgId = Organization.id " +
+                                        "and Organization.name = ?");
+
+                                // Execute queries for find employees for different organizations.
+                                print("Following people are 'Ignite' employees: ", qry.execute("Ignite").get());
+
+                                print("Following people are 'Other' employees: ", qry.execute("Other").get());
+
+                            }
+                        </pre>
+                    </div>
+                </div>
+            </div>
+
+            <div class="feature-links">
+                <a target=wiki href="http://doc.gridgain.org/latest/Data+Grid">Learn
More <i class="fa fa-angle-double-right"></i></a>
+                <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
+            </div>
         </section>
 
         <section id="computegrid" class="feature-section">
@@ -128,57 +298,194 @@ under the License.
                 <div class="examples-heading">Examples:</div>
                 <!-- Nav tabs -->
                 <ul id="compute-examples" class="nav nav-tabs">
-                    <li class="active"><a href="#compute-example-1" aria-controls="home"
data-toggle="tab">Example 1</a></li>
-                    <li><a href="#compute-example-2" aria-controls="profile" data-toggle="tab">Example
2</a></li>
+                    <li class="active"><a href="#compute-example-broadcast" aria-controls="home"
data-toggle="tab">Broadcast</a></li>
+                    <li><a href="#compute-example-runnable" aria-controls="profile"
data-toggle="tab">Runnable</a></li>
+                    <li><a href="#compute-example-closure" aria-controls="profile"
data-toggle="tab">Distributed Closure</a></li>
                 </ul>
 
                 <!-- Tab panes -->
                 <div class="tab-content">
-                    <div class="tab-pane active" id="compute-example-1">
+                    <div class="tab-pane active" id="compute-example-broadcast">
                         <pre class="brush:java">
-                            try (Grid grid = GridGain.start("examples/config/example-compute.xml"))
{
-                                // Add unordered message listener on all grid nodes.
-                                grid.message().remoteListen("MyUnorderedTopic", new GridBiPredicate&lt;UUID,
String&gt;() {
-                                    @Override public boolean apply(UUID nodeId, String msg)
{
-                                        println("Unordered message [msg=" + msg + ", fromNodeId="
+ nodeId + ']');
-
-                                        return true; // Return true to continue listening.
+                            try (Ignite ignite = Ignition.start("examples/config/example-compute.xml"))
{
+                                // Print out hello message on all nodes.
+                                ignite.compute().broadcast(
+                                    new IgniteRunnable() {
+                                        @Override public void run() {
+                                            System.out.println(">>> Hello Node!
:)");
+                                        }
                                     }
-                                }).get();
-
-                                // Send unordered messages to all remote nodes.
-                                for (int i = 0; i < 10; i++)
-                                    grid.forRemotes().message().send("MyUnorderedTopic",
Integer.toString(i));
+                                );
                             }
                         </pre>
                     </div>
-                    <div class="tab-pane" id="compute-example-2">
+                    <div class="tab-pane" id="compute-example-runnable">
                         <pre class="brush:java">
-                            try (Grid grid = GridGain.start()) {
-                                // Add ordered message listener on all grid nodes.
-                                grid.message().remoteListen("MyOrderedTopic", new GridBiPredicate&lt;UUID,
String&gt;() {
-                                    @Override public boolean apply(UUID nodeId, String msg)
{
-                                    println("Ordered message [msg=" + msg + ", fromNodeId="
+ nodeId + ']');
-                                        return true; // Return true to continue listening.
-                                    }
-                                }).get();
+                            try (Ignite ignite = Ignition.start("examples/config/example-compute.xml"))
{
+                                Collection&lt;IgniteFuture&gt; futs = new ArrayList<>();
+
+                                // Enable asynchronous mode.
+                                IgniteCompute compute = ignite.compute().withAsync();
 
-                                // Send ordered messages to all remote nodes.
-                                for (int i = 0; i < 10; i++)
-                                    grid.forRemotes().message().sendOrdered("MyOrderedTopic",
Integer.toString(i), 0);
+                                // Iterate through all words in the sentence and create callable
jobs.
+                                for (final String word : "Print words using runnable".split("
")) {
+                                    // Execute runnable on some node.
+                                    compute.run(new IgniteRunnable() {
+                                        @Override public void run() {
+                                            System.out.println(">>> Printing '"
+ word + "' on this node from ignite job.");
+                                        }
+                                    });
+
+                                    futs.add(compute.future());
+                                }
+
+                                // Wait for all futures to complete.
+                                for (IgniteFuture&lt;?&gt; f : futs)
+                                f.get();
+                            }
+                        </pre>
+                    </div>
+                    <div class="tab-pane" id="compute-example-closure">
+                        <pre class="brush:java">
+                            try (Ignite ignite = Ignition.start() {
+                                // Execute closure on all cluster nodes.
+                                Collection&lt;Integer&gt; res = ignite.compute().apply(
+                                    new IgniteClosure&lt;String, Integer&gt;() {
+                                        @Override public Integer apply(String word) {
+                                            System.out.println(">>> Printing '"
+ word + "' on this node from Ignite job.");
+
+                                            // Return number of letters in the word.
+                                            return word.length();
+                                        }
+                                    },
+
+                                    // Job parameters. Ignite will create as many jobs as
there are parameters.
+                                    Arrays.asList("Count characters using closure".split("
"))
+                                );
+
+                                int sum = 0;
+
+                                // Add up individual word lengths received from remote nodes
+                                for (int len : res)
+                                sum += len;
                             }
                         </pre>
                     </div>
                 </div>
             </div>
 
-            <div class="screencasts">
-                <div class="screencasts-heading">Screencasts:</div>
-                <iframe src="http://player.vimeo.com/video/107643054?title=0&byline=0&portrait=0"
width="650" height="365" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
+            <div class="feature-links">
+                <a target=wiki href="http://doc.gridgain.org/latest/Distributed+Computations">Learn
More <i class="fa fa-angle-double-right"></i></a>
+                <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
+            </div>
+        </section>
+
+        <section id="servicegrid" class="feature-section">
+            <h2>Service Grid</h2>
+            <p>
+                Service Grid allow developers to have complete control over services being
deployed on the cluster. It
+                allows you to control how many instances of your service should be deployed
on each grid node.</br><br/>
+                Ignite Service Grid is resilient to topology changes. It guarantees continuous
availability of all
+                deployed services in case of node failures. </br><br/>
+                Service Grid also allows for deployments of arbitrary user-defined data structures
on the grid.
+            </p>
+            <div class="features-heading">Features:</div>
+            <ul class="features-list">
+                <li>Automatically deploy multiple instances of any service on the grid</li>
+                <li>Automatically deploy any service as a singleton for cluster, nodes,
or affinity key</li>
+                <li>Automatically deploy services on node start-up</li>
+                <li>Fault tolerant deployment of all services </li>
+                <li>Un-deploy any of the deployed services</li>
+                <li>Get information about service deployment topology within the grid</li>
+                <li>Create service proxy for accessing remotely deployed managed services</li>
+
+            </ul>
+            <div class="feature-links">
+                <a target=wiki href="http://doc.gridgain.org/latest/Distributed+Services">Learn
More <i class="fa fa-angle-double-right"></i></a>
+                <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
+            </div>
+        </section>
+
+        <section id="datastreaming" class="feature-section">
+            <h2>Streaming</h2>
+            <p>
+                Streaming processing addresses a large family of applications for which traditional
processing methods
+                and disk-based storages, like databases or file systems, fall short. Such
applications are pushing
+                the limits of traditional data processing infrastructures.<br/><br/>
+                Streaming support allows to query into rolling windows of coming data, and
enable users to answer
+                such questions as “What are the 10 most popular products over last 2
hours?”, or “What is the average
+                product price in a certain category for the past day?”.<br/><br/>
+                Another most common use case for stream processing is the ability to control
and properly pipeline
+                distributed events workflow. As events are coming into the system at high
rates, the processing of
+                events is split into multiple stages and each stage has to be properly routed
within a
+                cluster for processing.
+            </p>
+            <div class="features-heading">Features:</div>
+            <ul class="features-list">
+                <li>Programmatic Querying</li>
+                <li>Customizable Event Workflow</li>
+                <li>At-Least-Once Guarantee</li>
+                <li>Sliding Windows</li>
+                <li>Data Indexing</li>
+                <li>Distributed Streamer Queries</li>
+                <li>Co-Location With In-Memory Data Grid</li>
+
+            </ul>
+            <div class="feature-links">
+                <a target=wiki href="http://doc.gridgain.org/latest/Data+Streaming">Learn
More <i class="fa fa-angle-double-right"></i></a>
+                <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
+            </div>
+        </section>
+
+        <section id="filesystem" class="feature-section">
+            <h2>Distributed File System</h2>
+            <p>
+                One of the unique capabilities of Ignite is a file system interface to its
in-memory data called
+                Ignite File System (IFS). IFS delivers similar functionality to Hadoop HDFS,
including the ability to
+                create a fully functional file system in memory. In fact, IFS is at the core
of
+                Ignite’s In-Memory Hadoop Accelerator. <br/><br/>
+                The data from each file is split on separate data blocks and stored in cache.
+                Developers can access each file’s data with a standard Java streaming
API. Moreover, for each part
+                of the file a developer can calculate an affinity and process the file’s
content on corresponding
+                nodes to avoid unnecessary networking.
+            </p>
+            <div class="features-heading">Features:</div>
+            <ul class="features-list">
+                <li>Provides a typical file system “view” on a particular
in-memory cache</li>
+                <li>List directories or get information for a single path</li>
+                <li>Create/move/delete files or directories</li>
+                <li>Write/read data streams into/from files</li>
+            </ul>
+            <div class="feature-links">
+                <a target=wiki href="http://doc.gridgain.org/latest/GGFS">Learn More
<i class="fa fa-angle-double-right"></i></a>
+                <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
             </div>
+        </section>
 
+        <section id="clustering" class="feature-section">
+            <h2>Advanced Clustering</h2>
+            <p>
+                Ignite In-Memory Data Fabric provides one of the most sophisticated clustering
technologies on
+                Java Virtual Machine (JVM).<br/><br/>
+                Ignite allows automatic discovery of nodes whenever they join or leave the
cluster.
+                New nodes become part of the cluster without having to re-start the whole
grid. Similarly, nodes
+                leaving the cluster automatically get disconnected from other nodes. Auto
Discovery helps to scale the
+                cluster when needed, without having to restart the whole cluster.<br/><br/>
+                Developers can leverage from Ignite’s hybrid cloud support that allows
establishing connection
+                between private cloud and public clouds such as Amazon Web Services, providing
them with best of
+                both worlds.
+            </p>
+            <div class="features-heading">Features:</div>
+            <ul class="features-list">
+                <li>Dynamic topology management</li>
+                <li>Automatic discovery on LAN, WAN, and AWS</li>
+                <li>Automatic “split-brain” (i.e. network segmentation) resolution</li>
+                <li>Unicast, broadcast, and group-based message exchange</li>
+                <li>On-demand and direct deployment</li>
+                <li>Support for virtual clusters and node groupings</li>
+            </ul>
             <div class="feature-links">
-                <a target=wiki href="http://doc.gridgain.org/latest/Distributed+Computations">Learn
More <i class="fa fa-angle-double-right"></i></a>
+                <a target=wiki href="http://doc.gridgain.org/latest/Basic+Concepts">Learn
More <i class="fa fa-angle-double-right"></i></a>
                 <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
             </div>
         </section>
@@ -198,7 +505,54 @@ under the License.
                 <li>Cluster-aware message listener auto-deployment </li>
             </ul>
             <div class="feature-links">
-                <a target=wiki href="http://doc.gridgain.org/latest/Distributed+Computations">Learn
More <i class="fa fa-angle-double-right"></i></a>
+                <a target=wiki href="http://doc.gridgain.org/latest/Distributed+Messaging">Learn
More <i class="fa fa-angle-double-right"></i></a>
+                <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
+            </div>
+        </section>
+
+        <section id="events" class="feature-section">
+            <h2>Distributed Events</h2>
+            <p>
+                Distributed events functionality allows applications to receive notifications
about cache events
+                occurring in distributed grid environment. Developers can use this functionality
to get notified
+                about remote tasks executions or any cache data changes within the cluster.<br/><br/>
+                In Ignite, event notifications can be grouped together and sent in batches
and/or timely intervals.
+                Batching notifications helps attain high cache performance and low latency.
+
+            </p>
+            <div class="features-heading">Features:</div>
+            <ul class="features-list">
+                <li>Subscribe local and remote listeners within grid</li>
+                <li>Enable and disable any event</li>
+                <li>Provide local and remote filters for fine-grained control over
notifications</li>
+                <li>Automatic batching of notifications</li>
+            </ul>
+            <div class="feature-links">
+                <a target=wiki href="http://doc.gridgain.org/latest/Distributed+Events">Learn
More <i class="fa fa-angle-double-right"></i></a>
+                <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
+            </div>
+        </section>
+
+        <section id="datastructures" class="feature-section">
+            <h2>Distributed Data Structures</h2>
+            <p>
+                Ignite allows for most of the data structures from java.util.concurrent framework
to be used
+                in a distributed fashion. For example, you can take java.util.concurrent.BlockingDeque
and add something
+                to it on one node and poll it from another node. Or have a distributed Primary
Key generator,
+                which would guarantee uniqueness on all nodes.
+            </p>
+            <div class="features-heading">Features:</div>
+            <ul class="features-list">
+                <li>Concurrent Map</li>
+                <li>Distributed Queues and Sets</li>
+                <li>AtomicLong</li>
+                <li>AtomicSequence</li>
+                <li>AtomicReference</li>
+                <li>ExecutorService</li>
+                <li>CountDownLatch</li>
+            </ul>
+            <div class="feature-links">
+                <a target=wiki href="http://doc.gridgain.org/latest/Distributed+Data+Structures">Learn
More <i class="fa fa-angle-double-right"></i></a>
                 <a href="#features">Top <i class="fa fa-angle-double-up"></i></a>
             </div>
         </section>
@@ -247,13 +601,43 @@ under the License.
     }
 </script>
 <script type="text/javascript">
-    $('ul#compute-examples a[href="compute-example-1"]').click(function (e) {
+    $('ul#compute-examples a[href="compute-example-basic"]').click(function (e) {
+        e.preventDefault();
+
+        $(this).tab('show')
+    });
+
+    $('ul#compute-examples a[href="compute-example-transactions"]').click(function (e) {
+        e.preventDefault();
+
+        $(this).tab('show')
+    });
+
+    $('ul#compute-examples a[href="compute-example-locks"]').click(function (e) {
+        e.preventDefault();
+
+        $(this).tab('show')
+    });
+
+    $('ul#compute-examples a[href="compute-example-queries"]').click(function (e) {
+        e.preventDefault();
+
+        $(this).tab('show')
+    });
+
+    $('ul#compute-examples a[href="compute-example-broadcast"]').click(function (e) {
         e.preventDefault();
 
         $(this).tab('show')
     });
 
-    $('ul#compute-examples a[href="compute-example-2"]').click(function (e) {
+    $('ul#compute-examples a[href="compute-example-runnable"]').click(function (e) {
+        e.preventDefault();
+
+        $(this).tab('show')
+    })
+
+    $('ul#compute-examples a[href="compute-example-closure"]').click(function (e) {
         e.preventDefault();
 
         $(this).tab('show')

Modified: incubator/ignite/site/branches/sidenav/scss/all.scss
URL: http://svn.apache.org/viewvc/incubator/ignite/site/branches/sidenav/scss/all.scss?rev=1657913&r1=1657912&r2=1657913&view=diff
==============================================================================
--- incubator/ignite/site/branches/sidenav/scss/all.scss (original)
+++ incubator/ignite/site/branches/sidenav/scss/all.scss Fri Feb  6 18:24:57 2015
@@ -773,207 +773,6 @@ p {
         }
     }
 }
-.sidebar {
-    display: block;
-    padding: 100px 30px;
-    
-    .nav > li > a {
-      padding: 7px 7px;
-    }
-    a {
-        display: block;
-        font-size: 17px;
-        font-weight: 900;
-        color: #808080;
-        padding-left:10px;
-
-        &:hover{
-            color: $red;
-            background-color: transparent;
-        }
-    }
-    h1 {
-        position: relative;
-        color: $white;
-        background-color: $red;
-        padding: 0 10px  0 10px;
-    }
-}
-.sidebar-sub-menu {
-    li{
-        margin-top: 2px;
-        margin-bottom: 2px;
-        a {
-            margin-left: 25px;
-            font-size: 16px;
-            font-weight: 400;
-            color: #999;
-        }
-    }
-}
-.main-content {
-    display: block;
-    padding-top: 30px;
-    padding-left: 150px;
-
-    @media (max-width: $tablet) {
-        margin: 0;
-        padding: 30px 0 0;
-    }
-
-    h1{
-        margin: 80px 0 10px;
-    }
-    h2{
-        margin: 0 0 10px;
-    }
-
-    li {
-        padding: 0 0 0 20px;
-        position: relative;
-        @include arrow-lazy(right, 5px, $gray-dark, 4px);
-
-        &:before{
-            left: 0;
-            margin: 0;
-        }
-    }
-}
-.hpc {
-    margin: -8px 0 0;
-    padding: 80px 0 0;
-    position: relative;
-    z-index: 4;
-
-    @media (max-width: $tablet) {
-        margin: 0;
-        padding: 30px 0 0;
-    }
-    h2{
-        position: relative;
-        padding: 3px 0 12px 40px;
-
-        &:after {
-            @include size(21px,25px);
-            @include after(0,auto,auto,0);
-            background: url(../images/sprite.png) no-repeat;
-        }
-        @media (max-width: $mobile) {
-            margin: 0;
-        }
-    }
-}
-.clustering {
-    margin: -8px 0 0;
-    padding: 80px 0 0;
-    border-top: 2px solid $gray-light;
-    position: relative;
-    z-index: 4;
-
-    @media (max-width: $tablet) {
-        margin: 0;
-        padding: 30px 0 0;
-    }
-    h2 {
-        position: relative;
-        padding: 3px 0 12px 40px;
-
-        &:after {
-            @include size(21px,25px);
-            @include after(0,auto,auto,0);
-            background: url(../images/sprite.png) no-repeat;
-        }
-        @media (max-width: $mobile) {
-            margin: 0;
-        }
-    }
-}
-.distributedmessaging {
-    margin: -8px 0 0;
-    padding: 80px 0 0;
-    border-top: 2px solid $gray-light;
-    position: relative;
-    z-index: 4;
-
-    @media (max-width: $tablet) {
-        margin: 0;
-        padding: 30px 0 0;
-    }
-    h2 {
-        position: relative;
-        padding: 3px 0 12px 40px;
-
-        &:after {
-            @include size(21px,25px);
-            @include after(0,auto,auto,0);
-            background: url(../images/sprite.png) no-repeat;
-        }
-        @media (max-width: $mobile) {
-            margin: 0;
-        }
-    }
-}
-.distributedevents {
-    margin: -8px 0 0;
-    padding: 80px 0 0;
-    border-top: 2px solid $gray-light;
-    position: relative;
-    z-index: 4;
-
-    @media (max-width: $tablet) {
-        margin: 0;
-        padding: 30px 0 0;
-    }
-    h2 {
-        position: relative;
-        padding: 3px 0 12px 40px;
-
-        &:after {
-            @include size(21px,25px);
-            @include after(0,auto,auto,0);
-            background: url(../images/sprite.png) no-repeat;
-        }
-        @media (max-width: $mobile) {
-            margin: 0;
-        }
-    }
-}
-.managedservices {
-    margin: -8px 0 0;
-    padding: 80px 0 0;
-    border-top: 2px solid $gray-light;
-    position: relative;
-    z-index: 4;
-
-    @media (max-width: $tablet) {
-        margin: 0;
-        padding: 30px 0 0;
-    }
-    h2 {
-        position: relative;
-        padding: 3px 0 12px 40px;
-
-        &:after {
-            @include size(21px,25px);
-            @include after(0,auto,auto,0);
-            background: url(../images/sprite.png) no-repeat;
-        }
-        @media (max-width: $mobile) {
-            margin: 0;
-        }
-    }
-}
-.tabs {
-    ul.nav.nav-tabs li{
-        a {
-            color:black;
-
-            &:hover{
-                color: $red;
-            }
-        }
-    }
-}
 
 @import "ignite";
 



Mime
View raw message