quarta-feira, 21 de dezembro de 2016

macOS e o The application "SomeApp" can't be opened

Recentemente deparei-me com este erro um pouco estranho. Habitualmente quando se tenta correr alguma aplicação de fontes menos seguras aparece também uma mensagem de erro que obrigava a ir às definições de segurança para permitir correr esse tipo de aplicações, mas agora no macOS Sierra temos que executar as aplicações através do menu de contexto ao clicar com os dois dedos sobre a app. No entanto este erro é diferente, e após alguns segundos no google revelou ser de simples solução. Basta dar permissões de execução aos ficheiros na pasta MacOS dentro do pacote da app:

sudo chmod +x SomeApp.app/Contents/MacOS/*

E agora já fica tudo em ordem.

quarta-feira, 7 de dezembro de 2016

Instalar o Cyanogenmod num LG Optimus G

Recentemente tive que instalar uma ROM xpto para revitalizar um LG Optimus G, e decidi deixar aqui um registo dos passos para o fazer.

Como vamos utilizar o ADB temos que ativar a depuração por USB no dispositivo para isso primeiro é preciso desbloquear as Opções de Programador, indo às Definições e ao Sobre o Dispositivo (ou algo do género) e por fim clicar 12 vezes no Número de Compilação.

Deverá aparecer um popup a confirmar que foi desbloqueado.

Agora temos que ir às Opções de Programador e ativar a Depuração Android

No computador ao qual vamos ligar o dispositivo temos que instalar as ferramentas do Android. Se for um Mac podemos fazê-lo através do homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install android-platform-tools

Agora temos que abrir o acesso Root no dispositivo, para podermos meter um recovery novo e ter acesso ao fastboot. Para isso vamos instalar o KingoRoot.

Depois de instalado é só seguir os passos na aplicação.

Com o ROOT feito vamos instalar o FreeGee, e já na aplicação escolhem para instalar o CWM.

Depois de concluído liguem o dispositivo ao computador e testem a ver se reconhece:

adb devices

Se aparecer um dispositivo listado está tudo em ordem e podemos forçar o reboot para o bootloader:

adb reboot-bootloader

Depois de reiniciar no bootloader verifiquem se o fastboot reconhece o dispositivo:

fastboot devices

Agora já podemos instalar o recovery pretendido:

fastboot flash recovery cm-XXX-recovery.img

Agora temos que entrar no modo Recovery, para isso basta escolher a opção com os botões do volume e selecionar com o botão de power.

Já no recovery temos que fazer uma limpeza e reset de fábrica ao dispositivo, novamente escolhendo a opção utilizando os botões do volume e selecionando com o botão de power.

Entretanto podem ir sacando a ROM https://download.cyanogenmod.org/?device=e975 e as Google APPs https://wiki.cyanogenmod.org/w/Google_Apps, as Google APPs têm que corresponder à versão do Cyanogenmod da ROM.

Depois do reset feito podemos instalar a nova ROM, para isso selecione a opção "Apply Update", seguidamente a opção "Apply from ADB".

Para carregar a ROM basta introduzir num terminal no computador:

adb sideload cm-XXX-e975.zip

E o mesmo para as Google APPs:

adb sideload open_gapps-XXX.zip

Finalmente com tudo instalado podemos reiniciar o dispositivo e usufruir da nova ROM.

sexta-feira, 22 de julho de 2016

Pokemon Go: Controlar evolução da Eevee

Fica aqui uma dica para todos os treinadores na sua demanda por apanhá-los todos. A pequena Eevee pode evoluir para três pokemons distintos: Vaporeon, Jolteon, e Flareon.
Esta evolução normalmente ocorre de forma aleatória, no entanto existe um pequeno truque que permite controlar esta evolução, e aqui ficam os passos para isso:
  1. Alterar o nome da Eevee que pretendes evoluir para um dos seguintes: Rainer, Sparky, Pyro;
  2. Fechar e voltar a abrir o Pokemon Go depois do nome estar alterado;
  3. Evoluir o Pokemon!
Done.

quinta-feira, 21 de julho de 2016

Alterar a timezone em CentOS

Uma das primeiras coisas na lista de configurações de um novo servidor, definir o timezone correto. Em CentOS temos que criar um symlink para o ficheiro correspondente localizado no diretório: /usr/share/zoneinfo/ . Para definir o timezone de Lisboa basta:
sudo ln -s /usr/share/zoneinfo/Europe/Lisbon /etc/localtime
Já agora vamos instalar o NTP para manter tudo sincronizadinho:
sudo yum install ntp
Temos que alterar o ficheiro de configuração /etc/ntp.conf e acrescentar:
pidfile   /var/run/ntpd.pid
leapfile  /etc/ntp.leapseconds
Neste ficheiro podem-se também configurar os servidores com os quais vai sincronizar o relógio da máquina.

Done.

segunda-feira, 18 de julho de 2016

Carregar scripts com document.write por AJAX

Como todos nós sabemos o document.write só funciona quando executado com o load da página, no entanto existe uma altura na vida em que é necessário carregar um desses scripts por AJAX, e não tendo controlo sobre o script carregado não podemos fazer nada senão recorrer a soluções como o postscribe. Basta carregá-lo:
E carregar o nosso script:
postscribe('#ID_DO_ELEMENTO', '');
E a magia acontece.

sábado, 2 de julho de 2016

O ERR_INCOMPLETE_CHUNKED_ENCODING e o Nginx

Recentemente apareceu-me o erro ERR_INCOMPLETE_CHUNKED_ENCODING à frente, após ter mudado o meu projeto para novos servidores. A Internet sugere diferentes razões e soluções, muitas passam por alterações no browser e antivirus, que de pouco servem para o meu problema em concreto. Após garantir que o servidor em node estava a responder corretamente aos pedidos, a investigação levou-me ao Nginx e foi no log que encontrei o problema:
2016/07/02 04:59:14 [crit] 11371#0: *59 open() "/etc/nginx/proxy_temp/1/00/0000000001" failed (13: Permission denied)
O utilizador que o nginx estava a correr não tinha permissões de escrita.. Foi só dar as permissões corretas e o problema desapareceu.. Fácil. Inté

sexta-feira, 1 de julho de 2016

Configurar o CSF (firewall) em CentOS

Para manter os meus novos servidores um bocadinho mais seguros nada melhor que instalar uma firewall e bloquear as portas todas excepto as que estão abertas ao público, e abrir certos portos as IPs específicos. Para isto recorri ao CSF que é bastante simples de configurar e responde às minhas necessidades. Então vamos lá ao que interessa, instalar e configurar a cena! Primeiro temos que sacar o CSF:
wget http://www.configserver.com/free/csf.tgz
Extrair o pacote:
tar -xzf csf.tgz
Aceder à pasta criada:
cd csf
Instalar o CSF:
sudo sh install.sh
Agora que está instalado resta configurar, mas antes podemos testar a ver se realmente está tudo pronto a usar correndo o seguinte comando:
sudo perl /usr/local/csf/bin/csftest.pl
Vamos lá à configuração. Para isso utilizo o nano (não sou hardcore para usar o vi no dia a dia :|):
sudo nano /etc/csf/csf.conf
Para meter a firewall a funcionar temos que colocar:
TESTING = "0"
Também é aconselhado colocar:
RESTRICT_SYSLOG = "3"
Por omissão o CSF permite pedidos feitos aos portos do FTP, SSH, HTTP, HTTPs, SMTP, e mais alguns. Para mudar isto basta alterar os portos nas seguintes variáveis:
TCP_IN
UDP_IN
Também podemos especificar quais os portos que podem ser utilizados para comunicar para o exterior alterando as seguintes variáveis:
TCP_OUT
UDP_OUT
Caso queiram permitir o acesso a IPs específicos, basta acrescentar o IP no seguinte ficheiro:
sudo nano /etc/csf/csf.allow
Podem também definir os portos que cada IP tem acesso nesse mesmo ficheiro. Depois de tudo estar configurado basta reiniciar o CSF e estamos prontos e um bocadinho mais seguros:
sudo csf -r
Inté