Introdução ao Windows Azure

image

Esta apresentação tem como objetivo apresentar uma visão geral de computação em nuvem e a proposta da plataforma Windows Azure para suprir os diversos cenários  para este tipo de ambiente. Também como dar os primeiros passos e publicar aplicações no Windows Azure.

A agenda apresentada é a seguinte:

•O que é o Windows Azure?
•Como desenvolver para Windows Azure?
•Cenários de aplicações para a nuvem

Downloads
Power Point da apresentação
http://cid-de5afe5b638592f4.office.live.com/view.aspx/Palestras/2011-02-11%20IO%20enCloud.io/Introdu%c3%a7%c3%a3o%20ao%20Windows%20Azure.pptx

Aprendendo mais

Para saber mais sobre o Windows Azure acesse o MSDN Brasil
http://www.msdnbrasil.com.br

Blog do Gerente de Azure no Brasil – Condé
http://blogs.msdn.com/conde

Apresentações
Apresentação realizada no dia 10/2/2011 no evento IO enCloud http://encloud.io realizado pelo portal http://www.ceviu.com.br

Até a próxima!


Introdução ao Visual Basic 2010

 

image

Esta apresentação tem como objetivo dar uma visão geral dos recursos disponíveis para desenvolvedores na linguagem Visual Basic 2010, características de seu funcionamento e benefícios para a construção de soluções.

A agenda apresentada é a seguinte:

•O que é a Plataforma .Net?
•O que é o .Net Framework?
•Multi Linguagem/Plataforma
•Ferramenta de Desenvolvimento
•Tipos de Aplicações
•Aprendendo mais sobre o .Net

Downloads
Power Point da apresentação
http://cid-de5afe5b638592f4.office.live.com/view.aspx/Palestras/2011-02-11%20IO%20enCloud.io/Introducao%20ao%20Visual%20Basic.pptx

Código fonte de demonstração
http://cid-de5afe5b638592f4.office.live.com/self.aspx/Palestras/2011-02-11%20IO%20enCloud.io/VBDemo.zip

Aprendendo mais

Para saber mais sobre o Visual Basic 2010 acesse o MSDN Brasil
http://www.msdnbrasil.com.br

What’s new in Visual Basic 2010
http://msdn.microsoft.com/en-us/library/ee336123.aspx

Apresentações
Apresentação realizada no dia 10/2/2011 no evento IO enCloud http://encloud.io realizado pelo portal http://www.ceviu.com.br

Até a próxima!


Introdução à Plataforma .Net

image

Esta apresentação tem como objetivo dar uma visão geral do que é a Plataforma .Net, características de seu funcionamento e benefícios para a construção de soluções.

A agenda apresentada é a seguinte:

•O que é a Plataforma .Net?
•O que é o .Net Framework?
•Multi Linguagem/Plataforma
•Ferramenta de Desenvolvimento
•Tipos de Aplicações
•Aprendendo mais sobre o .Net

Downloads
Power Point da apresentação
http://cid-de5afe5b638592f4.office.live.com/view.aspx/Palestras/2011-02-10%20IO%20enCloud/Introducao%20%c3%a0%20Plataforma%20DotNet.pptx 

Código fonte de demonstração
http://cid-de5afe5b638592f4.office.live.com/self.aspx/Palestras/2011-02-10%20IO%20enCloud/NetFrameworkDemo.zip

Esta solução possui projetos em C#, Vb.Net + WPF, C++, F#, Asp.Net e Windows Phone 7. Todos compartilham uma biblioteca baixa uma página HTML e extrai o seu título.

Aprendendo mais

Para saber mais sobre a Plataforma .Net acesse o MSDN Brasil
http://www.msdnbrasil.com.br

Centro para Iniciantes
http://msdn.microsoft.com/pt-br/beginner/default.aspx

Apresentações
Apresentação realizada no dia 10/2/2011 no evento IO enCloud http://encloud.io  realizado pelo portal http://www.ceviu.com.br

Até a próxima!


Windows Unicode Strings

Uma das variáveis mais complicadas do desenvolvimento de aplicações em código nativo C/C++ é a quantidade de tipos diferentes para representar Strings.
Basicamente, uma string é uma cadeia de caracteres que pode inicialmente ser representada como

char myString[100] = “Minha string”;

Uma cadeia de “char”, caracteres de 8-bit ANSI

Para o alfabeto americano, 8-bit é suficiente para representar cada caracter, porém outros alfabetos como o Kanji precisam de mais informação para representar alguns caracteres e é aí que nasce o Unicode e os diversos UTFs.

Eis que temos então os caracteres ANSI representados por 1 byte e os conhecidos UTF-8, UTF-16 e UTF-32.

O UTF-8 codifica alguns caracteres utilizando 1 byte, alguns caracteres usando 2, 3 ou 4 bytes. (Loucura não?)
O UTF-16 codifica todos os caracteres utilizando 2 bytes.
O UTF-32 codifica os caracteres utilizando 4 bytes.

O UTF-8 é bastante interessante, porém ele é menos eficiente que o UTF-16 caso existam muitos caracteres que necessitam de 2 bytes ou mais.

As linguagens C/C++ suportam caracteres Unicode e as APIs do Windows também suportam. Existe o tipo wchar_t que é utilizando em C++ para representar caracteres Unicode e é aí que começa a bagunça.

Diversas aplicações mesclam funcões que manipulam caracteres ANSI e UNICODE, o que causa além de um trabalho maior para o desenvolvedor ficar convertendo entre diversos tipos, uma perda de performance e aumento no consumo de memória.

A partir do Windows Vista, a API do Windows utiliza Unicode para tudo, porém as funções da API sempre possuem duas versões, uma versão que ANSI e uma Unicode e dependendo da definição da macro UNICODE, que é definida automaticamente pelo Visual C++.

O tipo TCHAR é um bom exemplo, vejam a declaração simplificada

#ifdef UNICODE
typedef WCHAR TCHAR, *PTCHAR, PTSTR;
#else
typedef CHAR TCHAR, *PTCHAR, PTSTR;
#endif

Se no momento da compilação a macro UNICODE estiver definida o tipo TCHAR representará o WCHAR senão representará o tipo CHAR.
E isto serve para o consumo das funções do Windows que possuem duas versões, por exemplo a função CreateWindowEx:

Versão Unicode (WIDE)
HWND WINAPI CreateWindowExW(…)

Versão ANSI
HWND WINAPI CreateWindowExA(…)

O consumo de versão da função CreateWindowEx é resolvido no momento da compilação devido à esta declaração:

#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif

Use somente strings UNICODE! 

É importante ter consciência de todos estes detalhes para que ao construir uma aplicação minimize a utilização de caracteres não Unicode.
No Windows, as funções com o sufixo “A” que é a versão Ansi, simplesmente convertem a string passada para a função para uma string Unicode e executam a versão Unicode da função.
Ao término da execução da função Unicode, a função Ansi que a invocou, converte o resultado para uma string Ansi e retorna para a aplicação. Ou seja, ocorre uma sobrecarga de processamento apenas pelas conversões entre tipos.
Strings Ansi proporcionam uma falsa economia de memória, que se perde e pode ter efeito contrário ao passar pela camada de “tradução” da API do Windows.

Outro ponto importante que deve ser levado em consideração para migrar totalmente para strings Unicode é interoperabilidade com aplicações COM e .Net, que também são baseados em Unicode.

Não se preocupe .Net é Unicode!

O .Net framework que possui a classe System.String que simplifica muito a manipulação deste tipo de dado e é Unicode por padrão.
Para o programador .Net (C#/VB/F#/etc) a questão das string é transparente, pois não é necessário manipular ou se preocupar com isto.
Porém toda esta facilidade tem um pequeno porém, toda string no .Net é imutável, ou seja, as manipulações de string com o tipo string padrão do .Net sempre cria cópias das strings e elas são destruídas pelo Gargage Collector. Por isto é preciso ter cuidado e não exagerar nas strings para não desperdiçar a vantagem de trabalhar com o Unicode por padrão.

Para mais informações acesse:

The Unicode Consortium
www.unicode.org

Unicode and Character Sets
http://msdn.microsoft.com/en-us/library/dd374083(VS.85).aspx

Unicode in Visual C++ 2
http://msdn.microsoft.com/en-us/library/cc194799.aspx

How to: Convert between varios string types
http://msdn.microsoft.com/en-us/library/ms235631(VS.80).aspx

Divirtam-se!