Dica rápida: Executar um arquivo batch através do PHP

Uma dica rápida pra quem está tentando executar um arquivo .bat usando o php. Dê permissão ao usuário do apache ou IIS para executar o cmd.exe, feito isso, chame o seu bat usando como ponte  prompt de comando: exec(“cmd.exe \c arquivo.bat”)

Lembre-se que seu script batch não deve ter interação com o usuário ;)

Abrasss

1 comment Outubro 13, 2009

JasperServer – Backup/Export Repositório

O JasperServer é uma excelente opção gratuita para desenvolver relatórios de forma profissional, rápida (na maioria das vezes) e segura. Não sei porque parece que não ganhou muitos adaptos ou os usuários não costumam falar sobre a ferramenta :) . É muito difícil achar algum material sobre Jasper/iReports. Então vou dando minhas trumbicadas diárias e postando aqui as soluções que encontro e/ou invento.

Hoje precisei publicar um repositório do JasperServer em um servidor de desenvolvimento. Já vi por ai que muita gente dizendo que faz o backup/export usando o dump do banco do jasper server. Não me pareceu uma opção muito segura e resolvi procurar uma outra forma de fazer e dai lembrei do js-export e js-import que usei para migrar do jasperserver 3.1 para o 3.5 (Upgrade do JasperServer 3.1 para o 3.5). Esses dois scripts, como o nome já diz, exportam e importam dados do repositório do JS. Para exportar todos os dados do repositório, use o comando:

Linux:

js-export.sh --everything --output-zip js-backup.zip

Windows:

js-export.bat --everything --output-zip js-backup.zip

Onde –everything diz que tudo será exportado, –output-zip indica que o formato de saída será um arquivo compactado e js-backup.zip é o arquivo de saída.

obs.: Os scripts citados estão no diretório <JASPERSERVER_HOME>/scripts

Para exportar apenas um ou N repositórios, basta usar a opção –uris.

Linux:

js-export.sh --uris /reports/samples,/reports/cms --output-zip js-backup.zip

Windows:

js-export.bat --uris /reports/samples,/reports/cms --output-zip js-backup.zip

Para importar os dados, execute o js-import:

Linux:

js-import.sh --input-zip js-backup.zip

Windows:

js-import.bat --input-zip js-backup.zip

Se o repositório já existir, use a opção –update.

Não se desespere se aparecer um erro do tipo:
blábláblá bundles.jsexceptions_messages, locale pt_BR blábláblá
jsexception.folder.details.not.found

ou ainda:
blábláblá jsexception.uri.not.found

Fique calmo, provavelmente foi um erro de digitação no js-export. Cuidado com as “/” e com as letras maiúsculas e minúsculas. Ao informar o caminho para o repositório, coloque extamente o caminho apresentado no JasperServer.

Abraços e até o próximo post.

Add comment Setembro 15, 2009

Listando conteúdo de um arquivo sem repetição usando cat + sed + sort

Hoje precisei fazer um parse em um arquivo de configuração de um script de backup de bases de dados MySQL. O arquivo tem os dados de acesso de vários bancos, organizados por linha e estruturado da seguinte forma:

servidor porta banco usuario senha

O objetivo de fazer o parse nesse arquivo era de recuperar as duas primeiras colunas (servidor e porta) para formar o path de onde os arquivos sql estão armazenados, já que o dump é feito de acordo com o servidor, instância (porta) e período (mês-ano). Um caminho válido seria:
/media/servidor.com.br/3306/09-2009.

Meu problema é que existem várias entradas para a mesma instância do MySQL (Servidor/Porta) e precisava de um lista sem duplicidade, como num SELECT DISTINCT.
Para resolver o problema basta usar a linha de comando:

cat arquivo | sed -e 's/\(.*\) \(.*\) \(.*\) \(.*\) \(.*\)/\1\/\2/' | sort -u

Mas o que diabos isso ai faz? De uma forma bem resumida, o comando acima realiza a leitura do arquivo e passa a saída via pipe para o sed. O sed por sua vez, divide os dados em cinco colunas (cada \(.*\) representa uma coluna) e retorna como saída apenas as duas primeiras (servidor e porta no sed é o trecho /\1\/\2/) e passa o resultado para o comando sort. O sort é que faz a “mágica” do DISTINCT, sort -u exibe apenas as linhas únicas :p

Problema resolvido, mais uma batalha vencida :D

Abrasss

2 comments Setembro 2, 2009

MySQL – Comparação de nomes de tabelas

Essa semana estava publicando um banco de dados em ambiente de produção ( ambiente meio que completamente diferente do ambiente de desenvolvimento :S … mas tudo bem ) e o restore insistia em retornar uma mensagem de erro ao tentar inserir os registros pois não encontrava a tabela que tinha acabado de criar. Isso estava acontecendo pq em produção o nome da tabela estava em lower case e no script em upper case. Nunca prestei atenção nessa característica do mysql, pra mim era case insensitive … mas pelo visto não é :) – contra fatos, não há argumentos já dizia Bento XVI.

Procurando no pai dos burros, descobri que a solução é bem simples, basta definir a variável lower_case_table_names no my.cnf/my.ini … na seção mysqld.

Os valores possíveis são:

  • 0 (Zero) – Os nomes são armazenados na forma original, como informado no comando CREATE e a comparação é case sensitive.
  • 1 (Um) – Os nomes são armazenados em lower case e a comparação é case insensitive.
  • 2 (Dois) – Os nomes são armazenados na forma original, como informado no comando CREATE e a comparação é case insensitive – Essa forma funciona apenas em sistemas case insensitive.

Em meu caso eu tinha um servidor de desenvolvimento Linux e produção Windows Server (tudo a ver heheheh) e usei em ambos a opção 1. Ficando assim:

[mysqld]

lower_case_table_names = 1

Maiores detalhes: http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

Abraços

Add comment Agosto 20, 2009

CodeIgniter: Remover index.php da URL

Estou iniciando com o CodeIgniter e me deparei com um pequeno problema que aparentemente não chegava nem a ser um problema – remover o index.php da URL. Aparentemente era só criar uma regra no htaccess e a mágica estaria feita … não foi bem assim que aconteceu :)

Resolvi da seguinte forma:

1. Habilitar o ModRewrite no Apache

Abra o httpd.conf e descomente a linha LoadModule rewrite_module modules/mod_rewrite.so e reinicie o apache.

2.  htaccess

Crie um .htaccess na raiz do seu projeto. O arquivo deve estar no mesmo nível da pasta system.

RewriteEngine on
RewriteCond $1 !^(index\.php|system|images)
RewriteRule ^(.*)$ /index.php/$1

Muita atenção com as barras (/). A maioria das dicas e tutoriais que você vai encontrar por ai leva em conta que seu projeto está no document root e não em um alias (diretório virtual). Se você estiver usando um diretório virtual use o RewriteBase para indicar qual a url base de seu projeto e em RewriteRule remova a barra da frente de index.php para indicar que o arquivo não está na raiz do servidor (document root) e sim no diretório virtual.

RewriteEngine on
RewriteBase /meu_projeto/
RewriteCond $1 !^(index\.php|system|images)
RewriteRule ^(.*)$ index.php/$1

3. config.php

Aqui foi onde eu apanhei feito mala velha. Depois de criar a regra no htacess, o modrewrite não funcionava .. não sei bem ainda o por quê, mas encontrei em um fórum que era necessário alterar uma linha do config.php na pasta application.
Altere a linha $config['index_page'] = “index.php” para $config['index_page'] = “”.

Pronto, problema resolvido.

Abraços

12 comments Agosto 12, 2009

Upgrade do JasperServer 3.1 para o 3.5

O JasperServer chegou a sua versão 3.5. O servidor de relatórios está bem mais estável e ganhou algumas novas funcionalidades, dentre elas gráfico de gantt e criptografia para os usuários e dados de acesso JDBC.

Vou tentar resumir neste post os passos necessários para atualizar sua versão 3.1 para a versão 3.5. No site do projeto existe um guia em pdf para realizar este procedimento (baixe aqui). Aqui vou tentar ser um pouco mais prático e objetivo.

Passo 1

Baixe os binários do jasper server: JasperServer-3.5.0-bin.zip

Passo 2

Crie uma cópia de backup da pasta do jasperserver em webapps. Ex.: C:\Arquivos de programas\jasperserver-3.0\apache-tomcat\webapps\jasperserver

Passo 3

Apague a pasta original do jasperserver em webapps deixando o seu backup criado no passo anterior.

Passo 4

Crie um dump completo da base de dados do JasperServer no MySQL.
Ex.:  mysqldump –user=root –password jasperserver > js-db-3.1-dump.sql
Não sabe o que é mysqldump? Nunca ouviu falar? Pare tudo que você está fazendo e leia isso aqui

Passo 5

Abra o arquivo js.jdbc.properties em <JasperServer-3.1>/scripts/config e verifique se está configurado corretamente (nome da base de dados, porta, usuário, senha, etc). No meu caso C:\Arquivos de programas\jasperserver-3.1\scripts\config\js.jdbc.properties.

Feito isso, exporte seu repósitorio utilizando a ferramenta de importação e exportação que acompanha sua instalação do JasperServer. No prompt de comando vá até a pasta scripts/ e execute:

js-export.bat –everything –output-zip js-3.1-export.zip

Passo 6

Descompacte os binários do JasperServer 3.5. Copie o arquivo mysql_master.properties que está no diretório buildomatic/sample_conf para a raiz do diretório buildomatic com o nome default_master.properties. No final você terá um caminho como esse: <JasperServer-3.5>\buildomatic\default_master.properties.

Abra o arquivo default_master.properties e ajuste as propriedades de conexão e diretórios de acordo com a sua realidade. Repare na propriedade appServerDir. Ai você deve indicar a raiz da instalação do tomcat e não do jasperserver. Se sua instalação usa um tomcat embeded, você deve setar algo como: C:\\Arquivos de programas\\jasperserver-3.0\\apache-tomcat. Sim, precisa das barras duplas.

Feito isso, atualize as configurações do buildomatic com os comandos:

js-ant clean-config
js-ant gen-config

Copie o arquivo js-3.1-export.zip para a pasta buildomatic

Passo 7

Execute os comandos abaixo dentro da pasta buildomatic:

js-ant drop-js-db

js-ant create-js-db

js-ant init-js-db-ce

js-ant import-minimal-ce

js-ant import-upgrade-ce

js-ant import-sample-data-upgrade-ce

js-ant deploy-webapp-ce

Passo 8

Inicie o JasperServer

Passo 9

Verifique se está tudo funcionando corretamente e seja feliz :D

Recomendo usar a versão 3.5 do iReport para criar os relatórios para o JasperServer 3.5 mesmo porque relatórios feitos na versão 3.5 não funcionam nas versões anteriores do JasperServer.

É isso ai … até o próximo post

Add comment Junho 9, 2009

IReport – Páginas sobrepondo

Organizar o layout de relatórios no ireport não é uma tarefa das mais triviais, principalmente quando tem sub-relatórios e gráficos no meio do samba. É muito comum uma página sobrepor outra a depender da altura alcançada pelo elemento anterior – resultado de uma consulta de um sub-relatório por exemplo. Bom, consegui encontrar uma solução (ridícula por sinal … daquelas que da raiva de não ter pensado de tão óbvia que é). Todos componentes no ireport tem uma propriedade chamada position type. Essa propreidade pode assumir os valores:

  • Fix relative to top
    Valor padrão da propriedade, indica que o componente irá permanecer na mesma posição.
  • Fix relative to bottom
    A distância entre o componente e a base da banda não altera. O comportamente é parecido com o fix relative to top só que na direção inversa.
  • Float
    O componente “flutua” na banda. Ele é empurrado de acordo com a altura do elemento mais acima.

A “mágica” está em definir a propriedade position type do subreport como float. Pronto, ai sim tudo vai ser exibido como você gostaria que fosse exibido.

A solução está no guia do IReport

Até o próximo post

Add comment Junho 8, 2009

Google exibe Wave como “e-mail do futuro”

SÃO PAULO – O Google apresentou, durante a conferência para desenvolvedores I/O, o protótipo de um novo produto chamado Wave. Sem nenhuma modéstia, o gigante das buscas definiu seu projeto como “o e-mail do futuro”.

Interface Google Wave

Interface Google Wave

 A expressão é de Lars Rasmussen – coordenador do Wave e um dos cérebros por trás do Google Maps –  que apresentou o aplicativo online como algo que  “vai transformar o e-mail numa ferramenta integrada de colaboração, comunicação e rede social”.

 O Wave ainda não está disponível para testes dos usuários e uma versão beta é aguardada para qualquer momento “ainda este ano”.

Leia mais

Add comment Maio 28, 2009

Microsoft apresenta o Bing, seu novo mecanismo de buscas

Nova York – Segundo o CEO da empresa, Steve Ballmer, site vem com várias novas ferramentas e tem o objetivo de ser um “mecanismo de decisões”.

Steve Ballmer, Chief Executive Officer e principal executivo da Microsoft, apresentou nesta quinta-feira, durante a conferência All Things Digital, o Bing, seu novo site de buscas. Batizado oficialmente de Bing, o buscador começa a ser lançado mundialmente nos próximos dias e deve estar 100% no ar até a próxima quarta-feira. A estreia do site também é acompanhada de uma campanha publicitária milionária.

Leia mais

Add comment Maio 28, 2009

Microsoft libera SP2 do Windows Vista

SÃO PAULO – Usuários do Windows Vista em inglês e outros quatro idiomas já podem baixar e instalar a versão final do Service Pack 2 do sistema operacional da Microsoft.

 O segundo grande update do Vista contempla 800 atualizações, entre patchs de segurança e melhorias no desempenho do sistema, como gerenciamento mais veloz de dados e maior compatibilidade com hardware e software.

Leia mais

Add comment Maio 28, 2009

Previous Posts


 

Dezembro 2009
S T Q Q S S D
« Out    
 123456
78910111213
14151617181920
21222324252627
28293031  

Arquivos

Tópicos recentes

Tags

Addfont apache Aplicações audio bash Carreira desabilitado desativado Desktop diminuir Documento emprego Encoding Firefox FPDF Gerenciador Google GTK+ HDA iconv iReport Jasper jasperserver Java Linux MakeFont mudo mysql Partição PDF Perl PHP postgres procedure redimensionar Relatorio script shell shrink SLACKWARE som ttf2pt1 vaga Vista Windows

Categorias

Blogroll