Passa ai contenuti principali

GitHub versionamento "Social"





GitHub è uno strumento di lavoro collaborativo distribuito Open Source che ha introdotto il concetto di "Social Code": il social network dei programmatori.

Definizione
GitHub è servizio web che offre un sistema di versionamento basato su Git: il sistema di versionamento creato da Linus Torvalds dieci anni fa.
Offre tutte le funzioni necessarie a gestire le versioni di documenti di testo che possono contenere, chiaramente, sia testo in linguaggio naturale o artificiale, come è il codice sorgente.

Ad oggi oltre 25 milioni di progetti sono ospitati da GitHub.

Si ha la possibilità di creare, oltre a degli account, delle "organizzazioni" che raccolgono più "committers" e vari "repository" che contengono i nostri progetti o quelli dell'organizzazione.

I repository possono essere liberamente accessibili, quindi pubblici, oppure privati. In quest'ultimo caso sarà necessario sottoscrivere un servizio a pagamento e potremo definire chi ha accesso e in che modo ai nostri progetti.

Se ci fosse l'esigenza di gestire progetti privati Git, come ogni prodotto open source, è facilmente implementabile su un server proprio sul quale si possono impostare anche progetti riservati senza dover sottoscrivere nessun tipo di abbonamento.

Git è il sistema di versionamento preferito da Google, Facebook, Apple, Linux ...

Qui non tratterò l'installazione perché guide passo-passo per i vari sistemi operativi si trovano in rete abbondanti e aggiornate.

Caratteristiche
Il sistema Git è un sistema distribuito: il server centrale conserva le copie delle varie versioni dei file dei vari progetti ma anche ogni membro del progetto fa da "backup" detenendone una copia locale. Questo gli conferisce un grado di sicurezza elevatissimo perché non è solo demandato al server.


Funzionalità
Le funzioni di versionamento sono completate da altre che strizzano l'occhio ai social network.

Cruscotto
Ogni utente di GitHub ha il suo cruscotto con informazioni di sintesi sulla sua attività diretta e su quella fatta all'interno di una "organizzazione":





Una volta creato "repository" sarà possibile creare delle sottodirectory inserendo semplicemente in nome della directory seguita da un "/":




Per creare un nuovo file basterà cliccare sul simbolo "+":




Una volta caricato il file è possibile inserire un messaggio che caratterizzi il "commit":




E' possibile creare una Wiki per la documentazione del nostro progetto:


Su ogni singolo file è possibile:
- Scaricarlo
- Modificarlo
- Cancellarlo
- Guardarne la storia delle varie versioni ("History")

I file sottoposti a Git possono avere tre "stati":
- Modified : un file del progetto che ho scaricato viene da me modificato in locale.
- Staged : il file modificato lo contrassegno perché Git lo committi con il prossimo "commit".
- Committed : inviato al server affinché lo tratti come una nuova versione da distribuire.

Su ogni progetto è possibile
- Osservarlo ("Watch") per avere le notifiche quando viene modificato
- Crearne una "diramazione" ("branch" vedi sotto)
- Crearne una "derivazione" ("fork") che altro non è che una copia associata al nostro account GitHub del progetto derivato.
- Gestire delle "richieste" ("issue") come to-do list, elenco di bug, requisiti ecc.


Branch e Merge
Il concetto e la gestione dei "branch" è da approfondire accuratamente. Con branch si intende una "diramazione" dal progetto principale di uno sviluppo parallelo di una parte o di tutto il progetto. 
Il branch può vivere di vita propria per sempre oppure può essere, ad un certo punto, raccordato con il progetto principale mediante l'operazione di "merge".




Eclipse Plugin
Per gli utilizzatori di Eclipse esiste un comodo plugin che si chiama EGit. Basta cercarlo nel Marketlace:




E dopo aver selezionata l'apposita perspective sarà possibile impostare la connessione al nostro progetto su GitHub da clonare in locale:



E finalmente potremo lavorare con la copia locale del progetto Git avendo a disposizione tutte le funzioni fornite da GitHub:





Licenza Creative Commons
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.

Commenti

Post popolari in questo blog

SQL Pivot e Unpivot

PIVOT e UNPIVOT SQL




(Le tabelle ed il codice è preso da un articolo di HTML.it)

Spesso serve avere delle tabelle o viste costruite dinamicamente: le colonne che si vogliono rappresentate sono definite mediante i valori di una specifica tabella.

Con SQL Server 2005 e con Oracle 11g si hanno a disposizione questi due nuovi operatori: PIVOT e UNPIVOT.

Una tabella utile al nostro scopo potrebbe essere:




Qui il codice per crearla:


CREATE TABLE Vendite( ID INT NOT NULL, Anno INT NOT NULL, Venditore VARCHAR(50) NOT NULL, Ammontare FLOAT NOT NULL ) ALTER TABLE Vendite ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID)); CREATE SEQUENCE dept_seq START WITH 1; CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON Vendite FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END;


Si ipotizzi di avere questi dati racconti in tabella:
IDAnnoVenditoreAmmontare12009Marco143,322009Andrea12932009Carlo90,5

JAXB - Il supporto di Java all'XML

Introduzione Ho fatto una sintesi dell'ottimo articolo di Marco Parente che approfondisce perfettamente JAXB.
JAXB "Java Architecture for XML Binding" è un framework di supporto di XML per Java. Dalla versione 1.6 di Java SE il framework JAXB è incluso e fornisce una serie di API completa per la gestione dei documenti XML.
Le applicazioni più comuni di XML+Java sono SAX (Simple API for XML) e DOM (Document Object Model) e appartengono entrambe al pacchetto JAXP (Java API for XML Processing) che vengono utilizzate per effettuare l'analisi dei documenti XML.
SAX non salva nulla in memoria e il documento viene letto dall'inizio alla fine. Quindi non sono disponibili in queste API operazioni  che richiedono la memorizzazione del documento o parti di esso.
DOM memorizza l'intero documento in memoria e quindi sono messi a disposizione strumenti per analizzare e/o modificare i dati.
JAXB fornisce una astrazione tale che non richiede la conoscenza del contenuto dell'XML.…

Codifica video con Vlc

Vlc è uno strumento Open Source in grado di svolgere molteplici funzioni nell'ambito della codifica/decodifica video. Se lo usate solo come player video ... non siete nel posto giusto.

Qui lo uso per implementare un servizio di decodifica di video stream in uno scenario, credo, presente in molte situazioni reali.

Scenario

- una o più sorgenti video in stream (in questo caso si concretizzeranno in servizi di streaming rstp implementati da un nvr)
- l'esigenza di ottenere il flusso video in una pagina web per meglio integrarlo in una applicazione personalizzata di videosorveglianza con interfaccia web
- poter bilanciare il tutto in funzione della banda a disposizione

Tutto si traduce in una differenza di protocolli per la gestione dello stream video: l'rstp o qualunque altro protocollo di gestione dello stream video non è gestibile direttamente dall'HTTP che è un protocollo sostanzialmente diverso.

Soluzione

Le soluzioni, che riscontrerete usando qualunque interfaccia web per la…