Problemas de engenharia

Muitas das vezes nem o melhor engenheiro projetista consegue antever todos os possíveis problemas.

Durante a Segunda Guerra Mundial, o exército alemão teve um problema bastante peculiar ao invadir a Rússia. Os tanques dos quais eles dependiam estavam a ser inutilizados por um inimigo inesperado: ratos.

À medida que as tropas alemãs avançavam para a União Soviética, encontraram vastos territórios cobertos por campos de cultivo, como trigo e milho. Essas plantações atraíam ratos, que ao se depararem com os tanques causavam estragos.

Os tanques eram equipados com sistemas elétricos e instrumentos delicados, incluindo fios e outros componentes, que eram altamente suscetíveis a danos causados por estes roedores. Os motores dos tanques e os sistemas de comunicação eram especialmente vulneráveis, pois os ratos mastigavam o isolamento dos fios elétricos, causando curto-circuitos, que muitas vezes resultavam na paragem ou inutilização dos tanques.

O problema tornou-se tão grave que afetou a capacidade do exército alemão de realizar operações eficazes e causou atrasos e dificuldades significativas. O exército foi forçado a dedicar tempo e recursos significativos para reparar os danos causados pelos roedores, o que significou que eles tiveram que tirar os seus tanques de serviço e trazê-los de volta para as oficinas.

O exército alemão tentou vários métodos para combater o problema, incluindo o uso de veneno, armadilhas e extermínio. No entanto, estes métodos foram apenas parcialmente bem-sucedidos e os tanques continuaram a ser atormentados pelos roedores.

O problema dos roedores acabou por ser resolvido através de uma combinação de melhor engenharia e melhor compreensão dos hábitos dos roedores. O exército alemão melhorou o isolamento dos fios elétricos e fez outras modificações para tornar os tanques menos atraentes para os roedores. Os tanques também foram equipados com dispositivos para impedir a entrada de roedores, como tampas metálicas e telas.

O problema dos ratos em tanques durante a Segunda Guerra Mundial é um exemplo fascinante dos desafios inesperados que podem surgir na aplicação real de um produto, que nem o melhor engenheiro projetista consegue antever.

Haja Luz!

Haja Luz!
Haja Luz!

Vamos a caminho da terceira semana em que, caiu sobre o mundo um ataque inesperado de um “inimigo” que se abriga nas trevas e é impiedoso no seu ataque à saúde de todos nós, qualquer que seja a sua idade. A nossa vida social e profissional teve que se adaptar de um dia para o outro, às circunstâncias desta guerra. Sou um amante da história, estudo e reflito bastante sobre a Segunda Grande Guerra Mundial e os desafios que esta colocou ao ser Humano, desde os seus atos mais perversos até ao melhor da boa vontade e engenhosidade do ser Humano na supressão da “escuridão”. Muitos dos documentários que vi e viagens pela Europa que fiz relativos à Segunda Grande Guerra, não me prepararam para tal, nem nunca sequer pensei viver dias assim em pleno século XXI num Portugal e numa Europa que se querem no topo do mundo. Gente a morrer em lares e os seus cuidadores a desertarem das suas funções, serviços de saúde no limite em que médicos, enfermeiros e outros profissionais de saúde não possuem “escopo” e “martelo” para cuidar e tratar dos seus doentes tendo no limite de decidir quem vive e quem morre, escolas a fechar que fariam chorar de tristeza “Hypatia” na sua Biblioteca de Alexandria, filas para comprar bens essenciais, lojas fechadas, produtos que damos como adquiridos no nosso dia a dia esgotados, um abraço, um beijo, um aperto de mão inexistentes de amigos e família. E é na escuridão que surgem pequenos apontamentos de Luz, no ordinário se vê o extraordinário, por todo o país e pelo mundo veem-se pessoas que dão o melhor de si e do que têm, empresas que se adaptaram e que combatem ferozmente na produção das “armas” para matar este “inimigo” cobarde, uma sociedade que na sua maioria possui “verticalidade” cívica, ficando em casa e respeitando as leis impostas. Cito Winston Churchill no seu discurso mais conhecido como “Lutaremos nas Praias”, em que diz “Iremos até ao fim. Lutaremos na França. Lutaremos nos mares e oceanos, lutaremos com confiança crescente e força crescente no ar, defenderemos a nossa ilha, qualquer que seja o custo. Lutaremos nas praias, lutaremos nos terrenos de desembarque, lutaremos nos campos e nas ruas, lutaremos nas colinas; nunca nos renderemos”, enfim lutaremos também nós todos juntos irradiando a nossa Luz. Brevemente estaremos juntos.

A louca teoria do amor de Aristófanes

Há mais de 2400 anos, nos textos de Platão em o “Simpósio”, Aristófanes fala da sua teoria do amor como se de um mito se tratasse, onde este explica o porquê de cada um procurar a sua cara metade. Segundo este os seres humanos no início eram diferentes, explicando que eram de forma redonda, possuíam quatro pernas, quatro braços, duas cabeças e dois géneros simetricamente colocados, como se dois corpos tivessem colados pelas suas costas. Estes eram filhos do Sol, da Terra e da Lua, do Sol nasceu o homem-homem, da Terra nasceu a mulher-mulher e da Lua o ser Andrógino homem-mulher. Estes seres possuíam tudo em dobro do ser humano atual, o dobro da força, o dobro da rapidez e o dobro da inteligência, por este motivo e por terem características quase equiparadas às dos deuses decidiram os atacar, a sua tentativa falha e Zeus e os outros deuses decidem o que fazer para os castigar. A primeira solução seria os matar com raios tal como fizeram com os gigantes, mas assim acabariam por ficar sem ninguém para depois os adorar, no entanto esta situação não poderia ficar impune. Após muita reflexão Zeus surge com uma sugestão que sacrificaria os humanos sem os matar, para que se lembrassem no futuro dos seus horríveis atos, a decisão seria de os cortar pela metade e sempre que praticassem outro mal seriam novamente cortados à metade e assim foi. Depois de Zeus os cortar ao meio pediu a Apolo que lhes rodasse a cabeça, os membros e os genitais para o lado aonde estes tinham sido cortados, pediu-lhe também que removesse a sua forma redonda para que a ferida do corte culminasse no atual umbigo, assim cada vez que olhassem para este lembrar-se-iam do terrível ato cometido. Desde esses dias cada metade procura a sua outra metade, sendo que na sua união do homem e da mulher originaria um novo ser. Assim Aristófanes explica o desejo inato dos humanos na busca do outro, para que possam voltar à sua forma original, dos dois se faz um, curando assim a grande ferida da natureza humana o amor.

Bing Wallpaper and Lockscreen script

Here is a simple script to update your wallpaper and your lockscreen every two hours!
Enjoy!

#!/bin/bash

# Bing wallpapers
# Cesário Garcia Mil-Homens
# cesario@cesariogarcia.com
# https://www.cesariogarcia.com

# 1. Execute this script the first time and set "bingwallpaper.jpg" as wallpaper and lockscreen
# 2. Config $wallpaperPath (line 13 of this script) for the full path of where you want "bingwallpaper.jpg" to be (it should be on the user Pictures folder)
# 3. On the terminal execute the following script, this will check for new updates every two hours
# crontab -l | { cat; echo "0 */2 * * * /bin/bash /home/cesario/Programs/bingwallpapers.sh >/dev/null 2>&1"; } | crontab -

wallpaperPath="/home/cesario/Pictures"

wget -q --spider http://google.com

if [ $? -eq 0 ]; then
    echo "Online"
	imageName=$(curl -s "https://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US" | grep -o -m 1 "/az/hprichbg/rb/.*._1366x768.jpg")
    prefix="/az/hprichbg/rb/";
	imageName=${imageName#$prefix};
	suffix="_1366x768.jpg";
	imageName=${imageName%$suffix};
		if [ -e $wallpaperPath"/"$imageName"_1366x768.jpg" ]
		then
			echo "$imageName found."
		else
			echo "$imageName not found."
			wget "https://www.bing.com/az/hprichbg/rb/"$imageName"_1366x768.jpg" -P $wallpaperPath
			cp $wallpaperPath"/"$imageName"_1366x768.jpg" $wallpaperPath"/"bingwallpaper.jpg
		fi
else
    echo "Offline"
fi

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
        sudo mkdir /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++

#include <iostream>

int nif, n, nif_d[8], resto, dig_controlo, verificacao;
int resultado=0;

int main(){
  printf("Insira o seu NIF \n");
  scanf("%d",&nif);

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

  //Atribui o último dígito à variável verificacao
  verificacao = nif_d[9];

  //Verificar se o NIF possuí 9 dígitos e consequente verificação dos primeiros dígitos
  if((nif<=999999999||nif>99999999)&&((nif_d[1]==1||nif_d[1]==2||nif_d[1]==3)||(nif_d[1]==4&&nif_d[2]==5)||(nif_d[1]==5)||(nif_d[1]==6)||(nif_d[1]==7&&nif_d[2]==0)||(nif_d[1]==7&&nif_d[2]==4)||(nif_d[1]==7&&nif_d[2]==5)||(nif_d[1]==7&&nif_d[2]==1)||(nif_d[1]==7&&nif_d[2]==2)||(nif_d[1]==7&&nif_d[2]==7)||(nif_d[1]==7&&nif_d[2]==8)||(nif_d[1]==7&&nif_d[2]==9)||(nif_d[1]==8)||(nif_d[1]==9&&nif_d[2]==0)||(nif_d[1]==9&&nif_d[2]==1)||(nif_d[1]==9&&nif_d[2]==8)||(nif_d[1]==9&&nif_d[2]==9))){

    //Calcular o valor da soma da multiplicação dos dígitos
    for(n=9;n>=2;n--){
      resultado+=nif_d[10-n]*n;
    }

    //Calcular o valor do resto
    resto=resultado%11;

    //Cálculo do dígito de controlo
    if(resto<2){
      dig_controlo=0;
    }else{
      dig_controlo=11-resto;
    }

    //Verificação com o dígito de controlo
    if(dig_controlo==verificacao){
      printf("O NIF é válido\n");
    }else{
      printf("O NIF é inválido\n");
    }
  }else{
    printf("O NIF é inválido\n");
  }
}

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&amp;amp;amp;amp;fileformat=p2p&amp;amp;amp;amp;archiveformat=gz" &amp;amp;amp;gt; bt_ads.txt.gz
wget -O - "http://list.iblocklist.com/?list=bt_level1&amp;amp;amp;amp;fileformat=p2p&amp;amp;amp;amp;archiveformat=gz" &amp;amp;amp;gt; bt_level1.txt.gz
wget -O - "http://list.iblocklist.com/?list=bt_spyware&amp;amp;amp;amp;fileformat=p2p&amp;amp;amp;amp;archiveformat=gz" &amp;amp;amp;gt; 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”.