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).   SELECT Com 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 retornad

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, principalme

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;   //

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: ['+D

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 part

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 b

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 2007 19604 funcionários 50 escritorios em 20 países 1 milhão de usuarios ativos do Google Docs 60 milhões de usuários do orkut 10 mil clientes do Google Enterprise 40 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. Tente

Diversos

Todos os assuntos que não estiverem classificados nos outros tópicos serão listados aqui, independente de estarem relacionados com tecnologia. Ruby Programação Orientada a Objetos (POO) E você ? Ficando rico também ? Fiscalização acirrada ! Geoprocessamento Internet sob rede elétrica BLOGAGEM COLETIVA "Justiça para Flavia" Premio Dardos Procurando emprego? Open Hack Day Google “paga eu” Cursos de Graduação Gratuitos O Google me achou, coincidências à parte… 6 coisas e 6 links E o Android chegou nos notebooks   Maldito Layout de terceiro… Pedido de Desculpas… Aos poucos… Menu horizontal com CSS (Tableless) Um pouco sobre o twitter Nem só de anuncios viverá o google… O crescimento do twitter O que fazer com televisores (monitores) velhos? Já usou seu pen drive hoje? Woverine já na internet QR Code E o FireFox ultrapassa o IE na Europa Internet pela rede elétrica regulamentada A possível quebra de paradigma do FireFox Malandro também se liga no

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 UNLIMI

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 interf

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;

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'

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.Con