<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4093896476040251204</id><updated>2012-02-09T23:34:44.023Z</updated><category term='Solução Tecnológica'/><category term='Windows XP'/><category term='Visual Studio'/><category term='Televisão'/><category term='SQL'/><category term='Task Manager'/><category term='msdn magazine grátis'/><category term='SQL Server'/><category term='Primary Key'/><category term='Online'/><category term='Code Snippet'/><category term='AJAX'/><category term='Opinião'/><category term='CTP'/><category term='Tutorial'/><category term='Apple'/><category term='Erro'/><category term='Router'/><category term='XNA'/><category term='Tags'/><category term='ASP.NET'/><category term='Magazine'/><category term='Adsense'/><category term='MSDN'/><category term='SQL Server Express'/><category term='Profiler'/><category term='Arduino'/><category term='iPod'/><category term='Alternativa'/><category term='Grátis'/><category term='Extensões'/><category term='LINQ to SQL'/><category term='Apache'/><category term='Blogs'/><category term='Android'/><category term='Artigo'/><category term='Port Forward'/><category term='Windows 7'/><category term='Code First'/><category term='LINQ'/><category term='Ambiente Desenvolvimento'/><category term='Windows Forms'/><category term='SMS'/><category term='Programação'/><category term='Windows Vista'/><category term='PDC 2008'/><category term='Ebooks'/><category term='MySQL'/><category term='Internet'/><category term='ThunderBird'/><category term='Emprego'/><category term='Preços'/><category term='Opera'/><category term='Do It Yourself'/><category term='Vídeo'/><category term='Workaround'/><category term='Blogger'/><category term='Google'/><category term='Identidade Digital'/><category term='Open Source'/><category term='Telemóveis'/><category term='C#'/><category term='Wake on LAN'/><category term='Música'/><category term='Browser'/><category term='Sun'/><category term='Microsoft Sync Framework'/><category term='Firefox'/><category term='iTunes'/><category term='Rádio'/><category term='Joomla'/><category term='CMS'/><category term='HTML'/><category term='Portugal-a-Programar'/><category term='Crise'/><category term='Apresentação'/><category term='Internet Explorer'/><category term='Hacking'/><category term='Revista Programar'/><category term='Serviços'/><category term='Combustiveis'/><category term='SVN'/><category term='Entity Framework'/><category term='.NET'/><title type='text'>Oooops, criei um Blog :o</title><subtitle type='html'>epá, tava aqui a brincar com isto e pimba, descuidei-me e criei um Blog!!! help :)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3755889957585243477</id><published>2011-08-04T21:54:00.002+01:00</published><updated>2011-08-04T21:58:26.253+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primary Key'/><category scheme='http://www.blogger.com/atom/ns#' term='Code First'/><category scheme='http://www.blogger.com/atom/ns#' term='Entity Framework'/><title type='text'>EF CodeFirst Composite Keys</title><content type='html'>&lt;p&gt;Here is an example how to make a composite primary key in EF Code First&lt;/p&gt;&lt;p&gt;public class Something&lt;br /&gt;&lt;/p&gt;{&lt;br /&gt;  [Key, Column(Order = 0)]&lt;br /&gt;   public int Key1Name { get; set; }&lt;br /&gt;&lt;br /&gt;  [Key, Column(Order = 1)]&lt;br /&gt;public   int    Key2Name { get; set; }&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3755889957585243477?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3755889957585243477/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3755889957585243477' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3755889957585243477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3755889957585243477'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2011/08/ef-codefirst-composite-keys.html' title='EF CodeFirst Composite Keys'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6820666311954324757</id><published>2011-07-05T13:25:00.000+01:00</published><updated>2011-07-05T13:26:45.204+01:00</updated><title type='text'>Primeiro Evento da Comunidade HTML5 PT</title><content type='html'>O Primeiro Evento da Comunidade HTML5 PT já está agendado !!&lt;br /&gt;&lt;br /&gt;É no próximo dia 7 de Julho no auditório da Microsoft às 19 horas.&lt;br /&gt;&lt;br /&gt;Para além de ser o ponto de encontro ideal para trocar experiências e ideias com outros developers e empresas ligadas ao HTML5, tens também acesso livre a duas talks às quais não deves faltar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Talks do Evento&lt;br /&gt;&lt;br /&gt;Título: Aplicações Offline&lt;br /&gt;&lt;br /&gt;Título: Novas APi’s no HTML5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mais informações em &lt;a href="http://html5pt.org/?p=193"&gt;http://html5pt.org/?p=193&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6820666311954324757?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6820666311954324757/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6820666311954324757' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6820666311954324757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6820666311954324757'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2011/07/primeiro-evento-da-comunidade-html5-pt.html' title='Primeiro Evento da Comunidade HTML5 PT'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3861331115934644825</id><published>2009-07-20T11:22:00.001+01:00</published><updated>2009-07-20T11:24:55.357+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Put Messenger back in the tray in Windows 7 where it belongs</title><content type='html'>Turns out you can “fix” it. I got a very helpful email today explaining that you can simply run Windows Live Messenger in Windows Vista compatibility mode to move its icon back to the tray where God intended. To do so, quit Messenger. Then, find the executable file, msnmsgr.exe (it’s in C:\Program Files\Windows Live\Messenger by default), right-click it, choose Properties, and visit the Compatibility tab. Under Compatibility Mode, select “Run this program in compatibility mode for” and then choose Windows Vista from the list. Click OK and restart Messenger. Voila!&lt;br /&gt;&lt;br /&gt;@http://community.winsupersite.com/blogs/paul/archive/2009/01/04/put-messenger-back-in-the-tray-in-windows-7-where-it-belongs.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3861331115934644825?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3861331115934644825/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3861331115934644825' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3861331115934644825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3861331115934644825'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/07/put-messenger-back-in-tray-in-windows-7.html' title='Put Messenger back in the tray in Windows 7 where it belongs'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8790106221419025442</id><published>2009-06-18T21:10:00.001+01:00</published><updated>2009-06-18T21:12:26.374+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ThunderBird'/><title type='text'>Mudar ordem das contas no ThunderBird</title><content type='html'>A conta pré-definida é sempre a primeira a aparecer (reiniciar depois de alterar a conta pré-definida) mas se quisermos alterar a ordem de todas?&lt;br /&gt;Aqui está a solução: &lt;br /&gt;&lt;a href="http://sidvind.com/wiki/Thunderbird:_Change_account_order"&gt;http://sidvind.com/wiki/Thunderbird:_Change_account_order&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8790106221419025442?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8790106221419025442/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8790106221419025442' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8790106221419025442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8790106221419025442'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/06/mudar-ordem-das-contas-no-thunderbird.html' title='Mudar ordem das contas no ThunderBird'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3270100350947243620</id><published>2009-06-16T23:26:00.003+01:00</published><updated>2009-06-16T23:43:49.466+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Do It Yourself'/><title type='text'>Base para portátil home made</title><content type='html'>Recentemente troquei o fiel ASUS por um potente HP. O HP tende a aquecer, principalmente o disco rígido que chega a atingir os 54º. Sendo que a especificação do disco diz que a temperatura de operação está entre os 0 e os 60º achei por bem arrefece-lo por estar perto do limite.&lt;br /&gt;&lt;br /&gt;Dado que tenho pelo menos 3 locais de trabalho não é cómodo andar com uma base às costas sendo que comprar 3 também não tem muita piada.&lt;br /&gt;&lt;br /&gt;Solução? Construir as minhas próprias bases :)&lt;br /&gt;&lt;br /&gt;Lá fui eu comprar um dossier resistente de modo a que o portátil fique ligeiramente inclinado.&lt;br /&gt;&lt;br /&gt;Depois foi necessário ir até aos computadores velhinhos buscar ventoinhas do processador.&lt;br /&gt;&lt;br /&gt;Para as ventoinhas funcionarem é preciso energia....ora...energia... USB&lt;br /&gt;Toca a cortar um cabo USB e liga-lo á ventoinha para testar...&lt;br /&gt;Como a ventoinha é de 12V e a porta USB dá 5V ficamos com uma ventoinha a rodar mais lento mas.... mais silenciosamente... 5 estrelas.&lt;br /&gt;&lt;br /&gt;Definido o local a colocar a ventoinha (por baixo do disco) passou-se à fase de cortar o dossier e fixar a ventoinha, ligar o cabo USB, fixa-lo....&lt;br /&gt;&lt;br /&gt;Abri ainda mais um buraco para que o dissipador do processador respire bem melhor.&lt;br /&gt;&lt;br /&gt;Resultado?&lt;br /&gt;Base para portátil a um custo muiiito baixo e silenciosa.&lt;br /&gt;Em termos de temperatura estou agora com uma média de 42º o que é bastante significativo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3270100350947243620?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3270100350947243620/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3270100350947243620' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3270100350947243620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3270100350947243620'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/06/base-para-portatil-home-made.html' title='Base para portátil home made'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8601770876634962721</id><published>2009-06-13T21:22:00.002+01:00</published><updated>2009-06-13T21:38:48.774+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workaround'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio não abre com duplo clique na solution</title><content type='html'>No Windows Vista se definirem o Visual Studio para correr com permissões de administrador irão (muito provavelmente) deixar de conseguir abrir projectos através de duplo clique no ficheiro .sln, .csproj ou .vbproj.&lt;br /&gt;&lt;br /&gt;Era de esperar que o UAC (User Account Control) lançasse a janela que permite ao utilizador subir o nível de permissões para administrador. Isto não acontece!&lt;br /&gt;&lt;br /&gt;Não acontece porque o programa que está definido como default para abrir estes tipos de ficheiros não é o IDE do Visual Studio mas sim o Visual Studio Version Selector.&lt;br /&gt;Para resolver este problema defina o devenv.exe (…\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe) como programa a utilizar para abrir este tipo de ficheiros.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8601770876634962721?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8601770876634962721/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8601770876634962721' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8601770876634962721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8601770876634962721'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/06/visual-studio-nao-abre-com-duplo-clique.html' title='Visual Studio não abre com duplo clique na solution'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-153427210568254997</id><published>2009-06-10T22:37:00.002+01:00</published><updated>2009-06-10T22:42:54.121+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Sync Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='CTP'/><title type='text'>Microsoft Sync Framework CTP2</title><content type='html'>Já está disponível a nova CTP da Sync Framework.&lt;br /&gt;&lt;br /&gt;Novidades:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/sync/archive/2009/06/04/announcing-sync-framework-2-0-ctp2.aspx"&gt;http://blogs.msdn.com/sync/archive/2009/06/04/announcing-sync-framework-2-0-ctp2.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Download:&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=89adbb1e-53ff-41b5-ba17-8e43a2e66254&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=89adbb1e-53ff-41b5-ba17-8e43a2e66254&amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Atenção, convém remover a versão anterior, embora as duas possam coexistir, ou seja, remover:&lt;br /&gt;- Microsoft Sync Framework Runtime v1.0 CTP1...&lt;br /&gt;- Microsoft Sync Framework Services v1.0 CTP1...&lt;br /&gt;- Microsoft Sync Services for ADO.NET v2.0 ...&lt;br /&gt;&lt;br /&gt;As componentes do Microsoft SQL Server Compact 3.5 NÃO são para remover.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-153427210568254997?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/153427210568254997/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=153427210568254997' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/153427210568254997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/153427210568254997'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/06/microsoft-sync-framework-ctp2.html' title='Microsoft Sync Framework CTP2'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-4453003268108746732</id><published>2009-06-10T14:07:00.004+01:00</published><updated>2009-06-10T14:28:22.637+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Combustiveis'/><category scheme='http://www.blogger.com/atom/ns#' term='Solução Tecnológica'/><category scheme='http://www.blogger.com/atom/ns#' term='Crise'/><title type='text'>Sinais da Crise ? Estação de Serviço</title><content type='html'>Após uma folga espero estar de volta ao blog...&lt;br /&gt;&lt;br /&gt;Hoje ao entrar numa estação de serviço de uma auto-estrada deparei-me, mesmo à entrada, com uma câmara com infravermelhos… Eh lá... Será que os senhores das auto-estradas já controlam o acesso ás estações de serviço?!? isso aliado ao tempo que determinado condutor demora a percorrer X troço da auto-estrada pode dar mau resultado em termos de controlo de velocidade... humm..naaa&lt;br /&gt;&lt;br /&gt;Dentro da actual legislação dificilmente implementariam uma solução destas para controlo de velocidade, ora, resta saber para que serve afinal a tal câmara…&lt;br /&gt;&lt;br /&gt;Lá perguntei à senhora da caixa e ela gentilmente explicou que servia para identificar matrículas de veículos que abastecem e fogem sem pagar. Deste modo pode bloquear a bomba (ou não a desbloquear) no caso de ser um cliente desse tipo.&lt;br /&gt;&lt;br /&gt;Será isto um sinal da crise, onde existem cada vez mais condutores a fugir sem pagar, ou será a implementação de uma solução tecnológica de identificação de matrículas que dá mais um passo em termos de aplicabilidade? Talvez as duas…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-4453003268108746732?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/4453003268108746732/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=4453003268108746732' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4453003268108746732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4453003268108746732'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/06/sinais-da-crise-estacao-de-servico.html' title='Sinais da Crise ? Estação de Serviço'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3229865711209705605</id><published>2009-05-03T22:12:00.000+01:00</published><updated>2009-05-03T22:13:40.475+01:00</updated><title type='text'>Recomendação da Cruz Vermelha a nível mundial</title><content type='html'>O pessoal das ambulâncias e emergência médica que presta assistência aos nos acidentes da estrada, constata que os sinistrados têm um telemóvel consigo.&lt;br /&gt; &lt;br /&gt;No entanto, na hora de intervir, muitas vezes esse pessoal não consegue descobrir qual a pessoa a contactar na longa lista de telefones existentes no telemóvel do acidentado.&lt;br /&gt;Para tal, a Cruz Vermelha lança a ideia de que todas as pessoas acrescentem na sua lista de contactos o número de telefone da pessoa a contactar em caso de emergência.&lt;br /&gt;Para facilitar, tal deverá ser feito da seguinte forma: Inserir na memória do telemóvel a entrada 'AA Emergência', seguida do nº de telefone para o qual deseja que seja feito o aviso. (As letras AA são para que este contacto apareça sempre em primeiro lugar na lista de contactos).&lt;br /&gt;É simples, não custa nada e pode ajudar muito quem nos prestar assistência.&lt;br /&gt;Se concordar com esta proposta, passe esta mensagem a todos os seus amigos, familiares e conhecidos.&lt;br /&gt;É tão-somente mais um dado que regista no seu telemóvel e que pode ser muito importante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3229865711209705605?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3229865711209705605/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3229865711209705605' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3229865711209705605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3229865711209705605'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/05/recomendacao-da-cruz-vermelha-nivel.html' title='Recomendação da Cruz Vermelha a nível mundial'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8353451931946672435</id><published>2009-02-14T23:46:00.003Z</published><updated>2009-02-14T23:48:08.789Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Revista Programar'/><category scheme='http://www.blogger.com/atom/ns#' term='Artigo'/><title type='text'>Revista PROGRAMAR - 18ª Edição</title><content type='html'>Nesta edição em que se comemora o seu 3º aniversário, poderá encontrar a continuação dos artigos sobre Subversion e Fundamentos de Segurança em Redes, artigos sobre Cloud Computing e Packet Capture em Java, entre outros.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.revista-programar.info/front/edition/18"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 249px; height: 352px;" src="http://www.portugal-a-programar.org/revista-programar/images/ed18.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8353451931946672435?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8353451931946672435/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8353451931946672435' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8353451931946672435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8353451931946672435'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/02/revista-programar-18-edicao.html' title='Revista PROGRAMAR - 18ª Edição'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8506595752287235672</id><published>2009-02-14T23:32:00.006Z</published><updated>2009-02-14T23:49:14.419Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Revista Programar'/><category scheme='http://www.blogger.com/atom/ns#' term='Artigo'/><title type='text'>Cloud Computing</title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;Este artigo saiu na &lt;a href="http://www.revista-programar.info/front/edition/18"&gt;edição nº 18 da Revista PROGRAMAR&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Introdução&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O Cloud Computing é uma das mais importantes tendências tecnológicas dos próximos tempos. Mas o que é afinal cloud computing? Não existe ainda uma definição clara, se quiser um exemplo disso faça esta pergunta a cinco pessoas ligadas à tecnologia e provavelmente irá obter cinco ou até mais respostas diferentes.&lt;br /&gt;&lt;br /&gt;Existem opiniões que dizem que tudo o que está fora da firewall é cloud computing, ou seja, um simples webservice pode ser considerado cloud computing. Esta resposta até faz sentido porque na realidade o processamento desse webservice ocorre fora do nosso computador. No entanto, cloud computing é muito mais do que isso.&lt;br /&gt;&lt;br /&gt;Essencialmente trata-se de afastar completamente a computação e os dados dos computadores de secretária e portáteis, e simplesmente mostrar ao utilizador os resultados da computação que ocorre numa localização centralizada (grandes datacenters) e é transmitida via Internet para o ecrã do utilizador. Mais ainda, é potenciar a interacção entre o software, que neste paradigma reside na nuvem, através de serviços.&lt;br /&gt;&lt;br /&gt;Estaremos então a voltar à época dos terminais “estúpidos”? Iremos tentar perceber a resposta a esta pergunta mais à frente neste artigo, mas neste momento torna-se necessário perceber as mudanças que ocorreram no passado para perceber o porquê dessas mudanças no futuro.&lt;br /&gt;&lt;br /&gt;Olhando um pouco para a história dos computadores, não propriamente a partir do primeiro computador no sentido do termo (computador humano, pessoa que realizava cálculos numéricos), mas sim a partir do primeiro computador electrónico, vamos tentar perceber as mudanças nas arquitecturas dos sistemas e as razões que levaram a essas mudanças.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;História&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Os primeiros computadores eram máquinas enormes, muito pesadas e de elevado custo. Sempre que alguém pretendia realizar alguma computação tinha que se deslocar a esse computador, do tamanho de uma sala, para a poder realizar. O que é importante reter é que a computação começou, por razões económicas, com uma arquitectura de centralização da informação.&lt;br /&gt;&lt;br /&gt;Mais tarde surgiram os terminais. O uso de terminais já não obrigava a que o operador se deslocasse ao computador para poder realizar operações e permitia ainda que estivessem várias pessoas a usar o computador em regime de partilha de tempo de computação. A arquitectura continua centralizada, todas as operações são realizadas no computador, sendo o terminal apenas um interface para aceder ao computador.&lt;br /&gt;&lt;br /&gt;À medida que a Lei de Moore se vai manifestando, o tamanho e custo dos computadores desce e torna-se prática comum a utilização de computadores pessoais visto que já era economicamente viável ter um computador no escritório ou até em casa. Com o uso de computadores pessoais passa-se a utilizar uma arquitectura completamente descentralizada. Neste momento poderia optar-se pelas duas arquitecturas, a centralizada que ainda oferecia um custo mais baixo em termos de custo por utilizador, ou um sistema completamente descentralizado que oferecia uma maior autonomia e melhor interface aos utilizadores.&lt;br /&gt;&lt;br /&gt;Posteriormente surge a arquitectura cliente-servidor em que existem computadores em ambos os lados. Algumas partes do programa correm no computador-servidor e outras correm no computador-cliente. Isto causa um aumento da complexidade do software dada a necessidade de comunicação e sincronização entre as partes. Estamos agora numa arquitectura mista.&lt;br /&gt;&lt;br /&gt;Entretanto surge o primeiro Web browser que apenas mostrava texto e praticamente todo o processamento era realizado no lado do servidor. Voltamos novamente a uma arquitectura completamente centralizada. As capacidades deste tipo de aplicações eram muito limitadas. Os Web browsers evoluíram, sendo já é possível correr código de aplicações dentro destes, o que levou e leva a que apareçam cada vez mais aplicações Web em detrimento de aplicações desktop.&lt;br /&gt;&lt;br /&gt;Esta arquitectura cliente-servidor oferece algumas vantagens tecnológicas que naturalmente se tornam em vantagens económicas. A centralização de todos os dados no servidor é um exemplo disso, que leva a um aumento da segurança e à redução nos custos de manutenção.&lt;br /&gt;&lt;br /&gt;Como pudemos observar, certa parte destas mudanças aparecem por razões económicas. Se uma arquitectura diferente apresenta as mesmas funcionalidades a um preço mais reduzido tende a ser cada vez mais adoptada.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;Motivação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Chegamos agora à parte mais importante. Com o aparecimento de Web browsers com cada vez mais capacidades e cada vez mais cumpridores dos standards, e com as capacidades para acesso à Internet que existem, torna-se cada vez mais possível a ideia de afastar completamente a computação e os dados dos computadores pessoais e movê-los para a nuvem.&lt;br /&gt;&lt;br /&gt;Na base desta mudança estão, como mencionado anteriormente, a evolução tecnológica que agora existe e novamente as razões económicas, nomeadamente com a redução de custos que essa mudança pode proporcionar. Vamos agora dar uma vista de olhos nas próximas tendências na área das tecnologias de informação para tentar perceber se esta mudança terá ou não condições para acontecer.&lt;br /&gt;&lt;br /&gt;Prevê-se que nos próximos anos, três das principais tendências na área das tecnologias de informação sejam a mobilidade, o software como serviço (SaaS) e o hardware como serviço (HaaS).&lt;br /&gt;&lt;br /&gt;A mobilidade significa simplesmente que os notebooks vão ficar em casa. Ou seja, vamos passar a levar connosco dispositivos mais leves, mais pequenos e com a mesma eficiência. Esses dispositivos compactos terão preços relativamente baixos e serão munidos de aplicações Web.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Software as a Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Software como serviço significa que muitas das aplicações de negócios serão contratadas no modelo serviço em vez de licença de software. No modelo SaaS a empresa paga na proporção em que usa o software. Essa é uma diferença fundamental em relação ao preço fixo de uma licença. Com o suporte de empresas como Oracle, SAP e Microsoft e de líderes da Internet, como Google e Amazon, o modelo de desenvolvimento e distribuição SaaS tende a crescer muito nos próximos anos.&lt;br /&gt;&lt;br /&gt;Em vez de instalar software nos seus próprios servidores, as empresas contratam o fornecimento desse software como um serviço. E em vez de pagarem uma licença de software, pagam mensalmente um custo por utilizador ou pelas horas em que os seus colaboradores estiveram a usar a aplicação. A interacção com este software é realizada da mesma forma que se realizam as interacções com as aplicações empresariais modernas, ou seja, através de um Web browser. As contas de webmail são um bom exemplo de um software muito utilizado e fornecido como serviço. Hoje em dia, praticamente todas as aplicações podem ser fornecidas como serviço.&lt;br /&gt;&lt;br /&gt;Esta ideia não é nova, pois no passado já existiram Aplication Service Providers. No entanto, esta arquitectura não teve grande sucesso porque esses fornecedores dedicaram servidores e programas a empresas individualmente. O custo de operação e manutenção individual de cada um desses servidores impossibilitou o sucesso desta arquitectura. Os fornecedores de software como serviço trabalham com uma arquitectura diferente: existe apenas uma instância do software que serve os vários clientes. Apesar de cada cliente ter apenas acesso aos seus dados e a uma versão personalizada da aplicação, existe apenas uma instância desse software a correr no servidor. Esta arquitectura tem algumas vantagens tais como a redução de recursos ocupados no servidor e a redução dos custos de manutenção. Cada instância de um software por menor que seja requer logo à cabeça alguma memória e algum processamento. Essa necessidade multiplicada por muitos clientes pode tornar considerável esse custo inicial. A arquitectura de que vos estou a falar reduz substancialmente essa necessidade dado que apenas existe uma instância, embora mais “pesada”, do software. Como já foi referido, a manutenção está, neste caso, muito mais facilitada dado que todas as correcções de erros e novas funcionalidades ficam imediatamente disponíveis para todos os utilizadores.&lt;br /&gt;&lt;br /&gt;Os fornecedores disponibilizam ainda formas de os utilizadores poderem personalizar a sua “versão” da aplicação e até a partilha dessas personalizações com outros clientes. A maioria dos clientes deste tipo de fornecedores são pequenas e médias empresas, mas a constante complexidade e custo de manutenção de aplicações internamente faz com que o número de clientes destes fornecedores tenda a aumentar e a expandir-se a empresas de maior dimensão.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Hardware as a Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hardware como serviço significa que a adopção de novas tecnologias de informação vai deixar de passar por investir grandes quantias de dinheiro com equipamentos, passando a adquirir a sua infra-estrutura como serviço. A banda larga de alta velocidade vai permitir colocar a infra-estrutura em grandes datacenters com a mesma rapidez de resposta que teria com uma solução local.&lt;br /&gt;&lt;br /&gt;A possibilidade de adquirir hardware como serviço já existe há muito tempo através dos fornecedores de alojamento. No entanto esta opção enfrenta alguns problemas complexos tais como a escalabilidade. Normalmente nestes casos é alugado um servidor dedicado o que leva a estarmos limitados à capacidade desse servidor.&lt;br /&gt;&lt;br /&gt;Vamos agora pensar do ponto de vista empresarial. Imagine que tem uma empresa e compra um servidor para dar resposta às necessidades da sua empresa. Passado algum tempo a sua empresa está a ter cada vez mais sucesso no mercado, o seu servidor já não dá resposta às necessidades e tem que adquirir outro e depois mais outro… Por alguma razão o país entra em recessão e o seu volume de negócios desce bastante. Ora, para além dos problemas que a recessão lhe está a trazer tem ainda que se preocupar em acabar de pagar os servidores que teve que adquirir e que agora já não lhe fazem a mínima falta.&lt;br /&gt;&lt;br /&gt;Outro exemplo da mais-valia que o hardware como serviço trás às empresas é a capacidade de resposta a picos temporários. Imagine que a sua empresa tem que processar um grande volume de dados no final do mês e tal não pode ser feito de outra forma. Provavelmente terá que adquirir tecnologia de servidor que estará a dar rendimento apenas no final de cada mês.&lt;br /&gt;&lt;br /&gt;Como já pudemos perceber trata-se de uma arquitectura altamente escalável porque permite aumentar ou diminuir a capacidade do hardware numa questão de minutos. Além disso é muito flexível porque dá a possibilidade aos utilizadores de escolher quais as capacidades que cada instância terá. A fiabilidade é outra grande arma dado que tira partido de infra-estruturas gigantes, como por exemplo a infra-estrutura da Amazon ou da Google. Um dos exemplos mais conhecidos deste tipo de serviço é o Amazon EC2 (Amazon Elastic Compute Cloud).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Desvantagens e/ou Preocupações&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Até este momento só vimos vantagens neste paradigma, mas naturalmente também existem desvantagens. Algumas podem parecer desvantagens mas tratam-se apenas, até prova em contrário, de preocupações. O primeiro inconveniente tem logo a ver com a necessidade de conectividade, pois sem conectividade não é possível trabalhar. As ligações com baixa largura de banda também poderão limitar bastante o funcionamento deste tipo de serviço caso a informação a transportar entre as partes seja de elevada dimensão.&lt;br /&gt;&lt;br /&gt;Outra das limitações a apontar trata-se da privacidade e de toda a segurança que tem que existir. Existe alguma desconfiança quanto a deixar a cargo de outra empresa a tarefa de guardar dados importantes, quer sejam pessoais ou empresariais. Talvez este tema não se trate de uma desvantagem mas, apenas e só, de uma preocupação. Empresas que forneçam estes serviços vão ter o seu sucesso ou insucesso muito intimamente ligados à sua reputação, e portanto os mecanismos de segurança serão uma das suas principais preocupações.&lt;br /&gt;&lt;br /&gt;Outras existirão logo à partida mas que tenderão a desaparecer com a evolução, tais como a menor velocidade, menor capacidade e menos funcionalidades que este tipo de software ainda tem em relação ao software desktop. Existem ainda algumas questões muito importantes por resolver. Quem é o detentor legal da informação e da propriedade intelectual? É quem contrata o serviço ou quem o disponibiliza? É possível que o fornecedor negue ao utilizador acesso à sua própria informação? Estes e outros assuntos ainda estão a ser debatido por empresas, advogados e universidades.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;Cloud Platforms&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uma das componentes mais importantes desta tendência é a chegada das plataformas na nuvem. Este tipo de plataformas permite aos programadores desenvolver aplicações que correm na nuvem, usar serviços fornecidos pela nuvem, ou ambos. Para compreender esta importância pense como as aplicações são desenvolvidas actualmente. Quando uma equipa de programadores cria uma aplicação, a maioria das coisas que essa aplicação necessita já existem, desde um sistema operativo que fornece o suporte básico para executar essa aplicação a outros computadores que oferecem serviços como, por exemplo, o armazenamento em base de dados. Se para desenvolver um software tivéssemos que criar toda esta plataforma base existiriam muito menos aplicações nos dias de hoje.&lt;br /&gt;&lt;br /&gt;Da mesma forma, se todas as equipas de desenvolvimento que pretendessem criar uma aplicação para correr na nuvem tivessem primeiro que criar a sua própria plataforma também não veríamos muitas aplicações a correr na nuvem. Felizmente, os fornecedores estão cada vez mais a responder a este desafio e já existem algumas plataformas de desenvolvimento na nuvem. Para conseguirmos entender melhor as plataformas na nuvem vamos tentar perceber como é que funcionam as plataformas locais.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;As plataformas locais&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Independentemente de uma plataforma ser local ou na nuvem, pode ser vista como englobando três componentes: um software base para interagir com o hardware existente, um grupo de serviços fornecido pela infra-estrutura e um conjunto de serviços fornecidos por outras aplicações.&lt;br /&gt;&lt;br /&gt;Nos primeiros tempos da computação, a plataforma não era mais do que um conjunto de software base. Quase todas as aplicações utilizam algum software base na máquina onde correm, o que tipicamente inclui algumas funções de suporte, tais como um sistema operativo base, armazenamento standard e bibliotecas de tipos.&lt;br /&gt;&lt;br /&gt;Nos anos 80 e 90, com a disseminação da computação distribuída, foram adicionados serviços disponibilizados pela infra-estrutura, com o armazenamento remoto em ficheiros e bases de dados, a integração e a identidade a tornarem-se muito utilizados.&lt;br /&gt;&lt;br /&gt;Hoje em dia apesar de as aplicações existirem acima de tudo para fornecer serviços a utilizadores finais, com a chegada das aplicações orientadas para serviços, os serviços fornecidos por outras aplicações locais tornaram-se também parte da plataforma.&lt;br /&gt;&lt;br /&gt;Não fazendo directamente parte da plataforma, as ferramentas de desenvolvimento são outra importante parte desta história porque ajudam os programadores a construir aplicações usando as três componentes da plataforma.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;As plataformas na nuvem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O modelo de plataforma usado na nuvem é muito semelhante ao modelo que acabámos de ver. No entanto, e dada as suas diferentes características, irá funcionar de forma diferente em cada camada. Percebemos facilmente isso se pensarmos na enorme necessidade de escalabilidade. Enquanto as plataformas locais lidam, no máximo, com aplicações de nível empresarial, as plataformas na nuvem terão que lidar com aplicações de uma escala bem maior, onde o número de utilizadores será também maior.&lt;br /&gt;&lt;br /&gt;Vamos agora olhar para a camada base e identificar algumas diferenças estruturais. Começando pelo sistema operativo, serão fornecidas instâncias de sistemas operativos a correr sobre máquinas virtuais. A utilização de máquinas virtuais permite que o utilizador possa escolher as capacidades que quer ter na nuvem e, mais importante ainda, permite expandir muito rapidamente essas capacidades em caso de necessidade. Não se esperam grandes limitações quanto ao sistema operativo a utilizar nas máquinas virtuais, e numa primeira fase será Linux o sistema operativo mais utilizado. No entanto a Microsoft já está a desenvolver a sua plataforma para a nuvem, a plataforma Azure, sendo difícil neste momento prever se conseguirá recuperar as desvantagens que parece ter neste momento em relação a Linux.&lt;br /&gt;&lt;br /&gt;As plataformas na nuvem actuais não fornecem as mesmas opções que uma plataforma local. Os programadores estão limitados a poucas, ou até apenas a uma, formas de poder obter suporte local. Relembro que ao estarmos a falar de suporte local estamos a falar de, por exemplo, acesso a um servidor de bases de dados a correr na própria máquina ou de frameworks sobre as quais as aplicações correm. Estas limitações também são, de alguma forma, consequências da necessidade de escalabilidade mas também permitem aos fornecedores focarem-se no desenvolvimento e optimização desse tipo de suporte.&lt;br /&gt;&lt;br /&gt;Antes de falarmos sobre as características dos serviços fornecidos pela infra-estrutura na nuvem e por outras aplicações na nuvem é importante perceber a interacção que poderá existir entre as duas plataformas.&lt;br /&gt;&lt;br /&gt;As plataformas locais poderão tirar partido dos serviços fornecidos pelas plataformas na nuvem, tal como as plataformas na nuvem poderão tirar partido dos serviços fornecidos pelas plataformas locais. A mudança para plataformas na nuvem será em muitos casos uma mudança progressiva. As aplicações locais vão cada vez mais inter-operar com serviços e aplicações que passarão a existir na nuvem até que um dia todas, ou pelo menos a maioria, estarão já a funcionar completamente na nuvem.&lt;br /&gt;&lt;br /&gt;Quanto a serviços fornecidos pela infra-estrutura, muitas aplicações locais não tiram partido deste tipo de serviços. Quando falamos de aplicações na nuvem o mesmo poderá acontecer. Dada a normal existência de apenas uma instância na nuvem poderemos ser levados a pensar que funcionalidades como o armazenamento em bases de dados e gestão de identidade passem a ser fornecidos cada vez menos como serviço e passem a fazer parte do próprio software. Isto porque não existe a necessidade de partilhar essa informação com outras instâncias.&lt;br /&gt;&lt;br /&gt;Este pode ser um caminho, mas o caminho contrário é ainda mais viável, ou seja, focar o desenvolvimento do software na lógica de negócio e deixar a resolução desse tipo de tarefas a cargo de serviços que ligamos ao nosso software e dos quais tiramos partido. Vamos pensar, por exemplo, no serviço de gestão de identidade. O programador não tem que se preocupar na forma de guardar e verificar a identidade dos seus utilizadores, bastando-lhe apenas saber utilizar um serviço que lhe fornece solução para essa e outras preocupações. É uma mais-valia importante. As plataformas que existem hoje em dia na nuvem têm normalmente um serviço de gestão de identidade associado. Trata-se de uma limitação mas não deixa de ser um serviço muito importante para as aplicações, até porque a interacção com outros fornecedores de identidade é cada vez mais possível.&lt;br /&gt;&lt;br /&gt;O serviço de armazenamento de informação na nuvem é um dos mais atractivos, mas mesmo este tem necessariamente que ter uma arquitectura diferente devido às características da nuvem. Isto poderá significar que os programadores poderão tirar partido deste tipo de serviço mas poderá implicar mais algum trabalho no desenvolvimento se o quiserem usar devidamente. Em relação a serviços fornecidos por outras aplicações não parecem existir grandes novidades. No entanto, a cada vez maior adopção de arquitecturas orientadas ao serviço vão potenciar ainda mais a interacção entre as aplicações, sejam elas locais ou residentes na nuvem.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;Conclusão&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como se pode constatou anteriormente, as plataformas não mudam muito ao longo do tempo. No entanto, sempre que aparece uma nova plataforma que apresenta reais vantagens em relação às existentes ela tende a ter um impacto muito grande. As plataformas na nuvem ainda não trazem todas as vantagens que as plataformas locais já disponibilizam mas apresentam sérias vantagens competitivas. A adopção destas plataformas fará parte do nosso futuro enquanto programadores ou simples utilizadores de informática. Fica prometido para uma futura edição uma análise mais aprofundada às plataformas existentes.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Referências e Bibliografia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Wikipedia - Cloud Computing&lt;br /&gt;&lt;br /&gt;HowStuffWorks.com – Cloud Computing&lt;br /&gt;&lt;br /&gt;GigaOM – How cloud and utility computing are different&lt;br /&gt;&lt;br /&gt;Cloud Computing Journal -What is Cloud Computing?&lt;br /&gt;&lt;br /&gt;Linux Magazine - Computing In The Clouds: Setting Expectations&lt;br /&gt;&lt;br /&gt;Chapell &amp;amp; Associates - A Short Introduction to Cloud Platforms&lt;br /&gt;&lt;br /&gt;InfoWorld - What cloud computing really means&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8506595752287235672?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8506595752287235672/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8506595752287235672' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8506595752287235672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8506595752287235672'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/02/cloud-computing.html' title='Cloud Computing'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8000540841380830457</id><published>2009-01-17T18:37:00.002Z</published><updated>2009-01-17T18:41:43.029Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><category scheme='http://www.blogger.com/atom/ns#' term='Task Manager'/><title type='text'>free Extended Task Manager</title><content type='html'>The &lt;a href="http://www.extensoft.com/?p=free_task_manager"&gt;free Extended Task Manager&lt;/a&gt; includes various other features that make it a great alternative to the standard Windows Task Manager.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.extensoft.com/?p=free_task_manager"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 568px; height: 525px;" src="http://www.extensoft.com/media/p2/images/FreeProducts/TaskManager/TaskManager.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Extended Task Manager features:&lt;br /&gt;* Displays disk input/output activity with information about related applications&lt;br /&gt;* Displays network port activity with IP addresses of external computers&lt;br /&gt;* Displays information about applications that utilized most of the CPU or memory at any time presented on the charts&lt;br /&gt;* Displays all files locked by a select process.&lt;br /&gt;* Finds all processes locking a specified file.&lt;br /&gt;* Includes "Summary" tab for quickly assessing the overall state of the Windows system&lt;br /&gt;* Allows freezing individual Windows processes&lt;br /&gt;* Offer various visual and functional improvements over the standard Windows Task Manager&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8000540841380830457?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8000540841380830457/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8000540841380830457' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8000540841380830457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8000540841380830457'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/01/free-extended-task-manager.html' title='free Extended Task Manager'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-1667102733689782744</id><published>2009-01-14T09:11:00.002Z</published><updated>2009-01-14T09:16:25.988Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Erro'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Top 25 Most Dangerous Programming Errors</title><content type='html'>Através de um &lt;a href="http://www.pplware.com/2009/01/13/25-asneiras-da-programacao/"&gt;post no peopleware&lt;/a&gt; tomei conhecimento que um fórum de peritos liderado pela Agência de Segurança Nacional dos EUA acaba de revelar os 25 maiores erros de programação no que toca à segurança.&lt;br /&gt;&lt;br /&gt;Vale a penar ler porque são enunciadas algumas técnicas para os resolver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-1667102733689782744?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/1667102733689782744/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=1667102733689782744' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/1667102733689782744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/1667102733689782744'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2009/01/top-25-most-dangerous-programming.html' title='Top 25 Most Dangerous Programming Errors'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-5097656311580906594</id><published>2008-12-18T19:37:00.003Z</published><updated>2008-12-18T19:47:06.430Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server Express'/><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Profiler'/><title type='text'>SQL Express Profiler</title><content type='html'>A versão Express do SQL Server não disponibiliza um profiler tal como as outras versões mais avançadas. No entanto houve dois senhores que se lembraram de fazer um. Já testei e o resultado é bastante bom.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqlprofiler.googlepages.com/"&gt;http://sqlprofiler.googlepages.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-5097656311580906594?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/5097656311580906594/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=5097656311580906594' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/5097656311580906594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/5097656311580906594'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/12/sql-express-profiler.html' title='SQL Express Profiler'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3936638874599101424</id><published>2008-12-18T14:05:00.002Z</published><updated>2008-12-18T14:07:39.936Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='Revista Programar'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>Revista PROGRAMAR - 17ª Edição</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.revista-programar.info/front/edition/17"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 249px; height: 351px;" src="http://www.portugal-a-programar.org/revista-programar/images/ed17.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Agora que se aproxima o Natal, a equipa da PROGRAMAR traz a 17ª edição da revista.&lt;br /&gt;&lt;br /&gt;Desta vez, encontrará, entre outros, um artigo sobre Subversion, uma introdução ao Desenvolvimento de Jogos com a plataforma XNA e a continuação do artigo de Fundamentos de Segurança em Redes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3936638874599101424?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3936638874599101424/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3936638874599101424' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3936638874599101424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3936638874599101424'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/12/revista-programar-17-edio.html' title='Revista PROGRAMAR - 17ª Edição'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7112130755267255172</id><published>2008-12-06T15:31:00.002Z</published><updated>2008-12-06T15:42:44.364Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='Tags'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Ignore HTML tags</title><content type='html'>Na minha mensagem anterior tive alguma dificuldade em publicar o código porque os caracteres &lt;span style="font-weight:bold;"&gt;&amp;lt;&lt;/span&gt; e &lt;span style="font-weight:bold;"&gt;&amp;gt;&lt;/span&gt; estavam a ser interpretados como tags html.&lt;br /&gt;&lt;br /&gt;De modo a resolver este problema substitui-se por &lt;span style="font-weight:bold;"&gt;&amp;amp;lt;&lt;/span&gt; e &lt;span style="font-weight:bold;"&gt;&amp;amp;gt;&lt;/span&gt; (não esquecendo o &lt;span style="font-weight:bold;"&gt;;&lt;/span&gt; no fim).&lt;br /&gt;&lt;br /&gt;PS: para mostrar os &lt;span style="font-weight:bold;"&gt;&amp;amp;lt;&lt;/span&gt; e &lt;span style="font-weight:bold;"&gt;&amp;amp;gt;&lt;/span&gt; como texto aqui no blogger foi necessário substituir o &lt;span style="font-weight:bold;"&gt;&amp;&lt;/span&gt; por &lt;span style="font-weight:bold;"&gt;&amp;amp;amp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7112130755267255172?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7112130755267255172/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7112130755267255172' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7112130755267255172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7112130755267255172'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/12/ignore-html-tags.html' title='Ignore HTML tags'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-428428832465882142</id><published>2008-12-06T14:54:00.004Z</published><updated>2008-12-06T15:30:28.840Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wake on LAN'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Wake On LAN em C#</title><content type='html'>De modo a evitar deslocações e poupar energia podemos utilizar a funcionalidade de Wake On LAN para "acordar" um computador. Resumidamente teremos que ter essa funcionalidade disponível e activa na BIOS de modo a poder ser recebido e processado o "pacote mágico" que irá acordar a máquina. O pacote mágico é constituído por 6 bytes com 0xFF seguido de 16 vezes o endereço MAC da placa de rede do computador. Este pacote será enviado por broadcast.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;//Construct the packet&lt;br /&gt;List&amp;lt;byte&amp;gt; packet = new List&amp;lt;byte&amp;gt;();&lt;br /&gt;&lt;br /&gt;//Trailer of 6 FF packets&lt;br /&gt;for (int i = 0; i &amp;lt; 6; i++)&lt;br /&gt;packet.Add(0xFF);&lt;br /&gt;&lt;br /&gt;//Repeat 16 time the MAC address (which is 6 bytes)&lt;br /&gt;for (int i = 0; i &amp;lt; 16; i++)&lt;br /&gt;packet.AddRange(macAddress);&lt;br /&gt;&lt;br /&gt;//Send the packet to broadcast address&lt;br /&gt;UdpClient client = new UdpClient();&lt;br /&gt;client.Connect(IPAddress.Broadcast, 7); //Any UDP port will work, normally 0, 7 or 9&lt;br /&gt;client.Send(packet.ToArray(), packet.Count);&lt;br /&gt;client.Send(packet.ToArray(), packet.Count);&lt;br /&gt;client.Send(packet.ToArray(), packet.Count);&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Nos testes que fiz muitas vezes apenas um envio não resultava de modo a que optei por enviar o pacote 3 vezes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Fonte do código:&lt;br /&gt;http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-428428832465882142?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/428428832465882142/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=428428832465882142' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/428428832465882142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/428428832465882142'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/12/wake-on-lan-em-c.html' title='Wake On LAN em C#'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-1427115539933525339</id><published>2008-11-19T17:09:00.003Z</published><updated>2008-11-19T17:16:58.072Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Revista Programar'/><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><category scheme='http://www.blogger.com/atom/ns#' term='Portugal-a-Programar'/><title type='text'>Revista Programar no DVD da Exame Informática</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hY-ANnxqzeg/SSRKAORh8pI/AAAAAAAAAE8/kRjikIlSiJI/s1600-h/p1010126sq5.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 239px;" src="http://4.bp.blogspot.com/_hY-ANnxqzeg/SSRKAORh8pI/AAAAAAAAAE8/kRjikIlSiJI/s320/p1010126sq5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5270418831622402706" /&gt;&lt;/a&gt;&lt;br /&gt;Foi conseguido mais um marco na história da Revista PROGRAMAR!&lt;br /&gt;A PCGuia incluiu a revista no seu último DVD, edição de Dezembro de 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-1427115539933525339?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/1427115539933525339/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=1427115539933525339' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/1427115539933525339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/1427115539933525339'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/11/revista-programar-no-dvd-da-exame.html' title='Revista Programar no DVD da Exame Informática'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hY-ANnxqzeg/SSRKAORh8pI/AAAAAAAAAE8/kRjikIlSiJI/s72-c/p1010126sq5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6191581928970351925</id><published>2008-11-09T16:40:00.003Z</published><updated>2008-11-09T16:55:45.491Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='iTunes'/><category scheme='http://www.blogger.com/atom/ns#' term='iPod'/><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><category scheme='http://www.blogger.com/atom/ns#' term='Alternativa'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>iTunes alternative</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.poddox.com/img/poddox_main.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 233px;" src="http://www.poddox.com/img/poddox_main.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Não poder simplesmente copias as minhas musicas para dentro do meu iPod já é algo estranho para mim, em cima disto ter que usar o iTunes para o efeito é demais :)&lt;br /&gt;Na minha pesquisa por alternativas esbarrei logo num programa que me enche as medidas:&lt;br /&gt;1- Não é preciso instalar&lt;br /&gt;2- Tem 416kb de tamanho&lt;br /&gt;3- Um interface super simplex&lt;br /&gt;&lt;br /&gt;Se simplesmente quer enviar ou remover musicas do seu iPod aqui está uma bela solução!&lt;br /&gt;Para alternativas com mais funcionalidade.... google it :)&lt;br /&gt;&lt;br /&gt;PS:&lt;br /&gt;-a ultima versão foi lançada em 2007 (não prevejo que evolua)&lt;br /&gt;-apenas permite envio e remoção de musicas (vídeo, fotos e reparação da base de dados não estão disponíveis)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6191581928970351925?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6191581928970351925/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6191581928970351925' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6191581928970351925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6191581928970351925'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/11/itunes-alternative.html' title='iTunes alternative'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-2210486467131901118</id><published>2008-11-04T19:44:00.001Z</published><updated>2008-11-04T23:59:38.335Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDC 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Apresentação'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Vídeo'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Videos das apresentações do PDC 2008 (Professional Developers Conference)</title><content type='html'>Estão disponíveis os &lt;a href="http://sessions.microsoftpdc.com/"&gt;vídeos das apresentações&lt;/a&gt; feitas no PDC 2008 (Professional Developers Conference).Podemos fazer o download das mesmas nos formatos WMV-HQ, WMV, Zune e/ou MP4.&lt;br /&gt;&lt;br /&gt;Tags:&lt;br /&gt;.NET Framework [16] Ad Platform [2] ADO.NET [3] ASP.NET [11] Azure [39] CCR [1] Dynamics [5] Entity Framework [3] Expression [4] HPC [1] Identity [8] IIS [2] Internet Explorer [3] Languages [11] LINQ [4] Live Framework [10] Live Mesh [10] Live Services [14] Office [2] Oslo [6] Parallelism [9] PowerShell [1] Research [4] SharePoint [5] Silverlight [11] SQL Server [16] SQL Server Data Services [8] Surface [1] Sync Framework [3] TFS [3] Unified Communications [3] Velocity [2] Virtual Earth [1] Visual Studio [19] VSTS [7] WCF [7] WF [9] Windows 7 [24] Windows Embedded [1] Windows Home Server [2] Windows Server [12] WMI [1] WPF [9] XNA [1]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-2210486467131901118?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/2210486467131901118/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=2210486467131901118' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2210486467131901118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2210486467131901118'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/11/videos-das-apresentaes-do-pdc-2008.html' title='Videos das apresentações do PDC 2008 (Professional Developers Conference)'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8643681603190830459</id><published>2008-11-03T14:07:00.003Z</published><updated>2008-11-03T14:12:49.607Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINQ to SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Fim de LINQ to SQL</title><content type='html'>A M$ anunciou que irá apostar na Entity Framework da ADO.NET como forma de acesso a dados, pelo que o acesso a bases de dados relacionais deverá ser realizado através de LINQ to Entities e não LINQ to SQL, sendo que LINQ to SQL terá pouco desenvolvimento.&lt;br /&gt;&lt;br /&gt;A meu ver é anunciada a morte do LINQ to SQL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx"&gt;Update on LINQ to SQL and LINQ to Entities Roadmap&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/adonet/archive/2008/10/31/clarifying-the-message-on-l2s-futures.aspx"&gt;Clarifying the message on L2S Futures.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8643681603190830459?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8643681603190830459/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8643681603190830459' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8643681603190830459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8643681603190830459'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/11/fim-de-linq-to-sql.html' title='Fim de LINQ to SQL'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7721405952089050028</id><published>2008-11-01T15:11:00.003Z</published><updated>2008-11-01T15:17:09.890Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Música'/><category scheme='http://www.blogger.com/atom/ns#' term='Rádio'/><category scheme='http://www.blogger.com/atom/ns#' term='Online'/><category scheme='http://www.blogger.com/atom/ns#' term='Televisão'/><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><title type='text'>Sintonizate.net</title><content type='html'>&lt;a href="http://sintonizate.net"&gt;Este site&lt;/a&gt; disponibiliza vários conteúdos online tais como Rádios, TV, Vídeos, Jogos, Musica. Uso-o para ouvir rádio, permite mudar rapidamente de rádio a tem um Top 10 de rádios mais ouvidas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7721405952089050028?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7721405952089050028/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7721405952089050028' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7721405952089050028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7721405952089050028'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/11/sintonizatenet.html' title='Sintonizate.net'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7641268536130471790</id><published>2008-10-30T09:35:00.003Z</published><updated>2008-10-30T09:41:42.079Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><category scheme='http://www.blogger.com/atom/ns#' term='MSDN'/><category scheme='http://www.blogger.com/atom/ns#' term='Magazine'/><title type='text'>MSDN Magazine November 2008</title><content type='html'>Já está disponível para visualização &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd239189.aspx"&gt;online&lt;/a&gt; a edição de Novembro da MSDN Magazine.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://msdn.microsoft.com/en-us/magazine/dd239189.aspx"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 263px; height: 345px;" src="http://i.msdn.microsoft.com/dd239189.cover(en-us).gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7641268536130471790?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7641268536130471790/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7641268536130471790' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7641268536130471790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7641268536130471790'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/10/msdn-magazine-november-2008.html' title='MSDN Magazine November 2008'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7044951591930188504</id><published>2008-10-28T00:14:00.003Z</published><updated>2008-10-28T00:20:29.319Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Router'/><category scheme='http://www.blogger.com/atom/ns#' term='Port Forward'/><title type='text'>Port Forward</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.portforward.com/images/r2c1.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 97px;" src="http://www.portforward.com/images/r2c1.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Já não vos aconteceu encontar um router com uma interface um bocado estranha e andarem ás aranhas para fazer forward a uma porta? &lt;br /&gt;&lt;a href="http://www.portforward.com/english/routers/port_forwarding/routerindex.htm"&gt;Aqui está a solução!&lt;/a&gt; Façam scroll nessa página e podem ver a imensa lista de Routers, divididos por marca, com o respectivo link de como fazer a operação!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7044951591930188504?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7044951591930188504/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7044951591930188504' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7044951591930188504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7044951591930188504'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/10/port-forward.html' title='Port Forward'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6602314130010096909</id><published>2008-10-27T23:26:00.004Z</published><updated>2008-10-28T00:21:53.196Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>Visual SVN Server</title><content type='html'>Já que o &lt;a href="http://www.assembla.com"&gt;assembla&lt;/a&gt; deixou de ter espaços privados gratuitamente tive que instalar um servidor SVN particular.&lt;br /&gt;&lt;br /&gt;Para isso usei o &lt;a href="http://www.visualsvn.com/visualsvn/"&gt;VisualSVN Server&lt;/a&gt;, é grátis, muito leve e muito fácil de configurar! Inclui o Subversion, Apache e Consola de Gestão. Isto tudo num pacote com menos de 6MB.&lt;br /&gt;Parece-me bastante seguro, permite acessos por https criando ele mesmo um certificado próprio para o efeito.&lt;br /&gt;&lt;br /&gt;Como cliente continuo a usar o &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.visualsvn.com/visualsvn/"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 628px; height: 466px;" src="http://www.visualsvn.com/server/manager.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6602314130010096909?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6602314130010096909/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6602314130010096909' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6602314130010096909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6602314130010096909'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/10/j-que-o-assembla-deixou-de-ter-espaos.html' title='Visual SVN Server'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-2471264171409128333</id><published>2008-10-26T11:46:00.003Z</published><updated>2008-10-26T11:56:02.100Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Serviços'/><category scheme='http://www.blogger.com/atom/ns#' term='Online'/><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><title type='text'>Zoho, trabalhe online</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://zoho.com/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 137px; height: 80px;" src="http://zoho.com/images/zoho.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What is Zoho all about?&lt;/span&gt;&lt;br /&gt;Zoho is a suite of online applications (services) that you sign up for and access from our Website. The applications are free for individuals and some have a subscription fee for organizations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How much does Zoho cost?&lt;/span&gt;&lt;br /&gt;Zoho offers free versions of all its software including our business oriented applications such as CRM. This will never change. You can always have access to our free or "personal editions" Each of our fee-based applications have different pricing models generally charged with a credit card on a monthly basis.&lt;br /&gt;&lt;br /&gt;Disponibiliza em português os seguintes serviços:&lt;br /&gt;Sheet, Show, Projects, CRM, Notebook, Meeting, Mail&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-2471264171409128333?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/2471264171409128333/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=2471264171409128333' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2471264171409128333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2471264171409128333'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/10/zoho-trabalhe-online.html' title='Zoho, trabalhe online'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6835187633838346682</id><published>2008-10-22T21:35:00.002+01:00</published><updated>2008-10-22T21:40:37.756+01:00</updated><title type='text'>http://www.indeks.pt/</title><content type='html'>&lt;a href="http://www.indeks.pt/"&gt;Indeks.pt&lt;/a&gt; - O melhor numa só página é o titulo! Resume-se a uma página com vários links divididos por categoria! Ainda não encontrei muita utilidade neste site mas fica o registo para que numa altura em que não tiver nada para fazer (se isso existir) tirar dali alguma ideia de site a visitar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6835187633838346682?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6835187633838346682/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6835187633838346682' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6835187633838346682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6835187633838346682'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/10/httpwwwindekspt.html' title='http://www.indeks.pt/'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3392404620667554656</id><published>2008-10-22T21:26:00.002+01:00</published><updated>2008-10-22T21:31:36.766+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><title type='text'>OpenProj</title><content type='html'>&lt;a href="http://openproj.org/openproj"&gt;OpenProj &lt;/a&gt;is a free, open source project management solution. OpenProj is a replacement of Microsoft Project and other commercial project solutions.&lt;br /&gt;OpenProj is ideal for desktop project management and is available on Linux, Unix, Mac or Windows. It even opens existing Microsoft or Primavera files. OpenProj shares the industry's most advanced scheduling engine with Project-ON-Demand and provides Gantt Charts, Network Diagrams (PERT Charts), WBS and RBS charts, Earned Value costing and more.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://openproj.org/themes/bluebreeze/images/OpenProj_big.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px;" src="http://openproj.org/themes/bluebreeze/images/OpenProj_big.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3392404620667554656?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3392404620667554656/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3392404620667554656' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3392404620667554656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3392404620667554656'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/10/openproj.html' title='OpenProj'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-1162711452014395520</id><published>2008-10-12T11:19:00.002+01:00</published><updated>2008-10-12T11:24:09.769+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='msdn magazine grátis'/><title type='text'>MSDN Magazine Gratuita</title><content type='html'>A Microsoft publica online a &lt;span style="font-weight:bold;"&gt;&lt;a href="http://msdn.microsoft.com/pt-br/magazine/default.aspx"&gt;MSDN Magazine&lt;/a&gt;&lt;/span&gt; gratuitamente e em português!&lt;br /&gt;&lt;br /&gt;Oferecem ainda a possibilidade de fazer o download da revista em formato CHM desde as edições de 2003, assim como acesso ao código dos exemplos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-1162711452014395520?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/1162711452014395520/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=1162711452014395520' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/1162711452014395520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/1162711452014395520'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/10/msdn-magazine-gratuita.html' title='MSDN Magazine Gratuita'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3403887895226375167</id><published>2008-08-25T21:14:00.000+01:00</published><updated>2008-08-25T21:16:21.008+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><title type='text'>Como pagar o Imposto Único de Circulação pela internet passo a passo</title><content type='html'>&lt;a href="http://impostosobreveiculos.info/inicio/como-pagar-o-iuc-pela-internet-passo-a-passo/"&gt;Como pagar o Imposto Único de Circulação pela internet passo a passo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3403887895226375167?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3403887895226375167/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3403887895226375167' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3403887895226375167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3403887895226375167'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/08/como-pagar-o-imposto-nico-de-circulao.html' title='Como pagar o Imposto Único de Circulação pela internet passo a passo'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6264830848691338661</id><published>2008-08-18T21:40:00.002+01:00</published><updated>2008-08-18T21:52:37.493+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Link to Everything: A List of LINQ Providers</title><content type='html'>No &lt;a href="http://blogs.msdn.com/charlie/default.aspx"&gt;Charlie Calvert's Community Blog&lt;/a&gt; está disponível uma interessante &lt;a href="http://blogs.msdn.com/charlie/archive/2008/02/28/link-to-everything-a-list-of-linq-providers.aspx"&gt;lista de vários providers para LINQ&lt;/a&gt;:&lt;br /&gt;    * LINQ to Amazon&lt;br /&gt;    * LINQ to Active Directory&lt;br /&gt;    * LINQ to Bindable Sources (SyncLINQ)&lt;br /&gt;    * LINQ over C# project&lt;br /&gt;    * LINQ to CRM&lt;br /&gt;    * LINQ To Geo - Language Integrated Query for Geospatial Data&lt;br /&gt;    * LINQ to Excel&lt;br /&gt;    * LINQ to Expressions (MetaLinq)&lt;br /&gt;    * LINQ Extender (Toolkit for building LINQ Providers)&lt;br /&gt;    * LINQ to Flickr&lt;br /&gt;    * LINQ to Google&lt;br /&gt;    * LINQ to Indexes (LINQ and i40)&lt;br /&gt;    * LINQ to IQueryable (Matt Warren on Providers)&lt;br /&gt;    * LINQ to JSON&lt;br /&gt;    * LINQ to NHibernate&lt;br /&gt;    * LINQ to JavaScript&lt;br /&gt;    * LINQ to LDAP&lt;br /&gt;    * LINQ to LLBLGen Pro&lt;br /&gt;    * LINQ to Lucene&lt;br /&gt;    * LINQ to Metaweb(freebase)&lt;br /&gt;    * LINQ to MySQL, Oracle and PostgreSql (DbLinq)&lt;br /&gt;    * LINQ to NCover&lt;br /&gt;    * LINQ to Opf3&lt;br /&gt;    * LINQ to Parallel (PLINQ)&lt;br /&gt;    * LINQ to RDF Files&lt;br /&gt;    * LINQ to Sharepoint&lt;br /&gt;    * LINQ to SimpleDB&lt;br /&gt;    * LINQ to Streams&lt;br /&gt;    * LINQ to WebQueries&lt;br /&gt;    * LINQ to WMI&lt;br /&gt;    * LINQ to XtraGrid&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6264830848691338661?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6264830848691338661/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6264830848691338661' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6264830848691338661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6264830848691338661'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/08/link-to-everything-list-of-linq.html' title='Link to Everything: A List of LINQ Providers'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-2999152770533071646</id><published>2008-08-05T21:48:00.004+01:00</published><updated>2008-08-05T21:58:53.706+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Revista Programar'/><category scheme='http://www.blogger.com/atom/ns#' term='Artigo'/><title type='text'>Estado de Visualização em ASP.NET</title><content type='html'>Aqui está o meu primeiro artigo para a &lt;a href="http://www.revista-programar.info/"&gt;Revista Programar&lt;/a&gt; que saiu agora na edição nº15 em Agosto de 2008. Espero que gostem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Estado de Visualização em ASP.NET&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Antes de entrar em pormenores sobre estado de visualização é necessário compreender o que é um controlo e como este funciona em ASP.NET. De certa forma o ASP.NET é uma arquitectura baseada em controlos, já que uma página é um controlo e qualquer controlo pode conter controlos filhos.&lt;br /&gt;&lt;br /&gt;A arquitectura é semelhante à arquitectura de janelas do Windows, onde o próprio ambiente de trabalho é uma janela, que pode conter janelas filhas. Cada janela é apresentada, apresentando primeiro o seu conteúdo e depois apresentando o conteúdo das janelas filhas. O mesmo se passa em ASP.NET em que cada controlo é apresentado, apresentando primeiro o seu conteúdo e depois apresentando o conteúdo dos seus filhos. A apresentação de uma janela em Windows envolve o desenho de pixeis no ecrã, enquanto que a apresentação de um controlo ASP.NET envolve a geração de HTML para preencher uma parte da resposta a um pedido HTTP.&lt;br /&gt;&lt;br /&gt;Uma página serve como controlo raiz e tem três controlos filhos imediatos: um controlo literal para gerar o texto de início da página, um controlo do lado do servidor HtmlForm para representar o formulário e todos os seus controlos filho, e por fim outro controlo literal para gerar o texto de fim da página. Todos os controlos adicionados a uma página estarão dentro do formulário e portanto serão filhos do HtmlForm, em que a ordem pela qual estão definidos dentro desse controlo será a ordem pela qual serão apresentados. Cada um destes controlos tem o seu próprio estado de visualização. Todos os controlos que correspondem a elementos de formulário têm a sua manutenção de estado suportada através do envio automático do valor dos elementos quando o formulário é submetido (post back). Todos os outros terão que definir o seu mecanismo de persistência de estado e será sobre este assunto que iremos conversar.&lt;br /&gt;&lt;br /&gt;Em ASP.NET, o estado de visualização entre post backs é mantido através de uma colecção de pares nome/valor acessíveis por qualquer controlo a partir da propriedade ViewState. Quase todo o estado do controlo, se não todo, fica guardado nesta colecção. Esta propriedade retorna uma instância do tipo System.Web.UI.StateBag, que é muito semelhante a uma tabela de hash mas tem a capacidade de registar alterações (fazer tracking), ou seja, permite que sempre que um valor seja alterado na colecção seja também marcado como “dirty”.&lt;br /&gt;&lt;br /&gt;A função de registo de alterações pode estar ligada ou desligada, mas uma vez ligada não pode ser desligada. De modo a activar a função use o método TrackViewState(). Se a função de tracking estiver ligada qualquer alteração a um objecto fará com que esse objecto fique marcado como “dirty”. Podemos consultar se o objecto está marcado ou não através do método IsItemDirty(string chave) ou forçar a marcação através do método SetItemDirty(string chave). O leitor tenha em atenção um pormenor, após a activação de TrackViewState() qualquer alteração será marcada, mesmo que o objecto seja alterado para o mesmo estado, como por exemplo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;stateBag["nome"] = "valor";&lt;br /&gt;stateBag.IsItemDirty("nome"); // falso&lt;br /&gt;stateBag.TrackViewState();&lt;br /&gt;stateBag["nome"] = "valor";&lt;br /&gt;stateBag.IsItemDirty("nome"); // verdadeiro&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;A colecção ViewState, como já foi referido, guarda pares nome/valor, os pares podem ser indexados por string e ter qualquer object como valor. Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ViewState["ViewStateVariableName"] = 1;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Para ter acesso á variável guardada basta fazer a indexação com a chave e a respectiva conversão.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;int number = (int) ViewState["ViewStateVariable"];&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Esta colecção também permite guardar tipos os nossos próprios tipos quase tão facilmente como os tipos básicos. Para tal basta apenas o tipo ser serializável, ou seja, consegue-se converter uma instância desse tipo para uma sequência de bytes e posteriormente fazer a sua recuperação. Vai compreender a necessidade de o tipo ser serializável mais á frente neste artigo quando falarmos de um campo de input oculto chamado __VIEWSTATE.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[Serializable]&lt;br /&gt;public class Pessoa&lt;br /&gt;{&lt;br /&gt;    public string _nome;&lt;br /&gt;    public int _idade;&lt;br /&gt; &lt;br /&gt;    public Pessoa(string nome, int idade)&lt;br /&gt;    {&lt;br /&gt;        _nome = nome;&lt;br /&gt;        _idade = idade;&lt;br /&gt;    }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Como a classe Pessoa está marcada como serializável pode ser guardada em ViewState:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Pessoa p = new Pessoa("Vitor", 25);&lt;br /&gt;ViewState["Cliente"] = p;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Lembre-se que terá de efectuar a respectiva conversão quando necessitar de obter o valor guardado.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Pessoa p = (Pessoa) ViewState["Cliente"];&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;O protocolo HTTP é stateless, ou seja, cada pedido é executado independentemente e sem conhecimento de pedidos anteriores. Portanto cada pedido feito á arquitectura ASP.NET será servido por uma instância diferente do controlo e por isso não é possível guardar estado de visualização entre post backs em campos de instância. Devido a isso as propriedades em ASP.NET terão um aspecto diferente já que deverão usar a colecção ViewState para guardar qualquer valor:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;public int ValorInteiro&lt;br /&gt;{&lt;br /&gt;    get { return (int)ViewState["ValorInteiro"]; }&lt;br /&gt;    set { ViewState["ValorInteiro"] = value; }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Nos casos em que é necessário ter um valor por defeito teremos também que ter em conta que estamos a utilizar a colecção ViewState. Tal como uma tabela de hash, uma StateBag irá retornar null se a colecção não contém uma entrada com essa chave. Portanto, se o valor retornado for nulo é porque ainda não foi atribuído, então deve retornar o valor padrão, caso contrário, retornar o valor obtido.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;public string Texto &lt;br /&gt;{&lt;br /&gt;    get { return ViewState["Texto"] == null ? &lt;br /&gt;          "Valor por Defeito" : (string)ViewState["Text"];&lt;br /&gt;    }&lt;br /&gt;    set { ViewState["Texto"] = value; }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Repare que ao afectar com null uma propriedade definida com este padrão essa propriedade passará a retornar o valor por defeito e não null como acontece com as propriedades ditas normais. Uma alternativa poderá ser afectar a propriedade com String.Empty (um campo que representa um string vazia) em vez de null. De salientar ainda que cada controlo pode aceder á sua colecção ViewState em qualquer momento e por qualquer razão, não apenas através de propriedades.&lt;br /&gt;&lt;br /&gt;Deve-se utilizar esta colecção quando as propriedades reflectem directamente tipos primitivos. No caso de controlos que têm pretendem manter um estado mais complexo, usando tipos próprios poderá ser mais complicado utilizar a colecção ViewState. Como alternativa podemos sobrepor dois métodos virtuais definidos na classe base Control sendo eles o SaveViewState() e o LoadViewState(). Estes métodos permitem escrever e ler manualmente o estado do controlo a partir da stream ViewState. Para um objecto poder ser guardado nessa stream tem que ser serializável. O método SaveViewState(), como o nome indica, permite guardar o estado de visualização. Note que este método também é responsável por chamar o método da base e guardar, no objecto a retornar, o resultado dessa chamada.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;protected override object SaveViewState()&lt;br /&gt;{&lt;br /&gt;    ArrayList OsMeusDados = new ArrayList();&lt;br /&gt;    object[] vState = new object[2];&lt;br /&gt;    vState[0] = base.SaveViewState();&lt;br /&gt;    vState[1] = OsMeusDados;&lt;br /&gt;    return vState;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;O método LoadViewState() permite recuperar o estado de visualização. Note que este método também é responsável por chamar o método da base, passando ao mesmo os dados que lhe pertencem.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;protected override void LoadViewState(object savedState)&lt;br /&gt;{&lt;br /&gt;     if (savedState != null)&lt;br /&gt;     {&lt;br /&gt;         ArrayList OsMeusDados;&lt;br /&gt;         // Obter o array de objectos guardados em SaveViewState&lt;br /&gt;         object[] vState = (object[])savedState;&lt;br /&gt; &lt;br /&gt;         if (vState[0] != null)&lt;br /&gt;             base.LoadViewState(vState[0]);&lt;br /&gt;         if (vState[1] != null)&lt;br /&gt;             OsMeusDados = (ArrayList)vState[1];            &lt;br /&gt;     }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;O leitor certamente reconhece um padrão de recursividade na chamada a estes métodos e é desta forma que a arquitectura ASP.NET constrói uma estrutura de dados com todo o conteúdo de estado de visualização. Como já foi referenciado, o protocolo HTTP não tem memória. Isso significa que o estado da página terá que ser guardado e posteriormente reposto no pedido seguinte. Os pares nome/valor colocados na colecção ViewState antes da apresentação da página são armazenados num campo de input oculto, __VIEWSTATE, e quando a página é de novo acedida através de um pedido de POST, o conteúdo do campo __VIEWSTATE é analisado e usado para reconstituir a colecção ViewState.&lt;br /&gt;&lt;br /&gt;Falta-nos agora perceber como é mantido o estado dos controlos de formulário. Como já foi dito anteriormente, todos os controlos que correspondem a elementos de formulário têm a sua manutenção de estado suportada através do envio automático do valor dos elementos quando o formulário é submetido (post back). Esta manutenção de estado é realizada através da implementação da interface IPostBackDataHandler.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;public interface IPostBackDataHandler {&lt;br /&gt; bool LoadPostBackData(string postDataKey, NameValueCollection postCollection);&lt;br /&gt; void RaisePostDataChangedEvent();&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Neste caso a arquitectura faz uma pesquisa no conteúdo do POST de modo a determinar se existem entradas que correspondem a controlos que implementam IPostBackDataHandler e de seguida é invocado o método LoadPostData para todos esses controlos. A string postDataKey, passado como argumento, contém o identificador único associado ao controlo, que pode ser usado para indexar sobre postCollection para localizar o valor corrente do controlo dentro da colecção como se pode verificar no seguinte exemplo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection) {&lt;br /&gt;    string valorAntigo = Text;&lt;br /&gt;    string valorNoPOST = postCollection[postDataKey];&lt;br /&gt; &lt;br /&gt;    if (!valorAntigo.Equals(valorNoPOST)){&lt;br /&gt;          Text = valorNoPOST;&lt;br /&gt;          return true;&lt;br /&gt;    }&lt;br /&gt;    return false;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;O resultado deste método deve ser true se mudou o valor do estado do controlo, caso contrário, o método deve devolver false. Para todos os controlos que retornam true neste método é chamado o RaisePostDataChangedEvent de cada um desses controlos de modo a poderem ser desencadeados eventos de alteração de estado. O leitor repare que o carregamento de dados de POST ocorre em duas fases, o método LoadPostData ocorre antes do método de Load da página e o método de RaisePostDataChangedEvent ocorre depois do método de Load. Isto permite que na altura em que as notificações são geradas todos os controlos tenham o seu estado reposto.&lt;br /&gt;&lt;br /&gt;Note ainda que, para além dos eventos de alteração de estado (eventos changed), como por exemplo alterações do texto de uma caixa de texto ou a alteração do índice seleccionado de uma DropDownList, também os eventos de reacção utilizam este mecanismo. Por exemplo, o evento de click de um botão é detectado e lançado utilizando esta interface. Como se deve ter apercebido, a manutenção de estado de controlos de formulário não usa o campo oculto __VIEWSTATE em nenhuma das suas fases e é completamente independente deste. É por essa razão que, mesmo que o ViewState não esteja activo, todos os controlos de formulário têm o seu estado automaticamente reposto.&lt;br /&gt;&lt;br /&gt;No entanto, na fase LoadPostData, é necessário saber o valor antigo de modo a poder compará-lo com o que vem no POST. Uma das formas é usar o ViewState para previamente guardar esse valor, que depois será usado na comparação com o valor recebido no POST. Note que, apesar da sua ligação próxima, são funcionalidades independentes.&lt;br /&gt;&lt;br /&gt;Voltando ao ViewState, a estrutura de dados com todo o conteúdo de estado de visualização não é directamente convertida para string e armazenada no campo __VIEWSTATE. Lembra-se de falarmos que uma StateBag permitia fazer tracking? Ora bem, apenas são salvos no campo oculto as entradas da StateBag que estão marcadas como “dirty”, ou seja, apenas as entradas em que os seus estados são diferentes do estado estático ou estado por defeito. Não faz sentido guardar estado que será reposto automaticamente assim que exista um novo pedido e seja criada uma nova instância do controlo para atender esse pedido. Neste momento o leitor poderá estar a perguntar-se “então e os controlos definidos declarativamente?” Podemos definir de forma declarativa um controlo, como por exemplo:&lt;br /&gt;&lt;blockquote&gt;&lt; asp:Label ID="Label1" runat="server" Text="Label" &gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;No momento em que a arquitectura ASP.NET faz parse do formulário, ao encontrar o atributo runat=”server” cria uma instância desse controlo e tenta corresponder todos os atributos definidos a propriedades publicas do controlo. No exemplo anterior olhando para o atributo Text percebemos que a arquitectura vai afectar a propriedade pública Text com o valor “Label”. Sabendo nós que quase todo o estado do controlo, se não todo, fica guardado em ViewState poderíamos ser levados a pensar que estes dados seriam considerados “dirty” visto que estamos a mudar o seu estado. Tal não acontece porque o TrackViewState() só é chamado no evento Init do ciclo de vida de uma página e todas estas afectações são feitas antes desse momento, ou seja, não serão consideradas “dirty”.&lt;br /&gt;&lt;br /&gt;Como referido, quando o ocorre a fase de Init é chamado o TrackViewState(). Após o TrackViewState() ser chamado para todas as StateBags é chamado o LoadViewState(), que faz com que todo o estado dinâmico de visualização guardado seja reposto e, mais importante ainda, visto que neste momento o tracking já está activo todo o estado dinâmico carregado será considerado “dirty”. Esta sequência fará com que o estado dinâmico de visualização seja reposto e fique novamente persistente para futuros post backs, ou seja, faz com que seja novamente seriado para __VIEWSTATE. Através deste artigo espero que o leitor fique com uma ideia mais clara de como manter estado nos seus controlos tendo em atenção que quase todo, se não todo, o estado de visualização de um controlo é guardado em ViewState, mas apenas é persistido entre post backs o estado dinâmico. O estado por omissão que é criado quando é criada uma instância desse controlo (estado estático) não é persistido.&lt;br /&gt;&lt;br /&gt;Bibliografia&lt;br /&gt;&lt;br /&gt;Essential ASP.NET with Examples in C# - Fritz Onion - Addison Wesley&lt;br /&gt;&lt;br /&gt;Understanding ASP.NET View State - http://msdn.microsoft.com/en-us/library/ms972976.aspx&lt;br /&gt;&lt;br /&gt;ViewState in ASP.NET 2.0 - http://www.beansoftware.com/ASP.NET-Tutorials/ViewState-In-ASP.NET.aspx&lt;br /&gt;&lt;br /&gt;TRULY Understanding ViewState - http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx&lt;br /&gt;&lt;br /&gt;IPostBackDataHandler Interface - http://msdn.microsoft.com/en-us/library/system.web.ui.ipostbackdatahandler.aspx&lt;br /&gt;&lt;br /&gt;StateBag Class - http://msdn.microsoft.com/en-us/library/system.web.ui.statebag.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-2999152770533071646?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/2999152770533071646/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=2999152770533071646' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2999152770533071646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2999152770533071646'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/08/estado-de-visualizao-em-aspnet.html' title='Estado de Visualização em ASP.NET'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-737385609618130166</id><published>2008-08-03T16:08:00.002+01:00</published><updated>2008-08-03T16:15:49.543+01:00</updated><title type='text'>Não quero imposto M$</title><content type='html'>Quer comprar um computador mas não quer o Window$, passe neste &lt;a href="http://nao.quero.imposto.ms/"&gt;blog &lt;/a&gt;e leia mais sobre o assunto!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-737385609618130166?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://nao.quero.imposto.ms/' title='Não quero imposto M$'/><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/737385609618130166/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=737385609618130166' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/737385609618130166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/737385609618130166'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/08/no-quero-imposto-m.html' title='Não quero imposto M$'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7947597590190795661</id><published>2008-08-02T03:04:00.004+01:00</published><updated>2008-08-02T03:09:34.716+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Revista Programar'/><category scheme='http://www.blogger.com/atom/ns#' term='Portugal-a-Programar'/><category scheme='http://www.blogger.com/atom/ns#' term='Artigo'/><title type='text'>Revista Programar - 15ª Edição</title><content type='html'>&lt;a href="http://www.revista-programar.info/front/edition/15"&gt;&lt;img src="http://www.portugal-a-programar.org/revista-programar/images/ed15.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7947597590190795661?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7947597590190795661/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7947597590190795661' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7947597590190795661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7947597590190795661'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/08/revista-programar-15-edio.html' title='Revista Programar - 15ª Edição'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3630037813637897922</id><published>2008-07-22T21:25:00.003+01:00</published><updated>2008-07-22T21:28:49.031+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>How to become a good developer?</title><content type='html'>Algumas &lt;span style="font-weight:bold;"&gt;&lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2008/07/22/how-to-become-a-good-developer.aspx"&gt;dicas &lt;/a&gt;&lt;/span&gt;para nos tornar-mos melhores programadores...&lt;br /&gt;&lt;br /&gt;Resumo:&lt;br /&gt;   1. Attitude.  &lt;br /&gt;   2. Read the books.&lt;br /&gt;   3. Code! Code! Code! &lt;br /&gt;   4. Try out tools and utilities that make your work easier.&lt;br /&gt;   5. Try out new technologies.&lt;br /&gt;   6. Look how other guys develop systems.&lt;br /&gt;   7. Everything that shines is not gold. &lt;br /&gt;   8. Participate in communities. &lt;br /&gt;   9. Visit technology events.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3630037813637897922?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://weblogs.asp.net/gunnarpeipman/archive/2008/07/22/how-to-become-a-good-developer.aspx' title='How to become a good developer?'/><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3630037813637897922/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3630037813637897922' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3630037813637897922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3630037813637897922'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/07/how-to-become-good-developer.html' title='How to become a good developer?'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8618352933012266320</id><published>2008-07-15T23:35:00.003+01:00</published><updated>2008-07-15T23:45:42.372+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Cache em AJAX</title><content type='html'>Após o desenvolvimento de um controlo de autenticação todo boneco, com as necessárias preocupações em termos de segurança, usando uma estratégia de desafio-resposta deparei-me com um problema. Um utilizador depois de fazer login e logout já não conseguia fazer login novamente! wow, o que é que se passa...&lt;br /&gt;&lt;br /&gt;Como desconfiei logo do que se passava encontrar a solução foi rápido. Mas voltando ao problema, o segundo pedido do desafio era realizado para o mesmo URL que o primeiro, logo, como o browser tinha a resposta a esse pedido em cache nem fazia o pedido ao servidor... conclusão, retornava o mesmo desafio que, naturalmente, já não era válido do ponto de vista do servidor e o processo de login falhava mais à frente.&lt;br /&gt;&lt;br /&gt;Solução: meti um parâmetro adicional na queryString só para o pedido ser "diferente" (usei a data actual do sistema do cliente)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8618352933012266320?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8618352933012266320/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8618352933012266320' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8618352933012266320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8618352933012266320'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/07/cache-em-ajax.html' title='Cache em AJAX'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8400669693989053319</id><published>2008-06-26T20:46:00.003+01:00</published><updated>2008-06-26T21:07:05.903+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>AHAH, Asychronous HTML and HTTP</title><content type='html'>Usando a técnica AJAX recebemos na resposta conteúdo em XML ou JSON.&lt;br /&gt;AHAH pode ser considerado um subset de AJAX na medida em que o que é retornado pelo servidor é XHTML.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Algumas vantagens:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Os dados são transmitidos em XHTML o que facilita o processo de debugging e testes.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Mais rápido, deixa de haver parsing e uso de DOM já que os dados serão embebidos directamente na página.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Podem já vir com estilo (CSS).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;O Processamento é quase todo efectuado no servidor, no cliente apenas ocorre a afectação.&lt;/li&gt;&lt;/ul&gt;A função que recebe o pedido limita-se a afectar a página com o resultado:&lt;br /&gt;&lt;br /&gt;&lt;code javascript=""&gt;function ahahDone(target)&lt;br /&gt;{&lt;br /&gt;    if (req.readyState == 4)&lt;br /&gt;    {&lt;br /&gt;       if (req.status == 200)&lt;br /&gt;       {&lt;br /&gt;                     results = req.responseText;&lt;br /&gt;                     document.getElementById(target).innerHTML = results;&lt;br /&gt;              }&lt;br /&gt;       else&lt;br /&gt;       {&lt;br /&gt;           document.getElementById(target).innerHTML="ahah error:n" +&lt;br /&gt;                          req.statusText;&lt;br /&gt;              }&lt;br /&gt;    }&lt;br /&gt;}  &lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8400669693989053319?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8400669693989053319/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8400669693989053319' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8400669693989053319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8400669693989053319'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/ahah-asychronous-html-and-http.html' title='AHAH, Asychronous HTML and HTTP'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6376259873687500726</id><published>2008-06-21T22:36:00.003+01:00</published><updated>2008-06-21T22:44:28.711+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server 2008 Release Candidate 0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_hY-ANnxqzeg/SF10oK_jJ0I/AAAAAAAAAD4/PIslPx5ia5I/s400/sql2008.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5214452177059391298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.microsoft.com/sqlserver/2008/en/us/overview.aspx"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://www.microsoft.com/global/sqlserver/2008/en/us/PublishingImages/diag-sql2008-lg.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Ora aí está a &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx"&gt;RC0&lt;/a&gt; para quem quiser testar....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6376259873687500726?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6376259873687500726/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6376259873687500726' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6376259873687500726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6376259873687500726'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/sql-server-2008-release-candidate-0.html' title='SQL Server 2008 Release Candidate 0'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hY-ANnxqzeg/SF10oK_jJ0I/AAAAAAAAAD4/PIslPx5ia5I/s72-c/sql2008.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7787048533180592148</id><published>2008-06-18T23:45:00.001+01:00</published><updated>2008-06-18T23:46:35.121+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google's Android ScreenShots</title><content type='html'>&lt;a href="http://news.cnet.com/2300-1046_3-6240422.html?tag=nefd.gallery"&gt;Aqui&lt;/a&gt; podem ver alguns screenshots do Android&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7787048533180592148?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7787048533180592148/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7787048533180592148' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7787048533180592148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7787048533180592148'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/googles-android-screenshots.html' title='Google&apos;s Android ScreenShots'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3290253857144475296</id><published>2008-06-18T21:53:00.003+01:00</published><updated>2008-06-18T22:06:16.203+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Instalar Joomla 1.5 "sobre" o XAMPP</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hY-ANnxqzeg/SFl3MQeo3vI/AAAAAAAAADw/IqC0IwpsrXU/s1600-h/xampp.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/SFl3MQeo3vI/AAAAAAAAADw/IqC0IwpsrXU/s400/xampp.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5213329096123670258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hY-ANnxqzeg/SFl3Ht7m8ZI/AAAAAAAAADo/JKIMdcq1v_U/s1600-h/joomla.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_hY-ANnxqzeg/SFl3Ht7m8ZI/AAAAAAAAADo/JKIMdcq1v_U/s400/joomla.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5213329018130461074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Decidi finalmente experimentar o Joomla. Queria experimentar primeiro um CMS em ASP.NET mas como só tenho o II5 e era preciso o 6 vai já o Joomla para testes... (numa maquina virtual claro)&lt;br /&gt;&lt;br /&gt;Antes de fazer algum post sobre esse assunto é preciso instalar o Apache, MySQL, bla bla bla... o XAMPP já trás isso tudo é só instalar...&lt;br /&gt;mas realmente o que me trás a este post é um video que encontrei que explica como instalar o Joomla sobre o XAMPP para testes na máquina local... muito bom o video.&lt;br /&gt;&lt;a href="http://www.truveo.com/Installing-XAMPP-Joomla-15/id/2850399800"&gt;http://www.truveo.com/Installing-XAMPP-Joomla-15/id/2850399800&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3290253857144475296?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3290253857144475296/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3290253857144475296' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3290253857144475296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3290253857144475296'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/instalar-joomla-15-sobre-o-xampp.html' title='Instalar Joomla 1.5 &quot;sobre&quot; o XAMPP'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/SFl3MQeo3vI/AAAAAAAAADw/IqC0IwpsrXU/s72-c/xampp.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-4304162849014270213</id><published>2008-06-17T21:23:00.002+01:00</published><updated>2008-06-17T21:31:37.811+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>Atalho para iniciar Servicos Windows</title><content type='html'>Ter mais que uma instância do SQL Server a iniciar cada vez que o Windows inicia não é vida, estar muitas vezes a ir aos Serviços arrancar com a instância pretendida também não... solução?&lt;br /&gt;&lt;br /&gt;Pode-se criar um atalho para iniciar ou parar serviços Windows usando&lt;br /&gt;&lt;br /&gt;net stop "service"&lt;br /&gt;net start "service"&lt;br /&gt;&lt;br /&gt;Exemplo usando SQL Server:&lt;br /&gt;&lt;br /&gt;net start  "SQL Server (&lt;span style="font-style:italic;"&gt;instanceName&lt;/span&gt;)" &lt;br /&gt;ou seja: net start "SQL Server (MSSQLSERVER)" &lt;br /&gt;&lt;br /&gt;net start MSSQLSERVER também serve&lt;br /&gt;&lt;br /&gt;no registo têm uma lista dos serviços da vossa máquina em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-4304162849014270213?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/4304162849014270213/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=4304162849014270213' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4304162849014270213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4304162849014270213'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/atalho-para-iniciar-servicos-windows.html' title='Atalho para iniciar Servicos Windows'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7534626341170561952</id><published>2008-06-15T12:29:00.002+01:00</published><updated>2008-06-15T12:37:17.840+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Thumbnails a sério (92% + pequenos)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hY-ANnxqzeg/SFT9NQJ4T7I/AAAAAAAAADg/j7UBHePk2bs/s1600-h/thumb.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_hY-ANnxqzeg/SFT9NQJ4T7I/AAAAAAAAADg/j7UBHePk2bs/s400/thumb.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5212069072891039666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Num dos trabalhos para a faculdade tivemos necessidade de gerar thumbnails e a julgar pelo tamanho final com que ficavam (em KBs) parecia-nos uma boa solução...&lt;br /&gt;Agora já não parece....porquê? porque eles podem ficar 90% mais pequenos e com a mesma qualidade....&lt;br /&gt; &lt;a href="http://www.thebrainparasite.com/post/Creating-great-thumbnails-in-ASPNET.aspx"&gt;Vejam este post!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7534626341170561952?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7534626341170561952/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7534626341170561952' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7534626341170561952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7534626341170561952'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/thumbnails-srio-92-pequenos.html' title='Thumbnails a sério (92% + pequenos)'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hY-ANnxqzeg/SFT9NQJ4T7I/AAAAAAAAADg/j7UBHePk2bs/s72-c/thumb.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-4924737390589561326</id><published>2008-06-10T17:08:00.004+01:00</published><updated>2008-06-10T17:30:03.098+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Ligar ao SQLServer no Vista</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hY-ANnxqzeg/SE6pVFuywkI/AAAAAAAAADY/4zqJpWYA_ew/s1600-h/sql2.PNG"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_hY-ANnxqzeg/SE6pVFuywkI/AAAAAAAAADY/4zqJpWYA_ew/s400/sql2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5210287998695031362" /&gt;&lt;/a&gt;&lt;br /&gt;Alguns utilizadores do Windows Vista podem ter problemas em conseguir aceder ao SQLServer, mesmo sendo administradores, mesmo tendo ido ao SQL Server Configuration Manager activar os Named Pipes.&lt;br /&gt;&lt;br /&gt;O problema é que ter privilégios de administrador no Windows Vista não garante privilégios de administrador no SQL Server.&lt;br /&gt;&lt;br /&gt;Solução? é necessário instalar o SQL Server Service Pack 2, que trás um utilitário chamado SQL Server 2005 User Provisioning Tool for Vista, que permite adicionar os privilégios necessários para correr o SQL Server na conta de administrador.&lt;br /&gt;Salvo erro, esta tool corre automáticamente no final da instalação do SP2, se não correr está disponível no SQL Server Surface Area Configuration onde diz "Add New Administrator"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hY-ANnxqzeg/SE6nJ9cM9hI/AAAAAAAAADQ/bRqMrqk5xx0/s1600-h/sql.PNG"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_hY-ANnxqzeg/SE6nJ9cM9hI/AAAAAAAAADQ/bRqMrqk5xx0/s400/sql.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5210285608467756562" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-4924737390589561326?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/4924737390589561326/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=4924737390589561326' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4924737390589561326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4924737390589561326'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/ligar-ao-sqlserver-no-vista.html' title='Ligar ao SQLServer no Vista'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hY-ANnxqzeg/SE6pVFuywkI/AAAAAAAAADY/4zqJpWYA_ew/s72-c/sql2.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-511043212422012867</id><published>2008-06-07T15:39:00.003+01:00</published><updated>2008-06-07T15:50:05.564+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Vídeo'/><title type='text'>DIY (Do it yourself) em video</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.wonderhowto.com"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/SEqfuJLMntI/AAAAAAAAADI/kXFxg15ZXKc/s400/wht.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5209151534093082322" /&gt;&lt;/a&gt;&lt;br /&gt;Com mais de 12500 vídeos, divididos por 35 categorias e 431 Sub Categorias aqui está um grande agregador de vídeos faça-você-mesmo.&lt;br /&gt;&lt;br /&gt;Agregador porque não permite o upload de vídeos mas sim a sua catalogação após o utilizador o ter carregado noutro site como, por exemplo, o Youtube.&lt;br /&gt;&lt;br /&gt;Em termos de informática tem algumas coisinhas, ideal para quem quer dar os primeiros passos em determinados assuntos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-511043212422012867?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/511043212422012867/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=511043212422012867' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/511043212422012867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/511043212422012867'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/diy-do-it-yourself-em-video.html' title='DIY (Do it yourself) em video'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/SEqfuJLMntI/AAAAAAAAADI/kXFxg15ZXKc/s72-c/wht.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8187225339433470724</id><published>2008-06-06T21:15:00.004+01:00</published><updated>2008-06-06T21:23:33.411+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Música'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>WebRadio com definição de humor</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hY-ANnxqzeg/SEmbx14CERI/AAAAAAAAADA/09RfRuB8DNg/s1600-h/musicovery.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/SEmbx14CERI/AAAAAAAAADA/09RfRuB8DNg/s400/musicovery.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5208865724608680210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora já pode ter musica sem parar... ok, não é novidade... e tipo de musica consoante o seu humor? Mais calmo, mais energético, mais positivo, menos positivo... ainda permite uma escolha entre quase todos os tipos de música... nada como experimentar.&lt;br /&gt;O serviço chama-se Musicovery e está disponivel em &lt;a href="http://musicovery.com"&gt;musicovery.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8187225339433470724?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8187225339433470724/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8187225339433470724' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8187225339433470724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8187225339433470724'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/webradio-com-definio-de-humor.html' title='WebRadio com definição de humor'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/SEmbx14CERI/AAAAAAAAADA/09RfRuB8DNg/s72-c/musicovery.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-4555932031908927362</id><published>2008-06-04T20:27:00.002+01:00</published><updated>2008-06-04T20:34:22.411+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Visual LINQ Query Builder</title><content type='html'>&lt;a href="http://code.msdn.microsoft.com/vlinq"&gt;Visual LINQ Query Builder&lt;/a&gt; é um add-in para o Visual Studio 2008 Designer que ajuda a criar queries LINQ to SQL.&lt;br /&gt;&lt;br /&gt;No separador de Download existe um vídeo que ensina utilizar o vlinq, aconselho vivamente a sua visualização. Notei que este add-in usa muitos recursos da máquina, de resto tem muito bom "aspecto".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hY-ANnxqzeg/SEbsn539JSI/AAAAAAAAACY/9crbW4dEAlA/s1600-h/vlinq2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/SEbsn539JSI/AAAAAAAAACY/9crbW4dEAlA/s400/vlinq2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5208110189395125538" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-4555932031908927362?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/4555932031908927362/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=4555932031908927362' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4555932031908927362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4555932031908927362'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/visual-linq-query-builder.html' title='Visual LINQ Query Builder'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/SEbsn539JSI/AAAAAAAAACY/9crbW4dEAlA/s72-c/vlinq2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3620938852960265697</id><published>2008-06-04T20:24:00.002+01:00</published><updated>2008-06-04T20:26:04.062+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippet'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Code Snippet Editor para Visual Basic 2008</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hY-ANnxqzeg/SERrpKU59UI/AAAAAAAAACQ/KIwfsx4UOA0/s1600-h/Snippet.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_hY-ANnxqzeg/SERrpKU59UI/AAAAAAAAACQ/KIwfsx4UOA0/s400/Snippet.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5207405424037983554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para quem quiser criar os seus próprios code snippet &lt;a href="http://msdn.microsoft.com/en-us/vbasic/bb973770.aspx"&gt;aqui&lt;/a&gt; fica um editor.&lt;br /&gt; Permite criar novos e editar os existentes. Muito bom. Não se esqueçam de definir o atalho senão não funciona :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3620938852960265697?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3620938852960265697/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3620938852960265697' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3620938852960265697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3620938852960265697'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/code-snippet-editor-para-visual-basic_04.html' title='Code Snippet Editor para Visual Basic 2008'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hY-ANnxqzeg/SERrpKU59UI/AAAAAAAAACQ/KIwfsx4UOA0/s72-c/Snippet.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-604720437393713457</id><published>2008-06-01T19:25:00.003+01:00</published><updated>2008-06-01T19:35:03.972+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Ambiente Desenvolvimento'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hY-ANnxqzeg/SELqnGIU4tI/AAAAAAAAACI/QDNKg9umqLI/s1600-h/TeaserSharpDevelop2OnVista.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/SELqnGIU4tI/AAAAAAAAACI/QDNKg9umqLI/s400/TeaserSharpDevelop2OnVista.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5206982076575048402" /&gt;&lt;/a&gt;&lt;br /&gt;Agora já podes desenvolver aplicações para a plataforma NET sem precisares de comprar o Visual Studio, o NET framework SDK possui os compiladores C# e VB.NET que permitem a compilação de código NET. O único problema é que não tens o IDE de desenvolvimento do Visual Studio, mas isto pode ser resolvido se efectuares o download do SharpDevelop. O programa é um IDE totalmente gratuito (Open Source) que após instalado permite o desenvolvimento e compilação de código C# e VB.NET. Para isso, é preciso antes efectuares o download da infra-estrutura da nova plataforma de programação da Microsoft, o .NET framework 1.1 SDK . O SharpDevelop permite editar, correr e compilar aplicações nas duas linguagens. Um detalhe interessante: o produto oferece pacotes de idiomas adicionais. Assim, é possível converter a interface do programa para o português. Um &lt;a href="http://sharpdevelop.net/OpenSource/SD/Download/"&gt;download &lt;/a&gt;altamente recomendado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-604720437393713457?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/604720437393713457/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=604720437393713457' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/604720437393713457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/604720437393713457'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/06/agora-j-podes-desenvolver-aplicaes-para.html' title=''/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/SELqnGIU4tI/AAAAAAAAACI/QDNKg9umqLI/s72-c/TeaserSharpDevelop2OnVista.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7445321228230967699</id><published>2008-05-19T15:08:00.002+01:00</published><updated>2008-05-19T15:13:51.293+01:00</updated><title type='text'>As 11 melhor dicas para uma apresentação técnica</title><content type='html'>&lt;a href="http://www.hanselman.com/blog/11TopTipsForASuccessfulTechnicalPresentation.aspx"&gt;Aqui ficam umas dicas muito boas&lt;/a&gt;, principalmente para os meus colegas que vão fazer as apresentações de projecto no ISEL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7445321228230967699?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7445321228230967699/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7445321228230967699' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7445321228230967699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7445321228230967699'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/05/as-11-melhor-dicas-para-uma-apresentao.html' title='As 11 melhor dicas para uma apresentação técnica'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7505326850887122014</id><published>2008-05-19T12:06:00.004+01:00</published><updated>2008-05-19T12:20:26.382+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='Extensões'/><title type='text'>Meta as extensões a funcionar no Firefox 3</title><content type='html'>Muitas daquelas extensões que são "indispensáveis" à nossa navegação diária ainda não foram actualizadas para a versão 3RC. Mas existe uma forma de as meter a funcionar... atenção que podem surgir erros e falhas riscos de segurança visto as extensões não estarem actualizadas para esta versão... eu decidi correr o risco...&lt;br /&gt;&lt;br /&gt;Escreva &lt;span style="font-weight:bold;"&gt;about:config&lt;/span&gt; na barra de endereços do Firefox e clique no botão "I'll be careful, I promise!".&lt;br /&gt;Clique direito em qualquer lado e escolha New&gt;Boolean. Escreva como nome no novo valor de configuração &lt;span style="font-weight:bold;"&gt;extensions.checkCompatibility&lt;/span&gt; e atribua-lhe &lt;span style="font-weight:bold;"&gt;false&lt;/span&gt;.&lt;br /&gt;Crie um outro par booleano chamado &lt;span style="font-weight:bold;"&gt;extensions.checkUpdateSecurity&lt;/span&gt; e atribua-lhe &lt;span style="font-weight:bold;"&gt;false &lt;/span&gt;também.&lt;br /&gt;Reinicie o Firefox.&lt;br /&gt;&lt;br /&gt;Na página de pesquisa de extensões pode continuar a dizer que não é compatível com a versão mas se visitarem a página de versões de cada extensão já dará para as instalarem. Boa navegação...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7505326850887122014?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7505326850887122014/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7505326850887122014' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7505326850887122014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7505326850887122014'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/05/meta-as-extenses-funcionar-no-firefox-3.html' title='Meta as extensões a funcionar no Firefox 3'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3600161840884653119</id><published>2008-05-18T23:04:00.005+01:00</published><updated>2008-05-18T23:46:07.767+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Forms'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Forms Google Suggest User Control (v1)</title><content type='html'>Visto que o método de Suggest das TextBox não apresenta todas as funcionalidades requerida num dos meus projectos decidi criar um User Control de modo a resolver esse "problemas". &lt;br /&gt;Os problemas eram básicamente dois: &lt;br /&gt;- De vez em quando apanhava uma excepção ao mudar a colecção AutoCompleteCustomSource, umas vezes por escrever muito depressa, outras por escrever palavras que não existiam na base de dados...  &lt;br /&gt;- E a principal razão foi, mesmo que a colecção tenha mais resultados só apareçem no suggest aquelas que começam exatamente   da mesma forma que o texto na TextBox. Por exemplo, se na TextBox estiver "Avenida Liberdade" mesmo que a customCollection tenha "Avenida da Liberdade" essa opção não aparece... e tem que aparecer...&lt;br /&gt;Como dizia um professor meu...não existe? cria-se!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hY-ANnxqzeg/SDCwxpod6UI/AAAAAAAAAB4/WB6p2kDV_ww/s1600-h/ctrl.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_hY-ANnxqzeg/SDCwxpod6UI/AAAAAAAAAB4/WB6p2kDV_ww/s400/ctrl.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5201851936648587586" /&gt;&lt;/a&gt;&lt;br /&gt;Este controlo é composto por uma TexBox e uma ListBox que estão sensiveis aos seguintes eventos:&lt;br /&gt;TextBox_TextChanged - Mostra a ListBox, visto que por defeito está escondida;&lt;br /&gt;TextBox_KeyDown - Detecta "Enter" e Seta para baixo de modo a iniciar a navegação por tecla na ListBox.&lt;br /&gt;ListBox_MouseClick - Detecta um click num dos resultados de modo a actualizar a TextBox e esconder a ListBox&lt;br /&gt;ListBox_KeyDow - Detecta o "Enter" para actualizar a TextBox e esconder a ListBox&lt;br /&gt;&lt;br /&gt;Foram implementados 2 métodos adicionais:&lt;br /&gt;ListBoxHide - Esconder a ListBox (visible=false e SendToBack() no contentor Parent (importante))&lt;br /&gt;ListBoxShow- Mostra a ListBox  (visible=true e BringToFront() no contentor Parent (importante))&lt;br /&gt;&lt;br /&gt;De modo a esconder a ListBox ao perder o focus foi ainda adicionado o UserControl_Leave.&lt;br /&gt;&lt;br /&gt;Assim pré-resolvida a parte visual do controlo, falta agora toda a parte de actualização das sugestões. Irei criar ainda um mecanismo de notificações de modo a este controlo poder notificar outros que a TextBox já tem um valor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3600161840884653119?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3600161840884653119/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3600161840884653119' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3600161840884653119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3600161840884653119'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/05/forms-google-suggest-user-control-v1.html' title='Forms Google Suggest User Control (v1)'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hY-ANnxqzeg/SDCwxpod6UI/AAAAAAAAAB4/WB6p2kDV_ww/s72-c/ctrl.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-4500394892743639488</id><published>2008-05-17T19:10:00.006+01:00</published><updated>2008-05-17T19:42:33.897+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>RockScroll</title><content type='html'>Hoje descobri o que pode ser uma grande ajuda no desenvolvimento, especialmente naquelas ficheiros em que o código fonte é extremamente extenso.&lt;br /&gt;&lt;br /&gt;RockScroll extende a scrollbar do Visual Studio para mostrar um thumbnail do código.&lt;br /&gt;Melhor ainda, esse thumbnail é syntax highlighted. Podemos navegar mais fácilmente pelo código porque esta pequena maravilha marca os break points, bookmarks e ainda código comentado.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hY-ANnxqzeg/SC8jWpod6TI/AAAAAAAAABw/LEpDTbJjSwM/s1600-h/RockScroll_5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/SC8jWpod6TI/AAAAAAAAABw/LEpDTbJjSwM/s400/RockScroll_5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5201414966675892530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Funciona em Visual Studio 2005 e 2008. Trata-se de apenas um DLL e pode ser desactivado removendo o visto na respectiva caixa em Tools|AddIns.&lt;br /&gt;A meu ver só tem um problemazinho, não tem em conta o "collapse to definitions", por exemplo, se tiverem uma region e carregarem no botãozinho de menos para ocultar o código, o RockScroll não tem isso em conta e perde alguma da sua funcionalidade, de resto...5 estrelas.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/RockScrollv1.msi"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-4500394892743639488?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/4500394892743639488/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=4500394892743639488' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4500394892743639488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4500394892743639488'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/05/rockscroll.html' title='RockScroll'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/SC8jWpod6TI/AAAAAAAAABw/LEpDTbJjSwM/s72-c/RockScroll_5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-2186975756777881198</id><published>2008-05-17T18:54:00.003+01:00</published><updated>2008-05-17T19:02:13.646+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 2008 e .NET 3.5 SP1 Beta</title><content type='html'>Bem, a Microsoft não tem parado, já nos apresenta uma vasta lista de correcções e novidades para o VS2008 e .NET 3.5&lt;br /&gt;Ainda pensei em enunciar as novidade mas elas são mais que muitas, sugiro que visitem estes 2 posts, principalmente o primeiro.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx"&gt;Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta &lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/webdevtools/archive/2008/05/12/visual-studio-2008-sp1-beta.aspx"&gt;Visual Studio 2008 SP1 Beta&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-2186975756777881198?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/2186975756777881198/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=2186975756777881198' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2186975756777881198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2186975756777881198'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/05/visual-studio-2008-e-net-35-sp1-beta.html' title='Visual Studio 2008 e .NET 3.5 SP1 Beta'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7490267061702930542</id><published>2008-05-17T18:28:00.004+01:00</published><updated>2008-05-17T18:43:41.726+01:00</updated><title type='text'>Novo Look</title><content type='html'>Decidi introduzir mais conteúdo(lixo) no meu blogue, mas antes disso decidi mudar o seu aspecto. Encontrei um &lt;a href="http://mashable.com/2008/05/17/70-plus-new-and-beautiful-blogger-templates/"&gt;site com 70 novos templates para o Blogger&lt;/a&gt; e escolhi um. Um template é um ficheiro xml que poderá ser carregado na parte de edição de HTML do Esquema. Fiz o upload do ficheiro e depois "diverti-me" a edita-lo de modo a ficar à minha maneira.&lt;br /&gt;Se alguém se quiser aventurar tenha em atenção que pode perder alguns widgets que tenha no modelo original.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7490267061702930542?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7490267061702930542/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7490267061702930542' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7490267061702930542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7490267061702930542'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/05/novo-look.html' title='Novo Look'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6383705465072512230</id><published>2008-04-10T09:01:00.002+01:00</published><updated>2008-04-10T09:12:43.933+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opinião'/><title type='text'>Violência nas Escolas</title><content type='html'>Agora fala-se muito de violência nas escolas, os alunos agridem os professores por causa de telemóveis... o problema não são as escolas nem os professores, porquê? a escola tem como principal objectivo a formação académica dos alunos, a educação interpessoal tem que vir de base, tem que ser ensinada pelos pais. Na minha opinião não compete aos professores educar os jovens, compete-lhes sim ensinar as matérias das disciplinas.&lt;br /&gt;Agora a escola, como instituição, não devia permitir comportamentos destes e punir os alunos de forma exemplar e principalmente chamar os pais e responsabilizá-los pela educação dos filhos. Quem é que fez os filhos? agora eduquem-nos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6383705465072512230?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6383705465072512230/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6383705465072512230' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6383705465072512230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6383705465072512230'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/04/violncia-nas-escolas.html' title='Violência nas Escolas'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-4399950990846422308</id><published>2008-03-31T23:13:00.010+01:00</published><updated>2008-04-05T12:40:13.499+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='Opera'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'></title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_hY-ANnxqzeg/R_FiYYDFR_I/AAAAAAAAABg/j1Nxge4fQGY/s1600-h/develop.jpg"&gt;&lt;img style="MARGIN: 0px auto 10px; CURSOR: hand; DISPLAY: block; TEXT-ALIGN: center" id="BLOGGER_PHOTO_ID_5184032816991913970" border="0" alt="" src="http://2.bp.blogspot.com/_hY-ANnxqzeg/R_FiYYDFR_I/AAAAAAAAABg/j1Nxge4fQGY/s400/develop.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sendo um fã do &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;Firebug&lt;/span&gt; para o Firefox, hoje descobri uma novidade muito interessante que virá com o Internet &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;Explorer&lt;/span&gt; 8, a "&lt;a href="http://blogs.msdn.com/ie/archive/2008/03/07/improved-productivity-through-internet-explorer-8-developer-tools.aspx"&gt;&lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;Developer&lt;/span&gt; &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;Tools&lt;/span&gt;&lt;/a&gt;". Sigam o link e vejam por vós próprios, na minha opinião tem muito bom aspecto. Porquê o interesse? o &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-error"&gt;IE&lt;/span&gt; continua a ser um dos &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-error"&gt;browsers&lt;/span&gt; mais utilizados, logo faz todo o sentido as aplicações serem &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-corrected"&gt;compatíveis&lt;/span&gt; com o mesmo. O Visual S&lt;span id="SPELLING_ERROR_7" class="blsp-spelling-error"&gt;tudio&lt;/span&gt; 2008 já trás umas novidades em relação a debug javascript, mas para quem não o usa tem aqui uma bela ferramenta, digo eu :)&lt;br /&gt;&lt;br /&gt;Tal como o Miguel alertou, já existe esta ferramenta para a versão 6 e 7 do IE, que pelo que li até está mais completa que a que vem na 8 Beta.&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en"&gt;Aqui está ela.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-4399950990846422308?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/4399950990846422308/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=4399950990846422308' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4399950990846422308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4399950990846422308'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/sendo-um-f-do-firebug-para-o-firefox.html' title=''/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hY-ANnxqzeg/R_FiYYDFR_I/AAAAAAAAABg/j1Nxge4fQGY/s72-c/develop.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8849097099694009305</id><published>2008-03-31T22:45:00.007+01:00</published><updated>2008-03-31T23:25:15.479+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='Opera'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>ACID3</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_hY-ANnxqzeg/R_FgqIDFR7I/AAAAAAAAABA/n3u4rQkhaiM/s1600-h/acid3.bmp"&gt;&lt;img style="MARGIN: 0px auto 10px; CURSOR: hand; DISPLAY: block; TEXT-ALIGN: center" id="BLOGGER_PHOTO_ID_5184030922911336370" border="0" alt="" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/R_FgqIDFR7I/AAAAAAAAABA/n3u4rQkhaiM/s200/acid3.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Cá está a nova versão (&lt;a href="http://en.wikipedia.org/wiki/Acid3"&gt;&lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;ACID&lt;/span&gt;3&lt;/a&gt;) de testes à compatibilidade dos &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;browsers&lt;/span&gt; com os standards. Se quiserem correr o teste no vosso browser...está &lt;a href="http://acid3.acidtests.org/"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sciactive.com/main/index.php?option=com_content&amp;amp;task=view&amp;amp;id=133&amp;amp;Itemid=1"&gt;Neste endereço&lt;/a&gt; podem ver alguns dos resultados obtidos em várias versões de vários &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;browsers&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Não podia deixar de fazer alguns testes tendo obtido os seguintes resultados:&lt;br /&gt;Firefox 3 Beta5 &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;Pre&lt;/span&gt; : 71/100&lt;br /&gt;Opera 9.5 Beta : 61/100&lt;br /&gt;Opera 9.26 : 46/100&lt;br /&gt;&lt;span id="SPELLING_ERROR_4" class="blsp-spelling-error"&gt;IE&lt;/span&gt; 8 Beta : 18/100&lt;br /&gt;&lt;span id="SPELLING_ERROR_5" class="blsp-spelling-error"&gt;IE&lt;/span&gt; 7 : 14/100&lt;br /&gt;&lt;br /&gt;Para os mais &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-corrected"&gt;desatentos&lt;/span&gt;, uma das "grandes" novidades em termos de evolução do &lt;span id="SPELLING_ERROR_7" class="blsp-spelling-error"&gt;IE&lt;/span&gt;8 seria correr o teste &lt;span id="SPELLING_ERROR_8" class="blsp-spelling-error"&gt;ACID&lt;/span&gt;2 na perfeição. Vamos ver se &lt;span id="SPELLING_ERROR_9" class="blsp-spelling-corrected"&gt;também&lt;/span&gt; melhoram qualquer coisa em relação ao &lt;span id="SPELLING_ERROR_10" class="blsp-spelling-error"&gt;ACID&lt;/span&gt;3.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8849097099694009305?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8849097099694009305/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8849097099694009305' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8849097099694009305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8849097099694009305'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/acid3.html' title='ACID3'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/R_FgqIDFR7I/AAAAAAAAABA/n3u4rQkhaiM/s72-c/acid3.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8991169479147132441</id><published>2008-03-13T23:52:00.003Z</published><updated>2008-03-14T01:06:25.499Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apresentação'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>MIX 2008 - Videos das Apresentações</title><content type='html'>&lt;a href="http://www.visitmix.com/"&gt;&lt;img style="MARGIN: 0px auto 10px; WIDTH: 200px; CURSOR: hand; DISPLAY: block; TEXT-ALIGN: center" border="0" alt="" src="http://mschnlnine.vo.llnwd.net/d1/App_Themes/Mix/images/banners/logo.gif" /&gt;&lt;/a&gt;Vejam todas as &lt;a href="http://www.visitmix.com/"&gt;apresentações feitas no MIX 08&lt;/a&gt;. O MIX é um evento sobre a Internet criado pela Microsoft, que ocorre em Las Vegas, onde se reúnem muitos programadores e designers entre outros profissionais da Web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8991169479147132441?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8991169479147132441/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8991169479147132441' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8991169479147132441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8991169479147132441'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/mix-2008-videos-das-apresentaes.html' title='MIX 2008 - Videos das Apresentações'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-3288568437509238016</id><published>2008-03-07T17:10:00.003Z</published><updated>2008-03-07T17:15:52.297Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Combustiveis'/><category scheme='http://www.blogger.com/atom/ns#' term='Preços'/><title type='text'>Mais Gasolina</title><content type='html'>&lt;div style="text-align: justify;"&gt;O &lt;a href="http://www.maisgasolina.com/"&gt;Mais Gasolina&lt;/a&gt; é um directório interactivo de postos de abastecimento de Portugal, com a localização de vários postos, o preço actualizado dos combustíveis e outras informações úteis aos automobilistas.&lt;br /&gt;&lt;br /&gt;Pode assim de uma forma simples através da navegação num mapa ou num directório de distritos, concelhos e localidades encontrar um posto de abastecimento ou comparar preços para encontrar o posto mais barato da sua região.&lt;br /&gt;&lt;br /&gt;O Mais Gasolina depende da cooperação e boa vontade de todos os seus utilizadores e respectiva administração. Os utilizadores registados podem contribuir para o Mais Gasolina sugerindo novos postos, actualizando postos já no directório e actualizando os preços dos combustíveis. Para garantir a veracidade destes dados a equipa do Mais Gasolina monitoriza em background as alterações que são efectuadas pelos nossos membros tentado garantir a qualidade e veracidade dos dados aqui apresentados.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-3288568437509238016?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/3288568437509238016/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=3288568437509238016' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3288568437509238016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/3288568437509238016'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/mais-gasolina.html' title='Mais Gasolina'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-2658930073708196044</id><published>2008-03-06T16:01:00.005Z</published><updated>2008-03-07T01:24:37.222Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emprego'/><title type='text'>ITJobs</title><content type='html'>&lt;a href="http://itjobs.com.pt"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/R9AZo82fsdI/AAAAAAAAAA4/ZPIjFE3lEB0/s320/itjobs.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5174664163168858578" /&gt;&lt;/a&gt;&lt;br /&gt;Já que no último post falei de emprego deixo-vos aqui um site que o sr. Miguel me passou, muitas ofertas na área de tecnologias de informação.&lt;br /&gt;&lt;a href="http://itjobs.com.pt"&gt;ITJobs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-2658930073708196044?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/2658930073708196044/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=2658930073708196044' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2658930073708196044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2658930073708196044'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/itjobs.html' title='ITJobs'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/R9AZo82fsdI/AAAAAAAAAA4/ZPIjFE3lEB0/s72-c/itjobs.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-4094410529743166801</id><published>2008-03-06T02:19:00.003Z</published><updated>2008-03-07T17:14:49.711Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogs'/><category scheme='http://www.blogger.com/atom/ns#' term='Emprego'/><title type='text'>Cantinho do Emprego</title><content type='html'>&lt;div style="text-align: justify;"&gt;"Descubra um mundo de oportunidades de emprego e esclareça as suas dúvidas legais!"&lt;br /&gt;&lt;br /&gt;Se há blogs temáticos muito bons, este deve ser um deles. Estava aqui a tentar criar uma descrição para o blog mas só mesmo vendo é que se pode perceber o quanto este blog pode ser útil. Veja o &lt;a href="http://cantinhodoemprego.blogspot.com/"&gt;Cantinho do Emprego&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-4094410529743166801?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/4094410529743166801/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=4094410529743166801' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4094410529743166801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4094410529743166801'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/cantinho-do-emprego.html' title='Cantinho do Emprego'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7692800407969616805</id><published>2008-03-06T01:08:00.005Z</published><updated>2008-03-31T23:25:53.650+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><title type='text'>Internet Explorer 8 Beta</title><content type='html'>&lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/images%5Cie8betalogo.gif"&gt;&lt;img style="MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; DISPLAY: block; TEXT-ALIGN: center" border="0" alt="" src="http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/images%5Cie8betalogo.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Já está disponivel para &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/Install.htm"&gt;download&lt;/a&gt; a versão Beta1, podem consultar &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/NewFeatures.htm"&gt;aqui &lt;/a&gt;algumas das novidades presentes bem como outras informações.&lt;br /&gt;A instalação demorou algum tempo, o processo de instalação faz uma procura por software malicioso no sistema operativo e faz ainda o download e instalação de actualizações ao próprio IE8.&lt;br /&gt;Para já a novidade mais gritante pareçe ser o cumprimento das normas, já realizei o teste ACID2 tendo obtido um resultado perfeito. Em termos de memória utilizada e velocidade pareçe-me igual á versão anterir. Como curiosidade, vem com um botão que permite emular a versão anterior (IE7).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7692800407969616805?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7692800407969616805/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7692800407969616805' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7692800407969616805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7692800407969616805'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/internet-explorer-8-beta.html' title='Internet Explorer 8 Beta'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7454622310318280470</id><published>2008-03-04T14:21:00.003Z</published><updated>2008-03-04T14:33:03.234Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Framework .NET</title><content type='html'>&lt;a href="http://aspnet.4guysfromrolla.com/articles/112107-1.aspx"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://aspnet.4guysfromrolla.com/images/NewIn35.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Para os mais distraídos aqui fica uma imagem que resume o estado actual da framework .NET&lt;br /&gt;Ao clicar na imagem podem ver o artigo onde está inserida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7454622310318280470?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7454622310318280470/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7454622310318280470' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7454622310318280470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7454622310318280470'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/framework-net.html' title='Framework .NET'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7181240190578689951</id><published>2008-03-04T13:16:00.005Z</published><updated>2008-03-04T13:24:55.088Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Identidade Digital'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>OpenID</title><content type='html'>Acabei à pouco uma mini tradução na &lt;a href="http://wiki.openid.net/Main_Page_(pt)"&gt; wiki &lt;/a&gt;do OpenID. Qualquer frase menos bem comentem :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_hY-ANnxqzeg/R81MciCs9UI/AAAAAAAAAAs/v3P4j4hXcXY/s1600-h/opne.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_hY-ANnxqzeg/R81MciCs9UI/AAAAAAAAAAs/v3P4j4hXcXY/s200/opne.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5173875599976756546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O que é OpenID? &lt;br /&gt;&lt;br /&gt;OpenID é uma estrutura aberta, descentralizada, livre para a identidade digital de utilizadores. OpenID começa com o conceito que qualquer utilizador pode-se identificar a ele próprio na Internet da mesma maneira que os WebSites o fazem, através de um URI (chamado também de URL ou endereço web). Já que os URIs fazem parte do núcleo da arquitectura Web, fornecem uma forma sólida para a identidade de utilizadores. &lt;br /&gt;&lt;br /&gt;A primeira peça da estrutura de OpenID é a autenticação - como você prova a posse de um URI. Hoje, os WebSites requerem nomes de utilizador e palavras passe no início de uma sessão, o que significa que muitos utilizadores usam a mesma senha em toda parte. Com a autenticação OpenID, o seu nome de utilizador é o seu URI, a sua palavra passe (ou outras credenciais) estão seguramente armazenadas no seu servidor OpenID (que pode ser disponibilizado por você mesmo, ou usar um fornecedor de terceiros). &lt;br /&gt;&lt;br /&gt;Para iniciar sessão num website que suporte OpenID (mesmo um que nunca tenha visitado) é apenas necessário introduzir o seu endereço (URI) OpenID. O website irá redireccioná-lo para o seu servidor OpenID de modo a poder fazer a sua autenticação independentemente de que tipo são as suas credenciais. Uma vez autenticado, o se servidor OpenID irá redireccioná-lo para o website original assim como enviar as credenciais para o autenticar. Ao usar Autenticação Forte quando necessário, a estrutura OpenID pode ser utilizada para todo o tipo de transacções, ambas estendendo o uso de um puro login único bem como da sensibilidade dos dados partilhados. &lt;br /&gt;&lt;br /&gt;Além de autenticatição, a estrutura OpenID fornece os meios para os utilizadores partilharem outros componentes da sua identidade digital. Utilizando a especificação emergente da troca do atributo de OpenID, os utilizadores podem controlar claramente que partes de informação podem ser partilhadas pelo seu fornecedor da identidade, tal como o seu nome, morada, ou número de telefone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7181240190578689951?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7181240190578689951/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7181240190578689951' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7181240190578689951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7181240190578689951'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/openid.html' title='OpenID'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hY-ANnxqzeg/R81MciCs9UI/AAAAAAAAAAs/v3P4j4hXcXY/s72-c/opne.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7370851401827666857</id><published>2008-03-01T15:18:00.004Z</published><updated>2008-03-31T23:27:45.064+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apresentação'/><category scheme='http://www.blogger.com/atom/ns#' term='Identidade Digital'/><title type='text'>Isto sim é uma apresentação</title><content type='html'>&lt;a href="http://identity20.com/media/OSCON2005/img/dick_oscon_poster.jpg"&gt;&lt;/a&gt;&lt;br /&gt;Vejam &lt;a href="http://identity20.com/media/OSCON2005/"&gt;esta apresentação&lt;/a&gt; sobre Identidade 2.0&lt;br /&gt;Simplesmente espectacular.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7370851401827666857?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7370851401827666857/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7370851401827666857' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7370851401827666857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7370851401827666857'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/03/isto-sim-uma-apresentao.html' title='Isto sim é uma apresentação'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-2719549427366095632</id><published>2008-02-29T01:43:00.005Z</published><updated>2008-03-01T14:00:09.643Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ebooks'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><title type='text'>Microsoft oferece e-books sobre AJAX, Silverlight e LINQ</title><content type='html'>&lt;a href="http://www.microsoft.com/mspress/books/12285.aspx"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 200px; CURSOR: hand" alt="" src="http://www.microsoft.com/MSPress/books/imgt/12285.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/MSPress/books/10966.aspx"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 200px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.microsoft.com/MSPress/books/imgt/10966.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/MSPress/books/10725.aspx"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand" alt="" src="http://www.microsoft.com/MSPress/books/imgt/10725.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Já os tenho. Depois de se inscreverem na newsletter apareçem os links para download.&lt;br /&gt;Download e informações &lt;a href="http://www.microsoft.com/learning/vstudio/2008/default.mspx"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Desafio&lt;/strong&gt;&lt;/span&gt;: É possivel ainda obter o livro "Introducing SQLServer 2008", quem é que consegue descobrir como? digo já que é fácil!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-2719549427366095632?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/2719549427366095632/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=2719549427366095632' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2719549427366095632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/2719549427366095632'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/microsoft-oferece-e-books-sobre-ajax.html' title='Microsoft oferece e-books sobre AJAX, Silverlight e LINQ'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6025112756958247757</id><published>2008-02-28T20:32:00.006Z</published><updated>2008-03-31T23:26:36.061+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='Opera'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Testes ACID2</title><content type='html'>&lt;div align="left"&gt;ACID2 é um teste que permite avaliar a compatibilidade de um browser com os standards definidos para a web. O objectivo do teste é que o browser apresente as palavras "Hello World" seguido de um smile amarelo. Os mais curiosos podem consultar &lt;a href="http://www.webstandards.org/action/acid2/guide/"&gt;aqui&lt;/a&gt; o que significa cada parte do smile.&lt;br /&gt;&lt;br /&gt;Decidi testar os 3 browsers que tenho instalados e cá estão os resultados:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_hY-ANnxqzeg/R8cdM6kDsOI/AAAAAAAAAAU/AgA7kwxjZN4/s1600-h/IE.GIF"&gt;&lt;img style="MARGIN: 0px auto 10px; CURSOR: hand; DISPLAY: block; TEXT-ALIGN: center" id="BLOGGER_PHOTO_ID_5172134804774432994" border="0" alt="" src="http://4.bp.blogspot.com/_hY-ANnxqzeg/R8cdM6kDsOI/AAAAAAAAAAU/AgA7kwxjZN4/s200/IE.GIF" /&gt; &lt;p align="center"&gt;&lt;/a&gt;Internet Explorer 7&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href="http://1.bp.blogspot.com/_hY-ANnxqzeg/R8cdUKkDsPI/AAAAAAAAAAc/YFHPPItqxLs/s1600-h/Firefox.GIF"&gt;&lt;img style="MARGIN: 0px auto 10px; CURSOR: hand; DISPLAY: block; TEXT-ALIGN: center" id="BLOGGER_PHOTO_ID_5172134929328484594" border="0" alt="" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/R8cdUKkDsPI/AAAAAAAAAAc/YFHPPItqxLs/s200/Firefox.GIF" /&gt; &lt;p align="center"&gt;&lt;/a&gt;Firefox 2.0.0.12&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href="http://4.bp.blogspot.com/_hY-ANnxqzeg/R8cd26kDsQI/AAAAAAAAAAk/FXmSIv0wZSs/s1600-h/Opera.GIF"&gt;&lt;img style="MARGIN: 0px auto 10px; CURSOR: hand; DISPLAY: block; TEXT-ALIGN: center" id="BLOGGER_PHOTO_ID_5172135526328938754" border="0" alt="" src="http://4.bp.blogspot.com/_hY-ANnxqzeg/R8cd26kDsQI/AAAAAAAAAAk/FXmSIv0wZSs/s200/Opera.GIF" /&gt; &lt;p align="center"&gt;&lt;/a&gt;Opera 9.26 &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Sim, o meu browser favorito é o Opera :)&lt;br /&gt;Para quem quiser testar a sua versão pode passar por&lt;a href="http://www.webstandards.org/files/acid2/test.html"&gt; aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para finalizar, a equipa de desenvolvimento do IE já anunciou que a versão 8 já faz correctamente o render do smile, o mesmo se passando para a versão 3 do Firefox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6025112756958247757?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6025112756958247757/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6025112756958247757' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6025112756958247757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6025112756958247757'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/testes-acid2.html' title='Testes ACID2'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hY-ANnxqzeg/R8cdM6kDsOI/AAAAAAAAAAU/AgA7kwxjZN4/s72-c/IE.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-4014127554437666522</id><published>2008-02-27T12:05:00.004Z</published><updated>2008-02-27T12:20:47.191Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grátis'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Telemóveis'/><title type='text'>SMS grátis para todas as redes</title><content type='html'>&lt;a href="http://www.rede4.pt"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://www.rede4.pt/ZeroG.Site/images/logo_sellingline.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pode ter acesso a 400 SMS grátis para todas as redes, enviadas através da internte claro, não há milagres.&lt;br /&gt;Fui ao &lt;a href="http://www.rede4.pt"&gt;site da Rede4&lt;/a&gt;, inscrevi-me e enviaram-me gratuitamente para casa um cartão da rede deles, é só metê-lo num telemóvel desbloqueado ou da Optimus para activar o cartão. &lt;br /&gt;Como não existem carregamentos obrigatórios ainda não fiz nenhum carregamento mas passo a ter disponível todos os meses 400 SMS grátis para todas as redes enviados através do site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-4014127554437666522?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/4014127554437666522/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=4014127554437666522' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4014127554437666522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/4014127554437666522'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/sms-grtis-para-todas-as-redes.html' title='SMS grátis para todas as redes'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8308605269118897390</id><published>2008-02-27T01:56:00.002Z</published><updated>2008-02-27T02:08:33.702Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Sun adquire MySQL</title><content type='html'>&lt;a href="http://www.mysql.com/common/logos/logo_mysql_sun.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://www.mysql.com/common/logos/logo_mysql_sun.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Recebi um email da Sun onde me informavam da realização desta compra, talvez a compra do ano.&lt;br /&gt;&lt;br /&gt;A opinião dos &lt;a href="http://pinguinsmagicos.blogs.sapo.pt/25045.html"&gt;Pinguins Mágicos&lt;/a&gt; é que esta aquisição pode ter um impacto grande no mercado de bases de dados.&lt;br /&gt;Apesar de ser um mercado onde a Oracle lidera indiscutivelmente, o facto de MySQL ter agora a Sun por trás e ter um modelo diferente, pode a 3 / 5 anos fazer cócegas à Oracle.&lt;br /&gt;Quanto à utilização do MySQL em plataformas Web o impacto não será tão grande visto que o MySQL já hoje é líder.&lt;br /&gt;Curiosamente, tanto nos grandes (Flickr, Sapo, Google,...) como nos pequenos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8308605269118897390?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8308605269118897390/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8308605269118897390' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8308605269118897390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8308605269118897390'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/sun-adquire-mysql.html' title='Sun adquire MySQL'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-8486243132267086315</id><published>2008-02-26T13:17:00.003Z</published><updated>2008-02-26T13:23:06.585Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Cifrar Connection String em .NET</title><content type='html'>Ontem o Sr. Miguel estava-me a dizer que deviamos ter cifrado a connection string no ficheiro de configuração, pois, é verdade, quem tiver acesso ao ficheiro de configuração tem acesso á informação de autenticação... not good&lt;br /&gt;&lt;br /&gt;Então mas... como é que se faz que já não me lembro? take a look&lt;br /&gt;&lt;a href="http://labnet.cc.isel.ipl.pt/blogs/ncorreia/archive/2007/03/29/connection-strings-configuration-files-and-encryption.aspx"&gt;Connection Strings, Configuration Files and Security&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-8486243132267086315?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/8486243132267086315/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=8486243132267086315' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8486243132267086315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/8486243132267086315'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/cifrar-connection-string-em-net.html' title='Cifrar Connection String em .NET'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6795220757309942735</id><published>2008-02-26T13:02:00.003Z</published><updated>2008-02-26T13:15:09.480Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>NHibernate</title><content type='html'>Criar uma camada de acesso a dados em .NET é chato, os métodos são quase iguais, a classe fica enorme... possível solução? NHibernate&lt;br /&gt;&lt;br /&gt;Andei a pesquisar sobre o assunto e encontrei um post muito bom, como não sou de cópias aqui está o link&lt;br /&gt;&lt;a href="http://labnet.cc.isel.ipl.pt/blogs/ncorreia/archive/2007/03/24/primeiros-passos-com-o-nhibernate.aspx"&gt;Primeiros passos com NHibernate&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6795220757309942735?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6795220757309942735/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6795220757309942735' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6795220757309942735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6795220757309942735'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/nhibernate.html' title='NHibernate'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-7236032241436974603</id><published>2008-02-25T01:45:00.006Z</published><updated>2008-02-28T21:00:57.013Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hacking'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='Opera'/><title type='text'>OperaTor - Navegar Anónimo</title><content type='html'>O OperaTor permite navegar anónimamente pela Internet e além disso é portável.&lt;br /&gt;&lt;br /&gt;Resulta da união de 3 aplicações: Opera Browser, The Onion Router e Privoxy.&lt;br /&gt;&lt;br /&gt;Útil como browser quando estamos a navegar num computador público ou quando nos queremos armar em hackers, não vá a coisa correr bem e descobrirem quem somos :)&lt;br /&gt;&lt;br /&gt;link para o &lt;a href="http://archetwist.com/opera/operator"&gt;OperaTor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A navegação é naturalmente mais lenta já que o browser não guarda cache e tem que efectuar pedidos pelo proxy. Por cada vez que abrimos o browser temos um endereço IP novo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-7236032241436974603?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/7236032241436974603/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=7236032241436974603' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7236032241436974603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/7236032241436974603'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/operator-navegar-annimo.html' title='OperaTor - Navegar Anónimo'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6907033933840078639</id><published>2008-02-24T21:32:00.003Z</published><updated>2008-02-24T21:42:56.379Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Adsense'/><title type='text'>20 Melhores Dicas Adsense</title><content type='html'>Ao criar esta amostra de blog decidi também ver testar o Adsense da Google.&lt;br /&gt;&lt;br /&gt;Aqui ficam algumas dicas que encontrei num post algures&lt;br /&gt;&lt;a href="http://www.tolnetwork.com/2008/20-melhores-dicas-adsense/"&gt;20 Melhores Dicas Adsense&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6907033933840078639?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6907033933840078639/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6907033933840078639' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6907033933840078639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6907033933840078639'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/20-melhores-dicas-adsense.html' title='20 Melhores Dicas Adsense'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-842065320955929720</id><published>2008-02-23T15:32:00.004Z</published><updated>2008-02-23T21:37:13.975Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ebooks'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Ebooks</title><content type='html'>&lt;a href="http://www.flazx.com/themes/simpleflazx/images/logo_text.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://www.flazx.com/themes/simpleflazx/images/logo_text.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Site com muitos livros sobre Informática e Tecnologias de Informação entre outros.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;a href="http://www.flazx.com"&gt;www.FlazX.com&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-842065320955929720?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/842065320955929720/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=842065320955929720' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/842065320955929720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/842065320955929720'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/ebooks.html' title='Ebooks'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-6769121016243074804</id><published>2008-02-22T22:35:00.005Z</published><updated>2008-02-23T10:40:13.393Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>Alterar localizações do "Save As"</title><content type='html'>&lt;a href="http://www.simplehelp.net/images/saveas/saveas00a.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://www.simplehelp.net/images/saveas/saveas00a.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ontem apanhei-me a pensar "epá, ter que estar sempre a procurar aquela pasta sempre que quero guardar um torrent é chato, deve dar para alterar estes atalhos"&lt;br /&gt;fui ao amigo Google e cá está uma solução:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.simplehelp.net/2007/07/28/how-to-set-custom-shortcuts-in-the-windows-xp-save-as-dialog-box/"&gt;How to set custom shortcuts in the windows XP 'Save as' dialog box&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS: não altera os atalho do Office.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-6769121016243074804?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/6769121016243074804/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=6769121016243074804' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6769121016243074804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/6769121016243074804'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/alterar-localizaes-do-save-as.html' title='Alterar localizações do &quot;Save As&quot;'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-804130958777477080</id><published>2008-02-22T21:35:00.004Z</published><updated>2008-02-22T21:53:07.809Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Ciclo .NET Framework 3.5 Development</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_hY-ANnxqzeg/R79EJKkDsNI/AAAAAAAAAAM/0QYi-dN070E/s1600-h/webcast.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hY-ANnxqzeg/R79EJKkDsNI/AAAAAAAAAAM/0QYi-dN070E/s320/webcast.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169925821489721554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://go.microsoft.com/?linkid=8364330"&gt;A Microsoft está a promover um novo ciclo de webcasts, deste vez sobre versão 3.5 da Framework .NET&lt;/a&gt;&lt;br /&gt;Mesmo que na hora não possam assistir, podem posteriormente fazer o download da sessão.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Windows Presentation Foundation&lt;/b&gt; (2 sessões)&lt;br /&gt;WPF (Windows Presentation Foundation, também conhecido como Avalon) simplifica a construção de aplicações cliente ricas, uma vez que facilita a integração de media, documentos e UI. &lt;br /&gt;Sessão 1 || 26-Fev-2008   &lt;br /&gt;Sessão 2 || 27-Fev-2008   &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Windows Communication Foundation&lt;/b&gt; (2 sessões)&lt;br /&gt;Windows Communication Foundation (WCF) fornece uma framework única para a construção rápida de aplicações seguras, fiáveis e orientadas a serviços. &lt;br /&gt;Sessão 3 || 28-Fev-2008   &lt;br /&gt;Sessão 4 || 29-Fev-2008   &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Windows Workflow Foundation&lt;/b&gt; (2 sessões)&lt;br /&gt;O Windows Workflow Foundation é constituído por um modelo de programação, um conjunto de ferramentas de desenvolvimento e depuração, e um motor de execução que permite desenvolver com eficácia soluções de negócio em ambiente Windows.&lt;br /&gt;Sessão 5 || 03-Mar-2008   &lt;br /&gt;Sessão 6 || 04-Mar-2008&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-804130958777477080?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/804130958777477080/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=804130958777477080' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/804130958777477080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/804130958777477080'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/webcast4share-ciclo-net-framework-35.html' title='Ciclo .NET Framework 3.5 Development'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hY-ANnxqzeg/R79EJKkDsNI/AAAAAAAAAAM/0QYi-dN070E/s72-c/webcast.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4093896476040251204.post-5966573270356988653</id><published>2008-02-22T20:56:00.012Z</published><updated>2008-02-22T22:06:01.786Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>.NET em Português</title><content type='html'>&lt;img src="http://weblogs.pontonetpt.com/images/PontoNetPt_Weblogs.gif" /&gt;&lt;br /&gt;A comunidade PontoNetPT está direccionada a todos os programadores que trabalhem com a plataforma .NET&lt;br /&gt;A comunidade foi criada com o objectivo de unir todos os programadores que falem Português, que pretendam aprender ou que já estejam a desenvolver aplicações com esta plataforma. Partilhe as suas experiências e conhecimentos.&lt;br /&gt;&lt;br /&gt;O website apresenta noticias, eventos, destaques,etc.&lt;br /&gt;&lt;a href="http://www.pontonetpt.com"&gt;http://www.pontonetpt.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mas o que achei mais interessante foi a parte dos blogs&lt;br /&gt;&lt;a href="http://weblogs.pontonetpt.com"&gt;http://weblogs.pontonetpt.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4093896476040251204-5966573270356988653?l=vitortomaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vitortomaz.blogspot.com/feeds/5966573270356988653/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4093896476040251204&amp;postID=5966573270356988653' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/5966573270356988653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4093896476040251204/posts/default/5966573270356988653'/><link rel='alternate' type='text/html' href='http://vitortomaz.blogspot.com/2008/02/net-em-portugus.html' title='.NET em Português'/><author><name>vITOR</name><uri>http://www.blogger.com/profile/00301842159839207459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
