⚠️ Обращайте внимание на даты.
Этот блог больше не ведётся с 17 января 2023, и на тот момент с написания этой страницы (19.10.2014) прошло 8 лет.
Помните, я рассказывал про сравнение текстовых редакторов со средами разработки? Закончил я на той ноте, что это примерно одно и то же, отличия только в стартовой комплектации. Наверное, это всё выглядит несколько голословно, поэтому я здесь приведу кое-какие фрагменты того, из чего у меня состоит среда разработки. Только начну я издалека – аж с железа и установленных ОС. Некоторые изъявляли интерес, надеюсь на будущее отсечь такие вопросы, написав об этом здесь, подробно. Я постараюсь называть конкретных моделей и цен поменьше, потому что на момент прочтения часть уже может отсутствовать в продаже, а цены могут быть неактуальны (особенно сейчас, с рванувшим вверх курсом \(доллар/рубль\)).
Железо
Мой личный комп, пока единственный – ноутбук, ближе к бюджетному классу. Довольно своеобразное сочетание фич и неожиданных проблем для пользователя моего калибра. Денег своих вполне стоит, все наличествующие у него недостатки можно либо исправить, либо игнорировать. Его главные особенности – 15 дюймов, низкая цена, синий корпус (:3
), полная клавиатура и две видеокарты.
Две видеокарты (сцепленные через nVidia Optimus) также являются источником внезапных проблем, хотя позволяют запускать довольно требовательные к ресурсам игры (всё-таки GT540M). Примерно в 80% случаев процесс проходит без приключений. В оставшихся 20% может приключиться всякое. Но в целом это всё же преимущество, дающее ноутбуку довольно серьёзное время работы от аккумулятора (из-за низкого энергопотребления). Если игры не включать. Но аккумуляторы всегда елись игрушками очень хорошо. Но я всё-таки не про игры поболтать пришёл, так что двинемся дальше.
Основная вычислительная часть была немножко обновлена по сравнению с изначальной сборкой. Сейчас это 2.1 ГГц-овый Core i3-2310M и 8 Гб оперативной памяти. Данные хранятся на 250 Гб SSD в паре с обычным жёстким диском на 1 Тб, который вставлен вместо DVD-привода. Я не сразу решился расстаться с DVD-приводом, но засёк месяц, и экспериментально выяснил, что я им не пользуюсь. Купил отсек-заменитель со слотом под жёсткий диск, вытащил DVD-привод, нащёлкнул на заменитель панель от ноутбука, вставил диск и воткнул эту комбинацию в компьютер. Две основные операционки, которыми я пользуюсь, работают с SSD, а потому очень быстро и бесшумно (инициализация дёргает диск), и результат не отвлекает во время работы. SSD мне обошёлся дорого, но результат считаю стоящим.
На этом с железками всё. Перейдём к софту.
Windows
Сейчас практически невозможно сохранять широкой сферу применения машины, не имея на борту ОС Windows. Поэтому да, у меня она присутствует: Windows Server 2012 R2. Неожиданный выбор? Ну… После допиливания это Windows 8.1, если не присматриваться. Большую часть серверных фич я отпилил напильником, получив хорошую систему для рабочих станций. Да, она показывает странности на программах недобросовестных разработчиков (Samsung Magician, например), но это скорее некритичное исключение. Почему именно такая? DreamSpark, выдающий серверные ОС студентам просто так. Но сейчас я использую её в основном как игровую систему, разрабатывать на ней мне не слишком нравится. Да, я играю на серверной ОС. Что? Я сумасшедший? Да, согласен.
Иногда спрашивают, как я отношусь к Windows 8. Здесь я обычно спрашиваю, “8 или 8.1”, на что частенько получаю ответ “а какая разница?”; разница всё же есть. Я считаю, что версия 8.1 и возможность бесплатного обновления до неё с 8 спасла ситуацию, потому что она делает много шагов к пользователям. 8 пыталась светить инновациями, в итоге пользователей (в том числе меня) слегка ослепило, и мы все не понимали, как можно пользоваться этой ОС. Меня особенно бесила хитро запрятанная кнопка отключения. Просто 8.х пользоваться нужно несколько иначе. И даже наплевать на приложения для Metro, я ими всё равно не пользуюсь. Держите рабочий стол чистым. Ярлыки к программам можно класть на стартовый экран, они там даже быстрее достаются. Не хотите захламлять его, но умеете быстро печатать? Win+S, первые буквы названия, Enter. Нужна панель управления? Сразу до конечной станции: Win+W, начинаем писать название, Enter. Скорость работы радует. А 8.1, наконец, позволила после загрузки показывать рабочий стол, ввела нормальную кнопку открытия стартового экрана, а также добавила просто великолепное меню, лежащее за Win+X. Там потрясающей полезности вещи: меню выключения (ДАААА), командная строка (в т. ч. администраторская!) и меню удаления программ. Всё в шаговой доступности. Microsoft в основном старается для людей, хотя иногда об этом и забывает.
Из примечательного, у меня установлены Chocolatey (менеджер пакетов), Atom и Sublime Text (текстовые редакторы) и ext2fsd (драйвер для просмотра extX-разделов из Windows).
Linux
В отличие от многих линуксоидов, я не испытываю ненависти к Windows и Microsoft, хотя “слегка недолюбливаю” в отдельные моменты. Всё-таки основное, что Windows выводит в лидеры и одновременно портит – программное обеспечение. Его много, и оно (очень!) разного качества.
Я начал им пользоваться из любопытства в 10 классе, то был 2009 год. Хотел узнать, насколько сложно “продвинутому пользователю” погрузиться в этот мир. После перебора нескольких дистрибутивов (и удивления, насколько всё просто), я остановился на Linux Mint, поскольку он оказался первым, кто хорошо воспринял мою Wi-Fi-плату и был сколько-нибудь похожим на Windows. Тогда у меня был ещё другой компьютер (тоже ноутбук, 17"), и конкретной модели чипа я не помню. Только впоследствии я узнал, что Mint основан на Ubuntu, но мне нравился лёгкий консерватизм основателей дистрибутива в отношении рабочего стола: даже сейчас у них одна из основных редакций Mint снабжена окружением Mate. Примерно месяца два назад я начал осматривать другие окружения, целенаправленно. Хотел выяснить, что можно достать достаточно лёгкого и удобного в использовании. В итоге я остановился на XFCE, и самым развитым вариантом с ним был дистрибутив Xubuntu. С тех пор я пользуюсь им. Назвать себя труъ-линуксоидом я может и не могу, но зачем мне это?
Я иногда люблю подурачиться с внешним видом системы. Когда-то у меня на работе был красивый рабочий стол, отделанный под тёмный Solarized. Сейчас я выкрасил всё, что можно, под цветовую схему Monokai. Есть несколько вещей, которые позволяют красить систему в любой цвет: достаточно найти хорошую тему GTK2 (или покрасить другую на свой вкус), взять значки Any-Color-You-Like (в комплекте утилита, красящая значки с нужными вам эффектами и цветами) и поставить на свой вкус границу окон (Metacity или XFWM, смотря что у вас). Дальше сколько-то ковыряния в настройках, и у вас система с почти уникальным внешним видом! Это требует времени, но если душа просит разнообразия, ей не стоит перечить.
Доделывая себе рабочие окружения, я понял интересную вещь. Ошибки неизбежны. Но хорошая система должна снижать их вероятность. Поэтому в порядке эксперимента я поставил себе границу окон TillSummer, которая характерна почти полным отсутствием у окна границы, чтобы случайно не попадать по кнопкам в заголовке. Кнопок закрытия и разворачивания, соответственно, тоже. Что, лишнее подтверждение тому, что я сумасшедший? Не совсем. Я узнал несколько интересных клавишных комбинаций, резко с этим помогающих: Alt+F5 разворачивает окно по горизонтали, Alt+F6 по вертикали, а с зажатым Alt можно таскать любое окно за любую конечность. Эти сочетания, оказывается, были у меня в системе с самого начала, и я об этом не знал! Поскольку я типично держу по одному экземпляру каждой программы (в большинстве которых есть вкладки), название окна мне тоже без надобности.
Также я позаимствовал хорошую фичу из Windows, появившуюся в версии 7 – “прикрепление” часто используемых программ. Работает очень просто: если часто нужная вам программа открыта, вы видите её окно в панели задач. Если она не открыта, то вместо неё на панели кнопка её запуска: такой же значок, просто другое поведение. Это синтез списка окон и панели “быстрый запуск”, которая в Windows ещё как минимум с версии 98, и довольно часто список окон и эта панель содержали одинаковые элементы. Было разумно их смешать. У меня эта штука оформлена в виде элемента “панели задач” и предоставляется пакетом xfce4-dockbarx-plugin
, доступная в PPA команды WebUpd8. Конечно, это мне довесило ещё и DockX, но я им не пользуюсь. Хотя кому-то (фанатам OS X?) может и понравится.
Основная работа у меня происходит в Linux. Поэтому речь пойдёт о рабочих инструментах именно в нём.
Рабочая область
В чём я, собственно, работаю? Основной инструмент – свежая сборка Sublime Text 3, текстового редактора. Инструмент, который в основе своей довольно прост (на вид), но уже после открытия файлов с настройками начинает казаться, что немалая часть богатства этого редактора на самом деле не видна. Если вы минималист, редактор вам понравится, потому что он позволяет убрать практически все элементы управления, что не особенно нужны. Прямо “из коробки” он поставляется с режимом “не отвлекающий” (distraction-free), включается по Shift+F11, и выглядит примерно вот так:
Помните, что граница и заголовок окна у меня, фактически, отсутствуют, поэтому результат очень близок к тому, что вы видите.
Разумеется, на этот уровень минимализма выходят не сразу. Нужно свыкнуться с тем, как с таким окружением работать. В основном это привычка к сочетаниям клавиш. В Sublime Text практически нет кнопок, в которые можно тыкать мышью, как во многих IDE. Хотя автор Laracasts (видеокурсов по Laravel) собрал аналогичную картину из среды PhpStorm.
Предполагается, что вы неплохо знаете английский язык. Поскольку основной способ исполнения команд в редакторе – нажать Ctrl+Shift+P, откроется “палитра команд”, в которой можно набрать кусочек необходимой команды (можно пропускать буквы и пробелы), и нужная команда, скорее всего, будет первой в результатах. Команды, разумеется, на английском, и в самом редакторе лишь малая часть тех команд, которыми вы в итоге будете пользоваться.
Но давайте разберём окно редактора по частям. Я сейчас выведу всё, что только можно в редакторе вывести. И на вид результат вполне похож на IDE, для демонстрации некоторых дополнительных штук пришлось открыть стили сайта (секрета в них нет, у сайта открытый код):
Давайте разбирать по порядку.
- Наверху строка меню. Классический элемент, используется главным образом для смены цветовых схем подсветки – даже это необязательно, если разобраться, где и в каком порядке они хранятся. Я выставил выключатель для неё на горячую клавишу, и включаю редко.
- В самом низу строка состояния. У меня в ней отображается, слева направо: состояние по сравнению с последним Git-коммитом, координаты внутри файла (строка, символ), режим для отступов (пробелами, по два) и включенный синтаксис. Обычно я знаю всё, что там написано (а отличия отображаются около кода, сейчас объясню), поэтому выключаю.
- Слева “боковая панель”, в которой отображается некая открытая папка. Это может быть просто папка, а может быть целый проект из нескольких. А верхняя секция показывает, какие файлы открыты сейчас. Жёлтый кружок означает, что файл изменён. Если я закрою редактор, ничего не потеряется, но и не сохранится – редактор сохранит текущее состояние где-то у себя, и при следующем включении редактора всё будет так же, как было. Полезная вещь. Висит на горячей клавише, но теоретически легко заменяется Ctrl+P: нечётким поиском по файлам открытой папки/проекта. Если вы знаете названия файлов в вашем проекте, вы не заблудитесь и без этой панели.
- Чуть выше строки состояния – консоль команд. Sublime Text написан на Python, и консоль его понимает. Можно её применять, как калькулятор, например. Но большую часть времени вы её использовать не будете.
- Справа всё понятно – полоса прокрутки и “миникарта”, представляющая из себя вид кода “с большой высоты”, что в сочетании с подсветкой синтаксиса даёт занятные картинки и помогает точно понимать, где нужный вам участок кода.
- Теперь центр. Собственно, код. Сориентируемся относительно него. Наверху вкладки, в описании не нуждаются (и не требуются – навигация сочетаниями клавиш, а знать открытые файлы смысла не так много: если надо, они в боковой панели). Слева номера строк в файле, а слева от них нечто интересное: внесённые в файл изменения относительно последнего состояния, известного версионке Git, отвечает за это плагин
GitGutter
. Кажется, это нужно показать более крупным планом: плюсиками отмечены добавленные строчки, красными стрелками обозначены удалённые секции (т. е. “там что-то было”), жёлтыми точками отмечены изменённые строчки:
Вот и получается, что единственное, без чего реально сложно обойтись – только окно с кодом и статус в версионке около номеров строк. И миникарта крайне полезна. А остальное можно поотключать из палитры команд в любой момент.
Что касается установленных у меня пакетов, пройдусь списком:
- Package Control – обязателен в арсенале у каждого; удивительно, что он всё ещё не стал частью редактора. Добавляет в палитру команд быстрый поиск и установку плагинов (пакетов) из каталога. Ставить всё нижеперечисленное желательно с его помощью. Сам устанавлвиается несложно: скопипастить одну из команд отсюда (проверяйте версию редактора!) и вставить в консоль (открывается по Ctrl+~)
- Color Highlighter – не всегда получается заставить работать, но обычно он подсвечивает цвет под курсором (формата вроде
#007fff
) соответствующим цветом в фоне. - Dayle Rees Color Schemes – гигантская коллекция цветовых схем, преимущественно “светлое на тёмном”. Интересно то, что Sublime Text позволяет для разных синтаксисов включать разные цветовые схемы. Если на экране несколько файлов сразу, это выглядит особенно забавно.
- Emmet – килограмм удобств для редактирования веб-материалов. Это огромная система, изучать проще на сайте, он огромен.
- FTPSync – пользуюсь нечасто. Позволяет редактировать код, находящийся на сервере, к которому есть доступ по FTP. Вы сохраняете файл, он загружается на сервер. Очень удобно. Важно только исключить файл настроек из версионки, чтобы учётные данные FTP не утекли в общий доступ. Есть похожий плагин для “безопасного FTP” (SFTP), но он стоит денег, а необходим далеко не всегда. Всё-таки FTP – слишком примитивный способ для разворачивания.
- FullScreenStatus – он просто есть. Он служебный для MarkdownEditing.
- Git – позволяет дёргать команды Git, не покидая редактора.
- GitGutter-Edge – это как GitGutter, только более свежая версия, не оттестированная. Я не боюсь сложностей и багов, поэтому пользуюсь.
- Haxe – для одноимённого языка. Синтаксис, автодополнение (через компилятор), система сборки и некоторые другие удобства.
- MarkdownEditing – просто крупный набор удобств для редактирования документов в разметке Markdown. Я в такой разметке пишу посты для блога. WYSIWYM – вижу то, что подразумеваю.
- PlainTasks – список дел с возможностью помечать сделанные, засекать время на выполнение и распределять задачи по проектам. По сути – просто умная подсветка синтаксиса и несколько макросов для текста. Позволяет организовывать собственную деятельность.
- PyV8 – ещё один служебный плагин, мост из Python к JavaScript-движку V8. Не помню, для чего он у меня
._.
- Sass – подсветка и подсказки для языка стилей Sass. У меня стили сайта на нём написаны. По ощущению гораздо удобнее, чем CSS. Именно он позволил мне отказаться от толстых CSS-фреймворков, во много раз уменьшив размер получающегося CSS.
- Shader Syntax – название всё объясняет. Синтаксис шейдерных языков.
- SideBarEnhancements – позволяет делать с файлами мышью из боковой панели немножко больше, чем доступно “из коробки”.
- SublimeLinter – фреймворк для более полезных плагинов-линтеров. С помощью сторонних инструментов проверяет вводимый код и подсвечивает ошибки прямо в коде ещё до того, как вы их обнаружите сами. К сожалению, большая часть “линтеров” требует хитрой настройки, поэтому убедитесь, что вы можете убить на это сколько-то времени. Линтеры – одна из фич, больше характерных для IDE, поэтому их установка вполне может быть сложной.
- SublimeLinter-annotations – подсвечивает “замечания” в комментариях вроде TODO и FIXME. Просто подсвечивает. Всё, больше ничего. Своеобразный маячок для кода, означающий “сделайте со мной что-нибудь”. Можно, разумеется, добвлять собственные виды маячков, открывая
- SublimeLinter-php – установил, когда щупал Laravel. Настройки требует минимум, проверяет разве что синтаксис, но для моих кусочных знаний PHP даже это очень полезно. Использует для проверки сам PHP, поэтому он должен быть на вашей машине.
- SublimeLinter-lua – аналогичный PHP-шному линтер для Lua, использует для проверки сам интерпретатор Lua с некоторыми флагами. Тоже проверяет только синтаксис. Тут я даже дам скриншотик с примитивным примером:
- SublimeLinter-contrib-clang – линтер для С++ на компиляторе
clang
. К сожалению, заставить его работать – задача не из лёгких, но и эффект очень суров.clang
– компилятор на “грани будущего”, уже полностью поддерживающий C++1y и оформленную часть C++1z. - Theme - amCoder – тема для интерфейса (и для кода) на основе Spacegray в цветовой палитре Monokai.
- Theme - Spacegray – аккуратная плоская минималистичная тема для интерфейса, в комплекте есть несколько тем для подсветки. Её используют темы интерфейса от Dayle Rees, а также тема amCoder.
Теперь о настройках. Так вышло, что конфигурация претерпевала ряд изменений прямо во время написания этого поста, а теперь я Sublime Text не пользуюсь, поскольку перешёл на Atom. Поэтому, например, выше не указан пакет с темой, которая написана в конфигурации (Seti
). Про Atom можно рассказать столько всего, что на отдельный пост хватит!