O documento discute o uso da tecnologia Node.js para construir uma API de pagamentos. Ele explica porque Node.js é adequado para este tipo de aplicação devido à sua natureza assíncrona e orientada a eventos, permitindo lidar com muitas requisições simultâneas de forma escalável. O documento também discute problemas comuns de Node.js e como evitá-los, além de abordar tópicos como infraestrutura, testes e monitoramento.
O documento discute os benefícios e desafios do uso da plataforma Node.js para construir um gateway de pagamentos online. Node.js é adequado para este caso devido à natureza assíncrona e de I/O intensiva da aplicação. Entretanto, o código assíncrono em Node.js pode se tornar complexo e causar problemas, e a plataforma ainda está em desenvolvimento. Abordagens como testes, padronização e microserviços podem ajudar a superar esses desafios.
Este documento apresenta uma introdução ao Elasticsearch, cobrindo sua visão, histórico, conceitos-chave, instalação, buscas, clientes, arquitetura e considerações sobre desempenho. É dado ênfase aos processos de indexação, busca, clientes Java e arquitetura distribuída do Elasticsearch.
How to use Elasticsearch Analyzers by EmergiNetEmergiNet
O documento discute como criar analisadores personalizados no Elasticsearch para melhorar as buscas de texto completo. Ele explica os conceitos básicos de arrumação, quebra e normalização de tokens e como aplicar filtros como remoção de stopwords e stemming. Também aborda problemas comuns como ordenação, agregação e otimização para mecanismos de busca e fornece um exemplo completo de mapeamento de campo com subcampos.
A palestrante apresentou as principais novidades do MySQL 5.7 em 3 frases:
1) O MySQL 5.7 trouxe melhorias no suporte a operações DDL em tempo real, armazenamento de dados JSON, colunas geradas e o novo schema "sys" para monitoramento.
2) As colunas geradas permitem indexar valores calculados sem ocupar espaço em disco, enquanto colunas armazenadas indexam esses valores de forma armazenada.
3) O schema "sys" fornece visões para monitorar consultas caras, índices não utiliz
O documento apresenta os principais conceitos do MongoDB, incluindo sua estrutura de banco de dados não-relacional baseado em documentos JSON e coleções, além de funcionalidades como queries, indexação, agregação e operações CRUD utilizando o Mongo Shell.
Neste talk você vai aprender alguns hacks de JavaScript úteis na prática. Entendendo quando e como usá-las de forma que torne suas aplicações JavaScript/Meteor/Node.js mais rápidas.
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.
O documento discute os benefícios e desafios do uso da plataforma Node.js para construir um gateway de pagamentos online. Node.js é adequado para este caso devido à natureza assíncrona e de I/O intensiva da aplicação. Entretanto, o código assíncrono em Node.js pode se tornar complexo e causar problemas, e a plataforma ainda está em desenvolvimento. Abordagens como testes, padronização e microserviços podem ajudar a superar esses desafios.
Este documento apresenta uma introdução ao Elasticsearch, cobrindo sua visão, histórico, conceitos-chave, instalação, buscas, clientes, arquitetura e considerações sobre desempenho. É dado ênfase aos processos de indexação, busca, clientes Java e arquitetura distribuída do Elasticsearch.
How to use Elasticsearch Analyzers by EmergiNetEmergiNet
O documento discute como criar analisadores personalizados no Elasticsearch para melhorar as buscas de texto completo. Ele explica os conceitos básicos de arrumação, quebra e normalização de tokens e como aplicar filtros como remoção de stopwords e stemming. Também aborda problemas comuns como ordenação, agregação e otimização para mecanismos de busca e fornece um exemplo completo de mapeamento de campo com subcampos.
A palestrante apresentou as principais novidades do MySQL 5.7 em 3 frases:
1) O MySQL 5.7 trouxe melhorias no suporte a operações DDL em tempo real, armazenamento de dados JSON, colunas geradas e o novo schema "sys" para monitoramento.
2) As colunas geradas permitem indexar valores calculados sem ocupar espaço em disco, enquanto colunas armazenadas indexam esses valores de forma armazenada.
3) O schema "sys" fornece visões para monitorar consultas caras, índices não utiliz
O documento apresenta os principais conceitos do MongoDB, incluindo sua estrutura de banco de dados não-relacional baseado em documentos JSON e coleções, além de funcionalidades como queries, indexação, agregação e operações CRUD utilizando o Mongo Shell.
Neste talk você vai aprender alguns hacks de JavaScript úteis na prática. Entendendo quando e como usá-las de forma que torne suas aplicações JavaScript/Meteor/Node.js mais rápidas.
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.
1) O documento apresenta uma introdução sobre MongoDB com PHP, incluindo links relevantes e casos de uso de empresas que utilizam MongoDB em produção.
2) É descrito os principais tipos de bancos de dados NoSQL (key-value stores, wide column stores, document stores, graph stores e column oriented stores), com exemplos de cada um.
3) São apresentados comandos e conceitos básicos para trabalhar com MongoDB via PHP, como conexão, inserção, consulta, alteração e exclusão de dados.
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).
O documento discute a integração do MongoDB com PHP. Ele explica como instalar o driver MongoDB para PHP em diferentes sistemas operacionais e como realizar operações básicas como conexão, seleção de banco de dados e coleção, inserção e busca de dados. Também apresenta alguns frameworks PHP que oferecem suporte nativo ao MongoDB.
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).
The aim of the lecture is the demonstration of the new Low Level Discovery Resources that emerged in Zabbix 3.0, as well as presentation, operation and demonstration LLD settings of Windows and ODBC Services.
O documento descreve o RelStorage, um armazenamento de dados para o ZODB que utiliza bancos de dados relacionais como PostgreSQL, MySQL e Oracle em vez de arquivos. Ele fornece melhor desempenho que o FileStorage para sites com alto volume de acesso e permite que múltiplas instâncias do Zope compartilhem o mesmo banco de dados. Instruções passo a passo são fornecidas para configurar o RelStorage com PostgreSQL.
O documento resume a história e evolução da linguagem de programação PHP. Em 3 frases:
PHP começou como um conjunto de scripts criados por Rasmus Lerdorf em 1994 para gerenciar seu site pessoal. Ao longo dos anos, tornou-se uma das linguagens de programação mais populares da internet devido à sua simplicidade e capacidade de criar aplicações web dinâmicas. Atualmente, o PHP é usado por mais de 82% dos sites da web e continua se desenvolvendo com novos recursos, padrões e frameworks para ser ainda mais poderoso e flexível.
Palestra sobre persistência de dados no SQLite com Room API apresentada no TDC São Paulo 2017 (19/07/2017). O Room é um dos Architectural Components apresentados pelo Google no Google I/O 2017.
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
Palestra apresentada na RubyConf Brasil 2010 mostrando dicas de bibliotecas úteis para aplicações web escritas em Rails e maneiras para conseguir código flexível, fácil de testar e modificar utilizando SOLID, defensive programming e outras técnicas.
O documento discute a filosofia do framework Ruby on Rails. Ele descreve como Rails promove convenções sobre configurações e o princípio de "não se repita" para facilitar o desenvolvimento ágil e a manutenção de código. Além disso, destaca como Rails permite que times pequenos construam e mantenham aplicações complexas de forma rápida e divertida.
O documento apresenta a biblioteca JavaScript do SAPO (Lib.SAPO.JS), descrevendo o que é, suas vantagens e estrutura. A biblioteca fornece classes e widgets JavaScript centralizados, open source, para simplificar o desenvolvimento e permitir a reutilização de código. Ela contém frameworks como Prototype e YUI, além de classes utilitárias e widgets próprios do SAPO. Exemplos demonstram o uso de classes como SAPO.Utility.Dumper e SAPO.Communication.Syndication.
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
JavaScript é uma linguagem de script que é interpretada pelo navegador para dar interatividade às páginas HTML. jQuery é um framework JavaScript que simplifica a manipulação do DOM HTML, tratamento de eventos e efeitos visuais. O documento apresenta os conceitos básicos de JavaScript e jQuery, incluindo seletores, manipulação do DOM, eventos e efeitos.
1. O documento discute o desenvolvimento de aplicativos para iOS usando CocoaTouch, cobrindo ferramentas como Xcode e Interface Builder, Objective-C, novidades do iOS 5 como compartilhamento no Twitter, animações, edição de imagens e rastreamento de usuários.
2. É destacado o uso de ferramentas como Xcode, Instruments e Interface Builder no desenvolvimento, além de tópicos como Objective-C, blocos, ARC e execução de tarefas em segundo plano.
3. Animações, edição de imagens, design para telas
Lightning talk apresentada no MeetUp PHPRS subseção Canela/Gramado no dia 26/11/2016 - hotel Klein Ville de Canela (RS):
http://www.meetup.com/pt-BR/PHP-RS/events/234978772/
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonRicardo Longa
O documento discute o uso de bibliotecas populares para Android como GreenDAO, EventBus, Crouton e Android Annotations. Ele fornece uma introdução a cada biblioteca, incluindo seus principais recursos e empresas que as usam, como Facebook e Pinterest. O documento também mostra exemplos de código para ilustrar o uso dessas bibliotecas.
O documento resume as principais características e mudanças introduzidas nas versões Java 9, 10 e 11. Java 9 trouxe a modularização do JDK, ferramentas como o jlink e jdeps, arquivos JAR multi-versão e melhorias na API de coleções. Java 10 adicionou inferência de tipo para variáveis locais, melhor apoio a Docker e compartilhamento de classes de aplicativos. Java 11 removeu módulos legados, adicionou o Flight Recorder e algoritmos criptográficos ChaCha20 e Poly1305.
Palestra da phpx2016 que fala sobre como utilizar certificados no lado do cliente. Exemplo de aplicação em Mobile e os benefícios que o certificado provê.
Projeto Octopus - Database Sharding para ActiveRecordtchandy
O documento discute Active Record e o projeto Octopus. Active Record é um padrão de mapeamento objeto-relacional usado no framework Rails que mapeia classes e objetos para tabelas e registros de banco de dados. O projeto Octopus é uma biblioteca que adiciona suporte a sharding de banco de dados para Active Record, permitindo que dados sejam particionados em vários bancos de dados.
O documento fornece uma introdução ao editor de texto Vim, discutindo porque as pessoas devem aprender Vim, sua filosofia, como baixá-lo e configurá-lo, comandos básicos, plugins úteis e conclusões sobre seu aprendizado.
Quando uma aplicação começa a ficar grande e complexa, fazer buscas nos seus models torna-se uma tarefa complicada. Efetuar as buscas diretamente no banco de dados é um processo lento, ineficiente e que permite pouca ou nenhuma maleabilidade sobre a forma com que a busca é feita. Surge então o ElasticSearch, uma engine de busca utilizada por empresas como Github, Twitter e 4square para indexar e buscar literalmente milhões de documentos em tempo real. Nessa palestra, explicarei quando, como e porque utilizar o ElasticSearch para facilmente indexar e efetuar buscas complexas nos seus models.
1) O documento apresenta uma introdução sobre MongoDB com PHP, incluindo links relevantes e casos de uso de empresas que utilizam MongoDB em produção.
2) É descrito os principais tipos de bancos de dados NoSQL (key-value stores, wide column stores, document stores, graph stores e column oriented stores), com exemplos de cada um.
3) São apresentados comandos e conceitos básicos para trabalhar com MongoDB via PHP, como conexão, inserção, consulta, alteração e exclusão de dados.
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).
O documento discute a integração do MongoDB com PHP. Ele explica como instalar o driver MongoDB para PHP em diferentes sistemas operacionais e como realizar operações básicas como conexão, seleção de banco de dados e coleção, inserção e busca de dados. Também apresenta alguns frameworks PHP que oferecem suporte nativo ao MongoDB.
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).
The aim of the lecture is the demonstration of the new Low Level Discovery Resources that emerged in Zabbix 3.0, as well as presentation, operation and demonstration LLD settings of Windows and ODBC Services.
O documento descreve o RelStorage, um armazenamento de dados para o ZODB que utiliza bancos de dados relacionais como PostgreSQL, MySQL e Oracle em vez de arquivos. Ele fornece melhor desempenho que o FileStorage para sites com alto volume de acesso e permite que múltiplas instâncias do Zope compartilhem o mesmo banco de dados. Instruções passo a passo são fornecidas para configurar o RelStorage com PostgreSQL.
O documento resume a história e evolução da linguagem de programação PHP. Em 3 frases:
PHP começou como um conjunto de scripts criados por Rasmus Lerdorf em 1994 para gerenciar seu site pessoal. Ao longo dos anos, tornou-se uma das linguagens de programação mais populares da internet devido à sua simplicidade e capacidade de criar aplicações web dinâmicas. Atualmente, o PHP é usado por mais de 82% dos sites da web e continua se desenvolvendo com novos recursos, padrões e frameworks para ser ainda mais poderoso e flexível.
Palestra sobre persistência de dados no SQLite com Room API apresentada no TDC São Paulo 2017 (19/07/2017). O Room é um dos Architectural Components apresentados pelo Google no Google I/O 2017.
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
Palestra apresentada na RubyConf Brasil 2010 mostrando dicas de bibliotecas úteis para aplicações web escritas em Rails e maneiras para conseguir código flexível, fácil de testar e modificar utilizando SOLID, defensive programming e outras técnicas.
O documento discute a filosofia do framework Ruby on Rails. Ele descreve como Rails promove convenções sobre configurações e o princípio de "não se repita" para facilitar o desenvolvimento ágil e a manutenção de código. Além disso, destaca como Rails permite que times pequenos construam e mantenham aplicações complexas de forma rápida e divertida.
O documento apresenta a biblioteca JavaScript do SAPO (Lib.SAPO.JS), descrevendo o que é, suas vantagens e estrutura. A biblioteca fornece classes e widgets JavaScript centralizados, open source, para simplificar o desenvolvimento e permitir a reutilização de código. Ela contém frameworks como Prototype e YUI, além de classes utilitárias e widgets próprios do SAPO. Exemplos demonstram o uso de classes como SAPO.Utility.Dumper e SAPO.Communication.Syndication.
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
JavaScript é uma linguagem de script que é interpretada pelo navegador para dar interatividade às páginas HTML. jQuery é um framework JavaScript que simplifica a manipulação do DOM HTML, tratamento de eventos e efeitos visuais. O documento apresenta os conceitos básicos de JavaScript e jQuery, incluindo seletores, manipulação do DOM, eventos e efeitos.
1. O documento discute o desenvolvimento de aplicativos para iOS usando CocoaTouch, cobrindo ferramentas como Xcode e Interface Builder, Objective-C, novidades do iOS 5 como compartilhamento no Twitter, animações, edição de imagens e rastreamento de usuários.
2. É destacado o uso de ferramentas como Xcode, Instruments e Interface Builder no desenvolvimento, além de tópicos como Objective-C, blocos, ARC e execução de tarefas em segundo plano.
3. Animações, edição de imagens, design para telas
Lightning talk apresentada no MeetUp PHPRS subseção Canela/Gramado no dia 26/11/2016 - hotel Klein Ville de Canela (RS):
http://www.meetup.com/pt-BR/PHP-RS/events/234978772/
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonRicardo Longa
O documento discute o uso de bibliotecas populares para Android como GreenDAO, EventBus, Crouton e Android Annotations. Ele fornece uma introdução a cada biblioteca, incluindo seus principais recursos e empresas que as usam, como Facebook e Pinterest. O documento também mostra exemplos de código para ilustrar o uso dessas bibliotecas.
O documento resume as principais características e mudanças introduzidas nas versões Java 9, 10 e 11. Java 9 trouxe a modularização do JDK, ferramentas como o jlink e jdeps, arquivos JAR multi-versão e melhorias na API de coleções. Java 10 adicionou inferência de tipo para variáveis locais, melhor apoio a Docker e compartilhamento de classes de aplicativos. Java 11 removeu módulos legados, adicionou o Flight Recorder e algoritmos criptográficos ChaCha20 e Poly1305.
Palestra da phpx2016 que fala sobre como utilizar certificados no lado do cliente. Exemplo de aplicação em Mobile e os benefícios que o certificado provê.
Projeto Octopus - Database Sharding para ActiveRecordtchandy
O documento discute Active Record e o projeto Octopus. Active Record é um padrão de mapeamento objeto-relacional usado no framework Rails que mapeia classes e objetos para tabelas e registros de banco de dados. O projeto Octopus é uma biblioteca que adiciona suporte a sharding de banco de dados para Active Record, permitindo que dados sejam particionados em vários bancos de dados.
O documento fornece uma introdução ao editor de texto Vim, discutindo porque as pessoas devem aprender Vim, sua filosofia, como baixá-lo e configurá-lo, comandos básicos, plugins úteis e conclusões sobre seu aprendizado.
Quando uma aplicação começa a ficar grande e complexa, fazer buscas nos seus models torna-se uma tarefa complicada. Efetuar as buscas diretamente no banco de dados é um processo lento, ineficiente e que permite pouca ou nenhuma maleabilidade sobre a forma com que a busca é feita. Surge então o ElasticSearch, uma engine de busca utilizada por empresas como Github, Twitter e 4square para indexar e buscar literalmente milhões de documentos em tempo real. Nessa palestra, explicarei quando, como e porque utilizar o ElasticSearch para facilmente indexar e efetuar buscas complexas nos seus models.
Agora que o Internet Explorer 8 morreu, e o número de usuários do Internet Explorer 9 é quase insignificante, há uma porção de recursos do CSS que finalmente podemos usar.
O documento discute a arquitetura de micro serviços usando Node.js. Ele explica que micro serviços são pequenos serviços autônomos que trabalham juntos através de comunicação, geralmente modelados em torno de um domínio de negócio específico. Também descreve como evoluir de uma arquitetura monolítica para micro serviços de forma gradual, começando com a extração de serviços de um código monolítico e eventualmente migrando para serviços totalmente independentes. Finalmente, exemplifica como desenvolver micro serviços em Node.js, com f
Fizzics Group is developing products to improve the beer drinking experience. Their flagship product, Waytap, uses technology to revitalize canned and bottled beer so it has the taste and quality of a draft beer straight from the tap. Waytap works by pressurizing and sonicating the beer to reintroduce carbonation and create a perfect foam, allowing beer to be enjoyed as if it was freshly drafted anywhere. Fizzics aims to disrupt the beer market and how beer is consumed both at home and in commercial settings.
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
Palestra realizada no TDC (The Developers Conference) 2018, edição de Porto Alegre. Se trata de uma apresentação sobre Serverless e o funcionamento das Azure Functions, ecossistemas e funcionalidades, com exemplos de código e um pouco mais.
Este documento apresenta como o Elasticsearch, Kibana, Logstash e Codahale Metrics podem ser usados para monitoramento em tempo real de sistemas. O Elasticsearch é usado para armazenar e pesquisar dados, o Logstash coleta e envia dados para o Elasticsearch, o Kibana permite visualizar e analisar os dados armazenados no Elasticsearch e o Codahale Metrics gera métricas sobre o desempenho do código que podem ser enviadas para o Elasticsearch. Exemplos demonstram como esses ferramentas podem ser usadas para detectar anomalias, me
O documento discute boas práticas de design de APIs, incluindo versionamento de APIs, definição de endpoints, status HTTP, tratamento de erros e ferramentas de documentação de APIs.
Node.js: 5 razões para começar a utilizarFilipe Falcão
Node.js possui diversas vantagens como back-end, incluindo ser baseado em JavaScript, ser rápido devido ao motor V8 e I/O assíncrono, e suportar alta concorrência através de loop de eventos único. O framework MEAN (MongoDB, Express, AngularJS e Node) permite criar sistemas completos usando todas essas ferramentas em JavaScript.
Apresentará as motivações e lições aprendidas na criação de uma aplicação de larga escala orientada a serviços. Entenda como fatores como performance, estilos de comunicação e produtividade da equipe relacionam-se à estruturação de uma aplicação.
O documento apresenta uma agenda para um módulo sobre linguagem de programação Java. A agenda inclui tópicos como introdução, revisão de conceitos, arrays, desenho avançado de classes, tratamento de erros e exceções, desenvolvimento de aplicações, interfaces gráficas, programação para rede e programação multi-tarefa.
O documento discute o crescimento da popularidade do framework Ruby on Rails no Brasil em 2009. Apresenta as principais características da linguagem Ruby como orientada a objetos, tipagem dinâmica e meta-programação. Exemplifica o uso de Ruby on Rails para desenvolvimento web comparando com Java e Scala. Defende que Rails permite simplificar e tornar possíveis aplicações complexas.
1) O documento discute como realizar consultas no banco de dados usando o framework Hibernate. 2) Existem três maneiras de fazer consultas no Hibernate: HQL, Critérios e SQL nativo. 3) Vários exemplos de consultas HQL são apresentados, incluindo parâmetros, joins, funções agregadas e consultas nomeadas.
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )João Moura
O documento discute as tecnologias WebSocket e SocketStream, comparando os frameworks Ruby on Rails (usando Juggernaut) e SocketStream. WebSocket permite comunicação bidirecional através de protocolo TCP, enquanto SocketStream é uma biblioteca para aplicações em tempo real baseadas em Node.js e Redis. Ambas as tecnologias possibilitam aplicações mais dinâmicas com melhor desempenho.
Backbone.js + Rails - Front-end e back-end conectadosHenrique Gogó
Backbone.js é um framework JavaScript que fornece estrutura para aplicações web, conectando modelos com chave-valor, coleções e views a uma API RESTful. Isso permite manipular o DOM de forma mais organizada do que apenas com jQuery, separando a lógica da apresentação. Rails pode ser usado no back-end para gerar uma API RESTful para os modelos do Backbone.js.
Slides do mini-curso de MongoDB realizado no Workshop de Software Livre 2010 do CInLUG, no Centro de Informática da Universidade Federal de Pernambuco em 24/08/2010. Instrutores: Brunno Gomes (@brunnogomes) e Daker Fernandes (@dakerfp).
O documento apresenta uma introdução sobre AJAX, incluindo seu histórico, princípios, como funciona e casos de sucesso. AJAX permite atualizações assíncronas na página web usando uma combinação de tecnologias como JavaScript, XML e HTTP. Isso proporciona interfaces ricas e responsivas sem recarregar a página inteira. Exemplos bem-sucedidos incluem aplicativos da Google e ferramentas de gestão de projetos online.
O documento resume as principais características do MongoDB, um banco de dados NoSQL orientado a documentos e esquema-livre. Ele explica que o MongoDB é escalável, de alto desempenho e open source, armazena dados em formato de documentos JSON ou BSON, permite esquemas flexíveis e não requer migrations. Além disso, ressalta que as propriedades ACID ficam a cargo do programador e apresenta alguns comandos básicos para usar o MongoDB via terminal.
Backbone.js é um framework JavaScript que separa as responsabilidades entre modelo, vista e roteador de forma semelhante a MVC. Ele é usado para estruturar projetos com maior responsividade, testabilidade e estabilidade dos componentes. O documento discute a estruturação de projetos com Backbone usando RequireJS para modularização, separação de código da aplicação e bibliotecas, além de testes de unidade com Jasmine.
1) O documento discute o Domain-Driven Design (DDD), uma abordagem focada no domínio e na lógica de negócios.
2) As duas principais premissas do DDD são desenvolver um modelo que reflita o domínio e usar uma linguagem ubíqua compartilhada entre os especialistas de negócios e a equipe de desenvolvimento.
3) O DDD enfatiza a separação de camadas com base no domínio, utilizando conceitos como entidades, valores, agregações, serviços, fábricas e repositó
Comparação de desempenho entre SQL e NoSQLpichiliani
O documento apresenta os resultados de testes de desempenho realizados entre bancos SQL (PostgreSQL e MySQL) e NoSQL (MongoDB) para operações de inserção, alteração, exclusão e processamento de dados. Os testes indicaram que PostgreSQL e MySQL tiveram melhores tempos de execução do que o MongoDB. Além disso, os bancos de dados apresentaram melhor desempenho quando executados no sistema operacional Linux em comparação com o Windows.
O documento discute a implementação de acesso a múltiplos bancos de dados no Django. A solução proposta permite indexar as configurações dos bancos de dados adicionais no arquivo settings.py e cria uma classe Manager personalizada que direciona as consultas aos bancos corretos. Isso corrige problemas na abordagem anterior que acessava os bancos diretamente nas views.
O documento discute o desenvolvimento de aplicações ricas para internet (RIA) usando Javascript. Apresenta Javascript como uma opção viável para RIA, ao contrário do que sugere o senso comum. Explica como usar Orientação a Objetos, organização de código, documentação e testes para superar as limitações percebidas da linguagem. Defende o padrão MVVM e as bibliotecas jQuery e Knockout para separar as responsabilidades e facilitar a manutenção do código.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
2. Assuntos
•
O problema
•
Por que e quando usar Node.js?
•
Problemas de Node.js
•
Node.js “the right way”
•
Repensando a infraestrutura
•
Deployment (Continuous Integration) e monitoramento
•
Conclusões…
7. Premissas da API
•
Simplicidade: RESTful + JSON
•
Ambiente de testes isolado e decente
•
Segurança sem comprometer simplicidade
•
Uptime de 99,9%
•
Escalabilidade
11. Por que Node.js?
(Cielo, RedeCard, etc)
legítima
Sistema antifraude
ro
er
o/
ss
ce
su
m
s
10.000 ms
3.
00
0
Adquirente
fraude
erro
API RESTful
Request de transação
12. Por que Node.js?
(no nosso caso)
•
Requests externos demorados (>1.000ms)
•
I/O intenso em banco de dados
•
Totalmente assíncrono, single thread e event-based
•
Pouco processamento (sem blocking de CPU)
13. Por que Node.js?
(no nosso caso)
“Mas é só usar threads em qualquer
linguagem!..”
Não.
14. Por que Node.js?
(no nosso caso)
1.000 requests por segundo com conexão a uma API
externa + I/O no DB = 1.000 threads por segundo
… se cada request leva em média 10 segundos …
Em 9 segundos, teremos 9.000 threads
Isso escala? :P :P :P
16. Por que Node.js?
(no nosso caso)
1.000 requests por segundo com conexão a uma API
externa + I/O no DB = 1 thread
… se cada request leva em média 10 segundos …
Em 9 segundos, teremos 1 thread
Isso escala? Sim.
#eventloopFTW
19. O segredo do Node.js
I/O
I/O
callback
callback
callback
I/O
JavaScript (event loop)
V8
libuv
Sistema operacional
……………………………………
……………………………………
……………………………………
operações assíncronas em nível de OS
20. Node.js escala em I/O bloqueante, não
em utilização de CPU
(threads são boas em processamento paralelo)
21. Se I/O bloqueante não for um problema,
Node.js não tem tantas vantagens.
24. Problemas de Node.js
Código assíncrono (race conditions, callback hell,
testes assíncronos, etc)
db.query("SELECT a FROM users WHERE ...;", function (err, result1) {
db.query("SELECT b FROM users WHERE ...;", function (err, result2) {
db.query("SELECT c FROM users WHERE ...;", function (err, result3) {
db.query("SELECT d FROM users WHERE ...;", function (err, result4) {
db.query("SELECT e FROM users WHERE ...;", function (err, result5) {
console.log("Finished.");
});
});
});
});
});
Um ótimo exemplo do que não fazer: callback hell.
25. Problemas de Node.js
Problemas de Javascript: bizarrices e facilidade em não
seguir padrões e orientação a objetos.
> 0.1+0.2
0.30000000000000004
!
> typeof NaN
'number'
!
> NaN === NaN
false
Cortesia do wtfjs.com
26. Problemas de Node.js
Exceptions não tratadas matam o processo.
var name = “Pedro Franceschi";
!
console.log("Tamanho do primeiro nome: " + name.split(" ")[0].length);
console.log("Tamanho do segundo nome: " + name.split(" ")[1].length);
$ node test.js
Tamanho do primeiro nome: 5
Tamanho do segundo nome: 10
27. Problemas de Node.js
Exceptions não tratadas matam o processo.
var name = “Pedro";
!
console.log("Tamanho do primeiro nome: " + name.split(" ")[0].length);
console.log("Tamanho do segundo nome: " + name.split(" ")[1].length);
$ node test.js
Tamanho do primeiro nome: 5
!
/private/tmp/test.js:4
console.log("Tamanho do segundo nome: " + name.split(" ")[1].length);
^
TypeError: Cannot read property 'length' of undefined
at Object.<anonymous> (/private/tmp/test.js:4:61)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
28. Problemas de Node.js
•
Single thread (escalar horizontalmente e
verticalmente com múltiplas instâncias)
•
Leaks de memória difíceis de detectar devido a
código mal feito (variáveis globalizadas, closures, etc)
•
Programadores front-end mexendo em back-end
(“é tudo Javascript!!”)
•
Existe a 4 anos, porém ainda é beta (v0.10.22)
30. Node.js “the right way”
Modules
var PI = Math.PI;
!
exports.area = function (r) {
return PI * r * r;
};
!
exports.circumference = function (r) {
return 2 * PI * r;
};
circle.js
var circle = require('./circle.js');
!
console.log( 'The area of a circle of radius 4 is ' + circle.area(4));
main.js
31. Node.js “the right way”
Evitar callback hells com async
(https://github.com/caolan/async)
db.query("SELECT a FROM users WHERE ...;", function (err, result1) {
db.query("SELECT b FROM users WHERE ...;", function (err, result2) {
db.query("SELECT c FROM users WHERE ...;", function (err, result3) {
db.query("SELECT d FROM users WHERE ...;", function (err, result4) {
db.query("SELECT e FROM users WHERE ...;", function (err, result5) {
console.log("Finished.");
});
});
});
});
});
Não tente fazer isso em casa
32. Node.js “the right way”
Evitar callback hells com async
(https://github.com/caolan/async)
async.parallel({
result1: function(callback) {
db.query("SELECT a FROM users WHERE ...;", function(err, result1){
callback(err, result1);
});
},
result2: function(callback) {
db.query("SELECT b FROM users WHERE ...;", function(err, result2){
callback(err, result2);
});
},
result3: function(callback) {
db.query("SELECT c FROM users WHERE ...;", function(err, result3){
callback(err, result3);
});
}
}, function(err, results){
console.log("Finished.");
})
Assim é bem melhor :)
33. Node.js “the right way”
Testes (JavaScript quebra)
(https://github.com/visionmedia/mocha e https://github.com/visionmedia/should.js/)
describe('Array', function(){
describe('#indexOf()', function(){
it('should return -1 when the value is not present', function(){
[1,2,3].indexOf(5).should.equal(-1);
})
})
!
!
describe(‘#indexOf() after one second', function(){
before(function(done){
setTimeout(function(){
done();
}, 1000);
});
it('should return -1 when the value is not present', function(){
[1,2,3].indexOf(5).should.equal(-1);
})
})
});
34. Node.js “the right way”
•
Seguir e manter um code style (dica: Google
JavaScript Style Guide)
•
Tratamento de erros consistente (processos morrem)
35. Node.js “the right way”
utils
•
Express.js: lightweight HTTP framework
•
Sequelize: ORM de MySQL, PostgreSQL, sqlite3, etc.
•
Mongoose: ORM de MongoDB
•
Commander: wrapper de command line
•
Vim: melhor editor de texto :P
40. Infraestrutura do Pagar.me
MySQL
MongoDB
MySQL
(transações e dados relacionais)
(dados de clientes e não relacionais)
(transações e dados relacionais)
ElasticSearch
ElasticSearch
Servidor da API
Servidor da API
(Node.js)
(Node.js)
Router
Ambiente de produção
Ambiente de testes
(sandbox dos clientes)
api.pagar.me
41. Por que tantos bancos?
•
Separar dados de teste (sandbox dos clientes) dos dados
de produção
•
MySQL: dados relacionais (transações, assinaturas,
planos, cartões, etc.)
•
MongoDB: dados não-relacionais (informações do
cliente, usuários de uma conta, etc.)
•
ElasticSearch: indexação/buscas ultra-rápidas (expondo
uma engine de buscas poderosa para os clientes)
•
Não há porque se prender a uma tecnologia quando
cada uma delas resolve uma parte do seu problema
43. ElasticSearch
•
“Open Source Distributed Real Time Search & Analytics”
•
Construído em Java em cima do Apache Lucene (engine
robusta de busca e indexação em Java)
•
API RESTful (POST para inserir (indexar) dados num
“model”, GET para buscá-los)
•
Just works and scales (sem instalação, basta iniciar o
servidor; suporte a clusters out of the box)
•
Nosso uso: indexar/buscar responses (incluindo
metadata e nested objects) de models do MySQL
48. ElasticSearch
• NÃO é um banco de dados. É um indexador.
• Evita I/O no DB (salva JSONs construídos a partir das
queries no DB)
• Permite buscas em cima dos próprios objetos que são
retornados para os clientes (padroniza o que é exposto
nos responses independente da estrutura do DB)
• Dashboard em tempo real a partir das indexações
• Dica: crie um script para indexar seu DB (indexar em
tempo real funciona mas pode quebrar)
50. Nível 1
$ node server.js
n00bz… Processo não roda em background
51. Nível 2
$ git pull && npm install && node server.js &
Opa… Agora tem Git, update das dependências pelo NPM e o
processo roda em background
52. Nível 3
$ git pull && npm install && nohup node server.js
Nohup roda o processo mesmo depois do logout do SSH
53. Nível 4
$ git pull && npm install && service node-server restart
Um serviço é responsável por rodar e reiniciar o processo e
salvar os logs do processo
54. Nível 5
Servidor de Continuous Integration (CI)
+
$ service node-server restart
Agora o servidor de CI lida com o Git e as dependências
55. Nível 6
Strider (servidor de CI)
+
$ pm2 reload all
Strider é o servidor de CI e o pm2 reinicia o processo on-the-fly,
sem perder nenhum request
56. pm2
(https://github.com/Unitech/pm2)
•
Roda e gerencia os processos do Node.js (mantém
processo rodando para sempre)
•
Reload no código on-the-fly (zero downtime)
•
Multi-thread e clusterização sem alterar uma linha de
código
•
Monitoramento e gerenciamento dos logs
•
API RESTful + interface web
57. Strider
(https://github.com/Strider-CD/strider)
•
Servidor de CI 100% em Node.js
•
Integração com Github
•
Monitoramento dos testes em tempo real pelo
browser (com Socket.io)
•
Envio de emails com erros nos testes
•
Suporte a testes de regressão, custom scripts de
deployment, etc.