Desativar Sincronia de Horário Virtual Box

Precisei para alguns testes ficar alterando a data do windows , porém depois de 5 segundos a data voltava para a correta automaticamente. O que não permitia realizar meus testes … =(

Fiquei um tempo tentando entender se o problema era alguma configuração do windows 2008 ou do Virtual box, depois de algumas pesquisas e testes descobri  que era uma configuração do Virtual Box, seguindo as dicas do forum https://forums.virtualbox.org/viewtopic.php?f=2&t=8535&sid=c80cac3ca5ecb3f08e797395a10fab23&start=15 , consegui resolver meu problema.


Sharepoint 2010 – Botão New Web Application – Desabilitado

Primeiro post falando de Sharepoint , farei uma mescla de infra e dev , pois esse é o mundo Sharepoint a mescla dos dois mundos.

Como primeiro post deixo uma dica para o problema abaixo:

Se alguém tiver o mesmo problema a opção 4 funcionou para mim , depois do boot.
http://ddkonline.blogspot.com.br/2011/08/fix-sharepoint-2010-disabled-new-extend.html

Descrição problema
Mesmo depois de conceder as permissões necessárias para usuário , o botão continua desabilitado para usuário diferente de administrator.

Computadores e Notebooks Itautec

Para quem esta precisando comprar um note ou pc de qualidade com menos de mil reais, envie um email que farei cadastro no site da itautec onde você poderá comprar com super descontos.

Acesse o link : https://www.itautecnet.com.br/Cliente/DefaultCliente.aspx?User=47649 para ver as ofertas, caso tenha interesse basta efetuar o cadastro e comprar.

Se precisar de ajuda para escolher um modelo me envie um email que ajudarei.

Email: marcelo@akamaetech.com
Assunto: Promoções Itautec

JavaScript – Pegar Resolução do Segundo Monitor

Esses dias tive necessidade de fazer um desenvolvimento para detectar a resolução do monitor do usuário e realizar algumas customizações na tela.

Teoricamente uma tarefa super simples, porém nem tudo que parece é …  pro meu azar nesse caso …. via javascript você só consegue pegar a resolução do monitor principal então quando o usuário usa o modo estendido de monitor, não é possível pegar a resolução do monitor secundário com screen.width e screen.height … ainda tentei pesquisar chorar mas não tem jeito … com js não é possível hoje  “2012”…

Depois de pensar um pouco comecei a bolar uma solução alternativa … embora ele não me retorne a resolução ele me retorna a posição correta dos elementos =) … logo a solução foi ..

Via js crio uma div e posiciono a mesma no canto direito inferior , usando position:fixed com bottom: 0px e right:0px , depois via js eu pego a posição real top e left.

Isso me da areá total visível da pagina  o que é menor que a resolução, mas o necessário para minha customização.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;

<html xmlns=”http://www.w3.org/1999/xhtml” &gt;
<head>
    <title>Untitled Page</title>
</head>
<body>
<div style=”width:auto;height:auto;background-color:red;”>
teste
</div>

<script language=”javascript” type=”text/javascript”>

    try {

    var divResolucao = document.createElement(“div”);

    document.body.appendChild(divResolucao);

    divResolucao.setAttribute(“style”, “position:fixed;bottom: 0px; right:0px;width: 10px;
height:10px;background-color:red”);

    alert(divResolucao.offsetLeft + ‘ – ‘ + divResolucao.offsetTop);

} catch (e) {

alert(e);
}

</script>

</body>
</html>

Evite problema com Enums em WebServices ou WCF

Os famosos enums são muito bem vindos dentro da própria aplicação , mas no caso de webservices ou wcf temos um problema que ao gerar o proxy temos os valores validos para o enum, então mudar o serviço requer atualizar o proxy do cliente que consome.

Se o parametro é de entrada o problema é menor , mas se for um retorno não atualizar o proxy irá causar exception para novos valores.

Referência: http://www.25hoursaday.com/weblog/2005/08/31/WhyYouShouldAvoidUsingEnumeratedTypesInXMLWebServices.aspx

Transformar XML em Classe .Net

Esses dias estava querendo pegar um resultado de um webservice externo e trasnformar o xml no formato do meu objeto externo, essa parte fiz usando xslt sem problema. Feito isso eu queria gerar minha classe a partir do meu xml destino sem precisar fazer na mão =).

Uma rapida pesquisa encontrei no link abaixo a solução

http://stackoverflow.com/questions/4999928/i-want-to-convert-this-xml-to-c-sharp-code

A resposta que utilizei foi usar o xsd.exe para primeiro gerar o xsd do xml e depois usar xsd.exe para do xsd gerar minha classe =) … economizei umas 3 horinhas pelo menos =)

Usando Extensions e matando IF =)

Algum tempo atraz precisei desenvolver uma função para retornar o signo de uma pessoa com base na data de nascimento.

Poderia criar um classe com um metodo que passaria uma data e receberia uma string com o Signo , mas confesso que sou muito preguiçoso =)

Então resolvi criar um Extension metodo para extender DateTime, além disso resolvi bolar uma solução que não utilizasse Ifs “só sobrou um =)” :

Para eliminar if resolvi criar um list e depois utilizar linq para pesquisar na coleção.

public static class DateObjectExtensions
    {

        class SignoMesDia
        {
            public Int16 Mes { get; set; }
            public Int16 DiaInicio { get; set; }
            public Int16 DiaFim { get; set; }
            public string Signo { get; set; }

            public SignoMesDia(Int16 _Mes, Int16 _DiaInicio, Int16 _DiaFim, string _Signo)
            {
                Mes = _Mes;
                DiaInicio = _DiaInicio;
                DiaFim = _DiaFim;
                Signo = _Signo;

            }


        }

       

        public static string ToSigno(this DateTime DataNascimento)
        {
            string signo = "Não Reconhecido";

            List<SignoMesDia> signos = new List<SignoMesDia>();

            signos.Add(new SignoMesDia(1, 1, 21, "Capricórnio"));
            signos.Add(new SignoMesDia(1, 22, 31, "Aquário"));
            signos.Add(new SignoMesDia(2, 1, 18, "Aquário"));
            signos.Add(new SignoMesDia(2, 19, 31, "Peixes"));
            signos.Add(new SignoMesDia(3, 1, 19, "Peixes"));
            signos.Add(new SignoMesDia(3, 20, 31, "Áries"));
            signos.Add(new SignoMesDia(4, 1, 20, "Áries"));
            signos.Add(new SignoMesDia(4, 21, 31, "Touro"));
            signos.Add(new SignoMesDia(5, 1, 20, "Touro"));
            signos.Add(new SignoMesDia(5, 21, 31, "Gêmeos"));
            signos.Add(new SignoMesDia(6, 1, 20, "Gêmeos"));
            signos.Add(new SignoMesDia(6, 21, 31, "Câncer"));
            signos.Add(new SignoMesDia(7, 1, 21, "Câncer"));
            signos.Add(new SignoMesDia(7, 22, 31, "Leão"));
            signos.Add(new SignoMesDia(8, 1, 22, "Leão"));
            signos.Add(new SignoMesDia(8, 23, 31, "Virgem"));
            signos.Add(new SignoMesDia(9, 1, 22, "Virgem"));
            signos.Add(new SignoMesDia(9, 23, 31, "Libra"));
            signos.Add(new SignoMesDia(10, 1, 22, "Libra"));
            signos.Add(new SignoMesDia(10, 23, 31, "Escorpião"));
            signos.Add(new SignoMesDia(11, 1, 21, "Escorpião"));
            signos.Add(new SignoMesDia(11, 22, 31, "Sagitário"));
            signos.Add(new SignoMesDia(12, 1, 21, "Sagitário"));
            signos.Add(new SignoMesDia(12, 22, 31, "Capricórnio"));




            var resposta = (from s in signos where s.Mes == DataNascimento.Month && DataNascimento.Day >= s.DiaInicio && DataNascimento.Day <= s.DiaFim select s).FirstOrDefault();

            if (resposta != null)
                signo = resposta.Signo;



            return signo;

        }}

 

 

 

Validação Genérica com Reflection X Exception

Estava dando manutenção em um código que basicamente validava 30 campos com a seguinte regra.

Se o campo for vazio passar nulo para a procedure
Senão for validar se o campo é do tipo esperado (DateTime, Numeric, etc).

Basicamente o código era igual ao abaixo para cada campo.

string valor = “20/01/01”;
DateTime? data = null;
DateTime dataTemp;

if( (!string.IsNullOrEmpty(valor)) && DateTime.TryParse(valor, out dataTemp))
{
data = new Nullable<DateTime>(dataTemp);
}

Então resolvi cria uma função genérica e fazer testes de performance, para verificar qual solução implementar na solução. Veja as opções , ambas bem extensas =)

static bool TryParseException<T>(string text, out T value)
{

value = default(T);

try
{

value = (T)Convert.ChangeType(text, typeof(T));

return true;

}

catch
{

return false;

}

}

public static bool TryParseReflection<T>(string input, out T value) where T : struct
{
var type = typeof(T);
value = default(T);
var method = type.GetMethod(
“TryParse”,
new[] { typeof(string), Type.GetType(string.Format(“{0}&”, type.FullName)) });

return (bool)method.Invoke(null, new object[] { input, value });
}

Para os campos com valores compativeis com o tipo esperado a versão com Exception foi mais rápida, claro que era esperado porque com o valor esta no formato esperado não é disparada nenhum exception. Comparativo para 30 campos (0,015 s X 0.062 s)

Agora quandos os valores não são compativeis a versão que usa Reflection é infinitamente mais rápida. Comparativo para 30 campos (0,003 s X 1.5 s)

Pelos meus testes é bem mais interessante utilizar a versão com Reflection, pois mesmo quando é mais lenta é uma diferença que um usuário não perceberá a diferença.

Claro que se você for processar milhões de registros e 99.99% for o tipo correto seja mais interessante utilizar a versão com Exception =)