Laboratório de Desenvolvimento de Software

Documentos relacionados
Wiki::Score A Collaborative Environment For Music Transcription And Publishing

Práticas de Desenvolvimento de Software

5/10/10. Implementação. Building web Apps. Server vs. client side. How to create dynamic contents?" Client side" Server side"

Métodos Formais em Engenharia de Software. VDMToolTutorial

Curso CP100A - Google Cloud Platform Fundamentals (8h)

Casa do Código Livros para o programador Rua Vergueiro, º andar Vila Mariana São Paulo SP Brasil

Groovy & Grails. Arian Pasquali. quarta-feira, 12 de outubro de 11

Ficha da Unidade Curricular

Serviços: API REST. URL - Recurso

Objetivos do mini curso. Conhecer a linguagem. Noção de programação utilizando Python. Aprender o báscio.

Renan Pupin. Resumo. Experiência. Full Stack Web Developer CEO at Orbitus Web

EA998/MC933 Guido Araujo e Sandro Rigo

Redes de Computadores

DOUGLAS CERQUEIRA. FACEBOOK: /douglascruzc

Rails & Javascript Faça isso direito! Dicas de como organizar o javascript em apps Rails não SPA

ASSINATURAS LABORATÓRIOS AUGUST 2012

Avaliação de Frameworks de Produtividade para aplicações CRUD

FRWTC800 - Desenvolvimento Web com Ruby on Rails

Manual de Docência para a disciplina de Algoritmia e Programação 2005/2006 Engenharia Informática, 1º ano José Manuel Torres

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO

Calendarização Cursos Microsoft Exclusivos para a ACSS

Projecto Integrador. Introdução ao REST. Material de suporte às aulas de Proj. Integrador (Nuno Preguiça) Copyright DI FCT/ UNL / 1

Frameworks - Grails. Aécio Costa

Tese / Thesis Work Análise de desempenho de sistemas distribuídos de grande porte na plataforma Java

Developing ASP.NET MVC 5 Web Applications (20486)

Luiz Eduardo Borges. Novatec

Lucas Nascimento Santos

O Framework Rails. Diego Rubin

Oficina de django. 1º Dia - Introdução à ferramenta

Projecto Integrador. Introdução ao REST. Material de suporte às aulas de Proj. Integrador (Nuno Preguiça) Copyright DI FCT/ UNL / 1

Iniciando com o OpenEdge Architect. Camila Valentin Sr. Instructor, Consultant Global Field Services

A Cloud Computing Architecture for Large Scale Video Data Processing

MCSD Web Applications Developer [Ativar Portugal]

What`s going on. Rede social para eventos geo-referenciados. Fernando Bunn Paul Eipper Jonatan

MC-102 Aula 02 Shell Interativa, Programa Básico, Variáveis, Atribuições, Tipos Simples. Instituto de Computação Unicamp

Europass Curriculum Vitae

BEM-VINDOS AO CURSO DE ORIENTADO A OBJETOS

O que significa programar e a razão da sua importância. os sistemas informáticos dependem da interacção de inúmeros programas

GeoDjango. Christiano Anderson

Additional details >>> HERE <<<

Academia Programador Web

Accessing the contents of the Moodle Acessando o conteúdo do Moodle

Linguagens de Programação. Linguagens de Script. Carlos Bazilio

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

Aplication blackboxing

Instalação e utilização do Eclipse / Fortran em Windows

django-pagseguro Documentation

MTM MANUAL DE INSTALAÇÃO DE ADEMPIERE NO LINUX DEBIAN

Diário. João Estrela... F Michael Jackson F F. F Geisy Arruda... Patolino... Peter Griffin F. F.

Primeiros passos com Watson Explorer Enterprise Edition 11.0: Instalação, configuração e testes em máquina virtual Windows 7.

Python. 17 Maio 2005, Teste e Qualidade de Software. Faculdade de Engenharia da Universidade do Porto. Ferramentas de teste para a linguagem.

Docker do básico à orquestração de containers. Meetup de Laravel em São Paulo #3

Ficha de Unidade Curricular

Manual de instruções

Conceitos Básicos sobre Programação Prática

Tutorial Ambiente, instalação e começando um novo projeto Django

Análise de Sistemas I: Programação em Nuvem. Luiz Filipe Licidonio. Faculdade de Tecnologia Pastor Dohms. Porto Alegre, Rio Grande do Sul

Django GIS Brasil Documentation

Java RMI. Alcides Calsavara

Versão 0.1. Manual FoRc. Última Atualização: Maio/2007. Daniel Schmitz

Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments

Nos Trilhos com RAILS. Sylvestre Mergulhão

Academia Programador Web

Introdução ao kit J2EE SDK (Sun)

Sistema de Informações Gerenciais do Interlegis APO-CASA

Programming in C# Conteúdo Programático. Área de formação Plataforma e Tecnologias de Informação

Anexo I Formulário para Proposta

Frameworks para criação de Web Apps para o Ensino Mobile

Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados

User interface evaluation experiences: A brief comparison between usability and communicability testing

Developing Microsoft SharePoint Server 2013 Core Solutions (20488)

JAVASCRIPT DE QUALIDADE HOJE, AMANHÃ E SEMPRE GUILHERME CARREIRO THIAGO OLIVEIRA

UNIVERSIDADE DE LISBOA FACULDADE DE LETRAS SECRETARIADO DE CIÊNCIAS DOCUMENTAIS

A Linguagem Python: Uma visão geral. Prof. Alberto Costa Neto Programação em Python

Cargo: Desenvolvedor PL (Mobile)

OWASP: Introdução OWASP. The OWASP Foundation

Entendendo Rails. Fabio Akita Surgeworks Brazil Rails Practice Manager

FLISOL Criptografia é importante! Aprenda meios simples de proteger arquivos com ferramentas livres.

Introdução à Programação Aula 2 Introdução à linguagem Python

Weby - O Gerenciador de Conteúdo Web para IFES

Tutorial Eclipse (IDE)

Introdução ao Android

Developing Microsoft SharePoint Server 2013 Core Solutions (20488)

Programação Web Aula 10 - Testes, Javascript, Ajax

Course Review for Midterm Exam 1. Cpt S 223 Fall 2010

Introdução à linguagem Python. Slides extras

II Semana de Tecnologia da Informação. Rails Framework

Editor Eclipse para Programas F

Instruções de Instalação do Agente RMON2

Programação Web Aula 8 - Rails (Introdução)

Banco de Dados: Enduser Interface

Inválido para efeitos de certificação

Enplicaw Documentation

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

Informática e Programação. Computer Science and Programming. Semestre do plano de estudos 1

Academia Programador Especialista JAVA

Adotando OpenEdge Architect. Luciano Oliveira Sr. Instructor, Consultant Global Field Services

Xerte Online Toolkits (XOT)

Transcrição:

Laboratório de Desenvolvimento de Software FEUP/MIEIC, 2015/16 Ademar Aguiar Nuno Flores Rui Maranhão Hugo Ferreira Luís Teixeira url: moodle

Ruby on Rails Ruby + MVC = RoR

Rails em produção

Projeto Rails

Plugins, Packages, Tools, etc. #File./Gemfile gem 'rails', '4.0.2' gem 'sqlite3 gem 'uglifier', '>= 1.3.0' gem 'jquery-rails gem 'bootstrap-sass-rails', '~> 3.0.3.0 gem 'debugger # Run on console: # $bundle install

Routes MyApp::Application.routes.draw do end root 'welcome#index' # Example of regular route: get 'products/:id' => 'catalog#view' post 'products/:id/purchase' => 'catalog#purchase http://example.com/products/1 http://example.com/products/1/purchase

Controllers Class CatalogController < ApplicationController def view @product = Product.find(params[:id]) # render view.html end def purchase @product = Product.find(params[:id]) @product.purchase() # render purchase.html end end

Links úteis Gems: http://rubygems.org Docs: http://guides.rubyonrails.org Testing: http://guides.rubyonrails.org/testing.html

$rails new ldso_application

The Zen of Python Beautiful is better than ugly Explicit is better than implicit Simple is better than complex Complex is better than complicated Readability counts http://legacy.python.org/dev/peps/pep-0020/

Dynamic Typing Variable types change with assignment a = 10 a = ten Different from automatic type conversions! 10 + objects in javascript or PHP results in 10 objects No method overloading def my_method(param1, param2): [ ] return xpto

Duck Typing class Duck: def quack(self): print("quaaaaaack!") class Parrot: def quack(self): print("the parrot imitates a duck.") def make_animal_quack(animal): animal.quack()

Multi-paradigm Object-oriented Imperative (procedural) Functional map(), reduce(), filter(), list comprehensions,

More Compiles to bytecode Significant whitespace No semicolons No braces The simplest program: print("hello world")

Libraries Standard library Python Package Index (PyPI) ~38000 packages @ Jan 2014

Command Line Interpreter $ python Python 2.4.4 (#1, Oct 18 2006, 10:34:39) [GCC 4.0.1 (Apple Computer, Inc. build 5341)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> a = 'hello' >>> a 'hello' >>> a = 1 # Changing a variable type. GC takes care of 'hello >>> b = 2 >>> c = a + b >>> c 3 >>> g Traceback (most recent call last): File "", line 1, in? NameError: name g' is not defined

Tools Multi-platform (but better on *nix) Pip Package Installer Virtualenv For creating isolated python environments Pycharm or Eclipse + pydev

Docs The free book Dive Into Python http://www.diveintopython.net/ Google's Python Class https://developers.google.com/edu/python/ Python in one easy lesson http://cs.stanford.edu/people/nick/python-in-one-easy-lesson/ Official Docs http://docs.python.org/

Framework Features Object-relational mapper Templates URL Routing Internationalization Schema Evolution (now part of Django 1.7!)

Overview Model-View-Template models.py views.py templates directory urls.py

Misc Database schema created from models.py $ python manage.py makemigrations $ python manage.py migrate Supports schema migration (new in django 1.7) Default database engine: sqlite (postgresql is better) Internal development server $ python manage.py runserver Supports pluggable apps

Projects Vs Apps Supports pluggable apps Ex: forum, blog, shopping cart, Built-in django apps admin Automatic Backoffice auth Users and authentication formtools Building forms into webpages syndication Building feeds (rss, atom, ) gis Handling geographic data (GeoDjango)

Popular Django Apps Celery task queue (supports RabbitMQ, and Redis) Haystack full text search Feincms content management system django-reversion versioning django-guardian object-level permissions django-extensions misc djangorestframework & django-tastypie REST https://www.djangopackages.com/categories/apps/

Tutorial djangoproject.com > Documentation > Tutorial > Part 1: Object model and models.py Part 2: Admin module Part 3: Public views urls.py and views.py Part 4: Form processing

Client-side Django + angular.js Django + ember.js

Famous Websites Disqus Pinterest Instagram bitbucket Lanyrd addons.mozilla.org The Onion washingtonpost.com guardian.co.uk

About Scala Object-functional Runs on the JVM Sophisticated static type system Functional features Immutability (avoids side-effects) Lazy evaluation Anonymous functions List comprehensions Pattern matching Tail recursion

Scala is Reactive! Today applications are deployed on everything from mobile devices to cloud-based clusters running thousands of multi-core processors. Users expect millisecond response times and 100% uptime. Data is measured in Petabytes. Today's demands are simply not met by yesterday s software architectures. Reactive Systems Responsive, Resilient, Elastic and Message Driven http://www.reactivemanifesto.org/

Benefits Interoperates with Java Supports Traits Concurrency using the Actor Model (Akka) Prepared to scale Concurrent and synchronous processing Really takes advantage of multiple cores

Tools IntelliJ or Eclipse SBT Dependency management Build the system, run the tests, run static analysis,... Many plugins available http://www.scala-sbt.org/0.13/docs/community-plugins.html The Scala shell

The Scala Shell $ scala This is a Scala shell. Type in expressions to have them evaluated. Type :help for more information. scala> object HelloWorld { def main(args: Array[String]) { println("hello, world!") } } defined module HelloWorld scala> HelloWorld.main(null) Hello, world! unnamed0: Unit = () scala>:q

Who s Using It Linkedin Twitter FourSquare Coursera Tumblr

About Play Similar/inspired by Ruby on Rails and Django Supports creating websites with HTML processed on the server-side Written in Scala (initially in Java) JBoss Netty (built-in web server) No ORM, but possible to use Anorm (Scala), Ebean (Java) or Slick (Scala) Template language is Scala Hot-reloading Part of the typesafe stack: Scala + Akka + Play

Resources Official Documentation http://www.scala-lang.org/documentation/ Functional Programming Principles in Scala https://www.coursera.org/course/progfun Free, 7 weeks course

ademar.aguiar@fe.up.pt