Pesquisar no Programero

sexta-feira, 26 de junho de 2009

Como é que eu nunca usei o Opera antes?

Com certeza não era por falta de conhecimento, sei de sua existência a algum tempo mas como adorador do Firefox nunca senti a necessidade ou curiosidade de usar outro browser ( sem contar o Chrome que por ser do Google eu tinha que ver como era ). Pois bem, um grande amigo meu a pouco tempo me falou e me mostrou uma das funcionalidade do Opera, aquela em que é possível tornar o navegador um “Web Server”, disponibilizando arquivos do próprio pc na web.
unite-small
Achei muito interessante a idéia de compartilhar arquivos, mas só quando testei é que percebi como essa versão era impressionante por esse e por outros tantos recursos como o Fridge, Media Player, Photo Sharing, The Lounge e o Web Server, além é claro do design muito elegante e da integração de seu serviços que são muitos.
Darei um tempo no Firefox para experimentar melhor o Opera, mas pelo pouco que já vi acho que ele será meu novo Browser padrão pelo menos por algum tempo.

segunda-feira, 22 de junho de 2009

Copiando arquivos (Delphi)

Pelo Delphi copiar arquivos de um lugar para outro é simples, nesse exemplo o usuário indica o caminho de origem o de destino e executa a cópia, baixe o exemplo completo aqui.
Para o exemplo precisaremos de dois Labels para identificar a função dos Edits, dois Edits para a entrada dos caminhos de origem e destino e um botão para executar o processo, segue o código do click do botão:
var
  Dados: TSHFileOpStruct;
begin
  FillChar(Dados,SizeOf(Dados), 0);
  with Dados do
  begin
    wFunc := FO_COPY;
    pFrom := PChar(Edit1.Text);
    pTo   := PChar(Edit2.Text);
    fFlags:= FOF_ALLOWUNDO;
  end;
  SHFileOperation(Dados);
end;

quarta-feira, 17 de junho de 2009

Processador de 1THz? Também quero

O pessoal do MIT acredita que processadores produzidos com grafeno chegarão a 1 THz, só para efeito de comparação o processador mais rápido hoje chega a 5 Ghz, ou seja esses novos processadores seriam pelo menos 250 vezes mais rápidos que o melhor da atualidade, um salto na evolução considerável.
Segundo pesquisadores da Universidade de Colúmbia, nos Estados Unidos, o grafeno - uma folha de carbono com apenas um átomo de espessura - é o material mais forte que o homem já conseguiu medir ele é cerca de 200 vezes mais forte do que o aço estrutural.
A grande jogada do novo chip é que ele utiliza apenas um transistor enquanto os processadores atuais precisam de uma multiplicação em seus clocks para o aumeto de seu processamento o que gera ruído de sinal limitando sua performance.
Fonte:

terça-feira, 16 de junho de 2009

Pegar informações de uma unidade (Delphi)

Nesse exemplo mostraremos como recuperar informações como setores, bytes por setores e aghrupamentos livres, o exemplo completo pode ser baixado aqui.
Insira no formulario um Edit para receber o caminho do diretorio, um memo para mostrar as informações e um botão para iniciar a consulta, segue a codificação do click do botão:
var
  SetoresPorAgrup, BytesPorSetor, AgrupLivres,
  TotalAgrup: DWord;
begin
  Memo1.Clear;
  if GetDiskFreeSpace( pchar(Edit1.Text) , SetoresPorAgrup,
      BytesPorSetor, AgrupLivres, TotalAgrup) then
  with Memo1.Lines do begin
    Add('------------------------------------------------------------------');
    Add('----- Informações sobre a unidade ['+Edit1.Text+'] -----');
    Add('Setores por agrupamento: ' + IntToStr(SetoresPorAgrup));
    Add('Bytes por setor: ' + IntToStr(BytesPorSetor));
    Add('Agrupamentos livres: ' + IntToStr(AgrupLivres));
    Add('Total de agrupamentos: ' + IntToStr(TotalAgrup));
    Add('----- Resumo da unidade ['+Edit1.Text+']-----');
    Add('Total de bytes: ' +
      IntToStr(TotalAgrup * SetoresPorAgrup * BytesPorSetor));
    Add('Bytes livres: ' +
      IntToStr(AgrupLivres * SetoresPorAgrup * BytesPorSetor));
    Add('------------------------------------------------------------------');
 
end;
end;

sexta-feira, 12 de junho de 2009

Bug do Twitter ?

bug Segundo a empresa “WhereCloud” o Twitter estaria próximo de seu limite máximo de mensagens únicas (2.147.483.647), e que estimado na média de postagens por dia,  o chamado “Twitpocalypse” acontecerá amanhã dia 13/06. Na minha humilde opinião isso é mais um golpe de marketing mas vamos esperar para ver.

quinta-feira, 11 de junho de 2009

Nanotecnologia em cigarros?

nanotubo Isso mesmo, o intuito é filtrar certos elementos como a nicotina, o alcatrão e outros compostos por meio de nanotubos de carbono. A descoberta de uma nova propriedade dos nanotubos aconteceu na Faculdade de Filosofia, Ciências e Letras de Ribeirão Preto (FFCLRP) da USP, pela doutoranda Elaine Matsubara do grupo de pesquisa liderado pelo professor José Maurício Rosolen. Foram realizados experimentos com auxílio de espectrometria de massa e infra-vermelho para chegar a aplicação nos filtros, onde foi constatado que certas substancias foram completamente retidas pelo filtro.
O nome do nanotubo de carbono (único a surtir efeito) não foi revelado, pois o artigo de publicação cientifica assim como o pedido de patente ainda não foram completados.
nanotubo2
Fonte:

terça-feira, 9 de junho de 2009

Alterar cores do PageControl (Delphi)

O padrão Windows todo cinza não é muito atraente, por isso quando nos utilizarmos do PageControl podemos alterar suas cores e fontes da seguinte maneira:

  • Em primeiro lugar devemos alterar a propriedade OwnerDraw para TRUE;

  • Depois implementar seu método DrawTab da seguinte maneira:
//pinta a fonte
Control.Canvas.Font.Color:=clBlack;
//
// pinta a paleta / aba
Control.Canvas.brush.Color:=clSkyBlue;

PageControl1.Canvas.Rectangle(Rect);
Control.Canvas.TextOut(Rect.left+5,Rect.top+3,PageControl1.Pages[tabindex].Caption);

// pinta a parte interna (tabsheet)
PageControl1.Pages[TabIndex].brush.Color := Control.Canvas.brush.Color;
PageControl1.Pages[TabIndex].Repaint;


  • Caso a intenção seja manter cada aba com seu próprio estilo basta adicionar um CASE filtrando o índice das abas:
case TabIndex of
  0: Control.Canvas.Font.Color:=clBlack;
  1: Control.Canvas.Font.Color:=clWindow;
  2: Control.Canvas.Font.Color:=clRed;
end;
Exemplo completo aqui.

domingo, 7 de junho de 2009

CPI da Petrobras

Após novo adiamento para a instalação da CPI da Petrobras estamos aqui para exigir que os senhores senadores compareçam a sala onde funcionará a comissão, já que na última semana por duas vezes não o fizeram.
Entenda a CPI
A CPI criada para investigar irregularidades na Petrobras contou com o apoio de 30 senadores, três a mais que o número mínimo necessário para a criação de uma Comissão de Inquérito. O autor do pedido é o senador tucano Álvaro Dias (PSDB-PR).
Em seu requerimento, Álvaro destaca os seguintes pontos a serem investigados:

  • Indícios de fraudes nas licitações para reforma de plataformas de exploração de petróleo apontados pela operação “Águas Profundas” da Polícia Federal;

  • Graves irregularidades nos contratos de construção de plataformas, apontados pelo Tribunal de Contas da União;

  • Indícios de superfaturamento na construção da refinaria Abreu e Lima, em Pernambuco, apontados por relatório do Tribunal de Contas da União;

  • Denúncias de desvios de dinheiro dos royalties do petróleo, apontados pela operação “Royalties”, da Polícia Federal;

  • Denúncias de fraudes do Ministério Público Federal envolvendo pagamentos, acordos e indenizações feitos pela ANP a usineiros;

  • Denúncias de uso de artifícios contábeis que resultaram em redução do recolhimento de impostos e contribuições no valor de R$ 4,3 bilhões;

  • Denúncias de irregularidades no uso de verbas de patrocínio da estatal.
A CPI vai ter 180 dias para realizar seus trabalhos, podendo ser prorrogada por igual período. (Último Segundo)
Movimento
É com muito orgulho que estamos aderindo ao movimento da Thais, deixando aqui nosso sentimento de repulsa pelo desinteresse (seja lá qual for o motivo) dos $enadores em relação a CPI.
cpipetrobras
Seguem os e-mails dos excelentíssimos, façamos nossa parte também:
Destinatários:
Almeida Lima (PMDB-SE) almeida.lima@senador.gov.br
Álvaro Dias (PSDB-PR) alvarodias@senador.gov.br
Antônio Carlos Junior (DEM-BA) acmjr@senador.gov.br
Delcídio Amaral (PT-MS) delcidio.amaral@senador.gov.br
Fernando Collor (PTB-AL) fernando.collor@senador.gov.br
Gim Argello (PTB-DF) gim.argello@senador.gov.br
Heráclito Fortes (DEM-PI) heraclito.fortes@senador.gov.br
Ideli Salvatti (PT-SC) ideli.salvatti@senadora.gov.br
Inácio Arruda (PCdoB-CE) inacioarruda@senador.gov.br
Jefferson Praia (PDT-AM) jefferson.praia@senador.gov.br
João Pedro (PT-AM) joaopedro@senador.gov.br
Leomar Quintanilha (PMDB-TO) leomar@senador.gov.br
Marcelo Crivella (PRB-RJ) crivella@senador.gov.br
Paulo Duque (PMDB-RJ) paulo.duque@senador.gov.br
Romero Jucá (PMDB-RR) romero.juca@senador.gov.br
Sérgio Guerra (PSDB-PE) sergio.guerra@senador.gov.br
Tasso Jereissati (PSDB-CE) tasso.jereissati@senador.gov.br
Valdir Raupp (PMDB-RO) valdir.raupp@senador.gov.br
Fonte:

quinta-feira, 4 de junho de 2009

Listar arquivos existentes em diretório (Delphi)

Mostraremos uma maneira simples e prática para listar o conteúdo de um diretório com a opção de incluir nessa listagem os arquivos de seus subdiretórios.
No exemplo abaixo temos um Edit para receber o diretório a ser pesquisado um CheckBox para indicar se os subdiretórios entrarão na pesquisa um botão para efetuar a pesquisa e um Memo para listar os arquivos encontrados, no final um Edit que receberá o cálculo final (em bytes) da soma do tamanho dos arquivos.
procedure TForm1.Button1Click(Sender: TObject);
begin
  tamanhoTotal := 0;
  memLista.Lines.Clear;
  ListarArquivos(edtDiretorio.Text, chkSub.Checked);
  Edit1.Text := IntToStr( tamanhoTotal );
end;
procedure TForm1.ListarArquivos(Diretorio: string; Sub:Boolean);
var
  F: TSearchRec;
  Ret: Integer;
  TempNome: string;
begin
  Ret := FindFirst(Diretorio+'\*.*', faAnyFile, F);
  try
    while Ret = 0 do
      begin
        if TemAtributo(F.Attr, faDirectory) then
          begin
            if (F.Name <> '.') And (F.Name <> '..') then
              if Sub = True then
                begin
                  TempNome := Diretorio+'\' + F.Name;
                  ListarArquivos(TempNome, True);
                end;
          end
        else
          begin
            memLista.Lines.Add(Diretorio+'\'+F.Name);
            tamanhoArquivo( Diretorio+'\'+F.Name );
          end;
        //
        Ret := FindNext(F);
      end;
  finally
    begin
      FindClose(F);
    end;
  end;
end;

function TForm1.TemAtributo(Attr, Val: Integer): Boolean;
begin
  Result := Attr and Val = Val;
end;
procedure TForm1.tamanhoArquivo(Arq: String);
var
  SR: TSearchRec;
  I: integer;
begin
  I := FindFirst(arq, faArchive, SR);
  try
    if I = 0 then
      tamanhoTotal := tamanhoTotal + ( SR.Size );
  finally
    FindClose(SR);
  end;
end;

Baixe o exemplo completo aqui.

Verificar tamanho de arquivo (Delphi)

Para essa pequena dica construiremos um formulário contendo dois Edits e um botão, o primeiro Edit recebe o caminho e nome do arquivo, o segundo receberá o tamanho em bytes.
Segue a cadificação do evento click do botão:
procedure TForm1.Button1Click(Sender: TObject);
var
  SR: TSearchRec;
  I: integer;
begin
  I := FindFirst(Edit1.Text, faArchive, SR);
  try
    if I = 0 then
      Edit2.Text := IntToStr( SR.Size )
    else
      Edit2.Text := '-1';
  finally
    FindClose(SR);
  end;
end;

Baixe o exemplo completo aqui.

segunda-feira, 1 de junho de 2009

Um pouco sobre a TV máfia (vulgo TV Globo)

Para os mais atentos não é novidade que a TV Globo não só deturpa a realidade de certos acontecimentos em prol de determinados indivíduos como mina a capacidade de discernimento do certo e errado do nosso país com suas superproduções recheadas com enredos absurdos que passam longe da realidade da nação.
Novelas com contextos que não ignoram o flagelo da maioria, mas que sempre passam a falsa impressão de que nem tudo esta tão mal assim ou que um dia tudo melhora, ou seus programas vazios de conteúdo que exploram o que ha de pior nos participantes (que já não são grande coisa, e eu me recuso ate a escrever o nome, mas que todos já devem imaginar do que estou falando) tem sido de grande importância para a manutenção de tantos governos corruptos, civis ou militares, que tem alargado cada vez mais o abismo entre os pobres e ricos.
A lavagem cerebral realizada ao longo e tantos anos e notória, basta olhar agora para a TV do seu vizinho ou mesmo a sua e verificar em qual canal ela esta sintonizada. Falta de capacidade da concorrência ou conteúdo ainda pior nos concorrentes seriam bons argumentos para isso, mas a verdade não e bem essa, temos aceitado o lixo imposto como algo útil, e porque não até necessário sem contestação.
Eu recomendo um documentário produzido pela BBC de Londres em 1993 chamado de “Muito além do cidadão Kane” e que por ordem judicial foi proibido de ser transmitido em nosso país (maior interessado), mas que agora é facilmente encontrado na internet. A qualidade não é das melhores, ainda mais pela idade e por ser (acredito eu) uma versão não tão bem formatada, mas vale à pena assistir. No documentário são entrevistados antigos funcionários, membros do governo entre outras figuras importantes, mostrando fatos onde a rede manipulou todo o país, elegeu pessoas conhecidamente corruptas, jogou lado a lado com os regimes militares ocultando e até exaltando seus governos, participaram de esquemas em conjunto com o governo em busca de concessões de canais e ate quebras de empresas particulares para posterior compra a baixo custo.
Em uma rápida procura pelo Google eu achei o documentário no CMI Brasil e no próprio Google vídeos, o documentário é dividido em quatro partes, caso o vídeo em um dos dois links esteja incompleto podem me pedir que eu pego o meu, hospedo na internet e repasso o link.
Abraços a todos e não deixem de ver o documentário e antes de tudo ponderar sobre o que estamos ajudando a manter para nossos descendentes…