terça-feira, 25 de maio de 2010

Tudo que eu queria saber antes de virar um líder técnico [Phillip Calçado]

Check out this SlideShare Presentation:

SP's - Stored Procedures

Bom, depois de muitos dias sem postar nada, e do grande sucesso que teve a enquete de qual seria o próximo assunto, vamos falar um pouquinho agora, das Stored Procedures.

            Estaremos utilizando o banco de dados, SQL Server, como exemplo.

            Já indo direto ao assunto, as Stored Procedures é que um conjunto de instruções (Transact-SQL) que são executados dentro do banco de dados, é como se escrevêssemos nossas regras de negócio dentro da base. O interessante de usá-las, é que elas podem reduzir o tráfego na rede, melhorar o desempenho de um banco de dados, criar tasks, etc. pode fazer inúmeras tarefas com as SP’s.

Pelas inúmeras funcionalidades, as SP’s, trazem grandes vantagens para os Desenvolvedores e DBA’s.

          As procedures podem ser utilizadas quando temos vários sistemas diferentes (linguagens diferentes) acessando uma mesma base, com isso podemos assegurar que todos os sistemas estão executando a mesma rotina, aumentando o grau de segurança das aplicações.

Já que sabemos do potencial das SP’s , vamos ver agora como podemos criar uma.

CREATE PROCEDURE TESTE
AS
BEGIN
SELECT * FROM PESSOAS
END

          Acima criamos uma procedure simples, assim que ela for executada, ficará “guardada”  e pronta para ser chamada a qualquer momento. Podemos ainda passar parâmetros para ela.

EXEC TESTE


         
Com o comando acima, a SP é executada.
         Vamos criar uma procedure que receba parâmetros e execute um insert com os mesmos na tabela Pessoa.

CREATE PROCEDURE sp_inserePessoa
            @nome varchar(50),
            @idade int,
            @sexo char(1)

AS
            INSERT INTO PESSOA (nome, idade, sexo) VALUES (@nome, @idade, @sexo)
GO

            Agora vamos consumir nossa Procedure.

USE bd_estudo
GO

EXEC SP_inserePessoa
            @nome = ‘Leandro Martins’,
            @idade = 20
            @sexo = ‘M’
GO


           Até agora, vimos que não tem nada de complicado em criar uma procedure, mas podemos ainda melhorar a nossa, e colocar uma regra nela.

        1 – Se o nome não for informado, a inserção não poderá será concluída, e uma mensagem deverá ser exibida.

        Para isso, não precisamos de criar uma nova, podemos ALTERAR a nossa criada.

ALTER PROCEDURE sp_inserePessoa
            @nome varchar(50),
            @idade int,
            @sexo char(1)

AS
            IF @nome <> ‘’
            BEGIN

INSERT INTO PESSOA (nome, idade, sexo) VALUES (@nome, @idade, @sexo)
           
                        PRINT ‘Insert executado com sucesso!’
            END
            ELSE
                        PRINT ‘Erro: Nome não informado’
GO

Executando...

EXEC SP_inserePessoa
            @nome = ‘’,
            @idade = 20
            @sexo = ‘M’
GO

             A mensagem de erro deverá ser exibida. ‘Erro: Nome não informado’

            Ah, quase já ia esquecendo, talvez você esteja fazendo estes testes na base de dados do cliente, rsrs, além de criar e alterar pode Excluir a procedure.

DROP PROCEDURE sp_inserePessoa

         Chegamos a mais um final de um post, e espero mais uma vez ter contribuído com algo.

sábado, 15 de maio de 2010

Como a água produz energia elétrica?

Para entender o processo é preciso saber a diferença entre as energias potencial e cinética. A potencial é a
capacidade de movimento do objeto estático (energia sem movimento) enquanto a cinética é o próprio
deslocamento (energia do movimento). Em uma represa, a água parada acumula energia potencial. Quando
as comportas são abertas, a energia potencial se transforma em cinética e move as turbinas. A energia
elétrica é produzida por um gerador que funciona com o movimento das turbinas.

quinta-feira, 13 de maio de 2010

PPT - Primeiros Passos com Threads.


Hoje abordaremos um pouco sobre as Threads. 
Este tema é bastante assustador para alguns desenvolvedores, mas em contrapartida outros não "vivem sem". (eu vivo, rsrsrs).

Bom, vamos partir do ponto, O que são threads?

Threads, ou linha de execução, nada mais é que, a forma de um processo se dividir em duas ou mais tarefas, fazendo parecer que seu programa está executando mais de uma linha de comando simultaneamente.

Uma boa 'ilustração' das Threads pode ser: Um programa que inicie uma linha de execução para verificar a ortografia de um texto, enquanto uma segunda capture o texto digitado e já faça a devida validação do mesmo.

Mas Threads são tão importantes assim?

Imagine o seguinte cenário: Está você bem respondendo aquele importantíssimo email do seu chefe, agradecendo o tão esperado reajuste salarial, e você para no 78ª linha do email, e clica em no Menu Editar, do seu Browser...
Possivelmente, o que poderia acontecer? rsrsrs, seu navegado parar de responder.....

Na historinha contada acima, ilustra a importância das Threas em interfaces gráficas, mas elas podem  aparecer em diversos outro lugares, como em sistemas multiprocessados.

Tudo bem, e como poderíamos criar uma Thread?

Bom, há duas formas de criarmos um thread em java: 
1 - Estendendo a classe Thead 
2 - Implementando a interface Runnable.

Segue um pequeno exemplo:

//Estendendo a classe Thread
public class MinhaThread extends Thread {

public MinhaThread(){}
//reescrevendo o metodo run()
public void run() {
System.out.println("Thread Executada");
}
}

class TestaThread{
public static void main(String[] args) {
MinhaThread mt = new MinhaThread();
MinhaThread mt1 = new MinhaThread();
MinhaThread mt2 = new MinhaThread();
MinhaThread mt3 = new MinhaThread();
mt.start();
mt1.start();
mt2.start();
mt3.start();
}
}


//Exemplo implementando a interface Runnable
public class MinhaThread implements Runnable {

public void run() {
System.err.println("Executado. Implementando a Interface Runnable");
}

}

class TestaThread{
public static void main(String[] args) {
MinhaThread mt = new MinhaThread();
MinhaThread mt1 = new MinhaThread();
Thread t = new Thread(mt);
Thread t1 = new Thread(mt1);
t.start();
t1.start();
}
}

Acima fizemos dois exemplos simples de criação das nossas Threads.
É interessante sabermos também, até quando uma Thread fica "viva", ou seja, como é seu ciclo de vida. 

Vamos dar uma pequena "pincelada", dos estados que ela pode assumir.

1 - Cria Thread
2 - Inicia Thread (start())
o início é dado pelo método start();
Este aciona o método run();
O estado da Thread neste momento estará Runnable
3 - Executando (run())
((Estados que podem assumir))
3.1 - Dorme
3.2 - Acorda
3.3 - Suspende
3.4 - Retorna
3.5 - Espera
3.6 - Notifica
3.7 - Bloqueio
3.8 - Desbloqueio
Os estados acima, podem acontecer se a Thread estiver Bloqueada.
4 - Finalizada.

Até o momento, já temos uma boa noção do que são Threads, como criá-las, e como elas podem se comportar.

Vejamos agora alguns métodos importantíssimos.

Bloqueando um Thread: ela entra neste estado, quando: 
- o método sleep é chamado,
neste metodo você pode passar o tempo que ela deve ficar bloqueada.
- a Thread chama o método wait
fica neste estado, até que outro objeto notifica (notify ou notifyAll).

Parando um Thread:
Uma Thread tem estado "viva" até que suas condições tenham sido todas aceitas, ou seja, quando o método run() termina.

Mas existem métodos que podem forçar esta parada: destroy()  ou stop().

Método isAlive():
Este método retorna true, se a Thread foi iniciada e ainda não parou, e false, se ela está no estado New thread ou Dead. 

Bom, a idéia central deste post foi dar apenas os primeiros passos na criação e utilização das Threads,
nos próximos capítulos deste assunto, iremos focar mais em pontos específicos das tão temidas Threads.

Espero ter contribuído.