Представьте на мгновение, что вы оказались на необитаемом острове. Вы разработчик программного обеспечения и используете системы Linux или Apple Mac с тех пор, как стали достаточно взрослыми, чтобы печатать на клавиатуре. Тем не менее, единственное, что вы смогли взять с собой на необитаемый остров, - это машина с Windows, а также чай и печенье, которых хватит на всю жизнь. К счастью, на острове уже есть подключение к Интернету - чем вы занимаетесь?

Загляните в Блог Auth0 🔐 и найдите все, что вам нужно знать об инфраструктуре идентификации, управлении доступом, SSO, аутентификации JWT и последних новостях в области безопасности. 👉 AUTH0 БЛОГ 👈

Хорошо, вы можете просто загрузить Ubuntu и установить его на виртуальную машину, но есть другой способ. Что, как оказалось, также предполагает установку Ubuntu…

Неделя без моего Macbook

Недавно я был в очень похожей ситуации, хотя вместо того, чтобы застрять на необитаемом острове, я был вынужден оставить свой MacBook в Apple Store, пока они исправляли странную проблему с моей сенсорной панелью.

Мне нужно было найти способ продолжать работать, пока моя машина для разработки была в магазине. Мне нравится использовать командную строку Unix и такие инструменты, как ZSH и Oh-my-zsh!. В моей повседневной работе я должен использовать Ruby и Node на регулярной основе, и мне нравится использовать iTerm2 в качестве основного эмулятора терминала. Я также в основном использую настольные инструменты, такие как Visual Studio Code, Docker и Slack.

Один из вариантов - просто установить Docker и настроить контейнерную среду разработки, но это было бы слишком просто.

Могу ли я продолжать использовать свои обычные инструменты разработки и свой рабочий процесс без моего MacBook? Я намеревался узнать!

« Узнайте, как установить подсистему Windows для Linux, превратив свой компьютер с Windows 10 в полноценную электростанцию ​​Linux »

ПОСМОТРЕТЬ

Кросс-платформенные приложения

Конечно, многие из приложений, о которых я только что упомянул, доступны кросс-платформенные, многие из них представляют собой приложения HTML, CSS и JavaScript, обернутые с помощью Electron. Это касается таких приложений, как Visual Studio Code и Slack, которые являются двумя основными инструментами, которые я использую изо дня в день.

Иногда я погружаюсь в использование Intellij для разработки на Scala, и опять же это кроссплатформенный. Похоже, все нужные мне настольные приложения доступны, и это здорово!

В своей основной деятельности по разработке и написанию блогов я в основном использую Git, Ruby и NodeJS. К счастью, для всего этого есть установщики Windows, которые в конечном итоге работают, но все они кажутся немного Windows-y. Например, лучший способ использовать Git в Windows - это использовать Git for Windows, который предоставляет приложение Git Bash, которое перенаправляет вас в терминал, на котором запущен Git. Или вы можете использовать настольное приложение, такое как GitHub Desktop, или встроенный интерфейс Git внутри Visual Studio Code.

Что касается Ruby, мне нравится использовать RVM, который делает установку и управление различными версиями Ruby очень простой и относительно безболезненной. Windows поддерживается с использованием чего-то вроде Cygwin, но опять же, это не совсем собственное решение, и я столкнулся с проблемами, заставляя его работать так, как я привык.

Все это хорошие решения (если вы можете заставить их работать), но, видя, что цель этого упражнения - найти способ работы, как я делал это на своем MacBook, я хотел исследовать дальше.

Предельная скорость

Мне очень нравится использовать терминал из-за скорости и возможности делать вещи кратко и быстро. Для меня очень важно использовать терминал, который поддерживает такие функции, как вкладки, горизонтальное и вертикальное разделение, а также служебные программы команд Unix и такие функции, как конвейерная передача и перенаправление вывода.

К сожалению, именно здесь Windows начинает ломаться. В Windows есть командная строка, которая не поддерживает ни одной из тех приятных функций пользовательского интерфейса, которые мне нравятся, и, поскольку я не знаком со сценарием оболочки Windows, я считаю ее громоздкой. Существует также Powershell, который, как следует из названия, очень мощный, но это что-то новое, что мне нужно изучить. В конечном счете, потребуется время, чтобы я стал таким же продуктивным, как раньше. Что интересно для пользователей Powershell, posh-git дает вам украшения в терминале как статус Git текущей папки, что является одной из функций, которые мне нравятся в Oh-my-zsh.

Мне нравится iTerm2 на Mac за его способность использовать вкладки, разделенные окна, профили и темы, так что есть что-то, что меня сближает?

Hyper - это эмулятор терминала, который поддерживает как минимум функции пользовательского интерфейса, такие как использование вкладок и разделение окон. Он основан на Electron, поэтому является кроссплатформенным и поддерживает более продвинутые функции, такие как темы и плагины. Мне действительно нравится тематизировать свои приложения, чтобы они выглядели более приятными для глаз, но я был готов забыть об этом для этого недолгого упражнения.

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

Войдите в подсистему Windows для Linux

Подсистема Windows для Linux (WSL) - это способ запускать собственные команды и инструменты Linux вместе с вашими существующими приложениями Windows. Он не использует виртуальную машину, и к нему так же легко получить доступ, как открыть окно терминала. Процитируем прямо из документации:

Подсистема Windows для Linux позволяет разработчикам запускать среду GNU / Linux, включая большинство инструментов командной строки, служебных программ и приложений, непосредственно в Windows без изменений, без дополнительных затрат на виртуальную машину.

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

Чтобы установить WSL, вы должны быть в Windows 10 Fall Creator’s Update (сборка 16215). Затем вы можете установить эту функцию, используя средство «Включение или отключение компонентов Windows» и отметив «Подсистема Windows для Linux»:

Его также можно установить, выполнив эту команду Powershell:

# Run this inside Powershell to enable the WSL feature Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Примечание. Может потребоваться перезагрузка компьютера после установки WSL

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

Затем, чтобы войти в терминал Linux, откройте командную строку (или выбранный эмулятор терминала) и введите wsl, чтобы начать работу. Следующее, что вы увидите, - это командная строка Linux.

# My WSL command prompt inside the Command Prompt application /c/Users/steve >

Итак, что можно сделать отсюда? Предположительно все, что обычно можно сделать с терминала Ubuntu. Давайте проверим, какой выпуск Ubuntu я использую:

> lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.2 LTS Release: 18.04 Codename: bionic

Использовать curl?

> curl -i google.com HTTP/1.1 301 Moved Permanently Location: http://www.google.com/ Content-Type: text/html; charset=UTF-8 Date: Tue, 26 Feb 2019 10:42:51 GMT Expires: Thu, 28 Mar 2019 10:42:51 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 219 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN

Установить Vim?

> sudo apt-get install vim Reading package lists... Done Building dependency tree Reading state information... Done The following package was automatically installed and is no longer required: libfreetype6 Use 'sudo apt autoremove' to remove it. 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 3 not upgraded. Need to get 1152 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu bionic/main amd64 vim amd64 2:8.0.1453-1ubuntu1 [1152 kB] Fetched 1152 kB in 0s (2468 kB/s) (Reading database ... 39405 files and directories currently installed.) Preparing to unpack .../vim_2%3a8.0.1453-1ubuntu1_amd64.deb ... Unpacking vim (2:8.0.1453-1ubuntu1) over (2:8.0.1453-1ubuntu1) ... Setting up vim (2:8.0.1453-1ubuntu1) ...

Как видите, apt-get доступен и может использоваться для установки любого программного обеспечения, которое обычно доступно на собственном экземпляре Ubuntu.

Можно ли установить что-то вроде NVM так же, как в родном дистрибутиве Linux?

Для целей этой записи и в интересах экономии времени я уже установил NVM на этом компьютере, но не сам Node. Взгляните и посмотрите, что произойдет!

К счастью, ничего примечательного не происходит! Я установил Node 10 и NPM так же успешно, как если бы это был родной Ubuntu. Я также могу подтвердить, что мне удалось идеально установить RVM, следуя инструкциям по установке, которым я обычно следовал бы в Linux.

Кроме того, я смог без проблем установить ZSH и Oh-my-zsh, снова используя инструкции для Linux. Имея это на месте, я уже почти готов работать так, как привык на своем Macbook!

Разработчики, Разработчики, Разработчики

Теперь, когда у меня установлены инструменты, каков реальный опыт разработки?

Я с радостью могу сообщить, что это довольно ненавязчиво до такой степени, что я почти забываю, что работаю на машине с Windows. Благодаря тому, что диски Windows автоматически подключаются к вашей среде Linux, я по-прежнему получаю доступ к своим файлам и папкам из среды Ubuntu. Это означает, что я могу использовать Git и все другие утилиты командной строки, к которым я привык, но при этом манипулировать этими файлами с помощью любого редактора на хост-машине Windows, который мне нужен. По умолчанию ваши главные диски доступны в папке /mnt. Таким образом, путь Windows D:\Development\auth0 будет доступен в вашей среде Linux как /mnt/d/Development/auth0.

На данный момент невозможно получить доступ к файловой системе Linux с хоста Windows, но это изменится в Windows 10 build 1903. Короче говоря, WSL запускает файловый сервер 9P при загрузке с Windows в качестве клиента, обслуживая файлы Linux по внутреннему сетевому протоколу.

Возможности пользовательского интерфейса Windows

Для меня оболочка операционной системы - это такая же часть процесса разработки, как и программное обеспечение, которое я использую для выполнения своей работы. Например, я активно пользуюсь функцией Spotlight в OSX и регулярно просматриваю свою операционную систему, просто используя текстовый поиск; очень легко нажать Cmd+Space и искать то, что я хочу.

Windows 10 поддерживает ту же функциональность и позволяет мне очень легко перемещаться по операционной системе, открывать программы и управлять окнами просто с помощью клавиатуры. Нажатие Windows Key открывает меню «Пуск» Windows, где я могу просто начать печатать то, что хочу. По общему признанию, это не очевидно, поскольку нет выделенного текстового поля, чтобы указать пользователю, что он может ввести поисковый запрос.

Еще одна функция OSX, которую я часто использую, - это несколько рабочих столов или Spaces. Это часть функции управления полетами, которая может разделять приложения на разные пространства, что позволяет легко перемещаться между ними. Я использую эту функцию, чтобы лучше организовать свою работу. Например, с каждым открытым экземпляром кода Visual Studio Code я обычно открываю соответствующий экземпляр iTerm2 в моем рабочем каталоге для проекта, над которым я работаю. Используя несколько рабочих столов, я могу сгруппировать эти экземпляры вместе, чтобы у меня были разные рабочие столы, настроенные для разных проектов. Я могу переключаться между разными рабочими столами с помощью жеста трекпада или с помощью Ctrl+Left/Right Arrow для перемещения между ними.

К счастью для меня, Windows 10 поддерживает именно эту функцию! Как и в OSX, можно создавать разные рабочие столы, на которых размещаются разные экземпляры запущенных приложений, и я могу переключаться между ними с помощью простых команд с клавиатуры. Нажатие Win Key+Tab дает мне обзор имеющихся у меня рабочих столов и приложений в стиле Управления полетами. Я даже могу указать, что экземпляр приложения доступен на всех моих рабочих столах (удобно, чтобы мой любимый музыкальный проигрыватель был доступен везде, где мне это нужно!).

« С WSL мне нравится то, что у меня есть все инструменты командной строки, к которым я привык, а также возможность использовать несколько рабочих столов, выполнять поиск и использовать все мои любимые настольные приложения . »

ПОСМОТРЕТЬ

Несколько слов о докере

Я хотел коснуться своего опыта использования Docker с этой настройкой. У меня уже установлен Docker Desktop на моем хост-компьютере с Windows, и я был обеспокоен тем, что мне, возможно, пришлось удалить его, чтобы заставить его работать внутри WSL. Либо так, либо мне придется жить с двумя экземплярами Docker на моей машине, занимающими ценное место на жестком диске; один для хоста Windows, а другой внутри WSL.

К счастью, мне не пришлось делать ничего из этого, и следовать этим инструкциям по настройке Docker для работы с WSL (безупречно, как сказано в заголовке статьи) было очень легко и безболезненно. Основной принцип заключается в том, что Docker, работающий на хосте Windows, также может использоваться клиентом Docker, работающим внутри WSL, поскольку оба интерфейса связаны с помощью REST API. Ключевой частью конфигурации является указание клиенту Docker внутри WSL, где находится хост. По умолчанию он подключается к экземпляру Docker, запущенному на том же компьютере, но в этом случае мы можем указать его на экземпляр, запущенный на хосте Windows.

Пройдя настройку самостоятельно, я могу подтвердить, что Docker изнутри WSL работает должным образом!

SSH ключи

Как вы могли догадаться, прочитав этот пост, генерация ключей SSH работает точно так же, как и в любом другом дистрибутиве Linux. Я следил за руководством по ключам SSH на GitHub.com, и он просто работает. Предостережение заключается в том, что ключ SSH будет сгенерирован для вашей установки WSL, и поэтому ключ необходимо будет добавить во все службы, которые вы используете, для которых требуются ключи SSH.

Для меня это нормально, но если у вас уже есть SSH-ключ для вашего профиля Windows, вы можете символически связать свою .ssh папку с установкой WSL, если хотите использовать те же ключи.

Я продал свой Macbook!

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

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

Вы пользователь WSL? Был ли у вас хороший или плохой опыт? Расскажите об этом в комментариях ниже!

О Auth0

Auth0, мировой лидер в области идентификации как услуги (IDaaS), предоставляет тысячам клиентов во всех секторах рынка единственное решение для идентификации, которое им нужно для их веб-приложений, мобильных устройств, Интернета вещей и внутренних приложений. Его расширяемая платформа без проблем аутентифицирует и защищает более 2,5 миллиардов входов в систему в месяц, что делает ее любимой разработчиками и доверием глобальных предприятий. Штаб-квартира компании в США в Белвью, штат Вашингтон, а также дополнительные офисы в Буэнос-Айресе, Лондоне, Токио и Сиднее поддерживают клиентов по всему миру, которые находятся в более чем 70 странах.

Для получения дополнительной информации посетите https://auth0.com или подпишитесь на @ auth0 в Twitter.

Первоначально опубликовано на auth0.com.