All posts in Línguagens

Salve, salve galera,

Hoje vamos ver como podemos fazer a configuração do servidor de build do TFS para trabalhar com aplicações em Java.

O primeiro ponto que temos que entender e que gera a maior quantidade de dúvidas quando falamos de build de aplicacões em Java no TFS é que o MSBuild não é o responsável pelo Build propriamente dito. Quem faz esse trabalho são os motores de build (Maven ou Ant), o MSBuild trabalha em conjunto coletando algumas informações e fazendo o meio de campo entre o servidor de Build e as motor (e suas configurações), porém o responsável pelo build são os motores de build (por exemplo Maven ou o Ant). Por que estou dizendo isso ? Existe um grande questionamento ( e aqui não digo apenas da equipe tecnica mas também de gestores, diretores e etc) sobre “o que é possível se fazer no build de aplicações em Java no TFS que me faria adota-lo ?”.

Se adotarmos um template de build padrão, tudo o que fazemos hoje realizando o build manual das aplicações nós conseguimos fazer, basta que esteja tudo configurado (e muito bem configurado). Em alguns cenários de adoção de build de aplicações em Java a equipe já tem tudo configurado no motor, toda a sequência de passos, e etc. Quase tudo (nunca digo tudo, por que sempre temos restrições tecnicas) é aproveitado pelo casamento em motor de build e TFS build.

Mas deixa de “bla-bla-bla” e vamos configurar nosso ambiente.

Read more


Salve, salve galera,

Atualmente temos visto que muitos órgãos do governo e outras entidades tem adotado o envio de documentos digitais, tais como NF-e, CT-e, SPED, etc, visando uma maior eficiência na apuração e identificação de fraudes. Existe um assunto que é comum em todos esses tramites de dados, o arquivo enviado geralmente (não sempre) é um arquivo XML, e na maioria das vezes é um documento assinado digitalmente com o certificado digital do emissor.

Nesse post, vou mostrar de uma maneira bem simplista e prática como assinar o conteúdo de uma TAG XML e adiciona-la ao respectivo arquivo para fazer o envio do mesmo. Vale lembrar pessoal que a forma que vou mostrar aqui utiliza o certificado A1, e é aceito pelos serviços relacionados a NF-e, se existem variantes desse ou se outros órgãos tem outras restrições é uma questão de analise de caso-a-caso.

Bom mais vamos deixar de bla-bla-bla e vamos por a mão na massa.

Read more


Namespaces no JavaScript

Categories: Javascript
Comments: No

Salve, Salve galera,

quando estamos desenvolvendo para web seja qual for a linguagem ou plataforma que utilizamos sempre precisamos interagir de alguma forma com o Javascript para melhorar a interação do usuário, ou para aprimorar algum recurso especifico ou mesmo para fazer alguma “firula” na aplicação, acontece que deixar funções javascript espalhadas pelo código e distribuídas em vários arquivos (isso é, quando estão em vários arquivos) pode gerar um overhead administrativo muito grande, uma forma de melhorarmos isso, principalmente quando trabalhamos com equipes distribuídas e projetos de médio/grande porte é utilizar o recurso de namespaces do javascript, que nada mais é do que um agrupamento de funções e atributos ( cuidado para não chamar o namespace de classe).

Sua utilização é simples e bem prática, porém deve-se atentar ao fato de não carregar as namespaces com blocos desnecessários, e ter em mente sempre que sua finalidade é auxiliar, e caso esteja se tornando muito difícil gerencia-las existe algo errado.

Segue abaixo um exemplo de código simples utilizando namespace no javascript

var FolhaPagamento = {
     calculaAumentoSalario: function(CodigoColaborador) {
     // Implementação…
     },
     retornaFaltasMensais: function(CodigoColaborador) {
     // Implementação…
     },
     DataUltimoCalculo: "00/00/0000",
     QtdColaboradores: 42
}

Agora um exemplo de como consumir essa namespace que criamos.

FolhaPagamento.calculaAumentoSalario(1);
FolhaPagamento.QtdColaboradores = 100 ;

Com isso em mãos, podemos utilizar a imaginação (e o bom senso sempre e as boas práticas)  para organizarmos e otimizarmos nosso código.

Até a próxima pessoal.


Salva, salve galera,

Como bons desenvolvedores que somos sempre precisamos de mais e mais recursos para conseguir desenvolver nossas maravilhosas aplicações, acontece que, nem sempre, recursos e APIs que utilizamos são totalmente documentadas ( e não estou falando de APIs e recursos open ou free e sim PAGOS) e nem encontramos facilmente exemplos na internet.

Acontece que sem essa documentação fica difícil extrairmos o máximo do recurso (não temos ainda bola de cristal para essa atividade), como nem tudo são flores, as vezes precisamos buscar uma forma de “Gerar um documentação” de determinados recursos.

Um dos maiores problemas é descobrir os métodos que temos um determinado objeto para poder usa-lo da melhor maneira (e não reinventar a roda, escrevendo métodos que ele já possui).

O trecho abaixo faz essa tarefa para nós via para objetos javascript.

function getMetodos(objeto) {
  var result = [];
  for (var id in objeto) {
    try {
      if (typeof(objeto[id]) == "function") {
        result.push(id + ": " + objeto[id].toString());
      }
    } catch (err) {
      result.push(id + ": Inacessível");
    }
  }
  return result;
}

E para vermos o seu resultado, chamamos o método:

alert(getMetodos(document).join("n"));

Onde document é o objeto da qual queremos conhecer os métodos.

A imagem abaixo mostra um trechinho do resultado dessa chamada.Resultado getMetodosBom pessoal, espero que esse post ajude vocês em situações de “desespero”.

Até a próxima.


Salve, salve galera,

Muita gente já precisou em algum momento gerar um classe que representasse um schema XML para poder utiliza-la como Model em alguma aplicação. Hoje em dia com a crescente demanda por emissão de documentos fiscais eletrônicos  (NFe, CTe, MDFe) a implementação nos sistemas legados tem se tornado alta.

Porem temos um problema muito grande, o schema XML da NFe por exemplo , tem muitas tags, e tipos complexos, o que demanda muito tempo de escrita de codigo, para minimizar (nao eliminar :D) esse problema, temos um recurso muito interessante no Visual Studio que nos permite criar uma classe apartir de um schema XML. Vamos ver ???

Primeiramente precisamos de um schema XML para trabalhar, nesse caso vou utilizar o schema atual da NFe.

Schema1

Tendo escolhido nosso schema, precisaremos abrir o Prompt de Comando do Visual Studio e nos dirigirmos ate a pasta onde se encontram esses schemas, no meu caso, esta nesse caminho

C:ProgramDataMicrosoftWindowsStart MenuProgramsMicrosoft Visual Studio 2012Visual Studio Tools

Schema2

Agora, para criarmos nossa classe basta utilizarmos o seguinte comando:


xsd.exe xmldsig-core-schema_v1.01.xsd nfe_v2.00.xsd /c

Teremos o seguinte resultado.

Schema3

Agora basta adicionarmos a classe gerada (que fica a principio com o mesmo nome do schema utilizado) e utiliza-la.

Segue um printzinho para termos uma ideia.

Schema4

 

Pessoal de uma maneira bem simples , temos uma classe Model do nosso schema, lembrando que, poderemos ter diferenças de funcionamento a cada conteúdo de schema (tipos complexos, e tudo mais). Mas isso já ajuda bastante.

Por hoje paro por aqui, espero ter ajudado.

 


Salve, salve galera…

Todos nós quando estamos desenvolvendo rotinas que trabalham com números imputados temos que nos atentar nas conversões e garantir que não haverá problemas.

Para isso temos a opção de realizar a conversão utilizando o método TryParse, porém, se a cada recuperação de dados fizermos isso nosso código ficara bem extenso. Então hoje vou demonstrar um recurso simples, mas que auxilia muito na nossa vida. Assim como temos o método ToString() que realiza uma conversão “automática” do valor para string, criaremos um método ToInt(), para que possamos de maneira simples recuperar valores imputados, ou realizar conversões com valores tipo INT.

public static int ToInt(this object param)
{
      int saida;
      if (param != null)
      {
           if (int.TryParse(param.ToString(), out saida))
                 return saida;
           else
                 throw new InvalidCastException("Impossível converter para inteiro");
      }
      else
      {
           throw new InvalidCastException("Impossível converter para inteiro");
      }
}

Pronto pessoal, esse é nosso método de extensão para recuperar o Int de um atributo ou variável, ou afins. E para utilizar basta chamarmos da seguinte forma.

int variavel = txtNumero.Text.ToInt()

E ae pessoal ? tudo em cima ????

Nesse post vou mostrar uma ( das varias ) maneiras de criar um repositório de usuários no ASP.NET MVC. Esse recurso pode ser utilizado por exemplo, em conjunto com o recurso de BaseController para controlar o acesso de usuários. Nesse caso iremos trabalhar com Cookies

Bom vamos la, mãos na massa….


namespace Portal.Seguranca
{
    public class UsersRepository
    {
         public static Models.Usuario.Usuario usuarioLogado
         {
              get
              {
                    var usr = HttpContext.Current.Request.Cookies["UserCookieAuthentication"];
                    if (usr == null)
                    {
                          return null;
                    }
                    else
                    {
                          string NovoToken = CryptographyRepository.Descriptografar(usr.ToString());
                          int IDUsuario;

                          if (int.TryParse(NovoToken, out IDUsuario))
                          {
                                return Usuario.getById(IDUsuario);
                          }
                          else
                          {
                                return null;
                          }
                     }
              }
        }

        public static bool deslogar()
        {
               try
               {
                       HttpCookie http = new HttpCookie("UserCookieAuthentication");
                       http.Expires = DateTime.Now.AddDays(-1);
                       HttpContext.Current.Response.Cookies.Add(http);

                       return true;
               }
               catch(Exception ex)
               {
                      throw ex;
               }
        }

        public static bool registrarUsuario(Models.Seguranca.Usuario usr)
        {
              try
              {
                    if (usr == null)
                    {
                        return false;
                    }
                    else
                    {
                        //Criando um objeto cookie
                        HttpCookie UserCookie = new HttpCookie("UserCookieAuthentication");

                        //Setando o ID do usuário no cookie
                        UserCookie.Value = CryptographyRepository.Criptografar(usr.Codigo.ToString());

                        //Definindo o prazo de vida do cookie
                        UserCookie.Expires = DateTime.Now.AddHours(2);

                        //Adicionando o cookie no contexto da aplicação
                        HttpContext.Current.Response.Cookies.Add(UserCookie);

                        return true;
                    }
            }
            catch (Exception ex)
            {
                 throw ex;
            }
       }
    }
}

Desse ponto endiante, pode simplesmente, fazer a chamada da seguinte forma.


Models.Usuario.Usuario usr = UsersRepository.usuarioLogado;

Lembrando que os Coockies de preferencia devem estar criptografados para segurança.

Ate a próxima pessoal.


Utilizando o algoritmo de hash MD5 com C#

Categories: C#
Comments: No

Pessoal neste post estarei mostrando como utilizar o algoritmo de hash MD5 através de uma string, recurso esse muito util para criptgrafia de valores. Vamos lá ?

O algoritmo MD5 é muito usado para armazenamento de senhas ou valores na qual queremos um certo cigilo.

Nesse exemplo converteremos uma string em um hash de 32 bits hexadecimal.


public string converterValor(string input)
 {

//Instancia a variavel que sera responsavel pela criação
 MD5 md5 = System.Security.Cryptography.MD5.Create();

//obtem os bytes correspondentes do valor de entrada e atribui a uma variavel vetor.
 byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);

//cria o hash atraves do valor de bytes obtidos
 byte[] hash = md5.ComputeHash(inputBytes);

//ordena os valores em uma string e retorna
 StringBuilder sb = new StringBuilder();
 for (int i = 0; i < hash.Length; i++) {
 sb.Append(hash[i].ToString("X2"));
 }
 return sb.ToString();
 }

Simples não é ?

Até a próxima pessoal.


Introdução:

Pessoal neste post esterei começando a falar sobre essa linguagem de programação que esta crescendo cada vez mais…

Bom mãos na massa…

Ruby é linguagem de programação que tem alguma caracteristicas como :

ser interpretada: não é necessário compilar o código e gerar um assembly – ou código de maquina – para poder rodar o aplicativo, o interpretador verifica o código toda vez que é realizada uma chamada ao código.

tem uma tipagem dinâmica: não é necessário fazer declaração do tipo de dados pois o interpretador define qual tipo de dado será usado para melhor desempenho.

ser orientada a objetos: paradigma de programação muito usado nas principais linguagems de programação hoje no mercado.

Desenvolvida para atender desde grandes demandas de desenvolvimento até aplicações de desenvolvimento rápido e simples.

Desenvolvida no Japão por  Yukihiro Matsumoto (Matz), que queria desenvolver uma linguagem tão orientada a objetos como Python, que fosse de script, funcional e que tivesse caracteristicas de suas linguagens de programação favoritas

Um dos referencias da linguagem é o fato dela ser Open-source, qualquer um que queira pode baixar seu código fonte para poder estudar, alterar e melhor o código.

Mas com tantas linguagens no mercado, o que a torna diferente ?

Ela tem a caracteristica de ter seu código transparente e econômico o que faz com que sua programação seja menos abstrata possivel, além de possuir duas caracteristicas chave: tudo na linguagem é orientada a objetos, e possui multiplos retornos (Isso ira ser visto mais pra frente nos exemplos)

Permite o desenvolvimento de aplicação desktop, web – trabalhando em conjunto com o meta framework Rails – , móveis entre outros tipos de aplicações.

Pessoal esse post era só uma introdução sobre a linguagem nos próximos posts veremos exemplos práticos.

Até a próxima.