Coder avec Koding

Les IDE en nuage existent depuis quelque temps déjà, et ils ont été très utiles pour des choses comme la programmation en binôme ou les cas où vous souhaitez coder de manière cohérente, où que vous soyez. Koding vient de sortir de la bêta privée, et ils aimeraient aller plus loin dans cette idée, avec leur "écosystème cloud"..

Dans cet article, nous allons examiner ce qu'est Koding, ainsi que certains des avantages que vous pouvez en tirer..

Le Koding est difficile à expliquer, car il n’existe pas de produit similaire au marché. Donc, pour mieux illustrer toutes ses pièces mobiles, divisons le service et commençons par l'environnement de développement..


L'environnement de développement

Lorsque vous vous inscrivez à Koding, vous obtenez immédiatement votre propre sous-domaine (.kd.io), votre propre VPS et certaines applications Web intégrées pour gérer vos nouvelles ressources..

Via l'administrateur, vous avez la possibilité de créer d'autres sous-domaines en plus de votre URL actuelle et de créer de nouveaux VPS grâce à une interface utilisateur facile à utiliser..


Les VM

Maintenant, ces machines virtuelles ne sont pas vos micro-instances moyennes proposées par de nombreux services. Ce sont des machines virtuelles à part entière avec accès à huit processeurs et à 1 Go de RAM pour vous permettre d'exécuter facilement n'importe quelle application, et si vous voulez jouer avec des choses comme les configurations de cluster ou les réseaux, vous pouvez facilement créer plusieurs instances pour seulement 5 € par mois.

Donc, en termes de puissance de traitement, ces instances peuvent potentiellement être aussi puissantes que votre propre ordinateur, et elles sont définitivement meilleures que de charger une machine virtuelle locale..

Chez Koding, les gens essaient de donner aux développeurs la possibilité d’apprendre par l’expérimentation et d’essayer des choses qu’ils ne voudraient pas forcément essayer localement, ou qui n’ont tout simplement pas les ressources pour le faire..

Ces instances s’initialisent en quelques secondes et si vous faites des erreurs et cassez certains fichiers système, vous pouvez facilement réinitialiser le serveur et le tout restituer dans le dossier d’accueil. En gros, vous aurez une nouvelle instance mais tous les fichiers que vous avez créés dans le dossier de départ sont conservés.

Un autre élément fourni, qui est en fait un gros problème dans certaines situations, est l’accès root à tous vos serveurs. Koding est un service très transparent, vous obtenez un ordinateur virtuel et vous pouvez littéralement en faire ce que vous voulez. Tout ce que vous pouvez faire avec un VPS standard, vous pouvez le faire avec leurs VM.

OS et langues

Quant aux instances elles-mêmes, elles sont livrées avec Ubuntu installé et à peu près toutes les langues auxquelles je peux penser, y compris:

  • PHP
  • ALLER
  • Node.js
  • Rubis
  • Perl
  • Haskell

Entre autres, vous êtes donc plutôt doué pour sortir des sentiers battus.

applications

Avec Koding, vous avez en quelque sorte deux couches d'applications. Vous avez la machine virtuelle, qui, comme je l'ai mentionné, vous pouvez exécuter tout ce que vous voulez, mais en plus, vous avez les «applications Koding», des applications Web qui s'exécutent sur Koding lui-même et vous permettent de gérer toutes vos ressources Koding..

Certaines des applications par défaut à votre disposition sont des éléments tels que les panneaux d’administration pour les bases de données ou les frameworks et les éditeurs pour le code et les images. L'éditeur de code par défaut livré pré-installé est l'éditeur de code Ace pour le développement standard ou Firepad si vous souhaitez travailler en collaboration via l'application Teamwork..


En plus de toutes ces applications vraiment cool, vous avez la possibilité de créer les vôtres. Ils sont écrits en utilisant JavaScript simple (CoffeScript) et le framework KD (de Koding). Maintenant qu’ils viennent de sortir de la version bêta, il n’existe pas encore de site de documentation de bout en bout, mais deux applications Koding (kodepad et app maker) sont disponibles et sont conçues pour vous donner une sorte de structure, avec des exemples. En plus de ceux-ci, je vous conseillerais de chercher ".kdapp" dans Github et de regarder comment d'autres applications ont été conçues pour avoir une idée de ce qui est possible et de la manière de le réaliser..

Globalement, cela ressemble en quelque sorte à un «système d'exploitation» dans le cloud où vous avez les VM comme ressources, mais les applications Koding vous permettent de gérer vos ressources et de les configurer exactement comme vous le souhaitez. Cela signifie que si votre société dispose d'une sorte de configuration standard, vous pouvez créer une kdapp qui configurera une nouvelle machine virtuelle avec les fichiers et les logiciels dont vous avez besoin, puis chaque fois que vous créerez une nouvelle instance, votre application pourra la configurer comme vous le souhaitez..

De plus, kdapps peut être un outil autonome qui ne modifie que des fichiers tels que l'éditeur Ace ou les éditeurs d'images disponibles. Cela signifie que si vous y mettez du temps, vous pouvez essentiellement créer votre propre environnement de développement, avec tous les outils personnalisés vous permettant de créer plus efficacement des applications..

Tout ce que j'ai mentionné jusqu'à présent ne couvre en réalité que la moitié de ce que représente Koding, à savoir l'environnement de développement. Koding a également un aspect social / organisationnel, qui complète les fonctionnalités de développement et renforce en quelque sorte la valeur des plateformes..


Communauté de développeurs

Par défaut, lorsque vous vous inscrivez à Koding, vous êtes ajouté au "groupe" de Koding. toutes les fonctionnalités, telles que les notifications d'activité, les rubriques, les extraits de code, etc., proviennent toutes de ce groupe par défaut. Il est plutôt cool d’obtenir toutes les mises à jour des utilisateurs du monde entier, et vous pouvez filtrer par sujet en allant sur la page des sujets et en sélectionnant les éléments qui vous intéressent. Mais ces fonctionnalités montrent vraiment le potentiel lorsque vous créez votre propre groupe..


Si vous utilisez Koding en tant que groupe, vous pouvez tirer parti de toutes ces fonctionnalités pour voir facilement ce que vos collègues ont fait, en obtenir des mises à jour et des extraits, et filtrer tous les articles par projet en utilisant les sujets sous forme de balises..

Dans un groupe, vous pouvez créer des ordinateurs virtuels partagés auxquels plusieurs utilisateurs peuvent accéder, ou créditer les utilisateurs de l'argent du groupe afin qu'ils puissent créer leurs propres ordinateurs virtuels et travailler en privé..

C'est l'une de ces situations où ils auraient probablement pu sortir de l'environnement de développement du cloud, du réseau social ou de la gestion de projet, et cela aurait été adapté à un marché; mais que tous travaillent ensemble et gratuitement, est une chose à laquelle il faut vraiment penser.

Je dis beaucoup de choses positives sur les environnements en nuage, mais il y a certains inconvénients à les comparer au développement local qui méritent au moins d'être mentionnés..


Cloud vs. Développement local

Désavantages

L’un des principaux problèmes est que vous n’obtenez pas ce que j’appellerais un IDE. Par exemple, si vous regardez l'éditeur Ace, c'est un excellent éditeur, mais lorsque vous le comparez à un IDE à part entière comme PhpStorm, ils ne se comparent pas. Ace est simplement un éditeur de code, tandis que PhpStorm contient tous les outils dont vous auriez besoin, du test au refactoring, le tout dans une seule application..

L’autre inconvénient est simplement la latence, comparée à d’autres IDE Web, je n’ai pas eu trop de problèmes avec cela sur Koding, mais cela n’est pas comparable à une configuration locale. Lorsque vous effectuez une opération telle que l’ouverture d’un document, il faut parfois une seconde pour l’ouvrir..

En résumé, le développement en ligne ne dispose peut-être pas de tous les outils avec lesquels vous avez l'habitude de travailler et peut-être pas aussi rapidement que de le faire localement. Mais lorsque vous développez localement, vous perdez les puissantes machines virtuelles et toutes les fonctionnalités sociales de gestion de projet..

Heureusement, vous n'avez pas à faire de choix. La modification de code en ligne est toujours possible, ce qui vous évite de faire des sacrifices. Toutefois, si vous préférez coder localement avec vos propres outils, vous disposez d'un accès SSH complet à vos machines. Ainsi, que vous souhaitiez utiliser FTP, SCP, GIT ou tout autre outil pour transférer vos modifications sur le serveur, ces options vous sont proposées comme un VPS standard..


Configuration de SSH & Rsync

Maintenant, j'ai déjà expliqué comment configurer un référentiel GIT nu à déployer sur votre serveur. Il est donc redondant de couvrir à nouveau ce processus. Voyons maintenant comment configurer votre compte Koding avec une clé SSH et utiliser rsync pour transférer votre projet. à partir de Koding.

Pour les inconnus, rsync est un utilitaire permettant de transférer de gros projets vers et depuis votre ordinateur. La différence entre SCP et quelque chose de comparable, et la capacité de travailler avec de grands projets, réside dans le fait qu’elle analyse les fichiers localement et à distance et ne transfère que les fichiers qui ont été modifiés. Si vous travaillez sur n'importe quel type de projet, vous allez avoir des fichiers système, du code standard, des images, etc., et vous ne voulez pas vraiment les envoyer à chaque demande. Rsync est donc un très bon choix pour. des trucs comme ça.

Ce n'est pas aussi bon que GIT, vous n'obtenez aucune forme de contrôle de version, mais si vous utilisez Koding en tant qu'environnement de test et que vous voulez simplement créer des fichiers, ou les réduire, rsync est l'outil idéal..

La première étape est assez simple et consiste à obtenir la configuration SSH; il vous suffit de saisir votre clé publique (sur un Mac, vous pouvez exécuter cat .ssh / id_rsa.pub | pbcopy depuis une fenêtre de terminal pour copier la clé) puis ajoutez-la à la page de votre compte sur Koding. La prochaine chose à faire est de configurer votre ordinateur pour vous connecter. Koding exige que vous utilisiez leur proxy comme un tunnel vers votre serveur. Ainsi, sur un système Unix, vous pouvez simplement créer un fichier nommé 'config'avec ce qui suit à l'intérieur (vous devez le remplacer par votre nom d'utilisateur Koding):

 Hôte * .kd.io Utilisateur  ProxyCommand ssh %[email protected] nc% h% p

Si vous utilisez un système Windows, reportez-vous à leur guide pour savoir comment configurer le proxy à l'aide de Putty..

Avec cela en place, vous pouvez exécuter:

 ssh vm-..koding.kd.io

Ainsi, par exemple, en utilisant mon nom d’utilisateur, sur la première machine virtuelle par défaut (numéro 0) vous courriez ce qui suit:

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

Si tout va bien, vous devez vous connecter et voir le message du terminal Koding. S'il ne veut pas se connecter, assurez-vous d'avoir ajouté la clé publique et assurez-vous que la machine virtuelle est activée dans Koding (vos machines virtuelles s'éteignent si vous ne les avez pas utilisées depuis environ 20 minutes)..

Avec cette configuration, nous pouvons maintenant créer un projet local. Nous n’avons vraiment besoin de rien d’ici, alors pour cet exemple, je vais simplement créer un fichier HTML simple, hello world, dans un répertoire vide:

    Koding Demo   

Bonjour rsync

Enregistrez ce fichier dans votre projets dossier puis exécutez:

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

Cela copiera l'intégralité du contenu du dossier local actuel dans le répertoire distant en supprimant tous les fichiers distants qui ne se trouvent pas dans le dossier actuel. Si vous apportez des modifications à distance, vous pouvez facilement les réduire en inversant les chemins comme ceci:

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

Maintenant, ces commandes sont un peu longues et si vous envisagez de développer de cette manière, vous souhaiterez créer des raccourcis. Un moyen simple est de créer des alias bash, mais vous pouvez avoir plusieurs serveurs. Pour chacun, vous avez besoin d’un alias pour chaque direction. Nous allons donc créer un simple script bash capable d’accepter le numéro de machine virtuelle ainsi que le nom d’utilisateur et le nom d'utilisateur. vous voulez que les fichiers aillent dans la direction souhaitée, et le transfert sera effectué.


Bash Primer

Je ne vais pas couvrir toute la syntaxe de Bash, juste les parties dont nous avons besoin pour ce script.

Nous avons d’abord besoin des variables. Dans un script bash, vous définissez les variables en tapant nom = valeur. Par exemple, si nous voulions définir une variable contenant un message, nous tapons:

 message = "Bonjour"

Il ne devrait y avoir aucun espace autour du signe égal pour que cela fonctionne. Une fois défini, vous pouvez ensuite récupérer la valeur d'une variable en tapant son nom avec le signe dollar devant elle. Donc, pour imprimer la valeur de la variable ci-dessus, nous tapons:

 echo $ message

Outre les variables que vous définissez et définissez, vous pouvez utiliser quelques variables globales définies par votre environnement. Celles-ci peuvent être différentes selon votre configuration, mais celles que nous utiliserons sont: $ USER pour l'utilisateur actuellement connecté et $ PWD pour le dossier en cours. Vous pouvez voir quelles variables sont dans votre environnement en ajoutant printenv à votre code. Cela affichera toutes les variables actuelles de l'environnement.

La prochaine chose dont notre script aura besoin est de pouvoir accepter les arguments en ligne de commande. C'est en fait très facile à faire, car elles deviennent des variables numérotées. Alors 1 $ représente le premier paramètre, 2 $ est le second et ainsi de suite.

La dernière chose que nous devrons utiliser dans notre script est si déclarations. Celles-ci sont similaires à la façon dont vous écrivez une instruction if dans la plupart des langages de programmation, avec quelques particularités remarquables:

 si [expression], faites quelque chose ici sinon faites autre chose ici fi

Dans les scripts bash, vous avez l'expression entre une paire de crochets, et vous devez laisser un espace entre les crochets et l'expression. Vous devriez également noter que le puis la ligne est une exigence. La dernière différence, qui est un peu différente, et se trouve dans les autres structures de bash est la Fi mot-clé. Fondamentalement, vous tapez simplement le si si à l'envers, c'est la même chose pour une instruction de commutateur par exemple, vous démarrez le bloc de commutateur avec Cas et puis vous terminez avec esac (cas inversé).

Donc, avec cette information, construisons un script simple pour nous aider à télécharger et télécharger notre code vers Koding:


Construire notre script

Pour commencer, nous avons besoin de l'entier shebang pour dire à l'ordinateur de l'exécuter en tant que script shell, puis je vais créer une fonction d'assistance simple qui indiquera à l'utilisateur comment utiliser cette commande:

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

Si vous êtes nouveau pour quitter les codes, 0 signifie qu'il s'est arrêté avec succès et est la valeur par défaut renvoyée à la fin d'un script, tandis que tout le reste est un code de sortie pour le moment où une erreur s'est produite. Donc si cette fonction est appelée, cela signifie que le script n'a pas été utilisé correctement et nous allons sortir avec un code d'erreur.

Ensuite, nous devons nous assurer que les arguments ont été correctement transmis et, au cours du processus, les collecter et les stocker dans des variables auxiliaires:

 if ["$ 1" = ""]; then echo "Commande requise" koding_usage fi if ["$ 1"! = "push"] && ["$ 1"! = "pull"]; then echo "Vous ne pouvez que pousser ou tirer" koding_usage else command = $ 1 fi if ["$ 2" = ""]; then echo "Nombre de VM requis" koding_usage else vmnumber = $ 2 fi si ["$ 3" = ""]; then username = $ USER sinon nom d'utilisateur = $ 3 fi

Dans ce code, nous effectuons quatre vérifications différentes:

  1. on vérifie s'il y a un premier paramètre
  2. nous vérifions que le premier paramètre est bien 'pousser' ou 'tirez'
  3. nous nous assurons qu'il y a un deuxième paramètre
  4. on vérifie si le troisième paramètre a été défini

Dans les trois premiers si Si nous rencontrons un problème, nous répétons un message et appelons notre méthode d'assistance d'en haut. Pour le dernier cependant, si aucun nom d'utilisateur n'a été fourni, nous utiliserons simplement le nom d'utilisateur de l'utilisateur actuellement connecté. Donc, si le nom d'utilisateur de votre ordinateur est identique à votre nom d'utilisateur Koding, vous pouvez laisser le dernier paramètre désactivé..

La dernière chose à faire est d’exécuter les commandes rsync en fonction de la commande demandée (push ou pull):

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

Vous pouvez voir que nous ne faisons que placer les variables que nous avons collectées (avec le dossier actuel). $ PWD) directement dans la commande. Comme il s'agit d'un script shell, vous pouvez simplement placer des commandes shell directement, comme je l'ai fait ci-dessus

Maintenant, enregistrez le fichier et nommez-le koding puis le rendre exécutable (vous pouvez le faire en lançant chmod + x koding) et enfin, déplacez ce fichier vers votre poubelle dossier:

 mv koding / usr / local / bin /

Si vous avez tout fait correctement, vous devriez pouvoir exécuter koding et voir notre message d'utilisation arriver. Alors maintenant, vous pouvez modifier rapidement le projet d'exemple ci-dessus et simplement lancer:

 koding push 0

En supposant que vous n'avez pas besoin du Nom d'utilisateur propriété, et votre dossier actuel sera transféré en tant que répertoire Web sur votre serveur, nommé vm-0. Il en va de même si vous effectuez des modifications en ligne, vous pouvez CD dans le dossier du projet local et exécutez:

 koding tirer 0

Et vous recevrez toutes les mises à jour.


Conclusion

Koding est un outil vraiment puissant pour le prototypage et l'apprentissage par l'expérimentation. Il a des capacités sociales et de gestion de projet vraiment sympas et le fait de pouvoir coder avec quelqu'un d'autre, en direct, peut faire une énorme différence lorsque vous essayez de déboguer du code. Sans parler de tout cela étant gratuit, cela signifie qu'il n'y a vraiment aucune raison pour laquelle vous ne voudriez pas utiliser ceci..

J'aime beaucoup l'idée d'avoir des applications kd qui fonctionnent en dehors des machines virtuelles et je pense que ce sera bien de voir où les gens vont s'en charger et quels types d'outils ils vont construire..

Vous pouvez vous inscrire à Koding en visitant koding.com.

Merci d'avoir lu, j'espère que vous avez apprécié, si vous avez des questions, n'hésitez pas à me laisser un commentaire ci-dessous, sur twitter ou via le canal Nettuts + IRC (#nettuts sur freenode).