1) O documento discute técnicas de depuração e log em aplicações Java, incluindo o uso de bibliotecas como Jakarta Commons Logging, log4j e a Java Logging API.
2) A biblioteca log4j permite registrar mensagens de log em vários destinos e oferece controle de nível de log e formato.
3) Tanto o Struts quanto a Java Logging API podem acessar bibliotecas de log externas via Jakarta Commons Logging.
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
Assincronia no .NET 4.5, Task-based Asynchronous Pattern (TAP), async e await, Cancelamento com CancellationTokenSource e CancellationToken e progresso com a interface System.IProgress de um tipo T genérico e a classe System.Progress de um tipo genérico T.
O padrão <strong>IAsyncResult Pattern</strong> ou <strong>Asynchronous Programming Model (APM)</strong> foi introduzido no .NET Framework 1.0, em fevereiro de 2002. Também conhecido como <strong>Begin/End Pattern</strong>, num nível básico, o padrão se baseia em dois métodos relacionados para representar uma operação assíncrona: <strong>Begin</strong><em>NomeOperacao</em> e <strong>End</strong><em>NomeOperacao</em>.
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...Rogério Moraes de Carvalho
Nesta palestra, eu apresentei uma introdução à linguagem de programação <strong>JavaScript</strong>, sua evolução, sua padronização de acordo com a especificação <strong>ECMA-262</strong> (linguagem <strong>ECMAScript</strong>), principais usos da linguagem, alguns dos principais conceitos da linguagem, programação orientada a objetos com JavaScript e algumas das novidades da <strong>ECMAScript 5</strong>. Além disto, eu também apresentei estatísticas de uso dos 5 principais browsers da atualidade e o suporte dos principais browsers do mercado ao ECMAScript 5.
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
Assincronia no .NET 4.5, Task-based Asynchronous Pattern (TAP), async e await, Cancelamento com CancellationTokenSource e CancellationToken e progresso com a interface System.IProgress de um tipo T genérico e a classe System.Progress de um tipo genérico T.
O padrão <strong>IAsyncResult Pattern</strong> ou <strong>Asynchronous Programming Model (APM)</strong> foi introduzido no .NET Framework 1.0, em fevereiro de 2002. Também conhecido como <strong>Begin/End Pattern</strong>, num nível básico, o padrão se baseia em dois métodos relacionados para representar uma operação assíncrona: <strong>Begin</strong><em>NomeOperacao</em> e <strong>End</strong><em>NomeOperacao</em>.
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...Rogério Moraes de Carvalho
Nesta palestra, eu apresentei uma introdução à linguagem de programação <strong>JavaScript</strong>, sua evolução, sua padronização de acordo com a especificação <strong>ECMA-262</strong> (linguagem <strong>ECMAScript</strong>), principais usos da linguagem, alguns dos principais conceitos da linguagem, programação orientada a objetos com JavaScript e algumas das novidades da <strong>ECMAScript 5</strong>. Além disto, eu também apresentei estatísticas de uso dos 5 principais browsers da atualidade e o suporte dos principais browsers do mercado ao ECMAScript 5.
Descreve a biblioteca CherryPy do Python e mostra uma aplicação WEB usando CherryPy, Mysql, arquivos tipo texto, envio de dados e formulários pelo net. Uma complementação do texto Servidor CherryPy.
Django é um framework para desenvolvimento rápido para web, escrito em Python.
Utiliza o padrão MTV (model - template - view).
Principais caracteristicas:
Mapeamento Objeto-Relacional (ORM)
Define a modelagem de dados através de classes em Python. Com isso é possível gerar suas tabelas no banco de dados e manipulá-las sem necessidade de utilizarSQL (o que também é possivel).
Interface Administrativa
No Django é possivel gerar automaticamente uma interface para administração para os modelos criados através do ORM.
Formulários
É possível gerar formulários automaticamente através dos modelos de dados.
URLs Elegantes
No Django não há limitações para criação de URLs elegantes e de maneira simples.
- Nada elegante, difícil para o usário e ruim para buscadores: www.meusite.com.br/index.jsp?id=12&nome=ciclano
- Elegante, fácil leitura e memorização e ótimo para buscadores:
www.meusite.com.br/12/ciclano
Sistema de Templates
O Django tem uma linguagem de templates poderosa, extensível e amigável. Com ela você pode separar design, conteúdo e código em Python.
Internacionalização
Django tem total suporte para aplicações multi-idioma, deixando você especificar strings de tradução e fornecendo ganchos para funcionalidades específicas do idioma.
Sistema de Cache
O Django possui um sistema de cache que se integra ao memcached ou em outros frameworks de cache.
Sobre Python
O que é Python?
Python é uma linguagem de altíssimo nível (VHLL - Very High Level Language) com código fonte aberto.
Python é Interpretado ou compilado?
Python é executado de forma interpretada via bytecode, ou seja, escrevendo apenas uma vez o código Python podemos executá-lo em qualquer sistema operaciona
Logging e depuração enterprise-level com Log4perlgarux
Voltado para desenvolvedores de aplicativos robustos e de qualidade corporativa em Perl, o Log4perl oferece uma solução eficiente e elegante para logging, possui diversos appenders e pode ser integrado de forma transparente a frameworks web, até mesmo a aplicações em Java!
PL/Python é a implementação de Python como linguagem procedural no PostgreSQL.
Permite utilizar todas as bibliotecas de Python instaladas no sistema operacional.
PL/Python proporciona uma gama de possibilidades de recursos maior ao banco de dados graças às bibliotecas Python que permite fazer operações que transcendem os limites da base de dados.
Pode-se por exemplo com uma função PL/Python fazer raspagem de dados e jogá-los diretamente no banco (e pelo banco).
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoRafael Jaques
A linguagem PHP é conhecida por ser utilizada no desenvolvimento de aplicações web. Essa palestra visa apresentar o outro lado do desenvolvimento. Poucos sabem que é possível utilizar a linguagem para desenvolver tarefas agendadas, ferramentas multi-thread e diversas outras aplicações que rodam em terminal. Nessa palestra exploraremos o mundo do PHP-CLI.
Palestra de Rafael Jaques (@rafajaques)
Desenvolvimento Rápido de Programas Linha de Comandogarux
Conheça App::Rad, um moderno framework para o desenvolvimento ágil de programas linha de comando. Não perca tempo com código repetitivo, use App::Rad e concentre-se apenas no que seu programa pode oferecer de melhor.
Descreve a biblioteca CherryPy do Python e mostra uma aplicação WEB usando CherryPy, Mysql, arquivos tipo texto, envio de dados e formulários pelo net. Uma complementação do texto Servidor CherryPy.
Django é um framework para desenvolvimento rápido para web, escrito em Python.
Utiliza o padrão MTV (model - template - view).
Principais caracteristicas:
Mapeamento Objeto-Relacional (ORM)
Define a modelagem de dados através de classes em Python. Com isso é possível gerar suas tabelas no banco de dados e manipulá-las sem necessidade de utilizarSQL (o que também é possivel).
Interface Administrativa
No Django é possivel gerar automaticamente uma interface para administração para os modelos criados através do ORM.
Formulários
É possível gerar formulários automaticamente através dos modelos de dados.
URLs Elegantes
No Django não há limitações para criação de URLs elegantes e de maneira simples.
- Nada elegante, difícil para o usário e ruim para buscadores: www.meusite.com.br/index.jsp?id=12&nome=ciclano
- Elegante, fácil leitura e memorização e ótimo para buscadores:
www.meusite.com.br/12/ciclano
Sistema de Templates
O Django tem uma linguagem de templates poderosa, extensível e amigável. Com ela você pode separar design, conteúdo e código em Python.
Internacionalização
Django tem total suporte para aplicações multi-idioma, deixando você especificar strings de tradução e fornecendo ganchos para funcionalidades específicas do idioma.
Sistema de Cache
O Django possui um sistema de cache que se integra ao memcached ou em outros frameworks de cache.
Sobre Python
O que é Python?
Python é uma linguagem de altíssimo nível (VHLL - Very High Level Language) com código fonte aberto.
Python é Interpretado ou compilado?
Python é executado de forma interpretada via bytecode, ou seja, escrevendo apenas uma vez o código Python podemos executá-lo em qualquer sistema operaciona
Logging e depuração enterprise-level com Log4perlgarux
Voltado para desenvolvedores de aplicativos robustos e de qualidade corporativa em Perl, o Log4perl oferece uma solução eficiente e elegante para logging, possui diversos appenders e pode ser integrado de forma transparente a frameworks web, até mesmo a aplicações em Java!
PL/Python é a implementação de Python como linguagem procedural no PostgreSQL.
Permite utilizar todas as bibliotecas de Python instaladas no sistema operacional.
PL/Python proporciona uma gama de possibilidades de recursos maior ao banco de dados graças às bibliotecas Python que permite fazer operações que transcendem os limites da base de dados.
Pode-se por exemplo com uma função PL/Python fazer raspagem de dados e jogá-los diretamente no banco (e pelo banco).
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoRafael Jaques
A linguagem PHP é conhecida por ser utilizada no desenvolvimento de aplicações web. Essa palestra visa apresentar o outro lado do desenvolvimento. Poucos sabem que é possível utilizar a linguagem para desenvolver tarefas agendadas, ferramentas multi-thread e diversas outras aplicações que rodam em terminal. Nessa palestra exploraremos o mundo do PHP-CLI.
Palestra de Rafael Jaques (@rafajaques)
Desenvolvimento Rápido de Programas Linha de Comandogarux
Conheça App::Rad, um moderno framework para o desenvolvimento ágil de programas linha de comando. Não perca tempo com código repetitivo, use App::Rad e concentre-se apenas no que seu programa pode oferecer de melhor.
Webinar: Arquitetura de software para sistemas embarcadosEmbarcados
Objetivo: Mostrar a importância da estruturação de firmware durante o ciclo de desenvolvimento de um produto.
Neste webinar abordaremos um pouco do ciclo de desenvolvimento de um produto e técnicas de programação que vão garantir a portabilidade, reuso e testabilidade de bibliotecas.
Link: https://www.embarcados.com.br/webinars/webinar-arquitetura-de-software-para-sistemas-embarcados/
7. Jakarta Commons Logging (JCL) # exemplo de uso do SimpleLog org.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog # exemplo de uso do log4j # Obs: necessita do arquivo log4j.properties org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JCategoryLog
8.
9.
10.
11.
12. Usando o log4j: Propriedades de um Appender # Criando um anexador: rolling com nível DEBUG log4j.rootLogger =DEBUG, rolling # rolling tem como destino implementação em RollingFileAppender log4j.appender.rolling =org.apache.log4j.RollingFileAppender # Nome do arquivo log4j.appender.rolling.File =saida.log # Tamanho máximo do log log4j.appender.rolling.MaxFileSize =300KB # Número de backups definidos do arquivo log4j.appender.rolling.MaxBackupIndex =1 # Definição da classe e padrão de formatação log4j.appender.rolling.layout =org.apache.log4j.PatternLayout log4j.appender.rolling.layout.ConversionPattern = %d{ABSOLUTE} - %p %c - %m%n 1 2 5 6 7 3 4
13.
14. Usando o log4j: Níveis de logging // get a logger instance named "com.foo" Logger logger = Logger.getLogger("com.foo"); // Now set its level. Normally you do not need to set the // level of a logger programmatically. This is usually done // in configuration files. logger.setLevel(Level.INFO); Logger barlogger = Logger.getLogger("com.foo.Bar"); // This request is enabled, because WARN >= INFO. logger.warn("Low fuel level."); // This request is disabled, because DEBUG < INFO. logger.debug("Starting search for nearest gas station."); // The logger instance barlogger, named "com.foo.Bar", // will inherit its level from the logger named // "com.foo" Thus, the following request is enabled // because INFO >= INFO. barlogger.info("Located nearest gas station."); // This request is disabled, because DEBUG < INFO. barlogger.debug("Exiting gas station search");
15.
16. Log4j.properties: Pattern Pattern: "%r [%t] %-5p %c{2} - %m%n" 176 [main] INFO examples.Sort – Populating an array of 2 elements in reverse order r - numero de milissegundos transcorridos desde o inicio do programa t - nome da thread que gerou o evento de log p - prioridade (o -5 indica que deve alinhar a direita se o número de caracteres for menor que cinco) c - nome da classe (2 indica que se o nome completo da classe for "a.b.c" por exemplo, deverá ser mostrado apenas "b.c") m - é a mensagem (não pode faltar !) n - é o separador de linhas padrão do sistema operacional - "" ou ""
17. Log4j.properties # Criando dois anexadores: stdout e rolling, com nível DEBUG log4j.rootLogger= DEBUG , stdout , rolling # stdout tem como destino o console log4j.appender.stdout =org.apache.log4j.ConsoleAppender # Formato do stdout definido com uso de PatternLayout log4j.appender.stdout.layout =org.apache.log4j.PatternLayout # Definição do padrão para saída log4j.appender.stdout.layout .ConversionPattern = %5p [%t] (%F:%L) - %m%n # rolling tem como destino implementação em RollingFileAppender log4j.appender.rolling =org.apache.log4j.RollingFileAppender # Nome do arquivo log4j.appender.rolling.File =saida.log # Tamanho máximo do log log4j.appender.rolling.MaxFileSize =300KB # Número de backups definidos do arquivo log4j.appender.rolling.MaxBackupIndex =1 # Definição da classe e padrão de formatação log4j.appender.rolling.layout =org.apache.log4j.PatternLayout log4j.appender.rolling.layout.ConversionPattern = %d{ABSOLUTE} - %p %c - %m%n