You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2011/10/13 21:14:00 UTC

svn commit: r1183037 [4/4] - in /incubator/accumulo/site/trunk: ./ cgi-bin/ content/ content/accumulo/ content/accumulo/css/ content/accumulo/images/ content/accumulo/user_manual_1.3-incubating/ content/accumulo/user_manual_1.4-incubating/ lib/ templates/

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/Writing_Accumulo_Clients.mdtext
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/Writing_Accumulo_Clients.mdtext?rev=1183037&view=auto
==============================================================================
--- incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/Writing_Accumulo_Clients.mdtext (added)
+++ incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/Writing_Accumulo_Clients.mdtext Thu Oct 13 19:13:58 2011
@@ -0,0 +1,114 @@
+Title: Accumulo User Manual: Writing Accumulo Clients
+<a id=CHILD_LINKS></a>**Subsections**
+
+* [Writing Data][1]
+* [Reading Data][2]
+
+* * *
+
+## <a id=SECTION00500000000000000000></a> Writing Accumulo Clients
+
+All clients must first identify the Accumulo instance to which they will be communicating. Code to do this is as follows: 
+    
+    
+    String instanceName = "myinstance";
+    String zooServers = "zooserver-one,zooserver-two"
+    Instance inst = new ZooKeeperInstance(instanceName, zooServers);
+    
+    Connector conn = inst.getConnector("user", "passwd");
+    
+
+## <a id=SECTION00510000000000000000></a> Writing Data
+
+Data are written to Accumulo by creating Mutation objects that represent all the changes to the columns of a single row. The changes are made atomically in the TabletServer. Clients then add Mutations to a BatchWriter which submits them to the appropriate TabletServers. 
+
+Mutations can be created thus: 
+    
+    
+    Text rowID = new Text("row1");
+    Text colFam = new Text("myColFam");
+    Text colQual = new Text("myColQual");
+    ColumnVisibility colVis = new ColumnVisibility("public");
+    long timestamp = System.currentTimeMillis();
+    
+    Value value = new Value("myValue".getBytes());
+    
+    Mutation mutation = new Mutation(rowID);
+    mutation.put(colFam, colQual, colVis, timestamp, value);
+    
+
+### <a id=SECTION00511000000000000000></a> BatchWriter
+
+The BatchWriter is highly optimized to send Mutations to multiple TabletServers and automatically batches Mutations destined for the same TabletServer to amortize network overhead. Care must be taken to avoid changing the contents of any Object passed to the BatchWriter since it keeps objects in memory while batching. 
+
+Mutations are added to a BatchWriter thus: 
+    
+    
+    long memBuf = 1000000L; // bytes to store before sending a batch
+    long timeout = 1000L; // milliseconds to wait before sending
+    int numThreads = 10;
+    
+    BatchWriter writer =
+        conn.createBatchWriter("table", memBuf, timeout, numThreads)
+    
+    writer.add(mutation);
+    
+    writer.close();
+    
+
+An example of using the batch writer can be found at   
+accumulo/docs/examples/README.batch 
+
+## <a id=SECTION00520000000000000000></a> Reading Data
+
+Accumulo is optimized to quickly retrieve the value associated with a given key, and to efficiently return ranges of consecutive keys and their associated values. 
+
+### <a id=SECTION00521000000000000000></a> Scanner
+
+To retrieve data, Clients use a Scanner, which provides acts like an Iterator over keys and values. Scanners can be configured to start and stop at particular keys, and to return a subset of the columns available. 
+    
+    
+    // specify which visibilities we are allowed to see
+    Authorizations auths = new Authorizations("public");
+    
+    Scanner scan =
+        conn.createScanner("table", auths);
+    
+    scan.setRange(new Range("harry","john"));
+    scan.fetchFamily("attributes");
+    
+    for(Entry<Key,Value> entry : scan) {
+        String row = e.getKey().getRow();
+        Value value = e.getValue();
+    }
+    
+
+### <a id=SECTION00522000000000000000></a> BatchScanner
+
+For some types of access, it is more efficient to retrieve several ranges simultaneously. This arises when accessing a set of rows that are not consecutive whose IDs have been retrieved from a secondary index, for example. 
+
+The BatchScanner is configured similarly to the Scanner; it can be configured to retrieve a subset of the columns available, but rather than passing a single Range, BatchScanners accept a set of Ranges. It is important to note that the keys returned by a BatchScanner are not in sorted order since the keys streamed are from multiple TabletServers in parallel. 
+    
+    
+    ArrayList<Range> ranges = new ArrayList<Range>();
+    // populate list of ranges ...
+    
+    BatchScanner bscan =
+        conn.createBatchScanner("table", auths, 10);
+    
+    bscan.setRanges(ranges);
+    bscan.fetchFamily("attributes");
+    
+    for(Entry<Key,Value> entry : scan)
+        System.out.println(e.getValue());
+    
+
+An example of the BatchScanner can be found at   
+accumulo/docs/examples/README.batch   
+
+
+* * *
+
+   [1]: Writing_Accumulo_Clients.html#SECTION00510000000000000000
+   [2]: Writing_Accumulo_Clients.html#SECTION00520000000000000000
+

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/accumulo_user_manual.mdtext
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/accumulo_user_manual.mdtext?rev=1183037&view=auto
==============================================================================
--- incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/accumulo_user_manual.mdtext (added)
+++ incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/accumulo_user_manual.mdtext Thu Oct 13 19:13:58 2011
@@ -0,0 +1,42 @@
+Title: Accumulo User Manual: accumulo user manual
+   
+Version 1.4
+
+  
+
+
+* * *
+
+<a id=CHILD_LINKS></a>
+
+* [Contents][1]
+* [Introduction][2]
+* [Accumulo Design][3]
+* [Accumulo Shell][4]
+* [Writing Accumulo Clients][5]
+* [Table Configuration][6]
+* [Table Design][7]
+* [High-Speed Ingest][8]
+* [Analytics][9]
+* [Security][10]
+* [Administration][11]
+* [Shell Commands][12]
+
+  
+
+
+* * *
+
+   [1]: Contents.html
+   [2]: Introduction.html
+   [3]: Accumulo_Design.html
+   [4]: Accumulo_Shell.html
+   [5]: Writing_Accumulo_Clients.html
+   [6]: Table_Configuration.html
+   [7]: Table_Design.html
+   [8]: High_Speed_Ingest.html
+   [9]: Analytics.html
+   [10]: Security.html
+   [11]: Administration.html
+   [12]: Shell_Commands.html
+

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/data_distribution.png
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/data_distribution.png?rev=1183037&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/data_distribution.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/failure_handling.png
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/failure_handling.png?rev=1183037&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/failure_handling.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img1.png
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img1.png?rev=1183037&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img1.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img2.png
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img2.png?rev=1183037&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img3.png
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img3.png?rev=1183037&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img3.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img4.png
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img4.png?rev=1183037&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img4.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img5.png
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img5.png?rev=1183037&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/img5.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/index.mdtext
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/index.mdtext?rev=1183037&view=auto
==============================================================================
--- incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/index.mdtext (added)
+++ incubator/accumulo/site/trunk/content/accumulo/user_manual_1.4-incubating/index.mdtext Thu Oct 13 19:13:58 2011
@@ -0,0 +1,42 @@
+Title: Accumulo User Manual: index
+   
+Version 1.4
+
+  
+
+
+* * *
+
+<a id=CHILD_LINKS></a>
+
+* [Contents][1]
+* [Introduction][2]
+* [Accumulo Design][3]
+* [Accumulo Shell][4]
+* [Writing Accumulo Clients][5]
+* [Table Configuration][6]
+* [Table Design][7]
+* [High-Speed Ingest][8]
+* [Analytics][9]
+* [Security][10]
+* [Administration][11]
+* [Shell Commands][12]
+
+  
+
+
+* * *
+
+   [1]: Contents.html
+   [2]: Introduction.html
+   [3]: Accumulo_Design.html
+   [4]: Accumulo_Shell.html
+   [5]: Writing_Accumulo_Clients.html
+   [6]: Table_Configuration.html
+   [7]: Table_Design.html
+   [8]: High_Speed_Ingest.html
+   [9]: Analytics.html
+   [10]: Security.html
+   [11]: Administration.html
+   [12]: Shell_Commands.html
+

Added: incubator/accumulo/site/trunk/lib/path.pm
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/lib/path.pm?rev=1183037&view=auto
==============================================================================
--- incubator/accumulo/site/trunk/lib/path.pm (added)
+++ incubator/accumulo/site/trunk/lib/path.pm Thu Oct 13 19:13:58 2011
@@ -0,0 +1,40 @@
+package path;
+use ASF::Value;
+
+# taken from django's url.py
+
+our @patterns = (
+	[qr!\.mdtext$!, single_narrative => { template => "single_narrative.html" }],
+
+#	[qr!^/accumulo/sitemap\.html$!, sitemap => { headers => { title => "Stanbol Sitemap" }} ],
+
+) ;
+
+# for specifying interdependencies between files
+
+#our %dependencies = (
+#    "/accumulo/sitemap.html" => [ grep s!^content!!, glob "content/accumulo/*.mdtext" ],
+#);
+
+1;
+
+=head1 LICENSE
+
+           Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+
+             http://www.apache.org/licenses/LICENSE-2.0
+
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+

Added: incubator/accumulo/site/trunk/lib/view.pm
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/lib/view.pm?rev=1183037&view=auto
==============================================================================
--- incubator/accumulo/site/trunk/lib/view.pm (added)
+++ incubator/accumulo/site/trunk/lib/view.pm Thu Oct 13 19:13:58 2011
@@ -0,0 +1,201 @@
+package view;
+
+#
+# BUILD CONSTRAINT:  all views must return $content, $extension.
+# additional return values (as seen below) are optional.  However,
+# careful use of symlinks and dependency management in path.pm can
+# resolve most issues with this constraint.
+#
+
+use strict;
+use warnings;
+use Dotiac::DTL qw/Template/;
+use Dotiac::DTL::Addon::markup;
+use ASF::Util qw/read_text_file shuffle/;
+use File::Temp qw/tempfile/;
+use LWP::Simple;
+
+push @Dotiac::DTL::TEMPLATE_DIRS, "templates";
+
+# This is most widely used view.  It takes a
+# 'template' argument and a 'path' argument.
+# Assuming the path ends in foo.mdtext, any files
+# like foo.page/bar.mdtext will be parsed and
+# passed to the template in the "bar" (hash)
+# variable.
+
+sub single_narrative {
+    my %args = @_;
+    my $file = "content$args{path}";
+    my $template = $args{template};
+    $args{path} =~ s/\.mdtext$/\.html/;
+    $args{breadcrumbs} = breadcrumbs($args{path});
+
+    read_text_file $file, \%args;
+
+    my $page_path = $file;
+    $page_path =~ s/\.[^.]+$/.page/;
+    if (-d $page_path) {
+        for my $f (grep -f, glob "$page_path/*.mdtext") {
+            $f =~ m!/([^/]+)\.mdtext$! or die "Bad filename: $f\n";
+            $args{$1} = {};
+            read_text_file $f, $args{$1};
+        }
+    }
+
+#	$args{sidenav} = {};
+#	read_text_file "templates/sidenav.mdtext", $args{sidenav} ;
+
+#	select STDOUT ;
+#	$| = 1 ;
+#	for my $ke (keys %args) {
+#		print STDOUT "$ke \n";
+#	}
+
+    return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
+}
+
+# Has the same behavior as the above for foo.page/bar.txt
+# files, parsing them into a bar variable for the template.
+# Otherwise presumes the template is the path.
+
+sub news_page {
+    my %args = @_;
+    my $template = "content$args{path}";
+    $args{breadcrumbs} = breadcrumbs($args{path});
+
+    my $page_path = $template;
+    $page_path =~ s/\.[^.]+$/.page/;
+    if (-d $page_path) {
+        for my $f (grep -f, glob "$page_path/*.mdtext") {
+            $f =~ m!/([^/]+)\.mdtext$! or die "Bad filename: $f\n";
+            $args{$1} = {};
+            read_text_file $f, $args{$1};
+        }
+    }
+
+    for ((fetch_doap_url_list())[0..2]) {
+        push @{$args{projects}}, parse_doap($_);
+    }
+
+    return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
+}
+
+sub sitemap {
+    my %args = @_;
+    my $template = "content$args{path}";
+    $args{breadcrumbs} .= breadcrumbs($args{path});
+    my $dir = $template;
+    $dir =~ s!/[^/]+$!!;
+    opendir my $dh, $dir or die "Can't opendir $dir: $!\n";
+    my %data;
+    for (map "$dir/$_", grep $_ ne "." && $_ ne ".." && $_ ne ".svn", readdir $dh) {
+        if (-f and /\.mdtext$/) {
+            my $file = $_;
+            $file =~ s/^content//;
+            no warnings 'once';
+            for my $p (@path::patterns) {
+                my ($re, $method, $args) = @$p;
+                next unless $file =~ $re;
+                my $s = view->can($method) or die "Can't locate method: $method\n";
+                my ($content, $ext, $vars) = $s->(path => $file, %$args);
+                $file =~ s/\.mdtext$/.$ext/;
+                $data{$file} = $vars;
+                last;
+            }
+        }
+    }
+
+    my $content = "";
+
+    for (sort keys %data) {
+        $content .= "- [$data{$_}->{headers}->{title}]($_)\n";
+        for my $hdr (grep /^#/, split "\n", $data{$_}->{content}) {
+            $hdr =~ /^(#+)\s+([^#]+)?\s+\1\s+\{#([^}]+)\}$/ or next;
+            my $level = length $1;
+            $level *= 4;
+            $content .= " " x $level;
+            $content .= "- [$2]($_#$3)\n";
+        }
+    }
+    $args{content} = $content;
+    return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
+}
+
+sub exports {
+    my %args = @_;
+    my $template = "content$args{path}";
+    $args{breadcrumbs} = breadcrumbs($args{path});
+
+    my $page_path = $template;
+    $page_path =~ s/\.[^.]+$/.page/;
+    if (-d $page_path) {
+        for my $f (grep -f, glob "$page_path/*.mdtext") {
+            $f =~ m!/([^/]+)\.mdtext$! or die "Bad filename: $f\n";
+            $args{$1} = {};
+            read_text_file $f, $args{$1};
+        }
+        $args{table} = `xsltproc $page_path/eccnmatrix.xsl $page_path/eccnmatrix.xml`;
+
+    }
+
+    return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
+}
+
+sub parse_doap {
+    my $url = shift;
+    my $doap = get $url or die "Can't get $url: $!\n";
+    my ($fh, $filename) = tempfile("XXXXXX");
+    print $fh $doap;
+    close $fh;
+    my $result = eval `xsltproc lib/doap2perl.xsl $filename`;
+    unlink $filename;
+    return $result;
+}
+
+sub fetch_doap_url_list {
+    my $xml = get "http://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/files.xml"
+        or die "Can't get doap file list: $!\n";
+    my ($fh, $filename) = tempfile("XXXXXX");
+    print $fh $xml;
+    close $fh;
+    chomp(my @urls = grep /^http/, `xsltproc lib/list2urls.xsl $filename`);
+    unlink $filename;
+    shuffle \@urls;
+    return @urls;
+}
+
+1;
+
+sub breadcrumbs {
+    my @path = split m!/!, shift;
+    pop @path;
+    my @rv;
+    my $relpath = "";
+    for (@path) {
+        $relpath .= "$_/";
+        $_ ||= "Home";
+        push @rv, qq(<a href="$relpath">\u$_</a>);
+    }
+    return join "&nbsp;&raquo&nbsp;", @rv;
+}
+
+
+=head1 LICENSE
+
+           Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+
+             http://www.apache.org/licenses/LICENSE-2.0
+
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.

Added: incubator/accumulo/site/trunk/templates/sidenav.mdtext
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/templates/sidenav.mdtext?rev=1183037&view=auto
==============================================================================
--- incubator/accumulo/site/trunk/templates/sidenav.mdtext (added)
+++ incubator/accumulo/site/trunk/templates/sidenav.mdtext Thu Oct 13 19:13:58 2011
@@ -0,0 +1,32 @@
+# Project
+  - [Home](/accumulo)
+  - [Incubator page](http://incubator.apache.org/projects/accumulo.html)
+<!--  - Download -->
+  - [Features](/accumulo/notable_features.html)
+
+# Community
+ - [Mailing Lists](/accumulo/mailing_list.html)
+ - [Issues](https://issues.apache.org/jira/browse/accumulo)
+<!--  - Get Involved -->
+<!--  - People -->
+
+# Documentation
+ - [Manual v1.3](/accumulo/user_manual_1.3-incubating)
+ - [Manual v1.4](/accumulo/user_manual_1.4-incubating)
+<!-- - [Getting Started](/accumulo/getting_started.html) -->
+<!-- - Javadoc -->
+<!-- - Examples -->
+  - [Screenshots](/accumulo/screenshots.html)
+
+<!--
+# Development
+ - Source code
+ - Building
+-->
+
+# ASF links
+  - [Apache Software Foundation](http://www.apache.org)
+  - [License](http://www.apache.org/licenses/LICENSE-2.0)
+  - [Thanks](http://www.apache.org/foundation/thanks.html)
+  - [Become a Sponsor](http://www.apache.org/foundation/sponsorship.html)
+  

Added: incubator/accumulo/site/trunk/templates/single_narrative.html
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/templates/single_narrative.html?rev=1183037&view=auto
==============================================================================
--- incubator/accumulo/site/trunk/templates/single_narrative.html (added)
+++ incubator/accumulo/site/trunk/templates/single_narrative.html Thu Oct 13 19:13:58 2011
@@ -0,0 +1 @@
+{% extends "skeleton.html" %}

Added: incubator/accumulo/site/trunk/templates/skeleton.html
URL: http://svn.apache.org/viewvc/incubator/accumulo/site/trunk/templates/skeleton.html?rev=1183037&view=auto
==============================================================================
--- incubator/accumulo/site/trunk/templates/skeleton.html (added)
+++ incubator/accumulo/site/trunk/templates/skeleton.html Thu Oct 13 19:13:58 2011
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+  <link href="/accumulo/css/accumulo.css" rel="stylesheet" type="text/css">
+  <title>{% block title %}{{ headers.title }}{% endblock %}</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="banner">
+    <img id="logo" alt="Apache accumulo (Incubating)" src="/accumulo/images/accumulo-logo.png"/>
+    <div id="bannertext">
+&nbsp; 
+    </div><br />
+  </div>
+  
+  <div id="navigation">
+  {% filter markdown %}{% include "sidenav.mdtext" %}{% endfilter %}
+  </div>
+
+  <div id="content">
+    <h1 class="title">{% block title %}{{ headers.title }}{% endblock %}</h1>
+    {% block content %}{{ content|markdown }}{% endblock %}
+  </div>
+
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div> 
+    <a alt="Apache Incubator" href="http://incubator.apache.org">
+      <img id="asf-logo" alt="Apache Incubator" src="/accumulo/images/apache-incubator-logo.png" width="150"/>
+    </a>
+
+  </div>
+
+</body>
+</html>

Propchange: incubator/accumulo/site/trunk/templates/skeleton.html
------------------------------------------------------------------------------
    svn:executable = *