? Android: SQLite. O Android provê toda a estrutura necessária para criação e manutenção de bancos de dado SQLite. Todos os devices android possuem suporte para o SQLite e a única preocupação que o desenvolvedor deve ter é a de preparar as declarações para criação e manutenção do banco de dados. Implementadas estas declarações, a…
Databases em Android
Oportunidade para Desenvolvedor de Sistemas Mobile – Rio de Janeiro
A Cyberlynxx está com uma oportunidade para Desenvolvedor de Sistemas Mobile. Segue requisitos da oportunidade: – Programação: ASP.Net, C#, Javascript, PL/SQL; – Banco de dados : SQL Server e/ou Oracle; – Experiência em trabalhar com Framework 3.5 ou superior; – Experiência em desenvolvimento de sistema para Windows Mobile; – Conhecimento de gravação e leitura de [...]
Gravação da minha palestra na Android Conference 2011 – Gerenciamento de memória
Olá pessoal! Primeiramente quero desejar a todos um Feliz 2012! Espero que esse ano seja de muito sucesso para você desenvolvedor! O primeiro post de 2012 é sobre algo de 2011 (ironia do destino ). Foi publicado no Youtube a gravação da minha palestra na Android Conference 2011 sobre Gerenciamento de Memória em dispositivos Android. [...]
SharedObject com Flash Media Server
SharedObject é um recurso que dar ao Flash Player a capacidade de salvar dados localmente para poder ser usado posteriormente em sua aplicação, a grosso modo é como um cookie. Com o Flash Media Server, foi introduzido a possibilidade de usar o SharedObject Remote, no qual os dados são salvos no servidor Flash Media Server e compartilhados para todas as instâncias de uma conexão entre o Flash Player e o Flash Media Server. Isso possibilita a criação de aplicativos em real time como Dashboards, chats e o que mais a imaginação permitir.
O uso do SharedObject Remote pode ser usado de duas maneiras em conjunto com o Adobe Flash Media Server.
- Somente pelo lado cliente, através do Flash Player/AIR
- Em conjunto com ActionScript Communication, linguagem de servidor do Flash Media Server
Vejamos o primeiro caso:
Através do lado cliente, através do Flash Player/AIR
Caso você não tenha conhecimento para usar a linguagem Server-side do Flash Media Server, é possÃvel utilizar o SharedObject Remote somente pelo ActionScript 3.0. Vamos a um exemplo clássico sharedBall, onde o objetivo é compartilhar as posições da bolinha a atualizar nos outros clientes conectados a mesma instância.
- Vá até o diretório de instalação do Flash Media Server e procure pela pasta “applications”, lá crie um diretório chamado “sharedBall”, dentro dele um arquivo chamado “main.asc”
- Abra o main.asc no seu editor de textos de preferencia ou pelo próprio Flash e digite: trace(“sharedBall…”);
- Vamos testar esse arquivo, abra o console do Flash Media Server, geralmente fica localizado no diretorio de instalação/webrrot/swfs. Você pode abrir pelo browser ou o swf diretamente.
- Clique no botão “View Applications” e em seguida procure o nome “sharedBall” no combobox logo no canto inferior esquerdo onde está escrito “New Instance…”
- Selecione “sharedBall” e deveremos ter na aba Live Log algo como na imagem abaixo:
- No Flash, criei uma bola com as ferramentas de desenho e converti para MovieClip dando o nome de “mc_ball”.
- Estamos prontos para começar a integração entre o Flash e o Flash Media Server. Crie um layer para o ActionScript e abra o editor apertando F9 ou “Window->Actions”
- Nosso código começa com a conexão com o servidor Flash Media Server
-
-
-
function init():void
-
-
nc.connect(“rtmp://localhost/sharedBall”);
-
-
-
-
trace(evt.info.code);
-
-
-
init();
Feito isso, podemos testar o swf apertando Ctrl+Enter, se tudo correr bem, deveremos ter a seguinte mensagem no output do Flash:
NetConnection.Connect.Success
Com a conexão feita, podemos instanciar o nosso SharedObject Remote para compartilhar as posições de x e y da bolinha.
-
if(evt.info.code == “NetConnection.Connect.Success”)
-
-
so.connect(nc);
-
O handlerSync é responsável por atualizar os dados de x e y pegaremos do SharedObject Remote:
-
-
mc_ball.x = so.data.x;
-
mc_ball.y = so.data.y;
-
Daremos a opção de ao clicar na bolinha, que ela possa ser arrastável, em seguida atualizaremos as posições de x e y no SharedObject Remote:
-
-
-
mc_ball.startDrag();
-
-
-
-
mc_ball.stopDrag();
-
-
-
-
so.setProperty(“x”,mc_ball.x);
-
so.setProperty(“y”,mc_ball.y);
-
Segue o código completo:
-
-
-
function init():void
-
-
nc.connect(“rtmp://localhost/sharedBall”);
-
-
-
{
-
trace(evt.info.code);
-
if(evt.info.code == “NetConnection.Connect.Success”)
-
-
so.connect(nc);
-
-
}
-
-
-
mc_ball.x = so.data.x;
-
mc_ball.y = so.data.y;
-
-
-
-
-
mc_ball.startDrag();
-
-
-
-
mc_ball.stopDrag();
-
-
-
-
so.setProperty(“x”,mc_ball.x);
-
so.setProperty(“y”,mc_ball.y);
-
-
-
init();
Veja uma demostração em funcionamento:
Flex com PHP usando ZendAMF – Zend_Db
O artigo Adobe Flex com PHP usando ZendAMF – primeiros passos teve como objetivo exemplificar a integração do Flex com PHP para quem já tinha sistemas desenvolvidos usando o AMFPHP, por isso não usei as classes para acesso a banco de dados do ZendFramework. Neste artigo mostrarei o mesmo exemplo mas usando exclusivamente ZendFramework.
Pegarei o mesmo exemplo utilizado no artigo anterior, só modificando a classe PHP para usar as classes de abstração de banco de dados do ZendFramework. Começaremos com nosso gateway.php
-
-
require_once ‘Zend/Config.php’;
-
require_once ‘Zend/Db.php’;
-
require_once ‘Zend/Amf/Server.php’;
-
require_once ‘Zend/Amf/Exception.php’;
-
require_once ‘Zend/Amf/Server.php’;
-
$server = new Zend_Amf_Server();
-
$server->setProduction(false);
-
$server->setClass(‘Contato’);
-
echo($server->handle());
-
?>
Executando o link no seu navegador, deve aparecer a seguinte mensagem:
Zend Amf Endpoint
Em seguida, modificaremos em nossa classe principal, que efetuará as operações de listar, inserir, apagar e atualizar os dados do nosso banco:
-
-
/*
-
* author Leonardo França
-
* site http://www.leonardofranca.com.br
-
*/
-
-
class Contatos
-
-
private $db;
-
private $config;
-
private $select;
-
private $stmt;
-
-
function __construct()
-
-
$params['host'] = ‘localhost’;
-
$params['dbname'] = ‘java’;
-
$params['username'] = ‘root’;
-
$params['password'] = ”;
-
$database['adapter'] = ‘Mysqli’;
-
$database['params'] = $params;
-
$data['database'] = $database;
-
-
$this->config = new Zend_Config($data);
-
$this->db = Zend_Db::factory($this->config->database);
-
-
-
public function getData()
-
-
try
-
-
$this->select = $this->db->select();
-
$this->stmt = $this->select->query();
-
$result = $this->stmt->fetchAll();
-
return $result;
-
-
catch (Exception $e)
-
-
throw new Exception($e->getMessage());
-
-
}
-
-
-
try
-
-
‘nome’ => $data['nome'],
-
‘email’ => $data['email']
-
);
-
$retorno = $this->db->insert(‘tabela’, $dados);
-
return $retorno;
-
-
catch (Exception $e)
-
-
throw new Exception($e->getMessage());
-
-
}
-
-
-
try
-
-
$retorno = $this->db->delete(‘tabela’, ‘id = ‘.$data['id']);
-
return $retorno;
-
-
catch (Exception $e)
-
-
throw new Exception($e->getMessage());
-
-
-
}
-
-
-
try
-
-
‘nome’ => $data['nome'],
-
‘email’ => $data['email']
-
);
-
$where['id = ?'] = $data['id '];
-
return $this->db->update(‘tabela’, $dados, $where);
-
-
catch (Exception $e)
-
-
throw new Exception($e->getMessage());
-
-
}
-
-
}
-
?>
No ActionScript só precisaremos mudar o que será passado para o PHP, ao inves de VOs, mandaremos Arrays:
-
public function insertData():void
-
-
contatosVO['nome']= input_nome.text;
-
contatosVO['email'] = input_email.text;
-
ro.insertData(contatosVO);
-
Referências:
http://framework.zend.com/manual/en/zend.db.adapter.html
JQuery: Compatibilidade de CSS com utilização de cssHooks.
Introdução
Um desafio de todo desenvolvedor html é manter o seu site compatÃvel com todos os browsers ( em especial o Internet Explorer ), devido as limitações e detalhes na implementação de cada um, isso é um fato inegável, e qualquer um que ja tentou um dia desenvolver alguma coisa em html sabe disso.
Em projetos pequenos podemos tomar conta disso sem a necessidade de nenhuma ferramenta extra, entretanto com o? crescimento? do projeto? a tendência ? é que estes trechos de códigos para manter a compatibilidade fiquem tão grande quanto o código do próprio site em si, tornando difÃcil de manter e etc.
jQuery
Nesta hora é importante conhecer as ferramentas que existem para ajudar o desenvolvimento, e utiliza-las de maneira correta. Uma ferramenta importante no desenvolvimento html é o jQuery.
Para quem não sabe o que é, o jQuery é uma biblioteca javascript que facilita a manipulação do DOM ( Document Object Model ) html, ou seja, facilita a manipulação da sua página html.
Para entender melhor do que este post se trata é necessário ter um conhecimento básico da biblioteca jQuery
Hooks
Muitos dos métodos get e set do jQuery podem ser extendidos para casos especiais, estas extensões são conhecidas como hooks. O namespace $.cssHooks permite extender o método .css(), permitindo criar novas propriedades de CSS.
Os hooks podem ser utilizados como uma solução elegante para a compatibilidade de CSS em diferentes browsers, por exemplo, a propriedade text-shadow do CSS3 não é suportada pelo Internet Explorer, portanto o código abaixo não funcionará no IE:
-
$(document).ready(function()
-
$(‘h3′).css(text-shadow: ‘#00ff00′);
-
});
Este código aplica um glow verde em todos os elementos H3 do documento HTML, porém não funciona no IE.
CSS Hooks
Mas nós podemos criar uma nova propriedade css, e internamente tratar o caso do IE. Vamos chamar a nova propriedade de glowColor:
-
(function($)
-
var div = document.createElement(‘div’);
-
$.support.textShadow = div.style.textShadow === ”;
-
$.support.filter = div.style.filter === ”;
-
div = null;
-
-
if ($.support.textShadow)
-
$.cssHooks.glowColor =
-
set: function(elem, value)
-
if (value == ‘none’)
-
elem.style.textShadow = ”;
-
-
else
-
elem.style.textShadow = ’0 0 2px ‘ + value;
-
-
}
-
};
-
}
-
else
-
$.cssHooks.glowColor =
-
set: function(elem, value)
-
if (value == ‘none’)
-
elem.style.filter = ”;
-
-
else
-
elem.style.zoom = 1;
-
elem.style.filter =
-
‘progid:DXImageTransform.Microsoft’ +
-
‘.Glow(Strength=2, Color=’ + value + ‘);’;
-
-
}
-
};
-
}
-
})(jQuery);
Este código cria uma propriedade dentro do namespace .cssHooks chamada glowColor, esta propriedade possui uma função set especÃfica para o caso do IE e outra para o caso dos outros browsers. A lógica deste código é basicamente, verificar se possui suporte ao textShadow, caso sim,? define? uma função set que altera o atributo elem.style.textShadow com a cor do parâmetro, caso não, define uma função que altera a propriedade elem.style.filter com um filtro especifico utilizando a cor do? parâmetro.
Agora podemos aplicar o efeito através do código
-
$(document).ready(function()
-
$(‘h3′).css(glowColor: ‘#00ff00′);
-
});
Conclusão
O lado bom de criar um cssHook no jQuery para o problema de descrito é que o código que trata a compatibilidade fica oculto do desenvolvedor, ele não precisa se? preocupar? com isso, o foco é no código que? constrói? a pagina unicamente. Esta? estratégia pode ser aplicada para outros diversos efeitos e manipulações, criar uma serie de hooks para tratar este tipo de coisa e etc. O lado ruim no meu ponto de vista é que estamos criando propriedades novas, que são desconhecidas pelos outros desenvolvedores e etc, portanto um novo desenvolvedor iria demorar para aprender todas customizações e suas funções, uma dica é tentar manter os nomes semelhantes ao padrão.
Por @thiagoofelix
Referências
Play Framework – alta produtividade em Java
O Play ? um framework open source para aplica??es web, escrito em Java, que possibilita o desenvolvimento de aplica??es web que seguem o padr?o MVC. Tem por objetivo otimizar a produtividade do desenvolvedor atrav?s do uso de configura??o sobre conven??o (CoC). Com recompila??o feita durante a execu??o da aplica??o, e caso ocorra algum erro, o respectivo ? exibido no browser, indicando a linha do erro.
Aten??o: o objetivo desse post ? realizar uma vis?o geral do que se trat? o Play Framework que temos ouvidos os coment?rios na internet.
O Play Framework torna o desenvolvimento de aplica??es Java e Scala uma tarefa f?cil para o desenvolvedor.
Site: Play Framework
Descubra uma alternativa limpa e leve para as atuais aplica??es Java Enterprise. O Play ? focado na produtividade do desenvolvedor e tem por alvo a arquitetura RESTFul.
Apesar do Play ter sido escrito em Java, ele suporta a linguagem Scala desde a vers?o 1.1 (hoje[Dezembro/2011] est? na vers?o 1.2.4). Este ano a empresa Typesafe (respons?vel pela linguagem Scala), anunciou a aquisi??o do Play Framework e este ser? mantido pela empresa. Uma das novidades relacionado a este anuncio ? que a vers?o 2.0 o n?cleo do Play Framework est? sendo totalmente reescrito em Scala.
Um v?deo para uma breve apresenta??o do Play Framework: Desenvolcendo uma aplica??o web em 10 minutos
Motiva??o
O Play foi muito inspirado no Ruby on Rails e Django. Um desenvolvedor familiarizado com qualquer um desses 2, ir? se sentir em casa.
Algo que ? fato, Ruby on Rails e Django s?o produtivos, ent?o por que n?o ter o mesmo n?vel de produtividade com java?
O Play utiliza do poder das aplica??es Java, por?m sem o “sofrimento” necess?rio para o desenvolvimento de aplica??es centradas no modelo Java Enterprise. Libertando das metodologias e ideologias relacionadas ao desenvolvimento de aplica??es Java EE, o Play prove para os desenvolvedores uma maneira f?cil e elegante de trabalhar, visando o aumento da produtividade.
Caso voc? queria, basta um editor de c?digo e ser? mais que o suficiente para o desenvolvimento de aplica??es, chega a ser incr?vel pensar que conseguiremos desenvolver aplica??es Java Web sem a necessidade de um IDE (Eclipse, Netbeans, …), mas vale lembrar, que estas IDE's ainda possuem seus atrat?vos e auxiliam em nossa produtividade.
Apesar de que as aplica??es desenvolvidas com o Play, foram projetadas para executar dentro do JBoss Netty Web Server, as aplica??es podem ser empacotadas em arquivos WAR e distribu?das para outros servidores de aplica??es Java EE (ex.: Apache Tomcat).
Maiores diferen?as com os demais frameworks
Stateless: o Play ? totalmente RESTful – n?o existe conex?o por sess?o Java EE. Isto torna o Play muito mais escal?vel que os demais frameworks.
Sem configura??o: realizar o download, descompactar e desenvolver.
F?cil ida e volta: sem necessidade de deploy no servidor de aplica??o, apenas edite o c?digo e atualize o browser.
Teste unit?rio integrado: suportes nativos para JUnit e Selenium.
API elegante: raramente um desenvolvedor ter? a necessidade de importar alguma lib. O Play j? disponibiliza a maioria dos recursos necess?rios para o desenvolvimento de uma aplica??o.
M?todos est?ticos: todos os controles de entrada e m?todos de neg?cio s?o declarados como est?ticos. E isto ? de fato bem diferente o que vemos nos demais frameworks Java.
I/O Ass?ncrona: atrav?s do uso do servidor web JBoss Netty, o Play consegue disponibilizar e tratar uma enorme quantidade de requisi??es ass?ncronas.
Arquitetura Modular: assim como Rail e Django, o Play utiliza o conceito de m?dulos. O que possibilida um meio elegante e simples de expandir o core do Play.
M?dulo CRUD: f?cil constru??o de UI administrativas com pouco c?digo.
M?dulo Scala: disponibiliza um suporte completo para Scala.
Componentes
O Play utiliza massivamente algumas bibliotecas populares:
- JBoss Netty para o servidor web.
- Hibernate para a camada de dados.
- Groovy para a os templates.
- O compilador do Eclipse para atualiza??o da aplica??o sem necessidade de realizar um deploy da aplica??o para testar as altera??es (hot-reloading).
- Apache Ivy para gerencimanto de dependencias.
Funcionalidades presentes no n?cleo do Play:
- Um framework RESTful limpo e leve.
- CRUD: um m?dulo para simplicifar a edi??o de modelos de objetos.
- Secure: um m?dulo para habilitar um sistema de autentifica??o de usu?rios.
- Um framework de valida??o baseado em anota??es.
- Um Job Scheduler (agendamento de tarefas).
- Suporte para emails SMTP de maneira simples.
- Suporte para JSON e XML.
- Uma camada de persist?ncia baseada em JPA.
- Uma base de dados embutida para r?pido deploy e testes da aplica??o.
- Um framework completo para realiza??o de testes.
- Funcionalidade para upload de arquivos.
- Suporte para m?ltiplos ambientes de desenvolvimento.
- Uma poderosa engine de templates baseadas em Groovy com templates, hierarquias e tags.
- Arquitetura modular, que possibilita criar novas funcionalidades para o n?cleo facilmente.
- Suporte para OpenID e clientes de Web Service.
Links ?teis
Informa??es a mais da Wikipedia
Overview do Play Framework 1.2.4
Documenta??o Play Framework 1.2.4
A documenta??o foi algo que achei interessante, me parece bem completa com bastante exemplos e informa??es de como utilizar as funcionalidades presentes no Play Framework.
Suporte para a linguagem Scala
Utilize a IDE de sua prefer?ncia (Eclipse, Netbeans, …)
Se por um acaso voc? utilize o Sublime Text 2, veja esse suporte para este editor de c?digo [github]
Dentre eles temos: MongoDB, GAE, Gera??o de PDF, GWT, SASS e SCSS, entre outros.
E agora?
Bom agora que j? temos uma boa id?ia do que se trata o Play Framework ? baixar e come?ar a testar e ver se na pr?tica ele ? bom mesmo.
Hora de fazer o download, instalar e colocar a m?o no c?digo: Tutorial para seguir e ver uma aplica??o do in?cio at? o “fim”
Eu particularmente ainda possuo algumas quest?es em aberto para descobrir as respostas, dentre elas est? uma: - Como ? que eu utilizo o Play Framework em um projeto com uma equipe? At? o momento s? tenho visto casos onde s?o apresentados desenvolvimetno de aplica??es r?pidas, por?m com um ?nico desenvolvedor…
No meu caso eu vou atr?s dessa reposta.
Veja também:
NoSQL, mas o que é isso?
Caso voc? trabalha com desenvolvimento de software, ambiente web, provavelmente tem ouvido e lido sobre esse tal de NoSQL, mas o que ?, para que serve, quando usar, voc? sabe?
Aten??o a explica??o a seguir ? a minha com rela??o ao assunto:
Antes de mais nada, o NoSQL ? um novo modelo de base de dados, diferente do modelo relacional, que, creio eu ? muito conhecido de todos os desenvolvedores de software, o NoSQL surgiu para suprir a necessidade de lidar com um volume de informa??es que podem ir muito al?m da que voc? consiga imaginar. Este ? o cen?rio de redes sociais, exemplos cl?ssicos n?s temos o Twitter, Facebook e outras redes, onde a quantidade de informa??o gerada pelos usu?rios (essas redes que possuem milh?es de usu?rios ao redor do mundo) possui um crescimento que as bases de dados relacionais n?o conseguem comportar.
O NoSQL surgiu j? pensando em crescimento da informa??o armazenada e manipulada. As solu??es de NoSQL que temos dispon?veis hoje j? vem por padr?o com todo o conjunto de suporte para poder adicionar novos servidores (nodes) e comportar um crescimento dos dados a um custo muito menor do que a das bases relacionais. Esse crescimento ? chamado de crescimento horizontal, onde basta adicionar novas m?quinas e nessas bases NoSQL adicionadas como nodes da base e tudo pronto. Enquanto nas bases relacionais o crescimento ? vertical, ou seja, ? necess?rio aumentar o poder de hardware dos servidores (e este custo ? alto), al?m do fato que a implementa??o de servidores escravos e nodes n?o s?o simples de adicionar e gerenciar, pois essas bases n?o foram projetadas para atender a esse n?vel de demanda.
Sei que n?o sou o melhor para explicar o respectivo tema, ent?o vamos ao real objetivo do tema, segue alguns materiais interessantes para estudar quanto ao tema, segue estes excelentes postcats sobre o tema que apresenta uma boa vis?o e explica??o sobre o assunto, do pessoal do Grok Podcast:
Epis?dio 45 – Repensando os bancos de dados – NoSQL – Parte 1 de 3
Epis?dio 46 – Repensando os bancos de dados – NoSQL – Parte 2 de 3
Epis?dio 47 – Repensando os bancos de dados – NoSQL – Parte 3 de 3
Links para mais informa??es do assunto:
Comunidade Brasileira de NoSQL
Listagem das bases NoSQL existentes
Escalabilidade – Introdu??o ao NoSQL 1
Veja também:
Até logo, eBehavior – Inteligência para eCommerce

Por decis?es pessoais e por n?o mais compartilhar do mesmo sonho, estou me desligando com muito pesar da eBehavior.
Foi um ano de muito aprendizado, v?rias amizades feitas e principalmente de muito trabalho.
Sinto tremendo orgulho e honrado por ter passado por todas as ?reas da empresa, entrei como desenvolvedor onde pude conhecer por dentro a magia da recomenda??o acertiva de produtos e cross-intelligence que a eBehavior tem. Com o crescimento do time de dev assumi a Coordena??o da equipe e gerenciamentos dos projetos, onde melhorei o meu gerenciamento de pessoas, prazos, escopos e riscos que envolvem projetos de alta escalabilidade e disponibilidade como os da eBehavior. A empresa continuou a crescer ent?o assumi com orgulho a posi??o de Gerente de Produto com a grande responsabilidade de ditar o direcionamento dos produtos da eBehavior que cumpri com muita dedica??o e chatisse com os devs para o conseguirmos o melhor para o cliente, e ? uns dois meses atr?s com a sa?da do diretor comercial, assumi a responsabilidade de atuar frente aos clientes os ajudando no entendimento das ferramentas, na melhor configura??o e otimiza??o delas para suas lojas, estudando e entendendo cada empresa, cada loja, cada consumidor para essa otimiza??o. Foi um ano muito intenso para mim e para todos que estavam ao meu lado.
Agrade?o enormemente ao Andr? pela oportunidade de ter participado do projeto eBehavior durante esse um ano e principalmente por ter tido a possibilidade de passar de ponta a ponta na empresa.
Saio com a grata sensa??o de dever cumprido e desejando muito sucesso a esse time de guerreiros da eBehavior. Que um dia ir? mudar o rumo do ecommerce brasileiro e mundial.
Meus planos s?o de continuar atuando como desenvolvedor e consultor para eCommerce, uma ?rea que me aprofundei muito durante esse um ano de casa.
Deixo aqui o meu muito obrigado a todos com que eu conversei pessoalmente, por telefone, por email e at? para quem n?o conheci mas que de alguma forma participou do meu trabalho. Pois cada um de voc?s contribuiram de forma significativa para o meu crescimento pessoal e profissional.
Mais uma vez, obrigado e at? logo!
Igor Musardo
Flash Player para Mobile é descontinuado, e agora?
Olá pessoal, Que semana bombástica para os desenvolvedores que utilizam a plataforma Flash! Muitas notÃcias foram dadas e a maior parte desagradou a comunidade. Resultado, muita reclamação no twitter, blogs, gtalk, msn e skype. Mas eu acho isso muito normal, já que a comunidade Flash é uma das mais passionais que eu já conheci. São [...]







