Codifica con Koding

Gli IDE cloud sono in circolazione da un po 'di tempo, e sono stati abbastanza buoni per cose come la programmazione di coppie o casi in cui si desidera codificare in modo coerente, non importa dove ti trovi. Koding è appena uscito dalla beta privata e vorrebbe portare questa idea un paio di passi avanti, con il loro "ecosistema cloud".

In questo articolo daremo un'occhiata a ciò che Koding è, così come alcuni dei benefici che si possono ottenere dal suo utilizzo.

Koding è piuttosto difficile da spiegare, perché sul mercato non esiste un prodotto simile ad esso. Per illustrare meglio tutte le parti mobili, suddividiamo il servizio e iniziamo con l'ambiente di sviluppo.


L'ambiente di sviluppo

Quando ti iscrivi a Koding, puoi avere il tuo sottodominio (.kd.io) il tuo VPS personale e alcune app web integrate per gestire le tue nuove risorse.

Attraverso l'amministratore, hai la possibilità di creare altri sottodomini sulla parte superiore del tuo attuale URL e creare nuovi VPS attraverso un'interfaccia utente facile da usare.


VM

Ora queste VM non sono le tue micro-istanze medie che offrono molti servizi, sono macchine virtuali complete con accesso a otto processori e un intero GB di RAM, quindi puoi eseguire facilmente qualsiasi app, e se vuoi giocare con cose come le configurazioni dei cluster o le reti, puoi facilmente creare più istanze per soli $ 5 al mese.

Quindi, in termini di potenza di elaborazione, queste istanze possono potenzialmente essere potenti come il tuo computer e sono decisamente migliori del caricamento di una macchina virtuale locale.

Ciò che le persone a Koding stanno cercando di fare è consentire agli sviluppatori di imparare attraverso la sperimentazione e provare solo cose che non vorranno necessariamente provare a livello locale, o semplicemente non hanno le risorse per farlo.

Queste istanze si inizializzano in pochi secondi e se si commettono errori e si rompono alcuni file di sistema, è possibile semplicemente reinizializzare il server e ripristinerà tutto nella cartella principale. Essenzialmente, avrai una nuova istanza, ma tutti i file che hai creato nella cartella home verranno mantenuti.

Un'altra cosa che forniscono, che in realtà è un grosso problema in alcune situazioni, è l'accesso di root a tutti i tuoi server. Koding è un servizio molto trasparente, ottieni una VM e puoi letteralmente fare tutto ciò che vuoi con esso. Tutto ciò che puoi fare con un VPS standard, puoi farlo con le loro VM.

OS e lingue

Per quanto riguarda le istanze stesse, vengono installate con Ubuntu, e praticamente ogni lingua che riesco a pensare, tra cui:

  • PHP
  • PARTIRE
  • Node.js
  • Rubino
  • Perl
  • Haskell

Tra gli altri, quindi sei abbastanza bravo ad andare fuori dalla scatola.

applicazioni

Con Koding hai praticamente due livelli di applicazioni. Hai la VM, che come ho detto, puoi eseguire tutto ciò che vuoi, ma oltre a ciò, hai "Koding Apps" che sono app web che girano su Koding stessa e attraverso di esse puoi gestire tutte le tue risorse Koding.

Alcune delle app predefinite che hai a disposizione sono cose come i pannelli di amministrazione per database o framework e editor per codice e immagini. L'editor di codice predefinito preinstallato è l'editor di codice Ace per lo sviluppo regolare, o Firepad se si desidera lavorare in modo collaborativo tramite l'app di teamwork.


Oltre a tutte queste app davvero fantastiche, hai la possibilità di crearne di tue. Sono scritti usando JavaScript semplice (CoffeScript) e il framework KD (da Koding). Ora perché sono appena usciti dalla beta, non c'è ancora un sito di documentazione dall'inizio alla fine ancora, ma ci sono due app Koding disponibili (kodepad e app maker) che sono state create per darti una sorta di struttura, con esempi. Oltre a questi, consiglierei di cercare Github per ".kdapp" e solo per vedere come sono state costruite altre app per avere un'idea di che tipo di cose sono possibili e come realizzarle.

Complessivamente, ha la sensazione di un "sistema operativo" di cloud in cui si hanno le macchine virtuali come risorse, ma le app Koding consentono di gestire le risorse e configurarle nel modo che preferisci. Ciò significa che se la tua azienda ha una sorta di configurazione di piastre, puoi creare un kdapp che configurerà una nuova VM con i file e il software di cui hai bisogno, e ogni volta che creerai una nuova istanza, la tua app potrà configurarla nel modo che preferisci.

Inoltre, kdapps può essere uno strumento autonomo che modifica solo file come l'editor Ace o gli editor di immagini disponibili. Ciò significa che se si inserisce il tempo, è possibile essenzialmente creare il proprio ambiente di sviluppo, con tutti gli strumenti personalizzati che rendono più efficiente la creazione di app.

Tutto quello che ho menzionato finora copre solo metà di ciò che è Koding, e questa è la parte dell'ambiente di sviluppo. Koding ha anche un aspetto sociale / organizzativo, che complimenta le funzionalità di sviluppo e aumenta il valore delle piattaforme.


Community degli sviluppatori

Per impostazione predefinita, quando ti iscrivi a Koding, si viene aggiunti al "gruppo" di Koding; tutte le funzioni, come le notifiche di attività, gli argomenti, i frammenti di codice, ecc., provengono tutti da questo gruppo predefinito. È bello avere tutti gli aggiornamenti dagli utenti di tutto il mondo, e puoi filtrare per argomento andando alla pagina degli argomenti e selezionando qualcosa a cui sei interessato. Ma dove queste funzionalità mostrano davvero un potenziale è quando crei il tuo gruppo.


Se utilizzi Koding come gruppo, puoi sfruttare tutte queste funzionalità per vedere facilmente cosa hanno fatto i tuoi colleghi, ottenere aggiornamenti e snippet da loro e filtrare tutti i post per progetto utilizzando gli argomenti come tag.

In un gruppo, è possibile creare macchine virtuali condivise a cui più utenti possono accedere o accreditare gli utenti nel gruppo in modo che possano creare le proprie macchine virtuali e lavorare privatamente.

È una di quelle situazioni in cui probabilmente avrebbero potuto appena rilasciato l'ambiente di sviluppo cloud, il social network o la gestione del progetto e si sarebbe adattato a un mercato; ma farli lavorare tutti insieme e gratuitamente è qualcosa su cui riflettere davvero.

Ho detto molte cose positive sugli ambienti cloud, ma ci sono alcuni inconvenienti nel confrontarli con lo sviluppo locale che vale almeno menzionare.


Cloud vs. Local Development

svantaggi

Una delle cose principali è che non stai davvero ottenendo quello che chiamerei un IDE. Ad esempio, se dai un'occhiata all'editor Ace, è un ottimo editor, ma quando lo impili su un IDE completo come PhpStorm, non lo confrontano. Ace è semplicemente un editor di codice, mentre PhpStorm contiene tutti gli strumenti di cui hai bisogno dal test al refactoring, tutto in un'unica app.

L'altro svantaggio è semplicemente la latenza, ora rispetto ad altri IDE web non ho avuto troppo di un problema con questo su Koding, ma ancora, non confronta con una configurazione locale. Quando si esegue un'azione come l'apertura di un documento, a volte potrebbe essere necessario un secondo per aprirlo.

Quindi, per riassumere, lo sviluppo online potrebbe non avere tutti gli strumenti con cui sei abituato a lavorare, e potrebbe non essere così veloce come farlo localmente. Ma quando sviluppi a livello locale, perdi le potenti VM e tutte le funzionalità di gestione del progetto / social.

Fortunatamente non devi fare una scelta. Modificare il codice online è sempre possibile in modo da non dover sacrificare su quel fronte, ma se preferisci la codifica locale con i tuoi strumenti, hai pieno accesso SSH alle tue macchine. Quindi, se vuoi usare FTP, SCP, GIT, o qualsiasi altro tipo di strumento per trasferire le tue modifiche al server, ti vengono date queste opzioni proprio come un VPS standard.


Impostazione di SSH e Rsync

Ora ho già spiegato come installare un repository GIT per la distribuzione sul server, quindi è ridondante ricoprire tale processo, ma diamo un'occhiata all'impostazione dell'account Koding con una chiave SSH e all'utilizzo di rsync per trasferire il progetto da e verso Koding.

Per chi non ha familiarità, rsync è un'utility per trasferire grandi progetti da e verso il tuo computer. Nei casi in cui è diverso da qualcosa come SCP, e la ragione è buona per lavorare con progetti di grandi dimensioni, è che eseguirà la scansione dei file sia localmente che da remoto e trasferirà solo i file che sono stati modificati. Se stai lavorando su qualsiasi tipo di progetto, avrai alcuni file di sistema framework, alcuni codici, immagini, ecc ... e non vorrai davvero inviarli ad ogni richiesta, quindi rsync è una buona scelta per roba del genere.

Non è buono come GIT, non si ottiene alcuna forma di controllo della versione, ma se si utilizza Koding come ambiente di test e si desidera semplicemente inviare i file o eliminarli, rsync è lo strumento per il lavoro.

Il primo passo è piuttosto semplice e richiede l'installazione di SSH; devi solo prendere la tua chiave pubblica (su un Mac puoi eseguire cat .ssh / id_rsa.pub | pbcopy da una finestra del terminale per copiare la chiave) e quindi aggiungerlo alla pagina del tuo account su Koding. La prossima cosa che devi fare è configurare il tuo computer per la connessione. Koding richiede l'uso del proxy come tunnel per il tuo server, quindi su un sistema basato su Unix, puoi semplicemente creare un file chiamato 'config'con il seguente all'interno (è necessario sostituirlo con il nome utente Koding):

 Host * .kd.io Utente  ProxyCommand ssh %[email protected] nc% h% p

Se sei su un sistema Windows, consulta la loro guida per vedere come configurare il proxy usando Putty.

Con quello in atto, puoi eseguire:

 ssh vm-..koding.kd.io

Ad esempio, utilizzando il mio nome utente, sulla prima macchina virtuale predefinita (che è il numero 0) si dovrebbe eseguire quanto segue:

 ssh vm-0.gabrielmanricks.koding.kd.io

Se tutto è andato bene, dovresti connetterti e vedere il messaggio del terminale Koding. Se non desidera connettersi, assicurati di aver aggiunto la chiave pubblica e assicurati che la VM sia attiva in Koding (le macchine virtuali si spengono quando non le usi per circa 20 minuti).

Con questa configurazione, ora possiamo creare un progetto locale. Non abbiamo davvero bisogno di niente di eccezionale qui, quindi per questo esempio creerò un semplice file HTML Hello World all'interno di una directory vuota:

    Koding Demo   

Ciao rsync

Salva questo file all'interno del tuo progetti cartella e quindi eseguire:

 rsync -rvza --delete ./ vm-..koding.kd.io:~/Web/

Ciò copierà l'intero contenuto della cartella locale corrente nella directory remota eliminando tutti i file remoti che non si trovano nella cartella corrente. Se si apportano modifiche in remoto, è possibile trascinarle facilmente invertendo i percorsi in questo modo:

 rsync -rvza vm-..koding.kd.io:~/Web/ ./

Ora questi comandi sono un po 'lunghi e se si prevede di sviluppare in questo modo, si vorrà creare alcune scorciatoie. Un modo semplice è creare solo alias bash, ma potresti avere più server, e per ognuno avresti bisogno di un alias per ogni direzione, quindi creiamo un semplice script bash che possa accettare il numero della VM insieme al nome utente, e direzione desiderata vuoi che i file vadano, ed eseguirà il trasferimento.


Bash Primer

Non coprirò tutta la sintassi di Bash, solo le parti di cui abbiamo bisogno per questo script.

Per prima cosa abbiamo bisogno delle variabili, all'interno di uno script bash definisci le variabili digitando nome = valore. Ad esempio, se volessimo impostare una variabile che contenga un messaggio, dovremmo digitare:

 messaggio = "Ciao"

Non ci dovrebbero essere spazi attorno al segno di uguale per farlo funzionare. Una volta impostato, è possibile recuperare il valore di una variabile digitandone il nome con un segno di dollaro. Quindi, per stampare il valore della variabile precedente, dovremmo digitare:

 echo $ messaggio

Oltre alle variabili che si definiscono e impostano, è possibile utilizzare un paio di variabili globali impostate dal proprio ambiente. Questi possono essere diversi in base alla configurazione, ma quelli che useremo sono $ USER per l'utente attualmente connesso e $ PWD per la cartella corrente. Puoi vedere quali variabili ci sono nel tuo ambiente aggiungendo printenv al tuo codice. Questo stamperà tutte le variabili correnti dell'ambiente.

La prossima cosa di cui avrà bisogno il nostro script, è quella di essere in grado di accettare gli argomenti della riga di comando. Questo è veramente facile da fare, poiché diventano variabili numerate. Così $ 1 rappresenta il primo parametro, $ 2 è il secondo e così via.

L'ultima cosa che dovremo usare nel nostro script è Se dichiarazioni. Questi sono simili a come si scriverà un'istruzione if nella maggior parte dei linguaggi di programmazione, con alcune peculiarità evidenti:

 se [espressione] poi fai qualcosa qui altrimenti fai qualcos'altro qui fi

Negli script di bash hai l'espressione tra una coppia di parentesi quadre e devi lasciare uno spazio tra le parentesi e l'espressione. Dovresti anche notare che il poi la linea è un requisito. L'ultima differenza, che è un po 'diversa, e si trova in altre strutture bash è il fi parola chiave. Fondamentalmente basta digitare il se all'indietro, è lo stesso per un'istruzione switch, ad esempio, si avvia il blocco switch con Astuccio e poi lo finisci con esac (caso invertito).

Quindi con queste informazioni, costruiamo un semplice script per aiutarci a caricare e scaricare il nostro codice su Koding:


Costruire il nostro script

Per iniziare, abbiamo bisogno dell'intero shebang per dire al computer di eseguirlo come script di shell e quindi creerò una semplice funzione di supporto che dirà all'utente come usare questo comando:

 #! / bin / sh function koding_usage echo "Uso: koding [push | pull]  "uscita 1

Se sei nuovo ai codici di uscita, 0 significa che è uscito con successo ed è il valore predefinito restituito al termine di uno script, mentre qualsiasi altra cosa è un codice di uscita per quando si è verificato un errore. Quindi, se questa funzione viene chiamata, significa che lo script non è stato usato correttamente e usciremo con un codice di errore.

Successivamente, dobbiamo assicurarci che gli argomenti siano stati trasmessi correttamente e nel processo, raccolti e archiviati in alcune variabili helper:

 if ["$ 1" = ""]; then echo "Command Required" koding_usage fi if ["$ 1"! = "push"] && ["$ 1"! = "pull"]; quindi echo "Puoi solo spingere o tirare" comando koding_usage else = $ 1 fi se ["$ 2" = ""]; quindi echo "Numero di VM richiesto" koding_usage else vmnumber = $ 2 fi if ["$ 3" = ""]; quindi username = $ USER altro nome utente = $ 3 fi

In questo codice, stiamo effettuando quattro diversi controlli:

  1. controlliamo se c'è un primo parametro
  2. controlliamo per accertarci che il primo parametro sia o 'Spingere' o 'Tirare'
  3. ci assicuriamo che ci sia un secondo parametro
  4. controlliamo se il terzo parametro è stato impostato

Nei primi tre Se dichiarazioni, se c'è stato un problema echeggiamo un messaggio e poi chiamiamo il nostro metodo di supporto dall'alto. Per l'ultimo però, se non è stato fornito alcun nome utente, useremo semplicemente il nome utente dell'utente attualmente connesso. Pertanto, se il nome utente del tuo computer è uguale al tuo nome utente Koding, puoi disattivare l'ultimo parametro.

L'ultima cosa che dobbiamo fare è in realtà eseguire i comandi rsync in base al comando richiesto (push o pull):

 if ["$ command" = "push"]; quindi rsync -rvza --delete $ PWD / vm- $ vmnumber. $ username.koding.kd.io: ~ / Web else rsync -rvza vm- $ vmnumber. $ username.koding.kd.io: ~ / Web / $ PWD fi

Puoi vedere che stiamo semplicemente posizionando le variabili che abbiamo raccolto (insieme alla cartella corrente $ PWD) direttamente nel comando. Poiché si tratta di uno script di shell, puoi semplicemente inserire i comandi della shell direttamente, come ho fatto sopra

Ora salva il file e chiamalo Koding e quindi renderlo eseguibile (puoi farlo eseguendo chmod + x kodinge, ultimo ma non meno importante, sposta questo file sul tuo bidone cartella:

 mv koding / usr / local / bin /

Se hai fatto tutto correttamente, dovresti essere in grado di eseguire Koding e vedere il nostro messaggio di utilizzo venire. Quindi ora puoi apportare una rapida modifica al progetto di esempio sopra e semplicemente eseguire:

 koding push 0

Supponendo che non hai bisogno del nome utente proprietà e la cartella corrente verrà trasferita come directory Web sul server, denominata vm-0. Lo stesso vale se apporti modifiche online, puoi farlo CD nella cartella del progetto locale ed eseguire:

 koding pull 0

E riceverai tutti gli aggiornamenti.


Conclusione

Koding è uno strumento davvero potente per la prototipazione e l'apprendimento attraverso la sperimentazione. Ha delle fantastiche funzionalità di social e project management e la possibilità di codificare con qualcun altro, dal vivo, può fare una grande differenza quando si tenta di eseguire il debug del codice. Per non parlare del fatto che tutto è gratis, significa che non c'è davvero una ragione per cui non vorrai usarlo.

Mi piace molto l'idea di avere app kd che funzionano al di fuori delle VM e penso che sarà bello vedere dove la gente prenderà questo e che tipo di strumenti costruiranno le persone.

Puoi iscriverti a Koding visitando koding.com.

Grazie per la lettura, spero che ti sia piaciuta, se hai qualche domanda sentiti libero di lasciarmi un commento in basso, su twitter o tramite il canale Nets + IRC (#nettuts su freenode).