[PFR] ADODB e o Windows 7 SP1


Deparei-me com este problema há uns meses na empresa, e hoje novamente em casa. O Service Pack 1 do Windows 7 quebra a compatibilidade binária com o ADODB 6.0, por causa dos novos GUIDs associados aos componentes da biblioteca. O que isto significa é que projectos compilados em máquinas com o Windows 7 SP1 irão ter problemas ao serem executadas em versões anteriores do S.O.

Nada a temer, senão uma dificuldade em encontrar a solução (perdi algumas horas quando me deparei com o problema a 1ª vez, e iria pelo mesmo caminho hoje se não conhecesse o problema). A solução é simples, e passa por registar os ficheiros TLB que apontam para a versão anterior dos componentes. As instruções e os ficheiros encontram-se aqui.



MEC e a vitória do FCP


in http://desporto.publico.pt/noticia.aspx?id=1488496

Pronto, está bem, ganharam. (…) E, no entanto, nós os benfiquistas, achamos inacreditável. Custa-nos aceitar mas, mesmo assim, com o espírito magnânimo e (porque não dizê-lo?) superior em todos os aspectos, estamos dispostos a pagar o que nos custou. (…) o Porto precisa de aprender esta lição (…) : ganhar não é o objectivo. (…) A verdade é que o Benfica reconhece e agradece que não pode – nem quer – ganhar sempre. (…) só o Benfica é que sabe perder. Ganhou tantas vezes – muitas vezes sem fazer um esforço especial para isso – que ficou com uma consciência da validez relativista de ganhar. (…) Quem perde como o Benfica – renunciando à opulência fácil de ganhar – fica sempre a ganhar. Deixando ganhar os outros, os benfiquistas mostram que os resultados são sempre uma questão secundária, mais apreciados pelos adversários invejosos e menores do que, propriamente, pelos adeptos. (…) O Benfica (…) compreende que, caso [os adversários] nunca ganhem, dá a impressão (…) que o Benfica não tem concorrentes.

(…)

Parabéns ao Porto. E obrigadinho por ajudar a manter a ilusão indispensável de não ser impossível sermos derrotados.

Obrigados!

Este senhor é, sem dúvida, o maior.



Cura


O tempo não faz mais sentido
Desde o momento em que ficou tudo perdido,
Quando a história morreu de vez.

Ficou o limbo estendido no chão,
E a incerteza de poder dar a mão,
Deu lugar ao vazio em que tudo se desfez.

Portas fechadas, janelas trancadas,
Encalhadas com trancas pesadas
Que raiva e orgulho não deixam abrir.

Preso numa canção desatinada,
A repetição da história que de novo não tem nada
A não ser o desfecho que se deixa cair.

Eleva ao céu, enterra fundo.
Cria vida, destrói o mundo.

Venha então, a raiva que cura
o peso do semblante carregado.
Perde-se tudo, e o que perdura
são restos do que poderia ter passado.

Para a vida que vem, a história é passado.
O que foi ferido irá estar sarado.



Perseguição


Ainda me persegues nas noites vazias, em que o deserto da minha mente te chama para me assombrar. Envolves-me na doçura do teu sentimento mascarado, que arrancaste com a certeza que dizes ter, aquela mesma que antes renegavas. Repetidamente.

Ainda me móis o sentimento, ainda me sinto em afogamento de cada vez que me visitas; o aperto do espírito que não me abandona, a perfeição que relembro daquilo que poderia ter sido, e que foi extinguido em menos de nada.

E contigo trazes a fraqueza que há em mim, levas-me ao sítio do desconforto, fazes-me mal. Fazes-me perder o calor que transborda, porque te perco porque não te tenho, e na falsa magia de não te ter, fazes-me mal. És o nada, um resto de tudo que nunca será mais que aquilo que já foi. Fazes-me mal.



Inception – A Origem


Bem, depois de aguentar uma semana e algumas desmarcações para ver o filme, lá o vi no sábado passado. Muito francamente, já me tinha passado um pouco aquele frenesim inicial, não sei bem porquê: só vi boas críticas ao filme.

Dito isto, provavelmente fiquei com as expectativas demasiado elevadas. O filme é bom, mas faltou aquele efeito “WOW” do Matrix. Isto aliado a algumas (poucas) falhas detectadas, e o facto de o final ficar em aberto, não ajuda.

De qualquer forma, é um grande filme, com as expectativas elevadas a destruírem um pouco a obra. Leonardo DiCaprio volta a escolher bem o papel, e está rodeado de bons actores. Os efeitos especiais estão brilhantes, e custa a crer que não são reais. Mas isso já é um pouco o pão-nosso-de-cada-dia no cinema actual. Recomendado, e facilmente um dos filmes do ano.



Need for Speed: Hot Pursuit


Tenho que pôr aqui o trailer da E3… está de fazer crescer água na boca! :D



Avatar – The Movie


No passado sábado fui ver o Avatar, o novo filme-sensação de James Cameron, com Sam Worthington e Zoe Saldana nos principais papéis, e nomes como Sigourney Weaver, Stephen Lang e Michelle Rodriguez a dar-lhes suporte. É um filme grandioso, com efeitos espectaculares e uma estória que convence.

Um marine, que ficou paraplégico após sofrer um acidente, é enviado para um planeta distante (Pandora) para substituir o seu falecido irmão gémeo – devido ao seu código genético ser igual – numa missão de aproximação à raça nativa, de forma a negociar uma relocação em nome de uma empresa que está interessada em explorar um minério existente no planeta. esta missão requer que ele tome controlo de um avatar (daí o nome do filme :P ), um corpo híbrido fabricado recorrendo a uma mistura entre o código genético de um humano – que se torna o seu controlador – e dos alienígenas.

Ao conviver com a tribo nativa, o protagonista começa a ver as coisas de forma diferente, apaixona-se, e… vão ver o filme! Vale a pena ver no cinema, e segundo me disseram, vale ainda mais a pena se for em 3D.

Tirando a parte de ter que pagar extra pela versão 3D, não tendo hipótese de desfrutar dela (não tenho visão estereoscópica), recomendo.

Ah, e Boas Festas!



Uma Aventura na entrega do Projecto


Quero partilhar convosco a “série de eventos desagradáveis” (referência cinematográfica :P ) que sucederam nas últimas 3 horas antes do limite para a entrega do Projecto. É uma história longa, mas de alto nível de entretenimento e emoção. Pelo menos foi o que nos pareceu ao fim da noite.

Tudo começou, estava eu e o mobes no ISEL a tratar dos últimos detalhes para a entrega, quando demos pela falta do código da aplicação servidor. Como tinha sido eu o último a fazer alterações à mesma, procurei no portátil e na pen USB, os dois únicos sítios onde poderia estar, chegando então à conclusão que estaria, em vez disso, no computador de casa. Ora, eu costumo ter o remote desktop activado, mas naquele dia não tinha por causa de umas alterações na rede caseira, após as quais não reconfigurei o router de modo a permitir o acesso remoto.

Como já estávamos a ficar sem tempo e ainda tínhamos algumas coisas para fazer, decidimos deixar para a hora da impressão final do relatório a ida a minha casa para obter o código, após o que voltaríamos, já com o relatório impresso, e faltaria só tratar das versões electrónicas.

Como nota, aquando da entrega do relatório, é necessário entregar 3 cópias impressas do mesmo, mais 3 discos, contendo a versão electrónica do relatório, e todo o material produzido relevante para o projecto.

Terminámos as preparações por volta das 20h30, tempo mais que suficiente para imprimir o relatório, ir buscar o que faltava, fazer alguns testes e entregar. Ou, pelo menos, foi o que pensámos.

Fomos então à reprografia ver se ainda lá estava alguém, tendo já em mente que já poderiam ter fechado, e capacitados que teríamos que ir ao Vasco da Gama para fazer as impressões. Ideia esparvoada, como se poderá ver à frente.

Chegámos à reprografia da AE do ISEL, e como só fechavam às 21h00, resolvemos fazer lá as impressões. Entretanto, lembrámo-nos que não tínhamos paginado as folhas do relatório, e lá fui eu a correr ao departamento buscar o portátil para fazermos a paginação na reprografia. Terminada a paginação, com as devidas complicações devido aos cabeçalhos/rodapés, às folhas em branco e às páginas de título, as quais já tínhamos mandado imprimir antes, lá mandámos imprimir e encadernar as 3 cópias, e fizemo-nos ao caminho até minha casa. Faltavam então 5 minutos para as 21h.

Chegado a casa, e enquanto procurava pelo projecto no computador, liga-me o mobes, que tinha ficado no carro a olhar para o relatório, e a conversa foi mais ou menos assim:

“Olha…”

“Sim?”

“Temos um problema no relatório…”

“Ah sim? O quê?”

“Estão aqui uns erros no índice. Se calhar não actualizámos depois de fazer as alterações.”

“Ah. Pois não…”

O que aconteceu: durante a edição do relatório, eliminámos alguns capítulos, movemos outros, e não actualizámos o índice, pelo que, na hora da impressão, o Word não sabia o que meter como número de página. Mas isto só apareceu na impressão, abrindo o documento no Word aparecia tudo bem.

Então lá actualizei o índice, e imprimi uma folha com o mesmo, e partimos para uma nova missão: encontrar uma loja, que fizesse encadernações, e que estivesse aberta às 21h30.

Primeira paragem: Centro Comercial da Portela. De Sacavém, entenda-se. Aquele que faz de rotunda-gigantesca-com-estacionamento-à-volta-com-parquímetros-que-irrita-fortemente-o-pessoal-que-lá-quer-ir. Felizmente que àquela hora já não se paga. Ainda mais felizmente porque as lojas de interesse já estavam fechadas.

Próxima paragem: Spacio Shopping, ex-Olivais Shopping. Chegámos lá eram 21h45. fomos à loja de impressões, explicámos o problema, que era substituir uma folha numa encadernação já feita.

“É possível?” – perguntei.

“Sim. Mas com essa encadernação não, que não tenho máquinas com essa medida”

Desespero.

“Onde podem conseguir a esta hora é no Staples, no Office Centre. Eles fecham às 22h30″

Nova esperança. “Obrigado!”

E lá fomos nós dar a volta para irmos ao Staples, que ainda é uma voltinha grande, quando vista a distância a que fica o Staples do Spacio.

Chegámos lá eram 22h10, o que contando com semáforos não foi assim tanto. Chegados ao portão, estavam os seguranças a fechá-lo, pelo que já não conseguimos entrar, e lá fomos novamente dar a volta para voltar ao Staples, desta vez já com o conhecimento de que o parque fechava mais cedo, e com o intuito de deixar o carro no parque do Lidl e ir a pé até ao Staples.

Estacionado o carro, arrancámos então para o Staples, onde chegámos às 22h20, e encontrámos um letreiro a dizer o seguinte (ou algo parecido):

“Horário de funcionamento: __:__ – 22h00″

E o edifício todo fechado e Às escuras. Novo ataque de pânico. Lá fomos a correr de novo para o carro (por esta altura já se notava o peso sobre o ponteiro da gasolina) e fomos ao Vasco da Gama.

Lá, fomos à tabacaria ao pé do continente, onde vimos que não tinham máquinas de encadernação, e de seguida à Papelaria Fernandes, já sem grandes esperanças. Na PF, a menina informou-nos:

“O único sitio aqui onde fazem isso é na gare, no centro de cópias”

O problema era que o Centro de Cópias da Gare já tinha fechado. Foi aí que desistimos e voltámos para o ISEL, para ir falar com o Engenheiro e explicar-lhe a situação.

Após a explicação, fomos informados de que poderíamos entregar a versão em papel na 2ª feira, desde que entregássemos a versão electrónica até à hora limite.

2h30 desperdiçadas, entre a busca pelo software que estava na pen, e a busca pela loja de encadernação. E nós com falta de tempo… yay.

Eram 23h00 quando regressámos ao departamento. Acabámos de produzir a versão electrónica, 3 discos gravados, eram 23h27, mais coisa menos coisa. O mobes foi para cima, para ver se o segurança não nos trancava lá dentro (para quem não sabe, o edifício é fechado às 23h30, e só reabre às 00h00, e a partir daí de hora a hora), enquanto eu fiquei a acabar de testar o último disco.

Quando cheguei à entrada do DEETC, estava o segurança a trancar a porta. Por sorte, quando apareci ainda ele tinha a chave na fechadura, e fez o especial favor de não me deixar trancado lá dentro.

Vim depois a saber que o mobes quase andou à porrada com ele porque ele não queria estar à espera mais um minuto (entretanto eram 23h30), porque senão “txinhá ki ficá à isspérá dji todumundu, e nãum sáiá dji lá até àis duáis”. Enfim. Maitê ftw.

Passado isto, (não, ainda não acabou =D ) fomos ter com o Engenheiro para entregar o projecto. No caminho, lembrei-me que não tinha identificado os discos, e que não tínhamos caneta de acetato para o fazer. “Talvez o Eng. tenha…!”

Mas não tinha. Estava uma sala aberta com duas pessoas, as quais também não tinham caneta, e que até iam também precisar.

Então, na sala do fundo, com uma probabilidade daquelas que ronda os infinitésimos, Estavam dois colegas nossos, numa 6ª à noite, após as 23h30, a ter uma discussão de uma cadeira, no preciso dia em que terminava o prazo para a entrega do Projecto. E melhor ainda: um deles TINHA MESMO uma caneta de acetato!

Assim, atribuladamente, finalmente conseguimos entregar o Projecto…

Espero sinceramente que aquele colega tenha tido uma nota brutal na cadeira a que estava a fazer discussão! :D

E que o segurança tenha sido violado a caminho da paragem. Por homens brutos. Que cheirassem mal. E que ele não gostasse. Mas isso não interessa!

Então? Foi emocionante ou não? :D



Execução de gatilhos DML em SQL Server 2005+


Coisa interessante que descobri há momentos, quando andava a pesquisar informação relacionada: um trigger é executado na transacção implícita da instrução SQL que o desencadeou.

DML triggers are invoked when a data manipulation language (DML) event takes place in the database. DML events include INSERT, UPDATE, or DELETE statements that modify data in a specified table or view. A DML trigger can query other tables and can include complex Transact-SQL statements. The trigger and the statement that fires it are treated as a single transaction, which can be rolled back from within the trigger. If a severe error is detected (for example, insufficient disk space), the entire transaction automatically rolls back.

O que faz todo o sentido: se um trigger “pertence” a uma instrução SQL, é natural que seja executado no mesmo contexto que a instrução.



Win32 – Criar controlos com identificadores


Em MFC é fácil.

Em win32, também! Basta passar no parâmetro hMenu do CreateWindow o valor do identificador do controlo, algo do género:

CreateWindow(TEXT("BUTTON"), TEXT("MyButton"), WS_VISIBLE | WS_CHILD, 10, 10, 100, 32, hWnd,
    (HMENU)100, // O ID do botão será 100
    hInst, NULL);

Ou, melhor ainda,

enum ControlIDs { ID_BUTTON_ONE = 100 };
CreateWindow(TEXT("BUTTON"), TEXT("MyButton"), WS_VISIBLE | WS_CHILD, 10, 10, 100, 32, hWnd,
    (HMENU)ID_BUTTON_ONE, // O ID do botão será 100
    hInst, NULL);

Não encontrei isto documentado em lado nenhum, segui o código da biblioteca MFC para ver como eles resolviam (uma vez que o método Create dos controlos, como botões, aceita o ID como parâmetro) e cheguei a esta conclusão.

Página Seguinte »

apetites is proudly powered by WordPress and themed by Mukkamu