Detectando a primeira execução de um aplicativo Android com Phonegap

Quando desenvolvemos aplicativos para dispositivos móveis usando SQLITE precisamos criar as tabelas durante a execução do aplicativo já que não temos disponível um gerenciador de banco de dados para que a tabela seja criada previamente no dispositivo, o problema é que precisamos criar um artifício para que esse trecho de código da criação da tabela seja executado somente uma vez, ou seja, na primeira execução do aplicativo.

A solução é bastante simples, lembrando que tal solução se aplica somente a aplicativos desenvolvidos com Phonegap, basicamente devemos criar um flag, uma variável de controle, na primeira execução do aplicativo e armazenar ela de modo local, para que possa ser consultada a qualquer momento na aplicação.

function onDeviceReady() {
    //Criamos e armazenamos a variável local
    var firstrun = window.localStorage.getItem("runned");

    if ( firstrun == null ) {
        //Trecho que deve ser executado somente uma vez
        //Gravamos um valor qualquer no flag para que possa ser feita a comparação
        window.localStorage.setItem("runned", "1");
    }else{
        //Trecho que deve ser executado todas as vezes
    }
}

NumberFormat com JavaScript – Formatando Números com JavaScript

Quando trabalhamos com numerais sempre precisamos fazer a conversão do formato de números usados, pois a maioria dos bancos de dados usa a notação de .(ponto) para casas decimais e não usa nenhum separador para casa de milhar, por exemplo.

Notação brasileira:
$1.234,54

Notação  Americana, usada nos bancos de dados:

$1234.54

Algumas linguagens de programação já possuem funções nativas para tal conversão, no entanto o mesmo não ocorre com JavaScript, se você quer gravar algum dado no banco de dados como SQLITE isso pode ser um problema, já que a conversão será obrigatória.

Para essa tarefa podemos usar NumberFormat.js, que pode ser incluído na página para a formatação de números, com opção de formatação de tipo de moeda, percentual, grupamento de dígitos para casas decimais e de milhar com separadores customizáveis.

Como utilizar o .js:

Antes de tudo você deve fazer a inclusão do arquivo numberFormat154.js na sua página

<script type="text/javascript" src="numberFormat154.js"></script>

Agora basta instanciar um novo objeto JavaScript e definir os parâmetros necessários:

Um exemplo de conversão do formato em Real Brasileiro (R$) para a notação americana utilizada na maioria do bancos de dados:

var num = new NumberFormat();
num.setInputDecimal(',');
num.setNumber(valor.value); // valor.value é '1.000,24'
num.setPlaces('2', false);
num.setCurrencyValue('');
num.setCurrency(true);
num.setCurrencyPosition(num.LEFT_OUTSIDE);
num.setNegativeFormat(num.LEFT_DASH);
num.setNegativeRed(false);
num.setSeparators(false, ',', ',');
valor.value = num.toFormatted(); //valor.value é '1000.24'

Agora um exemplo inverso, de conversão da notação americana para R$

var num = new NumberFormat();
num.setInputDecimal('.');
num.setNumber(obj.value); // obj.value é '-1000.24'
num.setPlaces('2', false);
num.setCurrencyValue('');
num.setCurrency(true);
num.setCurrencyPosition(num.LEFT_OUTSIDE);
num.setNegativeFormat(num.LEFT_DASH);
num.setNegativeRed(false);
num.setSeparators(true, '.', ',');
obj.value = num.toFormatted(); //obj.value é '-1.000,24'

A página do projeto inclui um simulador de configurações de parâmetros que pode ser encontrado em: http://www.mredkj.com/javascript/numberFormatPage2.html

O pacote js pode ser baixado no seguinte enderenço:
http://www.mredkj.com/javascript/nfdocs.html#downloadit

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!