<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kmmehta</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kmmehta"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Kmmehta"/>
	<updated>2026-08-11T23:23:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90985</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90985"/>
		<updated>2014-10-29T23:39:33Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Questionnaire Controller: questionnaire_controller.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''E1456 Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
[https://docs.google.com/document/d/1FZCL9KWSdVNsX9BowuZ3gxbCOJoiWX-GVLctSZei3No/edit# Problem_Statement] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit# Global Rules]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&amp;lt;bR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;B&amp;gt;&amp;lt;U&amp;gt;Why is Refactoring Required&amp;lt;/u&amp;gt;&amp;lt;/B&amp;gt;&lt;br /&gt;
*It helps in making the code more understandable&lt;br /&gt;
*It makes the code more maintainable&lt;br /&gt;
*To remove repetition of code&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
The scope of the project is to refactor Questionnaire Controller which is very huge, in order to follow the standard principle of Fat Models and slim controllers.&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire Controller: questionnaire_controller.rb =&lt;br /&gt;
&lt;br /&gt;
Several methods in Questionnaire Controller class required refactoring to ensure that the change is reflected in the entire project. The names were changed to follow method naming conventions in Ruby. Deprecated code was removed and re-coded to ensure that the code worked in future version of Rails as well. Duplicate codes were commented out. Methods that are more general in the sub classes were moved to the parent class. Some methods that calculate that were colliding with other files were moved to a helper method questionnaire_helper.rb .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:5%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|''''' 1 '''''&lt;br /&gt;
|delete&lt;br /&gt;
|redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display' to redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
|Refactoring using Global rules&lt;br /&gt;
|-&lt;br /&gt;
|''''' 2 '''''&lt;br /&gt;
|edit&lt;br /&gt;
|Three functions changed in this method&lt;br /&gt;
|Refactoring using Global rules&lt;br /&gt;
|-&lt;br /&gt;
|''''' 3 '''''&lt;br /&gt;
|create_questionnaire&lt;br /&gt;
|Removal of redundant If statement&lt;br /&gt;
|Removal of unnecessary statements&lt;br /&gt;
|-&lt;br /&gt;
|''''' 4 '''''&lt;br /&gt;
|create_questionnaire &lt;br /&gt;
|Commenting out unnecessary print statements&lt;br /&gt;
|Refactoring of the function&lt;br /&gt;
|-&lt;br /&gt;
|''''' 5 '''''&lt;br /&gt;
|create&lt;br /&gt;
|statement change from redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list' to redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
|Refactoring using Global rules&lt;br /&gt;
|-&lt;br /&gt;
|''''' 6 '''''&lt;br /&gt;
|update&lt;br /&gt;
|change from redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list' to redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
|Refactoring using Global rules &lt;br /&gt;
|-&lt;br /&gt;
|''''' 7 '''''&lt;br /&gt;
|toggle_access&lt;br /&gt;
|change from redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list' to redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
|Refactoring using Global rules&lt;br /&gt;
|-&lt;br /&gt;
|''''' 8 '''''&lt;br /&gt;
|save&lt;br /&gt;
|change from QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id) to QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
|Refactoring using Global rules&lt;br /&gt;
|-&lt;br /&gt;
|''''' 9 '''''&lt;br /&gt;
|save_new_questions(questionnaire_id)&lt;br /&gt;
|change from a = QuestionAdvice.new(:score =&amp;gt; i, :advice =&amp;gt; nil) to a = QuestionAdvice.new(score: i, advice: nil)&lt;br /&gt;
|Refactoring using Global rules&lt;br /&gt;
|-&lt;br /&gt;
|''''' 10 '''''&lt;br /&gt;
|save_questions(questionnaire_id)&lt;br /&gt;
|Deletion of an extra If statement and deletion of an unnecessary print statement&lt;br /&gt;
|Refactoring was required for this function&lt;br /&gt;
|-&lt;br /&gt;
|''''' 11 '''''&lt;br /&gt;
|save_choices(questionnaire_id)&lt;br /&gt;
|Removal of unnecessary print statements and refactoring of the function&lt;br /&gt;
|Refactoring done following Global rules and use of DRY principle&lt;br /&gt;
|-&lt;br /&gt;
|''''' 12 '''''&lt;br /&gt;
|export&lt;br /&gt;
|Refactoring done for 2 statements&lt;br /&gt;
|Refactoring done using Global rules&lt;br /&gt;
|-&lt;br /&gt;
|''''' 13 '''''&lt;br /&gt;
|clone_questionnaire_details(questions)&lt;br /&gt;
|Refactoring of 4 statements done in this function&lt;br /&gt;
|Refactoring was required for this function&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
1. The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
2. Non Restful method names changed accordingly to make them Restful. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
[[File:after_refactoring_function_name_change.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
3. edit_advice method is evidently not used, and removed. This edit function is already implemented in advice_controller.rb. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. save_advice has been moved to the advice_controller. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Global rule changes for using Hash - value key pair implemented [Use key: ‘value’, not :key =&amp;gt; ‘value’] accordingly.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'submitted_content', :action =&amp;gt; 'edit', :id =&amp;gt; participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'submitted_content', action: 'edit', id: participant_id&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save_new_questions(questionnaire_id)&lt;br /&gt;
.........&lt;br /&gt;
a = QuestionAdvice.new(:score =&amp;gt; i, :advice =&amp;gt; nil)&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save_new_questions(questionnaire_id)&lt;br /&gt;
........&lt;br /&gt;
a = QuestionAdvice.new(score: i, advice: nil)&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Extra print statement and deletion of an extra statement:-&lt;br /&gt;
def save_questions(questionnaire_id)&lt;br /&gt;
...........&lt;br /&gt;
print question_key&lt;br /&gt;
..........&lt;br /&gt;
if (@questionnaire.type == &amp;quot;QuizQuestionnaire&amp;quot;)&lt;br /&gt;
              Question.update(question_key,:weight =&amp;gt; 1, :txt =&amp;gt; params[:question][question_key][:txt] )&lt;br /&gt;
            else&lt;br /&gt;
              Question.update(question_key, params[:question][question_key])&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Extra print statement and deletion of an extra statement:-&lt;br /&gt;
def save_questions(questionnaire_id)&lt;br /&gt;
...........&lt;br /&gt;
# print question_key&lt;br /&gt;
..........&lt;br /&gt;
if (@questionnaire.type == &amp;quot;QuizQuestionnaire&amp;quot;)&lt;br /&gt;
              Question.update(question_key, weight: 1, txt: params[:question][question_key][:txt] )&lt;br /&gt;
            end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def export&lt;br /&gt;
.........&lt;br /&gt;
:type =&amp;gt; 'text/csv; charset=iso-8859-1; header=present',&lt;br /&gt;
 :disposition =&amp;gt; &amp;quot;attachment; filename=questionnaires.csv&amp;quot;&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def export&lt;br /&gt;
.........&lt;br /&gt;
type: 'text/csv; charset=iso-8859-1; header=present',&lt;br /&gt;
disposition: &amp;quot;attachment; filename=questionnaires.csv&amp;quot;&lt;br /&gt;
........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules + Function name change + statement deletion :-&lt;br /&gt;
def clone_questionnaire_details(questions)&lt;br /&gt;
.........&lt;br /&gt;
@questionnaire.name = 'Copy of '+orig_questionnaire.name&lt;br /&gt;
.........&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'questionnaire', :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire.id&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules + Function name change + statement deletion :-&lt;br /&gt;
def clone_questionnaire(questions)&lt;br /&gt;
.........&lt;br /&gt;
#Statement deleted&lt;br /&gt;
.........&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
..........&lt;br /&gt;
redirect_to controller: 'questionnaire', action: 'view', id: @questionnaire.id&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
..........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. &amp;quot;.eql? nil&amp;quot; used instead of &amp;quot; == nil&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
.........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire == nil&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire&lt;br /&gt;
..........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'advice', :action =&amp;gt; 'edit_advice', :id =&amp;gt; params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
..........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire.eql? nil&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'view', id: @questionnaire&lt;br /&gt;
...........&lt;br /&gt;
redirect_to controller: 'advice',  action: 'edit_advice',  id: params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. Removed duplicate and redundant code making the code DRY.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
          if team = Team.find(t.team_id, @assignment.id)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
        #Removed unneeded If statement  &lt;br /&gt;
         team = Team.find(t.team_id, @assignment.id) &lt;br /&gt;
          break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Removed unnecessary debug prints present in the code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.....&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
# print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.......&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      # print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. Used `&amp;amp;&amp;amp;` and `||` rather than `and` and `or` to keep boolean precedence as per global rules.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil &amp;amp;&amp;amp; @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. More global rule changes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global Rules :-&lt;br /&gt;
def save_choices(questionnaire_id)&lt;br /&gt;
..........&lt;br /&gt;
if params[:new_question] and params[:new_choices]&lt;br /&gt;
...........&lt;br /&gt;
print &amp;quot;=====choice_key=&amp;quot;+choice_key+&amp;quot;=======&amp;quot;&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect =&amp;gt; &amp;quot;true&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect =&amp;gt; &amp;quot;false&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; &amp;quot;True&amp;quot;, :iscorrect =&amp;gt; &amp;quot;true&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; &amp;quot;False&amp;quot;, :iscorrect =&amp;gt; &amp;quot;false&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect =&amp;gt; &amp;quot;true&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect =&amp;gt; &amp;quot;false&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global Rules :-&lt;br /&gt;
def save_choices(questionnaire_id)&lt;br /&gt;
..........&lt;br /&gt;
if params[:new_question] &amp;amp;&amp;amp; params[:new_choices]&lt;br /&gt;
..........&lt;br /&gt;
# print &amp;quot;=====choice_key=&amp;quot;+choice_key+&amp;quot;=======&amp;quot;&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], iscorrect: &amp;quot;true&amp;quot;, question_id: question.id)&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], iscorrect: &amp;quot;false&amp;quot;, question_id: question.id)&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: &amp;quot;True&amp;quot;, iscorrect: &amp;quot;true&amp;quot;, question_id: question.id)&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: &amp;quot;False&amp;quot;, iscorrect: &amp;quot;false&amp;quot;, question_id: question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], iscorrect: &amp;quot;true&amp;quot;, question_id: question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], iscorrect: &amp;quot;false&amp;quot;, question_id: question.id)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Object Oriented Design Principles Followed=&lt;br /&gt;
&lt;br /&gt;
The following object oriented design principles were followed during refactoring: &amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Single Responsibility Principle&amp;lt;/b&amp;gt;: The single responsibility principle states that every context (class, function, variable, etc.) should have a single responsibility. It was maintained that each method should be involved with a single responsibility and the code that was not related to that particular functionality was moved to other method. This was also taken care of in terms of classes.&lt;br /&gt;
*&amp;lt;b&amp;gt;DRY Principle&amp;lt;/b&amp;gt;: Don't Repeat Yourself! The repetitive and redundant code was removed from the associated classes and methods.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Code_refactoring Code Refactoring Wiki]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit Global Rules for Refactoring]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.agiledeveloper.com/presentations/how_to_approach_refactoring_2up.pdf Why Refactor]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Single_responsibility_principle Single Responsibility Principle]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90960</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90960"/>
		<updated>2014-10-29T23:15:14Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Questionnaire Controller: questionnaire_controller.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Why is Refactoring Required=&lt;br /&gt;
&lt;br /&gt;
*It helps in making the code more understandable&lt;br /&gt;
*It makes the code more maintainable&lt;br /&gt;
*To remove repetition of code&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire Controller: questionnaire_controller.rb =&lt;br /&gt;
&lt;br /&gt;
Several methods in Questionnaire Controller class required refactoring to ensure that the change is reflected in the entire project. The names were changed to follow method naming conventions in Ruby. Deprecated code was removed and re-coded to ensure that the code worked in future version of Rails as well. Duplicate codes were commented out. Methods that are more general in the sub classes were moved to the parent class. Some methods that calculate that were colliding with other files were moved to a helper method questionnaire_helper.rb .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:5%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|''''' 1 '''''&lt;br /&gt;
|delete&lt;br /&gt;
|redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display' to redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
|Refactoring using Global rules&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
1. The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
2. Non Restful method names changed accordingly to make them Restful. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
[[File:after_refactoring_function_name_change.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
3. edit_advice method is evidently not used, and removed. This edit function is already implemented in advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
4. save_advice has been moved to the advice_controller.&lt;br /&gt;
&lt;br /&gt;
5. Global rule changes for using Hash - value key pair&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
.........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire == nil&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire&lt;br /&gt;
..........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'advice', :action =&amp;gt; 'edit_advice', :id =&amp;gt; params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
..........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire.eql? nil&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'view', id: @questionnaire&lt;br /&gt;
...........&lt;br /&gt;
redirect_to controller: 'advice',  action: 'edit_advice',  id: params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
          if team = Team.find(t.team_id, @assignment.id)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
        #Removed unneeded If statement  &lt;br /&gt;
         team = Team.find(t.team_id, @assignment.id) &lt;br /&gt;
          break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.....&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
# print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.......&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      # print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'submitted_content', :action =&amp;gt; 'edit', :id =&amp;gt; participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'submitted_content', action: 'edit', id: participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil &amp;amp;&amp;amp; @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save_new_questions(questionnaire_id)&lt;br /&gt;
.........&lt;br /&gt;
a = QuestionAdvice.new(:score =&amp;gt; i, :advice =&amp;gt; nil)&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save_new_questions(questionnaire_id)&lt;br /&gt;
........&lt;br /&gt;
a = QuestionAdvice.new(score: i, advice: nil)&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Extra print statement and deletion of an extra statement:-&lt;br /&gt;
def save_questions(questionnaire_id)&lt;br /&gt;
...........&lt;br /&gt;
print question_key&lt;br /&gt;
..........&lt;br /&gt;
if (@questionnaire.type == &amp;quot;QuizQuestionnaire&amp;quot;)&lt;br /&gt;
              Question.update(question_key,:weight =&amp;gt; 1, :txt =&amp;gt; params[:question][question_key][:txt] )&lt;br /&gt;
            else&lt;br /&gt;
              Question.update(question_key, params[:question][question_key])&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Extra print statement and deletion of an extra statement:-&lt;br /&gt;
def save_questions(questionnaire_id)&lt;br /&gt;
...........&lt;br /&gt;
# print question_key&lt;br /&gt;
..........&lt;br /&gt;
if (@questionnaire.type == &amp;quot;QuizQuestionnaire&amp;quot;)&lt;br /&gt;
              Question.update(question_key, weight: 1, txt: params[:question][question_key][:txt] )&lt;br /&gt;
            end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global Rules :-&lt;br /&gt;
def save_choices(questionnaire_id)&lt;br /&gt;
..........&lt;br /&gt;
if params[:new_question] and params[:new_choices]&lt;br /&gt;
...........&lt;br /&gt;
print &amp;quot;=====choice_key=&amp;quot;+choice_key+&amp;quot;=======&amp;quot;&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect =&amp;gt; &amp;quot;true&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect =&amp;gt; &amp;quot;false&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; &amp;quot;True&amp;quot;, :iscorrect =&amp;gt; &amp;quot;true&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; &amp;quot;False&amp;quot;, :iscorrect =&amp;gt; &amp;quot;false&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect =&amp;gt; &amp;quot;true&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(:txt =&amp;gt; params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect =&amp;gt; &amp;quot;false&amp;quot;,:question_id =&amp;gt; question.id)&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global Rules :-&lt;br /&gt;
def save_choices(questionnaire_id)&lt;br /&gt;
..........&lt;br /&gt;
if params[:new_question] &amp;amp;&amp;amp; params[:new_choices]&lt;br /&gt;
..........&lt;br /&gt;
# print &amp;quot;=====choice_key=&amp;quot;+choice_key+&amp;quot;=======&amp;quot;&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], iscorrect: &amp;quot;true&amp;quot;, question_id: question.id)&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], iscorrect: &amp;quot;false&amp;quot;, question_id: question.id)&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: &amp;quot;True&amp;quot;, iscorrect: &amp;quot;true&amp;quot;, question_id: question.id)&lt;br /&gt;
..........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: &amp;quot;False&amp;quot;, iscorrect: &amp;quot;false&amp;quot;, question_id: question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], iscorrect: &amp;quot;true&amp;quot;, question_id: question.id)&lt;br /&gt;
.........&lt;br /&gt;
q = QuizQuestionChoice.new(txt: params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], iscorrect: &amp;quot;false&amp;quot;, question_id: question.id)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def export&lt;br /&gt;
.........&lt;br /&gt;
:type =&amp;gt; 'text/csv; charset=iso-8859-1; header=present',&lt;br /&gt;
 :disposition =&amp;gt; &amp;quot;attachment; filename=questionnaires.csv&amp;quot;&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def export&lt;br /&gt;
.........&lt;br /&gt;
type: 'text/csv; charset=iso-8859-1; header=present',&lt;br /&gt;
disposition: &amp;quot;attachment; filename=questionnaires.csv&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules + Function name change + statement deletion :-&lt;br /&gt;
def clone_questionnaire_details(questions)&lt;br /&gt;
.........&lt;br /&gt;
@questionnaire.name = 'Copy of '+orig_questionnaire.name&lt;br /&gt;
.........&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'questionnaire', :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire.id&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules + Function name change + statement deletion :-&lt;br /&gt;
def clone_questionnaire(questions)&lt;br /&gt;
.........&lt;br /&gt;
#Statement deleted&lt;br /&gt;
.........&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
..........&lt;br /&gt;
redirect_to controller: 'questionnaire', action: 'view', id: @questionnaire.id&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Code_refactoring Code Refactoring Wiki]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit Global Rules for Refactoring]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.agiledeveloper.com/presentations/how_to_approach_refactoring_2up.pdf Why Refactor]&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90955</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90955"/>
		<updated>2014-10-29T23:09:38Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Questionnaire Controller: questionnaire_controller.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Why is Refactoring Required=&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire Controller: questionnaire_controller.rb =&lt;br /&gt;
&lt;br /&gt;
Several methods in Questionnaire Controller class required refactoring to ensure that the change is reflected in the entire project. The names were changed to follow method naming conventions in Ruby. Deprecated code was removed and re-coded to ensure that the code worked in future version of Rails as well. Duplicate codes were commented out. Methods that are more general in the sub classes were moved to the parent class. Some methods that calculate that were colliding with other files were moved to a helper method questionnaire_helper.rb .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:5%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|''''' 1 '''''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
1. The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
2. Non Restful method names changed accordingly to make them Restful. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
[[File:after_refactoring_function_name_change.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
3. Global rule changes for using Hash - value key pair&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
.........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire == nil&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire&lt;br /&gt;
..........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'advice', :action =&amp;gt; 'edit_advice', :id =&amp;gt; params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
..........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire.eql? nil&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'view', id: @questionnaire&lt;br /&gt;
...........&lt;br /&gt;
redirect_to controller: 'advice',  action: 'edit_advice',  id: params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
          if team = Team.find(t.team_id, @assignment.id)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
        #Removed unneeded If statement  &lt;br /&gt;
         team = Team.find(t.team_id, @assignment.id) &lt;br /&gt;
          break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.....&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
# print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.......&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      # print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'submitted_content', :action =&amp;gt; 'edit', :id =&amp;gt; participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'submitted_content', action: 'edit', id: participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil &amp;amp;&amp;amp; @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Code_refactoring Code Refactoring Wiki]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit Global Rules for Refactoring]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.agiledeveloper.com/presentations/how_to_approach_refactoring_2up.pdf Why Refactor]&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90954</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90954"/>
		<updated>2014-10-29T23:08:15Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Questionnaire Controller: questionnaire_controller.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Why is Refactoring Required=&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire Controller: questionnaire_controller.rb =&lt;br /&gt;
&lt;br /&gt;
Several methods in Questionnaire Controller class required refactoring to ensure that the change is reflected in the entire project. The names were changed to follow method naming conventions in Ruby. Deprecated code was removed and re-coded to ensure that the code worked in future version of Rails as well. Duplicate codes were commented out. Methods that are more general in the sub classes were moved to the parent class. Some methods that calculate that were colliding with other files were moved to a helper method questionnaire_helper.rb .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:5%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
1. The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
2. Non Restful method names changed accordingly to make them Restful. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
[[File:after_refactoring_function_name_change.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
3. Global rule changes for using Hash - value key pair&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
.........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire == nil&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire&lt;br /&gt;
..........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'advice', :action =&amp;gt; 'edit_advice', :id =&amp;gt; params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
..........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire.eql? nil&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'view', id: @questionnaire&lt;br /&gt;
...........&lt;br /&gt;
redirect_to controller: 'advice',  action: 'edit_advice',  id: params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
          if team = Team.find(t.team_id, @assignment.id)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
        #Removed unneeded If statement  &lt;br /&gt;
         team = Team.find(t.team_id, @assignment.id) &lt;br /&gt;
          break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.....&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
# print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.......&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      # print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'submitted_content', :action =&amp;gt; 'edit', :id =&amp;gt; participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'submitted_content', action: 'edit', id: participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil &amp;amp;&amp;amp; @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Code_refactoring Code Refactoring Wiki]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit Global Rules for Refactoring]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.agiledeveloper.com/presentations/how_to_approach_refactoring_2up.pdf Why Refactor]&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90953</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90953"/>
		<updated>2014-10-29T23:07:56Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* UML CLass Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Why is Refactoring Required=&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire Controller: questionnaire_controller.rb =&lt;br /&gt;
&lt;br /&gt;
Several methods in Questionnaire Controller class required refactoring to ensure that the change is reflected in the entire project. The names were changed to follow method naming conventions in Ruby. Deprecated code was removed and re-coded to ensure that the code worked in future version of Rails as well. Duplicate codes were commented out. Methods that are more general in the sub classes were moved to the parent class. Some methods that calculate that were colliding with other files were moved to a helper method questionnaire_helper.rb .&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
1. The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
2. Non Restful method names changed accordingly to make them Restful. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
[[File:after_refactoring_function_name_change.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
3. Global rule changes for using Hash - value key pair&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
.........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire == nil&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire&lt;br /&gt;
..........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'advice', :action =&amp;gt; 'edit_advice', :id =&amp;gt; params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
..........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire.eql? nil&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'view', id: @questionnaire&lt;br /&gt;
...........&lt;br /&gt;
redirect_to controller: 'advice',  action: 'edit_advice',  id: params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
          if team = Team.find(t.team_id, @assignment.id)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
        #Removed unneeded If statement  &lt;br /&gt;
         team = Team.find(t.team_id, @assignment.id) &lt;br /&gt;
          break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.....&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
# print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.......&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      # print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'submitted_content', :action =&amp;gt; 'edit', :id =&amp;gt; participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'submitted_content', action: 'edit', id: participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil &amp;amp;&amp;amp; @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Code_refactoring Code Refactoring Wiki]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit Global Rules for Refactoring]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.agiledeveloper.com/presentations/how_to_approach_refactoring_2up.pdf Why Refactor]&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90952</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90952"/>
		<updated>2014-10-29T23:07:24Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* UML CLass Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Why is Refactoring Required=&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:5%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Questionnaire Controller: questionnaire_controller.rb =&lt;br /&gt;
&lt;br /&gt;
Several methods in Questionnaire Controller class required refactoring to ensure that the change is reflected in the entire project. The names were changed to follow method naming conventions in Ruby. Deprecated code was removed and re-coded to ensure that the code worked in future version of Rails as well. Duplicate codes were commented out. Methods that are more general in the sub classes were moved to the parent class. Some methods that calculate that were colliding with other files were moved to a helper method questionnaire_helper.rb .&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
1. The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
2. Non Restful method names changed accordingly to make them Restful. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
[[File:after_refactoring_function_name_change.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
3. Global rule changes for using Hash - value key pair&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
.........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire == nil&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire&lt;br /&gt;
..........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'advice', :action =&amp;gt; 'edit_advice', :id =&amp;gt; params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
..........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire.eql? nil&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'view', id: @questionnaire&lt;br /&gt;
...........&lt;br /&gt;
redirect_to controller: 'advice',  action: 'edit_advice',  id: params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
          if team = Team.find(t.team_id, @assignment.id)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
        #Removed unneeded If statement  &lt;br /&gt;
         team = Team.find(t.team_id, @assignment.id) &lt;br /&gt;
          break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.....&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
# print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.......&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      # print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'submitted_content', :action =&amp;gt; 'edit', :id =&amp;gt; participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'submitted_content', action: 'edit', id: participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil &amp;amp;&amp;amp; @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Code_refactoring Code Refactoring Wiki]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit Global Rules for Refactoring]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.agiledeveloper.com/presentations/how_to_approach_refactoring_2up.pdf Why Refactor]&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90946</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90946"/>
		<updated>2014-10-29T23:02:38Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* UML CLass Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire Controller: questionnaire_controller.rb =&lt;br /&gt;
&lt;br /&gt;
Several methods in Questionnaire Controller class required refactoring to ensure that the change is reflected in the entire project. The names were changed to follow method naming conventions in Ruby. Deprecated code was removed and re-coded to ensure that the code worked in future version of Rails as well. Duplicate codes were commented out. Methods that are more general in the sub classes were moved to the parent class. Some methods that calculate that were colliding with other files were moved to a helper method questionnaire_helper.rb .&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
1. The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
2. Non Restful method names changed accordingly to make them Restful. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
[[File:after_refactoring_function_name_change.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
3. Global rule changes for using Hash - value key pair&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
.........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire == nil&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire&lt;br /&gt;
..........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'advice', :action =&amp;gt; 'edit_advice', :id =&amp;gt; params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
..........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire.eql? nil&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'view', id: @questionnaire&lt;br /&gt;
...........&lt;br /&gt;
redirect_to controller: 'advice',  action: 'edit_advice',  id: params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
          if team = Team.find(t.team_id, @assignment.id)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
        #Removed unneeded If statement  &lt;br /&gt;
         team = Team.find(t.team_id, @assignment.id) &lt;br /&gt;
          break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.....&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
# print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.......&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      # print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'submitted_content', :action =&amp;gt; 'edit', :id =&amp;gt; participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'submitted_content', action: 'edit', id: participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil &amp;amp;&amp;amp; @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Code_refactoring Code Refactoring Wiki]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit Global Rules for Refactoring]&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90944</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90944"/>
		<updated>2014-10-29T23:01:56Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Participant Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related Model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire Controller: questionnaire_controller.rb =&lt;br /&gt;
&lt;br /&gt;
Several methods in Questionnaire Controller class required refactoring to ensure that the change is reflected in the entire project. The names were changed to follow method naming conventions in Ruby. Deprecated code was removed and re-coded to ensure that the code worked in future version of Rails as well. Duplicate codes were commented out. Methods that are more general in the sub classes were moved to the parent class. Some methods that calculate that were colliding with other files were moved to a helper method questionnaire_helper.rb .&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
1. The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
2. Non Restful method names changed accordingly to make them Restful. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
[[File:after_refactoring_function_name_change.PNG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
3. Global rule changes for using Hash - value key pair&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'list', :controller =&amp;gt; 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def delete&lt;br /&gt;
.........&lt;br /&gt;
redirect_to action: 'list', controller: 'tree_display'&lt;br /&gt;
.........&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
.........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire == nil&lt;br /&gt;
.........&lt;br /&gt;
redirect_to :action =&amp;gt; 'view', :id =&amp;gt; @questionnaire&lt;br /&gt;
..........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'advice', :action =&amp;gt; 'edit_advice', :id =&amp;gt; params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
After Refactoring :-&lt;br /&gt;
def edit&lt;br /&gt;
..........&lt;br /&gt;
redirect_to Questionnaire if @questionnaire.eql? nil&lt;br /&gt;
..........&lt;br /&gt;
redirect_to action: 'view', id: @questionnaire&lt;br /&gt;
...........&lt;br /&gt;
redirect_to controller: 'advice',  action: 'edit_advice',  id: params[:questionnaire][:id]&lt;br /&gt;
..........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring  Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
          if team = Team.find(t.team_id, @assignment.id)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring Redundant If in def create_questionnaire :-&lt;br /&gt;
def create_questionnaire&lt;br /&gt;
........&lt;br /&gt;
if Team.find(t.team_id, @assignment.id)&lt;br /&gt;
        #Removed unneeded If statement  &lt;br /&gt;
         team = Team.find(t.team_id, @assignment.id) &lt;br /&gt;
          break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.....&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
After Refactoring  Un-necessary Print statements in def create_questionnaire :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
# print &amp;quot;=====create_questionnaire=========&amp;quot;&lt;br /&gt;
.......&lt;br /&gt;
@successful_create = true&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire begin=========&amp;quot;&lt;br /&gt;
      save&lt;br /&gt;
      # print &amp;quot;=====save in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      save_choices @questionnaire.id&lt;br /&gt;
      # print &amp;quot;=====save_choice in create_questionnaire over=========&amp;quot;&lt;br /&gt;
      if @successful_create == true&lt;br /&gt;
        flash[:note] = &amp;quot;Quiz was successfully created&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'submitted_content', :action =&amp;gt; 'edit', :id =&amp;gt; participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'submitted_content', action: 'edit', id: participant_id&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create_questionnaire &lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def create&lt;br /&gt;
.......&lt;br /&gt;
redirect_to controller: 'tree_display',  action: 'list'&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
After Refactoring Global rules :-&lt;br /&gt;
&lt;br /&gt;
def update&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
.........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to :controller =&amp;gt; 'tree_display', :action =&amp;gt; 'list'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
After Refactoring global rules :-&lt;br /&gt;
def toggle_access&lt;br /&gt;
........&lt;br /&gt;
redirect_to controller: 'tree_display', action: 'list'&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Before Refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(:parent_id =&amp;gt; parent.id, :node_object_id =&amp;gt; @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&lt;br /&gt;
After refactoring Global rules :-&lt;br /&gt;
def save&lt;br /&gt;
.......&lt;br /&gt;
save_questions @questionnaire.id if @questionnaire.id != nil &amp;amp;&amp;amp; @questionnaire.id &amp;gt; 0&lt;br /&gt;
.......&lt;br /&gt;
QuestionnaireNode.create(parent_id: parent.id, node_object_id: @questionnaire.id)&lt;br /&gt;
.......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Code_refactoring Code Refactoring Wiki]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qQD7fcypFk77nq7Jx7ZNyCNpLyt1oXKaq5G-W7zkV3k/edit Global Rules for Refactoring]&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90918</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90918"/>
		<updated>2014-10-29T22:36:38Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* UML CLass Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
A Subset of the UML class diagram including only the related classes for this project can be drawn as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:UMLDiagram.JPG|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Questionnaire Controller is the superclass of QuizQuestionnaire and all the other classes - User class, Advice class and Questionnaire classes are related Model Classes to the controllers that we have modified.&lt;br /&gt;
&lt;br /&gt;
=Participant Model=&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
The quiz questionnaire related methods such as view_quiz, update_quiz, new_quiz and validate_quiz are moved to questionnaire_helper.rb to make the questionnaires_controller thin and follow global rule of thin controllers and fat models.&lt;br /&gt;
[[File:add_include_line.PNG|frame|center]]&lt;br /&gt;
=Conclusion=&lt;br /&gt;
*Refactoring was performed as per requirements in the files questionnaire_controller.rb, and advice_controller.rb.&lt;br /&gt;
*The code from models cannot be moved directly to controllers, so the code was moved to the helper class questionnaire_helper.rb.&lt;br /&gt;
*Some methods with confusing method names have also been renamed.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90869</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90869"/>
		<updated>2014-10-29T21:52:52Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* UML CLass Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
&lt;br /&gt;
[[File:UML_diag.png]]&lt;br /&gt;
&lt;br /&gt;
=Participant Model=&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90868</id>
		<title>CSC/ECE 517 Fall 2014/oss E1456 akk</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1456_akk&amp;diff=90868"/>
		<updated>2014-10-29T21:52:06Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* UML CLass Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Refactoring Questionnaire Controller''' ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Questionnaire Controller interacts with the user to create and edit questionnaires such as review rubrics, teammate-feedback rubrics, quizzes, and surveys. This page provides a detailed description of Open Source Project on Expertiza for refactoring the questionnaire controller.&lt;br /&gt;
&lt;br /&gt;
=Project Overview=&lt;br /&gt;
&lt;br /&gt;
==Classes involved==&lt;br /&gt;
*questionnaire_controller.rb&lt;br /&gt;
*questionnaire_helper.rb&lt;br /&gt;
*advice_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*Functionality moved to quiz_questionnaire.rb.&lt;br /&gt;
*edit_advice method was not being used, so it was removed.&lt;br /&gt;
*save_advice moved to the advice_controller.&lt;br /&gt;
*copy, update_quiz, valid_quiz methods were long and have been broken up.  clone_questionnaire_details was also broken up and renamed.&lt;br /&gt;
*Added comments to select_questionnaire_type&lt;br /&gt;
*Debug output (print statements) have been removed.&lt;br /&gt;
*Changed code to follow the global rules.&lt;br /&gt;
*save_new_questions, delete_questions, save_questions have been moved to a separate class.&lt;br /&gt;
&lt;br /&gt;
==Project Resources==&lt;br /&gt;
[https://github.com/kbhupal/expertiza GitHub Project Repository]&lt;br /&gt;
&lt;br /&gt;
[http://152.1.13.221:2555/ VCL IP Address]&lt;br /&gt;
&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki]&lt;br /&gt;
&lt;br /&gt;
=UML CLass Diagram=&lt;br /&gt;
&lt;br /&gt;
[[File:UML_dia.png]]&lt;br /&gt;
&lt;br /&gt;
=Participant Model=&lt;br /&gt;
&lt;br /&gt;
=Code Snippets=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UML_dia.PNG&amp;diff=90865</id>
		<title>File:UML dia.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UML_dia.PNG&amp;diff=90865"/>
		<updated>2014-10-29T21:43:33Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=87418</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=87418"/>
		<updated>2014-09-20T00:57:13Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&amp;lt;ref name=&amp;quot;Link1&amp;quot;&amp;gt;http://simply.liftweb.net/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&amp;lt;ref name=&amp;quot;Book1&amp;quot;&amp;gt;[Lift in action]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:View_Lift.jpg]]&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=87414</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=87414"/>
		<updated>2014-09-20T00:56:01Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&amp;lt;ref name=&amp;quot;Book1&amp;quot;&amp;gt;[Lift in action]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:View_Lift.jpg]]&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=87412</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=87412"/>
		<updated>2014-09-20T00:55:47Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&amp;lt;ref name=&amp;quot;Book&amp;quot;&amp;gt;[Lift in action]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:View_Lift.jpg]]&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=87407</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=87407"/>
		<updated>2014-09-20T00:54:45Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&amp;lt;ref name=&amp;quot;Book&amp;quot;&amp;gt;Lift in action&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:View_Lift.jpg]]&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85514</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85514"/>
		<updated>2014-09-14T20:10:19Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:View_Lift.jpg]]&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85513</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85513"/>
		<updated>2014-09-14T20:10:01Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:view.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:View_Lift.jpg]]&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85498</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85498"/>
		<updated>2014-09-14T19:59:04Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85497</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85497"/>
		<updated>2014-09-14T19:58:37Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;https://www.google.com/search?q=pic+batman&amp;amp;biw=1536&amp;amp;bih=777&amp;amp;tbm=isch&amp;amp;tbo=u&amp;amp;source=univ&amp;amp;sa=X&amp;amp;ei=IPMVVJeYEdDlsATt8YGYBQ&amp;amp;ved=0CCcQsAQ#facrc=_&amp;amp;imgdii=_&amp;amp;imgrc=Fe1Z9zRPIaBY9M%253A%3BfRZWFsegTWSgxM%3Bhttp%253A%252F%252Fupload.wikimedia.org%252Fwikipedia%252Fen%252F9%252F90%252FBale_as_Batman.jpg%3Bhttp%253A%252F%252Fen.wikipedia.org%252Fwiki%252FBatman_Begins%3B300%3B405&amp;quot; alt=&amp;quot;Smiley face&amp;quot; height=&amp;quot;42&amp;quot; width=&amp;quot;42&amp;quot; &amp;lt;/img&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85495</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85495"/>
		<updated>2014-09-14T19:58:24Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;https://www.google.com/search?q=pic+batman&amp;amp;biw=1536&amp;amp;bih=777&amp;amp;tbm=isch&amp;amp;tbo=u&amp;amp;source=univ&amp;amp;sa=X&amp;amp;ei=IPMVVJeYEdDlsATt8YGYBQ&amp;amp;ved=0CCcQsAQ#facrc=_&amp;amp;imgdii=_&amp;amp;imgrc=Fe1Z9zRPIaBY9M%253A%3BfRZWFsegTWSgxM%3Bhttp%253A%252F%252Fupload.wikimedia.org%252Fwikipedia%252Fen%252F9%252F90%252FBale_as_Batman.jpg%3Bhttp%253A%252F%252Fen.wikipedia.org%252Fwiki%252FBatman_Begins%3B300%3B405&amp;quot; alt=&amp;quot;Smiley face&amp;quot; height=&amp;quot;42&amp;quot; width=&amp;quot;42&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85494</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85494"/>
		<updated>2014-09-14T19:57:59Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;https://www.google.com/search?q=pic+batman&amp;amp;biw=1536&amp;amp;bih=777&amp;amp;tbm=isch&amp;amp;tbo=u&amp;amp;source=univ&amp;amp;sa=X&amp;amp;ei=IPMVVJeYEdDlsATt8YGYBQ&amp;amp;ved=0CCcQsAQ#facrc=_&amp;amp;imgdii=_&amp;amp;imgrc=Fe1Z9zRPIaBY9M%253A%3BfRZWFsegTWSgxM%3Bhttp%253A%252F%252Fupload.wikimedia.org%252Fwikipedia%252Fen%252F9%252F90%252FBale_as_Batman.jpg%3Bhttp%253A%252F%252Fen.wikipedia.org%252Fwiki%252FBatman_Begins%3B300%3B405&amp;quot; alt=&amp;quot;Smiley face&amp;quot; height=&amp;quot;42&amp;quot; width=&amp;quot;42&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85490</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85490"/>
		<updated>2014-09-14T19:55:25Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
http://www.google.com/imgres?imgurl=http%3A%2F%2Fmedia.dcentertainment.com%2Fsites%2Fdefault%2Ffiles%2FGalleryBatman75_1900x900_BM1_53333ef4f048e4.80983462.jpg&amp;amp;imgrefurl=http%3A%2F%2Fwww.dccomics.com%2Fcharacters%2Fbatman&amp;amp;h=900&amp;amp;w=1900&amp;amp;tbnid=zui8516AsW2c4M%3A&amp;amp;zoom=1&amp;amp;docid=m6J6QrzCuGXkRM&amp;amp;ei=i_IVVOjWL9fCsATQo4HYAw&amp;amp;tbm=isch&amp;amp;ved=0CCAQMygCMAI&amp;amp;iact=rc&amp;amp;uact=3&amp;amp;dur=0&amp;amp;page=1&amp;amp;start=0&amp;amp;ndsp=26&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85482</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85482"/>
		<updated>2014-09-14T19:50:38Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85481</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85481"/>
		<updated>2014-09-14T19:50:19Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[[File:View.jpg|link=http://wiki.expertiza.ncsu.edu/images/4/45/View.JPG]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:View.JPG&amp;diff=85472</id>
		<title>File:View.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:View.JPG&amp;diff=85472"/>
		<updated>2014-09-14T19:28:52Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85470</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85470"/>
		<updated>2014-09-14T19:27:37Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Scala */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
[[File:http://wiki.expertiza.ncsu.edu/images/0/09/View_first.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85469</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85469"/>
		<updated>2014-09-14T19:23:19Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Scala */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
[[File:View_first.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85468</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85468"/>
		<updated>2014-09-14T19:22:48Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Scala */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
[[File:View first.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85467</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85467"/>
		<updated>2014-09-14T19:22:19Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Scala */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
[[File:view_first.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:View_first.JPG&amp;diff=85466</id>
		<title>File:View first.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:View_first.JPG&amp;diff=85466"/>
		<updated>2014-09-14T19:21:14Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: Figure:- View-First diagram, Lift design&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Figure:- View-First diagram, Lift design&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85462</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85462"/>
		<updated>2014-09-14T19:08:02Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85461</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85461"/>
		<updated>2014-09-14T19:07:45Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85460</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85460"/>
		<updated>2014-09-14T19:05:13Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85456</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85456"/>
		<updated>2014-09-14T19:03:22Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/&lt;br /&gt;
2. http://www.liftweb.net/&lt;br /&gt;
3. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85455</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85455"/>
		<updated>2014-09-14T19:00:36Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85454</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85454"/>
		<updated>2014-09-14T18:58:47Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85453</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85453"/>
		<updated>2014-09-14T18:58:14Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85452</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85452"/>
		<updated>2014-09-14T18:57:46Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| #lift on freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85451</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85451"/>
		<updated>2014-09-14T18:56:01Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85449</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85449"/>
		<updated>2014-09-14T18:52:42Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| Assembla&lt;br /&gt;
| Mailing list&lt;br /&gt;
| IRC channel&lt;br /&gt;
|-&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
|-&lt;br /&gt;
| mice&lt;br /&gt;
| 1,649&lt;br /&gt;
| 548&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85448</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85448"/>
		<updated>2014-09-14T18:45:16Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Helpful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! name&lt;br /&gt;
! data&lt;br /&gt;
! more data&lt;br /&gt;
|-&lt;br /&gt;
| cats&lt;br /&gt;
| 273&lt;br /&gt;
| 53&lt;br /&gt;
|-&lt;br /&gt;
| dogs&lt;br /&gt;
| 65&lt;br /&gt;
| 8,492&lt;br /&gt;
|-&lt;br /&gt;
| mice&lt;br /&gt;
| 1,649&lt;br /&gt;
| 548&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85446</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85446"/>
		<updated>2014-09-14T18:43:42Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach. &lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85445</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85445"/>
		<updated>2014-09-14T18:43:26Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach. &lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85444</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85444"/>
		<updated>2014-09-14T18:42:08Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach. &lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion&lt;br /&gt;
in Java that would look like:&lt;br /&gt;
&lt;br /&gt;
public Opinion taste(Consumable food) {&lt;br /&gt;
    return evaluation(food);&lt;br /&gt;
} &amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85443</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85443"/>
		<updated>2014-09-14T18:41:44Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach. &lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion&lt;br /&gt;
in Java that would look like:&lt;br /&gt;
&lt;br /&gt;
public Opinion taste(Consumable food) {&lt;br /&gt;
    return evaluation(food);&lt;br /&gt;
}&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85442</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85442"/>
		<updated>2014-09-14T18:40:14Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach. &lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
def taste (food: Consumable) : Opinion = evaluate(food) &amp;lt;br /&amp;gt;&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion&lt;br /&gt;
in Java that would look like:&lt;br /&gt;
&lt;br /&gt;
public Opinion taste(Consumable food) {&lt;br /&gt;
    return evaluation(food);&lt;br /&gt;
}&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85441</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85441"/>
		<updated>2014-09-14T18:39:37Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach. &lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;Basic Scala&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
def taste (food: Consumable) : Opinion = evaluate(food) &lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion&lt;br /&gt;
in Java that would look like:&lt;br /&gt;
&lt;br /&gt;
public Opinion taste(Consumable food) {&lt;br /&gt;
    return evaluation(food);&lt;br /&gt;
}&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85440</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85440"/>
		<updated>2014-09-14T18:38:44Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach. &lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Basic Scala&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
def taste (food: Consumable) : Opinion = evaluate(food)&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion&lt;br /&gt;
in Java that would look like:&lt;br /&gt;
&lt;br /&gt;
public Opinion taste(Consumable food) {&lt;br /&gt;
    return evaluation(food);&lt;br /&gt;
}&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85439</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85439"/>
		<updated>2014-09-14T18:37:01Z</updated>

		<summary type="html">&lt;p&gt;Kmmehta: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up.&lt;br /&gt;
&lt;br /&gt;
Scala is an Object-Functional programming and scripting language. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach. &lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kmmehta</name></author>
	</entry>
</feed>