iReport Netbeans

Rápidas sobre o plugin iReport para Netbeans:

O IReport Netbeans é uma ferramenta de relatório em forma de plugin que roda internamente ao Netbeans. Ele se utiliza do Jasper Reports, bibliotecas open source escritas em Java para geração de relatórios. (http://www.jasperforge.org/ireport.

Características
100% XML
Editor WYSIWYG
Suporte a código de barras
Editor com sintax highlights
Suporta unicode e línguas não latinas
Suporta todos os bancos de dados JDBC
Suporta subrelatórios
Possui templates, gráficos e biblioteca de estilos

Plugins para Netbeans
ireport-designer
jasperreports-components
jasperserver-plugin

Conexão com Oracle
Driver JDBC: oracle.jdbc.driver.OracleDriver
Caminho do JDBC: jdbc:oracle:thin:@IP:porta:instância

Conexão com MySQL
Driver JDBC: com.mysql.jdbc.Driver
Caminho do JDBC: jdbc:mysql://IP/banco

Observações
As bibliotecas se encontram dentro do diretório de instalação, na pasta lib.
Para criar um novo relatório no Netbeans: Novo > Outro > Report
Configurações: Ferramentas > Opções > IReport
Configurações do Plugin: /.netbeans/dev/config/Preferences/com/Jaspersoft/ireport.properties
Configurações do Stand Alone: .ireport/dev/config/Preferences/com/jaspersoft/ireport.properties

Estrutura do Relatório
Bands – seções separadas por linhas horizontais), dentre as quais:
PageHeader, detail, title, columnHeader, columnFooter, summary, noData, Background, lastPageFooter, pageFooter
Propriedades do Relatório: nome, tamanho, orientação, margens (A4 = 595×842)

Outras Opções
Grid: View > Report Designer Grid > Show Grid
Pode-se exportar as configurações de banco de dados após definí-las.
Configuração da Conexão: Report Datasources
Atribuição do Driver de conexão: Ferramentas > Opções > iReports > Classpath
Para adicionar a query: Edit Query

Instalando software de Workflow – Intalio

O Intalio é um software para modelagem e execução de processos e apresenta uma instalação muito simples.

Características
2 Componentes Free: BPMNDesigner e BPEL Server
A Versão Enterprise custa 7.000 USD por ano
Sistemas: Red Hat Linux, SUSE Linux, Windows 2000/2003 Server
Application Server: Gerônimo
Database: MySQL

Instalação do Servidor
Instalar JDK 1.5 ou superior
Definir JAVA_HOME caso não esteja
Baixar o arquivo e extrair em c:\intalio-bpms (sem espaços)
Porta 8080 deve estar disponível (verificar com netstat)
Executar startup.bat em bin

Iniciando o Servidor

http://localhost:8080/bpms-console

Acessar com o usuário admin e senha changeit

Instalação do Designer

http://community.intalio.com/getting-started/getting-started-with-intalio-bpms-designer.html

Site do Fabricante
www.projeler.com.br

Comandos do MySQL II

Seguem mais comando do MySQL utilizados para administração via linha de comando:

Localização do php.ini
/etc/apache/php.ini

Para buscar arquivos:
find / -name “*ini”

Start e Stop do MySQL
/etc/rc.d/rc.mysqld start
/etc/rc.d/rc.mysqld stop

Configuração do MySQL
/etc/my.conf

Jobs no Oracle

O Oracle utiliza o package dbms_job para automatizar tarefas.

Conceitos importantes:

Job – Tarefa a ser executada.
Job Queue – Conjunto de Jobs executáveis.
Agenda – Momento em que o Job será executado.

Rotinas do package dbms_job:

Submit – Cadastra um Job na Job Queue
Remove – Remove um Job da Job Queue
Change – Altera as características de um Job
Broken – Ativa ou desativa um Job
Run – Executa um Job

Antes de se trabalhar com Jobs, deve-se informar ao sistema que isso será possível:
alter system set job_queue_processes = 20;

Os Jobs podem ser consultados na tabela DBA_JOBS

Exemplo:

VARIABLE jobNumber NUMBER;
BEGIN
DBMS_JOB.SUBMIT(jobNumber, ‘NOME_PROCEDURE’, sysdate + 17/24, sysdate + 1);
COMMIT;
END;

Inserindo arquivos no Banco

Recentemente fiz manutenção em um sistema de helpdesk que grava arquivos em tabelas do banco de dados. Eu particularmente acredito que a prática seja uma péssima idéia, pois aumenta o tamanho do banco consideravelmente e deixa-o lento, além de que existem sérias limitações do MySQL para o trabalho com os arquivos.

O problema foi que, ao anexar arquivos maiores que 1MB, o site não conseguia mais exibir o arquivo para download (isso quando se conseguia fazer o upload desses arquivos). Com uma breve pesquisa pude notar que, por limitações do protocolo web e devido à configuração do MySQL uma query tem limitações de trabalho com tamanhos grandes de arquivos.

O problema foi resolvido quando alterei uma variável do MySQL que indica qual o tamanho máximo que uma única query poderá ter. Por padrão o tamanho pode vir limitado para preservar a memória utilizada pelo BD. Essa variável pode ser exibida com o comando:

show variables like ‘%max_allowed_packet%’

A variável pode ser alterada com o comando:
set max_allowed_packet = 16000000

Para quem quer detalhes de como trabalhar com arquivos no banco, o Paulinho Michelazzo escreveu um ótimo artigo no site linha de código.
.

Java vs PHP vs Rails

Tim Bray (SUN) fez uma comparação entre as linguagens levando em consideração os itens Escalabilidade, Velocidade no Desenvolvimento, Disponibilidade de Ferramentas e manutanção. O resultado é curioso:

veja a postagem completa

comparison-java-php-rubyDe acordo com a comparação, Rails teria manutenção mais facilitada que Java, mas muitos desenvolvedores reconhecem que Ruby (linguagem utilizada para desenvolvimento com Rails) tem muitos símbolos e artifícios que podem confundir programadores experientes em outras plataformas.

Muitas Linguagens de Programação

Nos últimos anos observamos a popularização e o surgimento de várias linguagens que propõem um desenvolvimento web diferenciado. Tive um primeiro contato com Python (que acredito ser a mais antiga entre as três, li alguns artigos sobre Ruby on Rails e acessei o site da Water (linguagem desenvolvida pelo MIT, se não me engano baseada em LISP).

Será que precisamos de novas linguagens? No que elas realmente se diferenciam das demais linguagens? Quais vantagens concretas obteremos com a utilização delas? Será que essa multiplicação de tecnologias não ajuda a dissolver nosso conhecimento ao invés de focá-lo em um determinado caminho? Cada tecnologia tem sua aplicação, mas não seria mais sensato transformar uma única plataforma para atender várias necessidades? Java e .NET atingirão esse objetivo?

O Futuro em 3D

Você estará andando no centro de Londres e será capaz de ver as lojas e o tráfego local. Será possível andar dentro da loja e interagir com as mercadorias na prateleira, não na interface Web 2D que temos hoje, mas em um ambiente virtual 3D completo“.

Imagine que esta situação está se aproximando. Você navegará na web não na forma como a realizamos hoje, mas sim em um ambiente muito próximo ao qual conhecemos, com proporções e profundidade. Cidades que existem apenas no mundo virtual? Quem sabe. A tecnologia 3D está avançando, e recentemente li um artigo interessante no site Imasters que dá uma boa idéia de como as tecnologias baseadas em engines são desenvolvidas.

Exemplo 1: Lexus – necessário instalar um activex.
Exemplo 2: Demicron – acesse Virtual Art Gallery. Java.

Usabilidade e Sinergia

Muito se discute sobre a Usabilidade na Internet. Não a conhecia, em consciência, antes de ler o livro “Projetando Websites” de Jacob Nielsen. Para quem não conhece o termo, Usabilidade é a medida da qualidade e eficiência da experiência do usuário (ou cliente) em relação a um determinado produto, no caso sites, e ela se baseia em três pilares: efetividade, eficiência e satisfação.

A Usabilidade, sem sombra de dúvida, deve ser aplicada ao desenvolvimento de sites e sistemas web. Mas ela se modifica de acordo com a experiência do usuário no mundo online e o projetista deve estar antenado a este fato. Um exemplo disso é a afirmação de Nielsen em seu livro que para a boa usabilidade os links devem ter formato padrão, na cor azul e sublinhado. Isso com certeza garante com que qualquer ser humano, independentemente de sua cultura ou conhecimento e de qual dispositivo ele usa para acessar a internet possa seguramente identificar um link. Porém muitos usuários já são habituados a procurar por links em palavras destacadas no texto (por formatação diferenciada como o negrito por exemplo) ou alocadas em áreas especiais no site que, mesmo não possuindo o formato padrão são identificadas como tal. Nesse caso a Usabilidade se modificou de acordo com a experiência dos usuários sobre o produto manipulado. Se o projetista detectar qual é o senso comum de Usabilidade para o target do seu site ele poderá inovar em sua interface sem que a Usabilidade seja agredida.

Muitos projetistas de sites resolveram seguir essa linha e nos mostraram sites ricos em conteúdo, com tempo de download rápido, com uma navegação fácil, eficaz e facilmente indexáveis pelos mecanismos de busca. O problema em seguir radicalmente essa tendência é que o projetista acaba deixando de lado alguns fatores importantes para a captação do usuário, que no final das contas é um ser humano que é seduzido pela sinergia causada pelos elementos de um produto e que geralmente acaba pagando muito bem por ela (e se levarmos em conta que cada acesso tem seu preço essa tal sinergia pode acabar ficando ainda mais interessante).

Acredito que o equilíbrio seja a melhor forma de desenvolver um site. Usabilidade e sinergia devem andar juntas em trabalhos de Mídia Interativa. Todos os aspectos que podem ser explorados são “armas” na mão do projetista e ele deve usá-las da melhor forma possível. Um exemplo disso são os trabalhos desenvolvidos pela agência 2Advanced, os quais acompanho desde o início de minha carreira (eu e a torcida do flamengo, :) ). Caso você ainda não os conheça, acesse o site e clique no link portfolio (que não está em azul sublinhado mas tenho certeza que você não terá dificuldade nenhuma em encontrar).

Um bom exemplo de sinergia num trabalho multimidia: um comercial sobre suprimentos de 30 segundos. Você vai precisar do quicktime para visualizar.