<?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/"
	>

<channel>
	<title>Alexandre José</title>
	<atom:link href="http://www.alexandrejose.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexandrejose.com.br</link>
	<description></description>
	<lastBuildDate>Wed, 30 Nov 2011 02:16:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Como detectar a configuração do proxy automaticamente</title>
		<link>http://www.alexandrejose.com.br/como-detectar-a-configuracao-do-proxy-automaticamente/</link>
		<comments>http://www.alexandrejose.com.br/como-detectar-a-configuracao-do-proxy-automaticamente/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 02:15:03 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://www.alexandrejose.com.br/?p=182</guid>
		<description><![CDATA[Ao utilizar a API do Windows, podemos recuperar facilmente as informações de configuração do proxy do perfil de qualquer usuário logado em qualquer estação. Detalhes da API: WinHttpGetIEProxyConfigForCurrentUser function BOOL WINAPI WinHttpGetIEProxyConfigForCurrentUser( __inout WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig ); Como utilizá-la: unit ProxyTest; interface uses Winapi.Windows, Vcl.Dialogs; type PWinHttpCurrentUserIeProxyConfig = ^TWinHttpCurrentUserIeProxyConfig; TWinHttpGetIeProxyConfigForCurrentUser = function (pProxyConfig: PWinHttpCurrentUserIeProxyConfig): Boolean; stdcall; <a href="http://www.alexandrejose.com.br/como-detectar-a-configuracao-do-proxy-automaticamente/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ao utilizar a API do Windows, podemos recuperar facilmente as informações de configuração do proxy do perfil de qualquer usuário logado em qualquer estação.</p>
<p>Detalhes da API:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa384096%28v=vs.85%29.aspx" target="_blank">WinHttpGetIEProxyConfigForCurrentUser function</a></p>
<pre class="brush: c; gutter: false">BOOL WINAPI WinHttpGetIEProxyConfigForCurrentUser(
  __inout  WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig
);</pre>
<p>Como utilizá-la:</p>
<pre class="brush: delphi; gutter: false">unit ProxyTest;

interface

uses
  Winapi.Windows, Vcl.Dialogs;

type
  PWinHttpCurrentUserIeProxyConfig = ^TWinHttpCurrentUserIeProxyConfig;

  TWinHttpGetIeProxyConfigForCurrentUser = function (pProxyConfig:
    PWinHttpCurrentUserIeProxyConfig): Boolean; stdcall;

  TWinHttpCurrentUserIeProxyConfig = record
    fAutoDetect: Boolean;
    lpszAutoConfigUrl: PWideChar;
    lpszProxy: PWideChar;
    lpszProxyBypass: PWideChar;
  end;

var
  WinHttpGetIeProxyConfigForCurrentUser: TWinHttpGetIeProxyConfigForCurrentUser;

procedure GetProxy;

implementation

procedure GetProxy;
var
  FHandle: THandle;
  FCurrentUser: PWinHttpCurrentUserIeProxyConfig;
begin
  FHandle := LoadLibrary('winhttp.dll');
  try
    if FHandle &lt;&gt; 0 then
    begin
      @WinHttpGetIeProxyConfigForCurrentUser := GetProcAddress(FHandle,
        'WinHttpGetIEProxyConfigForCurrentUser');

      if Assigned(WinHttpGetIeProxyConfigForCurrentUser) then
      begin
        WinHttpGetIeProxyConfigForCurrentUser(FCurrentUser);
        ShowMessage('Proxy: ' + FCurrentUser.lpszProxy);
      end;
    end;
  finally
    FreeLibrary(FHandle);
  end;
end;

end.</pre>
<p>Desenvolvi o exemplo em Delphi XE2, qualquer dúvida é só entrar em <a href="http://www.alexandrejose.com.br/contato/" target="_blank">contato</a>. <img src='http://www.alexandrejose.com.br/wp-includes/images/blank.gif' alt=':wink:' class='wp-smiley smiley-2' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandrejose.com.br/como-detectar-a-configuracao-do-proxy-automaticamente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obtendo o IP de um cliente Terminal Service</title>
		<link>http://www.alexandrejose.com.br/obtendo-o-ip-de-um-cliente-terminal-service/</link>
		<comments>http://www.alexandrejose.com.br/obtendo-o-ip-de-um-cliente-terminal-service/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 23:26:33 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Terminal Service]]></category>
		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://www.alexandrejose.com.br/?p=145</guid>
		<description><![CDATA[Esta publicação é um complemento ao post anterior, Executando aplicações dentro de um Terminal Service. O objetivo desse post é mostrar como podemos obter o IP de uma máquina conectada e executando uma aplicação dentro de um Terminal Service. A função desenvolvida utiliza a JEDI Windows API, que você pode obter aqui. unit WTSControl; interface <a href="http://www.alexandrejose.com.br/obtendo-o-ip-de-um-cliente-terminal-service/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Esta publicação é um complemento ao post anterior, <a href="http://www.alexandrejose.com.br/executando-aplicacoes-dentro-de-um-terminal-service/" target="_blank">Executando aplicações dentro de um Terminal Service</a>. O objetivo desse post é mostrar como podemos obter o IP de uma máquina conectada e executando uma aplicação dentro de um Terminal Service.</p>
<p>A função desenvolvida utiliza a JEDI Windows API, que você pode obter <a href="http://blog.delphi-jedi.net/2007/12/27/how-to-setup-the-library/" target="_blank">aqui</a>.</p>
<pre class="brush: delphi; gutter: false">unit WTSControl;

interface

uses
  Classes,
  JwaWinsock2,
  JwaWinType,
  JwaWtsApi32,
  SysUtils;

type
  TWTSSession = record
    ClientIP: string;
    Session: Integer;
  end;

  TWTSSessionArray = array of TWTSSession;
  PWtsSessionInfoAArray = ^TWtsSessionInfoAArray;
  TWtsSessionInfoAArray = array [0 .. ANYSIZE_ARRAY - 1] of WTS_SESSION_INFOA;

function GetClientIP(const Server: string): TWTSSessionArray;

implementation

function GetClientIP(const Server: string): TWTSSessionArray;
var
  ASession: PWtsSessionInfoAArray;
  FBytes: Cardinal;
  FClientAdd: PWtsClientAddress;
  FHandle: THandle;
  FIP: string;
  I: Cardinal;
  X: Integer;
begin
  if Trim(Server) = '' then
    FHandle := WTS_CURRENT_SERVER
  else
    FHandle := WTSOpenServer(PChar(Server));

  if WTSEnumerateSessions(FHandle, 0, 1, PWTS_SESSION_INFO(ASession), I) then
  begin
    SetLength(Result, I);

    for X := 0 to I - 1 do
    begin
      WTSQuerySessionInformation(FHandle, ASession^[X].SessionId,
        WTSClientAddress, Pointer(FClientAdd), FBytes);

      case FClientAdd^.AddressFamily of
        AF_INET:
          begin
            FIP := Format('%d.%d.%d.%d', [FClientAdd^.Address[2],
              FClientAdd^.Address[3], FClientAdd^.Address[4],
              FClientAdd^.Address[5]]);
          end;
        AF_INET6:
          begin
            FIP := 'IPv6 address not yet supported';
          end;
        AF_IPX:
          begin
            FIP := 'IPX is not supported';
          end;
        AF_NETBIOS:
          begin
            FIP := 'NETBIOS is not supported';
          end;
        AF_UNSPEC:
          begin
            FIP := 'Console and listener session have no address';
          end;
      end;
      Result[X].ClientIP := FIP;
      Result[X].Session := ASession^[X].SessionId;
      WTSFreeMemory(FClientAdd);
    end;
  end;
end;

end.</pre>
<p>Criei o record <strong>TWTSSession</strong> para retornar um array, definido como <strong>TWTSSessionArray</strong>, de todas as sessões existentes no servidor Terminal Service. Segue abaixo um exemplo de utilização:</p>
<pre class="brush: delphi; gutter: false">procedure Executar;
var
  AWTS: TWTSSessionArray;
  FCount: Integer;
begin
  AWTS := GetClientIP('');
  for FCount := Low(AWTS) to High(AWTS) do
  begin
    ShowMessage('Session: ' + FormatFloat('00000', AWTS[FCount].Session) +
      ' IP: ' + AWTS[FCount].ClientIP);
  end;
end;</pre>
<p>O download do código-fonte pode ser feito <a href="http://www.alexandrejose.com.br/wp-content/plugins/download-monitor/download.php?id=WTSControl">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandrejose.com.br/obtendo-o-ip-de-um-cliente-terminal-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Executando um processo com segurança no Windows</title>
		<link>http://www.alexandrejose.com.br/executando-um-processo-com-seguranca-no-windows/</link>
		<comments>http://www.alexandrejose.com.br/executando-um-processo-com-seguranca-no-windows/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 14:33:42 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Otimização]]></category>
		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://www.alexandrejose.com.br/?p=57</guid>
		<description><![CDATA[Imagine a seguinte situação: sua empresa solicita um importante processo, que, por apresentar alto custo de execução, deve ser executado a noite ou iniciado no final da tarde e o tempo de execução seja de aproximadamente 8 horas (por exemplo). Você inicia esse processo, mas, no meio da execução, ele é interrompido. Seu Windows entrou <a href="http://www.alexandrejose.com.br/executando-um-processo-com-seguranca-no-windows/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Imagine a seguinte situação: sua empresa solicita um importante processo, que, por apresentar alto custo de execução, deve ser executado a noite ou iniciado no final da tarde e o tempo de execução seja de aproximadamente 8 horas (por exemplo).</p>
<p>Você inicia esse processo, mas, no meio da execução, ele é interrompido. Seu Windows entrou em hibernação após um determinado tempo. Infelizmente todo o seu trabalho acabou atrasando um dia, pois terá que ser executado no dia seguinte.</p>
<p>Esse é um exemplo banal mas que acontece muito no cotidiano dos profissionais de TI. Para não dependermos de configurações externas, podemos utilizar a própria API do Windows, utilizando a função SetThreadExecutionState e tornando o nosso software mais inteligente e evitando assim surpresas desagradáveis!  <img src='http://www.alexandrejose.com.br/wp-includes/images/blank.gif' alt=':lol:' class='wp-smiley smiley-1' /> </p>
<p>Vejam a classe desenvolvida abaixo. Através dela, conseguimos proteger qualquer rotina que seja critica enquanto estiver em execução.</p>
<pre class="brush: delphi; gutter: true">unit CriticalProcess;

interface

type
  TCriticalProcess = class
  protected
    procedure Execute(const Value: Boolean); virtual;
  public
    constructor Create;
    destructor Destroy; override;

    procedure Stop;
    procedure Start;
  end;

var
  CriticalProcess: TCriticalProcess;

implementation

uses
  Windows;

type
  EXECUTION_STATE = DWORD;

const
  ES_CONTINUOUS      = $80000000;
  ES_SYSTEM_REQUIRED = $00000001;

procedure SetThreadExecutionState(ESFlags: EXECUTION_STATE); stdcall;
  external kernel32 name 'SetThreadExecutionState';

constructor TCriticalProcess.Create;
begin
  inherited;

end;

destructor TCriticalProcess.Destroy;
begin

  inherited;
end;

procedure TCriticalProcess.Stop;
begin
  Execute(False);
end;

procedure TCriticalProcess.Start;
begin
  Execute(True);
end;

procedure TCriticalProcess.Execute(const Value: Boolean);
begin
  if Value then
    SetThreadExecutionState(ES_SYSTEM_REQUIRED or ES_CONTINUOUS)
  else
    SetThreadExecutionState(ES_CONTINUOUS);
end;

initialization
  CriticalProcess := TCriticalProcess.Create;

finalization
  CriticalProcess.Free;

end.</pre>
<p>Exemplo de utilização da classe:</p>
<pre class="brush: delphi; gutter: true">uses
  CriticalProcess;

procedure TfrmExemplo.btnExecutarClick(Sender: TObject);
begin
  CriticalProcess.Start;
  try
    // Coloque aqui todo o processamento crítico.

    // Todo o bloco de código inserido aqui estará protegido
    // e será executado sem interferências do sistema operacional.

  finally
    CriticalProcess.Stop;
  end;
end;</pre>
<p>Toda a documentação sobre o método SetThreadExecutionState é encontrado no <a href="http://msdn.microsoft.com/en-us/library/aa373208.aspx" target="_blank">site</a> da Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandrejose.com.br/executando-um-processo-com-seguranca-no-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classificação Brasileira de Ocupações</title>
		<link>http://www.alexandrejose.com.br/classificacao-brasileira-de-ocupacoes/</link>
		<comments>http://www.alexandrejose.com.br/classificacao-brasileira-de-ocupacoes/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 14:29:22 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Banco de dados]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[CBO]]></category>
		<category><![CDATA[Downloads]]></category>

		<guid isPermaLink="false">http://www.alexandrejose.com.br/?p=44</guid>
		<description><![CDATA[A CBO é o documento que reconhece, nomeia e codifica os títulos e descreve as características das ocupações do mercado de trabalho brasileiro. Sua atualização e modernização se devem às profundas mudanças ocorridas no cenário cultural, econômico e social do País nos últimos anos, implicando alterações estruturais no mercado de trabalho. A nova versão contém <a href="http://www.alexandrejose.com.br/classificacao-brasileira-de-ocupacoes/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alexandrejose.com.br/wp-content/uploads/2011/10/cbo2002.png"><img class="aligncenter size-full wp-image-46" title="CBO 2002" src="http://www.alexandrejose.com.br/wp-content/uploads/2011/10/cbo2002.png" alt="" width="600" height="300" /></a></p>
<p>A CBO é o documento que reconhece, nomeia e codifica os títulos e descreve as características das ocupações do mercado de trabalho brasileiro. Sua atualização e modernização se devem às profundas mudanças ocorridas no cenário cultural, econômico e social do País nos últimos anos, implicando alterações estruturais no mercado de trabalho.</p>
<p>A nova versão contém as ocupações do mercado brasileiro, organizadas e descritas por famílias. Cada família constitui um conjunto de ocupações similares correspondente a um domínio de trabalho mais amplo que aquele da ocupação.</p>
<p>Criada em 1982 e somente com alterações pontuais (não foi modificada a estrutura inicial), a classificação brasileira de ocupações (CBO 2002) substitui a versão lançada em 1994.</p>
<p>A Classificação Brasileira de Ocupações (CBO 2002) é fornecida gratuitamente em formato PDF pelo site do Ministério do Trabalho, mas resolvi compartilhar com vocês em um formato mais acessível para quem trabalha com desenvolvimento de sistemas.</p>
<p><a href="http://www.alexandrejose.com.br/wp-content/plugins/download-monitor/download.php?id=CBO2002">Clique aqui</a> para fazer download do banco de dados CBO 2002 em formato Microsoft Access (não que eu trabalhe com Access, mas acredito que seja mais fácil a migração para outros formatos).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandrejose.com.br/classificacao-brasileira-de-ocupacoes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apenas uma aplicação por sessão</title>
		<link>http://www.alexandrejose.com.br/apenas-uma-aplicacao-por-sessao/</link>
		<comments>http://www.alexandrejose.com.br/apenas-uma-aplicacao-por-sessao/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 14:25:51 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Otimização]]></category>
		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://www.alexandrejose.com.br/?p=67</guid>
		<description><![CDATA[Uma rotina muito simples e útil para quem deseja apenas uma cópia de seu aplicativo sendo executado por vez. Isso dificulta que usuários desavisados consumam todos os recursos do Windows indevidamente e fiquem pentelhando o suporte técnico da sua empresa.  unit ApplicationSession; interface uses Windows, Forms; type TApplicationSession = class private FHandle: THandle; public constructor <a href="http://www.alexandrejose.com.br/apenas-uma-aplicacao-por-sessao/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Uma rotina muito simples e útil para quem deseja apenas uma cópia de seu aplicativo sendo executado por vez. Isso dificulta que usuários desavisados consumam todos os recursos do Windows indevidamente e fiquem pentelhando o suporte técnico da sua empresa.  <img src='http://www.alexandrejose.com.br/wp-includes/images/blank.gif' alt=':wink:' class='wp-smiley smiley-2' /> </p>
<pre class="brush: csharp; gutter: true">unit ApplicationSession;

interface

uses
  Windows, Forms;

type
  TApplicationSession = class
  private
    FHandle: THandle;
  public
    constructor Create(const Handle: THandle);
    destructor Destroy; override;
  end;

var
  ApplicationSession: TApplicationSession;

implementation

constructor TApplicationSession.Create(const Handle: THandle);
begin
  FHandle := Handle;

  if GlobalFindAtom(PChar(Application.Title)) = 0 then
  begin
    FHandle := GlobalAddAtom(PChar(Application.Title));
  end
  else
  begin
    Application.MessageBox('This process is already running.',
      PChar(Application.Title), MB_OK + MB_ICONSTOP);
    Application.Terminate;
  end;
end;

destructor TApplicationSession.Destroy;
begin
  GlobalDeleteAtom(FHandle);

  inherited;
end;

initialization
  ApplicationSession := TApplicationSession.Create(Application.Handle);

finalization
  ApplicationSession.Free;

end.</pre>
<p>Para utilizá-la basta adicionar a unit no seu arquivo de projeto, como o exemplo abaixo:</p>
<pre class="brush: delphi; gutter: true">program SessionExample;

uses
  ApplicationSession in 'ApplicationSession.pas',
  Forms,
  FSessionExample in 'FSessionExample.pas' {frmSessionExample};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title := 'Session Example';
  Application.CreateForm(TfrmSessionExample, frmSessionExample);
  Application.Run;
end.</pre>
<p>Se o usuário tentar executar o mesmo aplicativo com uma cópia já em execução a mensagem &#8220;This process is already running.&#8221; é apresentada.</p>
<p>Após isso o aplicativo será finalizado.</p>
<p>Lembrando que você pode personalizar como quiser essa rotina, como por exemplo a mensagem, que está em inglês, apenas edite o construtor da classe.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandrejose.com.br/apenas-uma-aplicacao-por-sessao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Executando aplicações dentro de um Terminal Service</title>
		<link>http://www.alexandrejose.com.br/executando-aplicacoes-dentro-de-um-terminal-service/</link>
		<comments>http://www.alexandrejose.com.br/executando-aplicacoes-dentro-de-um-terminal-service/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 14:20:59 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Terminal Service]]></category>
		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://www.alexandrejose.com.br/?p=54</guid>
		<description><![CDATA[O Terminal Service simplificou muito a nossa vida e a dos usuários, mas dependendo da velocidade e qualidade da conexão, precisamos tomar alguns cuidados ao desenvolver determinados recursos dentro de um sistema. Recursos multimídia como por exemplo animações em Flash, sons e imagens podem tornar a utilização lenta e irritante para o usuário. Utilizando a rotina abaixo, <a href="http://www.alexandrejose.com.br/executando-aplicacoes-dentro-de-um-terminal-service/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O Terminal Service simplificou muito a nossa vida e a dos usuários, mas dependendo da velocidade e qualidade da conexão, precisamos tomar alguns cuidados ao desenvolver determinados recursos dentro de um sistema. Recursos multimídia como por exemplo animações em Flash, sons e imagens podem tornar a utilização lenta e irritante para o usuário.</p>
<p>Utilizando a rotina abaixo, podemos verificar se nossa aplicação está sendo executada ou não remotamente e, se necessário, fazer adaptações no sistema para definir a exibição/ausência de recursos.</p>
<pre class="brush: delphi; gutter: true">function InTerminalService: Boolean;
const
  sm_RemoteSession = $1000;
begin
  Result := GetSystemMetrics(sm_RemoteSession) &lt;&gt; 0;
end;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandrejose.com.br/executando-aplicacoes-dentro-de-um-terminal-service/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Retornando publicações antigas</title>
		<link>http://www.alexandrejose.com.br/retornando-publicacoes-antigas/</link>
		<comments>http://www.alexandrejose.com.br/retornando-publicacoes-antigas/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 14:17:00 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.alexandrejose.com.br/?p=81</guid>
		<description><![CDATA[Minha idéia e deixar todas as publicações relevantes de tecnologia centralizadas aqui.  Por esse motivo estou republicando as melhores que existiam em outros endereços.]]></description>
			<content:encoded><![CDATA[<p>Minha idéia e deixar todas as publicações relevantes de tecnologia centralizadas aqui.  Por esse motivo estou republicando as melhores que existiam em outros endereços.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandrejose.com.br/retornando-publicacoes-antigas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Início</title>
		<link>http://www.alexandrejose.com.br/inicio/</link>
		<comments>http://www.alexandrejose.com.br/inicio/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 23:03:12 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.alexandrejose.com.br/?p=28</guid>
		<description><![CDATA[Após longos anos aguardando que o domínio alexandrejose.com.br fosse liberado (estava registrado, sem utilização e muito menos conseguia o retorno do proprietário), consegui o seu registro. Sempre mantive material técnico em meus blogs, desta vez resolvi mesclar assuntos que vivencio no meu dia-a-dia, entre desenvolvimento de software, games, bodybuilding e até aquariofilismo, enfim, tudo o <a href="http://www.alexandrejose.com.br/inicio/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Após longos anos aguardando que o domínio alexandrejose.com.br fosse liberado (estava registrado, sem utilização e muito menos conseguia o retorno do proprietário), consegui o seu registro.</p>
<p>Sempre mantive material técnico em meus blogs, desta vez resolvi mesclar assuntos que vivencio no meu dia-a-dia, entre desenvolvimento de software, games, bodybuilding e até aquariofilismo, enfim, tudo o que eu gosto.</p>
<p>Esse tema é otimizado para acesso em iPad e smartphones, além de utilizar algumas API&#8217;s do Google, que eu adaptei para melhor visualização.</p>
<p>Espero que esse seja meu último &#8220;Hello world!&#8221;. <img src='http://www.alexandrejose.com.br/wp-includes/images/blank.gif' alt=':)' class='wp-smiley smiley-2' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandrejose.com.br/inicio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

