Come visualizzare la percentuale della batteria da terminale su macOS

Se volete visualizzare lo stato della batteria del vostro Mac (ovviamente MacBook in quanto gli iMac e i Mac mini o Pro non hanno la batteria integrata) da terminale, dovete semplicemente eseguire:

pmset -g batt

E riceverete come risultato:

Now drawing from 'AC Power'
 -InternalBattery-0 (id=123456)	100%; charged; 0:00 remaining present: true

Il tutto ovviamente senza i permessi di amministratore.

Come disabilitare la compressione in OpenVPN

Molto semplicemente modificate il file:

sudo nano /etc/openvpn/server.conf

Commentando la riga dove c’è lo voce compression con un # davanti.

Ovviamente ho omesso di dire che c’è una falla nel sistema che comprime i pacchetti, come dimostrato da Ahamed Nafeez che se volete approfondire potete leggere qua:

https://community.openvpn.net/openvpn/wiki/VORACLE

Nota: nelle ultime versioni di OpenVPN per iOS se avete la compressione abilitata non riuscirete ad utilizzarla. Quindi la soluzione è disattivarla dal server e rigenerare o modificare il certificato.

Come cambiare porta a OpenVPN

Se avete appena installato la vostra VPN personale (qui la guida per crearne una con un Raspberry Pi) e volete cambiare la porta di default (la 1194) ecco a voi come fare!

Per modificare la porta all’esterno della vostra rete locale nel caso usiate un indirizzo IP statico o un dominio dinamico (in modo che il certificato vi venga generato con la porta esterna corretta):

sudo nano /etc/openvpn/easy-rsa/pki/Default.txt

Per modificare invece la porta interna, quindi quella che ascolterà in locale:

sudo nano /etc/openvpn/server.conf

Riavviate poi il servizio con:

sudo service openvpn restart

Nel caso abbiate già dei certificati installati, dovrete cambiarle manualmente nel certificato (potete modificarlo essendo un file testuale) oppure rigenerarlo.

Come rifirmare un’ipa con un certificato Developer

Per firmare un file .ipa sono necessarie un paio di cose:

  • un account Developer Apple
  • un app signer
  • l’ipa in questione
  • un signing certificate
  • un provisioning profile

Per l’account da Developer Apple e l’ipa non posso aiutarvi, dovete “occuparvene” da soli acquistando la licenza e scaricando l’ipa da non so dove (la procedura di rifirma è necessaria perché l’ipa viene firmata dallo sviluppatore che l’ha creata o diffusa e per installarla su un iPhone è necessario che i certificati corrispondano).

Per quanto riguarda l’app signer posso consigliarvi una di queste due (ho fatto di entrambi un fork ma non ho modificato nulla):

https://github.com/marcotini/XReSign
https://github.com/marcotini/ios-app-signer

Entrambe funzionano bene, vi basterà scaricare il progetto e compilarlo. Oppure semplicemente scaricare l’app precompilata e avviarla.

Per il signing certificate e il provisioning profile vi basterà configurare correttamente Xcode con il vostro account. Dovrebbe crearvi entrambi al primo login, nel caso: Xcode -> Preferences... -> Accounts -> Manage Certificates... e scaricate tutti i certificati (nel caso createli nuovi su developer.apple.com).

Ora che avete tutto l’occorrente, aprite iOS App Signer (o XReSign) e selezionate le 3 voci come segue:

Screenshot di iOS App Signer dopo aver rifirmato un’ipa

Controllate che abbiate selezionato il Developer nel Signing Certificate e il Provisioning Profile con l’asterisco (è il Wildcard).

Per installarla invece sull’iPhone vi basterà aprire Xcode -> Window -> Devices and Simulators e selezionare l’ipa dopo aver premuto sul + in basso a sinistra nella voce Installed apps:

Devices and simulators su Xcode

Aspettate che Xcode faccia i suoi check e voilà, ora nella vostra dashboard dovreste trovarvi l’app pronta per essere utilizzata! Non è stato tanto difficile no?

Se vi dovesse comparire un errore di questo genere:

Signing failed

Significa che c’è qualche problema con l’ipa. Se invece durante l’installazione con Xcode dovesse comparirvi questo errore (ed è uguale qualsiasi app signer utilizziate):

App installation failed

Significa che avete sbagliato certificato o provisioning profile. Utilizzate quelli giusti, cioè il developer e quello con l’asterisco e dovrebbe installarvela correttamente.

Come eliminare voci dal menu contestuale di macOS

Il menu contestuale di macOS può diventare parecchio “incasinato” col tempo. Vediamo subito come alleggerirlo e togliere voci di app installate.

Prima di tutto aprite le impostazioni:

System Preferences dal Launchpad

Cliccate sull’icona della tastiera, poi su Shortcuts e successivamente su Services:

Screenshot per modificare il menu contestuale

Ora potete modificare tutte le voci che volete, potete aggiungerle, rimuoverle… come potete vedere io ho disattivato l’apertura dei file su TextWrangler (noto editor di testo gratuito su macOS).

Avvio lento su macOS Mojave come risolvere

Scommetto che avete appena aggiornato a macOS Mojave, l’ultima versione del sistema operativo desktop di Apple e vi siete resi conto che l’avvio del vostro computer (anche se con SSD di ultima generazione) risulta lentissimo, molto più lento di quanto non fosse con la vecchia versione!

Beh probabilmente avete qualche LaunchAgents attivo e non sapete come disattivarlo… beh ecco a voi come (nel caso vogliate solo togliergli i permessi ecco qua)!

Nel caso invece il problema persistesse, fate attenzione a non avere una vecchia versione di Little Snitch, che a quanto pare poteva essere causa dell’estrema lentezza all’avvio:

Aggiornamento di Little Snitch

Questo ovviamente può capitare se avete il FileVault attivo (la crittografia dell’intero disco Macintosh HD) o altri processi all’avvio che ne possono rallentare l’avvio.

Come convertire un progetto da Swift 4.2 a 5

Avevamo visto come convertire un progetto da Swift 3 a Swift 4, oggi molto semplicemente vedremo come convertirlo:

Conversione a Swift 5 disponibile

Prima di tutto dovrete armarvi di Xcode beta, attualmente alla versione 10.2 dal sito developer.apple.com e sappiate già in partenza che non sarà indolore!

Sappiate anche che una volta convertito, non potrete pubblicare app sullo store di Apple con una versione beta di Xcode, quindi prestate molta attenzione se modificate un progetto in fase di product.

Detto questo, come al solito aprite un progetto e nel caso non dovesse comparirvi la richiesta di aggiornamento, potete forzarlo andando su:

Edit -> Convert -> To Current Swift Syntax...

Nel caso non venga cambiato, cercate nel progetto la stringa:

SWIFT_VERSION

E modificatela opportunamente… aspettandovi decine se non centinaia di warning dal nostro caro e amato Xcode.

Cos’è un boot manager

A differenza del boot loader, che appunto carica il kernel dalla memoria secondaria alla primaria, il boot manager è il programma che decide quale kernel caricare in caso di più sistemi operativi installati sullo stesso computer.

Due esempi di boot manager sono GNU GRUB e rEFInd.

Screenshot di rEFInd con la scelta tra Arch, Windows e Mac

Cos’è GRUB

Dopo aver visto cos’è rEFInd non poteva mancare il popolarissimo GNU GRUB che, se probabilmente siete qui, avete sempre trovato installato sul vostro computer con sistemi operativi Linux o Windows.

È anche questo un boot manager (qui la definizione di boot loader) che serve quindi per selezionare il kernel da caricare all’avvio del vostro PC.

Screenshot di GRUB con Ubuntu installato

La documentazione potete trovarla nel sito web ufficiale:

http://www.gnu.org/software/grub/

Viene installato automaticamente su quasi tutti i sistemi Linux ed è di facile configurazione perché identifica in automatico i kernel installati e ne crea un file di configurazione.

Cos’è rEFInd

rEFInd (sì con la sigla EFI maiuscola) è un boot manager che cerca e riesce a risolvere diversi problemi che i boot manager di default di Apple o Microsoft hanno da tempo.

Essendo un progetto open source potete accedere al codice sorgente e personalizzarlo come meglio preferite.

Detto in parole semplici è un menu che vi compare all’avvio del computer e vi permette di selezionare il sistema operativo che volete utilizzare.

Il sito web ufficiale con tutta la documentazione è questo:

http://www.rodsbooks.com/refind/

Screenshot del template base di rEFInd

Personalmente lo utilizzo per risolvere il problema che si presenta con una scheda video esterna che non riesce a rimaner disabilitata durante il boot (qui l’articolo per risolvere l’errore 12). Cosa che si riesce a fare facilmente con rEFInd con l’utilizzo di una semplice pendrive e due file che disabilitano la scheda interna durante la fase di caricamento del sistema operativo.

Qual è la differenza tra UEFI e BIOS

Il BIOS è il primo programma che viene eseguito da un computer quando viene alimentato e inizializza tutte le periferiche di input e output (deriva da questo il nome BIOS: Basic Input/Output System) facendo dei test e caricando il boot loader.

UEFI invece, sigla per Unified Extensible Firmware Interface, diciamo che “è la versione dopo” che arriva per sostituisce il BIOS e in più supporta anche la diagnostica e la riparazione remota. Viene oramai utilizzato in quasi tutti i sistemi Linux, Mac e Windows.

Anche qui potete approfondire sul termine EFI o UEFI sul sito di Intel:

https://www.intel.com/content/www/us/en/architecture-and-technology/unified-extensible-firmware-interface/efi-homepage-general-technology.html

Cos’è un boot loader

Il bootloader è un programma che viene eseguito subito dopo aver dato corrente a un computer (o qualunque dispositivo che deve caricare un sistema operativo) e ha il compito di caricare il kernel dalla memoria secondaria (SSD o hard disk che sia) alla primaria (RAM).

Per una lettura più approfondita vi consiglio la pagina di Wikipedia in inglese che tratta molto approfonditamente la questione: https://en.wikipedia.org/wiki/Booting#First-stage_boot_loader

Come cancellare una regola dall’Iptables

Ovviamente non poteva mancare: dopo aver visto come aggiungere delle regole al firewall Iptables e dopo aver visto come visualizzarle in elenco… beh mancava solo più questo!

Se avete l’elenco in vista, quindi ad esempio se avete:

1    DROP       udp  --  anywhere             anywhere             udp dpt:domain
2    DROP       tcp  --  anywhere             anywhere             tcp dpt:domain

E volete cancellare la prima regola, vi basterà eseguire:

sudo iptables -D INPUT 1

Per eliminarla dall’elenco delle regole. Se utilizzate iptables-persistent per salvare permanentemente tutte le rules, vi basterà eseguire:

sudo su
iptables-save > /etc/iptables/rules.v4

Per salvarle al prossimo riavvio!

Come visualizzare l’elenco dell’Iptables

Se avete impostato delle regole nel vostro firewall, come fate a capire quali sono attive e quali no?

Beh di solito bisogna leggere la documentazione, però si sa, siamo tutti un po’ pigri… vediamo subito qual è il comando da eseguire:

sudo iptables -L --line-numbers

E dovrebbe visualizzarvi qualcosa del tipo:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       udp  --  anywhere             anywhere             udp dpt:domain
2    DROP       tcp  --  anywhere             anywhere             tcp dpt:domain

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Cos’è un’interfaccia

In informatica, con il termine interfaccia, si può far riferimento a diverse cose (ehm Wikipedia o Treccani possono essere delle utili letture) ma nella maggior parte dei casi che tratterò negli articoli o tutorial, farò principalmente riferimento a un’interfaccia di rete utilizzando il solo termine di interfaccia, omettendo appunto di rete.

Ho dato una definizione poco più dettagliata in questo articolo.

Come salvare permanentemente l’Iptables

Abbiamo visto che l’Iptables è il firewall di Linux e che funziona molto bene, si gestisce facilmente da linea di comando… ma ora andiamo diretti alle regole (se vuoi sapere come impostarle, leggi questo).

Prima di tutto installate questo pacchetto:

sudo apt install iptables-persistent

Poi spostatevi sull’account amministratore con sudo su ed eseguite:

iptables-save > /etc/iptables/rules.v4

Per salvare l’attuale configurazione. Mentre per ripristinarlo (nel caso abbiate apportato delle modifiche) con:

iptables-restore < /etc/iptables/rules.v4

Ora provate a riavviare e vedete se è ancora tutto uguale!

Come impostare il DNS e nel caso forzarlo

Alzi la mano chi ha avuto problemi ad impostare i DNS sul proprio computer/server Linux. Ci sono almeno 3-4 impostazioni intercambiabili e dipendenti tra loro (il DHCP può darvi un’IP ma voi ne volete un altro).

Nel caso questa mini-descrizione faccia per voi, ecco come forzarli nel file di configurazione delle interfacce:

sudo nano /etc/network/interfaces

E incollate al fondo gli IP del vostro DNS preferito:

dns-nameservers 8.8.8.8 8.8.4.4

Ora riavviate con un sudo reboot now e dovrebbe essere cambiato (salvo altre impostazioni strane con dnsmasq, qui un esempio con un Raspberry Pi).

Controllate l’effettiva risposta con:

nslookup google.com

E dovrebbe comparirvi qualcosa del tipo:

Server:		8.8.8.8
Address:	8.8.8.8#53

Come impostare delle regole nell’Iptables

Abbiamo visto cos’è l’Iptables ma non abbiamo ancora visto come impostare delle regole. Beh, come ho specificato nell’articolo precedente, è molto semplice! Aprite il terminale ed eseguite:

sudo iptables -A INPUT -i eth1 -p udp -m udp --dport 53 -j DROP
sudo iptables -A INPUT -i eth1 -p tcp -m tcp --dport 53 -j DROP

Questi due comandi imposteranno delle regole che bloccheranno tutte le richieste di DNS sull’interfaccia eth1 (se non sai cos’è una network interface, leggi qua).

Ovviamente queste regole al prossimo riavvio saranno resettate, nel prossimo articolo vedremo come salvarle permanentemente.

Cos’è l’Iptables

L’Iptables è un firewall installato in quasi tutti i sistemi Linux, molto semplice e intuitivo.

È facilmente gestibile da linea di comando e per ora non sono state trovate falle conclamate. Gestisce in modo semplice le regole di input, output e forward.

Potete leggere la documentazione in italiano sul sito di Ubuntu https://wiki.ubuntu-it.org/Sicurezza/Iptables

Come rimuovere CocoaPods

Dopo aver visto come installarlo e come usarlo, non poteva mancare anche come rimuovere completamente (disintegrare, se proprio vogliamo usare il comando in italiano):

sudo gem install cocoapods-deintegrate cocoapods-clean
pod deintegrate && pod clean
rm Podfile

Ovviamente tutto eseguito da terminale e nel percorso del progetto con all’interno le dipendenze.