Nesta apresentação são abordados os principais aspectos e vantagens da utilização do framework Grails no desenvolvimento de sistemas web. Um pequeno exemplo de sistema é mostrado, permitindo que o público tenha ideia de como é programar em Grails, e são ressaltadas suas diferenças em relação ao JSF.
Just a simple intro to typescript.
Most of the contents are of any OO language, hence slide contents are minimal. If anyone need any further help, reach me out - akhil2369492@gmail.com
-Akhil
How do you measure the quality of your code? Performance and testing are just one aspect of code, in order to meet deadlines and make maintenance quicker you also need your code to be readable, decoupled and generally easier to comprehend and work with. This talk will go over tips and exercises to help you identify trouble areas, refactor them and train you to write better code in future projects. Come make your code look and function better.
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesLauren Yew
Kotlin Coroutines is a powerful threading library for Kotlin, released by JetBrains in 2018. At The New York Times, we recently migrated our core libraries and parts of our News app from RxJava to Kotlin Coroutines. In this talk we’ll share lessons learned and best practices to understand, migrate to, and use Kotlin Coroutines & Flows.
In this presentation, you will learn:
What Coroutines are and how they function
How to use Kotlin Coroutines & Flows (with real world examples and demos)
Where and why you should use Coroutines & Flows in your app
How to avoid the pitfalls of Coroutines
Kotlin Coroutines vs. RxJava
Lessons learned from migrating to Kotlin Coroutines from RxJava in large legacy projects & libraries
By the end of this talk, you will be able to apply Kotlin Coroutines to your own app, run the provided sample code yourself, and convince your team to give Kotlin Coroutines a try!
Just a simple intro to typescript.
Most of the contents are of any OO language, hence slide contents are minimal. If anyone need any further help, reach me out - akhil2369492@gmail.com
-Akhil
How do you measure the quality of your code? Performance and testing are just one aspect of code, in order to meet deadlines and make maintenance quicker you also need your code to be readable, decoupled and generally easier to comprehend and work with. This talk will go over tips and exercises to help you identify trouble areas, refactor them and train you to write better code in future projects. Come make your code look and function better.
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesLauren Yew
Kotlin Coroutines is a powerful threading library for Kotlin, released by JetBrains in 2018. At The New York Times, we recently migrated our core libraries and parts of our News app from RxJava to Kotlin Coroutines. In this talk we’ll share lessons learned and best practices to understand, migrate to, and use Kotlin Coroutines & Flows.
In this presentation, you will learn:
What Coroutines are and how they function
How to use Kotlin Coroutines & Flows (with real world examples and demos)
Where and why you should use Coroutines & Flows in your app
How to avoid the pitfalls of Coroutines
Kotlin Coroutines vs. RxJava
Lessons learned from migrating to Kotlin Coroutines from RxJava in large legacy projects & libraries
By the end of this talk, you will be able to apply Kotlin Coroutines to your own app, run the provided sample code yourself, and convince your team to give Kotlin Coroutines a try!
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
Learn the best practices and advanced techniques.
* Passing data to client libs, use the data attribute
* Expression contexts, choose wisely
* Use statement best practices, what fits best your needs
* Template & Call statements advanced usage
* Parameters for sub-resources, featuring resource attributes and synthetic resources
Presented at Web Unleashed on September 16-17, 2015 in Toronto, Canada
More info at www.fitc.ca/webu
Why TypeScript?
with Jeff Francis
OVERVIEW
TypeScript is a type-checked superset of JavaScript that benefits medium-sized to complex JavaScript projects. Why would you want to learn a new language, instead of another JavaScript framework? You have all this existing JavaScript code, so how can you adopt something new without throwing the old stuff out?
This session is about the benefits of using TypeScript on top of JavaScript in your projects, and demonstrate step by step ways of migrating an existing JavaScript project to TypeScript. We will dive into code generated by the compiler and look at resources and tools that make working in TypeScript a pleasurable experience.
OBJECTIVE
To understand when it’s a good idea to use TypeScript.
TARGET AUDIENCE
JavaScript developers.
ASSUMED AUDIENCE KNOWLEDGE
Intermediate JavaScript experience.
FIVE THINGS AUDIENCE MEMBERS WILL LEARN
The basics of TypeScript – types, classes, modules, and functions
How TypeScript’s design makes getting started simple and helps projects
What compiled TypeScript looks like and how to debug
What tools can help take advantage of TypeScript’s type information
How to migrate a JavaScript project to TypeScript
Abstract classes are classes that contain one or more abstract methods. An abstract method is a method that is declared, but contains no implementation. Abstract classes may not be instantiated, and require subclasses to provide implementations for the abstract methods. Subclasses of an abstract class in Python are not required to implement abstract methods of the parent class.
1. Why we moving API from REST to Graphql?
2. What is Graphql?
3. Graphql in Golang (Why we choose Golang)
4. How to testing Graphql in Golang
5. Deploy Graphql application
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
Learn the best practices and advanced techniques.
* Passing data to client libs, use the data attribute
* Expression contexts, choose wisely
* Use statement best practices, what fits best your needs
* Template & Call statements advanced usage
* Parameters for sub-resources, featuring resource attributes and synthetic resources
Presented at Web Unleashed on September 16-17, 2015 in Toronto, Canada
More info at www.fitc.ca/webu
Why TypeScript?
with Jeff Francis
OVERVIEW
TypeScript is a type-checked superset of JavaScript that benefits medium-sized to complex JavaScript projects. Why would you want to learn a new language, instead of another JavaScript framework? You have all this existing JavaScript code, so how can you adopt something new without throwing the old stuff out?
This session is about the benefits of using TypeScript on top of JavaScript in your projects, and demonstrate step by step ways of migrating an existing JavaScript project to TypeScript. We will dive into code generated by the compiler and look at resources and tools that make working in TypeScript a pleasurable experience.
OBJECTIVE
To understand when it’s a good idea to use TypeScript.
TARGET AUDIENCE
JavaScript developers.
ASSUMED AUDIENCE KNOWLEDGE
Intermediate JavaScript experience.
FIVE THINGS AUDIENCE MEMBERS WILL LEARN
The basics of TypeScript – types, classes, modules, and functions
How TypeScript’s design makes getting started simple and helps projects
What compiled TypeScript looks like and how to debug
What tools can help take advantage of TypeScript’s type information
How to migrate a JavaScript project to TypeScript
Abstract classes are classes that contain one or more abstract methods. An abstract method is a method that is declared, but contains no implementation. Abstract classes may not be instantiated, and require subclasses to provide implementations for the abstract methods. Subclasses of an abstract class in Python are not required to implement abstract methods of the parent class.
1. Why we moving API from REST to Graphql?
2. What is Graphql?
3. Graphql in Golang (Why we choose Golang)
4. How to testing Graphql in Golang
5. Deploy Graphql application
This presentation was held at the Spring One 2GX 2015 conference in Washington DC.
The presentation explains how to migrate an existing Grails 2 application to the new Spring Boot and Gradle based Grails 3. It covers migrating plugins, applications and features gotchas as well as best praciteces.
The conference presentation also included an extensive live coding section in which I migrated an existing application to Grails 3.
Treinamento básico sobre ASP.NET MVC ministrado na área de tecnologia para o negócio na Localiza Rent a Car S/A, com objetivo de nivelamento de conceitos e entendimento da tecnologia.
Palestra realizada em abril de 2009 no FLISOL de Aracaju/Sergipe. O tema foi o framework orientado a objetos em PHP chamado Symfony.
Algumas de suas features:
- utiliza a arquitetura MVC (Model View Controller), isto é, separação das camadas de apresentação, controle e modelo.
- utiliza bastantes componentes independentes como o Doctrine e Propel (ORM), YML (arquivos de configuração) e outros. Que podem ser adotados em outros projetos que não utilizam o Symfony.
- possui geração automática de CRUD (create, retrieve, update, delete)
- possui uma documentação e comunidade muito grandes.
- geração automática de telas de administração
- ambiente de desenvolvimento com debug
- ambiente de teste
- integração com sincronizador de arquivos (para atualização do projeto na produção)
- separação de configuração para ambientes de teste, desenvolvimento e produção.
- e muito mais...
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Primeira aula da disciplina Programação Dinâmica para Web. Primeiros conceitos sobre Arquitetura de Aplicações web e informações gerais sobre a disciplina.
Introdução a Grails: Um framework veloz e poderoso
1. Introdução a Grails:
Um framework veloz e
poderoso
Bruno Lorenço Lopes
Analista de Tecnologia da Informação (SIn – UFSCar)
14 de outubro de 2014
2. Apresentação Pessoal
Nome: Bruno Lorenço Lopes
Formação
Graduação em Engenharia de Computação na USP São Carlos (2005
- 2009)
Especialização em Desenvolvimento de Software para a Web na
UFSCar (2010 - 2011)
Mestrado em Ciências da Computação e Matemática
Computacional na USP São Carlos (2011 - 2014)
Experiência Profissional
Estágio em desenvolvimento de software no CPqD (2009)
Analista de Sistemas na Enalta (2010 - 2011)
Analista de Tecnologia na UFSCar (2013 - ?)
Co-fundador do site www.acerteocarro.com
2
3. Recordar é viver...
Desenvolvimento do sistema Open BR Track
Sistema para monitoramento e gerenciamento de
entregas de produtos
JSF + EJB + JPA
Organização muito dependente do desenvolvedor, pode
variar de projeto para projeto
Muitos arquivos XML (configurações)
3
4. Recordar é viver...
Desenvolvimento do sistema Open BR Track
Muito código repetido e desnecessário
Muito burocrático
Código confuso
Dificuldade de mudanças
Baixa produtividade
4
8. Dificuldade de mudanças...
Alterações nas entidades geravam:
Mudanças no banco de dados
Mudança nos DAOs (Data Access Object)
Mudanças nos serviços (fachadas)
Mudanças nos Managed Beans
Mudanças nos XHTML
8
10. Um Pouco de História
O desenvolvimento do Grails começou em julho de 2005, inspirado no Ruby on
Rails
Originalmente o nome era Groovy on Rails
Versão 0.1 saiu em 29 de março de 2006
Versão 1.0 saiu em 04 de fevereiro de 2008
Atualmente a versão mais recente é a 2.4.3
A versão 3.0 se encontra em desenvolvimento e é prevista para 2015
Projeto é patrocinado e liderado pela Pivotal Sofware
10
11. Groovy e Grails
Linguagem de programação dinâmica que roda na JVM
Framework fullstack (pilha completa) para desenvolvimento de aplicações
web
11
14. Princípios do Grails
Convenção em vez de Configuração – Ao invés de fazer toda a configuração
explicitamente em arquivos XML, o nome e a localização dos arquivos indicam
sua função. Sempre que possível siga as convenções.
DRY (Don’t Repeat Yourself) – No Grails existe um conjunto organizado de
artefatos disponíveis para os desenvolvedores, além de geradores de código
fonte. Além disso, o Grails favorece a adoção do DRY nos projetos.
MVC (Model-View-Controller) – Padrão arquitetural de software que se baseia
na divisão do software em camadas com funções bem definidas.
14
15. Model-View-Controller
15
Modelo
Visão
Controlador
Responsável pela organização dos dados e
pelas regras do negócio
Responsável apresentação e visualização dos
dados
Responsável pela integração entre as camadas
de Visão e Modelo
16. Model-View-Controller na Web
16
3. O modelo
devolve os
dados pedidos
Modelo Visão
Controlador
Browser
2. O controlador
pede dados ao
Modelo
1. O usuário envia um
pedido de url
4. O controlador
seleciona a visão e
fornece os dados
5. A visão selecionada
é devolvida ao
controlador
6. O controlador devolve a visão
como resposta para o browser
17. Criando uma App Grails
17
Comando create-app: Cria uma nova aplicação Grails
18. Classes de domínio
Controllers e Serviços fazem
fazem
parte do Modelo
Scripts Grails, por
exemplo para
configuração
Estrutura de um projeto Grails
18
parte do
Controlador
Views e Taglibs
fazem parte do
CoCdoenctsreo lcaldaosrses
específicas do
“DicioGnárariiolss” para
inteArrnqauciivoonsa ldizea ção
Configuração
Código Java!
Código Groovy
Tes“tTgeeessn tuéenrsii ctdáoer” ios
integração
19. Estrutura de um projeto Grails
Tudo que está no
classpath, como
Nome e versão da
aplicação, versão
Recursos como
CSV, javascripts e
19
Lista de Plugins
utilizados
bibliotecas
do Grails
imagens
WEB-INF, META-INF
Grails Wrapper
20. Grails Wrapper
Permite construir a aplicação sem ter que configurar o
Grails
20
21. Rodando a aplicação
21
Comando run-app: Roda a aplicação em modo de
desenvolvimento
23. Classes de Domínio
Representam as entidades de negócio
Tem atributos próprios que são mapeados e armazenados
em um banco de dados, normalmente relacional
Podem apresentar alguns tipos de relacionamento:
Herança
Dependência
1 para muitos
1 para 1
23
24. Classe de Domínio - Criação
24
Vamos criar uma classe de domínio Campeonato
26. Classe de Domínio – Adicionando
Restrições
Vamos adicionar um campo nome, e duas restrições sobre
o tamanho do nome. A primeira que ele deve ter no
mínimo 5 caracteres, a segunda que ele deve ter no
máximo 20 caracteres
26
28. Controllers (Controladores)
Responsáveis por tratar as requisições do usuário
(browser) com as actions
Realizam algum trabalho sobre a requisição (por exemplo
chamar uma classe de domínio ou serviço)
Escolher o tipo de resposta:
Executar outra ação de controller (própria ou não)
Renderizar uma visão (GSP)
Renderizar informação diretamente
28
29. Controllers (Controladores)
Seguem algumas convenções:
O nome das classes deve terminar com a palavra Controller
Ficam dentro do diretório controllers
Tipo padrão é prototype, ou seja, uma instância para cada
requisição. É possível mudar o tipo.
Métodos públicos são utilizados para tratar os eventos
Ação padrão é a index
29
30. Controller - Scaffold
30
Vamos criar um controller Scaffold para a classe
Campeonato
49. Entendendo o Controller
Métodos do GORM (Grails' object relational mapping)
Substitui o DAO (Data Access Object)
Vários métodos para busca, atualização, remoção e persistência
dos dados
49
50. Views (Visões)
São arquivos GSP – Aceitam linguagem HTML e taglibs do Grails
Ficam dentro do diretório do respectivo controller
50
51. Views (Visões)
51
Importa a classe
Edição
Define uma variável
com nome
entityName
Dois modos de
chamar uma tag
Grails
message.properties
57. Services (Serviços)
Camada adicional na parte do model para facilitar o
desacoplamento
Convenções:
Os nomes das classes terminam com a palavra Service (ex:
EdicaoService)
São transacionais (é possível configurar)
Tipicamente:
Acessam as classes de domínio
Acessam outros services
57
58. Services (Serviços)
Quando usar:
Você precisa centralizar a lógica do negócio em uma API de
serviços
Os casos de uso da aplicação operam em múltiplos objetos de
domínio, e operações complexas de negócio no modelo não devem
ser misturadas com a lógica do controlador
Alguns casos de uso, e processos de negócio são melhor
encapsulados fora de um objeto de domínio. Nesse caso, podem
ser encapsulados em uma API.
The Definitive Guide to Grails 2 - Jeff Scott Brown, Graeme
Rocher
58
59. Services
Comando create-service: Cria um serviço a partir de uma
classe de domínio
59
66. Testes
Comando test-app: Realiza testes na aplicação
É possível testar uma única classe
É possível determinar o tipo de teste (:unit, :integration)
66
68. Banco de Dados
Já temos duas classes, controllers, view, servisse, testes....
Mas não falamos ainda de banco
Onde estão os dados???
As respostas estão no arquivo Datasource.groovy, no diretório conf
68
69. Banco de Dados
69
Configurações da
Base de Dados
(H2)
Configurações o
Hibernate
70. Banco de Dados
70
Ambientes específicos
para desenvolvimento,
testes, e produção
71. Banco de Dados
71
E eu posso trocar? PODE!!!
Para isso, você deve:
Informar o driver do banco
Configurar a URL
Configurar nome de usuário e senha
72. Configuração do Build
Arquivo BuildConfig.groovy no diretório conf
Permite utilizar repositórios Maven
72
73. Configuração do Build
Permite utilização de bibliotecas Java, como drivers de
bancos de dados
73
75. Plugins
1162 plug-ins (13 de outubro de 2014)
Todo tipo de plugin:
Segurança (Spring Security Core, Apache Shiro Integration for Grails)
Interface (Kickstart with Bootstrap, Grails Admin Interface, Plugin
Platform UI)
Persistência de dados (MongoDB GORM, Redis Plugin)
Geração de relatórios (Jasper Plugin, Excel Export Plugin)
Gerenciamento de processos (Grails Activiti Plugin, camunda Grails
Plugin)
75
76. Plugins
Envio de e-mail (Asynchronous Mail Plugin, Provides Mail support to
a running Grails application)
Cache (Cache Plugin, Ehcache Cache Plugin)
Agendamento de Jobs (Quartz, Grails Spring Batch Plugin)
Testes (Spock Plugin, Spock Functional Plugin, Geb integration for
Grails)
Buscas (Searchable, ElasticSearch Grails Plugin)
Integração com redes sociais (Facebook SDK Plugin, Twitter for
Spring Security OAuth plugin)
76
78. Grails: Vantagens
Curva de aprendizado facilitada para programadores Java
Poder das linguagens dinâmicas
Padrão MVC
Tecnologias consolidadas
Suporte de IDEs
Muitos plugins
78
79. Grails: Vantagens
Templates
Taglibs
Facilidade na hora de testar
Alta produtividade
79
80. Grails: Panorama
80
Versão 3.0 - Objetivos:
Gradle
Spring Boot
Redução de Dependências
Entre outros
82. Grails: Panorama
Critérios como:
- Facilidade de Uso
- Documentação
- Ecossistema
- Escalabilidade
- Velocidade de
Desenvolvimento
Fonte: http://zeroturnaround.com/ 82
84. Grails: Empresas que utilizam
84
Fontes: https://grails.org/websites
http://philip.yurchuk.com/software/companies-using-grails/
85. Conselho
Sempre que possível siga as convenções...
Caso contrário, é possível fazer algumas configurações e utilizar do jeito que
você quiser (assim como os outros frameworks)
85