O documento discute princípios de programação em JavaScript, incluindo comentários, nomeação de variáveis e funções, módulos, namespaces e o princípio SOLID de ter classes/módulos com uma única responsabilidade. Ele recomenda escrever código conciso, claro e fácil de ler para facilitar a manutenção no futuro.
Slides do segundo dia do Workshop (intensivo :) ) sobre Introdução à Programação de Dispositivos Móveis (Google Android, Apple iPhone, iPod Touch e iPad)
Parte inicial do aprendizado com Objective-C, a linguagem para a programação nativa de aplicativos para iOS.
Nesta primeira parte, serve mais como apresentação do TO-DO lista de algumas funcionalidades básicas.
É crucial ter noção sobre Programação Orientada à Objetos (POO).
Palestra sobre Javascript realizada no primeiro ciclo do Plano de Geração de Conhecimento realizado em outubro de 2013, no LEMAF - Universidade Federal de Lavras.
O Plano de geração de conhecimento é um trabalho realizado para tutoria de desenvolvedores com estagiários no estudo de tecnologias, com o objetivo de disseminação de conhecimento.
Palestra ministrada por Fernando Simeone, Carlos Eduardo Chessi Melo, Eduardo Assis da Silva e José Henrique Santos Andrade .
### Atualização 20/02/2015
Palestra melhorada, com algumas correções. Reapresentada por Fernando Simeone e Carlos Eduardo Chessi Melo na SETI (Semana de Tecnologia da Informação) na Universidade Federal de Lavras.
Evolução e futuro do uso de paradigmas no JavaScriptJean Carlo Emer
Uma palestra sobre os paradigmas trazidos por bibliotecas e framework como Backbone.js, Angular.js e React. Conheceremos os principais conceitos por trás de programação imperativa, funcional e reativa. Por fim, teremos uma visão clara do quanto evoluímos e o que ainda está por vir na forma e uso da linguagem.
Link dos slides: https://viniciuscampitelli.com/slides/php-fora-da-web
O PHP foi inicialmente feito para a Web, mas também podemos utilizá-lo para criar CLI scripts e até mesmo daemons. É lógico que existem linguagens focadas para isso, mas em alguns cenários podemos aproveitar os códigos PHP já existentes no backend e também a experiência dos programadores da equipe. Iremos ver como lidar com argumentos para scripts e roteá-los para comandos, como criar mecanismos de controle e execução de processos externos e em background e ter códigos que sejam reaproveitáveis entre ambientes.
Slides do segundo dia do Workshop (intensivo :) ) sobre Introdução à Programação de Dispositivos Móveis (Google Android, Apple iPhone, iPod Touch e iPad)
Parte inicial do aprendizado com Objective-C, a linguagem para a programação nativa de aplicativos para iOS.
Nesta primeira parte, serve mais como apresentação do TO-DO lista de algumas funcionalidades básicas.
É crucial ter noção sobre Programação Orientada à Objetos (POO).
Palestra sobre Javascript realizada no primeiro ciclo do Plano de Geração de Conhecimento realizado em outubro de 2013, no LEMAF - Universidade Federal de Lavras.
O Plano de geração de conhecimento é um trabalho realizado para tutoria de desenvolvedores com estagiários no estudo de tecnologias, com o objetivo de disseminação de conhecimento.
Palestra ministrada por Fernando Simeone, Carlos Eduardo Chessi Melo, Eduardo Assis da Silva e José Henrique Santos Andrade .
### Atualização 20/02/2015
Palestra melhorada, com algumas correções. Reapresentada por Fernando Simeone e Carlos Eduardo Chessi Melo na SETI (Semana de Tecnologia da Informação) na Universidade Federal de Lavras.
Evolução e futuro do uso de paradigmas no JavaScriptJean Carlo Emer
Uma palestra sobre os paradigmas trazidos por bibliotecas e framework como Backbone.js, Angular.js e React. Conheceremos os principais conceitos por trás de programação imperativa, funcional e reativa. Por fim, teremos uma visão clara do quanto evoluímos e o que ainda está por vir na forma e uso da linguagem.
Link dos slides: https://viniciuscampitelli.com/slides/php-fora-da-web
O PHP foi inicialmente feito para a Web, mas também podemos utilizá-lo para criar CLI scripts e até mesmo daemons. É lógico que existem linguagens focadas para isso, mas em alguns cenários podemos aproveitar os códigos PHP já existentes no backend e também a experiência dos programadores da equipe. Iremos ver como lidar com argumentos para scripts e roteá-los para comandos, como criar mecanismos de controle e execução de processos externos e em background e ter códigos que sejam reaproveitáveis entre ambientes.
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno RochaiMasters
Bruno Rocha é Desenvolvedor NodeJS no Walmart, apaixonado por boas práticas e design patterns. Em sua talk, falou sobre boas práticas em JavaScriptQuery
Backbone.js + Rails - Front-end e back-end conectadosHenrique Gogó
Como construir aplicações com front-end atualizável em tempo real sem precisar submeter formulário e atualizar a tela à medida que o servidor atualizar. Backbone.js com Ruby on Rails é a casadinha perfeita.
Node.js - #3 - Global Objects - Rodrigo BranasRodrigo Branas
Nesta apresentação, vamos falar sobre os Global Objects.
Não deixe de assistir a série no YouTube, em: https://www.youtube.com/watch?v=KtDwdoxQL4A&list=PLQCmSnNFVYnTFo60Bt972f8HA4Td7WKwq
O padrão Event-based Asynchronous Pattern (EAP) corresponde a uma evolução do padrão IAsyncResult Pattern ou Asynchronous Programming Model (APM) para programação assíncrona na plataforma .NET.
Apresentação feita no Latinoware 2010 apresentando o conceito de Dependency Injection no PHP 5.3.
Esta palestra é uma tradução e simplificação da palestra Dependency Injection in PHP 5.3 de Fabien Potencier.
Programação funcional em JavaScript: como e por quê?Arthur Xavier
JavaScript é uma linguagem complexa e perigosa. A ausência de tipagem estática e duck typing, por exemplo, tornam difícil pensar de forma segura sobre as aplicações e garantir um nível mínimo de corretude e sustentabilidade. Programação funcional é um paradigma de programação que pode ser aplicado com sucesso à linguagem para minimizar estes problemas ao mesmo tempo que torna o código mais simples e aumenta o poder de abstração do desenvolvedor.
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno RochaiMasters
Bruno Rocha é Desenvolvedor NodeJS no Walmart, apaixonado por boas práticas e design patterns. Em sua talk, falou sobre boas práticas em JavaScriptQuery
Backbone.js + Rails - Front-end e back-end conectadosHenrique Gogó
Como construir aplicações com front-end atualizável em tempo real sem precisar submeter formulário e atualizar a tela à medida que o servidor atualizar. Backbone.js com Ruby on Rails é a casadinha perfeita.
Node.js - #3 - Global Objects - Rodrigo BranasRodrigo Branas
Nesta apresentação, vamos falar sobre os Global Objects.
Não deixe de assistir a série no YouTube, em: https://www.youtube.com/watch?v=KtDwdoxQL4A&list=PLQCmSnNFVYnTFo60Bt972f8HA4Td7WKwq
O padrão Event-based Asynchronous Pattern (EAP) corresponde a uma evolução do padrão IAsyncResult Pattern ou Asynchronous Programming Model (APM) para programação assíncrona na plataforma .NET.
Apresentação feita no Latinoware 2010 apresentando o conceito de Dependency Injection no PHP 5.3.
Esta palestra é uma tradução e simplificação da palestra Dependency Injection in PHP 5.3 de Fabien Potencier.
Programação funcional em JavaScript: como e por quê?Arthur Xavier
JavaScript é uma linguagem complexa e perigosa. A ausência de tipagem estática e duck typing, por exemplo, tornam difícil pensar de forma segura sobre as aplicações e garantir um nível mínimo de corretude e sustentabilidade. Programação funcional é um paradigma de programação que pode ser aplicado com sucesso à linguagem para minimizar estes problemas ao mesmo tempo que torna o código mais simples e aumenta o poder de abstração do desenvolvedor.
Slides do segundo dia do Workshop (intensivo :) ) sobre Introdução à Programação de Dispositivos Móveis (Google Android, Apple iPhone, iPod Touch e iPad)
Workshop de introdução ao rápida a linguagem JavaScript, a plataforma Node.js e o framework Socket.IO.
Nesta talk é apresentado suas principais características, de forma prática, contando um exercício sobre orientação a objetos com javascript e um exercício sobre criação de um microblog realtime usando Socket.IO.
Esta apresentação integra o conjunto de materiais didáticos do curso a distância Desenvolvimento de Aplicativos Desktop em Java Aplicando Padrões de Projeto.
O fato de existirem inúmeras linguagens que rodam na JVM já não é novidade nenhuma, principalmente com o sucesso de Scala e JRuby. Seguindo a linha das principais linguagens do mercado, Groovy apresenta-se como uma ótima alternativa para aqueles que querem tentar uma nova linguagem, mas ainda gostam na sintaxe Java. Ganhando popularidade nos últimos tempos, Groovy é uma linguagem dinâmica inspirada em Python, Ruby e Smalltalk que pode ampliar e muito a produtivade em seu dia-a-dia.
Quanto tempo você leva para fazer um site utilizando as principais ferramentas Java? Pois em Grails isso pode ser ainda mais rápido! Inspirado no framework Ruby on Rails, Grails tem ganhado popularidade entre as opções para desenvolvimento web devido ao seu alto grau de integração com a plataforma Java, e adicionando a isso conceitos como interceptors, tag libs, Groovy Servers Pages (GSP), além de uma grande variedade de plugins para facilitar ainda mais o desenvolvimento web.
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Backbone.js - A espinha dorsal de aplicações webHenrique Gogó
Uma ferramenta completa para construção de aplicações web complexas com modelos de view, bindings, eventos e coleções de maneira elegante e organizada. Conecte facilmente sua camada de apresentação com seu servidor usando REST e requisições AJAX.
As novas APIs da web tem possibilitado grandes feitos para o Javascript. Essa palestra aborda tratamento de sinais que vão desde a criação de filtros de imagem, passando por distorções de áudio (e pedais de guitarra!), até compressão de streams! Vamos falar sobre as barreiras que a linguagem quebra diariamente!
Nowadays we have native options to deal with media signals on javascript! How can we use the available APIs to process it? This talk is about amazing uses to Web Audio API and the Video tag like sampling, quantization, filtering, etc. Can we synthesize guitar effects?
Nessa palestra abordei algumas APIs que considero promissoras no HTML5 como acessá-las com o Javascript tornando a experiência do usuário interessante.
Como ondas eletromagnéticas interagem na camada física em diferentes meios, como se transporta informação e os motivos pelos quais não podemos ter mais velocidade aumentando a frequência deliberadamente.
8. function validate (str) {
return /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I
{0,3})$/.test(str);
}
9. “É melhor não ter comentários e/ou
documentação do que tê-los de forma
ruim/errônea/desatualizada”
http://blog.millermedeiros.com/always-comment-weird-things/
10. Variáveis / Métodos
“Mais curto não é sempre melhor”
(speaking Javascript)
regularUser melhor que rglrUsr
16. var anonymBtn = document.querySelector('#anonym');
var declaredBtn = document.querySelector('#declared');
var myHandler = function () {
console.log('declared');
var a = 1 + b;
}
anonymBtn.addEventListener('click', function () {
console.log('anonym');
var a = 1 + b;
});
declaredBtn.addEventListener('click', myHandler, false);
17.
18. Namespacing
Nomear coisas não é fácil...
http://javascriptweblog.wordpress.com/2010/12/07/namespacing-in-javascript/
http://michaux.ca/articles/javascript-namespacing
19.
20. // Globais Everywhere
var User = function () {}
var Company = function () {}
// Tudo certo para dar errado...
21. // Uma global para a todos
governar
var MYGLOBAL = MYGLOBAL || {};
MYGLOBAL.User = {};
MYGLOBAL.User.Admin = function () {};
MYGLOBAL.Company = function () {};
29. var Battery = function () {
this.init = function (level) {
this.level = level;
}
}
module.exports = Battery;
30. var Robot = function () {
this.init = function (battery) {
this.battery = battery;
}
this.charge = function () {
this.battery.level++;
console.log(this.battery.level);
}
}
module.exports = Robot;
31. var Battery = require('./battery.js');
var Robot = require('./robot.js');
var source = new Battery();
source.init(80);
var robot = new Robot();
robot.init(source);
robot.charge(); // 81
robot.charge(); // 82
33. var Battery = function () {
this.init = function (level) {
this.level = level;
}
}
export { Battery }
34. var Robot = function () {
this.init = function (battery) {
this.battery = battery;
}
this.charge = function () {
this.battery.level++;
console.log(this.battery.level);
}
}
export { Robot }
35. import { Battery } from 'battery.js';
import { Robot } from 'robot.js';
var source = new Battery();
source.init(80);
var robot = new Robot();
robot.init(source);
robot.charge();
robot.charge();
37. Single Responsability Principle
“Uma classe/módulo deve ter somente
uma razão para mudar”
http://freshbrewedcode.com/derekgreer/2011/12/08/solid-javascript-single-responsibility-
principle/
38.
39. var SearchWidget = function () {
return {
init: function (el) {
this.el = el;
this.input = this.el.find('.search-input');
},
onData: function (data) {
this.renderList(data);
},
renderList: function (users) {
var str = '';
users.forEach(function (user) {
str += '<li>' + user.name + '</li>';
});
$('.userList').html(str);
},
40. get: function (query) {
$.ajax({
url: 'users.json',
data: {
query: query
}
}).done(this.onData.bind(this));
},
bindClick: function () {
$('.go-button').on('click', function () {
var query = this.input.val();
this.get(query);
}.bind(this));
}
}
}