Os maiores mestres da História.

Charles Spencer Chaplin & Albert Einstein

“A persistencia é o caminho do êxito.”

Charlie Chaplin

“A Imaginação é mais importante que o conhecimento.”

Albert Einstein

O que é o Google Android ?

 

 

O Android é um sistema operacional móvel executado sobre um kernel Linux na versão 2.6 (froyo). O Android permite que o desenvolvedor escreva seus aplicativos usando uma linguagem de programação robusta e extremamente orientado a objetos, o Java.

A Google juntamente com um grupo de empresas chamada de OHA (Open Handset Alliance)  lançaram o S.O. com intuito de unificar as linguagens de desenvolvimento e apresentar um diferencial no mercado, tanto para o usuário, quanto para o desenvolvedor.

Atualmente existem mais de 150 mil aplicativos disponíveis para o Android. Igualmente a Apple o Android possui um mercado de softwares como o iTunes, no caso da Google, se chama Android Market.

O núcleo do sistema consiste hoje em mais de 12 milhões de linhas de código, 3 milhões em XML, 2,8 milhões em C, 2,1 milhões em Java, 1,75 milhões de C++.

Arquitetura do Android

O sistema é dividido em várias partes :

Applications

Application Framework

Bibliotecas

Android Runtime

Linux Kernel

O Android em si é uma pilha de software (Software Stack), ou “software de arquitetura em pilha”, dividido em três camadas:

Sistema operacional

Middleware

Aplicações Chave

Na plataforma Android a middleware pode ser subdividida em duas camadas, na parte inferior da biblioteca (Library) ea máquina virtual (Virtual Machine; VM), e a estrutura do aplicativo de nível superior (Application Framework).


Camada de aplicação

Onde se encontra o pacote de aplicativos chave do Android como : Email, SMS, Calendário, Mapas, Navegador, programas de comunicação … e assim por diante. Todos desenvolvidos na linguagem de programação Java.

Application Framework

Camada responsável pela integração da linguagem ao núcleo de bibliotecas. Os aplicativos podem acessar uma interface unificada e padrão.
Basicamente todos os aplicativos são compostos por:

  1. Exibições do sistema: Responsável pela parte gráfica do sistema, contém uma lista, grades, caixas de texto, botões, e até mesmo um navegador embutido.
  2. Provedores de Conteúdo (Content Provider): Responsável pelo acesso / compartilhamento de informações entre aplicações. Por exemplo, um aplicativo pode acessar as informações de um contato na lista, ou fazer uma chamada, assim por diante …
  3. Gerenciador de Recursos (Resource Manager): Oferece uma variedade de recursos para utilização dos softwares, tais como: imagens, arquivos de layout, etc…
  4. Notificações (Message Manager): Responsável pela notificação na barra de status.  Pode exibir um aviso da própria aplicação (alerta) como mensagem na barra superior.
  5. Atividades (Event Manager): gerenciar todo o ciclo de vida da aplicação e de um backstack de navegação comum.
  6. Gerenciador de janelas (Window Manager):  Gerenciador das Activites (Formulários , Janelas … ) abertas no sistema.
  7. Localização: Funçoes e serviços de localização como : GPS , Google Maps …
  8. Telephony Manager: Gerenciador do dispositivo de telefonia.
  9. Package Manager: gestão do repositório do Android e de todos os softwares no sistema.
  10. Serviço XMMP : Através deste serviço é realizada uma localização de telefones celulares. Apartir do SDK 0,9 foi removido temporariamente este recurso.

Camada de Bibliotecas (Libraries)
Uma grande variedade de componentes no Android são todos compostos de bibliotecas  C / C + + , e todos os aplicativos do Android  usam esses recursos através da API.
As bibliotecas do núcleo principal estão listados abaixo:

  1. Sistema de biblioteca C – um derivado do sistema BSD e bibliotecas no padrão C (libc), desenvolvido baseado em dispositivos embarcados.
  2. Media Libraries – baseada na biblioteca multimídia da PacketVideo OpenCORE; Esta biblioteca multi-media serve de apoio para a execução de áudio e muitos formatos de vídeo. Tais como: MPEG4, H.264, MP3, AMR, AAC, JPG e PNG.
  3. Surface Manager – esta parte permite aos desenvolvedores acessar o sistema de exibição, realização de renderizações em 2D/3D e integração entre múltiplas aplicações .
  4. LibWebCore – A principal Engine de navegação web.
  5. SGL - Engine gráfica 2D.
  6. Bibliotecas 3D – um padrão baseado em OpenGL Engine 1.0 3D ES. Responsável por selecionar a aceleração de hardware 3D.
  7. Free Type – padrões de bitmap, vetores, fontes …
  8. SQLite – SQLite é um banco de dados relacional open-source , que é caracterizada pela leve quantidade (apenas 500KB), para o uso em dispositivos portáteis, além de aplicações  desktop, também são utilizados no OpenOffice.org versão 2.0 que terá SQLite built-in.

Nível de Execução (Android Runtime)
Embora seja feito o uso da  linguagem de programação Java para desenvolver, não usamos a Java Runtime (J2ME) para executar programas Java, mas sim sua própria Runtime para executar.
O Android Runtime contém os seguintes dois núcleos :

Bibliotecas centrais

A biblioteca central possui um acervo de funções e classes responsaveis pela execução e manipulação dos dados entra a VM do Android (Dalvik) e a camada de aplicações. Cada aplicação em execução possui uma VM dedicada e areas da memoria Heap individuais.

Dalvik Virtual Machine

Virtual machine baseada na VM do Java, porém ela foi desenvolvida para utilizar com o mínimo de recursos o acesso a memória, assim como o já mencionado “A mesma aplicação pode executar múltiplas VM.”
Dalvik Virtual Machine tem muitas partes do Java Virtual Machine porém a compilação do bytecode da JVM é diferenciada á compilção da Dalvik, por bytecodes *.Dex.

Camada do sistema operacional (Kernel Linux )

O kernel do Android , 2.6 possui: segurança (Security), gerenciamento de memória (Memory Management), Gestão de Processos (Process Management), (pilha de rede, o continente conhecido como: pilha de rede), o modelo de driver (Driver Model), etc. Além disso, na execução da pilha de software é criada uma camada de abstração entre o hardware (Abstration Layer)

Desenvolvendo aplicações para Android SDK

Na ultima palestra sobre o tema, prometi montar um “Passo a Passo” para montar o ambiente de desenvolvimento Android. Então vou dedicar estes post’s aos alunos do curso e a toda platéia  que esteve presente na palestra. Um grande abraço a todos.

Let’s started !

1 – Instalação do Ambiente Java

A “VM” (Virtual Machine) do Android é baseada na mesma VM do Java, porém com algumas flags de desempenho e compilação especificas para dispositivos móveis. Então precisamos instalar a JDK (Java Development Kit) e o JRE (Java Runtime Environment) .: Link de Download

2 – Instalação da IDE Eclipse

O Eclipse IDE é uma ferramenta essencial no desenvolvimento de aplicações Java e outros. O plugin do Android (ADT - Android Development Tools) é extremamente compatível com esta IDE por isso à usaremos, porém isso não impede de se usar outras ferramentas como o NetBeans.

No meu caso uso versão Helios, mas fica em aberto a escolha de vocês: Link de Download

3 – Configuração de Ambiente

Vamos agora configurar o ambiente de desenvolvimento para aplicações do Android, para isso é necessário fazer o download do Android SDK .  Lind de Download.

Depois de feito o download faça a extração do conteúdo para um diretório de sua escolha. Para adicionar o diretório das ferramentas do SDK, “tools”, ao PATH do sistema, pressione a tecla do Windows + Pause, e na tela seguinte escolha a opção “Configurações avançadas do sistema”.

Na janela seguinte clica em variáveis de ambiente, na tab Avançadas.

Em seguida vamos editar a variável path, e adicionado caminho para o diretório ”tools” do download efetuado.

4 – Instalação do plugin ADT (Android Development Tools)

O plugin do Android no Eclipse, o ADT (Android Development Tools), foi desenvolvido para oferecer ao programador um ambiente integrado e poderoso para o desenvolvimento de aplicações para o Android. O plugin permite configurar um novo projeto Android de forma rápida e simples.

Abre o Eclipse, vai ao menu Help > Install New Software

Clica em Add, na janela “Available Software”.

Adicione o site :  https://dl-ssl.google.com/android/eclipse/ .Depois clique em OK.

De volta à janela do “Available Software”, faz um Check no item Developer Tools e clique em Next.

Na janela seguinte, clique novamente em Next. Aceite os termos da licença e clique em Finish. Ao terminar todo o processo reinicie a IDE.

5 – Configuração do ADT

Para configurar o ADT precisamos modificar as preferências do Eclipse, para direcionar o diretório da SDK do Android.

  • Vá ao menu Window > Preferences
  • No painel da esquerda, selecciona Android.
  • Para a localização do SDK, clica em Browse… e selecione a localização onde extraímos a SDK.
  • Clique em Apply e depois Ok para terminar.


6 – Configuração da SDK (Software Development Kit) do Android

O último passo é configurar a SDK, utilizando uma ferramenta incluída no SDK Starter Package.

Vai até a diretório do SDK e execute o setup. Na primeira vez que abrir o Manager, irá aparecer a seguinte janela, selecione a opção, Accept All e depois clique em Install.

O download e instalação poderá demorar alguns minutos, dependendo da velocidade da sua internet.

Feito isso seu ambiente estará pronto pra seu primeiro aplicativo em Android. Boa sorte e bons estudos! Qualquer duvida deixe um comentário.

Design Patterns – Padrões de Projeto

Estive fora por um tempo, mais agora esta tudo se resolvendo … rsrs. Neste periodo andei estudando e continuo, um tema da Arquitetura de Software chamado Design Patterns ou Padrões de Projeto.

O Que são Design Patterns ? Vamos tentar levar do modo mais explicativo … Se você tem um problema, como resolve-lo de maneira mais eficaz e diminuindo os riscos com todo escopo ? O Design Patterns nada mais é que um conjunto de soluções para problemas que ocorrem com frequencia em situações especificas baseado em experiências e conhecimento na área.

Estes princípios foram desenvolvidos e levaram a publicação de um livro chamado “Design Patterns: Elements of Reusable Object-Oriented Software“, de 1995 por Eric Gamma, Richard Helm, Ralph Johnson e John Vlissides. Este livro é considerado a principal referência de design patterns para a comunidade de software e tem influenciado na evolução dos padrões de projeto até hoje. Com isso foi criado o nome GoF (Gang of Four) dos quatro criadores do livro. Posteriormente, vários outros livros do estilo foram publicados, como Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, que introduziu um conjunto de padrões conhecidos como GRASP (General Responsibility Assignment Software Patterns).

Padrões  GoF :

Padrões de criação

  • Abstract Factory
  • Builder
  • Factory Method
  • Prototype
  • Singleton

Padrões estruturais

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Façade
  • Flyweight
  • Proxy

Padrões comportamentais

  • Chain of Responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template Method
  • Visitor

Os padrões GoF são organizados em famílias de padrões: de criação, estruturais e comportamentais.

Padrões de criação – são relacionados à criação de objetos.

Padrões Estruturais - tratam das associações entre classes e objetos.

Padrões  Comportamentais – interações e divisões de responsabilidades entre as classes ou objetos.

Padrões GRASP

  • Controller
  • Creator
  • Expert
  • Law of Demeter
  • Low Coupling/High Cohesion
  • Polymorphism
  • Pure Fabrication

Ao decorrer dos dias em que eu for me aprofundando no assunto irei postando aqui as resoluções com os fontes de cada padrão citado.

Metasploit Penetration Testing Framework

Estudando um pouco de sobre segurança , resolvi montar uma pequena lista de sites sobre tutoriais de como usar um Metasploit e desenvolver PenTests.

Metasploit é um framework criado por H.D.Moore (se quiserem saber mais sobre ele, leiam o livro diario hacker), que serve para elaboração e execução de um repositório de exploits.

• http://www.layer8howto.net/wordpress/2010/03/

• http://www.securityninja.co.uk/

• http://codesec.blogspot.com/2010/02/metasploit-exploitation.html

• http://www.backtrack-linux.org/forums/backtrack-howtos/

• http://www.backtrack-linux.org/forums/tutoriais-e-howtos/page3.htm

• http://www.backtrack-linux.org/forums/backtrack-portuguese-forums/

• http://www.backtrack-linux.org/forums/sitemap/f-49.html

Instalando o FLARToolkit (Realidade aumentada na Web)

 

 

A Realidade aumentada vem ultimamente tomando um espaço bem grande em mídias e propagandas com o intuito de fazer com que o usuário se interaja com o o objeto ou produto, trazendo uma visão mais ampla do que se propõe.

Esses dias recebi um email do Dorival de São Sebastião do Paraíso-MG, especialista em Linux que está fazendo seu mestrado em realidade aumentada, trazendo para o mundo acadêmico mais informações para tornar uma ferramenta bem mais flexível e viável do que é hoje.

Para começar vamos falar um pouco de Web. Hoje em dia tudo se baseia em redes sociais e métodos de comunicação, e o melhor de tudo isso ? Está na Web.

Este é um ponto onde a RA (Realidade Aumenta) tem que vir com força total para abrir uma nova visão à vasta gama de usuários. Para isso existe entre outros o FLARToolkit que nada mais é que uma biblioteca para RA no Flash.

O FLARToolkit está disponível sobre o uso em duas licenças :

1 – GPL (GNU General Public License) v3. * Free

2 – ARToolworks (Para uso comercial) * Custo de licença

Como instalar :

Baixe o do FLARToolkit pelo site : http://www.libspark.org/browser/as3/FLARToolKit/releases/ver2_5_4/FLARToolKit_ver2_5_4.zip?format=raw

A versão é baseada no projeto NyARToolKit desenvolvido por R.Iizuka.

O arquivo zip irá conter vários arquivos de um projeto Adobe Flex, descompacte tudo.

Na pasta lib irá existir quatro pastas, em cada pasta terá um arquivo swc. Este arquivo é responsável pelas chamadas de callback na interface do AR.

Execute o Flash. No menu Edit → Preferences → Na Categoria ActionScript, contém dois botões no fim do formulário:

ActionScript 2.0 Settings

ActionScript 3.0 Settings

Selecione as preferencias que você irá usar 2.0 ou 3.0, e adicione os arquivos .SWC.

Pronto ! Execute seu o primeiro exemplo.

Abraço a Todos

 

 

SQL Server – Tratando dados de um DateTime separadamente

 

 

Como série de novos posts desta temporada, nesse artigo iremos tratar dados especifico do tipo de dado  (DateTime).

Essa semana como sempre super corrida, (que bom, porque não gosto de ficar parado), estava eu programando uma rotina de filtro para exibição de informações especificas para certo Ano em uma data. Determinado momento na Unit de Testes (BDD / TDD) deparei com a seguinte situação :

Como eu vou recuperar somente o ano deste DateTime de forma eficiente ?

… Pensei

… Pensei + Ainda ( Coisas Absurdas … Ex: POG (Programação Orientada a Gambiarra).

Então fui estudar mais SQL Server e descobri isso : O DATEPART ()

DATEPART () : “ Retorna um valor representando uma parte especifica de uma data. “
( MSDN, Brazil – http://msdn.microsoft.com/en-us/library/aa258265(SQL.80).aspx )

A vantagem de usar a função do SQL Server DATEPART() é que ele é simples de usar e funciona com todas as versões do ADO, DAO e RDO. A desvantagem de usar a função DATEPART() é que ele é específico para o SQL Server. No entanto, outros servidores podem ter funções comparáveis.

Não confunda a função do SQL Server DATEPART() com a função DatePart() do Visual Basic, que é usada com o tipo de dados data do Visual Basic.

Sintaxe

O uso do DATEPART :

DATEPART (parte_da_data, campo)

Ex:

SELECT DataVenda, DATEPART(YEAR, DataVenda) FROM Vendas

No lugar do YEAR você pode usar também alguns procedimentos de um Datetime :

Ms for Milliseconds

Yy para Ano

Qq para um quarto do ano

Mm para mês

Dy para dia do Ano

Dd para dia do Mês

Wk para semana

Dw para dia da semana

Hh para hora

Mi para minuto

Ss para segundo

 

 

I’ll be back !

Desculpe a todos, mais em decorrer de alguns eventos, tive que estar fora por um tempo. Mas agora estamos de volta , com novos post’s sobre desenvolvimento, tanto em inglês e português.

E agora vamos postar novos artigos sobre ASP .NET MVC !!!

Abraços.

Sorry guys, some more in course of events, i had to be out for a while. But now we are back with new posts about development and others, both in English and Portuguese.

And now we post new articles on ASP. NET MVC!

Regards

Palestra VOLDAY II – Desenvolvimento Móvel – Google Android.

No próximo dia 07/09 estarei ministrando juntamente com diversos palestrantes em várias áreas de TI no evento realizado pelo site Viva o Linux , o VOLDAY II ( Dia do Viva o Linux II ). Estou tendo o imenso prazer de estar participando neste evento com uma palestra sobre desenvolvimento em dispositivos móveis  Google Android. No dia da independencia do Brasil , será o primeiro VOLDAY no estado de São Paulo.

Programação

Site : http://volcon.org/volday2/

Local: Faculdades Integradas FAFIBE
Rua Prof. Orlando França de Carvalho, 325 – Centro
Bebedouro – São Paulo
CEP: 14701-070

Horário: das 8h às 18h

Inscrições abertas!

SQL Instructions – Efetuando SELECT em servidores distintos – Linked Server

Esses dias me deparei com a seguinte situação : 2 servidores de Banco de Dados em maquinas distintas. Encontrei a seguinte solução ( Linked Server ). Utilizando SQL Server 2005 montei a seguinte Query :

/* Cria um link com o outro servidor */
EXEC sp_addlinkedserver
@server = ‘dbLink’, /* Nome do servidor */

@srvproduct = ”, /* Caso o servidor seja de outro produto Ex. Oracle */
@provider = ‘MSDASQL’, /* Provider */
@provstr = ‘DRIVER={SQL Server};SERVER=ESTEVAO-PC\SQLEXPRESS;UID=usuario_do_banco_linked;PWD=senha_do_banco_linked;’

/* Lista o servidor linkado */
select * from sys.servers where name=’dbLink’

/* Selecciona dados no servidor linkado */
select * from dbLink.banco.schema.tabela

/* Elimina o link ao servidor linkado */
exec sp_dropserver ‘dbLink’

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.