Статьи

Кодирование с кодированием

Облачные IDE существуют уже довольно давно, и они очень хорошо подходят для таких вещей, как парное программирование или для случаев, когда вы хотите последовательно кодировать независимо от того, где вы находитесь. Koding только что вышел из приватной бета-версии, и они хотели бы продвинуть это понятие еще на пару шагов, используя свою «облачную экосистему».

В этой статье мы рассмотрим, что такое Koding, а также некоторые преимущества, которые вы можете получить от его использования.

Кодирование сложно объяснить, потому что на рынке нет продукта, похожего на него. Итак, чтобы лучше проиллюстрировать все его движущиеся части, давайте разделим сервис и начнем со среды разработки.


Когда вы регистрируетесь в Koding, из коробки вы получаете свой собственный поддомен (.kd.io), свой собственный VPS и некоторые встроенные веб-приложения для управления новыми ресурсами.

Через администратора у вас есть возможность создавать другие субдомены поверх вашего текущего URL и раскручивать новые VPS с помощью простого в использовании пользовательского интерфейса.

Панель инструментов разработчика

Теперь эти виртуальные машины — это не средние микроэкземпляры, которые предлагают многие сервисы, это полноценные виртуальные машины с доступом к восьми процессорам и полным ГБ оперативной памяти, так что вы можете легко запускать практически любое приложение, а если вы хотите поиграть с Такие вещи, как настройки кластера или сети, вы можете легко раскрутить несколько экземпляров всего за 5 долларов в месяц.

Таким образом, с точки зрения вычислительной мощности эти экземпляры могут быть такими же мощными, как ваш собственный компьютер, и они определенно лучше, чем загрузка локальной виртуальной машины.

То, что пытаются сделать сотрудники Koding, — это дать разработчикам возможность учиться с помощью экспериментов и просто пробовать то, что они не обязательно захотят попробовать локально, или просто не имеют ресурсов для этого.

Эти экземпляры инициализируются в считанные секунды, и если вы допустите ошибки и сломаете некоторые системные файлы, вы можете легко просто повторно инициализировать сервер, и он восстановит все в домашней папке. По сути, у вас будет новый экземпляр, но все файлы, созданные в домашней папке, сохранятся.

Еще одна вещь, которую они предоставляют, а в некоторых ситуациях это довольно большая проблема, — это root-доступ ко всем вашим серверам. Koding — очень прозрачный сервис, вы получаете виртуальную машину и можете буквально делать с ней все, что захотите. Все, что вы можете сделать со стандартным VPS, вы можете сделать с их виртуальными машинами.

Что касается самих экземпляров, то они поставляются с установленной Ubuntu, и почти со всеми языками, о которых я могу думать, включая:

  • PHP
  • ИДТИ
  • Node.js
  • Рубин
  • Perl
  • Haskell

Среди прочего, так что вы довольно хорошо выходите из коробки.

С Koding у вас есть два уровня приложений. У вас есть виртуальная машина, на которой, как я уже говорил, вы можете запускать все, что захотите, но кроме этого у вас есть «приложения Koding», которые представляют собой веб-приложения, работающие на самом Koding, и с их помощью вы можете управлять всеми своими ресурсами Koding.

Некоторые из доступных по умолчанию приложений, например, панели администратора для баз данных или фреймворки и редакторы кода и изображений. Предустановленный редактор кода по умолчанию — это редактор кода Ace для обычной разработки или Firepad, если вы хотите работать совместно через приложение для коллективной работы.

Программы

Помимо всех этих действительно крутых приложений, у вас есть возможность создавать свои собственные. Они написаны с использованием простого JavaScript (CoffeScript) и платформы KD (из Koding). Теперь, поскольку они только что вышли из бета-версии, на самом деле пока нет готового сайта документации, но есть два доступных приложения Koding (kodepad и app maker), которые созданы для того, чтобы дать вам некую структуру, с примерами. Кроме того, я бы посоветовал поискать в Github «.kdapp» и просто посмотреть, как создавались другие приложения, чтобы понять, какие вещи возможны и как их выполнить.

В целом, это похоже на облачную «операционную систему», где у вас есть виртуальные машины в качестве ресурсов, но приложения Koding позволяют вам управлять своими ресурсами и настраивать их так, как вам нравится. Это означает, что если ваша компания имеет своего рода стандартную настройку, вы можете создать kdapp, который настроит новую виртуальную машину с нужными вам файлами и программным обеспечением, а затем, когда вы запускаете новый экземпляр, ваше приложение может настроить его так, как вам нравится. ,

Кроме того, kdapps может быть автономным инструментом, который просто изменяет файлы, такие как редактор Ace или доступные редакторы изображений. Это означает, что если вы потратите время, вы по сути сможете создать свою собственную среду разработки со всеми пользовательскими инструментами, которые помогут вам более эффективно создавать приложения.

Все, что я упомянул до сих пор, действительно охватывает только половину того, что представляет собой Koding, и это часть среды разработки. Koding также имеет социальную / организационную сторону, которая дополняет возможности разработки и повышает ценность платформ.


По умолчанию, когда вы регистрируетесь в Koding, вы добавляетесь в «группу» Koding; все функции, такие как уведомления об активности, темы, фрагменты кода и т. д., все из этой группы по умолчанию. Довольно круто получать все обновления от пользователей со всего мира, и вы можете фильтровать по темам, перейдя на страницу тем и выбрав что-то, что вас интересует. Но где эти функции действительно показывают потенциал, это когда вы создаете свою собственную группу.

Страница Темы Кодинга

Если вы используете Koding в качестве группы, вы можете воспользоваться всеми этими функциями, чтобы легко видеть, что сделали ваши коллеги, получать от них обновления и фрагменты, а также фильтровать все посты по проектам, используя темы в качестве тегов.

В группе вы можете создавать общие виртуальные машины, к которым могут иметь доступ несколько пользователей, или кредитовать пользователей за деньги группы, чтобы они могли создавать свои собственные виртуальные машины и работать в частном порядке.

Это одна из тех ситуаций, когда они, вероятно, могли бы просто выпустить среду облачной разработки, социальную сеть или управление проектом, и это соответствовало бы рынку; но заставить их всех работать вместе и бесплатно — это то, о чем стоит задуматься.

Я говорил много положительного о облачных средах, но есть некоторые недостатки при сравнении их с локальной разработкой, о которых стоит хотя бы упомянуть.


Одна из главных вещей заключается в том, что вы не получаете то, что я бы назвал IDE. Например, если вы посмотрите на редактор Ace, это отличный редактор, но когда вы сравниваете его с полноценной IDE, такой как PhpStorm, они не сравниваются. Ace — это просто редактор кода, в то время как PhpStorm содержит все инструменты, которые вам понадобятся, от тестирования до рефакторинга, все в одном приложении.

Другим недостатком является просто задержка, теперь по сравнению с другими веб-IDE у меня не было особых проблем с этим в Koding, но, тем не менее, она не сравнивается с локальной установкой. Когда вы выполняете действие, такое как открытие документа, иногда может потребоваться секунда, чтобы открыть.

Подводя итоги, можно сказать, что при разработке в сети могут быть не все инструменты, с которыми вы привыкли работать, и не так быстро, как при локальном выполнении. Но когда вы разрабатываете локально, вы теряете мощные виртуальные машины и все функции управления проектом и социальные функции.

К счастью, вам не нужно делать выбор. Редактирование кода онлайн всегда возможно, поэтому вам не нужно жертвовать этим, но если вы предпочитаете локальное кодирование с помощью собственных инструментов, у вас есть полный SSH-доступ к вашим машинам. Поэтому, хотите ли вы использовать FTP, SCP, GIT или любой другой инструмент для переноса ваших изменений на сервер, вы получаете эти опции, как и стандартный VPS.


Теперь я уже рассказал о том, как настроить чистое GIT-репозиторий для развертывания на вашем сервере, поэтому нет необходимости снова охватывать этот процесс, но давайте посмотрим, как настроить учетную запись Koding с помощью ключа SSH и использовать rsync для передачи проекта. в и из Кодинга.

Для незнакомых людей rsync — это утилита для переноса больших проектов на ваш компьютер и с него. Если он чем-то отличается от SCP и хорошо работает с большими проектами, он сканирует файлы как локально, так и удаленно, и передает только измененные файлы. Если вы работаете над каким-либо проектом, у вас будут системные системные файлы, шаблонный код, изображения и т. Д., И вы на самом деле не хотите отправлять их при каждом запросе, поэтому rsync — действительно хороший выбор. за такие вещи, как это.

Это не так хорошо, как GIT, вы не получаете никакой формы контроля версий, но если вы используете Koding в качестве тестовой среды и просто хотите выбросить файлы или потянуть их вниз, rsync — это инструмент для работы.

Первый шаг довольно прост и он должен установить SSH; вам просто нужно захватить ваш открытый ключ (на Mac вы можете запустить cat .ssh/id_rsa.pub | pbcopy из окна терминала, чтобы скопировать ключ), а затем добавить его на страницу своей учетной записи в Koding. Следующее, что вам нужно сделать, это настроить компьютер для подключения. Koding требует, чтобы вы использовали их прокси-сервер в качестве туннеля к вашему серверу, поэтому в системе на основе Unix вы можете просто создать файл с именем « config » со следующим внутри (вам нужно заменить его своим именем пользователя Koding):

1
2
3
Host *.kd.io
    User <username>
    ProxyCommand ssh %[email protected] nc %h %p

Если вы работаете в системе Windows, обратитесь к их руководству, чтобы узнать, как настроить прокси с помощью Putty.

С этим на месте, вы можете запустить:

1
ssh vm-<vm number>.<username>.koding.kd.io

Так, например, используя мое имя пользователя, на первой виртуальной машине по умолчанию (номер 0 ) вы запустите следующее:

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

Если все прошло хорошо, вы должны подключиться и увидеть сообщение терминала Koding. Если он не хочет подключаться, убедитесь, что вы добавили открытый ключ и убедитесь, что виртуальная машина включена в Koding (ваши виртуальные машины отключаются, если вы не использовали их в течение 20 минут).

С этой настройкой мы можем теперь создать локальный проект. Здесь нам не нужно ничего особенного, поэтому для этого примера я просто собираюсь создать простой HTML-файл hello world внутри пустой директории:

1
2
3
4
5
6
7
8
9
<!DOCTYPE HTML>
<html>
    <head>
        <title>Koding Demo</title>
    </head>
    <body>
        <h1>Hello rsync</h1>
    </body>
</html>

Сохраните этот файл в вашей папке projects и затем запустите:

1
rsync -rvza —delete ./ vm-<vm number>.<username>.koding.kd.io:~/Web/

Это скопирует все содержимое текущей локальной папки в удаленный каталог, удалив все удаленные файлы, которых нет в текущей папке. Если вы когда-либо вносите изменения удаленно, вы можете легко их сбросить, поменяв путь так:

1
rsync -rvza vm-<vm number>.<username>.koding.kd.io:~/Web/ ./

Теперь эти команды немного длинны, и если вы планируете развиваться таким образом, вы захотите создать несколько ярлыков. Один простой способ — просто создать псевдонимы bash, но у вас может быть несколько серверов, и для каждого вам потребуется псевдоним для каждого направления, поэтому давайте просто создадим простой сценарий bash, который может принимать номер виртуальной машины вместе с именем пользователя и желаемое направление вы хотите, чтобы файлы, и он будет выполнять передачу.


Я не собираюсь покрывать весь синтаксис Bash, только части, которые нам нужны для этого сценария.

Сначала нам нужны переменные, внутри bash-скрипта вы определяете переменные, набирая name=value . Например, если мы хотим установить переменную, которая содержит сообщение, мы бы набрали:

1
message=»Hello»

Там не должно быть пробелов вокруг знака равенства, чтобы он работал. После установки вы можете получить значение переменной, введя ее имя со знаком доллара перед ним. Таким образом, чтобы напечатать значение вышеупомянутой переменной, мы набрали бы:

1
echo $message

Помимо переменных, которые вы определяете и устанавливаете, вы можете использовать несколько глобальных переменных, которые установлены вашей средой. Они могут отличаться в зависимости от ваших настроек, но мы будем использовать $USER для текущего зарегистрированного пользователя и $PWD для текущей папки. Вы можете увидеть, какие переменные находятся в вашей среде, добавив printenv в ваш код. Это распечатает все текущие переменные среды.

Следующее, что понадобится нашему сценарию, — это возможность принимать аргументы командной строки. Это на самом деле очень легко сделать, так как они становятся пронумерованными переменными. Таким образом, $1 представляет первый параметр, $2 — второй и так далее.

Последнее, что нам нужно будет использовать в нашем скрипте, это операторы if . Они похожи на то, как вы пишете оператор if в большинстве языков программирования, с несколькими заметными изысками:

1
2
3
4
5
6
if [ expression ]
then
    do something here
else
    do something else here
fi

В скриптах bash у вас есть выражение между парой квадратных скобок, и вы должны оставить пробел между скобками и выражением. Следует также отметить, что строка then является обязательным требованием. Последнее отличие, которое немного отличается от других структур bash, — это ключевое слово fi . По сути, вы просто набираете if в обратном направлении, то же самое для оператора switch, например, вы начинаете блок switch с case а затем заканчиваете его esac (case reversed).

Итак, с этой информацией, давайте создадим простой скрипт, который поможет нам загрузить и загрузить наш код в Koding:


Для начала нам нужно, чтобы весь шебанг сказал компьютеру запустить его как скрипт оболочки, а затем я создам простую вспомогательную функцию, которая сообщит пользователю, как использовать эту команду:

1
2
3
4
5
6
7
#!/bin/sh
 
function koding_usage
{
    echo «Usage: koding [push|pull] <vm_number> <username>»
    exit 1
}

Если вы новичок в кодах выхода, 0 означает, что он успешно завершен и является значением по умолчанию, возвращаемым после завершения сценария, тогда как все остальное является кодом выхода для случая, когда произошла ошибка. Поэтому, если эта функция вызывается, это означает, что скрипт не был использован правильно, и мы выйдем с кодом ошибки.

Далее нам нужно убедиться, что аргументы были переданы правильно и в процессе, собрать их и сохранить в некоторых вспомогательных переменных:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if [ «$1» = «» ];
    echo «Command Required»
    koding_usage
fi
 
if [ «$1» != «push» ] && [ «$1» != «pull» ];
    echo «You Can Only push or pull»
    koding_usage
else
    command=$1
fi
 
if [ «$2» = «» ];
    echo «VM Number Required»
    koding_usage
else
    vmnumber=$2
fi
 
if [ «$3» = «» ];
    username=$USER
else
    username=$3
fi

В этом коде мы делаем четыре разных проверки:

  1. мы проверяем, есть ли первый параметр
  2. мы проверяем, чтобы первый параметр был « push » или « pull »
  3. мы уверены, что есть второй параметр
  4. проверяем, был ли установлен третий параметр

В первых трех операторах if , если возникла проблема, мы выводим сообщение, а затем вызываем наш вспомогательный метод сверху. В последнем случае, если имя пользователя не указано, мы просто будем использовать имя пользователя, вошедшего в систему. Поэтому, если имя пользователя вашего компьютера совпадает с именем пользователя Koding, последний параметр можно отключить.

Последнее, что нам нужно сделать, это запустить команды rsync на основе запрошенной команды (push или pull):

1
2
3
4
5
if [ «$command» = «push» ];
    rsync -rvza —delete $PWD/ vm-$vmnumber.$username.koding.kd.io:~/Web
else
    rsync -rvza vm-$vmnumber.$username.koding.kd.io:~/Web/ $PWD
fi

Вы можете видеть, что мы просто помещаем собранные переменные (вместе с текущей папкой $PWD ) прямо в команду. Поскольку это сценарий оболочки, вы можете просто разместить команды оболочки прямо, как я делал выше

Теперь сохраните файл и назовите его koding а затем сделайте его исполняемым (вы можете сделать это, выполнив chmod +x koding ) и, наконец, что не менее chmod +x koding , переместите этот файл в папку bin :

1
mv koding /usr/local/bin/

Если вы все сделали правильно, вы сможете запустить koding и увидеть наше сообщение об использовании. Теперь вы можете быстро изменить приведенный выше пример проекта и просто запустить:

1
koding push 0

Предполагая, что вам не нужно свойство username , и ваша текущая папка будет передана в виде веб-каталога на вашем сервере с именем vm-0 . То же самое касается внесения изменений онлайн, вы можете cd в локальную папку проекта и запустить:

1
koding pull 0

И вы будете получать все обновления.


Кодинг — действительно мощный инструмент для создания прототипов и обучения с помощью экспериментов. Он обладает действительно классными возможностями управления социальными сетями и проектами, и возможность кодировать с кем-то другим в режиме реального времени может иметь огромное значение при попытке отладки некоторого кода. Не говоря уже о том, что все это бесплатно, значит, на самом деле нет причины, по которой вы не захотите использовать это.

Мне очень нравится идея иметь приложения kd, которые работают вне виртуальных машин, и я думаю, что было бы здорово увидеть, где люди возьмут это и какие инструменты люди будут создавать.

Вы можете зарегистрироваться в Koding, посетив koding.com .

Спасибо за чтение, надеюсь, вам понравилось, если у вас есть какие-либо вопросы, не стесняйтесь оставлять мне комментарий внизу, в твиттере или через канал Nettuts + IRC (#nettuts on freenode).