Home
Revista PROGRAMAR, Edição 31 (Outubro 2011)
Contents
1. Take 2 List Console Out WriteLine Edicao 0 edicao DataEdicao 1 primeira vista dever amos obter duas edi es distintas E em muitos casos isso que temos No entanto ocasional mente encontramos edi es duplicadas e ao olharmos para o sql gerado vemos qual o problema SELECT TOP 2 0 2 22 this_ DataEdicao as DataEdicao9 1 this id as TemaDeCapa2 3 1 artigos2 Edicao 1d as Edicao3 3 artigos2 Id as 143 artigos2 ld as 149 O artigos2 Titulo as TituloO O FROM Edicao this left outer join Artigo artigos2_ on this Dat Edicao artigosz2 Edicao Neste caso como feito o carregamento imediato dos artigos atrav s de um join vamos ter edi es repetidas quando uma edi o tem mais que um artigo Como tal esta op o n o aconselhada na maioria dos casos sendo prefer vel configu rar o carregamento de dados por query em vez de forma geral Configurado por rela o no mapeamento tem tamb m a des vantagem de carregar os dados mesmo que n o sejam usa dos Como tal estas solu es s o pouco flex veis visto assumirem que se pretende sempre os mesmos dados rela cionados com as entidades em todos os casos de uso Para maior flexibilidade a solu o acaba por passar por indi car no query quais as colec es que se pretende carregar imediatamente ES PESE E E E foreach var artigo in session QueryOver Artigo
2. Fetch a gt a Autores Eager List Console Out WriteLine Artigo 0 com autores 1 artigo Titulo string Jon 7772 artigo Autores Select a gt a Nome ToArray Aqui estamos a indicar que queremos carregar a colec o Autores do Artigo juntamente com o artigo O sql gerado usa joins para obter os dados das entidades relacionadas SELECT 00158214 as Id0_1_ tnis Titulo as TituloO 1 autores2 Artigo id as Artigo4 3 autores2 Id es _ autores2 Id as Idi 0 autores2 as Nome1 O autores2 Email as 111 0 FROM Artigo this left outer join Autor autores2_ on this Id autores2 Artigo id Se olharmos para os m todos Get e Load n o temos nenhu ma forma de configurar eager loading nesses casos DA Como tal a forma de o fazer com uma query id confi e BatchSize o n mero de inst ncias de uma rela o que s o gurando ai que rela es que pretendemos carregar logo carregadas em simult neo em vez de separadas Configura do desta forma o seguinte c digo foreach var artigo in session QueryOver Artigo AA H Where a gt a Id idTerceiroArtigo foreach var artigo in session QueryOver Artigo Fetch a gt a Autores Eager List var autores artigo Autores Select artigo Autores Select a gt a Nome a gt a Nome ToArray Console Out WriteLi
3. ListBox ca es desenvolvidas em Silverlight Caso pr tico 7 Formatar o dia de anivers rio usando o StringFormat Microsoft y Silverlight Sara Silva licenciada em Matem tica Especialidade em Computac o pela Universidade de Coimbra actualmente Software Developer no Porto O entusiasmo pela rea resultou na obtenc o dos t tulos de Microsoft Certified Profissional Developer Windows 3 5 Microsoft Certified Tecnology Specialist WPF 3 5 WPF 4 e Windows Forms COLUNAS VISUAL NOT BASIC Primeiros passos com GDI CoreDump Martelo lt gt In pcia VISUAL NOT BASIC Primeiros passos com 601 GDI GDI ou Graphic Device Interface a respons vel directa ou indirectamente total ou parcialmente por tudo o que nos chega aos olhos no mundo Windows Se n o existe acelera o por hardware e estamos a ver cur vas linhas texto e gr ficos desenhados porque a GDl assim o permite Atrav s desta conseguimos de forma bastante penosa para os produtos de desenvolvimento Microsoft de outrora desenhar geometria gr ficos e fontes para o ecr ou para a impressora Com a evolu o dos tempos surgem novas necessidades e por volta do Windows XP a Microsoft cria uma API para C C que chamou simplesmente de GDI A API resistiu at hoje onde j se tentam incutir tecnologias baseadas em GDI mas que visam substitu la como Direct2D A nova
4. O sql gerado inclui j o join necess rio para carregar o tema de capa EEE SELECT edicao0 DataEdicao as DataEdicao3 1 edicao0 TemaDeCapa id as TemaDeCapa2 3 1 artigo ld as 149 0 artigo Titulo as TituloO 0 FROM Edicao edicao0 left outer join Artigo artigol on edicao0 TemaDeCapa id artigo1 Id WHERE edicao0_ DataEdicao 2011 07 01T00 00 00 00 H aqui dois comportamentos que s o necess rio distinguir o da rela o de muitos para um TemaDeCapa e o da rela c o de um para muitos Artigos Como a classe Artigo que deixa de ser lazy loaded quan do o NHibernate faz um query a partir da Edicao repara que n o vai poder criar a proxy para o TemaDeCapa e cria o sql necess rio para carregar os dados do Artigo corresponden te No caso dos Artigos n o surge esse problema porque n o necessita de criar as inst ncias imediatamente apenas uma lista que as vai guardar At iterarmos por esta lista n o pre cisamos de construir as respectivas inst ncias de Artigos Para carregar os dados dos Artigos sempre que uma edic o carregada usamos a seguinte configurac o 7 public class EdicaoOverride IAutoMappingOverri de Edicao public void Override AutoMapping lt Edicao gt mapping mapping HasMany e gt e Artigos Not LazyLoad j Neste caso estamos a indicar que quando uma Edicao carregada os Artigos tamb m o s o A forma de carregar os dados varia ent
5. Uma das funcionalidades que ainda n o existe em SQLAzu re a capacidade de realizar backup ou restore de uma base de dados Apesar do estarmos na presen a de um ser vi o de alta disponibilidade onde n o existe a preocupa o com a perca de informa o continuamos a ter que lidar com poss veis corrup es nas bases de dados devido a erros nas aplica es N o existe cross database querying Em SQL Azure n s temos a capacidade de alugar bases de dados e n o servidores de bases de dados N o existe garantia que todas as bases de dados que alugamos est o no mesmo servidor ideia principal que deveremos reter neste caso que n o existe conectividade entre bases de dados Se for necess rio combinar resultados de mais do que uma base de dados teremos que resolver essa quest o na aplica o Deveremos realizar as consultas a todas as bases de dados e depois na aplica o agregar os resulta dos Analysis Services Replication e Service Broker n o est o dispon veis como servi o Apesar de estes servi os ainda n o estarem dispon veis poss vel usar SQL Azure como fonte de dados para a vers o on premisses de Analysis Services e Integration Services N o suporta Database Mirroring ou Failover Clustering Devido s caracter sticas de alta disponibilidade do servi o SQL Azure os servi os de suporte a alta disponibilidade da vers o on premisses tais como database mirroring e failover cluster n o s
6. o o an Teese Cs 527 a A pt ACT PROGRAMAR Programar para Windows Azure O Windows Azure uma plataforma de alta disponibilidade e alta escalabilidade que fornecida como servi o e tem por isso algumas caracter sticas diferentes em rela o plata formas alvo tradicionais Neste artigo vamos tentar alertar o leitor para alguns deta lhes que encontramos em Windows Azure Compute SQLA zure e Windows Azure Storage bem como alguns cuidados que deveremos ter quando desenvolvemos para estes servi Cos Windows Azure Compute I O Performance Existem cinco tipos de inst ncias de Windows Azure Compu te que permitem a execu o de v rias cargas de trabalho e aplica es com v rios n veis de complexidade Local Storage Mem ria CPU Largura de Banda B 1 0GHz 768MB 20GB 5Mbps 1 6 GHz 1 75 GB 225 GB Mbps Tamanho da Large 4x1 6 7 1 000 400 GHz GB Mbps Extralarge 8x1 6 14 GB 2 040 800 GHz GB Mbps Cada inst ncia de Windows Azure Compute representa um servidor virtual Apesar de muitos dos recursos serem dedi cados a essa inst ncia em particular alguns recursos asso ciados performance l O tais como largura de banda e disco r gido s o partilhados entre as inst ncias presentes na mesma m quina f sica Durante os per odos em que os recursos partilhados est o a ser muit
7. session QueryOver Edicao Where e gt e DataEdicao dataEdicao Fetch e gt e Patrocinadores Eager FutureValue var artigos edicao Value Artigos Select a gt a Titulo ToArray Console Out WriteLine Edicao 0 Artigos 111 edicao Value DataEdicao string Join s artigos var patrocinadores edicao Value Patrocinadores Select a gt a Nome Console Out WriteLine Artigo 0 com autores 1 edicao Value DataEdicao string Join patrocinadores Saliente se que usamos apenas o valor do primeiro QueryO ver O segundo apenas usado para carregar os dados da colec o de forma indirecta Isto poss vel uma vez que o NHibernate implementa um identity map dentro da sess o Quando acedemos ao valor do primeiro Future despoletamos todos os Futures regista dos at ao momento na sess o Ao concretizar os objectos resultantes do segundo query o NHibernate encontra a enti dade j na sess o e preenche a colec o que foi carregada com os dados desse query que incluem a rela o Patrocina dores Desta forma conseguimos popular as rela es necess rias apenas com uma chamada base de dados e um conjunto pequeno de queries com apenas um join cada um Short SQL Row Count Duration begin transaction with isolation level Unspecified SELECT v FROM Edicao this left commit transaction DA Como reduzir o ta
8. DateOfBirth public string Address get return address set _address value OnPropertyChanged Adress public string Locality get return _locality set _locality value OnPropertyChanged Locality public int PostalCode get return _postalCode set postalCode value OnPropertyChanged PostalCode public int Contact get return contact PROGRAMAR set contact value OnPropertyChanged Contact public string Mail get return _mail set _mail value OnPropertyChanged Mail public bool IsProgrammer get return isProgrammer set _isProgrammer value OnPropertyChanged IsProgrammer j endregion region INotifyPropertyChanged summary Called when property changed summary param name propertyName gt Name of the property lt param gt public void OnPropertyChanged string propertyName if PropertyChanged null PropertyChanged this new PropertyChangedEventArgs propertyName public event PropertyChangedEventHandler PropertyChanged amp endregion Nota Nos pr ximos casos pr ticos o source atribu do no DataContext da Page e o binding ir subir na hierarquia at encontrar o source Caso pr tico 1 Suponhamos que pretendemos interagir a propriedade Name com uma TextBox Em XAML lt TextBox Name tbxName Text Bindi
9. PROGRAMAR REVISTA PORTUGUESA DE PROGRAMA O WWW PORTUGAL A PROGRAMAR ORG EDI O 31 OUTUBRO 2011 ISSN 1647 0710 T CNICAS PARA SOFTWARE MELHOR E MAIS RAPIDO A PROGRAMAR COLUNAS GERACAO a CORE DUMP 111111 81172118 io VISUAL NOT BASIC PROGRAMA O speres DATABINDING succ 11111119 EDITORIAL EQUIPA PROGRAMAR Coordenadores Ant nio Silva Fernando Martins Editor Ant nio Santos Design S rgio Alves Twitter Dscorpion blood Redac o Ant nio Silva Augusto Manzano Bruno Lopes Fernando Martins Rui Melo Sara Silva S rgio Ribeiro V tor Tomaz Staff Ant nio Santos F bio Canada F bio Domingos Jorge Paulino Pedro Martins Sara Santos Contacto revistaprogramar a portugal a programar org Website http www revista programar info ISSN 1 647 0710 Des Informa o Actualmente muito se t m falado sobre tudo Falado e especulado Com a sa da de Steve Jobs da Apple especula se qual ser o as implica es para a marca da ma Com o lan amento do Windows 8 especula se sobre a capacidade deste conquistar o mercado dos tablets Com a confer ncia da Apple Let s talk about IPhone especulou se sobre o poss vel an ncio da data de lan amento do IPhone 5 Com o abandono da Nokia especulou se o que aconteceria ao sistema operativo Meego E muito mais se especula Infelizmente a nossa sociedade vive presa s especula es e creio que o melhor exemplo
10. com os nomes ProductName ProductCategory ProductDescription etc que por sua vez poder o ser promovidas por configura listas de Sharepoint a web services e WCFs de outras plataformas o que a torna pesada uma abordagem COMUNIDADE SHAREPOINTPT http www sharepointpt org A abordagem do processo de indexac o propositadamente simplista para permitir tirarmos proveito do modelo multith readed da pesquisa levando nos a construir as p ginas t o simples e pequenas quanto poss vel evitando desta forma esgotar os recursos das m quinas O que perdemos com a indexac o via metatags O processo de indexac o baseado em metatags tem uma desvantagem imediata que a descaracterizac o do tipo de dados uma vez que estaremos a indexar p ginas HTML em cujos campos de meta s o sempre indexados como texto No nosso cen rio esta desvantagem minimizada uma vez que os dados indexados s o utilizados apenas para gerac o da apresentac o baseando se os dados e processo de com pra na plataforma Commerce sempre poss vel efectuar transforma es de tipo cast ou parse que devidamente efectuadas n o trazem desvanta gens em termo de estabilidade mas s o opera es pesadas em termos de ciclos de processamento trazendo uma degra da o significativa da performance quando invocadas fre quentemente string myText 123456 int myVal if lint TryParse myText out myVal Ocorreu um erro no processo
11. reduziu significativamente a complexidade para o programador GDI na NET A API j se tinha tornado mais poderosa mais f cil e repre sentando uma bela fatia no bolo da relev ncia de um siste ma operativo s seria natural criar um acesso de alto n vel muito mais f cil e controlado na NET framework De facto a Microsoft n o poderia ter tornado o namespace mais sim ples Para ganharmos acesso a todas as classes expostas basta nos importar fazer refer ncia ao namespace Sys tem Drawing neste namespace que se encontram todas as classes e sub namespaces que nos permitem trabalhar imediatamente com a API Onde posso desenhar Como todos os componentes passam pela GDI todos repre sentam uma potencial folha em branco para os nossos dotes art sticos Isto significa que todos os exemplos neste artigo se aplica dos por exemplo num form podem perfeitamente ser aplica dos desde o panel at a um item de listbox A classe Graphics a nossa porta da frente Podemos preparar uma superf cie GDI com muita facilida de No decorrer do artigo vou desenhar tudo num panel apro veitando o disparo do evento Paint que ocorre sempre que a rea de desenho precise de ser actualizada quer por indica o expl cita invalidando o interface do objecto PanelGDI Invalidate ou porque a rea saiu do ecr ou tem outra janela a tapar Normalmente podemos referenciar a superf cie GDI do objecto por Dim
12. 0 com 1 artigos edicao edicao NumeroArtigos Utilizamos express es para indicar os nomes dos campos sendo que na realidade o que o NHibernate faz apenas associar nomes dos campos projec o Depois o transfor mador Alias ToBean que tem o trabalho de para cada cam po retornado do query procurar uma propriedade com um setter p blico e colocar o valor do campo nessa propriedade Isto quer dizer que poss vel indicar nomes inv lidos ou ter outros problemas semelhantes nos queries no entanto s o erros facilmente detectados com testes de integra o que correm o query visto o NHibernate identificar logo as irregu laridades Conclus o Neste artigo analisamos algumas op es e funcionalidades que nos permitem melhorar as caracter sticas de performan ce das nossas aplica es quer por um carregamento mais inteligente dos dados como pela redu o do tamanho de dados que transferido da base de dados para a aplica o Existem ainda algumas funcionalidades que n o foram men cionadas como interceptores filtros cache de segundo n vel e concorr ncia optimista Ver artigo Revista PROGRAMAR edi o 30 de Agosto 2011 NHibernate do Import Package primeira itera o Y NHibernate Bruno Lopes fez o curso de Engenharia Inform tica no IST e neste momento conta com mais de 5 anos de experi ncia pro fissional em IT em particular nas reas de desenvolvimento de softw
13. A melhor btt de sempre gt lt meta name Productimage content images products 1234567 jpg gt Index Site site_1 lt meta namez Productld content 1234567 gt lt head gt lt body gt lt body gt lt html gt Index SubSite 1 1 SubSite 1 2 SubSite 1 3 SubSite 1 4 SubSite 1 5 m Site site_1 SubSite_1 1 O c digo gerado pela p gina de detalhe do produto algo do tipo Site site 1 SubSite 11 NN Index head title Detalhe de produto title meta name ProductName content Single Track King Detalhe lt meta name ProductCategory content Bicicletas Todo Terreno gt Os principais desafios da componente de indexa o meta name ProductDescription revelam se nesta altura e vale a pena salientar content A melhor btt de sempre gt Uma vez que para um comportamento correcto desta meta name Product Image p gina os dados t m de ser indexados em metatags content images products 125490T pg e consequentemente s o indexados como texto pelo meta name ProductId Sharepoint content 1234567 indexar via metatags perde se a caracteriza o lt head gt dos dados ver O que perdemos com a indexa o via body lt body gt metatags lt html gt e Esta p gina tem de aceder a v rios sistemas desde Ao ser indexada esta p gina far com que sejam criadas propriedades crawlled properties de Sharepoint
14. Demo PostalCodeConverter x Keyz postalCodeConverter navigation Page Resources m sdk DataGrid Columns Definic o da label sdk DataGrid lt sdk Label Name 1blPostalCode Content Binding Path PostalCode Mode TwoWay UpdateSourceTrigger Default Converter StaticResource postalCodeConverter Em code behind A O 5 datagrid ItemsSource professionals PROGRAMAR Caso pr tico 6 No XAML Definir um Item Template para uma listbox No XAML lt TextBox Name 2 tbxDateOfBirth Grid Column 2 Grid Row 2 Text Binding Path DateOfBirth A AA FTC TT Str ingFormat MM dd yyyy o lt ListBox Name IbxProfessionalWidthDataTemplate gt ListBox ItemTemplate Ou DataTemplate AAA ESSE ES StackPanel Urientation Vertical gt TextBox Name tbxDateOfBirth Grid Column 2 lt TextBlock Text Binding Path Name gt Grid Row 2 Text Binding Path DateOfBirth lt TextBlock Text Binding _ StringFormat MMM dd yyyy Path PostalCode Converter StaticResource postalCodeConverter gt lt TextBlock Text Binding Path Address lt TextBlock Text Binding Path Locality gt lt TextBlock Text Binding Path Contact gt lt TextBlock Text Binding Path Mail gt Conclus o lt StackPanel gt Em conclus o o conceito Databinding uma forma simples e eficiente de visualiza o e edi o da informa o nas apli
15. GraphicsUnit Pixel 100 100 Os m todos finalmente _ DrawCurve DrawColsedCurve Pen Pontos Tens o Descrita toda a prepara o est na altura de explorar os m todos da classe Graphics O m todo DrawCurve desenha uma curva linear passando por os pontos no array Pontos aplicando a tens o defenida O namespace Drawing vasto e bastante completo valor de 0 0 a 1 0 Vou apontar apenas o que considero mais importante DrawClosedCurve em tudo semelhante mas liga o ltimo ponto em Pontos ao primeiro fechando a curva DrawArc Pen X Y Width Height Angulolnicial Varrimento Existem mais overloads EEE STO O m todo DrawArc desenha um arco com as propriedades Dim pt1 As New Point 0 0 da Pen com centro em XY inclu do no rect ngulo de largura Dim pt2 As New Point 80 20 Width e altura Height centrado Dim pt3 As New Point 20 80 A curva come a no Angulolnicial e desenhada at ao ngulo Angulolnicial Varrimento Dim pt4 As New Point 100 100 Dim pts As Point New Point ipti pt2 pts Os ngulos s o dados em graus pt4 Existem mais overloads mas s o redundantes EEE PPB eo TT Dim g As Graphics e Graphics Dim g As Graphics e Graphics g DrawCurve New Pen Brushes Black 2 pts 0F ADAM D Pen Brushes Black 2 0 0 100 g DrawCurve New Pen Brushes Black 2 pts 0 5F g DrawCurve New Pen Brushes Black 2 pts 1F g DrawArc New Pen Brushe
16. alguns redundantes Dim pt7 As New Point 20 100 Dim pt8 As New Point 35 60 TESES Dim F As New Font Arial 7 FontStyle Italic Dim pt9 As New Point 0 40 Dim SF As New StringFormat Dim pt1i0 As New Point 40 40 SF Alignment StringAlignment Center Dim pts As Point New Point _ Dim R As New Rectangle 0 50 100 40 pti pt2 pt3 pt4 pto pt6 pt7 pt8 pto pt10 Dim g As Graphics e Graphics Dim g As Graphics e Graphics g DrawString Portugal a Programar F _ g DrawPolygon New Pen Brushes Black 2 pts Brushes Black R SF oF FormatFlags StringFormat Flags DirectionVertical Or StringFormatFlags LineLimit F New Font Arial 10 FontStyle Italic _ Or FontStyle Bold 100 40 g DrawString GDI F Brushes Black 0 20 SF DrawRectangle Pen X Y Width Height O m todo DrawRectangle desenha um rect ngulo com ori a 8 n A maioria dos m todos de prefixo gem no XY especificado e com as dimens es especificadas Draw existe numa segunda vers o Fill Existem mais overloads mas s o redundantes 20 opera o semelhante mas as reas geradas s o DS Chidas de acordo com um brush fornecido quer seja ele s li Dim g As Graphics e Graphics do gradiente textura hatch ou de qualquer outro tipo g DrawRectangle New _ Performance versus Qualidade Pen Brushes Black 2 10 10 80 40 A classe Graphics possui algumas propriedades que defi
17. e Binding Source vai representar um objecto fonte a visualizar editar Dependency Property permite definir o valor da propriedade e reflectir propagar a altera o do valor atribu do assim como permite definir um valor de omiss o Value converter um conversor que permitir efectuar uma transforma o As propriedades a ter em conta 9 Converter permite converter a informa o apresentar ao utilizador 9 ConverterCulture permite definir qual a cultura a utilizar no conversor 9 ConverterParameter permite definir o par metro do conversor 9 ElementName permite definir o nome do controlo ao qual se est usar no binding como objecto fonte 9 FallbackValue permite definir qual o valor atribuir em caso de erro 9 Mode permite definir o modo do binding Existem dois tipos Default e Explicit 9 Path permite definir a propriedade a qual se atribui o binding 9 RelativeSource permite definir qual o objecto fonte associado existindo uma hierarquia relativa ao objecto fonte actual 9 Source permite definir qual o objecto fonte 9 StringFormat permite especificar como formatar a informa o a apresentar 9 TargetNullValue permite definir o valor a usar quando o objecto fonte nulo 9 UpdateSourceTriager permite definir o tipo de actualizac o do binding As propriedades ValidatesOnDataErrors ValidatesOnEx ceptions NotifyOnValidationError ValidatesOnNotifyDataEr rors est o relaciona
18. o encontrar um guia em como retirar os dados dos vossos projectos do portal e migr los para uma plataforma diferente Ver http bit ly gGJfAO A Fraunhofer FOKUS tem um forte compromisso com o Open Source e interoperabilidade e est envolvida em numerosos projectos OSS de sucesso O instituto est focado no desen volvimento de padr es de qualidade para o software open source e em particular na inoperabilidade t cnica sem ntica e organizacional entre componentes de software open source e software closed source Exemplo das nossas actividade OSS incluindo a nossa gest o do Centro de Compet ncia Alem o QualiPSo Agradecemos a todos terem utilizado o BerliOS ao longo dos anos Fraunhofer FOKUS http www fokus fraunhofer de berlios Fonte www berlios de Traduc o Sara Santos TEMA DA LAPA NHibernate T cnicas para software melhor e mais r pido No artigo da edi o anterior abordamos os temas de configu ra o de NHibernate diferentes formas de mapear as entida des e diferentes formas de obter os dados da base de dados no contexto do seguinte dom nio public class Edicao public virtual DateTime DataEdicao get set public virtual Artigo TemaDeCapa get set public virtual IList Artigo Artigos get set public class Artigo public virtual int Id get set public virtual string Titulo get set public virtual ISet Autor Autores get set foreach var artigo in
19. o necess rios e n o est o dispon veis Clustered Indexes s o obrigat rios Todas as tabelas em SQL Azure necessitam de um ter um clustered index Um clustered index um tipo de ndice especial que ordena a forma como os registos s o gravados fisicamente Esta uma das primeiras preocupa es na migra o de bases de dados para SQLAzure N o existe integra o com CLR SQLAzure n o suporta CLR Qualquer base de dados cons tru da usando CLR n o ser poss vel mover para o SQLAzu re sem que se proceda a modifica es PROGRAMAR N o existe acesso as System Tables Devido a inexist ncia de acesso ao hardware que suporta a base de dados em SQLAzure n o existe acesso s system tables do SQLServer Tamb m n o existe acesso s vistas e procedimentos armazenados do sistema SQL Azure necessita de SQL Server Management Studio 2008 R2 Para poder aceder a bases de dados atrav s do SQLServer Management Studio tem que actualizar para a vers o 2008 R2 Apesar de as vers es anteriores estabelecerem liga o com o servidor SQL Azure o Object Browser n o ir funcio nar Podemos usar a vers o gratuita desta ferramenta SQL Server Management Studio Express 2008 R2 Nem todos os dados s o relacionais Esta afirma o n o tr s novidade nenhuma mas ganha especial import ncia no conceito de Cloud Computing e Win dows Azure O Windows Azure disp e de diferentes supor tes ao armazenamento de dados cad
20. viola o de direitos de autor de que foi acusada por copiar o hardware da Apple interp s recurso da decis o alegando que as condi es de licenciamento impostas para o Mac OS constitu am uma tentativa ilegal para estender a prote o dos direitos de autor a produtos que n o podem beneficiar dela A Psystar alegou que ao limitar o uso do software da Apple aos produtos fabricados pela marca a empresa estava a recorrer indevidamente prote o que a lei dispensa aos direitos de autor para falsear a concorr ncia Note se que a fabricante de 5 dos Mac tinha comprado c pias do Mac OS X para instalar nos computadores que vendia A ju za considerou que a concorrente n o tinha apresentado provas de que as condi es de licenciamento do sistema ope rativo fossem lesivas da concorr ncia ou criatividade Os termos das licen as do software da Apple n o restringem a possibilidade de os concorrentes desenvolverem o seu pr prio software nem impede os clientes de usarem componen tes de outra marca em computadores Apple entendeu a magistrada citada pela Ars Technica O que a Apple faz restringir o uso de software da marca ao seu pr prio hardware e a Psystar que produz os seus pr prios computadores livre de desenvolver software para eles concluiu A decis o chega no culminar de um processo que teve in cio em Julho de 2008 quando a Apple pediu a condena o da Psystar por copiar os seus produt
21. GDI As Graphics PanelGDI CreateGraphics Neste caso como vamos utilizar o disparo do evento Paint um dos par metros que nos chegam do evento precisa mente uma refer ncia superf cie GDI Dim GDI As Graphics e Graphics Preparar para os primeiros rabiscos Com a superf cie GDI preparada poder amos come ar a desenhar imediatamente Existem essencialmente 4 maneiras diferentes desenhar para Bitmap Pen Brush e Font servem respectivamente para desenhar imagens desenhar linhas pintar reas e desenhar letras Diferentes m todos utilizam diferentes formas de desenhar e todos em conjunto formam composi es Estas formas de desenhar t m que ser preparadas antes de poderem ser utilizadas mas antes Tamanho posi o e cor Antes de poder come ar a desenhar importante entender algumas classes que nos ajudam a posicionar dimensionar e colorir os nossos rabiscos VISUAL NOT BASIC Point PointF As principais formas de desenhar O Point uma estrutura que representa essencialmente um Bitmap Image conjunto de dois valores X e Y que representam uma coor b A classe Bitmap representa uma imagem completa com denada num referencial bidimensional todas as suas propriedades e informa o de cor pixel a pixel Podemos criar um ponto directamente no construtor o Nos m todos que impliquem desenhar imagens uma ins AA gt 000000 Dim Ponto As New Point 25 35 t ncia
22. O tr fego consumido internamente n o tem custo associado ou seja os dados transferidos entre servi os presentes no mesmo datacenter n o contam tr fego Tr fego que tenha origem ou destino diferente do datacenter onde o storage service foi criado conta tr fego seja ele externo ou at mes mo outro datacenter Azure Transac es Cada chamada a storage service conta uma transac o e cada transac o tem um custo Apesar de o custo de cada transac o individualmente ser muito baixo 0 01 10 000 transac es deveremos ter esta situa o em aten o no desenho das aplica es porque rapidamente se consegue chegar a cen rios em que o n mero de transac es muito elevado Alerta se ainda para o facto de que cada pedido ao storage service conta uma transac o independentemente da origem Isto significa que os pedidos de servi os presen tes no mesmo datacenter tamb m contam transac es A maioria dos pedidos ao storage service conta apenas uma transac o mas existem algumas chamadas a m todos das Storage Client Library que podem resultar em v rias transac es v rios pedidos Upload para Blob Storage Sempre que existe um pedido de upload para Blob Storage de um ficheiro com um tamanho superior a 32Mb a Storage Cliente Library divide automaticamente o pedido em m lti plos blocos de 4Mb A cada bloco de 4Mb ir corresponder um pedido PutBlock que contar uma transac o cada Exis te ainda um PutBlo
23. artigo esperamos ter conseguido desafiar o leitor para a necessidade de conhecer em detalhe a arquitec tura dos servi os e os custos associados de modo a que possa desenhar e desenvolver aplica es para Windows Azure de forma eficiente e eficaz Como dica final no site de billing podemos ver o estado actual da subscri o at ao final do dia de ontem e desta forma ir verificando os custos das nossas aplica es de modo a n o existirem surpresas no final do m s 3 Windows Azure Windows Platform In The Cloud 4 Microsoft 7 P PSOL Azure C 7 Cloud Storage I AppFabric AppFabric Connected Platform NetPonto AzurePT HTML5PT e GASP V tor Tomaz consultor independente na rea das tecnologias de informa o Tem especial interesse por Cloud Computing programa o concorrente e seguran a inform tica membro de algumas comunidades tais como Portugal a Programar PROGRAMAR Programa o Orientada a Objectos em Java 6 O objectivo deste artigo n o ensinar os conceitos de POO nem a programar em Java Assim a leitura do artigo pressu p e que o leitor j saiba os conceitos de POO e conhe a pelo menos a linguagem Java ou outra de sintaxe seme lhante para perceber os exemplos O objectivo deste artigo referir as melhores pr ticas e m todos de programar POO Este c digo n o d nenhum erro de sintaxe no entanto qual quer programador que perceba o m nimo de Java ver que ao e
24. c digo e trabalho tar String public abstract int maximoDiasEmprestimo abstract String nomeTipo public abstract boolean utilizadorPodeRequisi usercodigo public j public class Livro extends Publicacoes public abstract class Publicacoes Nari veis que segundo as regras do encapsula mento dever o ser privadas public Publicacoes C digo public Publicacoes String 4140 C digo public String getCodigo C digo return public int getQuantidade C digo return 0 Mais m todos p blicos e se necess rio alguns privados public Livro String C digo 14 public int maximoDiasEmprestimo Aqui j ter c digo tamb m return GOverride public String nomeTipo Aqui j ter c digo tamb m return Livro 14 public boolean utilizadorPodeRequisitar String usercodigo tamb m Aqui j ter c digo return true Este um exemplo da aplica o de uma classe abstracta e de uma descendente que implementa as fun es abstractas e como tal poss vel de criar uma inst ncia do mesmo onde tal como na heran a entre classes simples podemos chamar os m todos p blicos definidos e herdados da classe m e Diferentes Tipos de Colec es A JFC JAVA Collections Framework oferece ao pro gramador muito mais que simplesmente o ArrayList Este ap
25. de dados para obter a lista de objectos raiz e posteriormente N cha madas para obter os objectos relacionados de cada raiz uma fonte t pica de problemas de performance e em quase todos os casos pode ser resolvida com um carregamento mais inteligente dos dados Eager Loading Embora a intui o seja de que o oposto de lazy loading seja eager loading na realidade existem v rias formas de fazer eager loading de dados pelo que devem ser usadas em circunst ncias diferentes DA poss vel configurar este comportamento n vel dos mapeamentos globais ou durante um query base de dados Quando configurado no mapeamento pode ser feito a uma classe ou a uma rela o Quando feito durante o query sempre respectivo a uma rela o Quando uma classe indicada como n o lazy loaded qual quer inst ncia da mesma criada pelo NHibernate deixar de ser uma proxy A implica o de que qualquer rela o que seja de um para um ou de muitos para um com uma classe que n o possa ser lazy loaded ter de ser logo concretizada Considerando que queremos que a classe Artigo n o seja lazy loaded EEE EE TT public class ArtigoOverride IAutoMappingOverri de Artigo public void Override AutoMapping lt Artigo gt mapping 1 mapping Not LazyLoad j Quando carregamos uma Edicao que tem uma colec o de artigos e um tema de capa var edicao session Get Edicao dataEdicao
26. de parse tratar o erro neste ponto Consumo da informac o Estando a informac o devidamente indexada pelo Share point altura de ser consumida e renderizada nas m quinas respons veis pela apresentac o dos dados O consumo da informac o efectuado pelos models MVC poder ser feito de duas formas Via API Query Object Model necessitando de ter o Sharepoint instalado nestas m quinas solu o de AUTOR Rui Melo rui melo Wmicrosoft com melhor performance mas potencialmente mais onero sa tendo em conta o licenciamento Via servi os Query Via servi os Query Web Servi ce solu o mais flexivel mas com alguma desvanta gem em termos de performance Conclus o Plataformas com a complexidade do Sharepoint s o candi datas a implementa es inovadoras uma vez que disponibi lizam um conjunto grande de funcionalidades para os quais nem todos os cen rios foram equacionados pelas equipas de produto e ou arquitectura Neste artigo apresentada uma solu o diferente das habitualmente recomendas mas com provas dadas de escalabilidade e fiabilidade para um ambiente empresarial bastante exigente Espero com este exemplo conseguir despertar em si o pensamento fora da caixa No pr ximo artigo desta s rie ser abordada a componente de implementa o da solu o com exemplos de c digo de cada um dos componentes Refer ncias Nota apesar de estarmos numa publica o em l ngua portu
27. desta classe que vai ser usada Dim PontoF As New PointF 20 5F 22 03F Bitmap tem v rios construtores bastante espec ficos mas vamos apenas considerar dois para este artigo Size SizeF Dim Imagem As New Bitmap C Nimagem png 5 Dim 1 As Bit 800 600 O Size uma estrutura que representa um conjunto de dois im Imagem As New Bitmap valores Width e Height que representam valores de largura O primeiro construtor vai instanciar a classe com a informa e altura respectivamente c o da imagem indicada Podemos criar uma dimens o directamente no construtor O segundo construtor vai criar uma imagem abstracta com 800x600 px Dim Dimensao As New Size 800 600 O primeiro construtor vai instanciar a classe com a informa Dim DimensaoF As New SizeF 100 05F 100 07F o da imagem indicada Rectangle RectangleF O segundo construtor vai criar uma imagem abstracta com O Rectangle uma estrutura que representa um conjunto de 4 valores X Y Width e Height que representam um combi 800x600 px nado de coordenadas XY e dimens o Pen Podemos criar um Rectangle directamente no construtor A Pen necess ria para todos os m todos que impliquem o desenho de linhas curvas e contornos Color DD Podemos criar uma Pen apenas por indicar a sua cor e Dim Rectangulo As New Rectangle 0 0 100 100 espessura Dim RectanguloF As _ Mas existem mais propriedades na classe Pen que lhe New RectangleF 0
28. detecta um acesso colec o ele procura mais entidades dentro da mesma ses s o que tenham essa rela o e carrega os dados em conjun tos de N reduzindo o n mero de chamadas base de dados uma forma simples de melhorar performance em Como podemos ver em vez de uma chamada para obter o artigo e uma para cada autor apenas fazemos uma chama da para obter o artigo e outra para carregar os autores em batch particular se o tamanho dos conjuntos for similar ao tamanho das p ginas de dados que apresentamos ao utilizador caso em que reduzimos significativamente o n mero de queries Futures uma para obter as entidades raiz e uma por cada colec o que acedemos Existe tamb m o caso em que se pretende obter v rios dados que n o est o relacionados entre si Este caso acon tece frequentemente quando uma p gina ou ecr mostra dados provenientes de v rias tabelas ou componentes do software como um ecr de resumo ou uma caixa de infor ma o geral da aplica o Para tal usando FluentNHibernate apenas precisamos de declarar um override para a entidade e indicar que a rela o tem um BatchSize do tamanho que pretendemos public class ArtigoOverride IAutoMappingOverri NE Se quisermos mostrar numa p gina um ndice de edi es public void Override AutoMapping lt Artigo gt mapping de artigos em cada uma um ndice com os artigos da edi o actual e um artigo em destaque com auto ma
29. disso nem est na rea tecnol gica mas sim na rea financeira com a crise em que vivemos ser altamente ampliada pelas especula es H uns anos atr s sempre que algu m queria dar um exemplo financeiramente forte sobre especula es falava sobre a famosa Quinta feira negra onde as ac es de um dia tiveram efeitos nos anos seguintes e onde aconteceu a muitos acordar rico e adormecer pobre Todavia hoje n o precis mos de dar um exemplo t o long nquo no tempo e em que muitos n o conhecem as verdadeiras consequ ncias Agora podemos fala no presente Mas n o precis mos de falar apenas na rea financeira podemos falar de qualquer rea inclusivamente a inform tica Apesar de o IPhone 5 ainda n o ter sido lan ado nem existirem provas de que alguma vez ir ver a luz do dia a publicidade feita em torno dele torna o no alvo de curiosidade para o bem e para o mal Chamar lhe ia publicidade gratuita Se eu dissesse que era prov vel um canal de televis o deixasse de existir no dia x estaria a especular Provavelmente teria pouco reflexo na sociedade uma vez que os pr prios meios de comunica o social me dariam pouco tempo de antena ao inv s destes assuntos sobre grandes empresas Contudo estaria a distorcer o mercado criando expectativa em volta de algo que eu apenas defendia acreditava mas sem ter provas ou factos Numa rea cujo nome deriva de Informa o autom tica a verdadeira informa o que processada
30. esses rumores at termos o objecto nas m os para avancarmos com os desenhos finais Os mol des s o feitos ao mil metro porque a corti a um material extremamente complicado de moldar prossegue um dos fundadores da A Produkt respons vel por produtos originais que gra as a materiais portugueses fazem a ponte entre a tecnologia e a natureza A A Produkt n o exclui uma futura aventura no mundo da cer mica e da ind stria t xtil Fonte P blico texto de Lu s Oct vio Costa Windows 8 Novo Explorador Segundo o blog oficial da equipa de desenvolvimento do Win dows 8 o explorador do Windows semelhan a do Microsoft Office uma ribbon Outra das novidades o facto deste pos sibilitar a abertura de ficheiros iso e vhd sem necessidade de aplica es de terceiros Imagens do novo explorador neste site http bit ly rj8vjl Blog oficial do Windows 8 http blogs msdn com b b8 Fonte POP JE Se Apple pode continuar a limitar uso do Mac OS aos seus computadores A Apple tem o direito de restringir a utilizac o do sistema ope rativo OS X aos computadores fabricados pela empresa A decis o do tribunal de recurso norte americano foi conhecida esta semana tr s anos depois de iniciada a batalha legal con tra a Psystar uma fabricante de clones dos produtos da ma A senten a anterior j havia dado raz o empresa de Steve Jobs mas a Psystar embora n o tenha reclamado da
31. frente com projec es tamb m poss vel obter inst ncias que n o as indicadas inicialmente como argumento de tipo ao QueryOver Esta funcionalidade tem a grande vantagem de poder reduzir grandemente o n mero de chamadas base de dados com altera es m nimas ao c digo Outro caso de uso prende se com o carregamento de v rias rela es da mesma entidade Assumindo que a classe Edicao passa a ser a seguinte SS public class Edicao public public pub xe public virtual DateTime DataEdicao get set virtual Artigo TemaDeCapa get set virtual IList Artigo Artigos get set virtual IList Patrocinador Patrocinadores get set public class Patrocinador public virtual int Id get set public virtual string Nome get set Se n s pretendemos mostrar uma edi o com todos os arti gos e todos os patrocinadores temos v rias hip teses Aproveitamos o lazy loading e fazemos v rios pedi dos base de dados Fazemos o eager loading de todas as rela es resul tando num query com um n mero elevado de joins Usamos Futures para carregar em queries diferentes rela es diferentes da mesma entidade A terceira op o acaba por ser a que obt m tipicamente melhores resultados e concretizada da seguinte forma ESSE L var edicao session QueryOver lt Edicao gt Where e gt e DataEdicao dataEdicao Fetch e gt e Artigos Eager FutureValue
32. guesa as refer ncias apresentadas s o na maioria dos casos para as vers es inglesas Isto deve se somente a por experi ncia pr pria o conte do em ingl s ser mais rico e actualizado que nas restantes l nguas IIS http www iis net Microsoft Commerce Server bit ly s5Uu2 Microsoft Sharepoint Server bit ly gmpwu3 MVC http www asp net mvc SharePoint Search Service Tool http bit ly ZY9H3 Test Driven Development bit ly gAlxha The Search Developer Story in SharePoint 2010 Query In terfaces bit ly bnaA4G Desde h 12 anos no mundo das IT iniciou a carreira na rea de I amp D de com rcio electr nico Passou por empresas como SMD Pararede Newvalue e Link integrou os quadros da Microsoft como consultor h cerca de 5 anos mais focado na plata forma Sharepoint Envolvido desde cedo na comunidade SharepointPT tem na partilha de conhecimento uma forte motiva o Blog http mystepstones wordpress com L LOZ o1soBy oe5ipa oc L LOZ 011919494 OB IPI Veja tambem as edi es anteriores da REVISTA PORTUGUESA DE PROERAMMAD at LUA IPIE 11343 TIT Revista PROGRAMAR WWW PORTUCAL A PROCRAMAR ORG an AJAX LLOZ oyunr 0107 2 oe5ip3 97 di mn Leere mice LM uit 111885 17 Lem Hum PROGRAMAR NNU PURTUGALA PROGHAVAA ORG REVISTA PORTUGUE
33. na Thai Duong e Juliano Rizzo ir o apresentar o exploit que usaram para conseguir derrubar o SSL e ao qual deram o nome de BEAST O exploit foi programado em JavaScript e funciona como um snifer tendo a capacidade de decifrar a informa o Segundo os autores o exploit funciona tamb m em sites que usam HSTS HTTP Strict Transport Security Duong referiu que a demo que ir o apresentar na confer ncia Ekoparty consistir na decifragem de um cookie de autentica o utilizado no servi o Paypal Mas o que o SSL SSL um protocolo criptogr fico basea do em cifras assim tricas que providencia seguran a e integri dade dos dados transmitidos em redes como a Internet Este protocolo ajuda a prevenir que entre as duas extremidades da comunica o n o exista nenhum acesso indevido ou falsifi quem os dados transmitidos ou seja apenas o emissor e o receptor podem ver a informa o da mensagem transmitida Existem v rias aplica es para este protocolo como por exemplo o com rcio electr nico servidores Web servidores FTP etc Para identificar facilmente se est o a visualizar um site seguro basta verificar no URL que em vez de estar o nor mal http se encontra https Para saber mais http bit ly p1MVOY Fonte Sapo NOTICIAS BerliOS ser fechado em 31 12 2011 O BerliOS foi fundado h 10 anos como um dos primeiros dep sitos na Europa Foi desenvolvido e mantido por Frau nhofer FOKUS Como Europe
34. nados com a framework ou quando necessitam de imple mentar uma solu o que sai fora do mbito da aplica o da framework preocupante observar que todos os problemas de lentid o de uma aplica o se resolvem com mais RAM ou mais CPU sem sequer se identificar a causa do problema recorrendo utiliza o de um profiler Uma base de dados imprescind vel para qualquer sistema inform tico e desconhecer a 3 Forma Normal meio cami nho andado para um sistema deficiente Este problema vis vel na nossa pr pria comunidade onde recorrentemente se v m estagi rios e estudantes futuros profissionais de a desenvolverem projectos em que criam tabelas sem saber o que representam e n o terem qualquer no o das suas rela es gritante observar que a nica solu o para uma query lenta passa pela cria o de um ndice quando a primeira abordagem deve ser sempre a observa o do plano de execu o e a reescrita da query de forma mais eficien te E quando chegamos aos paradigmas enfim Constato que muitos n o sabem sequer o que a heran a no paradigma OO fazendo classes que diferem ape nas num pequeno conjunto de atributos distinto Pior igno ram mecanismos como c lculo lambda e paradigmas como os da programa o funcional Tenho outro amigo que costuma dizer em rela o a este tipo de comportamento padr o que quando a nica ferramen ta que se conhece o martelo todos os p
35. pretendo apresentar o conceito databinding em Silverlight 4 Vou come ar por uma breve apresenta o te rica e em seguida irei apresentar v rios exemplos De salientar que n o terei em conta Design Patterns O conceito Databinding permite nos de uma forma simples e consistente apresentar e interagir a informa o da nossa aplica o atrav s da cria o de um relacionamento entre dois objectos para que a altera o de uma propriedade de um deles seja reproduzida numa propriedade de um outro Existindo uma separa o entre a interface com o utilizador e a informa o estabelecido qual o fluxo entre os dois a forma como a altera o reflectida a forma como os erros s o detectados e a forma como a informa o mostrada na interface com o utilizador Databinding permite nos de uma forma simples e consistente a cria o de um relacionamento entre dois objectos A classe Binding representa a rela o entre a interface com o utilizador e a informa o Esta classe est inclu da no namespace System Windows Data e na assembly System Windows na System Windows dll Binding Target Binding Source CLR Object Property FrameworkElement Dependency Property Value Converter Fig 1 Esquema de relacionamento do Databinding e Binding Target vai representar um objecto do tipo DependencyObject ou do tipo FrameworkElement ou seja na maioria dos casos o controlo da interface com o utilizador
36. session QueryOver Artigo List var autores artigo Autores Select a gt a Nome Console Out WriteLine Artigo 0 com autores 1 artigo Titulo string Join autores ToArray j Neste caso estamos a mostrar o t tulo de um artigo em con junto com os autores Se olharmos para o SQL gerado vemos que por cada artigo vamos base de dados buscar os autores public class Autor Short SQL Row Count begin transaction with isolation level Unspecified SELECT FROM Artigo this 4 E E SELECT FROM ArtigosToAutores autores left outer join Aut WHERE autoresO Artigo id 4242 public virtual string Email get set SELECT FROM ArtigosToAutores autoresO left outer join Aut WHERE autores0_ Artigo_id 4243 ublic virtual ISet Artigo Artigos et set 9 9 9 2 2 1 SELECT FROM ArtigosToAutores autores0_ left outer join Aut WHERE autores0_ Artigo_id 4244 SELECT FROM ArtigosToAutores autoresO left outer join WHERE autoresO Artigo id 4245 commit transaction public virtual int Id get set public virtual string Nome get set O N Pp ha Neste artigo vamos ver como podemos aproveitar algumas das funcionalidades mais avan adas do NHibernate para tornar as nossas aplica es mais eficientes reduzindo o n mero de pedidos base de dados assim como a quantida de de dados que s o transmitidos Em certos momentos iremos usar a ferramenta
37. 5F 0 8F 100 03F 100 25F Dim P As New Pen Color Black 2 A Color uma estrutura que representa um conjunto de 4 valores A R G e B que representam os 4 canais que consti podem conferir mais caracter sticas vis veis tais como a tuem uma cor aRGB A para Alpha ou o canal de opacidade forma terminal ou o estilo da linha que n o vou abordar RG e B para Red Green e Blue respectivamente Brush Cada canal comporta valores que variam dos O aus ncia at 255 presenca total O Brush necess rio para todos os m todos que impliquem preenchimento de reas A classe Color n o tem construtores Podemos obter uma cor quer atrav s da enumera o dispon vel quer por utiliza Existem v rios tipos de pincel que permitem a aplica o de o de alguns m todos dispon veis texturas gradientes padr es ou simplesmente uma cor dim dos le Gales Color 2o ub 6 Vou focar essencialmente o SolidBrush para cores nicas e o LinearGradientBrush para gradientes de duas cores sim Dim Cor As Color Color Red ples Dim Cor As Color Color FromName Podemos criar SolidBrush directamente no construtor Dim Cor As Color Dim B As New SolidBrush Color Red Color FromKnownColor KnownColor ActiveBorder l l l Tamb m podemos criar LinearGradientBrush directamente no construtor E S E o Dim B As New LinearGradientBrush New Com estas no es estamos aptos a colorir e posicionar os Poin
38. NHProf para observar a comunica o entre a nossa aplica o e a base de dados Performance Uma das fal cias de computa o distribu da de que lat n cia zero Na realidade qualquer chamada a um sistema remoto ordens de magnitude mais lenta do que a mesma chamada a um sistema local e dentro do mesmo processo Outra fal cia de que a largura de banda infinita Como tal boa pr tica reduzir o n mero de chamadas remotas ao servidor de dados e o tamanho dos dados a receber e enviar se queremos ter aplica es com boa performance mesmo quando em carga Como reduzir o n mero de chamadas Um dos casos t picos onde fazemos mais chamadas base de dados do que o necess rio quando mostramos uma listagem de itens que necessita de dados de mais do que uma tabela Este comportamento resultante das capacidades de lazy loading da biblioteca em conjunto com as configura es por omiss o que carregam os objectos de cada rela o apenas quando esta acedida Tal comportamento implica que v o ser efectuados no m ni mo tantos queries quanto artigos mostrarmos Qualquer lat ncia no acesso ao servidor de sql aumenta significativa mente o tempo de resposta da nossa aplica o quando na realidade seria poss vel minimizar as chamadas base de dados e obter todos os dados de uma s vez Select N 1 A esta classe de problemas d se o nome de Select N 1 em virtude de ser efectuada uma chamada base
39. OINTPT http www sharepointpt org multim dia e documentos s o geridos e mantidos por circui tos de aprovac o standard Toda a informac o de cat logo e stock mantida na platafor ma Commerce que temb m suporta toda a parte de carrinho de compras Uma vez que a informa o se encontra distribu da nas plata formas Commerce Sharepoint e ainda em alguns sistemas externos opta se pela utiliza o da componente de indexa c o para unir esta informac o dispersa atrav s da constru c o de uma plataforma de indexac o costumizada composta por uma componente de listagem e um segundo n vel com o detalhe dos produtos p Stock preco carrinho e perfil Dados de produtos IIS MVC Dados de Cat logo Edi o de conte dos SQL Server Padr o MVC Model View Controller Tema para um artigo s por si o MVC um padr o de imple menta o que merece uma breve refer ncia para enquadra mento e para despertar o interesse pelos padr es para quem ainda n o os conhece O padr o arquitectural MVC separa as camadas aplicacio nais em 3 componentes e Model respons vel pela representac o e manuten o dos estados dos dados e View camada de apresenta o respons vel por mostrar os dados e interagir com o utilizador Controller camada de l gica que toma as decis es baseada nos dados inseridos pelos utilizadores na View passando a informa o necess ria ao Model correspo
40. Out WriteLine Artigo 0 com autores 1 artigoComAutor Value Titulo string Join autores Desta forma pode mos preparar todos os queries e de uma s vez fazer todos os pedi dos base de dados Enquanto os queries anteriores retornavam logo uma lista o resultado de um Future ou de um FutureValue apenas a promessa de que no futuro quando precisarmos dos dados eles estar o l DA que o NHibernate faz registar internamente todos os Futures pedidos Assim que um concretizado quer por iterar sobre um IEnumerable de um Future quer por aceder ao valor de um FutureValue s o enviados todos os queries registados para a base de dados e obtidos os resultados de uma s vez O sql gerado exactamente o mesmo mas foi todo enviado na mesma chamada minimizando assim os problemas de lat ncia no acesso aos dados Vemos ent o que em vez de tr s chamadas distintas faze mos apenas uma chamada que retorna tr s conjuntos de resultados diferentes SELECT FROM Edicao this SELECT FROM Edicao 16 left outer join Artigo artigos WHERE this Datadicao in Select TOP 1 this O SELECT FROM Artigo this left outer join Autor autoresa WHERE this Jd 3638 2141 4ms Sms De reparar que por omiss o o Future assume que se retorna uma lista de entidades sobre as quais estamos a fazer o QueryOver e o FutureValue assume que se retorna uma entidade Como vamos ver mais
41. QL Row Count begin transaction with isolation level Unspecified commit transaction Neste caso o select que popula os autores filtrado pelo primeiro query atrav s de um subselect SELECT autoresO Artigo id as Artigo4_1_ autoresO 14 as 1812 autoresO 14 as Idi 0 autoresO as 1 0 autoresO 11 as 111 0 FROM Autor autoresQ0 WHERE autoresO Artigo id SELECT this Id FROM Artigo this WHERE this Id 1922 x Reduz o n mero de queries efectuadas base de dados no entanto necessita que a base de dados suporte este meca nismo Quando usado o join como o nome indica os dados da colecc o s o obtidos ao mesmo tempo que as entidades atrav s de um join Para o c digo mencionado anteriormente passamos a ter apenas um query SELECT this dg as Id0_1_ tnis Titulo as TituloO 1 autores2 Artigo id as Artigo4 3 autores2 Id as Id3_ autores2 Id as Idi 0 autores2 Nome as 1 0 autores2 Email as Email1 0 FROM Artigo this left outer join Autor autores2_ on this Id autores2_ Artigo_id WHERE this 14 lt 2225 x QGpO x necess rio ter em aten o a forma como se usa estas funcionalidades gerais de eager loading Por exemplo ao configurar a colec o de Artigos de uma Edicao para ser automaticamente obtida por join o seguinte c digo pode ter um resultado inesperado EEE EEE foreach var edicao in session QueryOver Edicao
42. SA DE PROGRAMA O FERE L4 005 OPERADORES d 1 IP PROGRANA O 2 INTRODU O 255 LUA m REX c BIACE OPTIMIZACAD 3 AS ASPECTOS MICORE DUM LLOZ UY oe5ipa ez OLOZ OJQUIS 9S oe5ip3 e muito mais em ere EE 11 FLEA O STAGU www revista programar info SOFTWARE OPEN SOURCE EM SISTEMAS DE INFORMA O EEBGRAFICA DUVIDAS IDEIAS AJUDAS PROJECTOS portugal a programar Esta obra foi licenciada com uma Licen a Creative Commons Atribui o Uso N o Comercial Partilha nos Mesmos Termos 3 0 N o Adaptada
43. a es pendentes em batch demora menos tempo e garante processamento transaccional ou todas s o aplicadas ou nenhuma aplicada Queues Cada elemento numa Azure Queue custa 3 transac es Nos casos mais comuns usar uma queue para enviar uma mensagem de um role para outro custa cerca de 3 transac es porque s o necess rias as opera es de Put Get e Delete para processar uma mensagem Poderemos diminuir o custo cada elemento na queue utili zando a opera o GetMessages da Queue Service API para obter e processar at 32 mensagens de uma s vez e assim diminuir o custo at 2 03 transac es por elemento na queue Usar backoff exponencial para tempos de espera Devido aus ncia de notifica es nas queues necess rio 3 Windows Azure platform estar constantemente a fazer pooling na queue para detectar a entrada de novas mensagens Imagine que existe um worker role com duas inst ncias de modo cumprir o SLA a fazer pooling com um intervalo de 1 segundo numa queue Ao final de um m s haver um custo de mais de 59 s derivado ao pooling Poder ser implementado um esquema de espera exponen cial para reduzir o n mero de chamadas de pooling queue O incremento de tempo a esperar por cada chamada a uma queue vazia e o n mero m ximo de tempo que esse backoff poder atingir dever ser adaptado tendo em considera o o cen rio para qual a queue est a ser utilizada Conclus o Atrav s deste
44. a de conjunto implica isso mesmo que n o haja repeti es por isso importante estar a par das possibilidades existentes e saber decidir qual a melhor op o Conclus o Tal como disse no inicio este n o pretendeu ser um artigo que ensinasse a programar Java nem POO mas sim um artigo que mostrasse algumas novidades de Java 6 em rela o ao Java 2 que por motivos de compatibilidade ainda existem em Java 6 mas s o desaconselhados e a sua liga o Programa o Orientada a Objectos j que poss vel programar em Java sem ter em conta os princ pios de POO Apesar de tudo ficou ainda muito por dizer j que Java uma linguagem muito extensa e foram focados apenas alguns pormenores no entanto s o pormenores que podem permitir um c digo mais limpo talvez mais r pido e por ven tura mais f cil de actualizar Bibliografia http wiki portugal a programar or dev geral java tutorial home http download oracle com javase 6 docs api Ant nio Silva actualmente a frequentar o 3 ano da Licenciatura de Engenharia Inform tica da Universidade do Minho sente uma enorme paix o pela programa o nomeadamente em VB Net e C Apesar disso possui um conhecimento sobre v rias outras linguagens de programa o como Java PHP Javascript CZ Haskell entre outras Elege o melhor artigo desta edi o Revista PROGRAMAR http tiny ec ProgramarED3l PROGRAMAR DataBinding em Silverlight 4 Neste artigo
45. a um com as suas caracter sticas e custos Ao afirmar que nem todos os dados s o relacionais pretendemos alertar para o facto de que dever ser escolhido o tipo de storage certo para o tipo de dados certo O servi o SQLAzure relativamente a Azure Storage um servi o mais caro SQLAzure custa cerca de 10 GB 7 5 GB e TableStorage custa cerca de 0 15 GB 0 11 GB Neste sentido poderemos como exemplo recomendar o armazenamento de imagens em Blob Storage ou a passa gem de dados hist ricos ou dados de auditoria Logs da aplica o para Table Storage Procedimentos Armazenados execu o de procedimentos armazenados n o tem custos adicionais Podemos tirar partido desta situa o e usar algum poder de computa o do servidor de SQL com o intui to de poupar no n mero de roles necess rios para a execu o da aplica o De notar que n o deveremos abusar des tes recursos Windows Azure Storage Relativamente a Windows Azure Storage vamos tentar per ceber alguns dos custos associados a este servi o e tentar perceber alguns dos cuidados que dever o ser tidos em conta na hora de desenvolver sobre estes servi os Em rela o a custos com Windows Azure Storage estes s o medidos usando as seguintes vari veis Tr fego quantidade de dados transferidos de para a O servi o e Transac es quantidade de pedidos feitos ao servi o Capacidade Quantidade de informa o armazenada Tr fego
46. ametrizados n o permitem pm trabalhar com tipos primitivos algo que extremamente ot T Sera ed Void importante Ali s muitos dos problemas requerem vectores de inteiros Ser que ent o a nica solu o trabalhar com os Arrays originais N o Todos os tipos primitivos possuem a correspondente classe Por exemplo a classe Integer cor responde ao tipo primitivo int PROGRAMAR Assim podemos facilmente fazer ArrayList Integer v new ArrayList Integer A seguir para adicionar elementos ter amos que colocar algo deste g nero v add new Integer 3 v add new Integer 9 int r v get 1 intValue O construtor necess rio uma vez que os tipos n o s o compat veis Ali s o seguinte exemplo compilado antes do Java 5 n o funcionaria correctamente int i Integer j 1 1 2 12 11 Isto porque int um tipo primitivo e Integer um tipo comple xo Logo n o poss vel fazer uma atribui o de um tipo pri mitivo para um tipo complexo Tanto mais que o que est realmente armazenado em j um apontador para uma ins t ncia da classe Integer Felizmente devido ao AutoBoxing o exemplo a partir de Java 6 funciona perfeitamente o que nos permite fazer tamb m no ArrayList anteriormente criado algo mais simples veraciter v add 9 int rev gettin Pode parecer uma pequena diferen a mas numa linguagem como Java onde muitas vezes necess rio escrever gran des li
47. ar Color White g3 Clear Color White Num objecto como a Form basta alimentar a propriedade g5 Clear Color White DoubleBuffered para True VISUAL BASIC Dim pt1 As New Point 20 20 Dim pt2 As New Point 80 20 Dim pt3 As New Point 20 80 Dim pt4 As New Point 80 80 Dim MyP As New Pen Brushes Black 6 gi DrawBezier MyP pti pt2 pt3 pt4 IMG1 MyP New Pen Brushes Black 6 MyP StartCap LineCap DiamondAnchor MyP EndCap LineCap ArrowAnchor g2 DrawBezier MyP pti pt2 pt3 pt4 IMG2 MyP New Pen Brushes Black 6 MyP DashStyle DashStyle Custom MyP DashPattern 1 0F Dim Seta As New AdjustableArrowCap 1 2 Seta Filled False MyP CustomEndCap Seta g3 DrawBezier MyP pti pt2 pt3 pt4 IMG3 MyP New Pen Brushes Black 6 MyP DashCap DashCap Round MyP EndCap LineCap RoundAnchor g4 DrawBezier MyP pti pt2 pt3 pt4 IMG4 MyP New Pen Brushes Black 1 5F Dim GP As New GraphicsPath Dim cpt1 As New Point 5 0 Dim cpt2 As New Point 6 4 Dim cpt3 As New Point 10 4 Dim cpt4 As New Point 6 6 Dim cptb As New Point 8 10 Dim cpt6 As New Point 5 7 Dim cpt7 As New Point 2 10 Dim cpt8 As New Point 3 6 Dim cpt9 As New Point 0 4 New Single 0 5F 1 0F 0 5F Dim cpts As Point New Point _ Copia eprZ opto opta coto PET cpt8 cpt9 cpt10 GP AddPolygon cpts Dim As New CustomLineCap Nothing GP MyP EndCap LineCap Custom MyP StartCap L
48. are web based Actualmente co fundador da weListen Business Solutions trabalhando no produto InnovationCast e participa activamente na comunidade NetPonto apresentando temas como NHibernate RavenDB ou loC Tem blog em http blog brunomlopes com twitter em Vbrunomlopes linkedin em http pt linkedin com in brunomlopes Elege o melhor artigo desta edi o Revista PROGRAMAR http tiny ec ProgramarED3l PROGRAMAR hera o de n meros aleat rios Parte 1 Diferen as ao Desenvolver em Windows Azure Programa o Orientada a Objectos em Java 6 DataBinding em Silverlight 4 PROGRAMAR ANA GERA O DE NUMEROS ALEAT RIOS Parte 1 A partir deste artigo ser o apresentadas em quatro partes informa es sobre a gera o de n meros aleat rios ou random number generator em computadores S o muitos os m todos existentes para a gera o de n meros aleat rios Podendo se destacar o m todo do meio do quadrado tema deste artigo o m todo produto do meio o randu e o m todo linear congruente INTRODU O As discuss es sobre gera o de n meros aleat rios originam se a partir das ideias dos fil sofos gregos Dem kritos e Epikurus indicado por Silveira 2001 ao mostrar as propostas de aleatoriedade objetiva proposta por Epikurus que afirma existir na Natureza o aleat rio verdadeiro o qual ocorre a partir do desconhecimento das causas aleatoriedade subjetiva proposta por Dem kri
49. ckList no final que contar tamb m uma transac o O tamanho do bloco poder ser modificado atra v s da propriedade CloudBlobClient WriteBlockSizelnBytes Consultas a tabelas Sempre que usar a classe CloudTableQuery para realizar consultas a um Azure Table Service ter automaticamente a resolu o de continuations tokens de modo a obter todos os resultados pretendidos PROGRAMAR Isto significa que sempre que a query retornar um continua tion token ir ser lan ado automaticamente um pedido dos restantes resultados e como j vimos anteriormente cada pedido conta uma transac o Table SaveChanges Sempre que for realizada uma opera o de Add Update ou Delete sobre um objecto de uma tabela esse objecto ser adicionado ao datacontext de modo a que mais frente esse pedido possa ser enviado ao Table Service Os pedidos n o s o enviados imediatemente s o enviados quando for chamado o m todo SaveChangesWithRetries Quando esse m todo chamado as altera es pendentes s o chamadas uma a uma sobre o table service resultando numa transac o cada Existe no entanto uma excep o a esta situa o Sempre que as altera es pendentes incidirem numa nica Partition Key de uma tabela poderemos solicitar que as altera es sejam efectuadas utilizando apenas um pedido atrav s da chamada SaveChangesWithRetries SaveChangesOptions Batch Al m de apenas contar uma transac es submeter as alte r
50. comparativamente com o total de dados cada vez menor Cada vez mais recorremos a uma ferramenta que deveria armazenar e processar dados gerando informa o contudo devido falta de fidedignidade das fontes e contrariedade dos dados l introduzidos muitas vezes gerada desinforma o Se eu disse se que o mundo acabava hoje dentro de 5 minutos mesmo que muita gente acredita se em mim pouco podia fazer at verificar a veracidade dessa informa o Passados 5 minutos saberiam se era verdade ou n o Se eu disser que o mundo acaba em 21 de Dezembro de 2012 ainda se ter muito que esperar at se conseguir confirmar ou n o a afirma o Por isso n o informa o mas sim especula o Especula o que faz vender que mexe com os mercados que coloca em muitos os nervos a flor da pele que deixa outros com um sorriso de vit ria que impede o sono tranquilo de muitos mas que n o passa de uma simples afirma o cuja veracidade n o pode ser demonstrada na altura em que foi proferida NR Em not cia de ltima hora soube se do falecimento de Steve Jobs Para o bem e para o mal foi um nome incontorn vel no mundo da tecnologia e que contribuiu para a sua evolu o por isso aqui ficam registadas as nossas condol ncias Ant nio Silva antonio silva grevista programar info A revista PROGRAMAR um projecto volunt rio sem fins lucrativos Todos os artigos s o da responsabilidade dos autores n o podendo a revista ou a comuni
51. dade ser respons vel por alguma imprecis o ou erro Para qualquer d vida ou esclarecimento poder sempre contactar nos Em 2 TEMA DE CAPA Netponto NHibernate T cnicas para software melhor e mais r pido Saiba mais sobre estas t cnicas para melhor software e mais r pido Bruno Lopes A PROGRAMAR Gera o de N meros Aleat rios O primeiro de 4 artigos do mesmo autor da excelente s rie Programac o em Lua desta vez sobre gerac o de n me ros aleat rios Augusto Manzano 24 Programar para Windows Azure Conheca alguns detalhes bem como alguns cuidados que deveremos ter em conta quando desenvolvemos para esta plataforma Vitor Tomaz 25 Programa o Orientada a Objectos em Java 6 Saiba as melhores pr ticas e m todos de programa o neste paradigma em Java 6 Ant nio Silva 30 DataBinding em Silverlight 4 Conhe a o conceito de Databinding na plataforma Silverlight Sara Silva COLUNAS Visual NOT Basic Primeiros Passos com GDI Saiba mais sobre a API respons vel por tudo o que nos chega aos olhos no mundo Windows S rgio Ribeiro 43 Core Dump Martelo lt gt In pcia Neste artigo de opini o conhe a segundo o autor a origem das falhas nas bases de muitos profissionais de TI Fer nando Martins COMUNIDADES SharePointPt Padr o alternativo de Sharepoint Neste artigo da comunidade SharePointPT saiba como desconstruir as abordagens mais tradicionais atrav s de uma solu o pouc
52. das com validac o de dados e notifica c o de erros Devem ser definidos a quando da implementa o da interface IDataErrorlnfo ou INotifyDataErrorinfo De seguida iremos apresentar alguns exemplos pr ticos Suponhamos a cria o de uma classe chamada Professio nal que representa um profissional da comunidade NetPon to Esta classe implementa as interfaces IProfessional que define o que um Professional e a interface INotifyProperty Changed que permite propagar as altera es que ocorre rem Professional Professional INotifyPropertyChanged E Class Properties 9 Address A Contact DateOfBirth y IsProgrammer Locality Mail 7 Name 9 PostalCode Methods OnPropertyChanged Professional Events F PropertyChanged public class Professional IProfessional region INoti fyPropertyChanged Private members private string _name private DateTime _date0fBirth private string address private string _locality private int _postalCode private string mail private int contact private bool isProgrammer endregion A PROGRAMAR public Professional _ true region Properties public string Name get return name set name value OnPropertyChanged Name public DateTime DateOfBirth get return dateOfBirth set dateOfBirth value OnPropertyChanged
53. de podemos projectar um valor para usar numa condi o EEE ESSE SEE Artigo artigo null var numeroArtigosEdicaoMaisRecente session QueryOver Edicao WithSubquery WhereProperty e gt e DataEdicao In QueryOver Of Edicao Select e gt e DataEdicao OrderBy e gt e DataEdicao Desc Take 1 JoinQueryOver e gt e Artigos gt artigo SelectList q gt q SelectCount gt artigo Id FutureValue int Neste caso estamos a seleccionar o identificador da edi o mais recente e obter o numero de artigos dessa edi o Viewmodels O segundo caso de uso que exemplifico para projec es prende se com situac es onde temos uma ou varias entida des com um n mero grande de campos e onde necessita mos apenas de parte dos campos ou de dados agregados em conjunto com alguns campos Da mesma forma que projectamos um valor de um resultado de um query podemos tamb m projectar uma lista de valo res EEE IList lt Artigo gt artigos null var edicoes session QueryOver lt Edicao JoinQueryOver e gt e Artigos gt artigos JoinType LeftOuterJoin SelectList q gt q SelectGroup e e DataEdicao SelectCount e gt e Artigos List object foreach var edicao in edicoes Console Out WriteLine Edicao com 1 artigos edicao 0 edicao 1 Neste caso estamos a projectar a data de edi o e o n mero de artigos que aparecem para cada
54. edi o O sql gerado n o tem surpresas SELECT this DataEdicao as y0_ count this DataEdicao as y1_ FROM Edicao this inner join Artigo artigos1 on this DataEdicao arti gos id GROUP BY this DataEdicao No entanto o acesso aos dados projectados torna se prop Cio a erros visto retornar uma lista de vectores de objectos Seria muito mais f cil se pud ssemos usar uma classe inter m dia que armazenasse os campos obtidos E tal poss vel recorrendo a aliases e a um ResultTransformer DA a seguinte classe public class EdicaoComNumeroArtigos public virtual DateTime DataEdicao get set public virtual int NumeroArtigos get set j Podemos alterar o query anterior para associar um alias a cada um dos campos e transformar os resultados em inst n cias da classe EdicaoComNumeroArtigos EIS SRS IList Artigo artigos null EdicaoComNumeroArtigos viewModel null var edicoes session QueryOver lt Edicao gt JoinQueryOver e gt e Artigos gt artigos JoinType LeftOuterJoin SelectList q gt q SelectGroup e gt e DataEdicao WithAlias gt viewModel DataEdicao SelectCount e gt e Artigos WithAlias gt viewModel NumeroArtigos TransformUsing Transformers AliasToBean lt EdicaoComNumeroArtigos gt O List EdicaoComNumeroArtigos foreach var edicao in edicoes Console Out WriteL ine Edicao
55. eiro McGraw Hill 1990 475 p SILVEIRA J F P da Tipos de Aleatori edade Rio Grande do Sul Universidade Federal do Rio Grande do Sul Depar tamento de Matem tica 2001 Dispon vel em lt http bit ly r2YYis gt Acesso em 29 jun 2011 11 50 23 STUBBE J An Introduction to Random Number Generation and Simulation cole Polytechnique F d rale de Lausanne Dispon vel em http bit ly nvkNaP Acesso em 1 jul 2011 08 59 12 TORN A Probabilistic Algorithms Spring 2001 Course Akademi University Department of Computer Science 2001 Dispon vel em lt http bit ly gYxYkQ gt Acesso em 1 jul 2011 08 27 32 WHELAN S F Models Stochastic Models University Col lege Dublin School of Ma thematical Sciences Dispon vel em http bit ly nly2nT Acesso em 1 jul 2011 08 39 54 ZENIL H John von Neumann s First Pseudorandom Number Generator Pseu dorandom Number Generator Champaign Wolfram Demonstrations 2011 Dispon vel em lt http bit ly 6C7Q5 JohnVonNeumannsFirstPseudorandom NumberGenerator gt Acesso em 15 ago 2011 08 23 56 AUTOR Augusto Manzano natural da Cidade de S o Paulo tem experi ncia em ensino e desenvolvimento de programa o de soft ware desde 1 986 professor da rede federal de ensino no Brasil no Instituto Federal de Educa o Ci ncia e Tecnologia tamb m autor possuindo na sua carreira v rias obras publicadas na rea da computa
56. emente gt que 4 m x 5 p 32 bits 15 p 64 bits d tamanho em d gitos do valor N d tamanho N t tamanho em d gitos do quadrado de N t tamanho N tqd tamanho em d gitos do quadrado de N sua obten o depende de algumas condi es SE d par t impar OU d impor t impar Acrescentar 00 esquerda de tad SENAO SE d par t par ENT O Manter tqd como est tq tamanho em d gitos do valor gerado para tqd Se impar ENT O ta dl SEN O posi o inicial para extra o do quadrado do meio a partir da quantidade de d gitos tqd aa 2 1 m 2 2 ns valor da pr xima semente valor pseudo rand mico gerado ap s extra o do quadrado do meio Com base no algoritmo do m todo do meio do quadrado proposto por von Neumann e das etapas conjugadas poss vel obter os valores indicados na Tabela 1 a partir do fornecimento de uma semente que tenha entre 4 e 7 d gitos de tamanho O tamanho m ximo em d gitos para a semente deve ser 5 para valores de 32 bits ou 15 para valores de 64 bits A _ tq ns 09999999 ps EA BE 5 09999999999 11 4 099999999999 999999999999 o pe 009999999999999 099999999999999 PROGRAMAR CONCLUS O Neste artigo foi apresentado o m todo de gera o de n meros pseudo aleat rios meio do quadrado que considerado por v rios especialistas da rea da computa o como se
57. enas uma pequena parte embora seja talvez a mais utili zada nem sempre adequadamente PROGRAMAR Para um conjunto de problemas que necessitem de uma colec o de valores guardados em mem ria muitos progra madores por desconhecimento utilizam muitas vezes os m todos menos adequados A JFC est dividida em tr s grandes grupos as Listas List lt E gt os Conjuntos Set lt E gt e as Correspond ncias Map lt K V gt Supondo por exemplo uma lista de amigos qual seria talvez o grupo mais interessante Todos eles podem de maneira mais ou menos expedita servir para guardar esta informa o Se a informa o fosse guardada na lista ter amos que ter em aten o que n o poder amos repetir amigos e seria necess rio andar sempre a verificar a exist ncia o valor a inserir antes de o fazer Como as listas n o s o ordenadas por defi ni o a pesquisa demoraria algum tempo para listas de ami gos extensas Nas correspond ncias ter amos o mesmo problema de verifi car a exist ncia de amizade mas ter amos a vantagem de esta estar optimizada para pesquisas Contudo ter amos a desvantagem de por cada amigo ser necess rio guardar um valor o que pode acabar por n o ser uma desvantagem se for necess rio por exemplo guardar algo associado a essa amizade Num conjunto n o seria necess ria a verifica o de repeti dos porque ele pr prio faz essa verifica o uma vez que a defini o matem tic
58. enhados TextRendering SingleBitPerPixelGridFit l a Existem alguns caps dispon veis para al m da possibilidade de desenhar os nossos pr prios caps custom Para al m dos caps e de outras propiedades poss vel Algumas dicas determinar como vai ser o tra ado da linha o Dash Style Para este exemplo foi necess rio utilizar a classe Graphics Path a qual n o est prevista para este artigo Double Buffer Se a inten o usar a GDI para criar algum tipo de movi mento tal como um pequeno jogo algo que necessite de constante e r pido refrescamento rapidamente se nota que Dim 91 As Graphics PanelODI CreateOGraphics se torna imposs vel de continuar pois cada ciclo de refresca Dim g2 As Graphics Panel1 CreateGraphics mento reflectido de forma negativa na superf cie GDI Dim g3 As Graphics Panel2 CreateGraphics Isto traduz se num piscar insuport vel que causado pela constante soma de execu o do refrescamento e dos gr fi cos propriamente ditos Dim go As Graphics 14 CreateGraphics Dim g4 As Graphics Panel3 CreateGraphics Nestes casos podemos sacrificando um pouco de perfor g1 Clear Color White mance utilizar um Double buffer que far com que as g2 Clear Color White actualiza es sejam feitas em paralelo com a apresenta o o que se traduz numa actualiza o suave da superf cie GDI mas um pouco mais demorada g4 Cle
59. ert e o ConvertBack lbxProfessional ItemsSource professionals public class PostalCodeConverter IValueConverter public object Convert object value System targetType object parameter System Globalization CultureInfo culture Caso pr tico 5 Atribuir uma lista de profissionais a uma datagrid No XAML return value ToString Substring 0 4 o value ToString Substring 4 3 E preciso definir o namespace EEE OO a h mi 117 public object ConvertBack object value du d O a System Type targetType object parameter System Globalization CultureInfo culture lt sdk DataGrid x Name datagrid 1 AutoGenerateColumns False gt return int Parse value ToString Remove lt sdk DataGrid Columns gt lt sdk DataGridTextColumn Header Nome MinWidth 200 Binding Binding Name sdk DataGridTextColumn Header C digo Postal preciso definir o namespace Width 100 MaxWidth 150 Binding Binding Path PostalCode Converter StaticResource postalCodeConverter gt No XAML xmlns sdkz http schemas microsoft com winfx 2006 xaml presentation sdk sdk DataGridTextColumn Widthz 50 Binding Binding Path Address gt lt sdk DataGridTextColumn Header Localidade Binding Binding Path Locality gt preciso definir o conversor nos resources navigation Page Resources
60. esidual N o perder 1 nica encomenda a plataforma dever permitir recuperar todas as encomendas que possam falhar para posterior processamento por operadores Ter um portal para gerir a informa o gen rica dos produtos A XPTO tem um volume de aproximadamente 20 000 utiliza dores registados com um acesso di rio previsto de 10 Arquitectura Como componentes da arquitectura proposta uma aborda gem distribu da em v rios componentes plataformas tirando proveito das principais caracter sticas de cada uma Apresenta o IIS Internet Information Services Net 4 e MVC Como principais vantagens destas tecnologias temos a escalabilidade robustez e flexibilidade Gest o de conte dos e indexa o Sharepoint A gest o de conte dos e indexa o s o alguns dos principais pontos fortes da plataforma Sharepoint Gest o de cat logo Commerce Server A plataforma de com rcio electr nico centra se Esta arquitectura conta ainda com as plataformas Biztalk na componente de integra o e com o CRM na componente de gest o de clientes ficando no entanto de fora do tema pro posto neste artigo A camada de apresenta o integralmente suportada por uma implementa o MVC cujos models v o beber dados principalmente s plataformas Commerce e Sharepoint search services A gest o de conte dos suportada por um portal Share point onde as caracter sticas de produtos ficheiros COMUNIDADE SHAREP
61. estes problemas se resolvem com a adop o de uma postura e atitude de querer saber e compreender por parte de cada um Por isso pe o a todos os que pretendem trabalhar em TI que fa am um favor a voc s pr prios larguem o martelo continuem a aprender e n o cedam a in pcia Fernando Martins faz parte da gera o que se iniciou nos ZX Spectrum 48K Tem um Mestrado em Inform tica e mais de AUTOR uma d cada de experi ncia profissional nas reas de Tecnologias e Sistemas de Informa o Criou a sua pr pria consultora sendo a sua especialidade a migra o de dados COMUNIDADES SharePointPT Padr o alternativo de Sharepoint COMUNIDADE SHAREPOINTPT http www sharepointpt or Padr o alternativo de Sharepoint a pesquisa como fonte de dados parte Arquitectura A plataforma Sharepoint tem sido nos ltimos anos um importante suporte para o desenvolvimento de solu es empresariais de intra extra internet Com maior ou menor dificuldade as equipas entram no padr o de desenvolvimen to modular p e webparts ou via extens o da pr pria plata forma suportado por pacotes de instala o wsps e funcio nalidades empacotadas features tendo asseguradas de base algumas funcionalidades interessantes como p e Controlo de acessos Motor de workflows Plataforma de edi o de conte dos Servi os transversais pesquisa excel business intel ligence etc Instala o de pacotes em toda a farm de f
62. estiveram implementadas As horas parciais ser o facturadas como horas completas Ap s esta frase podermos ficar a pensar que se for usada uma inst ncia durante 30 minutos ser facturada 1 hora mas este pensamento pode n o ser verdade Se fizer deployment de uma inst ncia s 16h50 e parar essa inst ncia s 17H10 ir pagar duas horas Uma hora pela utiliza o entre as 16h50 e as 17H00 e outra hora pela utili za o entre as 17h00 e as 17h10 Inst ncias que estejam implementadas menos de 5 minutos dentro de uma hora n o ser o contabilizadas Cada novo deployment conta uma nova hora Deveremos evitar implementar apagar e voltar a implemen tar inst ncias sempre que poss vel Cada nova implementa o adiciona uma hora por cada inst ncia conta Imagine que implementou uma inst ncia s 15h10 e parou a mesma s 15h20 Se fizer nova implementa o o App Fabric arrancar uma nova m quina e ser cobrada uma nova hora completa Windows Azure Database Limita es O SQLAzure foi desenhado tendo como base o SQLServer sendo por isso natural que partilhe muitas das suas funciona lidades O SQLAzure suporta m ltiplas bases de dados bem como a maioria dos objectos presentes na vers o on premisses tais como tabelas vistas procedimentos armaze nados fun es restri es constraints e triggers No entanto existem algumas diferencas entre as quais se destacam as seguintes N o existe Backup e Restore
63. graus O m todo Drawlmage desenha a informa o de uma classe 9 9 Bitmap com origem no ponto especificado ou com origem e Existem mais overloads mas s o redundantes dimens es ditadas pelo rect naulo E 9 Dim g As Graphics e Graphics Existem outros m todos semelhantes e muitos overloads a maioria redundantes g DrawPie New Pen Brushes Black 2 _ 0 0 100 100 0 90 O canal Alpha perfeitamente respeitado e obt m se boni D Pie N P B hes Black 2 tos resultados com PNG g DrawPie New Pen Brushes Black 2 _ 0 0 100 100 180 90 CE Dim B As New Bitmap c pap png Dim Ponto As New Point 0 0 Dim g As Graphics e Graphics g DrawImage B Ponto Dim Rectangulo As New Rectangle 0 50 50 50 g DrawImage B Rectangulo VISUAL NOT BASIC DrawPolygon Pen Pontos O m todo DrawPolygon desenha um pol gono ao ligar sequencialmente todos os pontos especificados voltando ao primeiro depois do ltimo Existe apenas mais um overload para utilizar valores com casas decimais EEE SS TRT MSGS SEER Dim pti As New Point 50 0 Dim pt2 As New Point 60 40 DrawString Dim pt3 As New Point 100 40 Texto Fonte Brush Rectangulo StringFormat Dim pt4 As New Point 65 60 O m todo DrawString desenha texto a partir de uma string com uma determinada fonte e conjunto de caracter sticas de Dim pt5 As New Point 80 100 formato Dim pt6 As New Point 50 70 Existem overloads
64. ineCap Custom MyP CustomStartCap MyP CustomEndCap g5 DrawBezier MyP pti pt2 pt3 pt4 IMG5 mpress o Dentro do namespace Drawing pertencente ao namespace Printing encontramos algumas classes como PrintDocument que muitos j conhecem para fazer impress o de dados N o uma falha o namespace Printing estar inclu do no namespace Drawing Na verdade poss vel desenhar documentos para a impressora exactamente da mesma forma que os desenhar amos no form Em suma O namespace Drawing e a GDI no geral oferecem nos um grande potencial para a imagina o a partir do qual podemos criar aplica es visualmente ricas A forma como se programa com a API em n vel mais elevado com o namespace Drawing concede uma simplicidade de tal forma que poss vel desenhar uma linha com duas linhas de c digo Se queremos enriquecer visualmente uma aplica o WinForms nem vale a pena procurar mais A GDI ideal e est inclu da na NET AUTOR a NET framework S rgio Ribeiro curioso e auto didacta com uma enorme paix o por tecnologias de informa o e uma saud vel rela o com Moderador do quadro de Visual Basic NET na comunidade Portugal gProgramar desde Setembro de 2009 Alguns frutos do seu trabalho podem ser encontrados em http www sergioribeiro com CoreDump Martelo lt gt Inepela Esta semana conversava com um colega e amigo sobre o facto da maioria dos profis
65. manho de cada chamada At agora trabalhamos com as entidades completas No entanto existem muitas opera es ou casos de uso que necessitam apenas de parte das entidades ou de dados agregados Ir buscar todos os artigos de uma edi o quando apenas pretendemos uma contagem de artigos da edi o improdutivo quando podemos fazer esses c lculos directa mente na base de dados e obter apenas os dados que preci samos Para este efeito usamos projec es em conjunto com transformadores Count Max Aggregate Os casos mais simples s o aqueles em que pretendemos obter um valor resultante de uma query M B E S ES var edicaoMaisAntiga session QueryOver Edicao Select Projections Min Edicao e gt e DataEdicao SingleOrDefault DateTime Neste caso estamos a procurar o valor m nimo de todas as datas de edi o Como este query devolve um valor do tipo DateTime precisamos de indicar isso atrav s do argumento de tipo do m todo SingleOrDefault claro que podemos usar um Future para os casos em que pretendemos obter v rios valores sem ter a penaliza o de v rias chamadas base de dados EEE c Es var edicaoMaisRecente session QueryOver Edicao Select Projections Max Edicao e gt e DataEdicao FutureValue DateTime Outra situa o onde projec es s o teis em subqueries on
66. mas como as apontadas por Doricio 1998 e Zenil 2011 e simula o aplica o de modelos cient ficos na simula o de fen menos naturais amostragem aplica o de modelos cient ficos baseados numa parte menor de um todo maior que ser analisada an lise num rica aplica o de modelos determin sticos num ricos para a economia de tempo de computa o programa o de computadores aplica o de valores aleat rios para testes de efici ncia algor tmica computacional teoria de decis o auxiliar a tomada de decis o base na escolha aleat ria de dados recrea o aplica o em jogos de azar A gera o de n meros pseudo aleat rios depende da escolha adequada dos par metros usados para a gera o do n mero em si Um desses par metros que merece aten o o chamado semente DIAS 2005 o qual caracterizado por ser o valor inicial a ser usado para a gera o dos demais valores aleat rios subsequentes por meio de algum algoritmo espec fico para esta finalidade Segundo Dias 2005 a escolha da semente deve ser realizada com muito cuidado pois a utiliza o de uma mesma semente entre diferentes aplica es pode ocasionar erros bastante comuns que levam a conclus es que podem representar de forma incorreta o comportamento dessas aplica es Para a gera o de n meros pseudo aleat rios existe de um grande conjunto de alg
67. ndente para manuseamento dos dados VS Este padr o apresenta como principais vantagens Melhor organiza o da aplica o pela divis o das v rias l gicas em zonas separadas N o usa view state ou forms o que d um maior con trolo sobre a aplica o e sobre a informa o trocada com o utilizador e Melhor suporte para um padr o de desenvolvimento TDD Test Driven Development um padr o que pro move o desenvolvimento baseado na exist ncia de testes unit rios Dada a granularidade fina dos componentes uma boa aposta para equipas de maior dimens o Indexa o e pesquisa Tendo a pesquisa como fonte de dados da camada de apre senta o v rios pontos surgem como requisitos deste com ponente e Fornecer informa o de car cter gen rico contida num portal de Sharepoint e Fornecer informa o de cat logo contida no Com merce Server e Fornecer informa o de cariz t cnico contida em outros sistemas externos Com base nestas necessidades optou se pela seguinte abor dagem o Criac o de um conjunto de p ginas de ndice em cas cata que comecam por listar sites com link para o n vel seguinte onde passa o site seleccionado no link no n vel seguinte lista os sub sites do site selecciona do e por ltimo lista os produtos com link para a na de detalhe do produto COMUNIDADE SHAREPOINTPT http www sharepointpt org multithreaded permite paralelizar a
68. ndo um m todo n o eficiente No entanto prefer vel ter possuir em m os um m todo n o eficiente de gera o de n meros aleat rios do que n o possuir absolutamente nenhum m todo claro que para uma aplica o que exija maior precis o ser necess rio considerar algum outro m todo No pr ximo artigo ser discutido o m todo quadrado do meio que uma varia o do m todo apresentado nesta parte BIBLIOGRAFIA DIAS G N A Influ ncia da Semente na Gera o de Seq ncias de N meros Aleat rios atrav s de Geradores de N meros Pseudo Aleat rios Rio de Janeiro Universidade Federal do Rio de Janeiro 2005 Dispon vel em lt http bit ly qznXtW Acesso em 29 jun 2011 10 52 35 DORICIO J L N mero Aleat rios e Apli ca es S o Paulo Universidade Federal de S o Carlos Departamento de Matem tica 1998 GIORDANO F R FOX W F amp WEIR M D A first course in mathematical modeling 4 ed California Books Cole P 184 2009 KNUTH D E The Art of Computer Pro gramming series in computer science and information processing 2d ed Indi ana Addison Wesley 1981 REYS A E L MACHADO A A FERREIRA D F DEM TRI C B amp RIBEIRO P J Sistema Galileu de Educa o Estat stica S o Paulo Universidade de S o Paulo ESALQ 2011 Dispon vel em http bit ly q5jbT8 Acesso em 1 jul 2011 08 17 25 SCHILDT Turbo Avan ado Guia do Usu rio Rio de Jan
69. ne Artigo 0 com autores 1 artigo Titulo string Join autores Neste caso tamb m podemos vir a ter o problema de entida des duplicadas No entanto como o carregamento feito por query podemos fazer o tuning em cada caso de uso de acordo com as necessidades reais var autores Console Out WriteLine Artigo 0 com autores 1 artigo Titulo string Join autores ToArray Passa de Short SQL Row Count begin transaction with isolation level Unspecified Mais a frente neste artigo vamos ver uma forma mais correc ta e menos dada a erros de resolver este problema fazendo o carregamento de dados de forma f cil e r pida SELECT FROM Autor autores0_ WHERE autores0_ Artigo_id 2526 SELECT FROM Autor autores WHERE autores0_ Artigo_id 2527 SELECT FROM Autor autores0_ WHERE autores0_ Artigo_id 2528 commit transaction 0 0 2 0 Row Count Batch fetching Para Outra forma de reduzir o n mero de vezes que efectuamos chamadas base de dados configurar rela es com batch fetching Esta uma configurac o que apenas pode ser feita no mapeamento por oposic o a eager loading que tamb m pode ser feita por query Short SQL begin transaction with isolation level Unspecified SELECT FROM Artigo this SELECT FROM Autor autores WHERE autores0_ Artigo_id in 101 102 103 104 commit transaction na Nestes casos quando NHibernate
70. nem a forma como a vai render os gr ficos VISUAL NOT BASIC Como em tudo se pretendemos qualidade temos de sacrifi car performance e vice versa MeasureString Eis algumas das propriedades mais comuns e seus efeitos 9 prop Nos casos em que desenhamos texto indicando apenas uma posi o de origem XY este desenhado de forma linear sem qualquer limite Compositing HighQuality Smoothing HighQuality TextRendering AntiAlias O m todo MeasureString permite nos medir o tamanho que essa string vai ocupar para que possamos fazer correcta mente os nossos c lculos Tamb m poss vel medir as dimens es de uma string dese nhada dentro de uma rea que faz com que possamos ter no o do quanto cresceu nos casos onde ocorre Compositing HighSpeed wordwrap a a O m todo MeasureString muito semelhante ao m todo Et DrawString pois precisa de saber exactamente como que o texto foi ou vai ser desenhado para que possa interna mente fazer a simulac o O m todo devolve nos as dimens es do texto em largura e altura num tipo de dados SizeF Compositing HighSpeed smoothing None TextRendering AntiAlias Pen Cap Dash Style Ao desenhar linhas sobretudo com alguma espessura vis vel podemos notar que os terminais da linha s o abrupta mente cortados como normal Compositing HighSpeed O pen cap determina precisamente como esses terminais smoothing None s o des
71. ng PathzName Mode TwoWay UpdateSourceTrigger Default Ou em code behind var binding new Binding Name Mode BindingMode TwoWay _ UpdateSourceTrigger _ UpdateSourceTrigger Default tbxName SetBinding TextBox TextProperty _ binding Caso pr tico 2 Suponhamos que pretendemos interagir a propriedade IsProgrammer com uma CheckBox Em XAML CheckBox Namez ckboxIsProgrammed IsChecked Binding Path IsProgrammer Mode TwoWay UpdateSourceTr igger Default gt Ou em code behind var binding new Binding IsProgrammer Mode BindingMode TwoWay UpdateSourceTrigger UpdateSourceTrigger Default js ckboxIsProgrammed SetBinding CheckBox IsCheckedProperty binding PROGRAMAR Caso pr tico 3 Caso pr tico 4 Atribuir uma lista de profissionais a uma listbox apresentan do a propriedade Name Suponhamos que pretendemos apresentar o PostalCode numa label usando um conversor para formatar a informa XAML o PostalCode um valor inteiro que guarda o c digo ListBox Name 1bxProfessional postal o PostalCodeConverter o conversor que separa os DisplayMemberPath Name gt primeiros 4 d gitos dos 3 ltimos d gitos usando um h fen l l Em code behind A classe PostalCodeConverter implementa a interface IVa lueConverter e consiste na implementa o de dois m todos var professionals new List Professional fundamentais o Conv
72. nhas de c digo isto pode poupar bastante esfor o num projecto Interfaces Apesar de j existir antes de Java 5 as interfaces s o uma maneira simples de Java ultrapassar as limita es de heran a simples ao inv s da m ltipla do C e ao mesmo tempo evitando grande parte do problema do Diamante da Morte Diamond of Death em Ingl s onde a m ltipla heran a pode criar problemas ao compilador e ao programador sobre qual o m todo a ser executado Figura 1 Exemplo do Diamon of Death Na fig 1 podemos ver um exemplo em que ambas as clas ses Be C herdam da classe D Por sua vez a classe A her da da B e C simultaneamente Supondo que a classe D pos sui o m todo xpto e tanto a classe B como a C na sua implementac o reescrevem o m todo Supondo que ele chamado no contexto da classe A e assumindo que ele n o reescrito na classe A ent o qual seria o m todo a ser cha mado O da classe B ou C Nesse caso temos o famoso Diamante da Morte Como n o poss vel definir comporta mentos nas interfaces apesar de uma classe poder imple mentar v rias interfaces mesmo que ambas possuam m to dos com a mesma assinatura ele t m que ser definido na classe e esse que ser usado Apesar de prevalecer o problema de m todos com a mesma assinatura mas com fun es distintas o que impossibilitava a implementa o de ambas as interfaces Aqui est um exemplo da declarac o de uma interface public inte
73. o comum atrav s de uma arquitectura que optimiza os m dulos de maior interesse para o cen rio apre sentado Rui Melo 19 a 21 Out Capsi 2011 18 Out Upload Lisboa 28 Out 24 Reuni o Presencial NetPonto 10 a 12 Nov Sapo Codebits V 02 Nov SASIG 4 Para mais informa es eventos http bit ly PAP Eventos NOTICIAS O melhor amigo do portugu s e ecol gico Kork2 foi desenhado pela A Pro dukt e produzido em Pa os de Brand o num material reciclado e recicl vel o canivete su o do Ipad e foi desenhado pela A Produkt empresa sediada em Portugal rendida aos encantos da corti a O Kork2 sucessor do Kork por direito ajusta se ao Ipad2 protegendo o e tornando a sua utiliza o ainda mais confort vel e din mica Simples leve ergon mico recortado pela 3DCork de Pa os de Brand o num material reciclado e recicl vel S o estes alguns dos segredos que atra ram o Kork2 at as prateleiras do MoMA de Nova lorque e de T quio Todos os pormenores s o estudados ao mil metro por Michael Andersen e Benedita Feij dupla que se lancou no mercado Apple com o StickyStrap para o iPhone antes de colocarem o Pad nas passarelas internacionais Fazemos um exerc cio de especulac o porque os desenhos da Apple est o normalmente fechados a sete chaves expli cou ao P3 Michael Andersen ansioso pelos desenhos deta Ihados do iPhones Pad3 Vamos trabalhando com
74. o utilizados poderemos ver a performance de l O baixar para os n veis m nimos anunciados mas em contrapartida sempre que os recursos partilhados tiverem um n vel de utilizac o inferior veremos essa performance aumentar Quanto maior for o tamanho da inst ncia maior ser a perfor mance m nima de l O e consequentemente essa performan ce ser tamb m mais consistente ao longo do tempo Capacidade VS Quantidade Em Windows Azure podemos escalar horizontalmente adicio nando mais m quinas virtuais ou escalar verticalmente usan do m quinas virtuais de maior capacidade Dependendo do tipo de aplicac o e da carga de trabalho que cada aplicac o dever ser escolhida a quantidade e capaci dade das inst ncias de modo a optimizar os custos e desem penho A decis o poder ser tomada tendo por base algu mas das seguintes caracter sticas Maior capacidade Comunica o mais r pida e mais barata entre proces sos mesma m quina Pode sair mais barato nos casos que se usam muito Queues porque podemos fazer Queue GetMessages 32 e processar em paralelo M quinas com maior capacidade t m uma maior mais consistente performance de I O Maior quantidade Permite uma escalabilidade mais granular conse quentemente mais barata Maior toler ncia a falhas A falha de uma m quina virtual t m menor impacto Temos que usar Azure Storage para comunicar entre processos Local Storage O Fab
75. oritmos Neste estudo em particular apresentado o m todo do meio do quadrado M TODO DO MEIO DO QUADRADO A gera o de n meros pseudo aleat rios a partir do m todo do meio do quadrado middle square method foi propostao em 1946 por John von Neumann sendo este algoritmo considerado o primeiro m todo de gera o de n meros aleat rios GIORDANO FOX WEIR 2009 p 184 T RN 2001 No m todo do meio do quadrado foi proposto por Von Neumann o uso de um valor semente que elevado ao quadrado gera um resultado Desse resultado retirado do PROGRAMAR meio um n mero com o mesmo tamanho em d gitos do valor usado para a semente A partir do novo valor repete se a opera o para a obten o de um novo valor e assim por diante T RN 2001 WHELAN 2011 STUBBE 2011 Apesar de engenhoso o m todo apresenta algumas falhas Segundo Knuth KNUTH 1969 p 4 v rias pessoas fizeram uso do m todo do meio do quadrado no in cio da d cada de 1950 tendo sido utilizadas sementes com tamanho de quatro d gitos sendo este o tamanho de semente m nimo recomendado Descobriu se que alguns valores levam a sequ ncias infinitas de gera o de valores pseudo aleat rios ao apresentarem valores como 6100 2100 4100 e 8100 A partir da o c lculo do meio do quadrado efetua a repeti o infinita da mesma sequ ncia Descobriu se tamb m que alguns valores usados levam obten o de valor zero como res
76. orma auto m tica Neste artigo pretende se desconstruir as abordagens mais tradicionais apresentando uma solu o pouco comum atra v s de uma arquitectura mas que optimiza os m dulos de maior interesse para o cen rio apresentado centrando se principalmente na componente de indexa o e pesquisa do Sharepoint Este cen rio corresponde a parte de uma imple menta o real Neste 1 artigo abordada a componente de arquitectura da solu o e componentes de alto n vel para permitir a visuali za o da solu o No 2 artigo da s rie ser descrita a componente mais t cni ca incluindo a configura o das regras de pesquisa das propriedades crawlled e managed models de consumo dos dados e o respectivo empacotamento da solu o de indexa Cen rio A empresa XPTO necessita de um portal p blico que dispo nibilize uma loja de com rcio electr nico tendo como princi pais requisitos Performance carregamento de p ginas at 3 segun dos independentemente do volume de acessos Escalabilidade a plataforma deve permitir um proces so evolutivo simples e s lido Robustez os tempos de indisponibilidade s o cr ticos para a organiza o dada a especialidade do neg cio a suportar pela plataforma a aplica o n o dever apresentar picos di rios de utiliza o prevendo se um volume de utilizadores est vel no per odo 06 00 at as 02 00 altura em que a utiliza o decai para um valor r
77. os A senten a representa uma vit ria importante para a fabricante do iPhone que v corroborada a intocabilidade do seu ecossistema e assegu rado o direito a n o disponibilizar o seu sistema operativo a outras fabricantes Escrito ao abrigo do novo Acordo Ortogr fico Fonte Tek Sapo Investigadores quebram criptografia SSL Acesso a bancos portugueses e estrangeiros em risco A seguran a perfeita um mito j dizia o ditado Nos dias de hoje a seguran a de muitos sites especialmente de home banking ou compras online passa pelo uso do protocolo SSL Secure Sockets Layer que permite permitia a integridade e confidencialidade dos dados que s o passados entre o cliente e o servidor Segundo informa es dispon veis no site The Register os investigadores tailandeses Thai Duong e Juliano Rizzo conseguiram pela primeira vez quebrar o at agora inquebr vel protocolo SSL e assim decifrar a informa o que passada ponto a ponto entre o cliente e o servidor A noticia preocupante e alarmante mas a descoberta levada a cabo pelo grupo de investigadores apenas p e em causa a seguran a as vers es 1 0 e anteriores do TLS Transport Layer Security o sucessor do SSL At ao momento n o h qualquer informa o sobre vulnerabilidades que afectem a vers o 1 1 ou 1 2 do TLS A demonstra o de tal feito ocorrer na confer ncia Eko party que se realizar em Buenos Aires no final desta sema
78. pping HasMany a gt a Autores BatchSize 10 res a soluc o mais directa passa por fazer tr s queries separados resultando em tr s round trips base de dados TEMA DA LAPA var edicoes session QueryOver lt Edicao gt List var edicaoComArtigos session QueryOver lt Edicao gt Fetch e gt e Artigos Eager WithSubquery WhereProperty e gt e DataEdicao In QueryOver Of Edicao Select e gt e DataEdicao OrderBy e gt e DataEdicao Desc Take 1 SingleOrDefault var artigoComAutor session QueryOver Artigo Where a gt a Id idTerceiroArtigo Fetch a gt a Autores Eager SingleOrDefault foreach var edicao in edicoes Console Out WriteLine Edicao 2 edicao DataEdicao j var artigos edicaoComArtigos Artigos Select a a Italo Console Out WriteLine Edicao 0 Artigos 1 edicaoComArtigos DataEdicao string Jen cartigos var autores artigoComAutor Autores Select a gt a Nome ToArray Console Out WriteLine Artigo 0 com autores 1 artigoComAutor Titulo string Join autores Usando a ferramenta NHProf para ver os pedidos que s o feitos base de dados vemos que s o feitos 3 pedidos dis tintos SELECT FROM Edicao this 2 SELECT FROM Edicao this left outer join Artigo artigos WHERE this Data dicao in Select TOP 1 this 0 SELECT FROM Artigo this left outer join Auto
79. r autores2 WHERE this Jd 3638 2 1 15 0 15 ms 19 ms 14 ms 15 ms Na realidade podemos diferir a defini o das opera es de acesso a dados da sua execuc o Podemos ter assim uma fase de preparac o onde se criam os queries que se preten dem fazer e uma segunda fase onde se mostram os resulta dos Desta forma podemos preparar todos os queries e de uma s vez fazer todos os pedidos a base de dados este comportamento que os Futures nos permitem A alte rac o ao c digo m nima Usamos Futures em vez de List e Future Value em vez de SingleOrDefault var edicoes session QueryOver lt Edicao Future var edicaoComArtigos session QueryOver Edicao Fetch e gt e Artigos Eager WithSubquery WhereProperty e gt e DataEdicao In QueryOver Of Edicao Select e gt e DataEdicao OrderBy e gt e DataEdicao Desc Take 1 FutureValue var artigoComAutor session QueryOver Artigo Where a gt a Id idTerceiroArtigo Fetch a gt a Autores Eager FutureValue Artigo foreach var edicao in edicoes Console Out WriteLine Edicao 07 edicao DataEdicao 1 var artigos edicaoComArtigos Value Artigos Select a gt a Titulo ToArray Console Out WriteLine Edicao 0 Artigos 111 edicaoComArtigos Value DataEdicao string Joint artigos var autores artigoComAutor Value Autores Select a gt a Nome ToArray Console
80. rantir mais seguran a ao programador de modo a que ele saiba que tipos de coisas est o em v rios v add Nome locais O tipo Object d uma sensac o de liberdade porque TAN podemos meter tudo l dentro algo como o void do C Contudo deixa uma responsabilidade acrescida ao progra mador que ter que ter em aten o sempre o que est real v add new Integer 2 Iterator x v iterator while x hasNext mente l dentro para n o realizar opera es n o permitidas soma Integer parseInt x next toString Pelo contr rio com as paramendacoes poss vel saber exactamente que opera es s o permitidas sobre a estrutura de dados porque ao escrever o c digo sabemos o que l return soma Outra grande vantagem a inexist ncia de convers es No primeiro exemplo depois de obter o valor da lista era neces aport s rio converter para inteiro e o valor obtido poderia ser Pubs s B Mas pe inconvert vel para inteiro e s depois somar No segundo o eJ fe 4 7 r Pro ote ouve exemplo o valor devolvido j do tipo que pretendemos 1 r Protected 79 Your 9 Xtenaa neste caso um inteiro o que n s est vamos espera mi 2 3 ur 113 Pub mM Jit 2 Tr A gt 9 Supe Outn i 11165 1 setma 2109 Fpp AutoBoxing setUnde _ true pes owner Ora itur Erue Infelizmente os tipos par
81. re tr s op es select comportamento por omiss o subselect e join Quando usado o select por cada entidade com a rela o efectuado um select base de dados Este o comporta mento que existe por omiss o e quer dizer que continuamos com um problema de Select N 1 Quando usado o subselect por cada query ou entidade obtida da base de dados efectuado outro query que obt m os dados necess rios para popular as rela es Este com portamento interessante nas rela es de muitos para mui tos como a entre Artigos e Autores Se n s tivermos o seguinte query eeo Foreach var artigo in session QueryOver lt Artigo gt Where a gt a Id lt idQuartoArtigo List var autores artigo Autores Select a gt a Nome Console Out WriteLine Artigo 0 com autores 1 artigo Titulo string Join autores ToArray Os queries gerados por omiss o s o 4 Short SQL Row Count begin transaction with isolation level Unspecified SELECT FROM Artigo this WHERE this Id lt 1316 SELECT FROM Autor autores0_ WHERE autores0_ Artigo_id 1313 SELECT FROM Autor autores0_ WHERE autores0_ Artigo_id 1314 SELECT FROM Autor autores0_ WHERE autores0_ Artigo_id 1315 commit transaction Ow Um para obter os artigos e um por cada artigo TEMA DA LAPA No entanto se configurarmos a rela o com um fetch por subselect passamos a ter apenas dois queries Short S
82. rface Expiravel public bool estaExpirado public GregorianCalendar expiraEm PROGRAMAR Qualquer classe que implemente esta interface ter que obrigatoriamente possuir aqueles dois m todos especifica dos Assim poder se facilmente percorrer por exemplo uma lista de objectos de diferentes classes mas com uma interface em comum Como bvio os nicos m todos que poder o ser chamados sem serem necess rias convers es ser o os definidos na interface Classes Abstractas As classes abstractas s o muito teis para possibilitar a pou pan a de c digo e garantir o funcionamento correcto da classe que apesar de tudo estar incompleta Imaginemos por exemplo o caso de uma Biblioteca Poderia existir uma classe abstracta para as publica es que teria informa es gerais como o c digo de identifica o se estava requisitado se era poss vel de requisitar quantida de estado entre outros atributos No entanto possuiria m to dos abstractos que t m que ser codificados obrigatoriamen te na primeira descendente n o abstracta Por exemplo os m todos maximoDiasEmprestimo utilizadorPode Requisitar entre outros seriam definidos como abstractos e n o possuiriam c digo Assim seriam codificados pelas clas ses Livro DVD Revista e todos aqueles concretos que her dassem da classe abstracta mas os m todos j codificados na classe abstracta poderiam ser aproveitados poupando
83. ric Controller pode a qualquer momento destruir a m quina virtual e substituir por uma nova Isso pode aconte cer por exemplo sempre que seja detectado falhas na apli ca o falhas no hardware ou simplesmente porque precisa de realizar actualiza es ao sistema operativo Por essa raz o a informa o armazenada em local storage considerada vol til Esta situa o dever ser levada em con ta principalmente nos casos em que existe migra o de aplica es para o Windows Azure Algumas aplica es desenhadas para correr apenas num servidor usam local storage para guardar alguns ficheiros de forma persistente PROGRAMAR Como j vimos em Windows Azure essa informa o consi derada vol til Em contrapartida a migra o de aplica es desenhadas para executar em web farms normalmente n o apresentam este problema Outro alerta em rela o ao uso de local storage tem a ver com a visibilidade da informa o Tudo o que for escrito para local storage s vai ser visto pela inst ncia actual Estamos a desenvolver para um ambiente altamente escal vel e na maioria dos casos manter a informa o privada n o a melhor op o Existem casos em que vantajoso fazer cache local de alguns dados mas na maioria dos cen rios deve ser usado um tipo de storage persistente e partilhado Roles As inst ncias s o pagas por hora de rel gio As inst ncias s o facturadas com base nas horas de rel gio em que
84. roblemas pare cem um prego E a verdade que esta frase resume um pouco o que se passa Em vez de se compreender o que se passa para procurar a melhor solu o a aplicar martela se a nica solu o que se conhece Por vezes a aplica o da solu o escala com o problema e quanto maior o problema maior a martelada Fico a pensar se ser ironia ou pura casualidade o facto de tantas aplica es terem um martelo como cone em algumas das suas op es de menu bvio que compreender as bases da tecnologia impres cind vel para saber o que andamos a fazer Se n o com preendermos as bases da tecnologia dificilmente saberemos o que estamos a fazer e se n o sabemos o que estamos a fazer ent o o resultado do nosso trabalho nunca ser gran de coisa Ningu m nasce ensinado mas nunca na hist ria da Humanidade foi t o simples r pido e barato aceder ao conhecimento Na rea de TI n o faltam livros blogs f runs e afins onde tudo se encontra documentado e descrito para nossa compreens o Infelizmente tamb m aqui vejo que muitos usam a internet de forma errada fazendo copy paste programming em vez de compreenderem a solu o e quando o c digo copiado de um qualquer site n o funciona primeira o resultado um post com um pedido de ajuda Infelizmente a nossa comunidade tamb m tem exem plos de sobra deste tipo A culpa da forma o inadequada s respons vel at certo ponto uma vez que todos
85. s Black 2 0 0 100 100 180 90 VISUAL NOT BASIC 20 80 tens o 0 100 100 tens o 5 100 100 tens o 1 100100 DrawEllipse Pen Rectangulo DrawLine Pen Ponto1 Ponto2 O m todo DrawEllipse desenha uma elipse inscrita no rec O m todo DrawLine desenha uma linha com origem em Pon t ngulo especificado 01 e destino em Ponto2 A elipse desenhada no centro do rect ngulo o que faz com Existem mais overloads mas s o redundantes que se possa afirmar que por exemplo num quadrado Dim pt4 As New Point 25 25 100x100 o m todo DrawEllipse vai desenhar uma circunfe xu s New Point r ncia centrada em x 50 e y 50 com raio de 50px Dim pt2 As New Point 75 75 Dim recti As New Rectangle 0 0 100 100 Dim g As Graphics e Graphics Dim rect2 As New Rectangle 0 O 100 50 g DrawLine New Pen Brushes Black 2 pt1 pt2 Dim g As Graphics e Graphics g DrawEllipse New Pen Brushes Black 2 recti g DrawEllipse New Pen Brushes Black 2 rect2 DrawPie Pen X Y Width Height Angulolnicial Varrimento A om m O m todo DrawPie desenha uma sec o de um c rculo lem brando uma fatia de pizza ou tarte Pie 100x100 circunfer ncia inscrita no rect ngulo formado XY Width e Height e desenhada a sec o da circunfer ncia que come a no Angulolnicial e termina em Angulolni cial Varrimento 100x50 Drawlmage Bitmap Ponto Rectangulo 1 Os ngulos s o dados em
86. s v rias recolhas e diminuir significativamente o tempo de carregamento List sites da p gina Uma vez que esta p gina ser chamada tantas vezes quantos os produtos existentes tem um impacto significativo na durac o total do processo de 8 List subsites indexa o e consequentemente na desactualiza o da informa o para o utilizador final p e se uma e d indexac o demorar 1 hora h a probabilidade dos List products dados dos produtos apresentados estejam desactuali zados at 1 hora atr s E Produt detail O modelo do processo de recolha de informa o gera o da p gina de indexa o apresentado no diagrama seguinte P gina de detalhe do produto que recebe por metro o sub site bem como o c digo do produto e gera uma p gina de detalhe contendo os dados i Lista Sharepoint necess rios para a camada de apresenta o Estes dados ao serem indexados na mesma p gina ficam relacionados entre si Ao incluirmos uma chave ex id do produto vamos poder aceder lhe como uma enti dade Lista Lista Detalhe aspx lt html gt H head Sistema externo lt hea Commerce Server Site 1 Site_2 Site_3 Site 4 Site 5 Site 6 Site 7 Site 8 Site 9 lt title gt Detalhe de produto lt title gt meta name ProductName content Single Track King gt lt meta name ProductCategory content Bicicletas Todo Terreno meta name ProductDescription content
87. sionais de TI que chegam actual mente ao mercado de trabalho n o compreenderem as bases sobre as quais assentam as tecnologias que utilizam Pode parecer conversa de velho do restelo de quem tinha de saber configurar um disco r gido como master ou slave atrav s de jumpers no hardware ou de quem tinha de saber configurar o DOS correctamente para poder fazer uso total dos 4 MB de RAM que estavam dispon veis e libertar ao m ximo os m ticos 640Kb Acreditem que nenhuma destas experi ncias saudosista e que o tema da conversa n o originou da A verdade que actualmente detecto falhas nas bases de muitos profissionais de TI que ou por n o terem sido bem orientados ou pela actual facilidade tecnol gica ou por sim ples pregui a pessoal n o compreendem na totalidade as tecnologias com que trabalham diariamente S o exemplos t picos a utiliza o de frameworks que facili tam o desenvolvimento atrav s da eleva o de conceitos e abstrac o a utiliza o de bases de dados e a utiliza o do paradigma Object Oriented Uma framework simplifica e agiliza o desenvolvimento mas tamb m esconde e abstrai o trabalho que est por detr s fazendo querer a muitos dos seus utilizadores que magia Como resultado temos muitas vezes profissionais de TI incapazes de compreender a sua ferramenta de trabalho ficando sua merc Este desconhecimento torna se rele vante quando se deparam com determinados bugs relacio
88. t 0 0 New _ nossos rabiscos Point 100 100 Color Red Color Green Rs 37 VISUAL NOT BASIC necess rio um ponto onde o gradiente vai iniciar e um 180 90 ponto onde vai terminar bem como as cores nesses mes mos pontos A mistura de cor no intervalo interm dio automaticamente calculada Existem classes que desempenham um papel importante na 100 100 mistura de cores do gradiente mas n o as vamos abordar DrawBezier Pen Ponto1 Ponto2 Ponto3 Ponto4 Observemos diferentes coloca es dos pontos do gradiente bai O m todo DrawBezier desenha uma curva de B zier com 4 abaixo pontos de controlo 100 100 100 0 d w Existem mais overloads mas s o redundantes Hd 7575 Dim pt1 As New Point 0 0 0 100 200 200 Dim pt2 As New Point 80 20 0 0 100 100 Font mM Dim pt3 As New Point 20 80 A Font necess ria para todos os m todos que impliquem o uso das fontes do sistema Dim pt4 As New Point 100 100 Ser tipicamente utilizada sempre que for necess rio escre A bates ver alguma coisa na superf cie GDI g DrawBezier New Pen Brushes Black 2 _ Podemos criar uma Font directamente no construtor ptl 2 PES pt4 Dim F As New Font Arial 14 Dim F As New Font Arial 14 FontStyle Bold Or _ FontStyle Italic Dim F As New Font Arial 14 FontStyle Bold Or _ FontStyle Italic
89. tos que afirma ser a Natureza determinista onde tudo ocorre devido a uma causa Para Doricio 1998 n o existe o que se possa chamar de n mero aleat rio o que corrobora com a afirma o indicada por Schildt 1990 ao dizer que o termo gera o de n meros aleat rios um absurdo Apesar da concord ncia ou n o sobre este tema os computadores eletr nicos de alguma forma produzem sequ ncias de valores num ricos chamados n meros aleat rios a partir de duas abordagens gera o de n meros pseudo aleat rios PRNG Pseudo Random Number Genarator gera o de n meros verdadeiramente aleat rios TRNG True Ramdom Number Generator O mecanismo PRNG a forma mais comum encontrada nos computadores eletr nicos A palavra pseudo sugere neste contexto o uso de valores num ricos que n o s o gerados de forma aleat ria uma vez que s o obtidos por meios artificiais a partir de algoritmos matem ticos elaborados para esta finalidade O mecanismo TRNG n o comum ou de f cil acesso os equipamentos para esta finalidade s o muito caros para utilizadores menos cient ficos uma vez que os valores chamados aleat rios s o obtidos a partir de fen menos oriundos da natureza como ru dos ambientais altera es clim ticas entre outros fen menos A gera o de n meros aleat rios sejam PRNG ou TRNG s o necess rias em v rios tipos de aplica o destacando se algu
90. u o projecto n o propriet rio BerliOS tinha como objective apoiar v rios intervenientes e providenciar uma fun o de media o neutra Em 2011 cerca de 4710 projectos foram alojados no BerliOS com 50 000 utilizadores registados e mais de 2 6 milh es de ficheiros des carregados cada m s Estamos orgulhosos de com o Ber liOS termos trazido a ideia de um dep sito OSS Europa Entretanto o conceito tem permanecido e existem muitas alternativas boas Infelizmente como instituto de pesquisa Fraunhofer FOKUS tem apenas algumas oportunidades para operar um dep sito como o BerliOS Tal projecto apenas funcionar com um financiamento de seguimento ou com patrocinadores ou par ceiros que assumam o controlo do dep sito No campo de OSS um empreendimento dif cil Num inqu rito recente a comunidade indicou algum apoio em fundos e m o de obra pelos quais gostar amos de vos agradecer Infelizmente o resultado n o suficiente para colocar o projecto numa base financeira sustent vel Al m disso a procura de patrocinado res ou parceiros foi sem xito O Open Source entendido pela Fraunhofer FOKUS como um paradigma para a futura utiliza o de intelig ncia orienta da da Magoa nos ainda mais o facto de sermos for ados a descontinuar o alojamento para BerliOS em 31 12 2011 Como programador dever exportar o seu projecto BerliOS para outro dep sito Como alternativas ver http bit ly 18Pp6N No nosso site ir
91. ultado do meio do quadrado impossibilitando a continuidade do uso do m todo tais como os m ltiplos de 1000 para as sementes de quadro d gitos Um bom gerador de n meros aleat rios deve gerar sequencias infinitas sem resultar em zero N o deve repetir valores em sequ ncias No entanto para aplica es que n o requerem grande grau de precis o o m todo do meio do quadrado pode ser til Tomando se por como base o valor de semente 5678 quatro d gitos de tamanho e elevando se este valor ao quadrado obter se como resultado o valor 32239684 oito d gitos de tamanho Do quadrado obtido s o retirados os quatro d gitos do meio desse quadrado Assim sendo do ao valor 32239684 tira se o valor 2396 Na sequ ncia a partir do valor 2396 calcula se o seu quadrado que resultar no valor 5740816 sete d gitos de tamanho No entanto este segundo quadrado possui sete d gitos de tamanho e devido a isto necessita ser equacionado para que possua oito d gitos Assim basta acrescentar um valor zero esquerda do quadrado de forma que fique assim representado 05740816 Deste ajuste pega se nos quatro d gitos do meio que neste caso o valor 7408 e prossegue se com a aplica o da t cnica de forma sequencial at o ponto desejado ou quando o meio do quadrado for 0000 ALGORITMO DO MEIO DO QUADRADO A aplica o do m todo pode ser efetivada a partir do algoritmo seguinte N entrada do n mero que representa a s
92. xecutar a aplica o dar um erro no ciclo Porque tenta r somar uma sequ ncia de caracteres com um n mero inteiro Contudo se aplicarmos um c digo semelhante no Java 6 gra as s parametriza es obteremos um erro de em Java 6 nisto ODE ez Parametriza o das Colec es public int exemplo ArrayList Integer v new Array Antes do Java 5 a maneira de implementa o de List Integer colecc es por exemplo a classe ArrayList poderia levar ini cialmente um int e posteriormente uma String Assim era f cil que fosse gerado um erro em runtime quando estiv ssemos v add new Integer 2 por exemplo a percorrer a colec o e somar todos os ele mentos No entanto agora poss vel parametrizar a colec DES o e dizer para ela s aceitar uma determinada estrutura de dados ou estruturas descendentes que herdem naturalmen te as mesmas propriedades Assim quando antes poder a mos ter no c digo algo como O ArrayList assim genericamente ArrayList lt E gt sendo que TT GE pode ser substitu do por qualquer classe mas n o por pulbl do EPE dados de tipos primitivos como o int double mas isso resolvido de maneira simples como explicado mais frente na sec o AutoBoxing int soma 0 v add Nome Aqui dar erro de sin ArrayList v new ArrayList int soma 0 Podemos aperceber nos que a grande vantagem das para metriza es ga
Download Pdf Manuals
Related Search
Related Contents
取り扱い説明書 EARL`S ラウンドオイルクーラーキット VTR1000F 9 製品PDFダウンロード カタログ - テックトータル電子 BELZONA 1821 Fiche Technique 06/08/2014 JVC TH-A25 User's Manual GE AGE21 Air Conditioner User Manual HP Compaq Business Desktop dc5700 - Pentium D 915 2.8 GHz (S6440465) Samsung 460P Инструкция по использованию USB10ポート充電器 取扱説明書 Copyright © All rights reserved.
Failed to retrieve file