Codering met Koding

Cloud IDE's bestaan ​​al een tijdje, en ze zijn redelijk goed geweest voor zaken als pair-programmering, of gevallen waarin je consistent wilt coderen, waar je ook bent. Koding kwam net uit de privé-bèta, en ze willen dit idee een paar stappen verder nemen, met hun "cloud-ecosysteem".

In dit artikel zullen we een kijkje nemen naar wat Koding is, evenals enkele van de voordelen die u kunt krijgen door het te gebruiken.

Koding is een beetje moeilijk uit te leggen, omdat er niet echt een vergelijkbaar product op de markt is. Laten we de service dus opsplitsen en beginnen met de ontwikkelomgeving om alle bewegende delen beter te illustreren.


De ontwikkelingsomgeving

Wanneer je je aanmeldt bij Koding, krijg je uit de doos je eigen subdomein (.kd.io) je eigen VPS en een aantal ingebouwde webapps om je nieuwe bronnen te beheren.

Via de beheerder kun je andere subdomeinen maken bovenop je huidige URL en nieuwe VPS's opstarten via een eenvoudig te gebruiken gebruikersinterface.


VM

Nu zijn deze VM's niet uw gemiddelde micro-instanties die veel services bieden, dit zijn volwaardige VM's met toegang tot acht processors en een volledige GB RAM, zodat u vrijwel elke app kunt uitvoeren en als u wilt spelen met dingen zoals clusteropstellingen of netwerken, u kunt eenvoudig meerdere exemplaren laten draaien voor slechts $ 5 per maand.

Dus qua verwerkingskracht zijn deze instanties mogelijk net zo krachtig als uw eigen computer, en ze zijn beslist beter dan het laden van een lokale virtuele machine.

Wat de mensen bij Koding proberen te doen, geeft ontwikkelaars de mogelijkheid om door experimenten te leren en dingen uit te proberen die ze niet noodzakelijkerwijs lokaal willen proberen, of ze hebben gewoon niet de middelen om het te doen.

Deze instanties worden binnen enkele seconden geïnitialiseerd en als u fouten maakt en sommige systeembestanden verbreekt, kunt u eenvoudig de server opnieuw initialiseren en alles in de basismap herstellen. In wezen heeft u een nieuwe instantie maar alle bestanden die u in de basismap hebt gemaakt, blijven behouden.

Een ander ding dat ze bieden, wat in sommige situaties een vrij groot probleem is, is root-toegang tot al je servers. Koding is een zeer transparante service, je krijgt een VM en je kunt er letterlijk mee doen wat je wilt. Alles wat u kunt doen met een standaard VPS, kunt u doen met hun VM's.

OS & Talen

Wat betreft de instanties zelf, ze komen met Ubuntu geïnstalleerd, en vrijwel elke taal die ik kan bedenken, waaronder:

  • PHP
  • GAAN
  • Node.js
  • Robijn
  • Perl
  • Haskell

Onder andere, dus je bent best goed om uit de doos te gaan.

Apps

Met Koding heb je twee soorten applicaties. Je hebt de VM, die, zoals ik al zei, alles kan uitvoeren wat je wilt, maar daarnaast heb je 'Koding Apps', dit zijn web-apps die op Koding zelf worden uitgevoerd en via deze kun je al je Koding-bronnen beheren.

Sommige van de standaard-apps die u beschikbaar hebt, zijn zaken als beheerderspanelen voor databases of frameworks en editors voor code en afbeeldingen. De standaardcode-editor die vooraf is geïnstalleerd, is de Ace-code-editor voor reguliere ontwikkeling, of Firepad als u samen wilt werken via de teamwerk-app.


Naast al deze echt coole apps, heb je de mogelijkheid om je eigen apps te maken. Ze zijn geschreven met behulp van gewoon JavaScript (CoffeScript) en het KD-framework (van Koding). Omdat ze net uit bèta zijn gekomen, is er nog niet echt een start-tot-eind documentatie site, maar er zijn twee Koding-apps beschikbaar (kodepad en app-maker) die zijn gebouwd om je een soort structuur te geven, met voorbeelden. Daarnaast zou ik Github willen laten zoeken naar ".kdapp" en gewoon kijken naar hoe andere apps werden gebouwd om een ​​idee te krijgen van wat voor soort dingen mogelijk zijn en hoe ze te bereiken..

Alles bij elkaar heeft het een soort "operationeel systeem" in de cloud, waarbij je de VM's als hulpmiddelen hebt, maar met de Koding-apps kun je je bronnen beheren en ze precies zo instellen als je wilt. Dit betekent dat als uw bedrijf een soort boilerplate-configuratie heeft, u een kdapp kunt maken die een nieuwe VM zal configureren met de bestanden en software die u nodig hebt, en vervolgens wanneer u een nieuw exemplaar laat draaien, kan uw app het precies zo configureren als u wilt.

Bovendien kunnen kdapps een op zichzelf staande tool zijn die alleen bestanden wijzigt zoals de Ace-editor of afbeeldingseditors die beschikbaar zijn. Dit betekent dat als je de tijd neemt, je in essentie je eigen ontwikkelomgeving kunt bouwen, met alle aangepaste hulpmiddelen die je efficiënter maken in het bouwen van apps.

Alles wat ik tot nu toe heb genoemd, dekt eigenlijk maar de helft van wat Koding is, en dat is het gedeelte ontwikkelingsomgeving. Koding heeft ook een sociale / organisatorische kant, die de ontwikkelmogelijkheden en soort van boosts die de platforms waard zijn complimenteert.


Ontwikkelaarscommunity

Wanneer u zich aanmeldt bij Koding, wordt u standaard aan de Koding "-groep" toegevoegd; alle functies, zoals de activiteitmeldingen, onderwerpen, codefragmenten, enz. komen allemaal uit deze standaardgroep. Het is best gaaf om alle updates van gebruikers over de hele wereld te ontvangen en je kunt filteren op onderwerp door naar de onderwerpenpagina te gaan en iets te selecteren waarin je bent geïnteresseerd. Maar waar deze functies echt potentieel laten zien, is wanneer je je eigen groep maakt.


Als u Koding als een groep gebruikt, kunt u profiteren van al deze functies om eenvoudig te zien wat uw collega's hebben gedaan, updates en fragmenten van hen ontvangen en alle berichten filteren op project met behulp van de onderwerpen als tags.

In een groep kunt u gedeelde VM's maken waartoe meerdere gebruikers toegang hebben, of gebruikers in het groepsgeld crediteren, zodat zij hun eigen VM's kunnen maken en privé kunnen werken.

Het is een van die situaties waarin ze waarschijnlijk net de cloud-ontwikkelomgeving, het sociale netwerk of het projectbeheer hadden kunnen uitbrengen, en het zou een markt zijn geweest; maar dat ze allemaal samen en gratis werken, is iets om echt over na te denken.

Ik heb veel positieve dingen gezegd over cloud-omgevingen, maar er zijn een aantal nadelen bij het vergelijken van deze met lokaal ontwikkelen die de moeite van het vermelden minstens waard zijn.


Cloud versus lokale ontwikkeling

nadelen

Een van de belangrijkste dingen is dat je niet echt krijgt wat ik een IDE zou noemen. Als je bijvoorbeeld de Ace-editor bekijkt, is het een geweldige editor, maar als je het tegen een volwaardige IDE als PhpStorm opstelt, vergelijken ze niet. Ace is slechts een code-editor terwijl PhpStorm alle tools bevat die je nodig zou hebben, van testen tot refactoring, alles in één app.

Het andere nadeel is simpelweg latency, nu vergeleken met andere web-IDE's, heb ik hier niet te veel last van gehad op Koding, maar het is nog steeds niet vergelijkbaar met een lokale setup. Wanneer u een actie uitvoert zoals het openen van een document, kan het soms een seconde duren om deze te openen.

Dus om samen te vatten, heeft online ontwikkelen misschien niet alle tools waarmee je werkt, en het is misschien niet zo snel als lokaal doen. Maar wanneer u lokaal ontwikkelt, verliest u de krachtige VM's en alle projectbeheer / sociale functies.

Gelukkig hoef je geen keuze te maken. Online bewerken van code is altijd mogelijk, dus je hoeft je niet op te offeren, maar als je liever lokaal codeert met je eigen tools, heb je volledige SSH-toegang tot je machines. Dus of u nu FTP, SCP, GIT of een ander soort tool wilt gebruiken om uw wijzigingen naar de server over te zetten, u krijgt die opties net als een standaard VPS.


SSH en Rsync instellen

Nu heb ik al besproken hoe je een bare GIT repo installeert om te deployen naar je server, dus het is overbodig om dat proces opnieuw te dekken, maar laten we een kijkje nemen naar het instellen van je Koding-account met een SSH-sleutel en het gebruik van rsync om je project over te zetten van en naar Koding.

Voor het onbekende is rsync een hulpprogramma voor het overzetten van grote projecten van en naar uw computer. Waar het enigszins verschilt van zoiets als SCP, en de reden dat het goed is in het werken met grote projecten, is dat het de bestanden zowel lokaal als op afstand zal scannen en alleen de bestanden zal overbrengen die zijn gewijzigd. Als je aan een bepaald project werkt, zul je wat framework-systeembestanden, een aantal boilerplate-codes, afbeeldingen, enz. Hebben en je wilt ze niet echt op elk verzoek verzenden, dus rsync is echt een goede keuze voor dingen zoals dit.

Het is niet zo goed als GIT, je krijgt geen enkele vorm van versiebeheer, maar als je Koding als een testomgeving gebruikt en je wilt alleen bestanden naar boven gooien of naar beneden halen, is rsync de tool voor de taak.

De eerste stap is vrij eenvoudig en het is om SSH-instellingen te krijgen; je hoeft alleen je publieke sleutel te pakken (op een Mac die je kunt uitvoeren cat .ssh / id_rsa.pub | pbcopy vanuit een terminalvenster om de sleutel te kopiëren) en voeg deze toe aan uw accountpagina op Koding. Het volgende dat u hoeft te doen, is uw computer configureren om verbinding te maken. Koding vereist dat u hun proxy als een tunnel naar uw server gebruikt, dus op een op Unix gebaseerd systeem kunt u gewoon een bestand met de naam 'config'met de volgende binnenkant (je moet dit vervangen door je Koding-gebruikersnaam):

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

Als u op een Windows-systeem zit, raadpleegt u hun handleiding om te zien hoe u de proxy kunt instellen met Putty.

Met dat op zijn plaats kunt u uitvoeren:

 ssh vm-..koding.kd.io

Dus bijvoorbeeld mijn gebruikersnaam gebruiken, op de eerste standaard VM (dat is nummer 0) zou u het volgende uitvoeren:

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

Als alles goed is gegaan, moet je verbinding maken en het Koding-eindboodschap zien. Als het geen verbinding wil maken, zorg dan dat je de openbare sleutel hebt toegevoegd en zorg dat de VM aan staat in Koding (je VM's worden uitgeschakeld als je ze ongeveer 20 minuten niet hebt gebruikt).

Met die opstelling kunnen we nu een lokaal project maken. We hebben hier niet echt iets speciaals nodig, dus voor dit voorbeeld ga ik gewoon een eenvoudig hello world HTML-bestand maken in een lege map:

    Koding Demo   

Hallo rsync

Bewaar dit bestand in uw projecten map en voer dan uit:

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

Hiermee wordt de volledige inhoud van de huidige lokale map naar de externe map gekopieerd en worden externe bestanden verwijderd die zich niet in de huidige map bevinden. Als u ooit op afstand wijzigingen aanbrengt, kunt u ze eenvoudig naar beneden trekken door de paden om te keren, zoals:

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

Nu zijn deze commando's een beetje lang, en als je van plan bent om op deze manier te ontwikkelen, dan wil je wat snelkoppelingen maken. Een eenvoudige manier is om gewoon bash-aliassen te maken, maar je hebt misschien meerdere servers en voor elk heb je een alias nodig voor elke richting, dus laten we gewoon een eenvoudig bash-script maken dat het VM-nummer kan accepteren, samen met de gebruikersnaam en de gewenste richting waarin u wilt dat de bestanden gaan en de overdracht wordt uitgevoerd.


Bash Primer

Ik ga niet alle Bash-syntax behandelen, alleen de delen die we nodig hebben voor dit script.

Eerst hebben we de variabelen nodig, binnen een bash-script definieer je variabelen door te typen name = value. Als we bijvoorbeeld een variabele willen instellen die een bericht bevat, typen we:

 message = "Hello"

Er mogen geen spaties rondom het gelijkenteken zijn om te kunnen werken. Eenmaal ingesteld, kunt u de waarde van een variabele ophalen door de naam ervan in te voeren met een dollarteken ervoor. Dus om de waarde van de variabele hierboven af ​​te drukken, typen we:

 echo $ bericht

Naast de variabelen die u definieert en instelt, kunt u een aantal globale variabelen gebruiken die worden ingesteld door uw omgeving. Deze kunnen verschillen afhankelijk van je opstelling, maar degene die we zullen gebruiken zijn $ USER voor de momenteel aangemelde gebruiker en $ PWD voor de huidige map. U kunt zien welke variabelen in uw omgeving aanwezig zijn door toe te voegen printenv naar uw code. Hiermee worden alle huidige variabelen van de omgeving afgedrukt.

Het volgende dat ons script nodig heeft, is om opdrachtregelargumenten te kunnen accepteren. Dit is eigenlijk heel gemakkelijk om te doen, omdat ze genummerde variabelen worden. Zo $ 1 vertegenwoordigt de eerste parameter, $ 2 is de tweede en zo verder.

Het laatste dat we in ons script moeten gebruiken, is als statements. Deze lijken op het schrijven van een if-statement in de meeste programmeertalen, met een paar opvallende eigenaardigheden:

 als [expressie] dan hier iets doet anders doe hier iets anders fi

In bash-scripts heb je de uitdrukking tussen een paar vierkante haken en moet je een spatie tussen de haakjes en de uitdrukking achterlaten. Je moet ook opmerken dat de dan lijn is een vereiste. Het laatste verschil, dat een beetje anders is, en in andere bash-structuren te vinden is, is het fi trefwoord. In principe typ je gewoon het if achteruit, het is hetzelfde voor een switch-statement, bijvoorbeeld, je start het switch-blok met geval en dan eindig je het met esac (zaak omgekeerd).

Laten we met deze informatie een eenvoudig script maken om ons te helpen bij het uploaden en downloaden van onze code naar Koding:


Ons script bouwen

Om te beginnen hebben we de hele-shebang nodig om de computer te vertellen het als een shellscript uit te voeren en dan zal ik een eenvoudige hulpfunctie maken die de gebruiker zal vertellen hoe deze opdracht te gebruiken:

 #! / bin / sh-functie koding_usage echo "Gebruik: koding [push | pull]  "exit 1

Als u nieuw bent bij het afsluiten van codes, 0 betekent dat het met succes is afgesloten en is de standaard geretourneerd wanneer een script is voltooid, terwijl alles anders een afsluitcode is voor wanneer een fout is opgetreden. Dus als deze functie wordt aangeroepen, betekent dit dat het script niet correct is gebruikt en we zullen afsluiten met een foutcode.

Vervolgens moeten we ervoor zorgen dat de argumenten correct en in het proces zijn doorgegeven, verzameld en opgeslagen in enkele hulpvariabelen:

 als ["$ 1" = ""]; dan echo "Command Required" koding_usage fi if ["$ 1"! = "push"] && ["$ 1"! = "pull"]; dan echo "Je kunt alleen maar duwen of trekken" koding_usage else command = $ 1 fi if ["$ 2" = ""]; dan echo "VM Number Required" koding_usage else vmnumber = $ 2 fi if ["$ 3" = ""]; dan gebruikersnaam = $ USER else gebruikersnaam = $ 3 fi

In deze code maken we vier verschillende controles:

  1. we controleren of er een eerste parameter is
  2. we controleren om zeker te zijn dat de eerste parameter 'Duwen'of'Trekken'
  3. we zorgen ervoor dat er een tweede parameter is
  4. we controleren of de derde parameter is ingesteld

In de eerste drie als verklaringen, als er een probleem was, echoden we een bericht en belden onze helpermethode van boven. Voor het laatste echter, als er geen gebruikersnaam werd opgegeven, gebruiken we alleen de gebruikersnaam van de momenteel aangemelde gebruiker. Dus als de gebruikersnaam van uw computer hetzelfde is als uw Koding-gebruikersnaam, kunt u de laatste parameter uitschakelen.

Het laatste dat we moeten doen, is de rsync-opdrachten uitvoeren op basis van het gevraagde commando (push of pull):

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

U ziet dat we alleen de variabelen plaatsen die we hebben verzameld (samen met de huidige map $ PWD) rechtstreeks in de opdracht. Omdat dit een shell-script is, kun je shell-opdrachten gewoon recht naar binnen plaatsen, zoals ik hierboven heb gedaan

Sla nu het bestand op en noem het Koding en maak het vervolgens uitvoerbaar (je kunt dit doen door te hardlopen chmod + x koding) en last but not least, verplaats dit bestand naar uw bak map:

 mv koding / usr / local / bin /

Als je alles goed hebt gedaan, zou je moeten kunnen rennen Koding en zie ons gebruiksbericht verschijnen. U kunt nu snel het bovenstaande voorbeeldproject wijzigen en gewoon uitvoeren:

 koding push 0

Ervan uitgaande dat u de gebruikersnaam property en uw huidige map wordt als de webdirectory op uw server overgedragen, genaamd vm-0. Hetzelfde geldt voor als je online wijzigingen aanbrengt, dan kan dat CD in de lokale projectmap en voer:

 koding pull 0

En u ontvangt alle updates.


Conclusie

Koding is een echt krachtig hulpmiddel voor prototyping en leren door middel van experimenten. Het heeft echt toffe sociale en projectmanagementmogelijkheden en het kunnen coderen met iemand anders, live, kan een groot verschil maken als je probeert een code te debuggen. Om niet te vermelden dat dit allemaal gratis is, betekent dat er echt geen reden is dat je dit niet zou willen gebruiken.

Ik vind het idee van het hebben van kd-apps die buiten de VM's draaien erg leuk en ik denk dat het gaaf is om te zien waar mensen dit zullen gebruiken en welke hulpmiddelen mensen zullen bouwen.

U kunt zich aanmelden bij Koding door koding.com te bezoeken.

Bedankt voor het lezen, ik hoop dat je het leuk vond, als je vragen hebt, kun je een reactie achterlaten op Twitter of via het Nettuts + IRC-kanaal (#nettuts on freenode).