У всех нас есть свой способ разработки приложений, одни более эзотерические, чем другие. Я использую комбинацию 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. Это просто, я бы просто сделал следующее:
- cd ‹repo›
- npm install && npm test
- nvm использовать 8.0.0
- rm -rf node_modules
- npm install
- **вносить изменения**
- npm тест
Когда меня устраивают изменения, я фиксирую и создаю запрос на перенос. Если мне нужно затем поработать над проектом, который все еще застрял в области Node 4.0, я просто:
- nvm использовать 4.8.3
- cd ‹новое старое репо›
- npm start
- **Выполнять работу**
Я не могу сказать более высокого мнения о команде!
Частные сети:
Мы используем блокчейн и, в частности, Ethereum для разработки нашего приложения. Помните, когда я сказал, что Tmux позволяет мне создавать терминальные сеансы и управлять ими. Ну, у меня есть один сеанс, называемый частной цепочкой, который группирует все мои разные частные цепочки вместе.
У меня есть папка со всеми локальными цепочками, которыми я управляю. Вы можете увидеть случайный genesis1.json
файл и passwords.txt
. Те, которые я использую с командой geth для запуска и конкретной выбранной мной сетью.
geth --datadir ... --networkid ... --mine --minerthreads ... --rpc --unlock ... --passwords ... --rpcport ... console
Я бы заполнил флаги по желанию для конкретной сети, над которой мне нужно работать. Обратите внимание, что на изображении ниже вкладки внизу позволяют легко переключаться с помощью ключевой команды. Жить легко!
У меня также есть сеанс под названием testrpc, который я использую для более быстрых транзакций.
Я делаю различие между глобальным и локальным, потому что я исправил testrpc, чтобы исправить проблему с командой и проблему с редукцией.
Браузеры:
Обычно у меня одновременно открыто 4 браузера. У меня есть определенный набор вещей, которые я использую в одном браузере, которых нет в других.
- Chrome Canary: основные разработки и исследования
- Chrome: исследования и информация
- Firefox Nightly: социальные сети и другие пользователи, входящие в различные сервисы! Ура, вкладки контейнера!
- Opera: случайные вещи, в основном используемые для просмотра интернет-сайтов.
Мое использование менялось с течением времени. Раньше Safari также использовался для случайного просмотра веб-страниц, но теперь он используется редко. Я использую другие браузеры, такие как OmniWeb, Shiira и Camino.
Текстовый редактор / IDE:
Я забыл, какие текстовые редакторы я использовал до Sublime Text. Это был продукт питания долгое время. За последний год перешла на атом-бету. Вот несколько пакетов, которые мне нравятся:
- Атом-украсить
- Атом-эфир-интерфейс
- Выделено-выбрано
- Язык-эфир
- Линтер-солидность
- "руководитель проекта"
- Стандартно-форматировщик
Есть также множество других языковых пакетов, которые позволяют мне иметь дело с 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-адресу, который подключен к моей активной частной цепочке по выбору. Надеюсь, вы нашли что-то новое и интересное, чтобы ускорить ваше развитие.