tag:blogger.com,1999:blog-84442039859922408802024-03-13T14:35:05.542-07:00Sakai GSoC projects blogCatch up with Sakai's Google Summer of Code students and mentors here.aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.comBlogger46125tag:blogger.com,1999:blog-8444203985992240880.post-67371083356285129922012-07-09T04:34:00.003-07:002012-07-09T04:34:20.663-07:00OAuth protocolIn my previous post I write just a small definition about what OAuth protocol is. Today I'm going to try to explain Oauth Workflow, and therefore the work that I've been doing these last two weeks.<br />
<br />
First of all, I am working following the OAuth 2.0. The reasons why I choose to work with the OAuth 2.0 protocol is because OAuth 2.0 is the next evolution of OAuth protocol, a lot of online applications (as Google) considers OAuth 1.0 deprecated, and most of java libs build to work with OAuth, in this case we are using Apache Amber, do not implement Oauth 1.0.<br />
<br />
Now let's take a look at the OAuth protocol basics.<br />
<br />
OAuth defines 4 roles, which take part in the protocol:<br />
<ul>
<li>Resource owner: an entity capable of granting access to a protected resource. When the resource owner is a person, it is referred to as an end-user.</li>
<li>Resource server: the server hosting the protected resources, capable of accepting and responding to protected resource requests using access tokens.</li>
<li>Client: an application making protected resource requests on behalf of the resource owner and with its authorisation. The term client does not imply any particular implementation characteristics (e.g. whether the application executes on a server, a desktop, or other devices).</li>
<li>Authorisation server: the server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorisation.</li>
</ul>
<br />
Let's take a look to OAuth work flow:<br /><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-bWTRBdAFzEE/T_q5QWvirMI/AAAAAAAABnc/jEnwbnzPvtI/s1600/Captura+de+pantalla+2012-07-09+a+la%28s%29+12.53.44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="OAuth 2.0" border="0" height="222" src="http://2.bp.blogspot.com/-bWTRBdAFzEE/T_q5QWvirMI/AAAAAAAABnc/jEnwbnzPvtI/s400/Captura+de+pantalla+2012-07-09+a+la%28s%29+12.53.44.png" title="OAuth 2.0" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-EqsjjvAo-_o/T_qaENrdmwI/AAAAAAAABnQ/OIsex0dXi20/s1600/Captura+de+pantalla+2012-07-09+a+la%28s%29+10.42.50.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
The OAuth Client register itself in the Authorization Server, as
result it will respond with a consumer key and with a shared secret.<br />
<br />
The authorization code work flow diagram involves the following steps:<br />
<ol>
<li>Client obtains request_token: <br />a. The client requests authorization from the resource owner. <br />b. The authorization request can be made directly to the resource owner (as shown), or preferably indirectly via the authorization server as an intermediary.<br /></li>
<li>Resource owner authorises request_token: <br />c. The client receives an authorization grant which is a credential representing the resource owner's authorization, expressed using one of four grant types defined in this specification or using an extension grant type. <br />d. The authorization grant type depends on the method used by the client to request authorization and the types supported by the authorization server.<br /></li>
<li>OAuth Client exchange its request token for access_token: <br />e. The client requests an access token by authenticating with the authorization server and presenting the authorization grant. <br />f. The authorization server authenticates the client and validates the authorization grant, and if valid issues an access token.<br /></li>
<li>OAuth Client uses its access_token to obtain protected resources:<br />The client requests the protected resource from the resource server and authenticates by presenting the access token.<br />The resource server validates the access token, and if valid, serves the request.</li>
</ol>
<br />
I've been working with Amber, I had problems trying to include the library in the project and meanwhile I was working the developers changed pretty much the library. The danger of working with a incubator project. Anyway, it's already working.<br />
Sadly I could not find a good documentation about how to write a provider using this library, so if anyone in the community knows about it please share it in the comments, I would be really grateful.<br />
<br />
Finally, my mentor, Carl Hall, helped me to understand some principles about OSGi than I had confused. Thanks! :)<br />
<br />
I'll keep working in the OAuth Provider, just remember you than you could follow my work <a href="https://github.com/mshopper/nakamura">at github.</a><br />
Any comments will be welcome, and any Amber tutorial too. :) <br />Mrs.Hopperhttp://www.blogger.com/profile/02693383370728820573noreply@blogger.com1Valencia, España39.4702393 -0.376804939.2741203 -0.6926619 39.666358300000006 -0.0609479tag:blogger.com,1999:blog-8444203985992240880.post-21417872406240176392012-06-23T15:16:00.000-07:002012-06-23T15:17:03.296-07:00Oauth integration: First month report<br />
Summer is on, so it's code time. Hooray!<br />
<br />
Beginnings are always harder, but the first development month have passed (as my finals) and I would like to speak about what I've been doing so the Sakai community will be updated properly.
First of all, I must thank my mentor, Carl Hall for his work.<br />
<br />
Now, let's talk about the project. Let's begin with the basic, this is the Oauth definition that we could find in the Wikipedia:<br />
<blockquote>
OAuth is an open standard for authorization. It allows users to share their private resources (e.g. photos, videos, contact lists) stored on one site with another site without having to hand out their credentials, typically supplying username and password tokens instead. Each token grants access to a specific site (e.g., a video editing site) for specific resources (e.g., just videos from a specific album) and for a defined duration (e.g., the next 2 hours). This allows a user to grant a third party site access to their information stored with another service provider, without sharing their access permissions or the full extent of their data.
</blockquote>
We can easily realize how useful it is for Sakai Nakamura to have an Oauth provider. It will allow third part applications, as native mobile apps, access to private resources to the users, useful isn't? Moreover, the community has already identify this need here [0]<br />
<br />
This first month I've been working basically in setting up the development environment, and learning about Oauth protocol. I was planning to write a tutorial with my notes but this tutorial [1], it's really useful. Anyway, if the spanish-speaking community will find it useful a translation of it, leave a comment and I will write it happily. Also, I fork Nakamura repository and I began to write the skeleton of the Oauth Client and Oauth Server (right now it's just an hello world), you can follow the development here [2].<br />
<br />
I hope you are interested about the project, I would like to hear some feedback. And if you have anything to ask or suggest me, please do not hesitate.<br />
<br />
By the way, happy Turing's day :)<br />
<br />
[ 0] https://confluence.sakaiproject.org/display/KERNDOC/KERN-807+Add+support+to+the+proxy+server+for+3th+party+OAuth+applications<br />
[1] https://confluence.sakaiproject.org/display/KERNDOC/Nakamura+Boot+Camp<br />
[2] https://github.com/mshopper/nakamuraMrs.Hopperhttp://www.blogger.com/profile/02693383370728820573noreply@blogger.com0Valencia, España39.4702393 -0.376804939.2741203 -0.6926619 39.666358300000006 -0.0609479tag:blogger.com,1999:blog-8444203985992240880.post-75742193435422276402011-09-02T11:40:00.000-07:002011-09-02T11:40:54.772-07:00GSoC pencils down<div dir="ltr" style="text-align: left;" trbidi="on">Congratulations to our successful GSoC students Aadish, Mai and Kasun on completing GSoC, and for their excellent contributions to Sakai. It's been a pleasure working with you. <br />
<br />
Unfortunately it's 'pencils down' for the official project, and all that remains is to collect the T-shirt and to plug Sakai at the GSoC Mentors' conference at Google HQ in Mountain View. Carl Hall will be ably representing again this year - don't forget to take Sakaiger stickers Carl.<br />
<br />
Carl is also going to be taking over from me to admin Sakai GSoC next year, provided Google continues to support this excellent programme, so watch this space for an exciting new chapter.</div>aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com3tag:blogger.com,1999:blog-8444203985992240880.post-86330321604754571192011-08-23T11:01:00.000-07:002011-08-23T11:08:41.561-07:00Summer and HBase!<!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:trackmoves/> <w:trackformatting/> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:donotpromoteqf/> <w:lidthemeother>EN-IN</w:LidThemeOther> <w:lidthemeasian>X-NONE</w:LidThemeAsian> <w:lidthemecomplexscript>X-NONE</w:LidThemeComplexScript> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:dontvertaligncellwithsp/> <w:dontbreakconstrainedforcedtables/> <w:dontvertalignintxbx/> <w:word11kerningpairs/> <w:cachedcolbalance/> </w:Compatibility> <m:mathpr> <m:mathfont val="Cambria Math"> <m:brkbin val="before"> <m:brkbinsub val="--"> <m:smallfrac val="off"> <m:dispdef/> <m:lmargin val="0"> <m:rmargin val="0"> <m:defjc val="centerGroup"> <m:wrapindent val="1440"> <m:intlim val="subSup"> <m:narylim val="undOvr"> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"> <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"> <w:lsdexception locked="false" priority="39" name="toc 1"> <w:lsdexception locked="false" priority="39" name="toc 2"> <w:lsdexception locked="false" priority="39" name="toc 3"> <w:lsdexception locked="false" priority="39" name="toc 4"> <w:lsdexception locked="false" priority="39" name="toc 5"> <w:lsdexception locked="false" priority="39" name="toc 6"> <w:lsdexception locked="false" priority="39" name="toc 7"> <w:lsdexception locked="false" priority="39" name="toc 8"> <w:lsdexception locked="false" priority="39" name="toc 9"> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"> <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"> <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"> <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"> <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"> <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"> <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"> <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"> <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"> <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"> <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"> <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"> <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"> <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"> <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"> <w:lsdexception locked="false" priority="37" name="Bibliography"> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;} </style> <![endif]--> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">I spent most of my summer dealing and learning <i style="mso-bidi-font-style:normal">H</i>adoop’s column data<i style="mso-bidi-font-style:normal">base</i> called <i style="mso-bidi-font-style:normal">HBase.</i> Why this database? To put in Ian Boston’s words : “<i style="mso-bidi-font-style:normal">The reason for <span class="il">HBase</span> is its the DB of choice for many systems that want to do large scale data analysis on Hadoop.” </i>Ian declared that the choice of database was HBase on June 27 and since then, I must have clicked more number of links on Google for ‘HBase’ than perhaps the number of HBase deployments itself! Then started the quest of mine, to reconsider database driver in light of this new database, and code for the tests which would judge its performance. After a plethora of idea exchange the code was written and tests were implemented. This post aims at explaining and shedding some light on deployment of HBase as how I had done it during the summer.</span></p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal"><span style="font-family:"Times New Roman","serif"">World, HBase. HBase, world.</span></b></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">People coming from RDBMS background, just shake your head vigorously, and forget all the schema that you have ever implemented in your life! To absorb concepts of HBase, just vacuum clean your head and make room for new concepts to flow in.</span></p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal"><span style="font-family:"Times New Roman","serif"">Why HBase?</span></b></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">To answer that question I’ll have to walk you through the problems of traditional databases. Traditional databases face basically two types of problems: First is scaling and the second one, well, can be called ‘sparse-ity’.<span style="mso-spacerun:yes"> </span>Traditional RDBMS may be reliable, widely used, developer friendly blah blah blah, but when you ask it “How do I scale you”, it would reply “Put more money in me and buy more hardware”. The second problem can be addressed thus: Imagine you are trying to stuff an intricate object graph, with many interdependent objects and relations into RDBMS schema. Definitely, you are bound to end up with a schema wherein an object may have several attributes, which well, may be seldomly used. Your RDBMS surely is going to charge you for all those extra ‘NULL’ references out there! So how does HBase deal with this, lets see!</span></p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal"><span style="font-family:"Times New Roman","serif"">HBase and scaling :</span></b></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">HBase is specialized column DB(more on it soon), mastered in scaling. It partitions horizontally and ‘distributes’ data over huge number of commodity servers. HBase is built on Hadoop , which implements functionality similar to Google's GFS and Map/Reduce systems. It provides means to efficiently organize and serve huge amount of data. If you are more interested read Google’s BigTable Paper and Map/Reduce concepts.</span></p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal"><span style="font-family:"Times New Roman","serif"">HBase and ‘sparse-ity’:</span></b></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">HBase is a column oriented database. This means that it stores contents in form of columns rather than rows. This frees up the need of attributes which may not be necessary for an object. In row DBs, where you would have nineteen NULLs and one attribute, HBase(or rather any column DB) would only save that one attribute. So, less room for storage, and high speed performance!</span></p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal"><span style="font-family:"Times New Roman","serif"">HBase datamodel:</span></b></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">An excellent read for this would be : </span><a href="http://wiki.apache.org/hadoop/Hbase/DataModel">http://wiki.apache.org/hadoop/Hbase/DataModel</a><span style="font-family:"Times New Roman","serif""></span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif""> </span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif""> </span></p> <p class="MsoNormal"><span style="font-size:14.0pt;line-height:115%;font-family: "Times New Roman","serif""> </span></p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal"><span style="font-size:14.0pt;line-height:115%;font-family:"Times New Roman","serif"">How I went about setting up HBase for SparseMapContent:</span></b></p> <p class="MsoNormal"><b><span style="font-family:"Times New Roman","serif"; color:black">Configuring Apache HBase database on Windows:</span></b><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:black">The page describes how to configure Apache HBase in a standalone mode on Windows using Cygwin.</span>
<br />
<br /><span style="color:black">For Windows environment, 3 technologies are required which are JAVA, SSH and Cygwin.</span>
<br />
<br /><b><span style="color:black">Installing JAVA:</span></b>
<br /><span style="color:black">Download the standard Edition JAVA plateform from here and follow the simple GUI wizard to install the same.</span>
<br />
<br /><b><span style="color:black">Installing Cygwin</span></b>
<br /><span style="color:black">Cygwin provides *nix like environment in Windows. Steps for installation are as follows:</span>
<br /><span style="color:#333333">1. Make sure you have Administrator privileges on the target system.</span><b><span style="color: black"></span></b></span></p> <p style="margin:0cm;margin-bottom:.0001pt;text-align:justify"><span style="font-size:11.0pt;color:#333333">2. Create <b>Root</b> and <b>Local Package</b> directories. A good suggestion is to use C:\cygwin\root and C:\cygwin\setup folders.</span></p> <p style="margin:0cm;margin-bottom:.0001pt;text-align:justify"><span style="font-size:11.0pt"> </span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; color:#333333">3. Download the setup.exe utility from here and save it to the <b>Local Package</b> directory.</span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">4. Run the setup.exe utility,</span></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. Choose the Install from Internet option,</span>
<br /><span style="color:#333333">2. Choose your <b>Root</b> and <b>Local Package</b> folders</span>
<br /><span style="color:#333333">3. and select an appropriate mirror.</span>
<br /><span style="color:#333333">4. Don't select any additional packages yet, as we only want to install Cygwin for now.</span>
<br /><span style="color:#333333">5. Wait for download and install</span>
<br /><span style="color:#333333">6. Finish the installation</span>
<br /><span style="color:#333333">5. Add CYGWIN_HOME system-wide environment variable that points to your <b>Root </b>directory.</span>
<br /><span style="color:#333333">6. Add %CYGWIN_HOME%\bin to the end of your PATH environment variable.</span>
<br /><span style="color:#333333">7. Reboot the sytem after making changes to the environment variables otherwise the OS will not be able to find the Cygwin utilities.</span>
<br /><span style="color:#333333">8. Test your installation by running your freshly created shortcuts or the Cygwin.bat command in the <b>Root</b> folder. You should end up in a terminal window that is running a</span></span><a href="http://www.gnu.org/software/bash/manual/bashref.html"><span style="color:#4477AA">Bash shell</span></a><span style="font-family:"Times New Roman","serif"; color:#333333">. Test the shell by issuing following commands:</span></p> <p class="MsoNormal" style="margin-left:70.9pt"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. cd / should take you to the <b>Root</b> directory in Cygwin;</span>
<br /><span style="color:#333333">2. the LS commands that should list all files and folders in the current directory.</span>
<br /><span style="color:#333333">3. Use the exit command to end the terminal.</span></span></p> <p class="MsoNormal" style="margin-left:35.45pt"><span style="font-family:"Times New Roman","serif"; color:#333333">9. When needed, to <b>uninstall</b> Cygwin you can simply delete the <b>Root</b> and <b>Local Package</b> directory, and the <b>shortcuts</b> that were created during installation.</span></p> <p class="MsoNormal"><b><span style="font-family:"Times New Roman","serif"; color:#333333">Installing SSH:</span></b><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:black">HBase (and Hadoop) rely on </span></span><a href="http://nl.wikipedia.org/wiki/Secure_Shell"><span style="color:#4477AA">SSH</span></a><span style="font-family:"Times New Roman","serif";color:black"> for interprocess/-node <b>communication</b> and launching <b>remote commands.</b></span><span style="font-family:"Times New Roman","serif"">
<br />
<br /><span style="color:#333333">1. Rerun the <b>setup.exe </b>utility.</span>
<br /><span style="color:#333333">2. Leave all parameters as is, skipping through the wizard using the Next button until the Select Packages panel is shown.</span>
<br /><span style="color:#333333">3. Maximize the window and click the View button to toggle to the list view, which is ordered alphabetically on Package, making it easier to find the packages we'll need.</span>
<br /><span style="color:#333333">4. Select the following packages by clicking the status word (normally Skip) so it's marked for installation. Use the Next button to download and install the packages.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. OpenSSH</span>
<br /><span style="color:#333333">2. tcp_wrappers</span>
<br /><span style="color:#333333">3. diffutils</span>
<br /><span style="color:#333333">4. zlib</span>
<br /><span style="color:#333333">5. Wait for the install to complete and finish the installation.</span>
<br />
<br /><b><span style="color:black">Installing HBase</span></b>
<br /><span style="color:black">Downlaod HBase from here, unzip it and place it under the directory C:\cygwin\usr\local\ so that it gets installed in Cygwin(C:\cygwin\usr\local\hbase-<version>)</version></span>
<br />
<br /><b><span style="color:black">Configuring JAVA</span></b>
<br /><span style="color:#333333">1. Create a symbolic link in /usr/local to the Java home directory by using the following command and substituting the name of your chosen Java environment:</span>
<br /><span style="color:#333333">LN -s /cygdrive/c/Program\ Files/Java/<i><jre name=""> </jre></i>/usr/local/<i><jre name=""></jre></i></span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">2. Test your java installation by changing directories to your Java folder CD /usr/local/<i><jre name=""></jre></i> and issueing the command ./bin/java -version. This should output your version of the chosen JRE.</span>
<br />
<br /><b><span style="color:#333333">Configuring SSH</span></b>
<br /><span style="color:#333333">1. On Windows Vista and above make sure you run the Cygwin shell with <b>elevated privileges</b>, by right-clicking on the shortcut an using Run as Administrator.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">2. First of all, make sure that the <b>rights on some crucial files</b> are correct. Use the commands underneath and you can verify all rights by using the LS -L command on the different files. Also, notice the auto-completion feature in the shell using <tab> is extremely handy in these situations.</tab></span></span></p> <p class="MsoNormal" style="margin-left:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. chmod +r /etc/passwd to make the passwords file readable for all</span>
<br /><span style="color:#333333">2. chmod u+w /etc/passwd to make the passwords file writable for the owner</span>
<br /><span style="color:#333333">3. chmod +r /etc/group to make the groups file readable for all</span>
<br /><span style="color:#333333">4. chmod u+w /etc/group to make the groups file writable for the owner</span>
<br /><span style="color:#333333">5. chmod 755 /var to make the var folder writable to owner and readable and executable to all</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">3. Edit the <b>/etc/hosts.allow</b> file using your favorite editor (why not VI in the shell!) and make sure the following two lines are in there before the PARANOID line:</span></span></p> <p class="MsoNormal" style="margin-left:1.0cm;text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. ALL : localhost 127.0.0.1/32 : allow</span>
<br /><span style="color:#333333">2. ALL : [::1]/128 : allow</span></span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">4. Next we have to <b>configure SSH</b> by using the script ssh-host-config. The following may be asked in random order but don’t worry about that.</span></span></p> <p class="MsoNormal" style="margin-left:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. If this script asks to overwrite an existing /etc/ssh_config, answer yes.</span>
<br /><span style="color:#333333">2. If this script asks to overwrite an existing /etc/sshd_config, answer yes.</span>
<br /><span style="color:#333333">3. If this script asks to use privilege separation, answer yes.</span>
<br /><span style="color:#333333">4. If this script asks to install sshd as a service, answer yes. Make sure you started your shell as Adminstrator!</span>
<br /><span style="color:#333333">5. If this script asks for the CYGWIN value, just <enter> as the default is ntsec.</enter></span>
<br /><span style="color:#333333">6. If this script asks to create the sshd account, answer yes.</span>
<br /><span style="color:#333333">7. If this script asks to use a different user name as service account, answer no as the default will suffice.</span>
<br /><span style="color:#333333">8. If this script asks to create the cyg_server account, answer yes. Enter a password for the account.</span></span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">5. <b>Start the SSH service</b> using net start sshd or cygrunsrv --start sshd. Notice that cygrunsrv is the utility that make the process run as a Windows service. Confirm that you see a message stating that the CYGWIN sshd service was started succesfully.</span></span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">6. Harmonize Windows and Cygwin<b> user account</b> by using the commands:</span></span></p> <p class="MsoNormal" style="margin-left:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. mkpasswd -cl > /etc/passwd</span>
<br /><span style="color:#333333">2. mkgroup --local > /etc/group</span></span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">7. <b>Test </b>the installation of SSH:</span></span></p> <p class="MsoNormal" style="margin-left:1.0cm;text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. Open a new Cygwin terminal</span>
<br /><span style="color:#333333">2. Use the command whoami to verify your userID</span>
<br /><span style="color:#333333">3. Issue an ssh localhost to connect to the system itself</span>
<br /><span style="color:#333333"><span style="mso-spacerun:yes"> </span>1. Answer yes when presented with the server's fingerprint</span>
<br /><span style="color:#333333"><span style="mso-spacerun:yes"> </span>2. Issue your password when prompted</span>
<br /><span style="color:#333333"><span style="mso-spacerun:yes"> </span>3. test a few commands in the remote session</span>
<br /><span style="color:#333333">4. The exit command should take you back to your first shell in Cygwin</span>
<br /><span style="color:#333333">5. Exit should terminate the Cygwin shell.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">8. If you get stuck with some password problem, you can change it using the command passwd.</span>
<br />
<br />
<br /><b><span style="color:#333333">Configuring HBase</span></b>
<br />
<br /><span style="color:#333333">(2nd and 3rd steps are optional.)</span>
<br /><span style="color:#333333">1. HBase uses the ./conf/<b>hbase-env.sh</b> to configure its dependencies on the runtime environment. Copy and uncomment following lines just underneath their original, change them to fit your environemnt. They should read something like:</span></span></p> <p class="MsoNormal" style="margin-left:1.0cm;text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. export JAVA_HOME=/usr/local/<i><jre name=""></jre></i></span>
<br /><span style="color:#333333">2. export HBASE_IDENT_STRING=$HOSTNAME as this most likely does not inlcude spaces.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">2. HBase uses the ./conf/<b>hbase-default.xml</b> file for configuration. Some properties do not resolve to existing directories because the JVM runs on Windows. This is the major issue to keep in mind when working with Cygwin: within the shell all paths are *nix-alike, hence relative to the root /. However, every parameter that is to be consumed within the windows processes themself, need to be Windows settings, hence C:\-alike. Change following propeties in the configuration file, adjusting paths where necessary to conform with your own installation:</span></span></p> <p class="MsoNormal" style="margin-left:1.0cm;text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. hbase.rootdir must read e.g. file:///C:/cygwin/root/tmp/hbase/data</span>
<br /><span style="color:#333333">2. hbase.tmp.dir must read C:/cygwin/root/tmp/hbase/tmp</span>
<br /><span style="color:#333333">3. hbase.zookeeper.quorum must read 127.0.0.1 because for some reason localhost doesn't seem to resolve properly on Cygwin.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">3. Make sure the configured hbase.rootdir and hbase.tmp.dir<b>directories exist</b> and have the proper<b> rights</b> set up e.g. by issuing a chmod 777 on them.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><b><span style="color:black">Testing the installation and configuration of HBase on Windows using Cygwin.</span></b>
<br /><span style="color:#333333">1. Start a Cygwin<b> terminal</b>.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">2. Change directory to HBase <b>installation</b> using CD /usr/local/hbase-<i><version></version></i>, preferably using auto-completion.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">3. <b>Start HBase</b> using the command ./bin/start-hbase.sh</span></span></p> <p class="MsoNormal" style="margin-left:1.0cm;text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. When prompted to accept the SSH fingerprint, answer yes.</span>
<br /><span style="color:#333333">2. When prompted, provide your password. Maybe multiple times.</span>
<br /><span style="color:#333333">3. When the command completes, the HBase server should have started.</span>
<br /><span style="color:#333333">4. However, to be absolutely certain, check the logs in the ./logs directory for any exceptions.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">4. Next we <b>start the HBase shell</b> using the command ./bin/hbase shell</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">5. You can run some simple <b>test commands</b></span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">6. <b>Leave the shell</b> by exit</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">7. To <b>stop the HBase server</b> issue the ./bin/stop-hbase.sh command. And wait for it to complete. Killing the process might corrupt your data on disk.</span></span></p> <p class="MsoNormal" style="text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">8. In case of <b>problems</b>,</span></span></p> <p class="MsoNormal" style="margin-left:1.0cm;text-indent:1.0cm"><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:#333333">1. Verify the HBase logs in the ./logs directory.</span>
<br /><span style="color:#333333">2. Try to fix the problem.</span>
<br /><span style="color:#333333">3. Get help on the forums or IRC (#hbase@freenode.net). People are very active and keen to help out!</span>
<br /><span style="color:#333333">4. Stop, restart and retest the server.</span>
<br />
<br /> </span></p> <p class="MsoNormal"><b><span style="font-family:"Times New Roman","serif"; color:#333333">Getting the code using git</span></b><span style="font-family: "Times New Roman","serif"">
<br /><span style="color:#333333">Open the GIT bash or command prompt and follow the following commands:</span>
<br />
<br /><span style="color:black">$ cd</span>
<br /><span style="color:black">$ mkdir sparsemapcontent</span>
<br /><span style="color:black">$ cd sparcemapcontent</span>
<br /><span style="color:black">$ git clone</span></span><a href="https://github.com/ieb/sparsemapcontent.git"><span style="color:black"> </span><span style="color:#000099">https://github.com/ieb/sparsemapcontent.git</span></a><span style="font-family:"Times New Roman","serif"">
<br /><span style="color:black">$ cd sparsemapcontent/</span>
<br /><span style="color:black">$ maven clean install</span>
<br /><span style="color:black">$ exit</span>
<br />
<br />
<br /><b><span style="color:black">For developing the code in eclipse</span></b>
<br />
<br /><span style="color:black">1. Import sparsemapcontent folder as existing maven project.</span>
<br /><span style="color:black">2. Include the following jar files into the project in case they are not there from /usr/local/hbase-<version> folder.</version></span>
<br /><span style="color:black">· Hbase-<vetrsion>.jar</vetrsion></span>
<br /><span style="color:black">· Hbase-<version>-test.jar</version></span>
<br /><span style="color:black">3. Start the HBase server as stated before.</span>
<br /><span style="color:black">4. Create the tables au, an, cn and smcindex.</span></span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; color:black">So that was how I dirtied my hands in HBase. It’s a great DB to understand column DB concepts.<span style="mso-spacerun:yes"> </span>I hope this was helpful. </span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; color:black">Please feel free to mail me at </span><a href="mailto:kotwal.aadish@gmail.com">kotwal.aadish@gmail.com</a><span style="font-family:"Times New Roman","serif";color:black">. Hopefully your mail would put me in a tizzy!</span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; color:black">Also interested readers may ponder over the matter in these site:</span></p> <h2 style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">Configuration of HBase<span style="mso-tab-count: 1"> </span>:</span><span style="font-size:20.0pt;mso-bidi-font-size:18.0pt"> </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"></span></h2> <h2 style="margin-left:36.0pt"><a href="http://hbase.apache.org/book.html#configuration"><span style="font-size: 11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal;mso-bidi-font-weight:bold">http://hbase.apache.org/book.html#configuration</span></a><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"></span></h2> <h2 style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">HBase data model <span style="mso-tab-count:1"> </span>:<span style="mso-spacerun:yes"> </span></span></h2> <h2 style="margin-left:36.0pt"><a href="http://wiki.apache.org/hadoop/Hbase/DataModel"><span style="font-size: 11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal;mso-bidi-font-weight:bold">http://wiki.apache.org/hadoop/Hbase/DataModel</span></a><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"></span></h2> <h2 style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">HBase book<span style="mso-tab-count:2"> </span>:<span style="mso-spacerun:yes"> </span></span></h2> <h2 style="margin-left:36.0pt"><a href="http://hbase.apache.org/book.html"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">http://hbase.apache.org/book.html</span></a><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"></span></h2> <h2 style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">HBase on Windows OS<span style="mso-tab-count:1"> </span>:<span style="mso-spacerun:yes"> </span></span></h2> <h2 style="margin-left:36.0pt"><span style="font-size:11.0pt;mso-bidi-font-size: 10.0pt;font-weight:normal;mso-bidi-font-weight:bold"><span style="mso-spacerun:yes"> </span></span><a href="http://hbase.apache.org/docs/r0.20.6/cygwin.html"><span style="font-size: 11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal;mso-bidi-font-weight:bold">http://hbase.apache.org/docs/r0.20.6/cygwin.html</span></a><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"></span></h2> <h2 style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"><span style="mso-list:Ignore">5.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">Place to start learning about Hadoop : </span></h2> <h2 style="margin-left:36.0pt"><a href="http://developer.yahoo.com/hadoop/tutorial/" target="_blank"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">http://developer.</span><span class="il"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;color:blue;font-weight:normal; mso-bidi-font-weight:bold;text-decoration:none;text-underline:none">yahoo</span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">.com/</span><span class="il"><span style="font-size: 11.0pt;mso-bidi-font-size:10.0pt;color:blue;font-weight:normal;mso-bidi-font-weight: bold;text-decoration:none;text-underline:none">hadoop</span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">/tutorial/</span></a><span style="font-size:11.0pt; mso-bidi-font-size:10.0pt;font-weight:normal;mso-bidi-font-weight:bold"></span></h2> <h2 style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"><span style="mso-list:Ignore">6.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold">HBase debugging and troubleshooting :</span></h2> <h2 style="margin-left:108.0pt;text-indent:-36.0pt;mso-list:l1 level1 lfo2"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"><span style="mso-list:Ignore">i.<span style="font:7.0pt "Times New Roman""> </span></span></span><a href="http://hbase.apache.org/book/trouble.html"><span style="font-size:11.0pt; mso-bidi-font-size:10.0pt;font-weight:normal;mso-bidi-font-weight:bold">http://hbase.apache.org/book/trouble.html</span></a><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"></span></h2> <h2 style="margin-left:108.0pt;text-indent:-36.0pt;mso-list:l1 level1 lfo2"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal; mso-bidi-font-weight:bold"><span style="mso-list:Ignore">ii.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size: 10.0pt;font-weight:normal;mso-bidi-font-weight:bold">http://old.nabble.com/HBase-User-f34655.html</span></h2> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; color:#333333"> </span></p> Aadish Kotwalhttp://www.blogger.com/profile/09804128353621646207noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-45855683303222197822011-08-14T10:03:00.000-07:002011-08-14T12:28:01.933-07:00Sakai OAE Native mobile app: almost the end. <p class="p1"><span class="s1">It is almost the end of the summer of code, (time flies!), so this post will be just a quick summary about how the project is going on, because I want to use all the remaining time to finish some code, add new features and write documentation. </span></p> <p class="p1"><span class="s1">So this is just a sneak view, to keep the community update. Again, I must begin this post thanking my mentor Carl Hall, for his hard work, he has asked every question that has arisen and also he gave me some freedom to make take some decisions. So, thanks Carl! I am really proud to work with you :)
<br /></span></p> <p class="p3"><span class="s2">Ok, let’s focus on what matters. If you read my previous post (<a href="http://sakaigsoc2010.blogspot.com/2011/07/why-should-i-develop-native-mobile.html"><span class="s3">Why should I develop native mobile application (sometimes)?</span></a>), one of the bad things about writing native applications is the maintenance, when I wrote this post I have already complained about </span><span class="s1">the problems of implementing functions in one platform that are completely different in the other. I have been stuck in a lot of device specific problems, I tried my best to take benefit of the iOS and Android user interface, so the layout is slightly different in this two apps.
<br />
<br /></span></p> <p class="p3"><span class="s1">I am going to quickly enumerate things that are already implemented:</span></p><p class="p3"></p><ul><li><b>Skeleton application for Android : </b>It has grown up a lot since last time I talk about it. It has 3 tabs for the main features in Sakai OAE that they match with the 3 main tabs on Sakai web version. Also it has the navigation menu inside “You” tab. All the strings than you can see are internationalized. </li><li><b>Skeleton application for iOS: </b>idem in IOS. It took me a lot of time make it work. As you could see in the demo tabs are in the lower part of the screen, to use the UI specific tabs, and make the application easier to use for iOS and Android users.</li><li><b>Authenticate users in Android and iPhone:</b> last time I wrote I had users could authenticate themselves sending their credentials in Android. Right now they can do the same also in the iOS application. </li><li><b>Store and manage Sakai URL in Android:</b> Carl and I were thinking than write down every time the Sakai URL was really tedious. So we add a new first view where the user writes the URL, the app checks if it’s a valid URL and store it inside the device. In Android it is stored inside the SharedPreferences of the app, so we can get the URL every time we needed it. </li><li><span class="s1"><b>Store and manage Sakai URL in Android:</b> same for iOS. Here the URL is stored in a singleton class inside the </span><span class="s4">NSUserDefaults.</span></li><li><b>Calling a web service and show data in Android: </b>Although the authentication was already a web service, we have achieve to call the Me Service with the user credentials, get back the Basic Information inside a JSON Object, parsing it, populate java classes and showing the information inside the Android App. Apache has really useful libraries to do this. </li><li><b>Calling a web service and show data in iOS:</b> again the result for iOS is the same, but the implementation has nothing to do, here I used JSONFramework to parse the data and Objective-C classes to manage the connection. This web service is inside a thread so it runs in background.
<br />
<br /></li></ul><p></p> <p class="p7"><span class="s1">And since a picture is worth a thousand words, I have uploaded a small demo video to youtube. </span></p>
<br /><iframe width="560" height="349" src="http://www.youtube.com/embed/fwrVWCb8AVU" frameborder="0" allowfullscreen></iframe>
<br /><p class="p7">
<br /></p><p class="p7">I hope you find this project interesting. Thank you for your time and I’d be waiting for your comments.</p> <p class="p9"><span class="s1"></span>
<br /></p> <p class="p10"><span class="s1"></span>
<br /></p> <p class="p8"><span class="s1"></span>
<br /></p>Mrs.Hopperhttp://www.blogger.com/profile/02693383370728820573noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-85688526445297603052011-08-13T19:38:00.000-07:002011-08-13T19:38:15.921-07:00Sakai CLE Mobile Application using phoneGap and jQuery mobile.<title></title> <style type="text/css">
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
A:link { so-language: zxx }
-->
</style> <br />
<div align="JUSTIFY" style="margin-bottom: 0in;"><title></title> <style type="text/css">
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
A:link { so-language: zxx }
-->
</style> </div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;">After a long time I think I should write something here as this will be the last or one before the last opportunity to write in the Sakai Google Summer of code projects blog. </span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div align="JUSTIFY" style="margin-bottom: 0in;">Last month or few weeks was really a hard time because the things I had to handle were almost new to me and almost all the cases were issues and my mentor was getting so many mails with the title * issues (this is a regex) examples would be “Localhost issues”, “Cross domain issues” :-).<br />
<br />
</div><div align="JUSTIFY" style="margin-bottom: 0in;">I think discussing solutions for them would be really worthy because when I googling also what I noticed in some places was “21 users has this question (Stackoverflow)” so I was the (n+1)th person to have same question.<br />
<br />
</div><div align="JUSTIFY" style="margin-bottom: 0in;">First issue raised just after the <a href="http://sakaigsoc2010.blogspot.com/2011/07/sakai-cle-mobile-application-with.html">last post</a> because as I discussed in that I was using JSONP feeds from the server to render application on mobile but due to security reasons JSONP feeds were stopped and I was in trouble. When I searched I note that the solution is JSONP and having a proxy sever both are not going to work for mobile application as JSONP support also no longer there. But all these restrictions are for http:// and https:// protocols I realized later with the help from my mentor. Because as we are developing the application using phoneGap and it uses <a href="file:///">file://</a>/ protocol there is no such restriction to get JSON feeds from a remote server so finally the problem solved. For completeness here is a snippet.</div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><script src="https://gist.github.com/1143445.js?file=sample_pagecreate.js">
</script></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;">Next the issue with localhost, when we are going to test application with emulator (in my case Android) when it sees localhost with in the emulator (device) it is looking for a localhost inside the emulator and eventually failed to find. So I had to use my friends laptop as my dedicated Sakai server. But for mac users I saw a solution here [1] but I can't try it out. Though phoneGap wiki has something like this [2], I could not get it working, please correct me if I am wrong by adding a comment.</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div align="JUSTIFY" style="margin-bottom: 0in;">Next the very immediate issue I had was ajax requests that were in different pages to not working. The issue is like this, I used all the ajax requests in doument.ready event in different htmls but as jquery mobile uses <span style="color: #333333;">a</span><span style="color: #333333;"><span style="font-style: normal;">jax is used to load the contents of each page into the DOM as we navigate, and the DOM ready handler only executes for the first page. [3] So instead of DOM ready, in jquery mobile, we have to bind the </span></span><span style="color: #333333;"><i><b>pagecreate</b></i></span><span style="color: #333333;"><span style="font-style: normal;"><b> </b>event in order to execute the code when the page is loaded and created by ajax. Note that the above snippet is using pagecreate. And one more thing I noticed most of the places is to use data-role=page and create new pages without adding a new HTML this will increase the loading time of each page as well. Use separate HTMLs if you really need only and if you are not happy with the pagecreate you can just use rel=”external” flag with your link like this,</span></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><span style="color: #333333;"><span style="font-style: normal;"><script src="https://gist.github.com/1143456.js?file=relexternalexample.html">
</script></span></span></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><span style="color: #333333;"><span style="font-style: normal;"><span style="font-weight: normal;"><br />
</span></span></span></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><span style="color: #333333;"><span style="font-style: normal;"><span style="font-weight: normal;">but this will stop you by using page transition effects like slide and all and currently there is no way to get the effect with this. </span></span></span> </span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span style="color: #333333;"><span style="font-style: normal;"><span style="font-weight: normal;">And finally, I would like to add some </span></span></span><span style="color: #333333;"><span style="font-style: normal;"><span style="font-weight: normal;">screens that we can see in the application.</span></span></span><br />
<span style="color: #333333;"><span style="font-style: normal;"><span style="font-weight: normal;"><br />
</span></span></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-9O8wJ6CN1D0/Tkczbe0pybI/AAAAAAAAANQ/vrGS889jDU4/s1600/profilenew.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-9O8wJ6CN1D0/Tkczbe0pybI/AAAAAAAAANQ/vrGS889jDU4/s1600/profilenew.jpg" /></a></div><span class="Apple-style-span" style="color: #333333;"><br />
</span><br />
<span class="Apple-style-span" style="color: #333333;"><br />
</span><br />
<span class="Apple-style-span" style="color: #333333;"><br />
</span><br />
<span class="Apple-style-span" style="color: #333333;"><br />
</span><br />
<span class="Apple-style-span" style="color: #333333;"><br />
</span><br />
<span class="Apple-style-span" style="color: #333333;"><br />
</span><br />
<span class="Apple-style-span" style="color: #333333;"><i>"This will be the view of a profile for an user in sakai CLE. User details are categorized in to sections as we can see and they collapsible too. Moreover users can update their status on the go via @sakaimobile :-)"</i></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<br />
<br />
<br />
<div style="text-align: left;"><a href="http://2.bp.blogspot.com/-0jF444qiMxo/TkcvbRAVicI/AAAAAAAAANM/vpJ3P0S5rXE/s1600/anncNew.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-0jF444qiMxo/TkcvbRAVicI/AAAAAAAAANM/vpJ3P0S5rXE/s1600/anncNew.jpg" /></a></div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: justify;"><i>"This is how an user will see what are the new alerts from different tools in a selected site. We will, most probaby, be supporting Announcements, Assignments, Forums and Roster tools." Note that un-supported tools are grayed out. And users can see how many new alerts are there from each tool.</i></div><br />
<br />
<br />
<br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<br />
At the beginning as I said this will be the last or one before the last post in this blog but one day I might be writing here again but as a proud *mentor* for an student of Sakai foundation, who knows? :-)</div><div align="JUSTIFY" style="margin-bottom: 0in;">Add you valuable comment and correct me if there is anything I have mentioned wrong. Thank you all for giving this opportunity to write in this blog and thanks to my mentor for guiding me and help me in all the issues I had.<br />
Next week will be for any documentation stuff, if there are any, and correct the application where necessary to work with different devices.<br />
<br />
</div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;">[1]-<a href="http://stackoverflow.com/questions/5776412/access-localhost-on-mac-from-xcode-phonegap-communicating-with-ajax-to-a-local-r">http://stackoverflow.com/questions/5776412/access-localhost-on-mac-from-xcode-phonegap-communicating-with-ajax-to-a-local-r</a></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;">[2]-<a href="http://wiki.phonegap.com/w/page/31996336/Testing%20an%20application%20via%20%22localhost%22">http://wiki.phonegap.com/w/page/31996336/Testing%20an%20application%20via%20%22localhost%22</a></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;">[3]-<a href="http://jquerymobile.com/demos/1.0b2/#/demos/1.0b2/docs/pages/page-scripting.html">http://jquerymobile.com/demos/1.0b2/#/demos/1.0b2/docs/pages/page-scripting.html</a></span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div align="JUSTIFY" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div style="font-family: Times, 'Times New Roman', serif; margin-bottom: 0in;"><br />
</div><br />
kasun Hettigehttp://www.blogger.com/profile/02898243873946581497noreply@blogger.com7tag:blogger.com,1999:blog-8444203985992240880.post-86513743355432037192011-07-28T04:47:00.000-07:002011-07-28T04:56:31.696-07:00Why should I develop native mobile application (sometimes)?<div style="text-align: justify;">When we faced the question about if we should develop a web mobile application or a native mobile application, there is no universal answer (although sometimes, reading some articles, it seems there is one). When we begin a new development, first of all we must begin with a requirements analysis and functionalities that we are going to implement, and based on these we can make decisions. Just like when an architect designs a building, does not arise if there are good or bad materials or techniques, the architect just think if these materials or techniques are suitable for this particular work. We should think about every developmet independently and carry out a specific analysis for the application we will develop (otherwise the bogeyman will come and he will take away all our work, developers</div><div style="text-align: justify;">who worked during the software crisis will tell us that this is true).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">The purpose of this post is to analyze the case of developing a mobile application for Sakai OAE, of course, this is my analysis and I will be happy to rectify any mistake or any approach that can be wrong. Anyway, if you are interested in something more generic, google is our friend, simply search for "native apps vs web mobile" and you could spend all evening reading tons of articlees about this subject.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">During this GSoC, two mobile applications are being developed for Sakai, and each one follows a different approach. I sincerely believe that both decisions are correct. I'm sure that Kasun Lakpriya and Steve Swinsburg who are developing the web-based mobile application for Sakai CLE, will give you plenty of good reasons why a web application makes sense to Sakai CLE. I'll focus on Sakai OAE.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Sakai is a young web application OAE, based on well-recognized standards, such as ajax or json, its <a href="https://confluence.sakaiproject.org/display/3AK/Design+Goals" target="_blank">design</a> completely revitalizes the user experience by improving the workflow for both teachers and students. It is a highly scalable application that is developed following <a href="https://confluence.sakaiproject.org/display/SAKDEV/Best+Practices+for+Javascript" target="_blank">best practices</a> ... It is definitely a really cool a web application. In fact, thanks to the <a href="https://confluence.sakaiproject.org/display/3AK/Sakai+3+UX+Development+Guidelines+and+Information" target="_blank">hard work</a> being done by the ux team, we can browse the web application using a mobile device and the application still will look really nice. So, in my point of view, since we have a good web application that with small changes may well be a mobile web application, it makes more sense to try to take advantage of the possibilities that native applications will give us.</div><div style="text-align: justify;">And what these possibilities are? Well these are some of them that we could use in Sakai OAE, but certainly these aren't the only ones:</div><ul><br /> <li><strong>Connectivity (Off-line mode)</strong>: Although it's becoming less common, not all places have a good Internet connection, in Spain from where I write at least this is so. And web applications need, obviously, Intenet connection to work (even though we can achive some things with html5 and Google Gears). So being able to have the application running all the time is an advantage, we won't lose an alarm that warning us a deadline of a job, or stop reading some content because we don't have an Internet connection.</li><br /> <li><strong>Improve the user experience: </strong>Native applications, in general, improve the user experience, not only by the performance they can achive, but to use elements of the user interface of the device itself, although, of course this can also be <a href="http://cvil.ly/2011/06/19/pretenders-why-mobile-web-apps-should-stop-trying-to-act-like-native-apps/" target="_blank">emulated</a>. It is also very interesting the possibility of having the application running in the background and receive certain notifications, as twitter apps do.</li><br /> <li><strong>Device-based caching:</strong>Certain information could be store encrypted on the device itself, which is very useful for improving the user experience, not forcing him/her to introduce the same data each time.</li><br /> <li><strong>Using the device features: </strong> This property could seem a bit strange in case of an educational application, but if you think about it is not. For example, when a teacher creates an activity, he/she could not only tag the date and time whe the activity will be done, also it is possible to introduce aGPS address indicating the place where the activity is take place, which is really helpful if we think about field practices, especially large campus or for students with no spatial orientation (this is my case). And surely we could imagine a lot of creative utilities using phone services such as the agenda or the camera. Why should we limit it?</li><br /> <li><strong>Discoverability: </strong>It's really easy to find an application in the market / app store.</li><br /> <li><strong>Performance</strong>: This is, in my opinion, the jewel in the crown of native applications. We can develop threads, use devices notifications, and make the application run in the background... And in the case of our application, where normally users turn on the app early in the morning when they arrive to university and they won't turn off until they go home, this is a very interesting feature to exploit.</li><br /></ul><br /><div style="text-align: justify;">Although there are also mobile applications features negative, we can see the positive side of these (or at least, do not consider them so negative)</div><ul><div style="text-align: justify;"><br /></div> <li><strong>Automatic Updates</strong>: Web applications are updated automatically, while in the case of native applications we should upload them to market/app store and wait util the user updates them. This is initially a point for Web applications, but from my point of view, this is not so negative for Sakai OAE. The mobile application of a large university, must be stable and not constantly updated unless absolutely necessary (I'm thinking of a security bug), so we shouldn't worry too much.</li><br /> <li><strong>The censorship of the market/app store</strong>: I have write market/app store because I don't want to not arouse suspicions, but really where the applications pass quality tests and can be rejected is at the appstore. Again, this seems quite negative, but an application is rejected by quality issues primarily (or duplicate a service of IOS, which is not the case), which obliges us to work hard on the quality of the application, and Apple is not particularly ambiguous on <a href="http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/Intro/Intro.html" target="_blank">how </a>we should develop applications. If we'll see it this way, I honestly do not think it's an inconvenience at all.</li><br /></ul><br /><div style="text-align: justify;">And since not everything could be so beautiful, there are features that are inherently negative (if you can see a positive side please tell me!):</div><ul><div style="text-align: justify;"><br /></div> <li><strong>Reaching the audience:</strong> Although Android IOS and monopolize the market for mobile devices, these are not the only platforms, which makes our mobile applications fail to reach the audience. But as I mentioned in the introduction, Sakai OAE is a good web application that can be accessed from any mobile browser.<strong><br /></strong></li><br /> <li><strong>Maintenance</strong>: This really is a handicap. A native application implies that we must develop at least two projects for IOS and Android, and the rise of Windows Phone makes me think than maybe for this one too. This multiplies the cost of development and maintenance. I'm developing it for IOS and Android, and I suffer the problems of implementing functions in one platform that are completely different in the other, I can not deny this. Some months ago I was naive because I though that the development and maintenance costs would be lower since both apps are restful applications and the same web services are called. Anyway, Sakai community is big and great and I think the advantages outweigh the disadvantages.</li><br /></ul><br /><div style="text-align: justify;">I don't mean that web applications can't work as native applications. And every day we will find new frameworks to simply the work and get better performance.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">To summarize, I don't think there is no good or bad answer about what kind of app develop. This is my analysis, and of course there are many nuances to all the features I've listed, I won't be surprise me if I'm completely wrong in more than one point, so I encourage you to leave me any comment with your thoughts and talk on here or IRC #sakai where you can find me as AdaHopper.</div><div style="text-align: justify;"><br /></div><br /><br /><strong> </strong><br /><br /><strong> </strong><br /><br /><strong> </strong><br /><br /><strong> </strong>Mrs.Hopperhttp://www.blogger.com/profile/02693383370728820573noreply@blogger.com4tag:blogger.com,1999:blog-8444203985992240880.post-54223372363720724822011-07-09T14:13:00.001-07:002011-07-09T14:35:42.071-07:00Mid-Term Report<div><div>Its been amost a month and a half since GSOC started and this is the mid-term report for the 1st phase of the project which is writing all the basic WebDav methods.</div><div>I am glad to say that I have been able to do that without encountering many problems.As I described in my proposal I used milton to rewrite the webdav methods.</div><div><br /></div><div>Milton is an opensource library for adding webdav support for an existing web application.</div><div><br /></div><div><b>Integration</b></div><div>The most common way of using milton is to add the MiltonServlet to web.xml.Milton is agnostic about the nature of the data. we can simply implement the interfaces needed for it to locate the resources.</div><div>The central concept to Milton is Resource so we extend the resource interface </div><div>for each HTTP method with methods to support that method .We can choose which http methods to allow on your data by choosing which Milton Resource interfaces </div><div>to implement.Thus a class which implements a resource will contain methods for GET,POST,MKCOL etc based on the interfaces we implemented.</div><div>Its completely appropriate to not implement any method if we do not want to support the method.</div><div><br /></div><div><b>Progress</b></div><div>At first I thought milton was confusing but after some great support from the author(Brad Mcevoy) I found that milton is very easy to use.</div><div>I created 4 classes 3 implementing the milton interfaces and 1 helper class.The first thing that I did was to implement the File(SakaiFileResource) and Folder(SakaiFolderResource) Resources which represent</div><div>a Resource and a collection respectively.Then I implemented the ResourceFactory(SakaiResourceFactoryImpl) for finding the File and Folder Resources from the URL.</div><div>We take the path in the url entered by the user and check if it represents a resource or a collection based on this it returns instances of SakaiFileResource or SakaiFolderResource.</div><div>And finally I wrote the SakaiDavHelper Class which contains accessory methods.</div><div>The last step is to add the MiltonServlet to web.xml.</div><div><br /></div><div>As of now I have written all the webdav methods using milton but without authentication (its a bit tricky with milton and the current dav code is confusing).The final </div><div>step is to add the milton jars to our pom.xml and we are good to go.</div><div><br /></div><div>In my proposal I mentioned the rewrite of the nested classes DirContextSAKAI,ResourceInfoSAKAI and SakaidavServletInfo This proved unnecessary as milton</div><div>is resource centric and all the required information about a resource or a collection is contained within the file and folder objects(The function gerResourceInfo() does the job) thus eliminating the need for the rewrite.</div><div><br /></div><div>Finally Thanks to my mentors Anthony Whyte and Seth Theriault for their support.</div><div><br /></div></div>rockhttp://www.blogger.com/profile/11492364259157470027noreply@blogger.com1tag:blogger.com,1999:blog-8444203985992240880.post-55974843353801107792011-07-04T03:56:00.001-07:002011-07-04T03:56:53.012-07:00First month report in GSoC<div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: 'Times New Roman'; font-size: medium; "><p>Well, it's been a full month (and a little more), since I started working on coolest grant I know: GSoC. So it's time to make a properly report about project status, mainly to keep up to date with developments in the Sakai developer community.</p><p>I can only begin by thanking the work done by my mentor, Carl Hall, who patiently read my long post and still more patiently answer all my questions. Thanks Carl :)</p><p>I wish more things were finished at the end of this first month. But as recently I completed an important milestone, so I can be positive reviewing reached objectives above remaining objectives. Moreover, it's normal in the first stage takes a little bit longer development because I had to learn the technologies we work on the project (Objective-C, I'm looking at you, weirdo language), refresh the knowledge stored in layers of dust in my head (I'm sorry I left just Android), inquire about Sakai OAE (beautiful breath of fresh air I am sure will revitalize Sakai) and finish my exams (the GSoC starts early for European students).</p><p>But no excuses, let's focus on the things that if I achieved which really matters.</p><p><strong>Sakai OAE:</strong> thanks to jar file that Carl gives me, put into operation a local version of Sakai has been trivial. So I could concentrate on reading the documentation and play a lot with Sakai trying to understand the basic operation of the application. The existing documentation is not extensive, but is compensated by the high availability which the project developers have to answer questions. If you have any problems, I would recommend that you to pass through the irc channel #sakai, there are always good people willing to help, or the mailing list sakai-dev,although the specificity for Sakai OAE is sakai -ui-dev. I have also found very useful documentation on quality tests because I have allowed to understand the user's work flow in Sakai.</p><p><strong>Mock up: </strong>in the presentation of the project I've already showed some mock ups of the application and during this time we have been working,Kasun Kakpriya and I, trying our two mobile applications were most similar, so the user experience will be as similar as possible between the two mobile versions of Sakai CLE and Sakai OAE. We agreed in the work flow of the application, so that the two applications would have the same work flow and differ in some of the screens. This gives us flexibility to offer the best mobile version of each of the versions of Sakai and maintain the user experience. Moreover, regarding the decision that what mock up I will implement , I am still awaiting a answer from the design team Sakai OAE, but I preferred to continue developing the inner part of the application and wait a little bit longer to UI team could answer me. So, if you are part of the design team, would be really nice to get some feedback (thanks!).</p><p><strong>Skeleton application for Android :</strong> it is ready the skeleton of the Sakai application on Android. It is a tiny skeleton for now. It has basically the view with the log in and a second view where he arrived after identifying the user. Created packages are also organized by the java classes as well as the internationalization files.</p><p><strong>Skeleton application for iOS: </strong>idem in IOS. Although , as I said in the introduction: window management in IOS is very strange. Maybe it's because I already have experience in Android and it takes me more work to switch, or because management is really weird (I'd bet on the latter ;) ).</p><p><strong>Authenticate users in Android: </strong>this is the milestone I have achieved. Users can now authenticate themselves sending its credentials. _Carl Hall and I, studied the possibility to authenticate users using the OAuth protocol, even it is a standard that is spreading rapidly, the implementation of this protocol is beyond the aim of GSoC. Also Nakamura's team is working on this. Nevertheless, the application is ready to change an authentication method for another one, so after the change will be not complicated.</p><p>I had this post ready for two weeks, so sorry for the delay. As you will understand the application development has advanced. If you will like to follow the development daily I will suggest to follow the repository: <a href="https://bitbucket.org/mrs.hopper/nellodeeoae" _mce_href="https://bitbucket.org/mrs.hopper/nellodeeoae">https://bitbucket.org/mrs.hopper/nellodeeoae</a></p><p>I hope you are interested about the project, I would like to hear some feedback. And if you have anything to ask or suggest me, plese do not hesitate.</p></div>Mrs.Hopperhttp://www.blogger.com/profile/02693383370728820573noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-41698187646342018942011-07-02T07:29:00.000-07:002011-07-03T01:04:38.498-07:00Sakai CLE mobile application with phoneGap<div class="MsoNormal" style="text-align: justify;"><span class="Apple-style-span" style="font-family: inherit;">In my previous <a href="http://sakaigsoc2010.blogspot.com/2011/05/cross-platform-mobile-application-for.html">post</a> I mentioned how to setup the working environment and useful tools we can use to develop mobile applications using web technologies. Today I am going to present what I learnt during the past few weeks and the status of the CLE mobile application at the moment.</span></div><div class="MsoNormal" style="text-align: justify;"><span class="Apple-style-span" style="font-family: inherit;">As discussed with my mentor, Steve Swinsberg, the basic requirements of the CLE mobile app. are as follows for the first version also listed <a href="https://confluence.sakaiproject.org/display/CLEMBL/Requirements">here</a> and the UI flows can be found <a href="https://confluence.sakaiproject.org/display/CLEMBL/Screens">here</a>. (Screens v1.0.1) </span></div><div class="MsoNormal"><b><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></b></div><div class="MsoNormal"><b><span class="Apple-style-span" style="font-family: inherit;">User login</span></b></div><div class="MsoListParagraphCxSpMiddle"><span class="Apple-style-span" style="font-family: inherit;">User enters user details to enter the system.</span></div><div class="MsoListParagraphCxSpMiddle"><span style="font: normal normal normal 7pt/normal 'Times New Roman';"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></span></div><div class="MsoListParagraphCxSpMiddle"><span class="Apple-style-span" style="font-family: inherit;"><span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span><b>List of sites</b></span></div><div class="MsoListParagraphCxSpMiddle"><span class="Apple-style-span" style="font-family: inherit;">s/he will be directed to a list of sites that they are in (assuming credentials are correct)</span></div><div class="MsoListParagraphCxSpMiddle"><span style="font: normal normal normal 7pt/normal 'Times New Roman';"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></span></div><div class="MsoListParagraphCxSpMiddle"><span class="Apple-style-span" style="font-family: inherit;"><span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span><b>List of tools</b></span></div><div class="MsoListParagraphCxSpMiddle" style="text-align: justify;"><span class="Apple-style-span" style="font-family: inherit;">User selects a site will navigate them to a tools list of the selected site. Here they can see how many new announcements, assignments and etc are there at a glance.</span></div><div class="MsoListParagraphCxSpMiddle"><span style="font: normal normal normal 7pt/normal 'Times New Roman';"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></span></div><div class="MsoListParagraphCxSpMiddle"><span class="Apple-style-span" style="font-family: inherit;"><span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span><b>Mobile version of each tool</b></span></div><div class="MsoListParagraphCxSpLast"><span class="Apple-style-span" style="font-family: inherit;">Once they select a particular tool they can view the above details in detail. This will hopefully be a read only tool for the first version of app.</span></div><div class="MsoListParagraphCxSpLast"><b><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></b></div><div class="MsoListParagraphCxSpLast"><b><span class="Apple-style-span" style="font-family: inherit;">Current status </span></b></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: inherit;">List of sites and tools for a selected site done. </span></div><div class="separator" style="clear: both; text-align: -webkit-auto;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-NXKPJPj--EU/Tg8WyN24HyI/AAAAAAAAAMU/RVGHvSImQKg/s1600/siteList.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span class="Apple-style-span" style="font-family: inherit;"><img border="0" height="400" src="http://1.bp.blogspot.com/-NXKPJPj--EU/Tg8WyN24HyI/AAAAAAAAAMU/RVGHvSImQKg/s400/siteList.jpg" width="286" /></span></a></div><a href="http://1.bp.blogspot.com/-TOoFrNDD8M8/Tg8Wzt15r1I/AAAAAAAAAMY/gto7Kz7gq_I/s1600/toolsList.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span class="Apple-style-span" style="font-family: inherit;"><img border="0" height="400" src="http://1.bp.blogspot.com/-TOoFrNDD8M8/Tg8Wzt15r1I/AAAAAAAAAMY/gto7Kz7gq_I/s400/toolsList.jpg" width="275" /></span></a><br />
<div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
Both this screens are rendered using JSONP feeds of my local host because JSON feeds did not work due to domain issues. Please find the code <a href="https://source.sakaiproject.org/contrib/gsoc/cle-mobile/trunk/">here</a> and please add your suggestions.</div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div style="text-align: justify;"><b><span class="Apple-style-span" style="font-family: inherit;">Try out this in your emulators with phoneGap</span></b></div><div class="MsoNormal" style="text-align: justify;"><span class="Apple-style-span" style="font-family: inherit;">If you want to run this in your emulator what you have to do is to create a phoneGap app. following their <a href="http://www.phonegap.com/start#android">tutorial</a> and add sites.html to assets/www directory. </span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: inherit;">To add JSONP support for your local sakai instance you can do the following change to core-providers in entitybroker and deploy *only* it in tomcat. </span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: inherit;">Checkout entitybroker trunk if you don’t have,</span></div><div class="MsoNormal"><span style="font: normal normal normal 7pt/normal 'Times New Roman';"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></span></div><div class="MsoNormal"></div><ul><li><span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span><span class="apple-style-span"><span style="color: black; line-height: 115%;">svn co <a href="https://source.sakaiproject.org/svn/entitybroker/trunk/" target="_blank"><span style="color: #0065cc;">https://source</span><span style="color: #0065cc;">.</span><wbr></wbr><span style="color: #0065cc;">sakaiproject.org/svn</span><span style="color: #0065cc;">/</span><wbr></wbr><span style="color: #0065cc;">entitybroker/trunk/</span></a></span></span><span class="apple-converted-space"><span style="color: black; line-height: 115%;"> </span></span><span class="apple-style-span"><span style="color: black; line-height: 115%;">entitybroker-trunk</span></span></li>
<li><span class="Apple-style-span" style="font-family: inherit;"><span style="color: black;"><span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span></span></span><span class="Apple-style-span" style="font-family: inherit;"><span style="color: black;">then in, core-providers/src/java/org/sakaiproject/entitybroker/providers/</span></span></li>
</ul><ol></ol>edit the classes where it says:<br />
<br />
<div><script src="https://gist.github.com/1062050.js">
</script></div><div><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: left;"><br />
</div><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: left;">add Formats.JSONP to the end </div><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: left;"><ul><li>mvn clean install sakai:deploy (from entitybroker pom level)</li>
<li><span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span><span style="color: black;">re/start Tomcat.</span></li>
</ul></div><div class="MsoListParagraphCxSpLast" style="line-height: normal; margin-bottom: 0.0001pt; text-align: left;">Yeah that’s it! Now you have JSONP support.</div><div class="MsoListParagraphCxSpLast" style="line-height: normal; margin-bottom: 0.0001pt; text-align: left;"><br />
</div><div class="MsoNormal" style="text-align: left;"><span class="Apple-style-span" style="font-family: inherit;">Here is how to add a customize callback function,</span></div><div class="MsoNormal" style="text-align: left;"><br />
<script src="https://gist.github.com/1062040.js">
</script></div><div class="MsoNormal" style="text-align: left;"><br />
</div><div class="MsoNormal" style="text-align: left;">That's it you should be able to see above screens. :-)<br />
<br />
<div style="text-align: justify;">This is a useful place you can try JS, CSS, HTML <a href="http://jsfiddle.net/">http://jsfiddle.net/</a>. Here we don't need to put all code just the snippets work nicely for example <a href="http://jsfiddle.net/HQK5w/6/">http://jsfiddle.net/HQK5w/6/</a></div><br />
Thanks to my mentor, Steve Swinsberg, for the support and directions.<br />
<br />
As always waiting for your comments. </div></div>kasun Hettigehttp://www.blogger.com/profile/02898243873946581497noreply@blogger.com4tag:blogger.com,1999:blog-8444203985992240880.post-56406235188179084352011-06-21T09:06:00.000-07:002011-06-23T05:39:07.188-07:00Sakai OAE Column Storage Driver Project<!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:trackmoves/> <w:trackformatting/> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:donotpromoteqf/> <w:lidthemeother>EN-IN</w:LidThemeOther> <w:lidthemeasian>X-NONE</w:LidThemeAsian> <w:lidthemecomplexscript>X-NONE</w:LidThemeComplexScript> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:dontvertaligncellwithsp/> <w:dontbreakconstrainedforcedtables/> <w:dontvertalignintxbx/> <w:word11kerningpairs/> <w:cachedcolbalance/> </w:Compatibility> <m:mathpr> <m:mathfont val="Cambria Math"> <m:brkbin val="before"> <m:brkbinsub val="--"> <m:smallfrac val="off"> <m:dispdef/> <m:lmargin val="0"> <m:rmargin val="0"> <m:defjc val="centerGroup"> <m:wrapindent val="1440"> <m:intlim val="subSup"> <m:narylim val="undOvr"> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"> <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"> <w:lsdexception locked="false" priority="39" name="toc 1"> <w:lsdexception locked="false" priority="39" name="toc 2"> <w:lsdexception locked="false" priority="39" name="toc 3"> <w:lsdexception locked="false" priority="39" name="toc 4"> <w:lsdexception locked="false" priority="39" name="toc 5"> <w:lsdexception locked="false" priority="39" name="toc 6"> <w:lsdexception locked="false" priority="39" name="toc 7"> <w:lsdexception locked="false" priority="39" name="toc 8"> <w:lsdexception locked="false" priority="39" name="toc 9"> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"> <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"> <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"> <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"> <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"> <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"> <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"> <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"> <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"> <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"> <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"> <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"> <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"> <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"> <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"> <w:lsdexception locked="false" priority="37" name="Bibliography"> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;} </style> <![endif]--> <p class="MsoNormal">Hello, I am Aadish Kotwal, a now final-year-entering computer engineering student from Mumbai University. This is the first time I have entered into GSOC program and was (and am) very excited to associate myself with Sakai. <span style="color:black;">Sakai Foundation is a great open-source organization. I had been through the past year’s projects and the blogs and thought working here would be a great learning experience. I have been working with many of the technologies Sakai uses for development and working here gives me a very big platform to take my interests and knowledge to a bigger level. I am associated with Sakai OAE, which in their own words is “</span><span style="font-style: italic;">A completely new system that incorporates all of the values of the Sakai CLE, and reimagines a new vision for academic collaboration.</span><span style="color:black;">”</span></p> <p class="MsoNormal"><span style="color:black;">My project is titled “<span style="font-weight: bold;">Sakai OAE Column Storage Driver</span>”.</span></p> <p class="MsoNormal">Put in Sakai’s words, Sakai OAE user content uses a storage mechanism based on a sparse map concept(for more on Sparse Map Content concept refer link [1]) representing column database type storage with a memory window onto the storage. This abstraction has allowed to create traditional RDBMS representations of the storage system with a MySQL driver capable of doing sharded storage over with 1 write/many read DB clusters. The original column driver was based on Apache Cassandra which need some updating to keep it in sync with the latest developments, and Sakai would also like to create a driver for another column DB (eg HBase, Raik, Mongo, CouchDB, etc or some network protocol approach, eg protocol buffer, thrift).<span style="color:black;"></span></p> <p class="MsoNormal"><span style="color:black;">This idea involves modifying the existing Cassandra driver(why Cassandra? See link [2]) Sakai uses to include all the features present in the JDBC driver and then to create a new driver for a database which will be decided during the term of the project.</span></p> <p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";color:#333333;" ></span>I have been in regular discussions with Ian Boston(my mentor). Based on his guidance, I came up with an analysis and a flow of the project which is described below.<span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";font-size:12.0pt;" ><br /><br /></span><b><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language: EN-INfont-family:";font-size:10.0pt;color:#333333;" ></span></b><span style="font-weight: bold;">What we currently have:</span><br />Cassandra driver for the sparsemapcontent with incomplete implementation<span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";font-size:12.0pt;" ><br /><br /></span><b><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language: EN-INfont-family:";font-size:10.0pt;color:#333333;" ></span></b><span style="font-weight: bold;">What I aim to achieve by the end of GSoC term: </span><br />A complete Cassandra driver and a new driver for a NoSQL database implemented from scratch.<span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";font-size:12.0pt;" ><br /><br /></span><span style="font-weight: bold;">The project flow which has been framed after discussion with project mentor is as follows:</span><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";font-size:12.0pt;" ></span></p> <ul type="disc"><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt; vertical-align:baselinecolor:#333333;"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" >Finding all the methods and unit tests that require implementation and completing them.</span><span style="font-family:"Arial","sans-serif";mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" ></span></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt; vertical-align:baselinecolor:#333333;"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" >Working on the analysis of new driver.</span><span style="font-family:"Arial","sans-serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" ></span></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt; vertical-align:baselinecolor:#333333;"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" >Start with coding API for the new driver with a structure similar to that of existing NoSQL driver. Also take feedback after completing this phase if any additional features specific to this database are expected.</span><span style="font-family:"Arial","sans-serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" ></span></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt; vertical-align:baselinecolor:#333333;"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" >After finishing with a working API, I would start with the soak tests and will test the results by implementing it on local machines.</span><span style="font-family:"Arial","sans-serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" ></span></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt; vertical-align:baselinecolor:#333333;"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" >Implement unit tests for the new driver to test functions such as content-addition, deletion, etc. on a local instance of database.</span><span style="font-family:"Arial","sans-serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" ></span></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt; vertical-align:baselinecolor:#333333;"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" >Write integration tests for the new driver to check if it works well with the existing implementation of sparsemapcontent.</span><span style="font-family: "Arial","sans-serif";mso-fareast-Times New Roman";mso-fareast-language: EN-INfont-family:";" ></span></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt; vertical-align:baselinecolor:#333333;"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language:EN-INfont-family:";" >Document the new driver and the implementation details at the confluence.</span><span style="font-family:"Arial","sans-serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" ></span></li></ul> <p class="MsoNormal"><span style="line-height:115%;font-family: "Times New Roman","serif";mso-fareast-Times New Roman";mso-fareast-language: EN-INfont-family:";font-size:12.0pt;" ><br /></span>I have started working on technologies and codebase and have understood the basic structure. I plan to finish the entire learning phase prior to the coding stage and will also try my best to complete work on the existing database driver as early as possible so that I get more time for analysis and thoughts on implementation of new driver.</p> <p style="font-weight: bold;" class="MsoNormal">Progress till date:</p> <p class="MsoListParagraphCxSpMiddle" style="margin-left: 39.3pt; text-indent: -18pt;"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman""> </span></span></span> My first task was to<span style="font-weight: bold;"> get serialization issues of Cassandra to be sorted</span>, and this being my first task, Ian guided me wonderfully through it and made sure I stick to Sakai standards while focussing on efficiency. The task essentially was to write methods to convert an Object to ByteStream and vice versa. A quick link for the same for interested is: https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/types/Types.java<span style="font-family: "Times New Roman","serif";font-family:";color:#333333;" ><span style=""><br /></span></span></p><p class="MsoListParagraphCxSpMiddle" style="margin-left:39.3pt;mso-add-space: auto;text-indent:-18.0pt;mso-list:l1 level1 lfo3"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman""> </span></span></span> My second task was to <span style="font-weight: bold;">implement indexing</span> for efficient retrieval. This too under Ian’s guidance got implemented. This task included to find columns that were supposed to be indexed. The implementation links for the same are:<span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ><span style="mso-list:Ignore"><span style="font:7.0pt "Times New Roman""> </span></span></span><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:trackmoves/> <w:trackformatting/> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:donotpromoteqf/> <w:lidthemeother>EN-IN</w:LidThemeOther> <w:lidthemeasian>X-NONE</w:LidThemeAsian> <w:lidthemecomplexscript>X-NONE</w:LidThemeComplexScript> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:dontvertaligncellwithsp/> <w:dontbreakconstrainedforcedtables/> <w:dontvertalignintxbx/> <w:word11kerningpairs/> <w:cachedcolbalance/> </w:Compatibility> <m:mathpr> <m:mathfont val="Cambria Math"> <m:brkbin val="before"> <m:brkbinsub val="--"> <m:smallfrac val="off"> <m:dispdef/> <m:lmargin val="0"> <m:rmargin val="0"> <m:defjc val="centerGroup"> <m:wrapindent val="1440"> <m:intlim val="subSup"> <m:narylim val="undOvr"> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"> <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"> <w:lsdexception locked="false" priority="39" name="toc 1"> <w:lsdexception locked="false" priority="39" name="toc 2"> <w:lsdexception locked="false" priority="39" name="toc 3"> <w:lsdexception locked="false" priority="39" name="toc 4"> <w:lsdexception locked="false" priority="39" name="toc 5"> <w:lsdexception locked="false" priority="39" name="toc 6"> <w:lsdexception locked="false" priority="39" name="toc 7"> <w:lsdexception locked="false" priority="39" name="toc 8"> <w:lsdexception locked="false" priority="39" name="toc 9"> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"> <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"> <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"> <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"> <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"> <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"> <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"> <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"> <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"> <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"> <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"> <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"> <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"> <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"> <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"> <w:lsdexception locked="false" priority="37" name="Bibliography"> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;} </style> <![endif]--> </p><p class="MsoListParagraph" style="margin-left:39.3pt;mso-add-space:auto; text-indent:-18.0pt;mso-list:l0 level1 lfo1"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ><span style="mso-list:Ignore">a)<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" ><a href="https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/storage/cassandra/CassandraClient.java">https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/storage/cassandra/CassandraClient.java</a> <span style="color:#333333;"></span></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:39.3pt;mso-add-space: auto;text-indent:-18.0pt;mso-list:l1 level1 lfo3"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ><span style="mso-list:Ignore">b)<span style="font:7.0pt "Times New Roman""> </span></span></span><a href="https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/storage/cassandra/CassandraClientPool.java"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" >https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/storage/cassandra/CassandraClientPool.java</span></a><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:39.3pt;mso-add-space: auto;text-indent:-18.0pt;mso-list:l1 level1 lfo3"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ><span style="mso-list:Ignore">c)<span style="font:7.0pt "Times New Roman""> </span></span></span><a href="https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/ConfigurationImpl.java"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" >https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/ConfigurationImpl.java</span></a><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ></span></p> <p class="MsoListParagraphCxSpLast" style="margin-left:18.0pt;mso-add-space:auto; text-indent:-18.0pt;mso-list:l2 level1 lfo2"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ><span style="mso-list:Ignore"> 3.<span style="font:7.0pt "Times New Roman""> </span></span></span> My third task includes<span style="font-weight: bold;"> implementation of find</span> on the Cassandra driver. The task is still under way.</p> <p class="MsoNormal">My primary interest is to create a product of great significance which would be useful and accepted by the entire community.</p> <p style="font-weight: bold;" class="MsoNormal">A note on my mentor (Ian Boston):</p> <p class="MsoNormal">GSOC on onset seemed very intimidating, but it was Ian’s support which really held me through. A thorough, detailed-oriented person, Ian has always been supportive and encouraging in writing efficient codes. The fact that such a busy man explaining the concept in so much detail really enthrals me. Any mistake and Ian not only rushes to correct me, but also shows alternative and better approach of implementation. Working under his guidance is going to be really fruitful this summer, and not to mention fun.</p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language: EN-INfont-family:";color:#333333;" ></span>I will soon post of any further progress, and of course would love comments. My e-mail address is kotwal.aadish@gmail.com .<span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ></span></p> <p class="MsoNormal">Looking forward for an awesome summer... :)</p> <p style="font-weight: bold;" class="MsoNormal">Links:</p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language: EN-INfont-family:";color:#333333;" >[1]: </span><a href="https://confluence.sakaiproject.org/display/KERNDOC/Sparse+Map+Content+-+Developer+Information"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" >https://confluence.sakaiproject.org/display/KERNDOC/Sparse+Map+Content+-+Developer+Information</span></a><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ></span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language: EN-INfont-family:";color:#333333;" >[2]:</span> <a href="http://oreilly.com/catalog/0636920018537"><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";" >http://oreilly.com/catalog/0636920018537</span></a><span style="font-family:"Times New Roman","serif";mso-fareast-Times New Roman"; mso-fareast-language:EN-INfont-family:";color:#333333;" ></span></p> <p class="MsoNormal"><span style="font-family:"Times New Roman","serif"; mso-fareast-Times New Roman";mso-fareast-language: EN-INfont-family:";color:#333333;" > </span></p> <p class="MsoNormal"> </p>Aadish Kotwalhttp://www.blogger.com/profile/09804128353621646207noreply@blogger.com1tag:blogger.com,1999:blog-8444203985992240880.post-26820402047909286632011-06-01T11:07:00.000-07:002011-06-01T12:52:42.885-07:00Sakai OAE native mobile app<p>First of all, I would like to introduce myself, I am Mayte Giménez a student of Computer Science and Fine Arts from Spain. I am doing my specialization in languages and artificial intelligence. I have been working with Sakai for the last 3 years as scholar with David Roldán (recently named fellow, big kudos for him!), and Sakai gave me this big opportunity to develop a mobile application for Sakai OAE.<br /><br />Before I will start talking about the project, I would like to say how impress I am about the big work the community have done with this branch of Sakai. The architecture is really strong and all technologies used are awesome.<br /><br />So, let's talk about the GSoC project!<br />During this summer, I will develop, with the big help of Carl Hall, a mobile application for Sakai OAE. After research our different options, we are going to develop a native application for the main mobile platforms: Android and iOS. So I will be switching from one environment to the other every week.<br />Since Sakai OAE services returns JSON we can take advantage from native application, specially with the Android background services. (I still have to investigate with iOS, any help?)<br /><br />I have created some mock ups about how the application should look like. These are my two proposals:<br /><br /><strong><br />Mockup 1:</strong><br /></p><ul><li> Login window </li><li> If login is correct we arrive to my dashboard, where we can select where to go. If the user selects "My membership" he will get a list of places where he can access and when he selects one site he will see the information about this site.</li><li> If the user selects "My profile" he will see his profile and he could edit it. </li><br /><br /><p style="color: rgb(0, 0, 0); text-align: center;font-family:arial;" class="p2"><span style="font-size:85%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-O3A4c27FzC8/TeaURouG9SI/AAAAAAAABSI/S3UWwdNrvS4/s1600/login.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 166px; height: 320px;" src="http://1.bp.blogspot.com/-O3A4c27FzC8/TeaURouG9SI/AAAAAAAABSI/S3UWwdNrvS4/s320/login.png" alt="" id="BLOGGER_PHOTO_ID_5613337016273401122" border="0" /></a></span></p><p style="color: rgb(0, 0, 0); text-align: center;font-family:arial;" class="p2"><span style="font-size:85%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-O3A4c27FzC8/TeaURouG9SI/AAAAAAAABSI/S3UWwdNrvS4/s1600/login.png"><span style="font-size:85%;"><span class="s1" style="font-size:85%;"></span></span></a><span style="font-size:85%;"><span class="s1" style="font-size:85%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-KE4Sixmnyxo/TeaUR21vwOI/AAAAAAAABSQ/dl_xBsxtnOc/s1600/dashboard.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 166px; height: 320px;" src="http://3.bp.blogspot.com/-KE4Sixmnyxo/TeaUR21vwOI/AAAAAAAABSQ/dl_xBsxtnOc/s320/dashboard.png" alt="" id="BLOGGER_PHOTO_ID_5613337020063531234" border="0" /></a></span></span></span></p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-E-gP151-zmQ/TeaUSJZoKeI/AAAAAAAABSY/c9qyfLOTP5I/s1600/profile.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 166px; height: 320px;" src="http://1.bp.blogspot.com/-E-gP151-zmQ/TeaUSJZoKeI/AAAAAAAABSY/c9qyfLOTP5I/s320/profile.png" alt="" id="BLOGGER_PHOTO_ID_5613337025045866978" border="0" /></a><br /><br /><p><strong>Mockup 2:</strong><br /></p><ul><li>Login window </li><li>If login is correct we arrive to my dashboard, where the user will see some tabs with all the basics of sakai oae. First tab will be the profile, and he will be able to edit his profile. If the user selects "My membership" tab he will get a list of places where he can access and when he selects one site he will see the information about this site.</li><li>If the user is at "My profile", and he press a button (in Android: menu button, in iOs I should investigate which one will be better) he will see all the options of his profile and he could change the view.</li><br /></ul><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-uZLcOz5I1AQ/TeaVuqACeAI/AAAAAAAABSo/qEn7SGaIEQ8/s1600/profile2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 166px; height: 320px;" src="http://1.bp.blogspot.com/-uZLcOz5I1AQ/TeaVuqACeAI/AAAAAAAABSo/qEn7SGaIEQ8/s320/profile2.png" alt="" id="BLOGGER_PHOTO_ID_5613338614344873986" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-9s54Vki2XmY/TeaVuTaxJ1I/AAAAAAAABSg/TYGZfjVtAbU/s1600/dashboard2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 166px; height: 320px;" src="http://3.bp.blogspot.com/-9s54Vki2XmY/TeaVuTaxJ1I/AAAAAAAABSg/TYGZfjVtAbU/s320/dashboard2.png" alt="" id="BLOGGER_PHOTO_ID_5613338608282969938" border="0" /></a><br /><p style="color: rgb(0, 0, 0);font-family:arial;" class="p3"><span class="s1" style="font-size:100%;"><br /></span></p> <p style="color: rgb(0, 0, 0);font-family:arial;" class="p3"><span class="s1" style="font-size:100%;">I would love to have some feed back about these. So please comment! :)</span></p><p style="color: rgb(0, 0, 0);font-family:arial;" class="p3"><span class="s1" style="font-size:100%;">Quite big for a short introduction, isn’t it? Well I won’t bore you much more. </span></p> <p style="color: rgb(0, 0, 0);font-family:arial;" class="p3"><span class="s1" style="font-size:100%;">I have began with the configuration screen on the android environment, so I will post soon about it. </span></p><br /><p style="color: rgb(0, 0, 0);font-family:arial;" class="p3"><span class="s1" style="font-size:100%;">Thanks for reading. Please, comment. And we see us soon. </span></p> <p style="color: rgb(0, 0, 0);font-family:arial;" class="p4"><span style="font-size:85%;"><br /></span></p> <p style="color: rgb(0, 0, 0);font-family:arial;" class="p2"><span style="font-size:85%;"><br /></span></p> <p style="color: rgb(0, 0, 0);font-family:arial;" class="p2"><span style="font-size:85%;"><br /></span></p></ul>Mrs.Hopperhttp://www.blogger.com/profile/02693383370728820573noreply@blogger.com10tag:blogger.com,1999:blog-8444203985992240880.post-16698014072883049132011-06-01T05:05:00.001-07:002011-06-01T09:09:47.541-07:00Improve Sakai CLE WebDav SupportHello,I am Manoj Inukolunu a 4th year student(graduated) from Bits-Pilani Goa, India.<div><br /></div><div>My project is to rewrite the existing sakai CLE webdav code for better maintainability using <a href="http://milton.ettrema.com/index.html"> Milton</a>.</div><div><br /></div><div><ul><li>My mentors are Seth Theriault and Anthony White.</li><li>The Confluence page is at <a href="https://confluence.sakaiproject.org/display/DAV/Home">https://confluence.sakaiproject.org/display/DAV/Hom</a>e</li><li>SVN branch is at <span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px; "><span class="Apple-style-span"><a href="https://source.sakaiproject.org/svn/dav/branches/SAK-20607/" target="_blank">https://source.sakaiproject.<wbr>org/svn/dav/branches/SAK-<wbr>20607/</a></span></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; "><span class="Apple-style-span">Bug tracker is at</span><span class="Apple-style-span"> </span></span><span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><a href="https://jira.sakaiproject.org/browse/SAK-20607" target="_blank">https://jira.sakaiproject.org/<wbr>browse/SAK-20607</a></span></li></ul><div><span class="Apple-style-span" style="border-collapse: collapse;">Milton is a great choice because its open source,it has great support(the mailing list and the author of milton are very helpful).The main problem with the existing code is maintainability due to its large size. All the code is written in a single class and its pretty old based on an older tomcat version. </span></div></div><div><span class="Apple-style-span" style="border-collapse: collapse;">with milton we dont have to worry about maintenance as it handles all the bookkeeping .We only have to implement the interfaces for the functionality.milton is agnostic about the nature of the data.</span></div><div><span class="Apple-style-span"><span class="Apple-style-span" style="border-collapse: collapse;">From my understanding I created 4 classes SakaiFolderResource which implements the FolderResource(com.bradmcevoy.http.FolderResource) SakaiFileResource which implements the FileResource(com.bradmcevoy.http.FileResource) and SakaResourceFactoryImpl which implements the ResourceFactory(com.bradmcevoy.http.ResourceFactory) and a helper class SakaiDavHelper for code re-usability. </span></span></div><div><span class="Apple-style-span" style="border-collapse: collapse;"><br /></span></div><div><span class="Apple-style-span" style="border-collapse: collapse;">Finally the best place for ideas is the confluence page and I can always be reached at manoj0011989@gmail.com for any query's </span></div><div><span class="Apple-style-span"><span class="Apple-style-span" style="border-collapse: collapse;"><br /></span></span></div>rockhttp://www.blogger.com/profile/11492364259157470027noreply@blogger.com1tag:blogger.com,1999:blog-8444203985992240880.post-30855728558903244472011-05-29T11:59:00.003-07:002011-05-29T12:11:44.560-07:00Cross Platform Mobile Application for Sakai CLE<title></title> <style type="text/css">
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
A:link { so-language: zxx }
-->
</style> <br />
<div style="margin-bottom: 0in; text-align: justify;">First, I would like to introduce myself. I am Kasun Lakpriya Hettige from Sri Lanka, following a computer science and engineering degree in University of Moratuwa. I am willing to do my higher studies in Software Engineering field.</div><div style="margin-bottom: 0in;"><br />
</div><div style="font-weight: normal; margin-bottom: 0in;">For those who are not heard of the project here are few links:</div><div style="margin-bottom: 0in;"></div><ul><li><span style="font-weight: normal;">Idea by Steve Swinsberg: </span><a href="https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list#GoogleSummerofCode2011ideaslist-">https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list#GoogleSummerofCode2011ideaslist-</a></li>
<li>Confluence space for app: <a href="https://confluence.sakaiproject.org/display/CLEMBL/Home">https://confluence.sakaiproject.org/display/CLEMBL/Home</a></li>
</ul><br />
<div style="margin-bottom: 0in; text-align: justify;">Idea of this project is to build an mobile application for Sakai CLE to use in many kinds of mobile platforms like Android, iOS, BlackBerry and etc. For this we are using a cross platform library called phoneGap. More details about phoneGap <a href="http://www.phonegap.com/">http://www.phonegap.com/</a>.</div><div style="margin-bottom: 0in;"><br />
<b>Tools and technologies</b></div><div style="margin-bottom: 0in; text-align: justify;">Though the app is going to be ported with different platforms due to some limitations I am developing for Android to test in emulators. Here are my working environment details:</div><ul><li><div style="margin-bottom: 0in;">Eclipse (3.5 or higher)</div></li>
<li><div style="margin-bottom: 0in;">Android SDK </div></li>
<li><div style="margin-bottom: 0in;">ADT plug-in </div></li>
</ul><ul><li><div style="margin-bottom: 0in;">JQuery mobile - <a href="http://jquerymobile.com/">http://jquerymobile.com/</a></div></li>
</ul><ul><li><div style="margin-bottom: 0in;">MDS <a href="http://www.mobiledevelopersolutions.com/home/start">AppLaud 1.2</a> PhoneGap for Android plug-in - This is optional but useful due to its inbuilt,</div></li>
</ul><ul> <ul><li><div style="margin-bottom: 0in;">phoneGap support</div></li>
<li><div style="margin-bottom: 0in;">HTML, JS and CSS project support</div></li>
<li><div style="line-height: 0.22in; margin-bottom: 0in;"><span style="color: black;">Touch-Optimized UI frame support for popular jQuery mobile and Sencha Touch JS libraries at the moment</span></div></li>
<li><div style="line-height: 0.22in; margin-bottom: 0in;"><span style="color: black;">All in one support is a big plus for me</span></div></li>
</ul></ul><div style="margin-bottom: 0in;"><b>NOTE: </b>To use AppLaud you need Eclipse Helios. </div><div style="margin-bottom: 0in; text-align: justify;">As discussed with mentor I will be moving forward with jQuery mobile for now. Here are few screens of the app. </div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-RIPH3H3r1B4/TeKUM__rmQI/AAAAAAAAAKc/DEtwxKIJXms/s1600/all.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="http://4.bp.blogspot.com/-RIPH3H3r1B4/TeKUM__rmQI/AAAAAAAAAKc/DEtwxKIJXms/s400/all.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: justify;">Your ideas, comments are welcome all the time and will really helpful to come up with a nice product. And the best place to collaborate and to get more information about the project would be the above mentioned confluence space. I will be posting here with the progress and the things I will get to know in the meantime. So I hope that anybody who is willing develop mobile apps using these technologies will find this interesting.</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;">Thanking Charith for helping hand with Photoshop and Avinash for some sample screens! :-) </div>kasun Hettigehttp://www.blogger.com/profile/02898243873946581497noreply@blogger.com8tag:blogger.com,1999:blog-8444203985992240880.post-31456442783072052072011-05-10T09:53:00.000-07:002011-05-10T09:54:47.141-07:00Sakai Fellows 2011 announced<div dir="ltr" style="text-align: left;" trbidi="on">Carl Hall has just been made a Sakai Fellow for "exceptional contributions to the community". Congratulations Carl! <br />
<br />
Impressively for our 2011 Sakai GSoC projects, I'm pretty sure Carl's elevation means that all five of our mentors are Sakai Fellows. You can't buy training like that..<br />
<br />
Brief bios of the 2011 Fellows can be found at <a href="http://www.sakaiproject.org/sakai-fellows">http://www.sakaiproject.org/sakai-fellows</a></div>aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-54245795601936331572011-05-04T08:23:00.000-07:002011-05-04T09:25:17.778-07:00Largest ever number of students accepted!<div dir="ltr" style="text-align: left;" trbidi="on">Huge congratulations to all FOUR of our successful applicants, all of whom impressed our mentors with their combination of skill, experience, enthusiasm and ideas.<br />
<br />
<b>Mai Giménez</b>: <u>Sakai OAE native mobile app</u><br />
<ul style="text-align: left;"><li>Mentor: Carl Hall (Hallway Technologies)</li>
<li>Mai is a final year student of computer science at the Polytechnic University of Valencia, Spain. Mai is a great communicator and is actually returning from a related project in Sakai CLE last year so will be hitting the ground running. </li>
</ul><br />
<b>Kasun Lakpriya</b>: <u>Sakai CLE mobile app </u><br />
<ul style="text-align: left;"><li>Mentor: Steve Swinsburg (Australian National University)</li>
<li>Kasun is a final year student at the University of Moratuwa, following a computer science and engineering degree. Kasun is massively enthusiastic about this project and has the distinction of being our first GSoC student from Sri Lanka. </li>
</ul><br />
<b>Aadish Kotwal</b>: <u>Sakai OAE Column Storage Driver </u><br />
<ul style="text-align: left;"><li>Mentor: Ian Boston (University of Cambridge)</li>
<li>Aadish impressed us immensely with his pre-application research and is probably ready to get started right now. He is a fourth-year Computer Engineering student at the University of Mumbai, India. </li>
</ul><br />
<b>Manoj Inukolunu</b>: <u>Improve Sakai CLE WebDAV support</u><br />
<ul style="text-align: left;"><li>Mentors: Anthony Whyte (University of Michigan) and Seth Theriault (Columbia University)</li>
<li>A fourth-year CS student at Birla Institute Of Technology and Sciences (BITS), Pilani, Goa, Manoj is also returning from last year. This time around though he couldn't have a more different project, or one with a better chance of wide deployment. We're counting on you, Manoj!</li>
</ul><br />
Big kudos to all our other applicants also - several of the projects this year had more than one outstanding application and it really wasn't easy for us to choose. Four slots is what Google have given us though and we're really grateful for all four of them, especially as that's the most slots ever for Sakai. <br />
<br />
Between now and May 23rd the students will be getting to know the Sakai project and community and talking to their mentors to flesh out their plans and prepare for the main project phase. These projects aren't just fixing bugs; they're breaking new ground with improved and extended functionality. It won't be enough simply to write code - the students will have to produce code which is useful and maintainable enough that others will take it on even when GSoC is over, as users and as maintainers. It's no mean challenge and they'll need to draw heavily on their mentors' experience to be successful.<br />
<br />
So that everyone can see how they're getting on I'll be asking the students (and mentors!) to post updates here, starting with introductions, but expect to see them in JIRA, Confluence, IRC and the mailing lists as well.</div>aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-28568600912130743942011-04-06T01:46:00.000-07:002011-04-06T02:35:23.797-07:00Feedback from our 2011 application process<div dir="ltr" style="text-align: left;" trbidi="on">I asked members of our Google Group for feedback on our application process. <br />
<br />
First off, students really appreciated the responsiveness of mentors, on the group and directly. This year we've tried to keep as many of the early discussions on the group as possible so they can help other applicants and take the place of a FAQ.<br />
<br />
An outstanding suggestion we will be using is to have successful candidates<b> blog getting started with Sakai</b> and its large codebase, to help future GSoC students and the official community 'getting started' guides too.<br />
<br />
Future ideas on the ideas page will have <b>associated Jira tickets</b> (bugs/issues/tasks) wherever possible, or discussion pages where that makes more sense.<br />
<br />
We'll also encourage mentors to include '<b>initial assignments</b>' that can serve to introduce the project for accepted candidates during the socialisation period and give applicants a way to show their skills - it's a neat and constructive way of having a 'coding challenge' element which is popular in many other orgs. <br />
<br />
I think we'll also be trying to <b>streamline</b> the whole application process and make it less intimidating. We've had fewer applications per project this year than last (so far anyway - applications are still open) so it probably needs to be more exciting and more accessible. Between the blog, Google group, ideas page and Melange page there's a lot of information to take in, and that's before even starting on the Sakai community pages.<br />
<br />
Kudos to <b>Kasun Lakpriya</b>, <b>Nandana Mihindukulasooriya</b>, <b>Avinash Parida</b> and <b>Aadish Kotwal</b> for their terrific feedback. </div>aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-85947361268903099522011-04-05T15:41:00.000-07:002011-04-06T01:17:44.110-07:00Student Application deadline approaching!<div dir="ltr" style="text-align: left;" trbidi="on"><div><div>Friday is the last day to get in your applications!<br />
<br />
If you're interested in any of Sakai's six absolutely great projects now's the time to make tracks to our <a href="https://confluence.sakaiproject.org/display/MGT/GSoC+application+template">application template</a> and start <a href="http://groups.google.com/group/sakai-gsoc">asking questions</a>. We'll try our best to answer quickly and even give you feedback on your application. When you're ready, submit your application via <a href="http://www.google-melange.com/gsoc/org/google/gsoc2011/sakai">Melange</a>.<br />
<br />
Here they are again for you:<br />
<ol style="text-align: left;"><li><a href="https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list#GoogleSummerofCode2011ideaslist-"> <span style="color: #003366;">Sakai CLE mobile app</span></a></li>
<li><a href="https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list#GoogleSummerofCode2011ideaslist-"> <span style="color: #003366;">Improve Sakai CLE WebDAV support</span></a></li>
<li><a href="https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list#GoogleSummerofCode2011ideaslist-"> <span style="color: #003366;">Sakai OAE native mobile app</span></a></li>
<li><a href="https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list#GoogleSummerofCode2011ideaslist-"> <span style="color: #003366;">Sakai OAE Column Storage Driver</span></a></li>
<li><a href="https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list#GoogleSummerofCode2011ideaslist-"> <span style="color: #003366;">Integrate Luke as a Felix Web Console Plugin</span></a></li>
<li><a href="https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list#GoogleSummerofCode2011ideaslist-"> <span style="color: #003366;">Implement Social API interfaces of OpenSocial</span></a></li>
</ol></div><span style="color: #003366;"></span></div>We've had interest up and down the list but it's fair to say number 1 is proving popular, while 2, 5 and 6 are still completely open fields application wise. <br />
<br />
Why are these great projects you should seriously be applying for? First and foremost, the project mentors are all professional developers and ninjas - you can't buy this sort of training. Second, these are all tremendously valuable projects to Sakai and using interesting and up to date technologies. <b>WebDAV</b> support is practically guaranteed to be used by tens of thousands of people - think about having that to boast of on your resume. Building a management interface using <b>Luke</b> and <b>Felix</b> for key <b>Apache Solr</b>-powered search functionality, in a highly modular software environment using many cutting-edge OSS projects, is a classic piece of CV-enhancing development which will get you experience in search and many other technologies. Implementing <b>OpenSocial APIs</b> for Sakai OAE is a key part of Sakai's open and social vision and not only introduces you to social technologies but API-building in general.<br />
<br />
You know you want this - now get on your bike and apply!<br />
<br />
<div></div></div>aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-42717192227376945512011-03-18T15:19:00.001-07:002011-03-18T15:19:04.587-07:00Sakai accepted in GSoC 2011!Great news for Sakai and potential GSoC applicants - the Google open source team have accepted us into GSoC 2011! This means the student application process starts now - get to know the project now and when applications open you'll have a head start. Get in touch on the Google Group or #sakai on Freenode. See you there!aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-34829894906871197192011-03-09T02:35:00.000-08:002011-03-09T02:35:33.093-08:00Draft: 2011 application form for students<div dir="ltr" style="text-align: left;" trbidi="on">In previous years we asked students to send in their application forms as web pages, the idea being to demonstrate some skills in usability, communication, design and coding. It was a bit hit and miss, partly because not everyone has a hosting facility, so I've changed the application template to leave that out and instead encourage applicants to give us evidence of what they have done, and can do. I'm sharing it here so the Sakai community can help me improve it, so this might change!<br />
<br />
<blockquote>We don't require you to have worked on an open source project before, or to have worked on (or even used!) Sakai. We're just looking for enthusiastic people with great communication skills and the ability to create and build really usable web-based user interfaces. We hope that you'll find our application template fairly easy to fill out. <br />
<br />
Please note that we can give you feedback on your applications to help you make them stronger. If you have a draft application, contact the project mentor or share in on #sakai on Freenode and we will try to provide feedback and suggestions. The earlier you get in touch, the better we can help you make your application! This is what we're looking for:<br />
<br />
• you've invested time in familiarising yourself with Sakai <br />
• interest in Sakai's design choices and philosophy<br />
• skills and enthusiasm to take control of your projects<br />
• self-knowledge to know what you will find hard, what easy, what you can achieve in 13 weeks, and when to ask questions<br />
• able to work in a development community, or at least a team<br />
• able to create specifications, as well as execute them<br />
• unafraid to look at and skim through large amounts of code<br />
• experience in key technologies and languages expected in the project<br />
• some idea about usability and user-centric design<br />
• good communication skills - the results of your project will be more than code, so think of this application as a chance to showcase a few paragraphs of your writing<br />
<br />
It's best not to treat this as a shopping list - just use the application template to tell us about yourself, give us some evidence of your skills and experience, and tell us why you'd like to work on a GSoC 2011 Sakai project. <br />
<br />
Here is the application template:<br />
<br />
<ol style="text-align: left;"><li>Do you have a blog, home page or other feed? If so, what is the URL? </li>
<li>Where are you at in your education? What are your educational and career plans and hopes?</li>
<li>Why Sakai?</li>
<li>Which project from the Sakai GSoC ideas page are you interested in? </li>
<li>Why have you chosen this particular project? </li>
<li>Explain how you plan to succeed in that project within the short time frame of the summer. (Goals, risks, project stages, tools - we don't expect you to know everything already, but show us your thinking) </li>
<li>Tabulate or list your language experience. Include any major frameworks, libraries and standards too. Give a very brief summary of experience in each. Give links us to examples if you can. </li>
<li>What experiences do you have participating in open source projects or development teams? Please back these up with links wherever possible .</li>
<li>Do you have any other activities this summer that will take a significant amount of time? (This is not about vacations - it is about responsibilities that you have in addition to the Summer of Code effort)</li>
<li>(optional) Tell us anything else that would illustrate the qualities we're looking for.</li>
<li> What are the best ways for us to contact you?</li>
<li>If your resume isn't on your home page, please paste it as text here.</li>
</ol></blockquote><br />
</div>aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-60152689570568370922011-03-09T02:21:00.000-08:002011-03-09T02:36:41.656-08:00GSoC 2011 kicks off<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://lh5.googleusercontent.com/-sigdkts556w/TXdYMOTpcJI/AAAAAAAAEOU/2Ycj7S-tAD0/s1600/GSOC_2011_300x200px_URL.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://lh5.googleusercontent.com/-sigdkts556w/TXdYMOTpcJI/AAAAAAAAEOU/2Ycj7S-tAD0/s320/GSOC_2011_300x200px_URL.png" width="320" /></a></div><br />
Google have <a href="http://google-opensource.blogspot.com/2011/01/google-summer-of-code-announced-at-lca.html">announced</a> the great news that they'll be running GSoC again in 2011, and needless to say Sakai project is <a href="http://google-opensource.blogspot.com/2011/02/mentoring-organization-applications-now.html">applying</a> to be a mentor organization.<br />
<br />
We've received inquiries from some great potential applicants already so we're really hoping to be accepted. I've been busy updating our blog and Google groups livery and, sending in our application to Google, and most importantly starting a new <a href="https://confluence.sakaiproject.org/display/MGT/Google+Summer+of+Code+2011+ideas+list">ideas page</a> on Confluence. I've already asked Ian Boston and Carl Hall, past GSoC mentors and two of Sakai OAE's leading lights, to put together project proposals, and I'm about to throw it open to the sakai-dev list.<br />
<br />
If you're interested in applying as a student this year keep an eye on the ideas page - there will definitely be some projects up by March 11th when applications from mentoring orgs close, and more will probably appear up to when student applications open on March 28th.<br />
<br />
In the meantime, take advantage of your head start by getting to know Sakai and getting in touch with any ideas of your own - I'd recommend starting in #sakai on freenode.net or the Sakai-GSoC Google Group.<br />
<br />
<br />
</div>aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-73229855082958174042010-08-11T15:49:00.000-07:002010-09-01T03:08:45.659-07:00Pencils downGoogle Summer of Code 2010 is drawing to a close and Sakai's three students all have exciting contributions to share. it's particularly great to see that all three are planning to keep up their involvement with Sakai. Many thanks to Google for running another great GSoC, to our volunteer mentors, and everyone in the community who has helped out.<br />
<br />
<b>Manoj Inukolunu </b>has implemented a citation manager widget, helped by some joint mentoring from Cambridge, writes:<br />
<br />
I have created a citation manager widget for sakai3 with the following features: Add citations, Export in RIS format, Import in RIS format from other reference managers, Comment on Citations, Fetch citations from other sakai3 users, Share the citations, Search for citations (bugs remaining), Delete a specific citation. There are 2 features that needs to be implemented 1) Embed the widget into a course site 2) Add delicious support to Sakai3 (Sakai3 needs to support Oauth for this so waiting) A detailed specification and implementation details can be found at [1].<br />
<br />
It has been a wonderful experience to work the Sakai Foundation. The developers have done a great job with the back-end and front-end. The best part was the modularity and the design. My project in the beginning was to use external citation-managers and design a citation-manager for Sakai3.The project changed a lot since the beginning [1]. I found my project intimidating in the beginning because I didnt know what to do.I did a lot of research and came up with the design spec [1] with the help of my mentor (Amyas Phillips who has been a great mentor). GSoC has been the single greatest experience in my life so far and the most productive summer so far, the interaction with the community(thanks very much for all the guys who helped me ) was the best part.I learned many things. The real world experience I gained was very valuable. I feel sad that the program is coming to an end. I am planning to continue with my project after GSoC I am also planning to join the sakai community.<br />
<br />
My specification and implementation details are at [1] Code is at [2] and[3]<br />
<br />
[1] <a href="http://confluence.sakaiproject.org/display/3AK/Citation+Manager+widget+specification+proposal">http://confluence.sakaiproject.org/display/3AK/Citation+Manager+widget+specification+proposal</a><br />
[2] <a href="http://github.com/zerocool1989/citation-manager-widget">http://github.com/zerocool1989/citation-manager-widget</a><br />
[3] <a href="http://github.com/zerocool1989/exportRIS">http://github.com/zerocool1989/exportRIS</a><br />
<br />
<b>Maria Teresa Gimenez Fayos</b> has developed an <b>Android app</b> for interacting with Sakai 2.x instances, working with mentor <b>David Roldan Martinez</b> at the Polytechnic University of Valencia, summarises her GSoC experience thus:<br />
<br />
I have archived the main framework of the application, I am still working in a lot of things, I hope some things would be working at the end of this week. There is a lot of work that should be done, because I really thought that the project would be easier, and it is not. <br />
<br />
Of course I am planning to continue working on it! In fact this is going to be my final career project. I am going to use all what I learned about android and sakai in this project. So even I could not finish all what I was planning I am not worry because I am going to finish everything, I spend a lot of time of my gsoc learning about the technology and I am going to take advantage of all this knwoledge to put it in the project. At this point I would like to thank David, for all his patience. <br />
<br />
I am related with the open source since my second year at the university when I joined to an open source association called Aditel, and there is where I know GSOC when some fellow participated and they were so happy with the experience that I want to try it too. I knew about Sakai when I began my business practices with Samoo two years ago. Then I have being doing practices in my university (Valencia Polytechnic University) with David Roldán who is being my mentor this last year. I proposed my project, an Android Application, and it came to me from my needs as student.<br />
<br />
The community could find all the code is here: <a href="http://bitbucket.org/mrs.hopper/nellodee">http://bitbucket.org/mrs.hopper/nellodee</a><br />
And I write a blog (in spanish sorry) about sakai, android, technology and so on in <a href="http://www.colorines.org/">http://www.colorines.org/</a><br />
<br />
<b>Ashish Mittal</b> has been developing an '<b>event explorer tool</b>' for helpdesk users with mentor <b>Ian Boston</b> at Cambridge. Ashish writes:<br />
<br />
It has been a great experience to work under Sakai for GSOC 2010. It is mainly because of the opportunity of working with great experienced people, having a great mentor, working with the most cutting edge technologies for the project and developing a great and successful project at the end. I am very happy I got selected under Sakai Foundation for GSOC and will cherish this period of my introduction to Sakai Community, People at Sakai are great and very helpful and been available through IRC or mailing list whenever any help was needed. This has been the greatest event for me till now and I thank Sakai community for this.<br />
<br />
A large part of the project has been accomplished and all the main and essential modules were completed well in time. There might be scope for more work to be done and I think it would be beneficial to the project to add some more features (ex. analysis) as decided earlier to give it an elegant touch.<br />
<br />
I do plan to keep adding some features as and when it is possible. I will be consulting my mentor and will ask his opinion what can be worked out.<br />
<br />
All the code I have developed is present under my github repo at [1]. The Sakai version of the code has already been included by my mentor in the sandbox area under the name eventexplorer.<br />
<br />
[1] <a href="http://github.com/ashishmittal/eventexplorer">http://github.com/ashishmittal/eventexplorer</a>aewp2http://www.blogger.com/profile/05865087342440641011noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-85333951614783713632010-08-02T08:41:00.000-07:002010-08-02T09:02:54.994-07:00Tenth week of Event Explorer (Ashish)The past week I worked on various resourceType for the filters that I need in the UI. Mr. Ian created a page at the KernDoc with those resourceTypes for maintaining a documentation and I have been adding more as I find them. Once I get enough information about all resourceTypes, I will be able to implement the filters.<br />This week I will continue with this and discuss with my mentor about what is to be done now.ASHISHhttp://www.blogger.com/profile/13896999599375396578noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-38351329603729830182010-07-29T14:18:00.000-07:002010-07-29T14:24:38.426-07:00After Midterm EvaluationsIts been a long time since i posted on this blog. Based on the feedback from my mentor and from the community I redesigned most of the UI and the backend code which can be found at<br /><a href="http://github.com/zerocool1989/citation-manager-widget">http://github.com/zerocool1989/citation-manager-widget </a><br /><br />The past few weeks I have implemented features like delete citations ,add comments,fetch from some other user etc ., I have also designed the UI for Export and Import .<br /><br />This week I will finish the Export and Import part and also the search part .rockhttp://www.blogger.com/profile/11492364259157470027noreply@blogger.com0tag:blogger.com,1999:blog-8444203985992240880.post-14935447312898316712010-07-27T08:09:00.000-07:002010-07-27T08:18:55.108-07:00Ninth week of Event Explorer (Ashish)The last week I worked on filtering on basis on user events and faced some difficulties in getting the local AMQ integrated with new Sakai build. I overcame that and am working on the Sling resourceTypes of various user events.<br />This week i will be continuing with filtering.ASHISHhttp://www.blogger.com/profile/13896999599375396578noreply@blogger.com0