quinta-feira, 29 de abril de 2010

Não me faça pensar

"O livro é uma verdadeira obra-prima de como explicar a aplicar conceitos de usabilidade da forma mais simples, rápida e eficiente possível. Enquanto Jakob Nielsen vai a fundo nos detalhes técnicos e científicos da usabilidade, Steve Krug usa uma abordagem de bom-senso e consegue transmitir os ensinamentos de uma forma agradável e bastante divertida."

Quem trabalha com Internet ou Sistemas para internet, ler esse livro é quase uma OBRIGAÇÃO!

Sem mais meritíssimo

Dicas e truques para ASP.NET

http://blogs.msdn.com/webdevelopertips/default.aspx?p=5

segunda-feira, 19 de abril de 2010

NHibernate vs. Entity Framework 4.0

This is a question that I get very frequently, and I always tried to dodged the bullet, but I get it so much that I feel that I have to provide an answer. Obviously, I am (not so) slightly biased toward NHibernate, so while you read it, please keep it in mind.
EF 4.0 has done a lot to handle the issues that were raised with the previous version of EF. Thinks like transparent lazy loading, POCO classes, code only, etc. EF 4.0 is a much nicer than EF 1.0.
The problem is that it is still a very young product, and the changes that were added only touched the surface. I already talked about some of my problems with the POCO model in EF, so I won’t repeat that, or my reservations with the Code Only model. But basically, the major problem that I have with those two is that there seems to be a wall between what experience of the community and what Microsoft is doing. Both of those features shows much of the same issues that we have run into with NHibernate and Fluent NHibernate. Issues that were addressed and resolved, but show up in the EF implementations.
Nevertheless, even ignoring my reservations about those, there are other indications that NHibernate’s maturity makes itself known. I run into that several times while I was writing the guidance for EF Prof, there are things that you simple can’t do with EF, that are a natural part of NHibernate.
I am not going to try to do a point by point list of the differences, but it is interesting to look where we do find major differences between the capabilities of NHibernate and EF 4.0. Most of the time, it is in the ability to fine tune what the framework is actually doing. Usually, this is there to allow you to gain better performance from the system without sacrificing the benefits of using an OR/M in the first place.
Here is a small list:
  • Write batching – NHibernate can be configured to batch all writes to the database so that when you need to write several statements to the database, NHibernate will only make a single round trip, instead of going to the database per each statement.
  • Read batching / multi queries / futures – NHibernate allows to batch several queries into a single round trip to the database, instead of separate roundtrip per each query.
  • Batched collection loads – When you lazy load a collection, NHibernate can find other collections of the same type that weren’t loaded, and load all of them in a single trip to the database. This is a great way to avoid having to deal with SELECT N+1.
  • Collection with lazy=”extra” – Lazy extra means that NHibernate adapts to the operations that you might run on top of your collections. That means that blog.Posts.Count will not force a load of the entire collection, but rather would create a “select count(*) from Posts where BlogId = 1” statement, and that blog.Posts.Contains() will likewise result in a single query rather than paying the price of loading the entire collection to memory.
  • Collection filters and paged collections  - this allows you to define additional filters (including paging!) on top of your entities collections, which means that you can easily page through the blog.Posts collection, and not have to load the entire thing into memory.
  • 2nd level cache – managing the cache is complex, I touched on why this is important before, so I’ll skip if for now.
  • Tweaking – this is something that is critical whenever you need something that is just a bit beyond what the framework provides. With NHibernate, in nearly all the cases, you have an extension point, with EF, you are completely and utterly blocked.
  • Integration & Extensibility – NHibernate has a lot of extension projects, such as NHibernate Search, NHibernate Validator, NHibernate Shards, etc. Such projects not only do not exists for EF, but they cannot be written, for the most part, because EF has no extension points to speak of.
On the other side, however:
  • EF 4.0 has a better Linq provider than the current NHibernate implementation. This is something being actively worked on and the NH 3.0 will fix this gap.
  • EF is from Microsoft.
Fontes:

Curiosidades e Novidades do Visual Studio 2010

A Microsoft disponibilzou um site que contem informações de todo tipo do visual studio 2010:


Algumas:
  • jQuery to complement Microsoft AJAX functionality.
  • JSONP Support.
  • Session state compression option
  • Auto-start ASP.NET applications.
 tá mais facil que andar pra frente

quarta-feira, 14 de abril de 2010

ASP.NET e Usabilidade

Simplificar, rentabilizar, optimizar, facilitar, melhorar, acelerar são verbos que gravitam em torno do conceito de usabilidade. Mais usabilidade é sinónimo de maior flexibilidade e de maior interacção.


Usabilidade é uma característica daquilo que é utilizável, funcional. É tornar óbvio o óbvio, tendo em conta as necessidades do utilizador e o contexto em que este está inserido.

Acessibilidade significa não apenas permitir que pessoas com deficiências ou mobilidade reduzida participem de atividades que incluem o uso de produtos, serviços e informação, mas a inclusão e extensão do uso destes por todas as parcelas presentes em uma determinada população. (http://pt.wikipedia.org/wiki/Acessibilidade).

Usabilidade é um termo usado para definir a facilidade com que as pessoas podem empregar uma ferramenta ou objeto a fim de realizar uma tarefa específica e importante. A usabilidade pode também se referir aos métodos de mensuração da usabilidade e ao estudo dos princípios por trás da eficiência percebida de um objeto.
(http://pt.wikipedia.org/wiki/Usabilidade).

Textos e links
Os textos devem ser o mais claro e objetivo possível, evitando que o usuário perca tempo com palavras desnecessárias. Os links devem ter cores diferentes do resto do texto, preferencialmente o azul que é o padrão para links quando não são formatados. Ao escolher a fonte deve-se procurar usar fontes padrão e de tamanho suficientemente bom para qualquer usuário.

Migalhas pelo chão
Deve-se procurar fazer com que o usuário possa sempre voltar a página anterior. Exibir um botão que permita ao usuário volte a página é de fundamental importância, isso evita que o usuário se perca em seu site.

Todo poder ao usuário
Isso quer dizer que sem visitas seu site não tem motivos para existir, por tanto cuide para que seus usuários sempre voltem. Como nas leis de mercado “O cliente tem sempre razão”, nas leis de usabilidade “O usuário tem sempre razão”.

Fast as a Shark
Suas páginas devem ser leves e rápidas, na internet conta mais uma página rápida que uma bonita, confiavel que moderna, simples que complexa.
Bem vou parando por aqui, pois caso o contrário eu já estaria partindo para um caminho contrário do que eu escrevi neste post. Caso queira comentar, elogiar ou criticar fique a vontade, como disse anteriormente a casa é sua, você é o único motivo deste site existir. E é claro Volte sempre.

Para ASP.NET:

O Asp.net possui diversos recursos que permitem ao desenvolvedor aumentar a acessibilidade, usabilidade e aderir ao web standard, porém, muitas vezes por desconhecimento o desenvolvedor não utiliza desses recursos.
Segue abaixo uma descrição de dois controles: asp:label e asp:literal que possuem recursos e uso que aderem ao web standard.

Controle: label
Uso: Juntamente com campos de formulários para identificar qual dado deve ser preenchido no campo.
Recursos web standard:
  • AssociatedControlId: Necessário para identifica a qual campo este label se refere. Utilize-o para que ao clicar no label, o cursor de texto seja exibido no campo correspondente.
  • AccessKey: Necessário para prover uma tecla de acesso ao campo que este label se refere. Utilize-o para que o usuário que está utilizando um leitor de tela tenha sempre um acesso a todos os campos do seu formulário.
Controle: literal
Uso: Em todo local onde será inserido texto puro. Seja este dinâmico ou estático e não o label.

Recursos web standard: Na verdade este controle não possui um recurso web standard pois nem mesmo é renderizado na tela, apenas seu conteúdo. Isto faz com que seu código não tenha span’s desnecessários que ocorreria caso o asp:label fosse usado.

Plus: Ao utilizar o asp:literal por todo seu código é possível se aproveitar de recursos do Asp.net como a Localização. Ex: Após construir uma página, acessar: Tools > Generate Local Resource. Assim automaticamente todos os asp:literal serão transformados em campos em arquivos resources (.resx) e poderam ter seu conteúdo facilmente traduzido para diversas linguagens.

Testes de Usabilidade
Um teste de usabilidade visa medir, quantificar a usabilidade do site. Eis algumas coisas que são passíveis de medir num teste de usabilidade:

1. Tempo que leva a complementar uma tarefa;
2. Tempo que leva a completar a tarefa dois dias mais tarde;
3. Número de enganos por tarefa;
4. Número de enganos por minuto;
5. Número de utilizadores a cometer o mesmo erro.

Para finalizar 

deixamos uma lista com algumas regras que o poderão ajudar a agilizar o
seu site.

  • Colocar o nome e/ou logótipo em todas páginas;
  • Incluir um motor de procura nos sites com mais de 100 páginas;
  • Cabeçalhos e títulos de página simples e sugestivos que traduzam claramente
    o seu conteúdo;
  • Muita informação e pouco texto (concisão);
  • Pôr a informação menos relevante em páginas secundárias com a técnica do
    hipertexto;
  • Utilizar, nas páginas principais, fotografias de produtos em tamanho
    reduzido (thumbnail), associando-lhe depois, um link para uma página
    secundária onde o utilizador possa ver, com mais pormenor, o produto
    desejado e outras características;
  • Associar a cada link um título (link title) para que os utilizadores saibam para
    onde vão ser encaminhados;
  • Garantir a acessibilidade de todas as páginas importantes a utilizadores com
    inaptidões, especialmente aqueles com deficiências de acuidade visual;
  • Actualizar conteúdos e serviços úteis constantemente;
  • Destacar as novidades;
  • Agilizar o carregamento página
  • (páginas que demoram a carregar podem ser abandonadas antes de exibidas);
  • Utilizar tecnologia compatível com a maioria dos computadores 
  • (evitar utilizar tecnologias muito recentes e ainda pouco difundidas.);
  • Manter informação antiga quando relevante;
  • Evitar abuso no uso de propaganda, links e cores;

terça-feira, 13 de abril de 2010

Primeiras Certificações

Caminho 1: Tirar MCTS (Technology Specialist) em diversas áreas:
- MCTS: .NET Framework 3.5, Windows Presentation Foundation Applications
- MCTS: .NET Framework 3.5, Windows Communication Foundation Applications
- MCTS: .NET Framework 3.5, Windows Workflow Foundation Applications
- MCTS: .NET Framework 3.5, Windows Forms Applications
- MCTS: .NET Framework 3.5, ADO.NET Applications
- MCTS: .NET Framework 3.5, ASP.NET Applications

Caminho 2: Tirar MCPD (Professional Developer) em Windows Forms
:
Além da 70-536 que você já fez, tem de fazer mais duas:
- 70-505: TS: Microsoft .NET Framework 3.5, Windows Forms Application Development
- 70-563: PRO: Designing and Developing Windows Applications using Microsoft .NET Framework 3.5

Caminho 3: Tirar MCPD (Professional Developer) em ASP .NET (3.5)
:
Além da 70-536 que você já fez, tem de fazer mais duas:
- 70-562: TS: Microsoft .NET Framework 3.5, ASP.NET Application Development
- 70-564: PRO: Designing and Developing ASP.NET Applications using Microsoft .NET Framework 3.5

Caminho 4: Tirar MCPD (Professional Developer) em Enterprise Applications 3.5
:
Além da 70-536 que você já fez, tem de fazer mais quatro:
- 70-505: TS: Microsoft .NET Framework 3.5, Windows Forms Application Development
- 70-562: TS: Microsoft .NET Framework 3.5, ASP.NET Application Development
- 70-561: TS: Microsoft .NET Framework 3.5, ADO.NET Application Development

- 70-565: PRO: Designing and Developing Enterprise Applications using Microsoft .NET Framework 3.5

 

Fonte: 

sexta-feira, 9 de abril de 2010

Lançamento global do Visual Studio 2010



O Microsoft Visual Studio 2010 será lançado em 12 de abril e você pode estar entre os primeiros a testá-lo em pessoa. Descubra como você pode personalizar seu ambiente de trabalho com o suporte a vários monitores. Crie aplicativos ricos para o SharePoint e a Web. Trabalhe com diferentes versões do .NET Framework numa mesma ferramenta. Elimine o temido problema dos “bugs sem reprodução” com o IntelliTrace e muito mais.

Crie o que puder imaginar, com base nos pontos fortes de sua equipe, e revele novas possibilidades.
  • Os novos protótipos, modelos e ferramentas de design visual permitem que você crie aplicativos inovadores para o Windows e a Web
  • Crie uma visão compartilhada com o SketchFlow como alicerce para criatividade, através do Microsoft Expression® Studio e Team Foundation Server
  • Aproveite as novas oportunidades e os recursos oferecidos pela programação paralela (multi-core) e ferramentas de desenvolvimento na nuvem"

Um único ambiente integrado de desenvolvimento que aprimora suas habilidades e se ajusta ao modo como você trabalha.
  • Complete todo o seu trabalho de codificação, modelagem, teste, depuração e implantação sem sair do ambiente do Visual Studio 2010
  • Use padrões e aptidões existentes para direcionar um número crescente de tipos de aplicativo, incluindo o Microsoft SharePoint® e o Windows® Azure™
  • Trabalhe do seu modo com suporte a vários monitores, extensões de parceiro e um novo editor.

As poderosas ferramentas de teste com recursos de gerenciamento de projeto proativos ajudam você a criar o aplicativo certo da forma correta.
  • Use o novo depurador IntelliTrace para isolar o ponto de falha dentro de um histórico de aplicativo gravado.
  • Fique à frente com as ferramentas de gerenciamento de projeto proativas, incluindo novos relatórios, dashboards e planilhas de planejamento.
  • Saiba se você criou o aplicativo certo da forma correta com as ferramentas de teste manuais e automatizadas.
Referência:
http://www.microsoft.com/visualstudio/pt-br/products/2010/default.mspx

    Ceará.NET - For a Better Code

    Horário: 10 abril 2010 de 8:00 a 12:00
    Local: FIC - Faculdade Integrada do Ceará - Mini-Auditório
    Rua: R. Visc. de Mauá, 1940 Dionísio Torres Fortaleza - CE, 60125-160
    Cidade: Fortaleza/Ceará
    Site ou Mapa: http://www.fic.br/v4/conheca/…
    Telefone: 8791-7275
    Tipo de evento: presencial, técnico
    Organizado por: CEARA.NET

    Encontro promovido visando agregar a comunidade técnica, recursos para o desenvolvimento de softwares, que estimulem tanto uma melhor forma de escrever o seu código, como também apresentar recursos para otimização do tempo de trabalho, sobre a perspectiva do time de desenvolvimento e produtividade (desejada X atingida).


    quarta-feira, 7 de abril de 2010

    Microsoft Chart Controls

    Olá gente, hoje vou falar sobre o Microsoft Chart Controls que foi comprado da empresa Dundas Data Visualization pela Microsoft, mas que ainda é pouco utilizado.

    Primeiro vamos fazer o download do Add-on que está disponivel para a versão 3.5 SP1 do nosso framework ( Ele já vai vir incorporado ao VS2010 )


    Depois de instalado vamos a nossa Aba "Data" no Toolbox do V2008 e dê um Choose items, procure a pasta "Microsoft Chart Controls" no arquivos de programa e instale as bibliotecas. 

    Na aba que você instalou, procure pelo componente Chart e arraste para o form e altere as propiedades como na figura abaixo:



    Quando você arrasta e solta, ele já cria uma estrutura parecida, eu só fiz alterar os nomes e adicionei os DataPoint para esse exemplo.

    Vamos ao nosso CodeBehind da pagina e adicione o seguinte código:


    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    namespace webTesteAPPChart
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                try
                {
                    //================================================
                    // Reparem que está bem básico, apenas para exibirmos os
                    // nossos dados
                    //==================================================
                    if (!Page.IsPostBack)
                    {
                        ChartMV.Series["SeriesMV"].Points[0].YValues.SetValue(1, 0);
                        ChartMV.Series["SeriesMV"].Points[1].YValues.SetValue(10, 0);
                        ChartMV.Series["SeriesMV"].Points[2].YValues.SetValue(50, 0);
                        ChartMV.Series["SeriesMV"].Points[3].YValues.SetValue(5, 0);
                       
                        //================================================
                        //  Onde tem 1,10,50,5 são os valores exibidos
                        //================================================
                    }
                }
                catch (Exception)
                {
                   
                    throw new Exception("Erro na leitura das informações");
                }
             

            }
        }
    }


    Agora  vamos ao resultado Final:



    Ok, foi muito facil, mas na Mundo.NET tem um tutorial muito bom, para uso do chart com Banco de dados. 

    Esse exemplo pode apenas abrir sua mente para utilização do componente. espero ter ajudado de alguma forma!

    terça-feira, 6 de abril de 2010

    Certificação 70-536 - TS: Microsoft .NET Framework - Application Development Foundation



    Links e artigos com o conteúdo da prova
    Nessa relação constam artigos do MSDN, Israel Aece e Macoratti.

    Developing applications that use system types and collections
    Manage data in a .NET Framework application by using .NET Framework system types
    Manage a group of associated data in a .NET Framework application by using collections
    Manage data in a .NET Framework application by using specialized collections
    Implement .NET Framework interfaces to cause components to comply with standard contracts
    Control interactions between .NET Framework application components by using events and delegates

    Implementing service processes, threading, and application domains in a .NET Framework application
    Implement, install, and control a service
    Develop multithreaded .NET applications

    Embedding configuration, diagnostic, management, and installation features into a .NET Framework application
    Embed configuration management functionality into a .NET Framework application
    Manage an event log by using the System.Diagnostics namespace
    Manage system processes and monitor the performance of a .NET application by using the diagnostics functionality of the .NET Framework
    Debug and trace a .NET Framework application by using the System.Diagnostics namespace
    Embed management information and events into a .NET Framework application

    Implementing serialization and input/output functionality in a .NET Framework application
    Serialize or deserialize an object or an object graph by using runtime serialization techniques
    Control the serialization of an object into XML format by using the System.Xml.Serialization namespace
    Implement custom serialization formatting by using the Serialization Formatter classes
    Access files and folders by using the File System classes
    Manage .NET Framework application data by using Reader and Writer classes
    Compress or decompress stream information in a .NET Framework application and improve the security of application data by using isolated storage

    Improving the security of .NET Framework applications by using the .NET Framework security features
    Implement access control by using the System.Security.AccessControl classes
    System.Security.AccessControl Namespace ()
    DirectorySecurity Class (System.Security.AccessControl)
    FileSecurity Class (System.Security.AccessControl)
    FileSystemSecurity Class (System.Security.AccessControl)
    RegistrySecurity Class (System.Security.AccessControl)
    AccessRule Class (System.Security.AccessControl)
    AuthorizationRule Class (System.Security.AccessControl)
    AuthorizationRuleCollection Class (System.Security.AccessControl)
    CommonAce Class (System.Security.AccessControl)
    CommonAcl Class (System.Security.AccessControl)
    CompoundAce Class (System.Security.AccessControl)
    GenericAce Class (System.Security.AccessControl)
    GenericAcl Class (System.Security.AccessControl)
    AuditRule Class (System.Security.AccessControl)
    MutexSecurity Class (System.Security.AccessControl)
    ObjectSecurity Class (System.Security.AccessControl)
    SemaphoreSecurity Class (System.Security.AccessControl)
    Implement a custom authentication scheme by using the System.Security.Authentication classes
    Encrypt, decrypt, and hash data by using the System.Security.Cryptography classes
    System.Security.Cryptography Namespace ()
    DES Class (System.Security.Cryptography)
    DESCryptoServiceProvider Class (System.Security.Cryptography)
    SHA1CryptoServiceProvider Class (System.Security.Cryptography)
    SHA1 Class (System.Security.Cryptography)
    DSACryptoServiceProvider Class (System.Security.Cryptography)
    DSA Class (System.Security.Cryptography)
    HashAlgorithm Class (System.Security.Cryptography)
    TripleDES Class (System.Security.Cryptography)
    RC2CryptoServiceProvider Class (System.Security.Cryptography)
    RC2 Class (System.Security.Cryptography)
    CryptoConfig Class (System.Security.Cryptography)
    CryptoStream Class (System.Security.Cryptography)
    RandomNumberGenerator Class (System.Security.Cryptography)
    MD5CryptoServiceProvider Class (System.Security.Cryptography)
    MD5 Class (System.Security.Cryptography)
    TripleDESCryptoServiceProvider Class (System.Security.Cryptography)
    HMAC Class (System.Security.Cryptography)
    CryptoAPITransform Class (System.Security.Cryptography)
    CspParameters Class (System.Security.Cryptography)
    RijndaelManagedTransform Class (System.Security.Cryptography)
    RijndaelManaged Class (System.Security.Cryptography)
    ProtectedData Class (System.Security.Cryptography)
    ProtectedMemory Class (System.Security.Cryptography)
    AsymmetricAlgorithm Class (System.Security.Cryptography)
    SymmetricAlgorithm Class (System.Security.Cryptography)
    Control permissions for resources by using the System.Security.Permission classes
    Code Access Security
    Code Groups
    Evidence
    Named Permission Sets
    System.Security.Permissions Namespace ()
    SecurityPermission Class (System.Security.Permissions)
    PrincipalPermission Class (System.Security.Permissions)
    Evidence Class (System.Security.Policy)
    FileIOPermission Class (System.Security.Permissions)
    StrongNameIdentityPermission Class (System.Security.Permissions)
    UrlIdentityPermission Class (System.Security.Permissions)
    DataProtectionPermission Class (System.Security.Permissions)
    IsolatedStorageFilePermission Class (System.Security.Permissions)
    IUnrestrictedPermission Interface (System.Security.Permissions)
    SiteIdentityPermission Class (System.Security.Permissions)
    StorePermission Class (System.Security.Permissions)
    ReflectionPermission Class (System.Security.Permissions)
    KeyContainerPermission Class (System.Security.Permissions)
    System.Security.Policy Namespace ()
    PermissionRequestEvidence Class (System.Security.Policy)
    ApplicationTrust Class (System.Security.Policy)
    ApplicationSecurityManager Class (System.Security.Policy)
    ApplicationSecurityInfo Class (System.Security.Policy)
    UnionCodeGroup Class (System.Security.Policy)
    NetCodeGroup Class (System.Security.Policy)
    FirstMatchCodeGroup Class (System.Security.Policy)
    FileCodeGroup Class (System.Security.Policy)
    CodeGroup Class (System.Security.Policy)
    IIdentityPermissionFactory Interface (System.Security.Policy)
    IMembershipCondition Interface (System.Security.Policy)
    IApplicationTrustManager Interface (System.Security.Policy)
    PolicyStatement Class (System.Security.Policy)
    PolicyLevel Class (System.Security.Policy)

    Implementing interoperability, reflection, and mailing functionality in a .NET Framework application
    Expose COM components to the .NET Framework and .NET Framework components to COM
    Implement reflection functionality in a .NET Framework application, and create metadata, Microsoft intermediate language (MSIL), and a PE file by using the System.Reflection.Emit namespace
    Send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery from a .NET Framework application

    Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application
    Format data based on culture information


    Referência: