Pular para o conteúdo principal

Postagens

Mostrando postagens de 2008

Usando o Oracle II

Olá a todos, peço primeiramente desculpas a todos pela ausência e principalmente pela demora na continuidade de alguns assuntos, como o Oracle, o fato é que em novembro meu tempo ficou meio apertado devido a assuntos profissionais (ainda bem, fechamos o ano com muito trabalho) e pessoais (reservei parte do meu tempo livre para estudar SQL e PL/SQL para o exame de certificação da Prometric que no dia 17/12/2008 o fiz e passei). Desculpas a parte iremos retomar aqui a série “Usando o Oracle”, e no episódio de hoje mostraremos como manipular as informações (inserir, alterar, apagar e consultar). SELECTCom o SELECT realizamos a seleção das informações, devemos informar as informações desejadas, de onde elas serão buscadas e, se for o caso, restringir, agrupar ou ordenar o resultado. Sintaxe: SELECT coluna_01, coluna_02 FROM      tebla_x WHERE  coluna_03 = 1; O SELECT tem como objetivo, projeção (escolha das colunas de uma tabela), seleção (restringir os registros a serem retornados) e junção (re…

Google “paga eu”

Quando nosso espaço começa a receber um numero razoável de visitas vislumbramos a possibilidade de juntar o útil ao agradável, porque não ganhar uma grana escrevendo algo que nos agrada e que certamente ajudara alguém. Pois é, na internet a publicidade come solta e no meu caso a primeira medida tomada na tentativa de rentabilizar o blog foi o adsense. Tudo muito simples, muito fácil e rápido até o momento de receber, sim amigos, estou com uma quantia parada já a algum tempo e ainda nada, ainda sou recebido pela boa e velha frase “Os seus pagamentos estão atualmente retidos. São necessárias algumas medidas para liberar o seu pagamento.” Ok, já perdi as contas de quantas vezes cliquei no maldito “mais detalhes” e a minha “Medida necessária” é sempre a mesma, o tal do PIN, não senhores eu não o inseri errado porque eu sequer recebi a tal correspondencia. Não resido em uma região inóspita ou desconhecida, haja visto que tenho recebido minhas correspondências normalmente, principalmente as…

Texto na Diagonal usando o Canvas (Delphi)

var
  lf : TLogFont;
  tf : TFont;
begin
with Form1.Canvas do
begin
      Font.Name := 'Arial';
      Font.Size := 24;
      tf := TFont.Create;
      tf.Assign(Font);
      GetObject(tf.Handle, sizeof(lf), @lf); 
      lf.lfEscapement := 450;
      lf.lfOrientation := 450;
      tf.Handle := CreateFontIndirect(lf);
      Font.Assign(tf);
      tf.Free;
      TextOut(20, Height div 2, 'Texto Diagonal!');
end;
end;

Iniciar e Parar Serviços do Windows (Delphi)

Em certas ocasiões nos deparamos com a necessidade de manipular determinadas atividades do SO, como iniciar ou parar um banco de dados, ou qualquer outro serviço que esteja funcionando no momento. Segue abaixo um código que encontrei na Internet para tal finalidade (não me recordo à fonte, assim que eu a encontrar colocarei).
Iniciar Serviço:

uses WinSvc;
//
// start service
//
// return TRUE if successful
//
// sMachine:
//   machine name, ie: \SERVER
//   empty = local machine
//
// sService
//   service name, ie: Alerter
//
function ServiceStart(
  sMachine,
  sService : string ) : boolean;
var
//
  // service control
  // manager handle
  schm,
//
  // service handle
  schs   : SC_Handle;
//
  // service status
  ss     : TServiceStatus;
//
  // temp char pointer
  psTemp : PChar;
//
  // check point
  dwChkP : DWord;
begin
  ss.dwCurrentState := -1;
// connect to the service
  // contr…

Log de exceções não tratadas (Delphi)

Nem sempre é possível tornar nossa aplicação imune a todos os erros, sempre existe aquele que apenas o usuário conseguirá simular e na maioria das vezes você estará bem longe dali. Para não ficar apenas com a explicação do usuário, que muitas vezes e confusa e inconclusiva podemos criar uma maneira de ao menos rastrear os erros não controlados, isso mesmo podemos construir um "log" de erros, então vamos lá: Adicione em seu formulário principal o componente ApplicationEvents da aba Additional; No evento OnException entre com o seguinte código: var   vl_NomeDoLog : string;   vl_Arquivo   : TextFile; begin   vl_NomeDoLog := ChangeFileExt(Application.Exename, '.log');   AssignFile(vl_Arquivo, vl_NomeDoLog); IF FileExists(vl_NomeDoLog) THEN     Append(vl_arquivo) { se existir, apenas adiciona linhas } ELSE     ReWrite(vl_arquivo); { cria um novo se não existir } TRY     WriteLn(vl_arquivo, 'APLICAÇÃO: ['+Screen.ActiveForm.Caption+'] DATA/HORA: ['+DateTimeToStr(Now)+'…

Open Hack Day

O Amigo Rodrigo Figueiredo comentou em meu ultimo post colocando um anuncio muito interessante sobre um evento que promete ser muito bom, para os que moram em São Paulo ou mesmo que tenham a possibilidade de ir até lá vale a pena conferir, segue abaixo uma matéria retirada do IDG Now falando sobre o evento.


São Paulo - Evento que incentiva a criação de aplicativos e serviços com plataformas do Yahoo! premiará os projetos mais criativos. O Yahoo! promove, de 8 a 9 de novembro, o primeiro Open Hack Day na América Latina. O evento reunirá estudantes e profissionais de tecnologia para a criação de aplicativos e serviços com base nas plataformas da empresa.

O encontro é a versão brasileira do evento que aconteceu em setembro, nos Estados Unidos, e reuniu mais de 300 desenvolvedores e entusiastas da área.

O primeiro dia do Open Hack Day promove o ciclo de palestras “Tech Talks”, explicando o que será necessário para o desenvolvimento no dia seguinte.

Os projetos criados pelos participantes e…

Função INSTR do Oracle no Delphi

O Oracle possui uma função chamada INSTR(), ela procura por ocorrências de uma determinada palavra dentro de outra, começando de uma determinada posição, e retorna o índice quando encontrado. Ex.:

SELECT INSTR('EDUARDO TEIXEIRA','ER', 1, 2) "Teste com INSTR"
FROM DUAL;

Teste com INSTR
----------
13

No exemplo acima a busca começa no primeiro caracter da frase 'EDUARDO TEIXEIRA' e procura pelo índice da segunda ocorrência da palavra 'ER', e o resultado foi a 13º posição. Existe algo parecido no Delphi, é a função POEX, porém ela não trata ocorrências, trazendo sempre o índice da primeira encontrada, então ai vai uma função para o Delphi que faz o mesmo que o INSTR do Oracle:
function INSTR_Delphi(p_busca: string; p_buscado: string; p_inicio: integer; p_incidencia: integer): integer;
var
v_posi : integer; //guarda última posição encontrada
v_inc : integer;   //incidências já encontradas
v_i : integer;       //contador para loop

begin
//pego a primeira in…

Procurando emprego?

Responda rápido, qual empresa possui a marca mais valiosa do mundo (80 bilhões de dólares), conta com mais de 19 mil funcionários em 36 países, oferece um massagista 3 vezes por semana, possuiu um Wii e um Xbox no lounge, além de um fliperama e uma mesa de sinuca? Sim senhores, para aqueles que responderam Google acertaram, 40% das vagas no Brasil ainda não foram preenchidas. Os interessados devem se preparar bastante pois o processo de seleção é bem puxado, antes ocorriam até 30 entrevistas, hoje o numero foi bem reduzido chegando a 5 ou 6 entrevistas.
Mais alguns numeros do Google:
US$ 16,6 bilhões de faturamento em 200719604 funcionários50 escritorios em 20 países1 milhão de usuarios ativos do Google Docs60 milhões de usuários do orkut10 mil clientes do Google Enterprise40 bilhões de páginas indexadas à ferramenta de busca

BLOGAGEM COLETIVA "Justiça para Flavia"

No dia de hoje não falaremos sobre tecnologias, dicas ou truques, iremos ceder nosso espaço para um ato de cidadania, pois exigir que a lei se faça não é mais do que a obrigação de cada cidadão.
Irei redigir aqui uma matéria que foi extraída na integra do blog Flavia, Vivendo em Coma... , que é mantido por uma mãe que perdeu sua filha a mais de dez anos em função de um acidente fatal, causado pela má instalação de um ralo na piscina. Ela pede apenas que justiça seja feita.


Domingo, 27 de Julho de 2008

PISCINA SEGURA, RESPONSABILIDADE DOS PAIS?!

Foto por mim scaneada do Jornal A Folha de São Paulo.
Transcrevo alguns trechos da matéria publicada no Jornal FOLHA DE SÃO PAULO de domingo passado, dia 20 de Julho de 2008, no caderno “Construção”. A matéria está assinada por Mariana Desimone e vem com o título de PISCINA SEGURA. Infelizmente, não consegui o link na Internet para direcionar vocês para a reportagem. Quem por acaso puder me informar esse link, ficarei agradecida. Tentei, mas também…

Diversos

Usando o Oracle I

Olá a todos, nesta série de artigos vamos dar uma pincelada nos fundamentos SQL, como criar usuarios, tabelas, procedimentos, entre outras coisas. Nesse que será o primeiro vamos criar uma pequena base de dados para os artigos seguintes, para os que ainda não possuem, podem baixar a versão gratuita do Oracle aqui, para a instalação existe um documento oficial, não é complicado de se fazer, devemos apenas nos atentar para não esquecer a senha dos usuários de administração do banco. Criando um usuário Antes de mais nada, devemos logar no banco como SYSTEM para podermos criar nosso usuário para então iniciar o processo de construção de nossa base: Criando o usuário CURSO_SQL com senha de mesmo nome: CREATE USER CURSO_SQL IDENTIFIED BY CURSO_SQL; Agora precisamos garantir a esse usuário direitos de acesso e criação na base: GRANT CREATE TABLE, CREATE PROCEDURE, CREATE TRIGGER, CREATE SEQUENCE, CREATE VIEW, CREATE SESSION TO CURSO_SQL; E por fim garantir acesso a tablespace: GRANT UNLIMITED TABLESP…

Internet sob rede elétrica

Já imaginou plugar seu modem na tomada? E melhor, conseguir velocidades que chegam a 200Mbps (lembrando que hoje a maior velocidade é de 30Mbps). Pois é, esse tipo de tecnologia não é nenhuma novidade já em meados do ano 2000, algumas empresas brasileiras fizeram testes, mas nada além disso. Só em 2006 é que ela entrou em foco novamente, com a instalação de uma rede esperimental em Porto Algre, a rede cobre 3,5 quilômetros de extensão atingindo velocidades de até 45Mbps.

Bom percebe-se que sua area de abrangencia e um tanto pequena, vamos ver algumas desvantagens: Manter a alta velocidade com longas distâncias, pelo encapamento plástico "roubar" os sinais de alta frequência;Os fios de cobre com tal frequência podem interferir em alguns equipamentos eletro-eletrônicos, por fazer com que os dados gerem ruído no espectro eletromagnético, além de haver possibilidade de corromper os dados pela captura do sinal de rádios e outros;Da mesma forma, alguns aparelhos podem interferir n…

Data e Hora no j2me

Segue um exemplo de como pegar a data e a hora usando o Calendar do j2me:

//
//Método para recuperação da data e hora do sistema
public String dataHora() {
//recupera data e hora atual do sistema
Calendar cal = Calendar.getInstance();
Date date = new Date();
cal.setTime(date);
String mes = String.valueOf(cal.get(Calendar.MONTH) + 1);
String dia = String.valueOf(cal.get(Calendar.DAY_OF_MONTH));
String ano = String.valueOf(cal.get(Calendar.YEAR));
String horas = String.valueOf(cal.get(Calendar.HOUR_OF_DAY));
String minutos = String.valueOf(cal.get(Calendar.MINUTE));
String segundos = String.valueOf(cal.get(Calendar.SECOND));
//
cal = null;
date = null;
//
//formata a data de modo que o tamanho do resultado seja sempre fixo
//dia
if (dia.length() < 2) { dia = "0" + dia; } //mes
if (mes.length() < 2) { mes = "0" + mes; } //horas
if (horas.length() < 2) { horas = "0" + horas; } //minutos
if (minutos.length() …

Colocar imagem em campo do dbGrid

Considerando que minha pasta de ícones esta no mesmo nível da pasta de minha aplicação, e que eu tenho em meu banco de dados o nome do arquivo isso funciona.
Procedure DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
vl_icone : ticon;
vl_fixo : TRect;

begin
vl_fixo := Rect;
if (Column.Field = ClientDataSet1cone) and (ClientDataSet1NOME_ICONE.AsString '') then
begin
vl_icone := Ticon.Create;
vl_icone.Height := 10;
try
vl_icone.LoadFromFile(('..\Icones\'+ClientDataSet1NOME_ICONE.AsString));
DBGrid1.Canvas.StretchDraw(vl_fixo, vl_icone);
finally
vl_icone.Free;
end;
end;

end;

O ótimo LWUIT (Java ME)

Todos que começam a desenvolver com o j2me se deparam com várias limitações, mas uma com certeza é a que mais nos incomoda, a interface com o usuário. Para tornar essa tarefa mais fácil, e muito mais profissional foi desenvolvida uma biblioteca chamada LWUIT que suporta componentes visuais, temas, animações e outras coisas mais. Em uma de minhas visitas a um fórum me deparei com um tópico que me chamou a atenção, era a respeito de layout no j2me, lá recomendaram o uso do LWUIT e a partir dai comecei a estudar.
Logo de cara fiquei bem empolgado com o resultado final dos exemplos, então decidi que irei escrever algumas matérias a respeito, e nessa introdutória deixarei aqui, alem do meu testemunho favorável, links para iniciar a utilização do mesmo.

Veja alguns videos:




No PSP:





Dentro do emulador:





Vários modelos:



Comece por aqui, baixe a biblioteca, veja a documentação e comece com os exemplos: java.net lwuit

Blog de um dos desenvolvedores, recomendado: Shai's Java & LWUIT Blog

Fórum e…

Desenvolvimento de aplicações para dispositivos móveis III (Java)

Completanto essa série de três artigos de introdução ao desenvolvimento de aplicações para dispositivos móveis vamos falar de escrita e leitura em arquivos texto. Algo primordial já que boa parte das aplicações necessita de persistencia para os dados.
No j2me existem outras formas para a persistencia, como o RMS, plugins como o Floggy ou mesmo XML, é provável que em posts futuros iremos apresentar como trabalhar com RMS, que é o método mais indicado, mas aqui o nosso foco será o bom e velho TXT.
Iniciando...

Vamos aproveitar a aplicação feita no post anterior e adicionar a ela os elementos necessários, que são:
- 1 textBox com três itemCommand, sendo um para salvar, outro para carregar e o ultimo para sair (ligando esse ultimo ao form).
- 1 itemCommand no form que deve ser ligado a nosso textBox
Nosso fluxo agora ficará assim:


Agora os imports utilizados:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.…