Share WiFi via Ethernet on Ubuntu 17.10

There is a hidden method to share your WiFi over Ethernet in the latest Gnome.

  1. Type nm-connection-editor in your terminal.
  2. Add a shared network connection by pressing the Add button.
  3. Choose Ethernet from the list and press Create.
  4. Click IPv4 Settings in the left.
  5. Choose Shared to other computers by clicking the Method drop-down menu.
  6. Enter a new name like Shared WiFi LAN as the Connection name at the top

Dislocker script

This script aims to mount a Bitlocker encrypted drive in linux.
The binaries can be downloaded at https://pkgs.org/download/dislocker.

#!/bin/bash

# Dislocker binary can be downloaded from https://pkgs.org/download/dislocker
# All credits to Cesário Garcia Mil-Homens - www.cesariogarcia.com

if [ ! -d "/media/mount" ] && [ ! -d "/media/bitlocker" ]; then
		sudo mkdir /media/bitlocker && /media/mount
	else
		sudo fdisk -l
		read -n1 -r -p "Press any key to continue..." key
		echo "Insert volume and partition eg. sdaX"
		read volume
		echo "Enter password"
		read -s password
		sudo dislocker -V /dev/$volume -u$password -- /media/bitlocker
		sudo mount /media/bitlocker/dislocker-file /media/mount/ -o loop
		echo "Press u to umount device"
		read key
		if echo "$key" | grep -iq "^u" ;then
				sudo umount /media/mount
				sudo umount /media/bitlocker
		fi
fi

Validação de NIF em C++

Algoritmo de validação de um NIF em C++

/*Biblioteca padrão de C para Inputs e Outputs*/
#include
/*Todas as variáveis estão colocadas como variáveis globais*/
int nif, n, nif_d[8], resultado;

int main(){

//Solicitar ao utilizador o NIF
printf("Insira o seu NIF \n");

//Ler o NIF escrito pelo utilizador
scanf("%d",&nif);

//Separação dos dígitos do NIF
for(n=9;n>=1;n--){
nif_d[n]=nif%10;
nif/=10;
}

//Cálculo do resto
resultado=(9*nif_d[1]+8*nif_d[2]+7*nif_d[3]+6*nif_d[4]+5*nif_d[5]+4*nif_d[6]+
3*nif_d[7]+2*nif_d[8])%11;

// Verificação do tamanho do NIF, validação dos primeiros dígitos e dos dígitos de controlo
if((nif>99999999&&nif<=999999999)||(nif_d[1]==1 || nif_d[1]==2 || nif_d[1]==5 || nif_d[1]==6 || nif_d[1]==8 || nif_d[1]==9)&&(resultado>1&&nif_d[9]==11-resultado)||((resultado==0||resultado==1)&&nif_d[9]==0)){
printf("O NIF é válido");
}
else{
printf("O NIF não é válido");
}
return 0;
}

Transmission Peer Blocklist for Windows – TiBL4Win – v1.0

Just copy the code below to script.bat to where you want, execute as administrator, this will update the transmission blocklist with ips from Peer Block (http://www.peerblock.com/).

Just follow the instructions below in the configuration to download wget and gzip.

::This script creates the same lists as peerblock http://www.peerblock.com/, it outputs a file that you
::can use on Transmission automatically.
::This script was created by Cesário Garcia Mil-Homens - http://www.cesariogarcia.com just for the fun.
::TiBL4Win - v1.0

::CONFIGURATION - WARNING THE DIRECTORIES SHOULD ALREADY EXIST.

::In order for this script to work wget.exe and gzip.exe should be in the tmp directory do not remove them
::Download wget from: https://eternallybored.org/misc/wget/
::Download gzip from: http://gnuwin32.sourceforge.net/packages/gzip.htm
::Setup Transmission Blocklist folder.
set destination_folder="%appdata%\transmission\blocklists"

::DO NOT EDIT BELOW THIS LINE unless you know what you are doing
pushd "%~dp0"
cd tmp
wget -O - "http://list.iblocklist.com/?list=bt_ads&fileformat=p2p&archiveformat=gz" > bt_ads.txt.gz
wget -O - "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz" > bt_level1.txt.gz
wget -O - "http://list.iblocklist.com/?list=bt_spyware&fileformat=p2p&archiveformat=gz" > bt_spyware.txt.gz
gzip -d *.gz
copy *.txt lists
copy lists %destination_folder%
del lists
del *.txt
del *.gz

Dilema moral com a resposta perfeita

Numa entrevista de emprego foi dado um dilema moral a um candidato, a sua resposta foi genial.

Está a conduzir o seu carro numa noite de tempestade selvagem. Passa por uma paragem e vê três pessoas à espera de um autocarro:

1. Uma senhora velha que parece estar prestes a morrer.
2. Um velho amigo que uma vez salvou a sua vida.
3. O homem/mulher perfeito(a) que você sempre sonhou.
Qual destes escolheria para oferecer uma boleia, sabendo que só poderia haver um passageiro no seu carro.

Pense antes de continuar a ler.
Este é um dilema moral/ético que foi realmente utilizado como entrevista de emprego.

Você poderia escolher a senhora velha, porque ela vai morrer caso não seja assistida num hospital, e, portanto, você deve salvá-la em primeiro lugar; ou você pode escolher o velho amigo, porque ele salvou sua vida e esta seria a oportunidade perfeita de o recompensar. No entanto, você pode nunca ser capaz de encontrar o seu/sua amante perfeito(a) novamente.

O candidato que foi contratado (de 200 candidatos) não tive qualquer dificuldade para apresentar a solução perfeita.
O que é que ele disse?

Ele simplesmente respondeu: “Eu dava as chaves do carro ao meu velho amigo, e deixava-o levar a senhora para o hospital eu ficaria para trás à espera do autocarro com a mulher dos meus sonhos.”.
Nunca se esqueça de “pensar fora da caixa”.

Text-To-Speech (TTS) no Android em pt_PT e em todas as línguas

Recentemente pretendi que o meu telemóvel lesse alguns livros, comecei por utilizar o motor de TTS da Google e para além de ser pouco natural, estava em Português do Brasil.

Após alguma pesquisa, encontrei uma solução grátis e muito boa, que ultrapassa largamente em qualidade algumas app’s pagas da playstore. O software foi criado por um grupo de Húngaros e baseia-se no motor de TTS da Nuance.

Após a instalação da app, esta ficará como motor TTS predefinido do nosso dispositivo Android.

Guia de instalação

  1. Efetuar o download da app aqui. Lembre-se que para instalar esta aplicação deverá permitir nas definições a instalação de aplicações de fontes desconhecidas (Definições -> Segurança -> Fontes desconhecidas).
  2. Executar o ficheiro vocalizer_e.tts_1.0.2.3k.apk e instalar.
  3. Efetuar o download dos ficheiros das vozes:
  4. Renomear a extensão do ficheiro pretendido para ZIP.
  5. Descompactar o ficheiro.
  6. Criar no dispositivo Android a directoria /storage/sdcard0/VocalizerEx (sdcard0 é a memória interna).
  7. Copiar para a directoria criada anteriormente a directoria obtida na descompactação do ficheiro ZIP.
  8. Indicar o novo motor TTS como predefinido em Definições -> Idioma e entrada -> Saída de texto para voz e Selecionar VocalizerEx TTS.