<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Júnior Oliveira</title>
	<atom:link href="http://junioro.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://junioro.wordpress.com</link>
	<description>C Sharp; Delphi; ASP .NET; PHP; jQuery; E muito mais.</description>
	<lastBuildDate>Mon, 02 Jan 2012 09:26:20 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='junioro.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/71ee88491db07f8b27e7314fa51c6ad1?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Júnior Oliveira</title>
		<link>http://junioro.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://junioro.wordpress.com/osd.xml" title="Júnior Oliveira" />
	<atom:link rel='hub' href='http://junioro.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Os números de 2011</title>
		<link>http://junioro.wordpress.com/2012/01/02/os-numeros-de-2011/</link>
		<comments>http://junioro.wordpress.com/2012/01/02/os-numeros-de-2011/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 09:26:20 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
		
		<guid isPermaLink="false">http://junioro.wordpress.com/?p=805</guid>
		<description><![CDATA[Os duendes de estatísticas do WordPress.com prepararam um relatório para o ano de 2011 deste blog. Aqui está um resumo: Um comboio do metrô de Nova Iorque transporta 1.200 pessoas. Este blog foi visitado cerca de 5.700 vezes em 2011. Se fosse um comboio, eram precisas 5 viagens para que toda gente o visitasse. Clique [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=805&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Os duendes de estatísticas do WordPress.com prepararam um relatório para o ano de 2011 deste blog.</p>
<p>	<a href="/2011/annual-report/"><img src="http://www.wordpress.com/wp-content/mu-plugins/annual-reports/img/emailteaser.jpg" width="100%" alt="" /></a></p>
<p>Aqui está um resumo:</p>
</p>
<blockquote><p>Um comboio do metrô de Nova Iorque transporta 1.200 pessoas. Este blog foi visitado cerca de <strong>5.700</strong> vezes em 2011. Se fosse um comboio, eram precisas 5 viagens para que toda gente o visitasse.</p></blockquote>
<p><a href="/2011/annual-report/">Clique aqui para ver o relatório completo</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/805/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=805&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2012/01/02/os-numeros-de-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>

		<media:content url="http://www.wordpress.com/wp-content/mu-plugins/annual-reports/img/emailteaser.jpg" medium="image" />
	</item>
		<item>
		<title>Auto-Implemented Properties no C#</title>
		<link>http://junioro.wordpress.com/2011/08/02/auto-implemented-properties-no-c/</link>
		<comments>http://junioro.wordpress.com/2011/08/02/auto-implemented-properties-no-c/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 02:24:54 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=791</guid>
		<description><![CDATA[Olá pessoal, faz um tempo que não posto nada, mas agora vou voltar a postar começando com algumas dicas. Auto properties é uma forma de declarar propriedades de forma mais simples, quando não há necessidade de nenhuma lógica na propriedade. A forma mais comum de declarar estas propriedades é como está escrita abaixo. Porém podemos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=791&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, faz um tempo que não posto nada, mas agora vou voltar a postar começando com algumas dicas.<br />
<strong>Auto properties</strong> é uma forma de declarar propriedades de forma mais simples, quando não há necessidade de nenhuma lógica na propriedade.<br />
A forma mais comum de declarar estas propriedades é como está escrita abaixo.</p>
<p><pre class="brush: csharp;">

public class Endereco
{
    private string _numero;

    public string Numero
    {
        get { return _numero; }
        set { _numero = value; }
    }
}

</pre></p>
<p>Porém podemos neste caso escrever este código da seguinte forma:</p>
<p><pre class="brush: csharp;">

public class Endereco
{
    public string Numero { get; set; }
}

</pre></p>
<p>Muito mais simples não? Caso queiram declarar uma propriedade como <strong>read-only</strong> é só fazer da seguinte forma.</p>
<p><pre class="brush: csharp;">

public class Endereco
{
    public string Numero { get; private set; }
}

</pre></p>
<p>Bom pessoal é isto espero que tenham gostado. Para quem quiser ter mais detalhes teóricos segue o link <a href="http://msdn.microsoft.com/en-us/library/bb384054.aspx" title="msdn.microsoft.com" target="_blank">msdn.microsoft.com</a>. Até a próxima.</p>
<br />Filed under: <a href='http://junioro.wordpress.com/category/desenvolvimento/c/'>C#</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/791/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=791&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/08/02/auto-implemented-properties-no-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>
	</item>
		<item>
		<title>A vida em um sonho</title>
		<link>http://junioro.wordpress.com/2011/07/27/a-vida-em-um-sonho/</link>
		<comments>http://junioro.wordpress.com/2011/07/27/a-vida-em-um-sonho/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 11:39:54 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[Poesia]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=786</guid>
		<description><![CDATA[A vida em um sonho Quando meu coração se toma em tristeza Fortificam-se em mim mais uma destreza Pois assim tomo as palavras e sua real beleza Ao te olhar, minhas retinas acabam por mais machucar Uma tristeza em meu peito aparecer E meus olhos de lágrimas se encher Sem palavras não posso me lamentar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=786&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="float:left;margin-bottom:20px;width:100%;">
<div style="float:left;"><strong>A vida em um sonho</strong></div>
<div style="clear:left;float:left;margin-top:20px;">Quando meu coração se toma em tristeza</div>
<div style="clear:left;float:left;">Fortificam-se em mim mais uma destreza</div>
<div style="clear:left;float:left;">Pois assim tomo as palavras e sua real beleza</div>
<div style="clear:left;float:left;margin-top:20px;">Ao te olhar, minhas retinas acabam por mais machucar</div>
<div style="clear:left;float:left;">Uma tristeza em meu peito aparecer</div>
<div style="clear:left;float:left;">E meus olhos de lágrimas se encher</div>
<div style="clear:left;float:left;margin-top:20px;">Sem palavras não posso me lamentar</div>
<div style="clear:left;float:left;">Só as minha lágrimas posso apoiar</div>
<div style="clear:left;float:left;">E só em meus sonhos posso com você estar</div>
<div style="clear:left;float:left;margin-top:20px;">Em meu leito agora vou repousar</div>
<div style="clear:left;float:left;">E mais uma noite em você sonhar</div>
<div style="clear:left;float:left;">Mais uma noite você amar</div>
<div style="clear:left;float:left;margin-top:20px;">Como se minha vida estivesse neste sonho</div>
<div style="clear:left;float:left;">Como se a realidade fosse um pesadelo</div>
<div style="clear:left;float:left;">E você, esses dois termos</div>
<div style="clear:left;float:left;margin-top:20px;padding-left:260px;">28/05/2003</div>
</div>
<br />Filed under: <a href='http://junioro.wordpress.com/category/poesia/'>Poesia</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/786/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=786&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/07/27/a-vida-em-um-sonho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>
	</item>
		<item>
		<title>Registrar Logs no Event Viewer com Delphi</title>
		<link>http://junioro.wordpress.com/2011/05/19/registrar-logs-no-event-viewer-com-delphi/</link>
		<comments>http://junioro.wordpress.com/2011/05/19/registrar-logs-no-event-viewer-com-delphi/#comments</comments>
		<pubDate>Thu, 19 May 2011 09:16:38 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DI]]></category>
		<category><![CDATA[IoC]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=638</guid>
		<description><![CDATA[Pessoal, estudando formas de gravar logs da aplicação, me lembrei do Event Viewer do Windows, tempo atrás utilizava classes do .Net em C# para fazer este logs e não mais em arquivos textos. Resolvi estudar se era possível utilizar a mesma técnica em Delphi XE e descobri que sim achei interessante compartilhar com vocês. Vale [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=638&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pessoal, estudando formas de gravar logs da aplicação, me lembrei do <strong>Event Viewer</strong> do <strong>Windows</strong>, tempo atrás utilizava classes do <strong>.Net</strong> em <strong>C#</strong> para fazer este logs e não mais em arquivos textos. Resolvi estudar se era possível utilizar a mesma técnica em <strong>Delphi XE</strong> e descobri que sim achei interessante compartilhar com vocês. Vale lembrar que não é algo novo, funciona em versões anteriores do <strong>Delphi</strong>.</p>
<p>E para não ficar apenas em um exemplo de como utilizar o <strong>Event Viewer</strong> com <strong>Delphi</strong>, desenvolvi toda uma estrutura de logs de mensagens utilizando <strong>Interfaces</strong>, onde ficará fácil caso queiram mudar a forma de gravação dos logs das aplicações de vocês, e também, estou utilizando neste exemplo uma arquitetura onde será fácil aplicar <strong>IoC</strong> (<strong>Inversão de Controle</strong>) e <strong>DI</strong> (<strong>Injeção de Dependências</strong>), vou deixar para falar deste dois Padrões em outro post.</p>
<p>O primeiro código é o nosso <strong>enumerator</strong>, que irá conter os tipos possíveis de log das mensagens da aplicação. Não é necessário separar este <strong>enumerator</strong> da <strong>unit</strong> que irá conter a nossa <strong>interface</strong> descrita abaixo, fiz está separação apenas para organizar melhor os arquivos da aplicação.</p>
<p><pre class="brush: delphi;">

unit LogType;

interface

type
  TLogType = (Information, Warning, Error);

implementation

end.

</pre></p>
<p>O segundo código é a nossa <strong>Interface</strong> (Contrato), onde todas as classes que irão realizar logs deverão. Note que estou utilizando <strong>summary</strong>, ele é usado para descrever informações sobre o <strong>tipo</strong> ou <strong>membros do tipo</strong>, para quando formos utilizar já venha à definição do <strong>tipo</strong> no <strong>Intellisense</strong> como <strong>tipos</strong> próprio <strong>Delphi</strong> e também é uma forma de documentação do código fonte.</p>
<p><pre class="brush: delphi;">

unit Logger;

interface

uses
  LogType;

type
  ILogger = interface
    /// &lt;summary&gt;
    /// Registra os logs.
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;message&quot;&gt;Mensagem que será registrada.&lt;/param&gt;
    /// &lt;param name=&quot;logType&quot;&gt;Tipo do log.&lt;/param&gt;
    procedure Write(message: string; logType: TLogType);
  end;

implementation

end.

</pre></p>
<p>Abaixo a implementação da nossa classe que será responsável por registrar os logs no <strong>Event Viewer</strong> do <strong>Windows</strong>. Não há muito que comentar do código apenas que estou utilizando um arquivo <strong>*.ini</strong>, localizado no path da aplicação para guardar as configurações do sistema e que não estou usando <strong>Strategy Pattern</strong>, vou deixar o código da forma que está para refatorar ele e explicar melhor este Pattern em outro artigo.</p>
<p><pre class="brush: delphi;">

unit LoggerEventViewer;

interface

uses
  Forms, IniFiles, SysUtils, SvcMgr, Windows, Logger, LogType;

type
  TLoggerEventViewer = class(TInterfacedObject, ILogger)
  public
    { Public declarations }
    procedure Write(message: string; logType: TLogType);

  end;

implementation

{ TEventView }

procedure TLoggerEventViewer.Write(message: string; logType: TLogType);
var
  iniFiles: TIniFile;
  eventLogger: TEventLogger;

begin
  iniFiles := TIniFile.Create(Format('%s%s', [ExtractFilePath(Forms.Application.ExeName), 'Config.ini']));
  eventLogger := TEventLogger.Create(iniFiles.ReadString('Application', 'LoggerEventSource', ''));
  try
    case logType of
      TLogType.Error:
        eventLogger.LogMessage(message, EVENTLOG_ERROR_TYPE, 0, 0);

      TLogType.Warning:
        eventLogger.LogMessage(message, EVENTLOG_WARNING_TYPE, 0, 0);

      TLogType.Information:
        eventLogger.LogMessage(message, EVENTLOG_INFORMATION_TYPE, 0, 0);
    end;
  finally
    iniFiles.Free();
    FreeAndNil(eventLogger);
  end;
end;

end.

</pre></p>
<p>Abaixo a implementação da nossa classe que será responsável por registrar os logs em <strong>arquivo texto</strong>. A única consideração é que estou utilizando o método <strong>WriteAllText</strong> da classe <strong>TFile</strong> contida na nova unit <strong>IOUtils</strong> para <strong>IO</strong> (input/output) do <strong>Delphi</strong>, este método sempre sobrescreve o conteúdo do arquivo (não é recomendado o uso para realizar logs já que não grava a informação que já existia no arquivo, estou utilizando apenas como exemplo), também verifica se existe criado no disco caso não existe ele já cria automaticamente.</p>
<p><pre class="brush: delphi;">

unit LoggerFileText;

interface

uses
  Forms, IniFiles, IOUtils, TypInfo, SysUtils, Logger, LogType;

type
  TLoggerFileText = class(TInterfacedObject, ILogger)
  public
    { Public declarations }
    procedure Write(message: string; logType: TLogType);

  end;

implementation

{ TEventView }

procedure TLoggerFileText.Write(message: string; logType: TLogType);
var
  iniFile: TIniFile;

begin
  message := Format('%s - %s', [GetEnumName(TypeInfo(TLogType), Integer(logType)), message]);
  iniFile := TIniFile.Create(Format('%s%s', [ExtractFilePath(Application.ExeName), 'Config.ini']));
  try
    TFile.WriteAllText(iniFile.ReadString('Application', 'LoggerFilePath', ''), message);
  finally
    iniFile.Free();
  end;
end;

end.

</pre></p>
<p>Caso queiram gravar os logs também em <strong>banco de dados</strong> ou deixar já uma classe que permita está ação, é necessário apenas implementar a forma de acesso e gravação no <strong>banco de dados</strong> dentro do método <strong>Write</strong>, vocês irão notar mais abaixo que a forma de utilização da classe não irá mudar.</p>
<p><pre class="brush: delphi;">

unit LoggerDatabase;

interface

uses
  Logger, LogType;

type
  TLoggerDatabase = class(TInterfacedObject, ILogger)
  public
    { Public declarations }
    procedure Write(message: string; logType: TLogType);

  end;

implementation

{ TEventView }

procedure TLoggerDatabase.Write(message: string; logType: TLogType);
begin
  { Implementar a forma de acesso e gravação na base de dados. }
end;

end.

</pre></p>
<p>Abaixo o código da nossa classe que será responsável por gerenciar os logs da aplicação. Note que existem dois métodos <strong>Create</strong>, um está recebendo uma variável <strong>ILogger</strong> que é a nossa <strong>interface</strong> que contém os métodos responsáveis por fazer o log da aplicação, este é um exemplo de <strong>IoC</strong>. E o outro método <strong>Create</strong> irá chamar o método descrito acima passando a forma de autenticação que será utilizada na aplicação por padrão, este é um exemplo de <strong>DI</strong>. Da forma que foi desenvolvida está classe fica fácil usar um <strong>Container de Dependências</strong> que será assuntos de outro post.</p>
<p><pre class="brush: delphi;">

unit LogManager;

interface

uses
  Logger, LogType;

type
  TLogManager = class
  private
    { Private declarations}
    _logger: ILogger;

  public
    { Public declarations }

    /// &lt;summary&gt;
    ///
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;logger&quot;&gt;&lt;/param&gt;
    constructor Create(const logger: ILogger); overload;

    /// &lt;summary&gt;
    ///
    /// &lt;/summary&gt;
    constructor Create(); overload;

    /// &lt;summary&gt;
    /// Registra os logs do tipo informação.
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;message&quot;&gt;Informação que será registrada.&lt;/param&gt;
    procedure WriteInfo(message: string);

    /// &lt;summary&gt;
    /// Registra os logs do tipo atenção.
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;message&quot;&gt;Mensagem de atenção que será registrada.&lt;/param&gt;
    procedure WriteWarning(message: string);

    /// &lt;summary&gt;
    /// Registra os logs do tipo erro.
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;message&quot;&gt;Erro que será registrado.&lt;/param&gt;
    procedure WriteError(message: string);

  end;

implementation

uses
  LoggerEventViewer, LoggerFileText;

{ TLogManager }

constructor TLogManager.Create(const logger: ILogger);
begin
  _logger := logger;
end;

constructor TLogManager.Create();
begin
  Create(TLoggerFileText.Create());
end;

procedure TLogManager.WriteInfo(message: string);
begin
  _logger.Write(message, TLogType.Information);
end;

procedure TLogManager.WriteWarning(message: string);
begin
  _logger.Write(message, TLogType.Warning);
end;

procedure TLogManager.WriteError(message: string);
begin
  _logger.Write(message, TLogType.Error);
end;

end.

</pre></p>
<p>Para utilizar as nossas classes de log é necessário antes colocar no <strong>uses</strong> as <strong>units</strong> abaixo.</p>
<p><pre class="brush: delphi;">

uses
  Logger, LogManager, LoggerEventViewer;

</pre></p>
<p>Existem duas formas de utilizar a nossa classe <strong>LogManager</strong>. A primeira forma, é apenas instanciar o nosso objeto <strong>logManager</strong> do tipo <strong>TLogManager</strong> sem passar nenhum objeto no construtor, sendo assim a nossa classe será responsável por instanciar a variável do tipo <strong>ILogger</strong> com a classe padrão de realizar logs do sistema. Segue abaixo um exemplo.</p>
<p><pre class="brush: delphi;">

var
  logManager: TLogManager;

begin
  logManager := TLogManager.Create();
  try
    logManager.WriteInfo('Mensagem de info do projeto de estudo!');
    logManager.WriteWarning('Mensagem de warning do projeto de estudo!');
    logManager.WriteError('Mensagem de error do projeto de estudo!');
  finally
    FreeAndNil(logManager);
  end;
end;

</pre></p>
<p>A segunda forma é criar uma variável do tipo <strong>ILogger</strong> e depois instanciar este objeto com a classe na qual deseja realizar o log da aplicação, e passar como parametro no construtor do método Create da classe TLogManager. Note que a forma de utilização é a mesma para todos os casos, o que altera é apenas a classe que irá instanciar o nosso objeto, com isto, mudar a forma que se realiza o log e a manutenção do código se torna muito mais simples e fácil. Segue abaixo um exemplo.</p>
<p><pre class="brush: delphi;">

var
  logger: ILogger;
  logManager: TLogManager;

begin
  logger := TLoggerEventViewer.Create();
  logManager := TLogManager.Create(logger);
  try
    logManager.WriteInfo('Mensagem de info do projeto de estudo!');
    logManager.WriteWarning('Mensagem de warning do projeto de estudo!');
    logManager.WriteError('Mensagem de error do projeto de estudo!');
  finally
    FreeAndNil(logManager);
  end;
end;

</pre></p>
<p>Abaixo as configurações do nosso arquivo de configuração <strong>Config.ini</strong> localizado junto ao executável do projeto.</p>
<p><pre class="brush: delphi;">

[Application]
//Caminho que será gravado o arquivo de log.
LoggerFilePath='C:\EstudoDelphi.txt'

//Nome da fonte do Event Viewer.
LoggerEventSource='EstudoDelphi'

</pre></p>
<p>Para abrir o Event Viewer do Windows, basta ir no <strong>Executar</strong> e digitar: <strong>eventvwr.msc</strong>. A imagem abaixo mostrar como ficará o log registrado. Para melhor visualização clique na imagem.</p>
<p><a href="http://junioro.files.wordpress.com/2011/04/site-event-viewer-delphi.png"><img alt="site-event-viewer-delphi" src="http://junioro.files.wordpress.com/2011/04/site-event-viewer-delphi.png?w=591&#038;h=410" title="site-event-viewer-delphi" class="alignnone size-medium wp-image-387" width="591" height="410" /></a></p>
<p>Se quiserem o código fonte do exemplo, é só clicar <a href="http://www.activedelphi.com.br/imagens/artigos/reg_log_event_viewer/RegLogEventViewer.zip">aqui</a>. Espero que tenham gostado deste artigo. Agradeço a visita.</p>
<br />Filed under: <a href='http://junioro.wordpress.com/category/desenvolvimento/delphi/'>Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/638/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=638&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/05/19/registrar-logs-no-event-viewer-com-delphi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>

		<media:content url="http://junioro.files.wordpress.com/2011/04/site-event-viewer-delphi.png" medium="image">
			<media:title type="html">site-event-viewer-delphi</media:title>
		</media:content>
	</item>
		<item>
		<title>Spawn</title>
		<link>http://junioro.wordpress.com/2011/05/04/spawn-2/</link>
		<comments>http://junioro.wordpress.com/2011/05/04/spawn-2/#comments</comments>
		<pubDate>Wed, 04 May 2011 09:31:08 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[Desenho]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=736</guid>
		<description><![CDATA[Desenho tirado por mim da revista do Spawn nº 115 &#8211; A Ponte Parte II e editado por Willian Barreto. Filed under: Desenho<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=736&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>Desenho tirado por mim da revista do <strong>Spawn nº 115 &#8211; A Ponte Parte II</strong> e editado por <a title="Willian Barretos" href="http://willianbarretos.wordpress.com/" target="_blank">Willian Barreto</a>.</em></p>
<p style="text-align:center;"><a href="http://junioro.files.wordpress.com/2011/04/img-005.jpg"><img class="size-medium wp-image-232 aligncenter" title="img-005" src="http://junioro.files.wordpress.com/2011/04/img-005.jpg?w=413&#038;h=550" alt="" width="413" height="550" /></a></p>
<br />Filed under: <a href='http://junioro.wordpress.com/category/desenho/'>Desenho</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/736/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/736/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/736/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/736/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/736/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/736/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/736/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/736/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/736/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/736/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/736/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/736/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/736/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/736/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=736&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/05/04/spawn-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>

		<media:content url="http://junioro.files.wordpress.com/2011/04/img-005.jpg?w=225" medium="image">
			<media:title type="html">img-005</media:title>
		</media:content>
	</item>
		<item>
		<title>Anjo</title>
		<link>http://junioro.wordpress.com/2011/04/25/anjo/</link>
		<comments>http://junioro.wordpress.com/2011/04/25/anjo/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 09:32:37 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[Poesia]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=682</guid>
		<description><![CDATA[Anjo Logo as palavras brotam renasce. E pela linha desta folha, escorrem sem nenhuma escolha. E se perde ao horizonte de outra face. Que em seus negros olhos, nasce. E em sua face angelical se esquece. E a dor se perde, falece. E o amor ressurge, aparece. Como um sonho que se alastra, permanece. E [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=682&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="float:left;margin-bottom:20px;width:100%;">
<div style="float:left;"><strong>Anjo</strong></div>
<div style="clear:left;float:left;margin-top:20px;">Logo as palavras brotam renasce.</div>
<div style="clear:left;float:left;">E pela linha desta folha,</div>
<div style="clear:left;float:left;">escorrem sem nenhuma escolha.</div>
<div style="clear:left;float:left;">E se perde ao horizonte de outra face.</div>
<div style="clear:left;float:left;margin-top:20px;">Que em seus negros olhos, nasce.</div>
<div style="clear:left;float:left;">E em sua face angelical se esquece.</div>
<div style="clear:left;float:left;">E a dor se perde, falece.</div>
<div style="clear:left;float:left;">E o amor ressurge, aparece.</div>
<div style="clear:left;float:left;margin-top:20px;">Como um sonho que se alastra, permanece.</div>
<div style="clear:left;float:left;">E a esperança que dos seus olhos corres,</div>
<div style="clear:left;float:left;">em uma lágrima que em seus lábios morre.</div>
<div style="clear:left;float:left;margin-top:20px;">E ao fim eu possa dizer-lhe,</div>
<div style="clear:left;float:left;">De um amor, que se viva enquanto aquece.</div>
<div style="clear:left;float:left;">Pois como uma chama, ao fim desaparece.</div>
<div style="clear:left;float:left;margin-top:20px;padding-left:240px;">06/07/2003</div>
</div>
<br />Filed under: <a href='http://junioro.wordpress.com/category/poesia/'>Poesia</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/682/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/682/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/682/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/682/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/682/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/682/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/682/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/682/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/682/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/682/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/682/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/682/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/682/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/682/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=682&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/04/25/anjo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>
	</item>
		<item>
		<title>Consumindo DataSnap Server com C#</title>
		<link>http://junioro.wordpress.com/2011/04/01/consumindo-datasnap-server-com-c-sharp/</link>
		<comments>http://junioro.wordpress.com/2011/04/01/consumindo-datasnap-server-com-c-sharp/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 09:22:27 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=560</guid>
		<description><![CDATA[Olá pessoal, mais um post sobre DataSnap com Delphi XE, agora eu vou demonstrar como consumir um método em um servidor DataSnap a partir de um cliente em C#. Segue o código do nosso método responsável por fazer a requisição no servidor. Método responsável por fazer a validação dos dados antes de realizar a solicitação [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=560&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, mais um post sobre <strong>DataSnap</strong> com <strong>Delphi XE</strong>, agora eu vou demonstrar como consumir um método em um servidor DataSnap a partir de um cliente em <strong>C#</strong>.</p>
<p>Segue o código do nosso método responsável por fazer a requisição no servidor.</p>
<p><pre class="brush: csharp;">

private static string HttpGet(string url)
{
    string result;

    try
    {
        //Faz a requisição a url montada acima.
        using (var resp = WebRequest.Create(url).GetResponse())
        {
            var reader = new StreamReader(resp.GetResponseStream());
            result = reader.ReadToEnd();
        }
    }
    catch
    {
        throw new Exception(@&quot;Ocorreu um erro!&quot;);
    }

    return result;
}

</pre></p>
<p>Método responsável por fazer a validação dos dados antes de realizar a solicitação no servidor.</p>
<p><pre class="brush: csharp;">

private bool Validacao()
{
    if (TxtCPF.Text.Trim() == string.Empty)
    {
        MessageBox.Show(@&quot;Digite um CPF!&quot;);
        TxtCPF.Focus();
        return false;
    }

    return true;
}

</pre></p>
<p>Método principal da aplicação. Note que estou utilizando uma classe chamada <strong>JObject</strong> para fazer a conversão dos dados de retorno do servidor para um objeto em JSON, está classe está contida na Class Library <strong>Newtonsoft.Json.dll</strong> para trabalhar com dados em JSON. Segue o link do projeto para download <a href="http://james.newtonking.com/projects/json-net.aspx">Json.NET</a>. Estou utilizando está classe pois achei bem simples a forma de utilização.</p>
<p><pre class="brush: csharp;">

private void BtnValidar_Click(object sender, EventArgs e)
{
    //Verifica se o campo CPF foi digitado.
    if (!Validacao()) return;

    //Caminho do servidor de aplicação.
    const string servidor = @&quot;http://localhost:8081/datasnap/rest/&quot;;

    //Método que será consumido.
    const string metodo = @&quot;TServerFunctions/validateCPF/&quot;;

    //Parametros do método.
    var parametro = TxtCPF.Text.Trim();

    //URL que será processada.
    var url = string.Format(&quot;{0}{1}{2}&quot;, servidor, metodo, parametro);

    string pagina;
    try
    {
        //Faz a requisição a url montada acima.
        pagina = HttpGet(url);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);

        return;
    }

    //Verifica se o método retornou algum valor.
    if (pagina == null) return;

    //Lê os dados de retorno do servidor passando para JSON.
    var obj = JObject.Parse(pagina);

    //Verifica o retorno do método. 
    //E mostra para o usuário.
    var array = (JArray)obj[&quot;result&quot;];
    if ((bool)array[0])
        MessageBox.Show(@&quot;CPF válido!&quot;);
    else
        MessageBox.Show(@&quot;CPF inválido!&quot;);
}

</pre></p>
<p>Este foi mais um post de integração usando <strong>DataSnap</strong> espero que tenham gostado.</p>
<br />Filed under: <a href='http://junioro.wordpress.com/category/desenvolvimento/c/'>C#</a>, <a href='http://junioro.wordpress.com/category/desenvolvimento/delphi/'>Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/560/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/560/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/560/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/560/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/560/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/560/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/560/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/560/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/560/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/560/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/560/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/560/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/560/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/560/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=560&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/04/01/consumindo-datasnap-server-com-c-sharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>
	</item>
		<item>
		<title>O amanhã</title>
		<link>http://junioro.wordpress.com/2011/03/19/o-amanha/</link>
		<comments>http://junioro.wordpress.com/2011/03/19/o-amanha/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 15:06:28 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[Poesia]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=620</guid>
		<description><![CDATA[O amanhã O que nos leva a certeza de viver. O mesmo que nos põe em dúvida, Do porquê o amanhã toda a manhã se faz nascer. Ou dos olhos que todos os dias acreditam na vida. O que nos promete o amanhã? Se nos promete amanhã? Em que podemos crer, só em nossa partida. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=620&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="float:left;margin-bottom:20px;width:100%;">
<div style="float:left;"><strong>O amanhã</strong></div>
<div style="clear:left;float:left;margin-top:20px;">O que nos leva a certeza de viver.</div>
<div style="clear:left;float:left;">O mesmo que nos põe em dúvida,</div>
<div style="clear:left;float:left;">Do porquê o amanhã toda a manhã se faz nascer.</div>
<div style="clear:left;float:left;">Ou dos olhos que todos os dias acreditam na vida.</div>
<div style="clear:left;float:left;">O que nos promete o amanhã? Se nos promete amanhã?</div>
<div style="clear:left;float:left;">Em que podemos crer, só em nossa partida.</div>
<div style="clear:left;float:left;">E no terno beijo que todos os dias se faz afã.</div>
<div style="clear:left;float:left;margin-top:20px;">Nada temos, e tudo podemos.</div>
<div style="clear:left;float:left;">Nada somos e em tudo cremos ser.</div>
<div style="clear:left;float:left;">O que dizer do amanhã?</div>
<div style="clear:left;float:left;">Uma bela balada para aqueles que amam.</div>
<div style="clear:left;float:left;">Um sonho a viver para os que a vida clama.</div>
<div style="clear:left;float:left;">Nada somos e tudo podemos ser.</div>
<div style="clear:left;float:left;">Mas somos a única coisa que não podíamos ser.</div>
<div style="clear:left;float:left;margin-top:20px;padding-left:300px;">18/01/2004</div>
</div>
<br />Filed under: <a href='http://junioro.wordpress.com/category/poesia/'>Poesia</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/620/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=620&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/03/19/o-amanha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>
	</item>
		<item>
		<title>Garbage Collector no Delphi – Parte II</title>
		<link>http://junioro.wordpress.com/2011/03/12/garbage-collector-no-delphi%e2%80%93parte-ii/</link>
		<comments>http://junioro.wordpress.com/2011/03/12/garbage-collector-no-delphi%e2%80%93parte-ii/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 14:50:26 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[class helper]]></category>
		<category><![CDATA[Garbage Collector]]></category>
		<category><![CDATA[Generics]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=467</guid>
		<description><![CDATA[Olá pessoal, continuando o post anterior de Garbage Collector, agora vou explorar o uso para objetos que herdam a classe TObject. Em uma thread na lista de discução lista-delphi o membro Caique vez uma colocação perfeita do Garbage Collector no Delphi e como tinha prometido na thread vou compartilhar com vocês a explicação dele. Segue [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=467&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, continuando o post anterior de <strong>Garbage Collector</strong>, agora vou explorar o uso para objetos que herdam a classe <strong>TObject</strong>.</p>
<p>Em uma thread na lista de discução <strong><a href="http://br.groups.yahoo.com/group/lista-delphi/">lista-delphi</a></strong> o membro <strong>Caique</strong> vez uma colocação perfeita do <strong>Garbage Collector</strong> no <strong>Delphi</strong> e como tinha prometido na thread vou compartilhar com vocês a explicação dele. Segue o link da <strong><a href="http://br.groups.yahoo.com/group/lista-delphi/message/143527">thread</a></strong>.</p>
<blockquote><p>O <strong>Delphi</strong> &#8220;não&#8221; tem <strong>Garbage Collector</strong>. Entende-se por <strong>Garbage Collector</strong> uma forma de destruir qualquer objeto fora de contexto como ocorre em plataformas gerenciadas. O que esta demonstrando no seu exemplo é o uso de interfaces e estas sim por definição destroem o objeto a qual estão associadas quando saem do contexto.</p></blockquote>
<p>Primeiro desenvolvi uma classe que será responsável por coletar os objetos que não estão mais sendo utilizados.</p>
<p><pre class="brush: delphi;">

unit GarbageCollector;

interface

uses
  SysUtils;

type
  ISafeGuard = type IUnknown;

type
  TSafeGuard = class(TInterfacedObject, ISafeGuard)
  private
    { Private declarations }
    FObj: TObject;

  public
    { Public declarations }
    constructor Create(obj: TObject);
    destructor Destroy(); override;

  end;

function Guard(out SafeGuard : ISafeGuard) : TObject;

implementation

{ TSafeGuard }

constructor TSafeGuard.Create(obj: TObject);
begin
  self.FObj := obj;
end;

destructor TSafeGuard.Destroy();
begin
  if (Assigned(self.FObj)) then
  begin
    try
      FreeAndNil(self.FObj);
    except
      on e : EInvalidPointer do
        { Objeto já liberado da memória. }
    end;
  end;

  inherited Destroy();
end;

function Guard(out SafeGuard: ISafeGuard): TObject;
begin
  Result := TObject.Create();
  SafeGuard := TSafeGuard.Create(Result);
end;

end.

</pre></p>
<p>Depois criei um <strong>Class Helper</strong> para a classe <strong>TObject</strong> do <strong>Delphi</strong> com isto garantimos que todos os objetos que herdam a classe <strong>TObject</strong> serão coletados pelo nosso <strong>Garbage Collector</strong>. Note que estou utilizando <strong>Generics</strong> para a nossa função <strong>New()</strong> já realizar o cast no objeto sem agente precisar se preocupar com isto.</p>
<p><pre class="brush: delphi;">

unit HelperObject;

interface

uses
  SysUtils, Generics.Collections, GarbageCollector;

type
  THelperObject = class helper for TObject
  public
    { Public declarations }
    class function New&lt;T&gt;(out SafeGuard: ISafeGuard): T; static;

  end;

implementation

{ THelperObject }

class function THelperObject.New&lt;T&gt;(out SafeGuard: ISafeGuard): T;
begin
  Result := T(Guard(SafeGuard));
end;

end.

</pre></p>
<p>Agora a forma de utilização.</p>
<p><pre class="brush: delphi;">

var
  SafeGuard: ISafeGuard;
  label1: TLabel;

begin
  label1 := TLabel.New&lt;TLabel&gt;(SafeGuard);
end;

</pre></p>
<p>Para garantir que a memória está sendo liberada, utilize a mesma propriedade do post anterior <strong><a href="http://junioro.wordpress.com/2010/12/29/garbage-collector-no-delphi-parte-i/">Garbage Collector no Delphi – Parte I</a></strong>, neste post está explicado detalhadamento como deve ser utilizada.</p>
<p><pre class="brush: delphi;">

ReportMemoryLeaksOnShutdown := True;

</pre></p>
<p>Este foi mais um exemplo em <strong>Delphi XE</strong>. Espero que tenham gostado e que seja útil de alguma forma a vocês.</p>
<br />Filed under: <a href='http://junioro.wordpress.com/category/desenvolvimento/delphi/'>Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/467/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=467&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/03/12/garbage-collector-no-delphi%e2%80%93parte-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>
	</item>
		<item>
		<title>Consumindo DataSnap Server com PHP</title>
		<link>http://junioro.wordpress.com/2011/03/03/consumindo-datasnap-server-com-php/</link>
		<comments>http://junioro.wordpress.com/2011/03/03/consumindo-datasnap-server-com-php/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 22:34:39 +0000</pubDate>
		<dc:creator>junioro</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://junioro.wordpress.com/?p=544</guid>
		<description><![CDATA[Olá pessoal, estava estudando DataSnap com Delphi XE, e agora resolvi postar para vocês o resultado deste estudo. O primeiro post será sobre consumir um método em um servidor DataSnap a partir de um cliente em PHP. Segue o código da nossa página principal &#8220;index.htm&#8220;. O código é bem simples apenas para mostrar a integração [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=544&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, estava estudando <strong>DataSnap</strong> com <strong>Delphi XE</strong>, e agora resolvi postar para vocês o resultado deste estudo. O primeiro post será sobre consumir um método em um servidor DataSnap a partir de um cliente em <strong>PHP</strong>.</p>
<p>Segue o código da nossa página principal &#8220;<strong>index.htm</strong>&#8220;. O código é bem simples apenas para mostrar a integração do <strong>PHP</strong> com o <strong>DataSnap Server</strong>, a única observação é que estou utilizando o framework <strong>jQuery</strong> para JavaScript apenas para deixar o exemplo mais interessante. Segue o link para download <a href="http://jqueryui.com/download">jqueryui.com</a>.</p>
<p><pre class="brush: xml;">

&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;ClientPHP&lt;/title&gt;
    
    &lt;!--jQuery--&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;includes/css/ui-lightness/jquery-ui-1.8.9.custom.css&quot;&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;includes/js/jquery-1.4.4.min.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;includes/js/jquery-ui-1.8.9.custom.min.js&quot;&gt;&lt;/script&gt;
    
    &lt;!--Aplicação--&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;includes/css/style.css&quot;&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;includes/js/script.js&quot;&gt;&lt;/script&gt;
    
&lt;/head&gt;
&lt;body&gt;
	&lt;form id=&quot;form_index&quot; name=&quot;form_index&quot; action=&quot;&quot; onSubmit=&quot;return false&quot;&gt;
        &lt;label for=&quot;txtCPF&quot; class=&quot;label&quot;&gt;CPF: &lt;/label&gt;
        &lt;br /&gt;
        &lt;input id=&quot;txtCPF&quot; name=&quot;txtCPF&quot; type=&quot;text&quot; value=&quot;&quot; class=&quot;text ui-widget-content ui-corner-all&quot;/&gt;
        &lt;button id=&quot;btnValidar&quot;&gt;Validar&lt;/button&gt;
        &lt;img id=&quot;loading&quot; src=&quot;includes/images/loading.gif&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;

</pre></p>
<p>Abaixo o código do arquivo &#8220;<strong>style.css</strong>&#8220;.</p>
<p><pre class="brush: css;">

body {
	font: 62.5% &quot;Trebuchet MS&quot; , sans-serif;
	margin: 50px;
}

.text {
	padding: .3em;
}

.label {
	font: 14px &quot;Verdana&quot;, sans-serif;
}

</pre></p>
<p>Agora o codigo do arquivo &#8220;<strong>script.js</strong>&#8220;.</p>
<p><pre class="brush: jscript;">

$(document).ready(function() {
	//Personaliza os botões da tela.
	$(&quot;button&quot;).button();
	
	//Esconde a imagem de loading.
	$(&quot;#loading&quot;).hide();
	
	//Evento do botão Validar.
	$(&quot;#btnValidar&quot;).click(function() {
		
		//Verifica se foi digitado um CPF.
		if ($.trim($(&quot;#txtCPF&quot;).val()) == &quot;&quot;) {
			//Monstra a mensagem para o usuário.
			showMessage(&quot;Digite um CPF!&quot;);

			return false;
		}		
		
		//Mostra a imagem de loading.
		$(&quot;#loading&quot;).show();
		
		//Realiza uma requisição sem atualizar a página.
		$.ajax ({
			//Tipo da requisição.
			type : &quot;post&quot;, 
			//Caminho da Página que irá processar a requisição.
			url : &quot;index.source.php&quot;,
			//Serializa os campo do formulário e passa
			//como parametro para a página processar.
			data : $(&quot;#form_index&quot;).serialize(),
			//Caso não aconteça nenhum erro, apresenta a mensagem
			//de retorno da página.
			success : function(msg) {
				showMessage(msg);
				//Esconde a imagem de loading.
				$(&quot;#loading&quot;).hide();
			},
			error : function() {
				showMessage(&quot;Ocorreu um erro!&quot;);
				//Esconde a imagem de loading.
				$(&quot;#loading&quot;).hide();
			}
		});		
	});
})

function showMessage(message) {
	//Cria uma div em tempo de execução no body para mostrar
	//a mensagem ao usuário.
	$(&quot;body&quot;).append(&quot;&lt;div id='message'&gt;&quot; + message + &quot;&lt;/div&gt;&quot;);

	//Configura e mostra a div criada acima.
	$(&quot;#message&quot;).dialog({
		bgiframe : true,
		modal : true,
		minimizable : false,
		resizable : false,
		closeOnEscape : true,
		title : &quot;Mensagem&quot;,
		width : &quot;300px&quot;,
		buttons : {
			Ok : function() {
				//Quando clicar em OK remove a div do html.
				$(&quot;#message&quot;).remove();
			}
		},
		close : function() {
			//Caso feche a div sem clicar em OK remove a div 
			//do html também.
			$(&quot;#message&quot;).remove();
		}
	});
}

</pre></p>
<p>E por fim o código da nossa página &#8220;<strong>index.source.php</strong>&#8221; que irá processar os dados.</p>
<p><pre class="brush: php;">

&lt;?php

	//Abilita apenas para aparecer os erros da aplicação.
	error_reporting(E_ERROR); 
	
	//Chama a função btnValidar()
	btnValidar();
	
	function btnValidar()
	{
		//Caminho do servidor de aplicação.
		define(&quot;servidor&quot;, &quot;http://localhost:8081/datasnap/rest/&quot;);
		
		//Método que será consumido.
		define(&quot;metodo&quot;, &quot;TServerFunctions/validateCPF/&quot;);
		
		//Parametros do método.
		$parametro = $_REQUEST[&quot;txtCPF&quot;];
		
		//URL que será processada.
		$url = sprintf(&quot;%s%s%s&quot;, servidor, metodo, $parametro);
		
		$pagina;
		try
		{
			//Faz a requisição a url montada acima.
			$pagina = httpGet($url);
		}
		catch (Exception $e)
		{
			//Sai do método e apresenta a mensagem de erro
			//para ser capturada pela função sucess do jQuery.
			die($e-&gt;getMessage());
		}
		
		//Lê os dados de retorno do servidor passando para JSON.
		$obj = json_decode($pagina[0]);
		
		//Verifica o retorno do método. 
		//E printa para ser capturada pela função sucess do jQuery.
		if ($obj-&gt;{&quot;result&quot;}[0])
			echo(&quot;CPF Válido!&quot;);
		else
			echo(&quot;CPF Inválido!&quot;);
	}
		
	function httpGet($url)
	{
		//Faz a requisição a url montada acima.
		$result = file($url);
		if ($result == NULL)
			throw new Exception(&quot;Ocorreu um erro!&quot;);
		
		return $result;
	}
	
?&gt;

</pre></p>
<p>Abaixo uma imagem de como deverá ser criada a estrutura de pastas dos arquivos citados acima.</p>
<p><img src="http://junioro.files.wordpress.com/2011/02/estrutura-arquivos-datasnap-server-php.png?w=600" alt="" title="estrutura-arquivos-datasnap-server-php"   class="alignnone size-full wp-image-571" /></p>
<p>E agora uma imagem de como ficará o exemplo.</p>
<p><img src="http://junioro.files.wordpress.com/2011/02/site-datasnap-server-php.png?w=600" alt="" title="site-datasnap-server-php"   class="alignnone size-full wp-image-570" /></p>
<p>Bom pessoal espero que tenham gostado e que seja útil de alguma forma. A idéia deste post foi mesmo apenas demonstrar como é fácil consumir um método usando <strong>PHP</strong> em um servidor <strong>DataSnap</strong>.</p>
<br />Filed under: <a href='http://junioro.wordpress.com/category/desenvolvimento/delphi/'>Delphi</a>, <a href='http://junioro.wordpress.com/category/desenvolvimento/php/'>PHP</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/junioro.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/junioro.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/junioro.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/junioro.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/junioro.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/junioro.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/junioro.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/junioro.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/junioro.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/junioro.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/junioro.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/junioro.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/junioro.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/junioro.wordpress.com/544/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=junioro.wordpress.com&amp;blog=11593262&amp;post=544&amp;subd=junioro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://junioro.wordpress.com/2011/03/03/consumindo-datasnap-server-com-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0a885dadb748d1176e3ebe9e8456c832?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">junioro</media:title>
		</media:content>

		<media:content url="http://junioro.files.wordpress.com/2011/02/estrutura-arquivos-datasnap-server-php.png" medium="image">
			<media:title type="html">estrutura-arquivos-datasnap-server-php</media:title>
		</media:content>

		<media:content url="http://junioro.files.wordpress.com/2011/02/site-datasnap-server-php.png" medium="image">
			<media:title type="html">site-datasnap-server-php</media:title>
		</media:content>
	</item>
	</channel>
</rss>
