Skip to main content

O que é, quanto custa e quais as vantagens do Microsoft Azure

Os melhores serviços de computação na nuvem com um precinho bem camarada

Posted in Dicas, Microsoft Azure, Tecnologia, Computação em nuvem

Muitas empresas hoje em dia precisam de soluções rápidas e com possibilidade de escalar rapidamente de acordo com o aumento de demanda. Para isso existem várias empresas com serviços de computação na nuvem. Mas vamos falar aqui do serviço da Microsoft, o Microsoft Azure.

Antes de qualquer coisa: Eu entendo que existe um estigma - adquirido na década de 90 e as vezes ainda acontecendo - de que tudo que a Microsoft faz é ruim. Só que convenhamos, o Azure é bom pra caramba! Sem falar nos valores que podem não ser baixos à primeira vista mas compensam quando olhamos a longo prazo.

Vou fazer tentar contar de maneira bem básica e resumida o que é e quais as vantagens do Microsoft Azure.

Eis o novo portal - ainda beta

O que é Microsoft Azure?

Microsoft Azure (antigamente conhecido como Windows Azure) é a solução da Microsoft para computação em nuvem (cloud computing) e engloba desde websites até active directory, passando por banco de dados SQL e machine learning.

Além disso ele pode ser usado tanto como IaaS (Infrastructure-as-a-Service) quando como PaaS (Platform-as-a-Service), é flexível (qualquer linguagem de programação e qualquer sistema operacional) e escala facilmente.

Clique aqui para saber com mais detalhes o que é Microsoft Azure.

Quais são as vantagens do Microsoft Azure?

A principal vantagem é a possibilidade de escalar rapidamente o projeto de acordo com a demanda. Suponhamos que o cliente tenha um site com 1.000 acessos diários e, um dia, o site começa a ter uma demanda de 10.000 acessos por hora. Se o cliente estiver usando Microsoft Azure ele poderá escalar o servidor automaticamente para poder aguentar essa quantidade de acessos. Caso contrário ele vai ter que ligar para a empresa onde o website está hospedado e comprar um plano maior.

Outra vantagem é poder contar com o conteúdo em múltiplos servidores, agilizando a entrega de conteúdo, já que o servidor de entrega vai ser escolhido de acordo com a localização do usuário. Isso faz com que o site esteja rápido tanto para mim, aqui em Praga, quanto para alguém que esteja na Nova Zelândia.

Que serviços o Microsoft Azure tem para oferecer?

São mais de 30 serviços que já deixaria qualquer empresa mais do que satisfeita. Como desenvolvedor os que eu mais usaria são: Azure WebsitesVisual Studio Online (source code control), Virtual Machines (VM), SQL Database, CDNBackup e API Management. Mas pode acontecer de um dia eu precisar de algum outro serviço que não citei. Sei lá, Stream Analytics.

Quanto custa assinar o Microsoft Azure?

A Azure VM mais barata tá saindo por 13 USD por mês enquanto o SQL Database mais barato sai por pouco menos de 5 USD ao mês. Só que os valores vão mudar de acordo com sua demanda e região. Lembrando que cada serviço tem uma métrica diferente, o que motiva a usar a Calculadora de Preços que eles disponibilizam no site.

Assinar o Microsoft Azure compensa?

Na minha humilde opinião isso depende alguns fatores, como por exemplo:

  1. Tamanho do seu projeto – Microsoft Azure vai, com certeza, aceitar qualquer tamanho de projeto. Só que se for um projeto pequeno faria mais sentido pegar o plano free. Mas para, por exemplo, poder customizar a URL você precisaria pegar o plano mais básico que sairia mais caro que uma hospedagem normal. Veja bem: Eu pago 5 USD por mês para hospedar meu blog na EasyHost1, o que está de bom tamanho pra mim já que tem banco de dados incluído. No caso do Azure Websites eu teria que pagar pelo banco de dados separado. Eu adoraria ir para o Azure mas no meu caso não compensa. Ainda.
  2. Previsão de acessos diários e/ou transferência de dados – Em teoria eu não estou usando nem 2% do total mensal de transferência que contratei. Sem contar que meu blog não usa lá tanta memória e processamento. Mas se pensarmos em uma web app que precisa de bastante memória e processamento, além de transferência mensal, já seria negócio migrar pro Microsoft Azure. Quando falo transferência mensal me refiro a franquia de transferência de dados. Todos os planos têm uma e, caso exceder, você vai pagar o proporcional ao excedente. Já no caso de um servidor como o meu seria necessário contratar um plano maior sem nem saber se seria o suficiente.
  3. Quantidade de web apps você pretende hospedar – Olha que coisa interessante. Existem 2 possíveis cenários aqui: 1) Você pega um servidor com um plano parrudo e cria várias pastas, cada uma contendo uma web app diferente, pra economizar dinheiro; 2) Você pega uma VM no Azure e pode hospedar quantos web apps quiser, cada um com sua App Pool. Se eu tivesse que hospedar várias web apps eu iria pegaria uma Azure VM.

O Microsoft Azure aceita outras tecnologias (não Microsoft)?

Sim. Como exemplo temos várias distros de Linux como VM, além de Joomla e Wordpress para instalar nas instâncias de Websites e Git no Visual Studio Online.

Existem certificações pra Microsoft Azure?

Sim, existem. Eu, perticularmente, quero fazer a prova 70-532 (Developing Microsoft Azure Solutions) até o final do ano.

Considerações finais

Eu gostaria de mencionar que estou focando mais em web apps pois esta é a minha realidade. Mas podemos imaginar qualquer tipo de cenário onde o Microsoft Azure se encaixaria perfeitamente. Como por exemplo uma startup que deseja ter um ambiente de desenvolvimento Microsoft (Active Directory, Visual Studio Online), uma empresa que deseja ganhar dinheiro hospedando sites (VMs, SQL Database, Backup), um programador independente que quer um ambiente de testes online (Websites, SQL Database), etc.

Recomendações

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Criando páginas de erro 404 personalizadas no ASP.NET MVC

É muito fácil de se criar páginas de erro personalizadas no MVC. Veja como fazer.

Posted in Dicas, ASP.NET, MVC

Todo mundo que trabalha fazendo sites sabe que ter páginas de erro é indispensável. Só que quando se trabalha com ASP.NET MVC é muito complicado se acertar na hora de configurar as páginas de erro. Sim, usar o web.config é o recomendado. Mas você tem certeza de que está funcionando?

Objetivo

O nosso objetivo aqui é aprender a fazer uma página personalizada de erro 404 e retornar o HTTP status code correspondente (404) sem alterar a url.

O que aprendemos sobre erros no começo

Normalmente, quando estamos iniciando no ASP.NET, aprendemos que temos que colocar a tag no web.config, configurar os parâmetros e esperar o erro aparecer. Veja o exemplo abaixo:

<customErrors mode="On">
	<error statusCode="404" path="erro404.html" />
customErrors>

Páginas 404 personalizadas

Normalmente quando uma página não existe o site retorna o erro 404, não importa se a página é estática (página html simples) ou dinâmica (página gerada pelo backend). No caso do exemplo acima o ASP.NET a gente está dizendo para o site para redirecionar para uma página amigável quando acontecer algum erro 404.

Até aí tudo bem.

O problema do MVC

No caso do MVC o buraco acaba sendo mais embaixo: Como o MVC é baseado em routes, controles e actions uma url como /lala/lele não vai passar pelo . O resultado vai ser aquele erro 404 padrão do ASP.NET.

A solução pra esse problema é simples, mas não é a mais correta. Basta colocar um redirect=”~/ erro404.html” no lugar do path, como no exemplo abaixo:

<customErrors mode="On">
	<error statusCode="404" redirect="~/erro404.html"/>
customErrors>

Agora, se você navegar pra uma url aleatória (lala/lele) você vai ser capaz de ver a sua página personalizada de erro. Só que, além da url se tornar /erro404.html?aspxerrorpath=/lala/lele você vai ver que o HTTP status code da página é 200.

E isso é muito longe do objetivo que traçamos no começo.

Não sou especialista em SEO mas deixa eu tentar explicar o problema: Se por um acaso a página que os indexadores acharem não existe, mas estamos retornando 200, eles vão achar que a página existe e vão indexar a página 404 personalizada como se ela fizesse parte da navegação do site.

A solução ideal

Como eu disse no começo, a ideia é retornar uma página de erro 404 personalizada junto com o HTTP status code correto, que é 404. E obviamente não podemos alterar a url. A maneira mais prática de se fazer isso é mexer direto no IIS. Claro que eu não vou tentar te convencer a ligar no seu host e pedir pra mudar alguma configuração. Para isso vamos usar o .

Simplificando: Enquanto o funciona no mesmo nível do ASP.NET, o funciona mais próximo ao IIS. O que significa que as alterações no vão afetar até mesmo arquivos estáticos. Logo, se quisermos fazer alguma alteração que seja mais próxima do servidor, é lá que devemos mexer.

Para fazer com que nossa página de erro 404 personalizada funcione no MVC devemos fazer como no exemplo a seguir:

<httpErrors errorMode="Custom">
	<remove statusCode="404"/>
	<error statusCode="404" path="/erro404.html" responseMode="File"/>
httpErrors>

Reparou que eu usei um antes? Isso evita erros caso já tenha algum statusCode=”404” definido. E, apesar de eu estar usando uma página html simples (o ideal), podemos usar uma rota específica para a página 404. Como por exemplo /erro/404. Só que nesse caso é recomendado usar o responseMode=”ExecuteUrl”.

Agora, se formos acessar uma url aleatória /lala/lele vamos ver que:

  1. A página 404 foi chamada
  2. O HTTP status code é 404
  3. A url não foi alterada

Pronto. Espero que isso tenha sanado suas dúvidas. De qualquer forma fique à vontade para comentar e perguntar.

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Como fazer com que a sessão não expire usando Forms Authentication

Uma dica rápida de como fazer com que a sessão só expire depois de 1 ano

Posted in Dicas, ASP.NET

Tem dias que a gente tem que voltar ao básico pra resolver um problema. E hoje foi um desses dias.

Temos um projeto onde usamos Forms Authentication para login. Nada muito complexo: É um sistema de avaliação com algumas perguntas de multipla escolha. Não customizamos o Forms Authentication pois só queríamos um nível básico de autenticação. Só que os usuáros começou a ter problemas e, depois de algum tempo, achamos a solução.

O problema

O usuário logava, trabalhava mas, depois de um tempo, o sistema voltava automaticamente para a tela de login sem salvar as informações.

A solução

No nosso caso, como o sistema é pequeno e só ficava inconveniente para o usuário ter que colocar as respostas novamente, resolvemos o problema colocando a sessão para expirar em 1 ano. Eu sei, é muito. Mas dá pra trabalhar com folga. Eis o código:

<authentication mode="Forms">
	<forms loginUrl="~/" timeout="525949" /> 
<authentication>

Existem, no entanto, outras soluções. Tem uma que chamam de "heartbeat" onde a sessão é atualizada a cada 5 minutos via ajax. Talvez eu faça mini projeto em forma de tutorial e poste aqui qualquer dia desses. ;-)

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Como entrar no mercado de trabalho .NET depois da faculdade

Me perguntaram como entrar no mercado de trabalho depois da faculdade e resolvi publicar a conversa

Posted in Dicas, Carreira

Recebi a alguns dias atrás um e-mail do Douglas Cardoso, 20 anos, recém formado em Análise e Desenvolvimento de Sistemas. No e-mail ele faz algumas perguntas sobre como começar a trabalhar com programação, como é o mercado de trabalho (quantidade de vagas de emprego) e que tipo de conhecimento ele deve ter. Como acho que tem muita gente com essa dúvida eu perguntei a ele se poderia colar nossa conversa aqui.

Eis a pergunta do Douglas:

Fala Davidson, então, eu me formei agora em analise e desenvolvimento de sistemas, tenho 20 anos, e decidi seguir com programação, irei começar a fazer um curso de formação .NET na K19, tenho base C#, e ASP, é o que faculdade me proporcionou, e agora vou fazer esse curso para dar uma especializada, estou fazendo inglês também porque é extremamente necessário, até porque quero tirar minhas certificações, eu tenho algumas dúvidas que acho que é normal, se der para você me responder ficaria muito grato!

  1. Eu consigo entrar no mercado como programador C#, ASP.NET júnior (já desenvolvi, um site de uma loja virtual em ASP.NET e um sistema de pizzaria em C#)?
  2. Eu moro em Extrema - MG, mas estarei mudando para SP, em busca de mercado, o mercado para essa área é boa?
  3. Estou perdidaço, após eu estar fluente em inglês, e bons conhecimentos na linguagem, como faz a certificação? A inscrição, o local da prova, etc.

Muito obrigado se der para me responder! Sou um novato e tô com mil duvidas na minha cabeça haha.

Eis minha resposta:

Grande Douglas, tudo bem? Vamos por partes:

  1. Sim, você consegue entrar como junior. Até porque você precisa começar por algum lugar.
  2. Sim, o mercado de SP é muito bom. Mas também pense no Sul do país, eles tem melhor qualidade de vida.
  3. Sobre a certificação eu recomendo você ter pelo menos 2 anos de experiência de mercado. Não que, por exemplo, vai cair na prova aquele arquivo que você fez pro Banco do Brasil. Mas esses 2 anos vão te ajudar a amadurecer a tecnologia na tua cabeça. Você pode fazer a inscrição no site da Prometric e pagar uma graninha. Da última vez que eu marquei uma prova tava 100 dólares.

O que você pode fazer hoje?

  • Ganhar experiência de mercado - cometa erros agora, mas aprenda com eles
  • Aprenda a lidar com as pessoas - vai ajudar no futuro
  • Sempre ajude - exceto quando você realmente não pode
  • Aprenda que o código não te pertence - alguém vai mexer e mudar tudo, mas não se importe (se estiver funcionando)
  • Estude e se atualize sempre, mesmo que você não possa colocar em prática
  • Tenha vida social (facebook não conta)

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

A importância de selecionar um bom programador .NET

Com um bom programador no time você pode evitar estresse em projetos de qualquer tamanho

Posted in Dicas, Carreira, ASP.NET

Antes de mais nada, contexto: Vou chamar o setor onde trabalho de hub já que todas as tarefas de criação e publicação de sites é centralizada no meu escritório. No caso de publicação nós temos 2 alternativas: Fazemos um teste rápido antes de publicar ou testamos com mais cuidado e fazemos revisão de código antes de mandarmos pra produção. Isso depende do cliente.

Pois bem. Alguns dias atrás recebemos no hub um pedido para publicar um site. Disseram que não precisávamos testar e que era só jogar online. Assim o fiz. O problema é que o site começou a gerar erro de permissão de pasta. Fiz as devidas correções e o problema foi resolvido.

Eu juro que me deu vontade de xingar até a 5ª geração do cara que programou o site. Ele cometeu erros básicos como colocar os arquivos de dados (neste caso XML) fora de App_Data, colocou as tags do XML sem padrão (algumas tinham maiúsculas, outras não) e passou bem longe de reusar o código. Sim, ele criou o mesmo método várias vezes para fazer a mesma coisa. Só que em páginas diferentes.

Para evitar que outras pessoas façam isso eu vou botar 3 dicas rápidas. Guardem no coração de vocês:

  1. Use App_Data para salvar arquivos – Não importa que tipo de arquivos você vai colocar lá dentro, seja XML ou até mesmo um banco de dados SQL. Esta pasta tem nativamente permissões para leitura e escrita. Pode ser que localmente aquela pasta chamada “DB” na raiz do site funcione, mas isso não garante que funcionará em produção. Já App_Data é garantido.
  2. XML é case sensitive – Tem muita gente que não sabe disso porque só usa letras minúsculas quando está criando os nodes no XML. Mas é case sensitive sim, pode fazer o teste.
  3. Reuse seu código – Parece piada mas tem muita gente no mercado que cria aquele método “SalvaArquivo” várias vezes em vários lugares diferentes e, pra piorar, fazendo a mesma coisa. Se o método vai ser usado em vários lugares é bom criar em um lugar centralizado para facilitar a manutenção.

Só frisando: Isso foi em um projeto ASP.NET com Web Forms.

Não sei a história dele ou do projeto. Mas se formos pensar um pouco além do código chegamos a conclusão de que ele foi mal escalado para o projeto pois, saibam vocês, é um site grande de uma marca exposta internacionalmente. Claro que ele deve estar feliz de colocar no currículo que fez um site grande. Só que nós do hub sabemos que o cara é bem mediano e que deve ter achado algum site com dicas de entrevista de emprego pra poder conseguir a vaga. Mas nada que um treinamento e um pouco de dedicação nos estudos não resolvam.

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Por que escolhi trabalhar com ASP.NET?

Não tem detalhes técnicos da tecnologia e nem comparativos. É mais uma opinião pessoal mesmo.

Posted in Dicas, Tecnologia, Carreira, ASP.NET

Acho que já está mais do que claro que eu sou focado nas tecnologias Microsoft e, sendo mais específico, em ASP.NET. Como muita gente me pergunta porque segui este caminho resolvi criar um artigo contando mais ou menos o que aconteceu para eu chegar no combo ASP.NET / C#. Ah sim, é bom adiantar que não vou entrar em detalhes técnicos neste texto.

Tudo começou lá pelo ano 2000, quando estava terminando o segundo grau técnico. Na época eu estava estudando Delphi e Visual Basic (VB) enquanto era muito curioso com relação a web. Nada de servidores ou rede e sim como as páginas funcionavam. Porém, o que eu sabia de web na época era o básico de HTML, zero de Javascript e menos ainda de CSS. Se falarmos de linguagem de servidor eu citaria o CGI mas só porque um colega de classe enchia o saco falando que ele fez um formulário de contato, formulário de cadastro e por aí vai. Enquanto isso eu tinha um site com 5 páginas no HPG.

Só fui perceber que a web seria algo que teria mercado bem no final do curso. E o caminho natural foi o ASP clássico já que eu sabia VB. Veja bem: Eu gostava mais de Delphi do que de VB. Descontando o fato de ter sido apresentado antes para o ASP do que para o PHP, o que me ajudou nessa migração foi o finado Front Page 2000. Na época bastava ter um banco de dados Access que ele o leria e criaria o formulário para, depois, só precisar de uma customização básica. Algo que o ASP.NET MVC tem hoje e a Microsoft chama de scaffolding.

Daí eu resolvi investir: Comprei um livro de ASP 3 (era esse mesmo do link!!). Apesar de não ter avançado tanto quanto gostaria eu tive uma boa noção de quão ruim era o ASP. E juro que desanimei depois de um tempo. Nem tanto pela qualidade duvidosa do ASP 3 (quem se lembra do erro “Parâmetros insuficientes. Eram esperados 1"?), mas pela péssima qualidade do mercado de desenvolvimento web em Vitória. Naquela época eu me sentia muito confortável por lá. Não me via saindo da casa da minha mãe e indo pra São Paulo, por exemplo. Ou até mesmo pra outro país. E foi justamente nesse período sabático de programação que saiu o .NET Framework.

Já na Polônia, em 2006, eu comecei a me reciclar e percebi que tinha que aprender muito mais do que eu achava que deveria: ASP.NET, AJAX, C#, HTML avançado, CSS e por aí vai.

Não foi fácil.

Só que a partir daí o caminho foi mais natural e a Microsoft ajudou bastante com isso. Para quem não sabe ela facilita muito na hora de se começar a desenvolver um projeto. As opções que o Visual Studio tem para um projeto web, por exemplo, são bem variadas. E boa parte das bibliotecas Javascript necessárias já são copiadas por padrão durante a criação do projeto. Some isso ao fato do Visual Studio ter o Nuget facilitando na hora de adicionar novas bibliotecas.

Sem falar do próprio .NET Framework que já existe em todas as máquinas que rodam Windows.

Em 2012 eu tirei meu MCT e passei 6 meses dando aula em São Paulo. Tive a oportunidade de conhecer gente de vários níveis – básico a avançado – que trabalhavam nas mais variadas tecnologias. Foi ótimo pois me deu uma boa visão de como anda o mercado ASP.NET no Brasil: Paga bem, mas tem que conhecer várias tecnologias diferentes. O mínimo que um programador ASP.NET normalmente tem que saber é: ASP.NET/C#, Web Forms/MVC, Javascript, CSS, SQL Server. Variando de básico pra avançado, além de ter conhecimento teórico e prático.

Enfim... É bom deixar claro que não estou dizendo que ASP.NET é melhor do que o que existe por aí. ASP.NET é melhor pra mim pois ela quem valorizou meu currículo, além de pagar minhas contas no fim do mês.

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

RescueTime - Um software muito bom para medir a produtividade na frente do pc

Você se acha uma pessoa produtiva?

Posted in Dicas, Análises, Produtividade

Não adianta mentir: Todo mundo acha que é super produtivo até que se prove o contrário. E geralmente, quando se prova o contrário, a pessoa fica toda nervosa botando a culpa na empresa, no chefe, no cachorro do vizinho, na mulher que não cozinha direito e por aí vai.

Mas, cá entre nós, você sabe quanto tempo, de fato, você fica nas suas atividades?

Para descobrir isso é muito fácil: Basta instalar um software que contabiliza o tempo em que cada software ou site está aberto. E ele tem nome: RescueTime.

O RescueTime é um software muito simples. Ele fica no tray (ali, ao lado do relógio) monitorando tudo o que você faz. Quando você quer puxar um relatório é só acessar o site e ver o quão produtivo você é. O pulo do gato é o sistema de categorias que ele tem. Cada software ou site é classificado em 5 níveis: Very distracting, distracting, neutral, productive e very productive. O Visual Studio, por exemplo, é classificado como very productive. Nem precisa dizer qual a classificação do Facebook, né?

Estou testando no meu notebook esses dias e achei muito bom. Claro, como é meu computador pessoal dá pra ver como eu sou uma pessoa extremamente improdutiva nas imagens abaixo:


Tabelinha mostrando o que eu usei no dia do teste

Gráfico mostrando o que eu usei no dia do teste

Atualmente estou usando a limitadíssima versão free mas que me atende perfeitamente. Para grupos de usuário existem várias versões pagas. Uma delas, só pra se ter uma idéia, custa US$ 70,00 por mês para 5 usuários. Com isso um gerente poderia monitorar o time para ver se eles estão passando mais tempo no fazendo coisas improdutivas do que produtivas.
 
Sugiro usar a versão free e fazer um teste. Vale muito a pena, até pra se policiar.

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Como inserir vários registros no banco usando Entity Framework?

Ok, é com SqlBulkCopy. Mas como ele pertence ao ADO.NET dá no mesmo

Posted in Dicas, Tutoriais, Entity Framework

O Entity Framework (EF) é um ORM da Microsoft que permite a nós, programadores, desenvolver dentro de um modelo conceitual de dados ao invés de programar direto no banco. Desse modo qualquer alteração feita nos dados durante seu uso no sistema deve ser persistida no banco já que isso não é feito automaticamente. No caso do Entity Framework usaríamos o método SaveChanges.

Para funcionar o EF gera um script SQL para cada ação. Assim, se chamarmos o método AddObject para inserir um objeto Pessoa, um INSERT é gerado e enviado ao banco de dados junto com as propriedades do objeto Pessoa.

E quando vamos adicionar 3.000 registros de uma vez?

Nesse caso temos 2 soluções:

  1. Fazemos um loop e jogamos 3.000 INSERTs no banco de dados (não recomendado)
  2. Usamos a classe SqlBulkCopy

Opa, peraê: Quer dizer que não vamos usar o Entity Framework então?

O Entity Framework não tem uma maneira nativa de se fazer um bulk insert. Mas como ele foi construído sobre o ADO.NET não teria problema usarmos o SqlBulkCopy. Isso sem contar o fato que o SqlBulkCopy traz pra gente um ganho considerável de performance com relação aos múltiplos INSERTs.

Veja um exemplo do uso do SqlBulkCopy:

using (SqlConnection destinationConnection = new SqlConnection(connectionString))
{
	destinationConnection.Open();
 
	using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection))
	{
		bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns";
 
		try
		{
			//O reader é um SqlDataReader que recebeu todos os 3.000 registros anteriormente
			bulkCopy.WriteToServer(reader);
		}
		catch (Exception ex)
		{
			Console.WriteLine(ex.Message);
		}
		finally
		{
			reader.Close();
		}
	}
}

O fato da gente precisar usar o SqlBulkCopy não quer dizer que o Entity Framework é ruim. Digamos que a Microsoft “esqueceu” de adicionar essa feature no EF...

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Como corrigir o erro "Error in processing. The server response was: Greylisted, please try again in X seconds"

Exatamente, a solução pra esse erro bizarro. Quantas vezes você já viu esse erro?

Posted in Dicas, C#, Tutoriais, ASP.NET

Eu tive uma sexta-feira interessante. Foi o último dia com uma turma onde eu tive que substituir o instrutor. Eles tiveram alguns problemas com ele e eu fui o escolhido para a substituição. Tudo correu bem. Depois eu fui olhar o log de erros do meu blog (eu uso Elmah, a propósito) e vi um erro que nunca tinha visto antes:

System.Net.Mail.SmtpException
Error in processing. The server response was: Greylisted, please try again in 240 seconds

O tempo varia mas, depois de procurar no google por alguns instantes, achei a solução. Meu servidor tinha implementado algo chamado Greylisting que, de acordo com a Wikipedia, é uma maneira de defender os usuários de e-mail contra spam. Logo, e-mails não reconhecidos pelo sistema são automaticamente rejeitados por um tempo.

Como corrigir?

Tudo que precisei fazer foi criar uma conta de e-mail no meu servidor e adiciona-la no meu web.config da seguinte maneira:

<system.net>
	<mailSettings>
		<smtp>
			<network defaultCredentials="false" host="Mail@DomainName.com" port="25" userName="username@DomainName.com" password="ThisIsAPassword"/>
		smtp>
	mailSettings>
system.net>

Obviamente você precisa colocar seu próprio host, username e password. :-)

E é isso.

Em tempo: A solução eu achei aqui here.

	<system.net>
		<mailSettings>
			<smtp>
				<network defaultCredentials="false" host="mail.davidsonsousa.net" port="25" userName="contact@davidsonsousa.net" password="D#sousa12"/>
			smtp>
		mailSettings>
	system.net>

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Se você é um trabalhador mediano, seu salário também é mediano. E você vai ser demitido!

País crescendo e muitas vagas de emprego. Mas como anda a qualidade do seu trabalho?

Posted in Dicas, Carreira

Hoje, com mundo globalizado, vemos o quão rápido as coisas mudam. Infelizmente para alguns a maneira como o trabalho é feito também está mudando.

Conheço algumas pessoas que acham que trabalhar de 8 horas por dia fazendo um trabalho mediano vai garantir estabilidade no setor privado. O problema é que, além deles serem os primeiros a serem demitidos quando a empresa precisa cortar pessoal, eles nunca crescem profissionalmente.

Sem contar com o pessoal que pensa que deve fazer pouco por que o chefe paga pouco, o que beira a irresponsabilidade e a falta de profissionalismo.

Essas pessoas esquecem que sempre existe alguém que tem as suas mesmas qualificações e faz a mesma coisa que você, só que mais barato. E isso vai fazer com que você perca espaço no mercado ou abaixar o seu próprio valor.

Logo, você tem que ser mais qualificado. A não ser que você passe a cobrar mais barato do que os outros. Quem é de TI sabe que isso acontece com os famosos “sobrinhos” (tipo o sobrinho do açougueiro, que sabe fazer site e cobra mais barato).

Eu já mencionei aqui no blog como tirar uma certificação Microsoft e até o motivo dela ser importante no mercado de trabalho. Mas não se pode limitar a isso. Qualquer curso ou certificação que possa ser usado na sua área vale a pena.

Sabe por quê?

Porque, como disse Seth Godin, se você é diferente de alguma forma e se fez único, as pessoas vão te achar e pagar mais.

Inspirado no artigo que li no Business Insider.

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Redimensione imagens dinamicamente em C# mantendo sua proporção

Veja como é fácil redimensionar imagens usando C# e, o mais importante: Proporcionalmente!

Posted in Dicas, C#

Existem alguns momentos que, enquanto desenvolvendo um projeto, temos que parar de fazer o que estamos acostumados (brincar com classes e acesso a banco) para que possamos fazer algo que nunca fizemos ou que não fazemos com frequência. No meu caso é edição de imagens.

O código abaixo é muito simples os poucos comentários que tem (em inglês) podem te dar uma idéia do que está acontecendo. De qualquer modo, o único trabalho que você vai ter vai ser copiar o código e colar no seu projeto. Daí você só vai precisar de fazer a chamada de maneira correta e, voilà! Imagem redimensionada proporcionalmente!!

 

public static void ResizeImage(string originalFile, string newFile, int newWidth, int maxHeight, bool onlyResizeIfWider)
{
	Image fullsizeImage = Image.FromFile(originalFile);
 
	// Prevent using images internal thumbnail
	fullsizeImage.RotateFlip(RotateFlipType.Rotate180FlipNone);
	fullsizeImage.RotateFlip(RotateFlipType.Rotate180FlipNone);
 
	if (onlyResizeIfWider)
	{
		if (fullsizeImage.Width <= newWidth)
		{
			newWidth = fullsizeImage.Width;
		}
	}
 
	int newHeight = fullsizeImage.Height * newWidth / fullsizeImage.Width;
	if (newHeight > maxHeight)
	{
		// Resize with height instead
		newWidth = fullsizeImage.Width * maxHeight / fullsizeImage.Height;
		newHeight = maxHeight;
	}
 
	Image newImage = fullsizeImage.GetThumbnailImage(newWidth, newHeight, nullIntPtr.Zero);
 
	// Clear handle to original file so that we can overwrite it if necessary
	fullsizeImage.Dispose();
 
	// Save resized picture
	newImage.Save(newFile);
}

Só lembre-se de salvar as imagens em uma pasta com as permissões de leitura e escrita para evitar erros.

via DZone snippets

		public static void ResizeImage(string originalFile, string newFile, int newWidth, int maxHeight, bool onlyResizeIfWider)
		{
			Image fullsizeImage = Image.FromFile(originalFile);
 
			// Prevent using images internal thumbnail
			fullsizeImage.RotateFlip(RotateFlipType.Rotate180FlipNone);
			fullsizeImage.RotateFlip(RotateFlipType.Rotate180FlipNone);
 
			if (onlyResizeIfWider)
			{
				if (fullsizeImage.Width <= newWidth)
				{
					newWidth = fullsizeImage.Width;
				}
			}
 
			int newHeight = fullsizeImage.Height * newWidth / fullsizeImage.Width;
			if (newHeight > maxHeight)
			{
				// Resize with height instead
				newWidth = fullsizeImage.Width * maxHeight / fullsizeImage.Height;
				newHeight = maxHeight;
			}
 
			Image newImage = fullsizeImage.GetThumbnailImage(newWidth, newHeight, nullIntPtr.Zero);
 
			// Clear handle to original file so that we can overwrite it if necessary
			fullsizeImage.Dispose();
 
			// Save resized picture
			newImage.Save(newFile);
		}

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Como melhorar seu curriculo tirando uma certificação Microsoft?

Não é tão difícil quanto parece! Você só precisa se organizar e estudar!

Posted in Dicas, Carreira

Eu tinha 17 anos quando ouvi pela primeira vez sobre as certificações Microsoft. Comecei a pensar imediatamente em tirar alguma mas vi que não poderia por 2 motivos: 1) Eu não falava inglês; 2) Eu não sabia por onde começar a estudar. Com o passar dos anos comecei a me dedicar mais ao inglês e, finalmente, consegui me organizar pra poder estudar e tirar minhas certificações.

Como o nome já diz, uma certificação existe para certificar o seu conhecimento em determinado assunto. No caso das certificações da Microsoft existe um pré-conceito de que a pessoa que a possui só fez a prova porque conseguiu os chamados brain dumps. É fato que muita gente usa esse artifício. Não querendo criticar quem o faz mas a gente tem que entrar num acordo aqui: Isso faz com que a pessoa seja um bom profissional? Digo isso porque tirar qualquer certificação da Microsoft (desde que seja da tua área) não é tão complicado quanto parece. Por isso vou listar aqui alguns pontos importantes para que você possa alcançar a sua certificação.

Organize o material

O site da Microsoft tem a lista de tudo o que pode cair na prova de certificação que você quer fazer (por exemplo a 70-515 - TS: Web Applications Development). Com isso em mãos colete todo o material necessário para seus estudos: Baixe PDFs, compre livros, salve as páginas com material relevante que você encontrar... Tudo é válido. Tenha sempre em mãos o material de estudo para não perder tempo procurando as coisas entre um tópico e outro. Mas caso precise procurar algo complementar durante a leitura evite perder muito tempo, ainda mais se estiver lendo algum site. Abrir outra aba do navegador é um convite ao ócio.

Organize seu tempo

Você não tem tempo pra nada. Pelo menos é o que você sempre diz quando aparece algo interessante pra fazer. Na verdade o problema é a dificuldade das pessoas de abrir mão de algumas coisas em prol delas mesmas e não perceber tempo mal usado em alguns momentos. Por exemplo: Por que não aproveitar os 30 minutos de ônibus até o trabalho para estudar? Ou aquele tempo na fila do banco? Ou a ida ao médico? Ou, o mais óbvio, o final de semana que você sairia pra balada...

Tenha foco

Uma vez que você finalmente conseguiu tempo para seus estudos na tua agenda é hora de pegar o material já previamente organizado e colocar a mão na massa. É bom lembrar: Pode acontecer de você conseguir fim de semana livre para estudar e chega algum amigo pra te chamar para aquele programa irrecusável. Isso é bem chato de fazer mas você tem que tomar uma decisão: Ir na praia com os amigos ou valorizar o currículo. Tenha em mente que uma certificação pode significar um aumento de salário dependendo da empresa. Ou facilitar a entrada em uma empresa melhor. Colocando isso na equação fica muito mais fácil de se decidir algo.

Pratique, pratique, pratique

Isso não é novidade mas vale lembrar: Sempre dê um jeito de praticar o que você está estudando. Você só sabe hoje que 2 + 2 = 4 porque ficou praticando isso quando era pequeno. Quando eu comecei a estudar para as minhas certificações comecei a montar este blog para poder estudar ASP.NET MVC (que alias é um otimo exemplo de como colocar a mão na massa). Fiz o desenvolvimento dele seguindo tudo o que aprendi. Obviamente os problemas foram aparecendo e eu fui correndo atrás das soluções. Só fiz a prova quando percebi que tinha coberto todo o cronograma de estudos. Como resultado eu passei com 100%. Foi mágico? Não, foi prática.

Conclusão

Parece complicado a primeira vista mas, como falei, não é. As provas são de múltipla escolha e, as vezes, uma lá na frente pode responder uma questão lá atrás. Por isso é bom ler a prova antes de fazê-la. Outra coisa é que se você vai bem preparado para a prova não vai perder tanto tempo pensando nas respostas. Elas são óbvias e muitas delas você vai saber de bate-pronto. Existem pegadinhas? Sim, várias. Mas é só se preparar bem.

Lhe garanto que certificação no currículo chama atenção dos empregadores, além de fazer com que você se destaque na multidão.

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Redimentione imagens com CSS mantendo a proporção

Redimensione imagens para qualquer resolução usando somente CSS. Perfeito para layouts fluidos!

Posted in Dicas, Tutoriais, CSS

Quando eu estava criando o blog eu não estava exatamente pensando em dispositivos móveis (celulares e afins). Na verdade eu pensava apenas em publicar o site para poder começar a escrever. Ao passar dos dias eu comecei a fazer alguns testes com o Opera Mobile Emulator e eu pude notar que meu blogestava horrendo nele. Alguns ajustes depois e tudo estava perfeito.

Até eu escrever este post.

O problema era: As imagens são publicadas usando o tamanho original que, normalmente, são maiores que o container. Para resolver esse problema eu poderia simplesmente redimensionar as imagens para que tenham a mesma largura do container. Mas e se o layout for fluido? E se a imagem também for usada em dispositivos móveis? [more]

A solução foi simples: Colocar o max-width em 90%.

#content article img { max-width:90%; }

Neste caso, a div #content e o elemento article (HTML5, alguém?) podem ter qualquer largura já que a imagem vai redimensionar automaticamente para 90% deles. Isso significa que se a largura da imagem tiver menos que 90% do tamanho do container ela não será redimensionada. Agora o mais importante: A proporção da imagem não muda, como você pode ver no print do emulador abaixo.

Essa foi a solução perfeita para o meu blog mas também pode ajudar em websites onde não temos controle sobre o tamanho das imagens que se serão publicadas.

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

DBCC Shrink e Fragmentação

Assista um vídeo onde é mostrado como o shrink pode causar fragmentação nos índices do banco

Posted in Dicas, SQL Server

Já tem um tempo que eu quero fazer um post de SQL Server aqui no blog. O único problema é que eu praticamente só sei fazer o básico já que meu forte é ASP.NET. Logo, vou deixar SQL com quem sabe. :)

Neste vídeo o Robert, que além de meu amigo é MCT (Microsoft Certified Trainer) na Ka Solution, fala sobre como o shrink pode causar fragmentação nos índices do banco.

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network:

Como criar uma lista de fuso horários em C#

Veja como é fácil criar uma lista de fuso horários!

Posted in Dicas, C#

Suponhamos que você está desenvolvendo um sistema que requer que o usuário tenha que escolher qual o fuso horário em que ele está. Agora imagine que você tenha que adicionar 40 fusos em um dropdownlist manualmente.

A não ser que você precise de ter uma lista de fusos dentro do banco de dados você pode usar o seguinte código:

public static IEnumerable<SelectListItem> TimeZoneCollection
{
	get
	{
		return new SelectList(TimeZoneInfo.GetSystemTimeZones()
			.Select(q => new SelectListItem
						{
							Text = q.DisplayName,
							Value = (q.DisplayName.Substring(0, 5) != "(UTC)") ? q.DisplayName.Substring(4, 3) : "0"
						}
 
				    ), "Value""Text");
	}
}

Agora é só dar bind no dropdownlist e voilà.

P.S.: Caso você melhore o código me avise. :)

Did you like the article?

You can subscribe and get them as soon they are online, share using the buttons bellow or leave a comment.

And you also can share using your favorite social network: