quinta-feira, 16 de fevereiro de 2017

[ Tutorial ] Como criar uma aplicação com ASP.NET MVC 5

Olá tudo bom?
Eu criei esse tutorial para demonstrar a criação de uma aplicação web com ASP.NET MVC 5. Seguindo esse tutorial você verá como criar um catálogo de livros, utilizando as seguintes tecnologias e ferramentas:
  • Asp.Net MVC 5
  • jQquery
  • jquery Bootgrid,
  • jQuery Validation
  • Bootstrap
  • Toastr
  • Numeral
  • Entity Framework
  • LINQ +  Dynamic LINQ
  • Nuget
  • Custom Model Binder
  • Data Annotations
  • F12 Developers Tools
Tudo isso aplicando conceito de aplicação orientada a dados criando o famoso CRUD.


sábado, 28 de março de 2015

Cross-Browser – Imagens no Lugar de Flash

Estava mostrando um site que eu realizei um trabalho para um amigo e me deparei com um espaço em branco bem grande no site. Na hora eu achei que o Pop-Up que eu criei de propagando estava dando problemas no layout do site, mas não demorei a perceber que o problema era outro: O navegador Safari do Iphone não roda Flash (existem forma de rodar flash no IOS, mas não vou falar delas aqui).

Fazer um Check-List para o Front-End é a melhor forma de evitar esses problemas, vou fazer uma pra vocês depois, porem hoje eu quero falar de imagens como background.

Imagine um processo retroativo em 3 etapas (contando com o flsh daria 3):

<div class="CorDeFundo">
   <div class="ImagemDeFundo">
      <div class="Flash">
      </div>
   </div>
</div>


Funciona assim: Meu Flash > Se não houver flash vai ser Minha Imagem > Se não houver imagem vai ser Cor de Fundo.

Como eu vou me prolongar na explicação da imagem com flash, vai aqui a dica: “Sempre use uma cor de fundo e um tamanho definido (width e height) caso sua imagem não apareça!”. É uma técnica padrão para não deixar espaços esquisitos ou quebrar o layout do site caso a imagem não abra (ou enquanto a imagem AINDA não abriu).  

Ao ponto negativo: querendo ou não o usuário vai baixar a imagem, tendo ele flash ou não (em geral ele vai baixar o flash também, apenas vai dar erro na hora de abrir, mas o download será feito de qualquer jeito). Isso é ruim pois o usuário está consumindo banda do site para o download de uma imagem que ele não verá caso tenha flash e ele mesmo se tiver usando dados moveis com limite de download diário baixará uma imagem desnecessária.

Acredito que muitos vão dar dicas com Javascript e Media Queries com CSS, mas eu gostaria de desencorajar você a fazê-lo.
Primeiro, usando javascript em um smarthphone mais antigos faz com que ele fique mais lerdo, independente da complexidade do código, pior ainda se você fizer em Jquery, e existe um problema maior ainda, já vi diversas vezes um link para um site ser postado na linha do tempo de alguém em uma rede social e só aparecer o texto padrão do site e não aparecer a imagem, ou seja, em muitos lugares não irá aparecer NENHUMA imagem bonitinha do site porque o site não abre javascript (por questões de segurança, imagino eu). “Ah, mas existem meta tag’s especificas dessas redes sociais para mostrar imagens quando você posta na sua linha do tempo!”...  Ok, sua ideia é válida e funcional, mas você terá sempre um trabalho gigantesco. Ponha em uma balança o custo benefício e se valer a pena faça-o.
Segundo, CSS Media Queries é uma opção que funciona para uns e não funciona para outros, em geral quando você uma um media querie e define uma imagem como background-image, boa parte dos navegadores (em suas versões mais atualizadas) não irão baixar a tal imagem, mas estamos falando de substituir o flash. Você talvez consigo fazer de forma eficiente uma media querie para um navegador em especifico e assim inserir uma imagem em background. Aqui vale o mesmo que eu falei usando javascript, em alguns lugares isso não vai funcionar porque o sistema que lê o site procurando imagens para adiciona-las automaticamente vai ter outro resultado (o inverso do desejado pela sua media query) e também não vai abrir flash.

Resumindo, para abranger “quase” todos os navegadores é melhor sacrificar um pouco da banda do servidor e do cliente, e você, programador, terá menos trabalho (Lembre-se “Menos é Mais”).

Essa foi mais uma dica de Front-End de Renan Rolo.
Até a próxima!

terça-feira, 17 de março de 2015

Entity Framework - Parte 02 - Estratégias de uso

Oi pessoal, tudo bom? Agora apresentarei as estratégias de uso do Entity Framework, não existe "A" forma correta, existe aquela que atende melhor a depender da situação. Vou demonstrar cada uma delas em vídeos para que você como desenvolvedor possa avaliar e tirar suas conclusões.

Para quem não viu a Parte 1, segue aqui.

Existe basicamente três estratégias de utilizar o Entity Framework:

Database First



Nesse modelo, você utiliza o Entity Framework (EF) designer através do Visual Studio para gerar automaticamente o modelo de dados que consiste nas classes e propriedades que correspondem respectivamente, as tabelas e campos do banco de dados. As informações das estruturas de dados do seu banco, do seu modelo conceitual, bem como o mapeamento fica registrado no arquivo edmx, ele na verdade é um arquivo XML. Apesar de ser um arquivo XML, não se preocupe, o EF designer fornece um editor gráfico para editar e visualizar o edmx.

Model First

Caso você não tenha o banco de dados, você pode começar criando o modelo conceitual diretamente pelo EF designer, no Visual Studio, criando primeiro o edmx. Dessa forma você primeiro cria a modelagem no EF designer e depois pode gerar o script DDL (data definition language) para criar o bando a partir da modelagem que você fez. Assim como no Database First todo o mapeamento fica armazenado no xml do arquivo edmx.

Code First

Essa estratégia pode ser utilizada caso você já possua um banco ou não. Dessa forma você utiliza do Entity Framework sem o designer e sem o arquivo edmx para armazenar o mapeamento, aqui é sangue no olho.
Se você não tem o banco ainda, você pode codificar as classes e propriedades em C# que corresponda as tabelas e as colunas. Se você já tem o banco de dados você pode usar uma ferramenta do Entity Framework para gerar as classes e propriedades que correspondem as tabelas e colunas existentes.
Você pode estar se perguntando: "Onde fica o mapeamento?". O mapeamento entre as classes e tabelas é feito por convenções de nomenclatura ou utilizando uma API de mapeamento, nós veremos tudo isso em vídeo.
Caso de você deixe a estratégia Code First criar as tabelas, será possível também automatizar o processo de deploy do banco de dados utilizando Code First Migrations. Com Migrations podemos automatizar também o deploy quando precisamos mudar o modelo de dados.

Agora que já conhecemos as estratégias de uso o Entity Framework, será possível apresentar para você em vídeo cada uma delas. Fique ligado!

Para quem não viu a Parte 1, segue aqui.

Fonte: MSDN Library (en-US)

terça-feira, 24 de fevereiro de 2015

Entity Framework - Parte 1 - Mais por menos

Oi pessoal, estou devendo um post sobre o Entity Framework tem um tempo. Então vamos nessa!

Antes de mais nada um pouco de conceito. O Entity Framework (EF) é um mapeador objeto relacional (ORM - Object Relacional mapper, sigle em inglês), e o que significa isso? Significa que o papel do EF é mapear uma classe com uma ou mais tabelas no banco de dados, permitindo dessa forma que o desenvolvedor trabalhe com as classes e o EF reflita aquilo no banco de dados, sem a necessidade do programador escrever os SELECTs, UPDATEs, INSERTs e DELETEs.

Da forma tradicional como seria feito um método que retorna uma lista de uma dada classe preenchida? Vamos ao passos:
  1. Criar um objeto que representa uma conexão.
  2. Criar um objeto que representa o comando a ser executado no banco.
  3. Abrir a conexão
  4. Executar o comando
  5. Criar um objeto da lista que você pretende retornar
  6. Iterar o resultado
    1. Obter cada coluna do resultado 
    2. Criar um objeto e preencher ele
    3. Colocar o objeto na lista
  7. Fechar conexão
  8. Retornar lista
Isso equivaleria ao código mais ou menos assim, caso você esteja usando SQL Server:

1:  public List<Category> ObterCategorias()  
2:  {  
3:    SqlConneciton conexao = new SqlConneciton(@"data source=(local); initial catalog=northwind; user id=teste; password=teste;");  
4:    SqlCommand comando = new SqlCommand("select * from categories", conexao);  
5:    List<Category> categorias = null;  
6:    Category categoria = null;  
7:    try  
8:    {  
9:      conexao.Open();  
10:      SqlDataReader reader = comando.ExecuteReader();  
11:      categorias = new List<Category>();  
12:      if (reader != null)  
13:      {  
14:        while (reader.Read())  
15:        {  
16:          categoria = new Category();  
17:          //fiz apenas uma propriedade  
18:          // mas essa linha seria repetida para  
19:          // cada coluna retornada pela query  
20:          categoria.Name = reader["Categoryname"].ToString();  
21:          categorias.Add(categoria);  
22:        }  
23:        reader.Close();  
24:      }  
25:    }  
26:    catch (Exception)  
27:    {  
28:      throw;  
29:    }  
30:    finally  
31:    {  
32:      conexao.Close();  
33:    }  
34:    return categorias;  
35:  }  


Se você ainda usa essa forma eu posso imaginar que você tem um motivo muito forte ou gosta de sofrer. Risos.

Vamos ao mesmo exemplo com Entity Framework:

1:  public List<Category> ObterCategorias()  
2:  {  
3:    NorthwindEntities northwindEntities = new NorthwindEntities();  
4:    return northwindEntities.Categories.ToList();   
5:  }  

Vamos agora fazer um minuto de silêncio para refletir sobre quanto tempo pode ser economizado e gastar tempo com o código de negócio e não de puro acesso a dados. Nessas duas únicas linhas o EF basicamente a mesma coisa do exemplo anterior exceto o try/catch que eu tirei para te deixar mais impressionado.
Além do Oracle e do SQL Server o EF suporta vários outros bancos que você pode ver nessa lista.
Na próxima parte vou apresentar a maneiras como Entity Framework consegue mapear as classes para as tabelas e depois fazer uma aplicação simples para consolidar o conhecimento. Fique ligado aqui!

quinta-feira, 19 de fevereiro de 2015

Free eBooks: Xamarin e Microsoft Azure

Olá tudo bom?

Essa dica é para quem está atrás de um bom material para começar a entender Xamarin e Microsoft Azure. São dois eBooks (en-US) gratuitos:
  • Microsoft Azure Essentials: Fundamentals of Azure
    • Esse é um livro da série "Microsoft Azure Essentials" que tem como objetivo apresentar para os desenvolvedores e profissionais de TI os recursos do Azure. É um livro de fevereiro de 2015, ou seja, muito atual. Você encontra ele nesse link: http://www.microsoftvirtualacademy.com/ebooks#azure além dele você encontra outros livros sobre o Azure, vale a pena!
  • Creating Mobile Apps with Xamarin.Forms, Preview Edition
Além desses livros, na Microsoft Virtual Academy tem muitos livros de graça.

terça-feira, 10 de fevereiro de 2015

Free ASP.NET Hosting

Essa dica é para quem está procurando um lugar para hospedar suas aplicações de graça e não acha.
Esses dois hosts tem opções gratuitas com poucos recursos, mas que podem ser uma ótima pedida para quem busca algo para fazer uma demonstração ou até mesmo praticar o deploy de sua aplicação na internet.

O Somee.com

No www.Somee.com a conta gratuita te entrega os seguintes recursos:
  • 150MB storage, 5GB transfer
  • ASP ASP.Net 1.1/2.0/3.5/4.0/4.5
  • 15MB MSSQL 2008R2/2012/2014
  • Free third level domain
  • FTP acces 
A grande vantagem dele é que você pode usar MVC 5 e o bando de dados é o SQL Server 2014. O contratempo é que ele colocar um banner no rodapé da sua página com a propaganda dele, mas como eu disse para praticar ou fazer uma demonstração é uma boa pedida.

O AppHarbor.com

Não achei no site do www.AppHabor.com informações sobre os recursos que ele disponibiliza na conta gratuita chamada de CANOE, diz apenas que oferece um 1 Work Unit.
  • 1 worker unit
  • apphb.com hostname
  • Piggyback SSL
Uma característica que achei legal é a integração GitHub, Bitbucket, CodePlex. Dessa forma você pode hospedar seu código utilizando um desses serviços e fazer o deploy sem o Visual Studio. Mais informações você pode ver aqui https://appharbor.com/page/how-it-works.

quinta-feira, 29 de janeiro de 2015

Workshop gratuito em Salvador

Amanhã workshop gratuito na SeniorLabs para falar sobre carreiras, certificações e tecnologias Microsoft em Salvador. Inscreva-se, vem nos conhecer! http://www.seniorlabs.net.br/workshop/inscricao.html