Fala pessoal!

Indo direto ao assunto, essa semana lançou oficialmente para Android no Google Play Store e iOS na iTunes Store, o jogo oficial de realidade aumentada do Pokémon, o Pokémon GO.



Para quem não sabe o que é, o Pokémon GO é um jogo onde você pega o seu celular e literalmente sai andando pela cidade - sim, a sua cidade, no mundo real! - atrás de Pokémons para capturar, pode fazer batalhas com outros jogadores de verdade, e etc. O legal disso é o conceito de realidade aumentada. Basicamente, uma experiência parecida com os jogos de para Gameboy, porém usando o GPS e a câmera do seu telefone você consegue ver as batalhas e os Pokémons bem diante dos seus olhos, no lugar que você está!

Segue abaixo um vídeo em Inglês da CNET com uma breve demonstração :



Infelizmente o jogo ainda não está disponível em todos os países, o Brasil sendo um dos que não está na lista, porém existe planos para liberar o jogo para o resto do mundo logo. Tendo isso em vista, eu realmente não recomendo procurar e baixar APKs fora da Google Play Store pois estes podem (com certeza irão) conter vírus ou algo ruim, e principalmente por que não irá ter ninguém fora você jogando no seu país, o que com certeza não será muito divertido! Recomendo apenas esperar :)

Já existem relatos de pessoas jogando e compartilhando suas histórias, como esse cara que quebrou a tela do celular andando de skate e jogando Pokemón Go ao mesmo tempo, esse outro que saiu na rua de cueca atráz de um Meouth à 1am, e etc...

O jogo é desenvolvido pela Niantic Labs, e se esse nome é familiar para você, é por que eles são os mesmos desenvolvedores de outro jogo que usa o mesmo conceito de realidade aumentada e suportado pela própria Google, o Ingress (Play Store ou iTunes Store), este eu mesmo já joguei bastante e conheço um tanto de pessoas que jogam também, é um jogo extremamente diferente e divertido. Como eles já tem experiência com esse tipo de jogo, não espero menos do próprio Pokémon GO!


E como sempre, com isso vou ficando por aqui. Vou tentar me manter atualizado no assunto para trazer mais posts interessantes a respeito. Valeu pessoal!
Fala pessoal! Para quem usa Linux em um laptop com a tecnologia optimus da NVIDIA, e usa o bumblebee para gerenciar as duas placas de vídeo, às vezes se vê rodando seus aplicativos ou jogos favoritos pelo terminal apenas para poder ativar a placa de vídeo de alta performance com o comando primusrun ou optirun.

Bom, sua dor de cabeça acaba aqui, a não ser que você realmente curta ficar vendo a saída do terminal enquanto joga, por que faz você parecer muito mais cool, neste caso, está tudo certo!

Segue abaixo um passo a passo para fazer seus aplicativos sempre rodar na sua placa de vídeo NVIDIA por padrão, ao invés da placa de vídeo Intel de baixa performance.


1. Criar um alias para o comando

Dessa forma, sempre que você rodar o comando no terminal, ou qualquer outro aplicativo exerno que execute este comando, ele será executado com primusrun. Esta é a solução mais generalizada possível para o problema. No meu exemplo, estarei editando o comando obs para rodar com primusrun.

Execute estes comandos no terminal:

echo 'alias obs="primusrun obs"' >> ~/.bashrc
source ~/.bashrc

Agora, sempre que você executar o comando obs no termina, ele irá rodar primusrun obs.

Se por algum motivo você precisar rodar o comando sem primusrun, será então necessário fazer uma chamada ao caminho absoluto de seu executável. Isso é fácil:

$ /usr/bin/obs

Isso também irá funcionar para os atalhos na área de trabalho e menus do desktop, no caso de estes também executarem este comando relativo. Mas caso eles chamem a executável de forma absoluta, como acima, você terá que editar o lançador também. Para isso, veja o passo 2.

2. Editar o lançador

Encontre onde o arquivo .desktop está. Se for uma aplicação de usuário (como aplicativos instalados no Wine), ele deve estar em ~/.local/share/applications, caso não, estará em /usr/share/applications.

Encontre o arquivo (pode ser um tanto difícil, pois alguns gerenciadores de arquivos mostram o título do aplicativo ao invés do nome do arquivo) e edite com o seu editor de texto favorito.
sudo nano /usr/share/applications/obs.desktop
Encontre a linha Exec= e adicione primusrun ou optirun antes do comando;

[Desktop Entry]
Version=1.0
Name=OBS
GenericName=Streaming/Recording Software
Comment=Free and Open Source Streaming/Recording Software
Comment[ru]=Бесплатная программа с открытым кодом для записи/трансляции видео
Exec=primusrun /usr/bin/obs
Icon=obs
Terminal=false
Type=Application
Categories=AudioVideo;Recorder;
StartupNotify=true
Salve e feche.

Tenha em mente que se o lançador executa o comando relative (somente obs ao invés de /usr/bin/obs), isso irá efetivamente fazer com que o aplicativo seja executado com dois primusrun, como em primusrun primusrun obs, mas isso não causa nenhum problema.


Hi, welcome to my blog! Usually I don't write in english but rather in portuguese, but I decided to share here as well a tutorial I written in Android Enthusiasts SE about how to resize the /system partition of a Samsung Galaxy S2.

This is specially interesting to be able to upgrade your ROM and still be able to flash the most up-to-date version of Google Apps, as with the stock allocated size, it wouldn't be possible anymore.

Before the tutorial, I'd like to note that if I receive good feedbck here, and can create a secondary blog and post there in english as well! I'm a Web developer, and usually I write about technology-related stuff, Linux, Windows and sometimes games.

Alright, now to the tutorial!



Firstly and most important, the credits:

I made this following this great tutorial at XDA-Developers by user metalgearhathaway:http://forum.xda-developers.com/galaxy-s2/development-derivatives/mod-partition-internal-memory-app-t2538947
I used PIT files (I'll explain what they are, don't worry) made from user ElGamal from XDA also, located here (comment number 509).
And a little bit of help from user CrackDaddy, also from XDA.

Second, what you'll need:

  • A machine running Windows. I used Windows 7 Ultimate 64-bits;
  • Odin 3.07. Careful when installing, it is full of optional AdWares. There's also a Linux and Mac version available called JOdin3, but I didn't try it;
  • Flashable ClockWorkMod 6 for Galaxy S II (it is a .tar file with a file named zImage inside);
  • PIT file with desired partition table configuration;
  • Samsung drivers for Galaxy S2. Usually you can install Samsung Kies but there's also a installer just with drivers available;
  • Your original stock unrooted Samsung Jellybean firmware. You can find it at sammobile.com;
  • Any ROM of your choice. I highly recommend the last nightly build of Cyanogenmod 11;
  • Optionally: GApps 20140606 or newer.
I made most of those available in the following bundle file: https://drive.google.com/open?id=0BxccpydIocBpd21FOE5MaGJiMkU&authuser=0
What is missing is GApps, CyanogenMod, and a stock Samsung JellyBean ROM (as it depends of country and carrier, and might not be legal to provide it here).

Third, the default warning:

I am not responsible for anything that might go wrong with your device, neither any of the mentioned users nor anyone here at Stack Overflow or XDA-Developers. This procedure will root your phone if it isn't already and also void your warranty if it isn't already. If anything goes wrong, don't panic, it is most likely fixable by reflashing the stock ROM and starting over again.

Finally, how to:

This will only work with the 16GB International version (GT-I9100) of Samsung Galaxy S II

Firstly, copy CyanogenMod 11 .zip file (or your desired ROM) and optionally GApps .zip file to your external SD card;
Make a backup of everything inside your internal storage, copy it to your computer or somewhere else. It will be completelly erased. Don't worry about your external SD Card, it won't be touched.
Make a NAnd backup of your current ROM, you'll be able to restore it after the repartition. To do it, you must have ClockWorkMod recovery installed, then boot your phone into recovery mode (Volume UP + Home + Power), select backups and restore, then backup to /storage/sdcard1;
When backup finishes, reboot your phone into Download mode (Volume DOWN + Home + Power) and connect your phone to the computer. Let Windows install the drivers. If it fails, try to install Samsung Kies or just the drivers provided in the bundle I made available, and try again.
Open Odin3 as Administrator and connect the phone. It should detect your phone and show it under the label ID:COM, and also in the Message. If it didn't, try to restart your computer, phone, reinstall drivers, check your USB cable, etc., and try again.
Now you'll need to choose a PIT file. PIT means Partition Information Table and it is a Samsung-only thing. In the bundle file, I made available ElGamal's PIT file (I91001GB_6GB.pit) which also resizes /system partition to 1GB, /data to 6GB and the rest goes to internal storage. If you wish different sizes, check the thread at XDA-Developers as he made many different versions available. I also included a PIT file for the default configuration (I9100_2GB-STOCK.pit) if you wish to go back to as it was later.
When you have chosen your PIT file, go to Odin and tick the following checkboxes: Re-PartitionAuto Reboot and F. Reset Time. In the Re-Partition section, click on the PITbutton and select your chosen PIT file. In the Files (Download) section, click on the AP button and select Samsung's stock JellyBean ROM. Double check everything and click Start. This can take a while, go grab a coffee.
After everything finishes, your phone will reboot into the stock Samsung JellyBean ROM. Two things can happen now, or it will work normally and if so you can use it and check if everything is as you want. Or it can ask you for a password to access the "encrypted volume", which is nothing but your internal storage that is not formatted. In both ways, unplug your phone (it it's still plugged) and reboot it into Download mode again.
It is interesting to close and reopen Odin3 to reset the settings. Plug your phone again and wait until Odin3 detects it. This time, leave checked just Auto Reboot and F. Reset Time and make sure Re-Partition is NOT checked. Click on AP button and select the ClockWorkMod Recovery .tar file, then click Start. This one is faster, but if you feel sleepy, go for another coffee ;)
When it finishes, you should have ClockWorkMod Recovery 6 installed in your phone, so go ahead and reboot into Recovery mode. Go to mounts and storage, select format /storage/sdcard0and format it as exfat (if for some reason you have write problems in your internal storage later, come back here and select another format until it works, but exfat should do the trick).
When it finishes, still in Recovery mode, Wipe data/factory resetWipe cache and Wipe Dalvik cache. Let's be sure nothing remains from the previous ROMs.
Now, install zip -> choose zip from /storage/sdcard1 and select the CyanogenMod 11 .zip file (or of your desired ROM) and flash it. Optionally also flash GApps afterwards. Reboot your phone and check if everything is right.
If everything is right, reboot your phone into Recovery mode again, do a new wipe data/factory resetwipe cache and wipe Dalvik cache, and then recover your backed up ROM from the beginning. Reboot your phone.
Check again if everything works right. A few apps might need to be reinstalled (Spotify and Waze are examples) to work correctly again, but that's be only major issue.
Hope everything goes well.
Fala pessoal!

Hoje publiquei no bower um módulo para AngularJS simples porém funcional que consegue detectar se o browser que está visitando sua página consegue exibir propagandas ou não, ou seja, se está usando alguma extensão que bloqueia anúncios.

Essa biblioteca é o angular-adblock-detector, seu código fonte está disponível no GitLab em https://gitlab.com/brunofin/angular-adblock-detector.



Instalando

Para começar a utilizar é simples, se você utiliza bower apenas rode o comando na raiz do seu projeto:

bower install angular-adblock-detector
Se você não usa bower, bom... Por que não? É simplesmente ótimo!

De qualquer forma, simplemente baixe o código fonte do GitLab, prefira baixar uma das tags e não o código master pois a tag é a versão que é distribuída pelo bower e deve ser mais estável, já que master é em desenvolvimento.

Assim que baixado, apenas copie o arquivo angular-adblock-detector.js para uma pasta de escolha no seu projeto e inclua o script no HTML:

<script type="application/javascript" src="angular-adblock-detector.js"></script>

 Utilizando

Para utilizar, adicione 'angular-adblock-detector' como dependência do seu módulo:

var app = angular.module('SampleApp', ['angular-adblock-detector']);

E utilize o método .detect() do serviço AdBlockDetector.
Este método retorna uma promise com callback tendo como único parâmetro um boolean adsblocked que será:

true: Quando algum tipo de Ad Block estiver em uso e ativado, e seus anúncios não podem ser exibidos;
false: Quando seus anúncios estão sendo exibidos sem problema.

Segue exemplo:

app.controller('AdBlockTestCtrl', ['$scope', 'AdBlockDetector', function($scope, AdBlockDetector) {
      AdBlockDetector.detect().then(function(adsblocked) {
        if (adsblocked) {
          // esse código vai rodar quando há AdBlock
        } else {
          // esse código vai rodar quando tudo estiver OK
        }
      });
  }]);
O serviço não irá tomar nenhuma ação caso algum Ad-Blocker seja detectado, apenas irá reportar a você. A ação caso detectado ou não fica à sua vontade, pois esta é a parte divertida.

No caso de detectar Ad-Block, minha sugestão seria implodir a GPU do usuário utilizando matéria negra. Também estou trabalhando num módulo que faça isso, então fique ligado e siga o blog para ficar atualizado!

O serviço foi testado para funcionar com:


  • Adblock;
  • AdBlock Plus;
  • Privacy Badger;
  • arquivo hosts.


Com essa vou ficando por aqui.

Qualquer problema que ocorra, existe a página de issues no GitLab que pode ser usada para reportar bugs.

Valeu!

Os papéis de parede inclusos em cada release do Fedora são escolhidos baseados em votos feitos pela comunidade em uma base de inúmeras imagens, cada uma das quais também enviadas pela comunidade.

Basicamente, a comunidade envia, vota e escolhe quais imagens serão incluídas na próxima release da distro, o que torna a comunidade aberta do Fedora uma das mais interativas entre as distribuições main-stream, e este sendo um dos poucos motivos que torna o Fedora uma das distribuições mais abertas e dependente de contribuições comunitárias. A própria filosofia do Fedora bane qualquer inclusão de qualquer coisa que não seja aberta.

Caso você queria participar das eleições, infelizmente (no momento em que escrevo este post), elas já se encerraram. Porém, você pode ficar ligado e esperar as eleições para a próxima distro, caso você queira enviar suas imagens para serem votadas ou votar você mesmo nas que estão lá. A página para as eleições dos fundos de tela se encontra em https://apps.fedoraproject.org/nuancier/elections/, porém existem algumas diretrizes que devem ser seguidas.

De qualquer forma, abaixo segue uma lista não-extensiva de alguns dos fundos de tela que serão incluídos na próxima release do Fedora.

Autor: gjanssens; Licença: CC0
Autor: lbazan; licença: CC-BY-SA

Autor: Allan Lyngby Lassen; Licença: CC-BY-SA
Autor: nask0; CC-BY-SA
Autor: thegrendel; Licença: CC-BY-SA
Autor: Luca Ciavatta; Licença: CC-BY-SA
Autor: Franz Dietrich; Licença: CC-BY-SA

Autor: rluzynski; Licença: CC-BY-SA

A lista completa pode ser encontrada em https://apps.fedoraproject.org/nuancier/election/5/.

E com essa vou ficando por aqui.

Valeu!
Na última atualização da versão de testes do Android N, disponível em dispositivos Nexus, foram descobertas inúmeras funções novas, incluindo novos emojis mais humanosmúltiplas apps na mesma tela, mas a descoberta com mais potencial da última atualização feita essa semana é a adição de suporte à toques 3D, função semelhante à que existe nos iPhones hoje.

Segue um vídeo abaixo (em inglês) de Phandroid.com mostrando um dispositivo emulando um toque forte para ativar uma outra nova função, atalhos do Launcher, e um toque normal para abrir a app normalmente.


No vídeo, eles explicam que utilizaram um telefone que não suporte toques 3D na tela, pois claro ainda não existe hardware para isso, então eles deram um jeito de "mapear" a função para o gesto de "puxar para baixo" na tela.

Como explicado, ainda não existe nenhum dispositivo que suporte tal feature, mas adicionando suporte à nível de sistema operacional abre as portas para os fabricantes como Samsung, Huawei e etc a começarem a fabricar hardwares compatíveis. No meio tempo, os desenvolvedores já podem começar a desenvolver aplicativos que utilizem de forma inteligente essa função, emulando no próprio computador.

Uma das primeiras utilidaddes que vêm à minha cabeça é para desenhar. Mesmo quem tem um tablet com tela grande, percebe que falta alguma coisa quando vai tentar desenhar no aparelho. Pode ser apenas para passar o tempo, ou algum desenho técnico importante, mas falta um certo feedback que o toque 3D pode alcançar. Claro, outras funções mais interessantes virão junto, cabe aos desenvolvedores serem criativos para criar mais um app que não saberemos viver sem!

E com essa vou ficando por aqui! Não se esqueça de clicar em seguir no link ao lado para ser atualizado dos meus novos post e vídeos!


Para comemorar a mudança de domínio do blog (sim! mudamos de endereço!), passei um tempo me dedicando a atualizar o visual do blog. Estava merecendo umas atualizações, não mexia na aparência ou configurações desde 2009!

Hoje, o blog está utilizando um template moderno, está todo vinculado à minha conta do Google+, a mesma que utilizo no meu canal do YouTube, tornando ela finalmente minha conta de exposição pública.

Postagens novas nesse blog são automaticamente postadas na página do Google+. Vídeos novos postados no YouTube também são automaticamente postados na página do Google+! Então essa página virou um hub que centraliza minhas atividades on-line. Basta me adicionar nos seus círculos e será notificado de todas as atividades novas!

Enfim, valeu pessoal, vou ficando por aqui que já tarde!