Impressora HP: Impressão extremamente lenta

Sintomas: Impressora não realiza a impressão (Linux) ou imprime de forma extremamente lenta, imprimindo 1 faixa de cada vez (uns 15 ou 20 segundos de intervalo entre uma impressão e outra – Linux e Windows 7).

Diagnóstico: Provavelmente um dos cartuchos está com problema. Remova 1 cartucho de cada vez, mande um documento para a fila de impressão e verifique se a impressão voltou ao normal. Se sim, o cartucho com defeito é o que foi retirado.

Plus: No Linux, baixe a ferramenta gerenciamento de impressão da HP e o driver hplip no site: http://hplipopensource.com/hplip-web/index.html

IEOptLib – Internet Explorer Options Library

Fala meu povo!! Criei uma lib em C# para manipular as opções de internet do Windows. É possível modificar as zonas de segurança ou criar um nível personalizado. É bem útil para utilizar em conjunto com o componente WebBrowser (System.Windows.Forms.WebBrowser).

Basicamente a classe modifica as chaves do registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\[0-4], onde [0-4] é zona que deseja modificar.

  • 0 – Meu computador
  • 1 – Intranet local
  • 2 – Sites confiáveis
  • 3 – Internet
  • 4 – Sites restritos

Seguindo a regra acima, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3 representa as opções da zona de internet. Cada valor DWORD dentro dessa chave, representa um item das opções de internet.

Usar a lib é muito fácil, basta fazer a chamada ao método estático que representa a função que você deseja modificar e passar a zona e o novo valor que será atribuído.

InternetOptions.SetSecurityLevel(InternetOptions.INTERNET, InternetOptions.MEDIUM_LOW_LEVEL);

O exemplo acima altera o nível de segurança da zona de internet para médio-baixo.

Como a maioria das opções requer que o Internet Explorer seja reiniciado, é uma boa prática chamar o método antes de renderizar o componente WebBrowser (se esse for o seu foco). faça as chamadas na classe Program, antes de inicializar o Main Form.

O projeto encontra-se no source forge (http://sourceforge.net/projects/ieoptlib/) e é GPL.
Usei como referência um artigo da Microsoft (http://support.microsoft.com/kb/182569/pt-br) que explica muito bem como funciona a gestão das opções de internet.

Espero ter ajudado
Abrassss

Windows Firewall e conexões remotas no SQL Server 2008

Salve, salve!! Depois de um intervalo sem postar nada, deixo aqui uma dica rápida para liberar conexões remotas no SQL Server 2008. Crie um arquivo bat com o conteúdo:

@echo =========  SQL Server Ports  ===================
@echo Enabling SQLServer default instance port 1433
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Enabling Dedicated Admin Connection port 1434
netsh firewall set portopening TCP 1434 "SQL Admin Connection"
@echo Enabling conventional SQL Server Service Broker port 4022
netsh firewall set portopening TCP 4022 "SQL Service Broker"
@echo Enabling Transact-SQL Debugger/RPC port 135
netsh firewall set portopening TCP 135 "SQL Debugger/RPC"
@echo =========  Analysis Services Ports  ==============
@echo Enabling SSAS Default Instance port 2383
netsh firewall set portopening TCP 2383 "Analysis Services"
@echo Enabling SQL Server Browser Service port 2382
netsh firewall set portopening TCP 2382 "SQL Browser"
@echo =========  Misc Applications  ==============
@echo Enabling HTTP port 80
netsh firewall set portopening TCP 80 "HTTP"
@echo Enabling SSL port 443
netsh firewall set portopening TCP 443 "SSL"
@echo Enabling port for SQL Server Browser Service's 'Browse' Button
netsh firewall set portopening UDP 1434 "SQL Browser"
@echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK)
netsh firewall set multicastbroadcastresponse ENABLE

Execute o bat e seja feliz! Abraços

Editado
Tinha esquecido de colocar o link de onde vem o script original: http://support.microsoft.com/kb/968872

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

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.

Perl + DBI + MySQL

Essa semana precisei criar alguns scripts de migração e estatística de dados em bases MySQL. Esse tipo de problema é bem a area do Perl e Python. Ambos tem uma boa performance em tratamento de dados principalmente arquivos.

Vou tentar explicar como instalar os recursos necessários para fazer uma aplicação em Perl que possa manipular bases de dados em MySQL.

DBI

O DBI é uma interface de acesso e manipulação de dados. Funciona como uma camada entre o script perl e o driver especifico de um SGBD. Com o DBI não é necessário saber a API  de cada SGBD ( Oracle, MySQL, PostgreSQL, etc ). Quando um métido da interface é invocado, a ação é transferida para o driver especifico de forma transparente para o usuário final.

Vamo fazer o troço funcionar.

INGREDIENTES

  • Internet
  • Perl ou ActivePerl ( Caso seja usuário Windows )
  • Teclado

INSTALANDO

Vá até o shell ou prompt de comando e digite:

ppm install DBI

ppm install DBD-mysql

Pronto, agora é só incluir o modulo DBI e já está pronto para usar.

use strict;
use warnings;
use DBI;

my $conexao = DBI->connect('DBI:mysql:database=meu_banco;host=servidor;port=3306','usuario','senha');

É isso ai … a documentação está aqui: http://search.cpan.org/~timb/DBI/DBI.pm
divirtam-se!

Tomcat 6 – Falha ao inicializar serviço

Se ao tentar iniciar o tomcat 6 numa máquina com Windows XP você recebe o erro abaixo no log

=========================

[173 javajni.c] [error] Can’t create the specified module.
[764 prunsrv.c] [error] Failed creating java
D:\Programs\Java\jdk1.6.0\jre\bin\server\jvm.dll
[982 prunsrv.c] [error] ServiceStart returned 1

=========================

Basta copiar o arquivo msvcr71.dll da pasta bin do JRE ( JRE_HOME\bin\msvcr71.dll ) para a pasta windows ou para CATALINA_HOME\bin que seu problema estará resolvido.

Esse problema aconteceu comigo essa semana, duas máquinas com as mesmas versões de JRE, Tomcat e Windows mas apenas uma funcionava. E o mais engraçado é que a máquina que funcionava não tinha o arquivo msvcr71.dll nem na pasta Windows e muito menos na pasta bin do tomcat 😐 ????????

Mas por que isso acontece? … Só Deus e agora a Oracle sabem 🙂 – I Love PHP

Aplicações desktop com php – parte 2

Saudações phpzeiros! Depois de um tempo sem postar graças ao trabalho, estou de volta :D. E vamos voltar a série de posts de aplicações desktop com php-gtk. Hoje vamos falar um pouco de containers.

Containers são componentes (widgets) que encapsulam outros componentes. Janelas, painés, frames são exemplos de containers.

Os dois tipos básicos mais usados de containers são GtkBin e GtkBox. O primeiro só permite um componente filho, enquanto o segundo permite que vários widgets sejam acoplados ao container. Essas duas classes são abstratas e como tal não podem ser instânciadas diretamente.

Vamos então falar dos containers mais usados:

  • GtkHBox, GtkVBox
    Organiza os componentes filhos em uma única linha horizontal (GtkHBox) da esquerda para a direita ou vertical (GtkVBox) do topo para a base. Os métodos usado para adicionar os componentes são pack_start e pack_end.

    Estrutura do GtkHBox
    Componente 1 Componente 2 Componente n
    Estrutura do GtkVBox
    Componente 1
    Componente 2
    Componente n
    $vbox = new GtkVBox();
    $vbox->pack_start( new GtkEntry() );
    $vbox->pack_start( new GtkEntry() );
    $wnd->add($vbox);
  • GtkTable
    Organiza os componentes no formato de uma tabela usando linhas e colunas. Os componentes podem ocupar mais de uma linha/coluna.
    Os componentes são adicionados usando o método attach do GtkTable. Nele você deve dizer em que linha/coluna o componente deve iniciar e terminar.

    $table->attach($label, 0, 2, 0, 1);
    

    No exemplo acima, o label vai iniciar na coluna 0 e terminar na coluna 2 (ocupando duas colunas), iniciar na linha 0 e terminar na linha 1 (ocupando 1 linha apenas).

  • GtkFixed
    O mais flexivel na minha opinião. O desenvolvedor informa as coordenadas x e y em que o componente deve ficar posicionado na tela. O método usado para adicionar os componentes é o put ou move. Para tal, basta indicar a posição (x,y) de onde o componente deve ser colocado no formulário.

    $fixed->put( new GtkEntry(), 8, 24);
  • GtkWindow
    Esse é o container mais usado. Como se trata de um GtkBin, só permite apenas um componente filho. O método usado para adicionar os componentes é o add.

    $win = new GtkWindow();
    $win-&gt;set_title("Exemplo GtkWindow");
    
    $fixed = new GtkFixed();
    $fixed->put( new GtkEntry(), 8, 24);
    
    $win-&gt;add($fixed);

É isso ai galera. Até o próximo post.

Aplicações Desktop com PHP – Parte 1

Que o PHP é uma das linguagens de programação mais usadas em ambiente web, todo mundo sabe. Mas pouca gente sabe que também é possível criar aplicações desktop com ela. E é isso que nós iremos fazer. Para tal, iremos utilizar o PHP-GTK.

O que é GTK/GTK+?
O GTK (Gimp Tool Kit) é uma poderosa biblioteca para desenvolvimento de aplicações GUI multi-plataforma, muito utilizada no mundo linux e que vem ganhando seu espaço também no windows.

PHP-GTK
É linguagem binding que permite aos desenvolvedores PHP criarem aplicações gráficas multi-plataforma sem abrir mão dos recursos do PHP.

Vamos então instalar os trecos \o/

Ingredientes

  1. PHP-GTK
  2. Uma caneca com café

Instalação do PHP-GTK no Windows
Baixe aqui http://sourceforge.net/project/downloading.php?groupname=agata&filename=php-gtk2b.exe&use_mirror=ufpr o instalador, execute-o e seja feliz.

Instalação do PHP-GTK no Linux
Baixe aqui http://sourceforge.net/project/downloading.php?groupname=agata&filename=php-gtk2b.tar.gz&use_mirror=ufpr o pacote pré-compilado e siga os passos abaixo:

# tar -xvzf php-gtk2b.tar.gz
# mv php-gtk2 /usr/local/
# ln -sf /usr/local/php-gtk2/bin/php /usr/bin/php-gtk2

1,2,3, testando
Para testar crie um novo arquivo chamdo exemplo.php com o código abaixo:

<?php
if (!class_exists(‘gtk’)) {
die(“O módulo php-gtk2 não foi carregado corretamente. Verifique seu php.ini.”);
}$wnd = &new GtkWindow();
$wnd->set_title(‘Exemplo’);
$wnd->connect_simple(‘destroy’, array(‘gtk’, ‘main_quit’));
$label = &new GtkLabel(“Perdeu preiboy!'”);
$wnd->add($label);

$wnd->show_all();
Gtk::main();
?>

Para executar, vá até a linha de comando e execute:
No Linux

# php-gtk2 exemplo.php

No Windows

C:\php-gtk2\php.exe exemplo.php

É isso ai. No próximo post vamos explorar melhor os recursos do PHP-GTK.

Pra quem quiser saber mais sobre o projeto:
http://www.php-gtk.com.br/
http://gtk.php.net/
Abraços!

Ataque de pelanca do Windows Vista

No último final de semana pude finalmente tirar um tempo pra instalar o bom e velho slackware no notebook. Lembro que saiu uma matéria no WNews a um tempo atrás falando sobre o novo gerenciador de partições do Vista. Levando em conta os problemas de compatibilidade dos programas com o novo windows ( incluindo o partition magic ), um bom particionador já embutido no sistema ia quebrar um galhão.

No vídeo o cara cria, apaga, redimensiona, joga pra cima, faz um catatau de coisas com as partições. Fiquei até empolgado. Como neste final de semana resolvi instalar o slack 12 e precisava redimensionar a partição onde o vista está instalado e assim criar as outras, não tive dúvidas, fui pro gerenciador ( compmgmt.msc ) cliquei na opção Diminuir ( Shrink ) e me deparo com um botão desabilitado :S.

Isso acontece, entre n motivos, porque o desfragmentador de arquivos do vista não move os arquivos da MFT ( Master File Table ) para o início da partição. Daí você não pode diminuir a dita cuja. Vamos então a solução:

INGREDIENTES

  • PerfectDisk 2008
  • Algum conhecimento
  • Paciência

Primeiramente, faça limpeza de disco usando o próprio assistente do windows ou o CCleaner
(http://www.ccleaner.com/download)
Desabilite restauração, arquivos de paginação e o despejo de memória fisica. Todas as opções se encontram nas propriedades do sistema (tecla win + break) nas abas Proteção do Sistema; Desempenho; Inicialização & Recuperação.

Depois que todos os itens estiverem desabilitados reinicie o computador. Baixa/instale/execute o PerfectDisk2008 ( http://www.raxco.com/products/downloadit/pd_download_home.cfm ).

É necessário fazer uma desfragmentação normal, que você pode fazer usando o próprio vista, o perfectdisk ou o auslogics disc e a outra é de arquivos de sistema … esse vai mover os famigerados MFTs. Esta última use o PerfectDisk. Escolha a opção System Files. Esse processo pode demorar um pouco eu não sei o tempo porque larguei o troço lá e fui dormir 😀

Depois de finalizar as desfragmentações, a opção estará milagrosamente habilitada … diminua sua partição, habilite novamente as opções de sistema que desabilitou lá em cima, reinicie o PC e seja feliz :D.