terça-feira, 21 de maio de 2013

Começando com o AngularJs - Parte 1


O Google, há algum tempo, lançou para nós, desenvolvedores front-end o Angular-Js, disponível em http://angularjs.org/.
Mas o que vem a ser o AngularJs. É um framework JavaScript super-heróico, como ele mesmo descreve, para realizar principalmente a iteração entre dados e UI sem o programador ter que ficar lidando com o DOM. Tá, ele faz muito mais que isto, mas comecemos pensando nele assim.

Então, vamos ao trabalho.
Primeiro vamos baixar a última versão do AngularJs acessando o site dele, de preferência a versão de descomprimida, para que alguns problemas possamos entender melhor acessando o debug JavaScript do navegador.

Para começar a nossa aplicação, precisamos dizer para o Angular, a partir de qual tag ele irá controlar, e para isto utilizamos o atributo ng-app. Eu tenho a preferência de colocar este atributo na tag body, afinal, deixo sempre ele controlar a minha aplicação inteira.
Se você necessita que a sua aplicação funcione no IE7, é necessário colocar o id da tag também como ng-app.
Exemplo:

 <html>  
   <head>  
     ...  
   </head>  
   <body ng-app id="ng-app"> 
     ...  
   </body>  
 </html>  


Após fazer o apontamento da aplicação, necessitamos criar pelo menos um controller e apontar o que este controles irá controlar.
E o controller, o que é? Pra que serve?
O controller é o responsável por interceptar as ações ocorridas na UI e fazer as interações necessárias, inclusive a comunicação com o back-end. Para criar um controller, basta criar uma função javascript que aceite como parâmetros os módulos que serão utilizados. O que são módulos será apresentado mais pra frente, por enquanto basta saber que adicionaremos 3 módulos:

  • $scope
    • Responsável por expor o escopo do controller que será utilizado na UI.
  • $http
    • Fornece funções para chamadas Ajax de forma facilitada.
  • $window
    • Uma variável que aponta para o objeto Window do DOM.
Exemplo de controler

function meuLogin($scope, $http, $window){

}


Então vamos supor que eu possuo um div e dentro deste div estão os elementos de login e preciso controlar tudo o que acontece no login, posso então utilizar este div como base do meu controler colocando nele o atributo ng-controller e no valor, colocar o nome do controller que criamos.

Exemplo:

 <html>  
   <head>  
     ...  
   </head>  
   <body ng-app id="ng-app">
       <div ng-controller="meuLogin" >
            ...
       </div>
   </body>  
 </html>

A partir de então podemos começar a definir o que a view (UI) terá.
Mas antes eu dou uma dica, o Angular tem inteligência para detectar o nome dos argumentos da função do controller e automaticamente injetar os módulos correspondentes, mas quando ocorre o processo de minificação, estes nomes são substituídos, então por padrão, eu sempre realizo a injeção dos módulos que seram utilizados e o Angular não terá problema com isto, alias, fazendo a injeção, eu posso utilizar o nome que eu quiser nos argumentos do controller.
Exemplo:

function meuLogin(ng, ajax, window){

}
meuLogin.$inject = ['$scope', '$http', '$window'];

Onde o ng é $scope, ajax é $http e window é $window.
Definindo a view no Html, para tal vamos colocar um input text, para o login, um input password para a senha e um button. Vou também especificar nos controles a relação com os objetos do $scope, inclusive a ação ao clicar no botão, e para isto são utilizados atributos específicos do angular, ou como são chamados no angular, diretivas, que no nosso caso serão ng-model e ng_click. Logo após, definirei os objetos e comportamentos no controller.
Exemplo:
 HTML
 <html>  
   <head>  
     ...  
   </head>  
   <body ng-app id="ng-app">
       <div ng-controller="meuLogin" >
                Login:<br />
                <input type=”text” ng-model="usuario.login" /><br />
                Senha:<br />
                <input type=”password” ng-model="usuario.senha" /><br />
                <button type=”button” ng-click="logar();">Entrar</button><br/>
     < </div>
   </body>  
 </html>

JavaScript
function meuLogin(ng, ajax, window){
    function iniciar(){
        ng.usuario = {"login":"", "senha":""};
    }
    iniciar();
 
    ng.logar = function(){
     alert("O usuário " + this.usuario.login + " está tentando entrar no sistema!");
    };
}
meuLogin.$inject = ['$scope', '$http', '$window'];
Por enquanto esta é a primeira parte, já da para entender um pouco dos conceitos do angularjs e algumas dicas úteis. Nos próximos posts mostrarei como utilizar chamadas ajax e alguns outros conceitos.

quinta-feira, 4 de março de 2010

Forma correta de chamar Threads

Sempre que formos trabalhar com Threads, devemos nos atentar a algumas regras, para facilitar o design do nosso projeto, simplificando nosso código e encapsulando parâmetros e atributos que não necessitam ficar expostos.

Abaixo segue um exemplo de como trabalhar com Thread deste modo.


using System;
using System.Threading;


namespace MeuNameSpace
{
    public class MinhaThread
    {
        #region Constructor
        public MinhaThread(int maxLoops, string description)
        {
           this.MaxLoops = maxLoops;
           this.Description = description;
        } 
        #endregion

        #region Attributes
        private Thread threadExec;
        #endregion
        
        #region Properties
        public int MaxLoops { get; private set; }

        public string Description { get; private set; }

        public ThreadState State
        {
            get
            {
                return this.threadExec.State;
            }
        }
        #endregion
        
        #region Methods
        public void Start()
        {
            this.ThreadExec = new Thread(Run);
            this.ThreadExec.Start();
        }

        private void Run()
        {
            for (int i = 0; i < this.MaxLoops; i++)
            {
              Console.WriteLine(this.Description);
            }
        } 
        #endregion

    }


    [STAThread()]
    public class Program
    {
        public static void Main()
        {
            MinhaThread minhaThread = new MinhaThread(30, "Tem que escrever isto");
            minhaThread.Start();

            while (minhaThread.State == ThreadState.Running)
            {
                Console.WriteLine("Thread Ainda não terminou, então vamos esperar mais um pouquinho");
                Thread.Sleep(5);
            }

            Console.WriteLine("Agora a Thread terminou, você viu que executamos ela e não tivemos nem acesso ao método e nem a ela.");
            Console.WriteLine("Apenas instanciamos a classe dela, passamos os parâmetros necessários e mandamos executar, sem saber como isto é feito");
        }
    }
}



E isto é tudo pessoal

segunda-feira, 29 de setembro de 2008

Como começar a programar 2

Seguindo a linha do Post anterior (Como começar a programar) do nosso colaborador Vendrame, também é comum me perguntarem onde encontrar material organizado e que apresente uma boa didática para o aprendizado da linguagem .Net.

Recentemente, a Microsoft disponibilizou um espaço especialmente dedicado à iniciantes, o Beginner Developer Learning Center, este é um centro de aprendizado que contém muito material (vídeo aulas, slides e códigos fonte) organizado de maneira progressiva.

Trilhe sua carreira com humildade, sinta prazer em aprender e respeite os profissionais competentes que trabalham com você, isso é um dos pequenos detalhes que te fará ser um profissional de sucesso.


"Duas coisas que aprendi são que você é tão poderoso e forte quanto você se permite ser, e que a parte mais difícil de qualquer empreendimento é dar o primeiro passo, tomar a primeira decisão."
( Robyn Davidson )

terça-feira, 23 de setembro de 2008

Como começar a programar

Para começar a desenvolver, antes de tudo é necessário estudar.
É muito comum encontrar pessoas em fóruns querendo que o pessoal os ensine tudo. Isto já é um péssimo começo.
O processo de aprendizagem é lento e necessário, porém é muito compensador.
Vamos a algumas das etapas iniciais:
Estudar lógica e matemática. Comece com teoria dos conjuntos, depois parta para algebra booleana. Após conhecer bem estas duas e saber montar uma tabela verdade de AND, OR, NAND, NOR, XOR, XNOR, e conhecer bem as leis de Morgan, parta para algoritmos, o que são condições, o que são laços, operadores existentes. Muitos começam a programar e pulam as etapas iniciais, achando-as desnecessárias, porém torna-se um indivíduo sem o prepáro básico e a lógica essencial para o desenvolvimento de algoritmos bons e eficientes.

Estudar alguma linguagem. Comece a estudar profundamente alguma linguagem e a aplicar os conceitos aprendidos em algoritmos. Algumas linguagem boas e que direcionaram você a se tornar um bom programador são o Pascal e o C++. Eu particularmente recomendo o Pascal, por ser uma linguagem muito bem estruturada e que se aproxima bem da linguagem falada, vindo dai o dizer dela ser uma linguagem de alto-nível.

Estude C e C++. Parece que estou brincando, logo após falar pra estudar Pascal, falar para C e C++, mas é realmente nescessário, já que muitas das principais linguagens comerciais são baseadas em C, chamadas de like-c, tais como o Java, o C#, o próprio C++ e o C.

Estude as diversas formas de programação, entre elas estão programação para Web, programação para Desktops (forms), Programação de Serviços Web ou SOA (WebServices), Programação de Serviços Windows, Programação de Jogos, Programação para Celulares, entre outras diversas formas, se aprofunde na qual você mais gostar ou qual atender as suas necessidades no momento. Não se limite a sua linguagem, ou seja, um programador Web deve conhecer muito bem HTML, JavaScript, CSS, Ajax entre outros conceitos e técnicas, assim como alguém que for programar sockets, deverá conhecer muito bem redes, camada OSI, entre outros.

Não posso esquecer de falar de Banco de Dados, aprender SQL e algum banco comercial é necessário, afinal, onde inicialmente você armazenará os dados de seus aplicativos.
Alguns dos principais bancos comerciais são Oracle, Microsoft SqlServer, DB2, PostGree e MySql.
Não se preocupe e nem se desespere, este blog dedicará outros posts exclusivamente a banco de dados.


Para o início já está bom, depois falarei mais sobre estes tópicos e o que leva um programador a ser um guru.