sexta-feira, 12 de junho de 2009

Microsoft pronta para lançar seu antivírus gratuito

De acordo com a Reuters, a Microsoft já tem uma versão Beta de seu antivírus pronta para ser liberada para testes. A idéia é lançar um produto sem custo para os usuários, batendo de frente com os tradicionais antivírus existentes no mercado.

Acionistas de fornecedoras de antivírus, tais como Symantec e McAfee já estão preocupados com o impacto deste lançamento da Microsoft. No longo prazo, esta nova o oferta pode causar um impacto significante na concorrência. No entanto, um porta-voz da Symantec diz estar tranqüilo, pois a empresa já vem se saindo bem contra ofertas gratuitas de softwares antivírus existentes no Mercado.

[]'s

Leonardo X. T. Cardoso

quinta-feira, 4 de junho de 2009

teste

teste

terça-feira, 2 de junho de 2009

Lista de inicialização no C++ 0x


A maioria dos desenvolvedores C++ sonham com a possibilidade das declarações abaixo:



std::vector< std::string > peoples = { “joao”, “pedro", “maria" };


ou


std::list< std::pair< std::string, int> > peoples = {
{"joao",12}, {"maria", 15}, {"pedro", 20}
};


Agora o sonho se tornará realidade, pois é isto que a lista de inicialização irá possibilitar no C++ 0x. Desenvolvedores C++ não ficarão mais restritos a utilização de lista de inicialização apenas em arrays.

Para a construção da lista de inicialização o C++ 0x irá associa-la a um novo tipo chamado std::initializer_list. Isto permitirá que construtores e as tradicionais funções recebam uma lista de inicialização como parâmetro. A lista de inicialização pode ter tamanho arbitrário, mas os elementos devem ser homogêneos (todos do mesmo tipo T ou conversíveis para T).

Por exemplo:


class List
{
public:
List(std::initializer_list< int > list);
};


Esta declaração permite que a classe List seja construída a partir de uma sequência de inteiros como mostrado no exemplo abaixo:


List my_list = {1, 4, 5, 6};



O construtor da classe List é chamado construtor de lista de inicialização.

A classe std::initializer_list, apesar de ser um tipo de primeira classe no C++ 0x, somente pode ser inicializada estaticamente pelo compilador. A lista de inicialização sempre é constante e não pode ser modificada depois de criada.

Vejamos abaixo a implementação do construtor de lista de inicialização da classe std::vector da biblioteca padrão de gabarito – (Standard Template Library). Este exemplo foi retirado daqui.



template< class E> class vector {
public:
vector (std::initializer_list s) // novo construtor da lista de inicialização
{
// reserva o espaço de memoria apropriado
reserve(s.size());

// inicializa elementos com o da lista de inicializacao
uninitialized_copy(s.begin(), s.end(), elem);

// seta o tamanho do vector
sz = s.size();
}

// ...... ...
};



Observe que não existe almoço grátis. O programador deve implementar o suporte para a lista de inicialização para todas as suas classes.

Por hoje é isso. Em breve posto outra feature do C++ 0x.

[]'s
Leonardo X. T. Cardoso