SlideShare ist ein Scribd-Unternehmen logo
1 von 107
Downloaden Sie, um offline zu lesen
DON’T REPEAT
YOURSELF,
FRONT-ENDER!
@fernahh
blog.fernahh.com.br
www.organicadigital.com
Don’t Repeat Yourself
[...] Propõe que cada porção de conhecimento em um
sistema deve possuir uma representação única, de
autoridade e livre de ambiguidades em todo o
sistema.
- Wikipédia
Escrever algo apenas uma vez;
Pensar sempre em reuso;
Ser específico;
Se algo tem mais de uma
funcionalidade, divida em quantas
vezes for necessário para fazer
apenas uma.
REPRESENTAÇÃO ÚNICA
LIVRE DE AMBIGUIDADES
Escrever menos com tecnologias web está ligado
diretamente com performance.
- Wikipédia
É sempre bom lembrar...
80-90% do tempo de carregamento de uma página é
gasto no front-end!
- Steve Sounders
<span class="icon"></span>
<i class="icon"></i>
HTML
.button {}
CSS
.botao {}
.btn {}
if (foo.length === 0) {}
JavaScript
if (foo === "") {}
if (foo.isEmpty()) {}
Bibliotecas
<script src="//code.jquery.com/jquery-1.2.4.min.js"></script>
<script src="https://ajax.googleap is.com/ajax/libs/jquery/1.11.3
/jquery.min.js"></script>
<script src="jquery.js"></script>
Bibliotecas
<script src="//code.jquery.com/jquery-1.2.4.min.js"></script>
<script src="https://ajax.googleap is.com/ajax/libs/jquery/1.11.3
/jquery.min.js"></script>
<script src="jquery.js"></script>
HTML
A reutilização da marcação é correta?
Componente de tabs do Bootstrap
<ul class="nav nav-tabs">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Profile</a></li>
<li><a href="#">Messages</a></li>
</ul>
Componente de navbar do Bootstrap
<ul class="nav navbar-nav">
<li><a href="#">Home</a></li>
<li><a href="#">Profile</a></li>
<li><a href="#">Messages</a></li>
</ul>
Perdemos muito tempo em tentativa e erro de retirar
pedaços e tentando inserir outros pedaços no meio
da árvore de HTML e decifrando nomes de classes
CSS.
- Fabio Akita
Componente do Google Maps
<div id="map"></ul>
<script>
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
</script>
Server rendered pages are not optional.
- Guillermo Rauch
http://rauchg.com/2014/7-principles-of-rich-web-applications/
HTML enviado pelo
servidor de
aplicações Meteor.
http://tableless.com.br/nos-quebramos-web/
%strong{:class => "foo", :id => "bar"} Hello, World!
<strong class="foo" id="bar">Hello, World!</strong>
strong.foo#bar Hello, World!
<strong class="foo" id="bar">Hello, World!</strong>
strong.foo#bar Hello, World!
<strong class="foo" id="bar">Hello, World!</strong>
Os problemas com pré-
processadores de HTML:
- Pré-processadores geralmente são mais complexos;
- Quase ninguém olha o output dessas ferramentas;
- O futuro da linguagem é sempre ela mesma!
Mas qual o
futuro do
HTML?
Para alguns desenvolvedores
(principalmente os do Google), o
futuro do HTML são
Web Components.
Web Components?
Custom
Elements
HTML
Imports
Templates Shadow
DOM
Custom Elements
Permite criarmos novos elementos HTML.
Component paper-tabs
<paper-tabs selected="0">
<paper-tab>Home</paper-tab>
<paper-tab>Profile</paper-tab>
<paper-tab>Messages</paper-tab>
</paper-tabs>
https://elements.polymer-project.org/elements/paper-tabs
Good parts
- Não temos ambiguidade;
- Ganhamos tags amigáveis;
- Encapsulamento de tags.
- Novos elementos não possuem semântica nenhuma;
- Alguns elementos possuem comportamento atribuído pelo agent do
usuário;
- Dependemos de JavaScript para load do conteúdo.
Bad parts
HTML Imports
Permite fazermos load de outros
documentos HTML
HTML Imports na prática
<head>
<link rel="import" href="bootstrap.html">
</head>
http://www.akitaonrails.com/2014/07/06/web-components-e-uma-revolucao
Good parts
- É uma forma de empacotarmos compontentes;
- Faz todo sentido com HTTP/2.
- No HTTP/1.1 por ser um problema gigante;
- É inviável controlar versões de um componente;
- O JavaScript do documento importado é executado no mesmo
escopo.
Bad parts
que
perigo!
Templates
Permite utilizarmos um mesmo bloco de
código através de JavaScript.
HTML
<template id="foo">
<img src=""></img>
</template>
JavaScript
var t = document.querySelector('#foo').content();
t.querySelector('img').src = 'avatar.jpg';
document.body.appendChild(t.cloneNode(true));
Good parts
- É uma tentativa de padronizar o uso de templates;
- Todas as soluções atuais são gambiarras.
- O conteúdo só é acessível via JavaScript;
- Não tem os mesmos benefícios de bibliotecas atuais.
Bad parts
Shadow DOM
Permite criarmos elementos de DOM
independentes e isolados do restante da
página.
HTML
<style> #foo: {color: blue;} </style>
<h1 id="foo"></h1>
JavaScript
var foo = document.querySelector('#foo').createShadowRoot();
foo.innerHTML = '<p>Foobar</p>';
Good parts
- Hoje é a única forma de isolarmos marcação, comportamento e estilo;
- É a melhor forma de criarmos widgets;
- Nos permite criar componentes que possuem parâmetros.
- Perdemos o estilo da página a cada shadow DOM.
Bad parts
TL;DR ~ Web Componentes nos ajudam a repetir
menos?
- Custom Elements são mais elegantes do que criarmos elementos com Js;
- Shadow DOM é infinitamente melhor do que usarmos Iframe;
- Template é uma boa tentativa ao invés de uma tag script;
- Não é uma revolução, é uma tentativa de oficializarmos práticas já
existentes;
- Se Web Compontents serão úteis ou não, depende do ecossistema em volta
da sua aplicação.
As melhores práticas não estão necessariamente no
futuro
Nunca se falou tanto em componentes para a web nos últimos anos.
Porém, para construir componentes precisamos saber usar muito bem
os três pilares da web: HTML, CSS, e JavaScript.
Especificidade Efeito Cascata Herança Arquitetura
de CSS
CSS
CSS
2
3
1
CSS
2
3
1 !IMPORTANT
Especificidade de seletores
- CSS inline: 1000 pontos;
- ID: 100 pontos;
- Classes, pseudo-elementos e atributos: 10 pontos;
- Elementos: 1 ponto;
Sempre que você usa !important,
você quebra a especificidade.
https://twitter.com/rafaelrinaldi/status/586216597913739264
Técnica uilizada para definir o estilo a um seletor mesmo em caso de
conflitos.
O coração do CSS
Definindo o peso de uma regra
- Importância;
- Origem;
- Especificidade;
- Ordem da declaração.
HERANÇA
Herença? OO?
Assim como você herda métodos e atributos de objetos, no CSS você
herda as regras de um elemento pai.
/*
* Todo o conteúdo textual do documento
* terá 16px de tamanho, pois herdam do
* `body`.
*/
body {
font-size: 16px;
}
HERANÇA
height, width, margin, padding
Propriedades que se referem ao box-model não aceitam herança,
porém podemos forçar com o valor inherit.
Super poderes para o CSS
Pré-processadores deram super poderes para desenvolvedores
escreverem CSS. Em nosso contexto, @extend e mixins nos trazem
benefícios, mas que devem ser usados com bastante cautela.
@extend
Permite estender placeholders e classes, porém, muitos autores
desencorajam a usar esse recurso.
.error {
color: red;
}
.icon--error {
@extend .error;
}
.error {
color: red;
}
.icon--error {
@extend .error;
}
/*
* Resultado gerado pelo Sass.
*/
.error, .icon-error {
color: red;
}
.other__context .error {
color: darken(red, 10%);
}
.other__context .error {
color: darken(red, 10%);
}
/*
* Resultado gerado pelo Sass.
*/
.other_context .error, .other_context .icon-error {
color: #cc0000;
}
Isso é péssimo!
Além de tirar o controle do desenvolvedor, o Sass irá
gerar código desnecessário e prejudicar outras áreas
de uma interface.
.error, %error {
color: red;
}
.icon--error {
@extend .error;
}
.other__context .error {
color: darken(red, 10%);
}
/*
* Resultado gerado pelo Sass.
*/
.error {
color: red;
}
.icon--error {
color: red;
}
.other__context .error {
color: #cc0000;
}
Resumindo sobre @extend
Evite ao máximo. Talvez você nem precise. Se realmente quiser usar, vá
de placeholders.
Mixins
Mixins são eficientes pois eles injetam código somente onde ele foi
usado, além de ser muito úteis quando precisamos de parâmetros.
@mixin error {
color: red;
}
.icon--error {
@include error;
}
.label--error {
@include error;
}
/*
* Resultado gerado pelo Sass.
*/
.icon--error {
color: red;
}
.icon--error {
color: red;
}
@mixin error($critical: false) {
@if $critical {
color: darken(red, 10%);
} @else {
color: red;
}
}
.icon--error {
@include error;
}
.icon--critical_error {
@include error($critical: true);
}
/*
* Resultado gerado pelo Sass.
*/
.icon--error {
color: red;
}
.icon--critical_error {
color: #cc0000;
}
Concatenação de classes
O uso de composição/concatenação de classes é muito usado em
frameworks de CSS. O popular Bootstrap faz bastante uso dessa
abordagem.
.button {
display: inline-block;
padding: 10px;
color: black;
background-color: white;
}
.button--sucess {
color: white;
background-color: green;
}
No CSS nem tudo depende da tecnologia
Uma das melhores formas de não repetir código, encapsular e escrever
menos e produzir mais é aplicando sistemas de arquitetura de CSS.
OOCSS
Qualquer estilo da página que se repete pode ser aplicado através de
uma classe, ou seja, um “objeto”.
<button class="button anchor-icon">Abrir</button>
estrutura
skin
BEM
Block, Element, Modifier. Preza que o nome das classes sejam auto-
explicáveis.
<button class="button button__anchor_icon">Abrir</button>
módulo
elemento
SMACSS
Foi criado para resolver os problemas do Yahoo Mail. É dividido em base,
layout, module, state. Não é apenas um sistema de escrita, é uma
metodologia.
SMACSS > Base
Contém todo o conteúdo global da aplicação, ou seja, seletores que não
possuem classe ou id.
exemplo: body, a, p, h1, ul, etc.
SMACSS > Layout
Possui seletores agregadores da aplicação.
exemplo: #header, #container, #footer.
SMACSS > Module
Englobam componentes que podem ser reusáveis.
exemplo: .search-box, .box, .content-box.
SMACSS > State
São estados dos módulos da aplicação.
exemplo: .is-complete, .is-ready, .is-current.
SMACSS > Theme
São as diferentes variações dos módulos.
exemplo: .button-black, .button-navy.
<button class="button button-anchor">Abrir</button>
módulo
sub-módulo
Especificidade Efeito Cascata Herança Arquitetura
de CSS
Nunca saia escrevendo CSS até dar certo.
Entenda as regras e planeje seus passos.
COMO APLICAR
COMPORTAMENTO AOS
COMPONENTES?
Module Pattern
Permite organizar bem o código, manter o escopo de variáveis e simular
privacidade de funções e atributos.
Module Pattern
(function(){
// ...
}());
Muitos plugins jQuery usam esse pattern
(function($){
// ...
}(jQuery));
Privacidade de atributos
var Counter = (function(){
var count = 0;
return {
count: function() {
return count;
},
increment: function() {
return count += 1;
}
};
})();
Privacidade de atributos
var Counter = (function(){
var count = 0;
return {
count: function() {
return count;
},
increment: function() {
return count += 1;
}
};
})();
dessa forma não
quebramos o
encapsulamento da
variável count!
ES6 Modules
É a melhor forma de definirmos módulos JavaScript hoje!
util.js
function multiplicacao(a, b) {
return a * b;
};
export { multiplicacao }
util.js
function multiplicacao(a, b) {
return a * b;
};
export { multiplicacao }
app.js
import { multiplicacao } from 'util';
Revisando:
Markup
Estilo
Comportamento
Revisando:
Markup
Estilo
Comportamento
Como gerenciar esses componentes?
Gerenciadores de pacotes > Bower
Gerenciador de pacotes
front-end.
http://bower.io
Ferramentas > Bower > bower commands
# procurar um pacote
$ bower search jquery
# instalar um pacote
$ bower install jquery --save
# atualizar um pacote
$ bower update jquery
# remover um pacote
$ bower remove jquery
Ferramentas > Bower > .bowerrc
{
"directory": "vendor/assets/components"
}
Ferramentas > Bower > bower.json
{
"name": "nome-do-app",
"private": true,
"dependencies": {
"jquery": "~1.11.1",
"normalize-css": "~3.0.1",
"modernizr": "~2.8.3",
}
}
Gerenciadores de pacotes > npm
Gerenciador de pacote
oficial do NodeJS.
http://npmjs.com
Gerenciadores de pacotes > npm > npm commands
# procurar um pacote
$ npm search jquery
# instalar um pacote
$ npm install jquery --save
# atualizar pacotes
$ npm update
# remover um pacote
$ npm uninstall jquery
Gerenciadores de pacotes > npm > package.json
{
"name": "nome-do-app",
"private": true,
"devDependencies": {}
}
Revisando:
Markup
Estilo
Comportamento
Gerenciar componentes
- Aprenda bem a web antes de qualquer ferramenta;
- Converse muito com os (UX) designers do seu time;
- Converse muito com os desenvolvedores do seu time;
- Documente.
OBRIGADO!
@fernahh
fernahh@gmail.com
blog.fernahh.com.br

Weitere ähnliche Inhalte

Was ist angesagt?

CakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no WindowsCakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no Windows
Emerson Soares
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
Rangel Javier
 
Tutorial webquest
Tutorial webquestTutorial webquest
Tutorial webquest
ameliarlima
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
guestea329c
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
Sérgio Vilar
 
Construindo um framework CSS
Construindo um framework CSSConstruindo um framework CSS
Construindo um framework CSS
Diego Eis
 

Was ist angesagt? (20)

CakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no WindowsCakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no Windows
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)
 
Apostila MVC
Apostila MVCApostila MVC
Apostila MVC
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Tutorial webquest
Tutorial webquestTutorial webquest
Tutorial webquest
 
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
 
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi Builder
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falar
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
 
Construindo um framework CSS
Construindo um framework CSSConstruindo um framework CSS
Construindo um framework CSS
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Angular js
Angular jsAngular js
Angular js
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 
Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013
 

Andere mochten auch

Andere mochten auch (20)

how to think about user experience
how to think about user experiencehow to think about user experience
how to think about user experience
 
pra mim tanto faz, se é less, stylus ou sass
pra mim tanto faz, se é less, stylus ou sasspra mim tanto faz, se é less, stylus ou sass
pra mim tanto faz, se é less, stylus ou sass
 
Desmistificando o Polymer
Desmistificando o PolymerDesmistificando o Polymer
Desmistificando o Polymer
 
Um salve para evolução! construindo uma nova web com polymer
Um salve para evolução! construindo uma nova web com  polymerUm salve para evolução! construindo uma nova web com  polymer
Um salve para evolução! construindo uma nova web com polymer
 
Rock Solid CSS Architecture
Rock Solid CSS ArchitectureRock Solid CSS Architecture
Rock Solid CSS Architecture
 
CSS Architecture: Writing Maintainable CSS
CSS Architecture: Writing Maintainable CSSCSS Architecture: Writing Maintainable CSS
CSS Architecture: Writing Maintainable CSS
 
Web components the future is here
Web components   the future is hereWeb components   the future is here
Web components the future is here
 
Google Material Design - Conceito, aplicações, código e web components
Google Material Design - Conceito, aplicações, código e web componentsGoogle Material Design - Conceito, aplicações, código e web components
Google Material Design - Conceito, aplicações, código e web components
 
Thinking about CSS Architecture
Thinking about CSS ArchitectureThinking about CSS Architecture
Thinking about CSS Architecture
 
Utilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveisUtilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveis
 
Criando Valor na Era Social (TDC-2016) Alex Magalhaes
Criando Valor na Era Social  (TDC-2016) Alex MagalhaesCriando Valor na Era Social  (TDC-2016) Alex Magalhaes
Criando Valor na Era Social (TDC-2016) Alex Magalhaes
 
cakephp 3.0 o bolo ainda serve muita gente
cakephp 3.0 o bolo ainda serve muita gentecakephp 3.0 o bolo ainda serve muita gente
cakephp 3.0 o bolo ainda serve muita gente
 
A Gradle Story
A Gradle StoryA Gradle Story
A Gradle Story
 
Considerações de arquitetura para sistemas concorrentes e distribuídos usando...
Considerações de arquitetura para sistemas concorrentes e distribuídos usando...Considerações de arquitetura para sistemas concorrentes e distribuídos usando...
Considerações de arquitetura para sistemas concorrentes e distribuídos usando...
 
Reconstruindo a Torre de Babel com RequireJS
Reconstruindo a Torre de Babel com RequireJSReconstruindo a Torre de Babel com RequireJS
Reconstruindo a Torre de Babel com RequireJS
 
Novidades do iOS9
Novidades do iOS9Novidades do iOS9
Novidades do iOS9
 
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
 
The Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da AppleThe Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da Apple
 
Repaint/Reflow/Dom/RenderTree - Renderizando uma página web
Repaint/Reflow/Dom/RenderTree - Renderizando uma página webRepaint/Reflow/Dom/RenderTree - Renderizando uma página web
Repaint/Reflow/Dom/RenderTree - Renderizando uma página web
 
O que aprendi com minha empresa
O que aprendi com minha empresaO que aprendi com minha empresa
O que aprendi com minha empresa
 

Ähnlich wie don't repeat yourself front-ender

Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)
Sérgio Vilar
 

Ähnlich wie don't repeat yourself front-ender (20)

Arquitetura CSS
Arquitetura CSSArquitetura CSS
Arquitetura CSS
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
 
Mini curso html5 slides
Mini curso html5   slidesMini curso html5   slides
Mini curso html5 slides
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações Web
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPress
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
Web Performance Client Side
Web Performance Client SideWeb Performance Client Side
Web Performance Client Side
 
HTML & CSS - Aula 5
HTML & CSS - Aula 5HTML & CSS - Aula 5
HTML & CSS - Aula 5
 
Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)
 
Trabalho jQuery
Trabalho jQueryTrabalho jQuery
Trabalho jQuery
 
CSS - Cansei de Ser Subestimado
CSS - Cansei de Ser SubestimadoCSS - Cansei de Ser Subestimado
CSS - Cansei de Ser Subestimado
 
CSS Mastigado
CSS MastigadoCSS Mastigado
CSS Mastigado
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
Boas Práticas de programação WordPress
Boas Práticas de programação WordPressBoas Práticas de programação WordPress
Boas Práticas de programação WordPress
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Mini Curso - jQuery - FMU
Mini Curso - jQuery - FMUMini Curso - jQuery - FMU
Mini Curso - jQuery - FMU
 
J query
J queryJ query
J query
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 

Mehr von tdc-globalcode

Mehr von tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Kürzlich hochgeladen

Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
azulassessoria9
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
RavenaSales1
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
LusGlissonGud
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
rosenilrucks
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
LeloIurk1
 

Kürzlich hochgeladen (20)

Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 

don't repeat yourself front-ender