Archive for category howto
HOWTO: creare un’immagine in “tiltshift”
Poco tempo feci un post riguardante l’HDR e su come fare foto in HDR. Lì già anticipai anche un’altra tecnica che mi ha colpito parecchio. Si tratta del “tiltshift“. Il tiltshift è una tecnica che si fa con degli obbiettivi particolare, il tilt e lo shift. Però, per chi non ha né una reflex né questi obbiettivi può sempre fare affidamento al computer o alla tecnologia tradizionale. Infatti esistono delle applicazioni, sia per computer che per dispositivi mobili che ti permettono di creare foto “tiltshiftate”.
Per spiegare cosa è il tiltshift, basta guardare la foto sottostante.
Questa immagina l’ho creata con il mio vecchio iPhone 3GS e con l’applicazione TiltShift Generator, presente nell’App Store. Praticamente il tiltshift applica degli effeti alla foto in modo da farla sembrare una miniatura. Sfocando le pareti della foto e dando la giusta luminosità al centro della stessa, puoi avere degli effetti bellissimi.
Qui non voglio insegnare come fare il tiltshift con gli obbiettivi, ma per lo meno voglio darti delle dritte per crearli digitalmente e con strumenti semplici. Ah una cosa che comunque accomuna tutti è il tipo di ripresa della fotografia: la foto possibilmente deve essere fatta dall’alto verso il basso, riprendendo persone, auto, case, oggetti che possono essere risaltati dalla non sfocatura di questa tecnica.
Dunque per creare immagini tiltshiftate puoi fare in uno dei seguenti modi (dal più semplice):
- Senza installare niente puoi usare questo sito: tiltshiftmaker.com
- Usare l’app TiltShift Generator per iPhone
- Installa questa applicazione in Adobe Air sul tuo computer/mac:
- Segui questa guida per crearla con Gimp
- Segui questa guida per crearla con Photoshop
Se vuoi vedere altri esempi di tiltshift basta cercare su Google, oppure vedi il gruppo che c’è su Flickr
Non resta altro che sbizzarrirti con le tue foto e se ti va metti nei commenti le tue creazioni. Sarò felice di vederle!!
Riccardo Vandoni ha commentato su facebook spiegando come funzionano le lenti per avere questo ti effetto. Ecco il suo commento:
Un piccolo appunto: le lenti tiltshift permettono di decentrare e basculare la lente. Basculando si può giocare con la profondità di campo, come hai fatto te in maniera “digitale” nel tuo tutorial, mentre decentrandola invece si riescono a raddrizzare le linee verticali, cosa fondamentale per le foto di architettura, ad esempio
Grazie Riccardo.
HOWTO: Stranezze in Google Earth
Google Earth è un fantastico programma per “viaggiare” ed “esplorare” per il pianeta Terra stando comodamente seduti davanti al proprio computer. Si basa su fotografie satellitare, aeree, orografie del territorio, foto degli utenti, modelli 3D dei principali monumenti e delle città e molto altro ancora.
Ecco gli UFO!!
La superficie terrestre è molto vasta ed ha delle “stranezze” che molti utenti hanno scoperto/segnalato. Vorrei qui raggrupparle per fartele esplorare e lasciarti un po’ di “mistero”. I passi da fare sono semplici:
- scarica Google Earth ed installalo
- apri Google Earth
- inserisci le seguente coordinate sul riquadro in alto a sinistra
Le coordinate sono queste:
- 30°30’38.16″S 115°22’56.88″E
- 39°57’27.99″N 75°10’24.37″W
- 19°56’57.15″S 69°38’1.73″W
- 45°42’12.32″N 21°18’7.91″E
- 37°37’41.71″N 116°50’50.92″W
- 78°38’29.61″N 15° 7’5.49″E
- 44°40’51.45″N 10°19’2.33″E
- 53°31’54.22″N 1°21’24.22″W
- 45° 7’25.57″N 123° 6’49.30″W
- 53°32’13.31″N 1°30’16.04″W
- 50°48’48.97″N 2°28’29.30″W
- 48°21’10.24″N 11°43’56.76″E
- 43°47’38.49″N 21°55’10.40″E
- 20°25’33.18″N 136° 4’53.43″E
- 31°15’13.24″N 109°52’41.71″W
- 39°31’42.16″N 107°42’58.31″W
Se hai idea di cosa possano essere commenta il post indicando il numero della coordinata con la tua ipotesi. Ovviamente se conosci o scopri altri posti interessanti scriveli nei commenti, sarò felice di integrarli.
Buona esplorazione!
HOWTO: fai parlare e cantare il tuo mac
Esatto, non è una presa in giro
Il tuo mac sa parlare (e cantare)! Lo sa fare solo in inglese e senza installare nessun software aggiuntivo. É dotato di VoiceOver per rendere accessibile l’utilizzo di OSX agli ipovedenti e non vedenti.
Dunque oltre a leggere quello che “vede” sullo schermo puoi fargli leggere delle frasi a tuo piacimento o sentire come è la pronuncia in inglese di una certa parola. Puoi integrare questa tecnologia anche in degli script da te creati per farti notificare qualsiasi cosa tu voglia.
Segui questi passaggi:
- apri il Terminale
- digita il comando “say” seguito dalla frase da leggere. Ad esempio:
#> say This is my first sentence
In alternativa puoi digitare il comando “say” premi invio e scrivere tutto quello che vuoi. Appena scritta la tua frase e premi invio il mac ti leggerà quello che hai scritto. Premi CTRL-C per terminare il comando say.
Inoltre puoi scegliere la voce con cui pronunciare la frase. Questo si fa digitando il seguente comando:
#> say -v Albert Sentence to speech #> say -v "Good news" This is a really really good news
Qui di seguito la lista delle voce incluse in OSX.
Voci da donna
- Agnes
- Kathy
- Princess
- Vicki
- Victoria
Voci da Uomo
- Bruce
- Fred
- Junior
- Ralph
Novità e divertenti
- Albert
- “Bad News”
- Bahh
- Bells
- Boing
- Bubbles
- Cellos
- Deranged
- “Good News”
- Hysterical
- “Pipe Organ”
- Trinoids
- Whisper
- Zarvox
Ed ora ti propongo un po’ di esempi divertenti per farti due risate e per far “cantare” il tuo mac!
#> say “os x” (questo leggerà.. ) #> say -v Good oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo oooooooooooooooooooooooooooooooooooooooooooooooo #> say -v "Pipe Organ" "Dum dum dee dum dum dum dum dee Dum dum dee dum dum dum dum dee dum dee dum dum dum de dum dum dum dee dum dee dum dum dee dummmmmmmmmmmmmmmmm" #> say -v cellos "oh This is a silly song silly song silly song this is the silliest song ive ever ever heard So why keep you listening listening listening while you are supposed to work to work to work to work its because i hate my job hate my job hate my job its because i hate my job more than anything else No its because youve no life youve no life youve no life and you better go get one after forwarding this crap" #> say -v Whisper Help, get me out oh this mac. Someone locked me in here again!
Per concludere il comando say ha tante opzioni: puoi salvare su file l’audio generato, puoi dargli in pasto un file con del testo. Per ulteriori informazioni sul suo utilizzo ti rimando al manuale online oppure digita “man say” sul tuo Terminale.
Non resta che dare spazio alla tua fantasia nell’utilizzo di questo comando. Se vuoi nei commenti dimmi come hai utilizzato o utilizzi il comando say, sia se è per puro divertimento o per lavoro
HOWTO: Fixare il login di Firefox Home su iPhone
Da qualche giorno Mozilla ha lanciato Firefox Home per iPhone. Chiariamo subito una cosa: Firefox Home non è un browser. É un’applicazione che sincronizza la tua history, tabs ed altre informazioni con il tuo Firefox che hai sul Mac o Pc.
I passi da fare sono i seguenti:
- installato il plugin Firefox sync sul tuo Firefox
- crea o configura il tuo account di Firefox sync
- installa Firefox Home sul tuo iPhone
- Metti le tue credenziali in Firefox home
A questo punto se hai dei problemi nel fare il login ed hai un errore del genere “login failure unspecified failure“, il problema è che hai impostato nel tuo Firefox la navigazione privata, dunque Firefox Sync non sincronizza niente e l’applicazione non riesce a fare il login.
Per risolvere ciò devi disabilitare la navigazione privata da Firefox in questa maniera:
- Apri Firefox e vai sulle Preferenze
- Clicca su tab Privacy e seleziona “Ricorda storia” (o qualche cosa del genere)
In questo modo permetti a Firefox di sincronizzare i tuoi dati e di ritrovarteli su Firefox Home.
Se hai problemi, commenti, suggerimenti, commenta il blog oppure contattami
HOWTO: creare un’immagine HDR
Posted by diegor in fotografia, howto, link vari, personale on 2010/07/15
Con l’avvento della fotografia digitale molte tecniche sono state “digitalizzate” e messe alla portata di tutti. Tra le tante, quelle che hanno catturato la mia attenzione sono principalmente due: l’HDR ed il TiltShift.
In questo post verrà mostrata una panoramica sull’HDR (High Dynamic Range), una tecnica utilizzata per aumentare lo spazio dedicato ai calcoli di illuminazione. Ciò permette di usare sia dei valori molto alti che dei valori molto bassi per rappresentare i valori di illuminazione.
“Le tecniche HDR sono fondate sulla natura fisica della luce. Per i calcoli si utilizzano le stesse unità di misura della fotometria, dove, per esempio, al sole viene assegnato un valore di luminosità milioni di volte più grande di quello del monitor del personal computer.” – Wikipedia
Cosa serve per fare delle foto HDR?
- Prima di tutto serve una macchina fotografica che ti permette di impostare manualmente i tempi di esposizione dell’obiettivo (se hai una reflex allora sei a posto).
- Inoltre è consigliabile l’uso di un cavalletto soprattutto per le foto con un’esposizione più lunga.
- Lato software, per i più temerari c’è Photoshop (a partire da 1.018,80€), altrimenti c’è un ottimo software per la produzione HDR: Photomatix Pro (a partire da 39$ in su)
Una volta che hai tutti gli strumenti necessari, vai a creare la tua prima immagine HDR. In questa guida come software di riferimento verrà preso Photomatix Pro, in quanto più economico e di più rapido utilizzo allo scopo. Per creare delle immagini in HDR, bisogna scattare una serie di foto allo stesso soggetto ma con esposizioni diverse. Nella fase successiva si fondono queste immagini in una sola sovrapponendole ed esaltando le ombre e le luci presenti nella foto stessa. Dunque scarica le tue foto sul computer e salvale sul Desktop o in altra cartella a te comoda.
Invece che una guida completa vorrei soffermarmi su qualche piccolo consiglio per scattare delle ottime foto per produrre un HDR e per impostare al meglio i parametri di Photomatix Pro.

Una delle mie prime HDR.
- La tipologia di foto sarebbe meglio essere una delle seguenti: contrasto con luce, paesi innevati, panorami, interni con forte luce provenienti da finestre o lampioni. Ricordati di fotografare oggetti NON in movimento.
- La reflex deve avere la “priorità di diaframmi” in modo da avere una profondità di campo sulla serie di foto che andrai a scattare (nella Canon l’impostazione è Av)
- Per avere un buon HDR è necessario scattare almeno 3 foto con diverse esposizioni. Si consiglia comunque di avere 5 scatti per raggiungere ottimi risultati. Cerca di avere intervalli uguali rispetto alla quantità di luce che andrà a colpire il sensore.
- Importa le foto in Photomatix ed attendi qualche istante in modo di avere un HDR grezza. Ora gioca con il “tone mapping” in modo da poter personalizzare a tuo piacimento l’immagine. I paramentri su cui giocare sono: “strenght” che indica l’intensità dell’ottimizzazione del contrasto, “color saturation” che è la saturazione dei colori, la “luminosity” per la luminosità delle ombre ed infine il “light smoothing” per impostare la morbidezza della variazione di contrasto.
- Divertiti a cambiare anche gli altri paramentri.
- Finite le tue modifiche salva la tua HDR e goditela
- Non esagerare con i parametri
Gli spunti per questo post sono stati presi da questa ottima guida, che comunque vi rimando per approfondire l’argomento in questione. Se hai domande o osservazioni ti prego di farmelo sapere tramite mail oppure tramite commenti
HOWTO: Il modello di branching di Git
“Questo post è la traduzione del post originale ‘A successful Git branching model‘ di Vincent Driessen.” Se troverai errori o incomprensioni nella traduzione ti prego di farmelo presente. Lo correggerò prima possibile.
In questo post ti presento il modello di sviluppo che ho introdotto per tutti i miei progetti (sia sul lavoro e privato) circa un anno fa, e che ha rivelato un grande successo. Sono sempre stato motivato a scrivere su Git, ma non ho mai trovato il tempo per farlo bene, fino ad ora. Non voglio parlare di uno qualsiasi dei dettagli dei progetti ma solo sulla strategia di branching e della gestione delle release.
Ci concentreremo su Git come strumento di versione per tutti i nostri sorgenti
Perché Git?
Per una discussione approfondita sui pro ed i contro di Git rispetto ai sistemi centralizzati di revisione del codice sorgente, vedi il web. Ci sono un sacco di flame là. Come sviluppatore, preferisco Git rispetto a tutti gli altri strumenti in giro oggi. Git ha veramente cambiato il modo di pensare degli sviluppatori riguardo il merging ed il branching. Dal classico mondo CVS/Subversion da cui provengo, il merging/branching è sempre stato considerato un po’ inquietante (“Attenzione ai conflitti del merge, ti mordono!”), come qualcosa da fare una volta ogni tanto.
Ma con Git, queste azioni sono estremamente economiche e semplici, e sono considerate una delle parti fondamentali del flusso di lavoro giornaliero, davvero. Per esempio, nei libri di CVS/Subversion, branching e merging sono discussi solo negli ultimi capitoli (per utenti avanzati), mentre in ogni libro di Git già rientra nel capitolo 3 (basi).
Come conseguenza della sua semplicità e natura ripetitiva, branching e merging non sono più qualcosa di cui aver paura. Strumenti di controllo di versione sono tenuti a contribuire al branching e merging più di ogni altra cosa.
Basta sugli strumenti, entriamo nel merito sul modello di sviluppo. Il modello che ho intenzione di presentare qui, è sostanzialmente non più di un insieme di procedure che ogni membro del team deve seguire al fine di giungere ad un processo di sviluppo software gestito.
Decentralizzato ma centralizzato
La configurazione repository che usiamo e che funziona bene con questo modello di branching, è quella con un repo centrare “vero”. Si noti che questo repo è considerato solo per essere quello centrale (dato che Git è un DVCS, non c’è nessuna cosa considerata come un repo centrale a livello tecnico). Si farà riferimento a questo repository come origin, dal momento che questo nome è familiare a tutti gli utenti Git.
Ogni sviluppatore compie i propri push e pull in origin. Ma oltre le relazioni centralizzata push-pull, ogni sviluppatore può effettuare i pull di modifiche da altri peers e formare sottosquadre. Ad esempio, questo potrebbe essere utile per lavorare insieme a due o più sviluppatori su una grande novità, prima di effettuare il push prematuro dei lavori in corso in origin. Nella figura sopra, ci sono sottosquadre di Alice e Bob, Alice e Davide, e Clair e David.
Tecnicamente, questo non significa niente più che Alice ha definito un Git remoto, di nome bob, che punta al repository di Bob, e viceversa.
I branch principali
Nel core, il modello di sviluppo è fortemente ispirato ai modelli già esistenti precedentemente. Il repository centrale ha due branch principali, con durata infinita:
- master
- develop
Il branch master in origin dovrebbe essere familiare ad ogni utente Git. Parallelamente al branch master, ne esiste un altro chiamato develop.
Consideriamo origin/master come branch principale dove il codice sorgente di HEAD rispecchia sempre lo stato di produzione.
Consideriamo origin/develop come branch principale dove il codice sorgente di HEAD rispecchia sempre uno stato con gli ultimi cambiamenti di sviluppo consegnati per la prossima release. Qualcuno vorrebbe chiamare questo branch “integration branch” (branch di integrazione). Questo è da dove ogni automatica build giornaliera viene compilata.
Quando il codice sorgente nel branch develop raggiunge un punto stabile ed è pronto per essere rilasciato, tutti i cambiamenti dovrebbero essere portati nel master in qualche modo e poi “taggati” con il numero di release. Come fare questo verrà discusso più avanti.
Quindi, ogni volta che i cambiamenti sono portati nel master, per definizione questa è la nuova release di produzione. Tendiamo ad essere molto severi in questo, in modo che, teoricamente, si potrebbe usare uno hook script di Git per fare il build e il roll-out del nostro software nei server di produzione ogni volta che c’è un commit nel master.
I branch di supporto
Accanto ai branch principali master e develop, il nostro modello di sviluppo usa una varietà di branch di supporto per aiutare lo sviluppo parallelo tra i membri del team, facilitare il tracking delle funzionalità, preparare le release di produzione e contribuire a risolvere i problemi di produzione in maniera rapida. A differenza dei branch principali, questi hanno sempre una durata limitata, in quanto saranno rimossi alla fine della loro vita.
I diversi branch che possiamo utilizzare sono i seguenti:
- Feature branches: branch di nuove features
- Release braches: branch per i rilasci
- Hotfix branches: branch per la risoluzione di problemi
Ognuno di questi branch ha degli scopi precisi e sono limitati a delle regole severe, ovvero da dove dovrebbero essere generati e dove devono essere rimergiati.. Li analizzeremo tra poco.
In nessun caso sono branch “speciali” dal punto di vista tecnico. I tipi di branch sono suddivisi in categorie dipendentemente da come li usiamo.
Feature branches
Si dovrebbero formare da: develop
Devono essere rimergiati in: develop
I nomi che solitamente si usano: tutti tranne master, develop, release-*, hotfix-*

Feature branches (a volte chiamati topic branches) sono usati per sviluppare nuove features per release future più o meno lontane. Quando si parte allo sviluppo di una nuova feature, la release di destinazione in cui la funzionalità dovrà essere incorporata potrebbe essere sconosciuta fino a quel momento. L’essenza del feature branch è che esiste finché la funzionalità è in sviluppo, fin quando eventualmente sarà rimergiata in develop (per aggiungerla definitivamente alla prossima release) oppure scartata (esperimento fallito).
Feature branch esiste tipicamente solo nel repository dello sviluppatore, non in origin.
Creazione di un feature branch
Quando si inizia a lavorare su una nuova feature, si dirama dal branch develop
$ git checkout -b myfeature develop Switched to a new branch "myfeature"
Incorporare una feature terminata nel develop
Le funzionalità terminate dovrebbero essere fuse nel branch develop in modo da aggiungerle nella prossima release:
$ git checkout develop Switched to branch 'develop' $ git merge --no-ff myfeature Updating ea1b82a..05e9557 (Summary of changes) $ git branch -d myfeature Deleted branch myfeature (was 05e9557). $ git push origin develop
Il flag –no-ff causa il merge per creare sempre un nuovo oggetto commit, anche se il merge potrebbe essere eseguito con un fast-forward. Ciò evita la perdita di informazioni circa l’esistenza storica del feature branch e raggruppa tutti i commit che hanno aggiunto questa feature. Confronta:
In quest’ultimo caso, è impossibile vedere dalla storia di git che l’insieme di commit hanno implementato una nuova funzionalità – si dovrebbero leggere manualmente dai messaggi di log. Il ripristino di una intera funzionalità (cioè un gruppo di commit) fa venire il mal di testa in questo ultimo caso, mentre è presto fatto se è stato usato il flag –no-ff.
Si, verranno creati un po’ più oggetti commit (vuoti), ma il guadagno è molto più grande del costo.
Sfortunatamente, non ho trovato un modo per avere il –no-ff come comportamento di default per il git merge, ma in realtà dovrebbe esserlo.
Release branches
Si dovrebbero formare da: develop
Devono essere rimergiati in: develop e master
I nomi che solitamente si usano: release-*
I branch di release supportano la preparazione per una nuova release di produzione. Essi consentono gli aggiustamenti e le rifiniture dell’ultimo minuto (n.d.r. mettere i puntini sulle i). Inoltre, essi consentono le correzioni di bug minori e la preparazione di meta-dati per un rilascio (numero di versione, build date, ecc.). Facendo tutto questo lavoro su un release branch, il branch develop è autorizzato a ricevere funzionalità per la prossima grande release.
Il momento chiave per creare un branch di release branch da develop è quando develop rispecchia (quasi) lo stato desiderato della nuova release. Almeno tutte le caratteristiche previste per la release-da-buildare devono essere mergiate in develop a questo punto nella timeline. Tutte le caratteristiche previste per le versioni future, non possono/devono aspettare fino a dopo che il release branch è stato formato.
Ed è proprio all’inizio di unrelease branch che alla prossima release viene assegnato un numero di versione – nessuno precedentemente. Fino a quel momento, il branch develop rispecchiava i cambiamentei per la “prossima release”, ma non è chiaro se questa “prossima release” diventerà eventualmente un 0.3 oppure una 1.0, fino a quando release branch sarà avviato. Tale decisione è effettuata all’inizio della release branch ed il numero è assegnato secondo le regole del progetto.
Creare un release branch
I release branch sono creati dal branch develop. Per esempio, diciamo che la versione 1.1.5 è la release di produzione corrente ed abbiamo una nuova grande release che sta arrivando. Lo stato di develop è pronto per la “prossima release” ed abbiamo deciso che questa diventerà la versione 1.2 (invece che la 1.1.6 oppure 2.0). Allora creiamo un branch e diamo al release branch un nome che rispecchi il nuovo numero di versione:
$ git checkout -b release-1.2 develop Switched to a new branch "release-1.2" $ ./bump-version.sh 1.2 Files modified successfully, version bumped to 1.2. $ git commit -a -m "Bumped version number to 1.2" [release-1.2 74d9424] Bumped version number to 1.2 1 files changed, 1 insertions(+), 1 deletions(-)
Dopo la creazione del nuovo branch e dopo aver cambiato in esso, gli diamo il numero di versione. Qui, bump-version.sh è un finto script di shell che cambia qualche file nella working copy per rispecchiare la nuova versione. (Questo può essere fatto anche manualmente – il punto è che alcuni file cambiano). Successivamente, la versione numerata è committata.
Questo nuovo branch può esistere per un po’ di tempo, finché la release non verrà lanciata definitivamente. Durante questo intervallo, i bug fix possono essere applicati a questo branch (anziché al branch develop). Aggiungere nuove grandi feature è severamente vietato. Devono essere mergiate nel develop, e quindi, aspettare la prossima grande release.
Finire un release branch
Quando lo stato del release branch è pronto per diventare una vera release, è necessario eseguire qualche azione. Primo, il release branch è mergiato nel master (ricorda che ogni commit nel master è una nuova release per definizione). Successivamente, quel commit nel master deve essere taggato per una facile consultazione futura a questa versione storica. Alla fine, i cambiamenti fatti nel release branch nccessitano di essere rimergiati nel develop, così le future release contengono questi bug fix.
I primi due step in Git:
$ git checkout master Switched to branch 'master' $ git merge --no-ff release-1.2 Merge made by recursive. (Summary of changes) $ git tag -a 1.2
La release è creata e taggata per una futura consultazione.
Edit: Puoi usare anche il flag -s oppure -u <key> per firmare crittograficamente i tuoi tag.
Per mantenere i cambiamenti apportati nel release branch, dobbiamo mergiarli nel develop. In Git:
$ git checkout develop Switched to branch 'develop' $ git merge --no-ff release-1.2 Merge made by recursive. (Summary of changes)
Questo passaggio può anche portare ad un conflitto di merge (probabilmente anche dal fatto che abbiamo cambiato il numero di versione). Se così fosse, correggilo e committa.
A questo punto abbiamo veramente finito ed il release branch può essere rimosso dal momento che non ne abbiamo più bisogno:
$ git branch -d release-1.2 Deleted branch release-1.2 (was ff452fe).
Hotfix branches
Si dovrebbero formare da: master
Devono essere rimergiati in: develop e master
I nomi che solitamente si usano: hotfix-*
Gli hotfix branch sono molto simili ai release branch in quanto hanno anche lo scopo di preparare una versione nuova produzione, anche se non pianificata. Essi nascono dalla necessità di agire immediatamente, a uno stato indesiderato di una versione di produzione in circolo. Quando un bug critico in una versione di produzione deve essere risolto immediatamente, un hotfix branch può essere branchato fuori dal tag corrispondente sul branch principale che contraddistingue la versione di produzione.
L’essenza è che il lavoro dei membri del gruppo (sul branch develop) può continuare, mentre un’altra persona sta preparando una soluzione rapida per la produzione.
Creare un hotfix branch
Gli Hotfix branch vengono creati dal branch master. Ad esempio, diciamo che la versione 1.2 è la release di produzione attualmente in esecuzione e sta avendo problemi a causa di un errore grave. I cambiamenti sul develop sono ancora instabili. Possiamo creare un hotfix branch ed iniziare a fixare il problema:
$ git checkout -b hotfix-1.2.1 master Switched to a new branch "hotfix-1.2.1" $ ./bump-version.sh 1.2.1 Files modified successfully, version bumped to 1.2.1. $ git commit -a -m "Bumped version number to 1.2.1" [hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1 1 files changed, 1 insertions(+), 1 deletions(-)
Non dimenticate di eliminare il numero di versione dopo aver creato il branch!
Successivamente, correggi il bug e committa la correzione in uno o più commit.
$ git commit -m "Fixed severe production problem" [hotfix-1.2.1 abbe5d6] Fixed severe production problem 5 files changed, 32 insertions(+), 17 deletions(-)
Finire un hotfix branch
Alla fine, i bugfix devono essere rimergiati nel master, ma anche nel develop, in modo da garantire che il bugfix è incluso nella prossima release. Questo è del tutto simile a come finire i release branch.
Prima di tutto, aggiorniamo il master e tagghiamo la release:
$ git checkout master Switched to branch 'master' $ git merge --no-ff hotfix-1.2.1 Merge made by recursive. (Summary of changes)$ git tag -a 1.2.1
Edit: Puoi usare anche il flag -s oppure -u <key> per firmare crittograficamente i tuoi tag.
Successivamente, includiamo il bugfix in develop:
$ git checkout develop Switched to branch 'develop' $ git merge --no-ff hotfix-1.2.1 Merge made by recursive. (Summary of changes)
L’unica eccezione alla regola è che, quando esiste un release branch, i cambiamenti di hotfix devono essere rimergiati in quel release branch piuttosto che nel develop. Il merge dei bugfix nel release branch porterà i bugfix nel develop anche quando il release branch finirà. (Se il lavoro in develop richiede questo bugfix e non si può aspettare che il release branch sia finito, si possono mergiare tranquillamente i bugfix ndel develop.)
Alla fine, rimuoviamo il branch temporaneo:
$ git branch -d hotfix-1.2.1 Deleted branch hotfix-1.2.1 (was abbe5d6).
Conclusioni
Mentre non vi è nulla di nuovo in questo modello di ramificazione, la “grande immagine” che si trova all’inizio di questo post si è rivelata veramente utile nei nostri progetti. Essa costituisce un elegante modello mentale che è semplice da comprendere e permette ai membri del team di sviluppare una comprensione condivisa dei processi di branching e releasing.
Una versione ad alta qualità della figura è fornita qui sotto. Scaricala, stampala ed appendila al muro per una rapida consultazione.
Aggiornamento: e per chiunque lo ha richiesto: qui sotto anche il diagramma principale in formato Apple Keynote.
Sentitevi liberi di commentare!
HOWTO: mantieni in ordine OSX con il comando “periodic”
Posted by diegor in howto, osx, snow leopard on 2010/06/09
OSX ha a disposizione una serie di comandi da Terminale per mantenere in ordine il sistema operativo. Sto parlando del comando “periodic”. Se apri il terminale e digiti “man periodic” puoi leggere il manuale di questo comando. Ci sono tre tipi di insieme di funzioni che si possono eseguire:
- daily: sono degli script che solitamente vengono eseguiti alle prime ore della mattina
- weekly: sono degli script settimanali che solitamente vengono eseguiti il Sabato mattina
- monthly: sono degli script mensili che solitamente vengono eseguiti il primo giorno del mese
Le operazioni da fare per ogni insieme sono definite dentro “/etc/periodic”. Dentro questa directory ci sono 3 cartelle, una per ogni insieme di funzioni.
Le configurazioni invece sono dentro “/etc/defaults/periodic.conf” dove sono definiti i vari parametri di periodic. Se vuoi aggiungere delle tue operazioni, le puoi inserire in queste cartelle, a seconda della frequenza con cui devono essere eseguite.
Tutti i log (ovvero i risultati) di queste operazioni sono contenute dentro “/var/log/” nei file “daily.log”, “weekly.log” e “monthly.log” rispettivamente per ogni insieme di funzioni.
Dunque se vuoi eseguire un set di operazioni ti basterà aprire il Terminale ed eseguire i seguenti comandi:
#> sudo periodic daily #> sudo periodic weekly #> sudo periodic monthly
Se hai domande e/o suggerimenti commenta o scrivimi una mail!













Recent Comments