Posts Tagged ‘ NCLua

Convertendo arquivos #XML para arquivos de dados #Lua para uso em aplicações de #TVD. #GingaNCL

Introducão

XML é um padrão internacional da W3C para intercâmbio de dados, amplamente utilizado e conhecido. Tal formato permite a troca de dados entre sistemas heterogêneos, garantindo a interoperabilidade entre os mesmos. No entanto, em aplicações interativas para o Sistema Brasileiro de TV Digital, desenvolvidas em NCL e Lua, tem-se uma alternativa bem mais simples que o uso de arquivos XML para a representação, armazenamento e troca de dados: os arquivos de dados em formato Lua, como já mostrei em post anterior. Leia mais

VN:F [1.9.20_1166]
Rating: 9.8/10 (4 votes cast)

Instalando #LuaProfiler no #Ginga Virtual Set-top Box. #TVD

O LuaProfiler é um módulo que permite fazer o profilling de um programa escrito em Lua. Com tal ferramenta é possível identificar gargalos em sua aplicação, ou seja, partes do código fonte que levem mais tempo para executar que o normal, e assim poder melhorar tal código para tentar ganhar desempenho.

A forma mais fácil de instalar módulos Lua em uma distribuição Linux, como no caso do Ginga Virtual Set-top Box 0.11.2 que utiliza Ubuntu, é por meio do LuaRocks. No entanto, alguns módulos como o LuaProfiler não funcionam no Ginga se instalados com o LuaRocks, que automatiza o processo de instalação de módulos da mesma forma que a ferramenta apt-get (existente em várias distribuições Linux).

Leia mais

VN:F [1.9.20_1166]
Rating: 7.5/10 (2 votes cast)

Validando #CPF, #CNPJ e outros dados em #Lua. #TVD #GingaNCL #NCLua

Validação de CPF e CNPJ é algo que se encontra exemplos na Web em tudo quanto é linguagem que se imaginar. No entanto, não encontrei nenhuma implementação disponível em Lua.

Como estou construindo uma aplicação de TV Digital utilizando NCL e Lua, onde o usuário informa seu CPF, precisei de tal rotina e não encontrei nada pronto. Leia mais

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

NCLua HTTP 0.9.9

Liberada nova versão do NCLua HTTP. Os novos recursos são listados a seguir. Para baixar o módulo acesse http://ncluahttp.manoelcampos.com

  • Criados diretórios para organizar os arquivos do módulo, separando o núcleo dos exemplos, facilitando a distribuição do mesmo.
  • Removida necessidade de usar o módulo util para criar uma co-rotina para poder enviar a requisição HTTP. Agora a co-rotina é criada internamente. As funções do módulo possuem um novo parâmetro callback que deve receber uma função que será executada quando a resposta da requisição for obtida.
  • Separação do header e do body da resposta da requisição HTTP.

Veja exemplo de uso da nova versão do módulo. As aplicações utilizando versões anteriores devem ser adaptadas para este novo modelo.

package.path = package.path .. ';lib/?.lua'
require "http"

function callback(header, body)
  if body then
     print("\n\n\n", body, "\n\n\n")
  end
end

http.request("http://manoelcampos.com/arquivos/pagina.html", callback)

Observe que, como os arquivos do módulo não estão mais no diretório juntamente com as aplicações, tendo sido movidos para o diretório lib, é necessário adicionar tal diretório no path do interpretador Lua, usando a instrução apresentada na linha 1.

Não é mais preciso usar o módulo util. O mesmo ainda está disponível e é usado internamente pelo NCLua HTTP.

As funções do módulo, como a função request, têm um novo parâmetro chamado callback. Este parâmetro deve receber o nome de uma função, definida na sua aplicação. Tal função deve ter dois parâmetros: header e body, que representam o cabeçalho da resposta HTTP e o corpo da mesma, respectivamente. A função será chamada automaticamente pelo módulo quando a resposta da requisição for obtida. Os parâmetros header e body serão passados a ela automaticamente. A ordem dos outros parâmetros pode ter mudado. Assim, verifique a ordem dos seus parâmetros nos programas usando versões antigas do NCLua HTTP e a ordem atual dos parâmetros.

VN:F [1.9.20_1166]
Rating: 5.5/10 (2 votes cast)

TVD Quiz: Aplicação de perguntas e respostas para #TVD

O TVD Quiz é uma aplicação desenvolvida em NCL e Lua para o Sistema Brasileiro de TV Digital, que permite que o usuário/telespectador responda a um Quiz a partir da tela da sua TV.

As perguntas e alternativas são cadastradas em um arquivo lua de dados, permitindo a fácil inclusão e alteração de perguntas, assim como de alternativas.

Veja, no vídeo a seguir, uma demonstração da aplicação em execução.

embedded by Embedded Video

Autores:

Ueslei Taivan (Faculdade Católica do Tocantins)
Manoel Campos da Silva Filho (Instituto Federal de Educação do Tocantins)

Download

Acesse a página do projeto no GitHub para realizar o download.

Licença

Outros Projetos

Veja outros projetos de TV Digital aqui.

VN:F [1.9.20_1166]
Rating: 10.0/10 (2 votes cast)

#Baixando as páginas HTML do #Tutorial de #NCLua

NCLuaO Tutorial de NCLua do Francisco Sant’Anna da PUC-Rio é um excelente material sobre o módulo NCLua do Ginga NCL, tendo exemplos bem didáticos.

O mesmo serve como um guia de bolso, sendo essencial a todos os programadores NCLua. Com isto, pode ser útil, para muitos desenvolvedores, ter o tutorial para acesso offline.

Já tinha postado isso no Twitter, mas acredito que é melhor deixar documentado aqui. Para quem utiliza Linux (talvez também funcione em MacOS), a partir de um terminal, basta executar a linha de comando abaixo, que baixará todo o conteúdo do tutorial, a partir do diretório inicial do mesmo:
wget -r http://www.lua.inf.puc-rio.br/~francisco/nclua/

O comando acima criará um diretório para armazenar todo o conteúdo baixado (até os arquivos zip dos exemplos).

Em Windows existem softwares semelhantes, basta dar um procurada na Web.

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Liberado #NCLuaSOAP 0.5.6.6

Liberada mais uma versão do NCLua SOAP, a 0.5.6.6. Esta versão inclui apenas um novo recurso que permite informar o número da porta do serviço web que deseja-se acessar (caso seja uma porta diferente da 80), diretamente na URL do serviço.

Nas versões anteriores, caso os usuários precisassem usar uma porta diferente da 80, era necessário especificar o número da mesma no parâmetro port do método call do módulo ncluasoap. Alguns usuários tiveram dificuldades em consumir serviços que não utilizam a porta 80 justamente por informarem o número da porta dentro da URL do serviço. Tal restrição ocorria devido à classe TCP do NCLua requerer que a porta seja informada em um parâmetro separado. Como o NCLua SOAP possui o módulo http (também desenvolvido por mim e que facilita bastante a realização de requisições usando o protocolo de mesmo nome), isto foi resolvido diretamente neste módulo e o NCLua SOAP passou a utilizar esta nova funcionalidade.

O parâmetro port do método call do módulo ncluasoap ainda existe, para que os programas antigos que o usam não precisem ser alterados, mas vou avaliar a possibilidade de excluir definitivamente tal parâmetro. Assim, recomendo que passem a utilizar o número da porta diretamente na URL do serviço.

Exemplo de chamada para um serviço na porta 8080, usando as versões anteriores do módulo:

local msgTable = {
  address = "http://myserver.com/MyWebService",
  namespace = "MyNamespace",
  operationName = "calc",
  params = {
    a = 10, b = 20
  }
}

--A porta 8080 é passada como parâmetro para o método call
ncluasoap.call(msgTable, getResponse, "1.1", 8080)

Mesmo exemplo usando a nova versão do módulo:

local msgTable = {
  --A porta 8080 é passada diretamente na URL do Web Service
  address = "http://myserver.com:8080/MyWebService",
  namespace = "MyNamespace",
  operationName = "calc",
  params = {
    a = 10, b = 20
  }
}

ncluasoap.call(msgTable, getResponse, "1.1")

Para baixar esta nova versão, acesse http://ncluasoap.manoelcampos.com#download

VN:F [1.9.20_1166]
Rating: 6.0/10 (1 vote cast)

Liberado #NCLuaSOAP 0.5.6.5: Suporte a Autenticação HTTP

Mais uma versão do NCLua SOAP liberada. Nela foi incluído suporte ao consumo de Web Services que requerem autenticação HTTP (Basic Authentication), solicitando um usuário e senha para acessar o serviço. Tal recurso já estava implementado no módulo HTTP (implementado por mim, utilizando o módulo TCP disponível em http://www.lua.inf.puc-rio.br/~francisco/nclua/tutorial/exemplo_06.html) e foi apenas utilizado pelo NCLua SOAP. O exemplo9httpauth foi incluído, que acessa o Web Service disponível em http://manoelcampos.com/apps/httpauth/server.php, retornando a lista de estados de uma determinada região do país.

Para realizar a autenticação HTTP foram incluídos os parâmetros httpUser e httpPasswd (opcionais) no método call do módulo ncluasoap.
Mais detalhes podem ser vistos na documentação do módulo, no diretório doc. Ao acessar o Web Service citado (como pode ser visto fazendo o acesso via Web Browser, em http://manoelcampos.com/apps/httpauth/server.php) será solicitado usuário e senha. Utilize o usuário visitante e a senha visitante. A aplicação de exemplo exemplo9httpauth já passa estes dados para logar no servidor e consumir o serviço web.

Para realizar a autenticação HTTP, foram incluídos os parâmetros (opcionais) httpUser e httpPasswd no método call do módulo ncluasoap. Para mais detalhes, veja a documentação no diretório doc.

Baixe a nova versão em http://ncluasoap.manoelcampos.com#download

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Artigos e Tutoriais de Ginga-NCL

Tenho recebido ultimamente alguns emails de iniciantes nas linguagens NCL e Lua, solicitando dicas, materiais e exemplos de aplicações em tais linguagens. Assim, resolvi juntar alguns dos materiais que tenho, que são bastante relevantes para o aprendizado dessas linguagens. O pacote zip disponibilizado contém artigos, tutoriais, links para ferramentas e material on-line, além de referências de livros.

Todo o material encontra-se livremente disponível na internet e seus respectivos autores são os detentores dos direitos sobre o conteúdo.

Dentro do pacote zip, existe uma página links.html, contendo os links para diversas referências sobre Ginga-NCL.  Neste arquivo, veja o link “Como estruturar seu ambiente de desenvolvimento para Ginga NCL” para montar seu ambiente de desenvolvimento. O tutorial não é meu e está um pouco desatualizado, mas nele, só não é preciso instalar o plugin RSE no Eclipse.

No arquivo livros.txt tem as referências dos livros dos autores das linguagens NCL e Lua (de NCL tem disponível para download livremente, veja o arquivo links.html).

Nas pastas dentro do pacote a ser baixado os documentos estão separados por assunto. Os principais diretórios são indicados abaixo (na ordem em que os assuntos devem ser estudados):
  • ferramentas: tutoriais de como usar ferramentas para desenvolvimento como o NCLEclipse
  • ncl: tutoriais da linguagem NCL (que é a base do desenvolvimento de aplicaćões declarativas, como aplicaćões HTML, para a TVD)
  • lua: tutoriais da linguagem Lua (utilizada para construćão de aplicaćões dinâmicas para TVD, mas os tutoriais tratam de lua em modo geral, sem focar em TVD)
  • nclua: tutoriais de como usar Lua em aplicaćões de TVD, juntamente com NCL
VN:F [1.9.20_1166]
Rating: 7.4/10 (5 votes cast)

Acessando #WebServices #PHP com #NCLuaSOAP

Desde a versão 0.5.5 do NCLua SOAP, foi incluído suporte para que os parâmetros sejam gerados, no XML, na mesma ordem em que foram definidos na tabela Lua, resolvendo problema encontrado com Web Services PHP desenvolvidos com a biblioteca nuSOAP.

Neste artigo mostrarei como fazer acesso a tais Web Services, a partir de aplicações de TV Digital, desenvolvidas em NCL/Lua, utilizando o módulo NCLua SOAP.

Iniciando

O acesso a WebServices em PHP com NCLua SOAP pode ter uma pequena particularidade. Tais WS, desenvolvidos com a biblioteca nuSOAP, desconsideram o nome dos parâmetros de entrada (isto pode depender da versão da biblioteca), considerando apenas a ordem em que foram passados. Leia mais

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)
Página 1 de 212