SlideShare ist ein Scribd-Unternehmen logo
1 von 181
CouchApps with
CouchDB, JavaScript
    and HTML5
   Cross-Platform, Offline-Enabled,
        Synchronizable Apps
The Problem Set
Problem:
Multiple Platforms
How to create apps for multiple platforms?
Problem:
Multiple Platforms
How to create apps for multiple platforms?
Problem:
Multiple Platforms
How to create apps for multiple platforms?




   Native app for
  each supported
     platform
Problem:
Multiple Platforms
How to create apps for multiple platforms?




   Native app for
  each supported
     platform
                            Web app
                          optimized for
                       targeted platforms
Problem:
Multiple Platforms
How to create apps for multiple platforms?




   Native app for                                Web app
  each supported                             packaged up as a
     platform
                            Web app           “native” app for
                          optimized for        each platform
                       targeted platforms
Problem:
Multiple Platforms
How to create apps for multiple platforms?




   Native app for                                Web app
  each supported                             packaged up as a
     platform
                            Web app           “native” app for
                          optimized for        each platform
                       targeted platforms
Problem:
Offline Apps
How to create offline apps?
Problem:
Offline Apps
How to create offline apps?
Problem:
Offline Apps
How to create offline apps?



    HTML5:
 Offline Web[1]
Applications




                            1. http://diveintohtml5.info/offline.html
                            2. http://diveintohtml5.info/storage.html
Problem:
Offline Apps
How to create offline apps?



    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]




                                 1. http://diveintohtml5.info/offline.html
                                 2. http://diveintohtml5.info/storage.html
Problem:
Offline Apps
How to create offline apps?

                                  HTML5:
                                 IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]




                                      1. http://diveintohtml5.info/offline.html
                                      2. http://diveintohtml5.info/storage.html
Problem:
Offline Apps
How to create offline apps?

                                  HTML5:
                                 IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]
                                                      HTML5
                                                                :
                                                 Web SQ
                                                 Databa L
                                                       se




                                      1. http://diveintohtml5.info/offline.html
                                      2. http://diveintohtml5.info/storage.html
Problem:
Offline Apps
How to create offline apps?

                                  HTML5:
                                 IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]
                                                      HTML5
                                                                :
                                                 Web SQ
                                                 Databa L
                                                       se
        Embedded
        Database:
         SQLite

                                      1. http://diveintohtml5.info/offline.html
                                      2. http://diveintohtml5.info/storage.html
Problem:
Offline Apps
How to create offline apps?

                                              HTML5:
                                             IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]
                                                                  HTML5
                                                                            :
                                                             Web SQ
                                                             Databa L
                                                                   se
        Embedded                 Embedded
        Database:                Database:
         SQLite                CouchDB/
                               Couchbase
                                                  1. http://diveintohtml5.info/offline.html
                                                  2. http://diveintohtml5.info/storage.html
Problem:
Offline Apps
How to create offline apps?

                                              HTML5:
                                             IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]
                                                                  HTML5
                                                                            :
                                                             Web SQ
                                                             Databa L
                                                                   se
        Embedded                 Embedded
        Database:                Database:
         SQLite                CouchDB/
                               Couchbase
                                                  1. http://diveintohtml5.info/offline.html
                                                  2. http://diveintohtml5.info/storage.html
Problem:
Synchronization
How to synchronize data between devices, servers and users?
Problem:
Synchronization
How to synchronize data between devices, servers and users?
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature                  iCloud
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature                  iCloud




         Domain-speci c
         synchronization
           (e.g. SyncML)
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature                  iCloud




         Domain-speci c                CouchDB/
         synchronization
           (e.g. SyncML)
                                   Couchbase Mobile
                                    synchronization
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature                  iCloud




         Domain-speci c                CouchDB/
         synchronization
           (e.g. SyncML)
                                   Couchbase Mobile
                                    synchronization
One Possible Solution
CouchApp
CouchApp
• web app built using JavaScript, CSS and HTML5
CouchApp
• web app built using JavaScript, CSS and HTML5
• can be packaged up as a “native” app
CouchApp
• web app built using JavaScript, CSS and HTML5
• can be packaged up as a “native” app
• stores data in its own CouchDB/Couchbase database
CouchApp
•   web app built using JavaScript, CSS and HTML5
•   can be packaged up as a “native” app
•   stores data in its own CouchDB/Couchbase database
•   can synchronize with other CouchApps




             +                           =
Creating “Native” Mobile Web Apps
jQuery Mobile: Touch-
Optimized Web Framework
“A uni ed user interface
system across all popular
mobile device platforms,
built on the rock-solid jQuery
and jQuery UI foundation. Its
lightweight code is built with
progressive enhancement,
and has a exible, easily
themeable design.”

From:
http://jquerymobile.com/
PhoneGap
“PhoneGap is an HTML5 app
platform that allows you to
author native applications
with web technologies and get
access to APIs and app stores.
PhoneGap leverages web
technologies developers
already know best... HTML and
JavaScript.”

From:
http://www.phonegap.com/
Building iPhone Apps with
HTML, CSS, and JavaScript
“It's a fact: if you know HTML, CSS,
and JavaScript, you already have
the tools you need to develop
your own iPhone apps. With this
book, you'll learn how to use these
open source web technologies to
design and build apps for the
iPhone and iPod Touch on the
platform of your choice-without
using Objective-C or Cocoa.”

From:
http://shop.oreilly.com/
product/9780596805791.do
Building Android Apps with
HTML, CSS, and JavaScript
“If you know HTML, CSS, and
JavaScript, you already have
the tools you need to develop
Android applications. This
hands-on book shows you how
to use these open source web
standards to design and build
apps that can be adapted for
any Android device – without
having to use Java.”

From:
http://shop.oreilly.com/
product/0636920010067.do
CouchDB and Couchbase
About CouchDB
About CouchDB
• a database that stores JSON "documents"
About CouchDB
• a database that stores JSON "documents"
• accessed through HTTP
About CouchDB
• a database that stores JSON "documents"
• accessed through HTTP
• queried using views produced by Map/Reduce functions
About CouchDB
•   a database that stores JSON "documents"
•   accessed through HTTP
•   queried using views produced by Map/Reduce functions
•   can also serve static les
About CouchDB
•   a database that stores JSON "documents"
•   accessed through HTTP
•   queried using views produced by Map/Reduce functions
•   can also serve static les
•   can act as a "side-effect free" web application server
About Couchbase
About Couchbase
• superset of CouchDB
About Couchbase
• superset of CouchDB
• includes geospatial indexing
About Couchbase
• superset of CouchDB
• includes geospatial indexing
• available as Couchbase Mobile for iOS and Android
Device
Synchronization
CouchApp Examples
Grocery Sync
Demo app that keeps
your shopping list in
sync between devices.

Links:
  • CouchApp code
  • iOS code
  • Android code
  • Presentation about
    Couchbase Mobile
Monocles
Diaspora federated social
web node implemented
as a CouchApp.

Links:
  • Demo
  • Code
  • ReadWriteHack
    Interview with
    Max Ogden:
    Part 1, Part 2
CatMapper
“Geospatially referencing cats”

Links:
  • Demo
  • Code
The CouchDB jQuery Plugin
HTML Skeleton
<!DOCTYPE html>
<html>
 <head>
  <title>jQuery and CouchDB</title>
  <script src="/_utils/script/jquery.js?1.4.2"></script>
  <script src="/_utils/script/jquery.couch.js?0.11.0"></script>
 </head>
 <body>
 </body>
</html>
The same-origin policy[1] dictates that
your HTML and AJAX data (JSON) must
be retrieved from the same origin.




                        1. http://www.w3.org/Security/wiki/Same_Origin_Policy
All Databases
All Databases
$.couch.allDbs({
   success: function(data) {
     console.log(data);
   }
});
All Databases
$.couch.allDbs({
   success: function(data) {
     console.log(data);
   }
});

GET http://localhost:5984/_all_dbs 200 OK
All Databases
$.couch.allDbs({
   success: function(data) {
     console.log(data);
   }
});

GET http://localhost:5984/_all_dbs 200 OK

[
    "_replicator",
    "_users"
]
Create a Database
Create a Database
$.couch.db("mydb").create({
   success: function(data) {
     console.log(data);
   }
});
Create a Database
$.couch.db("mydb").create({
   success: function(data) {
     console.log(data);
   }
});

PUT http://localhost:5984/mydb 201 Created
Create a Database
$.couch.db("mydb").create({
   success: function(data) {
     console.log(data);
   }
});

PUT http://localhost:5984/mydb 201 Created

{"ok":true}
Save a New Document
Save a New Document
$.couch.db("mydb").saveDoc({}, {
   success: function(data) {
     console.log(data);
   }
});
Save a New Document
$.couch.db("mydb").saveDoc({}, {
   success: function(data) {
     console.log(data);
   }
});

POST http://localhost:5984/mydb    201 Created
Save a New Document
$.couch.db("mydb").saveDoc({}, {
   success: function(data) {
     console.log(data);
   }
});

POST http://localhost:5984/mydb    201 Created

{
    "ok":true,
    "id":"e15d848571c8a0352e94738ba6018790",
    "rev":"1-967a00dff5e02add41819138abb3284d"
}
Open a Document
Open a Document
$.couch.db("mydb").openDoc("e15d8485…", {
   success: function(data) {
     console.log(data);
   }
});
Open a Document
$.couch.db("mydb").openDoc("e15d8485…", {
   success: function(data) {
     console.log(data);
   }
});

GET http://localhost:5984/mydb/e15d8485…    200 OK
Open a Document
$.couch.db("mydb").openDoc("e15d8485…", {
   success: function(data) {
     console.log(data);
   }
});

GET http://localhost:5984/mydb/e15d8485…    200 OK

{
    _id="e15d848571c8a0352e94738ba6018790",
    _rev="1-967a00dff5e02add41819138abb3284d"
}
Save an Updated Document
Save an Updated Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "1-967a00dff5e02add41819138abb3284d",
   title: "CouchApps"
};

$.couch.db("mydb").saveDoc(doc, {
   success: function(data) {
     console.log(data);
   }
});
Save an Updated Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "1-967a00dff5e02add41819138abb3284d",
   title: "CouchApps"
};

$.couch.db("mydb").saveDoc(doc, {
   success: function(data) {
     console.log(data);
   }
});

PUT http://localhost:5984/mydb/0a72c9c3…        201 Created
Save an Updated Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "1-967a00dff5e02add41819138abb3284d",
   title: "CouchApps"
};

$.couch.db("mydb").saveDoc(doc, {
   success: function(data) {
     console.log(data);
   }
});

PUT http://localhost:5984/mydb/0a72c9c3…         201 Created

{
    "ok":true,
    "id":"0a72c9c36bd169818dc97ed18b000aa4",
    "rev":"2-516027e3179a22a22e06874c374e8ef0"
}
Remove Document
Remove Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "2-516027e3179a22a22e06874c374e8ef0"
};

$.couch.db("mydb").removeDoc(doc, {
    success: function(data) {
      console.log(data);
   }
});
Remove Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "2-516027e3179a22a22e06874c374e8ef0"
};

$.couch.db("mydb").removeDoc(doc, {
    success: function(data) {
      console.log(data);
   }
});

DELETE http://localhost:5984/mydb/0a72…?rev=2-51… 200 OK
Remove Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "2-516027e3179a22a22e06874c374e8ef0"
};

$.couch.db("mydb").removeDoc(doc, {
    success: function(data) {
      console.log(data);
   }
});

DELETE http://localhost:5984/mydb/0a72…?rev=2-51… 200 OK

{
    "id": "0a72c9c36bd169818dc97ed18b000aa4"
    "ok":true,
    "rev":"3-e9a5aa1c486eee23c84fa028bc904991"
}
Changes
Changes
$.couch.db("mydb").changes().onChange(function(data) {
   console.log(data);
});
Changes
$.couch.db("mydb").changes().onChange(function(data) {
   console.log(data);
});

GET http://localhost:5984/mydb/_changes
?heartbeat=10000&feed=longpoll&since=34     200 OK
Changes
$.couch.db("mydb").changes().onChange(function(data) {
   console.log(data);
});

GET http://localhost:5984/mydb/_changes
?heartbeat=10000&feed=longpoll&since=34     200 OK

{ "results":[
     { "seq":35,
       "id":"d12ee5ea1df6baa2b06451f44a01b7b5",
       "changes":[
         { "rev":"1-967a00dff5e02add41819138abb3284d" }
       ]
     }
  ],
  "last_seq":35
}
Documentation
CouchDB jQuery Plugin Reference
http://bradley-holt.com/2011/07/couchdb-jquery-plugin-reference/

jQuery CouchDB jsDoc Reference
http://daleharvey.github.com/jquery.couch.js-docs/symbols/index.html
CouchApp Tooling
Compiling and Pushing
a CouchApp
Install the CouchApp Tool
Install the CouchApp Tool
$ sudo easy_install pip
Install the CouchApp Tool
$ sudo easy_install pip

$ sudo pip install couchapp
Generate a CouchApp
Generate a CouchApp
$ couchapp generate tutorial
Generate a CouchApp
$ couchapp generate tutorial

2011-09-27 11:54:12 [INFO] /tutorial generated.
Generate a CouchApp
$ couchapp generate tutorial

2011-09-27 11:54:12 [INFO] /tutorial generated.

$ cd tutorial
Generated Files
Generated Files
$ tree -FL 1
Generated Files
$ tree -FL 1

.
      README.md
      _attachments/
      _id
      couchapp.json
      evently/
      language
      lists/
      shows/
      updates/
      vendor/
README.md

Generated by CouchApp
CouchApps are web applications which can be served directly
from CouchDB. This gives them the nice property of replicating
just like any other data stored in CouchDB. They are also simple
to write as they can use the built-in jQuery libraries and plugins
that ship with CouchDB.
More info about CouchApps here.

Deploying this app
Assuming you just cloned this app from git, and you have
changed into the app directory in your terminal, you want to push
Attachments
Attachments
$ tree -F _attachments
Attachments
$ tree -F _attachments

_attachments
       index.html
       style/
         main.css

1 directory, 2 files
Vendor Code
Vendor Code
$ tree -FL 2 vendor
Vendor Code
$ tree -FL 2 vendor

vendor
      couchapp/
         _attachments/
         evently/
         lib/
         metadata.json

4 directories, 1 file
Map/Reduce Views
Map/Reduce Views
$ tree -F views
Map/Reduce Views
$ tree -F views

views
        recent-items/
          map.js

1 directory, 1 file
Map Function
for Recent Items
Map Function
for Recent Items
$ cat views/recent-items/map.js
Map Function
for Recent Items
$ cat views/recent-items/map.js

function(doc) {
  if (doc.created_at) {
    emit(doc.created_at, doc);
  }
};
Mapped Documents
Mapped Documents
           key                          id                       value
                                                    {
                                                        …
"2011-10-04T19:29:10.170Z"   "…d498b9f9b3000dd5"        "message": "Message 1.",
                                                        …
                                                    }

                                                    {
                                                        …
"2011-10-04T19:30:38.718Z"   "…0d498b9f9b3000fb4"       "message": "Message 2.",
                                                        …
                                                    }

                                                    {
                                                        …
"2011-10-04T19:31:21.488Z"   "…0d498b9f9b30010ed"       "message": "Message 3.",
                                                        …
                                                    }
Mapped Documents
           key                          id                       value
                                                    {
                                                        …
"2011-10-04T19:29:10.170Z"   "…d498b9f9b3000dd5"        "message": "Message 1.",
                                                        …
                                                    }

                                                    {
                                                        …
"2011-10-04T19:30:38.718Z"   "…0d498b9f9b3000fb4"       "message": "Message 2.",
                                                        …
                                                    }

                                                    {
                                                        …
"2011-10-04T19:31:21.488Z"   "…0d498b9f9b30010ed"       "message": "Message 3.",
                                                        …
                                                    }
Mapped Documents
           key                          id                       value
                                                    {
                                                        …
"2011-10-04T19:29:10.170Z"   "…d498b9f9b3000dd5"        "message": "Message 1.",
                                                        …
                                                    }

                                                    {
                                                        …
"2011-10-04T19:30:38.718Z"   "…0d498b9f9b3000fb4"       "message": "Message 2.",
                                                        …
                                                    }

                                                    {
                                                        …
"2011-10-04T19:31:21.488Z"   "…0d498b9f9b30010ed"       "message": "Message 3.",
                                                        …
                                                    }
CouchApp Metadata
CouchApp Metadata
$ cat couchapp.json
CouchApp Metadata
$ cat couchapp.json

{
    "name": "Name of your CouchApp",
    "description": "CouchApp"
}
Push the CouchApp
Push the CouchApp
$ couchapp push tutorial
Push the CouchApp
$ couchapp push tutorial

2011-09-27 11:55:02 [INFO] Visit your CouchApp here:
http://127.0.0.1:5984/tutorial/_design/tutorial/index.html
Generated CouchApp
A CouchApp is entirely self-contained
within a design document.
About Design Documents
A CouchDB design document stores
application-speci c code such as:
  • View de nitions
    • Map functions
    • Reduce functions
  • Show functions
  • List functions
  • Document update handlers
  • Document update validation functions
  • Rewrite de nitions
  • Arbitrary elds
  • Attachments
At this point, you’ve seen all of the
tools needed to build a CouchApp.
However…
CouchApp Building Blocks
Evently
Evently is a jQuery plugin for
writing event-based applications.
Custom Events
<p id="user"></p>
<script type="text/javascript">
$("#user").evently({
   login: function(e, user) {
     $(this).text(user);
   }
})
$("#user").trigger("login", "Bradley");
</script>
Widgets
$("#user").evently({
   _init: {
     async: function(callback) {
        $.couch.session({
           success: function(data) {
             callback(data);
           }
        });
     },
     mustache: "<span>{{#name}}Logged in as {{name}}{{/name}}
{{^name}}Not logged in{{/name}}</span>",
     data: function(data) {
        return data.userCtx;
     }
   }
});
CouchApp + Evently
CouchApp + Evently
$ tree -F evently
CouchApp + Evently
$ tree -F evently

evently
       items/
           _changes/
                data.js
                mustache.html
                query.json
       profile/
         profileReady/
            mustache.html
            selectors/
                 form/
Alternatives to Evently:
Alternatives to Evently:
Backbone.js[1]




                           1. http://couchapp.org/page/backbone
                           2. https://github.com/quirkey/soca
                           3. http://knockoutjs.com/
Alternatives to Evently:
Backbone.js[1]
Sammy.js and soca[2]




                           1. http://couchapp.org/page/backbone
                           2. https://github.com/quirkey/soca
                           3. http://knockoutjs.com/
Alternatives to Evently:
Backbone.js[1]
Sammy.js and soca[2]
Knockout.js[3]




                           1. http://couchapp.org/page/backbone
                           2. https://github.com/quirkey/soca
                           3. http://knockoutjs.com/
}
Mustache
Logic-Less Templates
Evently knows how to wire Mustache
templates and data together.
Variables
Template:
<p>Hello, {{name}}.</p>

Hash:
{
  "name": "Bradley"
}

Output:
<p>Hello, Bradley.</p>
Unescaped Variables
Template:
<p>Hello, {{{name}}}.</p>

Hash:
{
  "name": "<em>Bradley</em>"
}

Output:
<p>Hello, <em>Bradley</em>.</p>
“Missed” Variables
Template:
<p>Hello, {{name}}.</p>

Hash:
{
  "role": "admin"
}

Output:
<p>Hello, .</p>
False Values
Template:
<p>This is not in a section.</p>
{{#show}}
<p>The "show" variable exists and is not false.</p>
{{/show}}

Hash:
{
  "show": false
}

Output:
<p>This is not in a section.</p>
Empty Lists
Template:
<p>This is not in a section.</p>
{{#show}}
<p>The "show" variable exists and is not false.</p>
{{/show}}

Hash:
{
  "role": "admin"
}

Output:
<p>This is not in a section.</p>
Inverted Sections
Template:
{{^user}}
 <p>The "user" variable does not exist, is false, or is empty.</p>
{{/user}}

Hash:
{
  "user": false
}

Output:
 <p>The "user" variable does not exist, is false, or is empty.</p>
Non-Empty Lists
Template:
{{#users}}
 <p>{{name}}</p>
{{/users}}

Hash:
{ "users": [
    { "name": "Bradley" },
    { "name": "Jason" },
  ]
}

Output:
 <p>Bradley</p>
 <p>Jason</p>
CouchApp + Evently +
Mustache
CouchApp + Evently +
Mustache
$ tree -F evently/posts
CouchApp + Evently +
Mustache
$ tree -F evently/posts

evently/posts
       _init.js
       data.js
       mustache.html
       post/
           _init.js
           data.js
           mustache.html
           query.json
       query.json
The “Posts” Mustache File
The “Posts” Mustache File
$ cat evently/posts/mustache.html
The “Posts” Mustache File
$ cat evently/posts/mustache.html

<ul>
{{#posts}}
 <li>
  <a href="/posts/{{id}}">{{title}}</a>
 </li>
{{/posts}}
</ul>
The “Post” Mustache File
The “Post” Mustache File
$ cat evently/posts/post/mustache.html
The “Post” Mustache File
$ cat evently/posts/post/mustache.html

{{#post}}
<article>
 <h1>{{title}}</h1>
 {{content}}
 <p><a href="/posts/{{id}}">{{updated}}</a></p>
</article>
{{/post}}
Alternatives to Mustache:
Alternatives to Mustache:
jsRender [1]




                            1. https://github.com/BorisMoore/jsrender
                            2. https://github.com/BorisMoore/jsviews
                            3. http://www.handlebarsjs.com/
Alternatives to Mustache:
jsRender [1]
jsViews[2]




                            1. https://github.com/BorisMoore/jsrender
                            2. https://github.com/BorisMoore/jsviews
                            3. http://www.handlebarsjs.com/
Alternatives to Mustache:
jsRender [1]
jsViews[2]
Handlebars.js[3]




                            1. https://github.com/BorisMoore/jsrender
                            2. https://github.com/BorisMoore/jsviews
                            3. http://www.handlebarsjs.com/
Pathbinder
Pathbinder is a jQuery plugin for
triggering events based on the path
components of a URL hash.
Pathbinder
<div id="pro le"></div>
<script type="text/javascript">
$("#pro le").html('<p><a href="#/pro le/Bradley">View
Bradley's Pro le</a></p>');
$("#pro le").bind("pro le", function(e, params) {
   $(this).html("<p>Viewing " + params.id + "'s pro le</p>");
});
$("#pro le").pathbinder("pro le", "/pro le/:id");
</script>
Pathbinder + Evently
<div id="pro le"></div>
<script type="text/javascript">
$("#pro le").evently({
   _init: {
      path: "/",
      mustache: '<p><a href="#/pro le/Bradley">View Pro le</a></p>'
   },
   viewPro le: {
      path: "/pro le/:id",
      mustache: '<p>Viewing {{id}}'s pro le; <a href="#/">Back</a></p>',
      data: function(e, params) {
        return params;
      }
   }
});
</script>
An Evently widget’s path de nition
can be stored in a path.txt le within
a CouchApp.
CouchApp + Evently +
Pathbinder
CouchApp + Evently +
Pathbinder
$ tree -F evently/posts
CouchApp + Evently +
Pathbinder
$ tree -F evently/posts

evently/posts
       _init.js
       data.js
       mustache.html
       path.txt
       post/
           _init.js
           data.js
           mustache.html
           path.txt
Path Files
Path Files
$ cat evently/posts/path.txt
Path Files
$ cat evently/posts/path.txt

/posts
Path Files
$ cat evently/posts/path.txt

/posts

$ cat evently/posts/post/path.txt
Path Files
$ cat evently/posts/path.txt

/posts

$ cat evently/posts/post/path.txt

/posts/:id
Alternatives to Pathbinder:
Alternatives to Pathbinder:
HTML5 History [1]




                    1. https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
                    2. https://github.com/balupton/history.js
Alternatives to Pathbinder:
HTML5 History [1]
History.js[2]




                    1. https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
                    2. https://github.com/balupton/history.js
Resources
Alternative CouchApp Tools
node.couchapp.js
  • Command-line tool written for Node.js
  • https://github.com/mikeal/node.couchapp.js
Kanso Framework
  • Also built using Node.js
  • http://kansojs.org
soca
  •    Command-line tool written in Ruby
  •    https://github.com/quirkey/soca

Reupholster
  • A simple way to get started developing CouchApps
  • http://reupholster.iriscouch.com/reupholster/_design/app/index.html
Hosting
Iris Couch
   • Free (for now)
   • Couchbase server
   • GeoCouch geospatial indexing
   • http://www.iriscouch.com
Cloudant
  • Various pricing levels
  • Full-text searching
  • Ad-hoc queries
  • Elastic scaling, clustering and sharding using BigCouch
  • https://cloudant.com
Documentation and Books
CouchApp Wiki                     Writing and Querying MapReduce
http://couchapp.org/              Views in CouchDB
                                  by Bradley Holt (O’Reilly)
CouchDB Wiki                      978-1-449-30312-9
http://wiki.apache.org/couchdb/
                                  Scaling CouchDB
CouchDB: The De nitive Guide      by Bradley Holt (O’Reilly)
by J. Chris Anderson, Jan         063-6-920-01840-7
Lehnardt and Noah Slater
(O’Reilly)                        Beginning CouchDB
978-0-596-15589-6                 by Joe Lennon (Apress)
                                  978-1-430-27237-3
http://oreilly.com/catalog/9781449303129/   http://oreilly.com/catalog/9781449303433/
Questions?
Thank You
                                  @BradleyHolt
                             http://bradley-holt.com
                           bradley.holt@foundline.com




Copyright © 2011 Bradley Holt. All rights reserved.

Weitere ähnliche Inhalte

Was ist angesagt?

Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMGabriel Walt
 
Web技術の現状と将来 (Open Source Conference 2011 Tokyo Spring)
Web技術の現状と将来 (Open Source Conference 2011 Tokyo Spring)Web技術の現状と将来 (Open Source Conference 2011 Tokyo Spring)
Web技術の現状と将来 (Open Source Conference 2011 Tokyo Spring)Rikkyo University
 
Open Source World : Using Web Technologies to build native iPhone and Android...
Open Source World : Using Web Technologies to build native iPhone and Android...Open Source World : Using Web Technologies to build native iPhone and Android...
Open Source World : Using Web Technologies to build native iPhone and Android...Jeff Haynie
 
Our Hybrid Future: WordPress As Part of the Stack
Our Hybrid Future: WordPress As Part of the StackOur Hybrid Future: WordPress As Part of the Stack
Our Hybrid Future: WordPress As Part of the StackCaldera Labs
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote presoArtur Alves
 
Engineering the New LinkedIn Profile
Engineering the New LinkedIn ProfileEngineering the New LinkedIn Profile
Engineering the New LinkedIn ProfileJosh Clemm
 
Couchbase Mobile on Android
Couchbase Mobile on AndroidCouchbase Mobile on Android
Couchbase Mobile on AndroidPhilipp Fehre
 
eBay Architecture
eBay Architecture eBay Architecture
eBay Architecture Tony Ng
 
The Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUGThe Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUGJohn Head
 
Automated Lifecycle Management - CloudFoundry on OpenStack
Automated Lifecycle Management - CloudFoundry on OpenStackAutomated Lifecycle Management - CloudFoundry on OpenStack
Automated Lifecycle Management - CloudFoundry on OpenStackAnimesh Singh
 
Docker, Cloud Foundry, Bosh & Bluemix
Docker, Cloud Foundry, Bosh & BluemixDocker, Cloud Foundry, Bosh & Bluemix
Docker, Cloud Foundry, Bosh & BluemixIBM
 
Cordova 3, apps para android
Cordova 3, apps para androidCordova 3, apps para android
Cordova 3, apps para androidDroidcon Spain
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Nedelcho Delchev
 
MAS202 - Customizing IBM Connections - Downloadable
MAS202 - Customizing IBM Connections - DownloadableMAS202 - Customizing IBM Connections - Downloadable
MAS202 - Customizing IBM Connections - Downloadablepaulbastide
 
Sviluppare per una piattaforma mobile aperta: opportunità e sfide
Sviluppare per una piattaforma mobile aperta: opportunità e sfideSviluppare per una piattaforma mobile aperta: opportunità e sfide
Sviluppare per una piattaforma mobile aperta: opportunità e sfideCodemotion
 

Was ist angesagt? (20)

Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEM
 
Web技術の現状と将来 (Open Source Conference 2011 Tokyo Spring)
Web技術の現状と将来 (Open Source Conference 2011 Tokyo Spring)Web技術の現状と将来 (Open Source Conference 2011 Tokyo Spring)
Web技術の現状と将来 (Open Source Conference 2011 Tokyo Spring)
 
Web works presso
Web works pressoWeb works presso
Web works presso
 
DEV-1467 - Darwino
DEV-1467 - DarwinoDEV-1467 - Darwino
DEV-1467 - Darwino
 
GDPR- The Buck Stops Here
GDPR-  The Buck Stops HereGDPR-  The Buck Stops Here
GDPR- The Buck Stops Here
 
JavaOne 2010 Keynote
JavaOne 2010 Keynote JavaOne 2010 Keynote
JavaOne 2010 Keynote
 
Open Source World : Using Web Technologies to build native iPhone and Android...
Open Source World : Using Web Technologies to build native iPhone and Android...Open Source World : Using Web Technologies to build native iPhone and Android...
Open Source World : Using Web Technologies to build native iPhone and Android...
 
Our Hybrid Future: WordPress As Part of the Stack
Our Hybrid Future: WordPress As Part of the StackOur Hybrid Future: WordPress As Part of the Stack
Our Hybrid Future: WordPress As Part of the Stack
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote preso
 
Engineering the New LinkedIn Profile
Engineering the New LinkedIn ProfileEngineering the New LinkedIn Profile
Engineering the New LinkedIn Profile
 
Couchbase Mobile on Android
Couchbase Mobile on AndroidCouchbase Mobile on Android
Couchbase Mobile on Android
 
eBay Architecture
eBay Architecture eBay Architecture
eBay Architecture
 
The Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUGThe Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUG
 
Automated Lifecycle Management - CloudFoundry on OpenStack
Automated Lifecycle Management - CloudFoundry on OpenStackAutomated Lifecycle Management - CloudFoundry on OpenStack
Automated Lifecycle Management - CloudFoundry on OpenStack
 
Watson on bluemix
Watson on bluemixWatson on bluemix
Watson on bluemix
 
Docker, Cloud Foundry, Bosh & Bluemix
Docker, Cloud Foundry, Bosh & BluemixDocker, Cloud Foundry, Bosh & Bluemix
Docker, Cloud Foundry, Bosh & Bluemix
 
Cordova 3, apps para android
Cordova 3, apps para androidCordova 3, apps para android
Cordova 3, apps para android
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
 
MAS202 - Customizing IBM Connections - Downloadable
MAS202 - Customizing IBM Connections - DownloadableMAS202 - Customizing IBM Connections - Downloadable
MAS202 - Customizing IBM Connections - Downloadable
 
Sviluppare per una piattaforma mobile aperta: opportunità e sfide
Sviluppare per una piattaforma mobile aperta: opportunità e sfideSviluppare per una piattaforma mobile aperta: opportunità e sfide
Sviluppare per una piattaforma mobile aperta: opportunità e sfide
 

Andere mochten auch

Preparation Vs. Keyword Outline
Preparation Vs. Keyword OutlinePreparation Vs. Keyword Outline
Preparation Vs. Keyword Outlineguesteb0d27
 
Apache MINA: The high-performance protocol construction toolkit.
Apache MINA: The high-performance protocol construction toolkit.Apache MINA: The high-performance protocol construction toolkit.
Apache MINA: The high-performance protocol construction toolkit.osi
 
OSCON 2011 CouchApps
OSCON 2011 CouchAppsOSCON 2011 CouchApps
OSCON 2011 CouchAppsBradley Holt
 
Keeping 100m+ users happy: How we test Shazam on Android
Keeping 100m+ users happy: How we test Shazam on AndroidKeeping 100m+ users happy: How we test Shazam on Android
Keeping 100m+ users happy: How we test Shazam on AndroidIordanis (Jordan) Giannakakis
 
STC Communities with Mentoring Programs
STC Communities with Mentoring ProgramsSTC Communities with Mentoring Programs
STC Communities with Mentoring ProgramsCindy Pao
 
What may I do with your data? What do I have to do with your data? Policie...
What may I do with your data? What do I have to do with your data? Policie...What may I do with your data? What do I have to do with your data? Policie...
What may I do with your data? What do I have to do with your data? Policie...Steffen Staab
 
Rapid Product Design in the Wild - Agile Iceland
Rapid Product Design in the Wild - Agile IcelandRapid Product Design in the Wild - Agile Iceland
Rapid Product Design in the Wild - Agile IcelandMichele Ide-Smith
 
Building a Mobile Location Aware System with Beacons
Building a Mobile Location Aware System with BeaconsBuilding a Mobile Location Aware System with Beacons
Building a Mobile Location Aware System with BeaconsJonathan LeBlanc
 
London nhs hack day presentation may 2012
London nhs hack day presentation may 2012London nhs hack day presentation may 2012
London nhs hack day presentation may 2012Carl Reynolds
 
Wakanda#3
Wakanda#3Wakanda#3
Wakanda#3kmiyako
 
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor AppsLibrato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor AppsHeroku
 
The collaboration network in OSM - the case of Italy
The collaboration network in OSM - the case of Italy The collaboration network in OSM - the case of Italy
The collaboration network in OSM - the case of Italy Maurizio Napolitano
 
Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014Matteo Figus
 
From geek to event organiser
From geek to event organiserFrom geek to event organiser
From geek to event organiserCristiano Betta
 
Enrich the web with comments
Enrich the web with commentsEnrich the web with comments
Enrich the web with commentsRoss Bruniges
 
HP Discover - Developing new applications for the cloud
HP Discover - Developing new applications for the cloudHP Discover - Developing new applications for the cloud
HP Discover - Developing new applications for the cloudBart Blommaerts
 
Responsive Web Design - What You Need to Know to Get Started
Responsive Web Design - What You Need to Know to Get StartedResponsive Web Design - What You Need to Know to Get Started
Responsive Web Design - What You Need to Know to Get Startedjennybchicken
 
WhereCamp Berlin - Visualizing Big Geo Data
WhereCamp Berlin - Visualizing Big Geo DataWhereCamp Berlin - Visualizing Big Geo Data
WhereCamp Berlin - Visualizing Big Geo DataMartin Kleppe
 

Andere mochten auch (20)

Dignity ethical approaches pp
Dignity ethical approaches ppDignity ethical approaches pp
Dignity ethical approaches pp
 
Preparation Vs. Keyword Outline
Preparation Vs. Keyword OutlinePreparation Vs. Keyword Outline
Preparation Vs. Keyword Outline
 
The application of moral stages
The application of moral stagesThe application of moral stages
The application of moral stages
 
Apache MINA: The high-performance protocol construction toolkit.
Apache MINA: The high-performance protocol construction toolkit.Apache MINA: The high-performance protocol construction toolkit.
Apache MINA: The high-performance protocol construction toolkit.
 
OSCON 2011 CouchApps
OSCON 2011 CouchAppsOSCON 2011 CouchApps
OSCON 2011 CouchApps
 
Keeping 100m+ users happy: How we test Shazam on Android
Keeping 100m+ users happy: How we test Shazam on AndroidKeeping 100m+ users happy: How we test Shazam on Android
Keeping 100m+ users happy: How we test Shazam on Android
 
STC Communities with Mentoring Programs
STC Communities with Mentoring ProgramsSTC Communities with Mentoring Programs
STC Communities with Mentoring Programs
 
What may I do with your data? What do I have to do with your data? Policie...
What may I do with your data? What do I have to do with your data? Policie...What may I do with your data? What do I have to do with your data? Policie...
What may I do with your data? What do I have to do with your data? Policie...
 
Rapid Product Design in the Wild - Agile Iceland
Rapid Product Design in the Wild - Agile IcelandRapid Product Design in the Wild - Agile Iceland
Rapid Product Design in the Wild - Agile Iceland
 
Building a Mobile Location Aware System with Beacons
Building a Mobile Location Aware System with BeaconsBuilding a Mobile Location Aware System with Beacons
Building a Mobile Location Aware System with Beacons
 
London nhs hack day presentation may 2012
London nhs hack day presentation may 2012London nhs hack day presentation may 2012
London nhs hack day presentation may 2012
 
Wakanda#3
Wakanda#3Wakanda#3
Wakanda#3
 
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor AppsLibrato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
 
The collaboration network in OSM - the case of Italy
The collaboration network in OSM - the case of Italy The collaboration network in OSM - the case of Italy
The collaboration network in OSM - the case of Italy
 
Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014
 
From geek to event organiser
From geek to event organiserFrom geek to event organiser
From geek to event organiser
 
Enrich the web with comments
Enrich the web with commentsEnrich the web with comments
Enrich the web with comments
 
HP Discover - Developing new applications for the cloud
HP Discover - Developing new applications for the cloudHP Discover - Developing new applications for the cloud
HP Discover - Developing new applications for the cloud
 
Responsive Web Design - What You Need to Know to Get Started
Responsive Web Design - What You Need to Know to Get StartedResponsive Web Design - What You Need to Know to Get Started
Responsive Web Design - What You Need to Know to Get Started
 
WhereCamp Berlin - Visualizing Big Geo Data
WhereCamp Berlin - Visualizing Big Geo DataWhereCamp Berlin - Visualizing Big Geo Data
WhereCamp Berlin - Visualizing Big Geo Data
 

Ähnlich wie CouchConf NYC CouchApps

jQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsjQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsBradley Holt
 
Worklight technical intro v2
Worklight technical intro v2Worklight technical intro v2
Worklight technical intro v2Vinh Nguyen
 
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...Taras Filatov
 
Mobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesMobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesAndrew Ferrier
 
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing WorkloaAAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing WorkloaWASdev Community
 
Html5 workshop part 1
Html5 workshop part 1Html5 workshop part 1
Html5 workshop part 1NAILBITER
 
LavaCon 2011: Double Trouble! Adding Developer Docs to Your Deliverables
LavaCon 2011: Double Trouble! Adding Developer Docs to Your DeliverablesLavaCon 2011: Double Trouble! Adding Developer Docs to Your Deliverables
LavaCon 2011: Double Trouble! Adding Developer Docs to Your DeliverablesMary Connor
 
Sybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpSybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpPrabhakar Manthena
 
Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...boxuno
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDKIntel® Software
 
Light-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch ApplicationLight-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch ApplicationBoulos Dib
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web ApplicationSachin Walvekar
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)Saltlux zinyus
 
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)zinyus
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...Heiko Voigt
 
HTML5 Technical Executive Summary
HTML5 Technical Executive SummaryHTML5 Technical Executive Summary
HTML5 Technical Executive SummaryGilad Khen
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Oracle Developers
 

Ähnlich wie CouchConf NYC CouchApps (20)

jQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsjQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchApps
 
Worklight technical intro v2
Worklight technical intro v2Worklight technical intro v2
Worklight technical intro v2
 
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
 
Mobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesMobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best Practices
 
BlackBerry WebWorks
BlackBerry WebWorksBlackBerry WebWorks
BlackBerry WebWorks
 
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing WorkloaAAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
 
Html5 workshop part 1
Html5 workshop part 1Html5 workshop part 1
Html5 workshop part 1
 
LavaCon 2011: Double Trouble! Adding Developer Docs to Your Deliverables
LavaCon 2011: Double Trouble! Adding Developer Docs to Your DeliverablesLavaCon 2011: Double Trouble! Adding Developer Docs to Your Deliverables
LavaCon 2011: Double Trouble! Adding Developer Docs to Your Deliverables
 
Sybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpSybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wp
 
Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...
 
Education&work experience
Education&work experienceEducation&work experience
Education&work experience
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDK
 
Light-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch ApplicationLight-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch Application
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web Application
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
 
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
HTML5 Technical Executive Summary
HTML5 Technical Executive SummaryHTML5 Technical Executive Summary
HTML5 Technical Executive Summary
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.
 
Modern Web Applications
Modern Web ApplicationsModern Web Applications
Modern Web Applications
 

Mehr von Bradley Holt

Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Bradley Holt
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven DesignBradley Holt
 
Entity Relationships in a Document Database at CouchConf Boston
Entity Relationships in a Document Database at CouchConf BostonEntity Relationships in a Document Database at CouchConf Boston
Entity Relationships in a Document Database at CouchConf BostonBradley Holt
 
ZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignBradley Holt
 
ZendCon 2011 Learning CouchDB
ZendCon 2011 Learning CouchDBZendCon 2011 Learning CouchDB
ZendCon 2011 Learning CouchDBBradley Holt
 
OSCON 2011 Learning CouchDB
OSCON 2011 Learning CouchDBOSCON 2011 Learning CouchDB
OSCON 2011 Learning CouchDBBradley Holt
 
Load Balancing with Apache
Load Balancing with ApacheLoad Balancing with Apache
Load Balancing with ApacheBradley Holt
 
CouchDB at New York PHP
CouchDB at New York PHPCouchDB at New York PHP
CouchDB at New York PHPBradley Holt
 
New Features in PHP 5.3
New Features in PHP 5.3New Features in PHP 5.3
New Features in PHP 5.3Bradley Holt
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHPBradley Holt
 
Resource-Oriented Web Services
Resource-Oriented Web ServicesResource-Oriented Web Services
Resource-Oriented Web ServicesBradley Holt
 
Zend Framework Quick Start Walkthrough
Zend Framework Quick Start WalkthroughZend Framework Quick Start Walkthrough
Zend Framework Quick Start WalkthroughBradley Holt
 
Burlington, VT PHP Users Group Subversion Presentation
Burlington, VT PHP Users Group Subversion PresentationBurlington, VT PHP Users Group Subversion Presentation
Burlington, VT PHP Users Group Subversion PresentationBradley Holt
 

Mehr von Bradley Holt (14)

Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Entity Relationships in a Document Database at CouchConf Boston
Entity Relationships in a Document Database at CouchConf BostonEntity Relationships in a Document Database at CouchConf Boston
Entity Relationships in a Document Database at CouchConf Boston
 
ZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven Design
 
ZendCon 2011 Learning CouchDB
ZendCon 2011 Learning CouchDBZendCon 2011 Learning CouchDB
ZendCon 2011 Learning CouchDB
 
OSCON 2011 Learning CouchDB
OSCON 2011 Learning CouchDBOSCON 2011 Learning CouchDB
OSCON 2011 Learning CouchDB
 
Load Balancing with Apache
Load Balancing with ApacheLoad Balancing with Apache
Load Balancing with Apache
 
CouchDB at New York PHP
CouchDB at New York PHPCouchDB at New York PHP
CouchDB at New York PHP
 
Intermediate PHP
Intermediate PHPIntermediate PHP
Intermediate PHP
 
New Features in PHP 5.3
New Features in PHP 5.3New Features in PHP 5.3
New Features in PHP 5.3
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
 
Resource-Oriented Web Services
Resource-Oriented Web ServicesResource-Oriented Web Services
Resource-Oriented Web Services
 
Zend Framework Quick Start Walkthrough
Zend Framework Quick Start WalkthroughZend Framework Quick Start Walkthrough
Zend Framework Quick Start Walkthrough
 
Burlington, VT PHP Users Group Subversion Presentation
Burlington, VT PHP Users Group Subversion PresentationBurlington, VT PHP Users Group Subversion Presentation
Burlington, VT PHP Users Group Subversion Presentation
 

Kürzlich hochgeladen

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

CouchConf NYC CouchApps

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  5. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  6. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  7. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  8. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  9. \n
  10. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  11. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  12. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  13. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  14. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  15. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  16. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  17. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  18. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  19. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  20. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  21. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  22. \n
  23. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  24. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  25. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  26. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  27. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  28. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  29. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  30. \n
  31. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  32. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  33. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  34. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  35. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  36. Not the focus of this talk.\n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  43. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  44. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  45. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  46. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  47. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  48. Geospatial indexing is implemented via GeoCouch.\nCouchbase is also the name of the company behind the product of the same name.\nCouchbase contributes back to CouchDB.\n
  49. Geospatial indexing is implemented via GeoCouch.\nCouchbase is also the name of the company behind the product of the same name.\nCouchbase contributes back to CouchDB.\n
  50. Geospatial indexing is implemented via GeoCouch.\nCouchbase is also the name of the company behind the product of the same name.\nCouchbase contributes back to CouchDB.\n
  51. Geospatial indexing is implemented via GeoCouch.\nCouchbase is also the name of the company behind the product of the same name.\nCouchbase contributes back to CouchDB.\n
  52. CouchDB implements multi-master replication.\nCouchApps are an example of &amp;#x201C;ground computing&amp;#x201D; where data moves from the &amp;#x201C;cloud&amp;#x201D; to the end user&amp;#x2019;s device.\n
  53. A CouchApp can be used as a working prototypes. If you want to replace it later with a native app, you don&amp;#x2019;t need to change your entire tool chain.\n
  54. I believe the iOS and Android versions are actually native.\n
  55. CouchDB is a great fit for decentralized social apps.\n
  56. This app takes advantage of the geospatial indexing available in GeoCouch.\n
  57. \n
  58. This will need to be served by CouchDB.\njQuery and the CouchDB jQuery plugin ship with CouchDB.\n
  59. \n
  60. Console logging can easily be replaced with DOM manipulation code.\n
  61. Console logging can easily be replaced with DOM manipulation code.\n
  62. Console logging can easily be replaced with DOM manipulation code.\n
  63. \n
  64. \n
  65. \n
  66. This is saving an empty document.\n
  67. This is saving an empty document.\n
  68. This is saving an empty document.\n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. A new revision is created when a document is deleted.\n
  76. A new revision is created when a document is deleted.\n
  77. A new revision is created when a document is deleted.\n
  78. This uses long polling, keeping a connection open between client and server.\n
  79. This uses long polling, keeping a connection open between client and server.\n
  80. This uses long polling, keeping a connection open between client and server.\n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. This CouchApp tool is written in Python.\nOther CouchApp tooling options are available.\n
  87. This CouchApp tool is written in Python.\nOther CouchApp tooling options are available.\n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. Update this file to be a README for your CouchApp\n
  94. _attachments/index.html will be the starting point for your CouchApp\n_attachments/style/main.css should be self-explanatory\n
  95. _attachments/index.html will be the starting point for your CouchApp\n_attachments/style/main.css should be self-explanatory\n
  96. Third-party &amp;#x201C;vendor&amp;#x201D; code that ships with CouchApp as a convenience, as well as some useful Evently widgets\n
  97. Third-party &amp;#x201C;vendor&amp;#x201D; code that ships with CouchApp as a convenience, as well as some useful Evently widgets\n
  98. Function definitions for CouchDB MapReduce views\n
  99. Function definitions for CouchDB MapReduce views\n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. Includes account, profile and items widgets out-of-the-box.\n
  111. \n
  112. A database can have multiple CouchApps and/or design documents.\nDesign documents are named &amp;#x201C;_design/&lt;name&gt;&amp;#x201D;.\n
  113. \n
  114. \n
  115. \n
  116. You can be productive with Evently once you learn it, but it may be a bit much for regular AJAX developers.\n
  117. \n
  118. Widgets are wired up to specified DOM elements.\n
  119. File system tree is packaged up as a set of Evently widgets.\nEvently widgets can be deeply nested.\n
  120. File system tree is packaged up as a set of Evently widgets.\nEvently widgets can be deeply nested.\n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. Mustache templates seem to require one, and only one, root element.\n
  138. Mustache templates seem to require one, and only one, root element.\n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. Creating a &amp;#x201C;View Profile&amp;#x201D; hyperlink which can be clicked, triggering a &amp;#x201C;viewProfile&amp;#x201D; widget which contains a link &amp;#x201C;back&amp;#x201D; to the first widget.\n
  150. \n
  151. \n
  152. \n
  153. \n
  154. \n
  155. \n
  156. \n
  157. \n
  158. \n
  159. \n
  160. \n
  161. \n
  162. Not necessarily compatible with the Python version.\n
  163. \n
  164. \n
  165. \n
  166. \n
  167. \n