Desenvolva aplicações Desktop com PHP sem usar PHP-GTK

Normalmente quando se pensa em desenvolver uma aplicação desktop com php, ou seja, com janelinhas e tudo mais vêm logo a cabeça utilizar php-gtk, gtk como a api gráfica para manipulação dos objetos visuais. No entanto uma nova abordagem está surgindo com o desenvolvimento de aplicações baseadas em web para desktop, aplicações essas que são autoexecutáveis, pois podem ser executadas diretamente de um arquivo .exe, por exemplo, sem a necessidade de se entrar em uma url específica. Na nova interface gráfica do windows 8 essa abordagem fica mais clara, pois o que vemos nele são aplicações desenvolvidas como aplicações web que rodam diretamente no desktop como uma aplicações desktop.

Com o projeto PHP Desktop (Chromium) (https://code.google.com/p/phpdesktop-chromium) essa possibilidade também é levada ao desenvolvimento com php. Basicamente o projeto se vale dos novos recursos da nova versão do php, como um servidor web embutido e o Chromium, que é uma versão livre do navegador Chrome do Google, que possui de forma nativa a possibilidade de rodar aplicações web no modo desktop, abaixo um trecho do texto do próprio autor do projeto que deixa bem claro o modo de operação:

PHP Desktop (Chromium) é um projeto de código aberto desenvolvido por Guilherme Alencar para prover um meio de desenvolver aplicações desktop nativas utilizando tecnologias web como PHP, HTML5, JS e SQLite. Engloba um navegador web (Chromium, uma versão livre do navegador Chrome do Google), um servidor web embutido (nativo da linguagem PHP desde a sua versão 5.4.0), e o interpretador PHP, com a extensão sqlite3 para banco de dados da aplicação.

A idéia é inspirada no conceito de SSB (Site-Specific Browser), que consiste em adaptar um navegador para rodar aplicações web no modo desktop de modo específico para sua aplicação. Em alguns navegadores esta funcionalidade é adicionada com Extensões, mas no Chromium esta função é nativa com a opção -app=”site”.

O modo de desenvolver é o mesmo para uma aplicação Web para WAMP (Windows, Apache, MySQL e PHP). Coloca-se a aplicação na pasta www, em que o primeiro arquivo a ser executado deve-se chamar index.php ou index.html. Depois, basta executar o Launcher.exe que executará o servidor PHP (phpdesktop.exe, que é o mesmo executável do php.exe do zip obtido em php.net), e o navegador Chromium apontando para o endereço 127.0.0.1 na porta 54007 (http://127.0.0.1:54007/). Se a janela for fechada, o executável phpdesktop.exe é eliminado da lista de processos do Windows utilizando Javascript e PHP.

O pacote completo do projeto com um exemplo de aplicação na pasta www pode ser baixado diretamente de https://code.google.com/p/phpdesktop-chromium/downloads/list

Trabalhando com Datas no Sqlite

Muitas pessoas têm dúvida na hora de trabalhar com datas no sqlite, o que é aceitável já que sqlite não tem um tipo data que possa ser especificado para um campo, como date ou datetime, por exemplo, o que nos resta então é usar os tipos nativos do sqlite para armazenar e manipular as datas, ou seja, podemos usar:

TEXT para armazenar uma string com o valor da data, exemplo “2013-03-03 21:21:00”, dessa forma podemos ordenar os valores de acordo com o campo data sem problemas.

Repare que no trecho do código abaixo o campo datahora e ultima são criados com o tipo TEXT.

CREATE TABLE IF NOT EXISTS conta
             (codigo INTEGER PRIMARY KEY AUTOINCREMENT, 
             datahora TEXT, 
             ultima TEXT, 
             descricao TEXT, 
             status_excluido INTEGER DEFAULT 0)'

O próximo trecho de código mostra como gravar o DATETIME atual do sistema usando uma das funções de manipulação de datas do Sqlite:

INSERT INTO conta(datahora, descricao) values(datetime('now'),'Exemplo de texto');

Existem ainda duas outras formas recomendas de trabalhar com datas no Sqlite, que são:

– Usar um campo do tipo REAL e armazenar as datas no formato Juliano.

– Por último, usar um campo do tipo INTEGER para armazenar um valor UNIX TIME, por exemplo.

Os dois últimos tem a vantagem de permitirem comparações entre datas, subtração ou adição, de forma mais simples e direta.

Abaixo alguns links de referência que podem ser bastante úteis na manipulação de datas com Sqlite:

Lista de funções para manipulação de datas
http://www.sqlite.org/lang_datefunc.html

Documentação sobre Datas e outros tipos no Sqlite
http://www.sqlite.org/datatype3.html

Adicionar impressora Epson LX-300 no Windows 7 x64 (64 bits)

O Windows 7 não possui um driver específico para a impressora Epson lx-300 primeira versão, possui somente os drivers para as versões lx-300+ e lx-300+ II e mais recentes, no entanto a microsoft disponibiliza um driver genérico que pode ser usado como alternativa para todas as versões mais antigas dessas impressoras matriciais da Epson, que é o EPSON LX Series 1 (80)

O procedimento de instalação é bastante simples como descrito abaixo:

1 – Conecte sua impressora ao computador;
2 – Menu Iniciar-> Dispositivos e Impressoras -> Adicionar Impressora -> Adicionar uma Impressora Local -> Usar porta existente: LPT1 -> Avançar ;
3 – Escolha o Fabricante: Epson -> Impressora: EPSON LX Series 1 (80);
4 – Escolha um Nome para a impressora e Finalize.

Ao final temos a impressora EPSON LX SERIES 1 (80) adicionada equivalente a LX-300.

Um tutorial detalhado pode ser encontrado no seguinte link!

Fonte: http://www.w7forums.com/epson-lx-300-printer-driver-windows-7-64-bit-t6079.html

Espero ter ajudado!

Solução da mensagem de erro “O Windows não pode se conectar à impressora”, Códido 0x0000007e

Alguns usuários de sistema Windows 7 ou Vista baseados na arquitetura x64, ou seja, 64 bits estão sofrendo com um problema ao tentar se instalar uma impressa de rede.

Mensagem de erro recebida é a seguinte: “O Windows não pode se conectar à impressora” ao tentar criar uma conexão de apontar e imprimir para uma impressora remota, seguida do código de  erro 0x0000007e.

A Microsoft apresenta a solução para o problema e um hotfix correspondente no seguinte link (http://support.microsoft.com/kb/982728/pt-br), no entanto o mesmo não funciona na maioria dos casos e a solução é bastante simples, como descrita a seguir:

1-Adicione a impressora como uma impressora local e seu respectivo driver correto;
2-Nas propriedades da impressora e na aba Portas adicione uma nova porta do tipo Local Port e defina o nome da nova porta com o caminho do compartilhamento da impressora, exemplo: \\NomeDoComputador\CompartilhamentoImpressora
porta

Pronto! simples e funcional!

Se funcionou com você compartilhe essa informação com seus amigos usando um dos ícones abaixo!

Fechar uma aplicação com Phonegap e Javascript

Fechar uma aplicação android, ou criar um botão para fechar a aplicação se torna uma tarefa bastante simples quando utilizamos o framework de desenvolvimento Phonegap, se você não conhece recomendo fortemente ir até o site http://phonegap.com/ e dar uma olhada.

Basicamente ele permite o desenvolvimento multiplataforma em javascript/html, ou seja, ele permite que você desenvolva em javascript/html para basicamente qualquer plataforma existe no mercado, seja ela Android, iOS ou Windows Phone utilizando o mesmo código em qualquer uma dessas.

Phonegap nos permite usar o método: navigator.app.exitApp(); que pode se chamado a qualquer momento de dentro de uma função Javascript.

function exitFromApp(){
   console.log("Fechando Aplicação");
   navigator.app.exitApp();
}

Redirecionando entre páginas ou telas com Phonegap

O redirecionamento entre página com Phonegap é bastante simples e totalmente baseado em javascript, abaixo uma função e exemplo de utilização da mesma.

function callAnothePage(path)
{
window.location = path;
}
<a onclick="callAnothePage('tela2.html')" >Tela 2</a>

 

Adicionando um editor HTML e Javascript ao Eclipse

Quem usa o eclipse pode necessitar com certa frequência editar um arquivo html ou javascript no seu projeto, seja ele um projeto web ou até mesmo um projeto para dispositivo móvel usando o framework phonegap, por exemplo. O problema é que o eclipse não vêm preparado para editar html ou javascript e você precisa adicionar uma pacote extra ao Eclipse, abaixo explico o procedimento simples para instalar tais pacotes ou qualquer outro pacote:

Entre menu Help->Install New Software

eclipse ajuda

Na opção Work with selecione Juno – http://download.eclipse.org/releases/junonewsoftwareExpanda a opção Web, Xml, Java EEnewsoftware1

newsoftware2

Finalmente selecione os pacotes JavaScript Development Tools e Web Page Editor e clique em Next newsoftware3

 

A instalação demorá alguns minutos e será preciso reiniciar sua IDE para finalizar o processo.

menu

 

Ao final do processo você terá a opção de abrir os arquivos com os respectivos editores de HTML e Javascript.