Latest Posts
Para quem tem a profissão de Programador, por vezes torna-se dificil decorar tanta informação. Aqui ficam algums apontamentos que podem nos facilitar a vida.
Espero que ajude…
A Microsoft lançou um site com alguns videos de alguns MVP’s (não necessáriamente de VB.NET) que entrevistaram no ultimo summit. A iniciativa “I’m a VB” pretende dar a conhecer ao mundo reais histórias de membros activos e reconhecidos na comunidade que usam VB e que se reconhecem na linguagem.
Uma nota de especial destaque para as intrevenções de Julie Lerman, Deborah Kurada e Bill Vaughn. Alias foram as primeiras que vi dado serem pessoas que conheço bem destas andanças :)
Podem ver aqui
Ah e claro… se vss são VB… então partilhem a vossa história.
Realidade aumentada,
O Jornal da Globo fez uma matéria falando sobre a realidade aumentada... .
Depois de ver o vídeo, teste você mesmo com seu computador.
Calor? Frio? Ou tecnologia? Vamos então para mais uma listinha de links da semana: bestof’s, portfólios, novidades, etc.
Para esta semana gostava de introduzir uma nova “rubrica”… A Foto da semana :)
Portfólio
www.pluralportugal.pt – (by SixandCo (fullsix group)) O portal da Plural Entertainment, é o mais recente trabalho feito em Silverlight 2, cá em Portugal, por Portugueses! :) Num site que pretende reunir os trabalhos e as informações desta produtora, demonstra bem como é possível dar outro tipo experiência de utilização a todos os seus visitantes. SmoothStreamming enabled! Portanto pode-se ver on-line filmes de alta qualidade (HD), utilizando o sistema de negociação da largura de banda disponível.
Silverlight
NBC aposta no Silverlight – Agora com as novas temporadas dos vários desportos, a nbc anunciou que irá transmitir jogos dos campeões de Ténis, utilizando Smooth streamming com HD
6 Image Rotators – Mais um conjunto de 6 controlos para criar efeitos nas imagens.
Duplex WCF Service para Silverlight – Como utilizar um serviço desta natureza nas aplicações Silverlight.
LINQ binding em Silverlight e WPF – para quem utiliza LINQ eis mais um conjunto de dicas para a sua utilização em Sl e WPF.
Visifire e gráficos em SL – Já sabíamos que a visifire tinha alguns controlos muito jeitosos…. principalmente para gráficos. Lançaram mais um conjunto de gráficos desta vez, para o sector financeiro.
Parametric Shader Effect in SL3 – mais umas dicas sobre as novas funcionalidades do sl3 no que respeita a vídeo effects.

A não perder!
DeepZoom Composer June Preview!! – A não perder este peek na nova versão do DeepZoom.
WPF toolkit? – Ah pois! achavam que era só para o Silverlight??
Image Slider – Ora aqui está mais um excelente controlo para se colocar num site, banner, ou outro lugar que achem bem. Neste artigo existe a versão Silverlight e a de jQuery.
Dicas e Utilitários:
Express your self – Como é que o Expression Studio pode fazer sentido no desenvolvimento das aplicações ou qual o seu papel no ciclo de produção do mesmo.
Como “colar” comportamentos em Silverlight3 com C# – Mais um bom artigo que nos conta algumas técnicas bem preciosas e úteis.
Configurações de Segurança no IIS pra Silverlight 2 – Sem dúvida e muito útil mais umas dicas e sugestões para as devidas configurações no IIS das aplicações em Silverlight 2. clientaccesspolicy …. e companhias….
A foto da semana
http://photography.nationalgeographic.com/photography/enlarge/tora-bora-girl.html
-----------------------------------------------------------------------------------------------------------------------------------------------------------------


Ja foram anunciados os preços (para os EUA) do novo sistema operativo da Microsoft, o Windows 7.
Para as versões de upgrade (XP ou Vista) são:
- Windows 7 Home Premium (Upgrade): $199.99
- Windows 7 Professional (Upgrade): $199.99
- Windows 7 Ultimate (Upgrade): $219.99
Para as versões completas são:
- Windows 7 Home Premium (Versão completa): $199.99
- Windows 7 Professional (Versão completa): $299.99
- Windows 7 Ultimate (Versão completa): $319.99
A Microsoft acaba de disponibilizar para download o seu sistema Anti-Vírus, denominado Microsoft Security Essentials (antigo Moro).
Este sistema está numa versão Beta e para efectuar o download é necessário estar registado no programa Connect e tornar-se num beta-tester deste sistema.
As vantagens deste anti-vírus, é de ter pouco impacto na performance do sistema, e por ser gratuito.
O numero de inscrições no connect foram excedidas
Está aberto o Registo para o Microsoft Tech•Ed Europe 2009.
Há algumas novidades este ano:
-
Devio aos pedidos dos participantes ambos eventos (Developer e IT Pro) coexistirão (9-13 Novembro).
-
-
Os preços de registo são baseados numa aproximação por camadas de modo que quanto mais cedo for efectuado o registo, mais barato fica.
Rasões Para Ir Ao Tech·Ed Europe 2009
-
Todos podem aprender sobre:
-
MICROSOFT WINDOWS 7 – O sistema operativo da Microsoft para a próxima geração
O Windows 7 trás importantes avanços para a produtividade dos utilizadores, segurança e gestão.
-
MICROSOFT OFFICE e novas formas de maximizar a produtividade do negócio
O percurso do Office System pode ajudar a instalação, adopção e desenvolvimento de aplicações de produtividade para o negócio.DEVELOPERS CAN LEARN MORE ABOUT:
-
Programadores e Arquitectos podem aprender sobre:
-
Aplicações na cloud
Descubram como a Azure™ Services Platform reduz a necessidade de aquisição anticipada de tecnhologia, e permite aos programadores e arquitectos criar, com rapidez e facilidade, aplicações que correm na cloud.
-
Segurança que ajuda a cortar custos no suporte às aplicações
Descubram como a tecnologia Microsoft’s ForeFront pode tornar os ambientes IT seguros com maior rapidez e a escrever código mais seguro e elimiar custos de suporte a aplicações.
-
TRUTH about maximizing deployments and search
Descubram como o SharePoint pode ajudar a criar um repositório central, maximizando as instalações e pesquisa e eliminando multiplas versões e mal-entendidos acerca da origem da “verdade” em qualquer project.
-
Profissionais de IT podem aprender sobre:
-
Virtualização que ajuda a podenciar investimentos existentes
Obtenham um entendimento profundo das actuais tecnologias de virtualização de baixo custo e como podem ajudar a tirar o maior partido dos investimentos existentes em software e hardware.
-
Hospedagem para economias de escala
Descubram como tirar partido dos hosted services Microsoft para ampliar a oferta de comunicações e colaboração dos departamenteos de IT. E baixar os custos de hardware, gestão e consumo de energia.
-
Unificação para redução de custos e aumento de eficácia
Comunicações verdadeiramente unificadas que formam uma infra-estrutura única de comunicações.
-
Maximizar a infrastrutura IT existente para se fazer mais om o que se tem
Descubram como tirar o máximo partido da infra-estrutura de IT existente.
Ao ver as tendências actuais nos fóruns, esta semana que passou andei à procura de uma forma de criar uma tag personalizada para os utilizadores do trokas.
Assim sendo queria uma forma de poder integrar as informações do xbox live com as informações do site numa imagem só para que os utilizadores não tenham que andar com 3000 tags atrás das costas.
Andei à procura e para a Xbox encontrei que existe um programa especial para grandes websites, infelizmente não obtive resposta para poder aderir a este programa. No entanto tive o prazer de encontrar um webservice que gentilmente fornece estas informações indirectamente em: http://duncanmackenzie.net/Blog/put-up-a-rest-api-for-xbox-gamertag-data.
Também andei à procura de uma forma de fazer o mesmo com dados da PSN (Playstation Network) mas obter resposta da Sony ou da Playstation (seja Portuguesa ou Inglesa) é um problema e uma frustração não me admira que até recentemente as grandes produtoras se tenham virado mais para a XBOX.
De qualquer forma para quem está curioso em relação ao resultado aqui fica:

Karen Corby – Lead Program Manager on Silverlight Team - http://scorbs.com/work
“One major difference between site with a strong Brand Image … and one with weak Brand Image … is that brand positioning permeates every part of a strong site …” – Forrester, June 9, 2005
- Styling
- “Property Bag” styling
- Through the <Style> element
- Works with Controls , UserControls, Shapes, Panels
- App.xaml now support the MergedResourceDictionaries functionality like in WPF
- <ResourceDictionary.MergedDictionaries>
- <ResourceDictionary Source=”Assets.xaml”/>
- </ResourceDictionary.MergedDictionaries>
- Styles now support BasedOn
- <Style x:Key=”NewStyle” BasedOn=”{StaticResource BaseStyle}”>
- Skinning
- Completely replace visuals
- Through <ControlTemplate> element
- {TemplaceBinding} extension
- Works with Custom Controls (not UserControls, Panels, Shapes)
- Based on a well defined separation with: (same way as in Silverlight 2.0)
- Control Logic
- Control Visuals
- Parts and States Model
- Goals:
- Make it easy to skin your control
- Defined separation between logic and visuals
- Explicit control contract
- Parts:
- Names element (x:Name) in Template
- Why is it needed to be a named element? Because, code manipulates element in same way.
- States:
- Visual look of control in a particular state
- Thought <VisualState> element
- Not all ControlTemplates need a Visual State
- StateGroups:
- Set of mutually exclusive states
- Different state groups are orthogonal
- Though the <VisualStateGroup> element
- Using States and Transitions
- VisualStateManager.VisualStateGroups
- Attached Properties on root visual of ControlTemplate
- VisualStateGroup
- Contains group of related states
- VisualState class
- Contains storyboard that represents visual look
- VisualTransition class
- Contains duration for automatic transition animations
- Contains storyboard for explicit transition animations
- Default, or “To/From” transitions
- GeneratedEasingFunction that is part of Silverlight 3 and that make it easy to define how an animation will work without the need to a storyboard
- Data Binding
- Validation and Binding
- Flags we need to enable
- NotifyOnValidationErrors
- ValidatesOnExceptions
- Bindings
- RelativeSource Binding was included
- Self & TemplatedParent as source
- Power of full binding in Templates
- Attached DP sources, converters, two-way, etc.
- DependecyProperties as Sources for Bindings
- Update based on DP changes
- Out-of-the-Box controls with Validation enabled
- TextBox
- CheckBox
- RadioButton
- ComboBox
- ListBox
- PasswordBox
- Currently isn’t bindable but it will be in the SL 3.0 RTW
- Binding and Styles
- ElementName binding
- “UI to UI binding”
- FrameworkElement can be used as a binding Source
- The Styles can now be changed in runtime
- the “write once” style limitation was removed in SL 3.0
- Silverlight Styling vs WPF Styling
- Currently not supported in SL 3.0
- Implicit Styles
- A workaround was used in the Silverlight Toolkit
- Dynamic Resources
- Triggers
- Custom Controls
- Based on Control class
- Add the Control Contract in the Control Logic Class
- TemplateVisualState elements
- TemplatePart elements
- Generic.xaml
- Specific element and it must be placed inside a folder named themes on your project
- Needs to be placed as a Resource on the project
- Define the DefaultStyleKey property
- Informs the element that it should go to the generic.xaml to get the default style
- “Look-less” by default
- Silverlight and WPF Skinning Model
- From Silverlight to WPF
- Viewbox in Silverlight is part of the Toolkit and in WPF is part of the core runtime
- VSM in WPF is part of the WPF Toolkit and in Silverlight is in the core runtime – Will be part of the core runtime of WPF in the next version
- EasingFunctions are part of the Silverlight core runtime and will only be part of the next version of WPF
- Layout
- Custom Panels
- In Silverlight is two pass algorithm
- Measure
- Check How much space do you need
- Arrange
- Having the space needed arrange your elements inside it
One more very interesting talk about Silverlight in MIX'09 and that showed up some very important new features in terms of Styling, Skinning and Custom Control definition.
Descobrir se uma assembly foi compilada em modo Debug ou Release é uma tarefa que todos temos que efectuar uma vez por outra.
Eu conheço duas formas de obter esta informação:
Ambos os atributos são aplicados a assemblies e podem ser encontrados no seu Manifesto, no entanto existe uma grande diferença entre ambos:
- o AssemblyConfigurationAttribute embora seja compreensivel para o leitor humano tem que ser adicionado pelo programador.
- o DebuggableAttribute é adicionado automáticamente e está sempre presente no entanto não é legível para um humano.
O Manifesto da assembly pode ser facilmente obtido se usarmos o fantástico ILDASM através duma consola “Visual Studio Studio Command Prompt”:
e se fizermos duplo click no item MANIFEST obtemos todo o conteúdo do manifesto.
Se observarmos atentamente encontraremos o atributo DebuggableAttribute:
e talvez encontremos também o atributo AssemblyConfigurationAttribute:
AssemblyConfigurationAttribute
Localizar o atributo AssemblyConfigurationAttribute e verificar qual o seu conteúdo: Debug ou Release.
DebuggableAttribute
Se o atributo AssemblyConfigurationAttribute não está presente então temos que usar o atributo DebuggableAttribute para obter a informação pretendida.
Uma vez que este atributo não é legível para os humanos é necessário abrir a assembly com outra ferramenta e ler o seu conteúdo. Não existe ferramenta para realizar esta tarefa mas a mesma pode ser facilmente criada usando um projecto “Command Line” e usando um método simiar a:
private bool IsAssemblyDebugBuild(string filepath)
{
return IsAssemblyDebugBuild(Assembly.LoadFile(Path.GetFullPath(filepath)));
}
private bool IsAssemblyDebugBuild(Assembly assembly)
{
foreach (var attribute in assembly.GetCustomAttributes(false))
{
var debuggableAttribute = attribute as DebuggableAttribute;
if (debuggableAttribute != null)
{
return debuggableAttribute.IsJITTrackingEnabled;
}
}
return false;
}
ou (para quem prefere LINQ)
private bool IsAssemblyDebugBuild(Assembly assembly)
{
return assembly.GetCustomAttributes(false).Any(x => (x as DebuggableAttribute) != null ? (x as DebuggableAttribute).IsJITTrackingEnabled : false);
}
Como podem ver … é bastante simples.
Nota:
Normalmente, eu adiciono uma tarefa de Pre-build ao meu Build Server por forma a adicionar o atributo AssemblyConfigurationAttribute, ao ficheiro CommonAssemblyInfo, com o valor apropriado: “Debug” ou “Release”. Desta forma, qualquer um, usando apenas o ILDASM, pode validar que tipo de compilação foi usada para gerar as minhas assemblies.

Win The 7
O Win the 7 é umacompetição que vai testar os seus conhecimentos sobre o Windows 7. Todas asprovas serão online e a grande final acontecerá em São Paulo, para onde osparticipantes viajarão com todas as despesas pagas
Leia mais...
Based on ArCast.TV Session and the Roger Sessions Book named “Simple Architectures for Complex Enterprises”
When I started viewing this ArCast was because this is a very interesting topic and because normally what people tend to have as Enterprise Architects are very complex Architectures and problems and so my goal was to find how can we simplify these architectures in order to best achieve our goals. And so the most interesting topics i took from this talk were the following:
- Enterprise Architects should focus on Simplicity because this is the key characteristic that we should strive for and is more important that Security, Performance, Scalability and all others elements. And when we get simplicity the others will also happen and without it we can’t achieve any of these elements.
- Personal Note: Ok this is right because because whenever we start to build an enterprise architecture the first thing that comes to our minds is really the Security, the Performance, the Scalability, the Reliability of the system and so on, and we tend to forget that the simplicity is important or else we’ll have a very complete architecture but that is very difficult or impossible to put in practice due to the values involved or simply because of the complexity involved, and so this is important and something we should strived to achieve.
- It’s very important that the Business and the IT are aligned because otherwise we will end up with different systems from the ones that were asked, and by doing so we won’t solve our problems.
- Personal Notes
- This is what normally happens with IT, instead of Business looking at IT as a way to facilitate the achievement of the Business goals, they sometimes look at it the other way around and this brings huge problems to this relationship between Business and IT, that should always be aligned to achieve the proposed goals.
- Let’s just think about SaaS – Software as a Service for a second and try to see if this shows anything about this point:
- Who normally choose SaaS solutions? Business People
- Why? Because they are easy and simple to use and payed-as-you-go
- For example: SalesForce.com used a lot of these issues between Business and IT because normally the Business People would ask for a CRM for the company and a lot of complexity would come from the IT department saying that they needed to have machines, a complex architecture, a ton of things and then the Business People one day at home would start using SalesForce.com and would bring it to their teams, and after that the IT Department wouldn’t have anything more to say about the subject. Of course that the Cloud Computing part also has a high role in this possibility, but if we try to simplify things maybe this alignment between Business and IT will became easier.
- Complexity is a Key issue and is linearly increase to the TCO (Total Cost of Ownership) but not with functionality because in that issue is logarithmic increased since if we are adding twice the functionality what happens is that the complexity grows exponentially and not only in a 1-to-1 basis. In Enterprises the functionality is logarithmically related with TCO.
- Personal Note: Normally this is true because if we double the complexity we are doubling the TCO, but if we just enter a functionality we can be making our complexity grow a lot more.
- In order to make solutions simpler is not necessary to remove functionality but just reorganizing the process, because by partitioning things became easier and better manageable. But the problem is that functionality in a Business system is not easy and so this is where the partitioning of functionalities become important.
- Personal Note: Of course this is important that’s why we hear the Metaphor about “cutting the Elephant into small pieces”. (No disrespect for the animal of course)
- How to take the Simplicity approach to the Enterprise:
- The recommended approach is SIP – Simple Iterative Partitions.
- How to approach the Business with the concept of Simplicity and using SIP to implement it.
- First sell the complexity message
- Normally complexity doesn’t enter in discussions and should be a very important
This is a very interesting approach and I highly recommend the book reading and seeing Enterprise Architectures in terms of complexity and how to eliminate it from the Architecture.
Não é comum usar destrutores em .NET mas eu sempre tive aquela noção que se usasse talvez ganhasse alguma performance.
Naturalmente que a minha preguiça nunca permitiu que declarasse destrutores nas minhas classes ou que fizesse algumas experiências para perceber melhor esta vertente.
No entanto há quem esteja disposto a partilhar conhecimento e a satisfazer a curiosidade dos mais preguiçosos.
O Andrew Hunter resolveu publicar um artigo intitulado “Understanding Garbage Collection in .NET” no qual consegui clarificar a minha dúvida.
Então é assim:
- A execução do destrutor é não deterministica – depende do GC e do seu modo de operação: concorrente ou síncrona
- Requer 2 ciclos de GC para que o objecto seja removido e a memória seja liberta.
- Se o GC referenciar muitos objectos com destrutor então necessita de mais ciclos para libertar completamente os objectos não referênciados
Isto não significa que não sejam usados destrutores, mas se for mesmo necessário usar então a receita (simplificada) é a seguinte:
- Implementar o interface System.IDisposable
- mover o código do destrutor para o método Dispose
- Terminar a execução do método Dispose com GC.SupressFinalize() para indicar ao GC que o objecto já não precisa de ser finalizado e pode ser removido imediatamente.
- Invocar o método Dispose no destrutor
Se quiserem adquirir um conhecimento mais profundo deste procedimento que também é referido como padrão Disposable consultem este artigo (gentilmente indicado pelo Luis Abreu).
Conclusão
Usar destrutores não traz beneficios de performance e o seu uso descuidado pode ser um vector para problemas graves de gestão de memória, mas, há sempre uma mas ... quando estamos na presença de classes que criam referências para entidades que não são geridas automáticamente pelo Runtime, então o padrão Disposable deve ser implementado e o destrutor também pois garante que as referências são sempre libertadas (mesmo quando o programador não optimizou o uso da memória através da invocação do método Dispose).
Espero que fiquem elucidados … tal como eu fiquei.
O controlo ListView é uma das novidades da framework 3.5 para o ASP.NET. Este controlo é bastante flexivel, pois permite as facilidades do controlo GridView (Paginação, Ordenação), numa lista de itens repetidos.
Para utilizar este controlo num projecto de Sharepoint é necessário criar no web.config as configuraçôes semelhantes a um projecto que utilize ajax, e dentro da Tag <controls> adicionar a seguinte referencia:
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
A paginação deste controlo é controlada pelo controlo DataPager em que este necessita que a fonte de dados da ListView seja fornecida através do controlo de DataSource. Para que este funcione em Sharepoint este controlo de datasource deverá ser definido da seguinte forma:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="getItems" TypeName="<Assembly Strong Name>"></asp:ObjectDataSource>
Bem para não me esquecer e para aqueles a quem possa ajudar.
Sempre que estivermos a utilizar UpdatePanels não podemos deixar de dar um ID a todos os controlos envolvidos no processo de actualização de um Update Panel.
Infelizmente eu tenho muito esse vício de não colocar IDS em controlos que sei que não vou precisar chamar por código mas depois dá-me estas trenguices e lá ando eu à procura do problema durante uns bons minutos :p como foi o caso do trokas.pt onde, quando um utilizador errava na password ficava com um monte de paineis em branco (porque tenho imensos repeaters sem enableviewstate).
Por isso não cometam o mesmo erro que eu :)
Entre 15 de Junho e 15 de Agosto, a Sony dá 25€ a todos aqueles que se queiram desfazer do seu velho MP3 e comprar um novo Walkman Sony. Além de contribuir para a “reciclagem” dos leitores de mp3/mp4, a Sony explora com esta campanha, uma vertente de solidariedade social com a doação de parte do contributo financeiro à Fundação O Século.
A campanha assenta na oferta de 25 € ao consumidor que adquirir um Walkman Sony a partir de 65 € e que entregue o seu mp3/mp4 antigo de qualquer marca. Da oferta dos 25€ pagos no acto da compra, a Sony incentiva o utilizador a doar 1€ à instituição O Século.
Segundo Filipe Cardoso, gestor da marca Walkman, da Sony, “ esta campanha irá ter um duplo significado: dotar os utilizadores com as últimas inovações ao nível de leitores mp3/mp4 e contribuir para uma associação tão importante como a Fundação O Século.
Como Participar:
Para receberes os teus 25€, basta enviares por correio registado e com aviso de recepção para Sony Portugal, Unipessoal. “Campanha de Trocas de Walkman”, Alameda dos Oceanos, Edificio Rock One, Lote 4.62.01 Parque das Nações, 1990-392 Moscavide, os seguintes elementos:
* O teu velho mp3 (de qualquer marca);
* Código de barras original do teu Sony Walkman (retirado da embalagem);
* Original da factura/talão de compra do teu novo Sony Walkman (este ser-te-á devolvido após recepção dos teus documentos);
* Cupão devidamente preenchido;
O valor a reembolsar será transferido directamente para o NIB indicado no cupão.
Promoção válida para compras efectuadas entre 15 de Julho e 15 de Agosto de 2009, em todos os Agentes Autorizados Sony em Portugal Continental e Ilhas (ver a localização do Agente mais próximo de si no Localizador de Agentes disponível no site).
A data limite de recepção dos cupões é 24 de Agosto de 2009 (data de carimbo dos CTT).
Mais informações:
Sony
Um especial obrigado ao
Quim-Zé por ter partilhado este artigo
I was looking at the Windows Azure - SQL Data Services page, and looked at some of the Incubation and Innovation projects that Microsoft is researching in this area, and found this to be very interesting and so here are the projects that I found:
- Data Mining in the Cloud
- This is very interesting because with this we have also SQL Server Analysis Services on the Cloud, and since Analysis Services are very important for companies to achieve the analysis of their data in order to perform better and to make better decisions, having those also on the Cloud and using the Cloud perspective of pay-as-you-go I think it will mean a that lots of more companies will start looking at their data differently, because now they can afford the costs of doing it.
![mining_img1B[1] mining_img1B[1]](http://www.microsoft.com/azure/images/mining_img1B.jpg)
- Project codename “Anchorage”
- Since the appearance of the Web that a lot of options appeared to share files, photos, movies and so on, but the problem is that along the way we reach a point that we have everything so separated along the web that we lose track of it. Live Mesh tried to address this problem and is being pretty interesting in his usage, but what about if I have photos in Flickr, PhotoBucket, SmugSmug, and others as well as in my laptop? How can they all be synced? This projects does absolutely this and uses Live Framework in order to achieve it in a very interesting way.
- Project codename “Huron”
- I read this phrase “This is a Sync-Enabled Cloud Data Hub.”, and thought, What? So I continued reading and understood the Idea, because this is something that in some cases needs to be done when we are doing Cloud Computing, that is having a Synced copy of the Database locally for the customers, and this project intends to achieve this goal since it gets the SQL Data Services and the Local Database and Synchronizes them using Microsoft Sync Framework, this way providing the ability for customers to always have their data even when having SaaS – Software as a Service solutions. This way we have best of both worlds.
- Watched this great small series of videos about this project:
- Reporting Services against SQL Data Services
- Interesting, we have SQL Server in the Cloud, Data Mining in the Cloud and now Reporting Services on the Cloud. This seems very interesting because we can use the Cloud to take our solutions to the “Next Level” since we now have almost all necessary technologies available on the Cloud.
- Try it here.
![reporting_img4c[1] reporting_img4c[1]](http://www.microsoft.com/azure/images/reporting_img4c.jpg)
Hope this helps you see what we can expect and what level of Cloud usage we can achieve.
DCom tudo desenvolvido e testado em no meu portátil usando oSQL Server 2008, era o momento de instalar na máquina de testes com SQL Server 2005.
O primeiro problema que encontrei quando executei:
CREATE ASSEMBLY [MyAssembly]
AUTHORIZATION [dbo]
FROM '...\MyAssembly.dll'
WITH PERMISSION_SET = SAFE
GO
foi:
Msg 10327, Level 14, State 1, Line 1
Assembly 'MyAssembly' references assembly 'system.xml.linq, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089.',
which is not present in the current database.
SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from,
but that operation has failed (reason: 2(The system cannot find the file specified.)).
Please load the referenced assembly into the current database and retry your request.
Parece que o SQL Server 2005 não conhece a .NET Framework 3.5. Tinha de carregar as assemblies usadas: System.Core e System.Linq.Xml:
CREATE ASSEMBLY [System.Core]
AUTHORIZATION [dbo]
FROM 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll'
WITH PERMISSION_SET = SAFE
GO
Mas não é assim tão simples:
Warning: The Microsoft .Net frameworks assembly 'system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.' you are registering is not fully tested in SQL Server hosted environment.
Msg 6218, Level 16, State 2, Line 1
CREATE ASSEMBLY for assembly 'System.Core' failed because assembly 'System.Core' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database. CLR Verifier error messages if any will follow this message
[ : System.Diagnostics.Eventing.EventProvider::EtwRegister][mdToken=0x600003b][offset 0x0000003D][found Native Int][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::EncodeObject][mdToken=0x6000046][offset 0x00000000] Unmanaged pointers are not a verifiable type.
[ : System.Diagnostics.Eventing.EventProvider::WriteMessageEvent][mdToken=0x6000047][offset 0x0000003C][found ref 'System.String'] Expected numeric type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x6000049][offset 0x0000012E] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x6000049][offset 0x00000030] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x600004a][offset 0x0000005F][found ref 'System.String'] Expected numeric type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x600004b][offset 0x00000010][found unmanaged pointer][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004c][offset 0x0000007D] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004c][offset 0x00000309][found Native Int][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004d][offset 0x0000001B][found unmanaged pointer][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Security.Cryptography.CapiNative::ImportSymmetricKey][mdToken=0x60007c2][offset 0x00000071][found address of Byte] Expected numeric type on the stac...
Bem, carrega-se com PERMISSION_SET = UNSAFE:
CREATE ASSEMBLY [MyAssembly]
AUTHORIZATION [dbo]
FROM '...\MyAssembly.dll'
WITH PERMISSION_SET = UNSAFE
GO
Ainda não:
Warning: The Microsoft .Net frameworks assembly 'system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.' you are registering is not fully tested in SQL Server hosted environment.
Msg 10327, Level 14, State 1, Line 1
CREATE ASSEMBLY for assembly 'System.Core' failed because assembly 'System.Core' is not authorized for PERMISSION_SET = UNSAFE.
The assembly is authorized when either of the following is true: the database owner (DBO) has UNSAFE ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with UNSAFE ASSEMBLY permission.
If you have restored or attached this database, make sure the database owner is mapped to the correct login on this server.
If not, use sp_changedbowner to fix the problem.
Mas fácil de resolver:
ALTER DATABASE MyDatabase SET TRUSTWORTHY ON
GO
I finalmente foi possível carregar as assemblies .NET 3.5:
CREATE ASSEMBLY [System.Core]
AUTHORIZATION [dbo]
FROM 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll'
WITH PERMISSION_SET = UNSAFE
GO
CREATE ASSEMBLY [System.Xml.Linq]
AUTHORIZATION [dbo]
FROM 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll'
WITH PERMISSION_SET = UNSAFE
GO
Tendo todas as depêndencias carregadas, tentei carregar a minha assembly com PERMISSION_SET = SAFE sem sucesso:
Msg 6212, Level 16, State 1, Line 1
CREATE ASSEMBLY failed because method 'ShortPropsToXml' on type 'ShortProps' in safe assembly 'Esi.SA.Encyclopedia' is storing to a static field.
Storing to a static field is not allowed in safe assemblies.
Teve de ser com PERMISSION_SET = UNSAFE.
Depois de ter carregado as assemblies com sucesso, pude finalmente criar as definições Transact-SQL das funções (vêr Parte I e Part II).
Agora é que os DBAs não vão mesmo deixar-me usar isto. Mas foi divertido fazê-lo.
Pode-vos ter chamado a atenção o facto de eu ter usado LINQ nas minhaa últimas entradas de Brincando Com SQL Server CLR Integration (Parte I, Part II).
Não o consegui de imediato usando o projecto 2008 SQL CLR do Visual Studio. Alterar a Target Framework para .NET Framework 3.5 não foi suficiente. Foi necessário também editar o ficheiro .csproj:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!— ... -->
<ItemGroup>
<!— ... -->
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
</ItemGroup>
<!— ... -->
</Project>
Na minha última entrada, mostrei como converter um saco de propriedades armazenado como texto numa tabela usando um CLR Table-Valued Function.
Comecei a pensar que podia obter o valor das propriedades, mas não os podia alterar ou acrescentar novas propriedades.
Passar uma tabela como parâmetro ainda não é possível em SQL Server 2005, que seria a plataforma alvo.
Poderia criar funções para Criar, Actualizar e Apagar propriedades.
Ou poderia usar XML. Tudo o que seria necessário era criar uma CLR Scalar-Valued Function para converter o saco de propriedades numa representação em XML e outra para converter o XML de volta para o formato do saco de propriedades.
Ainda tenho de carregar todo o saco de propriedades para uma variável se quiser fazer alguma alteração, mas pode ser usado em SQL Server 2005.
Converter o saco de propriedades para um documento XML pode ser feito usando o enumerador desenvolvido anteriormente:
[Microsoft.SqlServer.Server.SqlFunction(
Name = "ShortPropsToXml",
IsDeterministic = true,
IsPrecise = false,
DataAccess = DataAccessKind.None,
SystemDataAccess = SystemDataAccessKind.None)]
public static SqlXml ShortPropsToXml(string shortPropsText)
{
var xml = new XElement("ShortProps",
from shortProp in ShortPropsEnumerable(shortPropsText)
select new XElement("p",
new XAttribute("n", shortProp.Key),
new XCData(shortProp.Value)));
using (var buffer = new MemoryStream())
{
using (var xmlWriter = XmlWriter.Create(buffer, new XmlWriterSettings { CheckCharacters = false }))
{
xml.WriteTo(xmlWriter);
}
buffer.Position = 0;
using (XmlReader xmlReader = XmlReader.Create(buffer, new XmlReaderSettings { CheckCharacters = false }))
{
return new SqlXml(xmlReader);
}
}
}
Converter o documento XML de volta ao formato do saco de propriedades também é fácil:
[Microsoft.SqlServer.Server.SqlFunction(
Name = "XmlToShortProps",
IsDeterministic = true,
IsPrecise = false,
DataAccess = DataAccessKind.None,
SystemDataAccess = SystemDataAccessKind.None)]
public static SqlChars XmlToShortProps(SqlXml shortPropsXml)
{
var xml = XDocument.Parse(shortPropsXml.Value);
var textBuilder = new StringBuilder();
foreach (var item in xml.Document.Element("ShortProps").Elements("p"))
{
textBuilder.AppendFormat("[[[{1}]]]{0}{2}{0}", Environment.NewLine, item.Attribute("n").Value, item.Value);
}
return new SqlChars(textBuilder.ToString().ToCharArray());
}
Agora é só actualizar a assembly na base de dados:
ALTER ASSEMBLY [MyAssembly]
FROM '...\MyAssembly.dll'
GO
Definir as Scalar-Valued Functions em Transact-SQL:
CREATE FUNCTION [dbo].[ShortPropsToXml](@shortPropsText [nvarchar](4000))
RETURNS [xml] WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [Esi.SA.Encyclopedia].[ShortProps].[ShortPropsToXml]
GO
CREATE FUNCTION [dbo].[XmlToShortProps](@shortPropsXml [xml])
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [Esi.SA.Encyclopedia].[ShortProps].[XmlToShortProps]
GO
E está pronto para ser usado.
Agora, dada esta definição do saco de propriedades:
declare @text nvarchar(max)='[[[name1]]]
value1
[[[name2]]]
value2
[[[name3]]]
value3
'
Posso convertê-lo em XML:
DECLARE @xml [xml] = dbo.ShortPropsToXml(@text)
-
Alterar o valor de uma propriedade:
set @xml.modify('replace value of (/ShortProps/p[@n="name2"]/text())[1] with "new value2"')
-
Inserir uma nova propriedade:
set @xml.modify('insert <p n="name4">Value4.1
Value4.2</p> after (/ShortProps/p[@n="name2"])[1]')
-
Apagar uma propriedade:
set @xml.modify('delete (/ShortProps/p[@n="name3"])[1]')
-
E converter de volta para o formato de saco de propriedades:
print dbo.XmlToShortProps(@xml)
[[[name1]]]
value1
[[[name2]]]
new value2
[[[name4]]]
Value4.1
Value4.2
-
Consultar como se fosse uma tabela:
select T.C.value('./@n', 'nvarchar(max)') as Name, T.C.value('.', 'nvarchar(max)') as Value from @xml.nodes('/ShortProps/p') T(C)
| Name |
Value |
| name1 |
value1 |
| name2 |
new value2 |
| name4 |
Value4.1
Value4.2 |
Infelizmente, a aplicação usa caracteres que são inválidos para o SQL Server como caracteres XML e não posso usar estas funções.
Actualmente, estou a trabalhar com uma aplicação que armazena propriedades num saco num coluna SQL Server, no seguinte formato:
[[[name1]]]
value1
[[[name2]]]
value2.1
value2.2
[[[name3]]]
value3
Não me perguntem porque o fizeram assim, Apenas fizeram.
A aplicação descodifica este saco para as suas estruturas internas e tudo funciona bem.
Mas algumas vezes eu gostava de efectuar algumas consultas directamente à base de dados ou extraír alguns relatórios incluindo essas propriedaes e não posso.
Então pensei que este seria um bom caso de uso para a SQL Server CLR Integration. Decidi criar uma CLR Table-Valued Function que me retornasse o saco de propriedades como uma tabela com duas colunas.
Descodificar o texto do saco de propriedades pode ser facilmente alcançado usando uma simples expressão regular:
new Regex(
string.Format(@"(?<Name>(?<=\[\[\[).*(?=\]\]\]{0}))\]\]\]{0}(?<Value>(([\s\S]*?(?={0}\[\[\[))|([\s\S]*?(?={0}$))))", Environment.NewLine),
RegexOptions.Multiline | RegexOptions.ExplicitCapture | RegexOptions.CultureInvariant | RegexOptions.Compiled);
O Expresso da Ultrapico foi uma grande ajuda para criar esta expressão regular.
Para quem não sabe, a forma como uma CLR Table-Valued Function é implementada é usando um método inicial que recebe os parâmetros de entrada e retorna um IEnumerable e um método que recebe os itens do enumerador e retorna, como parâmetros de saída, as células da linha correspondente.
Como se tratam de pares nome-valor do tipo string, decidi usar instÂncias de )>) Structure" href="http://msdn.microsoft.com/library/5tbh8a42.aspx" target=_blank>KeyValuePair<string, string> para armazenar os itens e o construír o enumerador foi tão simples como:
private static IEnumerable<KeyValuePair<string, string>> ShortPropsEnumerable(string shortPropsText)
{
return from Match m in shortPropsRegex.Matches(shortPropsText)
select new KeyValuePair<string, string>(m.Groups["Name"].Value, m.Groups["Value"].Value);
}
E a implementação da CLR Table-Valued Function foi tão simples como:
[Microsoft.SqlServer.Server.SqlFunction(
Name = "ShortPropsToTable",
FillRowMethodName = "ShortPropsToTableFillRow",
TableDefinition = "Name NVARCHAR(4000), Value NVARCHAR(4000)",
IsDeterministic = true,
IsPrecise = false,
DataAccess = DataAccessKind.None,
SystemDataAccess = SystemDataAccessKind.None)]
public static IEnumerable ShortPropsToTable(string shortPropsText)
{
return ShortPropsEnumerable(shortPropsText);
}
public static void ShortPropsToTableFillRow(object item, out SqlChars name, out SqlChars value)
{
KeyValuePair<string, string> shortProp = (KeyValuePair<string, string>)item;
name = new SqlChars(shortProp.Key);
value = new SqlChars(shortProp.Value);
}
Para usar esta função numa base de dados SQL Server são necessários alguns passos:
-
Carregar a assembly a base de dados:
CREATE ASSEMBLY [MyAssembly]
AUTHORIZATION [dbo]
FROM '...\MyAssembly.dll'
WITH PERMISSION_SET = SAFE
GO
-
CREATE FUNCTION [dbo].[ShortPropsToTable](@shortPropsText [nvarchar](4000))
RETURNS TABLE (
[Name] [nvarchar](4000) NULL,
[Value] [nvarchar](4000) NULL
) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [MyAssembly].[ShortProps].[ShortPropsToTable]
GO
-
Habilitar a CLR Integration:
EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
E está pronto a usar.
Agora posso fazer consultas ao saco de propriedaes como se fosse uma tabela:
SELECT
e.[ID],
e.[Name],
e.[Class],
e.[Type],
p.[Name],
p.[Value]
FROM
dbo.Entity as e
CROSS APPLY dbo.ShortPropsToTable(e.[ShortProps]) as p
Apenas como curiosidade, para um pouco mais de 50000 linhas (que podem ser obtidas em cerca de 1 segundo no meu laptop), obtive um pouco menos de 630000 propriedades em menos de 40 segundos.
40 segundos podem parece muito quando comparados com 1 segundo, mas gostava de ver tempos melhores usando T-SQL. E desenvolver e testar a TVF em apenas um par de horas.
Se ao menos os DBAs me deixassem usar isto. CLR Integration não está conforme a “política de segurança” da empresa.
Olá pessoal, gostaria de mostrar neste artigo a facilidade que temos para dar permissão em páginas utilizando o arquivo de configuração web.config.
Informações adicionais:
Ferramenta utilizada: Visual Studio.NET 2008 TS
Tipo de aplicativo: ASP.NET ou seja, tipo web
Framework: 3.5, inferior ou superior
Linguagem: Pode ser feito em qualquer linguagem de desenvolvimento como: C#.NET, VB.NET, J#.NET, COBOL.NET.
Hoje em dia com a facilidade e utilização da web (intranet e internet), existem programadores utilizando o desenvolvimento de sistemas web achando melhor do que fazer um sistema local. Existem alguns benefícios e malefícios; não quero entrar nesse mérito neste momento.
Leia mais
A Microsoft disponibilizou como tem vindo a ser hábito alguns cursos para quem quer começar desde já a dar-lhe no Visual Studio 2010.
Ver post original

Para disponibilizar HTML numa pagina em Sharepoint a Content Editor webpart , é uma solução.
Embora seja necessário ter algumas cautelas tais como:
Se a nossa tipologia de Sharepoint consiste em ter uma Farm com um servidor de Authoring (inserção de conteúdos) e um servidor de Web Front End (WFE), não utilizar o Rich Editor da content editor webpart, pois o Rich Editor transforma URL’s relatios em absolutos, e em WFE ficam coisas a apontar para Authoring.
Outra cautela é com o content deploy pois por vezes o HTML inserido na webpart não é o mesmo que passa para o WFE, nomeadamente Anchors com Imagens.
Segundo a Microsoft a solução para este problema é editar os conteúdos no WFE, sim aquele que não é suposto ter acesso, enfim aqui fica o aviso.
Um dos workarounds para forçar os links relativos é criar uma feature que aceda á colecção de links guardados na webpart e os torne relativos denovo.
Solução 1
Solução 2
Douglas Olson – General Manager
Christian Schormann – Director, Program Manager
Expression Mission
- Enable professional designers to create great UX with better productivity at lower costs.
- Help integrate design and designers into the process of software creation
Expression Blend 3 Goals
- Enable early-stage design & prototyping (SketchFlow)
- Created to address issues felt at the start of the software design process:
- Top-down & bottom-ups design lets you experiments with ideas
- SketchFlow Player lets you try your design at any time
- Facilitate communication of design ideas
- Easy to gather, evaluate and use stakeholders feedback
- Blend Elements
- SketchFlow Application Flow
- Important to think on pages like whiteboards to sketch, insert elements, and all what you normally do.
- Usage of SketchStyles that will allow us to maintain the Sketchy style of the Design proposal, that is very important.
- Export to Word
- Dumps all the SketckFlow elements like Application Flow, Pages, Comments and so on.
- Make visual design easier for designer
- Embrace the Design Ecosystem
- Adobe Photoshop & Illustrator file format import with extensive support for layers
- Preview of Photoshop in Windows Explorer even without PhotoShop installed
- Possibility to choose what to do with each layer
- Blend informs if the font is default or not and gives the possibility to choose other font or even the same font by specifying the path of the font
- All content will be fully editable
- Layer Groups are also maintained
- By selecting an object we can make “Make into Control”
- We choose the type of control we want to create
- What’s done is:
- A style is created in order for the control to became what was defined when we selected the elements to generate the control.
- The control created will replace the selected element and gain the same properties that the original element had.
- The style is associates to the control
- Note: There’s now a problem when the controls have different parts, like the Slider, and this will generate all but we need to wire-up the style to the correct parts
- Fast and Easy Control Skinning
- Enhanced editing of visual States
- Richer state transitions
- Focus On Your Art
- Redefined artboard interaction
- Better gradient editing
- Design with Data (Data Generation / Sampling inside Blend)
- In the Data Tab we will have the possibility to define the DataSource structure that we want, and then just generate the data, and there are some templates like Phone Numbers, Strings, Dates, and so on.
- Make it easy to build a data-driven applications:
- Sample Data:
- Design applications without access to live data source
- Create sample data on the fly
- Populate with configurable random data
- Drag and Drop Master-Detail creation
- Better user experience for data binding
- Design-time support for Silverlight 3 controls
- There’s a Master and a Details Mode in the Data Tab that will make it easier to perform the Master-Details view
- in this version of Blend we need to wire-up the Master and Detail elements, and this will not be needed in the last version of Blend
- Build interactivity without code (Behaviors)
- Introduction to Behaviors:
- Production-quality interactivity applied with Drag & Drop ease
- A design pattern for reusable interactivity
- Example: MouseGestureBehavior
- You can define the gesture that will be used and make changes to the elements based on that gesture
- Enable Source Code Control (Integration with Source Safe and TFS by default) – This is available also inside Expression Web
- Design for Developers
- Source Control
- Visual Studio Team Foundation Server Support
- New editor with Intellisense for code & XAML
- Support for Silverlight 3
Note:
The same features are available for WPF and Silverlight in Blend 3.
It’s important to avoid having final or high-definition elements in the Sketch design because customers will start looking in the direction of the rendering instead of the functionality.
Douglas Olson – General Manager
Christian Schormann – Director, Program Manager
Expression Mission
- Enable professional designers to create great UX with better productivity at lower costs.
- Help integrate design and designers into the process of software creation
Expression Blend 3 Goals
- Enable early-stage design & prototyping (SketchFlow)
- Created to address issues felt at the start of the software design process:
- Top-down & bottom-ups design lets you experiments with ideas
- SketchFlow Player lets you try your design at any time
- Facilitate communication of design ideas
- Easy to gather, evaluate and use stakeholders feedback
- Blend Elements
- SketchFlow Application Flow
- Important to think on pages like whiteboards to sketch, insert elements, and all what you normally do.
- Usage of SketchStyles that will allow us to maintain the Sketchy style of the Design proposal, that is very important.
- Export to Word
- Dumps all the SketckFlow elements like Application Flow, Pages, Comments and so on.
- Make visual design easier for designer
- Embrace the Design Ecosystem
- Adobe Photoshop & Illustrator file format import with extensive support for layers
- Preview of Photoshop in Windows Explorer even without PhotoShop installed
- Possibility to choose what to do with each layer
- Blend informs if the font is default or not and gives the possibility to choose other font or even the same font by specifying the path of the font
- All content will be fully editable
- Layer Groups are also maintained
- By selecting an object we can make “Make into Control”
- We choose the type of control we want to create
- What’s done is:
- A style is created in order for the control to became what was defined when we selected the elements to generate the control.
- The control created will replace the selected element and gain the same properties that the original element had.
- The style is associates to the control
- Note: There’s now a problem when the controls have different parts, like the Slider, and this will generate all but we need to wire-up the style to the correct parts
- Fast and Easy Control Skinning
- Enhanced editing of visual States
- Richer state transitions
- Focus On Your Art
- Rededined artboard interaction
- Better gradient editing
- Design with Data (Data Generation / Sampling inside Blend)
- In the Data Tab we will have the possibility to define the DataSource structure that we want, and then just generate the data, and there are some templates like Phone Numbers, Strings, Dates, and so on.
- Make it easy to build a data-driven applications:
- Sample Data:
- Design applications without access to live data source
- Create sample data on the fly
- Populate with configurable random data
- Drag and Drop Master-Detail creation
- Better user experience for data binding
- Design-time support for Silverlight 3 controls
- There’s a Master and a Details Mode in the Data Tab that will make it easier to perform the Master-Details view
- in this version of Blend we need to wire-up the Master and Detail elements, and this will not be needed in the last version of Blend
- Build interactivity without code (Behaviors)
- Introduction to Behaviors:
- Production-quality interactivity applied with Drag & Drop ease
- A design pattern for reusable interactivity
- Example: MouseGestureBehavior
- You can define the gesture that will be used and make changes to the elements based on that gesture
- Enable Source Code Control (Integration with Source Safe and TFS by default) – This is available also inside Expression Web
- Design for Developers
- Source Control
- Visual Studio Team Foundation Server Support
- New editor with Intellisense for code & XAML
- Support for Silverlight 3
Note:
The same features are available for WPF and Silverlight in Blend 3.
It’s important to avoid having final or high-definition elements in the Sketch design because customers will start looking in the direction of the rendering instead of the functionality.
Para quem é cliente ME* e tem um router thomsom (penso que a grande maioria) aconselho-vos a alterarem a palavra-chave de origem do vosso router, porque o algoritmo para decifrar a palavra chave gerada por eles já anda por aí.
Eu próprio já testei e confirmei. O algoritmo é bastante simples pois recorre ao número de série dos routers.
Certo colega, já programou em PHP e alojou isso num blog, para gerar automaticamente as palavra chaves, apenas precisam de inserir o SSID da rede e ele gera-vos duas palavras chaves possíveis, uma delas é a certa.
Não vou colocar aqui os créditos pois isso seria um link directo ao blog onde está o algoritmo, mas pesquisem no google por qualquer coisa, nada, ou então
algoritmo gerar chaves ME* e certamente encontram algo.
Isto não é muito complicado de se transformar numa aplicação windows (dá jeito quando não temos net e queremos aceder a uma..).
Visitem o novo “engenho” da Microsoft. O Microsoft Bing que para já promete superar o antigo motor de busca da microsoft e mesmo fazer frente ao Google.
Experimentem e vejam vocês mesmo a diferença!!
http://bing.com
O TDD parece neste momento estar mais na berra do que nunca. Ele é NUnit para um lado, Typemock Isolator para o outro, MbUnit para mais outro. And so on an so on…lista vai por aí fora, não esquecendo a Code Coverage.
Descobri à dias um podcast do Hanselman em que ele fala sobre testes com um developer da Microsoft. De facto existe vida para além dos testes unitários e de cobertura de código. Não é que os testes unitários não sejam úteis, mas é útil (mesmo para o developer) complementá-los com outros artíficios.
Recomendo vivamente o podcast neste post.
Além do mais, nos comentários aparece um artista já a falar na próxima ideia para testes. Parece que a evolução do TDD é o BDD (Behaviour Driven Design). Já existem frameworks e tudo: .NetSpec, NSpec e NSpecify.
MinimizeBox no Celular
Mobile Device
Olá pessoal, como todos sabem o desenvolvimento para celular tem crescido bastante no Brasil e no mundo. Quero mostrar um pouco dos conhecimentos e manhas no desenvolvimento de software para celular.
Referências:
Ferramenta de desenvolvimento: Visual Studio.NET 2008 Team System
Tecnologia: Mobile Device
Framework: 3.5
SDK Windows Mobile 6.5 Standard and Professional
Instalação da Ferramenta
Depois de instalar o padrão da ferramenta de desenvolvimento (Visual Studio.NET 2008), é importante instalar também o SDK 6.5 disponível no site da Microsoft [www.microsoft.com/downloads].
Existem dois tipos de SDK, um chamado Standard e outro Professional. Qual a efetiva diferença entre os dois? O Standard é um framework para celulares, palm, pocketpc que tenha windows mobile que, não tem a tecnologia Touch. O Professional também é um framework para celulares, palm, pocketpc que tenha windows mobile que, possui a tecnologia Touch.
[ Leia mais ]
A lot is being announced this days regarding Microsoft Products and Technologies, and so this is a little summary of all those information's.
Boas,
É verdade, é Natal, mas não é a epoca festiva em Dezembro, quando se trocam presentes. É sim o novo tipo de comando para a XBox 360. E novidade, não é preciso pilhas e nem tem fio. Agora perguntam-se vocês, “Ca raio de tipo de comando em que não é preciso pilhas nem fio?”. Ora bem, actualmente o mercado de jogadores casuais (o pessoal que gosta de jogar um bucado, mas sem grande vício) é dominado pela Nintendo com a Wii. Foi um conceito inovador em que o jogador usa o comando no espaço real 3D, e vê reproduzidas na consola (através da televisão), os seu movimentos.
Nintendo WII demo
A Microsoft para rivalizar com a Nintendo, e tentar ganhar algum market share apresentou no dia 1 de Junho, na E3 o Project Natal.

Mas o que é o Natal. Basicamente é um acessório para a XBox 360, que possui duas webcams (para conseguir ter a percepção de profundidade do campo de visão) e um microfone (para reconhecimento de voz).
E em vez de usar algum acessório (como o apresentado pela Sony para a PS3), essas duas câmaras, conseguem identificar o individuo (ou mais do que um), que estiverem à frente dela, e traduzir os movimentos do individuo que as webcam vêem em coordenadas na XBox 360. Melhor que explicar é mostrar (como foi dito na apresentação de abertura da E3). Sendo assim, para quem ainda não conhece. Project Natal:
E uma apresentação de conceito de Inteligência Artificial com o Project Natal. Segundo Peter Molyneux, estava disponivél na E3 para quem quisesse experimentar, no entanto não encontrei ate agora na net ninguém que tenha interagido com o "Millo" para saber se isto é encenado ou real-time AI
Agora resta-me esperar pelo lançamento do SDK do Project Natal na XNA Developer Network, e começar a brincar :D
Depois disto, no dia seguinte foi a apresentação da Nintendo e da Sony, e não geraram tanto "buzz" como o Project Natal. Os próximos tempos prometem para a XBox 360. Ainda bem que tenho uma :D
Abs
Paulo Correia
Boas,
Segundo o Wall Street Journal, a data de lançamento comercial do Windows 7 é para 22 de Outubro de 2009. Mesmo a tempo de apanhar as vendas de Natal.
Sendo assim, acho que vou aguentar o meu velho portátil até o Natal para ver se compro algum que tenha Multi-touch :D
Abs
Paulo Correia