quinta-feira, dezembro 22, 2011

A lei seca

A conselho do meu amigo Pedro Santos comecei ontem a ver a série Boardwalk Empire. Ao contrário da maior parte das séries que vejo que são de Sci-fi, esta é uma série de cariz histórico com uma forte componente cultural que me agrada bastante. Apesar de só ter visto os 2 primeiros episódios fiquei bastante satisfeito e expectante com os próximos episódios. Mais uma nota, num filme de gangster quem melhor para realizar o primeiro episódio que não o Martin Scorsese?

Esta série fala da época histórica da lei seca, uma lei que como é reconhecida por unanimidade foi um erro histórico. Ao ver a série facilmente fiz um paralelismo com os tempos actuais, e como diz o proverbio, se não aprenderes com a história estás condenado a cometer os mesmos erros, creio que o que se passa hoje no que toca às drogas é igual ao que se passou com o álcool naqueles tempos. Senão vejamos, quais foram as consequências da introdução da lei seca, quem bebia continuou a beber e às vezes até mais porque o fruto proibido é o mais desejado, houve uma abrupta escalada de preços pago pelo consumidor final, traficantes enriqueceram, novas formas de criminalidade e aumento da mesma (referência da série a Al Capone). Aliado a isto ainda podemos dizer que o Estado não beneficia dos impostos destas vendas que agora são ilegais, e sim podem chamar-me de oportunista das desgraças dos outros, mas não é isso exactamente que acontece com o tabaco?

Tudo isto me leva a muitos pontos de interrogação. Será que não seria mesmo melhor legalizar as drogas, pelo menos as leves? Que dizem os estudos da experiência holandesa? Que ficaria prejudicado se as drogas fossem legalizadas?

segunda-feira, dezembro 12, 2011

Lisboa - Olhalvo de bicicleta

Pela 2ª vez eu e os meus amigos do costume (Nuno, Pedro e Jorge) fomos de casa do Nuno em Lisboa até Olhalvo de bicicleta. Desta vez a ideia seria fazer não pela estrada nacional mas por trilhos o que aumentaria a dificuldade e a distância consideravelmente.

Logo pela manhã quando me levantei percebi que a coisa não ia ser fácil, estava um frio intenso e pelo que tinha visto na meteorologia iam estar nuvens baixas todo o dia. Chego a casa do Nuno por volta das 8h, ainda comemos e por volta das 9h saímos. Um frio terrível ainda para mais para mim que sou super magro o frio afecta-me imenso.


Começámos logo por trilhos, tudo muito molhado, muita lama e muito muito mas mesmo muito frio, não sentia os dedos quer das mãos quer dos pés. Passado 40-50 minutos de estarmos a andar o Nuno reparou que o GPS dele tinha passado de 100% de bateria para cerca de 30%, isto era um problema pois o trilho que tínhamos estava lá marcado e como não conhecíamos o caminho sem GPS ia ser difícil chegarmos a Olhalvo. Provavelmente a bateria tal como eu não se deu bem com o frio e descarregou daquela maneira inesperada.


Lá fomos obrigados a desfiar para a estrada nacional e a irmos por um caminho que já conhecíamos. Visto que o caminho era mais simples a opção para tornar a viagem mais interessante foi tentar manter o ritmo elevado. Apesar de estarmos com bicicletas e pneus de BBT conseguimos manter um ritmo a rondar os 25km/h. 


O tempo manteve-se sempre bastante frio e cada paragem que fazíamos para comer ou para verificar qualquer coisa na bicicleta tornava-se um tormento para arrancar novamente. À chegada a Alenquer comecei a sentir dificuldades em respirar, muita humidade e muito frio o que não favorece nada os asmáticos. Tive de pedir para baixar-mos um pouco o ritmo e aqueles últimos 10km foram feitos mesmo assim a 15-20km/h. à chegada a Olhalvo não sentia mãos nem pés, mal consegui tirar as luvas porque tinha as mãos inchadas do frio. E despir-me para entrar na banheira...outra guerra, não tinha força ou sensibilidade nas mãos para puxar a roupa para fora do corpo, ainda por cima os calções de ciclismo são de licra e ficam justos ao corpo...que filme!

A viagem acabou por ficar um pouco arruinada, a volta que era para ser feita também de bicicleta no domingo acabou por ficar cancelada, quando acordámos no domingo estava a chover e nevoeiro, então decidimos não arriscar.


sexta-feira, novembro 25, 2011

Debug a um web site live

Uma das coisas que já tinha sentido falta quando implementei interoperabilidade com outros sistemas (ex: Paypal), foi a necessidade de fazer debug do site live. Isto acontece por um motivo, os callbacks desses sistemas externos não sabem o que é o nosso localhost, eles sabem sim o que são URLs (ex: www.xpto.pt), logo os callbacks não podem ser feitos para localhost como é óbvio.

Ontem queria fazer debug às comunicações com o Facebook para saber o que realmente me estava a chegar à mão, então decidi perder tempo a descobrir como fazia o debug do callback. Apesar de ter demorado uma tarde entre configurações de router, configurações de IIS, configurações de debugging e mais uma data de tentativas falhadas, quando cheguei à solução ela até é bastante simples.
  • Colocar o porto 80 do IIS não a apontar para a directoria do nosso site live, tipicamente C:\inetpub\wwwroot, mas sim para a nossa directoria de desenvolvimento.
  • Ir às propriedades do nosso projecto web e meter que o nosso servidor vai ser o IIS

Pode ainda ser necessário arrancar o Visual Studio como administrador devido a alguma restrição de permissões, isto depende das configurações de cada máquina. Finalmente é só arrancar o debugger do Visual Studio e meter os breakpoints que se quiserem, todos os pedidos ao site passam então a ser capturados.

quarta-feira, novembro 23, 2011

Update com Join

Fazer um update a uma coluna com base no valor de uma coluna doutra tabela parecia-me que seria algo de complexo, afinal até é bastante simples.
UPDATE TableToUpdate
SET TableToUpdate.FieldToUpdate = TableWithValues.FieldWithValue
FROM TableToUpdate
INNER JOIN TableWithValues 
ON TableWithValues.FieldWithValue = TableToUpdate.FieldToUpdate 

domingo, novembro 06, 2011

Helpo - 24 Horas a Nadar Contra a Pobreza

Esta madrugada participei na iniciativa da Helpo na AHBE em que consistia em estar sempre alguém a nadar durante 24h. Acabei por me oferecer para fazer um dos turnos com menos pessoas o das 5-7 horas da manhã (porque será que havia poucas pessoas aquela hora), mas mesmo assim fomos 6 bravos a realizar 2 estafetas a essa hora da madrugada.

O valor da inscrição era o valor simbólico de 5€ que revertia em retorno dos projectos da Helpo. Acabou por ser divertido a natação noturna, tirando a parte de acordar as 4 horas, sempre com boa disposição e um ambiente descontraído. A distância percorrida não tem grande importância mas foi de 2000 metros durante as 2 horas. Parabéns pela iniciativa e até à próxima.

sexta-feira, novembro 04, 2011

Conviction

Já há algum tempo que não faço aqui nenhuma referência a nenhum filme, não porque tenha deixado de ver filmes, mas porque os filmes que tenho visto ultimamente não se destacam e não acrescentam nada de interessante.

Para quem me conhece sabe que eu aprecio bastante filmes baseados em factos verídicos, dá um toque de realismo e se bem realizado intensifica as sensações transmitidas pelo filme. É o caso do Conviction, um filme excelente em que um homem é condenado por um crime que não cometeu e em que a sua irmã tudo faz para provar a sua inocência, ao ponto de abdicar da sua própria vida e do Mundo que a rodeia. Uma interpretação irrepreensível de uma das melhores actrizes da nova geração a Hilary Swank.

segunda-feira, outubro 31, 2011

Estágio de Taekwondo

Este fim-de-semana a convite do meu amigo Nuno Silva, participei do estágio de Taekwondo da escola Mais TaeKwonDo. Apesar de não ser praticante de nenhum tipo de arte marcial o estágio centrava-se na componente física, em desafios de grupo e testes à capacidade de resistência, logo era possível eu enquadrar-me neste estágio.

Tudo começou no sábado de manhã, fomos levados vendados para um local a alguns quilómetros do parque de campismo onde estávamos, o objectivo era voltar ao parque ultrapassando algumas provas. Corridas no meio do mato, arrastar um tronco pela praia, transportar um tronco e ergue-lo como um mastro num local elevado, cavar trincheiras, foram algumas das provas que tivemos de realizar.


No domingo aproveitou-se ainda a manhã para fazermos um passeio até à praia onde nos dividimos entre quem jogava futebol, vólei ou simplesmente relaxava na areia das mazelas do dia anterior. Para finalizar um belo churrasco ao almoço para revigorar corpo e alma.

O meu muito obrigado a todas as pessoas que foram neste estágio pois apesar de eu ser o outsider e de conhecer poucas das pessoas antes do estágio, nunca me fizeram sentir como um outsider, bem pelo contrário, fui sempre tratado como um dos elementos do grupo.

sexta-feira, outubro 28, 2011

MVC ActionButton

Em MVC um dos métodos mais úteis é o ActionLink que nos permite criar um link, dando pelo menos a acção responsável por tratar a request. Estranhamente não existe o equivalente para botões, tipo ActionButton. Andei a pesquisar no meu amigo Google e depois ter lido alguns disparates e algumas resoluções o mais rebuscadas que se possam imaginar com quilos de código css, para algo tão simples como ter um botão, cheguei a uma implementação minha que para mim é algo simples e eficaz.

        public static IHtmlString ActionButton(this HtmlHelper htmlHelper, 
           string text, string actionName, string controllerName, object routeValues)
        {
            UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;
            string url = urlHelper.Action(actionName, controllerName, routeValues);

            var input = new TagBuilder("input");
            input.Attributes.Add("type", "button");
            input.Attributes.Add("onclick", 
               string.Format("javascript:location.href=('{0}')", url));
            input.Attributes.Add("value", text);

            return MvcHtmlString.Create(input.ToString());
        }

quinta-feira, outubro 27, 2011

Vida de programador

Depois de já ter escrito 2 vezes sobre a vida de um programador (link1 e link2), encontrei ontem este site com umas bandas desenhadas deliciosas sobre o dia a dia dos programadores. Deixo aqui só um exemplo.


quarta-feira, outubro 26, 2011

Problemas no deploy de uma aplicação .NET MVC

Este foi o meu primeiro deploy de uma aplicação MVC para um servidor de testes, e devo dizer que bati em mais paredes do que estava à espera. Primeiro passo foi instalar a .NET Framework 4.0, até aqui nada de especial. De seguida instalei o SQL Express 2008 R2, que seria o motor de base de dados que iria utilizar.

Vamos então ao deploy em si, crio um pacote de deploy com o Visual Studio, crio uma directoria virtual no servidor e copio para lá o conteúdo do pacote. Primeiro erro, levo logo com um erro 500.19, que significa que o ficheiro web.config está mal configurado e que não consegue ser interpretado.


Bem fui averiguar e lá descobri o problema, no meu web.config estava a utilizar a tag que me possibilita rescrever URLs, como o IIS não sabia interpretar essa tag estava a devolver o erro 500.19. Solução é instalar no IIS o módulo URL Rewrite.

Voltando a testar novo erro, agora o problema não estava no web.config mas sim nas referências para as assembly. Ao instalar a .NET Framework 4.0, julguei que todas as dlls necessárias estariam na GAC, aparentemente não o que provocou o erro: Could not load file or assembly 'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. 

 Uma solução possível passa por dizer ao Visual Studio que aquela referência é para criar uma cópia local, assim quando é feito o pacote a referência é copiada para dentro da pasta bin.

Além do System.Web.Mvc também devem ser incluídas as referências que se encontram na imagem, ou outras que sejam System.Web.*.

Agora é que é pensei eu, bem ainda não estava com sorte e toma lá mais um erro: Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. O quê mais assembly que não consegue ser referênciada! Na minha máquina de desenvolvimento esta dll tava na GAC mais uma vez ao contrário do servidor de produção. A solução passa por acrescentar a dll às referências do projecto no Visual Studio e mais uma vez dizer para criar uma cópia local. Alem desta dll ainda são precisas as dlls: System.Web.WebPages.Razor, System.Web.Razor e System.Web.WebPages.Deployment.

É pá o site já responde, vamos lá fazer login e começar a testar...pimba mais um erro, não é possível autenticar no SQL com o utilizador escolhido. No fundo este problema já não tem a ver com a aplicação ser MVC, poderia ser qualquer tipo de outra aplicação que utilizasse o SQL. Vou tentar autenticar-me directamente no SQL Management Studio e o mesmo erro acontece. Vou ver se estou a permitir ligações TCP/IP no SQL Configuration Management e sim estava! Depois de alguma pesquisa, de bater umas quantas vezes na mesa e chamar uns quantos nomes ao servidor lá descobri o problema, no próprio SQL Management Studio também é necessário configurar a autenticação como sendo mixed mode não bastando dizer que são permitidas ligações TCP/IP.


Ufffff, finalmente tudo a funcionar...