segunda-feira, 23 de julho de 2012

CrowdTest


CrowdTest é um modelo derivado do Crowdsourcing, neste modelo é feito uso da inteligência e dos conhecimentos de canditatos para testar software’s.
O funcionamento é simples, uma empresa tem um software que precisa ser testado, ela contrata uma empresa que oferece o serviço de CrowdTest, a empresa contratada por sua vez convoca as pessoas cadastradas para fazer os testes conforme os requisitos que a empresa criadora do sistema necessita, os candidatos efetuam os testes conforme os requisitos e cada erro encontrado eles reportam para a empresa que os recrutou, a empresa valida os erros e fornece para a empresa contratante os detalhes sobre os erros encontrados. Os testadores geralmente são remunerados por erros encontrados.
Este tipo de serviço pode ser utilizado para todos os tipos de software’s (web, desktop, dispositivos móveis, etc...) é considerado uma mão de obra barata e com um bom retorno, sendo considerada uma boa alternativa para testes mais amplos de um sistema.


Referências:
CrowdTest

terça-feira, 12 de junho de 2012

Tercerização na Área de TI



A terceirização, hoje chamada de Outsourcing, é uma ferramenta que está sendo muito  utilizada pelas empresas na tentativa de minimizar os seus custos (muitas vezes transformando um custo fixo em variável) e aumentar o seu foco, concentrando esforços na sua atividade fim.
Quase toda a área de TI pode ser terceirizada(é uma das areás preferida para terceirizar), desde servidores, serviços de impressão e desenvolvimento de sistemas, etc.
As vantagens de terceirizar a área de TI inclui  além da redução dos custos no geral, aumenta a velocidade na modernização  de  equipamentos e sistemas, evita problemas  com treinamento  e atualizações  dos profissionais, aumento de produtividade , acesso ao  know-how da empresa contratada,  ferramentas para controle de produção, etc.
A terceirização também traz algumas desvantagem como : dependência excessiva do fornecedor, perda da identidade dos funcionários com a empresa, para empresas que já estão em funcionamento pode-se gerar gastos com demissões de funcionários.
Entre vantagens e desvantagens, a terceirização não é algo unanime entre os profissionais de TI, pois existem casos de sucesso, como também inúmeros casos de fracassos.
É preciso analisar com cuidado a terceirização, pois é preciso uma mudança cultural na empresa, o gestor que ira cuidar desse processo deve ficar atento, pesquisar bem a empresa que será utilizada no processo, definir bem os níveis de SLA’s para evitar problemas futuros. Nos processos de terceirização de sistemas um dos principais problemas é o controle dos fontes, pois em caso de troca da empresa prestadora de serviço a obtenção dos fontes atualizados é de fundamental importância para a continuidade do sistema.


Referências:
(todos os sites acessados em 08 de fevereiro de 2012)




segunda-feira, 21 de maio de 2012

Evolução da Internet: da DARPANET à Internet Atual


Neste resumo pretendo colocar os pontos mais importantes, na minha opinião, sobre a evolução da Internet.

O primeiro ponto foi os artigos escrito por J.C.R. Licklider( ou Lick) , foi um dos pioneiros a descrever uma rede de computadores interligadas acessando programas e dados em qualquer lugar. O conceito descrito por ele em 1962 lembra e muito o que é a Internet hoje.

Outro passo que impulsionou a Internet foi a teoria de Leonard Kleinrock sobre a troca de pacotes ao invés da utilização da comutação de circuitos, teoria esta comprovada e colocada em prática em 1965 quando dois computadores se conectaram através de uma linha de baixa velocidade, sendo este experimento a primeira rede de computadores.
Esses passos deram impulsos para a realização de diversos estudos, pesquisas, desenvolvimentos de novas tecnologias para interligar os computadores, posso mencionar aqui exemplos que são a criação da ARPA em 1968, a DARPA em 1975 organização militar que tinha como um dos objetivos manter os principais e estratégicos pontos em comunicação caso houvesse uma guerra nuclear, com este objetivo fizeram grandes avanços um deles foi o protocolo TCP/IP.
O protocolo TCP/IP foi criado em 1973 por Robert Kahn e Vint Cerf, Robert Kahn criou os conceitos de como deveria ser uma rede, esses conceitos foram :

  • cada rede distinta deveria ser independente e mudanças internas não deveriam ser requisitadas para conectá-las à Internet;
  • comunicações seriam na base do melhor esforço. Se um pacote não chegasse à sua destinação final, ele seria retransmitido da fonte;
  • caixas pretas seriam usadas para conectar as redes. Mais tarde elas seriam chamadas gateways e roteadores. Os gateways não reteriam informações sobre os fluxos de pacotes passantes. Isso assegurou que eles se mantivessem simples, evitando adaptações complicadas e recuperações de erros;
  • não haveria controle global no nível operacional.

Com estes conceitos ele chamou Vint Cerf e os dois criaram o segundo alicerce da internet, depois da comutação por pacotes.
Em 1980 as redes de computadores começaram a sua grande escalada e com isso dando inicio a Internet como ela é hoje, nessa década posso destacar a liberação do protocolo TCP/IP em 1983 pela DARPA, o que veio facilitar a integração dessa redes que a principio foram as redes das universidades, depois foram criados backbones, que permitiram a união das redes comerciais em todo o mundo assim formando a Internet.
Até agora eu mencionei apenas protocolos e hardware, mas o que realmente impulsionou a Internet foram os serviços de rede, podemos destacar dois que eu considero chave o e-mail e o http.
O e-mail foi criado por Ray Tomlinson em 1971 e é até hoje é o serviço mais utilizado na Internet. Ele é um grande facilitador da vida moderna, diminuindo a distância e aumentando a produtividade.
O outro serviço, o http, é utilizado para distribuição de conteúdo e teve a sua melhor especificação em 1999 dando origem para o HTTP 1/1, junto com a linguagem HTML permitiu a distribuição de documentos contribuindo para a disseminação de conteúdo.
Hoje o futuro da Internet está nos aplicativos, com a velocidade dos links cada vez mais altas , os computadores cada dia mais potentes e acessíveis, as ferramentas de desenvolvimento cada dia mais sofisticada e fáceis de desenvolver, estamos vivendo uma nova revolução definida por Tim O'Reilly como WEB 2.0 descrita por ele da seguinte maneira:

"... é a mudança para uma “nova” Internet como plataforma, e o entendimento das regras para obter o sucesso nesse novo ambiente. Uma das regras mais importantes é desenvolver aplicativos que aproveitem os efeitos da grande rede, tornando-os melhores, e à medida que mais pessoas os utilizem, aproveita-se daInteligência Coletiva"

Outro ponto são os dispositivos móveis que estão cada dia mais potentes e acessíveis mantendo o usuário conectado a Internet  em qualquer lugar a qualquer momento.



Referências:


AISA - Historia da Internet

Wikipedia J.C.R. Licklider
Leonard Kleinrock
DARPA
Vint Cerf
Robert Kahn
HTTP
Apostila FUNDAMENTOS de SISTEMAS de INFORMAÇÃO(2007) - Ms. Carlos Valente
Apostila METODOLOGIA DA PESQUISA CIENTÍFICA(2011) - Dr. JAIME ROY DOXSEY

quarta-feira, 25 de janeiro de 2012

Manipulando HTML com a Classe HtmlGenericControl e o Comando FindControl

    As vezes precisamos manipular o HTML para adicionar novas funções ou alterar o layout criado, neste post pretendo mostrar uma forma de se fazer isto.
    O comando FindControl é utilizado para localizar um controle, para que este comando funcione em projetos WEB precisamos no ASP.Net definir um ID e colocar o atributo runat=”server” conforme os exemplos abaixo:
 class="xml"><!-- runat="server" em uma div -->
<div class="menu" id="divMenu" runat="server">

<!-- runat="server" no body, repare que eu adicionei o atributo ID ao body -->
<body runat="server" id="body">
    O atributo runat=”server” pode ser adicionado em qualquer parte do HTML, este atributo server para informar que o controle (TAG HTML) vai ficar disponível no código do lado do servidor.
    Feito isso segue alguns exemplo do uso do comando FindControl :
// Pegando um controle ul 
HtmlGenericControl ulPrincipal = (HtmlGenericControl)FindControl("ulPrincipal");

// Pegando o body da página (o body deve conter o atributo ID e o atributo runat="server", conforme mencionado acima) 
HtmlGenericControl pgBody = (HtmlGenericControl)FindControl("body");

    Como a proposta deste artigo é a manipulação de controles HTML verifique que eu converti o controle localizado para a classe HtmlGenericControl, está classe vai nos ajudar a manipular os atributos do controle HTML, abaixo segue alguns exemplos de atributos que podemos manipular:
// Adicionando uma classe CSS
liLinhaF.Attributes.Add("class", "linha-menu");

// Adicionando um titulo, o conteúdo e o link de um controle a
aHref.Attributes.Add("title", "Titulo"); // Titulo
aHref.Attributes.Add("href", "link"); // link
aHref.InnerText = "Conteudo" // Conteúdo 

// Adicionando código HTML ao controle
liLinha.InnerHtml = " ";

// Adicionando o evento onload ao body da página
pgBody.Attributes.Add("onload", "javascript:alert(\'teste !\')");

// Manipulando o estilo de um controle HTML
lu.Style.Add("display", "none");
lu.Style.Add("visibility", "hidden");
    Além de manipular atributos também podemos adicionar outros controles dentro de outros controles (caso você tenha uma div ou table):
HtmlGenericControl ulPrincipal = (HtmlGenericControl)FindControl("ulPrincipal");
HtmlGenericControl liLinha = new HtmlGenericControl("li");
liLinha.Attributes.Add("class", "linha-menu");
liLinha.InnerHtml = "<B>Teste</B>";
ulPrincipal.Controls.Add(liLinha);
    Com o comando FindControl e a classe HtmlGenericControl fica muito fácil a manipulação do HTML do lado do servidor.

Referências:
Método Control.FindControl (String)
Classe HtmlGenericControl
Curso ASP.NET 3.5 em VB.NET e C# - Controles(Fernando Amaral)
Apply CSS for an HTML generic control like

domingo, 15 de janeiro de 2012

Configurando o JQuery no Visual Studio 2008

    O JQuery, na minha opinião, é uma das melhores bibliotecas em Javascript, facilitando muita a vida do desenvolvedor, neste artigo vou mostrar como fazer a integração do JQuery ao Visual Studio 2008 para que o intelisense funcione, já que tive algumas dificuldades nesta integração.
    Primeiro verifique se o seu Visual Studio 2008 está  com o SP1 instalado.
    Segue o link se você precisar baixar o SP1 do Visual Studio 2008 (a instalação deste pacote é lenta, não estranhe):


    Depois vamos aplicar o hotfix para o Visual Studio interpretar a documentação de bibliotecas escritas em Javascript (-vsdoc.js), o endereço para fazer o download do hotfix é :


    Baixe os arquivos do JQuery: jquery-1.3.2-vsdoc2.js e jquery-1.3.2.js (está é a versão que eu usei neste artigo), no endereço http://code.google.com/p/jqueryjs/downloads/list. Retire do nome do arquivo de documentação o numero dois ele deve ficar com o seguinte nome jquery-1.3.2-vsdoc.js (é importante renomear este arquivo, porque o Visual Studio só interpreta arquivos de documentação se ele tiver no final do nome a sequencia "-vsdoc.js").
    Depois de feito o download dos arquivos e aplicado o hotfix, vamos testar o Visual Studio 2008, crie um projeto WEB, depois crie uma pasta chamada scripts (não é obrigatório, mas fica mais organizado), insira neste diretório os dois arquivos do JQuery , arraste ou insira a referência ao arquivo que contem as funções (jquery-1.3.2.js).
    Crie uma sessão Javascript e digite $( e veja o intelisense funcionando !


Referências:

terça-feira, 29 de novembro de 2011

Alimentando DataGrid WPF Dinamicamente com C#


                Muitas vezes precisamos alimentar um DataGrid dinamicamente, com o WPF está tarefa ficou bem fácil, vamos ao exemplo.
                Iremos criar um programa para exibir o alfabeto em maiúsculo , um contador e o código ASCII da letra dentro de um DataGrid assim que o usuário pressionar o botão.
                Vamos inserir um botão e um DataGrid, como o intuito aqui é alimentar dinamicamente o DataGrid, vamos alterar a propriedade AutoGenerateColumns  para true dentro do XAML , assim o DataGrid vai gerar as colunas para nós, abaixo segue como o código deve ficar :

<my:datagrid autogeneratecolumns="true" margin="12,42,12,20" name="dataGrid1" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"> </my:datagrid>
    

                No código vamos criar uma simples classe apenas com os atributos, segue o código:

    public class LetraNumero
    {
        public int Posicao { get; set; }
        public char Letra { get; set; }
        public int ASCII { get; set; }
    }

                Segue o código do evento Click do botão :

         private void button1_Click(object sender, RoutedEventArgs e)
        {   
            // Cria lista para os objetos (está lista tem que ser do tipo Generic)
            List<letranumero> lista = new List<letranumero>();

            // Rotina para alimentar a lista
            for (int i = 1; i < 27; i++)
            {
                LetraNumero item = new LetraNumero();
                item.Posicao = i;
                item.Letra = Convert.ToChar(64 + i);
                item.ASCII = 64 + i;
                lista.Add(item);
            }

             // Vinculando a lista ao grid
             dataGrid1.ItemsSource = lista; 
        }

                A propriedade ItemsSource do DataGrid aceita uma lista do tipo Generic e como a propriedade AutoGenerateColumns está como true, ele vai criar uma coluna para cada atributo da classe definida na lista. Abaixo segue o exemplo da tela em execução:


                Se for preciso, podemos alterar o titulo da coluna (pois ele sempre deixa a coluna com o nome da propriedade da classe) ou mesmo ocultar a coluna. Criei um outro botão com o mesmo código e inserir essas duas linhas, uma para renomear a coluna Posicao para Posição e a outra para ocultar a coluna ASCII:

             // Altera o titulo da coluna 0
            dataGrid1.Columns[0].Header = "Posição";           

            // Deixa a coluna 2 invisivel
            dataGrid1.Columns[2].Visibility = Visibility.Hidden;

                Executando o botão, verifique como ficou a tela:


 Referências:

quarta-feira, 17 de agosto de 2011

Redirecionamento com Javascript


                Quando trabalhamos com scripts do lado do servidor (como ASP, JSP e PHP) é muito fácil fazer o redirecionamento, mas quando temos apenas HTML podemos utilizar o Javascript para fazer o redirecionamento, abaixo segue o exemplo:
<html>
    <head>
        <title>Teste de Redirecionamento</title>
    </head>
    <body onload='javascript:window.location="http://www.facebook.com/pages/Tudo-que-%C3%A9-interessante/153714048015357"'>
    </body>
</html>
                Faço uso do evento onload dentro da tag BODY (este evento ocorre antes de carregar a pagina), dentro do evento eu desvio para o endereço que eu quero com a função window.location.