MSDN.com | MSDN Brasil
imagem de enfeite imagem de enfeite

Blog

RSS [ Visitar Blog ]

Diferenças entre WPF e XBAP
30/1/2007 05:16:00
Eis aqui uma lista muito interessante com as diferenças entre WPF e XBAP.
Não é possível agradar a todos :(
26/1/2007 13:13:00

[ O Insatisfeto ]

Pq não tira esse site do ar. Fica se achando o projetista, mas não consegue deixar nem esse site no ar.

[ Minha Resposta ]

Olá  XXX,

Em primeiro lugar, para que você fique sabendo, o site fica em um host e o SQL Server em outro. Eu tenho contrato com o serviço de host e ele terceiriza o uso da base de dados de outro host. Sendo assim, se algum problema acontecer, eu não consigo fazer nada, a menos reclamar, pois não tenho nenhum acesso a Infraestrutura.

Em segundo lugar, eu não tenho obrigação nenhuma de deixar o site no ar. Quando eu bem entender eu arranco sem precisar dar satisfação a ninguém, muito menos a pessoas como você. Meu gasto anual com este site gira em torno de R$ 700,00, mas como eu tenho um salário muito bom, isso não tem nenhum impacto negativo no meu orçamento. Além disso, eu disponibilizo os artigos que escrevo justamente porque eu gosto de compartilhar conhecimentos. Há muitas pessoas que me enviam e-mail agradecendo imensamente pela contribuição que faço, sem ter nenhum retorno financeiro.

Finalmente, eu nunca me achei um projetista/arquiteto. No entanto, quando alguém me pergunta a minha profissão eu digo que sou programador. Talvez você não saiba diferenciar as coisas.

Sinceramente, eu te peço desculpas pelo site não estar no ar e agradeço a crítica. Isso será levado a direção do serviço de hospedagem. É mesmo uma falha na infraestrutura que, como eu disse acima, não tenho acesso a mesma. Isso não aconteceu só hoje. Há algum tempo atrás eu passei por isso e, alguns usuários que notaram o problema, educadamente me comunicaram e, pouco tempo depois, foi resolvido. A única coisa que não concordo é que venha com pedras nas mãos atirando, sem ao menos conhecer o problema e, principalmente, a finalidade para qual se destina o site.

Tão ruim e mal projetado. Afinal, o que fazia ali?

Novo WTF!
9/1/2007 18:11:00

Eu encontrei um novo WTF:

try
{
    using (cnn)
    {
        cnn.Open();
        cmd.ExecuteNonQuery();
    }
}
finally
{
    cnn.Close();
}

Eu acredito que não preciso explicar porque o código acima é considerado um WTF, ou preciso?

Lugar comum em inovação
7/1/2007 15:53:00
Aqui um post muito bacana...
Contrato entre ASPX e ASCX
3/1/2007 14:06:00

Nas versões anteriores do ASP.NET quando ainda não existia essa forma de compilação que é utilizada no ASP.NET 2.0, era facilmente possível dentro de um User Control (ASCX) invocar um método que está dentro de uma página ASPX, pois era somente fazer o cast da propriedade Page para o tipo da página e invocar o método desejado. Isso ainda tinha alguns problemas, já que o User Control nem sempre estaria em uma página que poderia ter o método implementado.

Com a nova forma de compilação do ASP.NET 2.0, fica difícil fazer o cast para o tipo da página, pois o nome somente será criado na compilação, ou seja, em design-time não conhecemos o tipo ainda. Se não estiver utilizando o Web Application Project (WAP) e quer ter essa possibilidade, então terá que criar um contrato (algo que já teria que ter feito nas versões anteriores :)) através de uma Interface. Esta Interface voce deverá implementá-la somente as páginas ASPX que deseja que o User Control invoque o(s) respectivo(s) método(s). Abaixo está o exemplo:

public interface IConnection
{
    void ExecuteProcedure();
}

public partial class _Default : System.Web.UI.Page, IConnection
public partial class Default2 : System.Web.UI.Page

[ ASCX ]
IConnection connection = this.Page as IConnection;
if (connection != null)
    connection.ExecuteProcedure();
else
    Response.Write("The Page container isn't a IConnection type!");

Como podem reparar, a página Default.aspx implementa a Interface e a Default2.aspx não. Finalmente, dentro do UserControl, fazemos o cast para IConnection com o operador as que, se não for um tipo compatível retornará nulo. Se estiver utilizando o Visual Basic .NET 2005, então ao invés de as, utilize o operador TryCast, que tem a mesma finalidade.

WTF!
12/12/2006 14:08:00
Um típico WTF :)

Public Sub New(ByVal str As String)
    If (str = String.Empty Or str = Nothing Or String.IsNullOrEmpty(str) Or Len(str) = 0) Then
        str = ""
    End If
    Me._str = str
End Sub
WPF/E
8/12/2006 00:51:00

Lendo os blogs de costume, encontrei um post bem interessante onde o autor mostra como definir as templates de projeto para criarmos projetos WPF/E. Atentem-se aos detalhes para a instalação, pois o mesmo requer dois outros add-in, como é mostrado no post.

TechEd Brasil
5/12/2006 14:16:00

Depois do TechEd Brasil, voltamos a rotina. O evento foi bastante produtivo, tivemos palestras com pessoas da própria Microsoft, apresentando várias novidades no que diz respeito ao desenvolvimento de aplicações utilizando .NET Framework 3.0, abordando WPF, WWF (Lego :)) e WCF.

Particularmente eu me dediquei a conhecer as novas tecnolgias W*, mais especificamente o WCF. A nível de comunidades, tivemos um contato bem próximo com o pessoal do MSDN Brasil e TechNet, onde pudemos discutir melhorias para os respectivos sites.

Além disso, antes de iniciar o TechEd, tivemos uma reunião com os MVPs brasileiros, onde pude renovar o contato e conhecer alguns outros que entraram recentemente no programa e ainda não os conhecia. Neste mesmo dia, durante o almoço tive o prazer de sentar na mesma mesa que Sean O'Driscoll, que é o Global Director para o programa MVP/Support Services. Neste mesmo dia tivemos a notícia que o Visual Studio .NET 2005 ganhou o prêmio INFO de melhor ferramenta de desenvolvimento.

E para finalizar, olhem para onde caminhamos... :)

HTTP Pipeline - Performance
22/11/2006 03:56:00

Finalizando a leitura do livro do Luis Abreu, no último capítulo ele aborda o ciclo de vida de uma página ASP.NET e lembrei de um detalhe de performance que podemos aplicar nas aplicações ASP.NET com relação aos HttpModules e que implementei no site Projetando.NET.

No arquivo machine.config existe uma seção chamada httpModules onde temos vários módulos que, por padrão, estão relacionados para serem executados durante a requisição; aqui estão alguns exemplos: OutputCache, Session, FormsAuthentication, etc. Mas nem sempre esses módulos são utilizados na aplicação e, se este for o caso, podemos optar por remove-los da aplicação, efetuando a seguinte configuração no arquivo Web.Config:

<httpModules>
    <remove name="Session" />
    <remove name="WindowsAuthentication" />
    <remove name="FormsAuthentication" />
    <remove name="PassportAuthentication" />
    <remove name="UrlAuthorization" />
    <remove name="FileAuthorization" />
</httpModules>

System.Collections.Generic.HashSet
10/11/2006 14:36:00

Bem, felizmente o time da BCL (Base Class Library) trabalha em um tipo de coleção chamado (temporariamente) de HashSet, que é uma coleção de elementos únicos, ou seja, sem a possibilidade de incluir elementos repetidos. Essa coleção tem seu próprio método Add que retorna um valor booleano indicando se o item foi ou não adicionado.

Enquanto não temos disponível essa coleção, podemos optar pelo uso da PowerCollections.Set, criada pela Wintellect.



2005. Projetando.NET.