Apresentação final
Finalmente está a chegar o grande dia. Será no dia 21 pelas 18:30 que se irá realizar a apresentação pública do projecto Midgard, no auditório do 1º andar do edifício F.

#Link |
0 Comentário(s) |
Data: Thu, 14 Dec 2006 17:19:00 GMT
Midgard Demo 1
Fiz hoje um vídeo de demonstração da utilização do
Midgard. Nesta demonstração é feito um site de SMS's muito simples, análogo a um que
eu tive há alguns tempos. Nota que todo o site é feito sem bater uma linha de C#.
O vídeo tem cerca de 12 minutos e ocupa cerca de 12 megas. Peço a todos os web developers que percam 12 minutos do seu tempo e que opinem em relação a este projecto. :-)
Embora este seja muito simples, estamos a preparar outro em que criamos um sistema de blogs com autenticação, em que um utilizador pode ter vários blogs, com comentários, etc (sim, é para comparação directa com o Ruby On Rails :-) ).

#Link |
141 Comentário(s) |
Data: Sat, 03 Jun 2006 13:12:00 GMT
Evolução do Midgard
O Midgard está num ponto de evolução bastante avançado. Já temos uma mecanismo de controlos das entidades bastante avançadas, temos mecanismo de tratamento de excepções a funcionar tal como a geração de testes unitários para as entidades, o provider de login e o sistema de administração.
Uma próxima fase irá passar por completar o mecanismo de controlos e criar a internacionalização.
Da minha parte, tenho de afinar a administração visto ainda não estar completa porque alguns controlos ainda não estão feitos, criar um roleprovider para que os utilizadores possam ter roles associadas a sim e de modo a só os administradores acederem à zona reservada de administração. Também preciso de barrar no web.config o acesso à zona de administração e decidir onde vou por a autenticação do utilizador ( visto já ter o provider e o controlo ).
Este problema da autenticação põe-se porque o utulizador é que sabe onde vai meter o controlo de login, não nós. o problema n é o setcookie mas sim saber se o utilizador quer que o cookie seja persistente (informação essa que só vem no controlo de login ). Por isso, aqui está um problema interessante que quero ver se descuto e lhe dou o melhor caminho nos próximos dias.

#Link |
152 Comentário(s) |
Data: Wed, 22 Mar 2006 09:24:00 GMT
Apresentação intercalar
Hoje fizemos a 1ª apresentação pública do
MIDGARD.
Não foi uma apresentação perfeita, mas pelo menos foi uma apresentação
sem erros, apesar de eu achar que poderiamos ter sido um pouco mais
eloquentes.
Agora é seguir o bom trabalho que temos vindo a
desenvolver, esperando que um dia destes o Midgard seja uma ferramenta
completa, que não seja simplesmente um projecto final de curso, sei que
isso será complicado mas por agora deixem-me sonhar...
#Link |
1609 Comentário(s) |
Data: Tue, 21 Feb 2006 22:14:00 GMT
Planeamento
Neste momento, já temos uma ideia do que nos falta fazer, apesar de
ainda não termos bem a noção do tempo que cada tarefa demorará.
É nossa esperança, ainda conseguirmos atacar o último ponto com algum
tempo, pois apesar de ser a parte talvez menos agradável do trabalho,
como todos sabemos uma aplicação para ser retável a nível comercial
(apesar de não ser o focus do trabalho), necessita de uma GUI agradável
e simples.
A ideia seria até o final do Verão termos tudo terminado, dedicando o
resto do tempo só a relatórios, apresentação e pequenas afinações.
http://midgard.zi-yu.com/wiki.aspx?topic=Midgard.Planeamento

#Link |
5 Comentário(s) |
Data: Fri, 27 Jan 2006 11:50:00 GMT
Houston, we have ignition!
Estamos já perto do nosso objectivo para dia 15, que se concentra no
seguinte: dado um diagrama de classes em UML representado em XMI, gerar
as entidades do modelo e classes de persistência. Hoje o Midgard já
consegue gerar uma API que suporta as seguintes funcionalidades:
// Cria todas as tabelas na BD
NHibernateUtilities.CreateSchema("SmsCreate.sql");
using (CategoryPersistance persistance = CategoryPersistance.GetSession()) {
for (int i = 0; i < 8; ++i) {
Log.Info("Creating Category {0}...", i);
Category category = persistance.Create();
category.Description = "Category " + i;
persistance.Update(category);
}
}
using ( CategoryPersistance persistance = CategoryPersistance.GetSession() ) {
foreach (Category cat in persistance.Select()) {
Log.Info("(id:{0}) {1}", cat.Id, cat.Description);
}
}
Assim que esta parte estiver completa, poderemos começar a pensar em coisas com mais substância!

#Link |
92 Comentário(s) |
Data: Thu, 12 Jan 2006 22:57:00 GMT
NVelocity
Acrescentei documentação sobre o NVelocity no nosso Wiki
http://midgard.zi-yu.com/wiki.aspx?topic=Midgard.NVelocity

#Link |
0 Comentário(s) |
Data: Fri, 23 Dec 2005 01:36:00 GMT
AndroMDA
Enquanto procurava por ferramentas capazes de gerar os ficheiros de configuração do NHibernate, dei de caras com o AndroMDA (para Java). Esta deve ser a ferramenta RAD mais idêntica ao que queremos fazer com o Midgard. Mesmo assim, eles têm uma visão um pouco diferente: além de ferramenta RAD, o AndroMDA aspira ser uma ferramenta que suporta Model Driven Architecture.
Adicionei um pequeno resumo do AndroMDA no nosso wiki.

#Link |
190 Comentário(s) |
Data: Mon, 12 Dec 2005 10:04:00 GMT
NHibernate
Já adicionei ao wiki uma "pequena" documentação relativamente ao NHibernate
Podem consulta-la em http://midgard.zi-yu.com/wiki.aspx?topic=Midgard.NHibernate

#Link |
3980 Comentário(s) |
Data: Sun, 11 Dec 2005 13:16:00 GMT
Java Beans
Apesar de ainda não conseguir dizer as especificidades dos Java Beans,
cada vez me apercebo mais das similiridades que existem entre esta fase
do nosso projecto e a capacidade que temos de "fácil" e rapidamente
criar uma base de dados com respectiva camada de acesso e camada de
negócio.
Talvez com as dificuldades que enfrento na utilização da ferramente
WebSphere, isto me torne mais focado na criação de uma ferramenta que
faça algo semelhante ao WebSphere mas que tenha um modo de utilização
muito mais simples, sem perder as capacidades que temos com o WebSphere.

#Link |
85 Comentário(s) |
Data: Wed, 07 Dec 2005 14:46:00 GMT
Ferramentas RAD
Isto de não ter fichas de CC para fazer, torna-nos mais produtivos! :D
Em relação ao estudo de ferramentas RAD, a minha tarefa era ver o que o Django pode fazer. Devo dizer que esta framework tem muito boas ideias, mas peca em coisas sérias, por exemplo: geram uma API de acesso a dados que não suporta transacções.
De resto têm um sistema de templates engraçado e mecanismos muito úteis, como mapeamento directo de URL's (com muita informação) para páginas/controlos/vistas, e geram toda a parte de administração. Deixei no Wiki um tópico onde faço uma pequena overview desta ferramenta.
Uma excelente fonte de ideias também poderia ser o Websphere, isto se a J2EE tivesse a ser bem dada. Aliás, o modelo que idealizámos é muito idêntico ao utilizado no Websphere: Cria-se o modelo de dados; São geradas várias interfaces; É gerada implementação; Eles tratam da persistência; O nosso código é completamente independente dos detalhes de implementação da persistência.
O nosso resumo das várias ferramentas RAD que estudarmos, pode ser encontrado em Ferramentas RAD.

#Link |
1 Comentário(s) |
Data: Wed, 07 Dec 2005 13:57:00 GMT
Ferramentas de ORM
Adicionei hoje ao nosso Wiki um tópico relacionado com O Gentle.NET que faz uma pequena overview desta ferramenta de ORM. Também adicionei um tópico que terá todas as informações relacionadas com ORM em geral, comparação entre as frameworks estudadas, etc.
Tópico ORM
Tópico Gentle.NET
#Link |
3916 Comentário(s) |
Data: Wed, 07 Dec 2005 09:02:00 GMT
Neo Framework
Adicionei ao Wiki do projecto uma pequena descrição da desta framework.
Agradece-se sugestões de correcção ;)
Podem ver a descrição aqui:
http://midgard.zi-yu.com/wiki.aspx?topic=Midgard.NeoFramework
#Link |
357 Comentário(s) |
Data: Tue, 06 Dec 2005 18:37:00 GMT
Modelos de dados em Aplicações Web
Hoje estivemos a avançar no Midgard, criando um simples modelo de objectos capaz de representar a informação num ficheiro XMI. Isto para que os vários componentes do Midgard tenham uma forma fácil de acesso à informação. Basicamente vamos ter de gerar código apartir de XMI. Num mundo ideal, bastaria receber qualquer ficheiro XMI e todo o código seria gerado, contudo, há que ter em atenção que se está num contexto de aplicações web.
Penso que não é vulgar haver modelos de objectos complexos em aplicações web (com herança, polimorfismo, etc). Basicamente tem-se um conjunto de entidades(directamente mapeadas em tabelas) e operações de CRUD. É minha opinião que é importante ter em conta que o modelo
object oriented será mapeado para um
modelo relacional e quais as implicações que daí advêm.
Ter uma hierarquia de objectos com vários níveis implica várias tabelas. Implica fazer
select's complexos com joins de tuplos de várias tabelas; e implica muita manuntenção. Penso que quando há o caso de objectos complexos, se deve considerar uma outra alternativa: a
serialização para um campo de uma tabela. Nós no Orion's Belt usamos muito este método, por exemplo, as batalhas são representadas por um objecto com muitos campos, campos esses também complexos. Em vez de termos N tabelas, Y
stored procedures de CRUD, etc; simplesmente seriamos cada objecto para um campo binário.
Esta abordagem tem vantagens e desvantagens.
Vantagens:
- Forma muito simples de persistência de um grafo de objectos complexo
- Manuntenção simplificada (novos campos não implicam mexer na estrutura da DAL/BD)
Desvantagens:
- A seriação é um processo pesado
- Mais espaço ocupado na BD
- Incompatibilidade da stream seriada entre versões (ou seja, adicionar mais um campo torna as stream's anteriores incompatíveis)
- Impossibilidade de usar SQL para seleccionar tuplos (a menos que certos campos chave do objecto sejam também mapeados para campos da tabela)
Acho importante termos forma de poder dizer que determinados objectos são mapeados directamente para o modelo relacional, enquanto que outros objectos são mapeados neste contexto de
serialização.
E do pouco que conheço, este é um problema que simplesmente se põe de lado. Por exemplo, eu do pouco que aprendi dos Java Enterprise Beans, não vi suporte para herança. Idem para COM+. Parece que se está numa plataforma object oriented mas temos várias regras que nos tiram as suas liberdades. Não se usa herança e polimorfismo: usam-se serviços.
Como sempre, agradeço opiniões contrárias à minha! ;-)

#Link |
207 Comentário(s) |
Data: Mon, 05 Dec 2005 19:27:00 GMT
Próximas Tarefas
Este blog servirá para nós deixarmos as nossas experiências e opiniões, e teremos um wiki onde deixaremos documentação. Isto porque os nossos orientadores não acreditam na nossa ilimitada capacidade de reter conhecimentos em memória, e de os ter síncronos entre nós -- portanto, temos de ir escrevendo o que aprendemos e que desenvolvemos.
O que temos para fazer:
- Ver XMI - do pouco que vimos parece ideal para o que queremos, que é basicamente uma forma de representar um modelo de dados em XML. A única coisa que nos pareceu estranha foi o nome dos elementos XML usados pelo XMI, com nomes enormes que dificultam a leitura. Por outro lado, não é natural vermos em UML o conceito de propriedades, pelo que também teremos de dar a volta a isso.
- Comparação de ORM's - Temos andado a estudar o NHibernate, o Neo e o Gentle.NET como ferramentas de persistência de um modelo de objectos. Vamos fazer um pequeno resumo destas ferramentas e indicar os prós e contras de cada uma.
- NVelocity - Vamos usar na geração de código o NVelocity. Precisamos de um pequeno artigo de fácil referência que nos permita utilizar o NVelocity facilmente.
- Ferramentas RAD - Temos de estudar outras ferramentas RAD de desenvolvimento de aplicações web, para sabermos que já existe e termos uma melhor ideia do que vamos fazer. Como caso de estudo temos o Ruby On Rails e o Django estamos à procura de uma terceira para dividir o trabalho pelas aldeias.

#Link |
608 Comentário(s) |
Data: Wed, 30 Nov 2005 13:49:00 GMT