<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>PontoNetPT WebLogs</title><link>http://weblogs.pontonetpt.com/</link><description>Weblogs sobre .NET em portugues</description><generator>Dottext 0.94</generator><item><title>Apontamentos de um Programador</title><link>http://weblogs.pontonetpt.com/jf_rocha/posts/29571.aspx</link><pubDate>Mon, 29 Jun 2009 23:40:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/jf_rocha/posts/29571.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/jf_rocha/comments/29571.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/jf_rocha/comments/commentRss/29571.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/jf_rocha/posts/29571.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/jf_rocha/trackback.aspx?ID=29571</trackback:ping><source url="http://weblogs.pontonetpt.com/jf_rocha/rss.aspx">João Filipe Rocha</source><description>&lt;p&gt;&lt;img src="http://edspumps.com/UploadMediaFiles/image//REMINDER - 01.gif" width="165" height="109" /&gt; &lt;/p&gt; &lt;p&gt;Para quem tem a profissão de Programador, por vezes torna-se dificil decorar tanta informação. Aqui ficam algums apontamentos que podem nos facilitar a vida.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Atalhos das Teclas para  &lt;ul&gt; &lt;li&gt;Visual Studio 2005 &lt;a href="http://download.microsoft.com/download/e/7/9/e79cce22-b196-4b9f-9ea7-b1a21f5342e9/VCSharp_2005_color.pdf"&gt;C#&lt;/a&gt; | &lt;a href="http://download.microsoft.com/download/d/6/5/d65efda0-cf25-4720-8013-b3080586c5bb/VB_2005_color.pdf"&gt;VB.NET&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Visual Studio 2008 &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3de5f902a8-5bb5-4cc6-907e-472809749973%26DisplayLang%3den"&gt;C#&lt;/a&gt; | &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=10&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d255b8cf1-f6bd-4b55-bb42-dd1a69315833%26DisplayLang%3den"&gt;VB.NET&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Code Snippets &lt;/li&gt; &lt;ul&gt; &lt;li&gt;Visual Studio &lt;a href="http://john-sheehan.com/blog/wp-content/uploads/vs2005-code-snippets.pdf"&gt;2005&lt;/a&gt; | &lt;a href="http://john-sheehan.com/blog/cheatsheets/visual-studio-2008-csharp-snippets.htm"&gt;2008&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;a href="http://www.sqldatabasetutorial.com/data/sqlcheetsheet.pdf"&gt;SQL Server&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/NET35_Namespaces_Poster_LORES.pdf"&gt;Namespaces Framework 3.5&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://acodingfool.typepad.com/blog/pdf/jquery_1.3_cheatsheet_v1.pdf"&gt;JQuery&lt;/a&gt; 1.3 &lt;/li&gt;&lt;li&gt;&lt;a href="http://snook.ca/files/prototype_1.5.0_snookca.pdf"&gt;Prototype Lib&lt;/a&gt; 1.5.0 &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.explainth.at/downloads/jsquick.pdf"&gt;Javascript&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mulberrytech.com/quickref/xslt2.pdf"&gt;XSLT&lt;/a&gt; 2.0 / &lt;a href="http://www.mulberrytech.com/quickref/xpath2.pdf"&gt;XPath&lt;/a&gt; 2.0 &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gosquared.com/images/help_sheets/HTML%20Help%20Sheet.pdf"&gt;HTML&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://regexlib.com/CheatSheet.aspx"&gt;Regex&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Espero que ajude…&lt;/p&gt;</description><dc:creator>João Filipe Rocha</dc:creator></item><item><title>I&amp;rsquo;m a VB</title><link>http://weblogs.pontonetpt.com/joaocardoso/posts/29413.aspx</link><pubDate>Sat, 27 Jun 2009 00:52:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/joaocardoso/posts/29413.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/joaocardoso/comments/29413.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/joaocardoso/comments/commentRss/29413.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/joaocardoso/posts/29413.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/joaocardoso/trackback.aspx?ID=29413</trackback:ping><source url="http://weblogs.pontonetpt.com/joaocardoso/rss.aspx">João Cardoso</source><description>&lt;p&gt;A Microsoft lançou um site com alguns videos de alguns MVP’s (não necessáriamente de VB.NET) que entrevistaram no ultimo summit. A iniciativa “I’m a VB” pretende dar a conhecer ao mundo reais histórias de membros activos e reconhecidos na comunidade que usam VB e que se reconhecem na linguagem.&lt;/p&gt; &lt;p&gt;Uma nota de especial destaque para as intrevenções de Julie Lerman, Deborah Kurada e Bill Vaughn. Alias foram as primeiras que vi dado serem pessoas que conheço bem destas andanças :)&lt;/p&gt; &lt;p&gt;&lt;font color="#333333"&gt;Podem ver &lt;a href="http://msdn.microsoft.com/en-us/vbasic/dd776132.aspx" target="_blank"&gt;aqui&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#333333"&gt;Ah e claro… se vss são VB… então partilhem a vossa história.&lt;/font&gt;&lt;/p&gt;</description><dc:creator>João Cardoso</dc:creator></item><item><title>Realidade aumentada</title><link>http://weblogs.pontonetpt.com/mauriciojunior/posts/29411.aspx</link><pubDate>Fri, 26 Jun 2009 12:47:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/mauriciojunior/posts/29411.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/mauriciojunior/comments/29411.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/mauriciojunior/comments/commentRss/29411.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/mauriciojunior/posts/29411.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/mauriciojunior/trackback.aspx?ID=29411</trackback:ping><source url="http://weblogs.pontonetpt.com/mauriciojunior/rss.aspx">Mauricio Junior - MCP, MCAD Microsoft .NET</source><description>Realidade aumentada, &lt;br /&gt;
O Jornal da Globo fez uma matéria falando sobre a realidade aumentada... .
&lt;br /&gt;
Depois de ver o vídeo, teste você mesmo com seu computador. &lt;br /&gt;&lt;br /&gt;

&lt;object width="480" height="392"&gt;&lt;param value="http://video.globo.com/Portal/videos/cda/player/player.swf" name="movie" /&gt;&lt;param value="high" name="quality" /&gt;&lt;param value="midiaId=1056877&amp;amp;autoStart=false&amp;amp;width=480&amp;amp;height=392" name="FlashVars" /&gt;&lt;embed width="480" height="392" flashvars="midiaId=1056877&amp;amp;autoStart=false&amp;amp;width=480&amp;amp;height=392" type="application/x-shockwave-flash" quality="high" src="http://video.globo.com/Portal/videos/cda/player/player.swf"&gt;&lt;/embed&gt;&lt;/object&gt;</description><dc:creator>Mauricio Junior</dc:creator></item><item><title>Al&amp;ocirc; Al&amp;ocirc; Google</title><link>http://weblogs.pontonetpt.com/jf_rocha/posts/29410.aspx</link><pubDate>Fri, 26 Jun 2009 10:15:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/jf_rocha/posts/29410.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/jf_rocha/comments/29410.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/jf_rocha/comments/commentRss/29410.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/jf_rocha/posts/29410.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/jf_rocha/trackback.aspx?ID=29410</trackback:ping><source url="http://weblogs.pontonetpt.com/jf_rocha/rss.aspx">João Filipe Rocha</source><description>&lt;p&gt;&lt;img src="https://www.google.com/accounts/grandcentral/icon_01.gif" width="200" height="62" /&gt;  &lt;/p&gt;&lt;p&gt;O Google vai lançar uma aplicação denominada &lt;a href="https://www.google.com/voice" target="_blank"&gt;Google Voice&lt;/a&gt;, onde será possível efectuar a gestão de todos os nossos números telefone.  &lt;/p&gt;&lt;p&gt;Ao registar o serviço é nos atribuído um numero Google, e podemos associar todos os nossos telefones a esse numero e gerir todos os nossos telefonemas e efectuar enumeras &lt;a href="http://www.google.com/googlevoice/about.html" target="_blank"&gt;operações&lt;/a&gt;, tais como:  &lt;/p&gt;&lt;p&gt;Quando alguem nos liga para o nosso numero Google, dependendo das configurações, a chamada pode ser reencaminhada para um dos nossos telefones, para todos os telefones, ou simplesmente para o voicemail.  &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Vejam os videos (em Inglês)  &lt;/p&gt;&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/m4Q9MJdT5Ds&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/m4Q9MJdT5Ds&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;embed src="http://www.youtube.com/v/oFVXAqFNgic&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;</description><dc:creator>João Filipe Rocha</dc:creator></item><item><title>Links da Semana (22-26) – Novidades!</title><link>http://weblogs.pontonetpt.com/chaves/posts/29409.aspx</link><pubDate>Fri, 26 Jun 2009 08:49:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/chaves/posts/29409.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/chaves/comments/29409.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/chaves/comments/commentRss/29409.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/chaves/posts/29409.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/chaves/trackback.aspx?ID=29409</trackback:ping><source url="http://weblogs.pontonetpt.com/chaves/rss.aspx">Chaves</source><description>&lt;p&gt;Calor? Frio? Ou tecnologia? Vamos então para mais uma listinha de links da semana: bestof’s, portfólios, novidades, etc. &lt;/p&gt;
&lt;p&gt;Para esta semana gostava de introduzir uma nova “rubrica”… A Foto da semana :)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Portfólio&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pluralportugal.pt"&gt;www.pluralportugal.pt&lt;/a&gt; – (by SixandCo (fullsix group)) O portal da Plural Entertainment, é o mais recente trabalho feito em Silverlight 2, cá em Portugal, por Portugueses! :) Num site que pretende reunir os trabalhos e as informações desta produtora, demonstra bem como é possível dar outro tipo experiência de utilização a todos os seus visitantes. SmoothStreamming enabled! Portanto pode-se ver on-line filmes de alta qualidade (HD), utilizando o sistema de negociação da largura de banda disponível.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://team.silverlight.net/announcements/wimbledon-is-here-and-we-rsquo-re-giving-the-championships-to-you-live/"&gt;NBC aposta no Silverlight&lt;/a&gt; – Agora com as novas temporadas dos vários desportos, a nbc anunciou que irá transmitir jogos dos campeões de Ténis, utilizando Smooth streamming com HD&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.shinedraw.com/3d-illusion/6-new-silverlight-image-rotators/"&gt;6 Image Rotators&lt;/a&gt; – Mais um conjunto de 6 controlos para criar efeitos nas imagens.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://silverlightforbusiness.net/2009/06/23/pushing-data-from-the-server-to-silverlight-3-using-a-duplex-wcf-service/"&gt;Duplex WCF Service para Silverlight&lt;/a&gt; – Como utilizar um serviço desta natureza nas aplicações Silverlight.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2009/06/23/quick-tip-linq-amp-data-binding-notifications.aspx"&gt;LINQ binding em Silverlight e WPF&lt;/a&gt; – para quem utiliza LINQ eis mais um conjunto de dicas para a sua utilização em Sl e WPF.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.visifire.com/silverlight_charts_gallery.php"&gt;Visifire e gráficos em SL&lt;/a&gt; – Já sabíamos que a visifire tinha alguns controlos muito jeitosos…. principalmente para gráficos. Lançaram mais um conjunto de gráficos desta vez, para o sector financeiro.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/silverlightshow/~3/nX8tw7SJoqM/Parametric-Shader-Effect-in-Silverlight-3-Beta-1.aspx"&gt;Parametric Shader Effect in SL3&lt;/a&gt; – mais umas dicas sobre as novas funcionalidades do sl3 no que respeita a vídeo effects.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.componentart.com/community/competition2009/"&gt;&lt;img title="ComponentArt Silverlight Coding Competition" border="0" alt="ComponentArt Silverlight Coding Competition" src="http://s3.amazonaws.com/storage.timheuer.com/componentartcodingcomp.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A não perder!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/expression/archive/2009/06/19/deep-zoom-composer-june-2009-preview.aspx"&gt;DeepZoom Composer June Preview!!&lt;/a&gt; – A não perder este peek na nova versão do DeepZoom.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/delay/archive/2009/06/25/wpf-charting-it-s-official-june-2009-release-of-the-wpf-toolkit-is-now-available.aspx"&gt;WPF toolkit? – Ah pois! achavam que era só para o Silverlight??&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.reflectionit.nl/Blog/default.aspx?guid=887a2bb4-62a6-4bb4-bc5b-4b4e91beff9a"&gt;Image Slider&lt;/a&gt; – Ora aqui está mais um excelente controlo para se colocar num site, banner, ou outro lugar que achem bem. Neste artigo existe a versão Silverlight e a de jQuery.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dicas e Utilitários:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.aspnetpro.com/newsletterarticle/2009/02/asp200902jk_l/asp200902jk_l.asp"&gt;Express your self&lt;/a&gt; – Como é que o Expression Studio pode fazer sentido no desenvolvimento das aplicações ou qual o seu papel no ciclo de produção do mesmo.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/silverlightshow/~3/F4YKQ-aNRo0/Attaching-Silverlight-3-Behaviors-in-C.aspx"&gt;Como “colar” comportamentos em Silverlight3 com C#&lt;/a&gt; – Mais um bom artigo que nos conta algumas técnicas bem preciosas e úteis.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/silverlightshow/~3/_Oj5bUWxizA/IIS-Security-Settings-for-Silverlight-2.0.aspx"&gt;Configurações de Segurança no IIS pra Silverlight 2&lt;/a&gt; – Sem dúvida e muito útil mais umas dicas e sugestões para as devidas configurações no IIS das aplicações em Silverlight 2. clientaccesspolicy …. e companhias….&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A foto da semana&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xamlpt.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/chaves/toraboragirl_5F00_1D509E79.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="tora-bora-girl-" border="0" alt="tora-bora-girl-" src="http://xamlpt.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/chaves/toraboragirl_5F00_thumb_5F00_63615B8C.jpg" width="244" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a title="http://photography.nationalgeographic.com/photography/enlarge/tora-bora-girl.html" href="http://photography.nationalgeographic.com/photography/enlarge/tora-bora-girl.html"&gt;http://photography.nationalgeographic.com/photography/enlarge/tora-bora-girl.html&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;-----------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.msteched.com/europe/Public/default.aspx"&gt;&lt;img alt="Microsoft Tech•Ed Europe 2009" src="http://www.msteched.com/resources/Content_Files/TechEd_Europe_Blog_L_MVPs.gif" width="180" height="199" /&gt;&lt;/a&gt;&lt;a href="http://www.microsoft.com/portugal/msdn/msdnflash/default.mspx"&gt;&lt;img border="0" alt="Subscreva a Newsletter" src="http://www.microsoft.com/library/media/2070/portugal/msdn/media/flashbanner.png" width="168" height="102" /&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Chaves</dc:creator></item><item><title>Quanto custa o Windows 7</title><link>http://weblogs.pontonetpt.com/jf_rocha/posts/29407.aspx</link><pubDate>Thu, 25 Jun 2009 17:11:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/jf_rocha/posts/29407.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/jf_rocha/comments/29407.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/jf_rocha/comments/commentRss/29407.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/jf_rocha/posts/29407.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/jf_rocha/trackback.aspx?ID=29407</trackback:ping><source url="http://weblogs.pontonetpt.com/jf_rocha/rss.aspx">João Filipe Rocha</source><description>&lt;p&gt;&lt;img src="http://www.maximumpc.com/files/u69/Windows_7_Boxes.png" width="265" height="151" /&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Ja foram anunciados os &lt;a href="http://windowsteamblog.com/blogs/windows7/archive/2009/06/25/announcing-the-windows-7-upgrade-option-program-amp-windows-7-pricing-bring-on-ga.aspx" target="_blank"&gt;preços&lt;/a&gt; (para os EUA) do novo sistema operativo da Microsoft, o &lt;a href="http://windows.microsoft.com/en-US/windows7/products/home?os=nonwin7" target="_blank"&gt;Windows 7&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Para as versões de upgrade (XP ou Vista) são:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;Windows 7 Home Premium (Upgrade):&lt;/b&gt; $199.99 &lt;/li&gt;&lt;li&gt;&lt;b&gt;Windows 7 Professional (Upgrade):&lt;/b&gt; $199.99 &lt;/li&gt;&lt;li&gt;&lt;b&gt;Windows 7 Ultimate (Upgrade):&lt;/b&gt; $219.99&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Para as versões completas são:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;Windows 7 Home Premium (Versão completa):&lt;/b&gt; $199.99  &lt;/li&gt;&lt;li&gt;&lt;b&gt;Windows 7 Professional (Versão completa):&lt;/b&gt; $299.99  &lt;/li&gt;&lt;li&gt;&lt;b&gt;Windows 7 Ultimate (Versão completa):&lt;/b&gt; $319.99&lt;/li&gt;&lt;/ul&gt;</description><dc:creator>João Filipe Rocha</dc:creator></item><item><title>A Seguran&amp;ccedil;a Essencial</title><link>http://weblogs.pontonetpt.com/jf_rocha/posts/29405.aspx</link><pubDate>Tue, 23 Jun 2009 23:33:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/jf_rocha/posts/29405.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/jf_rocha/comments/29405.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/jf_rocha/comments/commentRss/29405.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/jf_rocha/posts/29405.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/jf_rocha/trackback.aspx?ID=29405</trackback:ping><source url="http://weblogs.pontonetpt.com/jf_rocha/rss.aspx">João Filipe Rocha</source><description>&lt;p&gt;&lt;img src="http://www.orn.usace.army.mil/history/images/castle_gold.jpg" width="286" height="141" /&gt; &lt;/p&gt; &lt;p&gt;A Microsoft acaba de disponibilizar para download o seu sistema Anti-Vírus, denominado &lt;a href="http://www.microsoft.com/security_essentials/"&gt;Microsoft Security Essentials&lt;/a&gt; (antigo Moro). &lt;/p&gt;&lt;p&gt;Este sistema está numa versão Beta &lt;strike&gt;e para efectuar o download é necessário estar registado no programa &lt;a href="http://connect.microsoft.com/securityessentials"&gt;Connect&lt;/a&gt; e tornar-se num beta-tester deste sistema&lt;strike&gt;. &lt;/strike&gt;&lt;/strike&gt;&lt;/p&gt;&lt;p&gt;As vantagens deste anti-vírus, é de ter pouco impacto na performance do sistema, e por ser gratuito. &lt;/p&gt;
&lt;p&gt;
O numero de inscrições no connect foram excedidas 
&lt;/p&gt;</description><dc:creator>João Filipe Rocha</dc:creator></item><item><title>Registo Aberto Para O Microsoft Tech•Ed Europe 2009</title><link>http://weblogs.pontonetpt.com/pjmorgado/posts/29403.aspx</link><pubDate>Mon, 22 Jun 2009 16:44:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/pjmorgado/posts/29403.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/pjmorgado/comments/29403.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/pjmorgado/comments/commentRss/29403.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/pjmorgado/posts/29403.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/pjmorgado/trackback.aspx?ID=29403</trackback:ping><source url="http://weblogs.pontonetpt.com/pjmorgado/rss.aspx">Paulo Morgado</source><description>&lt;div style="background-image: url(http://www.msteched.com/resources/Content_Files/EU_Header_screen.jpg); width: 950px; background-repeat: no-repeat; height: 240px"&gt;   &lt;div style="margin: 20px 20px 19px; width: 180px; height: 199px"&gt;&lt;a style="width: 180px; height: 199px" title="Microsoft Tech•Ed Europe 2009" href="http://www.msteched.com/europe/Public/default.aspx"&gt;&lt;img style="border-bottom-style: none; border-right-style: none; width: 180px; border-top-style: none; height: 199px; border-left-style: none" alt="Microsoft Tech•Ed Europe 2009" src="http://www.msteched.com/resources/Content_Files/TechEd_Europe_Blog_L_MVPs.gif" width="180" height="199" /&gt; &lt;/a&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p align="justify"&gt;Está aberto o &lt;a title="Microsoft Tech•Ed Europe 2009 Registration Info" href="http://www.msteched.com/europe/public/registration-info.aspx" target="_blank"&gt;Registo&lt;/a&gt; para o &lt;a title="Microsoft Tech•Ed Europe 2009" href="http://www.msteched.com/europe/Public/default.aspx" target="_blank"&gt;Microsoft Tech•Ed Europe 2009&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Há algumas novidades este ano:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Devio aos pedidos dos participantes ambos eventos (Developer e IT Pro) coexistirão (9-13 Novembro).&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;O sítio web de registo usa &lt;a title="Windows Live™ ID" href="https://accountservices.passport.net/reg.srf?wa=wsignin1.0&amp;amp;rpsnv=10&amp;amp;ct=1244819257&amp;amp;rver=5.0.3265.0&amp;amp;wp=MCMBI&amp;amp;wreply=https%3A//profile.microsoft.com/RegSysProfileCenter/ContactPref.aspx?LCID=1033&amp;amp;cb=Lcid=1033&amp;amp;Brand=microsoft&amp;amp;SubBrand=profile%20center&amp;amp;cru=https%3A//profile.microsoft.com/RegSysProfileCenter/ContactPref.aspx?LCID=1033&amp;amp;id=42814&amp;amp;sl=1&amp;amp;lc=2057" target="_blank"&gt;Windows Live™ ID&lt;/a&gt; para autenticação.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Os preços de registo são baseados numa aproximação por camadas de modo que quanto mais cedo for efectuado o registo, mais barato fica.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Rasões Para Ir Ao Tech·Ed Europe 2009&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p align="left"&gt;Todos podem aprender sobre:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;MICROSOFT WINDOWS 7 – O sistema operativo da Microsoft para a próxima geração&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;O &lt;a title="Microsoft Windows" href="http://cli.gs/Microsoft-Windows" target="_blank"&gt;&lt;/a&gt;&lt;a title="Microsoft Windows 7" href="http://cli.gs/Microsoft-Windows-7" target="_blank"&gt;Windows 7&lt;/a&gt; trás importantes avanços para a produtividade dos utilizadores, segurança e gestão.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;MICROSOFT OFFICE e novas formas de maximizar a produtividade do negócio&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;O percurso do Office System pode ajudar a instalação, adopção e desenvolvimento de aplicações de produtividade para o negócio.DEVELOPERS CAN LEARN MORE ABOUT:&lt;/p&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p align="left"&gt;Programadores e Arquitectos podem aprender sobre:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Aplicações na &lt;em&gt;cloud&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como a Azure™ Services Platform reduz a necessidade de aquisição anticipada de tecnhologia, e permite aos programadores e arquitectos criar, com rapidez e facilidade, aplicações que correm na &lt;em&gt;cloud&lt;/em&gt;.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Segurança que ajuda a cortar custos no suporte às aplicações&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como a tecnologia Microsoft’s ForeFront pode tornar os ambientes IT seguros com maior rapidez e a escrever código mais seguro e elimiar custos de suporte a aplicações.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;TRUTH about maximizing deployments and search&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como o SharePoint pode ajudar a criar um repositório central, maximizando as instalações e pesquisa e eliminando multiplas versões e mal-entendidos acerca da origem da “verdade” em qualquer project.&lt;/p&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Profissionais de IT podem aprender sobre:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Virtualização que ajuda a podenciar investimentos existentes&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Obtenham um entendimento profundo das actuais tecnologias de virtualização de baixo custo e como podem ajudar a tirar o maior partido dos investimentos existentes em &lt;em&gt;software&lt;/em&gt; e &lt;em&gt;hardware&lt;/em&gt;.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Hospedagem para economias de escala&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como tirar partido dos &lt;em&gt;hosted services&lt;/em&gt; Microsoft para ampliar a oferta de comunicações e colaboração dos departamenteos de IT. E baixar os custos de &lt;em&gt;hardware&lt;/em&gt;, gestão e consumo de energia.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Unificação para redução de custos e aumento de eficácia&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Comunicações verdadeiramente unificadas que formam uma infra-estrutura única de comunicações.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Maximizar a infrastrutura IT existente para se fazer mais om o que se tem&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como tirar o máximo partido da infra-estrutura de IT existente.&lt;/p&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;</description><dc:creator>Paulo Morgado</dc:creator></item><item><title>Web service com Informações do Xbox Live</title><link>http://weblogs.pontonetpt.com/helderjsm/posts/29401.aspx</link><pubDate>Sun, 21 Jun 2009 20:46:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/helderjsm/posts/29401.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/helderjsm/comments/29401.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/helderjsm/comments/commentRss/29401.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/helderjsm/posts/29401.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/helderjsm/trackback.aspx?ID=29401</trackback:ping><source url="http://weblogs.pontonetpt.com/helderjsm/rss.aspx">Helder Magalhães</source><description>&lt;p&gt;Ao ver as tendências actuais nos fóruns, esta semana que passou andei à procura de uma forma de criar uma tag personalizada para os utilizadores do trokas.&lt;/p&gt;

&lt;p&gt;Assim sendo queria uma forma de poder integrar as informações do xbox live com as informações do site numa imagem só para que os utilizadores não tenham que andar com 3000 tags atrás das costas.&lt;/p&gt;

&lt;p&gt;Andei à procura e para a Xbox encontrei que existe um programa especial para grandes websites, infelizmente não obtive resposta para poder aderir a este programa. No entanto tive o prazer de encontrar um webservice que gentilmente fornece estas informações indirectamente em: http://duncanmackenzie.net/Blog/put-up-a-rest-api-for-xbox-gamertag-data.&lt;/p&gt;

&lt;p&gt;Também andei à procura de uma forma de fazer o mesmo com dados da PSN (Playstation Network) mas obter resposta da Sony ou da Playstation (seja Portuguesa ou Inglesa) é um problema e uma frustração não me admira que até recentemente as grandes produtoras se tenham virado mais para a XBOX.&lt;/p&gt;

&lt;p&gt;De qualquer forma para quem está curioso em relação ao resultado aqui fica:&lt;/p&gt;

&lt;p style="text-align:center"&gt;
&lt;a target="_blank" href="http://www.trokas.pt/utilizador.aspx/1/perfil/"&gt;&lt;img alt="helderjsm" src="http://www.trokas.pt/utilizador.aspx/1/gamertag/" /&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Helder Magalhães</dc:creator></item><item><title>MIX&amp;rsquo;09 &amp;ndash; Reviewing &amp;ndash; Building Microsoft Silverlight Controls</title><link>http://weblogs.pontonetpt.com/mutley/posts/29400.aspx</link><pubDate>Sun, 21 Jun 2009 18:08:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/mutley/posts/29400.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/mutley/comments/29400.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/mutley/comments/commentRss/29400.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/mutley/posts/29400.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/mutley/trackback.aspx?ID=29400</trackback:ping><source url="http://weblogs.pontonetpt.com/mutley/rss.aspx">Nuno Filipe Godinho</source><description>&lt;p&gt;Karen Corby – Lead Program Manager on Silverlight Team - &lt;a href="http://scorbs.com/work"&gt;http://scorbs.com/work&lt;/a&gt;&lt;/p&gt; &lt;p&gt;“One major difference between site with a strong Brand Image … and one with weak Brand Image … is that &lt;strong&gt;brand positioning permeates every part of a strong site …&lt;/strong&gt;” – Forrester, June 9, 2005&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Styling  &lt;ul&gt; &lt;li&gt;“Property Bag” styling  &lt;/li&gt;&lt;li&gt;Through the &amp;lt;Style&amp;gt; element  &lt;/li&gt;&lt;li&gt;Works with Controls , UserControls, Shapes, Panels  &lt;/li&gt;&lt;li&gt;App.xaml now support the MergedResourceDictionaries functionality like in WPF  &lt;ul&gt; &lt;li&gt;&amp;lt;ResourceDictionary.MergedDictionaries&amp;gt;  &lt;ul&gt; &lt;li&gt;&amp;lt;ResourceDictionary Source=”Assets.xaml”/&amp;gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&amp;lt;/ResourceDictionary.MergedDictionaries&amp;gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Styles now support BasedOn  &lt;ul&gt; &lt;li&gt;&amp;lt;Style x:Key=”NewStyle” BasedOn=”{StaticResource BaseStyle}”&amp;gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Skinning  &lt;ul&gt; &lt;li&gt;Completely replace visuals  &lt;/li&gt;&lt;li&gt;Through &amp;lt;ControlTemplate&amp;gt; element  &lt;/li&gt;&lt;li&gt;{TemplaceBinding} extension  &lt;/li&gt;&lt;li&gt;Works with Custom Controls (not UserControls, Panels, Shapes)  &lt;/li&gt;&lt;li&gt;Based on a well defined separation with: (same way as in Silverlight 2.0)  &lt;ul&gt; &lt;li&gt;Control Logic  &lt;/li&gt;&lt;li&gt;Control Visuals &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Parts and States Model  &lt;ul&gt; &lt;li&gt;Goals:  &lt;ul&gt; &lt;li&gt;Make it easy to skin your control  &lt;/li&gt;&lt;li&gt;Defined separation between logic and visuals  &lt;/li&gt;&lt;li&gt;Explicit control contract &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Parts:  &lt;ul&gt; &lt;li&gt;Names element (x:Name) in Template  &lt;/li&gt;&lt;li&gt;Why is it needed to be a named element? Because, code manipulates element in same way. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;States:  &lt;ul&gt; &lt;li&gt;Visual look of control in a particular state  &lt;/li&gt;&lt;li&gt;Thought &amp;lt;VisualState&amp;gt; element  &lt;/li&gt;&lt;li&gt;Not all ControlTemplates need a Visual State &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;StateGroups:  &lt;ul&gt; &lt;li&gt;Set of mutually exclusive states  &lt;/li&gt;&lt;li&gt;Different state groups are orthogonal  &lt;/li&gt;&lt;li&gt;Though the &amp;lt;VisualStateGroup&amp;gt; element &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Using States and Transitions  &lt;ul&gt; &lt;li&gt;VisualStateManager.VisualStateGroups  &lt;ul&gt; &lt;li&gt;Attached Properties on root visual of ControlTemplate &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;VisualStateGroup  &lt;ul&gt; &lt;li&gt;Contains group of related states &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;VisualState class  &lt;ul&gt; &lt;li&gt;Contains storyboard that represents visual look &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;VisualTransition class  &lt;ul&gt; &lt;li&gt;Contains duration for automatic transition animations  &lt;/li&gt;&lt;li&gt;Contains storyboard for explicit transition animations  &lt;/li&gt;&lt;li&gt;Default, or “To/From” transitions  &lt;/li&gt;&lt;li&gt;GeneratedEasingFunction that is part of Silverlight 3 and that make it easy to define how an animation will work without the need to a storyboard &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Data Binding  &lt;ul&gt; &lt;li&gt;Validation and Binding  &lt;ul&gt; &lt;li&gt;Flags we need to enable  &lt;ul&gt; &lt;li&gt;NotifyOnValidationErrors  &lt;/li&gt;&lt;li&gt;ValidatesOnExceptions &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Bindings  &lt;ul&gt; &lt;li&gt;RelativeSource Binding was included  &lt;ul&gt; &lt;li&gt;Self &amp;amp; TemplatedParent as source  &lt;/li&gt;&lt;li&gt;Power of full binding in Templates  &lt;ul&gt; &lt;li&gt;Attached DP sources, converters, two-way, etc. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;DependecyProperties as Sources for Bindings  &lt;ul&gt; &lt;li&gt;Update based on DP changes &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Out-of-the-Box controls with Validation enabled  &lt;ul&gt; &lt;li&gt;TextBox  &lt;/li&gt;&lt;li&gt;CheckBox  &lt;/li&gt;&lt;li&gt;RadioButton  &lt;/li&gt;&lt;li&gt;ComboBox  &lt;/li&gt;&lt;li&gt;ListBox  &lt;/li&gt;&lt;li&gt;PasswordBox  &lt;ul&gt; &lt;li&gt;Currently isn’t bindable but it will be in the SL 3.0 RTW &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Binding and Styles  &lt;ul&gt; &lt;li&gt;ElementName binding  &lt;ul&gt; &lt;li&gt;“UI to UI binding”  &lt;/li&gt;&lt;li&gt;FrameworkElement can be used as a binding Source &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;The Styles can now be changed in runtime  &lt;ul&gt; &lt;li&gt;the “write once” style limitation was removed in SL 3.0 &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Silverlight Styling vs WPF Styling  &lt;ul&gt; &lt;li&gt;Currently not supported in SL 3.0  &lt;ul&gt; &lt;li&gt;Implicit Styles  &lt;ul&gt; &lt;li&gt;A workaround was used in the Silverlight Toolkit &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Dynamic Resources  &lt;/li&gt;&lt;li&gt;Triggers  &lt;ul&gt; &lt;li&gt;Blend’s Behaviors &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Custom Controls  &lt;ul&gt; &lt;li&gt;Based on Control class  &lt;/li&gt;&lt;li&gt;Add the Control Contract in the Control Logic Class  &lt;ul&gt; &lt;li&gt;TemplateVisualState elements  &lt;/li&gt;&lt;li&gt;TemplatePart elements &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Generic.xaml  &lt;ul&gt; &lt;li&gt;Specific element and it &lt;strong&gt;must&lt;/strong&gt; be placed inside a folder named &lt;strong&gt;themes&lt;/strong&gt; on your project  &lt;/li&gt;&lt;li&gt;Needs to be placed as a &lt;strong&gt;Resource&lt;/strong&gt; on the project &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Define the DefaultStyleKey property  &lt;ul&gt; &lt;li&gt;Informs the element that it should go to the generic.xaml to get the default style &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;“Look-less” by default  &lt;/li&gt;&lt;li&gt;Silverlight and WPF Skinning Model  &lt;ul&gt; &lt;li&gt;Same Model &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;From Silverlight to WPF  &lt;ul&gt; &lt;li&gt;Viewbox in Silverlight is part of the Toolkit and in WPF is part of the core runtime  &lt;/li&gt;&lt;li&gt;VSM in WPF is part of the WPF Toolkit and in Silverlight is in the core runtime – Will be part of the core runtime of WPF in the next version  &lt;/li&gt;&lt;li&gt;EasingFunctions are part of the Silverlight core runtime and will only be part of the next version of WPF &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Layout  &lt;ul&gt; &lt;li&gt;Custom Panels  &lt;/li&gt;&lt;li&gt;In Silverlight is two pass algorithm  &lt;ul&gt; &lt;li&gt;Measure  &lt;ul&gt; &lt;li&gt;Check How much space do you need &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Arrange  &lt;ul&gt; &lt;li&gt;Having the space needed arrange your elements inside it &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;   One more very interesting talk about Silverlight in MIX'09 and that showed up some very important new features in terms of Styling, Skinning and Custom Control definition.&lt;/p&gt;</description><dc:creator>Nuno Filipe Godinho</dc:creator></item><item><title>.NET - Determinar se uma Assembly foi compilada em modo Debug</title><link>http://weblogs.pontonetpt.com/nunogomes/posts/29399.aspx</link><pubDate>Sun, 21 Jun 2009 13:11:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/nunogomes/posts/29399.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/nunogomes/comments/29399.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/nunogomes/comments/commentRss/29399.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/nunogomes/posts/29399.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/nunogomes/trackback.aspx?ID=29399</trackback:ping><source url="http://weblogs.pontonetpt.com/nunogomes/rss.aspx">Nuno Gomes /*Aventuras e Desventuras de um programador*/</source><description>&lt;p&gt;Descobrir se uma &lt;em&gt;assembly&lt;/em&gt; foi compilada em modo &lt;em&gt;Debug&lt;/em&gt; ou &lt;em&gt;Release&lt;/em&gt; é uma tarefa que todos temos que efectuar uma vez por outra.&lt;/p&gt;
&lt;p&gt;Eu conheço duas formas de obter esta informação:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Procurar e interpretar o atributo &lt;a href="http://msdn.microsoft.com/library/system.diagnostics.debuggableattribute.aspx" target="_blank"&gt;System.Diagnostics.DebuggableAttribute&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;Procurar e interpretar o atributo &lt;a href="http://msdn.microsoft.com/library/system.reflection.assemblyconfigurationattribute.aspx" target="_blank"&gt;System.Reflection.AssemblyConfigurationAttribute&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ambos os atributos são aplicados a &lt;em&gt;assemblies&lt;/em&gt; e podem ser encontrados no seu Manifesto, no entanto existe uma grande diferença entre ambos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;o AssemblyConfigurationAttribute embora seja compreensivel para o leitor humano tem que ser adicionado pelo programador. 
&lt;/li&gt;&lt;li&gt;o DebuggableAttribute é adicionado automáticamente e está sempre presente no entanto não é legível para um humano. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;O Manifesto da &lt;em&gt;assembly&lt;/em&gt; pode ser facilmente obtido se usarmos o fantástico &lt;a href="http://msdn.microsoft.com/library/f7dy01k1(VS.80).aspx" target="_blank"&gt;ILDASM&lt;/a&gt; através duma consola “Visual Studio Studio Command Prompt”:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_1.png" target="_blank"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_1_thumb.png" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_2_thumb.png" target="_blank"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_2_thumb.png" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;e se fizermos duplo click no item MANIFEST obtemos todo o conteúdo do manifesto. &lt;/p&gt;
&lt;p&gt;Se observarmos atentamente encontraremos o atributo DebuggableAttribute:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_3.png" target="_blank"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_3_thumb.png" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;e talvez encontremos também o atributo AssemblyConfigurationAttribute:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_4.png" target="_blank"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_4_thumb.png" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4&gt;AssemblyConfigurationAttribute &lt;/h4&gt;
&lt;p&gt;Localizar o atributo AssemblyConfigurationAttribute e verificar qual o seu conteúdo: Debug ou Release.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_5.png" target="_blank"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 0px 0px 0px 75px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://blog.nunogomes.net/image.axd?picture=WindowsLiveWriter/920.NETDetermineWhetheranAssemblywascomp_108F5/ildasm_5_thumb.png" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4&gt;DebuggableAttribute&lt;/h4&gt;
&lt;p&gt;Se o atributo AssemblyConfigurationAttribute não está presente então temos que usar o atributo DebuggableAttribute para obter a informação pretendida.&lt;/p&gt;
&lt;p&gt;Uma vez que este atributo não é legível para os humanos é necessário abrir a &lt;em&gt;assembly&lt;/em&gt; com outra ferramenta e ler o seu conteúdo. Não existe ferramenta para realizar esta tarefa mas a mesma pode ser facilmente criada usando um projecto “Command Line” e usando um método simiar a:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;private bool &lt;/span&gt;IsAssemblyDebugBuild(&lt;span style="COLOR: blue"&gt;string &lt;/span&gt;filepath)
{
    &lt;span style="COLOR: blue"&gt;return &lt;/span&gt;IsAssemblyDebugBuild(&lt;span style="COLOR: #2b91af"&gt;Assembly&lt;/span&gt;.LoadFile(&lt;span style="COLOR: #2b91af"&gt;Path&lt;/span&gt;.GetFullPath(filepath)));
}
&lt;span style="COLOR: blue"&gt;private bool &lt;/span&gt;IsAssemblyDebugBuild(&lt;span style="COLOR: #2b91af"&gt;Assembly &lt;/span&gt;assembly)
{
    &lt;span style="COLOR: blue"&gt;foreach &lt;/span&gt;(&lt;span style="COLOR: blue"&gt;var &lt;/span&gt;attribute &lt;span style="COLOR: blue"&gt;in &lt;/span&gt;assembly.GetCustomAttributes(&lt;span style="COLOR: blue"&gt;false&lt;/span&gt;))
    {
        &lt;span style="COLOR: blue"&gt;var &lt;/span&gt;debuggableAttribute = attribute &lt;span style="COLOR: blue"&gt;as &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DebuggableAttribute&lt;/span&gt;;
        &lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(debuggableAttribute != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)
        {
            &lt;span style="COLOR: blue"&gt;return &lt;/span&gt;debuggableAttribute.IsJITTrackingEnabled;
        }
    }
    &lt;span style="COLOR: blue"&gt;return false&lt;/span&gt;;
}&lt;/pre&gt;
&lt;p&gt;ou (para quem prefere LINQ)&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;private bool &lt;/span&gt;IsAssemblyDebugBuild(&lt;span style="COLOR: #2b91af"&gt;Assembly &lt;/span&gt;assembly)
{
    &lt;span style="COLOR: blue"&gt;return &lt;/span&gt;assembly.GetCustomAttributes(&lt;span style="COLOR: blue"&gt;false&lt;/span&gt;).Any(x =&amp;gt; (x &lt;span style="COLOR: blue"&gt;as &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DebuggableAttribute&lt;/span&gt;) != &lt;span style="COLOR: blue"&gt;null &lt;/span&gt;? (x &lt;span style="COLOR: blue"&gt;as &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DebuggableAttribute&lt;/span&gt;).IsJITTrackingEnabled : &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;);
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Como podem ver … é bastante simples.&lt;/p&gt;
&lt;h5&gt;Nota:&lt;/h5&gt;
&lt;p&gt;Normalmente, eu adiciono uma tarefa de Pre-build ao meu &lt;em&gt;Build Server&lt;/em&gt; por forma a adicionar o atributo AssemblyConfigurationAttribute, ao ficheiro CommonAssemblyInfo, com o valor apropriado: “Debug” ou “Release”. Desta forma, qualquer um, usando apenas o ILDASM, pode validar que tipo de compilação foi usada para gerar as minhas &lt;em&gt;assemblies&lt;/em&gt;.&lt;/p&gt;</description><dc:creator>Nuno Gomes</dc:creator></item><item><title>Win the 7</title><link>http://weblogs.pontonetpt.com/mauriciojunior/posts/29396.aspx</link><pubDate>Sat, 20 Jun 2009 19:19:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/mauriciojunior/posts/29396.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/mauriciojunior/comments/29396.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/mauriciojunior/comments/commentRss/29396.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/mauriciojunior/posts/29396.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/mauriciojunior/trackback.aspx?ID=29396</trackback:ping><source url="http://weblogs.pontonetpt.com/mauriciojunior/rss.aspx">Mauricio Junior - MCP, MCAD Microsoft .NET</source><description>&lt;img src="http://blog.mauriciojunior.org/image.axd?picture=winthe7.png" /&gt;&lt;br /&gt;
Win The 7&lt;br /&gt;&lt;br /&gt;

O Win the 7 é umacompetição que vai testar os seus conhecimentos sobre o Windows 7. Todas asprovas serão online e a grande final acontecerá em São Paulo, para onde osparticipantes viajarão com todas as despesas pagas &lt;a href="http://blog.mauriciojunior.org/post/Win-the-7.aspx#"&gt;Leia mais...&lt;/a&gt;</description><dc:creator>Mauricio Junior</dc:creator></item><item><title>Topics about &amp;rdquo;Simple Architectures for Complex Enterprises&amp;rdquo;</title><link>http://weblogs.pontonetpt.com/mutley/posts/29395.aspx</link><pubDate>Sat, 20 Jun 2009 13:41:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/mutley/posts/29395.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/mutley/comments/29395.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/mutley/comments/commentRss/29395.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/mutley/posts/29395.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/mutley/trackback.aspx?ID=29395</trackback:ping><source url="http://weblogs.pontonetpt.com/mutley/rss.aspx">Nuno Filipe Godinho</source><description>&lt;p&gt;Based on ArCast.TV Session and the Roger Sessions Book named &lt;a href="http://www.amazon.com/Architectures-Enterprises-PRO-best-Practices-Microsoft/dp/0735625786/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1245447898&amp;amp;sr=8-1" target="_blank"&gt;“Simple Architectures for Complex Enterprises”&lt;/a&gt;&lt;/p&gt; &lt;p&gt;  When I started viewing this ArCast was because this is a very interesting topic and because normally what people tend to have as Enterprise Architects are very complex Architectures and problems and so my goal was to find how can we simplify these architectures in order to best achieve our goals. And so the most interesting topics i took from this talk were the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Enterprise Architects should focus on Simplicity because this is the key characteristic that we should strive for and is more important that Security, Performance, Scalability and all others elements. And when we get simplicity the others will also happen and without it we can’t achieve any of these elements.  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Personal Note: &lt;/strong&gt;Ok this is right because because whenever we start to build an enterprise architecture the first thing that comes to our minds is really the Security, the Performance, the Scalability, the Reliability of the system and so on, and we tend to forget that the simplicity is important or else we’ll have a very complete architecture but that is very difficult or impossible to put in practice due to the values involved or simply because of the complexity involved, and so this is important and something we should strived to achieve.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;It’s very important that the Business and the IT are aligned because otherwise we will end up with different systems from the ones that were asked, and by doing so we won’t solve our problems.  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Personal Notes&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;This is what normally happens with IT, instead of Business looking at IT as a way to facilitate the achievement of the Business goals, they sometimes look at it the other way around and this brings huge problems to this relationship between Business and IT, that should always be aligned to achieve the proposed goals.  &lt;/li&gt;&lt;li&gt;Let’s just think about SaaS – Software as a Service for a second and try to see if this shows anything about this point:  &lt;ul&gt; &lt;li&gt;Who normally choose SaaS solutions? Business People  &lt;/li&gt;&lt;li&gt;Why? Because they are easy and simple to use and payed-as-you-go  &lt;/li&gt;&lt;li&gt;For example: SalesForce.com used a lot of these issues between Business and IT because normally the Business People would ask for a CRM for the company and a lot of complexity would come from the IT department saying that they needed to have machines, a complex architecture, a ton of things and then the Business People one day at home would start using SalesForce.com and would bring it to their teams, and after that the IT Department wouldn’t have anything more to say about the subject. Of course that the Cloud Computing part also has a high role in this possibility, but if we try to simplify things maybe this alignment between Business and IT will became easier.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;  Complexity is a Key issue and is linearly increase to the TCO (Total Cost of Ownership) but not with functionality because in that issue is logarithmic increased since if we are adding twice the functionality what happens is that the complexity grows exponentially and not only in a 1-to-1 basis. In Enterprises the functionality is logarithmically related with TCO.  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Personal Note:&lt;/strong&gt; Normally this is true because if we double the complexity we are doubling the TCO, but if we just enter a functionality we can be making our complexity grow a lot more. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;In order to make solutions simpler is not necessary to remove functionality but just reorganizing the process, because by partitioning things became easier and better manageable. But the problem is that functionality in a Business system is not easy and so this is where the partitioning of functionalities become important.  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Personal Note: &lt;/strong&gt;Of course this is important that’s why we hear the Metaphor about “cutting the Elephant into small pieces”. (No disrespect for the animal of course)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;How to take the Simplicity approach to the Enterprise:  &lt;ul&gt; &lt;li&gt;The recommended approach is SIP – Simple Iterative Partitions.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;How to approach the Business with the concept of Simplicity and using SIP to implement it.  &lt;ul&gt; &lt;li&gt;First sell the complexity message  &lt;/li&gt;&lt;li&gt;Normally complexity doesn’t enter in discussions and should be a very important  &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;This is a very interesting approach and I highly recommend the book reading and seeing Enterprise Architectures in terms of complexity and how to eliminate it from the Architecture.&lt;/p&gt;</description><dc:creator>Nuno Filipe Godinho</dc:creator></item><item><title>.NET &amp;ndash; O Garbage Collector e os destrutores</title><link>http://weblogs.pontonetpt.com/nunogomes/posts/29393.aspx</link><pubDate>Fri, 19 Jun 2009 17:56:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/nunogomes/posts/29393.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/nunogomes/comments/29393.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/nunogomes/comments/commentRss/29393.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/nunogomes/posts/29393.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/nunogomes/trackback.aspx?ID=29393</trackback:ping><source url="http://weblogs.pontonetpt.com/nunogomes/rss.aspx">Nuno Gomes /*Aventuras e Desventuras de um programador*/</source><description>&lt;p&gt;Não é comum usar destrutores em .NET mas eu sempre tive aquela noção que se usasse talvez ganhasse alguma performance.&lt;/p&gt;
&lt;p&gt;Naturalmente que a minha preguiça nunca permitiu que declarasse destrutores nas minhas classes ou que fizesse algumas experiências para perceber melhor esta vertente.&lt;/p&gt;
&lt;p&gt;No entanto há quem  esteja disposto a partilhar conhecimento e a satisfazer a curiosidade dos mais preguiçosos.&lt;/p&gt;
&lt;p&gt;O &lt;a href="http://www.simple-talk.com/author/andrew-hunter/" target="_blank"&gt;Andrew Hunter&lt;/a&gt; resolveu publicar um artigo intitulado “&lt;a href="http://www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net/" target="_blank"&gt;Understanding Garbage Collection in .NET&lt;/a&gt;” no qual consegui clarificar a minha dúvida.&lt;/p&gt;
&lt;p&gt;Então é assim:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A execução do destrutor é não deterministica – depende do &lt;a href="http://msdn.microsoft.com/library/system.gc.aspx" target="_blank"&gt;GC&lt;/a&gt; e do seu modo de operação: concorrente ou síncrona 
&lt;/li&gt;&lt;li&gt;Requer 2 ciclos de GC para que o objecto seja removido e a memória seja liberta. 
&lt;/li&gt;&lt;li&gt;Se o GC referenciar muitos objectos com destrutor então necessita de mais ciclos para libertar completamente os objectos não referênciados &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Isto não significa que não sejam usados destrutores, mas se for mesmo necessário usar então a receita (simplificada) é a seguinte:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Implementar o interface &lt;a href="http://msdn.microsoft.com/library/system.idisposable.aspx" target="_blank"&gt;System.IDisposable&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;mover o código do destrutor para o método &lt;a href="http://msdn.microsoft.com/en-us/library/system.idisposable.dispose.aspx" target="_blank"&gt;Dispose&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;Terminar a execução do método Dispose com &lt;a href="http://msdn.microsoft.com/library/system.gc.suppressfinalize.aspx" target="_blank"&gt;GC.SupressFinalize()&lt;/a&gt; para indicar ao GC que o objecto já não precisa de ser finalizado e pode ser removido imediatamente. 
&lt;/li&gt;&lt;li&gt;Invocar o método Dispose no destrutor&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Se quiserem adquirir um conhecimento mais profundo deste procedimento que também é referido como padrão &lt;em&gt;Disposable&lt;/em&gt; consultem este &lt;a href="http://msdn.microsoft.com/en-us/library/b1yfkh5e(VS.71).aspx"&gt;artigo&lt;/a&gt; (gentilmente indicado pelo &lt;a href="http://msmvps.com/blogs/luisabreu"&gt;Luis Abreu&lt;/a&gt;).&lt;/p&gt;
&lt;h4&gt;Conclusão&lt;/h4&gt;
&lt;p&gt;Usar destrutores não traz beneficios de performance e o seu uso descuidado pode ser um vector para problemas graves de gestão de memória, mas, há sempre uma mas ... quando estamos na presença de classes que criam referências para entidades que não são geridas automáticamente pelo &lt;em&gt;Runtime&lt;/em&gt;, então o padrão &lt;em&gt;Disposable&lt;/em&gt; deve ser implementado e o destrutor também pois garante que as referências são sempre libertadas (mesmo quando o programador não optimizou o uso da memória através da invocação do método Dispose).&lt;/p&gt;
&lt;p&gt;Espero que fiquem elucidados … tal como eu fiquei.&lt;/p&gt;</description><dc:creator>Nuno Gomes</dc:creator></item><item><title>Como utilizar o controlo Listview no Sharepoint</title><link>http://weblogs.pontonetpt.com/jf_rocha/posts/29390.aspx</link><pubDate>Thu, 18 Jun 2009 15:00:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/jf_rocha/posts/29390.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/jf_rocha/comments/29390.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/jf_rocha/comments/commentRss/29390.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/jf_rocha/posts/29390.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/jf_rocha/trackback.aspx?ID=29390</trackback:ping><source url="http://weblogs.pontonetpt.com/jf_rocha/rss.aspx">João Filipe Rocha</source><description>&lt;p&gt;O controlo &lt;a href="http://msdn.microsoft.com/en-us/library/bb398790.aspx" target="_blank"&gt;ListView&lt;/a&gt; é uma das novidades da framework 3.5 para o ASP.NET. Este controlo é bastante flexivel, pois permite as facilidades do controlo &lt;a href="http://quickstarts.asp.net/quickstartv20/aspnet/doc/ctrlref/data/gridview.aspx" target="_blank"&gt;GridView&lt;/a&gt; (Paginação, Ordenação), numa lista de itens repetidos.&lt;/p&gt; &lt;p&gt;Para utilizar este controlo num projecto de Sharepoint é necessário criar no web.config as configuraçôes semelhantes a um projecto que utilize ajax, e dentro da &lt;a href="http://msdn.microsoft.com/en-us/library/ms164640.aspx" target="_blank"&gt;Tag &amp;lt;controls&amp;gt;&lt;/a&gt;  adicionar a seguinte referencia:&lt;/p&gt; &lt;p&gt;&lt;code&gt;&amp;lt;add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&amp;gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;A paginação deste controlo é controlada pelo controlo DataPager em que este necessita que a fonte de dados da ListView seja fornecida através do controlo de &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/data/default.aspx" target="_blank"&gt;DataSource&lt;/a&gt;. Para que este funcione em Sharepoint este controlo de datasource deverá ser definido da seguinte forma:&lt;/p&gt; &lt;p&gt;&lt;code&gt;&amp;lt;asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="getItems" TypeName="&lt;strong&gt;&lt;u&gt;&amp;lt;Assembly Strong Name&amp;gt;&lt;/u&gt;&lt;/strong&gt;"&amp;gt;&amp;lt;/asp:ObjectDataSource&amp;gt; &lt;/code&gt;&lt;/p&gt;</description><dc:creator>João Filipe Rocha</dc:creator></item><item><title>Update Panel com UpdateMode = Conditional actualiza sempre</title><link>http://weblogs.pontonetpt.com/helderjsm/posts/29387.aspx</link><pubDate>Wed, 17 Jun 2009 15:29:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/helderjsm/posts/29387.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/helderjsm/comments/29387.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/helderjsm/comments/commentRss/29387.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/helderjsm/posts/29387.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/helderjsm/trackback.aspx?ID=29387</trackback:ping><source url="http://weblogs.pontonetpt.com/helderjsm/rss.aspx">Helder Magalhães</source><description>&lt;p&gt;Bem para não me esquecer e para aqueles a quem possa ajudar.&lt;/p&gt;

&lt;p&gt;Sempre que estivermos a utilizar UpdatePanels não podemos deixar de dar um ID a todos os  controlos envolvidos no processo de actualização de um Update Panel.&lt;/p&gt;

&lt;p&gt;Infelizmente eu tenho muito esse vício de não colocar IDS em controlos que sei que não vou precisar chamar por código mas depois dá-me estas trenguices e lá ando eu à procura do problema durante uns bons minutos :p como foi o caso do trokas.pt onde, quando um utilizador errava na password ficava com um monte de paineis em branco (porque tenho imensos repeaters sem enableviewstate).&lt;/p&gt;

&lt;p&gt;Por isso não cometam o mesmo erro que eu :)&lt;/p&gt;</description><dc:creator>Helder Magalhães</dc:creator></item><item><title>A Sony dá 25€ pelo teu leitor de MP3/MP4 </title><link>http://weblogs.pontonetpt.com/guilhermecardoso/posts/29386.aspx</link><pubDate>Wed, 17 Jun 2009 09:51:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/guilhermecardoso/posts/29386.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/guilhermecardoso/comments/29386.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/guilhermecardoso/comments/commentRss/29386.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/guilhermecardoso/posts/29386.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/guilhermecardoso/trackback.aspx?ID=29386</trackback:ping><source url="http://weblogs.pontonetpt.com/guilhermecardoso/rss.aspx">Guilherme Cardoso</source><description>Entre 15 de Junho e 15 de Agosto, a Sony dá 25€ a todos aqueles que se queiram desfazer do seu velho MP3 e comprar um novo Walkman Sony. Além de contribuir para a “reciclagem” dos leitores de mp3/mp4, a Sony explora com esta campanha, uma vertente de solidariedade social com a doação de parte do contributo financeiro à Fundação O Século.&lt;br /&gt;
&lt;div align="center"&gt;&lt;img src="http://www.sony.pt/res/images/image/12/1209376189812.jpg" /&gt;&lt;/div&gt;
&lt;br /&gt;
A campanha assenta na oferta de 25 € ao consumidor que adquirir um Walkman Sony a partir de 65 € e que entregue o seu mp3/mp4 antigo de qualquer marca. Da oferta dos 25€ pagos no acto da compra, a Sony incentiva o utilizador a doar 1€ à instituição O Século.&lt;br /&gt;
&lt;br /&gt;
Segundo Filipe Cardoso, gestor da marca Walkman, da Sony, “ esta campanha irá ter um duplo significado: dotar os utilizadores com as últimas inovações ao nível de leitores mp3/mp4 e contribuir para uma associação tão importante como a Fundação O Século.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Como Participar:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Para receberes os teus 25€, basta enviares por correio registado e com aviso de recepção para Sony Portugal, Unipessoal. “Campanha de Trocas de Walkman”, Alameda dos Oceanos, Edificio Rock One, Lote 4.62.01 Parque das Nações, 1990-392 Moscavide, os seguintes elementos:&lt;br /&gt;
&lt;br /&gt;
* O teu velho mp3 (de qualquer marca);&lt;br /&gt;
* Código de barras original do teu Sony Walkman (retirado da embalagem);&lt;br /&gt;
* Original da factura/talão de compra do teu novo Sony Walkman (este ser-te-á devolvido após recepção dos teus documentos);&lt;br /&gt;
* Cupão devidamente preenchido;&lt;br /&gt;
&lt;br /&gt;
O valor a reembolsar será transferido directamente para o NIB indicado no cupão.&lt;br /&gt;
&lt;br /&gt;
Promoção válida para compras efectuadas entre 15 de Julho e 15 de Agosto de 2009, em todos os Agentes Autorizados Sony em Portugal Continental e Ilhas (ver a localização do Agente mais próximo de si no Localizador de Agentes disponível no site).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;A data limite de recepção dos cupões é 24 de Agosto de 2009 (data de carimbo dos CTT).&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Mais informações: &lt;a href="http://www.sony.pt/article/2009/06/campanha-troca-de-mp3-mp4-walkman" target="_blank"&gt;Sony &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
Um especial obrigado ao &lt;b&gt;Quim-Zé&lt;/b&gt; por ter partilhado este artigo</description><dc:creator>Guilherme Cardoso</dc:creator></item><item><title>Interesting Incubation and Innovation Projects from Microsoft in the Cloud spectrum</title><link>http://weblogs.pontonetpt.com/mutley/posts/29380.aspx</link><pubDate>Mon, 15 Jun 2009 17:46:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/mutley/posts/29380.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/mutley/comments/29380.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/mutley/comments/commentRss/29380.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/mutley/posts/29380.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/mutley/trackback.aspx?ID=29380</trackback:ping><source url="http://weblogs.pontonetpt.com/mutley/rss.aspx">Nuno Filipe Godinho</source><description>&lt;p&gt;I was looking at the &lt;a href="http://www.microsoft.com/azure/sql.mspx" target="_blank"&gt;Windows Azure - SQL Data Services page&lt;/a&gt;, and looked at some of the &lt;a href="http://www.microsoft.com/azure/sqllabs.mspx" target="_blank"&gt;Incubation and Innovation projects&lt;/a&gt; that Microsoft is researching in this area, and found this to be very interesting and so here are the projects that I found:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/azure/mining.mspx" target="_blank"&gt;Data Mining in the Cloud&lt;/a&gt;  &lt;ul&gt; &lt;li&gt;This is very interesting because with this we have also SQL Server Analysis Services on the Cloud, and since Analysis Services are very important for companies to achieve the analysis of their data in order to perform better and to make better decisions, having those also on the Cloud and using the Cloud perspective of pay-as-you-go I think it will mean a that lots of more companies will start looking at their data differently, because now they can afford the costs of doing it. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/azure/mining.mspx"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="mining_img1B[1]" border="0" alt="mining_img1B[1]" src="http://www.microsoft.com/azure/images/mining_img1B.jpg" width="397" height="277" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/azure/anchorage.mspx" target="_blank"&gt;Project codename “Anchorage”&lt;/a&gt;  &lt;ul&gt; &lt;li&gt;Since the appearance of the Web that a lot of options appeared to share files, photos, movies and so on, but the problem is that along the way we reach a point that we have everything so separated along the web that we lose track of it. Live Mesh tried to address this problem and is being pretty interesting in his usage, but what about if I have photos in Flickr, PhotoBucket, SmugSmug, and others as well as in my laptop? How can they all be synced? This projects does absolutely this and uses Live Framework in order to achieve it in a very interesting way.  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/azure/anchorage.mspx"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="anchorage_img4[1]" border="0" alt="anchorage_img4[1]" src="http://www.microsoft.com/azure/images/anchorage_img4.jpg" width="387" height="291" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/azure/huron.mspx" target="_blank"&gt;Project codename “Huron”&lt;/a&gt;  &lt;ul&gt; &lt;li&gt;I read this phrase “This is a Sync-Enabled Cloud Data Hub.”, and thought, What? So I continued reading and understood the Idea, because this is something that in some cases needs to be done when we are doing Cloud Computing, that is having a Synced copy of the Database locally for the customers, and this project intends to achieve this goal since it gets the SQL Data Services and the Local Database and Synchronizes them using Microsoft Sync Framework, this way providing the ability for customers to always have their data even when having SaaS – Software as a Service solutions. This way we have best of both worlds.  &lt;/li&gt;&lt;li&gt;Watched this great small series of videos about this project:  &lt;ul&gt; &lt;li&gt;&lt;a href="http://download.microsoft.com/download/c/0/8/c085dcc8-66a1-43b7-814e-d4166896a139/Codename_Huron_Access_Final_Part1.wmv" target="_blank"&gt;Codename “Huron” - Access Desktop Database Sharing&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/c/0/8/c085dcc8-66a1-43b7-814e-d4166896a139/Codename_Huron_Access_Final_Part2.wmv" target="_blank"&gt;Codename “Huron” – Making changes in SQL Data Services data hub and synchronizing to Access shared desktops&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/c/0/8/c085dcc8-66a1-43b7-814e-d4166896a139/Codename_Huron_Access_Final_Part3.wmv" target="_blank"&gt;Codename “Huron” – Enabling custom database support&lt;/a&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/azure/huron.mspx"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="huron_img56[1]" border="0" alt="huron_img56[1]" src="http://www.microsoft.com/azure/images/huron_img56.jpg" width="386" height="263" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/azure/reporting.mspx" target="_blank"&gt;Reporting Services against SQL Data Services&lt;/a&gt;  &lt;ul&gt; &lt;li&gt;Interesting, we have SQL Server in the Cloud, Data Mining in the Cloud and now Reporting Services on the Cloud. This seems very interesting because we can use the Cloud to take our solutions to the &lt;em&gt;“Next Level”&lt;/em&gt; since we now have almost all necessary technologies available on the Cloud.  &lt;/li&gt;&lt;li&gt;Try it &lt;a title="http://sqlserviceslabs.net/Reporting_EULA.html" href="http://sqlserviceslabs.net/Reporting_EULA.html" target="_blank"&gt;here&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/azure/reporting.mspx"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="reporting_img4c[1]" border="0" alt="reporting_img4c[1]" src="http://www.microsoft.com/azure/images/reporting_img4c.jpg" width="376" height="406" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Hope this helps you see what we can expect and what level of Cloud usage we can achieve. &lt;/p&gt;</description><dc:creator>Nuno Filipe Godinho</dc:creator></item><item><title>Brincando Com SQL Server CLR Integration – Parte IV (Instalando Em SQL Server 2005)</title><link>http://weblogs.pontonetpt.com/pjmorgado/posts/29379.aspx</link><pubDate>Sun, 14 Jun 2009 16:00:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/pjmorgado/posts/29379.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/pjmorgado/comments/29379.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/pjmorgado/comments/commentRss/29379.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/pjmorgado/posts/29379.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/pjmorgado/trackback.aspx?ID=29379</trackback:ping><source url="http://weblogs.pontonetpt.com/pjmorgado/rss.aspx">Paulo Morgado</source><description>&lt;p&gt;DCom tudo desenvolvido e testado em no meu portátil usando o&lt;a title="Microsoft SQL Server" href="http://www.microsoft.com/sqlserver/" target="_blank"&gt;SQL Server&lt;/a&gt; 2008, era o momento de instalar na máquina de testes com SQL Server 2005.&lt;/p&gt;  &lt;p&gt;O primeiro problema que encontrei quando executei:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;CREATE ASSEMBLY &lt;/span&gt;[MyAssembly]
&lt;span style="color: blue"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: red"&gt;'...\MyAssembly.dll'
&lt;/span&gt;&lt;span style="color: blue"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: blue"&gt;SAFE
GO&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;foi:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: red"&gt;Msg 10327, Level 14, State 1, Line 1
Assembly 'MyAssembly' references assembly 'system.xml.linq, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089.',
which is not present in the current database.
SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from,
but that operation has failed (reason: 2(The system cannot find the file specified.)).
Please load the referenced assembly into the current database and retry your request.&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Parece que o SQL Server 2005 não conhece a &lt;a title="Microsoft .NET" href="http://cli.gs/cligs/Microsoft-NET" target="_blank"&gt;.NET Framework&lt;/a&gt; 3.5. Tinha de carregar as assemblies usadas: &lt;strong&gt;System.Core&lt;/strong&gt; e &lt;strong&gt;System.Linq.Xml&lt;/strong&gt;:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;CREATE ASSEMBLY &lt;/span&gt;[System.Core]
&lt;span style="color: blue"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: red"&gt;'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll'
&lt;/span&gt;&lt;span style="color: blue"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: blue"&gt;SAFE
GO
&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Mas não é assim tão simples:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: black"&gt;Warning: The Microsoft .Net frameworks assembly 'system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.' you are registering is not fully tested in SQL Server hosted environment.&lt;/span&gt;
&lt;span style="color: red"&gt;Msg 6218, Level 16, State 2, Line 1
CREATE ASSEMBLY for assembly 'System.Core' failed because assembly 'System.Core' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database. CLR Verifier error messages if any will follow this message
[ : System.Diagnostics.Eventing.EventProvider::EtwRegister][mdToken=0x600003b][offset 0x0000003D][found Native Int][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::EncodeObject][mdToken=0x6000046][offset 0x00000000] Unmanaged pointers are not a verifiable type.
[ : System.Diagnostics.Eventing.EventProvider::WriteMessageEvent][mdToken=0x6000047][offset 0x0000003C][found ref 'System.String'] Expected numeric type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x6000049][offset 0x0000012E] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x6000049][offset 0x00000030] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x600004a][offset 0x0000005F][found ref 'System.String'] Expected numeric type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x600004b][offset 0x00000010][found unmanaged pointer][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004c][offset 0x0000007D] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004c][offset 0x00000309][found Native Int][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004d][offset 0x0000001B][found unmanaged pointer][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Security.Cryptography.CapiNative::ImportSymmetricKey][mdToken=0x60007c2][offset 0x00000071][found address of Byte] Expected numeric type on the stac...&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Bem, carrega-se com &lt;strong&gt;PERMISSION_SET = UNSAFE&lt;/strong&gt;:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;CREATE ASSEMBLY &lt;/span&gt;[MyAssembly]
&lt;span style="color: blue"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: red"&gt;'...\MyAssembly.dll'
&lt;/span&gt;&lt;span style="color: blue"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: blue"&gt;UNSAFE
GO&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Ainda não:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: black"&gt;Warning: The Microsoft .Net frameworks assembly 'system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.' you are registering is not fully tested in SQL Server hosted environment.&lt;/span&gt;
&lt;span style="color: red"&gt;Msg 10327, Level 14, State 1, Line 1
CREATE ASSEMBLY for assembly 'System.Core' failed because assembly 'System.Core' is not authorized for PERMISSION_SET = UNSAFE.
The assembly is authorized when either of the following is true: the database owner (DBO) has UNSAFE ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with UNSAFE ASSEMBLY permission.
If you have restored or attached this database, make sure the database owner is mapped to the correct login on this server.
If not, use sp_changedbowner to fix the problem.&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Mas fácil de resolver:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;ALTER DATABASE &lt;/span&gt;MyDatabase &lt;span style="color: blue"&gt;SET TRUSTWORTHY ON
GO&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;I finalmente foi possível carregar as assemblies .NET 3.5:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;CREATE ASSEMBLY &lt;/span&gt;[System.Core]
&lt;span style="color: blue"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: red"&gt;'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll'
&lt;/span&gt;&lt;span style="color: blue"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: blue"&gt;UNSAFE
GO

CREATE ASSEMBLY &lt;/span&gt;[System.Xml.Linq]
&lt;span style="color: blue"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: red"&gt;'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll'
&lt;/span&gt;&lt;span style="color: blue"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: blue"&gt;UNSAFE
GO&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Tendo todas as depêndencias carregadas, tentei carregar a minha assembly com &lt;strong&gt;PERMISSION_SET = SAFE&lt;/strong&gt; sem sucesso:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: red"&gt;Msg 6212, Level 16, State 1, Line 1
CREATE ASSEMBLY failed because method 'ShortPropsToXml' on type 'ShortProps'  in safe assembly 'Esi.SA.Encyclopedia' is storing to a static field.
Storing to a static field is not allowed in safe assemblies.&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Teve de ser com &lt;strong&gt;PERMISSION_SET = UNSAFE&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Depois de ter carregado as assemblies com sucesso, pude finalmente criar as definições &lt;a title="Transact-SQL Overview" href="http://cli.gs/Transact-SQL" target="_blank"&gt;Transact-SQL&lt;/a&gt; das funções (vêr &lt;a title="Brincando Com SQL Server CLR Integration – Parte I" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2009/06/15/brincando-com-sql-server-clr-integration-parte-i.aspx" target="_blank"&gt;Parte I&lt;/a&gt; e &lt;a title="Brincando Com SQL Server CLR Integration – Parte II" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2009/06/15/brincando-com-sql-server-clr-integration-parte-ii.aspx" target="_blank"&gt;Part II&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Agora é que os DBAs não vão mesmo deixar-me usar isto. Mas foi divertido fazê-lo.&lt;/p&gt;</description><dc:creator>Paulo Morgado</dc:creator></item><item><title>Brincando Com SQL Server CLR Integration – Parte III</title><link>http://weblogs.pontonetpt.com/pjmorgado/posts/29378.aspx</link><pubDate>Sun, 14 Jun 2009 15:49:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/pjmorgado/posts/29378.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/pjmorgado/comments/29378.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/pjmorgado/comments/commentRss/29378.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/pjmorgado/posts/29378.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/pjmorgado/trackback.aspx?ID=29378</trackback:ping><source url="http://weblogs.pontonetpt.com/pjmorgado/rss.aspx">Paulo Morgado</source><description>&lt;p&gt;Pode-vos ter chamado a atenção o facto de eu ter usado &lt;a title="Language-Integrated Query (LINQ)" href="http://msdn2.microsoft.com/library/bb397926.aspx" target="_blank"&gt;LINQ&lt;/a&gt; nas minhaa últimas entradas de Brincando Com &lt;a title="Microsoft SQL Server" href="http://www.microsoft.com/sqlserver/" target="_blank"&gt;SQL Server&lt;/a&gt; &lt;a title="Overview of CLR Integration " href="http://cli.gs/rDr0Yj" target="_blank"&gt;CLR Integration&lt;/a&gt; (&lt;a title="Brincando Com SQL Server CLR Integration – Parte I" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2009/06/15/brincando-com-sql-server-clr-integration-parte-i.aspx" target="_blank"&gt;Parte I&lt;/a&gt;, &lt;a title="Brincando Com SQL Server CLR Integration – Parte II" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2009/06/15/brincando-com-sql-server-clr-integration-parte-ii.aspx" target="_blank"&gt;Part II&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Não o consegui de imediato usando o projecto 2008 SQL CLR do &lt;a title="Microsoft Visual Studio" href="http://cli.gs/vstudio" target="_blank"&gt;Visual Studio&lt;/a&gt;. Alterar a &lt;strong&gt;Target Framework&lt;/strong&gt; para &lt;a title=".NET Framework" href="http://cli.gs/netframework" target="_blank"&gt;&lt;/a&gt;&lt;a title="Microsoft .NET" href="http://cli.gs/cligs/Microsoft-NET" target="_blank"&gt;.NET Framework&lt;/a&gt; 3.5 não foi suficiente. Foi necessário também editar o ficheiro &lt;strong&gt;.csproj&lt;/strong&gt;:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;p&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;" &lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="color: blue"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Project &lt;/span&gt;&lt;span style="color: red"&gt;ToolsVersion&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;3.5&lt;/span&gt;" &lt;span style="color: red"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Build&lt;/span&gt;" &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;span style="color: blue"&gt;&lt;/span&gt;
&lt;span style="color: blue"&gt;  &amp;lt;!—&lt;/span&gt;&lt;span style="color: green"&gt; ... &lt;span style="color: blue"&gt;--&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;&lt;span style="color: blue"&gt;!—&lt;/span&gt;&lt;span style="color: green"&gt; ... &lt;span style="color: blue"&gt;--&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&lt;strong&gt;    &amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: #a31515"&gt;Reference &lt;/span&gt;&lt;span style="color: red"&gt;Include&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.Core&lt;/span&gt;"&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;RequiredTargetFramework&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;3.5&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;RequiredTargetFramework&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Reference&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Reference &lt;/span&gt;&lt;span style="color: red"&gt;Include&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.Xml.Linq&lt;/span&gt;"&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;RequiredTargetFramework&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;3.5&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;RequiredTargetFramework&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Reference&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;  &amp;lt;&lt;span style="color: blue"&gt;!—&lt;/span&gt;&lt;span style="color: green"&gt; ... &lt;span style="color: blue"&gt;--&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Project&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;</description><dc:creator>Paulo Morgado</dc:creator></item><item><title>Brincando Com SQL Server CLR Integration – Parte II</title><link>http://weblogs.pontonetpt.com/pjmorgado/posts/29377.aspx</link><pubDate>Sun, 14 Jun 2009 15:41:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/pjmorgado/posts/29377.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/pjmorgado/comments/29377.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/pjmorgado/comments/commentRss/29377.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/pjmorgado/posts/29377.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/pjmorgado/trackback.aspx?ID=29377</trackback:ping><source url="http://weblogs.pontonetpt.com/pjmorgado/rss.aspx">Paulo Morgado</source><description>&lt;p align="justify"&gt;Na minha última &lt;a title="Brincando Com SQL Server CLR Integration – Parte I" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2009/06/15/brincando-com-sql-server-clr-integration-parte-i.aspx" target="_blank"&gt;entrada&lt;/a&gt;, mostrei como converter um saco de propriedades armazenado como texto numa tabela usando um &lt;a title="CLR Table-Valued Functions" href="http://cli.gs/DGRt9u" target="_blank"&gt;CLR Table-Valued Function&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Comecei a pensar que podia obter o valor das propriedades, mas não os podia alterar ou acrescentar novas propriedades.&lt;/p&gt;  &lt;p align="justify"&gt;Passar uma tabela como parâmetro ainda não é possível em &lt;a title="Microsoft SQL Server" href="http://www.microsoft.com/sqlserver/" target="_blank"&gt;SQL Server&lt;/a&gt; 2005, que seria a plataforma alvo.&lt;/p&gt;  &lt;p align="justify"&gt;Poderia criar funções para Criar, Actualizar e Apagar propriedades.&lt;/p&gt;  &lt;p align="justify"&gt;Ou poderia usar XML. Tudo o que seria necessário era criar uma &lt;a title="CLR Scalar-Valued Functions" href="http://cli.gs/ySuXMU" target="_blank"&gt;CLR Scalar-Valued Function&lt;/a&gt; para converter o saco de propriedades numa representação em XML e outra para converter o XML de volta para o formato do saco de propriedades.&lt;/p&gt;  &lt;p align="justify"&gt;Ainda tenho de carregar todo o saco de propriedades para uma variável se quiser fazer alguma alteração, mas pode ser usado em SQL Server 2005.&lt;/p&gt;  &lt;p align="justify"&gt;Converter o saco de propriedades para um documento XML pode ser feito usando o enumerador desenvolvido anteriormente:&lt;/p&gt;  &lt;pre class="code"&gt;[Microsoft.SqlServer.Server.&lt;span style="color: #2b91af"&gt;SqlFunction&lt;/span&gt;(
    Name = &lt;span style="color: #a31515"&gt;"ShortPropsToXml"&lt;/span&gt;,
    IsDeterministic = &lt;span style="color: blue"&gt;true&lt;/span&gt;,
    IsPrecise = &lt;span style="color: blue"&gt;false&lt;/span&gt;,
    DataAccess = &lt;span style="color: #2b91af"&gt;DataAccessKind&lt;/span&gt;.None,
    SystemDataAccess = &lt;span style="color: #2b91af"&gt;SystemDataAccessKind&lt;/span&gt;.None)]
&lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlXml &lt;/span&gt;ShortPropsToXml(&lt;span style="color: blue"&gt;string &lt;/span&gt;shortPropsText)
{
    &lt;span style="color: blue"&gt;var &lt;/span&gt;xml = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"ShortProps"&lt;/span&gt;,
        &lt;span style="color: blue"&gt;from &lt;/span&gt;shortProp &lt;span style="color: blue"&gt;in &lt;/span&gt;ShortPropsEnumerable(shortPropsText)
        &lt;span style="color: blue"&gt;select new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"p"&lt;/span&gt;,
            &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XAttribute&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"n"&lt;/span&gt;, shortProp.Key),
            &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XCData&lt;/span&gt;(shortProp.Value)));

    &lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;buffer = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MemoryStream&lt;/span&gt;())
    {
        &lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;xmlWriter = &lt;span style="color: #2b91af"&gt;XmlWriter&lt;/span&gt;.Create(buffer, &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XmlWriterSettings &lt;/span&gt;{ CheckCharacters = &lt;span style="color: blue"&gt;false &lt;/span&gt;}))
        {
            xml.WriteTo(xmlWriter);
        }

        buffer.Position = 0;

        &lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;XmlReader &lt;/span&gt;xmlReader = &lt;span style="color: #2b91af"&gt;XmlReader&lt;/span&gt;.Create(buffer, &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XmlReaderSettings &lt;/span&gt;{ CheckCharacters = &lt;span style="color: blue"&gt;false &lt;/span&gt;}))
        {
            &lt;span style="color: blue"&gt;return new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlXml&lt;/span&gt;(xmlReader);
        }
    }
}&lt;/pre&gt;

&lt;p align="justify"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Converter o documento XML de volta ao formato do saco de propriedades também é fácil:&lt;/p&gt;

&lt;pre class="code"&gt;[Microsoft.SqlServer.Server.&lt;span style="color: #2b91af"&gt;SqlFunction&lt;/span&gt;(
    Name = &lt;span style="color: #a31515"&gt;"XmlToShortProps"&lt;/span&gt;,
    IsDeterministic = &lt;span style="color: blue"&gt;true&lt;/span&gt;,
    IsPrecise = &lt;span style="color: blue"&gt;false&lt;/span&gt;,
    DataAccess = &lt;span style="color: #2b91af"&gt;DataAccessKind&lt;/span&gt;.None,
    SystemDataAccess = &lt;span style="color: #2b91af"&gt;SystemDataAccessKind&lt;/span&gt;.None)]
&lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlChars &lt;/span&gt;XmlToShortProps(&lt;span style="color: #2b91af"&gt;SqlXml &lt;/span&gt;shortPropsXml)
{
    &lt;span style="color: blue"&gt;var &lt;/span&gt;xml = &lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt;.Parse(shortPropsXml.Value);

    &lt;span style="color: blue"&gt;var &lt;/span&gt;textBuilder = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StringBuilder&lt;/span&gt;();
    &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;item &lt;span style="color: blue"&gt;in &lt;/span&gt;xml.Document.Element(&lt;span style="color: #a31515"&gt;"ShortProps"&lt;/span&gt;).Elements(&lt;span style="color: #a31515"&gt;"p"&lt;/span&gt;))
    {
        textBuilder.AppendFormat(&lt;span style="color: #a31515"&gt;"[[[{1}]]]{0}{2}{0}"&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;Environment&lt;/span&gt;.NewLine, item.Attribute(&lt;span style="color: #a31515"&gt;"n"&lt;/span&gt;).Value, item.Value);
    }

    &lt;span style="color: blue"&gt;return new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlChars&lt;/span&gt;(textBuilder.ToString().ToCharArray());
}&lt;/pre&gt;

&lt;p align="justify"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Agora é só actualizar a assembly na base de dados:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;ALTER ASSEMBLY &lt;/span&gt;[MyAssembly]
&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: red"&gt;'...\MyAssembly.dll'
&lt;/span&gt;&lt;span style="color: blue"&gt;GO&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Definir as Scalar-Valued Functions em &lt;a title="Transact-SQL Overview" href="http://cli.gs/Transact-SQL" target="_blank"&gt;Transact-SQL&lt;/a&gt;:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;CREATE FUNCTION &lt;/span&gt;[dbo]&lt;span style="color: gray"&gt;.&lt;/span&gt;[ShortPropsToXml]&lt;span style="color: gray"&gt;(&lt;/span&gt;@shortPropsText [nvarchar]&lt;span style="color: gray"&gt;(&lt;/span&gt;4000&lt;span style="color: gray"&gt;))
&lt;/span&gt;&lt;span style="color: blue"&gt;RETURNS &lt;/span&gt;[xml] &lt;span style="color: blue"&gt;WITH EXECUTE AS CALLER
AS 
EXTERNAL &lt;/span&gt;NAME [Esi.SA.Encyclopedia]&lt;span style="color: gray"&gt;.&lt;/span&gt;[ShortProps]&lt;span style="color: gray"&gt;.&lt;/span&gt;[ShortPropsToXml]
&lt;span style="color: blue"&gt;GO
&lt;/span&gt;
&lt;span style="color: blue"&gt;CREATE FUNCTION &lt;/span&gt;[dbo]&lt;span style="color: gray"&gt;.&lt;/span&gt;[XmlToShortProps]&lt;span style="color: gray"&gt;(&lt;/span&gt;@shortPropsXml [xml]&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;RETURNS &lt;/span&gt;[nvarchar]&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;max&lt;/span&gt;&lt;span style="color: gray"&gt;) &lt;/span&gt;&lt;span style="color: blue"&gt;WITH EXECUTE AS CALLER
AS 
EXTERNAL &lt;/span&gt;NAME [Esi.SA.Encyclopedia]&lt;span style="color: gray"&gt;.&lt;/span&gt;[ShortProps]&lt;span style="color: gray"&gt;.&lt;/span&gt;[XmlToShortProps]
&lt;span style="color: blue"&gt;GO
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;E está pronto para ser usado.&lt;/p&gt;

&lt;p align="justify"&gt;Agora, dada esta definição do saco de propriedades:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;declare &lt;/span&gt;@text &lt;span style="color: blue"&gt;nvarchar&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;max&lt;/span&gt;&lt;span style="color: gray"&gt;)=&lt;/span&gt;&lt;span style="color: red"&gt;'[[[name1]]]
value1
[[[name2]]]
value2
[[[name3]]]
value3
'
&lt;/span&gt;&lt;/pre&gt;

&lt;p align="justify"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Posso convertê-lo em XML:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;DECLARE &lt;/span&gt;@xml [xml] &lt;span style="color: gray"&gt;= &lt;/span&gt;dbo&lt;span style="color: gray"&gt;.&lt;/span&gt;ShortPropsToXml&lt;span style="color: gray"&gt;(&lt;/span&gt;@text&lt;span style="color: gray"&gt;)&lt;/span&gt;&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;div align="justify"&gt;Alterar o valor de uma propriedade: &lt;/div&gt;

    &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;@xml&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: blue"&gt;modify&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'replace value of (/ShortProps/p[@n="name2"]/text())[1] with "new value2"'&lt;/span&gt;&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;div align="justify"&gt;Inserir uma nova propriedade: &lt;/div&gt;

    &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;@xml&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: blue"&gt;modify&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'insert &amp;lt;p n="name4"&amp;gt;Value4.1
Value4.2&amp;lt;/p&amp;gt; after (/ShortProps/p[@n="name2"])[1]'&lt;/span&gt;&lt;span style="color: gray"&gt;)&lt;/span&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;div align="justify"&gt;Apagar uma propriedade:&lt;/div&gt;

    &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;@xml&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: blue"&gt;modify&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'delete (/ShortProps/p[@n="name3"])[1]'&lt;/span&gt;&lt;span style="color: gray"&gt;)&lt;/span&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;div align="justify"&gt;E converter de volta para o formato de saco de propriedades:&lt;/div&gt;

    &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;print &lt;/span&gt;dbo&lt;span style="color: gray"&gt;.&lt;/span&gt;XmlToShortProps&lt;span style="color: gray"&gt;(&lt;/span&gt;@xml&lt;span style="color: gray"&gt;)&lt;/span&gt;&lt;/pre&gt;
    &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

    &lt;pre class="code"&gt;[[[name1]]]
value1
[[[name2]]]
new value2
[[[name4]]]
Value4.1
Value4.2&lt;/pre&gt;
    &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;div align="justify"&gt;Consultar como se fosse uma tabela: &lt;/div&gt;

    &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;select &lt;/span&gt;T&lt;span style="color: gray"&gt;.&lt;/span&gt;C&lt;span style="color: gray"&gt;.&lt;/span&gt;value&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'./@n'&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;&lt;span style="color: red"&gt;'nvarchar(max)'&lt;/span&gt;&lt;span style="color: gray"&gt;) &lt;/span&gt;&lt;span style="color: blue"&gt;as &lt;/span&gt;Name&lt;span style="color: gray"&gt;, &lt;/span&gt;T&lt;span style="color: gray"&gt;.&lt;/span&gt;C&lt;span style="color: gray"&gt;.&lt;/span&gt;value&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'.'&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;&lt;span style="color: red"&gt;'nvarchar(max)'&lt;/span&gt;&lt;span style="color: gray"&gt;) &lt;/span&gt;&lt;span style="color: blue"&gt;as &lt;/span&gt;Value &lt;span style="color: blue"&gt;from &lt;/span&gt;@xml&lt;span style="color: gray"&gt;.&lt;/span&gt;nodes&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'/ShortProps/p'&lt;/span&gt;&lt;span style="color: gray"&gt;) &lt;/span&gt;T&lt;span style="color: gray"&gt;(&lt;/span&gt;C&lt;span style="color: gray"&gt;)&lt;/span&gt;&lt;/pre&gt;

    &lt;table style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;&lt;tbody&gt;
        &lt;tr&gt;
          &lt;th style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;Name&lt;/th&gt;

          &lt;th style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;Value&lt;/th&gt;
        &lt;/tr&gt;

        &lt;tr&gt;
          &lt;td style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;name1&lt;/td&gt;

          &lt;td style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;value1&lt;/td&gt;
        &lt;/tr&gt;

        &lt;tr&gt;
          &lt;td style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;name2&lt;/td&gt;

          &lt;td style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;new value2&lt;/td&gt;
        &lt;/tr&gt;

        &lt;tr&gt;
          &lt;td style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;name4&lt;/td&gt;

          &lt;td style="border-bottom: black thin solid; border-left: black thin solid; border-top: black thin solid; border-right: black thin solid"&gt;Value4.1 
            &lt;br /&gt;Value4.2&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;&lt;/table&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p align="justify"&gt;Infelizmente, a aplicação usa caracteres que são inválidos para o SQL Server como caracteres XML e não posso usar estas funções.&lt;/p&gt;</description><dc:creator>Paulo Morgado</dc:creator></item><item><title>Brincando Com SQL Server CLR Integration – Parte I</title><link>http://weblogs.pontonetpt.com/pjmorgado/posts/29375.aspx</link><pubDate>Sun, 14 Jun 2009 15:05:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/pjmorgado/posts/29375.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/pjmorgado/comments/29375.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/pjmorgado/comments/commentRss/29375.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/pjmorgado/posts/29375.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/pjmorgado/trackback.aspx?ID=29375</trackback:ping><source url="http://weblogs.pontonetpt.com/pjmorgado/rss.aspx">Paulo Morgado</source><description>&lt;p align="justify"&gt;Actualmente, estou a trabalhar com uma aplicação que armazena propriedades num saco num coluna &lt;a title="Microsoft SQL Server" href="http://www.microsoft.com/sqlserver/" target="_blank"&gt;SQL Server&lt;/a&gt;, no seguinte formato:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: black"&gt;[[[name1]]]
value1
[[[name2]]]
value2.1
value2.2
[[[name3]]]
value3&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Não me perguntem porque o fizeram assim, Apenas fizeram.&lt;/p&gt;

&lt;p align="justify"&gt;A aplicação descodifica este saco para as suas estruturas internas e tudo funciona bem.&lt;/p&gt;

&lt;p align="justify"&gt;Mas algumas vezes eu gostava de efectuar algumas consultas directamente à base de dados ou extraír alguns relatórios incluindo essas propriedaes e não posso.&lt;/p&gt;

&lt;p align="justify"&gt;Então pensei que este seria um bom caso de uso para a SQL Server &lt;a title="Overview of CLR Integration" href="http://cli.gs/rDr0Yj" target="_blank"&gt;CLR Integration&lt;/a&gt;. Decidi criar uma &lt;a title="CLR Table-Valued Functions" href="http://cli.gs/DGRt9u" target="_blank"&gt;CLR Table-Valued Function&lt;/a&gt; que me retornasse o saco de propriedades como uma tabela com duas colunas.&lt;/p&gt;

&lt;p align="justify"&gt;Descodificar o texto do saco de propriedades pode ser facilmente alcançado usando uma simples expressão regular:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Regex&lt;/span&gt;(
        &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;@"(?&amp;lt;Name&amp;gt;(?&amp;lt;=\[\[\[).*(?=\]\]\]{0}))\]\]\]{0}(?&amp;lt;Value&amp;gt;(([\s\S]*?(?={0}\[\[\[))|([\s\S]*?(?={0}$))))"&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;Environment&lt;/span&gt;.NewLine),
        &lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.Multiline | &lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.ExplicitCapture | &lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.CultureInvariant | &lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.Compiled);&lt;/pre&gt;

&lt;p align="justify"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;O &lt;a title="Ultrapico's Expresso" href="http://cli.gs/Ultrapico-Expresso" target="_blank"&gt;Expresso&lt;/a&gt; da &lt;a title="Ultrapico" href="http://cli.gs/Ultrapico" target="_blank"&gt;Ultrapico&lt;/a&gt; foi uma grande ajuda para criar esta expressão regular.&lt;/p&gt;

&lt;p align="justify"&gt;Para quem não sabe, a forma como uma CLR Table-Valued Function é implementada é usando um método inicial que recebe os parâmetros de entrada e retorna um IEnumerable e um método que recebe os itens do enumerador e retorna, como parâmetros de saída, as células da linha correspondente.&lt;/p&gt;

&lt;p align="justify"&gt;Como se tratam de pares nome-valor do tipo string, decidi usar instÂncias de &lt;a title="KeyValuePair&amp;lt;(Of &amp;lt;(TKey, TValue&amp;gt;)&amp;gt;) Structure" href="http://msdn.microsoft.com/library/5tbh8a42.aspx" target="_blank"&gt;)&amp;gt;) Structure" href="http://msdn.microsoft.com/library/5tbh8a42.aspx" target=_blank&amp;gt;KeyValuePair&lt;/a&gt;&amp;lt;string, string&amp;gt; para armazenar os itens e o construír o enumerador foi tão simples como:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;&amp;gt; ShortPropsEnumerable(&lt;span style="color: blue"&gt;string &lt;/span&gt;shortPropsText)
{
    &lt;span style="color: blue"&gt;return from &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Match &lt;/span&gt;m &lt;span style="color: blue"&gt;in &lt;/span&gt;shortPropsRegex.Matches(shortPropsText)
           &lt;span style="color: blue"&gt;select new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(m.Groups[&lt;span style="color: #a31515"&gt;"Name"&lt;/span&gt;].Value, m.Groups[&lt;span style="color: #a31515"&gt;"Value"&lt;/span&gt;].Value);
}&lt;/pre&gt;

&lt;p align="justify"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;E a implementação da CLR Table-Valued Function foi tão simples como: &lt;/p&gt;

&lt;pre class="code"&gt;[Microsoft.SqlServer.Server.&lt;span style="color: #2b91af"&gt;SqlFunction&lt;/span&gt;(
    Name = &lt;span style="color: #a31515"&gt;"ShortPropsToTable"&lt;/span&gt;,
    FillRowMethodName = &lt;span style="color: #a31515"&gt;"ShortPropsToTableFillRow"&lt;/span&gt;,
    TableDefinition = &lt;span style="color: #a31515"&gt;"Name NVARCHAR(4000), Value NVARCHAR(4000)"&lt;/span&gt;,
    IsDeterministic = &lt;span style="color: blue"&gt;true&lt;/span&gt;,
    IsPrecise = &lt;span style="color: blue"&gt;false&lt;/span&gt;,
    DataAccess = &lt;span style="color: #2b91af"&gt;DataAccessKind&lt;/span&gt;.None,
    SystemDataAccess = &lt;span style="color: #2b91af"&gt;SystemDataAccessKind&lt;/span&gt;.None)]
&lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable &lt;/span&gt;ShortPropsToTable(&lt;span style="color: blue"&gt;string &lt;/span&gt;shortPropsText)
{
    &lt;span style="color: blue"&gt;return &lt;/span&gt;ShortPropsEnumerable(shortPropsText);
}

&lt;span style="color: blue"&gt;public static void &lt;/span&gt;ShortPropsToTableFillRow(&lt;span style="color: blue"&gt;object &lt;/span&gt;item, &lt;span style="color: blue"&gt;out &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlChars &lt;/span&gt;name, &lt;span style="color: blue"&gt;out &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlChars &lt;/span&gt;value)
{
    &lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; shortProp = (&lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;)item;

    name = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlChars&lt;/span&gt;(shortProp.Key);
    value = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlChars&lt;/span&gt;(shortProp.Value);
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Para usar esta função numa base de dados SQL Server são necessários alguns passos:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;div align="justify"&gt;Carregar a assembly a base de dados: &lt;/div&gt;

    &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;CREATE ASSEMBLY &lt;/span&gt;[MyAssembly]
&lt;span style="color: blue"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: red"&gt;'...\MyAssembly.dll'
&lt;/span&gt;&lt;span style="color: blue"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: blue"&gt;SAFE
GO&lt;/span&gt;&lt;/pre&gt;
    &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;
    &lt;div align="justify"&gt;Definir a &lt;a title="Table-Valued User-Defined Functions" href="http://cli.gs/GngXhh" target="_blank"&gt;Table-Valued User-Defined Function&lt;/a&gt; em &lt;a title="Transact-SQL Overview" href="http://cli.gs/Transact-SQL" target="_blank"&gt;Transact-SQL&lt;/a&gt;: &lt;/div&gt;

    &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;CREATE FUNCTION &lt;/span&gt;[dbo]&lt;span style="color: gray"&gt;.&lt;/span&gt;[ShortPropsToTable]&lt;span style="color: gray"&gt;(&lt;/span&gt;@shortPropsText [nvarchar]&lt;span style="color: gray"&gt;(&lt;/span&gt;4000&lt;span style="color: gray"&gt;))
&lt;/span&gt;&lt;span style="color: blue"&gt;RETURNS  TABLE &lt;/span&gt;&lt;span style="color: gray"&gt;(
    &lt;/span&gt;[Name] [nvarchar]&lt;span style="color: gray"&gt;(&lt;/span&gt;4000&lt;span style="color: gray"&gt;) NULL,
    &lt;/span&gt;[Value] [nvarchar]&lt;span style="color: gray"&gt;(&lt;/span&gt;4000&lt;span style="color: gray"&gt;) NULL
) &lt;/span&gt;&lt;span style="color: blue"&gt;WITH EXECUTE AS CALLER
AS 
EXTERNAL &lt;/span&gt;NAME [MyAssembly]&lt;span style="color: gray"&gt;.&lt;/span&gt;[ShortProps]&lt;span style="color: gray"&gt;.&lt;/span&gt;[ShortPropsToTable]
&lt;span style="color: blue"&gt;GO
&lt;/span&gt;&lt;/pre&gt;
    &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;
    &lt;div align="justify"&gt;Habilitar a CLR Integration: &lt;/div&gt;

    &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;EXEC &lt;/span&gt;&lt;span style="color: maroon"&gt;sp_configure &lt;/span&gt;&lt;span style="color: red"&gt;'clr enabled'&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;1
&lt;span style="color: blue"&gt;GO
RECONFIGURE
GO&lt;/span&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p align="justify"&gt;E está pronto a usar.&lt;/p&gt;

&lt;p align="justify"&gt;Agora posso fazer consultas ao saco de propriedaes como se fosse uma tabela:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;SELECT
    &lt;/span&gt;e&lt;span style="color: gray"&gt;.&lt;/span&gt;[ID]&lt;span style="color: gray"&gt;,
    &lt;/span&gt;e&lt;span style="color: gray"&gt;.&lt;/span&gt;[Name]&lt;span style="color: gray"&gt;,
    &lt;/span&gt;e&lt;span style="color: gray"&gt;.&lt;/span&gt;[Class]&lt;span style="color: gray"&gt;,
    &lt;/span&gt;e&lt;span style="color: gray"&gt;.&lt;/span&gt;[Type]&lt;span style="color: gray"&gt;,
    &lt;/span&gt;p&lt;span style="color: gray"&gt;.&lt;/span&gt;[Name]&lt;span style="color: gray"&gt;,
    &lt;/span&gt;p&lt;span style="color: gray"&gt;.&lt;/span&gt;[Value]
&lt;span style="color: blue"&gt;FROM
    &lt;/span&gt;dbo&lt;span style="color: gray"&gt;.&lt;/span&gt;Entity &lt;span style="color: blue"&gt;as &lt;/span&gt;e
    &lt;span style="color: gray"&gt;CROSS APPLY &lt;/span&gt;dbo&lt;span style="color: gray"&gt;.&lt;/span&gt;ShortPropsToTable&lt;span style="color: gray"&gt;(&lt;/span&gt;e&lt;span style="color: gray"&gt;.&lt;/span&gt;[ShortProps]&lt;span style="color: gray"&gt;) &lt;/span&gt;&lt;span style="color: blue"&gt;as &lt;/span&gt;p&lt;/pre&gt;

&lt;p align="justify"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Apenas como curiosidade, para um pouco mais de 50000 linhas (que podem ser obtidas em cerca de 1 segundo no meu laptop), obtive um pouco menos de 630000 propriedades em menos de 40 segundos.&lt;/p&gt;

&lt;p align="justify"&gt;40 segundos podem parece muito quando comparados com 1 segundo, mas gostava de ver  tempos melhores usando T-SQL. E desenvolver e testar a TVF em apenas um par de horas.&lt;/p&gt;

&lt;p align="justify"&gt;Se ao menos os DBAs me deixassem usar isto. CLR Integration não está conforme a “política de segurança” da empresa.&lt;/p&gt;</description><dc:creator>Paulo Morgado</dc:creator></item><item><title>Permissão de Página Utilizando Web.Config</title><link>http://weblogs.pontonetpt.com/mauriciojunior/posts/29271.aspx</link><pubDate>Tue, 09 Jun 2009 18:49:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/mauriciojunior/posts/29271.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/mauriciojunior/comments/29271.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/mauriciojunior/comments/commentRss/29271.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/mauriciojunior/posts/29271.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/mauriciojunior/trackback.aspx?ID=29271</trackback:ping><source url="http://weblogs.pontonetpt.com/mauriciojunior/rss.aspx">Mauricio Junior - MCP, MCAD Microsoft .NET</source><description> Olá pessoal, gostaria de mostrar neste artigo a facilidade que temos para dar permissão em páginas utilizando o arquivo de configuração web.config.
&lt;br /&gt;&lt;br /&gt;
Informações adicionais:&lt;br /&gt;
Ferramenta utilizada: Visual Studio.NET 2008 TS&lt;br /&gt;
Tipo de aplicativo: ASP.NET ou seja, tipo web&lt;br /&gt;
Framework: 3.5, inferior ou superior&lt;br /&gt;
Linguagem: Pode ser feito em qualquer linguagem de desenvolvimento como: C#.NET, VB.NET, J#.NET, COBOL.NET.&lt;br /&gt;
&lt;br /&gt;
    Hoje em dia com a facilidade e utilização da web (intranet e internet), existem programadores utilizando o desenvolvimento de sistemas web achando melhor do que fazer um sistema local. Existem alguns benefícios e malefícios; não quero entrar nesse mérito neste momento.&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.aspneti.com/permissao+de+pagina+utilizando+webconfig+680,0.aspx"&gt;&lt;b&gt;Leia mais&lt;/b&gt;&lt;/a&gt;</description><dc:creator>Mauricio Junior</dc:creator></item><item><title>Cursos gratuitos para VS2010</title><link>http://weblogs.pontonetpt.com/joaocardoso/posts/29270.aspx</link><pubDate>Tue, 09 Jun 2009 09:13:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/joaocardoso/posts/29270.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/joaocardoso/comments/29270.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/joaocardoso/comments/commentRss/29270.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/joaocardoso/posts/29270.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/joaocardoso/trackback.aspx?ID=29270</trackback:ping><source url="http://weblogs.pontonetpt.com/joaocardoso/rss.aspx">João Cardoso</source><description>&lt;p&gt;A Microsoft disponibilizou como tem vindo a ser hábito alguns cursos para quem quer começar desde já a dar-lhe no Visual Studio 2010.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/usisvde/archive/2009/06/08/free-online-training-courses-offered-for-visual-studio-2010-beta-1-net-framework-4-0.aspx" target="_blank"&gt;Ver post original&lt;/a&gt;&lt;/p&gt;</description><dc:creator>João Cardoso</dc:creator></item><item><title>Content Editor Webpart e o Content Deploy</title><link>http://weblogs.pontonetpt.com/jf_rocha/posts/29268.aspx</link><pubDate>Mon, 08 Jun 2009 14:17:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/jf_rocha/posts/29268.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/jf_rocha/comments/29268.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/jf_rocha/comments/commentRss/29268.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/jf_rocha/posts/29268.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/jf_rocha/trackback.aspx?ID=29268</trackback:ping><source url="http://weblogs.pontonetpt.com/jf_rocha/rss.aspx">João Filipe Rocha</source><description>&lt;p&gt;&lt;img alt="" src="http://media3.guzer.com/pictures/paint_kids.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Para disponibilizar HTML numa pagina em Sharepoint a Content Editor webpart , é uma solução. &lt;/p&gt;
&lt;p&gt;Embora seja necessário ter algumas cautelas tais como: &lt;/p&gt;
&lt;p&gt;Se a nossa tipologia de Sharepoint consiste em ter uma Farm com um servidor de Authoring (inserção de conteúdos) e um servidor de Web Front End (WFE), não utilizar o Rich Editor da content editor webpart, pois o Rich Editor transforma URL’s relatios em absolutos, e em WFE ficam coisas a apontar para Authoring. &lt;/p&gt;
&lt;p&gt;Outra cautela é com o content deploy pois por vezes o HTML inserido na webpart não é o mesmo que passa para o WFE, nomeadamente Anchors com Imagens. &lt;/p&gt;
&lt;p&gt;Segundo a Microsoft a &lt;a href="http://office.microsoft.com/en-us/sharepointserver/HA100240461033.aspx"&gt;solução&lt;/a&gt; para este problema é editar os conteúdos no WFE, sim aquele que não é suposto ter acesso, enfim aqui fica o aviso. &lt;/p&gt;
&lt;p&gt;Um dos workarounds para forçar os links relativos é criar uma feature que aceda á colecção de links guardados na webpart e os torne relativos denovo.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/09/27/11463.aspx"&gt;Solução 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/maximeb/archive/2008/12/23/fixing-absolute-urls-for-all-alternate-access-mappings-aam-of-content-editor-web-part-with-a-control-adapter.aspx"&gt;Solução 2&lt;/a&gt;&lt;/p&gt;</description><dc:creator>João Filipe Rocha</dc:creator></item><item><title>MIX&amp;rsquo;09 &amp;ndash; Reviewing &amp;ndash; Future of Expression Blend</title><link>http://weblogs.pontonetpt.com/mutley/posts/29267.aspx</link><pubDate>Mon, 08 Jun 2009 13:19:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/mutley/posts/29267.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/mutley/comments/29267.aspx</wfw:comment><wfw:commentRss>http://weblogs.pontonetpt.com/mutley/comments/commentRss/29267.aspx</wfw:commentRss><comments>http://weblogs.pontonetpt.com/mutley/posts/29267.aspx#comment</comments><trackback:ping>http://weblogs.pontonetpt.com/mutley/trackback.aspx?ID=29267</trackback:ping><source url="http://weblogs.pontonetpt.com/mutley/rss.aspx">Nuno Filipe Godinho</source><description>&lt;p&gt;Douglas Olson – General Manager&lt;/p&gt; &lt;p&gt;Christian Schormann – Director, Program Manager&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Expression Mission&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Enable professional designers to create great &lt;em&gt;UX&lt;/em&gt; with &lt;em&gt;better productivity &lt;/em&gt;at &lt;em&gt;lower costs.&lt;/em&gt;  &lt;/li&gt;&lt;li&gt;Help integrate design and designers into the process of software creation &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Expression Blend 3 Goals&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Enable early-stage design &amp;amp; prototyping (SketchFlow)  &lt;ul&gt; &lt;li&gt;Created to address issues felt at the start of the software design process:  &lt;ul&gt; &lt;li&gt;Top-down &amp;amp; bottom-ups design lets you experiments with ideas  &lt;/li&gt;&lt;li&gt;SketchFlow Player lets you try your design at any time  &lt;/li&gt;&lt;li&gt;Facilitate communication of design ideas  &lt;/li&gt;&lt;li&gt;Easy to gather, evaluate and use stakeholders feedback &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Blend Elements  &lt;ul&gt; &lt;li&gt;SketchFlow Application Flow  &lt;ul&gt; &lt;li&gt;Important to think on pages like whiteboards to sketch, insert elements, and all what you normally do. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Usage of SketchStyles that will allow us to maintain the Sketchy style of the Design proposal, that is very important.  &lt;/li&gt;&lt;li&gt;Export to Word  &lt;ul&gt; &lt;li&gt;Dumps all the SketckFlow elements like Application Flow, Pages, Comments and so on. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Make visual design easier for designer  &lt;ul&gt; &lt;li&gt;Embrace the Design Ecosystem  &lt;ul&gt; &lt;li&gt;Adobe Photoshop &amp;amp; Illustrator file format import with extensive support for layers  &lt;ul&gt; &lt;li&gt;Preview of Photoshop in Windows Explorer even without PhotoShop installed  &lt;/li&gt;&lt;li&gt;Possibility to choose what to do with each layer  &lt;/li&gt;&lt;li&gt;Blend informs if the font is default or not and gives the possibility to choose other font or even the same font by specifying the path of the font  &lt;/li&gt;&lt;li&gt;All content will be fully editable  &lt;/li&gt;&lt;li&gt;Layer Groups are also maintained  &lt;/li&gt;&lt;li&gt;By selecting an object we can make “Make into Control”  &lt;ul&gt; &lt;li&gt;We choose the type of control we want to create  &lt;/li&gt;&lt;li&gt;What’s done is:  &lt;ul&gt; &lt;li&gt;A style is created in order for the control to became what was defined when we selected the elements to generate the control.  &lt;/li&gt;&lt;li&gt;The control created will replace the selected element and gain the same properties that the original element had.  &lt;/li&gt;&lt;li&gt;The style is associates to the control  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Note: &lt;/strong&gt;There’s now a problem when the controls have different parts, like the Slider, and this will generate all but we need to wire-up the style to the correct parts &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Fast and Easy Control Skinning  &lt;/li&gt;&lt;li&gt;Enhanced editing of visual States  &lt;/li&gt;&lt;li&gt;Richer state transitions &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Focus On Your Art  &lt;ul&gt; &lt;li&gt;Redefined artboard interaction  &lt;/li&gt;&lt;li&gt;Better gradient editing &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Design with Data (Data Generation / Sampling inside Blend)  &lt;ul&gt; &lt;li&gt;In the Data Tab we will have the possibility to define the DataSource structure that we want, and then just generate the data, and there are some templates like Phone Numbers, Strings, Dates, and so on.  &lt;/li&gt;&lt;li&gt;Make it easy to build a data-driven applications:  &lt;ul&gt; &lt;li&gt;Sample Data:  &lt;ul&gt; &lt;li&gt;Design applications without access to live data source  &lt;/li&gt;&lt;li&gt;Create sample data on the fly  &lt;/li&gt;&lt;li&gt;Populate with configurable random data &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Drag and Drop Master-Detail creation  &lt;/li&gt;&lt;li&gt;Better user experience for data binding  &lt;/li&gt;&lt;li&gt;Design-time support for Silverlight 3 controls &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;There’s a Master and a Details Mode in the Data Tab that will make it easier to perform the Master-Details view  &lt;ul&gt; &lt;li&gt;in this version of Blend we need to wire-up the Master and Detail elements, and this will not be needed in the last version of Blend &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Build interactivity without code (Behaviors)  &lt;ul&gt; &lt;li&gt;Introduction to Behaviors:  &lt;ul&gt; &lt;li&gt;Production-quality interactivity applied with Drag &amp;amp; Drop ease  &lt;/li&gt;&lt;li&gt;A design pattern for reusable interactivity  &lt;/li&gt;&lt;li&gt;Example: MouseGestureBehavior  &lt;ul&gt; &lt;li&gt;You can define the gesture that will be used and make changes to the elements based on that gesture &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Enable Source Code Control (Integration with Source Safe and TFS by default) – This is available also inside Expression Web  &lt;ul&gt; &lt;li&gt;Design for Developers  &lt;ul&gt; &lt;li&gt;Source Control  &lt;ul&gt; &lt;li&gt;Visual Studio Team Foundation Server Support  &lt;/li&gt;&lt;li&gt;New editor with Intellisense for code &amp;amp; XAML &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Support for Silverlight 3 &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;The same features are available for WPF and Silverlight in Blend 3.&lt;/p&gt; &lt;p&gt;It’s important to avoid having final or high-definition elements in the Sketch design because customers will start looking in the direction of the rendering instead of the functionality.&lt;/p&gt;&lt;/blockquote&gt;</description><dc:creator>Nuno Filipe Godinho</dc:creator></item><item><title>MIX&amp;rsquo;09 &amp;ndash; Reviewing &amp;ndash; Future of Expression Blend</title><link>http://weblogs.pontonetpt.com/mutley/posts/29266.aspx</link><pubDate>Mon, 08 Jun 2009 13:15:00 GMT</pubDate><guid isPermaLink="true">http://weblogs.pontonetpt.com/mutley/posts/29266.aspx</guid><wfw:comment>http://weblogs.pontonetpt.com/mutley/comments/29266