quinta-feira, 16 de abril de 2015

Ambiente de desenvolvimento CoronaSDK - KONEKI - #profMBA


Neste post vou (#profMBA) mostrar um ambiente para o desenvolvimentos de jogos na plataforma Corona SDK.

Para desenvolvimento do código vamos utilizar a plataforma KONEKI.

O projeto Koneki utiliza a plataforma Eclipse a partir do Metalua,  que é utilizado para analisar o código fonte Lua e fornecer assistência ao usuário. Ela é uma ferramenta de código aberto, licenciado sob a EPL.


  •  Instalação

    Para a instalação temos duas opções:
  1. A primeira opção é você abaixar uma versão do eclipse com os plug-ins já instalados. É a maneira mais rápida.  Para isto basta fazer o download de um das versões a seguir e descompactá-la e um diretório na sua maquina.

    Version Windows Mac OS X Linux
    Stable release (1.1) 32-bit - 32-bit
    64-bit 64-bit 64-bit

  2.  A segunda opção é você instalar os plug-ins do Koneki em um eclipse já existente. Para isto, basta utilizar o link http://download.eclipse.org/koneki/releases/stable na opção do menu "Help > Install New Software..." de seu Eclipse 3.7+  e então escolher a opção "Lua Development Tools".


Instalação do plug-in SVN no Koneki (Subclispe) - #ProfMBA

Prezados, hoje vou mostrar como fazer a configuração do Koneki para adicionar o plug-in do SVN (Subversion).

Como falado no outro post, o Koneki nada mais é do o Eclipse com os plug-ins para edição de código Lua. Então a instalação do SVN no koneki, segue o mesmo modelo de instalação de plug-ins do Eclipse.

Instalação do plug-in SVN

  1. A instalação será feita via atualização da internet, assim primeiro precisamos obter a url do plu-in do SVN. Existem duas implementações bem conhecidas: o subclipse e o subversive.  Vamos utilizar neste caso o subclipe, que disponibiliza a seguinte url: http://subclipse.tigris.org/update_1.10.x
  2. Depois de copiada a url, agora vamos abrir o Koneki e selecionar a opção Help e depois Install New Software. Conforme a figura 1:


  3. Figura 1 – Opção para instalação

  4. Agora com a janela aberta pela opção do menu, basta colar a url do subclipse no campo Work with, conforme a figura 2:
Figura 2 – Janela para opção instalação


4. Pressione ENTER e espere aparecer as opções de seleção. Marque todos os itens como a figura 3.



Figura 3 – Janela com a opções selecionadas

5. Clique na opção Next e espere aparecer a nova tela, conforme figura 4.


Figura 4 – Janela com o que vai ser instalado

6. Selecione novamente a opção Next, a será exibida a tela conforme a figura 5;


Figura 5 – Janela com o que vai ser instalado

7. Selecione Next pela última vez e selecione a opção que você aceita a instalação, conforme a figura 6


 Figura 6 – Janela com a aceitação da instalação

8. Clique na opção Finish, e será exibida a figura 7:


Figura 7 – Janela com o processo de instalação


9. Quando tudo for abaixado para sua máquina, será exibida a tela da figura 8 e pressione o botão ok:


Figura 8 – Janela com o pedido final de confirmação da instalação

10. Depois continuará o processo de instalação e aparecerá a tela da figura 9, pedido que você re-inicie o Koneki. Pressione a opção Yes e espere até re-iniciar novamente.


Figura 9 – Janela com o pedido de re-iniciação

11. Quando o Koneki voltar, será exibida a tela da figura 10 e selecione a opção Ok.

Figura 10 – Janela com o pedido de Reportar estatísticas para a equipe do Subclipse

12. Se deu tudo certo, você já deve ter o plug-in instalado. No próximo post, eu mostro como acessar um repositório SVN.







Acesso Projeto SVN no Koneki - #profMBA

Prezados,

Neste post vou ensinar como abrir um repositório SVN no Koneki.

Pre-requisitos: 

Para acessar o repositorio SVN você deve instalar o plug-in do SVN no Koneki, veja no post anterior. Também você deverá ter um repositorio SVN criado. No nosso exemplo utilizamos o XP-DEV.com para criar o nosso.

Passos para a configuração:

  1. Execute o Koneki e seleciona a opção File -> New -> Project... Como exibido na figura 1
  2. Figura 1 - Figura opção de criação de novo projeto
  3. Depois irá aparecer uma nova tela, conforme a figura 2. Selecione a opção Checkout Projects from SVN e pressione o botão Next.

  4. Figura 2 - Opção de abrir um projeto no SVN
  5. Na nova tela selecione a opção Create a new repository location e precione Next, conforme a figura 3;

  6. Figura 3 - Opção de criação de uma nova localização de repositorio
  7. Na nova tela, figura 4, digite a URL do repositório e selecione a opção Next;

  8. Figura 4 - Tela para informar a url do repositório
  9. Uma nova tela de login e senha irá aparecer. Digite seu login e senha conforme cadastro no servidor SVN. Veja figura 5;

  10. Figura 5 - Tela de login
  11. Com o login validado, será exibido a tela com a raiz do repositorio. Navegue nas pasta até achar a pasta que você quer acessar e seleciona a opção Next. Veja a figura 6;

  12. Figura 6 - Tela com pasta onde será feito o checkout
  13. Agora será exibida uma tela para realizar o checkout. Deixe as opções padrão, conforme a figura 7. Pressione o botão Next;

  14. Figura 7 - Tela de configuração de opção do checkout
  15. Para finalizar, será exibida a figura 8. Pressione a opção Finish;
  16. Figura 8 - Tela com a opção de finalização
  17. Aparecerá uma tela de progresso conforme a figura 9;
  18. Figura 9 - Tela de progresso do checkout
  19. Como resultado final, será exibido um projeto criado na árvore do workspace, conforme a figura 10.

Figura 10 - Tela principal com o projeto criado

Monografias do Corona SDK - #profMBA

Amigos,
 
Achei uma monografia bem legal sobre Corona SDK.  Ela mostra os passos iniciais. 


Esta outra monografia mostra uma visão geral sobre games:

Tutorial: Migração de projetos do Corona SDK 1.0 para a versão 2.0 - #profMBA


Se você abaixou a nova versão do Corona SDK, que utiliza o componente gráfico 2.0,  então os exemplos desenvolvidos na versão 1.0, provavelmente não irão funcionar corretamente.


Neste post vou mostrar como conseguir executar os exemplos da versão 1.0.

Modo de Compatibilidade Gráfico 1.0

Para executar todos exemplos anteriores do Corona SDK, tudo que você tem a fazer é adicionar uma linha ao seu config.lua arquivo e está feito!


application =
{
    content =
    {
        graphicsCompatibility = 1,  -- Turn on V1 Compatibility Mode
        width = 320,
        height = 480,
        scale = "letterbox"
    },
}

Limitações


O modo de compatibilidade 1.0 funciona muito bem em muitas situações, mas não para sempre. No modo de compatibilidade não é possível utilizar os novos recursos da versão 2.0.
Para uma migração completa, você deve seguir o guia: Guia de Migração para a versão 2.0

Protocolo de controle de concorrência baseado em timestamp - #profMBA


No protocolo de controle de concorrência baseado em timestamp é associado um rótulo de tempo (timestamp) fixo exclusivo, ou seja, antes que uma transação inicie, o sistema de banco de dados fornecerá um número que servirá de identificador da ordem de execução da mesma.

Supondo que temos duas transações A e B, a transação A se iniciou no tempo 1 e a transação B teve início no tempo 2, logo, a transação A será executada primeiro que a transação B, pois seu tempo de início é mais antigo.



Para implementar este esquema de rótulo de tempo, temos duas possibilidades:

  • Usar a hora do relógio do sistema (clock) sendo esse o timestamp, então, o horário de início da transação será igual à hora em que a transação entra no sistema.
  • Usar um contador lógico que é incrementado sempre que se usa um novo timestamp, isto é, o timestamp da transação é igual ao valor do contador no momento em que a transação entra no sistema. Os rótulos de tempo da transação são numerados com 1, 2, 3 e assim consecutivamente (o computador tem um valor máximo finito, de modo que o sistema precisa reiniciar o contador periodicamente para zero quando nenhuma transação estiver sendo executada por algum período curto de tempo).
O algoritmo precisa garantir que a ordem em que o item está sendo acessado não está violando a ordem do rótulo de tempo, e para isso o algoritmo associa a cada item X do banco de dados dois valores de rótulo de tempo(TS), sendo:

  • read_TS(X) - rótulo de tempo de leitura;
  • write_TS(X) - rótulo de tempo de gravação;
Esses timestamps são atualizados sempre que uma nova instrução read_TS(X) ou write_TS(X) é executada. Sempre que uma transação read e write é desfeita pelo esquema de controle de concorrência, esta transação recebe um novo timestamp e é reiniciada. O rótulo de tempo (TO) compara o rótulo de tempo de T com read_TS(X) e write_TS(X) para garantir que o rótulo da transação de tempo não seja violada, ou seja, o protocolo de ordenação de timestamp irá garantir que qualquer operação read ou write que esteja em conflito sejam executadas por ordem de timestamp. 

Veja o algoritmo abaixo:


TS-Básico(Tx, dado, operação)

início

	se operação= ‘READ’então

		se TS(Tx)< R-TS(dado).TS-Write então

		início abort(Tx);

			restart(Tx) com novo TS;

		fim

		senão início executar read(dado);

				se R-TS(dado).TS-Read < TS(Tx)então

					R-TS(dado).TS-Read =TS(Tx);
			fim

	senão início/* operação= ‘WRITE’*/

		se TS(Tx)< R-TS(dado).TS-Read ou 
                   TS(Tx)< R-TS(dado).TS-Write então

			início abort(Tx);

				restart(Tx) com novo TS;

			fim

		senão início executar write(dado);

				R-TS(dado).TS-Write =TS(Tx);

			fim

		fim

fim

Exercício



Implemente em JavaScript o protocolo de controle de concorrência baseado em Timestamp - TS-Básico.
A transação será entrada via caixa de texto e será verificado se esta de acordo ou não com o algoritmo:
r1(a);w1(a);r2(a);w2(a)c1 - Esta ok ou não.
Se não estiver ok, avisar o ponto onde esta errado.


Referências 


Abstração de dados e lendo arquivos utilizando javascript e HTML5 - #profMBA


Lendo arquivos utilizando Javascript e HTML5

Um dos principais objetivos de um sistema de banco de dados (SGBD) é o de isolar do usuário os detalhes internos do banco de dados (promover a abstração de dados) e promover a independência dos dados em relação a estratégia de acesso e a forma de armazenamento.

Abstração de dados



O SGBD deve permitir uma visão totalmente abstrata do banco de dados para o usuário, ou seja, para o usuário do banco de dados pouco importa qual unidade de armazenamento está sendo usada para guardar seus dados.

Esta abstração se dá em três níveis 

  • Nível de visão do usuário: as partes do banco de dados que o usuário tem acesso de acordo com a necessidade individual de cada usuário ou grupo de usuários;
  • Nível conceitual: define quais os dados que estão armazenados e qual o relacionamento entre eles;
  • Nível físico: é o nível mais baixo de abstração, em que define efetivamente de que maneira os dados estão armazenados.

Exercício

Um exemplo prático que ilustra concretamente a abstração de dados é a leitura de um arquivo texto no formato CSV.
Abaixe o zip ou acesse o repositorio github e mude o código javascript para totalizar o valor dos arquivos contas1.csv e contas2.csv.
Depois de implementado, teste a aplicação. Os valores deve ser 1521 e 2730.
Para finalizar troque os arquivos de lugares e veja se seu código ainda funciona.

Referencias:

Erro Assinador Serpro - ERR_SSL_VERSION_OR_CIPHER_MISMATCH - Windows

Se você já tentou de tudo e sempre aparece o erro de ERR_SSL_VERSION_OR_CIPHER_MISMATCH, siga os passos abaixo e resolva seu problema: Obs...