У всех нас есть свой способ разработки приложений, одни более эзотерические, чем другие. Я использую комбинацию Tmux, atom-beta и Ngrok для управления процессом разработки.

Мой компьютер:

Я занимаюсь разработкой на Mac с 2004 года, когда получил свой собственный Macbook Pro. Существо было чертовски большим и тяжелым. Установка упаковки по-прежнему была рутинной работой, особенно если ее не было на Macports. Старый добрый Homebrew облегчил жизнь на Mac. Лично у меня есть компьютер трехлетней давности, и он продолжает работать. Я надеюсь, что мое следующее обновление будет иметь 32 ГБ или 64 ГБ ОЗУ и 120 Гц OLED-экран.

Мой терминал:

Дольше всего я использовал программу терминала по умолчанию. Я бы сделал настройки, но я оставил терминал в покое надолго. В какой-то момент я попробовал fish и zsh, которые давали классные команды. В конце концов я перешел в iTerm с Oh-My-Zsh с Tmux.

ITerm предоставляет еще несколько циферблатов и настроек, которые обычный терминал не позволяет. Точно так же Oh-My-Zsh имеет отличное сообщество плагинов для тем и команд. Наконец, я ЛЮБЛЮ Tmux. Это лучший способ организовать все мои сеансы, окна и панели.

Как видите, в одном окне может быть несколько панелей. Обратите внимание на внизу (1: dfarrell @ host: 2: dfarrell @ host), это именованные окна с номерами рядом с ними. Это означает, что переключение между окнами - это ключевая команда, что чертовски мило!

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

Это означает, что мне не нужно перезагружать себя для выполнения какого-либо подмножества задач. Мне не нужно рыться в множестве окон терминала в поисках того, что мне нужно. Самое приятное, что у меня есть плагин (tmux-resurrect), который позволяет мне сохранять сеансы после перезапуска! Это означает, что мне никогда не придется переделывать свои окна или компакт-диск в проекты. Я делаю это один раз, экономлю, и все готово НАВСЕГДА!

Работа с узлом:

Мы используем много JavaScript, для чего требуется Node. Очень приятно иметь возможность легко переключиться на новейшую версию Node. Лучший инструмент - это NVM (Node Version Manager), без сомнения! Если проекту требуется более старая версия, я просто вставляю ее в эту версию, и все готово. Допустим, я хочу обновить свой модуль Node, чтобы использовать встроенную библиотеку обещаний вместо bluebird. Это просто, я бы просто сделал следующее:

  1. cd ‹repo›
  2. npm install && npm test
  3. nvm использовать 8.0.0
  4. rm -rf node_modules
  5. npm install
  6. **вносить изменения**
  7. npm тест

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

  1. nvm использовать 4.8.3
  2. cd ‹новое старое репо›
  3. npm start
  4. **Выполнять работу**

Я не могу сказать более высокого мнения о команде!

Частные сети:

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

У меня есть папка со всеми локальными цепочками, которыми я управляю. Вы можете увидеть случайный genesis1.json файл и passwords.txt. Те, которые я использую с командой geth для запуска и конкретной выбранной мной сетью.

geth 
    --datadir ... 
    --networkid ... 
    --mine 
    --minerthreads ...
    --rpc
    --unlock ...
    --passwords ...
    --rpcport ...
    console

Я бы заполнил флаги по желанию для конкретной сети, над которой мне нужно работать. Обратите внимание, что на изображении ниже вкладки внизу позволяют легко переключаться с помощью ключевой команды. Жить легко!

У меня также есть сеанс под названием testrpc, который я использую для более быстрых транзакций.

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

Браузеры:

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

  1. Chrome Canary: основные разработки и исследования
  2. Chrome: исследования и информация
  3. Firefox Nightly: социальные сети и другие пользователи, входящие в различные сервисы! Ура, вкладки контейнера!
  4. Opera: случайные вещи, в основном используемые для просмотра интернет-сайтов.

Мое использование менялось с течением времени. Раньше Safari также использовался для случайного просмотра веб-страниц, но теперь он используется редко. Я использую другие браузеры, такие как OmniWeb, Shiira и Camino.

Текстовый редактор / IDE:

Я забыл, какие текстовые редакторы я использовал до Sublime Text. Это был продукт питания долгое время. За последний год перешла на атом-бету. Вот несколько пакетов, которые мне нравятся:

  1. Атом-украсить
  2. Атом-эфир-интерфейс
  3. Выделено-выбрано
  4. Язык-эфир
  5. Линтер-солидность
  6. "руководитель проекта"
  7. Стандартно-форматировщик

Есть также множество других языковых пакетов, которые позволяют мне иметь дело с docker, nginx или с любыми другими вещами, которые мне приходилось делать.

Развитие с частными сетями:

Наше приложение требует использования веб-интерфейсов, собственных интерфейсов и API. Если я хочу, чтобы все системы локально общались с одной и той же частной сетью, я использую Ngrok. Ngrok позволяет мне создать туннель из динамического URL-адреса, такого как http://999999999.ngrok.io, который указывает на мои локальные компьютеры localhost: 9000. Я даю всем сервисам URL-адрес http://999999999.ngrok.io, и он будет перенаправлен на мой компьютер. Я настраиваю URL-адрес в своем веб-приложении, собственном приложении и API с помощью переменной среды, и все готово!

Интернет рабочего процесса:

Наш первый выпуск предназначен для Интернета и построен с использованием react, redux, truffle, and webpack 2. Я раздвоил другое репо, добавил трюфель, обновился до webpack 2 и перешел на Material UI. Для разработки мне нужен один терминал для запуска webpack, другой для команд, а третий для запуска частной цепочки.

На левой панели у меня запущен webpack с npm run dev, а справа я могу выполнять другие команды, такие как git commit. Затем у меня также есть еще один сеанс, это либо testrpc, либо private-chains, где я запускаю и останавливаю разные сети для разработки. С Tmux это легко, потому что я просто перейду в правильный сеанс и внесу свои изменения.

Одна приятная особенность этого заключается в том, что я обновил загрузчик трюфелей для работы с Truffle 3. Это означает, что внутри моих проектов я могу импортировать файл solidity и преобразовать его в правильный файл JSON. Мой веб-код будет выглядеть следующим образом:

import MetaCoinArtifact from '../../contracts/Metacoin.sol
import contract from 'truffle-contract'
const MetaCoin = contract(TicketManagerArtifact)
//... more code

И каждый раз, когда я обновляю код Solidity, webpack 2 будет пересобирать MetaCoin.sol и пересобирать мое приложение. Это очень важно, потому что в противном случае мне пришлось бы запускать команду типа truffle compile && truffle migrate development --reset каждый раз, когда я вносил изменения в солидность, что было бы серьезным препятствием для разработки.

Работа с React-Native:

Мы также работаем над собственным приложением, которое позволит пользователям исследовать события и сканировать билеты. Этот репозиторий находится в другом каталоге! Поэтому, если я хочу разработать приложение React И веб-приложение, мне нужно немного пофантазировать. По сути, у меня есть webpack 2, запускающий скрипт для копирования и вставки файлов контракта JSON в его каталог. ୧ ༼ ✿ ͡◕ д ◕͡ ༽ ୨

Одно большое предостережение в отношении react-native - тестирование на телефоне. Используя Ngrok, я могу настроить URL-адрес, который обращается к моему компьютеру. Это упрощает мою разработку, потому что я всегда полностью контролирую систему.

Вывод:

Я использую Tmux для обработки сессий, группируя их и делая их легко доступными. Я использую комбинацию webpack 2 и truffle-solidity-loader, чтобы ускорить создание моего приложения. Наконец, я использую Ngrok для подключения всех приложений к одному URL-адресу, который подключен к моей активной частной цепочке по выбору. Надеюсь, вы нашли что-то новое и интересное, чтобы ускорить ваше развитие.