Interface de Usuário também é coisa de Programador, o objetivo deste treinamento é vivenciar um ambiente de desenvolvimento empregando estas tecnologias, abordando conceitos de testes unitários, integrados, padrões e boas práticas de desenvolvimento
Introdução ao desenvolvimento front end usando bootstrap e angular jsCloves Moreira Junior
O documento discute conceitos de front-end como MVC, MVP, MVVM e AngularJS. Explica que MVC separa a interface do usuário em Model, View e Controller, enquanto MVP usa Presenter no lugar de Controller. MVVM usa ViewModel para manter a View e Model sincronizados. AngularJS usa MVW, onde qualquer padrão pode ser usado.
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
Rodrigo Branas oferece treinamentos em desenvolvimento web com AngularJS e Clean Code. Ele tem experiência em ensinar técnicas como TDD, refactoring e orientação a objetos. O documento lista os cursos disponíveis e fornece contatos para se inscrever.
Testando uma aplicação AngularJS utilizando o KarmaHenrique Limas
Realize testes unitários de modo amigavel e eficiente utilizando AngularJS e o Karma runner. Deixe o seu teste unitário que seja de compreenssão para todos, não so desenvolvedores, utilizando a biblioteca Jasmine para descrever os testes.
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAWilson Mendes
O documento apresenta um framework chamado AngularJS, descrevendo seus conceitos e vantagens, como programação declarativa, data binding e injeção de dependência. Também compara o AngularJS com outros frameworks como jQuery, Backbone e Ember, mostrando que o AngularJS permite desenvolver aplicações web de forma mais concisa e produtiva.
O documento introduz o framework AngularJS, descrevendo-o como uma estrutura JavaScript focada em HTML que utiliza conceitos MVC. É desenvolvido pela Google para padronizar arquiteturas em aplicações web dinâmicas, permitindo criar novas tags HTML e diretivas para controle de formulários, templates, operações de binding e visualização. Apresenta também como o AngularJS estende o vocabulário HTML e compara sua quantidade de código em relação ao framework Backbone.
O documento discute o framework Javascript AngularJS, incluindo o que é AngularJS, por que deve ser usado, suas principais características como diretivas, modelos, controles e rotas, e como testar código AngularJS. O documento fornece exemplos para ilustrar esses conceitos-chave.
O documento fornece instruções para criar um sistema ASP.NET C# para iniciantes em programação, descrevendo a estrutura do projeto, tecnologias utilizadas e etapas como concepção, modelagem, criação da arquitetura, banco de dados e implementação do sistema.
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
Slides de curso de Férias ministrado na FEI em 07/2014. 20 horas de pura introdução ao mundo do entity framework code first e Asp.Net MVC 5 com o Visual Studio Express 2013
O documento fornece uma visão geral da biblioteca JavaScript React criada pelo Facebook para construção de interfaces de usuário. Apresenta as características principais do React como alto desempenho, componentes e Virtual DOM, e discute instalação, funcionamento com estados, propriedades e ciclo de vida de componentes. Finaliza com links e referências sobre o uso do React.
Material Design simples e rapido com AngularJSHenrique Limas
Muito se fala hoje de aplicações nativas usando o Material Design do Google. Mas como desenvolver de modo simples, ágil e multi-plataforma na web?
Demo no Github: https://github.com/HenriqueLimas/tdc-2015-palestra-angular-material
O documento apresenta uma palestra sobre o framework web Vraptor para desenvolvimento Java. Aborda as vantagens do Vraptor como produtividade, convenções, injeção de dependência e suporte a REST. Também discute os principais conceitos do MVC e como iniciar um projeto com Vraptor.
O documento discute o desenvolvimento web com ASP.Net e MVC. Apresenta o .NET Framework, Visual Studio 2010, ASP.Net, Web Forms e MVC. Explica que MVC é um padrão de arquitetura que separa modelo, visão e controle, enquanto Web Forms é mais rápido para desenvolvimento inicial mas MVC oferece mais controle e testabilidade.
AngularJS é um framework JavaScript para desenvolvimento de aplicações web single-page. Ele facilita a criação de SPAs através de características como data binding de duas vias, injeção de dependências e diretivas que estendem HTML. AngularJS também suporta controllers, filters e versões para diferentes navegadores, embora a versão mais antiga suporte apenas o Internet Explorer 9 ou superior.
ASP .NET MVC - Você esta pronto para a pílula vermelha?Douglas Aguiar
O documento apresenta uma introdução ao framework ASP.NET MVC, comparando-o com o ASP.NET WebForms. Apresenta as principais características e benefícios do ASP.NET MVC, como controle total sobre HTML, URLs amigáveis, separação de responsabilidades e testabilidade. A agenda inclui explicar o que é o ASP.NET MVC, as diferenças em relação ao WebForms, criar um projeto de exemplo e avaliar recursos como routing, controllers, views e validação.
Apresentação feita para o treinamento dos colaboradores da Vitrio.
Público alvo do treinamento: Analistas de conteúdo, Designers e equipe de Marketing Digital.
O principal assunto era uma breve introdução ao JavaScript ,jQuery e plugins. Entretanto, abrangemos outros tópicos, tais como: Desenvolvimento em Camadas, requisições, performance de web sites e algumas ferramentas.
O documento discute as diferenças entre Web Forms e ASP.NET MVC. Apresenta os principais conceitos de cada framework, incluindo vantagens e desvantagens. Conclui que o Web Forms é mais adequado para projetos existentes ou com pouco tempo de desenvolvimento, enquanto o MVC oferece mais controle e testabilidade.
Introdução ao desenvolvimento de aplicações webRodrigo Branas
O documento apresenta um especialista em desenvolvimento de aplicações web, com mais de 12 anos de experiência e certificações. Ele ensina sobre tópicos como a história da web, evolução para a web 2.0, frameworks front-end e divisão de responsabilidades entre front-end e back-end.
Curso introdutório de ReactJS.
ReactJS é uma ferramente de desenvolvimento Web criada pelo Facebook.
No curso abordaremos uma abordagem introdutória ao assunto, explorando o básico para desenvolver um site somente com front-end
Este documento apresenta as principais tecnologias do framework MEAN (MongoDB, Express, AngularJS e Node.js). Ele discute como construir uma aplicação utilizando essas tecnologias e mostra passo-a-passo a instalação e configuração do ambiente de desenvolvimento com essas ferramentas.
O documento apresenta técnicas para melhorar o desempenho e acessibilidade de sites, incluindo renderização no navegador, sprites de CSS, combinação de JavaScript e CSS, carga sob demanda e uso de HTML semântico. Também discute template binding para manipulação de DOM no JavaScript.
AngularJS é um framework JavaScript para desenvolvimento de aplicações web que estrutura a aplicação em camadas bem definidas como View, Controller e Scope. Ele fornece recursos como componentes reusáveis, integração com back-end e facilitação de testes automatizados.
Angularjs é um framework javascript construido e mantido pelo grupo de engenheiros do Google, ele usa o HTML como uma "template engine" aliado a conceitos de Orientação a Objetos, testes, dentre outros, no intuito de fornecer uma solução completa para o cliente-side de sua aplicação. Além disso tem total compatibilidade com as bibliotecas javascript mais utilizadas, como jQuery. é um novo conceito para desenvolvimento de web apps client-site.
Entenda as novidades que estão por vir com o AngularJS 2.0, as novas definições, facilidades, novos desafios e entenda o motivo do AngularJS ser um framework excelente para todos os momentos.
O documento apresenta Stefan Horochovec e sua palestra sobre desenvolvimento mobile utilizando tecnologias nativas e HTML. A palestra discute as principais plataformas mobile nativas (iOS, Android, Windows Phone e BlackBerry), ferramentas para desenvolvimento web como AngularJS, NodeJS e GulpJS, e o framework multiplataforma Cordova/Phonegap.
1. O documento discute abraçar o framework AngularJS para implementar arquitetura MVC no lado do cliente.
2. É explicado que frameworks como o Angular resolvem problemas como manipulação de dados e lógica nas views.
3. O framework AngularJS é então apresentado, com ênfase em sua abordagem declarativa usando diretivas e two-way data binding.
Este documento apresenta um framework web MVC chamado VRaptor, desenvolvido em Java. O VRaptor oferece desenvolvimento ágil com conceitos como convention over configuration, injeção de dependência e anotações. Ele possui recursos como controllers, views, redirecionamentos e validação, permitindo também REST e serialização JSON/XML. Exemplos demonstram seu uso para criação de aplicações web.
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicFelipe Blini
Nesse projeto vamos ver que um aplicativo híbrido é uma página HTML como qualquer outra tendo apenas que ser otimizada para caber em telas pequenas de maneira responsiva e com componentes otimizados para Touch Screen, para isso usamos bibliotecas CSS e JS como o Materialize, Bootstrap, entre várias outras.
A nossa página HTML também deve se comportar como um aplicativo móvel, para isso o nosso 'site' deve ser um SPA (Single Page Application), ou seja, uma única página HTML com uma área reservada para a renderização das views que serão injetadas via AJAX, para isso podemos usar bibliotecas como JQuery para nos ajudar com o AJAX e a manipulação do DOM, mas é preferível usar frameworks front-end como AngularJS, ReactJS, entre outros que nos entregam uma sistema de SPA pronto e organizam nosso código com o pattern MVC, eliminando o código spaghetti.
Veremos tbm que essa página precisa ter as views injetadas com transições animadas entre telas que devem ser feitas feitas CSS que usa aceleração da CPU por questões de performance.
Além de tudo isso, precisamos ter acesso às APIs nativas dos devices, pra isso precisamos integrar nossa página HTML com o Cordova, adicionar plugins e usar os eventos que ele emite pra nos ajudar no ciclo-de-vida da nossa aplicação. Vamos entender a diferença entre PhoneGap e Cordova e que o nosso aplicativo vai rodar embarcado em uma WebView, o que realmente é uma WebView e que essa é apenas uma Activity e que segue o mesmo ciclo-de-vida de qualquer outra Activity.
Veremos também que essa página HTML precisa ter elementos UI mínimos e obrigatórios para qualquer aplicativo móvel. Todo aplicativo deve ter uma barra de status que combine com o design utilizado, uma barra de navegação fixa com um título e um botão voltar, a área do conteúdo e um rodapé (opcional) e que para fazermos isso contamos com a ajuda de bibliotecas com o Materialize, Bootstrap, JQuery Mobile, etc...
Antes de terminar vamos ver com um bom ícone e uma splash screen são importantes para um aplicativo móvel e que temos dezenas de tamanhos e resoluções de arquivos para criar, exportar e registrar no nosso XML de configurações e como podemos usar o Ionic Resources pra fazer esse trabalho pesado pra nós.
E depois como emular tudo isso, como fazer Debug e identificar erros, como visualizar nos devices e depois fazer o Build e publicar nas lojas de aplicativos móveis
Como se não bastasse temos que levar em consideração a experiência do usuário em cada plataforma, veremos como o usuário do iPhone espera que os elementos do UI sejam e como o aplicativo deve se comportar e como os dos Android esperam, e entenderemos que o Material Design jamais deve ser entregue no IOS e que precisamos de um UI agnóstico de plataforma.
Veremos como tudo isso fica muito fácil e simples com o Ionic Framework que toma o controle de tudo isso e nos permite ser muito mais produtivo
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
Slides de curso de Férias ministrado na FEI em 07/2014. 20 horas de pura introdução ao mundo do entity framework code first e Asp.Net MVC 5 com o Visual Studio Express 2013
O documento fornece uma visão geral da biblioteca JavaScript React criada pelo Facebook para construção de interfaces de usuário. Apresenta as características principais do React como alto desempenho, componentes e Virtual DOM, e discute instalação, funcionamento com estados, propriedades e ciclo de vida de componentes. Finaliza com links e referências sobre o uso do React.
Material Design simples e rapido com AngularJSHenrique Limas
Muito se fala hoje de aplicações nativas usando o Material Design do Google. Mas como desenvolver de modo simples, ágil e multi-plataforma na web?
Demo no Github: https://github.com/HenriqueLimas/tdc-2015-palestra-angular-material
O documento apresenta uma palestra sobre o framework web Vraptor para desenvolvimento Java. Aborda as vantagens do Vraptor como produtividade, convenções, injeção de dependência e suporte a REST. Também discute os principais conceitos do MVC e como iniciar um projeto com Vraptor.
O documento discute o desenvolvimento web com ASP.Net e MVC. Apresenta o .NET Framework, Visual Studio 2010, ASP.Net, Web Forms e MVC. Explica que MVC é um padrão de arquitetura que separa modelo, visão e controle, enquanto Web Forms é mais rápido para desenvolvimento inicial mas MVC oferece mais controle e testabilidade.
AngularJS é um framework JavaScript para desenvolvimento de aplicações web single-page. Ele facilita a criação de SPAs através de características como data binding de duas vias, injeção de dependências e diretivas que estendem HTML. AngularJS também suporta controllers, filters e versões para diferentes navegadores, embora a versão mais antiga suporte apenas o Internet Explorer 9 ou superior.
ASP .NET MVC - Você esta pronto para a pílula vermelha?Douglas Aguiar
O documento apresenta uma introdução ao framework ASP.NET MVC, comparando-o com o ASP.NET WebForms. Apresenta as principais características e benefícios do ASP.NET MVC, como controle total sobre HTML, URLs amigáveis, separação de responsabilidades e testabilidade. A agenda inclui explicar o que é o ASP.NET MVC, as diferenças em relação ao WebForms, criar um projeto de exemplo e avaliar recursos como routing, controllers, views e validação.
Apresentação feita para o treinamento dos colaboradores da Vitrio.
Público alvo do treinamento: Analistas de conteúdo, Designers e equipe de Marketing Digital.
O principal assunto era uma breve introdução ao JavaScript ,jQuery e plugins. Entretanto, abrangemos outros tópicos, tais como: Desenvolvimento em Camadas, requisições, performance de web sites e algumas ferramentas.
O documento discute as diferenças entre Web Forms e ASP.NET MVC. Apresenta os principais conceitos de cada framework, incluindo vantagens e desvantagens. Conclui que o Web Forms é mais adequado para projetos existentes ou com pouco tempo de desenvolvimento, enquanto o MVC oferece mais controle e testabilidade.
Introdução ao desenvolvimento de aplicações webRodrigo Branas
O documento apresenta um especialista em desenvolvimento de aplicações web, com mais de 12 anos de experiência e certificações. Ele ensina sobre tópicos como a história da web, evolução para a web 2.0, frameworks front-end e divisão de responsabilidades entre front-end e back-end.
Curso introdutório de ReactJS.
ReactJS é uma ferramente de desenvolvimento Web criada pelo Facebook.
No curso abordaremos uma abordagem introdutória ao assunto, explorando o básico para desenvolver um site somente com front-end
Este documento apresenta as principais tecnologias do framework MEAN (MongoDB, Express, AngularJS e Node.js). Ele discute como construir uma aplicação utilizando essas tecnologias e mostra passo-a-passo a instalação e configuração do ambiente de desenvolvimento com essas ferramentas.
O documento apresenta técnicas para melhorar o desempenho e acessibilidade de sites, incluindo renderização no navegador, sprites de CSS, combinação de JavaScript e CSS, carga sob demanda e uso de HTML semântico. Também discute template binding para manipulação de DOM no JavaScript.
AngularJS é um framework JavaScript para desenvolvimento de aplicações web que estrutura a aplicação em camadas bem definidas como View, Controller e Scope. Ele fornece recursos como componentes reusáveis, integração com back-end e facilitação de testes automatizados.
Angularjs é um framework javascript construido e mantido pelo grupo de engenheiros do Google, ele usa o HTML como uma "template engine" aliado a conceitos de Orientação a Objetos, testes, dentre outros, no intuito de fornecer uma solução completa para o cliente-side de sua aplicação. Além disso tem total compatibilidade com as bibliotecas javascript mais utilizadas, como jQuery. é um novo conceito para desenvolvimento de web apps client-site.
Entenda as novidades que estão por vir com o AngularJS 2.0, as novas definições, facilidades, novos desafios e entenda o motivo do AngularJS ser um framework excelente para todos os momentos.
O documento apresenta Stefan Horochovec e sua palestra sobre desenvolvimento mobile utilizando tecnologias nativas e HTML. A palestra discute as principais plataformas mobile nativas (iOS, Android, Windows Phone e BlackBerry), ferramentas para desenvolvimento web como AngularJS, NodeJS e GulpJS, e o framework multiplataforma Cordova/Phonegap.
1. O documento discute abraçar o framework AngularJS para implementar arquitetura MVC no lado do cliente.
2. É explicado que frameworks como o Angular resolvem problemas como manipulação de dados e lógica nas views.
3. O framework AngularJS é então apresentado, com ênfase em sua abordagem declarativa usando diretivas e two-way data binding.
Este documento apresenta um framework web MVC chamado VRaptor, desenvolvido em Java. O VRaptor oferece desenvolvimento ágil com conceitos como convention over configuration, injeção de dependência e anotações. Ele possui recursos como controllers, views, redirecionamentos e validação, permitindo também REST e serialização JSON/XML. Exemplos demonstram seu uso para criação de aplicações web.
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicFelipe Blini
Nesse projeto vamos ver que um aplicativo híbrido é uma página HTML como qualquer outra tendo apenas que ser otimizada para caber em telas pequenas de maneira responsiva e com componentes otimizados para Touch Screen, para isso usamos bibliotecas CSS e JS como o Materialize, Bootstrap, entre várias outras.
A nossa página HTML também deve se comportar como um aplicativo móvel, para isso o nosso 'site' deve ser um SPA (Single Page Application), ou seja, uma única página HTML com uma área reservada para a renderização das views que serão injetadas via AJAX, para isso podemos usar bibliotecas como JQuery para nos ajudar com o AJAX e a manipulação do DOM, mas é preferível usar frameworks front-end como AngularJS, ReactJS, entre outros que nos entregam uma sistema de SPA pronto e organizam nosso código com o pattern MVC, eliminando o código spaghetti.
Veremos tbm que essa página precisa ter as views injetadas com transições animadas entre telas que devem ser feitas feitas CSS que usa aceleração da CPU por questões de performance.
Além de tudo isso, precisamos ter acesso às APIs nativas dos devices, pra isso precisamos integrar nossa página HTML com o Cordova, adicionar plugins e usar os eventos que ele emite pra nos ajudar no ciclo-de-vida da nossa aplicação. Vamos entender a diferença entre PhoneGap e Cordova e que o nosso aplicativo vai rodar embarcado em uma WebView, o que realmente é uma WebView e que essa é apenas uma Activity e que segue o mesmo ciclo-de-vida de qualquer outra Activity.
Veremos também que essa página HTML precisa ter elementos UI mínimos e obrigatórios para qualquer aplicativo móvel. Todo aplicativo deve ter uma barra de status que combine com o design utilizado, uma barra de navegação fixa com um título e um botão voltar, a área do conteúdo e um rodapé (opcional) e que para fazermos isso contamos com a ajuda de bibliotecas com o Materialize, Bootstrap, JQuery Mobile, etc...
Antes de terminar vamos ver com um bom ícone e uma splash screen são importantes para um aplicativo móvel e que temos dezenas de tamanhos e resoluções de arquivos para criar, exportar e registrar no nosso XML de configurações e como podemos usar o Ionic Resources pra fazer esse trabalho pesado pra nós.
E depois como emular tudo isso, como fazer Debug e identificar erros, como visualizar nos devices e depois fazer o Build e publicar nas lojas de aplicativos móveis
Como se não bastasse temos que levar em consideração a experiência do usuário em cada plataforma, veremos como o usuário do iPhone espera que os elementos do UI sejam e como o aplicativo deve se comportar e como os dos Android esperam, e entenderemos que o Material Design jamais deve ser entregue no IOS e que precisamos de um UI agnóstico de plataforma.
Veremos como tudo isso fica muito fácil e simples com o Ionic Framework que toma o controle de tudo isso e nos permite ser muito mais produtivo
O documento discute testes automatizados de software, incluindo TDD (test-driven development), BDD (behavior-driven development) e frameworks de teste como Jasmine e Cucumber. Ele fornece exemplos de como estruturar testes usando descrições e afirmações.
O documento apresenta o Behavior Driven Development (BDD) e o framework Cucumber. Discute como o BDD e o Cucumber podem ser usados para melhorar os processos de teste e qualidade de software na Locaweb, movendo-se de uma abordagem de "Quality Control" para "Quality Assurance". O caso apresentado é um Proof of Concept de BDD e Cucumber para testes de infraestrutura como serviço (IaaS).
O documento discute o uso de LINQ (Language Integrated Query) no C# para manipular dados. É introduzido o conceito de LINQ, suas vantagens e como funciona. Em seguida, são apresentados exemplos de consultas LINQ usando diferentes fontes de dados, como arrays, coleções e bancos de dados SQL.
Como a Microsoft faz software: Desgerenciando PessoasMarlon Luz
O documento discute como a Microsoft "desgerencia" seus times de desenvolvimento de software ágeis. Eles adotam práticas como Scrum, Kanban e BML, mas também quebram algumas regras comuns. Os times são multidisciplinares de 8-12 pessoas com sprints de 3 semanas. Eles se concentram em criar um ambiente saudável com autonomia, propósito e liberdade religiosa de escolher as melhores práticas.
O documento resume os principais conceitos do framework JavaScript AngularJS, incluindo: (1) o que é AngularJS e sua história, (2) two-way data binding, (3) módulos, (4) controllers, (5) diretivas, (6) serviços e (7) filtros. Exemplos, referências e casos reais de uso também são apresentados.
O documento descreve as capacidades de um malware, incluindo receber informações da máquina infectada, manipular recursos do Windows, inverter botões do mouse, bloquear a estação do usuário, manipular e executar tarefas, desligar a máquina e rodar de forma invisível controlado por sockets.
O documento resume conceitos e tecnologias de redes de computadores, incluindo modelos de clientes-servidores, redes locais e metropolitanas, padrões IEEE 802, protocolos de rede, modelos de referência como TCP/IP e OSI, história da ARPANET, endereçamento IP, redes Ethernet, equipamentos de rede como switches e bridges, VLANs, redes sem fio como IrDA, Bluetooth e Wi-Fi.
JS - Ferramentas Code Analysis e Fixed para JS - TDC2016Erick Wendel
Este documento discute ferramentas de análise e melhoria de código JavaScript como JSHint, JSLint, JetBrains, SonarLint e JSAdvice. Ele define análise de código, correções e refatoração de código e descreve as funcionalidades dessas ferramentas.
Desenvolvendo BOTs com Telegram e Javascript - TDC2016Erick Wendel
O documento apresenta uma introdução sobre bots e a API do Telegram para criar bots, demonstrando como criar e configurar um bot básico, adicionar teclados interativos e comandos personalizados. Apresenta também integrações com o IBM Watson para análise de sentimento e tradução automática.
Mini Curso - WebScraping com C# - Erick WendelErick Wendel
O documento discute web scraping, definindo-o como a técnica de extração de informações de sites por meio de software. Explica que o software simula um usuário comum para obter dados de forma automatizada e que web scraping é legal desde que os dados sejam públicos. Aponta algumas dificuldades como sites com estruturas variáveis e a necessidade de refazer o trabalho caso a estrutura mude.
Este documento contém notas de aula sobre estruturas de dados. Aborda tópicos como tipos de dados, constantes, variáveis, registros, ponteiros, listas, pilhas, filas e árvores de pesquisa binárias. Fornece códigos em C para ilustrar os conceitos discutidos.
O documento discute programação de sockets em C# para comunicação em rede. Apresenta as classes Socket e IPAddress para representar sockets e endereços IP, respectivamente. Também explica como criar sockets servidores e clientes, estabelecer conexões, enviar e receber dados usando os métodos Bind, Listen, Accept, Receive e Send.
O documento discute como diretivas no AngularJS permitem maior reuso e manutenção de código ao criar componentes isolados, em contraste com o uso de ng-controller que pode levar a problemas de compartilhamento de dados, repetição de código e herança. O autor argumenta que componentes são o futuro dos frameworks front-end.
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Wennder Santos
O documento apresenta a agenda do segundo dia de um curso sobre desenvolvimento de aplicativos híbridos, abordando tópicos como automatização de tarefas, testes automatizados, testes de interface do usuário, integração e distribuição contínuas, e publicação de aplicativos na loja Google Play.
Desenvolvimento Apps multiplataforma para dispositivos móveis usando HTML5Intel Software Brasil
This document provides an agenda and overview for a presentation on hybrid mobile app development using HTML5. It discusses the limitations of traditional web apps, how PhoneGap/Cordova addresses these issues by allowing access to device hardware and bridges the gap between web and native apps. It also outlines Intel's contributions to Cordova, the PhoneGap Build service, and the Intel HTML5 Development Environment. The presentation demonstrates accelerometer usage in PhoneGap and shows a live example of a mobile app for viewing Brazilian soccer league standings implemented with HTML5, CSS, JavaScript and accessing data remotely via JSON.
1) O documento descreve uma aula sobre desenvolvimento web com Angular, incluindo a instalação das ferramentas necessárias e a criação de um projeto Angular simples para gerenciar listas de tarefas.
2) É apresentado um modelo de dados para armazenar as tarefas, um template HTML para exibir os dados e um componente para conectar o modelo ao template.
3) O fluxo básico de execução de uma aplicação Angular é explicado, ligando o bootstrap, componentes, templates e data binding.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
O documento discute conceitos, tecnologias e tendências de desenvolvimento web. Aborda tópicos como HTML5, CSS3, frameworks responsivos, JavaScript, Node.js, linguagens e frameworks para desenvolvimento mobile, arquitetura empresarial e integração de sistemas. Apresenta também a agenda e perfil profissional do autor.
O documento discute várias bibliotecas e frameworks JavaScript, descrevendo seus objetivos e funcionalidades. Apresenta exemplos básicos de jQuery, AngularJS e ReactJS para simplificar e dinamizar o desenvolvimento front-end. Recomenda um trabalho de pesquisa sobre essas e outras bibliotecas como jQuery, Node.js, Backbone.js, D3.js e Ember.js.
O documento resume as principais características do sistema operacional Firefox OS. Ele explica que o Firefox OS utiliza o kernel do Android e permite que desenvolvedores front-end aproveitem seu conhecimento em HTML, CSS e JavaScript para criar aplicativos nativos para dispositivos móveis. Também descreve como estruturar e publicar aplicativos para o Firefox OS.
O documento fornece uma introdução ao framework Angular, descrevendo suas principais características como um framework frontend para criação de aplicações single-page usando JavaScript. O documento também discute tópicos como a história do Angular, suas versões, TypeScript, programação reativa, testes e mais.
Este livro apresenta o framework Angular 2 utilizando TypeScript, Node, SystemJS e Visual Studio Code. O livro ensina os conceitos básicos de TypeScript como tipos, classes, módulos e decorators, e em seguida cobre a criação de componentes Angular, templates, serviços, formulários e comunicação com servidores.
Este documento fornece uma introdução à Angular CLI, incluindo como instalá-la, criar um novo projeto Angular, analisar os principais arquivos de configuração, executar o projeto localmente e construí-lo para produção. O foco é ensinar os conceitos básicos para começar a desenvolver aplicações com Angular usando a CLI.
Preparar o ambiente para desenvolvimento angularNize Costa
O documento explica os passos para configurar o ambiente de desenvolvimento Angular 4 com TypeScript, incluindo a instalação do Node.js, NPM e Angular CLI. Também mostra como criar um projeto Angular usando o comando "ng new" e iniciar o servidor local com "ng serve".
O documento apresenta uma introdução sobre o desenvolvimento de aplicativos com o framework Ionic. Apresenta as principais ferramentas de desenvolvimento web modernas como Node.js, pré-processadores CSS e task runners. Também mostra o roadmap do workshop com os tópicos que serão abordados como estrutura inicial de projeto, criação de controllers e listagem de posts.
Este documento resume um workshop sobre Node.js que abrange tópicos desde a história e conceitos básicos até a criação de aplicações e deploy. O workshop inclui exemplos práticos de código e discute tópicos como JavaScript, o core do Node.js, frameworks como Express e Kraken, web sockets, e opções de deploy em nuvem ou on-premise. O objetivo é que os participantes saiam com todas as suas dúvidas sanadas.
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapThiago Colares
Visão geral sobre HTML5, AngularJS e PhoneGap. E como combinar essas e outras ferramentas para criar aplicativos híbridos e multiplataformas. Aplicativos móveis híbridos são aplicativos nativos que empacotam aplicações web e oferecem a elas APIs dos dispositivos. Palestra apresentada no I WSORT, workshop do GSORT, no IFBA (Instituto Federal da Bahia).
Desenvolvimento Web com Javascript.
Apresentação feita para a #ViradaGeek
Código anexo do github: https://github.com/FelipeBarrosCruz/viradageek
PodCast de explicação: Breve.
Iniciando com desenvolvimento híbrido de aplicações mobile com HTML5Loiane Groner
O documento discute o desenvolvimento de aplicativos móveis híbridos com HTML5. Apresenta as vantagens de se usar uma abordagem multiplataforma e discute frameworks como PhoneGap, jQuery Mobile e Sencha Touch que permitem a criação de aplicativos híbridos com uma única base de código para vários sistemas móveis.
Aplicações de Alto Desempenho com JHipster Full StackJoão Gabriel Lima
Uma apresentação sobre o framework JHipster para construção de aplicações full stack Java. O framework fornece generators, scaffolding e estruturas para criar aplicações web e APIs escaláveis com Spring Boot e Angular/React. O documento discute a arquitetura, geração de projetos, estrutura de pastas, depuração, produção e dicas de uso do JHipster.
Este documento fornece informações sobre Ionic Framework e seu uso para desenvolvimento de aplicativos híbridos. Em três frases:
Ionic é um framework para construção de aplicativos híbridos usando HTML, CSS e Angular/JavaScript, permitindo acesso a recursos nativos via plugins. Ele fornece componentes para criação de interfaces semelhantes aos aplicativos nativos. Ionic depende de Angular, Cordova e outros frameworks para funcionamento e geração de aplicativos para dispositivos móveis.
O documento descreve o framework Angular, incluindo sua história, arquitetura, funcionalidades e aplicações. Angular é um framework JavaScript mantido pelo Google para desenvolvimento de aplicações web single-page usando TypeScript.
O documento discute o framework PhoneGap para desenvolvimento de aplicativos móveis utilizando HTML5, CSS e JavaScript. PhoneGap permite que desenvolvedores criem aplicativos nativos para múltiplas plataformas como Android, iOS e BlackBerry sem precisar aprender suas linguagens nativas. O documento também fornece detalhes sobre como configurar o ambiente de desenvolvimento e exemplos de aplicativos criados com PhoneGap.
Com certeza! Aqui está uma descrição mais longa e detalhada para uma apresentação sobre a história da linguagem Java, buscando ser ainda mais envolvente e informativa:
Título da Apresentação: Java: Uma Lenda em Código – A História Completa da Linguagem que Moldou o Mundo Digital
Subtítulo: Do Sonho da Portabilidade à Onipresença Global: Desvendando a Jornada Épica do "Write Once, Run Anywhere"
Descrição:
Prepare-se para uma exploração aprofundada e cativante da história de uma das linguagens de programação mais revolucionárias e resilientes de todos os tempos: o Java. Esta apresentação é um convite para desvendar a saga completa de uma tecnologia que não apenas resistiu ao teste do tempo, mas também se reinventou continuamente para permanecer na vanguarda da inovação digital.
Nossa viagem começa nas ensolaradas praias da Califórnia, no início dos anos 90, dentro dos laboratórios da Sun Microsystems. Conheceremos o ambicioso "Green Project", liderado por James Gosling, Patrick Naughton e Mike Sheridan, cujo objetivo era criar uma linguagem para um futuro de dispositivos inteligentes e interconectados. Descobriremos como essa visão inicial, focada na simplicidade e na segurança para um universo de eletrodomésticos, inadvertidamente, pavimentou o caminho para a era da Internet, transformando o ícone da xícara de café no símbolo de uma revolução.
Percorreremos os momentos definidores que catapultaram Java para o estrelato global:
O lançamento oficial em 1995: A aposta ousada na World Wide Web com os inovadores applets, que prometiam interatividade em um cenário estático, marcando o nascimento do lendário slogan "Write Once, Run Anywhere" (Escreva Uma Vez, Execute em Qualquer Lugar).
A expansão das plataformas: A evolução do Java em suas distintas edições – Java SE (Standard Edition) para aplicações desktop e de uso geral; Java EE (Enterprise Edition) para os robustos e complexos sistemas corporativos; e Java ME (Micro Edition), que permitiu o Java florescer em celulares e dispositivos embarcados, antes da era dos smartphones.
As versões que definiram eras: Desde o Java 1.0, que introduziu a JVM, até o revolucionário Java 5 (Tiger), que trouxe genéricos, anotações e autounboxing, e o impactful Java 8, que introduziu as Lambdas e a Stream API, modernizando a linguagem. Analisaremos também o impacto do novo ciclo de releases mais rápido a partir do Java 9.
Os grandes desafios e a transição de propriedade: A aquisição da Sun Microsystems pela Oracle em 2010, as controvérsias em torno da linguagem (como a disputa legal com o Google sobre o Android), e como a comunidade e a Oracle trabalharam para garantir a vitalidade e a evolução contínua do Java.
Aprofundaremos nos pilares que sustentam a resiliência e a onipresença do Java: sua sólida orientação a objetos, a robustez da sua máquina virtual (JVM), sua impressionante portabilidade, a segurança inerente e a vasta e vibrante comunidade de desenvolvedores que o impulsiona. Ilustraremos como o Java se
Joao Claudio Nunes Carvalho-Classificacao de filmes do Netflix.docxssuser1712ed
magine um trabalho que mistura a curiosidade de cientista de laboratório com a pressa de gestor que precisa de respostas pra ontem — pois é exatamente isso que o João Cláudio entregou no seu TCC de MBA em Data Science.
O projeto parte de um problema real (e cabeludo) enfrentado por empresas brasileiras: transformar pilhas de dados brutos em decisões que economizem tempo, dinheiro e dor de cabeça. Para resolver essa dor, João mergulhou em técnicas de machine learning supervisionado (com um flerte simpático pelo aprendizado não supervisionado) e montou um pipeline end-to-end que vai desde a coleta e limpeza de dados até a validação de modelos e apresentação de insights em dashboards interativos.
Objetivo
Otimizar a previsão de demanda de produtos sazonais, reduzindo rupturas de estoque e sobras em até 20 % — meta ousada, mas não impossível com os algoritmos certos.
Metodologia
ETL esperto: scripts em Python (Pandas + PySpark quando o dataset passava do tamanho “cabe no meu notebook”).
Modelagem: comparação entre Random Forest, XGBoost e Prophet, com tuning automatizado em Optuna.
Validação cruzada temporal: porque dado de série temporal não perdoa.
Explainability: LIME e SHAP pra mostrar que o modelo não é uma caixa-preta.
Resultados
Melhor modelo: XGBoost com MAE 18 % menor que a baseline estatística.
Painel Power BI que atualiza em tempo quase real e manda alerta pro gestor quando a previsão foge do intervalo de confiança.
ROI estimado de 6 meses, segundo simulação baseada em históricos de vendas.
Contribuições
Framework reutilizável: o pipeline foi empacotado em containers Docker, pronto pra rodar na AWS ou on-premises.
Guia de boas práticas: documento anexo em estilo “receita de bolo” para times que queiram replicar (com pitadas de humor e referências a Beatles — porque ciência também precisa de trilha sonora).
Relevância
O trabalho reforça como a combinação de técnicas avançadas de IA com narrativa clara pode encurtar a ponte entre análise e decisão. Não é só código bonito — é impacto mensurável no caixa da empresa.
Em suma, o TCC de João Cláudio não é daqueles que ficam pegando poeira na prateleira da biblioteca: ele sai do papel pronto pra pilotar, com manual de instruções e botão de “deploy” acoplado. Ciência de dados em estado de arte, mas falada em bom português — do jeito que a gente gosta.
Com certeza! Aqui está uma descrição mais longa e detalhada para uma apresentação sobre a história da linguagem Java, buscando ser ainda mais envolvente e informativa:
Título da Apresentação: Java: Uma Lenda em Código – A História Completa da Linguagem que Moldou o Mundo Digital
Subtítulo: Do Sonho da Portabilidade à Onipresença Global: Desvendando a Jornada Épica do "Write Once, Run Anywhere"
Descrição:
Prepare-se para uma exploração aprofundada e cativante da história de uma das linguagens de programação mais revolucionárias e resilientes de todos os tempos: o Java. Esta apresentação é um convite para desvendar a saga completa de uma tecnologia que não apenas resistiu ao teste do tempo, mas também se reinventou continuamente para permanecer na vanguarda da inovação digital.
Nossa viagem começa nas ensolaradas praias da Califórnia, no início dos anos 90, dentro dos laboratórios da Sun Microsystems. Conheceremos o ambicioso "Green Project", liderado por James Gosling, Patrick Naughton e Mike Sheridan, cujo objetivo era criar uma linguagem para um futuro de dispositivos inteligentes e interconectados. Descobriremos como essa visão inicial, focada na simplicidade e na segurança para um universo de eletrodomésticos, inadvertidamente, pavimentou o caminho para a era da Internet, transformando o ícone da xícara de café no símbolo de uma revolução.
Percorreremos os momentos definidores que catapultaram Java para o estrelato global:
O lançamento oficial em 1995: A aposta ousada na World Wide Web com os inovadores applets, que prometiam interatividade em um cenário estático, marcando o nascimento do lendário slogan "Write Once, Run Anywhere" (Escreva Uma Vez, Execute em Qualquer Lugar).
A expansão das plataformas: A evolução do Java em suas distintas edições – Java SE (Standard Edition) para aplicações desktop e de uso geral; Java EE (Enterprise Edition) para os robustos e complexos sistemas corporativos; e Java ME (Micro Edition), que permitiu o Java florescer em celulares e dispositivos embarcados, antes da era dos smartphones.
As versões que definiram eras: Desde o Java 1.0, que introduziu a JVM, até o revolucionário Java 5 (Tiger), que trouxe genéricos, anotações e autounboxing, e o impactful Java 8, que introduziu as Lambdas e a Stream API, modernizando a linguagem. Analisaremos também o impacto do novo ciclo de releases mais rápido a partir do Java 9.
Os grandes desafios e a transição de propriedade: A aquisição da Sun Microsystems pela Oracle em 2010, as controvérsias em torno da linguagem (como a disputa legal com o Google sobre o Android), e como a comunidade e a Oracle trabalharam para garantir a vitalidade e a evolução contínua do Java.
Aprofundaremos nos pilares que sustentam a resiliência e a onipresença do Java: sua sólida orientação a objetos, a robustez da sua máquina virtual (JVM), sua impressionante portabilidade, a segurança inerente e a vasta e vibrante comunidade de desenvolvedores que o impulsiona. Ilustraremos como o Java se
3. Um pouco sobre mim
Daniel Souza Makiyama
E-mail: [email protected]
Graduado em Ciência da Computação pela FEI;
Cursando Mestrado em Ciência da Computação pela UFABC;
Microsoft Certified Professional (Desenvolvimento Web em ASP.NET 4.5);
Sócio-Fundador da Donuts4u Desenvolvimento e Comunicação Via Web.
4. Um pouco sobre você
Qual é o seu nome?
Qual sua experiência profissional?
Qual é a sua experiência com desenvolvimento web?
O que você espera aprender no curso de Aplicativos Web com
HTML5, Angular.js, Twitter Bootstrap e Node.js?
5. Plano de Curso
O futuro da Web
Interface de usuário também é
coisa de programador
Sopa de Frameworks
Por onde Começar?
Instalando o Node.js
Instalando a IDE ATOM
Hello Node!
O prompt de comando
Instalando o Angular.Js
Hello Angular!
Instalando o Twitter Bootstrap
Testes com o Bootstrap
Instalando o GIT
6. Plano de Curso
Aplicação PhoneCat
(fonte: tutorial do site angularjs.org)
Template Estático
Templates Angular
Filtrando Repetidores
Vinculação dupla de dados
XHRs e Injeção de Dependências
Links de Template e Imagens
Rotas e Visões Múltiplas
Mais templates
Filtros
Tratador de Eventos
REST e Serviços Customizados
Animações
Participação em Pesquisa: Base
de Conhecimento de Frameworks
Web
Pesquisa Qualitativa: Impressões
e Feedback
7. Motivação / Oportunidade
Javascript é a linguagem
com maior demanda atual
no mercado;
Bolsas de iniciação
científica:
Arquiteturas e Frameworks
Web
Pesquisa sobre arquiteturas e
frameworks da internet e suas
aplicações;
fonte: linguagem vs salário / demanda (http://tinyurl.com/ppbu65x acessado em 05/01/2014)
(pesquisa realizada de Janeiro à Junho de 2014 nos Estados Unidos,
Grã-Bretanha e Austrália
8. Qual é o futuro da web?
fonte: Application Foundations for The Open Web Platform (http://tinyurl.com/nnxbt4x acessado em 05/01/2014)
Experiência única em qualquer contexto;
Integração total entre dispositivos;
Modularização e reuso de interfaces;
Mídias e comunicação em tempo real;
Maior usabilidade e acessibilidade;
Novos serviços de api aberta;
Segurança e privacidade;
9. Interface de Usuário também é coisa de
Programador
Estrutura
Organização Testes
Modularização
com o aumento da
complexidade, como
gerenciar a qualidade?
AutomaçãoCodificação
10. Sopa de Frameworks
fonte: Javascript The Right Way (http://jstherightway.org/ acessado em 05/01/2015)
...e isso não representa nem a metade
dos frameworks disponíveis!
13. Instalando a IDE Atom
https://atom.io/
Windows Installer para Windows 7
(o Atom não precisa de instalação)
14. Hello Node!
Inicialmente crie em seudiretoriohellonode um arquivo entitulado hello.js;
Abra o Atom e arraste o arquivo hello.js vazio para o mesmo;
Implemente o seguinte código no arquivo e salve;
15. O prompt de comando
Localize no menu iniciar o ‘node.js command
prompt’, abra o programa;
Navegue até a pasta do arquivo hello.js e digite
‘node hello.js’ para iniciar o servidor web node.js;
Verifique a mensagem ‘Servidor executando em
http://127.0.0.1:8000/
16. O prompt de comando
Abra o navegador de sua preferência e digite
http://127.0.0.1:8000/ . Você verá a mensagem:
Hello Node!
Voltem ao prompt de comando e digitem ctrl+c
para parar o servidor;
17. Instalando o Angular.js
Digite ‘npm install angular’ para instalar o
angular.js na sua pasta (existem outras maneiras
de instalar o angular);
O comando copia os arquivos da última versão do
angular.js para o diretório node_modules/angular/
fonte: NPM (https://www.npmjs.com/package/angular acessado em 05/01/2015)
18. Hello Angular!
Crie um arquivo com o nome
index.html na pasta
helloangular;
Abra o Atom e arraste o arquivo
index.html recém criado para o
mesmo;
Implemente o código ao lado no
arquivo e salve;
fonte: http-server (https://www.npmjs.com/package/http-server acessado em 05/01/2015)
19. Hello Angular!
Abra o prompt de comando do
node.js, navegue até a pasta
helloangular e digite o comando
‘npm install http-server –g’ para
instalar o servidor http-server
globalmente;
Inicialize o servidor digitando
http-server –a 0.0.0.0 –p 8000;
fonte: http-server (https://www.npmjs.com/package/http-server acessado em 05/01/2015)
20. Hello Angular!
Abra o navegador de sua preferência e digite
http://localhost:8000/ . Você verá um campo
de texto e uma mensagem ‘Hello’;
Digite qualquer texto na caixa de texto e
automaticamente o texto é exibido no <h2>
(no exemplo ao lado digitamos ‘Angular!!!!’);
Volte ao prompt de comando e digite ctrl+c
para parar o servidor;
fonte: http-server (https://www.npmjs.com/package/http-server acessado em 05/01/2015)
21. Instalando o Twitter Bootstrap
Vamos utilizar o Yeoman para instalar o
bootstrap(existem outras maneiras de instalar
o bootstrap). Digite ‘npm install -g yo’ para
instalar o bootstrap globalmente;
Digite ‘yo webapp’ para criar uma nova
aplicação web;
Mantenha a opção padrão ‘Bootstrap’ e
pressione a tecla <espaço>. O gerador
Yeoman criará diversos arquivos básicos
para uma aplicação web (demora um
pouquinho);
fonte: webapp (https://github.com/yeoman/generator-webapp acessado em 05/01/2015)
22. Instalando o Twitter Bootstrap
Vamos verificar a estrutura criada pelo
gerador, começando pela raiz;
Package.json => pacotes npm
devDependencies => referências;
engines => versão do node.js e/ou npm;
Gruntfile.js => executador de tarefas
serve => inicializa servidor, injeta dependências
(bower), auto-prefixos de css, auto-refresh;
fonte: gruntjs (http://gruntjs.com/ acessado em 05/01/2015)
...
23. Instalando o Twitter Bootstrap
Bower.json => dependências de front-end;
.yo-rc.json => configurações Yeoman;
.jshintrc => configurações jshintrc;
.gitignore => pastas/extensões a serem
ignorado(a)s no commit;
.gitattributes => atributos dos arquivos a serem
comitados, por caminho;
.editorconfig => configurações para IDEs;
.bowerrc => configurações do bower;
fonte: bower (http://bower.io/ acessado em 05/01/2015)
24. Instalando o Twitter Bootstrap
testspec => pasta de testes;
test.js => implementação de testes;
Implemente o código ao lado no arquivo e
salve;
Acesse o prompt de comando e execute o
comando ‘grunt test’ para rodar o teste
implementado;
fonte: mocha (http://mochajs.org/ acessado em 05/01/2015)
25. Instalando o Twitter Bootstrap
app => pasta da aplicação;
index.html => página inicial da aplicação;
Acesse o prompt de comando e execute o
comando ‘grunt serve’ para inicializar o
servidor. Automaticamente a página inicial da
aplicação é apresentada no navegador;
fonte: gruntjs (http://gruntjs.com/ acessado em 05/01/2015)
26. Testes com o Bootstrap
fonte: http-server (https://www.npmjs.com/package/http-server acessado em 05/01/2015)
>>
pratique: crie uma table com class
table e table-striped e veja o
resultado.
foi possível verificar o livereload?
27. Instalando o GIT
fonte: git (http://git-scm.com/ acessado em 05/01/2015)
http://git-scm.com/download/
Windows Installer
28. Recapitulando
Aula anterior. Objetivo: existem inúmeras
possíveis configurações de projetos web
Framework de padrões para
desenvolvimento mobile-first
Executador de Tarefas, automatiza
atividades manuais envolvendo diversos
pacotes
Framework para criação e execução de
testes Javascript
Ferramenta geradora de código (facilita a
construção de código)
Aula de hoje: Projeto Phonecat:
Estrutura básica recomendada pelo
site do AngularJS.org
Gestores de pacotes
29. O que é o Angular.js?
O HTML é mestre em lidar com conteúdo estático, mas ainda
falha no dinamismo.
AngularJS permite extender o vocabulário do HTML para sua
aplicação. O ambiente resultante é expressivo, fácil de usar e
rápido de desenvolver.
fonte: git (http://todomvc.com/examples/angularjs/#/ acessado em 05/01/2015)
30. Ajustes Possíveis Problemas de Permissão e
tamanho do caminho dos pacotes npm
Apagar sua pasta, criar novamente ex: c:dsm e criar a pasta c:npm
Abrir o notepad como administrador;
Acessar o arquivo npmrc em : C:program
filesnodejsnode_modulesnpm e colocar: prefix=c:npm e salvar;
Navegar até o diretório do seu projeto cd dsm, baixar o projeto do GIT git
clone --depth=14 https://github.com/angular/angular-phonecat.git;
Abrir o console na pasta do projeto (angular-phonecat) e rodar git
config --global url.”https://”.insteadOf git:// ;
31. Aplicação PhoneCat
Abra o prompt de comando e clone o
repositório do tutorial ‘git clone --
depth=14
https://github.com/angular/angular-
phonecat.git’
Navegue no prompt até a pasta
angular-phonecat recém criada e
execute ‘npm install’ para instalar todas
as ferramentas especificadas no
arquivo package.json;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
32. Aplicação PhoneCat
Digite o comando ‘npm start’ para iniciar o
servidor na porta 8000 (como definido no
arquivo packages.json;
O servidor apresenta como diretório raiz a
pasta phonecatangular-phonecat. Clique na
pasta ‘app’ para acessar a aplicação;
Navegue um pouco na aplicação. É um
catálogo de smartphones;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
33. Aplicação PhoneCat
Reinicie o Atom e arraste o arquivo
package.json do dir. angular-phonecat
para ele. O projeto angular-phonecat será
aberto no Atom;
Abra um novo console, acesse a pasta da
aplicação e digite ‘npm test’ para rodar os
testes. Os testes unitários executados
estão presentes no diretório angular-
phonecattestunit;
gere um erro no teste it(‘should fetch
phone detail’... e verifique se o console de
teste é atualizado;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
34. Aplicação PhoneCat
Pare o processo automático de testes com
ctrl+c e ‘S’. Execute o comando ‘git
checkout –f step-0’ para voltar o projeto ao
step-0 do tutorial;
Como o servidor ainda está rodando em
outro console acesse localhost:8000/,
clique no diretório app. Na página dê
ctrl+F5 para eliminar cache. Aparecerá
página com ‘Nothing here yet’;
No Atom abra o arquivo app/index.html e
verifique as funções do angular na página;
multiplicar 3 inputs HTML. O que ocorre
antes do preenchimento, e depois?
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
35. Angular
Aplicação PhoneCat
O ng-app ativa o injetor do angular, responsável
pela injeção de dependências. O injetor também
cria o escopo raiz, contexto para o modelo da
aplicação;
Angular compila o modelo de objetos do
documento html (DOM) e processa as
expressões;
Ao receber ações do usuário, Angular verifica
modificações no modelo, caso existam, Angular
executa novamente os vínculos afetados;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
ng-app escopo raiz
template html
expressões (vínculos)
Ação usuário (mouse, teclado)
visão
modelo
modifica
36. Aplicação PhoneCat – template estático
Execute o comando ‘git checkout –f step-1’
para ir ao step-1 do tutorial;
Localize e abra o arquivo appindex.html e
verifique o conteúdo estático incluído;
transforme o conteúdo dos itens nas tags
<details> e <summary> do HTML5.
Informe a class ‘nav nav-pills’ na <ul>.
Finalize apresentando o total de telefones
usando a tag <div> com class ‘alert alert-
info’;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
37. Aplicação PhoneCat – templates angular
Execute o comando ‘git checkout –f step-2’
para ir ao step-2 do tutorial. Acesse o
arquivo app/index.html;
ng-app define o módulo phonecatApp que
possui o controller PhoneListCtrl;
ng-controller permite anexar o controller
PhoneListCtrl à tag <body>. O modelo é
definido no controller;
ng-repeat permite o loop dos itens do
modelo de acordo com o template
especificado dentro da <li> com os
vínculos {{phone.name}} e
{{phone.snippet}};
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
38. Aplicação PhoneCat – templates angular
Acesse o arquivo app/js/controllers.js;
angular.module define o módulo phonecatApp, sem
dependências ‘[]’ e atribui à variável phonecatApp;
phonecatApp define o controller ‘PhoneListCtrl’;
PhoneListCtrl anexa os dados dos smartphones ao
escopo ($scope), atribuindo os mesmos à variável
‘phones’;
Este escopo está definido a todos os vínculos localizados
dentro da tag de <body>, onde a diretiva ng-
controller=“PhoneListCtrl” é definida;
Graças ao escopo, a visão e o modelo estão sempre
sincronizados: http://plnkr.co/edit/zZfUQN?p=preview;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
39. Aplicação PhoneCat – templates angular
Acesse o arquivo test/unit/controllersSpec.js;
testes unitários do controller ‘PhoneListCtrl’;
beforeEach => inicializa módulo ‘phonecatApp’ antes da
execução dos testes;
it => define cada teste;
inject => injeta o serviço controller no teste, que permite
obter o controller pelo nome;
O escopo é mock (simula o comportamento do objeto real
neste contexto);
A verificação é feita através da função expect do
framework jasmine;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
40. Aplicação PhoneCat – templates angular
Abra o console na pasta do projeto e execute
‘npm test’. O único teste será executado com
sucesso;
Crie uma nova variável no arquivo de
app/js/controller.js chamada ‘itemName’ com
nome ‘Lista de Telefones’;
Na página app/index.html crie uma <h2> que
apresente a mensagem ‘Olá Lista de Telefones’
com a variável ‘itemName’;
Crie um novo teste para verificar se a variável
‘itemName’ está preenchida corretamente no
controller: expect(scope.itemName).toBe(‘Lista
de Telefones’);
Crie uma tabela conforme a imagem ao lado e
corrija o código para apresentar os números
multiplicados por 2, por linha;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
41. Aplicação PhoneCat – filtrando repetidores
Execute o comando ‘git checkout –f step-3’ para
ir ao step-3 do tutorial. Acesse o arquivo
app/index.html;
Verifique na index.html que foi incluído um input
com nome query e a sentença ‘| filter:query’ no
repetidor;
Vinculação: no carregamento da página a
variável query do input é ligada ao modelo, ou
seja, ao escopo do controller ‘PhoneListCtrl’;
Devido à sintaxe ‘filter:query’ no repetidor,
qualquer alteração na variável ‘query’ faz com
que o repetidor atualize o DOM para refletir as
mudanças;
crie uma variável chamada query no controller
PhoneListCtrl e preencha com o valor ‘Nex’;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
Index.html
Escopo do PhoneListCtrl
query
phones
42. Aplicação PhoneCat – filtrando repetidores
A função ’filter’ utiliza a variável ‘query’ para criar
um novo array com itens que contém este
conteúdo. O filtro verifica o conteúdo em todas
as propriedades de cada item do array;
busque pela palavra ‘next’ e ‘motorola’ comprove
que a busca varre não só a variável ‘name’, mas
também a propriedade ‘snippet’;
A função ‘filter’ possui diversas opções:
troque a variável query por um objeto com
{name: query}. Coloque uma negação em query
(‘!’) e veja o resultado;
substitua a variável query pela função
filterName, implemente a função no controller e
teste. A função deve filtrar pela propriedade
snippet;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
a função é executada n vezes, para cada item do array, em cada
execução, o item do array é passado como primeiro parâmetro (item)
dica...
dica...
43. Aplicação PhoneCat – filtrando repetidores
Acesse o arquivo em teste2escenarios.js .
Neste arquivo está a implementação de um teste
de integração que verifica a funcionalidade de
filtro;
Para executá-lo, abra o prompt de comando,
navegue até a pasta do projeto e digite o
comando: ‘npm run protractor’. O navegador é
aberto automaticamente e é possível visualizar o
teste sendo executado;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
44. Aplicação PhoneCat – filtrando repetidores
Coloque a variável {{query}} no <title> antes de
‘Google Phone Gallery’;
Crie um teste integrado conforme a imagem ao
lado; Veja que o valor não aparece pois a tag
<title> não está na região definida pelo escopo
do controller ‘PhoneListCtrl’ (<body>);
Mova o ng-controller=‘PhoneListCtrl’ para a tag
<html> e verifique novamente a página;
Para evitar mostrar {{query}} poucos
milisegundos após o carregamento da página,
utilize ng-bind-template;
Com o protector o modelo do Angular e o DOM
da aplicação fica acessível através da
propriedade ‘element’. Crie um <h3> na
app/index.html e inclua a variável {{query}} nele.
Crie um teste integrado para verificar se o valor
da query está presente no <h3>;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
dica...
45. Aplicação PhoneCat – vinculação dupla de dados
Execute o comando ‘git checkout –f step-4’ para
ir ao step-4 do tutorial. Acesse o arquivo
app/index.html;
Neste step foi incluído um combobox com
propriedade ‘orderProp’;
No filtro foi incluído ‘orderBy:orderProp’ ao filtro.
Este encadeamento permitirá que, além de filtrar,
o resultado do filtro também seja ordenado;
No controller, a propriedade ‘age’ também foi
adicionada ao array de telefones;
O valor padrão do campo de ordenação é ‘age’;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
46. Aplicação PhoneCat – vinculação dupla de dados
Foi incluído teste unitário para a nova variável.
Verifique o status da sua console de testes
unitários (npm test);
Foi incluído teste de integração que verifica a
ordenação. Lembrando que no momento ainda
não estamos utilizando dados remotos, portanto
não é possível preencher o array de telefones
com dados de teste para implementar o teste
integrado. Rode os testes (npm run protractor);
Reverta a ordenação adicionando um ‘-’ antes
dos valores do combobox. Porque apareceu uma
opção vazia no combobox?
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
47. objeto
Aplicação PhoneCat – xhr e injeção de dependências
Execute o comando ‘git checkout –f step-5’ para
ir ao step-5 do tutorial. Acesse o arquivo
app/phones/phones.json. Este arquivo possui
uma lista de telefones no formato JSON;
Abra o arquivo app/js/controllers.js. $http é um
serviço do Angular que permite realizar
requisições HTTP. Serviços são injetados no
controllers;
Uma requisição ‘get’ retorna um objeto ‘promise’
(compromisso) com um método ‘success’, desta
forma é possível tratar a resposta assíncrona;
Não é necessário fazer parse do json;
Serviços do Angular possuem prefixo ‘$’. Por
questões de minificação, o nome dos serviços é
apresentado no formato string;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
injetor
serviços
$http
$scope
...
fábricas instâncias
48. Aplicação PhoneCat – xhr e injeção de dependências
Acesse o arquivo test/unit/controllersSpec.js. O
método ‘inject’ é utilizado para injetar instâncias
dos serviços $rootScope, $controller e
$httpBackend na função beforeEach do Jasmine
(isolamento);
Neste método o escopo é inicializado e o
httpBackend é ‘mockado’, ou seja, é definido o
retorno esperado para a url acessada no
controller;
Adicione uma tag <pre>{{phones | filter:query |
orderBy:orderProp | json}}</pre> para visualizar
os telefones em formato JSON;
No callback do carregamento dos telefones,
limite o número de telefones a um único item
(use o método splice). Arrume o teste unitário;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
49. Aplicação PhoneCat – Links de Template e Imagens
Execute o comando ‘git checkout –f step-6’ para
ir ao step-6 do tutorial. Acesse o arquivo
app/index.html e verifique os links da lista de
telefones ‘#/phones/{{phone.id}}’;
Porque no caso da tag img utilizamos ng-src ao
invés de colocar as 2 chaves ‘{{}}’?
Abra o arquivo test/e2e/scenarios.js e verifique o
novo teste criado. Execute o teste ‘npm run
protractor’;
Substitua o ‘ng-src’ por um ‘src’ comum. Verifique
as requisições na ferramenta de desenvolvedor
do Chrome;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
50. Aplicação PhoneCat – Rotas e Visões Múltiplas
Execute o comando ‘git checkout –f step-7’ para
ir ao step-7 do tutorial. Acesse o arquivo
bower.json e verifique que foi incluído a
dependência “angular-route”. Rode ‘npm install’;
Inclua um link ‘<a href="#/phones">voltar</a>’ na
página app/partials/phone-detail.html. Navegue
na aplicação e verifique que o link no navegador
muda, mas a página não dá refresh;
Na função de config são definidos os
‘provedores’ de cada serviço, onde é possível
controlar a criação e comportamento em tempo
de execução do serviço;
Abra o arquivo app/js/app.js. Veja que o módulo
ngRoute e o módulo phonecatControllers são
definidos como dependências do módulo da
aplicação;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
objeto
injetor
serviços
$route
...
instâncias
$routeProvider
atalhos: factory, value
providers
O script precisa ser incluído no template layout <=
51. $route service
Aplicação PhoneCat – Rotas e Visões Múltiplas
Abra o app/index.html. Com o serviço de rotas, a
URL e o ng-view ficam vinculados.
Voltando ao arquivo app/js/app.js, verifique que
caso o link seja ‘/phones’, o ng-view renderiza
‘partials/phone-list.html’, caso o link seja
‘phones/:phoneId’, o ng-view renderiza
‘partials/phone-detail.html’;
O provedor de rotas é injetado no método de
configuração e as rotas são definidas no método
‘when’ do provider;
Note a rota ‘/phones/:phoneId’, informações
precedidas por ‘:’ são extraídas da URL e
agregadas ao parâmetro $routeParams
disponível no controller;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
Index.html
ngView
$routeProvider
Index.html
52. Aplicação PhoneCat – Rotas e Visões Múltiplas
Abra o arquivo app/js/controllers.js. Note que foi
criado um módulo chamado
‘phonecatControllers’ para armazenar os dois
controllers;
No controller ‘PhoneDetailCtrl’ é injetado o objeto
‘$routeParams’ que possui a propriedade
‘phoneId’ obtida via rota => querystring;
Acesse o arquivo de testes de integração.
Entenda e execute os testes (npm run
protractor). Em ‘should display placeholder...’,
troque ‘by.binding’ por ‘by.model’, porque não
funciona?
Inclua ‘{{orderProp}}’ em app/index.html;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
53. Aplicação PhoneCat – Mais templates
Execute o comando ‘git checkout –f step-8’ para
ir ao step-8 do tutorial. Na pasta app/phones/ é
possível verificar além do arquivo phones.json
outros arquivos, um para cada modelo de
telefone com detalhes em formato json;
Abra o arquivo ‘app/js/controllers.js’ e no
controller ‘PhoneDetailCtrl’ verifique a requisição
aos arquivos com detalhes dos telefones;
Abra o arquivo ‘app/partials/phone-detail.html’.
Veja que não é mais necessário especificar o ng-
controller. O mesmo é vinculado ao template
através da rota;
Abra o arquivo ‘test/unit/controllersSpec.js’ e
verifique novos testes para a visão de detalhes;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
54. Aplicação PhoneCat – Mais templates
Abra o arquivo ‘test/unit/controllersSpec.js’ e
verifique novos testes para a visão de detalhes.
Retire a linha que atribui valor para ‘phoneId’ e
execute o teste;
Abra o arquivo ‘test/e2e/scenarios.js’ e verifique
o teste ‘should display nexus-s page’;
Escreva um teste integrado que verifique que
são apresentadas 4 thumbnails na página de
detalhes do ‘Nexus S’;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
55. Aplicação PhoneCat – Filtros Customizados
Execute o comando ‘git checkout –f step-9’ para
ir ao step-9 do tutorial.
Abra o arquivo ‘app/js/filters.js’, verifique o filtro
‘checkmark’ que a partir de uma variável
booleana apresenta o caracter ✓ para verdadeiro
ou ✘para falso. Este arquivo deve ser incluído
na index.html para que funcione;
Abra o arquivo ‘app/partials/phone-detail.html’ e
veja o filtro customizado aplicado à 2 variáveis;
Abra o arquivo ‘test/unit/filtersSpec.js’ e verifique
as injeções de dependência. No caso de filtros, o
sufixo ‘Filter’ deve ser adicionado ao nome do
filtro quando injetado;
No arquivo ‘app/partials/phone-detail.html’,
experimente filtros como: uppercase, limitTo(
você pode encadear filtros);
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
56. Aplicação PhoneCat – Filtros Customizados
Execute o comando ‘git checkout –f step-10’ para
ir ao step-10 do tutorial.
Abra o arquivo ‘app/js/controllers.js’. A função
tratadora de eventos ‘setImage’ altera o valor da
propriedade ‘mainImageUrl’;
Abra o arquivo ‘app/partials/phone-detail.html’ e
verifique o atributo ‘ng-click’ que utiliza a função
‘setImage’ para tratar o evento de clique nas
imagens;
Abra o arquivo ‘test/e2e/scenarios.js’ e verifique
dois novos métodos que verificam este
mecanismo recém implementado;
Abra o arquivo ‘test/unit/controllersSpec.js’ e veja
a nova função ‘xyzPhoneData’. Retire o item
‘images’ e veja o teste falhar. Porque? Teste o
funcionamento do ‘ng-mouseover’;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
57. Aplicação PhoneCat – Rest
Execute o comando ‘git checkout –f step-11’ para
ir ao step-11 do tutorial. Abra o arquivo
bower.json e veja a nova referência
‘ngResource’(implementação RESTful);
Abra o arquivo ‘app/js/services.js’ onde foi
implementado o serviço de acesso a dados dos
telefones;
Abra o arquivo ‘app/js/app.js’ e visualize a nova
dependência: ‘phonecatServices’;
Abra o arquivo ‘app/js/controllers.js’ e verifique
os controllers ainda mais simplificados e sem
dependência do serviço $http;
Verifique as alterações nos testes unitários
(referências, código e funções usadas), ex:
toEqualData;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
O script precisa ser incluído no template layout <=
58. Aplicação PhoneCat – Aplicando Animações
Execute o comando ‘git checkout –f step-12’ para
ir ao step-12 do tutorial, Abra o arquivo
bower.json: jquery e ng-animate serão utilizados;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
O script precisa ser incluído no template layout <=
Muitas animações podem ser feitas em CSS3, mas coisas mais complexas precisam de Javascript. Para
entender animações em Angular é necessário primeiro entender ‘transitions’ em HTML5:
http://www.w3schools.com/css/tryit.asp?filename=trycss3_transition1
Transições também funcionam quando novas classes são incluídas via javascript:
http://jsfiddle.net/makiyamad/c7zsvyuo/6/
Transições funcionam toda vez que a(s) propriedade(s) monitorada(s) é(são) alterada(s), não
necessariamente porque uma classe foi alterada no elemento em questão:
http://jsfiddle.net/makiyamad/4s3posav/1/
59. Aplicação PhoneCat – Aplicando Animações
Veja o passo a passo de uma animação de ‘hide’
: https://docs.angularjs.org/guide/animations .
Veja o css utilizado:
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
60. Aplicação PhoneCat – Aplicando Animações
Abra o arquivo ‘app/partials/phone-list.html’, veja
a classe ‘phone-listing’ que foi adicionada ao
<li>;
Abra o arquivo ‘app/css/animations.css’. No caso
de animações no ng-repeat:
ng-enter aplicado quando um novo item é adicionado à
lista e renderizado na página;
ng-move aplicado quando o item é movido na lista;
ng-leave aplicado quando o item é removido da lista;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
este css define que nos 3
tipos de transições deve ser
executada uma animação
ex: o estado ng-leave é o
estado de animação
iniciada e o ng-enter-active
marca o estado final da
animação;
61. Aplicação PhoneCat – Aplicando Animações
Para simular o funcionamento inclua o serviço
$interval no controller PhoneListCtrl, aumente o
tempo da animação no css para 5 segundos e com
a ferramenta do desenvolvedor abra o console e
monitore.
Você verá algo semelhante à imagem abaixo, que
comprova que a sequência ng-enter > ng-enter-
active ou ng-leave > ng-leave-active é executada
antes de mostrar ou remover um elemento de um
repeater;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
62. Aplicação PhoneCat – Aplicando Animações
Também é possível realizar animações com
keyframe CSS3;
A animação é definida através da cláusula
‘@keyframes’ e utilizada na classe através do
atributo ‘animation’;
Para verificar esta animação clique em um
telefone na página principal de telefones, você
verá o efeito de fade-out e fade-in.
Na tela de detalhes de um telefone, clique na
seta de voltar do próprio navegador. É
impressionante verificar o fade-out e fade-in
também é executado e não há refresh;
Inclua o link voltar no phone-details.html, veja a
mesma animação ao clicar nele;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
63. Aplicação PhoneCat – Aplicando Animações
Abra o arquivo ‘app/js/animations.js’, veja que foi
criada uma animação para a classe ‘.phone’;
A animação animateup é disparada quando a
classe active é adicionada nos elementos com
classe phone;
A animação animatedown é disparada quando a
classe active é removida dos elementos com
classe phone;
fonte: tutorial angularjs (https://docs.angularjs.org/tutorial acessado em 05/01/2015)
-
active
active
-
-500
+ 0
+ 500
-500
+ 0
+ 500
active
-
-500
+ 0
+ 500
animateup
animatedown
64. Base de Conhecimento de Frameworks Web
Engenharia de Software
Arquitetura Web;
Método : programação
e técnicas de IHC;
65. Base de Conhecimento de Frameworks Web
Questão da Pesquisa
Grande volume de
frameworks web;
Curva de aprendizagem:
vale a pena?
Como classificar os
frameworks web e
promover o conhecimento?
Como tornar o processo de
seleção mais pragmático?
66. Base de Conhecimento de Frameworks Web
Objetivo
Classificar frameworks web e criar uma base
e conhecimento para a tomada de decisão;
67. Base de Conhecimento de Frameworks Web
Como participar?
Motivação
Hands-On : IHC e Estudo de Diversos Frameworks Web;
Caso tenha interesse deixe seu e-mail comigo;