Friday 18 December 2009

Como usar Lambda Expressions em C#

Eu sei que esta funcionalidade já existe à algum tempo e eu até já tinha usado em alguns exemplos, mas, ainda não tinha pensado em Lambda Expressions a sério.
Assim, resolvi hoje pegar em alguns exemplos e encontrar um exemplo que me sirva e tentar fazer alguma coisa. O que descobri é que é mais um nível de abstração no nosso código e em alguns casos, transforma-o em código cada vez mais dificil de ler e noutros casos facilita imenso.

Tentei resolver um problema que tenho no meu código que é a obtenção de um Entidade de diversas formas. Todos nós temos em alguma parte do nosso código as seguintes expressões: GetEntityByName ou GetEntityByEmail, onde Entity é a uma qualquer entidade da nossa aplicação e a seguir ao By temos toda e qualquer propriedade que faça sentido.

Este tipo de abordagem leva a um problema: “Magic String” espalhados no nosso código, pois se não vejamos. Nesses métodos temos habitualmente o seguinte código:

        public string GetEntityByName(string name)
        {
            string sqlStatement = string.Format("SELECT * FROM <Entity Table> WHERE name = {0}", name); 
            (…)       
        }

ou ainda:

         public string GetEntityByEmail(string name)
        {
            string sqlStatement = string.Format("SELECT * FROM <Entity Table> WHERE email = {0}", email);      
            (…)
        }

Uma qualquer alteração na tabela não leva um erro em Compiletime na nossa aplicação, mas, em Runtime.

Será que não conseguimos melhorar esta abordagem usando as expressões do C# 3.0? Como?
Com este método:

        protected virtual string GetEntityByProperty(Expression<Func<T, object>> expression, object value)
        {
            string selectedProperty = PropertyUtil.GetPropertyByName<T>(expression);

            string sqlStatement = string.Format("SELECT * FROM <Entity Table> WHERE {0} = {1}", selectedProperty, value);

            (…)
        }

Desta forma consigo reproduzir qualquer GetObjectBy que a minha aplicação necessite. A criação da linha de comando SQL está centralizado num só método e qualquer alteração que tenha que ser feita a esta, é efectuada num só lugar.

O Helper que uso para obter a propriedade a partir de uma expressão é:

    public static class PropertyUtil
    {
        public static string GetPropertyByName<T> (Expression<Func<T, object>> expression)
        {
            if (expression == null)
                throw new ArgumentNullException("propertyRefExpr", "propertyRefExpr is null.");

            MemberExpression memberExpr = expression.Body as MemberExpression;
            if (memberExpr == null)
            {
                UnaryExpression unaryExpr = expression.Body as UnaryExpression;
                if (unaryExpr != null && unaryExpr.NodeType == ExpressionType.Convert)
                    memberExpr = unaryExpr.Operand as MemberExpression;
            }

            if (memberExpr != null && memberExpr.Member.MemberType == MemberTypes.Property)
                return memberExpr.Member.Name;

            throw new ArgumentException("No property reference expression was found.", "expression");

        }
    }

Na minha aplicação passo a invocar este processo da seguinte forma:

        public string GetEntityByName(string name)
        {
            var user = GetEntityByProperty(user => user.Name, name);
            (…)       
        }

ou ainda:

        public string GetEntityByName(string email)
        {
            var user = GetEntityByProperty(user => user.Email, email);
            (…)       
        }

 

Desta, qualquer alteração no objecto User irá levar a um erro em CompileTime que podemos corrigir facilmente.


Abraços
Paulo Aboim Pinto

Thursday 26 November 2009

Visual Studio 2010 em pontos

Os pontos que irão ser destacados sobre as novidades do VS2010 logo mais na  formação serão:

 

  • Totalmente desenvolvido com Windows Presentation Fundation
  • Melhorias no Intelisense. Propriedades disponiveis conforme a framework escolhida.
  • Melhores mecanismos de pesquisa 
  • Drill down em métodos 
  • Vertical Selecion
  • Novas funcionalidade de Refactoring.
  • Novos Snipts em HTML Design
  • Debug com Debug History e Step Back
  • Novo template para New Web Application mais parecido com o MVC template
  • URL routing em projecto ASP.NET
  • SEO (Search Engine Optmizartion) Toolkit para identificar inconsistências nos WebSites externos.
  • faster javascript intelisense
  • Aumento da tolerancia ao erro. Por exemplo erro ao obter o Intelisense de um javascript é indicado.
  • Improvement no AJAX: Templates / controls / data binding
  • ADO.NET Entity Framework: Lazy Load / FK como objectos invés de campos.
  • Config Files para debug e release. 
  • Deploy profiles.

 

Esta apresentação é livre para todos os colaboradores da Altran


Paulo Aboim Pinto

Wednesday 25 November 2009

Apresentação do VS2010 na Altran

Amanhã, pelas 19:00 vai haver uma apresentação das novas funcionalidades do Visual Studio 2010 na Altran.

Esta apresentação vai ser feita por mim e vai ser filmada. Mais tarde espero poder postar aqui o seu video integral neste blog.

Este é a primeira apresentação dos produtos 2010 da Microsoft, estando pensado fazermos também apresentações sobre MVC 2 e SharePoint 2010 para breve.


Abraços
Paulo Aboim Pinto

Monday 23 November 2009

Uma forma diferente de escrever o nosso HTML

Hoje em dia com as ferramentas de design do VisualStudio nem nos lembramos como nem sempre era fácil escrever código HTML e ter que nos lembrarmos de imensas tags e quais as duas propriedades e atributos.

Encontrei este vídeo que está associado a uma ferramenta para Mac muito interessante. Espero que gostem.


Zen Coding v0.5 from Sergey Chikuyonok on Vimeo.


Paulo Aboim Pinto

Saturday 21 November 2009

Crome OS - Sistema operativo do Google

Muito se tem falado deste sistema operativo e pouco temos visto. Aqui está um vídeo sobre oque podemos esperar um sistema operativo desenvolvido pelo Google.

Google Chrome OS Demo


Paulo Aboim Pinto

Friday 20 November 2009

Lançamento do Visual Studio 2010 a 22 de Março de 2010

Hoje estava a ouvir o último PodCast do Scott Hanselman onde ele fala com o Phil Haack e eis que dizem que o Visual Studio 2010 (acabou de sair da Beta 2) tem data marcada para ser lançado: 22 de Março de 2010.

Juntamente com o VS2010 vai ser lançado o ASP.NET MVC 2 que trás imensas coisas novas que espero poder apresentar neste blog.


Paulo Aboim Pinto

Thursday 19 November 2009

Como aumentar a produtividade de uma equipa de programadores?

Esta pergunta foi-me feita à uns dias e depois de pensar um pouco aqui está um conjunto de medidas que podemos tomar para aumentarmos a produtividade de uma equipa de desenvolvimento.

Antes dos passos, devem ler o seguinte post: Quem deve ganhar mais? e passar a dar boas condições às pessoas produtivas.
  1. Implementar a política de Stand up mettings - Este tipo de reuniões podem ser feitas a meio da manhã e serve para aferir sobre o que cada um está a fazer e ainda partilhar entre todos os problemas que estão a ter, as vitórias e ainda promove a interacção entre os membros da equipa.

  2. Criar mecanismos de compilações automáticas (automated build) - quando temos uma equipa extensa onde pessoas diferentes trabalham em áreas diferentes da aplicação é importante termos a certeza que uma alteração não vá estragar outras áreas do código. Agendar compilações de todo o projecto duas ou três vezes por dia não é muito e pode garantir que alguns problemas são resolvidos ainda no processo de desenvolvimento.

  3. Em problemas com alguma dimensão, criar equipas de duas pessoas e implementar o Extreme Programming - Esta medida leva a que o código criticado à medida que é feito e um par de olhos extra é sempre bom para encontrar os bugs da solução.

  4. Criar momentos de Code Review - No mundo da consultoria a rotatividade das pessoas é cada vez maior, pelo que temos que ter a certeza que o código produzido por uma pessoa está de acordo com as regras impostas para o projecto. Existem diversas ferramentas de Code Review, que a cada compilação analisa o código para encontrar erros pontos onde não foram seguidas essas regras. Com regras é mais fácil de ler e entender por qualquer membro da equipa.

  5. Mostrar os progressos no desenvolvimento - Reunir com frequência com a equipa e mostrar que o seu trabalho está a ir a algum lado. Muitas das ferramentas de compilação diárias já elabora relatórios que indicam a produtividade (em linhas de código) de cada pessoa e melhorias nas alterações em termos de execução desse mesmo código.

  6. Tentas mostras demonstrações do produto todos os meses - Uma vez por mês o gestor técnico do projecto deve mostrar a todos como é que o projecto está a correr e fazer uma demonstração das novas funcionalidades implementadas bem como as melhorias e correcções que foram efectuadas. Assim é obrigatório ter o projecto sempre pronto a ser instalado num cliente, e todos os membros da equipa sabem o que está feito e o que ainda ser feito.

  7. Aprendam da fazer Unit Tests - Esta tem sido uma frase muito batida nos últimos dois a três anos, mas, ainda não se fazem testes unitários ao código. É importante e poupa tempo de desenvolvimento.

  8. Exigir da chefia ou da direcção técnica do projecto que esteja vários passos à frente do desenvolvimento - O que acontece é que a chefia técnica fica-se pelo início do projecto e depois quer saber se tudo ficou feito. Esta forma de trabalhar é errada. O acompanhamento deve ser diário.
Um projecto gerido desta forma não tem tempos mortos, em qualquer momento todos sabem o que tem que fazer e o chefe de projecto irá passar despercebido no meio disto. Digo ainda que pode ir de férias que uma equipa gerida desta forma irá conseguir efectuar o seu trabalho na mesma.

Abraços
Paulo Aboim Pinto

Quem devia ganhar mais?

Aqui está está uma questão que tenho perdido algum tempo ultimamente, quem deve ganhar mais? O técnico ou o gestor?

Nas últimas semanas tem vindo a público alguns dos ordenados dos gestores de topo da administração pública. Gestores como o Armando Vara ganha (mais coisa ou menos coisa) 50.000 euros (10.000 contos na moeda antiga) e são estes gestores que acham que não devemos aumentar o ordenado mínimo para 500 euros, pois, haverá empresas que deixam de ser competitivas.

Deixem-me colocar as coisas da seguinte forma? Quem são as pessoas que produzem numa empresa? Só com gestores as empresas continuam a produzir? Porque é que damos as melhores condições aos gestores (carro, telefone móvel, férias pagas e grandes ordenados) e aos técnicos o ordenado mínimo?

Eu, trabalho na área do desenvolvimento de software e tenho que dizer que tenho alguma sorte e um ordenado condigno, mas, mesmo assim há imensas desigualdades.
Sempre que vou para um projecto, o chefe de projecto (alguém não produtivo que só irá usar Office, ferramenta de email e pouco mais) tem acesso a um portátil topo de gama, cheio de capacidade enquanto que aos técnicos que necessitam de um computador decente, vão usar um compilador, ferramentas de edição de imagem, o Office e uma ferramenta de email, é lhes dado um computador velho e sem capacidade.

Porque haverá esta diferença? Depois, claro que ninguém, em Portugal, quer seguir a carreira técnica e querem ir todos para gestores....

Fica a pergunta no ar: Quem devia ganhar mais, os gestores ou os técnicos?


Paulo Aboim Pinto
Odivelas - Portugal

Tuesday 17 November 2009

Google Wave visto pela Microsoft!

Se não sabem ficam a saber, eu trabalho com tecnologias Microsoft e sempre trabalhei a minha vida toda, mas, mão é por trabalhar com estas tecnologias que irei aceitar tudo que a Microsoft diz sem pensar um pouco.

Hoje vi um filme no YouTube de um Arquitecto Chefe de Software da Microsoft a dizer que o Google Wave é anti-web. Que vai contra todo e qualquer conceito que a Web preconiza. Ao centralizar tudo num sistemas de comunicação vai contra a ideia de descentralização da Web.
Podem ouvir ele dizer isso neste vídeo


O mais engraçado não são estes comentários, mas, um que vão no seguimento desta palestra onde ele fala que a Microsoft vai apostar no Cloud Computing e que todas as aplicação vão passar a estar acessíveis de qualquer computador / equipamento móvel e com tudo centralizado.


isto tudo aliado com a visão da Microsoft do futuro que podemos ver no vídeo abaixo, não faz qualquer sentido. Basicamente tinham que dizer mal do Google Wave e esta foi a forma encontrada.



Beijos e Abraços
Paulo Aboim Pinto
Odivelas - Portugal


Google Wave, A análise!

É verdade que já passou algum tempo sobre o lançamento do Google Wave, mas, só agora resolvi vir escrever sobre tal.

Desde o dia 1 que tenho usado o Google Wave das mais diversas formas e tenho obtido várias opiniões sobre se o Google Wave é uma desilusão ou não para os utilizadores.
A minha opinião é que os utilizadores estavam convencidos que o Google Wave viria substituir os serviços de IM (Internet Messaging) com Yahoo ou MSN, os serviços de email (como hotmail ou GMail). O problema é que não substitui nada disso. Nos dá uma nova perspectiva sobre a forma de comunicação.

Este novo serviço é um conjunto de vários serviços que estão ainda disponíveis na internet como NewsGroups, IRC, IM e EMail. O Google Wave os une a todos num só serviço e ainda adiciona a possibilidade de transformarmos uma Wave numa entrada num Blog.

Não sei que esta será a forma de comunicação do futuro, o que sei é que é um passo na direcção do futuro sim.
Tenho usado o Google Wave como ferramenta de trabalho onde coloco as minhas ideias sobre algo que estou a fazer, partilho essas ideias com outras pessoas e invés de reunimos e discutir essas ideias, cada um dos participantes dá a sua contribuição na Wave.

Outra forma de utilizar o Google Wave é em reuniões. Sempre que participo numa reunião crio uma Wave com os participantes da mesma e vou colocando o que foi discutir na reunião. Como todos tem acesso à Wave, poderão adicionar os seus comentários aos temas discutidos e no final a acta da reunião (ou um resumo da reunião) está feito e com os comentários de todos.

Como podem ver, eu não uso o Google Wave como forma de conhecer novas pessoas ou ainda simplesmente como forma de comunicar, uso como ferramenta no meu trabalho de responsável técnico de soluções informáticas em .NET.

O que falta no Google Wave?
Ainda falta imenso no Google Wave. Falta essencialmente comunicação som outros serviços como email. Ainda não é possível criar uma Wave e enviar o seu conteúdo por email para alguém.
Esta limitação deve-se ao facto de ser um Preview do sistema e que ainda não está tudo pronto. Penso que o Google ainda está a ver se este é um serviço que deve apostar ou não e ainda não criou todas as formas de conectar o Google Wave aos demais serviços Google como Docs, Reader, GMail, Picasa, etc.

Ainda falta muito para o Google Wave ser um sistema de comunicação perfeito, mas, nós vivemos 40 anos com o email e ele não é perfeito, porque é que não podemos dar uma oportunidade ao Google Wave.

Abraços
Paulo Aboim Pinto
Odivelas - Portugal

Thursday 27 August 2009

SELECT * FROM <table> WHERE <campos> IN (<lista>) em LINQ

SELECT * FROM <table> WHERE <campos> IN (<lista>) em LINQ

Uma operação que parece relativamente simples, afinal não é. Se tivermos uma lista (string[]) e, usando o LINQ, quisermos cruzar com um SELECT temos que fazer o seguinte:

Copiar este método para o nosso projecto:

        static Expression<Func<TElement, bool>> BuildContainsExpression<TElement, TValue>(Expression<Func<TElement, TValue>> valueSelector, IEnumerable<TValue> values)
        {
            if (null == valueSelector) { throw new ArgumentNullException("valueSelector"); }
            if (null == values) { throw new ArgumentNullException("values"); }
            ParameterExpression p = valueSelector.Parameters.Single();
            // p => valueSelector(p) == values[0] || valueSelector(p) == ...
            if (!values.Any())
            {
                return e => false;
            }
            var equals = values.Select(value => (Expression)Expression.Equal(valueSelector.Body, Expression.Constant(value, typeof(TValue))));
            var body = equals.Aggregate<Expression>((accumulate, equal) => Expression.Or(accumulate, equal));
            return Expression.Lambda<Func<TElement, bool>>(body, p);
        }

e fazer o seguinte:

        IQueryable<string> results =
                    (from e in myTable.Where(BuildContainsExpression<string, string>(e => e, stringArray))
                     select e);
        results.ToList();


Só assim consigo fazer correctamente um SELECT * FROM <table> WHERE <campos> IN (<lista>) usando LINQ

Tuesday 2 June 2009

Benfica .. ai o meu Benfica!

Com tantos assuntos que andam agora na baila, gostaria de partilhar algo que já tenho falado em privado que é sobre o meu Benfica.

Na época passada, pela primeira vez fiz-me sócio do Glorioso SLB e comprei um lugar cativo e tentei estar presente em todo os jogos em casa. Terminada esta época desastrada só esperamos que a próxima nos traga algo de novo, algo que esperava já na anterior com a entrada do Rui Costa para Director Desportivo.

Todos temos ideia sobre o que queremos ou não para o clube, mas, uma coisa é certa, não somos nós que lá estamos. Não somos nós que estamos na lide diária com os jogadores, treinadores e dirigente. Não tenho qualquer dúvida que todo este trabalho não é fácil, mas, isso é simplesmente trabalho operacional, trabalho do dia a dia. O que falta na realidade ao Benfica é uma estratégia a médio prazo, uma confiança clara nos jogadores / treinadores que vem para ficar algum tempo.

Vejamos exemplos noutros clubes: No Sporting, mesmo o Paulo Bento não ser o melhor treinador do mundo, não sendo a pessoa mais competente do mundo, mantêm-se de pedra e cal no clube e nenhum jogador coloca em causa a autoridade do treinador. Porquê? Sempre que um jogador tentou levantar alguma polémica (os exemplos são mais que muitos) o treinador simplesmente o afastou das convocatórias e nenhum dirigente levantou a voz a dar uma palavra mais áspera sobre essa mesma decisão. Sempre ouvi comentários dizendo o treinador era soberano nas decisões técnicas.
No Benfica isso já não acontece. Todos são treinadores de bancada e todos mandam bitaites sobre o que o treinador deve ou não deve fazer.

Nas últimas semanas nenhum dirigente do Benfica veio para a comunicação social acalmar as palavras rudes dos jornais, deixando assim exposto o treinador a toda e qualquer especulação, que jornais como Record, que até diziam que outro treinador já tinha assinado pelo Benfica.
Viram algum dirigente do Benfica vir a público dizer que o projecto do Benfica é a 2 anos? Como querem que tenhamos um projecto a dois anos quando ninguém assume esse projecto?

Realmente, há coisas neste Benfica tem que mudar e não é o treinador, mas, a mentalidade dos dirigentes.



Paulo Aboim Pinto

Friday 29 May 2009

O que esperar da Europa?

O que esperar da Europa?

Tenho estado com alguma atenção no que se passa na União Europeia e surgiram-me algumas questões que gostaria de partilhar.

Vivemos num modelo político europeu que necessita rapidamente de evoluir. Necessita evoluir, pois, não tem poderes para fazer face aos problemas reais dos europeus numa europa cada vez mais global que tem que ser como um todo, cada vez mais competitiva.
A pergunta é: Evoluir para quê?
Para mim esta resposta é muito simples, estamos a evoluir para o modelo de política federal onde, iremos viver numa federação de nações dirigidas por um governo central que irá decidir ou decretar políticas gerais que devem ser implementadas por todos os estados federais (como Portugal).

Ao momento nenhum dos partidos e nenhum dos candidados (a não ser o ex-presidente Mário Soares) fala abertamente sobre este futuro, mas, se pensarmos que Vital Moreira veio falar de imposto europeu, na criação num Alto-Comissário para os assuntos externos (vulgarmente chamado ministro dos negócios estrangeiros) e já não falar no Tratado de Lisboa, que deixa em aberto esta hipotese de futuro para a Europa, podemos ver que em alguns anos iremos ouvir falar nesta ideia dos Estados Unidos da Europa.

Em que esta união de estados federais traria como vantagens para Portugal?
Para já esta pergunta é difícil de responder. Um dos pontos que vejo desde já como uma vantagem é que as grandes obras nacionais como o aeroporto e o TGV seriam inseridas numa estratégia europeia de desenvolvimento local. Lembremos que o novo aeroporto de Lisboa pretende concorrer directamente com o aeroporto de Madrid. No âmbito de uma política de transportes global, europeia, esta concorrencia faz sentido?
A ideia de ligar as capitais por TGV, no âmbito de uma política de transportes global parece-me mais lógica e que faça mais sentido.
Para Portugal, que procura ser mais competitivo em relação a Espanha, como estado isolado estas obras fazem todo o sentido, pelo que fica a pergunta, fariam sentido no âmbito de uma politica comum europeia?

O mesmo falo em relação aos portos marítmos, onde, Portugal poderia ver a sua posição fortalecida devido ao facto de sermos o primeiro país em que os barcos passam no sentido do norte da europa. Desta forma uma política acertada levaria a esses barcos a atracarem em portos portugueses e as cargas serem transportadas na rede europeia ferroviária até ao seu destino. Como consequencia desta política, levaria a um desenvolvimento dos portos nacionais e na rede ferroviária para que possa ser competitiva em relação ao transporte marítmo das cargas até ao seu destino.

Em relação a impostos? Será que Portugal sairia beneficiado? Neste ponto é que acho que podemo e/ou não sair beneficiados.
Um imposto europeu seria uma mera transferência de um imposto local (como o IVA) para o governo central. Este por sua vez iria proceder à sua distribuição segundo critérios de desenvolvimento local dos vários estados federais e políticas comuns.
Desta forma seria normal que em determinados orçamentos Portugal recebesse mais imposto que aquele que entregou ao governo central e noutros receber menos. Penso que desta forma estaria facilitado a ideia de uma europa a duas velocidades, pois, seria da responsabilidade do governo central ajudar os estados federais mais pobres e menos desenvolvidos a desenvolver-se a custo dos estados mais ricos e mais desenvolvidos.

Outro ponto positivo seria na resolução de problemas como o da Quimonda. Este problema deixaria de ser de Portugal e da Alemanha, para ser um problema global que deveria ter uma intervenção clara do governo central europeu. O facto de os dois estados membros não estarem envolvidos numa política global de desenvolvimento tecnológico faz com que a EU deixe cair uma empresa como a Quimonda porque simplesmente não tem meios legais para tal. Estou convencido que um governo central europeu teria os meios e as ferramentas para resolver este problema.

Estes são os pontos que queria retratar sobre a possível criação de uma federação de estados na europa e de que forma poderiamos ganhar com isso.


Paulo Aboim Pinto
Odivelas - Portugal

Wednesday 20 May 2009

Visual Studio 2010 Beta 1 Ready for download

Visual Studio 2010 Beta 1 Ready for download



Sim, é verdade. Está disponível no MSDN a versão beta 1 do Visual Studio 2010 com a .NET Framework 4.0. Esta combinação poderá ser muito facilmente a futura plataforma de desenvolvimento da Microsoft.



Para todos que tem utilizador na MSDN, aqui está o link onde podem fazer o download.



Podem testar também



  • Visual Studio 2010 Professional

  • Visual Studio Team Foundation Server 2010
  • Visual Studio Team System 2010 Team Suite





Cumprimentos

Paulo Aboim Pinto

Wednesday 25 February 2009

Error Code: 8100030f no Windows Live Messenger

Com o anterior Messenger não tinha qualquer problemas, mas, com a versão 9.0 deste famoso programa de mensagens instantaneas não conseguir conectar-me, pois, tinha este erro.

A resolução foi até simples. Aparentemente em algumas redes (de onde eu trabalho é um exemplo) há um problema de resolução de nomes, pelo que bastou inserir no ficheiros Hosts situação em: “c:\WINT\system32\drivers\etc\” (se tiver outra versão do Windows, adapte o caminho) a seguinte linha:

65.54.239.80 messenger.hotmail.com

Voilá…já tenho o Windows live messenger neste windows e a funcionar no trabalho.

 

Paulo Aboim Pinto

Derren Brown – um mago nos tempos modernos

Ultimamente tenho pesquisado um pouco sobre PNL (Programação Neuro-Linguistica, NLP em inglês)e manipulação das pessoas devido a uns vídeos que vi deste extraordinário personagem.

Ele é capaz de convencer as pessoas das coisas mais incríveis como: pagar com notas de papel em branco, receber dinheiro de uma aposta sem ter ganho, adivinhar o PIN do multibanco de um milionário e um infindável mundo de coisas que só vendo.

Ao ver estes filmes e a forma natural como as pessoas fazem as coisas para ele, sem pensar e parecendo que fizeram de livre e expontânea vontade, apercebemos que nada que fazemos é porque queremos, mas, porque alguém colocou na nossa mente a necessidade ou a vontade de fazermos.
Os publicitários tem usado estas técnicas nos seus anúncios, os polícos tem usado estas técnicas para nos convencer que são as pessoas certas para votarmos, até mesmo nós temos usado algumas destas técnicas quando tentamos conquistas alguém para nos dar um trabalho ou até mesmo conquistas sexuais e para vender algo.

Muitos de nós temos esta capacidade de convencer as pessoas e nem nos apercebemos como o fazemos. O que o Derren Brown faz é mostrar como tudo isto é possível simplesmente usando algumas técnicas muito simples.

Procurem no Youtube este nome e vejam alguns dos filmes. Tenho a certeza que irão ficar pasmados como eu fiquei.

 

Paulo Aboim Pinto

Friday 13 February 2009

O absurdo: Microsoft dá 250 mil dólares pela cabeça do criador do Conficker

 

Segundo a notícia no portal TEK onde diz que a Microsoft dá 250 mil dólares pela cabeça do Conficker devo dizer que já vi de tudo.

Então eles fazem um sistema operativo cheio de vulnerabilides, alguém prova isso mesmo e ainda é perseguido. Se essa pessoa usou o virus para se apoderar de passwords das pessoas em questão, acho que faria todo o sentido que ESSAS PESSOAS levantassem um processo contra o criador do vírus, mas, o que aconteceu não é em isso.
A Microsoft paga para encontrar o criador de um virus que infectou os utilizadores do seu sistema operativo…..

Não seria mais prudente não fazer sair versões do SO mais estáveis e realmente testar antes de vender? A culpa é inteiramente da Microsoft e não de quem explora as vulnerabilidades. Os coitados que compraram o SO à Microsoft é que deviam processar o gigante de software por lançar produtos de má qualidade e a preços exurbitantes.


Paulo Aboim Pinto
Odivelas - Portugal

Friday 6 February 2009

Slumdog Millionaire

Ontem fui ver a sessão das 21:30 no Jumbo de Alfragide o filme Slumdog Millionaire a convite de um grupo de amigos que por tudo e por nada vão ao cinema.

Este filme roda à volta de um concurso de televisão: Quem quer ser milionário, mas, depois de um hora a ver o filme nos abercebemos que é uma história de amor.

Conta a história de uma jovem que apesar de ter nascido num bairro de lata, é uma pessoa integra e com principios que passa o filme todo a correr atrás de Latika por quem está apaixonado desde de criança.
Com os flashbacks, entendemos como é que ele sabe todas as respostas, pois, elas contam a história da sua vida.

Com uma excelente interpretação (especialmente das crianças) o realizador de Trainspotting, Danny Boyle conta-nos uma história muito bem montada que agarra os espectadores ao assento durante as 2 horas de filmes.

Uma grande fita.


Paulo Aboim Pinto

Monday 2 February 2009

O inevitável Mantorras

Este sábado fui ao estádio da luz ver o glorioso contra o Rio Ave num relvado que mais parecia um batatal.

Felizmente o relavado estava mau para os dois lados, assim, podemos culpar o jardineiro pela pobre prestação de ambas as equipas. O único ponto positivo foi a equipa de arbitragem que de uma forma geral apitou bem e sem beneficiar claramente uma ou outra equipa.

No final, parecia que estavamos na época de Trapatoni que sempre que era necessário desempatar o jogo entrava o inevitável Mantorras e mesmo cocho, mesmo sem jogar sempre marcou…. não é que marcou mesmo?

Ele entrou aos 65m do primeiro jogo da 2º volta e marcou um golo aos 69 minutos. Os mais cépticos dizem, foi sorte.. ou ainda o defesa não quiz entrar com força para não aleijar o menino! O que aconteceu é que ele marcou e deu a vitória ao BENFICA.

Quique, fizeste muito bem em deixar o Mantorras no plantel, mesmo, que seja o +1.

Obrigado
Paulo Aboim Pinto

Tuesday 13 January 2009

Para quando o sumaríssimo ao Bruno Alves?

Há já algum tempo que estou a juntar diversos vídeos deste defesa do futebol clube do porto, mas, esta semana foi demais.
É incrível que nenhuma destas entradas foi sequer falta, pois, vejamos:



Nota-se que nesta situação, ele tenta claramente pisar o adversário, pois, o movimento do pé está a afastar-se e ele, propositadamente volta atrás para pisar o colega de trabalho.



Nestas imagens, podemos ver com clareza que o que o Bruno Alves tenta fazer é cotovelar o adversário, mesmo antes da bola chegar.



Estas imagens são conhecidas do ultimo jogo com o Sporting, onde o Bruno Alves, mais uma vez, com toda a força pisa um colega de profissão. Desta vez é o João Moutinho do Sporting. Quando será que os senhores da arbitragem começam a ver isto?


Nesta o engraçado não é a entrada à Kung-fu, mas, o facto de ele se contorcer de dores no final. Coitado do adversário que ficou com uma bela marca nas costelas.


Mais uma vez pergunto: Se as imagens tem ajudo a abrir muitos sumarissimos, porque é que não se abre um a este jogador que faz tudo dentro de campo, menos jogar à bola.

Denunciem esta situação!
Saudações Benfiquistas
Paulo Aboim Pinto

Sunday 4 January 2009

Participar no denvolvimento do Olimpo CMS

Há já algum tempo que ando a trabalhar neste projecto e apesar de muitos se terem interessado no projecto, desde sempre que trabalhado sozinho. Tenho a certeza que não é porque o código não está disponível, pois, desde sempre que o código está disponível (Inicialmente no Source Forge e agora no Google Code).

Para fazer o download do projecto é necessário instalar um cliente de SVN (para windows pode usar o TortoiseSVN Client). O SVN é um gestor de versões que evolui do CVS que é conhecido por toda a Internet, pois, ela praticamente foi desenvolvida por milhares de programadores ao longo do globo usando o CVS.

Neste momento uso o MonoDevelop como IDE de desenvolvimento. Escolhi este IDE porque está num estado de maturação suficiente para suportar o desenvolvimento de um produto como o Olimpo CMS. Outra razão pela escolha é porque eu uso como sistema operativo um Ubuntu. Este sistema operativo é baseado no kernel linux e o Visual Studio não corre neste num sistema operativo. Assim, tive que encontrar uma solução para desenvolver em .NET num ambiente Linux e o Mono e MonoDevelop são a alternativa certa.

O Olimpo CMS está desenvolvido usando diversas camadas com especificidades diferentes:
  • olimpoTools.DataAccess - Camada de acesso a dados. Esta camada é responsável pelas acções directas a um repositório de dados (MySQL, SQL Server, etc.). Tem diversas funcionalidades de persistncia de dados que usa System.Reflection nas transposições dos dados "de e para" objectos e listas de objectos.
  • olimpo.Common.Theme - esta camada é responsável pelo carregamento de um OlimpoTheme. O OlimpoTheme é uma tema gravado na base de dados do Olimpo CMS que é representa e carrega todo o site e nas zonas definidas.
  • olimpo.WebUI - Ponto de entrada do Olimpo CMS. Usa do olimpo.Common.Theme para carregar o site.
  • Modules - Tudo no Olimpo CMS são módulos. Apesar de haver módulos transversais a toda a aplicação (Membership, Globals, Language, etc.), a maior parte dos módulos encerram em si as suas funcionalidades. Existe um conjunto de Interfaces que definem como um módulo deve ser construido e o que deve implementar para que o olimpo.Common.Theme o possa carregar no lugar correcto da página.
    Cada módulo é um projecto Web isolado que está dentro da árvore de directório do Olimpo CMS, cujo binário compilado é colocado na directória bin do projecto principal. Desta forma, não necessitamos de compilar o Olimpo CMS quando efectuamos uma alteração num módulo.
Praticamente todo o desenvolvimento usa a metodologia MVC (Model View Controller) e já existem alguns testes unitários que tentam garantir a qualidade das alterações.

Agora já sabem como está estuturado o Olimpo CMS no alto nível. Mais tarde irei começar a explicar os seus componentes.


Abraços
Paulo Aboim Pinto
Odivelas - Portugal

Friday 2 January 2009

Olimpo - Content Manager System

Quase um ano depois, resolvi pegar no Olimpo - Content Manager System e termina-lo. Este software é tem como objectivo ser a base de trabalho para o desenvolvimento de sites Web (Intranet / Extranet).

Desde há alguns anos que ando a brincar ao desenvolvimento de sites e a 1º versão do Olimpo foi desenvolvida em ASP 1.0 + Access em 1999 quando comecei a pensar em desenvolver o site para a Tusófona - Real Tuna Lusóna (tuna que fundei em 1996).
Por diversos motivos, rapidamente o site passou a ser desenvolvido em PHP + MySQL. Um desses motivos foi que o Data Center era em minha casa e manter a estrutura de servidores com máquina Windows dava imenso trabalho a manter (ao contrário que muitos pensam, manter um Windows é um trabalho diário extenuante).

Há cerca de 6 ou 7 anos resolvi que era a altura para o Olimpo evoluir e começei de migrar tudo para .NET 1.1, mas, como eu não uso windows em casa tudo ficou complicado.
Com o amadurecimento do Mono e MonoDevelop pude retormar o projecto e mesmo usando Linux como sistema operativo, posso desenvolver em C# .NET.

Ao longo destes anos por causa do excesso de trabalho e um casamento falhado não tenho tido muito tempo para dedicar-me ao Olimpo CMS, ou, a minha dedicação não tem sido estável.

Hoje o Olimpo está totalmente desenvolvido usando .NET 2.0, apesar de estar compilado com Mono 2.3.
Os data center que tenho trabalhado não tem o mono instalado nas suas máquinas linux, pelo que tenho recorrido a máquinas Windows com o .NET 2.0 intalado e até agora não tenho tido problemas entre o .NET e Mono.

Existem diversos concorrentes que já estão instaurandos e com provas dadas no merdado à vários anos como: DotNetNuke, Mojo Portal em .NET e um infindável número de CMS desenvolvidos em PHP, mas, o Olimpo CMS tem as suas virtudes / vantagens que são:

  • Equipa de desenvolvimento portuguesa (o que é nacional é bom e para já a equipa é só uma pessoa).
  • Uso do C# .NET (e não VB.NET como o DotNetNuke).
  • Pensado para ser totalmente modular desde o início.
  • É completamente grátis. Licenca Free Software.
  • Tenta usar as novas motodologias de desenvolvimento (MVC, Singleton, etc).
Da mesma forma que o projecto Tusófona.com foi o impulsionador do Olimpo, este projecto voltou a ser de novo a razão do avanço. Depois de quase 5 anos com o mesmo site, foi-me pedido para fazer um novo e qual a melhor plataforma? O Olimpo CMS claro. Assim, nas últimas semanas tenho trabalhado com afinco para começar a ter algo online. A primeira versão deste novo site foi colocada online em 31/12/2008 e quase todos os dias algo novo é colocado online.

O Olimpo CMS não pretende ser o melhor CMS do mercado, nem sequer pretende ser considerado. É um projecto pequeno com a ambição académica e não comercial. Claro que alguém pode achar que pode ser usado comercialmente. Nesta situação só posso desejar boa sorte.
Claro que já pensei em tranformar o Olimpo num produto que possa ser vendido, mas, isso fica para outro post.

Para que usar software de CMS como DotNetNuke, Jomla, WordPerfect, etc. Se és português, tenta usar o Olimpo CMS e verás que não é assim tão diferente dos outros.
Dentro em breve terei processos de instalação / configuração / administração para que qualquer pessoa posso instalar / usar o Olimpo CMS. Até lá, vão vendo a implementação de tal em http://www.tusofona.com

Abraços
Paulo Aboim Pinto
Odivelas - Portugal