Desculpa para aprender? [POST RÁPIDO]

Uma lista bem legal…

For C Tutorials.
http://www.codevdo.com/Languages/C
For C++ Tutorials.
http://www.codevdo.com/Languages/CPP
For C#.NET Tutorials.
http://www.codevdo.com/Languages/CSharp_Dotnet
For VB.NET Tutorials.
http://www.codevdo.com/Languages/VB_Dotnet
For Java Tutorials.
http://www.codevdo.com/Languages/Java
For Perl Tutorials.
http://www.codevdo.com/Languages/Perl
For MS Access Tutorials.
http://www.codevdo.com/Database/Ms_Access
For SQL Server Tutorials.
http://www.codevdo.com/Database/SQL_Server
For MySQL Tutorials.
http://www.codevdo.com/Database/MySQL
For Oracle Tutorials.
http://www.codevdo.com/Database/Oracle
For iPhone Apps Tutorials.
http://www.codevdo.com/Mobile/iPhone_Apps
For Android Apps Tutorials.
http://www.codevdo.com/Mobile/Android_Apps
For HTML/DHTML Tutorials.
http://www.codevdo.com/Web/HTML_DHTML
For jQuery Tutorials.
http://www.codevdo.com/Web/jQuery
For PHP Tutorials.
http://www.codevdo.com/Web/PHP

Anúncios

Design patterns – Factory (Fábrica)

Antes de começarmos, segue algumas pergunta/respostas:

  1. O que é padrão de projeto?
    R: http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software
  2. O que é Factory pattern (fábrica)?
    1. Explicação sobre o padrão Factory:R: http://en.wikipedia.org/wiki/Factory_method_pattern
      R: http://en.wikipedia.org/wiki/State_pattern
    2. Qual sua categoria?R: Criacional
    3. Sua estrutura padrão:Estrutura Básica

Bom, explicações dadas, agora vamos começar a brincar com nossopadrão. O exemplo usado foi de uma fábrica celular.

Com base na estrutura básica do padrão fábrica, criei as seguintes classes:

//Produto
    abstract class Celular
    {
protected string numero;
public Celular(string numero) { this.numero = numero; }
public abstract void Ligar(string numero);
   }

//Produto concreto.

class IPhone : Celular
{
public Hashtable Agenda = new Hashtable();
public IPhone(string numero) : base(numero) { }
public override void Ligar(string numero)
{
Console.WriteLine(“({0} ligando para {1}.”,this.numero,numero);
Agenda[numero] = ( Agenda[numero] == null)? 0 : Convert.ToInt32( Agenda[numero])+1;
}
}
class Nokia : Celular
{
public Nokia(string numero) : base(numero) { }
   public override void Ligar(string numero)
{
Console.WriteLine(“({0} ligando >>> {1}…”, this.numero, numero);
}
}

//Criador

abstract class Factory
{
private Celular celular;
public abstract void Criar( string numero);
public Celular Celular
{
get {   return celular;  }
set  { celular = value;  }
}
}

//Fábrica

class IPhoneFactory : Factory
{
public override void Criar(string numero)
{
this.Celular = new IPhone(numero);
}
}
class NokiaFactory : Factory
{
public override void Criar( string numero)
{
this.Celular = new Nokia(numero);
}
}

O Diagrama dessa implementação ficará assim:


Sua chamada ficará assim:

Design patterns – State (Estado)

Antes de começarmos, segue algumas pergunta/respostas:

  1. O que é padrão de projeto? 
    R: http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software
  2. O que é   State pattern (estado)?

    1. Explicação sobre o padrão State:

      R: http://pt.wikipedia.org/wiki/State
      R: http://en.wikipedia.org/wiki/State_pattern

    2. Qual sua categoria?

      R: Comportamental

    3. Sua estrutura padrão:

      Estrutura Básica

  3. O que é um semáforo?

    R: http://bit.ly/mVxUVT

Bom, explicações dadas, agora vamos começar a brincar com nossopadrão. O exemplo usado foi de um semafóro de trânsito.

Com base na estrutura básica do padrão de estado, criei as seguintes classes:

public enum Sinal { VERMELHO, AMARELO, VERDE };

//Estado
public abstract class Status
{
public abstract Sinal Sinal { get; }
  public abstract ConsoleColor Cor { get; }
public abstract void ProximoStatus(Semaforo semaforo);
}

//Estados concretos.

public class Verde : Status
{
     public override ConsoleColor Cor { get { return ConsoleColor.Green; } }
public override Sinal Sinal { get { return Sinal.VERDE; } }
public override void ProximoStatus(Semaforo semaforo)
{
semaforo.Status = new Amarelo();
}
}

public class Verde : Status
{
public override ConsoleColor Cor { get { return ConsoleColor.Green; } }
       public override Sinal Sinal { get { return Sinal.VERDE; } }
public override void ProximoStatus(Semaforo semaforo)
{
semaforo.Status = new Amarelo();
}
}

public class Vermelho : Status
{
public override ConsoleColor Cor { get { return ConsoleColor.Red; } }
public override Sinal Sinal { get { return Sinal.VERMELHO; } }
public override void ProximoStatus(Semaforo semaforo)
{
semaforo.Status = new Verde();
}
}

//Contexto

 public class Semaforo
{
private Status status;
private ConsoleColor Vermelho = ConsoleColor.DarkRed;
private ConsoleColor Amarelo = ConsoleColor.DarkYellow;
private ConsoleColor Verde = ConsoleColor.DarkGreen;
public Semaforo(Status status)
{
this.status = status;
this.Desenhar();
}
public Status Status
{
get { return status; }
set
{
status = value;
Vermelho = ConsoleColor.DarkRed;
Amarelo = ConsoleColor.DarkYellow;
Verde = ConsoleColor.DarkGreen;
switch (status.Sinal)
{
case Sinal.VERDE:
Verde = ConsoleColor.Green;
break;
case Sinal.AMARELO:
Amarelo = ConsoleColor.Yellow;
break;

case Sinal.VERMELHO:
Vermelho = ConsoleColor.Red;
break;
}
this.AlterarSemaforo();
}
}
public void AlterarSinal()
{
status.ProximoStatus(this);
}
   private void AlterarSemaforo()
{
//código que aleterá as cores do semáforo.

}
private void Desenhar()
{
//código que desenhará o semáforo no console.
}

}

O Diagrama dessa implementação ficará assim:

Sua chamada ficará assim:

E o resultado final no console será :

Fonte : http://www.xmasters.com.br/francke/StatePattern.zip

public enum Sinal { VERMELHO, AMARELO, VERDE };

Encriptar ConnectionString do web.config, simples e direto.

ANTES:

Executar o fonte:

Configuration configuration = WebConfigurationManager.OpenWebConfiguration(“~”);
ConfigurationSection configurationSection = configuration.GetSection(“connectionStrings”);
configurationSection.SectionInformation.ProtectSection(“DataProtectionConfigurationProvider”);
configurationSection.SectionInformation.ForceSave = true;
configuration.Save(ConfigurationSaveMode.Full);

DEPOIS:

Como pegar o valor da connectionString ?
Response.Write ( ConfigurationManager.ConnectionStrings[“MinhaConnectionString”].ConnectionString );

Responsável pela mágica ->  DataProtectionConfigurationProvider

[]’s

DEPOIS:

Adicionar/Excluir e Ler Registro do Windows em C#, simples e direto.

Como disse, será simples é direto!


Gravar no Registro


string PATH = @"SOFTWARE\QX3\ROTAS\Hosts";
RegistryKey registryKey = Registry.LocalMachine.CreateSubKey(PATH);
registryKey.SetValue("Servidor SMTP", "192.169.0.121:25");
registryKey.SetValue("Servidor POP", "192.169.0.121:110");
registryKey.Close();


Resgatar valor do mesmo.


RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(PATH);
Console.WriteLine(registryKey.GetValue("Servidor POP"));


Remover Chave do registro.

Registry.LocalMachine.DeleteSubKey(PATH);

Simples e direto!
[]’s

GCTS – Gambi Certified Technology Specialist

Com o crescimento de novos tipos de gambiarras em meados de 2008 a Microsoft realizou também alterações em seu modelo de certificação. Visando esse público foi criado o GCTS – Gambi Certified Technology Specialist.
A certificação GCTS – é o nível mais básico de certificação entre as novas certificações.
Com esta certificação o profissional comprova seu conhecimento específico em desenvolvimento de POG ( programação orientado a gambiarra) e POT (programação orientada a trambique).
Abaixo temos um exemplo do certificado GCTS:


*Para os que não sabem o que é POT ou  POG,  aguarde…

Criando efeitos em fotos no ASP.NET

Bom, sei que já escrevi esse artigo no linha de código e no código fonte, e também sei que não posto nada construtivo em meu blog faz tempo…  😉

por isso estou dando um copy+paste dele aqui em em blog!  ;P

Vamos lá….

O .Net possui uma excelente biblioteca para tratamento de imagens,  ela nos possibilita gerar efeitos,  recortes, desenhos  e etc, tudo através de uma “simples página asp.net.

Antigamente para criar efeitos em fotos precisavamos usar alguma IDE gráfica para depois publica-las na internet. Hoje podemos fazer isso on-line, sem perder tempo.

Neste momento você deve estar pensando, “isso deve ser algo MUITO DIFICIL!”

Mas acredite, não é!

Hoje teremos uma prova de como é fácil e simples brincar com fotos usando Dot.Net.

Para começar abra o Visual Studio, em seguida crie um projeto WebSite.

Em seu WebForm,  arraste 3 controles de imagem.

Defina uma imagem para o controle Image1.

Para o controle Image2 defina a ImageUrl como fotos.apx?tipo=negativo e para o controle Image3 defina a ImageUrl como fotos.apx?tipo=cinza

Exemplo:

<asp:Image ID=”Image1″ runat=”server”

ImageUrl=”foto.jpg” /><br />

<asp:Image ID=”Image2″ runat=”server”

ImageUrl=”fotos.aspx?tipo=negativo” /><br />

<asp:Image ID=”Image3″ runat=”server”

ImageUrl=”fotos.aspx?tipo=cinza” />


Acho que já deu para entender  o que vamos fazer mais adiante, certo? :-]

No .cs de sua página, adicione os namespaces System.Drawing e System.Drawing.Imaging em seguida crie o método Efeito. Este método possui a seguinte assinatura:

public void Efeito(string tipo)

Implementação:

public void Efeito(string tipo)

{

/*Aqui estamos definindo nossa imagem. Note que estamos carregando a imagem definida no Image1.
*No artigo gerando barras expliquei como funciona a classe Bitmap.*/

Bitmap bmp = new Bitmap(Server.MapPath(this.Image1.ImageUrl));

int x, y;

Byte RGB;

Color cor;

for (y = 0; y < bmp.Height; y++)

{

for (x = 0; x < bmp.Width; x++)

{

/*O metodo getPixel como o nome já diz,passa a cor do pixel nas posições de x,y.*/

cor = bmp.GetPixel(x, y);

RGB = cor.G;

/*Neste ponto escolhemos qual efeito usar. Lembrando que você pode criar seus próprios efeitos, basta modificar os valores do RGB.*/

if(tipo == “negativo”){

// Configuração para gerar o efeito de NEGATIVO

bmp.SetPixel(x, y,

Color.FromArgb(255, 255 – cor.R,

255 – cor.G, 255 – cor.B));

}

else

{

/* ajuste para gerar efeito cinza em sua foto! */

bmp.SetPixel(x, y, Color.FromArgb(RGB, RGB, RGB));

}

}

}

/* Neste ponto você informa ao browser que o documento enviado a ele, é uma imagem;*/

Response.ContentType = “image/jpeg”;

bmp.Save(Response.OutputStream,ImageFormat.Jpeg);

bmp.Dispose();

}

No Page_load de sua página adicione a instrução abaixo.

if(Request.QueryString[“tipo”] != null)

Efeito(Request.QueryString[“tipo”]);

O resultado será semelhante a imagem abaixo:

viu como a mágica acontece?  😉

[]’s