Appunti


Indice

macOS — BlockYouX per Little Snitch 2020/12/11

La lista di domini BlockYouX nel formato .lsrules compatibile con Little Snitch:

  • clicca qui per importarla direttamente nell'applicazione
  • oppure esamina il file con un editor di testo e poi inserisci a mano questo indirizzo
    https://tommaso.me/warehouse/BlockYouX.lsrules

macOS — usare Boot Camp su un disco esterno 2020/10/23

Non sono un fan delle partizioni dei dischi rigidi, ma Boot Camp mi piace e di seguito ho elencato una procedura per installare Windows 10 su un disco esterno e utilizzarlo per avviare un Mac.

Preparazione

Ci sono due problemi da affrontare: Windows pone degli ostacoli all'installazione sui dischi esterni e Boot Camp lavora solo sul disco interno dopo averlo partizionato.

Per iniziare servono:

  • un disco a stato solido di qualsiasi tipo, collegabile al Mac tramite USB 3.0 o superiore (va bene anche Thunderbolt) e formattato exFAT con la tabella delle partizioni GUID; io ho scelto un SSD da 2,5" senza guscio, di quelli che si montano all'interno dei PC, e un adattatore SATA-USB tipo questo
  • l'immagine disco di Windows 10; attenzione, visitando quell'indirizzo da un PC è possibile che venga mostrata una pagina differente
  • i driver di Boot Camp, da scaricare sul Mac aprendo Assistente Boot Camp e cliccando su barra del menu > Azione > Scarica software di supporto per Windows; otteniamo così la cartella WindowsSupport
  • un PC o una macchina virtuale dove Windows è stato già installato, ci serve per preparare il disco esterno; io ho creato una macchina virtuale con VMware (di cui esiste anche una versione gratuita) e l'immagine disco appena scaricata dal sito Microsoft; non serve attivare la licenza di Windows adesso
  • il programma WinToUSB per sfruttare una funzione di Windows chiamata Windows To Go
  • se si usa un portatile, una tastiera ed un mouse esterni; il trackpad e la tastiera del Mac non sono supportati fino a quando non arriviamo ad installare i driver forniti da Boot Camp
Installazione
  1. Copiare l'immagine disco di Windows e la cartella WindowsSupport nel PC o nella macchina virtuale
  2. Collegare il disco esterno al PC
  3. Aprire WinToUSB e selezionare l'immagine disco di Windows, quindi scegliere la versione corretta di Windows da installare sul disco esterno
  4. Scegliere il disco esterno come destinazione e GPT for UEFI come schema delle partizioni; WinToUSB impiegherà anche 20 minuti per formattare il disco esterno e prepararlo con i file necessari
  5. Copiare la cartella WindowsSupport nel disco esterno
  6. Spegnere il PC, non serve più
  7. Scollegare qualsiasi periferica non necessaria dal Mac
  8. Collegare il disco esterno al Mac
  9. Avviare (o riavviare) il Mac e subito dopo tenere premuto fino a quando non appare l'assistente di avvio; se il Mac monta il chip T2, prima potrebbe essere necessario avviare il computer da macOS Recovery premendo + R, quindi cliccare su barra del menu > Utility > Utility Sicurezza Avvio e consentire l'avvio da supporti multimediali esterni
  10. Assistente di avvio mostra tutti i dischi e tutte le partizioni dalle quali è possibile avviare il Mac, scegliere EFI Boot che dovrebbe apparire con l'icona di un disco esterno
  11. Installare Windows secondo i propri gusti, adesso è possibile attivarlo con una licenza; può essere necessario usare una tastiera o un mouse esterni
  12. Adesso e in futuro se Windows dovesse riavviare il computer, ricorda di tenere premuto subito dopo lo spegnimento del monitor, in caso contrario il Mac potrebbe avviare macOS; se macOS si avviasse non sarebbe comunque un problema, è sufficiente riavviare con premuto e Windows riprenderà le operazioni da dove le ha lasciate
  13. Al termine dell'installazione di Windows, aprire il disco C: che probabilmente si chiamerà WinToUSB e cercare la cartella WindowsSupport che era stata copiata al punto 1, quindi aprire WindowsSupport\BootCamp\Setup e installare i driver; se l'installazione non andasse a buon fine, riavviare o forzare lo spegnimento e lanciare nuovamente Setup
  14. Tutto l'hardware del Mac dovrebbe funzionare e l'obiettivo è raggiunto
  15. Se da adesso in poi il Mac si ostina ad avviare Windows ogni volta che il disco esterno è collegato, apri le Preferenze di Sistema di macOS e controlla che in Disco di Avvio sia selezionato il disco interno
Backup e altri consigli utili

Prima di installare programmi di terze parti o aggiornare i driver della GPU, consiglio di pensare ad una strategia di backup. Io ho fatto così:

  1. Perdere adesso più tempo possibile per personalizzare il sistema operativo tramite impostazioni, pannelli di controllo e preferenze varie; scaricare e installare tutti gli aggiornamenti di sistema indispensabili e non; rimuovere tutti i programmi inutili preinstallati da Microsoft; ripetere fino alla nausea, fino a quando non sei sicuro di avere una solida versione zero da backuppare
  2. Fare un backup completo del disco esterno; io ho scelto Winclone per creare una sorta di immagine disco, da me nominata WinToUSB AAAA-MM-GG e messa al sicuro
  3. In seguito al backup zero è possibile installare programmi di terze parti e altre cose utili come Macs Fan Control o i driver per la GPU aggiornati e compatibili con Boot Camp
  4. Fare di nuovo un backup completo del disco esterno, questo sarà il backup uno e insieme al precedente finirà in un luogo sicuro
  5. In futuro arriverà il momento di un aggiornamento molto importante e grande, di quelli che prendono il nome di un mese dell'anno, tipo Windows 10 October 2020 Update, e Windows si rifiuterà di installarlo perché si trova su un disco esterno; questa è la procedura per superare il blocco, dopo è possibile aggiornare senza ostacoli
  6. Fare sempre un backup prima di un grande cambiamento e farne un altro pochi giorni dopo; a volte è utile tornare indietro, mentre altre volte è utile non dover perdere di nuovo tutto quel tempo davanti a quella barra di progressione


fonte: 1, copia

macOS — eseguire più comandi in una sola riga del Terminale 2020/06/27

  • I comandi separati da ; sono eseguiti sequenzialmente; la shell attende che ogni comando termini prima di eseguire il successivo
  • La shell esegue in background il comando che termina con &, non attende che questo finisca e immediatamente restituisce exit code 0
  • L'uscita standard del primo comando viene collegata con | all'ingresso standard del secondo comando
  • Il comando successivo a && viene eseguito se, e solo se, il comando prima di && restituisce uno stato di uscita pari a zero
  • Il comando dopo || viene eseguito se, e solo se, il comando prima di || restituisce uno stato di uscita pari a non-zero


fonte: 1

Video — i colori nei computer sono sbagliati 2020/05/08

Con un cartone animato di soli 3 minuti e mezzo Henry Reich spiega come mai qualsiasi operazione sulle immagini, o i video, sia corretta solo se viene eseguita con applicazioni che sappiano gestire il colore annullando la codifica della gamma (tramite l'uso di profili colore, spazio di lavoro lineare, OCIO, ACES, ecc.) e quale sia l'origine del problema: l'uomo percepisce l'intensità della luce (e dei suoni) secondo una scala logaritmica, mentre i sensori digitali registrano l'ambiente secondo una scala lineare, però molti programmi lo ignorano.
Da vedere e rivedere per convincersi a cambiare il proprio flusso di lavoro e da lì, a cascata, comprendere finalmente i formati raw, la codifica log della gamma per le riprese video e a cosa serva linearizzare lo spazio di lavoro in applicazioni tipo After Effects o Cinema 4D.


fonte: copia

macOS — aprire app/plugin/eseguibili marchiati come danneggiati o dannosi 2020/04/25

Con macOS 10.15 Catalina (e successivi) può essere utile:

  • Controllare che proprietario e permessi siano corretti (per esempio, plugin simili hanno lo stesso proprietario?)
  • Vedere gli attributi estesi (XA) dell'app
    xattr -l /percorso_del_file
  • Rimuovere solo l'attributo com.apple.quarantine dall'app e da tutte le sottocartelle
    xattr -dr com.apple.quarantine /percorso_del_file
  • Firmare il file con un certificato ad-hoc
    codesign --force --sign - -v /percorso_del_file
  • Firmare il file con un certificato specifico
    codesign --force --sign "nome del certificato" -v /percorso_del_file


Per usare xattr e codesign può essere necessario installare gli strumenti per sviluppatore a riga di comando con

xcode-select --install

Windows — aggiornare il sistema operativo quando si trova su un disco esterno 2020/02/12

Con Windows 10:

  1. Aprire Regedit
  2. Cercare HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
  3. Cambiare PortableOperatingSystem da 1 a 0
  4. Riavviare


fonte: 1, copia

Adobe After Effects — espressione "layer position distribution" 2019/09/12

start_layer = thisComp.layer("Start Null");
end_layer = thisComp.layer("End Null");

pos_start = start_layer.transform.position;
pos_end = end_layer.transform.position;

index_start = start_layer.index;
index_end = end_layer.index;
layer_count = index_end - index_start;

this_layer_pos = pos_start + (pos_end-pos_start)/layer_count*(index-index_start)


fonte: 1

Video — misurare il volume audio e seguire lo standard EBU R 128 2019/04/07

-23 LUFS di media su tutta la traccia.
Si calcola dopo aver ascoltato per intero la clip, non è un livello da tenere in ogni istante; come conseguenza di questo, invita ad usare un'ampia dinamica e ammette picchi fino a -1 dBTP.


fonte: 1, 2, 3

Video — aree di sicurezza per la produzione televisiva 16:9 secondo EBU R 095 2019/04/06

Action safe area: inizia da ciascun lato al 3,5% dell'immagine intera.
Graphics safe area: inizia da ciascun lato al 5% dell'immagine intera.

Esempio di configurazione per Adobe After Effects.


fonte: 1

macOS — velocizzare Mail 2019/01/30

Creare un nuovo script con Script Editor:

(*
Speed up Mail.app by vacuuming the Envelope Index
Code from: http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
Originally by "pmbuko" with modifications by Romulo
Updated by Brett Terpstra 2012
Updated by Mathias Törnblom 2015 to support V3 in El Capitan and still keep backwards compability
Updated by @lbutlr for V5 and Container folder in High Sierra and use du
https://gist.github.com/ttscoff/3728277
*)

tell application "Mail" to quit
set os_version to do shell script "sw_vers -productVersion"
set mail_version to "~/Library/Mail/V2/Maildata/Envelope\\ Index"
considering numeric strings
if "10.10" ≤ os_version then set mail_version to "~/Library/Mail/V3/Maildata/Envelope\\ Index"
if "10.12" < os_version then set mail_version to "~/Library/Mail/V4/Maildata/Envelope\\ Index"
if "10.13" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V5/Maildata/Envelope\\ Index"
if "10.14" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V6/MailData/Envelope\\ Index"
if "10.15" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V7/MailData/Envelope\\ Index"
end considering

set sizeBefore to do shell script "du -h " & mail_version & "| awk {'print $1'}"
do shell script "/usr/bin/sqlite3 " & mail_version & " vacuum"
set sizeAfter to do shell script "du -h " & mail_version & "| awk {'print $1'}"
display dialog ("Mail index before: " & sizeBefore & return & "Mail index after: " & sizeAfter & return & return & "Enjoy the new speed!")
tell application "Mail" to activate


Su macOS 10.14 Mojave (e successivi), prima di eseguire lo script dall'app, aggiungere Script Editor all'elenco presente in Preferenze di Sistema > Sicurezza e Privacy > Privacy > Accesso completo al disco; conclusa l'operazione è possibile rimuovere l'app dall'elenco.


fonte: 1, 2

Adobe After Effects — espressione "counter" 2018/04/15

Preset: CounterPro preset di Studio Blou.

Espressione:

numDecimals = 2;
commas = true;
dollarSign = true;
beginCount = -1999;
endCount = 1999;
dur = 4;

t = time - inPoint;
s = linear (t, 0, dur, beginCount, endCount).toFixed(numDecimals);
s = s.replace (".",",");

prefix = "";
if (s[0] == "-"){
prefix = "-";
s = s.substr(1);
}
if(dollarSign) prefix += "$";

if (commas){
decimals = "";
if (numDecimals > 0){
decimals = s.substr(-(numDecimals + 1));
s = s.substr(0,s.length - (numDecimals + 1));
}
outStr = s.substr(-s.length, (s.length-1)%3 +1);
for (i = Math.floor((s.length-1)/3); i > 0; i--){
outStr += "," + s.substr(-i*3,3);
}
prefix + outStr + decimals;
}else{
prefix + s;
}


fonte: 1

Video — youtube-dl 2018/03/10

# Lines starting with # are comments
# Download best video mp4 format available and the best audio format except webm without merging them, then save all videos under Downloads directory in your home directory
-f 'bestvideo[ext=mp4],bestaudio[ext!=webm]' -o ~/Downloads/%(title)s-%(id)s-%(uploader)s.%(ext)s


fonte: 1

Adobe After Effects — espressione "keyframe bounce back" 2018/03/01

e = .7;
g = 5000;
nMax = 9;

n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n--;
}
if (n > 0){
t = time - key(n).time;
v = -velocityAtTime(key(n).time - .001)*e;
vl = length(v);
if (value instanceof Array){
vu = (vl > 0) ? normalize(v) : [0,0,0];
}else{
vu = (v < 0) ? -1 : 1;
}
tCur = 0;
segDur = 2*vl/g;
tNext = segDur;
nb = 1; // number of bounces
while (tNext < t && nb <= nMax){
vl *= e;
segDur *= e;
tCur = tNext;
tNext += segDur;
nb++
}
if(nb <= nMax){
delta = t - tCur;
value + vu*delta*(vl - g*delta/2);
}else{
value
}
}else
value


fonte: 1

Adobe After Effects — espressione "inertial bounce" 2018/02/25

// Inertial Bounce (moves settle into place after bouncing around a little)
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){
n--;
}
}
if (n == 0){
t = 0;
}else{
t = time - key(n).time;
}

if (n > 0 && t < 1){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
amp = .05;
freq = 4.0;
decay = 2.0;
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}


fonte: 1, 2

Adobe After Effects — espressione "throw" 2018/02/24

// Throw (move at a constant speed without keyframes)
veloc = -10; //horizontal velocity (pixels per second)
x = position[0] + (time - inPoint) *veloc;
y = position[1];
[x,y]


fonte: 1

Adobe After Effects — espressione "titoli di coda" 2018/02/23

t = time;
fr = (time - inPoint)/thisComp.frameDuration;
s = -4; //Speed in pixels per frame
y = value[1]+(fr*s);
[value[0], y]


fonte: 1, 2, 3