Blog Maurício Luís -

Tecnologia e programação web - Consultoria em análise e desenvolvimento de sistemas. Action Script, VB.NET, C#, ASP, PHP, MySQL, SQL Server. Magento, Drupal, Joomla, Wordpress e etc.

Como baixar o conteúdo de uma determinada página HTML em uma determinada URL e manipulá-lo?

O código abaixo faz o download através de um stream do conteúdo de uma determinada URL e obtém o código fonte do arquivo especificado renderizado em HTML.

Baixando arquivos da internet de forma automática:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Configuration;

namespace Downloads
{
    internal class URL
    {
        /// 
        /// Obtem o conteudo de um arquivo na web
        /// 
        /// Url a ser processada
        /// Conteúdo do arquivo
        public string ObterConteudo(string u)
        {
            byte[] buffer;
            Stream st;
            StringBuilder sb;

            CarregaObjetos(u, out buffer, out st, out sb);

            int iTotalBuffer = 0;

            iTotalBuffer = ProcessaStreamReader(buffer, st, sb, iTotalBuffer);

            string result = sb.ToString();

            return result;
        }

        /// 
        /// Instancia os objetos
        /// 
        /// Url a ser processada
        /// Objeto de buffer
        /// Objeto de stream
        /// Objeto de stringbuilder
        private static void CarregaObjetos(string u, out byte[] buffer, out Stream st, out StringBuilder sb)
        {
            WebRequest wr = WebRequest.Create(u);
            WebResponse wrp = wr.GetResponse();
            buffer = new byte[128];
            st = wrp.GetResponseStream();
            sb = new StringBuilder();
        }

        /// 
        /// Processa o stream reader
        /// 
        /// Objeto de buffer
        /// Objeto de stream
        /// Objeto de stringbuilder
        /// Contador de processos do buffer
        /// Quantidade de processos do buffer
        private static int ProcessaStreamReader(byte[] buffer, Stream st, StringBuilder sb, int iTotalBuffer)
        {
            iTotalBuffer = st.Read(buffer, 0, 128);

            while ((iTotalBuffer != 0))
            {
                sb.Append(Encoding.ASCII.GetString(buffer, 0, iTotalBuffer));
                iTotalBuffer = st.Read(buffer, 0, 128);
            }

            return iTotalBuffer;
        }
    }
}

Fazendo a chamada do método e obtendo o conteúdo em uma string em um console application:

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Net;

namespace Downloads
{
    class Program
    {
        static void Main(string[] args)
        {
            var downloads = new Downloads(); // instancia a classe
            string url = "http://www.mauricio-luis.com/blog"; // url a ser baixada
            string conteudoObtido = downloads.ObterConteudo(url); // obtém o conteúdo HTML em uma string
        }
    }
}
5

Como criar um diretório usando C# ou VB.NET?

A classe File, deriva do namespace System.File.IO que gerencia a manipulação de arquivos e pastas.
Para saber mais sobre o mesmo, acesse:  http://msdn.microsoft.com/en-us/library/system.io.file.aspx

Código C#:

/// 
/// Verifica se um diretório existe, caso não, cria
/// 
private void CriaDiretorio()
{
if (!Directory.Exists("C:\temp\Diretorio1"))
Directory.CreateDirectory(temp);
}

Código VB.NET:

   ''' 
    ''' Verifica se um diretório existe, caso não, cria
    ''' 
    Private Sub CriaDiretorio()
        If Not Directory.Exists("C:\temp\Diretorio1") Then
            Directory.CreateDirectory(temp)
        End If
    End Sub

Como excluir um arquivo com C# ou VB.NET de maneira ágil e organizada?

A classe File, deriva do namespace System.File.IO que gerencia a manipulação de arquivos e pastas.
Para saber mais sobre o mesmo, acesse:  http://msdn.microsoft.com/en-us/library/system.io.file.aspx

/// 
        /// Exclui o arquivo especificado
        /// 
        private static void ExcluiArquivo()
        {
            string arquivo = "F:\arquivo.txt";
            System.IO.File.Delete(arquivo);
        }

Em VB.NET o mesmo código ficaria da seguinte maneira:

    ''' 
    ''' Exclui o arquivo especificado
    ''' 
    Private Shared Sub ExcluiArquivo()
        Dim arquivo As String = "F:\arquivo.txt"
        System.IO.File.Delete(arquivo)
    End Sub

Como criar um arquivo de texto usando C# ou VB.NET?

Uma maneira mais gerenciável de se fazer este tipo de rotina, é apontar o path principal de onde o arquivo será criado no “web.config” da seguinte maneira:



  
    
  

A classe File, deriva do namespace System.File.IO que gerencia a manipulação de arquivos e pastas.
Para saber mais sobre o mesmo, acesse:  http://msdn.microsoft.com/en-us/library/system.io.file.aspx

Então podemos criar um novo de texto arquivo em C# da seguinte maneira:

///
        /// Cria o arquivo especificado
        ///
        private static void CriaArquivo()
        {
            string path = ConfigurationSettings.AppSettings["path"];
            string arquivo = "novoArquivo.txt";

            var create = File.CreateText(path + arquivo);
            create.Close();
        }

Em VB.NET o mesmo código ficaria da seguinte maneira:

'''
''' Cria o arquivo especificado
'''
Private Shared Sub CriaArquivo()
    Dim path As String = ConfigurationSettings.AppSettings("path")
    Dim arquivo As String = "novoArquivo.txt"

    Dim create = File.CreateText(path & arquivo)
    create.Close()
End Sub

“A Herança é um princípio da Programação Orientada a Objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização. A herança permite a criação de subclasses que herdam alguns dos atributos e das operações (ou Métodos) da classe pai (super-classe ou classe base). A herança é um conceito aplicado no momento de criação das classes. Ela é usada na intenção de reaproveitar código ou comportamento generalizado ou especializar operações ou atributos.” (…)

Trecho do texto descrevendo o que é herança, retirado do Wikipédia. Saiba mais sobre o conceito de herança em programação acessando os links abaixo:
http://pt.wikipedia.org/wiki/Herança_(programação)
http://msdn.microsoft.com/pt-br/library/ms173149(VS.90).aspx

-

Olá,

Hoje falaremos um pouco sobre herança em aplicações Orientadas a Objetos. Criando um simples sistema que possui como super classe PESSOA e como classes derivadas FUNCIONÁRIO e CLIENTE. Conceito:
Um funcionário e um cliente, necessariamente herda características de uma pessoa.

PASSO 1:

Vamos abrir o Visual Studio e no menu acima ir em File > New Project > Visual C# > Console Application, digitar um nome para o projeto e clicar em “OK”.

PASSO 2:

Certifique-se de que a aba SOLUTION está aberta, caso não esteja, você pode abrí-la com o atalho: crtl + alt + L

PASSO 3:

Clique com o botão no ícone da solution, e acesse a opção: ADD > New Item > Visual C# Class, entre com o nome “Pessoa” e clique em “OK”.

PASSO 4:

Vamos criar uma simples classe Pessoa, que possui as seguintes propriedades:
- Nome (string)
- Nascimento (DateTime)
- Cpf (long)

Respectivamente: Nome do atributo (tipo)

    ///
    /// Classe pessoa
    ///
    public class Pessoa
    {
        ///
        /// Nome da pessoa
        ///
        public string Nome { get; set; }

        ///
        /// Data de aniversário da pessoa
        ///
        public DateTime Nascimento { get; set; }

        ///
        /// Números do cpf da pessoa
        ///
        public long Cpf { get; set; }
    }

PASSO 5:
Repita o passo anterior para criarmos agora uma nova classe, sendo que com o nome “Funcionario”, que terá as seguintes propriedades:
- DataAdmissao (DateTime)
- Salario (double)
- Funcao (string)

Entre com o código abaixo:

    ///
    /// Classe de uma pessoa que é funcionário
    ///
    public class Funcionario : Pessoa // percebe-se que agora o nome da classe possui " : Pessoa". Isto faz a classe "Funcionário" herdar as características de "Pessoa". A herança nesta diferença ao criar uma nova classe.
    {
        ///
        /// Data da admissão do funcionário
        ///
        public DateTime DataAdmissao { get; set; }

        ///
        /// Salário do funcionário
        ///
        public double Salario { get; set; }

        ///
        /// Função exercida pelo mesmo
        ///
        /// Analista de Sistemas, Gerente de contas, Auxiliar Administrativo e etc
        public string Funcao { get; set; }
       }

PASSO 6:
Faça o mesmo agora para criarmos a classe “Cliente”, que possui os seguintes atributos:
- Empresa (string)
- EnderecoComercial (string)

///
    /// Classe de uma pessoa que é cliente
    ///
    public class Cliente : Pessoa
    {
        ///
        /// Nome da empresa em que o mesmo trabalha
        ///
        public string Empresa { get; set; }

        ///
        /// Endereço para se localizar o cliente
        ///
        public string EnderecoComercial { get; set; }
}

PASSO 7:

Agora, criaremos um método em cada classe (Funcionário e Cliente) que escreverá todas as propriedades dos mesmos na tela do console. Para isso, abra o arquivo “Funcionario.cs” na solution e entre com o seguinte método:

///
        ///
        /// Escreve informações do funcionário na tela
        ///
        public void EscreveInformacoes()
        {
            Console.WriteLine("CRIADO UM NOVO FUNCIONÁRIO:");
            Console.WriteLine("CPF: " + this.Cpf);
            Console.WriteLine("Data de Admissão: " + this.DataAdmissao.Date.ToString("dd/MM/yyyy"));
            Console.WriteLine("Função: " + this.Funcao);
            Console.WriteLine("Nascimento: " + this.Nascimento.Date.ToString("dd/MM/yyyy"));
            Console.WriteLine("Nome: " + this.Nome);
            Console.WriteLine("Salário: R$" + this.Salario);
        }

Faça o mesmo no arquivo “Cliente.cs”:

///
        ///
        /// Escreve na tela informações do cliente na tela
        ///
        public void EscreveInformacoes()
        {
            Console.WriteLine();
            Console.WriteLine("CRIADO UM NOVO CLIENTE:");
            Console.WriteLine("Empresa: " + this.Empresa);
            Console.WriteLine("Endereço comercial: " + this.EnderecoComercial);
            Console.WriteLine("Nascimento: " + this.Nascimento.Date.Date.ToString("dd/MM/yyyy"));
            Console.WriteLine("Nome: " + this.Nome);
        }

PASSO 8:

Finalmente vamos agora instanciar os objetos na classe “Program.cs” do console, para exibirmos os dados na tela de nossas classes funcionando.

Antes disso, vamos nos certificar de que a codificação está correta e funcionando, fazendo um BUILD da solution. Acesse o menu superior, clique em BUILD e em seguida em BUILD SOLUTION:
Como fazer um build de uma solution em .NET

Certificando-se de que não há erros em nossa Solution, vamos na classe Program, no método construtor: “Main” e fazer uma chamada para dois métodos que iremos construir em seguida. Estes métodos, instanciarão os objetos “Funcionario” e “Cliente” e escreverá seus dados na tela:

        ///
        /// Método construtor do console
        ///
        static void Main(string[] args)
        {
            CarregaFuncionario(); // Cria a instancia de funcionario
            CarregaCliente(); // Cria a instancia do cliente

            Console.ReadKey(); // Este comando faz a tela do console não fechar após ser executada e aguardar até uma tecla ser pressionada, para finalizar a instancia do console
        }

PASSO 9:

Vamos criar os métodos que chamamos anteriormente da seguinte maneira:

  ///
        /// Instancia um novo funcionário
        ///
        static void CarregaFuncionario()
        {
            var funcionario = new Funcionario()
            {
                Cpf = 12345678900,
                DataAdmissao = new DateTime(2010, 5, 4),
                Funcao = "Analista de Testes",
                Nascimento = new DateTime(1968, 10, 20),
                Nome = "Maurício Santos",
                Salario = 450.37
            };

            funcionario.EscreveInformacoes();
        }

        ///
        /// Instancia um novo cliente
        ///
        static void CarregaCliente()
        {
            var cliente = new Cliente()
            {
                Cpf = 98765432100,
                Empresa = "Sanduíches S.A",
                EnderecoComercial = "Av. Rio Branco 100",
                Nascimento = new DateTime(1981, 1, 12),
                Nome = "Kiko da Silva"
            };

            cliente.EscreveInformacoes();
        }

OBSERVAÇÕES:

1) Perceba, que quando começamos a escrever cada propriedade da classe, o Visual Studio já mostra o comentário que fizemos para cada elemento e lhe auxilia na escrita com o seu intelesense:

Intelesense do Visual Studio para escrita de propriedades

2) Perceba que o mesmo acontece na escrita de chamadas de métodos:

Intelesense Visual Studio 2010 2008 métodos

PASSO 10:

Finalmente estamos prontos para testar o programa. Aperte F5 e a resposta deverá ser igual a abaixo:

Executando um programa no Visual Studio Heranças em .NET

-

Espero que tenham gostado da simples abordagem sobre heranças. Estou abrindo os comentários para perguntas.
Baixe a solution completa funcionando

Resumo da notícia no site Mudança Abruptas:

” Segundo a reportagem da bloomberg o volume de negócios explodiu no Dow Jones para algo em torno de 29,4 bilhões de negócios no dia de hoje. O período do erro de computação foi das 14:40 as 15:00 hora local. Deve-se salientar no entanto que esse erro não é uma desculpa para a queda, pois a mesma já vinha acontecendo devido ao problema financeiro na Grécia. Rumores de notas de dívidas rebaixadas para Portugal e Espanha circulam no mercado e a eleição no Reino Unido geram mais incertezas e desconfianças. O Nikkei abriu em queda de 4,02% e outro problema que está na reserva para ser resolvido é o caso Goldman Sachs.”

Ver matéria integeral: http://www.mudancasabruptas.com.br/ErroPrograma.html

O fundador do Facebook, Mark Zuckerberg, que está no Brasil para uma conferência sobre a rede social afirma que o Facebook tem atualmente 1,5 milhão de brasileiros cadastrados. Hoje, possui cerca de 250 milhões de usuários reconhecidos oficialmente.

Atualmente o Facebook é o quinto site mais visitado do mundo, com 340 milhões de visitantes únicos, ficando atrás apenas dos sites Google, Microsoft e Yahoo.

Clique aqui para ler a matéria na íntegra no jornal O Globo

1

O site do Paypal ficou fora do ar por cerca de uma hora hoje, às 15:30 no horário de Brasília. O problema foi detectado após o site do E-Bay detecar algumas problemas em seu serviço de integração com o maior site de pagamentos online do mundo - que hoje tem cerca de 75 milhões de usuários cadastrados e foi responsável por 1/3 das vendas do E-bay no segundo trimestre de 2009.

Clique aqui e leia a matéria na íntegra.

O hacker americano Daniel Gonçalvez é condenado a prisão por roubar o domínio “p2p.com” e vendê-lo por 111 mil dólares.

Clique aqui e leia a matéria do jornal O Globo na íntegra.

A matéria “The coming merging of mind and machine” publicada por uma das revistas mais importantes do mundo, mostra como a mesclagem entre a tecnologia e a mente humana está próxima.

O eclipse entre o cérebro e a tecnologia, mais próximo do que imaginamos
“Sometime early in this century the intelligence of machines will
exceed that of humans. Within a quarter of a century, machines will exhibit the full range of human intellect, emotions and skills, ranging from musical and other creative aptitudes to physical movement. They will claim to have feelings and, unlike today’s virtual personalities, will be very convincing when they tell us so. By around 2020 a $1,000 computer will at least match the processing power of the human brain.
By 2029 the software for intelligence will have been largely mastered, and the average personal computer will be equivalent to 1,000 brains.

Once computers achieve a level of intelligence comparable to that of humans, they will necessarily soar past it. For example, if I learn French, I can’t readily download that learning to you. The reason is that for us, learning involves successions of stunningly complex patterns of interconnections among brain cells (neurons) and among the concentrations of biochemicals known as neurotransmitters that enable impulses to travel from neuron to neuron. We have no way of quickly downloading these patterns. But quick downloading will allow our nonbiological creations to share immediately what they learn with billions of other machines. Ultimately, nonbiological entities will master not only the sum total of their own knowledge but all of ours as well…”

The Coming Merging of Mind and Machine - clique para ler a matéria na íntegra.