Ir para o conteúdo

 Voltar a Linguagem NCL
Tela cheia

Avaliação de links em context/body sleeping

1 de Maio de 2011, 8:01 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 13 vezes

Olá,

 

Lendo a norma, cheguei as seguintes conclusões sobre avaliação de links e contexts.

1. Um context sleeping não deve ter seus links avaliados;

2. Um context está sleeping se todos os seus nós estão sleeping (mídias, contexts, switches, etc)

Não tenho aqui comigo a referência para os textos, por favor me corrijam se eu estiver errado.

Daí, que eu implementei no meu formatador o comportamento acima, e numa reescrita de alguns algoritmos precisei criar um teste de onEnd sobre uma mídia. Fiz um teste bastante ingênuo e ele não funcionou no meu formatador.

Daí então percebi que o body do documento precisava estar em estado sleeping depois da mídia parar e portanto depois disso nenhum link deveria ser avaliado.

Porém, fui testar isso na VM do Ginga e o comportamento na verdade é o que eu imaginei que seria quando criei o documento (sem pensar sobre o estado do context).

Estou colando o documento aqui, poderiam me dizer qual dos dois comportamentos é o correto?

<?xml version="1.0" encoding="ISO-8859-1"?>


1111 comentários

  • 3e49093eafaf7e56e54e2715da373432?only path=false&size=50&d=404Felipe Almeida(usuário não autenticado)
    1 de Maio de 2011, 8:03

     

    PS: Bizarro que o fórum substituiu ". . / . . /media/aries.jpg" (sem os espaços) por "/dotlrn/clubs/media/aries.jpg".

  • E9279fb9cf5ef54a4fc4e4ccd93112b3?only path=false&size=50&d=404Luciana Redlich(usuário não autenticado)
    3 de Maio de 2011, 9:27

     

    Felipe,  o comportamento correto segundo a norma é o seguinte:Um contexto está em estado sleeping se todos os seus nós estão em estado sleeping e  se nenhum dos seus links estão sendo avaliados. Este comportamento está descrito no seguinte trecho da norma:"A
    presentation event associated with a composite node represented by a
    <body> or a <context> element stays in the occurring state while at
    least one presentation event associated with anyone of the composite child
    nodes is in the occurring state, or at least one context node child link is
    being evaluated. It is in the paused state if at least one
    presentation event associated with anyone of the composite child nodes is in
    the paused state and all other presentation events associated with the
    composite child nodes are in the sleeping or paused state. Otherwise, the
    presentation event is in the sleeping state." Por isso o comportamento da VM Ginga está correto. O segundo link, no seu exemplo,  deve ser avaliado e a media result_media deve ser apresentada.  Luciana 

    • 3e49093eafaf7e56e54e2715da373432?only path=false&size=50&d=404Felipe Almeida(usuário não autenticado)
      3 de Maio de 2011, 13:07

       

      > Felipe, 

      Olá Luciana,

      > o comportamento correto segundo a norma é o seguinte:

      > Um contexto está em estado sleeping se todos os seus nós estão em estado sleeping e  se nenhum dos seus links estão sendo avaliados. 

      > Este comportamento está descrito no seguinte trecho da norma:

      > "A presentation event associated with a composite node represented by a <body> or a <context> element stays in the occurring state while at least one presentation event associated with anyone of the composite child nodes is in the occurring state, or at least one context node child link is being evaluated. It is in the paused state if at least one presentation event associated with anyone of the composite child nodes is in the paused state and all other presentation events associated with the composite child nodes are in the sleeping or paused state. Otherwise, the presentation event is in the sleeping state."

      > Por isso o comportamento da VM Ginga está correto. O segundo link, no seu exemplo,  deve ser avaliado e a media result_media deve ser apresentada. 

      Mas não existe nada na norma que afirma que a avaliação dos links ocorre concorrentemente, portanto a avaliação da condição onEnd poderia ocorrer depois do término da avaliação do link que faz stop do context, ou existe?

      A não ser que a execução dos dois links ocorram juntos, o context acaba por ser considerado no estado sleeping antes da avaliação do segundo link.

      Existe algum lugar na norma que afirme que as condições são avaliadas antes do término do link atualmente sendo executado? Eu não encontrei.

      Isso afeta diretamente minha implementação do formatador.

      > Luciana

      Obrigado,

      --

      Felipe Magno de Almeida

      • E9279fb9cf5ef54a4fc4e4ccd93112b3?only path=false&size=50&d=404Luciana Redlich(usuário não autenticado)
        3 de Maio de 2011, 14:22

         

        Oi Felipe,  a avaliação onEnd do link ocorre simultaneamente com o stop ou em um tempo infinitesimal depois da ocorrência do stop (praticamente simultâneo). Luciana

        • 3e49093eafaf7e56e54e2715da373432?only path=false&size=50&d=404Felipe Almeida(usuário não autenticado)
          3 de Maio de 2011, 15:47

           

          > Oi Felipe,
          > a avaliação onEnd do link ocorre simultaneamente com o stop ou em um tempo infinitesimal depois da ocorrência do stop (praticamente simultâneo).

          Não encontrei nada na norma dizendo isso. Encontrei apenas os seguintes trechos:

          <quote>

          NOTA
          Quando uma condição “and” composta relaciona-se a mais de uma condição de disparo (isto é, uma condição
          somente satisfeita em um instante de tempo infinitesimal – como, por exemplo, o final da apresentação de um objeto),
          a condição composta deve obrigatoriamente ser considerada verdadeira no instante imediatamente após a satisfação de todas
          as condições de disparo
          </quote>

          <quote>

          Os eventos de atribuição permanecem no estado ocorrendo enquanto os valores de propriedade correspondentes
          estiverem sendo modificados. Obviamente, eventos instantâneos, como eventos para simples atribuição de valor,
          permanecem no estado ocorrendo apenas durante um período infinitesimal de tempo.
          </quote>

          Que implicam somente que o final da apresentação é um tempo infinitesimal e que uma atribuição permanece no estado ocorrendo apenas durante um tempo infinitesimal.

          O segundo inclusive me parece simplesmente errado, já que é possível haver várias avaliações de onBegin de uma atribuição o que possivelmente poderia fazer o estado de ocorrendo se prolongar.

          E o primeiro me diz apenas que o evento possui um tempo infinitesimal, mas a ação de stop pode ter um tempo indeterminado (inclusive, em nenhuma implementação ele é infinitesimal e em alguns casos pode ser inclusive um tempo facilmente perceptível para o usuário).

          Não encontrei nada na norma que diga quando a avaliação é feita após uma execução de um link.

          Inclusive, uma troca de emails com o Luiz Fernando Soares me levou a entender que o tempo de uma ação é indeterminado que suas avaliações poderiam inclusive ocorrer em qualquer ordem com relação as condições do documento:

          O meu texto começa com "Isso significa ...", os outros dois são do professor.

          <quote>
          2011/2/10 Felipe Magno de Almeida <felipe.m.almeida@gmail.com>:
          > 2011/2/10 Luiz Fernando Gomes Soares <lfgs@...>:
          > > 6)     par/seq em CompoundAction
          > > Em qualquer caso, no entanto, a exibição das mídias vai depender dos
          > > retardos dos exibidores de mídia. Pode ser que um exibidor disparado
          > > na frente de outro comece a exibição depois, por causa de seu retardo.
          > > Um autor de documento tem de ter isso em mente.
          > >
          > > O procedimento, no entanto, não afeta o comportamento geral do ZIndex.
          > > Não importa se proveniente de uma ação composta, par ou seq, o Zindex
          > > define qual objeto sobrepõe o outro e, em caso de empate do ZIndex,
          > > sobrepõe o conteúdo que começou a exibição (e não o comando da ação)
          > > por último, conforme especifica a Norma na Seção 7.2.3.
          >
          > Isso significa que em quaisquer dos casos em seq ou par, em caso de
          > empate, qual das apresentações aparecerá por cima é não-especificado e
          > dependente da implementação?

          Exatamente e o autor da aplicação tem de estar ciente disso. Esse problema
          só seria resolvido se o retardo de carregamento fosse zero, e isso é
          impossível. Se um autor quer ter controle do aparecimento ele pode agir de
          duas formas:
          1) Usando vários elos com ações simples, onde eventos decorrentes da ação de
          um elo trigariam as condições do próximo elo e assim por diante
          2) Usando o parâmetro delay dos binds.
          </quote>

          Isso tudo me leva a crer que os dois comportamentos são permitidos
          pela norma (ou seja, é unspecified). O que é na minha opinião bastante
          desagradável, já que criar aplicações NCL já é complicado como é
          acreditando que podemos determinar uma dependência temporal (o que
          não parece ser verdade).

          > Luciana

          Obrigado Luciana,

          • E9279fb9cf5ef54a4fc4e4ccd93112b3?only path=false&size=50&d=404Luciana Redlich(usuário não autenticado)
            3 de Maio de 2011, 16:49

             

            Felipe, Segue o trecho da norma que especifica o comportamento que eu havia descrito, na verdade o que ocorre é que antes do component ter seu estado modificado para sleeping ele sinalizada essa modificação de estado. For the
            same reason discussed in the start instruction,
            except for the event associated with the whole
            content anchor, it is responsibility of the stopped-code span, before it
            stops, to command the imperative-code player to change the state of any other
            event state machine that is related with the event state machine associated to
            the stopped code, and to inform if a transition associated with a change shall
            be notified.  Luciana 

            • 909d8715533ab3fca92606b082b5e17c?only path=false&size=50&d=404Julio Melo(usuário não autenticado)
              3 de Maio de 2011, 17:59

               

              Oi Felipe,Uma boa forma de identificar se o context está no estado sleeping pode ser:1 - todos os seus nós estão no estado sleeping 2 - não existem links para serem avaliados3 - não existem transições de eventos geradas por ele que ainda não foram avaliadasIsso por que as avaliações dos links ocorrem durante a transição (antes da mudança de estado) dos eventos.No seu caso, a avaliação do primeiro link gera a ação de "stop" no componente "trigger_media". Perceba que a ação de "stop" gera uma transição de evento que ainda não foi avaliada (pois se tivesse sido faria com que seu contexto ficasse ativo, pois ativaria o outro link). Usando esses três critérios acredito que seu problema seja resolvido.Julio 

              • 3e49093eafaf7e56e54e2715da373432?only path=false&size=50&d=404Felipe Almeida(usuário não autenticado)
                3 de Maio de 2011, 19:00

                 

                > Oi Felipe,

                Olá Julio,

                > Uma boa forma de identificar se o context está no estado sleeping pode ser:

                > 1 - todos os seus nós estão no estado sleeping 

                > 2 - não existem links para serem avaliados

                > 3 - não existem transições de eventos geradas por ele que ainda não foram avaliadas

                > Isso por que as avaliações dos links ocorrem durante a transição (antes da mudança de estado) dos eventos.

                Você pode me dar referências de onde a norma afirma isto? A única coisa que encontrei é sobre um link 'sendo avaliado' e seus nós em estado sleeping. Não encontrei nada na norma que infere que o seu terceiro e segundo itens.

                > No seu caso, a avaliação do primeiro link gera a ação de "stop" no componente "trigger_media". Perceba que a ação de "stop" gera uma transição de evento que ainda não foi avaliada (pois se tivesse sido faria com que seu contexto ficasse ativo, pois ativaria o outro link). Usando esses três critérios acredito que seu problema seja resolvido.

                > Julio

                Obrigado,

                --

                Felipe Magno de Almeida

                • 3e49093eafaf7e56e54e2715da373432?only path=false&size=50&d=404Felipe Almeida(usuário não autenticado)
                  3 de Maio de 2011, 21:00

                   

                  Gostaria de me desculpar antecipadamente por algumas coisas que disse que possam ser má interpretadas como ataques. Acredito que algumas frases minhas não foram bem construidas e podem parecer agressivas.

                  Meu interesse nessa thread é somente o de compreender as requisições que a norma impõe (se algum).  Essa é uma tarefa bastante complicada e muitas vezes até bastante frustrante. Não tenho interesse aqui de criar nenhuma desavença.

                  Obrigado antecipdamente,

                  --

                  Felipe Magno de Almeida

                  • 909d8715533ab3fca92606b082b5e17c?only path=false&size=50&d=404Julio Melo(usuário não autenticado)
                    9 de Maio de 2011, 14:34

                     

                    Bem minha resposta era mais no sentido de implementação, como uma solução para seu formatador... A única referencia na norma ABNT15606-2 vc3 que econtrei fica na página 50 (58 no arquivo pdf)."Um evento de apresentação associado com um nó de composição representado por um elemento <body> ou <context> permanece no estado ocorrendo enquanto pelo menos um evento de apresentação associado com qualquer um dos nós filhos dessa composição estiver no estado ocorrendo, ou enquanto pelo menos um elo-filho do nó de composição estiver sendo avaliado."Nessa descrição você pode ver explicitamente as duas primeiras condições para determinar se o nó está no estado sleeping, a terceira condição é implícita, pois resulta do efeito da avaliação dos links se voce respeitar a condição 2.Não se preocupe, ao menos de minha parte não considerei coisa alguma como ataque. 

            • 3e49093eafaf7e56e54e2715da373432?only path=false&size=50&d=404Felipe Almeida(usuário não autenticado)
              3 de Maio de 2011, 18:56

               

              > Felipe, 

              > Segue o trecho da norma que especifica o comportamento que eu havia descrito, na verdade o que ocorre é que antes do component ter seu estado modificado para sleeping ele sinalizada essa modificação de estado.

              Lembro deste trecho ser usado sobre imperative players, e.g., lua. Aonde 'stopped-code span' se refere ao código imperativo que foi chamado, e de sua responsabilidado informar ao formatador que ele parou (para que o evento possa se propagar no formatador). Porém não estou mais encontrando esse trecho. Pode me dizer aonde ele está (documento e página). Se for  sobre o que me lembro, então esse trecho seria irrelevante a discussão.

              > For the same reason discussed in the start instruction, except for the event associated with the whole content anchor, it is responsibility of the stopped-code span, before it stops, to command the imperative-code player to change the state of any other event state machine that is related with the event state machine associated to the stopped code, and to inform if a transition associated with a change shall be notified. 

              > Luciana

               

              Obrigado,

              --

              Felipe Magno de Almeida

Concurso ITU-T de Aplicações para IPTV 2012

13 de Agosto de 2012, 19:38, por Desconhecido

Gostaríamos de lembrar aos possíveis interessados que o prazo de registro para participação no Concurso ITU-T de Aplicações para IPTV 2012 (IPTV Application Challenge) se encerra nesta semana, dia 15 de agosto de 2012. Já o prazo para a submissão de aplicações se encerra no dia 07 de setembro de 2012.



NCL Eclipse 1.6 disponível

10 de Janeiro de 2012, 21:19, por Desconhecido

Caros membros da Comunidade Ginga,



Concursos de Aplicações Ginga-NCL

22 de Setembro de 2011, 3:22, por Desconhecido

    Gostaríamos de relembra-los de que há dois concursos de aplicações Ginga-NCL com inscrições ainda abertas. O convite é aberto a toda a comunidade de desenvolvedores de aplicações para o Middleware Ginga-NCL, em nível internacional. São os seguintes concursos:



Novas versões: Ginga e Ginga-NCL Virtual Set-top Box (v.0.12.3)

1 de Agosto de 2011, 20:58, por Desconhecido



Algumas Boas Notícias da Comunidade Ginga

28 de Julho de 2011, 21:31, por Desconhecido

Autor: Roberto Azevedo