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:

terça-feira, 3 de março de 2015

Visão Geral Android - #profMBA

Visão Geral Android
  1. ANDROID
O Android é uma plataforma de código aberta para dispositivos móveis fundada por Andy Rubinera, Nick Sears e Chris White, em outubro de 2003 na cidade de Palo Alto, Califórnia pela empresa Android Inc. Inicialmente, a empresa desenvolvia tecnologia totalmente independente de outras empresas e mantinha os seus projetos em absoluto segredo. Dentre os seus principais objetivos, estava o desenvolvimento de um sistema operacional avançado para câmeras digitais. Algum tempo depois, percebeu-se que o mercado para tais dispositivos não era grande suficiente, então a equipe desviou os seus esforços para produzir um sistema operacional para smartphones, rivalizando assim com outros sistemas da categoria, como por exemplo, o Symbian, desenvolvido pela Nokia e Windows Mobile, da Windows. Dois anos mais tarde, em 17 de agosto de 2005, a Google comprou a companhia e colocou todo seu time de desenvolvedores, liderados por Andy Rubinera, que passou a integrar o corpo de membros da empresa, para trabalhar em uma plataforma móvel baseada em Linux.
Em 2007, o sistema foi oficialmente lançado no mercado, com foco em desenvolvimento mobile e construído sobre o Kernel do Linux versão 2.6. O sistema está ligado a Open Handset Alliance (OHA), que é um grupo formado por gigantes do mercado de telefonia de celulares liderados pela empresa Google. O objetivo principal dessa aliança é obter uma plataforma moderna e flexível para o desenvolvimento de aplicações corporativas. Dentre suas características, o Android tem uma interface rica, conectividade (Bluetooth, Wifi, GSM entre ooutros) mensagens (SMS, MMS), câmera (foto, vídeo), é multitarefa, acelerômetro, sensíveis ao toque e muitas outras funcionalidades além de utilizar a consagrada linguagem Java, usufruindo de todos os recursos.
  1. BREVE HISTÓRICO
O primeiro aparelho com o sistema Android, o HTC Dream, foi lançado em 22 de outubro de 2008 nos Estados Unidos.  Os codinomes utilizados pela empresa são baseados em sobremesas. Em abril de 2009, a versão 1.5 – ou “Cupcake” – introduziu a correção automática nos textos e também os famosos“widgets”, que até hoje são uma das melhores funções do sistema.  Em seguida, a versão 1.6 “Donut” trouxe a busca online automática a partir da página inicial do aparelho. Ainda em 2009, a versão 2.0 “Eclair” permitia o uso de múltiplas contas do Google em um mesmo aparelho, o que facilitou o sincronismo de e-mails e contatos.
Em 2010, com a versão 2.2 “Froyo”, a grande novidade foi a possibilidade de transformar o dispositivo em um ponto de acesso via wi-fi usando a rede 3G. Além disso, um grande passo nessa fase foi a introdução do Flash (plug-in de navegador entre plataformas que oferece recursos avançados na Web) no navegador, o que bateu de frente com seu principal concorrente, o iPhone.
No final de 2010, a versão 2.3 "Gingerbread" trouxe pela primeira vez o suporte a voz sobre IP, a tecnologia VOIP, que permite o uso de aplicativos para chamadas de voz como o Skype, por exemplo. Já em 2011, com o Android 3.0 Honeycomb , tornou-se possível utilizar o sistema em telas maiores, com gráficos melhores e um sistema de barra de avisos totalmente reformulado.
Em 16 de dezembro de 2011, o Android 4.0 “Ice Cream Sandwich” reformulou toda a interface da plataforma mais usada no mundo. A principal novidade foi a criação de pastas na tela principal do aparelho. Além disso, a partir dessa versão passou a ser possível escolher quais aplicativos devem iniciar o funcionamento assim que o smartphone for ligado.
Em julho de 2012, a versão 4.1 “Jelly Bean” incluiu novos elementos internos e uma nova pesquisa. E a atualização 4.2 ficou por conta da segurança. Esse é um ponto vulnerável do Android. Ao longo desses anos, diversas falhas e vulnerabilidades já foram encontradas na plataforma, e ela é hoje alvo para inúmeros vírus e malwares. A última atualização, 4.3, trouxe a função de múltiplos usuários com restrições de uso diferentes para cada. A versão 5.0 - “Lollipop” – foi definitivamente apresentada no dia 15 de outubro de 2014. Segundo o site www.androidpit.com.br , “a versão integrará o Google em profundidade. O ótimo Material Design promete garantir, ainda mais do que o Holo, a coerência entre os serviços do gigante da internet.”
  1. DESENVOLVIMENTO DE APLICATIVOS MOBILE
Nos últimos anos a necessidade de otimização de tempo vem acarretando cada vez mais em obter recursos que disponibilizem isso na palma da mão. Isso é encontrado na junção mundo da web e telefonia móvel. Segundo Lecheta (2012, p.16) “a disputa no mercado de mobilidade está extremamente acirrada, com diversas inovações e lançamentos acontecendo em todos os lugares, e mesmo os especialistas sentem dificuldade em acompanhar tamanha evolução”.
Gráfico da UIT mostra crescimento de linhas celulares em países em desenvolvimento (verde) e desenvolvidos (laranja) em relação à população mundial (vermelho).
        
  1. ARQUITETURA
A figura a seguir mostra os principais componentes de um sistema operacional Android. A seguir serão detalhados esses componentes:
  • Kernel do Linux: A arquitetura do Android é baseada no Kernel do GNU/Linux, verão 2.6. O Kernel do sistema funciona como uma camada de abstração entre o hardware e o restante da pilha de softwares da plataforma. O kernel GNU/Linux já possui vários recursos necessários para a execução de aplicações, como gerenciamento de memória, gerenciamento de processos, pilha de protocolos de rede, módulo de segurança e vários módulos do núcleo de infra-estrutura. Como o sistema operacional é conhecido, também facilita o surgimento de melhorias aos drivers já existentes.        
  • Bibliotecas: O Android inclui um novo conjunto de bibliotecas C/C++ usados pelos vários componentes do sistema. As funcionalidades são expostas através do framework do Android (ver seção 2.3.4). Algumas das bibliotecas do núcleo da arquitetura são listadas abaixo:
Surface Manager: Controla e gerencia o acesso ao subsistema de display. Compõe transparentemente camadas gráficas 2D e 3D de múltiplas aplicações.
3D libraries: Uma implementação baseada na especificação do OpenGL 1.0.
SGL: Biblioteca usa para compor gráficos 2D.
Media libraries: Essas bibliotecas suportam playback e gravação de muitos formatos de áudio e de vídeo, bem como imagens estáticas, incluindo MPEG4, H.264, MP3, AAC, AMR, JPG e PNG.
FreeType: É uma biblioteca usada para renderizar fontes.
SSL: Fornece encriptação de dados enviados pela Internet.
SQLite: É uma biblioteca C que implementa um banco de dados SQL embutido. Programas que usam a biblioteca SQLite podem ter acesso a banco de dados SQL sem executar um processo RDBMS em separado. A biblioteca SQLite lê e escreve diretamente para e do arquivo do banco de dados no disco.
LibWebCore: Biblioteca base para o navegador do Android e visões da web.
System C Library: Uma implementação do libc derivada do BSD.
  • Android Runtime: Toda aplicação Android executa seu próprio processo, com sua própria instância da máquina virtual Dalvik. Dalvik foi escrito de forma que um dispositivo possa executar múltiplas máquinas virtuais concorrentemente de maneira eficiente. Dalvik executa classes compiladas por um compilador da linguagem Java. Os arquivos class gerados são transformados no formato .dex pela ferramenta dx, incluída no SDK (Software Development Kit) do Android. Esses arquivos .dex são executados pela Dalvik. A máquina virtual Dalvik também usa o kernel do GNU/Linux para prover a funcionalidade de múltiplas threads e gerenciamento de memória de baixo nível. O componente em azul da Figura 2 contém um conjunto de bibliotecas que fornece a maioria das funcionalidades disponíveis no núcleo das bibliotecas da linguagem Java. Isso inclui classes para manipulação de arquivos, entrada e saída, entre outros.
Uma das primeiras diferenças de Dalvik para a máquina virtual Java (JVM) é que Dalvik é baseado em registradores e a JVM é baseada em pilhas. A escolha da abordagem baseada em registradores traz um benefício em ambientes restritos, como telefones celulares, e uma análise mais aprofundada concluiu que máquinas virtuais baseadas em registradores executam mais rapidamente os programas do que máquinas baseadas em pilhas.
  • Framework de Aplicação: Os desenvolvedores têm acesso completo à mesma API que é usada pelas aplicações core da plataforma. A arquitetura da aplicação foi projetada para simplificar o reuso dos componentes. Qualquer componente pode publicar suas capacidades e quaisquer outros componentes podem então fazer uso dessas capacidades, sujeito às restrições de segurança reforçadas pelo framework. Esse mesmo mecanismo permite que os componentes sejam substituídos por outros em tempo de desenvolvimento. O fundamento de todas as aplicações do framework é um conjunto de serviços e sistemas, que inclui:
Activity Manager - (Gerenciador de atividade): Gerencia o ciclo de vida das
aplicações.
Package Manager - (Gerenciador de pacotes): Mantém quais aplicações estão instaladas no dispositivo.
Window Manager - (Gerenciador de janelas): Gerencia as janelas das aplicações.
Telephony Manager - (Gerenciador de telefonia): Componentes para acesso aos recursos de telefonia.
Content Providers - (Provedores de conteúdo): Permitem que as aplicações acessem os dados de outras aplicações (como contatos) ou compartilhem os seus próprios dados.
Resource Manager - (Gerenciador de recursos): Fornece acesso a recursos gráficos e arquivos de layout.
View System - (Visão do sistema): Um conjunto rico e extensível de componentes de interface de usuário. As visões podem ser usadas para construir uma aplicação, elas incluem listas, grids, caixas de texto, botões, dentre outras.
Location Manager - (Gerenciador de localização): Gerencia a localização do dispositivo.
Notification Manager - (Gerenciador de notificações): Permite que todas as aplicações exibam alertas na barra de status.
XMPP Service (Serviço XMPP) - Suporte para uso do protocolo XMPP (Extensible Messaging and Presence Protocol).
  • Apicações: O Android fornece um conjunto de aplicações básicas, que inclui um cliente de e-mail, um programa SMS, um calendário, mapas, navegador, contatos, entre outras.
Há quatro blocos principais de construção de uma aplicação:
- Activity (Atividade)
- Intent Receiver (Receptor de Intenção)
- Service (Serviço)
- Content Provider (Provedor de Conteúdo)
  1. ARMAZENAMENTO DE DADOS
Na plataforma Android, o armazenamento de dados se dá através do método Shared Preferences, no qual fazemos o uso para armazenamento de informações. Com ele armazenamos entradas do tipo chave-valor, associando um nome a uma determinada informação para que posteriormente faça a recuperação dela. Tudo é armazenado pelo Android em um arquivo XML especificamente dentro da estrutura interna de disco de cada aplicação. Mas essa leitura e interpretação não é tarefa do programador, a aplicação disponibiliza funções que abstraem essas ações. A tarefa é salvar esses dados e depois buscá-los para recuperar as informações. Contudo, esse procedimento é disponível para poucas informações, simples podendo ser números, Strings e valores booleanos.
Outra forma é utilizando o Storange, que por definição é um espaço em disco em que cada aplicação possui para o salvamento de arquivos. Há ainda o Internal Storange, estrutura interna do aplicativo, onde ficam os arquivos do Shared Preferences, e o External Preferences         que na maioria das vezes é o SDCard. Os arquivos manipulados dessa forma proporcionam uma certa “liberdade” de onde os arquivos podem ser salvos. Um fato negativo é que sua manipulação se torna mais trabalhosa.
A utilização dessas classes para manipulação de dados tanto escrita quanto leitura satisfazem a maior parte das aplicações. Mas é disponibilizado pela plataforma uma forma mais sofisticada para a persistência de dados, o SQLite. Esse banco é auto-contido na plataforma sem necessidade de instalação e configuração. Sua criação é feita através da classe DatabaseHelper que deve estender a classe SQLiteOpenHelper. Sua interação com a biblioteca nativa Android torna a manipulação de dados simples.

Escrito pela aluna Marcelle Maia.


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...