SlideShare a Scribd company logo
1 of 122
Marlon Pierce, Geoffrey Fox Community Grids Lab Indiana University
Acknowledgements ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
We discuss the impact of Web 2.0 on e-Science, Cyberinfrastructure, and Grids
Rich Client Interfaces ,[object Object],[object Object],[object Object],Source:  http://www.vw.com/
AJAX ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Source:  http://www.google.com/webhp?complete=1&hl=en
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Make an HTTP request using XMLHttpRequest class Provide HTTP request object the name of JavaScript object which will process the response using  onreadystatechange  property Once the state of request AND status code of server response is checked, we can process the data User makes the request in browser
Output ,[object Object],[object Object],[object Object],[object Object]
Limits of AJAX ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JSON: JavaScript Object Notation
JSON, Continued ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JSON Example Defining Arrays in JavaScript JSON Syntax CSS JSON CSS Structure
XML -> JSON ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Source  : Goessner , Stephen. &quot;XML.com: Converting Between XML and JSON.&quot;  XML.com . 31 May 2006. O'REILLY. 16 May 2007 <http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html?page=2>.
JSON Compared to XML Source: Zakas, Nicholas C., Jeremy McPeak, and Joe Fawcett. Professional AJAX. 1st ed. WROX Press, 2006. XML String JSON String <classinfo> <students> <student> <name>Michael Smith</name> <average>99.5</average> <age>17</age> <graduating>true</graduating> </student> <student> <name>Steve Johnson</name> <average>34.87</average> <age>17</age> <graduating>false</graduating> </students> </classinfo> { &quot;classinfo&quot; : { &quot;students&quot; : [ { &quot;name&quot; : &quot;Michael Smith&quot;, &quot;average&quot; : 99.5, &quot;age&quot; : 17, &quot;graduating&quot; : true }, { &quot;name&quot; : &quot;Steve Johnson&quot;, &quot;average&quot; : 34.87, &quot;age&quot; : 17, &quot;graduating&quot; : false }  ] } } Information repeated repeatedly Information isn’t repeated More bytes needed to store the same information Less Bytes needed to store the same information Have to convert string into JavaScript using: var books = req.responseXML.getElementsByTagName(‘< element_name '); JavaScript's eval() method to convert the string into a real JavaScript object  E.g. var data = eval('(' + req.responseText + ')');
JavaScript/AJAX/JSON Toolkits ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GWT (Google Web Toolkit) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Benefits of GWT ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
More GWT Benefits ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GWT Example CODE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GWT Example Source:  http://code.google.com/webtoolkit/documentation/examples/kitchensink/
YUI (Yahoo! User Interface Library) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Yahoo Components ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
YUI ANIMATION Example http://developer.yahoo.com/yui/examples/animation/anim_basic.html
DWR (Direct Web Remoting) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DWR features ,[object Object],[object Object],[object Object],[object Object],[object Object],Source:  http://getahead.org/dwr/integration
DWR Example (Wal-Mart) ,[object Object],[object Object]
Features - Script.aculo.us  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Example Test Results
EXAMPLE ,[object Object],[object Object]
Summary GWT YUI DWR Script.aculo.us Code in Java and generate JavaScript/HTML automatically YES NO YES NO Internationalization (easily create international Libraries) YES NO NO NO Integration with frameworks Eclipse, IntelliJ, JProfiler, JUnit NO Spring, Structs, WebWork, JSF, Hibernate, beehive Ruby on Rails, Perl, Nitro, Eclipse, SeaSide, Django, Plone, Java, PHP
Google Gadgets & Widgets ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Date & Time (Universal Gadget) Google Gadget in Google Desktop (undocked and docked view
&quot;Google Code - Google Gadgets.&quot;  Google Code . Google Inc.. 17 May 2007 <http://code.google.com/apis/gadgets/>. Universal Gadgets Desktop Gadgets Work in Google Desktop, Google Page Creator, any Web Page, Google Personalized Page, Blogger Works  only  with Google Desktop Easy to Create - No downloads necessary, No libraries to learn, No Web server required Features Supported ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Create without Download Yes No Offline Availability No Yes Languages Supported HTML, JavaScript, generated HTML (eg PHP, Java, Perl, ASP) JavaScript, C, C++, C#, and/or VB.Net
Creating Google Gadgets ,[object Object],[object Object]
How to Make a Desktop Gadget ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
gadget.gmanifest file ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
main.xml file (example) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Main.js file (example) ,[object Object],[object Object],[object Object],Google Gadget in Google Desktop (undocked and docked view
Strings.xml file  (example) ,[object Object],[object Object]
 
Social Bookmarking / Tagging ,[object Object],[object Object],[object Object],[object Object]
Advantages / Disadvantages ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Del.icio.us ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ways to Use del.icio.us ,[object Object],[object Object],[object Object],[object Object]
Personal Bookmarks *  Option to make bookmarks hidden Bookmarks of other users who used common tags *  Option to add any user to your network Add users to your network and browse their tags *  Option to disable sharing of your network Subscribe to interesting tags to be aggregated
[object Object],Group / Network Feed Individual Feed
Application Programming Interfaces ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Output ->
API (continued) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DELICIOUS API ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JavaScript Widget for Del.icio.us ,[object Object],[object Object],<a href=&quot;javascript:location.href= 'http://del.icio.us/post?v=2&url='+encodeURIComponent(document.location.href)+' &title='+encodeURIComponent(document.title)+' '&quot;> Post to del.icio.us </a> Source: http://ekstreme.com/seo/socialbookmarkingcode.php
Connotea ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Automatic Collection of Bibliographic Information ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Web Interface 1) Find an interesting article to be tagged 4) This tags the Article of Interest in “My Library” 2) Click on “Add to Connotea” button in the browser 3) Type in the Display Title, Tags, Descriptions etc.
RSS Feeds Individual RSS Feed Group RSS Feed
Multiple Users and Tags ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
More Tag Searching Rules ,[object Object],[object Object],[object Object],[object Object],[object Object]
Programming Interface ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Example: http://www.connotea.org/data/tags/user/sidds1601
Embedding Connotea JavaScript Widgets ,[object Object],[object Object]
CiteULike ,[object Object],[object Object],[object Object],[object Object],[object Object]
CiteULike ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Web Interface Click to save it as a reference
RSS Feeds Entire libraries can be exported as an RSS feed.
Inserting JavaScript Code ,[object Object],Citeulike icon in your Web Page
Similarities / Comparison Connotea CiteUlike Bookmarklets Yes Yes Export Formats ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Tag Sorting Order of Entry Alphabetically OpenSource Yes No
A short guide to REST-style Web Services.
Representational State Transfer ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
REST Services, Continued ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
An April Fools Critique of REST ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],echo “ Groundskeeper Willie : It won't last. Brothers and sisters are natural enemies. Like Englishmen and Scots! Or Welshmen and Scots! Or Japanese and Scots! Or Scots and other Scots! Damn Scots! They ruined Scotland!  Principal Skinner : You Scots sure are a contentious people.  Groundskeeper Willie : You just made an enemy for life!” | sed “s/Scots/RESTifarians/”
We examine Amazon’s Simple Storage System as a REST case study.
[object Object],[object Object],[object Object],[object Object],[object Object],Authorization: AWS 1ATXQ3HHA59CYF1CVS02:SZf1cHmQ/nrZbsrC13hCZS061yw= “ Authorization: AWS  “+ AWSAccessKeyID + “:” + Signature The authorization line is formed like so: An example :
Buckets: Grouping Your Files ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Buckets (cont’d)  Buckets are created with an http PUT formed like this : PUT /[bucket-name] HTTP/1.0  Date: Wed, 08 Mar 2006 04:06:15 GMT  Authorization: AWS [aws-access-key-id]:[header-signature]  Host: s3.amazonaws.com If properly formed it would return a response of  HTTP/1.1 200 OK  x-amz-id-2: VjzdTviQorQtSjcgLshzCZSzN+7CnewvHA+6sNxR3VRcUPyO5fmSmo8bWnIS52qa  x-amz-request-id: 91A8CC60F9FC49E7  Date: Wed, 08 Mar 2006 04:06:15 GMT  Location: /[bucket-name]  Content-Length: 0  Connection: keep-alive  Server: AmazonS3
Objects: Stored Files ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Replacing/Overwriting Objects ,[object Object],[object Object],[object Object],[object Object]
PUT /[bucket-name]/[key-name] HTTP/1.0  Date: Wed, 08 Mar 2006 04:06:16 GMT  Authorization: AWS [aws-access-key-id]:[header-signature]  Host: s3.amazonaws.com  Content-Length: 14 x-amz-meta-title: my title  Content-Type: text/plain this is a test The HTTP request to upload a file will look like this: This will give the following response:  HTTP/1.1 200 OK  x-amz-id-2: wc15E1LUrjDZhNtT4QZtsbtadnOMKGjw5QTxkRDVO1owwbA6YoiqJJEuKShopufw  x-amz-request-id: 7487CD42C5CA7524  Date: Wed, 08 Mar 2006 04:06:16 GMT  ETag: &quot;54b0c58c7ce9f2a8b551351102ee0938&quot;  Content-Length: 0  Connection: keep-alive  Server: AmazonS3
File Permissions ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object]
Permissions (Grantee Types) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
<AccessControlPolicy>  <Owner> <ID>a9a7b886d6fd24a52fe8ca5bef65f89a64e0193f23000e241bf9b1c61be666e9</ID>  <DisplayName>chriscustomer</DisplayName>  </Owner>  <AccessControlList>  <Grant>  <Grantee xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;  xsi:type=&quot;CanonicalUser&quot;>  <ID>a9a7b886d6fd24a52fe8ca5bef65f89a64e0193f23000e241bf9b1c61be666e9</ID>  <DisplayName>chriscustomer</DisplayName>  </Grantee>  <Permission>FULL_CONTROL</Permission>  </Grant> <Grant>  <Grantee xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;Group&quot;>  <URI>http://acs.amazonaws.com/groups/global/AllUsers<URI>  </Grantee>  <Permission>READ</Permission>  </Grant>  </AccessControlList>  </AccessControlPolicy> Single User  Entry Group Entry Owner
How to Use S3 With PHP programming examples
Define Constants ,[object Object],[object Object],[object Object],define (“amazonKey”,”15B4D3491F177624206A”); define  (“amazonSecret”,”(secret code given by S3)”); define  (“amazonURL”,”http://s3.amazonaws.com/” ); define (“amazonBucket”,”BucketName”);
$ pear install HTTP_Request $ pear install Crypt_HMAC require_once ‘Crypt/HMAC.php’; require_once ‘HTTP/Request.php’; S3 requires the use of HTTP Requests and RFC 2104 compliant hashes.  Luckily, the Pear framework (which comes with PHP) has made packages for these purposes.  Before using these packages, they must be added to PHP.  Simply run these commands (pear is found in /bin under the /php directory). Any php script that will use these packages must include these two lines.
function hex2b64($str)  { $raw = ''; for ($i=0; $i < strlen($str); $i+=2)  { $raw .= chr(hexdec(substr($str, $i, 2))); } return base64_encode($raw); } function constructSig($str)  { $hasher =& new Crypt_HMAC(amazonSecret, &quot;sha1&quot;); $signature = hex2b64($hasher->hash($str)); return($signature); } Two functions will need to be created to facilitate the use of S3. Converts a string from  hex to base 64 Constructs the “Signature” using the secret key to hash the given string and encode it
function createBucket($bucket, $acl = 'private') { $httpDate = gmdate(&quot;D, d M Y G:i:s T&quot;); echo $httpDate; $stringToSign = &quot;PUT$httpDatex-amz-acl:$acl/$bucket&quot;; $signature = constructSig($stringToSign); $req =& new HTTP_Request(amazonUrl . $bucket); $req->setMethod(&quot;PUT&quot;); $req->addHeader(&quot;Date&quot;, $httpDate); $req->addHeader(&quot;Authorization&quot;, &quot;AWS &quot; . amazonKey. &quot;:&quot; . $signature); $req->addHeader(&quot;x-amz-acl&quot;, $acl); $response = $req->sendRequest(); $responseCode=$req->getResponseCode(); if ($responseCode == 200) { return true; } else { return false; } } This section constructs the signature This section constructs the headers, and creates the signature Send the request and return whether or not it was successful
createBucket(amazonBucket); ,[object Object],[object Object],[object Object],[object Object],PUT / BucketName HTTP/1.0  Content-Length: 0  Authorization: AWS 15B4D3461F177624206A:YFhSWKDg3qDnGbV7JCnkfdz/IHY=  Date: Thu, 17 Nov 2005 02:40:52 GMT So in this instance, running this line (see previous slide): should create an HTTP request looking like :
function putObject($bucket, $key, $filePath, $contentType, $contentLength, $acl, $metadataArray=array(), $md5=&quot;&quot;){ sort($metadataArray); $resource = &quot;$bucket/$key&quot;; $resource = urlencode($resource); $req = & new HTTP_Request($this->serviceUrl.$resource); $req->setMethod(&quot;PUT&quot;); $httpDate = gmdate(&quot;D, d M Y G:i:s T&quot;); $req->addHeader(&quot;Date&quot;, $httpDate); $req->addHeader(&quot;Content-Type&quot;, $contentType); $req->addHeader(&quot;Content-Length&quot;, $contentLength); $req->addHeader(&quot;x-amz-acl&quot;, $acl); if($md5){ $MD5 = $this->hex2b64(md5_file($filePath)); $req->addHeader(&quot;Content-MD5&quot;, $MD5); } $req->setBody(file_get_contents($filePath)); $stringToSign=&quot;PUT$MD5$contentType$httpDatex-amz-acl:$acl&quot;; foreach($metadataArray as $current){ if($current!=&quot;&quot;){ $stringToSign.=&quot;x-amz-meta-$current&quot;; $header = substr($current,0,strpos($current,':')); $meta = substr($current,strpos($current,':')+1,strlen($current)); $req->addHeader(&quot;x-amz-meta-$header&quot;, $meta); } } $stringToSign.=&quot;/$resource&quot;; $signature = $this->constructSig($stringToSign); $req->addHeader(&quot;Authorization&quot;, &quot;AWS &quot; . $this->accessKeyId . &quot;:&quot; . $signature); $response = $req->sendRequest(); $responseCode = $req->getResponseCode(); if (responseCode == 200) { return true; } else { echo $req->getResponseBody(); return false; } } Prepare the request Add the necessary Headers Includes an md5 if specified Creates the signature,  with metadata Add the contents of the file to the body of the request Send the request and return the response
putObject (amazonBucket, $_FILES[‘upFile’][‘name’], $_FILES[‘upFile’][‘tmp_name’], $_FILES[‘upFile’][‘type’], filesize($_FILES[‘upFile’][‘tmp_name’]), ‘public_read’); In this instance, a file is being uploaded that is simply called “Message”.  This is a simple text file with the contents “Paper or Plastic”.  PUT /BucketName/Neo HTTP/1.0  Content-Length: 16  Authorization: AWS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIc8F2Cy8=  Date: Thu, 17 Nov 2005 07:48:33 GMT  Content-Type: text/plain  Paper or Plastic This will produce the HTTP request seen here : Which will upload this file to the S3 server which can be accessed either by the REST service or directly by accessing the link:  http://s3.amazonaws.com/BucketName/Neo
A brief overview of news feeds, how to create, and how to consume.
Atomsphere ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Create Atom Feed for Bay1Temp ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Java Code for creating an atom feed doc ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Code for adding an entry doc to feed ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Atom Feed for Bay1Temp ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bay1Temp Atom Feed in iGoogle
Making Your Own Feed Consumer ,[object Object],[object Object],[object Object],[object Object],[object Object]
Adding SimplePie to MediaWiki, Part I ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Adding a Feed, Part II ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Use blog to create posts.  Display blog RSS feed in MediaWiki.
Aggregating the Rich Internet Experiences and other buzz phrases
What Is a Portal? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Science Portals  ,[object Object],[object Object],[object Object],[object Object],[object Object]
Web 2.0 Challenges for Science Portals ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Google Gadgets Netvibes Widgets
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Start Pages, Gadgets Portals, Portlets
Writing a Google Gadget ,[object Object],[object Object]
Gadget XML Description ,[object Object],[object Object],[object Object],[object Object]
Add it to your iGoogle page in the usual fashion (click “Add Stuff”).  Gadget shows up in your layout.
Writing a Netvibes Widget ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Add required Netvibes meta tags.  Use Netvibes style sheets. Import netvibes JavaScript
 
Building Better Netvibes Widgets ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
I want to say just one word to you.  Just one word.  Are you listening?  Microformats.
Microformats ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
An Example: A Fault ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Other Examples ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
vCard-->hCard ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],http://microformats.org/wiki/hcard
Should You Care? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Social Networking Sites ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Pre-History of Flickr ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Source: http://en.wikipedia.org/wiki/Flickr
Flickr API Overview ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],http://www.flickr.com/services/api/
What Can You Do with the API? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Feeds ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Badges: Flickr Widgets ,[object Object],[object Object],[object Object]
More Information ,[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
mfrancis
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
Shreedhar Ganapathy
 
Rapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 PlatformRapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 Platform
WSO2
 
Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud
Shekhar Gulati
 

What's hot (20)

OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
 
AK 3 web services using apache axis
AK 3   web services using apache axisAK 3   web services using apache axis
AK 3 web services using apache axis
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RS
 
Rapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 PlatformRapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 Platform
 
Java Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreJava Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : Datastore
 
Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud
 
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web Development
 
Data Access with JDBC
Data Access with JDBCData Access with JDBC
Data Access with JDBC
 
The Past Year in Spring for Apache Geode
The Past Year in Spring for Apache GeodeThe Past Year in Spring for Apache Geode
The Past Year in Spring for Apache Geode
 
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App EngineJava Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
 
ASP.NET 02 - How ASP.NET Works
ASP.NET 02 - How ASP.NET WorksASP.NET 02 - How ASP.NET Works
ASP.NET 02 - How ASP.NET Works
 
jQuery Mobile & PhoneGap
jQuery Mobile & PhoneGapjQuery Mobile & PhoneGap
jQuery Mobile & PhoneGap
 
Spring 4 Web App
Spring 4 Web AppSpring 4 Web App
Spring 4 Web App
 
tut0000021-hevery
tut0000021-heverytut0000021-hevery
tut0000021-hevery
 
Microservices with Spring Boot
Microservices with Spring BootMicroservices with Spring Boot
Microservices with Spring Boot
 

Viewers also liked

Ruby On Rails Tutorial
Ruby On Rails TutorialRuby On Rails Tutorial
Ruby On Rails Tutorial
sunniboy
 
Adam Peller Interoperable Ajax Tools And Mashups
Adam Peller Interoperable Ajax Tools And MashupsAdam Peller Interoperable Ajax Tools And Mashups
Adam Peller Interoperable Ajax Tools And Mashups
Ajax Experience 2009
 

Viewers also liked (11)

CTS Conference Web 2.0 Tutorial Part 1
CTS Conference Web 2.0 Tutorial Part 1CTS Conference Web 2.0 Tutorial Part 1
CTS Conference Web 2.0 Tutorial Part 1
 
Fisl6
Fisl6Fisl6
Fisl6
 
Workin On The Rails Road
Workin On The Rails RoadWorkin On The Rails Road
Workin On The Rails Road
 
Pursuitofbeauty
PursuitofbeautyPursuitofbeauty
Pursuitofbeauty
 
Thomas Fuchs Presentation
Thomas Fuchs PresentationThomas Fuchs Presentation
Thomas Fuchs Presentation
 
Ugo Cei Presentation
Ugo Cei PresentationUgo Cei Presentation
Ugo Cei Presentation
 
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product DevelopmentTom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
 
Struts N E W
Struts N E WStruts N E W
Struts N E W
 
Ruby On Rails Tutorial
Ruby On Rails TutorialRuby On Rails Tutorial
Ruby On Rails Tutorial
 
Adam Peller Interoperable Ajax Tools And Mashups
Adam Peller Interoperable Ajax Tools And MashupsAdam Peller Interoperable Ajax Tools And Mashups
Adam Peller Interoperable Ajax Tools And Mashups
 
GWT Overview And Feature Preview - SV Web JUG - June 16 2009
GWT Overview And Feature Preview - SV Web JUG -  June 16 2009GWT Overview And Feature Preview - SV Web JUG -  June 16 2009
GWT Overview And Feature Preview - SV Web JUG - June 16 2009
 

Similar to CTS Conference Web 2.0 Tutorial Part 2

An Introduction to Ajax Programming
An Introduction to Ajax ProgrammingAn Introduction to Ajax Programming
An Introduction to Ajax Programming
hchen1
 
Using Ajax In Domino Web Applications
Using Ajax In Domino Web ApplicationsUsing Ajax In Domino Web Applications
Using Ajax In Domino Web Applications
dominion
 
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar TechnologiesRob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
george.james
 
Java Script - A New Look
Java Script - A New LookJava Script - A New Look
Java Script - A New Look
rumsan
 
Ajax Y Accesibilidad
Ajax Y AccesibilidadAjax Y Accesibilidad
Ajax Y Accesibilidad
datole
 

Similar to CTS Conference Web 2.0 Tutorial Part 2 (20)

An Introduction to Ajax Programming
An Introduction to Ajax ProgrammingAn Introduction to Ajax Programming
An Introduction to Ajax Programming
 
Using Ajax In Domino Web Applications
Using Ajax In Domino Web ApplicationsUsing Ajax In Domino Web Applications
Using Ajax In Domino Web Applications
 
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar TechnologiesRob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
 
Ajax
AjaxAjax
Ajax
 
Ajax Introduction
Ajax IntroductionAjax Introduction
Ajax Introduction
 
Decoding the Web
Decoding the WebDecoding the Web
Decoding the Web
 
08 ajax
08 ajax08 ajax
08 ajax
 
M Ramya
M RamyaM Ramya
M Ramya
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Jquery beltranhomewrok
Jquery beltranhomewrokJquery beltranhomewrok
Jquery beltranhomewrok
 
Jquery beltranhomewrok
Jquery beltranhomewrokJquery beltranhomewrok
Jquery beltranhomewrok
 
Building Smart Workflows - Dan Diebolt
Building Smart Workflows - Dan DieboltBuilding Smart Workflows - Dan Diebolt
Building Smart Workflows - Dan Diebolt
 
Java Script - A New Look
Java Script - A New LookJava Script - A New Look
Java Script - A New Look
 
Ajax3
Ajax3Ajax3
Ajax3
 
HTML5 and Search Engine Optimization (SEO)
HTML5 and Search Engine Optimization (SEO)HTML5 and Search Engine Optimization (SEO)
HTML5 and Search Engine Optimization (SEO)
 
AJAX
AJAXAJAX
AJAX
 
Internet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian ThilmanyInternet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian Thilmany
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Ajax Y Accesibilidad
Ajax Y AccesibilidadAjax Y Accesibilidad
Ajax Y Accesibilidad
 

More from Geoffrey Fox

Spidal Java: High Performance Data Analytics with Java on Large Multicore HPC...
Spidal Java: High Performance Data Analytics with Java on Large Multicore HPC...Spidal Java: High Performance Data Analytics with Java on Large Multicore HPC...
Spidal Java: High Performance Data Analytics with Java on Large Multicore HPC...
Geoffrey Fox
 
Data Science Curriculum at Indiana University
Data Science Curriculum at Indiana UniversityData Science Curriculum at Indiana University
Data Science Curriculum at Indiana University
Geoffrey Fox
 

More from Geoffrey Fox (20)

AI-Driven Science and Engineering with the Global AI and Modeling Supercomput...
AI-Driven Science and Engineering with the Global AI and Modeling Supercomput...AI-Driven Science and Engineering with the Global AI and Modeling Supercomput...
AI-Driven Science and Engineering with the Global AI and Modeling Supercomput...
 
Next Generation Grid: Integrating Parallel and Distributed Computing Runtimes...
Next Generation Grid: Integrating Parallel and Distributed Computing Runtimes...Next Generation Grid: Integrating Parallel and Distributed Computing Runtimes...
Next Generation Grid: Integrating Parallel and Distributed Computing Runtimes...
 
High Performance Computing and Big Data
High Performance Computing and Big Data High Performance Computing and Big Data
High Performance Computing and Big Data
 
Spidal Java: High Performance Data Analytics with Java on Large Multicore HPC...
Spidal Java: High Performance Data Analytics with Java on Large Multicore HPC...Spidal Java: High Performance Data Analytics with Java on Large Multicore HPC...
Spidal Java: High Performance Data Analytics with Java on Large Multicore HPC...
 
Big Data HPC Convergence
Big Data HPC ConvergenceBig Data HPC Convergence
Big Data HPC Convergence
 
Data Science and Online Education
Data Science and Online EducationData Science and Online Education
Data Science and Online Education
 
Big Data HPC Convergence and a bunch of other things
Big Data HPC Convergence and a bunch of other thingsBig Data HPC Convergence and a bunch of other things
Big Data HPC Convergence and a bunch of other things
 
High Performance Processing of Streaming Data
High Performance Processing of Streaming DataHigh Performance Processing of Streaming Data
High Performance Processing of Streaming Data
 
Classifying Simulation and Data Intensive Applications and the HPC-Big Data C...
Classifying Simulation and Data Intensive Applications and the HPC-Big Data C...Classifying Simulation and Data Intensive Applications and the HPC-Big Data C...
Classifying Simulation and Data Intensive Applications and the HPC-Big Data C...
 
Visualizing and Clustering Life Science Applications in Parallel 
Visualizing and Clustering Life Science Applications in Parallel Visualizing and Clustering Life Science Applications in Parallel 
Visualizing and Clustering Life Science Applications in Parallel 
 
Lessons from Data Science Program at Indiana University: Curriculum, Students...
Lessons from Data Science Program at Indiana University: Curriculum, Students...Lessons from Data Science Program at Indiana University: Curriculum, Students...
Lessons from Data Science Program at Indiana University: Curriculum, Students...
 
HPC-ABDS High Performance Computing Enhanced Apache Big Data Stack (with a ...
HPC-ABDS High Performance Computing Enhanced Apache Big Data Stack (with a ...HPC-ABDS High Performance Computing Enhanced Apache Big Data Stack (with a ...
HPC-ABDS High Performance Computing Enhanced Apache Big Data Stack (with a ...
 
Data Science Curriculum at Indiana University
Data Science Curriculum at Indiana UniversityData Science Curriculum at Indiana University
Data Science Curriculum at Indiana University
 
What is the "Big Data" version of the Linpack Benchmark? ; What is “Big Data...
What is the "Big Data" version of the Linpack Benchmark?; What is “Big Data...What is the "Big Data" version of the Linpack Benchmark?; What is “Big Data...
What is the "Big Data" version of the Linpack Benchmark? ; What is “Big Data...
 
Experience with Online Teaching with Open Source MOOC Technology
Experience with Online Teaching with Open Source MOOC TechnologyExperience with Online Teaching with Open Source MOOC Technology
Experience with Online Teaching with Open Source MOOC Technology
 
Cloud Services for Big Data Analytics
Cloud Services for Big Data AnalyticsCloud Services for Big Data Analytics
Cloud Services for Big Data Analytics
 
Matching Data Intensive Applications and Hardware/Software Architectures
Matching Data Intensive Applications and Hardware/Software ArchitecturesMatching Data Intensive Applications and Hardware/Software Architectures
Matching Data Intensive Applications and Hardware/Software Architectures
 
Big Data and Clouds: Research and Education
Big Data and Clouds: Research and EducationBig Data and Clouds: Research and Education
Big Data and Clouds: Research and Education
 
Comparing Big Data and Simulation Applications and Implications for Software ...
Comparing Big Data and Simulation Applications and Implications for Software ...Comparing Big Data and Simulation Applications and Implications for Software ...
Comparing Big Data and Simulation Applications and Implications for Software ...
 
High Performance Data Analytics and a Java Grande Run Time
High Performance Data Analytics and a Java Grande Run TimeHigh Performance Data Analytics and a Java Grande Run Time
High Performance Data Analytics and a Java Grande Run Time
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

CTS Conference Web 2.0 Tutorial Part 2

  • 1. Marlon Pierce, Geoffrey Fox Community Grids Lab Indiana University
  • 2.
  • 3. We discuss the impact of Web 2.0 on e-Science, Cyberinfrastructure, and Grids
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. JSON Example Defining Arrays in JavaScript JSON Syntax CSS JSON CSS Structure
  • 12.
  • 13. JSON Compared to XML Source: Zakas, Nicholas C., Jeremy McPeak, and Joe Fawcett. Professional AJAX. 1st ed. WROX Press, 2006. XML String JSON String <classinfo> <students> <student> <name>Michael Smith</name> <average>99.5</average> <age>17</age> <graduating>true</graduating> </student> <student> <name>Steve Johnson</name> <average>34.87</average> <age>17</age> <graduating>false</graduating> </students> </classinfo> { &quot;classinfo&quot; : { &quot;students&quot; : [ { &quot;name&quot; : &quot;Michael Smith&quot;, &quot;average&quot; : 99.5, &quot;age&quot; : 17, &quot;graduating&quot; : true }, { &quot;name&quot; : &quot;Steve Johnson&quot;, &quot;average&quot; : 34.87, &quot;age&quot; : 17, &quot;graduating&quot; : false } ] } } Information repeated repeatedly Information isn’t repeated More bytes needed to store the same information Less Bytes needed to store the same information Have to convert string into JavaScript using: var books = req.responseXML.getElementsByTagName(‘< element_name '); JavaScript's eval() method to convert the string into a real JavaScript object E.g. var data = eval('(' + req.responseText + ')');
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. GWT Example Source: http://code.google.com/webtoolkit/documentation/examples/kitchensink/
  • 20.
  • 21.
  • 22. YUI ANIMATION Example http://developer.yahoo.com/yui/examples/animation/anim_basic.html
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. Summary GWT YUI DWR Script.aculo.us Code in Java and generate JavaScript/HTML automatically YES NO YES NO Internationalization (easily create international Libraries) YES NO NO NO Integration with frameworks Eclipse, IntelliJ, JProfiler, JUnit NO Spring, Structs, WebWork, JSF, Hibernate, beehive Ruby on Rails, Perl, Nitro, Eclipse, SeaSide, Django, Plone, Java, PHP
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.  
  • 38.
  • 39.
  • 40.
  • 41.
  • 42. Personal Bookmarks * Option to make bookmarks hidden Bookmarks of other users who used common tags * Option to add any user to your network Add users to your network and browse their tags * Option to disable sharing of your network Subscribe to interesting tags to be aggregated
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50. Web Interface 1) Find an interesting article to be tagged 4) This tags the Article of Interest in “My Library” 2) Click on “Add to Connotea” button in the browser 3) Type in the Display Title, Tags, Descriptions etc.
  • 51. RSS Feeds Individual RSS Feed Group RSS Feed
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58. Web Interface Click to save it as a reference
  • 59. RSS Feeds Entire libraries can be exported as an RSS feed.
  • 60.
  • 61.
  • 62. A short guide to REST-style Web Services.
  • 63.
  • 64.
  • 65.
  • 66. We examine Amazon’s Simple Storage System as a REST case study.
  • 67.
  • 68.
  • 69. Buckets (cont’d) Buckets are created with an http PUT formed like this : PUT /[bucket-name] HTTP/1.0 Date: Wed, 08 Mar 2006 04:06:15 GMT Authorization: AWS [aws-access-key-id]:[header-signature] Host: s3.amazonaws.com If properly formed it would return a response of HTTP/1.1 200 OK x-amz-id-2: VjzdTviQorQtSjcgLshzCZSzN+7CnewvHA+6sNxR3VRcUPyO5fmSmo8bWnIS52qa x-amz-request-id: 91A8CC60F9FC49E7 Date: Wed, 08 Mar 2006 04:06:15 GMT Location: /[bucket-name] Content-Length: 0 Connection: keep-alive Server: AmazonS3
  • 70.
  • 71.
  • 72. PUT /[bucket-name]/[key-name] HTTP/1.0 Date: Wed, 08 Mar 2006 04:06:16 GMT Authorization: AWS [aws-access-key-id]:[header-signature] Host: s3.amazonaws.com Content-Length: 14 x-amz-meta-title: my title Content-Type: text/plain this is a test The HTTP request to upload a file will look like this: This will give the following response: HTTP/1.1 200 OK x-amz-id-2: wc15E1LUrjDZhNtT4QZtsbtadnOMKGjw5QTxkRDVO1owwbA6YoiqJJEuKShopufw x-amz-request-id: 7487CD42C5CA7524 Date: Wed, 08 Mar 2006 04:06:16 GMT ETag: &quot;54b0c58c7ce9f2a8b551351102ee0938&quot; Content-Length: 0 Connection: keep-alive Server: AmazonS3
  • 73.
  • 74.
  • 75.
  • 76. <AccessControlPolicy> <Owner> <ID>a9a7b886d6fd24a52fe8ca5bef65f89a64e0193f23000e241bf9b1c61be666e9</ID> <DisplayName>chriscustomer</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;CanonicalUser&quot;> <ID>a9a7b886d6fd24a52fe8ca5bef65f89a64e0193f23000e241bf9b1c61be666e9</ID> <DisplayName>chriscustomer</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> <Grant> <Grantee xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;Group&quot;> <URI>http://acs.amazonaws.com/groups/global/AllUsers<URI> </Grantee> <Permission>READ</Permission> </Grant> </AccessControlList> </AccessControlPolicy> Single User Entry Group Entry Owner
  • 77. How to Use S3 With PHP programming examples
  • 78.
  • 79. $ pear install HTTP_Request $ pear install Crypt_HMAC require_once ‘Crypt/HMAC.php’; require_once ‘HTTP/Request.php’; S3 requires the use of HTTP Requests and RFC 2104 compliant hashes. Luckily, the Pear framework (which comes with PHP) has made packages for these purposes. Before using these packages, they must be added to PHP. Simply run these commands (pear is found in /bin under the /php directory). Any php script that will use these packages must include these two lines.
  • 80. function hex2b64($str) { $raw = ''; for ($i=0; $i < strlen($str); $i+=2) { $raw .= chr(hexdec(substr($str, $i, 2))); } return base64_encode($raw); } function constructSig($str) { $hasher =& new Crypt_HMAC(amazonSecret, &quot;sha1&quot;); $signature = hex2b64($hasher->hash($str)); return($signature); } Two functions will need to be created to facilitate the use of S3. Converts a string from hex to base 64 Constructs the “Signature” using the secret key to hash the given string and encode it
  • 81. function createBucket($bucket, $acl = 'private') { $httpDate = gmdate(&quot;D, d M Y G:i:s T&quot;); echo $httpDate; $stringToSign = &quot;PUT$httpDatex-amz-acl:$acl/$bucket&quot;; $signature = constructSig($stringToSign); $req =& new HTTP_Request(amazonUrl . $bucket); $req->setMethod(&quot;PUT&quot;); $req->addHeader(&quot;Date&quot;, $httpDate); $req->addHeader(&quot;Authorization&quot;, &quot;AWS &quot; . amazonKey. &quot;:&quot; . $signature); $req->addHeader(&quot;x-amz-acl&quot;, $acl); $response = $req->sendRequest(); $responseCode=$req->getResponseCode(); if ($responseCode == 200) { return true; } else { return false; } } This section constructs the signature This section constructs the headers, and creates the signature Send the request and return whether or not it was successful
  • 82.
  • 83. function putObject($bucket, $key, $filePath, $contentType, $contentLength, $acl, $metadataArray=array(), $md5=&quot;&quot;){ sort($metadataArray); $resource = &quot;$bucket/$key&quot;; $resource = urlencode($resource); $req = & new HTTP_Request($this->serviceUrl.$resource); $req->setMethod(&quot;PUT&quot;); $httpDate = gmdate(&quot;D, d M Y G:i:s T&quot;); $req->addHeader(&quot;Date&quot;, $httpDate); $req->addHeader(&quot;Content-Type&quot;, $contentType); $req->addHeader(&quot;Content-Length&quot;, $contentLength); $req->addHeader(&quot;x-amz-acl&quot;, $acl); if($md5){ $MD5 = $this->hex2b64(md5_file($filePath)); $req->addHeader(&quot;Content-MD5&quot;, $MD5); } $req->setBody(file_get_contents($filePath)); $stringToSign=&quot;PUT$MD5$contentType$httpDatex-amz-acl:$acl&quot;; foreach($metadataArray as $current){ if($current!=&quot;&quot;){ $stringToSign.=&quot;x-amz-meta-$current&quot;; $header = substr($current,0,strpos($current,':')); $meta = substr($current,strpos($current,':')+1,strlen($current)); $req->addHeader(&quot;x-amz-meta-$header&quot;, $meta); } } $stringToSign.=&quot;/$resource&quot;; $signature = $this->constructSig($stringToSign); $req->addHeader(&quot;Authorization&quot;, &quot;AWS &quot; . $this->accessKeyId . &quot;:&quot; . $signature); $response = $req->sendRequest(); $responseCode = $req->getResponseCode(); if (responseCode == 200) { return true; } else { echo $req->getResponseBody(); return false; } } Prepare the request Add the necessary Headers Includes an md5 if specified Creates the signature, with metadata Add the contents of the file to the body of the request Send the request and return the response
  • 84. putObject (amazonBucket, $_FILES[‘upFile’][‘name’], $_FILES[‘upFile’][‘tmp_name’], $_FILES[‘upFile’][‘type’], filesize($_FILES[‘upFile’][‘tmp_name’]), ‘public_read’); In this instance, a file is being uploaded that is simply called “Message”. This is a simple text file with the contents “Paper or Plastic”. PUT /BucketName/Neo HTTP/1.0 Content-Length: 16 Authorization: AWS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIc8F2Cy8= Date: Thu, 17 Nov 2005 07:48:33 GMT Content-Type: text/plain Paper or Plastic This will produce the HTTP request seen here : Which will upload this file to the S3 server which can be accessed either by the REST service or directly by accessing the link: http://s3.amazonaws.com/BucketName/Neo
  • 85. A brief overview of news feeds, how to create, and how to consume.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91. Bay1Temp Atom Feed in iGoogle
  • 92.
  • 93.
  • 94.
  • 95. Use blog to create posts. Display blog RSS feed in MediaWiki.
  • 96. Aggregating the Rich Internet Experiences and other buzz phrases
  • 97.
  • 98.
  • 99.
  • 101.
  • 102.
  • 103.
  • 104. Add it to your iGoogle page in the usual fashion (click “Add Stuff”). Gadget shows up in your layout.
  • 105.
  • 106.
  • 107.  
  • 108.
  • 109. I want to say just one word to you. Just one word. Are you listening? Microformats.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.  
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.