O documento discute arquitetura de front-end em aplicações de larga escala. É destacado que tais aplicações requerem organização, modularização e otimização de código. O HTML, CSS e JavaScript devem ser estruturados em módulos independentes para facilitar a manutenção.
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
O objetivo da palestra é explicar como compreender os principios básicos de construção de aplicativos em php, e mostrar como é rápido o desenvolvimento com este framework.
Quando o objetivo é vender, uma modificação mínima pode impactar a taxa de conversão final. Para que um e-commerce atinja sua performance máxima, é necessário fazer com que os componentes, a equipe e mínimos detalhes funcionem em perfeita harmonia -- e o front-end é um deles.
Nesta palestra, mostrei os desafios enfrentados pelo time de engenharia de Front-end da Baby.com.br: como trabalhar com uma equipe com vários desenvolvedores, gerando componentes auto-contidos, testáveis e escaláveis, mantendo a melhor performance possível, sem perder o padrão de qualidade.
Fonte das métricas: http://blog.bizelo.com/blog/2012/10/18/infographic-shopping-cart-abandonment-rates/
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
O objetivo da palestra é explicar como compreender os principios básicos de construção de aplicativos em php, e mostrar como é rápido o desenvolvimento com este framework.
Quando o objetivo é vender, uma modificação mínima pode impactar a taxa de conversão final. Para que um e-commerce atinja sua performance máxima, é necessário fazer com que os componentes, a equipe e mínimos detalhes funcionem em perfeita harmonia -- e o front-end é um deles.
Nesta palestra, mostrei os desafios enfrentados pelo time de engenharia de Front-end da Baby.com.br: como trabalhar com uma equipe com vários desenvolvedores, gerando componentes auto-contidos, testáveis e escaláveis, mantendo a melhor performance possível, sem perder o padrão de qualidade.
Fonte das métricas: http://blog.bizelo.com/blog/2012/10/18/infographic-shopping-cart-abandonment-rates/
Hibernate efetivo (IA-2014 / Disturbing the Mind)Rafael Ponte
Mesmo anos após o lançamento do Hibernate ainda é fácil encontrar projetos utilizando o framework de maneira ineficiente, podendo leva-lo a problemas sérios de performance ou até inviabilizar a aplicação. O uso não efetivo do Hibernate está intimamente ligado a erros comuns e más práticas em sua utilização, que vão desde pool de conexões, select n+1, configuração de cache, batch-size até o uso indevido do cache level 1 em processamentos batch e o tratamento de LazyInitializationException.
Palestra ministrada no evento Disturbing the Mind 2014 do Instituto Atlântico (IA).
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiamiMasters
Zeno Rocha, Principal Developer Advocate da Liferay fala sobre Web APIs que você provavelmente não sabia que existiam no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
Mesmo anos após o lançamento do Hibernate ainda é fácil encontrar projetos utilizando o framework de maneira ineficiente, podendo leva-lo a problemas sérios de performance ou até inviabilizar a aplicação. O uso não efetivo do Hibernate está intimamente ligado a erros comuns e más práticas em sua utilização, que vão desde pool de conexões, select n+1, configuração de cache, batch-size até o uso indevido do cache level 1 em processamentos batch e o tratamento de LazyInitializationException.
Palestra ministrada no evento COALTI 2014 a convite do ALJUG (Grupo de usuários Java de Alagoas).
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Rafael Ponte
Toda tecnologia tende a trazer consigo um novo paradigma de como desenvolver partes específicas de software, contudo, algumas novas práticas nem sempre são entendidas, e algumas vezes antigas práticas permanecem dentro do novo paradigma tornando-se assim maus hábitos, e com JSF não seria diferente.
Aqui será apresentado 10 discussões sobre os maus hábitos mais comuns entre os desenvolvedores JSF, hábitos encontrados não somente entre iniciantes, mas também entre alguns desenvolvedores mais experientes, e por sua vez será apresentado soluções para cada um deles.
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereJuliano Martins
Esta apresentação contem um passo a passo mostrando a criação de um Web Service RESTFul utilizando a API Jersey no Eclipse, rodando nos servidores de aplicação Tomcat, JBoss e Websphere
Assim como as Migrations no mundo Ruby On Rails, o mundo Java também possui alternativas para evoluir o banco de dados de uma aplicação. Aprenda como você e sua equipe podem evoluir de maneira iterativa e incremental seu banco de dados – já em produção – durante a criação da sua aplicação.
Serão apresentados os problemas e desafios mais comuns de não utilizar uma ferramenta de migrations para gerenciar a evolução do banco de dados, e os benefícios que esta ferramenta traz em ambiente de desenvolvimento e produção.
Também serão apresentados opções de migrations para Java, suas principais diferenças e a experiência do palestrante ao adotar uma dessas ferramentas em projetos com bancos de dados criados do zero, e também projetos que precisam manter o legado.
Palestra que apresentei no FISL, para dúvidas, criticas ou sugestões enviem emails para FISL AT urubatan DOT com DOT br.
Todos os comentários são bem vindos.
Na palestra falo bastante sobre PhoneGap e um pouco sobre Titanium Mobile.
Migrations for Java (Javou #4 - JavaCE)Rafael Ponte
Assim como as Migrations no mundo Ruby On Rails, o mundo Java também possui alternativas para evoluir o banco de dados de uma aplicação. Aprenda como você e sua equipe podem evoluir de maneira iterativa e incremental seu banco de dados – já em produção – durante a criação da sua aplicação.
Serão apresentados os problemas e desafios mais comuns de não utilizar uma ferramenta de migrations para gerenciar a evolução do banco de dados, e os benefícios que esta ferramenta traz em ambiente de desenvolvimento e produção.
Também serão apresentados opções de migrations para Java, suas principais diferenças e a experiência do palestrante ao adotar uma dessas ferramentas em projetos com bancos de dados criados do zero, e também projetos que precisam manter o legado.
Java e Cloud Computing
A computação nas nuvens é uma tendência do mercado, aprenda como desenvolver sobre ela utilizando plataforma java. Esta oficina traz uma visão geral sobre conceitos e arquitetura da cloud computing. Diferenças entre plataformas como Amazon Web Services (AWS), Google Application Engine (GAE). Durante a oficina estaremos desenvolvendo uma aplicação java e disponibilizando a mesma na GAE. Alem disso vamos explorar alguns recursos específicos do serviço do Google, como o repositório de dados NoSQL.
Programação do mini-curso
08:00
- Introdução a Computação em nuvem
- Fundamentos em computação em nuvem
- Níveis de serviços em nuvem
- Google App Engine
- Ambiente de execução da App Engine
- Prática 1
9:30 INTERVALO
10:00
- Ambiente de Desenvolvimento da App Engine
- Ambiente de Produção da App Engine
- Colocando uma aplicação em produção
- Prática 2
ALMOÇO
13:30
- NoSQL
- Big Table
- Acesso a dados
- Prática 3
15:30 INTERVALO
16:00
- API e Serviços da AppEngine
- Pratica 4
- Outros Recursos da App Engine e Dicas
Hibernate efetivo (IA-2014 / Disturbing the Mind)Rafael Ponte
Mesmo anos após o lançamento do Hibernate ainda é fácil encontrar projetos utilizando o framework de maneira ineficiente, podendo leva-lo a problemas sérios de performance ou até inviabilizar a aplicação. O uso não efetivo do Hibernate está intimamente ligado a erros comuns e más práticas em sua utilização, que vão desde pool de conexões, select n+1, configuração de cache, batch-size até o uso indevido do cache level 1 em processamentos batch e o tratamento de LazyInitializationException.
Palestra ministrada no evento Disturbing the Mind 2014 do Instituto Atlântico (IA).
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiamiMasters
Zeno Rocha, Principal Developer Advocate da Liferay fala sobre Web APIs que você provavelmente não sabia que existiam no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
Mesmo anos após o lançamento do Hibernate ainda é fácil encontrar projetos utilizando o framework de maneira ineficiente, podendo leva-lo a problemas sérios de performance ou até inviabilizar a aplicação. O uso não efetivo do Hibernate está intimamente ligado a erros comuns e más práticas em sua utilização, que vão desde pool de conexões, select n+1, configuração de cache, batch-size até o uso indevido do cache level 1 em processamentos batch e o tratamento de LazyInitializationException.
Palestra ministrada no evento COALTI 2014 a convite do ALJUG (Grupo de usuários Java de Alagoas).
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Rafael Ponte
Toda tecnologia tende a trazer consigo um novo paradigma de como desenvolver partes específicas de software, contudo, algumas novas práticas nem sempre são entendidas, e algumas vezes antigas práticas permanecem dentro do novo paradigma tornando-se assim maus hábitos, e com JSF não seria diferente.
Aqui será apresentado 10 discussões sobre os maus hábitos mais comuns entre os desenvolvedores JSF, hábitos encontrados não somente entre iniciantes, mas também entre alguns desenvolvedores mais experientes, e por sua vez será apresentado soluções para cada um deles.
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereJuliano Martins
Esta apresentação contem um passo a passo mostrando a criação de um Web Service RESTFul utilizando a API Jersey no Eclipse, rodando nos servidores de aplicação Tomcat, JBoss e Websphere
Assim como as Migrations no mundo Ruby On Rails, o mundo Java também possui alternativas para evoluir o banco de dados de uma aplicação. Aprenda como você e sua equipe podem evoluir de maneira iterativa e incremental seu banco de dados – já em produção – durante a criação da sua aplicação.
Serão apresentados os problemas e desafios mais comuns de não utilizar uma ferramenta de migrations para gerenciar a evolução do banco de dados, e os benefícios que esta ferramenta traz em ambiente de desenvolvimento e produção.
Também serão apresentados opções de migrations para Java, suas principais diferenças e a experiência do palestrante ao adotar uma dessas ferramentas em projetos com bancos de dados criados do zero, e também projetos que precisam manter o legado.
Palestra que apresentei no FISL, para dúvidas, criticas ou sugestões enviem emails para FISL AT urubatan DOT com DOT br.
Todos os comentários são bem vindos.
Na palestra falo bastante sobre PhoneGap e um pouco sobre Titanium Mobile.
Migrations for Java (Javou #4 - JavaCE)Rafael Ponte
Assim como as Migrations no mundo Ruby On Rails, o mundo Java também possui alternativas para evoluir o banco de dados de uma aplicação. Aprenda como você e sua equipe podem evoluir de maneira iterativa e incremental seu banco de dados – já em produção – durante a criação da sua aplicação.
Serão apresentados os problemas e desafios mais comuns de não utilizar uma ferramenta de migrations para gerenciar a evolução do banco de dados, e os benefícios que esta ferramenta traz em ambiente de desenvolvimento e produção.
Também serão apresentados opções de migrations para Java, suas principais diferenças e a experiência do palestrante ao adotar uma dessas ferramentas em projetos com bancos de dados criados do zero, e também projetos que precisam manter o legado.
Java e Cloud Computing
A computação nas nuvens é uma tendência do mercado, aprenda como desenvolver sobre ela utilizando plataforma java. Esta oficina traz uma visão geral sobre conceitos e arquitetura da cloud computing. Diferenças entre plataformas como Amazon Web Services (AWS), Google Application Engine (GAE). Durante a oficina estaremos desenvolvendo uma aplicação java e disponibilizando a mesma na GAE. Alem disso vamos explorar alguns recursos específicos do serviço do Google, como o repositório de dados NoSQL.
Programação do mini-curso
08:00
- Introdução a Computação em nuvem
- Fundamentos em computação em nuvem
- Níveis de serviços em nuvem
- Google App Engine
- Ambiente de execução da App Engine
- Prática 1
9:30 INTERVALO
10:00
- Ambiente de Desenvolvimento da App Engine
- Ambiente de Produção da App Engine
- Colocando uma aplicação em produção
- Prática 2
ALMOÇO
13:30
- NoSQL
- Big Table
- Acesso a dados
- Prática 3
15:30 INTERVALO
16:00
- API e Serviços da AppEngine
- Pratica 4
- Outros Recursos da App Engine e Dicas
Palestra sobre Backbone.js ministrada no LambdaDay, evento da Lambda3.
http://day.lambda3.com.br
Código do exemplo em:
https://github.com/Lambda3/lambdaday2013-backbonejs
Mini Curso apresentado no Unisul TechDay - 26/11/2011- Sistemas WEB em Java utilizando as tecnologias Hibernate, JSF, Facelets e Richfaces - Rogério Napoleão Júnior
Uma visão crítica sobre o hype da vez. Esta palestra tem como norte tirar o ruído e fundamentar (inclusive com exemplos) o que realmente importa neste papo de componentes.
http://frontinpoa.com.br/2014
Video: https://www.youtube.com/watch?v=KhSDReAefx0
Uma palestra para explorar o Google App Engine (GAE), uma plataforma de desenvolvimento e hospedagem de aplicações web na nuvem. Aplicativos fáceis de criar, manter e escalar.
Palestrante: Carlos Duarte do Nascimento
Matemático pelo IME/USP e Gerente de Produto no Apontador, faz "artesanato" de software há 20 anos, defendendo plataformas e conteúdo livres.
[Video: http://www.youtube.com/watch?feature=player_detailpage&v=nzo9dcCMi-4#t=1169s ] Palestra que introduz o desenvolvimento de aplicativos na plataforma do Google de forma pragmática, apresentada na 5a. edição (2012) do Campus Party (#cpbr5)
5. Na minha visão, aplicações JavaScript
de larga escala são aplicações não-
triviais que requerem um esforço
significante de manutenção por parte do
desenvolvedor, onde a maior parte do
trabalho de manipulação de dados e
visualização é atribuída ao navegador.
Addy Osmani
Developer Programs Engineer @ Google
6. Aplicações com front-end de larga
escala são aplicações não-triviais que
requerem um esforço significante de
manutenção por parte do
desenvolvedor, onde organização,
modularização, otimização e reutilização
de código são cruciais.
Eduardo Shiota Yasuda
Loves cat videos on Youtube
9. O CSS de um blog é geralmente simples, com algumas centenas de linhas de código,
concentrado em um único arquivo. Não é tão difícil de manter.
10. Mesma coisa para o JS: geralmente um arquivo e alguns plugins, e tudo sendo chamado em
uma única função auto-executável.
11. O tema Twenty Ten do Wordpress mostra uma estrutura básica de blog: alguns templates,
um CSS. Provavelmente terá um único arquivo de JavaScript também.
44. /**
Loader constructor
@params {Function} placement Function that determines the loader's placement
@constructor
**/
ns("EDEN.ui.Loader", function (placement) {
if (!(this instanceof EDEN.ui.Loader)) {
return new EDEN.ui.Loader(placement);
}
this.frame = 1;
this.framesQty = 8;
this.stack = [];
this.animating = false;
this.$loader = $("<div class='loader'><b> </b></div>");
this.$renderer = this.$loader.find("b");
this.placement = placement;
this.init();
});
45. /**
Animation speed (in frames per second)
@property fps
@type Number
@default 20
**/
EDEN.ui.Loader.prototype.fps = 20;
/**
Fading speed
@property fadeSpeed
@type Number
@default 150
**/
EDEN.ui.Loader.prototype.fadeSpeed = 150;
46. /**
Inits the loader by inserting it into the DOM. If a placement argument
wasn't passed to the constructor, uses a generic placement.
@method init
**/
EDEN.ui.Loader.prototype.init = function () {
if (!this.placement) {
this.placement = function ($loader) {
$loader.appendTo($("body"));
};
}
this.placement.call(this, this.$loader);
};
47. /**
Starts the loader by fading in and starting the animation.
If there are multiple processes, stacks the requests.
@method start
**/
EDEN.ui.Loader.prototype.start = function () {
this.stack.push((new Date()).getTime());
if (this.stack.length === 1) {
this._startAnimation();
}
};
/**
Stops the loader by fading out and stoping the animation
If there are any processes pending, pops the requests
until it can actually stop.
@method stop
**/
EDEN.ui.Loader.prototype.stop = function () {
this.stack.pop();
if (!this.stack.length) {
this._stopAnimation();
}
};
48. /**
Starts the loader animation
@private
**/
EDEN.ui.Loader.prototype._startAnimation = function () {
this.animating = true;
this._renderAnimation();
};
/**
Stops the loader animation
@private
**/
EDEN.ui.Loader.prototype._stopAnimation = function () {
this.animating = false;
};
49. /**
Loops the animation, calling itself according to the fps
@private
**/
EDEN.ui.Loader.prototype._renderAnimation = function () {
if (!this.animating) { return true; }
this._draw();
setTimeout(this._renderAnimation.bind(this), 1000 / this.fps);
};
/**
Draws the animation
@private
**/
EDEN.ui.Loader.prototype._draw = function () {
this.$renderer.removeClass().addClass("f" + this.frame);
this.frame = this.frame + 1 > this.framesQty ? 1 : this.frame + 1;
};
/**
Returns the animation stack.
@return Array
@private
**/
EDEN.ui.Loader.prototype._getAnimationStack = function () {
return this.stack;
};
51. it("appends the loader to body as a default", function () {
var loader = new Loader();
expect($("body").find(".loader").length).toEqual(1);
});
it("appends the loader through an argument function", function () {
var loader = new Loader(function ($loader) {
$("#loader-placeholder").append($loader);
});
expect($("#loader-placeholder").find(".loader").length).toEqual(1);
});
it("stops the animation if stack is empty", function () {
loader.start();
loader.stop();
expect($(".loader").data("spinning")).not.toBeTruthy();
});
57. //my/shirt.js now has some dependencies, a cart and inventory
//module in the same directory as shirt.js
define(["./cart", "./inventory"], function(cart, inventory) {
//return an object to define the "my/shirt" module.
return {
color: "blue",
size: "large",
addToCart: function() {
inventory.decrement(this);
cart.add(this);
}
};
}
);