Git bash diff explained

In uno dei nostri articoli precedenti su Git abbiamo spiegato come avere una bash Git configurata secondo alcuni nostri ( miei 😛 ) gusti.

Anche oggi, volendo essere un po’ geek, andremo a sviscerare con attenzione come fare il diff con Git attraverso la linea di comando 🙂

Dai… è divertente! 🙂

Per prima cosa creiamo una cartella di prova sul nostro desktop e creiamoci un repository git:

Poi inseriamo un file (prendiamo l’html di example.org) e lo committiamo.

a questo punto lo apriamo con il nostro editor di testo preferito e ne facciamo alcune modifiche.

Quindi lanciamo il diff per quel file. Ecco che cosa verrà visualizzato (più o meno in base alle vostre modifiche)

Compared Files

Diff ci dice che sta comparando il file “a” che è example.org.txt con il file “b” che è sempre, in questo caso il file example.org.txt ma con le modifiche

File Metadata

Queste sono informazioni molto tecniche che dipendono da come Git identifica gli “oggetti” al suo interno (potete non considerarli per lo scopo di questo articolo)

a/b Identifiers 

Git da degli identificatori per le righe che visualizzerà successivamente per indicare una riga di “a” e una riga di “b”. Qui si vede che le righe di “a” saranno indicate con il simbolo “-” (meno) mentre quelle di “b” con il simbolo “+” (più).

Poiché il diff di un file con la sua versione precedente identifica con  “a” la versione precedente e con “b”  la versione successiva, in questo modo è anche possibile leggere le righe con “-” come eliminate mentre quelle con “+” come aggiunte. Infatti le righe identiche non vengono etichettate.

Chunk Header

Poiché le modifiche ad un file potrebbero espandersi per molte righe di codice, diff cerca di visualizzare solamente degli “spezzoni” (chunk) dove sono presenti le modifiche, tralasciando le molte (o poche) righe identiche tra un chunk e l’altro.

L’header è racchiuso tra i tag @@

All’interno c’è una sezione per il file “a” indicata con il “-” e una per il file “b” indicata con il “+”.

Qui ci viene detto che nel chunk che segue sono visualizzate 7 righe di “a” a partire dalla riga 11 e 7 righe di b a partire dalla riga 11 se abbiamo (come il nostro primo chunk)

@@ -11,7 +11,7@@

Chunk

Nel chunk sono indicate con “-” le righe di “a” eliminate e con “+” le righe di “b” aggiunte. Le righe senza segni sono le stesse in entrambi i file

Git bash diff explained

Friendly firewalls for your OSX, Windows and Linux

 _  _

Oggi parleremo di tre firewall veramente facili da utilizzare che che ci daranno modo (a livello di utilizzatore basico di PC) di avere sotto controllo tutte le connessioni di rete che avvengono nei nostri computer.

Per Windows descriverò la versione di GlassWireBasic” (a pagamento) che ad oggi costa circa 60€.

Mentre per OSX descriverò il bundle LittleSnitch+MicroSnitch che costa ad oggi circa 32€.

Le cifre sono una-tantum e quindi una volta acquistata la licenza, siamo a posto per sempre. Non come i firewall messi a disposizione dagli antivirus che sono attivi solamente con le versioni professionali a pagamento annuale, ma non voglio dilungarmi oltre su questo argomento.

OpenSnitch è il porting di LittleSnitch su Linux che sta facendo Simone Margaritelli (aka evilsocket). OpenSnitch, devo dire la verità, non ho ancora avuto modo di utilizzato perché è molto recente e in sviluppo in questi giorni, ma credo comunque che meritasse di essere menzionato e tenuto d’occhio visto che si prefigge di dare sotto Linux le stesse opzioni di LittleSnitch.

Le funzionalità di questi software sono veramente belle, e credo che ogni utilizzatore di PC dovrebbe averle a disposizione!

La funzione più bella è la modalità del firewall  “Ask To Connect” (in Little e Open Snitch è attiva di default, mentre in GlassWire va abilitato nella scheda Firewall).

Questo cosa vuol dire?

Vuol dire che non appena avremo installato il programma, questo comincerà a controllare tutte le connessioni al computer in Ingresso e in Uscita e di default non permetterà quelle in Uscita.

Se per ogni connessione in Uscita non è ancora stata stabilita una regola, allora vi verrà presentato un popup con il quale decidere se negare o acconsentire la connessione.

GlassWire:

OpenSnitch:

LittleSnitch:

Ad esempio facendo per la prima volta anche un solo telnet su Windows, dovremo abilitare la regola su GlassWire prima di riuscire nell’intento 😉

Stessa cosa per LittleSnitch.

Inoltre avremo la possibilità di andare a vedere le regole impostate sul Firewall e fare alcune operazioni sia sulla regola ma anche sull’applicazione stessa. Potremo per esempio fare la scansione con l’antivirus corrente sul PC (GlassWire) e vedere chi ha firmato il programma (GlassWire e LittleSnitch) e anche vedere se la firma è valida (LittleSnitch).

Avrete quindi sotto controllo tutto il traffico suddiviso per applicazione o per connessioni!

Se poi volete spingervi ancora più a fondo, potete abilitare (GlassWire) le notifiche sull’attività di fotocamera e microfono.

Ma se avete comprato anche MicroSnitch, avrete le stesse funzioni anche su Mac OSX.

Beh, spero che queste cose vi piacciano e vi possano tornare utili!

Soprattutto vi facciano stare più tranquilli mentre utilizzate il vostro PC.

Alla prossima.

 

Friendly firewalls for your OSX, Windows and Linux

MacOSX trackpad gestures

Poiché molte persone che conosco hanno un Mac con un bellissimo Trackpad, ma continuano a cliccarci “con forza” invece che semplicemente tapparlo, oggi voglio suggerire in questo articolo come abilitare alcune utili “gesture” sul vostro Mac 🙂

Innanzitutto ecco qui i link ufficiali:

Poiché vi ho già messo i link per configurare le varie opzioni qui vi metterò la sintesi  per accedere ad esse (io ho il sistema operativo in inglese):

  • Le gesture: System Preferences –> Trackpad –> Mouse Gestures
  • Trascinamento a tre dita: System Preferences –> Accessibility –> Mouse and Trackpad –> Trackpad options –> Enable dragging –> Three finger drag

Una volta impostati, difficilmente ne farete a meno.

E’ ovviamente del tutto personale, ma fatemi sapere come andate!

MacOSX trackpad gestures

Git bash environment on Mac OSX

Oggi vogliamo essere un po’ geek e configurarci il prompt per git a linea di comando.

Per fare questo scarichiamoci questi cinque file più, se volete utilizzarlo come editore predefinito, Sublime Text:

Il profilo dobbiamo importarlo dal menu del nostro terminale: Terminal –> Settings (io l’ho in inglese) e poi sotto la lista di profili, clicchiamo la piccola ruota dentata vicino al “-” (meno)

Scarichiamo (nella cartella Downloads)  bash_profile e apriamo il terminale e digitiamo:

cd
mv Downloads/bash_profile .bash_profile

ATTENZIONE: copiate il .bash_profile solo se non ne avete già uno, altrimenti integrate il vostro con quanto scritto nel mio.

Scarichiamo (nella cartella Downloads) git-prompt.sh e git-completion.bash (presi direttamente dal repository ufficiale di git su GitHub – https://github.com/git/git) e git_configure_commands.sh

Digitiamo i comandi

cd
mv Downloads/git_configure_commands.sh .
mv Downloads/git-completion.bash .
mv Downloads/git-prompt.sh .

A questo punto lanciamo il comando git_configure_commands.sh

./git_configure_commands.sh

che imposterà il conflict style a diff3, metterà il push.default ad upstream e imposterà Sublime Text come l’editore di default per il messaggio di commit (fate attenzione qui che il percorso di Sublime Text sia anche da voi come nel file, altrimenti correggetelo)

A questo punto non vi resta che chiudere e riaprire il terminale e navigare in una cartella che sia un repository git.

Ecco qua!

 

Si lo so, l’interfaccia grafica ci vizia un po’, ma avere anche una riga di comando tutta personalizzata non è male 😉

Git bash environment on Mac OSX

TimeMachine Local Snapshot

Intanto se non sapete cosa sono i “local snapshot” andate a leggere qui.

MacOSX TimeMachine non esegue i backup solamente sul disco esterno, ma fintantoché non ha fatto il backup (ripeto all’ultimo), ad intervalli regolari, tiene un local snapshot in locale, “rubando” spazio al nostro prezioso Macintosh HD! 🙂

Bene, se volete non farli più occorre:

Aprite un terminale.
Digitate il comando: 

sudo tmutil disablelocal

Inserire la password di amministratore (se richiesta).
Riavviare il Mac.

Disabilitando i “local snapshot” tutti gli snapshot presi fino a questo momento saranno cancellati.

TimeMachine Local Snapshot