| Carlos's profileCarlos Mattos - Sorocaba...PhotosBlog | Help |
|
|
July 21 Hands-on Lab: IDE Visual StudioHoje realizamos o primeiro Hands-on Lab aqui no FIT. Com a participação de 25 profissionais entre analistas, desenvolvedores e estagiários. Este é o primeiro de uma série de atividades previstas para a capacitação contínua da equipe. Como primeiro evento deste tipo, o conteúdo foi light, mas não menos importante. Muitas dicas da IDE foram compartilhadas com os colegas que descobriram funcionalidades que podem aumentar significativamente a produtividade de quem trabalha com o Visual Studio. July 17 Software Bom, Rápido e Barato! (ficção)Ao longo de anos que tenho me dedicado ao desenvolvimento de soluções customizadas, pude observar uma grande evolução nos processos, metodologias e ferramentas para o desenvolvimento de software. O cliente, acostumado com maus prestadores de serviço que proliferam no mercado de desenvolvimento de softwares, habilmente, insere no contexto comercial da contratação do serviço, um deadline para receber o software. Eles tem sempre bons argumentos para sustentar suas prioridades. Analise este cenário absurdo. Um cliente, que não conhece absolutamente nada sobre processo de desenvolvimento de software (na maioria dos casos conhece tão pouco os processos da sua empresa), passa a determinar o prazo para planejamento e execução do seu projeto. E nós muitas vezes, por questões comerciais óbvias, aceitamos essas metas colocando em risco o trabalho de toda uma equipe e o nome da sua empresa. Reflita. No mercado de desenvolvimento de software, para apresentar uma estimativa de prazos e custos (coerente e factível), o profissional precisa de sólidos conhecimentos, boas ferramentas e o suporte de uma boa metodologia - ou ele usa a bola de cristal. Assim, quando você encontrar um cliente com este perfil, ao invés de encaminhá-lo para a padaria, você pode solicitar que ele escolha apenas duas opções entre as três alternativas: Bom, rápido e barato! A escolha é dele! Não tem mágica! Experimente construir uma casa sem fundação e sem plantas (estrutural, elétrica e hidráulica) e observe o resultado. Conheça o Microsoft Language Portal!O Microsoft Language Portal (www.microsoft.com/language) está disponível em 11 idiomas! O site foi criado para possibilitar aos profissionais e comunidades no mundo inteiro interagir entre si e com os especialistas em idiomas da Microsoft, no que diz respeito a terminologia de computador. É útil para qualquer pessoa que estiver interessada em localização de software ou em desenvolvimento de software em idioma local. Suporte Gratuito para Windows Vista SP1Suporte gratuito, ilimitado à instalação e compatibilidade agora está disponível para os consumidores do mundo inteiro, do Windows Vista SP1, até 18 de Março de 2009. Suporte por telefone está disponível para o mundo inteiro. Alguns países também oferecem suporte por Email e Chat, como o Brasil. Esta oportunidade é oferecida para todos os usuários do Windows Vista SP1. Para maiores informações visite o endereço: http://support.microsoft.com/common/international.aspx?rdpath=1&prid=11274&gprid=500921 May 06 Zoo Digital é o primeiro case Brasileiro publicado no site oficial do Silverlight!O portal do Zoológico Municipal de Sorocaba, desenvolvido pela WD5 em parceria com a Microsoft e a Prefeitura Municipal conseguiu mais uma vitória nesta semana. O projeto é o primeiro case Brasileiro publicado no website oficial da tecnologia Silverlight. Confira no endereço: http://silverlight.net/. O fato foi comemorado por todos os envolvidos no projeto. Nosso MVP Lead, Rodolfo Roim, publicou uma nota no seu blog (http://mvpbrasil.spaces.live.com/) para registrar a boa notícia. April 25 Parque "Quinzinho de Barros" ganha portal inédito na internetSegundo Carlos Mattos, diretor de tecnologia da WD5, empresa sorocabana parceira da multinacional na construção do portal, outros animais do zôo terão sua vez como apresentador das atividades e conteúdos na web. O projeto também prevê a instalação de câmaras no local para registrar as imagens dos animais e disponibilizá-las on-line. No parque existirá, ainda, um ponto de acesso livre à internet com conexão sem fio. Veja a matéria completa publicada no Jornal Cruzeiro do Sul (http://www.cruzeironet.com.br/materia.phl?editoria=39&id=70333). Site do zoológico inaugura nova tecnologia criada pela MicrosoftO novo site do Parque Zoológico Municipal Quinzinho de Barros é vitrine para a nova tecnologia Silverligth desenvolvida pela Microsoft. É o que revelou o diretor da multinacional, Carlos Ferreira, ontem à tarde, durante cerimônia de lançamento do portal. A ferramenta eletrônica permite uma maior manipulação de fotos e imagens no campo virtual. Para Ferreira, implementar a tecnologia em um Zoológico cujo trabalho é reconhecido quase que mundialmente, expõe de maneira positiva a qualidade do produto. Veja a matéria completa publicada no Jornal Cruzeiro do Sul (http://www.cruzeironet.com.br/materia.phl?editoria=39&id=76076). April 23 (Jornal Bom Dia) Site do zológico de Sorocaba disponibiliza informações e imagensEstá disponível na internet desde esta quinta-feira, 3, o projeto do zôo virtual do Parque e Zoológico Municipal Quinzinho de Barros, de Sorocaba. O site é resultado de uma parceria com a empresa Microsoft.
Nesta primeira fase do projeto, o site oferece informações institucionais, imagens e dados dos bichos do "Quinzinho", detalhes de lendas envolvendo a fauna do local, calendário de eventos e uma área sobre como entrar em contato com os funcionários do zôo. Haverá ainda uma área restrita, que será acessada a partir de um cadastramento, destinada a professores, pesquisadores e estudantes de qualquer parte do país ou do mundo. A página dará acesso a arquivos técnicos especialmente desenvolvidos para a pesquisa, com o objetivo de servir para utilização na área de educação. Outra área de acesso restrito é voltada para os funcionários do zôo, para que eles possam atualizar as informações. A empresa que desenvolveu o portal para a Microsoft, a WD5, acompanhará os trabalhos de realimentação das informações do site. Durante o lançamento do site, o representante da Microsoft, Carlos Mattos, explicou que numa segunda fase haverá uma interação com os internautas, com a disponibilização de imagens em tempo real. Segundo ele, isso se dará por intermédio de câmeras de vídeo instaladas em pontos estratégicos de todo o zôo. "Elas vão registrar os animais e as ações dos funcionários, como o tratamento dentário, o cuidado com ninhos e o trabalho de apoio na procriação de espécies, além das reações dos bichos", explicou ele. March 19 Heroes Happen Here - Sorocaba/SP - 15/03/2008O evento realizado no último sábado, dia 15/03/2008 no auditório da Academia de Ensino Superior de Sorocaba foi um sucesso! Tivemos mais de 180 pessoas presentes. Estiveram presentes no evento o profissional Paulo Dutra (MCSE) palestrando sobre o Windows Server 2008, o MVP Pedro Galvão falando sobre o SQL Server 2008, o Ricardo Slavov, líder do Grupo de Usuários SorBr.NET. Minha participação foi registrada com a apresentação das novidades do Visual Studio 2008. Para quem perdeu esta oportunidade, estou disponibilizando o PPT da minha palestra no meu SkyDrive\Public\Palestras (http://cid-834535b664f10b2d.skydrive.live.com/browse.aspx/Palestras.
Gostaria de agradecer o Ricado Slavov por mais esta oportunidade de contribuir com o grupo de usuários SorBr.NET e também à Academia de Ensino Superior de Sorocaba que disponibilizou uma excelente estrutura e ofereceu todo apoio necesário para realizarmos esse evento.
O público presente estava de parabéns, para um evento realizado no interior, tivemos um excelente número de participantes.
Até a próxima oportunidade. March 05 Retornando o índice de uma linha no SQL ServerEm alguma situações, é possível que você precise obter o índice (posição ordinal) de uma linha retornada por um SELECT no SQL Server. As funções ROW_NUMBER e OVER do T-SQL permitem essa construção. Veja o exemplo abaixo:
January 24 Listando Tabelas e Colunas utilizando LINQ-to-SQLRecuperar nomes de tabelas e colunas a partir da estrutura do banco de dados é sempre útil no processo de desenvolvimento. Existem diversas técnicas utilizando diferentes tecnologias para isto. Este post mostra como obter uma lista com os nomes das tabelas e seus respectivos campos utilizando o LINQ-to-SQL. O exemplo foi implementado com 1 formulário contendo 1 botão e 1 controle ListBox. Essa construção é possível porque o LINQ-to-SQL mantém o mapeamento da estrutura do banco de dados armazenado no objeto DataContext. Veja abaixo a interface em tempo de execução mostrando a lista das tabelas e colunas:
Agora veja o código necessário para construir esta lista (é bem simples):
{
public partial class Form1 : Form
{
DBTeste db = new DBTeste();
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
var DBEstrutura = db.Mapping;
foreach (var Tabela in DBEstrutura.GetTables())
{
listBox1.Items.Add(Tabela.TableName);
foreach (var Coluna in Tabela.RowType.DataMembers)
listBox1.Items.Add(" -" + Coluna.MappedName);
}
}
}
}
January 20 Criptografando dados com C# e MD5O exemplo abaixo demonstra como criptografar dados utilizando C# e o algorítmo MD5. O Namespace System.Security.Cryptography oferece os recursos necessários para esta implementação.
using System.Security.Cryptography;
...
public static string GetMD5Hash(string input)
{
MD5 md5Hasher = MD5.Create();
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
return sBuilder.ToString();
} Abrindo Formulários Dinamicamente C# (Windows Forms)Introdução
Uma tarefa comum no desenvolvimento de soluções Windows Forms é a necessidade de instanciar formulários com base no nome da classe, ou seja, como o desenvolvedor pode abrir um formulário dinamicamente (programaticamente) passando o nome deste formulário (classe) como string. Isto é muito comum quando há necessidade de criarmos menus populados dinamicamente a partir de uma base de dados.
Problema
Apesar de representar uma necessidade comum em aplicações Windows Forms, ainda há muitas dúvidas entre os desenvolvedores de como implementar corretamente um procedimento para instanciar um formulário dinamicamente. Faltam exemplos sobre esse tipo prática e os que estão disponíveis na Web não são facilmente encontrados e na maioria das vezes são apresentados em outro idioma.
Solução
Uma construção simples com o método CreateInstance do objeto Activator permite implementar esta funcionalidade. Veja o código abaixo:
public static void OpenForm(string Namespace_FormName, bool System_Modal)
{
Type t = Type.GetType(Namespace_FormName);
if (t != null)
{
System.Windows.Forms.Form f = (System.Windows.Forms.Form)Activator.CreateInstance(t);
if (System_Modal)
f.ShowDialog();
else
f.Show();
}
}
Instanciando um formulário implementado em outro assembly
Com uma construção semelhante, é possível iniciar um formulário implementado eu outro assembly. Basta modificar o código acima para incluir informações sobre o assembly externo. O exemplo abaixo mostra como iniciar um formulário (MDIChild) contido em outro assembly e centralizá-lo no MDI:
private void OpenChildFormFromExternalAssembly(
string Full_Namespace_Class,
string Root_Namespace,
string Assembly_Version,
string Assembly_Culture,
string Assembly_PublicKeyToken,
bool System_Modal)
{
Type t = Type.GetType(Full_Namespace_Class + "," + Root_Namespace
+ ", Version=" + Assembly_Version
+ ", Culture=" + Assembly_Culture
+ ", PublicKeyToken=" + Assembly_PublicKeyToken);
if (t != null)
{
System.Windows.Forms.Form f = (System.Windows.Forms.Form)Activator.CreateInstance(t);
f.MdiParent = this;
int TopMargin = 0;
int LeftMargin = 0;
LeftMargin = ((this.Width - f.Width) / 2) + this.Left;
TopMargin = ((this.Height - f.Height) / 2) + this.Top - 50;
f.StartPosition = FormStartPosition.Manual;
f.Top = TopMargin;
f.Left = LeftMargin;
if (System_Modal)
f.ShowDialog();
else
f.Show();
}
}
As linhas abaixo demonstram como invocar o procedimento acima passando os parâmetros necessários:
OpenChildFormFromExternalAssembly(
"EIS.Presentation.frmTipoEis", // Namespace completo
"EIS", // Root Namespace
"1.0.0.0", // Assembly Version (AssemblyInfo.cs)
"neutral", // Cultura (Default=neutral)
"null", // PublicKeyToken (Default=null)
false
); Gerenciando Conflitos de Concorrência no LINQ-to-SQLIntrodução O LINQ-to-SQL oferece uma coleção de APIs (Application Program Interface) para auxiliar o desenvolvedor a identificar, avaliar e solucionar conflitos de concorrência nas suas aplicações.
Concorrência Otimista O modelo otimista para gerenciamento de conflitos de concorrência utiliza o método Resolve(RefreshMode) apresentado pelo Namespace System.Data.Linq. Este método avalia o conflito e atualiza os dados de acordo com o que foi definido pelo desenvolvedor através da Enumeração RefreshMode.
Enumeração RefreshMode Esta enumeração determina como o método Resolve() irá tratar os conflitos de concorrência expostos pela Exception ChangeConflictException. Abaixo estão os membros desta enumeração com uma breve descrição:
Entendendo o RefreshMode Analisando a Enumeração acima, o desenvolvedor pode ter uma interpretação equivocada sobre o comportamento do método Resolve(). Para esclarecer isso abaixo estão três cenários diferentes que ilustram o comportamento do método Resolve para cada Membro da Enumeração RefreshMode.
Cenário de Exemplo Considere o cenário abaixo. Uma Exception do tipo ChangeConflictException é gerada quando o Usuário1 tenta submeter suas alterações ao banco de dados, porque o Usuário2 efetivou modificações nos dados enquanto o Usuário1 estava manipulando o mesmo registro.
Resolvendo conflitos mesclando dados (KeepChanges) O membro KeepChanges pode ser utilizado para reconciliar diferenças entre os valores esperados e os valores reais contidos no banco de dados antes de você tentar submeter a atualização novamente. Este membro mescla dados do cliente com dados contidos na base.
Resolvendo conflitos mantendo os dados do banco (OverwriteCurrentValues) O membro OverwriteCurrentValues pode ser utilizado para reconciliar diferenças entre os valores esperados e os valores reais contidos no banco de dados antes de você tentar submeter a atualização novamente. Este membro sobrescreve os valores atuais (no cliente) com os valores encontrados no banco de dados.
Resolvendo conflitos sobrescrevendo os valores do banco de dados (KeepCurrentValues) O membro KeepCurrentValues pode ser utilizado para reconciliar diferenças entre os valores esperados e os valores reais contidos no banco de dados antes de você tentar submeter a atualização novamente. Este membro sobrescreve os valores do banco de dados com os valores atuais no cliente.
Exemplo de implementação do modelo de concorrência otimista O procedimento abaixo apresenta o código necessário para implementação do modelo otimista. A linha em destaque mostra a chamada do método Resolve() onde o desenvolvedor pode escolher a ação desejada de acordo com a enumeração RefreshMode.
try { db.SubmitChanges(ConflictMode.ContinueOnConflict); }
catch (ChangeConflictException e) { Console.WriteLine(e.Message);
foreach (ObjectChangeConflict occ in db.ChangeConflicts) { occ.Resolve(RefreshMode.KeepCurrentValues); } }
January 02 MVP 2008 Reloaded!Mais um ano no programa MVP! Não há maneira melhor para iniciar um novo ano! Recebí hoje pela manhã o e-mail informando a minha renovação para o programa MVP. Este é o quarto ano que participo do programa. Sinto-me honrado por fazer parte de uma comunidade tão ativa ao lado de grandes profissionais. Desde 2003 (meu primeiro ano no programa) conheci grandes profissionais e fiz grandes amigos!
Abraços para todos!
Carlos Mattos
MVP 2008 (C#) December 13 Palestra Resumo do TechEd 2007No próximo sábado, dia 15/12/2007, estarei na UNIP Sorocaba, para palestrar sobre as novidades apresentadas no TechEd Brasil 2007 e em seguida abriremos uma discussão sobre o mercado de trabalho para desenvolvedores de software. O evento é organizado pela Célula Acadêmica CARS.NET liderada pelo estudante Fernando Maldonado (fernandomal@hotmail.com). As atividades da célula iniciarão às 10h00min no Auditório Nobre da UNIP Sorocaba. O evento é gratuito e aberto para toda comunidade acadêmica. November 22 Problema com ASP.NET AJAX 1.0 no Visual Studio 2008Cenário:
Alguns desenvolvedores tem encontrado dificuldades para rodar projetos ASP.NET 2.0 que utilizam o AJAX Extensions versão 1.0.61025.0 no Visual Studio 2008. Muitos destes desenvolvedores, tentam apenas fazer a referência para a biblioteca AjaxControlToolKit.dll diretamente a partir da janela Choose ToolBox Items. Contudo, o Ajax Control Toolkit utiliza o assembly System.Web.Extensions que é registrado no GAC (Global Assembly Cache). O que ocorre é que quando você instala o Visual Studio 2008, o assembly System.Web.Extensions registrado no GAC é da versão 3.5.0.0. Assim, quando você tenta abrir um projeto que utiliza o AJAX 1.0 a IDE do Visual Studio exibe uma mensagem de erro informando que o assembly System.Web.Extensions não pode ser carregado por que ele ou uma das suas dependências não foi encontrado.
Solução:
Instale o ASP.NET AJAX Extensions 1.0 a partir do arquivo ASPAJAXExtSetup.msi (disponível para download no site www.asp.net). Esta instalção adiciona e registra no GAC a versão 1.0.61025 necessária para seus projetos. As duas versões vão continuar funcionando normalmente pois o Global Assembly Cache gerencia de forma eficiente os assemblies de mesmo nome e com vesões diferentes.
Alternativa:
Se você não quiser instalar o ASP.NET AJAX Extensions 1.0 completo, basta copiar o assembly System.Web.Extensions de outro computador que tenha a versão 1.0.61025 e registrá-lo no GAC manualmente utilizando a ferramenta GACUtil.exe. O comando deve ser invocado a partir do prompt de comando do Visual Studio 2008 com a seguinte sintaxe GACUtil.exe -i <path>\System.Web.Extensions.dll. Esta prática é recomendada apenas para ambientes de desenvolvimento para ambientes de produção, o desenvolvedor deve instalar os componentes através do MSCORCFG.msc ou preferencialmente por um pacote do Windows Installer (.msi).
Busca Incremental no Visual StudioQue a IDE do Visual Studio oferece um recurso de busca incremental? Este recurso permite que o desenvolvedor localize uma variável, objeto, função ou qualquer palavra dentro do seu código. A pesquisa incremental é executada de acordo com os caracteres digitados pelo desenvolvedor. Por exemplo, se você está buscando uma variável chamada intCodigoProduto e ativa a busca incremental, ao digitar "intCod" esse recurso selecionaria a próxima palavra que iniciasse com esses caracteres. Para ativar a Busca Incremental basta utilizar o atalho de teclado CTRL+I na janela de código. November 20 Aprenda a jogar com seu tempo! (VOCE S/A)Para quem é leitor assíduo da revista Você S/A, publicada pela Editora Abril, com certeza já leu a matéria de capa da edição 112 (Outubro/2007). A matéria com o título "Use melhor o seu tempo" contém 32 idéias e vários depoimentos de executivos e especialistas em gestão do tempo. Tema de grande importância para todos que tem que dificuldades para organizar sua agenda. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|