Realizando consultas na base de dados do Parse

Essa semana eu iniciei uma série de posts sobre o Parse, serviço de cloud do Facebook. Neste segundo post vou abordar como realizar consultas em nossa base. Caso não conheça o Parse veja o post de introdução: https://www.fellyph.com.br/blog/tutoriais/parse/.

No post anterior abordamos um pouco sobre consultas, primeiro resgatamos todos os valores de uma base com a função “find”, em seguida resgatamos um único item com a função “get”. Criei um cadastro de carros com as propriedades: modelo, ano e valor para cadastrar os dados utilizei os mesmo padrão do post anterior:

INDEX.HTML

APP.JS

Cadastrei algumas informações na minha base para realizar a consulta:

Captura de Tela 2014-01-16 às 19.53.32

Agora vamos dar uma olhada em algumas funções que podemos trabalhar com a classe Query. A primeira delas será a função equalTo:

equalTo

Na função equealTo passamos dois parâmetros, o primeiro o nome da propriedade e a segunda o valor que você deseja comparar, detalhe sobre a função que sua consulta é case sensitive.

notEqualTo

A função notEqualTo é o inverso da função equalsTo ela retorna todos os valores diferentes do valor repassado. Também é possível realizar queries compostas:

O função oposta seria lessThan ela retorna apenas os valores menores:

limit

Por padrão as consultas tem um limite 100 resultados por query, podemos modificar esse resultado de 1 até 1000. Para aplicar esse limite utilizamos a seguinte função:

first

Em nossa query podemos resgatar apenas o primeiro resultado isso é possível com a função first:

skip

Podemos definir o limite de resultados e também podemos definir o índice inicial do resultado com a função skip, com essas duas funções podemos criar um esquema de paginação.

ascending & descending

Além de criar filtros, busca por valores, limitar a busca… criar paginação… Pensa que acabou? Não ainda podemos ordenar nossa consulta(por ascendente ou descendente):

O resultado será o seguinte:

Captura de Tela 2014-01-17 às 18.08.08

Outra opção com listagem de valores maiores para menores:

containedIn & notContainedIn

Caso queiramos realizar a consulta com mais de um modelo de carro, por exemplo, podemos utilizar a função containedIn ela espera um Array como parâmetro:

O inverso da função containedIn seguindo o padrão é a função notContainedIn, ela retorna o resultado das palavras diferente das que constam no Array:

exists & doesNotExist

O Parse permite criar objetos com propriedades vazias ou modificar os objetos depois de criados adicionando novos atributos, assim os objetos antigos ficam sem a informação gravada, para isso podemos utilizar a função exists para verificar se o objeto possui informação gravada na propriedade requisitada.

Vamos a um exemplo:

No código acima verificamos os itens que tem a propriedade year cadastrada, o inverso seria:

matchesKeyInQuery & doesNotMatchKeyInQuery

A matchKeyInQuery serve para comparar dois objetos de classes diferentes que possuem duas propriedades iguais, por exemplo:

No código acima temos duas class Team e Users esta classe deriva do Parse Porque é uma classe especial, vamos falar dela em um próximo post. Mas voltando a query, comparamos duas propriedades “hometown” e “city” presentes na classe User e Team quando eles forem idênticos apareceram em nossa consulta.

select

Caso queira consultar propriedades específicas com a função select passamos as keys das propriedades que queremos:

Captura de Tela 2014-01-17 às 20.01.44

No caso da imagem acima utilizei a mesma função de exibir os resultados, por conta de utilizar o select a coluna valor veio “undefined” porque eu só escolhi duas propriedades “model” e “year”.

startsWith

Na função equalsTo ele retorna valores estritamente idênticos, com a função podemos resgatar valores que iniciam com a String repassada, ela tem um funcionamento parecido com o operador LIKE do MySQL. Esta consulta também é case sensitive.

Captura de Tela 2014-01-17 às 20.29.05

count

A função count conta “Dan”, isso mesmo ela serve para contar o número de itens do resultado ela funciona da seguinte forma:

No exemplo anterior eu realizei um filtro sobre a query e a função count tem o tratamento similar a função find, falando nela podemos aplicar as duas em conjunto sem problemas. Temos outras queries aplicadas em objetos relacionais mas isso vamos abordar em um futuro. Até o próximo post Pessoal.

Observe a orientação do device com JavaScript

js-logo

Com Javascript podemos observar a orientação do device, também é possível realizar este tratamento com CSS, mas isso fica restrito a questões visuais, caso queria realizar algum tratamento lógico em nossa aplicação podemos utilizar JavaScript. Temos “N” possibilidades de acompanhar a orientação do device, nesse post vou mostrar duas maneiras bem simples, a primeira observando o evento ‘orientationchange’, para isso adicionamos um listener em em nossa janela com o seguinte código:

O código acima acompanha quando a orientação do device muda, mas como sabemos que o usuário está em landscape ou portrait, para isso pegamos a orientação do device, com window.orientation essa propriedade retorna a rotação do device:

Com as informações sobre a rotação do device sabemos que 90 ou -90 o device está em landscape e diferente disso portrait. No código acima foi disparado somente um alert, mas poderíamos chamar alguma outra função, editar uma classe de um elemento ou adicionar uma conteúdo específico para o usuário.

A segunda opção seria com matchMedia ela faz parte da Web API Interface com ela podemos validar media queries por exemplo:

Podemos validar qualquer media query no CSS3 temos uma regra para  verificar a orientação vamos utilizar ela para pegar  o orientação do nosso device:

Temos ai duas opções para verificar a orientação do device.

Os últimos Talks de 2013

2013 foi um ano incrível, e no fechar das cortinas tive a chance de palestrar em dois grandes eventos. O WEBBR 2013 e EATI 2013 duas experiência incríveis, o primeiro eventos é um dos maiores eventos de Web do Brasil e o segundo um super evento no extremo sul do Brasil.

10926290736_ae00782970_b

Na segunda feira dia 18 de abril tive a oportunidade de falar sobre performance em apps HTML5, a palestra inicialmente seria apresentada por Demian Borba que generosamente emprestou o conteúdo de sua palestra. Nela listei 20 dicas sobre performance. Tive sorte de abrir a rodada de palestras, abrir evento é sempre bom que você fica com tempo livre para conferir todas as outras palestras. No  WEBBR 2013 possuía  4 trilhas e eu fui escalado na trilha canvas, após minha palestra  tirando a palestra da Talita Pagani eu fiquei mais tempo na trilha section.

10926377694_79c9a666a9_b

Após a minha palestra foi a vez de Talita Pagani subir no auditório. Com a palestra sobre games com HTML5, apresentação que abordou os principais assuntos sobre desenvolvimento de jogos em HTML5, na palestra a Talita falou de algumas questões que ela enfrenta no dia-a-dia. Após a palestra da Talita conferi ótimas palestras com Bruno Azevedo, Caio Gondim e Almir Filho. No WEBBR tive a oportunidade de conhecer o trabalho do Bruno e por sorte encontrar novamente no EATI e conhecer mais sobre esse grande profissional.

10930898514_996b20165a_b

O EATI evento organizado pelo o Joel da Silva, aconteceu na unidade da Universidade Federal de Santa Maria de Frederico Westphalen, posso falar que foi um dos eventos que fui mais bem acolhido em 2013. A cidade de Frederico Westphalen está situada entra Santa Cataria, Rio Grande do Sul e Argentina. Para chegar lá tive que enfrentar uma verdadeira Odseia, sai na noite do dia 19 de novembro de Guarulhos para  Chapecó, fazendo escala em Florianópolis, chegando em Floripa por questões climáticas tive que ir de ônibus até Frederico Westphalen uma viagem que durou 11 horas. Chegando lá fui direto para a UFSM onde tinha um workshop no período da tarde e a noite uma palestra.

DSC_0150 DSC00849

As fotos acima são do Workshop sobre desenvolvimento de Jogos em HTML5, logo após o workshop foi a vez da palestra para os Estudantes da UFSM

DSC_0021

Posso falar que foi sofrido mas valeu a pena a recepção dos professores e alunos foi incrível. No dia seguinte a minha palestra foi a vez do momento BrazilJS, Jaydson e companhia durante todo o dia deram uma série de palestras sobre Front End. Devidamente recuperado eu acompanhei todas as palestras no segundo dia. Algumas das palestras eu tinha visto dias antes no Webbr Conf mas valeu a pena ver de novo.

DSCF0505 DSCF0521

2013 foi um ano incrível, aprendi bastante e conheci pessoas incríveis nas cidades onde passei, a batalha inicia novamente e que venha 2014! Um 2014 de muito sucesso para todos os leitores.

Jornada Adobe 2014

Olá Pessoal, no mês de janeiro estarei em Maceió e João Pessoal para ministrar 3 treinamentos na Jornada Adobe 2014, para mim é uma honra participar desse evento que já contou com grandes nomes em suas edições anteriores. Volto a cidade de Maceió após o Adobe Camp para mim é um prazer voltar a cidade onde sou tão bem recebido. Em Maceió vou ministrar dois Cursos Mobile Impact(20/01, 21/01 e 22/01) e  WordPress Impact(23/01, 24/01 e 25/01). Em João Pessoal será a minha primeira vez como “MC”, lá estive presente a muito tempo atrás para um evento da SBC, lá eu vou ministrar o treinamento Mobile Impact(27/01, 28/01 e 29/01). Estou bastante ansioso para voltar para “Jampa”.

O Curso WordPress Impact tem a seguinte grade:

Primeiro dia

  • Preparando seu ambiente local de desenvolvimento
  • Estrutura de pastas e organização de arquivos
  • Requisitando informações do blog
  • Entendendo o loop
  • Filtrando o conteúdo do loop com query_posts, WP_Query
  • Integrando o tema com framework front-end

Segundo dia

  • Controla a Paginação
  • Menus dinâmicos(wp_nav_menu)
  • Filtros(Hooks)
  • Administrando sidebars(dynamic_sidebar)
  • Template Page
  • Post Thumbnail

Terceiro dia

  • Campos personalizados
  • Criando formulário para cadastro de campos personalizados
  • Post_types
  • Criando nova taxinomia
  • Integrando WordPress com libs javascript(jQuery ou Zepto)

Este treinamento acontecerá somente na cidade de Maceió, o treinamento Mobile Impact acontece em Maceió e João Pessoa tem a seguinte grade:

Primeiro Dia

  • Input Types
    • Numeric
    • Tel
    • Date
    • Hour
    • Email
  • Input Attributes
    • Validate elements
    • Required elements
  • CSS tips
      • Multiple Backgrounds
      • Transitions
      • Transforms
      • 3D transforms
      • Gradients
      • Background-size
      • Opacity

    <liAnimation

    • Media queries

Segundo Dia

  • Trabalhando com áudio
  • Trabalhando com vídeo
  • Canvas
  • Geolocation
  • API Drag and Drop API
  • Custom Data Attribute
  • LocalStorage
  • Microdata
  • WebSQL
  • Websockets

Terceiro Dia

  • Hammer.js
  • Cloud Service with Parse
  • Projeto Final
    • Colocando tudo em prática
    • Preparando ambiente Instalando o PhoneGap
    • Publicando seu app

Ficou Interessado só se inscrever no link: http://www.jornadaadobe.com/inscricoes

Trabalhando gestos com Hammer.js

hammer-jsHammer é uma biblioteca JavaScript que dispara eventos para os gestos realizados em suas aplicações com HTML+JS. O Hammer.js é simples de usar, como muitas bibliotecas ele usa o esquema “jQuery-like”.

Para utilizar a biblioteca de gestos precisamos dos seguintes passos, carregar a biblioteca do Hammer disponível no link: http://eightmedia.github.io/hammer.js/, além de encontrar o fonte lá você vai encontrar exemplos de como usar a biblioteca. Com os arquivos importados agora vamos ao código, inicialmente selecionamos o elemento o qual vamos “ouvir” os gestos e depois especificamos o gesto que vamos acompanhar.

Exemplo:

No código acima temos um exemplo que acompanha o movimento de swipe, quando realizado ele dispara um alert. E o que podemos fazer com isso? Slide de fotos, invocar menus, ações em jogos, mudança de conteúdo. Podemos notar que no código acima recebemos um evento na função chamada pelo Hammer, vamos usar o “console.log” para inspecionar esse item e o resultado será o seguinte:Captura de Tela 2014-01-03 às 16.16.03

Ele retorna um objeto com uma sério de propriedades, no final da lista temos algumas propriedades importantes, type(tipo do evento), timeStamp, target(onde foi realizado o evento), srcElement(O elemento responsável por chamar o evento) e  gesture um objeto que capta as infos sobre o “toque” realizado pelo usuário, esse item vamos detalhar a seguir:

Captura de Tela 2014-01-03 às 16.16.26

No objeto gesture temos como pegar a angulação que foi realizado o toque, a velocidade x e y, escala, distância, rotação e direção do toque. É muito informação que pode ser trabalhada

Agora vamos a um evento mais prático:

No exemplo acima em nosso elemento com id box, adicionamos uma tag nav com id menu esse item que vamos exibir e esconder. No código JavaScript no final do nosso arquivo verificamos no objeto gesture qual o valor do direction, caso “right” adicionamos o class active, caso contrario adicionamos o class “hide” a transição nos fazemos com CSS3 o código eu mostro a seguir:

Um exemplo simples mas muito usado em muitas aplicações. O exemplo completo desse tutorial você pode conferir no GitHub: https://github.com/fellyph/Tutorial-bbUI/tree/master/hammer/www

 

 

Sorteio de convite para o Front in BH

logo-bh

A BlackBerry estará presente em um dos maiores eventos de Front End do Brasil, o Front in BH. Lá iremos participar com um Light Talks sobre bbUI.js. O evento ocorre nesse final de semana no sábado dia 03 de agosto, no Teatro Ney Soares. Para comemorar nossa presença no evento iremos sortear um convite para o Front in BH, para participar serão necessários dois passos:

1 – Inscreva-se no Dev Group BlackBerry BH : https://www.facebook.com/groups/BlackBerryDevGroupBeloHorizonte/

2 – Deixe um comentário aqui nesse post: “Eu com a BlackBerry para o Front in BH”.

Na sexta-feira dia 02 de agosto às 14h divulgaremos o resultado.

Boa Sorte

Falando um pouco sobre o evento, o Front in BH irá contar com a seguinte grade:

Maurício Maujor
Bernard de Luna
Zeno Rocha
Clauber Stipkovic – Mozilla Persona
Tiago Venegas – Desenvolvendo aplicações móveis com bbUI.js
Michael Lancaster – CSS do jeito correto?
Sérgio Lopes – Repensando o front-end para telas de alta resolução
Ciro Nunes – Desenvolvimento ágil com o AngularJS
Reinaldo Ferraz – Como contribuir para um padrão do W3C
Miller Medeiros – RequireJS
Eduardo Lundgren – Indo além com AlloyUI
Andrews Medina – Testando interfaces de forma divertida

Caso ainda não garantiu sua presença o evento conta com as últimas vagas.

Mais informações em: http://frontinbh.com.br/

Slides do terceiro Wordtalks DRC

No dia 05 de Fevereiro rolou o terceiro Wordtalks DRC no evento rolou três palestras. Rodrigo Simoni falando de 10 dicas de SEO, Luis Felipe falando sobre dicas de servidores para WordPress.

Minha apresentação foi sobre como utilizar o WordPress em aplicativos mobile. os slide da apresentação você confere aqui :

Slides da apresentação do Rodrigo Simoni: