terça-feira, 10 de fevereiro de 2015

Marcelo Mrack's invitation is awaiting your response

 
 
Marcelo Mrack would like to connect on LinkedIn. How would you like to respond?
Marcelo Mrack
Marcelo Mrack
Chief Executive Officer at 3layer Tecnologia
Confirm you know Marcelo
You received an invitation to connect. LinkedIn will use your email address to make suggestions to our members in features like People You May Know. Unsubscribe
If you need assistance or have questions, please contact LinkedIn Customer Service.

terça-feira, 3 de fevereiro de 2015

Marcelo Mrack's invitation is awaiting your response

 
 
Marcelo Mrack would like to connect on LinkedIn. How would you like to respond?
Marcelo Mrack
Marcelo Mrack
Chief Executive Officer at 3layer Tecnologia
Confirm you know Marcelo
You received an invitation to connect. LinkedIn will use your email address to make suggestions to our members in features like People You May Know. Unsubscribe
If you need assistance or have questions, please contact LinkedIn Customer Service.

terça-feira, 27 de janeiro de 2015

I'd like to add you to my professional network on LinkedIn

 
Marcelo Mrack would like to stay in touch on LinkedIn.
Marcelo Mrack
Marcelo Mrack
Chief Executive Officer at 3layer Tecnologia
Porto Alegre Area, Brazil
I'd like to include you in my network to share updates and stay in touch.
- Marcelo
Confirm that you know Marcelo
You received an invitation to connect. LinkedIn will use your email address to make suggestions to our members in features like People You May Know. Unsubscribe
Learn why we included this.
If you need assistance or have questions, please contact LinkedIn Customer Service.

sexta-feira, 9 de agosto de 2013

O que eu faria hoje, uns 3 anos depois ?

Brincando agora um pouco, sem sono (qui nada, mortinho!) as 04:29h, o que eu escreveria de código para gerar uma típica tela de criação de login como Merlin ?

class Pessoa {
  @Ui.Label("Login")
  @Ui.Required
  String username;
  @Domain.Value(":regex=([A-Z][a-z][0-9])+")
  @Domain.Required
  String password;
  @Task.Like("password")
  String retypePassword;
  @Ui.RenderAs("label")
  String message;
  @Ui.RenderAs("button")
  @Task.Agent(":event=click,action=validate")
}

@Task.Action

class Rules {

@Domain.Alias("validate")

public void validatePassword() {
@In ctx;
String password = ctx.get("password")
String retypePassword = ctx.get("retypePassword")
if (!password.equals(retypePassword)) {
ctx.set("message.setText","The entered password does not match.")
}
}
}

public class PessoaTest {


public static void main(String args[]) { 

Merlin.getInstance(Toolkit.SWING).createAndRenderUi(new Pessoa());
}
}

Tem lógica ?

Não sei, mas que dá vontade de retomar isso... nooooosa!

sexta-feira, 27 de maio de 2011

Quanto vale o Merlin?

Nada!

Conforme a Cayenne Consulting, o resultado eh este:


Ou eu volto a trabalhar nele, ou a coisa vai continuar assim... :(

sexta-feira, 16 de julho de 2010

A proposito, uma tela simples

Eu no (otimo) La Fiamma, no segundo Red... abri o Eclipse so para rodar isso...




Coisiboa ;)

quinta-feira, 15 de julho de 2010

Snapshots, a saida para o controle do passado?

O uso de configurações históricas no Merlin é a base de toda a sua capacidade de renderização.

Depois de muitas pesquisas, acredito que um termo melhor para isso é chamar a coisa de Configuração por Contexto. E, de forma geral, ela é usada junto à Configuração por Exceção, e ambas cooperam para um modelo altamente eficiente no reuso de informações.

Porém, quando falamos em histórico, ou melhor, em contexto, o problema é que ele pode mudar constantemente. Vou dar um exemplo:

Supomos que temos um campo String Nome no sistema S4. Sem contexto algum, e sem nenhuma anotação atrelada, isso produz uma tela de cadastro com um controle de tela simples do tipo texto. Nada demais. Digamos que esse sistema S4 foi feito hoje, 15/Jul/2010.

Agora, se inserimos no contexto do Merlin, informações de um sistema S1, mais antigo, desenvolvido lá pelo ano de 2007 (sei lá, talvez a empresa adquiriu outra empresa, e lá no servidor de aplicação um aplicativo mais antigo foi deployado junto, e o classpath do Merlin localizou esses metadados antigos...).

Nesse caso, se existir alguma classe nesse sistema antigo, que satisfaça as condições de localização espacial do Merlin, por exemplo, uma anotação @Length(40) sobre um camo Nome do tipo String, então, bingo, o contexto acaba de ser mudado, pois o Merlin calcula os pesos (ou melhor, as distâncias) de cada informação, e sugere então que, o campo String Nome do sistema S4 também deva reusar a informação @Length(40). Óbvio, pois sendo S4 mais novo (mais recente) do que S1 (que foi feito lá em 2007), esperamos que as informações históricas sejam reusadas no sistema mais atual S4.

Qual o problema nesse caso?

O problema se resume ao fato que, a cada alteração no contexto, os sistemas podem sofrer alterações de comportamento (nesse caso, o sistema S1) e isso não é nada bom, pois nenhum usuário gostaria de, a cada vez que abrisse uma tela, essa tivesse um comportamento e aparência diferentes...

Bem, e para resolver isso?

Abaixo, copio o algoritmo que bolei ontem a noite antes de ir dormir as 2:48 AM:

1) Se tem um Snapshot, então usa ele e fim.
2) Se tem uma configuração direta (uma anotação atrelada), então usa ela e fim. (Isso é Configuração por Exceção).
3) Ler todo conteúdo do contexto, tanto o passado (sistemas mais antigos) quando o futuro (sistemas mais novos).
4) Calcular as métricas (as distâncias de cada anotação).
5) Escolher a anotação de distância (na verdade, isso é uma função direta que envolve tempo e espaço - falarei mais em outro momento) mais próxima.
6) Produzir um Snapshot com essas distâncias e salvar num meio físico recuperável na próxima renderização.
7) Renderizar o conteúdo da tela de cadastro.
8) Monitorar alterações (se ativado esse comportamento).
9) Fim.

Usando essa lógica de processamento, resolvemos a situação do exemplo acima, e várias outras situações até (bem mais complexas que eu imaginei). Isso porque, quando o sistema S1 entra no contexto, e esse é alterado por essa entrada, o Merlin já tem um Snapshot com tudo o que ele precisa. E assim, se o sistema S4 for renderizado inúmeras vezes, isso não é impactado pelas nuances das alterações do contexto provocadas pelo sistema S1, ou mesmo outros sistemas S2 e S3 mais antigos; ou mesmo ainda sistemas mais novos como S5, S6, etc.

Sei

Sei que tudo isso parece uma loucura, mas aqui no meu minúsculo e limitado cérebro, essas coisas se encaixam e produzem até uma aura sobre o caminho que tenho pela frente até realmente o Merlin tornar-se algo factível.

T+