sábado, 24 de novembro de 2012

Instalando MongoDB no windows

É um fato que os "bancos de dados" chamados NoSQL(Not only Sql) estão ganhando cada vez mais destaque, pela sua versatilidade e performance. São implementações para armazenar tipos de dados específicos como: key-value (redis, riak), document(CouchDB, MongoDB), column family(Cassandra, H-Base), graph(Neo4j).

Eu optei por experimentar o MongoDB, pois além de ser um dos mais populares,

domingo, 23 de setembro de 2012

Instalando Indy 10 no Delphi 7

Olá, recentemente surgiu a necessidade de consumir recursos REST utilizando o Delphi, no caso a versão XE2, mas muitos projetos ainda utilizam delphi 7. O Delphi XE2 vem com a versão 10 da biblioteca Indy, e funcionou muito bem, e quando fui testar no Delphi 7, que vem com Indy 9, surgiram vários problemas na manipulação dos códigos de retorno HTTP, e para resolver isso decidi atualizar a versão da biblioteca indy do Delphi 7, da versão 9 para a versão 10.

Para começar baixe a versão mais recente através do endereço http://indy.fulgan.com/ZIP, no momento desta publicação, a última versão disponível é o build 4782.

No Delphi 7, vá na opção Component\Install Packages, localize a biblioteca Indy conforme a imagem abaixo, e remova a biblioteca clicando no botão Remove.


Feche o Delphi, pois é preciso remover as referências do Indy 9 na pasta de instalação do delphi. Vá até a pasta onde o delphi está instalado, por padrão "C:\Program Files\Borland\Delphi7". Renomeie os arquivos do Indy adicionando o sufixo indy9, caso você queirar restaurar em outro momento, ou apague os arquivos se sentir a vontade. Deve ficar conforme segue:

  • Bin\indy70.bpl para Bin\indy70_indy9.bpl
  • Bin\indy70.map para Bin\indy70_indy9.map
  • Bin\dclindy70.bpl para Bin\dclindy70_indy9.bpl
  • Bin\dclindy70.map para Bin\dclindy70_indy9.map
  • Lib\indy.dcp para Lib\indy_indy9.dcp
  • Lib\indy.dcu para Lib\indy_indy9.dcu
  • Lib\dclindy.dcp para Lib\dclindy_indy9.dcp
  • Lib\dclindy.dcu para Lib\dclindy_indy9.dcu
  • Source\Indy para Source\Indy_9

Remova também todos os dcu's existentes dentro das pastas Lib e Lib\Debug, que tenham o nome iniciado com "id", por exemplo, "IdBaseComponent.dcu".

Descompacte o arquivo que você baixou. Dentro há uma pasta Lib e um arquivo Fulld7.bat que compila e instala para você, mais preferi fazer a instalação manualmente, para isso, é preciso compilar e instalar os seguintes pacotes, na sequência que segue:
  • IndySystem70.dpk (in Lib\System) --> Apenas Compila
  • IndyCore70.dpk (in Lib\Core) --> Apenas Compila
  • IndyProtocols70.dpk (in Lib\Protocols) --> Apenas Compila
  • dclIndyCore70.dpk (in Lib\Core) --> Compila e Instala
  • dclIndyProtocols70.dpk (in Lib\Protocols) --> Compila e Instala

Agora só falta adicionar os novos arquivos ao LibraryPath do delphi:
  • C:\Indy10\Lib\System
  • C:\Indy10\Lib\Core
  • C:\Indy10\Lib\Protocols

Era isso, agora seu Delphi 7 pode usufruir das melhorias e correção de bugs adicionadas ao Indy 10.

Qualque dúvida ou problema durante a atualização deixe um comentário.

segunda-feira, 6 de agosto de 2012

Primeiros passos com git

Depois de uma pausa, retomarei o assunto sobre git. Hoje vou mostrar como criar um novo repositório e efetuar as operações básicas. Se você não sabe o que é git ou ainda não tem o git instalado, leia o post anterior: Instalando e Configurando git no windows

Para começar, abra o Git Bash no diretório onde você vai criar seu projeto, para efeitos de exemplo vou manter o projeto na raiz do drive C.

$ mkdir learning-git
$ cd learning-git
$ git init
  Initialized empty Git repository in c:/learning-git/.git/
$ touch README.md

sábado, 19 de maio de 2012

Instalando e Configurando git no windows

Olá pessoal, hoje vou falar um pouco sobre git e github. Git é um sistema de controle de versão distribuído (DVCS) free e open source, para saber mais sobre o mesmo, acesse o site. Github é um serviço de hospedagem de código fonte que utiliza o git como sistema de controle de versão, possuí planos gratuítos e comerciais, e é amplamente utilizado pela comunidade open source. O Github pode se considerado como uma rede social, onde você pode ser seguido e seguir os projetos de outras pessoas, pode facilmente enviar contribuições à projetos open source, e também há empresas, pelo menos lá fora, que tem utilizado o github como forma de avaliar a contratação de programadores.

terça-feira, 20 de março de 2012

Consultando e eliminando sessões ativas no PostgreSQL

Já mostrei como listar/matar as sessões ativas no oracle, hoje vou mostrar essa mesma funcionalidade acessando o banco de dados PostgreSQL. O sql a seguir lista todas as sessões ativas.

select datname, 
       procpid, 
       usename, 
       application_name, 
       client_addr, 
       client_hostname, 
       backend_start 
  from pg_stat_activity

EDIT:
A coluna procid foi renomeada para pid a partir da versão 9.2 do PostgreSQL

Com a lista de usuário em mãos, podemos optar por "matar" a sessão de algum usuário ativo,

quarta-feira, 14 de março de 2012

Consultando e eliminando sessões ativas no Oracle

Hoje vou deixar uma dica rápida, como listar as sessões ativas no oracle, isto é, os usuários que estão conectados através de alguma aplicação cliente. O sql a seguir lista todas as sessões ativas excluindo os processos do próprio oracle.

SELECT s.username,
     s.osuser,
     s.sid,
     s.serial#,
     p.spid,
     s.status,
     s.machine,
     s.program,
     TO_CHAR(s.logon_Time,'DD-MON-YYYY HH24:MI:SS') AS logon_time
   FROM v$session s
  inner join v$process p
     on s.paddr = p.addr
  WHERE s.status = 'ACTIVE' 
    and s.type <> 'BACKGROUND'


Com a lista de usuário em mãos, podemos optar por "matar" a sessão de algum usuário ativo.

quinta-feira, 16 de fevereiro de 2012

Delphi SqlBuilder

Olá, há algum tempo eu havia desenvolvido uma rotina para modificar a cláusula Where de sql statements(pelo menos dos mais simples). Agora surgiu a oportunidade de compartilhar a solução, então aqui está.

Logo abaixo podemos ver a definição da classe.

TSqlBuilder = class
  private
  public
    class function AddWhere(ASql, AWhere: String; AMainTable: String = ''): String;
    class function ChangeOrdeBy(ASql, AOrderFields: String): String;
  class function RemoveOrderBy(ASql: String): String;
  end;

Como podem ver a definição da classe é bastante simples e possui apenas funções de classe, nada de parser's de sql complicados.