Monday, September 22, 2008
#
Usar simplesmente o essencial
Hoje ao ler uns blogs descobri algo simplesmente extraordinário. Cada vez mais o C# .NET me surpreende com pequenas coisas.
O que descobri foi que podemos substituir uma quantidade de linhas do nosso código por apenas uma. Isto acontece quando usamos com frequência os comandos
For e
Foreach. Assim, temos os seguintes exemplos:
// Assumimos que temos uma lista de strings cujos valores obtemos a partir do método GetLotsOfStringsList allStrings = GetLotsOfStrings();// Method 1: for loopfor (int i = 0; i < allStrings.Count; i++) DoStuff (allStrings[i]);// Method 2: foreach loopforeach (string s in allStrings) DoStuff (s);Qualquer uma destas formas obriga a escrever várias linhas de código e consequentemente uma pobre manutenção do código. Será que podemos substituir isto por uma só linha? Afinal podemos da seguinte forma:
allStrings.ForEach(DoStuff); Incrível??? Experimentem.
Abraços
Paulo Aboim Pinto
Odivelas - Portugal
Monday, August 25, 2008
#
Parecia que nem tudo no Mono funciona igual ao .NET
É verdade, passei o fim de semana todo embrenhado a tentar entender porque é que no Mono uma funcionalidade dava erro e no .NET não. Essa funcionalidade era a base do Expression Evaluation que tenho estado a trabalhar que se baseia na geração de um método dinâmico e na sua execução.
Eu sabia que no Mono funcionava, mesmo sem que tenha experimentado alguma vez, mas, o azar aparece sempre que não o desejamos e eis que obtinha o erro:
Unhandled Exception: System.ArgumentException: Expression cannot be evaluated, please use a valid C# expression: 0+1 ( at System.Reflection.Emit.
AssemblyBuilder.DefineDynamicModule (System.String name, System.String fileName, Boolean emitSymbolInfo, Boolean transient) [0x00000] )
at RefletionExample.Program.EvaluateExpression (System.String statement) [0x00000]
at RefletionExample.Program.Main (System.String[] args) [0x00000]
sempre que executava o método CompileAssemblyFromSource que cria um método on-the-fly.
Depois de muito bater com a cabeça, pesquisar muito em foruns e colocar posts no Bugzilla do Mono, alguém conseguiu identificar o meu problema. Num dos parametros de criação da assembly tinha, cp.OutputAssembly = "Module"; e segundo a especificação do CLR este comando devia receber também a extensão, ou .dll ou .exe.
No windows se não indicamos a extenção, a assembly é criada em memória (expecialmente porque tinha a linha: cp.GenerateInMemory = true;), mas, em Mono, como ela é criada em disco necessitava da extensão e bastou colocar a estensão e tudo ficou a funcionar como se de um windows se tratasse.
ufffaaa, parecia ser um problema, mas, a solução não podia ser mais simples.
Abraços
Paulo Aboim Pinto
Odivelas - Portugal
Tuesday, August 12, 2008
#
Visual Studio 2008 Service Pack 1 and .NET Framework 3.5 Service Pack 1
Para quem anda distraído na net .. aqui está o
link.
Paulo Aboim Pinto
Tuesday, July 29, 2008
#
NECESSITO DE AJUDA
Boas pessoal,
Estou a necessitar de ajuda em obter duas dlls de acesso a uma base de dados Sybase que são:
sybdrvado11.dll
sybdrvssl.dll
Será que alguém pode mandar-me por email? Agradecia que enviassem para aboimpinto@gmail.com
obrigado
Paulo Aboim Pinto
Tuesday, June 03, 2008
#
Afinal o Mono realmente é uma alternativa!
Quem segue o meu blog sabe que sou uma pessoa que defende a liberdade de escolha. Eu para desenvolvimento escolho o .NET, mas, para sistema operativo escolho Linux (Ubuntu).
Aos mais desatentos, esta é uma ligação que parece ter poucos pontos onde se tocam, mas, não poderia ser mais longe da verdade. Com a framework Mono, já podemos ter aplicações a correr em Windows e Linux com a mesma performance e ainda acrescendo a fiabilidade que um sistema baseado na tecnologia UX permite.
Até agora só tenho usando em termos pessoais, experiências e alguns posts aqui neste blog, mas, finalmente tive a oportunidade de desenvolver algo que tenha que correr tanto num Linux com num Windows e a decisão foi .NET no Windows e Mono no Linux.
A base de desenvolvimento é Windows + Visual Studio e a aplicação tanto tem que correr num sistema como noutro.
É basicamente um conjuntos de aplicações consola que vão ser executadas por um serviço (daemon no Linux) que monitorizam directórios e quando são lá colocados ficheiros, esta aplicação deve os processar o mais rapidamente possível.
Para monitorizar os directórios uso o objecto FileSystemWatcher, que funciona bem em ambos os sistemas. Manipular ficheiros leva-me a certos cuidados de programação como, sempre que querer concatenar o nome de um ficheiro a uma directoria, usar sempre System.IO.Path.Combine que cria a directoria correcta independentemente do sistema onde estamos.
Como os ficheiros que vão ser processados podem ter diversos formatos, este mecanismo usa plugins que conhece o formato de cada ficheiro, traduzindo-os para estruturas conhecidas pelas aplicação principal. Assim o que importa são os dados que podemos extrair dos ficheiros e não o formato dos mesmos.
Estou deveras contente por as palavras que tenho repetido nos últimos anos começarem a fazer eco em algumas empresas e em algumas cabeças. Aqui está um exemplo de como o Mono pode ser realmente uma alternativa.
Abraços
Paulo Aboim Pinto
Odivelas - Portugal
Wednesday, May 28, 2008
#
Vídeos sobre testes unitários
Para quem ainda tem algumas duvidas de como usar os testes unitários e o que pode ser ou não testado, aqui fica alguns vídeo de o que podemos fazer e como.
Veja os vídeos aqui. Abraços
Paulo Aboim Pinto
Odivelas - Portugal
Monday, May 26, 2008
#
Mac, PC .. meet linux
Depois de uma "mais ou menos" conhecida campanha da Apple, a Novell, gigante que resolveu levar o Linux a todo o lado, lançou uma sequela.
Podem ver aqui.
Abraços
Paulo Aboim Pinto
Odivelas - Portugal
Monday, April 07, 2008
#
Erros no WebSite (não acontece só a nós)
Depois do lançamento do WebSite da
Altior a semana passada, onde ocorreram alguns erros que não tinha sido previstos, eis que hoje resolvi entrar no site do cartão
Fast Galp para pedir uma segunda via do meu cartão que expirou à algum tempo.
Reparo que até nas grandes empresas, com grandes projectos também está sujeitos a erros e não há nada que possamos fazer a não ser tentar corrigir o mais rapidamente possivel. Tentem efecutar o login com qualquer valor. Não necessita ser valido e obtém logo uma mensagem de erro:
Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /Fast/Portugues/homeFlashFixo.aspx
Espero que resolvam rapidamente. Ainda irá aparecer alguém que acho que o problema é sempre do Window$.
Abraços
Paulo Aboim Pinto
Odivelas - Portugal
Thursday, April 03, 2008
#
Novo WebSite da Altior
Gostaria de apresentar a nova cara da Altior em
http://www.altior.pt. Depois de muitos contratempos, muitos problemas e a passagem por muitas plataformas a nova imagem da Altior está online.
Gostaria de destacar o trabalho incansável do Pedro Furtado que, apesar de todos os contratempos sempre levou o projecto para a frente sem nunca perder a cabeça.
Convido desde já todos todos a visitar em
http://www.altior.pt.
Abraços
Paulo Aboim Pinto
Friday, March 28, 2008
#
Apresentação da Framework Mono na Altior
Ontem, no Technical Metting da Altior (um evento técnico onde se apresentar uma determinada tecnologia) sobre a Framework .NET, tive a oportunidade de apresentar o Mono a as suas últimas evoluções. A apresentação era para ter uma duração de 20 minutos, mas, devido à vontade da plateia de saber mais e mais, a apresentação durou 50 minutos.
No final, muitos dos consultores vieram ter comigo e dizer que finalmente alguém lhes deu a razão que esperavam para olhar com mais atenção para o Mono.
Um dos consultores veio com um problema real sobre um equipamento móvel que tem que usar no cliente e desenvolver para ele. Actualmente usar uma linguagem (penso ser C/C++), mas, se conseguir colocar a mini Framework do Mono a correr nesse equipamento, poderá usar C#. Ele só com esta ideia ficou muito contente e foi para casa pensar nesta solução. Infelizmente, porque não poderá mexer no código da Compact Framework do .NET, nunca poderá usar esta no equipamento. Desejo para ele o maior sucesso na utilização do Mono.
Deixo aqui a apresentação que usei no formato PDF. Não está perfeita, mas, foi a primeira. Espero que possa vir a melhorar e fazer muitas mais
Abraços
Paulo Aboim Pinto
Odivelas - Portugal
Saturday, March 22, 2008
#
Wednesday, March 19, 2008
#
Como resolver problema de DIVs dentro de DIVs
A ler alguns blog que faço todos os dias encontrei este excelente
artigo que vai ajudar-me muito no Olimpo CMS. Muitos programadores de WebSite já devem ter passado por isto. Ainda num experimentei, mas, agora estou mais confiante.
Abraços
Paulo Aboim Pinto
Odivelas - Portugal.
Tuesday, March 18, 2008
#
MonoDevelop 1.0 foi lançado
Para algumas pessoas distraidas este projecto atingiu finalmente a versão 1.0. O MonoDevelop é um IDE para programação .NET em Linux, totalmente desenvolvimetno sob a a versão estável do
Mono.
Ainda não tem a mesma qualidade do Visual Studio, porém é uma alternativa mais que viável para os que não usam Windows e desejam continua a desenvolver com para a framework .NET.
Gostaria de realçar o seguinte neste IDE:
- GTK# Designer
- Suporte para projectos ASP.NET e Deplyment
- Integração com projecto Visual Studio
- Integração com servidores SVN
- Integração com ferramenta de Testes Unitários - nUnit.
Algumas Features que ficaram de fora desta versão são:
- Debugger
- Web Designer
- Integração com Team Foundation Server
Podem ler um pouco sobre esta release
aqui.
Dentro em breve irei fazer uns ScreenCasts para mostrar um pouco deste IDE.
Abraços
Paulo Aboim Pinto
Tuesday, March 11, 2008
#
Mono on the IPhone
Para alguns distraidos, a primeira versão da Framework .NET que corre num IPhone é o Mono. Podem ver os screenshots no Blog do
Miguel de Icaza.
Source:
Mono on the IPhone Abraços
Paulo Aboim Pinto
Odivelas - Portugal
Monday, March 10, 2008
#
E sempre bom ouvir as pessoas que sabem e que são refêrencia. Este senhor é sempre dúvida uma pessoa que todos tem que ter em grande consideração.
Vejam este pequeno filme no Channel 9 com apresentação da proxima versão do Silverlight. É simplesmente fanstaticos.
Scott Guthrie: Inside Silverlight 2 Beta 1 Abraços
Paulo Aboim Pinto