Vamos a primeira delas:
Se você veio de uma linguagem com tipagem estática, você com certeza já sentiu falta de ter certeza que nenhum programador vai passar o tipo errado.
Embora o costume das linguagens de tipagem dinâmica seja favorecer a documentação e o “duck typing”, a tipagem estática não deixa de ser interessante.
Esta funcionalidade está presente desde a versão 5.3 para classes, e da versão 7 para tipos primários, exemplo:
1 2 3 |
|
Neste exemplo, se você enviar qualquer argumento que não seja descendente da classe DateTime, o php vai lançar um erro fatal.
Saiba mais em: http://php.net/manual/pt_BR/language.oop5.typehinting.php
Suponhamos que você tenha 2 arquivos, principal.php e incluso.php, você pode fazer isso:
1 2 3 |
|
1 2 |
|
Nos exemplos da documentação do PHP você pode aprender mais: http://php.net/manual/pt_BR/function.include.php
Você conhece o operador ternário? como abaixo:
1
|
|
Porém, a partir da versão 5.3 você pode usar o que foi chamado de operador binário, exemplo:
1
|
|
Neste caso se a $variavel1 for vazia a $variavel2 é usada.
Como chamar uma variável pelo seu nome? dessa forma parece simples, mas se você tem um nome que pode variar? você pode chamar como “string” da seguinte forma:
1 2 3 |
|
O mesmo vale para nome de funções, métodos ou classes.
Se você já precisou trabalhar com herença de classes estáticas você provavelmente já enfrentou o seguinte problema:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Como pode ser observado, esperavamos que a classe Pessoa2Static referencia-se suas próprias váriaveis estáticas nos métodos herdados, porém o mesmo não acontece.
Para resolver isso você pode usar “static::” ao invés de “self::”
http://php.net/manual/pt_BR/language.oop5.late-static-bindings.php
]]>Este processo vai ser executado a partir de linux (Xubuntu 14.04, versão leve do Ubuntu).
Este tutorial foi feito com base nestes daqui:
http://ftb.rgaiacs.com/2014/05/19/atualizando_alcatel.html#id2
https://support.mozilla.org/pt-BR/forums/firefox-os-portuguese-forum/710009?last=57854
Eles possuem imagem
Você pode estragar o seu celular.
De qualquer forma você vai perder todos os seus contatos.
Se você ainda está com a versão 1.1 (atualmente os celulares vendidos pela Vivo vem com esta versão), o seu celular não tem algumas novas “Api”, como por exemplo o microfone, na versão 1.1 nenhum aplicativo desenvolvido por terceiros pode usar o microfone.
Nesse modo você pode copiar a imagem para o seu celular, para entrar reinicie o celular e durante a tela de reinicialização segure o botão de “diminuir volume” por 5 segundos, ele vai travar na tela branca, pronto, você esta no modo Bootloader.
É um modo de recuperação, no nosso caso vamos instalar um novo modo de recuperação capaz de gravar um backup do sistema no cartão de memória. Para entrar no modo recovery reinicie o celular e segure o botão “aumentar volume” por 5 segundos (na tela branca).
O adb e fastboot
1
|
|
Primeiro precisamos de dois arquivos, o Recovery (para fazer o backup antes) e a Imagem do Sistema.
Imagem do Recovery: http://vegnuxmod.wordpress.com/recovery/ Clockworkmod | download | md5: f3d20b0ba8dc587774f80188a39a6339
Imagem do Sistema: http://vegnuxmod.wordpress.com/hamachi-alcatel-otf/ v2.0-20140820 | Mega | md5: 6359aa0d1cee2377b91a19fdd4f92043
1 2 |
|
Os dois comandos tem que imprimir respectivamente os md5 indicados no síte do vegnuxmod (e referenciados aqui, no início do post).
1 2 3 |
|
Vai aparecer uma mensagem: “Waiting for device”, você deve reiniciar o seu aparelho e entrar no modo “Bootloader”. (conforme ensinado nos conceitos)
Vai aparecer uma mensagem “writing ‘recovery’”, quando aparecer a mensagem ‘finished. total time: xxxx.s’, está pronto, você pode reiniciar o seu celular com o seguinte comando.
1
|
|
Entre no modo Recovery (como explicado no conceitos). Use a tecla aumentar volume e diminuir volume para alternar entre as telas do recovery, e o botão que você usa para ligar para selecionar uma opção: Entre em: “backup and restore”. Entre em: “backup”, é a primeira opção. Aguarde. Aqui demorou uns 2 minutos.
Vamos reiniciar o sistema novamente: Entre em: “++++ Go back ++++” Entre em: “Reboot system now”
Agora vamos copiar os arquivos gerados para o nosso computador: Entre no Cartão de Memória a partir de seu computador (normalmente, como você faz quando quer copiar arquivos). Copie a pasta “clockworkmod” para o seu computador. (Aqui foram 247mb em +/- 5 minutos).
Já temos o backup salvo no nosso computador e vamos copiar o novo sistema. Primeiro vamos descompacatar o arquivo que baixamos (o firefox os 2):
1 2 3 4 |
|
Entre no modo Bootloader (reinicie e segure o botão de diminuir volume na tela branca por 5 segundos).
Agora vamos copiar o sistema:
1 2 3 4 5 |
|
Pronto, o sistema esta funcionando, Selecione as configurações
]]>O Gaia UI Building Blocks é um conjunto de arquivos (Html, Css e Imagens) que representam a aparência nativa do FirefoxOS
O Arquivo de Manifesto especifica as informações básicas sobre o seu aplicativo, como nome, descrição, autor, permissão das api’s e etc…
O Zepto é uma biblioteca javascript com foco principal na facilidade de manuseio do DOM. Ele é muito compatível com o jQuery.
O Underscore é uma biblioteca javascript que oferece várias funções simples e úteis de uso geral.
O Backbone é um framework para javascript muito leve e fácil de usar, muito conhecido. nele você separa a sua aplicação em Model, Collection, View e Template.
O modelo é o objeto responsável por representar uma entidade do seu banco de dados.
Uma coleção é o objeto responsável por gerenciar um conjunto de modelos
A Visualização é o objeto responsável por mostrar ao usuário as informações (que podem vir de um modelo ou coleção)
Um Template é a aparência que o usuário vê, no nosso caso é um arquivo html.
Nosso primeiro aplicativo vai ser o mais simples possível, NÃO vamos usar nenhum gerenciador de pacotes como o Bower Componentes, nem algo como o RequireJS para separar o código em módulos. Eu recomendo você posquisar sobre eles futuramente.
A nossa estrutura de arquivos será bem simplória, considere que este é o nosso primeiro aplicativo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
O restante do código é como se você estivesse programando para um navegador html5, com algumas API que você pode consultar em:
https://developer.mozilla.org/en-US/Apps/Reference
Para detalhes de como criar um aplicação no backbone, consulte:
https://backbonetutorials.com/
http://blog.fernandomantoan.com/serie-backbone-js-parte-1-introducao/
]]>A API de Notificação, como o próprio nome indica, exibe uma notificação, essa é a sua única e exclusiva funcionalidade
A API de Alarme “acorda” o seu aplicativo, somente isso, não espere nada de mais, no caso do FirefoxOS o seu aplicativo “acorda” em segundo plano
Suponhamos que você deseja fazer um “Alarme” para acordar o dono do celular na manhã de natal de 2014, o primeiro passo é criar um alarme para esta data:
1 2 3 4 5 6 7 8 |
|
Pronto, você tem um alarme, mas lembre-se que isso não vai exibir nenhum alerta, somente vai acordar o seu aplicativo. Agora você deve exibir uma notificação quando o alarme for chamado.
O Nosso primeiro problema é que a implementação foi modificada e aparelhos das primeiras versões do FirefoxOS possuem uma interface diferente para criar uma notificação, portanto teremos que fazer uma função para lidar com isso, não vou reinventar a roda, estou colocando um código que é usado no aplicativo FireseaIRC de nickdesaulniers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Pronto, já possuimos uma implementação de sendNotification, agora precisamos capturar a chamada do alarme e exibir a notificação
1 2 3 4 5 |
|
Entendo que no meio da leitura algumas dúvidas possam ter surgido, como: “Porque acordar as 8 horas?”, ou “O que significa ignoreTimezone?”, porém algumas destas dúvidas podem ser respondidas na documentação da mozilla.
https://developer.mozilla.org/en-US/docs/Web/API/notification
]]>Como primeira experiência a compartilhar quero informar que estou utilizando o Octopress para criar este blog, o que signfica que eu vou escrever os meus posts em um arquivo de texto com markdown em um editor de texto (estou usando o Sublime Text para escrever este Post), O Octopress não possui um painel administrativo, tudo é feito na linha de comando com o “rake” (automatizador de tarefas padrão do Ruby) e depois é gerado um conjunto de páginas estáticas que eu posso hospedar em qualquer servidor web (não é necessário o servidor possuir PHP, ruby ou nenhuma outra linguagem dinamica)
Se você ficou curioso, acesse o link abaixo
]]>