A utilização dos scripts PHP e a sua funcionalidade por meios dos eletrônicos móveis a exemplo dos iPads, Tablets, iPods, SmartPhones entre outros além do microcomputador tradicional tem como utilidade no login em páginas de internet que fornecem acesso a usuários cadastrados em uma determinada homepage. Outros scripts em PHP tratam da criptografia de dados, envio de mensagens de correio eletrônico através de formulários em páginas html, conexão com banco de dados como por exemplo o MySql, inclusão de registro de cadastro e retorno de consultas de dados em um database entre uma variede de outras funções que podem ser encontradas nas literaturas à venda e na sua própria homepage do PHP . A sua versão PHP atual é a de número 5.
O processo de login funciona em duas etapas estabelecendo uma comunicação de aplicativos cliente e servidor em que uma parte do script usando os recursos de formulário do próprio HTML como o tag form por exemplo:
method = "post"
A outra parte do lado do servidor consistirá do programa server do modulo do PHP (php.exe, php-cgi.exe) aonde um arquivo necessariamente com a extensão PHP
consistindo de um script na linguagem de programação PHP é responsável pelo processo de requisição deste serviço ao servido; neste caso o arquivo
login.php junto com os dados do campo do formulário da página HTML tag input exemplo:
Segue abaixo um exemplo para o arquivo login.php com a estrutura de programação na linguagem PHP
este ficará instalado no servidor web complementando a função de login.
<?php>
if (!isset($_COOKIE['cookiewpage'])) $_COOKIE['cookiewpage'] = 0;
$cookiewpage = $_COOKIE['cookiewpage'] + 1;
setcookie('cookiewpage',$cookiewpage,time()+3600*24*365);
$username = $_POST['username'];
$password = $_POST['password'];
$self = $_SERVER['PHP_SELF'];
$referer = $_SERVER['HTTP_REFERER'];
session_cache_limiter('private');
if( ( !$username ) or ( !$password ) )
{ header( "Location:$referer" ); exit(); }
$conn=@mysql_connect( "localhost", "auth_data", "42179654" ) or die( "Nao foi possivel conectar !" );
$rs = @mysql_select_db( "logsenhadta", $conn ) or die( "Nao foi possivel selecionar o database" );
$sql = "select * from formulsenha where nosuario =\"$username\" and nsenha = ( \"$password\" )";
$rs = mysql_query( $sql, $conn ) or die( "Nao foi possivel executar a consulta." );
$num = mysql_numrows( $rs );
$vsi_error = $_SESSION['startses'];
if($vsi_error == IN00 ){
header( "Location: http://www.acessorelacional.com.br/php/errorlog.php" );
exit();
}
if( $num != 0 ){
session_start();
$_SESSION['inicio'] = 'IN01';
header("Location: http://www.acessorelacional.com.br/php/rclientes.php");
exit();
}else{
$conta++;
if($cookiewpage >3 ){
session_start();
$_SESSION['inicio'] = 'IN02';
header("Location: http://www.acessorelacional.com.br/php/errolog.php");
setcookie("cookiewpage", "", time()-3600);
exit();
}
header( "Location: http://www.acessorelacional.com.br/php/login.php" );
exit();
}
<?>
O texto do arquivo anterior inicia com a identificação de um arquivo php indicado pelo identificador <php> e terminando com o delimitador <?> apresentaremos uma resumida informação deste arquivo esperamos que o leitor tenha algum conhecimento na linguagem de script PHP. Nas primeira linha deste arquivo iniciamos uma verificação da exitência de um arquivo de http cookie neste exemplo será verificado a variável com o nome cookiewpage caso este não exista é criado um pela função PHP setcookie() que é definida pelo manual PHP como.
bool setcookie ( string &name [, string &value [, int &expire = 0 [, string &path [, string &domain [, bool &secure = false [, bool &httponly = false ]]]]]] )
A variável $_COOKIE['cookiewpage'] + 1 incrementa um contador de visitas e a função
setcookie('cookiewpage', $cookiewpage, time() + 3600 * 24 * 365) estabelece um cookie escrevendo o mesmo em
cache dos arquivos temporários de um browser para internet, neste é incluiudo um número aleatório
resultado da função time() e um ajustador que calcula um horário a partir do produto dos valores numéricos
3600 * 24 * 365. As váriaveis locais $username, $password registram o nome e a senha do usuário do método POST do
formulário de login html as variávies $self, e $referer coletam informações de variávies local necessárias
para o processamento no servidor, os termos $_POST, $_SERVER representam uma função (um processo, um método ou procedure) própria do PHP configurativas
do script e da conecção. Os cookies são necessários junto com as funções do PHP session_start(), $_SESSION, session_cache_limiter("private") estes fornecem
um método de registro do início, duração e término de uma seção
de acesso a um conjunto de páginas localizadas em um servidor da internet por exemplo.
O RFC6265 fornece uma referência normativa para as interpretações dos parâmetros que compõem um http cookie há diferenças na escrita desta especificação para a internet em Javascript, PHP, VBscript e também da proprostas pela Microsoft, Netscape, Google e Yahoo, entretanto todas acabam atendendo a este mesmo propósito.
O PHP oferece suporte a uma série de drivers e também a linguagem SQL em se tratando banco de dados o código de logon acima utiliza as seguintes funções PHP sql: mysql_connect(), mysql_select_db(), na string de consulta $sql os termos SELECT FROM WHERE e AND, mysql_query() e mysql_numrows(). A função mysql_connect(string("default_host"), string("nome_de_usuario"), string("senha")) efetua a abertura de conecção com um servidor MySQL Server os principais parâmetros necessários são: um nome de host geralmente o localhost no lado de um web server, um nome de usuário cadastrado e a sua senha todos estes dados de configuração do lado também do servidor da web, geralmente é necessário ter um nome de domínio válido na internet, um inscrição em um serviço de hospedagem de páginas de internet; a expressão mysql_select_db(string("nome_do_database"), string("caracteres_de_coneccao")) seleciona um database existente através de seu nome apropriado passando os seguintes argumentos: logsenhadta nome do banco de dados, $conn a sua string de conecção descrita no código login.php; em seguida é preprado uma string de consulta a uma tabela presente no database em que se estabeleceu a conecção nesta tentamos selecionar da tabela formulsenha o campo nosuario e nsenha aonde estes dados sejem iguais a aqueles inseridos no formulário de login e repassados pelos termos $_POST as variávies $username e $password a partir deste ponto concluimos com a função mysql_query(string("a_sting_de_consulta")) este então envia a string de consulta MySQL query ao web server. A função expressa por $num = mysql_numrows( $rs ); conta o número de ocorrência da consulta acima 0 igual a falso, não foi encontrado o usuário com aquela senha e nome e 1 igual a verdadeiro em seguida caso verdadeiro o usuário é devidamente autorizado e direcionado as demais iniciando pela página do login no nosso exemplo a próxima página a ser acessada é a rclientes.php, em caso de falha de logon há um direcionamento para a página de login.php novamente, na terceira tentativa de login com erro há um redirecionamento para a página errorlog.php a variável $cookiewpage contem informações através do http cookie do número de tentivas de login.
Uma rede TCP/IP compartilha de outros recursos chamados também de protocolos como o FTP, SMTP, ARP, SNMP, UDP de um meio físico cabeamentos e placas comumente denominado como Ethernet 802.3, servidores de internet ou de rede local, computadores clientes, roteadores, switches e modems compondo uma rede, uma sub-rede local que ao mesmo tempo pode mater conectividade inclusive com redes de outros tipos de protocolos de rede.
Dependente também de computadores centrais informados nos programas DNS e BIND através de um número de IP onde os usuários estão devidamente cadastrados através de um nome de usuário e senha o próximo passo consiste no estabelecimento de um socket TCP através da atribuição de um endereço IP (IPV4 e IPV6) para rede local (192.168.0.0/16: endereço IP válidos no intervalo de 192.168.0.1 a 192.168.255.254; 172.16.0.0/12 intervalo de 172.16.0.1 a 172.31.255.254; 10.0.0.0/8 endereços IP válidos no intervalo de 10.0.0.1 a 10.255.255.254.) ou para a internet que é geralmente atribuído de modo dinâmico um número host de IP definido como um número de 32 bits (IPV4) - como expresso no exemplo dos endereços válidos anterior - e atualmente complementado pelo IPV6 utilizando endereços de 128 bits padronizado na RFC 2460.
Na a sua configuração alguns programas estão incluidos como integrantes do conjunto que compõem o TCP/IP estes na camada de rede chamada de aplicação alguns conhecidos com echo, time, finger, route, treceroute, tracert, ping, netstat, net, netsh, ipconfig entre outros disponíveis para os mais variados sistemas operacionais escritos na linguagem de programação C, estes últimos utilizando o mecanismo de transito de pacotes UDP datagrama diferindo do datasocket do TCP por não necessitarem de estabelecimento de conecção e capazes de efetuar as seguintes funções: teste de configuração e estado da conecção; lista usuários conectados a uma máquina, criação de rotas através da configuração do Netmask (255.X.X.X, 240.X.X.X, 10.X.X.X), default Gateway (exemplo: um roteador) e Interfaces (exemplo: placa de rede) utilizados pelos programas DHCP, dhcpd, DNS, BIND para o fluxo dos pacotes UDP, TCP entre máquinas e servidores de rede; localização de endereços de rede e nome de host que atuam como "routers" no transito dos dados pela rede; verificação de hosts que estão na rede acessíveis; informação das conecções e das portas em escuta estatística para o adaptador ethernet nos exemplos citados estes programas console apresentam funcionalidade tanto em uma rede local quanto para um microcomputador na internet.
Finalizando quando falamos de computadores em rede devemos apresentamos os demais exemplos de protocolos, estes por sua vez com aplicação dentro da complexidade das topologias de rede e de seus Sistemas Operacionais como em uma rede local e redes ponto a ponto (LAN, WAN, Wireless) e na rede internet: o NetBIOS/NetBEUI, LAN Manager 2.0, IPX/SPX, NWLink, SMB/CIFS, NCP, NTLM drivers de rede desenvolvido pelas empresas que têm seus programas conhecidos como Sistemas Operacional para os ambientes UNIX, LINUX, IBM, SUN e Microsoft entre outros.
O phpMyAdmin consistem um programa gráfico utilizado através de um browser de internet que comporta as funções e capaciadade de criação e administração de um banco da dados SQL, originalmente voltado para o popularmente conhecido programa de gerenciamento e manutenção de sistemas de banco de dados relacional (RDBMS) MySQL disponível (na versão Opensource e Comercial) para sistemas operacionais do tipo UNIX (distribuições do LINUX, FreeBSD entre outros) e também em versões para os sistemas operacionais da Microsoft.
Inicialmente para a criação e manipulação do dados de um database MySQL haveria a necessidade dos usuários terem também
de instalar em um microcomputador na configuração server os programas acessórios o programa server PHP, um Web server (Apache 2,
MS IIS 7), o próprio programa MySQL server 5, da invocação dos programas console do MySQL - mysql, myslqadmin, mysqlshow - criamos
o database e então depois as tabelas através do command line no console mysql:\ run nomedodatabase.sql
a extensao .sql do arquivo e opcional.
O phpMyAdmin oferece uma alternativa gráfica a este processo e através de um browser de internet (um exemplo fictício: http://websitenome.com/datadados.php, https://websitenome.com/datadados
) o administrador do banco de dados faz a conecção a um programa MySQL server instalado localmente ou em rede como a internet por exemplo, na sua tela de abertura
do lado esquerdo da tela encontra-se uma árvore de pastas relacionadas aos banco de dados
atualmente criados, na janela da direita encontram-se as guias de configuração
Database, SQL, Status, Users, Export, Import, Settings, Replication, Variables, Charset e Engines
.
Na guia Database lista os database criados e oferece uma alternativa para a criação de novos; a guia SQL
oferece uma altenativa para o execução de consultas entre outra alternativas da linguagem SQL
através de linha de comando; o Status apresenta uma estatística do uso do database selecinado; Users os usuários
cadastrados o seu host último de acesso entre outros dados que configuram o acesso a um banco de dados; Export
consiste em uma opção de exportar um database criado em alguns formatos tais como: OpenDocument Text, Microsoft Word 2000,
CSV, LaTeX, SQL entre outros; Import solicita a seleção de um arquivo .sql.zip em um dos formatos aceitos como por exemplo
o MySql para a importação dos dados; Setting opçõs de configuração;
Engine configura um motor de banco de dados para armazenamento como por exemplo o MyISAM storage engine, Replication,Variables e Charset
compõem o restante das alternativas de configuração do phpMyAdmin.
Os http cookie e seus sinômimos web cookie, Internet cookie, browser cookie continuam sendo uma ferramenta HTML no seu componente de tag SCRIPT e com alguma linguagem script nesta caso o javascript tem grande utilidade vindo a competir com os cookie através de scripts PHP e de outras alternativas próprias escritas em Java e Javascript com uma sintaxe particular das conhecidas empresas voltadas para a internet como o Google, Yahoo e Facebook entre outros. No estabelecimento de uma conecção de internet via browser os navegadores ao encontrarem em uma página de internet o tag SCRIPT redirecionam o processamento do código e arquivos nesta seção para um processamento Cliente e Servidor, os cookie fornecem uma maneira eficaz para cumprir as seguintes funções quando devidamente elaborados: escrita de um arquivo em cache com o nome de domínio acessado e neste registra-se o seu nome de cookie, informação de início e término de seção (navegação através de um browser), tempo de validade deste arquivo de cookie, nome do usuário de computador, auxilia nas atividades de acesso a páginas criptogrfadas e que necessitam de logon de entrada, preenchimento de formulários de cadastros entre outras funções.
Ele pode ser expresso pelo seguinte exemplo, que geralmente e encontrado entre o tag <Script> de um arquivo HTML.
<SCRIPT type="text/javascript"> set_Cookie(); function set_Cookie() { var today = new Date() var vardata = new Date(2015, 12, 31) var varcookie_dateGMT = vardata.toGMTString() var varcookie_date = vardata - today var varcookie = "cookie_id="+ cookie_id() var wsname = "exempcode" var varcookie = varcookie + ";expires=" + varcookie_dateGMT + ";domain=" + wsname document.cookie=varcookie } function cookie_id() { var newDate = new Date() return newDate.getTime() } </SCRIPT>
Ao acessar a página HTML de internet o browser direciona o processamento do código
entre o tag <SCRIPT> para um programa ou um arquivo do tipo dll para processar
os dados nele contido, a expressão type="text/javascript" determina o tipo de script entretanto este também
poderia assumir outros tipos como vrml, PHP, Perl, VBscript etc. A função set_Cookie()
consiste em uma função genérica da especificação para as funções do javasript esta
inicializa a função com o mesmo nome set_cookie() as principais funções utilizadas
da especificação da linguagem javascirpt são: Date(), toGMTString(), getTime() e document.cookie(); é feita uma
conversão pela função Date(2015, 12, 31) para um valor formatado expressando o ANO, MES, DIA, MINUTOS, SEGUNDOS e MILISEGUNDO
esta então é convertida por toGMTString() para um dado legível; a variável varcookie_date armazenara um valor numérico para utilização
quando necessário para obter o MES, DIA, MINUTOS da criação do cookie; varcookie representando o nome ou identificador expresso pelo nome cookie_id mais
o valor de retorno da função cookie_id() que representa um numeral com o valor da hora em um formato numérico único, finalmente é criada a variável
varcookie concatenando as strings anteriormente montadas na nomencaltura com os termos que compõem um cookie: "Cookie-name", "Expires", "Domain"
existem outros termos que podem ser acrescentados como o "Max-Age", "Path", "Secure", "HttpOnly" como apresentado no RFC6265 e RFC2109.
O Cookie-name define um nome genérico para o cookie, Expires uma data de término de validade para o mesmo se manter válido, Domain é opcional e geralmente
informa o nome do domínio a que pertence aquela página; a expressão document está definida na Web Api Interface ou pelo seu sinônimo DOM (Document Object Model)
representando um objeto do documento cada vez que uma página é carregada em um browser então a expressão document.cookie ela estando correta ela é validada
com a escrita de um arquivo de cookie no computador do usuário. A linguagem HTML e o javascript também são especificados pelo World Wide Web Consortium (W3C)
http://www.w3.org/TR/html401/ além das RFCs citadas acima, encontramos também nas literatura sob o formato de diversos livros as informações apresentadas aqui sobre o javascript e o HTML.
O envio de uma menssagem eletrônica através da internet os e-mail quando enviados utilizando um browser de internet são chamados de Webmail.
Utiliza nesta configuração os protocolos http, https e de uma conecção direta com a internet entretanto não necessitando de utilizar o POP3. Este último possui caracteristicas off-line, conecta-se ao servidor de e-mail busca as menssagens de correio do usuário e as salva no disco local do microcomputador do mesmo, constitui um protocolo de acesso remoto a uma caixa de correio eletrônico .
Podemos desta forma ler e enviar um e-mail utilizando um browser de internet, geralmente utilizamos uma assinatura de um serviço gratuito como o oferecido por Yahoo!, zipmail, Outlook.com, mail.com entre outros existindo também o serviço pago vinculado a um domínio de internet e contratado de um vendedor de webmail.
O exemplo a seguir para ter funcionalidade necessita da locação de um domínio de internet de um ISP, o provedor por sua vez nos seus planos de assinatura oferece integrado um programa de configuração de painel de acesso à configuração dos programas no servidores como ao PHP, Javascript, e de Webmail. Completamente integráveis aos browsers de internet citamos alguns mais dos utilizados Horde, Roundcube e SquirrelMail, tendo maior utilidade voltados para a internet tcp/ip e aos planos de domínio internet pagos e serviços de webmail com menssalidade ainda assim estes programas podem encontrados nas suas versões Opensource.
O código em PHP a seguir funciona embutido em um formulário html que apresenta ao remetente de um e-mail através do browser as chamadas caixas de texto que solicitam o endereço de e-mail do remetente ?, um título para a menssagem, o seu nome ?concluindo pelo texto da menssagem: qual a sua dúvida? qual a sua pergunta ? entre outras questões. O código PHP é enviado através do método do formulário POST presente no tag HTML <form> invocado por um botão presente no tag HTML <input> interno ao tag HTML <form>. O tag HTML <form> inicia e fecha </form> os campos da página de internet chamado de formulário, as caxias de texto com o texto descritivo entre os rotulo <label> </label> como nos trechos sublinados acima e um <input> do tipo igual a text para os três itens citados estes ficam internos ao formulario HTML, completado a descrição do exemplo a seguir.
<?php $header ='From:' . "\r\n" . $_POST['mailf'] . "\r\n" . 'Formulario de Comunicacao pagina homepage www.homepage.com.br' ; $mailsubject = $_POST['mails']; $mailbody = $_POST['mailbody']; $mailto = 'homepage@acessorelacional.com.br'; if (empty ($mailto) ) { die ( "Campo mailto nao preenchido! ") ; exit(); } if (empty ($mailsubject) ){ die ( "Campo mailtsubject nao preenchido! ") ; exit(); } if (empty ($mailbody) ) { die ( "Campo da menssagem nao preenchido! ") ; exit(); } $result = mail ($mailto, $mailsubject, $mailbody, $header) ; if ($result) { $serverIP=$_SERVER['REMOTE_ADDR']; echo "O E-mail foi enviado ! <br>"; echo "Seu endereco ip: <b>" . $serverIP . "</b>"; exit(); }else{ $serverIP=$_SERVER['REMOTE_ADDR']; echo "O E-mail nao foi enviado ! <br>"; exit(); } ?> <html> <meta http-equiv="refresh" content="0;url=http://www.homepage.com.br/" /> </html>
Os pricipais campos de código diretamentes associados a função de mail PHP são retirados da seguite expressão mail(string $to, $subject, $message [string $headers_adicionais, $parametros_adicionais] ) no código PHP com as variáveis que foram criadas para criar esta expressão é escrita como: mail ($mailto, $mailsubject, $mailbody, $header). Estas variáveis têm o seguinte significado: $to -> mail do destinatário, $subject -> assunto do email enviado, $message -> a menssagem de texto conteúdo do email, $headers/parameters_adicionais -> string adicionais dos cabeçalhos conhecidos como (From, Cc e Bcc) separados por um CRLF (\r\n fim de linha e inicio de nova linha de página).
Uma string representando o $header/parametros_adicionais do mail é construida na variável local do programa $header, mais as strings de controle da menssagem (\r\n), a expressão $_POST['mailf'] acrescenta na parte da menssagem o nome do e-mail ($mailto) do destinátario informado no formulario HTML que estava sendo antes preenchido pelo rementente da menssagem (qualquer das variavel enviada pelo $_POST['nome_da_variavel'] do tag <form> estam vinculadas ao arquivo HTML de composição da própria messsagem, a definição exata da variável $_POST para o PHP é a seguinte : constitiu em um vetor associativo de variáveis passados para o script atual através método HTTP POST ). O assunto $mailsubject acrescentado neste exemplo composto um texto fixo pela expressão 'Formulario de Comunicacao pagina homepage www.acct.exemplo.com.br' mais a parte do contida no $_POST['mails'], terminando pela introdução no código PHP do corpo de texto da própria menssagem $_POST['mailbody'].
Concluindo este código PHP, a parte posterior à função mail() com a expressão if() consiste em verificações do preenchimento correto dos campos do formulário HTML do e-mail contornando a função mail() e o restante do script caso estes não estejem nulos ou em vazio. Finalmente a função PHP mail() é invocada, a variável $result receberá um valor inteiro igual a zero no envio de e-mail bem sucedido. A função echo() mostra diretamente na página do browser o endereço ip do usuário no primeiro if() se verdadeiro a menssagem echo "O E-mail foi enviado ! <br>"; caso contrario echo "O E-mail nao foi enviado ! <br>"; e por último é exibida a página HTML de retorno www.acct.exemplo.com.br com o formulário de preenchimento de e-mail vazio. A variável $_SERVER['REMOTE_ADDR'] e uma super global contendo como seu argumento a expressão REMOTE_ADDR.
As menssagem lidas pelo usuario utilizando um Webmail permanecem armazeanadas como entradas de e-mail no servidor, nos programas mais completos de leitura de menssagem eletrônicas através de um browser de internet é possível a exclusão, o arquivamento, a configuração da conta do usuário, exibição em separado para os e-mail não solicitados e a exclusão das menssagem da caixa de correio eletrônico.
A elaboração de uma base de dados relacional no formato Java-db/Derby é composta das seguintes operações aonde devemos verificar a existência de um conjunto de programas Java necessários, o JRE e JDK as versões atuais 1.7, 1.8 e superiores são as mais recomendadas por trazerem consigo módulos opcionais de instalação que incluem a versão compatível do Java-db/Derby. Uma opção funcional compreende no acesso ao console java através do painel de controle, no ícone java um programa é inicializado apresentando as informações quanto as instalções dos programas java da empresa Oracle e versões posteriores descontinuadas da Sun Microsystems. Não havendo uma instalação destes programas uma solução consiste em baixar da internet dos websites dos fabricantes mencionados anteriormente e de homepages que disponibilizam uma cópia destes nas versões menos recentes e proceder na istalação do JRE, JDK e Java-db. O programa Java-db tem um similar mantido pelo Apache Sofwtare Foundation com o nome Derby que cumpre exatamente as mesmas funções da versão comercial Java-db do Sun e da Oracle, a versão do Apache é apresentada zipada para download de seu website na internet sendo o mesmo instalado depois de descompactado em um diretório selecionado conduzindo depois a configuração do programa.
As outras ações de importância para a elaboração e montagem de um banco de dados compreende na configuração de algumas variáveis de ambiente para a funcionalidade do software; invocação do programa console ij na pasta bin do java-db/derby que funciona como uma ferramenta de processamento dos script responsáveis pela conecção e criação de um database com opções de senha e nome de usuário, cifragem do banco de dados e no processamento do arquivo com a estrutura SQL conforme descrito nas especificações SQL ISO 1992 convertidas na linguagem Java.
Concluindo a configuração dos ítens citados no parágrafo anterior a configuração segue informação contida na documentação que consta na pasta doc de instalação do Java-DB/Derby. As variáveis de ambiente CLASSPATH, DERBY_HOME, JDK_HOME devem ser configuradas com a seguinte informação (painel de controle - propriedades do sistema - avançado - variáveis de ambiente):
valor windows exemplos
- CLASSPATH - "c:\Program Files(x86)\Java\jdk1.7.0_71\lib" ; "c:\Arquivos de Programa\Java\jdk1.7.0_71\lib" ; "c:\Program Files(x86)\db-derby\lib" ;
- DERBY_HOME - c:\java\Derby_10 ; "c:\Arquivos de Programa\java\java-db" ; "c:\Program Files(x86)\java\java-db" ;
- JDK_HOME - "c:\Arquivos de Programa\Java\jdk1.7.0_71" ; "c:\Program Files(x86)\Java\jdk1.7.0_71" ;
Valor UNIX/LINUX exemplos - linha de comando do terminal ou por edição do arquivo profile,
para a primeira opção
- CLASSPATH
"export CLASSPATH=/usr/java/jre1.X.X_XX/bin:/usr/java/jre1.X.X_XX/lib:
/usr/java/jdk1.X.0_XX/bin:/usr/java/jdk1.X.0_XX/lib;"
A segunda opção edição do arquivo profile incluir
/usr/java/jre1.X.0_XX/bin, /usr/java/jdk1.X.0_XX/lib, /usr/java/jre1.X.0_XX/lib
e /usr/java/jdk1.X.0_XX/bin
- DERBY_HOME - instalado no diretório /opt/sun/javadb por exemplo, no prompt de linha de comando do terminal digite: "DERBY_HOME=/opt/sun/javadb; export DERBY_HOME", "PATH=$DERBY_HOME/bin:$PATH; export PATH"
- JAVA_HOME/JDK_HOME - edição do arquivo profile incluir as seguintes instruções : JAVA_HOME=/usr/java/default ou "JAVA_HOME=/usr/java/jdk1.X_X; export JAVA_HOME" , "PATH=$JAVA_HOME/bin:$PATH; export PATH"
Um banco de dados de exemplo com o nome itens_oferta.sql representada por um conjunto de dados escrito em um arquivo no formato texto composto por uma estrutura de uma tabela na linguagem SQL será construido com os seguintes campos: NOME_DO_ITEM, VALOR_ORIGINAL, VALOR_EM_OFERTA, PRAZO_OFERTA, QUATIDADE o nome desta estrutura bd_itens_oferta. O nome do arquivo .sql não participa da estrutura do database o termo de referência da estrutura de tabela consiste no nome bd_itens_ofeta. O arquivo assume o seguinte código sql.
create table bd_itens_oferta ( NOME_DO_ITEM varchar(50) NOT NULL, VALOR_ORIGINAL float, VALOR_EM_OFERTA float, PRAZO_OFERTA Date, QUANTIDADE float, primary key (NOME_DO_ITEM) );
A próxima tarefa consiste na inicialização do programa utilitário console ij.bat para o seu start up caso a versão original não funcione criamos um arquivo de inicialização substituto com o nome run_ij.bat contendo a seguinte expressão
java -jar %DERBY_HOME%\lib\derbyrun.jar ij
pause
esta expressão tem a vantagem de montar o banco de dados no mesmo diretório onde estiver sendo invocado. Inicialize então o programa run_ij.bat em um diretório vazio de sua própria escolha, ao inicializar o programa um prompt é exibido, expressões de comando reconhecidas pelo interpretador , as suas palavras reservadas da liguagem, que serão utilizadas são elas CONNECT, CREATE, RUN, INSERT, SELECT, EXIT, o banco de dados inicialmente não existe então no processo de conecção com um database ele também será criado exitem algumas opções disponíveis que podem ser utilizadas com o CONNECT dataEncryption e bootPassword que tratam de criptografar os dados do banco de dados em disco e o criam com uma senha de inicialização para o início da conecção com o database.
Para o exemplo citado utilizaremos um formato mais simplificado a primeira expressão digitada no prompt do console ij criará o database dtaoferta digitamos então a seguinte expressão:
CONNECT 'jdbc:derby:dtabdoferta;create=true';
Utilizando uma senha (bootPassword = senha) de acesso com um banco de dados não cifrado teremos CONNECT 'jdbc:derby:dtaoferta;create=true;bootPassword=32188z3r';.
A partir deste ponto de criação do banco de dados
em disco qualquer futura tentativa de utilização do mesmo implicará na digitação no prompt do console ij da seguinte linha de comando substituindo a expressão create=true para create=false
CONNECT 'jdbc:derby:dtabdoferta;create=false';
se você optar pela linha de comando com uma senha de conecção você terá:
CONNECT 'jdbc:derby:dtaoferta;create=false;bootPassword=32188z3r';
Com o banco de dados criado iremos então processar a estrura da tabela através de uma das alternativas a seguir a primeira, digitamos no prompt do ij a expressao (RUN 'nome_arq_estrutra_tabela.sql';) RUN 'itens_oferta.sql'; na segunda alternativa copie, digite o conteudo do arquivo .sql aonde a expressão CREATE representa a palavra reservada do java para o processo de criação do banco de dados a partir do processamento do script escrito neste arquivo.
As cinco colunas serão criadas entretanto não existirá ainda nehum registro no banco de dados a próxima modificação consiste na inclusão de um registro exemplo e na seleção do(s) registros deste banco de dados, ao final do processo terminamos com a expressão EXIT; que encerrará a seção com este database, dtaoferta que nós criamos.
INSERT INTO bd_itens_oferta VALUES ('hd externo LG 1TB', 250.00, 235.00, '05/01/2015' , 15);
SELECT * FROM bd_itens_oferta;
EXIT;
Concluímos com o texto escrito nós parágrfos anteriores como elaborar e montar um banco de dados em java utilizando o driver derby na configuração para acesso local utilizamos ainda o JDBC 1.4 que contém a linguagem de definição e processamento desta codificação em java, as ferramentas de desenvolvimento de banco de dados Java-db e Derby são produtos respectivamente desenvolvidos e mantidos respectivamente pela Sun Microsystems e Apache Software Foundation o primeiro uma versão comercial e o segundo diponibilizado em uma versão open source gratuita apresentando ambos idêntica estruturação.
O sistema operacional Linux utiliza a funcionalidade de um compilador GNU Compiler Collection capaz de transformar código fonte em C, C++, Java entre outras em programas para boa parte das distribuições linux como ferramenta de compilação para programas escritos inclusive na linguagem Java. Uma distribuição java padrão é apresentada inicialmente como parte integrante de um sistema operacional Linux após a instalação do sistema operacional em um microcomputador este uma estação de trabalho ou como um servidor de rede. Ele pode assumir o nome do instalador rpm como exemplo gcc- java-4.6, libgcj-devel-4.6. e um mais completo java-1.5.0-gcj-1.5 entre outros arquivos rpm que forneceram as bibliotecas para a compilação, programas para o funcionamento em run time e uma máquina virtual java. A linguagem de programação Java para Linux apresenta uma definição da estrutura da linguagem escrito em um formato apresentado pela especificação GNU libgcj na internet poderá ser encontrado informações que conduziram os interessados a elaborarem programas console utilizando a linguagem java, outro aspecto importante é a compatibilidade apresentada pelo GNU gcj na geração de programas opensource programas de código aberto livre.
Utilizaremos os produtos java do Sun e da Oracle JRE e JDK que apresentam bibliotecas mais abrangentes incluindo interfaces gráfica aonde apresentaremos configurações das rpm JRE e JDK a partir da versão 1.7 e superiores, baixadas destes fabricantes de software e instalados em um microcomputador com a sua configuração para o ambiente Linux/UNIX.
Posteriormente à conclusão do item descrito acima poderemos iniciar a configuração do Java-DB ou Derby que constituem programas utilitários de banco de dados composto por um conjuntos de arquivos de programa, o primeiro na versão comercial da empresa Oracle o e segundo uma versão Opersource vinculado ao Apache ASF e tendo como finalidade de fornecer ao usuário um motor de banco de dados na linguagem java contendo a DDL (linguagem de definição de dados) responsável pela própria estruturação do seu modelo de database relacional e uma DML(linguagem de manipulação de dados) que compreende na codificação responsável pela operações como criação de um banco de dados, pesquisa, inclusão, modificação entre outras definidas pela mesma.
Incluímos aqui nesta próxima seção uma configuração necessária junto ao sistema operacional através de suas variáveis de ambiente das variáveis DERBY_HOME e JDK_HOME e da variável CLASSPATH e uma outra modalidade de configuração que consiste na instalação dos drivers do Derby ou do Java-DB em uma pasta onde para um programa aplicativo de banco de dados escrito também em java esteja instalado; neste exemplo um programa aplicativo de banco de dados acessado localmente é utilizado como referência e no sistema operacional Linux, UNIX.
Configuremos as variáveis de ambiente a ser adicionadas para o Java-DB, Derby da seguinte forma:
Edição do arquivo profile localizado no diretório etc (/etc/porfile), este arquivo texto contem informações das variáveis
de ambiente para o Linux. Incluímos as seguintes entradas para o sistema em uso o programa Java-DB estava instalado no
diretório /opt/sun/javadb:
Verificamos a instalação do JRE e JDK geralmente instalado um uma pasta no diretório Java com o nome jdk1.7
ou jdk1.7 também pode ser verificada a sua instalação no painel de controle através do ícone denominado Painel de Controle
Java(TM). A configuração da variável de ambiente CLASSPATH muitas vezes é autoconfigurável
na instalação do JRE, JDK. A variável de ambiente CLASSPATH deverá estar configurada pois parte da exibição gráfica depende
do programa JDK 1.7. da seguinte forma:
>echo $JAVA_HOME
Caso não haja nenhuma entrada relativa ao JRE/JDK encluir manualmente através da edição do arquivo profile.
Testar também a variável de ambiente CLASSPATH que deverá para o JRE e JDK estar configurada na instalação dos seus arquivos rpm.
>echo $CLASSPATH
Caso não esteja presente localizar as pastas /usr/java/jre1.7.0_XX/bin, /usr/java/jdk1.7.0_XX/lib, /usr/java/jre1.7.0_XX/lib e /usr/java/jdk1.7.0_XX/bin incluí-las com uma linha de comando ou por edição do arquivo profile. incluir o texto abaixo sem o sinal >.
>export CLASSPATH=/usr/java/jre1.7.X_XX/bin:/usr/java/jre1.7.X_XX/lib:/usr/java/jdk1.7.0_XX/bin:/usr/java/jdk1.7.0_XX/lib;
A descrição acima serve como exemplo pois mudará conforme o local da instalação dos programas anteriormente citados conforme a versão da distribuição Linux. Quanto a variável de ambiente CLASSPATH ela pode ter a sua configuração incluída no command line do arquivo script shell .sh, no caso da instalação de um programa aplicativo de banco de dados o arquivo script de inicialização do aplicativo em java pode conter a seguinte inclusão para a utilização dos drivers do Java-DB ou Derby exemplo: set CLASSPATH=DERBY_HOME/lib/derby.jar.
A descrição acima aplica-se a usuários com algum conhecimento em java uma alternativa mais simplificada para usuários com menos conhecimentos é considerada abaixo, esta tem funcionalidade pois consegue trabalhar com uma configuração previamente feita por programas java como GNU gcj, java-1.5.0-gcj entre outros que utilizam a a variável de ambiente CLASSPATH.
O usuário pode por simplicidade copiar a pasta lib da instalação do Java-DB para o diretório do seu aplicativo de banco de dados, a linha de comando passa a ser por exemplo java -cp "/opt/sun/javadb/lib/derby.jar": nome_aplicativojava, concluindo o mesmo deverá portanto ter atenção somente a configuração da instalação dos pacotes JRE e JDK e quanto a configuração da variável de ambiente JDK_HOME, as variáveis de ambiente DERBY_HOME e CLASSPATH passam a ter a sua configuração localmente junto ao aplicativo java. Carregará entretanto uma falta de viabilidade quanto vários aplcativos de banco de dados estiverem instalados haverá uma necessidade de cópias múltiplas do arquivo derby.jar para vários diretórios lib neste caso uma configuração global da variável DERBY_HOME é recomendada.
Para a o desenvolvimento de aplicativos gráficos produtos Opensource como o GTK+ Gimp Toolkit 2.6, 2.8 e 3 entre outras versões anteriores aparecem como opção no desenvolvimento de software para ambientes multi-plataforma (compatíveis com diversos sistemas operacionais, hardware e processadores), programas para computadores desktop, notebook inclusive atualmente utilizado nos eletrônicos móveis, iPads, iPods, Tablets, Smartphones e similares no desenvolvimento de aplicativos.
Apresentaremos uma breve exemplificação e descrição da estrutura de programação utilizando um conjunto de bibliotecas escritas na linguagem C, utilizaremos a versão do download gratuito disponível no site do distribuidor oficial versão 2.8 o gtk+-bundle_3.6.4-20130921_win32.zip (a versão 3 fornece o GTK+ toolkit na linguagem C/C++). Ele é composto por um conjunto em separado de programas e código fonte que desempenham a tarefa gráfica, utilização dos periféricos mouse, teclado etc, fontes gráficas, sistema de arquivos estando também vinculado ao ambiente do GNOME Desktop.
O trecho de código fonte abaixo a seguir ilustra um exemplo simplificado da estrutura de um programa GTK+ 2.8 ele poderá ser compilado utilizando inclusive em compilador e biblioteca de desenvolvimento open source, este código apresenta uma portabilidade para vários sistemas operacionais.
#include gtk/gtk.h
int main( int argc, char *argv[] )
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show (window);
g_signal_connect_swapped(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), G_OBJECT(window));
gtk_main();
return 0;
}
Exemplo de linha de comando para o compilação utilizando o programa Opensource gcc.
c:\gcc homepage_exemplo.c -o homepage_exemplo 'pkg-config --cflags --libs gtk+-2.0' homepage_exemplo.exe
A primeira linha do código fonte declara a diretriz de processamento #include para a inclusão do arquivo fonte header gtk/gtk.h, é conservado a referência de chamada para o sistema operacional
da linguagem C (ANSI, ISO C), é declarada uma variável GtkWidget do tipo ponteiro com o nome *windows, a função gtk_init(&argc, &argv) inicializa o próprio GTK+ passando alguns argumentos através das variáveis &argc e &argv, gtk_window_new (GTK_WINDOW_TOPLEVEL) é o construtor da área retangular/quadrada do programa gráfico exibida na imagem(1), a função gtk_widget_show (window) exibe desenhando a janela na tela do monitor o gtk_main() processa um loop atualizando o estado iterativo quando a janela receber acréscimo de objetos possíveis (rótulos - GtkLabel, caixas de texto - GtkText, menu - GtkMenu, box de entrada - GtkTextBox, botões - GtkButton entre outros ) neste exemplo não cumpre nehuma utilidade podendo até ser excluído do código fonte de exemplo. Incluimos a função
g_signal_connect_swapped(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), G_OBJECT(window));
quando do fechamento do programa pelo ícone x no canto superior da janela há a necessidade de cancelar o loop iniciado pelo gtk_main() e para excluir o processo inicializado em memoria do computador.
Concluímos este texto sobre o GTK+ Toolkit 2.8 de uma forma simplificada, informações mais detalhadas e com exemplos que podem ser encontrados em homepages da internet, os interessados neste assunto também podem utilizar a versão em nosso idioma do website original que fornece referências à literatura, bibliotecas, IDE gráficas para desenvolvimento e informativos atualizados sobre a aplicação atual deste sofwtare de desenvolvimento para aplicativos gráficos.
A criação de um banco de dados em um servidor de internet e a sua estrutura composta por campos configurados compreende na utilização de um domínio de internet previamente montado aonde o trabalho pode ser dividido entre a utilização dos programas host de painel como por exemplo phpMyAdmin e o Banco de Dados MySQL ou através da utilização de script PHP com as linhas de código compostas pelas funções sql CREATE_TABLE, mysql_select_db(), mysql_query() entre outras e a opção do painel de controle Banco de Dados MySQL.
Neste exemplo criaremos um exemplo de banco de dados que tem como finalidade o cadastro de dados para uma dieta alimentar e que terá como campos dos registros (as estruturas das tabelas a serem incluídas) com as seguinte informação: nome, idade, peso, sexo, data, carboidratos, lipídeos, glicídeos, proteínas, imc, calorias; finalmente o código PHP referente ao processamento desta informação descrita anteriormente.
Em ambos os casos o processo tem início com a opção do programa host do painel de controle Banco de Dados MySQL nesta opção escolhemos um nome para o banco de dados como por exemplo datreg_alimentar este por sua vez será reagrupado com parte do nome do seu domínio compondo a expressão dominio_data_dietalimentar. O próximo item compreende no cadastramento de um usuário e uma senha para a conexão e utilização deste banco de dados através da internet esta opção geralmente é apresentada na mesma página de criação do database, utilizando estes dados do exemplo do próximo parágrafo criamos : nome de usuário gen_datdieta e senha 293461 . A conclusão da criação do banco de dados consiste na delegação dos atributos ao usuário com a conta cadastrada anteriormente aonde selecionamos todos os atributos (criar, excluir, modificar etc).
Iniciamos a codificação da informação exemplificada anteriormente com dois exemplo.
O primeiro descreve o código script utilizável no phpMyAdmin 4.0 para inclusão das estrutura do banco de dados no database criado.
CREATE TABLE `datreg_alimentar` ( `nome` VARCHAR(50) NOT NULL, `idade` int unsigned NOT NULL , `peso` float NOT NULL, `sexo` VARCHAR(2) NOT NULL, `data` datetime NOT NULL, `carboidratos` float, `lipideos` float, `glicideos` float, `proteinas` float, `imc` float, `calorias` float, PRIMARY KEY(`nome`) )ENGINE=MyISAM DEFAULT CHARSET=utf8;
O exemplo a seguir descreve o código em PHP que cria um tipo de dados caracteres na variável $sql que será passado como argumento para um processo de construção SQL CREATE TABLE utilizado na página de internet para inclusão das estrutura do banco de dados no database criado.
$sql = CREATE TABLE datreg_alimentar( ". "nome VARCHAR(50) NOT NULL, ". "idade int unsigned NOT NULL, ". "peso float NOT NULL, ". "sexo VARCHAR(3) NOT NULL, ". "data datetime NOT NULL, ". "carboidrato float NOT NULL, ". "lipideos float, ". "glicideos float, ". "proteinas float, ". "imc float, ". "calorias float, ". "PRIMARY KEY ( nome )); ";
Concluímos este exemplo de criação das estruturas das tabelas em um banco de dados MySQL através script PHP em uma página html instalável no servidor web utilizando um browser de internet e uma homepage com o trecho final do script que realiza as seguintes funções:
<?php session_cache_limiter('private'); session_start(); //Utilizamo abaixo os dados de configuracao exemplo fornecido nos paragrafos anteriores //E verificado se esta habilitado o uso do MySQL Server, o banco de dados com este nome //e um usuario com senha valida cadastrado conforme indicado na linha de comando $conexao=@mysql_connect( "localhost", "gen_datdieta", "293461" ) or die( "Nao foi possivel conectar !" ); if(!$conexao){ die('Nao foi possivel conectar ao database informado: ' . mysql_error()); header( 'Location: http://.$_SERVER["HTTP_REFERER"].' ); exit(); } //A estrutura e semelhante a utilizada no phpMyAdmin o primeiro exemplo poderia tambem //ser processado no lugar deste script PHP acessado por internet com o mesmo resultado //Multiplas inclusoes de tabelas as vezes longas podem ser processadas de forma //simplificada repetindo no mesmo arquivo esta estrutura abaixo criando varias variaveis //de caracteres com a expressao CREATE TABLE $sql = CREATE TABLE datreg_alimentar( ". "nome VARCHAR(50) NOT NULL, ". "idade int unsigned NOT NULL, ". "peso float NOT NULL, ". "sexo VARCHAR(3) NOT NULL, ". "data datetime NOT NULL, ". "carboidrato float NOT NULL, ". "lipideos float, ". "glicideos float, ". "proteinas float, ". "imc float, ". "calorias float, ". "PRIMARY KEY ( nome )); "; mysql_select_db( "datreg_alimentar" ); $retvalor = mysql_query( $sql, $conexao ); if($retvalor == 1){ echo "A conexao e a inclusao das tabelas ocorreu com sucesso !"; }else{ echo " Houve um erro no processamento verifique se os dados estao corretos ! \n"; echo(mysql_error()); }; php>?
A vantagem deste tipo de processamento consiste na inclusão de várias criações de tabelas em um mesmo e/ou outros bancos de dado ; instalação no servidor de internet e processamento remoto quando necessário; pode também criar o banco de dados incluindo um usuário padrão e uma senha de conexão MySQL compatível com a versão do phpMyAdmin que estiver instalada no servidor e visível aos programas host de painel.
A utilização de um banco de dados instalado em um servidor de rede local de um empreendimento corporativo em que os dados são armazenados em arquivo no formato de um database relacional tem função no compartilhamento de uma base de dados aonde alguns usuário ou setores colaboram acessando para consultas e modificação dos dados conforme direitos fornecidos individualmente para os participantes. Um aplicativo cliente e servidor java com os drivers do java-db ou Derby foram utilizados neste tópico com uma configuração e exemplificacao em código java para a conexão e listagem dos dados de um database de exemplo o Datavendas.
O banco de dados relacional java-db ou Derby está disponíveis nos arquivos binários de instalação do JRE e JDK 1.7 e versões superiores e no projeto Apache Software Foundation com o nome Apache Derby em arquivos zipados. Existe distribuições deste software em versão comercial e opensource para os mais variados sistemas operacional 32 e 64 bits inclusive e que podem ser baixados das homepages de internet dos fabricantes Sun, Oracle e Apache.
Utilizaremos a seguinte alternativa: inicialização do servidor de banco de dados através do programa localizado no diretório bin de instalação do java-db ou Derby startNetworkServer, um programa padrão instalado o ij para a conexão, criação de um banco dados chamado Datavendas, criação da estrutura de tabelas, inclusão de alguns registros e o aplicativo java ServerApp.class para a conexão remota e listagem dos registros incluídos.
O hardware empregado inclui pelo menos dois microcomputadores e um switch, um com a instalação de um sistema operacional rede local (LAN) aonde será inicializado o progama java server de banco de dados neste inclusive há a necessidade da instalação dos programas mencionados nos parágrafos anteriores; o segundo computador será a estação de trabalho que acessará a base de dados criada no servidor, um switch é necessario para a configuração TCP/IP dos equipamentos envolvidos e para o funcionamento desta rede local ethernet.
O trabalho tem início no servidor com a configuração do programa padrão que carrega os drivers do banco de dados para o funcionamento cliente e servidor, o programa startNetworkServer foi modificado e passou a ser inicializado pela seguinte linha de commando resumida batch
@REM Inicializacao do programa server do java-db ou Derby @REM java -cp "%DERBY_HOME%"\lib\derbynet.jar; org.apache.derby.drda.NetworkServerControl start -h 192.168.2.1 -p 1527 pause -------------------------------------------------------------------------------------------------------------------- # Inicializacao do programa server do java-db ou Derby # java -cp "%DERBY_HOME%"/lib/derbynet.jar: org.apache.derby.drda.NetworkServerControl start -h 192.168.2.1 -p 1527
O arquivo padrão da instalação para a inicialização do servidor o startNetworkServer inicializa o servidor entretanto faltará a inclusão manual dos argumentos da linha de comando, o servidor é inicializado e parado pelos argumentos start/shutdown, um host local ou seu IP configurado pelo argumento -h e a porta por -p. Localize no seu servidor o seu endereço IP através das cofigurações de rede, a porta número 1527 é a padrão para este serviço. O programa no diretório bin do java-db ou Derby o sysinfo pode ser utilizado para a verificação da configuração do sistema quanto aos arquivos java necessários, utilize a linha de comando do arquivo .bat ou .sh a seguir para ver a sua configuração.
@REM sysinfo exibe uma informacao da configuracao java @REM java -cp "%DERBY_HOME%"\lib\derbyrun.jar; org.apache.derby.tools.sysinfo pause ---------------------------------------------------------------------------- # sysinfo exibe uma informacao da configuracao java # java -cp "%DERBY_HOME%"/lib/derbyrun.jar: org.apache.derby.tools.sysinfo
As variaveis de ambiente JDK_HOME, DERBY_HOME e CLASSPATH devem estar corretamente configurados para o funcionamento dos aplicativos java.
A rede local com seu protocolo de rede como por exemplo o TCP/IP deve estar ativada para a invocação do programa servidor e para o funcionamento da conexão com a estação de trabalho. A próxima configuração compreende no programa cliente java para a conexão através da rede ao servidor, criação do banco de dados Datavendas e inclusão de registros neste database.
Utilizamos um programa padrão para a conexão com uma instalação de um banco de dados java um programa instalado no diretório bin o ij para a conexão e criação da base de dados. A seguir mostramos o código batch aonde verificamos se o servidor está funcionando pelo argumento ping do programa NetworkServerControl e a inicialização resumida do ij.
@REM Ping servidor status da conexao utilizando o seu IP do servidor e a porta de conexao @REM java -cp "%DERBY_HOME%"\lib\derbynet.jar; org.apache.derby.drda.NetworkServerControl ping -h 192.168.2.1 -p 1527 pause
@REM ij e uma ferramenta de conexao compactada no arquivo jar do diretorio lib do arquivo derbytools.jar @REM java -cp "%DERBY_HOME%\lib\derbytools.jar"; org.apache.derby.tools.ij pause ------------------------------------------------------------------------------------------------------------------ # Ping servidor status da conexao utilizando o seu IP do servidor e a porta de conexao # java -cp "%DERBY_HOME%"/lib/derbynet.jar; org.apache.derby.drda.NetworkServerControl ping -h 192.168.2.1 -p 1527 # ij e uma ferramenta de conexao compactada no arquivo jar do diretorio lib do arquivo derbytools.jar # java -cp "%DERBY_HOME%\lib\derbytools.jar"; org.apache.derby.tools.ij pause
Inicializado o prompt de comando do ij efetuamos a conexão digitando uma linha de comando configurada esta irá de uma vez conectar ao programa servidor utilizando o endereço de rede informado, criar o banco de dados Datavendas o banco de dados será criado criptografado e com senha de acesso para a sua inicialização, para qualquer sistema operacional esta linha de comando e a mesma.
CONNECT 'jdbc:derby://192.168.2.1:1527/Datavendas;create=true;dataEncryption=true;bootPassword=3z0215x64c';
A conclusão consiste na criação da estrutura das tabelas para consulta, inclusão e exclusão dos registros neste banco de dados, o exemplo abaixo exemplifica um texto processável pelo ij que pode ser copiado e colado no prompt deste programa.
create table produtos (id integer NOT NULL, empresa varchar(500) NOT NULL, cod_produto varchar(50), quantidade float, rg_fiscal varchar(200), desc_mercadoria varchar(100), valor_unitario float, valor_frete float, valor_total float, observacao varchar(1080), PRIMARY KEY (id));
Os drivers do java-db ou Derby apresentam duas opções de utilidade o org.apache.derby.jdbc.EmbeddedDriver servirá para a conexão com uma base de dados localmente no computador na inicialização do programa a outra org.apache.derby.jdbc.ClientDriver compõe uma conexão de rede com a base de dados localizada em um servidor em rede local (LAN). O código em java na próxima seção apresenta uma codificação simplificada do uso do driver na modalidade cliente e servidor, (1) campo texto representando o driver desejado (2) a URL da conexão (3) o carregamento do objeto driver (4) o estabelecimento da conexão e (5) criação do objeto Statement e do ResultSet para o processamento da pesquisa dos registro na tabela produtos como sendo os principais itens do programa respectivamente:
import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.border.*; import javax.swing.colorchooser.*; import javax.swing.filechooser.*; import javax.accessibility.*; /* As bibliotecas java.sql.* compreendem a API do JDBC da progamacao da linguagem SQL em java */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class ServerApp { static Connection conn; public static void main(String[] args) { String driver = "org.apache.derby.jdbc.ClientDriver"; String URLconexao = "jdbc:derby://192.168.2.1:1527/Datavendas;create=false;bootPassword=3z0215x64c"; try { Class.forName(driver).newInstance(); JOptionPane.showMessageDialog(null, "Carregado o driver java-db, Derby apropriado ", "Caixa de Dialogo", 1); } catch (java.lang.Exception ld) { } try { conn = DriverManager.getConnection(URLconexao); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM produtos"); int y = 0; while (rs.next()) { System.out.println(++y + " Id: " + rs.getString('id') + " Empresa: " + rs.getString('empresa') + " Cod. Produto: " + rs.getString('cod_produto') + " Qtde: " + rs.getString('quantidade') + " Preco Total: " + rs.getString('valor_total')); } rs.close(); } catch (Exception e) { } } }
O aplicativo java de banco de dados exemplificado utiliza a conexão com um database em rede local como descrito neste tópico o driver java-db ou Derby pode ainda ser substituido por outros drivers escritos em java para utilizar um banco de dados diferente deste e compilado em uma outra linguagem de programação. A interface gráfica e o código do seu programa pode ser aproveitado integralmente e utilizar como driver de database o SQLite, MySQL Server, PostgreSQL, o Microsoft Access e SQL Server entre outros aonde a expressão driver é substituída pela versão em java destes programas de banco de dados, URLconexao a expressão do protocolo jdbc:derby é adaptada aos outros drivers em java utilizados inclusive a montagem das estruturas das tabelas. A especificação JDBC 1.3 e 1.4 (Java Database Connectivity) dos fabricantes Sun e Oracle compreende em um conjunto de classes e interfaces (API) escritas em Java para o envio de instruções SQL para um banco de dado instalado localmente ou em um servidor de rede.
Um web site pode exibir uma mesma informação configurando o conteúdo da página adequando a dimensão da tela ao browser de internet, tipo de equipamento eletrônico - iPads, Tablets, iPods, iPhones, Smartphones, notebooks e microcomputadores desktop - e quanto ao sistema operacional através da utilização do javascript .
Combinando com scripts CSS e com o tag html STYLE podemos configurar os equipamentos mobile para esta alternância de apresentação gráfica através das funções de configuração como encontrado na descrição do webkit padrão utilizado nos browsers de internet para ipads, ipods e iphones da Apple que tem como navegador o browser Safari e Mozilla para os browser do tipo Firefox, Netscape. Outros distribuidores de bibliotecas javascript a exemplo do Jquery, Nodejs, Dojo entre outros apresentam outras opções de configuração entre scripts com funções variadas úteis para o desenvolvimento de uma webpage HTML com configurações de telas e tipo de eletrônico móvel. Browsers como o Internet Explorer, Google Chrome e Opera utilizam geralmente o CSS e o tag html STYLE com o javascript incluindo o suporte a estes programas em javascript mencionadas anteriormente.
A seguir segue uma exemplificação que detecta por tipo de equipamento móvel através da expressão navigator.userAgent.match que inclui termos de definição do API HTML 5. Se não for valor nulo inicia a variável como true/verdadeiro, o termo do programa if é selecionado utilizando a expressão window.location.href invoca uma página de internet desejada .
<script type="text/javascript"> equipmovel(); function equipmovel() { var iPad_ = navigator.userAgent.match(/iPad/i) != null; var iPhone_ = navigator.userAgent.match(/iPhone/i) != null; var iPod_ = navigator.userAgent.match(/iPod/i) != null; var Android_ = navigator.userAgent.match(/Android/i) != null; var webOS_ = navigator.userAgent.match(/webOS/i) != null; var IEMobile_ = navigator.userAgent.match(/IEMobile/i) != null; if( iPad_ ) { window.location.href='http://www.acct.com.br/mobile/ipad/index.html'; } else if( iPhone_){ window.location.href='http://www.acct.com.br/mobile/iphone/index.html'; } else if (iPod_ ){ window.location.href='http://www.acct.com.br/mobile/ipod/index.html'; } else if (Android_){ window.location.href='http://www.acct.com.br/mobile/android/index.html'; } else if( webOS_ ){ window.location.href='http://www.acct.com.br/mobile/webos/index.html'; } else if(IEMobile_){ window.location.href='http://www.acct.com.br/mobile/iemobile/index.html'; } } </script>
Parte da exibição da homepage utilizando recursos ofertados pelos browsers de internet para os eletrônicos móveis dependem de uma configuração gráfica que deverá estar compatível e apresentada em um formato genérico. Estes recursos de progamação estão acessíveis através do Javascript e do CSS aonde distribuidores dos browsers para internet Safari, Mozilla, Firefox, Netscape, Opera entre outros implementam suporte oferecendo uma distinta opção de configuração gráfica entre outras funções de importância associadas ao HTML 5 e a sua API .
A seção a seguir ilustra com as principais opções uma configuração de uma página de internet utilizando o CSS que configura as margens, menu, texto e imagem para se adaptarem dinamicamente a tela do equipamento eletrônico que esta sendo utilizada .
@charset "utf-8"; /* CSS Document */ body{ background:#FFFFFF; font-family:Arial, Helvetica, sans-serif; margin:0; padding:0; } #header{ margin:0 auto; } .naveg{ font-size:14px; background:#000000; -moz-border-bottom-left-radius:6px; -webkit-border-bottom-left-radius:6px; border-bottom-left-radius:6px; -moz-border-bottom-right-radius:6px; -webkit-border-bottom-right-radius:6px; border-bottom-right-radius:6px; margin:0 5px; color:#000000; } .logo{ text-align:center; margin:0; padding:5px; } .logo imagem{ border:none; max-width:100%; } .campotexto area{ font-family:Arial, Helvetica, sans-serif; background:#FFFFFF; border:1px solid #ddd; width:100%; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; width:100%; padding 10px; }
O tag body e header tem a mesma representatividade encontrada no HTML o primeiro configura a página sem margem e padding a área da tela inteira será utilizada para exibição da página de internet, as referências -moz e -webkit configuram aspectos gráficos de bordas que fornecem ao elemento quadrado/retângulo com uma cor de fundo um aspecto de um botão dispensando a utilização de arquivos de imagem tem utilidade também na montagem do menu e áreas de texto com links para outras páginas do website. Na expressão .logo imagem a propriedade max-width:100% fornecerá uma ampliação e redução do arquivo de imagem .jpg por exemplo um arranjo dinâmico quando o tamanho da área de exibição for modificada .
O link a seguir ilustra um exemplo de uma homepage para eletrônicos móveis homepage móvel que faz uso dos recursos Javascript, CSS ilustrados anteriormente.
O programa solicita dados de entrada digitados no console da tela de entrada pelo usuário e pede uma data de calendário aonde é informado um numeral indicando um dia, mês e ano ele exibe como resultado dados de saída informando o dia da semana, se este dia é útil ou fim de semana e o intervalo de dias entre o valor informado e a data atual do momento da invocação do programa.
O código do exemplo é apresentado abaixo e um comentário quanto a sua elaboração feita na seção posterior ao exemplo.
/* As principais expressoes os tipos de dados e as funcoes definidas neste exemplo : time_t, struct tm, time, mktime, difftime estao descritas em um arquivo time.h */ #include "stdio.h" #include "stdlib.h" #include "time.h" #include "io.h" int main () { time_t rawtime; struct tm * timeinfo; int year, month ,day; const char * weekday[] = { "Domingo", "Segunda", "Terca", "Quarta", "Quinta", "Sexta", "Sabado"}; printf ("Informe uma data de calendario qualquer o dia, mes e o ano !?\n"); printf ("\nDia ? "); scanf ("%d",&day); printf ("Mes ? "); scanf ("%d",&month); printf ("Ano ? "); scanf ("%d",&year); /* obtem o horario em timeinfo atual e modifica para o fuso horario local*/ timeinfo = localtime ( &rawtime ); timeinfo->tm_year = year - 1900; timeinfo->tm_mon = month - 1; timeinfo->tm_mday = day; /* chamada da funcao mktime: timeinfo->tm_wday sera ajustado e montado a hora */ mktime ( timeinfo ); printf ("Esse dia da semana e %s.\n\n", weekday[timeinfo->tm_wday]); int id = timeinfo->tm_wday; if(id == 0 || id == 6){ printf ("E um fim de semana.\n\n"); }else{ printf ("Nao e um fim de semana.\n\n"); } time_t timer; struct tm y2k = {0}; double seconds; /* a primeira linha define a entrada de valores para o inicio do programa aonde a hora 00:00:00 e inicializada nestas variaveis, a segunda ajusta para o valor de entrada do usuario e esta definida em termos do ano 2000, o intervalo dos valores validos para o programa de meses entre 0 e 11, dias entre 1 e 31 e dia do ano entre 0 e 365 */ y2k.tm_hour = 0; y2k.tm_min = 0; y2k.tm_sec = 0; y2k.tm_year = 100+(year-2000); y2k.tm_mon = month-1; y2k.tm_mday = day; time(&timer); /* obtem do sistema operacional o horario atual; */ /* dividir por 86400 transformando os segundos em dias */ seconds = difftime(mktime(&y2k),timer)/86400; /* a divisao maior do que zero o intervalo de dias ainda por vir em uma data futura a divisao com resultado negativo o intervalo de dias passado anterior ao momento de invocacao do programa */ if(seconds > 0){ printf ("%.f dias faltao a partir da data atual ate a data informada \n\n", seconds); }else{ printf ("%.f dias se passaram a partir da data informada ate a data atual \n\n", seconds *(-1)); } system("PAUSE"); return 0; }
Exemplo de linha de comando para o compilação utilizando o programa Opensource gcc.
c:\gcc horadifcalc.c -o horadifcalc.exe
O arquivo time.h que e incluído na compilação do programa contém quase todas as variáveis e funções descritas no programa e que aparentemente não tem uma explicação no próprio código do mesmo. Incluem tipos de dados inteiro, constante, ponto flutuante e estrutura, a variável time_t faz parte da estrutura timespec que consiste em um temporizador em segundos; a declaração da variável struc tm *timeinfo declara a estrutura tm que inclui pelo menos os seguintes membros: int tm_sec Segundos [0,60], int tm_min Minutos [0,59], int hora_hora_hora [0,23], int tm_mday Dia do mês [1,31], int tm_mon Mês do ano [0,11], int tm_year Anos desde 1900, int tm_wday Dia da semana [0,6] (domingo = 0), int tm_yday Dia do ano [0,365] e int tm_isdst Sinalizador de horário de verão é também declarado um vetor de caracteres em const char * weekday[] que ordena os caracateres representativvos do nome dos dias da semana.
As funções printf e scanf respectivamente escreve o texto de apresentação e orienta sobre os valores das variáveis solicitadas pelo programa a segunda função passa estes valores digitados do console para as variáveis day, month e year. A expressão timeinfo = localtime ( &rawtime ); compõe uma informação de hora, minutos e seguntos também necessário ao correto funcionamento da função mktime ( timeinfo ); que irá montar e formatar a informação da date e hora aonde finalmente é selecionado na variável tm_wday um inteiro representativo do dia da semana e passado a expressão weekday[timeinfo->tm_wday] para a conversão em caracteres e a sua impressão.
O código do programa int id = timeinfo->tm_wday; passa para a variável inteira id o número de 0 até seis representativo do nome do dia da semana a comparação indica se o dia entrado pelo usuário é um dia útil ou final de semana.
Na continuação do exemplo declara as variáveis time_t timer; e struct tm y2k = {0}; de uma forma que não utilizamos o tipo de dado ponteiro como na primeira parte do programa os operadores seta e ponto são utilizados para fazer referência aos elementos da estrutura tm. A expressão y2k.tm_hour = 0; y2k.tm_min = 0; y2k.tm_sec = 0; passa a informação de uma hora fixa na inicialização do programa sendo necessário uma valor referencial de hora para compor parte dos dados da estruruta citada na linha anterior; os valores de entrada digitados pelo usuário são novamente aproveitados e formatados na expressão y2k.tm_year = 100+(year-2000); y2k.tm_mon = month-1; y2k.tm_mday = day; composto por variáveis inteiras. A função time(&timer); obtém do sistema operacional o horário atual composto pela informação da hora e dia, mês e ano; a variável seconds retém o resultado da utilização da função difftime na expressão do código do programa seconds = difftime(mktime(&y2k),timer)/86400; a divisão por 86400 converte o tempo de segundos para um valor inteiro de dias. O valor do numeral dos segundos na variável seconds avaliado se for negativo refere-se a um tempo passado anterior ao informado pelo usuário caso contrário valor positivo a um dia de calendário posterior a data de inicialização do programa consistindo em dados do programa impresso por último como informação impressa e exibida na tela de console do programa.