{"id":260,"date":"2011-05-01T03:25:56","date_gmt":"2011-05-01T03:25:56","guid":{"rendered":"http:\/\/blog.soton.ac.uk\/cybertube\/?p=260"},"modified":"2011-05-01T03:25:56","modified_gmt":"2011-05-01T03:25:56","slug":"technologies-used","status":"publish","type":"post","link":"https:\/\/blog.soton.ac.uk\/cybertube\/2011\/05\/01\/technologies-used\/","title":{"rendered":"Technologies Used"},"content":{"rendered":"<p>Our implementation is separated in three main three tiers. For the Data tier we used the <a title=\"Mysql Site\" href=\"http:\/\/www.mysql.com\/\" target=\"_blank\">Mysql <\/a> Database. Some of the information that is stored into the database is all the Social network (Facebook, Twitter) credentials (<a title=\"OAuth 2.0 Documentation\" href=\"http:\/\/tools.ietf.org\/pdf\/draft-ietf-oauth-v2-12.pdf\" target=\"_blank\">OAuth 2.0<\/a> access token, OAuth v1.oa oauth_consumer_secret and oauth_token_secret), Movies watched, Moves recommended to friends and place where the movie watched. This information can be exploited in order to provide advanced recommendations.<!--more--><\/p>\n<p>The Second tier (logic tier) is implemented in java and more specifically using <a title=\"Servlet Information\" href=\"http:\/\/java.sun.com\/j2ee\/tutorial\/1_3-fcs\/doc\/Servlets.html\" target=\"_blank\">Servlets <\/a>. We choose this technology firstly because it is free (this will decrease the cost if we want make this project a commercial program), secondly because it provides low level HTTP that provides access to the HTTP Headers allowing us to access protected Web resources using for example OAuth\u00a0credentials, and thirdly because it is based on java which is a well-established language and it has plenty of available and well documented libraries that it speed up our development process. The servlet Component is accessed from the client (Web app, Mobile app, Desktop app) using the GET HTTP method. The reasons that we selected this (and not Sessions or the Post method) is because using the GET method is easier to debug and it provides less overhead to the server providing in that way better throughput. The downside of it is that is not secure (the data are vulnerable to Sniffing attacks). The responses are in JSON or JSONP format (no HTML formatting is returned). It this way we implement a Web API that can be provided to third party developers. The servlet on the other hand uses other APIs like the <a title=\"the movie db\" href=\"http:\/\/www.themoviedb.org\/\" target=\"_blank\">themoviedb <\/a>for getting movie information, the Facebook Graph API and Twitter API for the user\u2019s interaction. For parsing JSON data we used the <a title=\"JSON Simpe Library site\" href=\"http:\/\/code.google.com\/p\/json-simple\/\" target=\"_blank\">JSON-simple<\/a> library form parsing XML data we used the <a title=\"Xstream library\" href=\"http:\/\/xstream.codehaus.org\/\" target=\"_blank\">Xstream<\/a> library and finally for Twitter authentication we used the <a title=\"Scribe-java\" href=\"https:\/\/github.com\/fernandezpablo85\/scribe-java\" target=\"_blank\">Scribe-java<\/a> OAuth library.<\/p>\n<p>In the third tier we used pure HTML 5 pages (no server site scripting langue is used for html code generation). The content of the page is generated using JavaScript and AJAX to provide dynamic user experience. In order to provide a browser independent Javascript code we used the <a title=\"JQuery Library\" href=\"http:\/\/jquery.com\/\" target=\"_blank\">JQuery <\/a>Library and for providing a better mobile user experience we used the <a title=\"JQuery Mobile\" href=\"http:\/\/jquerymobile.com\/\" target=\"_blank\">JQuery Mobile<\/a> library.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Our implementation is separated in three main three tiers. For the Data tier we used the Mysql Database. Some of the information that is stored into the database is all the Social network (Facebook, Twitter) credentials (OAuth 2.0 access token, OAuth v1.oa oauth_consumer_secret and oauth_token_secret), Movies watched, Moves recommended to friends and place where the [&hellip;]<\/p>\n","protected":false},"author":2364,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[32,35,38,39,40,45,50,51,52,53,54,66,71,73,76,90,93,94,96,97,110,116,124],"class_list":["post-260","post","type-post","status-publish","format-standard","hentry","category-project","tag-facebook-graph-api","tag-get","tag-html","tag-html5","tag-http","tag-java","tag-jquery","tag-jquery-mobile","tag-json","tag-json-simple","tag-jsonp","tag-mysql","tag-oauth-1-0a","tag-oauth-2-0","tag-post","tag-scribe-java","tag-servlet","tag-servlets","tag-session","tag-sessions","tag-themoviedb","tag-twitter-api","tag-xstream"],"_links":{"self":[{"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/posts\/260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/users\/2364"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/comments?post=260"}],"version-history":[{"count":0,"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/posts\/260\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/media?parent=260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/categories?post=260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.soton.ac.uk\/cybertube\/wp-json\/wp\/v2\/tags?post=260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}