Atom — Свободный редактор исходного кода
Свободный редактор исходного кода с подсветкой синтаксиса C / C++, C#, CSS, Go, Git, HTML, JavaScript, Java, JSON, PHP, Perl, Python, Ruby и многих других.
15 апреля 2023 г. 19:22 Английский MIT
Свободный редактор исходного кода с подсветкой синтаксиса для Microsoft Windows, MacOS и Linux с поддержкой плагинов, написанных в Node.js. Может функционировать как средство просмотра файлов, что позволяет выполнять множество задач в одном интерфейсе. Поддержка плагинов позволяет в несколько кликов установить подсветку синтаксиса требуемого языка.
Atom является настольным приложением, созданным с применением веб-технологий. Большинство распространяемых пакетов имеют лицензии как свободное программное обеспечение, создаются и поддерживаются сообществом. Atom основан на Electron (ранее известном как Atom Shell).

Приложение является современным текстовым редактором с отлично структурированным расположением панелей навигации и вкладками для открытых файлов. Можно открыть и отредактировать всевозможные файлы, а не только содержащие текст. Также можно открыть изображение или отредактировать исходный код, благодаря тому, что программа поддерживает подсветку синтаксиса для множество языков программирования. Количество поддерживаемых языков для подсветки синтаксиса может расширяться благодаря плагинам.
Хотя некоторые файлы не могут быть воспроизведены или просмотрены, Atom все равно попытается открыть текстовое содержимое, предложив некоторую информацию о файле.
Поддерживаются следующие языки программирования:
C / C++, C#, Clojure, COBOL, CSS, CoffeeScript, GitHub Flavored Markdown, Go, Git, HTML, JavaScript, Java, JSON, Julia, Less, Make, Mustache, Objective-C, PHP, Perl, Python, Ruby on Rails, Ruby, Sass, Shell, Scala, SQL, TOML, XML, YAML.
Количество поддерживаемых языков для подсветки синтаксиса может расширяться благодаря плагинам. Достаточно перейти в настройки (Settings), далее в раздел Install, далее в строку поиска нужно ввести название интересующего языка программирование, при нажатии кнопки Install будет начата загрузка и установка выбранного плагина.
Характеристики
Ссылки на официальный сайт и загрузку
- Веб-сайт:github.com/atom/atom
- Каталог загрузки
- Прямая ссылка
- Прямая ссылка x64
- Резервная копия
Настройка Atom от GitHub для работы с PHP, Python и некоторыми другими языками программирования
Изначально считаем что у Вас установлена поддерживаемая операционная система, Node.JS и Atom. В примерах мы работаем в OpenSUSE (13.1) в нём (и вообще в дистрибутивах *nix) уже «из коробки» обычно есть не только Python но PHP и другие языки программирования. Так же исправно работает на Ubuntu (>12.04). Если у Вас Windows 7 или 8, а раньше Вы с ними (языками) не работали то их предварительно необходимо скачать и установить.
Примечание: перед началом работы желательно запускать Atom под root.
опыт показывает — работает стабильнее
Linter
Идеология Atom к подсветке в том, что основным пакетом для работы с синтаксисом и его анализа будет Linter, который является верхним уровнем в API для других линтеров кода. Это сделано для прекращения «войны между плагинами» (The idea is to stop the linter plugins war, by providing a top level API for linters to parse and display errors in the Atom editor). Тем не менее, не все сторонние разработчики придерживаются этой идеологии и пишут свои плагины.
На текущий момент доступно для 21 языка :
- linter-php , для PHP `php -l`
- linter-phpcs , для PHP, `phpc`
- linter-phpmd , для PHP, `phpmd`
- linter-pylint , для Python, `pylint`
- linter-pyflakes , для python, `pyflakes`
- linter-pep8, для python, `pep8`
- linter-flake8, для python, `flake8`
- linter-javac , для Java, `javac`
- linter-jshint , для JavaScript and JSON, `jshint`
- linter-jscs , для JavaScript, `jscs`
- linter-scss-lint , для SASS/SCSS, `scss-lint`
- linter-coffeelint , для CoffeeScript, `coffeelint`
- linter-csslint , для CSS, `csslint`
- linter-rubocop , для Ruby and Ruby on Rails, `rubocop`
- linter-tslint , для Typescript, `tslint`
- linter-xmllint , для XML, `xmllint`
- linter-shellcheck , для Bash, `shellcheck`
- linter-scalac , для Scala, `scalac`
- linter-clang , для C / C++, `clang`
- linter-ruby , для ruby, `ruby -wc`
- linter-lua , для Lua, `luac -p`
Пакет Script: запуск программ из Atom
Script — пакет для запуска кода в atom.
Установка пакета Script, возможна из командной строки:
apm install script
или меню
Packages->Settings View->Install->Packages
В результате должны поддерживаться следующие языки (26):
AppleScript
Bash
Behat Feature
Coffeescript
CoffeeScript (Literate) ^
Cucumber (Gherkin) *
Elixir
Erlang †
F# *
Go *
Groovy
Haskell
Javascript
Julia
LilyPond
LiveScript
Lua
MoonScript
newLISP
Perl
PHP
Python
RSpec
Ruby
Scala
Swift
Каждый язык работает, при наличии предварительно установленного компилятора / интерпритатора.
Пакет Script обновляется довольно часто. Например поддержка Swift появилась менее двух недель назад. Так что скорее всего в ближайшее время появится поддержка новых языков.
Для запуска программы необходимо выбрать
Packages—>Script—>Run

Дополнительные опции можно найти в документации либо на страницах Atom`а или проекта.
Для функционирования должен быть создан рабочий каталог.
Путь к нему нужно прописать здесь:
Packages—>Script—>Configure Script—>Current Working Directory
Заявку разработчикам на поддержку нового языка можно оставить здесь (отвечают быстро)

И немного юмора от разработчиков пакета Script,
у которых, судя по всему, спрашивают всё на свете:
первод: Атом не может найти Нод | Руби | Питон | Мои носки
Python
Поддержка подсветки этого языка идёт изначально. Пакеты для работы с синтаксисом и отладки:
Linter + Language Python + Linter Python Pep8 + Script

Script запускает код на Python, а Linter и Linter Python Pep8 покажут синтаксические ошибки.
Возможно Вам, для работы с Python также поможет Atom Python Debugger.
Подсветка ошибок и запуск после установки будут выглядеть так:
PHP
- Language php
- Linter php
- Php Twig
Atom показывает ошибки синтаксиса и запускает php скрипт:

Swift
- пакет Swift Playground
- и уже описанный пакет Script.
Подcветка синтаксиса swift работает на любом дистрибутиве после установки пакета Language Swift:
Терминал
Для запуска исполняемого кода С, C++, Java иногда проще использовать сторонний пакет (не пакет Atom, а пакет вашего дистрибутива), который запускается через терминал, поскольку сам Atom поддерживает большое количество языков. Если Atom выступает в качестве редактора кода, a терминал рядом запускает его — это очень удобно для нас, поскольку терминал не имеет такое преимущество редактирования, как Atom.
Для запуска терминала в окне Atom установите пакет Term. Для запуска терминала в окне Atom выбрать
Packages—>Command Palette—>Toggle и Term
с нужными параметрами.

В заключении ещё один интересный кликабельный анимационный gif от разработчиков script, ссылки.
Ссылки
- Atom.io
- Linter
- Term
- Script
- Плагины для работы с Python
- Плагины для работы с php
- Пакеты для различных языков адаптированые для Atom
- Этот пост — продолжение предыдущего, про установку Atom на базовые ОС.
Atom. Еще один редактор для программистов
Долгое время для программирования в качестве основного редактора и среды разработки я использовал Vim, точнее, gVim. Не скажу, что мне в нем нравилось все, но по сравнению с другими перепробованными мной инструментами Vim, обвешенный плагинами, в работе очень удобен. Главный недостаток Vim — это его принципиальная однопоточность (кстати, исправления этого недостатка ждут от проекта NeoVim, участники которого занялись переписыванием исходного кода Vim). Из-за этого, если включить для языка Python анализ исходных кодов (в том числе установленные библиотеки), то при попытке написать, например, «wx.» плагин уходит в долгий анализ библиотеки wxPython, а пользователь вынужден ждать завершения этого процесса, который может занимать секунд 30. Это все из-за того, что Vim не может проанализировать исходники в фоновом режиме. Этого недостатка нет в Emacs, но я к нему так и не привык, а еще в Emacs мне не понравилось, как устанавливаются плагины, особенно когда столкнулся с проблемой несовместимостей разных версий.
Некоторое время назад я пробовал SublimeText, этот редактор мне показался интересным, но все-таки через две недели его использования я опять вернулся к Vim, даже не помню по какой причине. Правда, после этого в Vim я себе установил тему для раскраски исходников как в SublimeText, а теперь аналогичную тему поставил и для Atom.
И вот месяц назад я себе установил Atom. И знаете, он у меня стал использоваться на равных с Vim, т.е. для больших проектов я стал использовать Atom, а для исправления отдельных файлов — по-прежнему Vim.

В этом посте я расскажу про свой опыт использования редактора Atom и буду сравнивать его с Vim. Может быть правильнее надо было бы его сравнивать с SublimeText, на который он очень похож, и к которому он ближе по сути, но SublimeText я использовал слишком давно.
Начнем с того, что Atom — это текстовый редактор с открытым кодом, созданный компанией GitHub, и развиваемый, в том числе, сообществом open source. Atom — это редактор для программистов, поддерживающий множество языков программирования, включая C/C+, Python, Go, Haskell и, разумеется, JavaScript, который играет в этом редакторе ключевую роль из-за того, что плагины для Atom (плагины к Atom называются пакетами — Packages) пишутся именно на JavaScript (точнее, на JavaScript с использованием платформы Node.js).
Сам редактор сделан на движке Chromium, из-за чего редактор нельзя назвать легковесным и очень быстрым. Правда, особых тормозов при работе с ним я не замечал, хотя запускается он заметно медленнее Vim, но все-равно намного быстрее, чем, например, Eclipse. Размер дистрибутива под Ubuntu Linux составляет 68 МБ (сравнительно недавно вышел Atom 1.3.2, и именно про эту версию я буду говорить в этом посте).
Что делает программист, когда ему в руки попадает новый редактор? Правильно, лезет в настройки и пытается настроить редактор под свои вкусы (наиболее продвинутые программеры сразу начинают писать плагины, а совсем просветленные — делать свой форк).

Большое количество настроек — это хорошо, но обычно для программерского редактора хочется чего-то большего, а именно плагинов. Вот уж чего-чего, а на недостаток плагинов к Atom жаловаться не приходится. Всего за 2 года с момента появления редактора (первая версия вышла в феврале 2014 года) было вовлечено огромное количество людей, которые написали все эти пакеты. Atom весь состоит из пакетов, даже в только что установленном дистрибутиве их будет более 70. Это удобно не только тем, что «из коробки» вы получаете поддержку большого количества языков программирования и различных удобных примочек, но также тем, что неиспользуемые пакеты можно отключить, тем самым ускорив запуск редактора (про скорость мы поговорим чуть позже).
Для примера перечислю некоторые пакеты, которые входят в дистрибутив:
- Поддержка языков C, Clojure, Coffee-Script, C#, CSS, GFM (GitHub Flavored Markdown), Go, HTML, Java, JavaScript, JSON, Make, Objective-C, Perl, PHP, Python, Ruby (включая Ruby-on-Rails), ShellScript, SQL, XML.
- Автодополнение для языков HTML и CSS.
- Пакет для создания сниппетов (часто используемых шаблонов кода).
- Пакет для автосохранения.
- Пакет для установки закладок на определенные строки кода.
- Подсветка парных скобок.
- Поиск и замена тоже реализована в виде пакета.
- Нечеткий поиск файлов, когда вы помните, какие символы были в имени файла, но точного имени не помните.
- Пометки новых/удаленных/исправленных строк (для исходников, которые хранятся в git).
- и множество других.
Под поддержкой языков понимается не только раскраска синтаксиса, но еще и настройки отступов, переноса длинных строк, отображение «невидимых» символов вроде табуляции и все такое прочее. Все это можно настраивать отдельно для каждого языка.
Например, для Python, где важны отступы, я себе включил отображение табуляции:

Хотя перфекционистам внешний вид такого отображения может не понравиться:

Что меня особенно впечатлило в Atom, так это легкость установки пакетов. Достаточно в настройках зайти в раздел «+Install», а там есть поле для поиска пакетов по ключевым словам. Если будет найден нужный пакет, то для его установки достаточно нажать кнопку «Install», и как правило, это не требует перезапуска редактора.

А еще Atom ненавязчиво следит за выходом новых версий пакетов. Обновляются пакеты тоже нажатием одной кнопки.
Кроме графического интерфейса Atom устанавливает программу apm (Atom Package Manager), которая позволяет из командной строки устанавливать, обновлять, удалять пакеты, а также публиковать свои пакеты и еще много всего с этим связанное. Например, чтобы установить пакет, нужно всего лишь выполнить команду:
Хоть Atom — это редактор для программистов, но он не заставляет для своей настройки постоянно править текстовые файлы конфигов, как это делает Vim и Emacs, в основном все делается через GUI. В файлы настроек мне приходилось лезть в двух случаях — для установки горячих клавиш (надеюсь, что в будущих версиях и этого делать не придется) и для добавления сниппетов кода.
Для хранения настроек Atom использует форматы JSON и CSON (CoffeeScript-Object-Notation), формат, напоминающий JSON, но использующий отступы вместо фигурных скобок. Вот, например, как выглядит файл со сниппетами в этой нотации:
'.source.python': 'Coding': 'prefix': 'cod' 'body': '# -*- coding: UTF-8 -*-' 'Docstring': 'prefix': 'ds' 'body': '"""$1"""' 'is None': 'prefix': 'isn' 'body': 'is None'
Поскольку функциональность Atom наращивается пакетами, коих огромное количество, то бессмысленно в этом обзоре подробно говорить о том, что еще умеет Atom. Перечислю лишь некоторые возможности, которые я настроил себе (не важно, это базовые возможности или добавленные с помощью пакетов).
Миникарта — область справа, показывающая исходный текст в очень уменьшенном масштабе. Эту возможность я впервые увидел в SublimeText.

Возможность быстро переключаться между проектами. Atom может открывать любую папку как проект, но с помощью пакета «project-viewer» можно добавить панель со списком сохраненных проектов, чтобы не искать каждый раз нужную папку.

При этом для каждого проекта могут сохраняться открытые вкладки с файлами (почему-то эта полезная возможность по умолчанию отключена в настройках).
Автодополнение. Без этого уже не обойтись любому серьезному программерскому редактору. Автодополнение в Atom мне понравилось больше, чем то, чего мне удалось добиться в Vim.

Показ новых / удаленных / исправленных строк.

Такая возможность работает только с исходниками, находящимися в репозитории git, но может быть есть подобный пакет и для других систем контроля версий — я не искал.
Также есть несколько пакетов, которые интегрируют в редактор работу с git / svn / hg и т.д., хотя я предпочитаю работать с git в консоли, но для быстрого просмотра того, какие файлы изменились в процессе работы, себе я установил пакет git-status, который выводит сообщение одноименной команды в нижнюю панель редактора.

Для Python (и наверняка для других языков программирования) есть множество пакетов для статического анализа кода (включая проверку выполнения рекомендаций PEP8 и PEP257). Среди всех подобных пакетов я остановился на пакете для проверки кода с помощью pylama.

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

Есть пакет symbols-tree-view для показа структуры исходников (списка классов и их методов) и быстрого перехода к нужному классу или методу.

Многие жалуются на скорость работы Atom, но то ли у меня проекты не настолько большие, то ли в новых версиях Atom стал заметно быстрее. Разработчики редактора явно заботятся о скорости. Редактор измеряет время, которое тратится на загрузку каждого пакета, и показывает эту информацию пользователю. Среди стандартных пакетов есть пакет «Timecop», который показывает, сколько времени тратится на загрузку каждого пакета:

Также для конкретного пакета можно посмотреть, сколько времени он загружается.

В итоге под себя на 80% я Atom настроил за один день, остальные 20% донастраивал по мере того, как появлялась надобность в какой-то возможности. Для сравнения, с emacs я игрался неделю, и за это время настроил только 20% того, чего хотелось бы видеть в редакторе.
Теперь поговорим о глюках. С первой проблемой я столкнулся на этапе установки. Хотя Atom поставляется в виде deb-пакета под Ubuntu, но этот пакет отказывался устанавливаться. Оказалось, что для успешной установки Atom, из системы нужно удалить пакет apmd. К счастью, это решение достаточно быстро нашлось в Гугле, поскольку проблема известная. И вроде бы этот пакет в системе не очень нужен — он не потянул за собой удаление каких-нибудь других пакетов. В принципе, apmd — это демон для управления питанием (APM расшифровывается как Advanced Power Management), но в современных компьютерах вместо него используется ACPI (Advanced Configuration and Power Interface). Так что ничего страшного от его удаления случиться не должно.
Atom странно себя ведет в случае, если открытый в нем файл был изменен другой программой. При этом Atom молча загружает себе уже измененный файл, но перед выходом из программы предлагает его сохранить, даже если файл больше не изменялся. Такое поведение наблюдал несколько раз, но на 100% оно не повторяется.
Если коротко подводить итоги по тем возможностям, что я использую, то Atom однозначно выигрывает у Vim по автодополнению, но для Atom я не нашел инструментов для рефакторинга кода на Python (для Vim есть плагин ropevim, который использует для рефакторинга библиотеку rope). Автоматическое выравнивание кода в Vim мне показалось более аккуратным, хотя для Atom есть пакеты для форматирования кода, чтобы он соответствовал рекомендациям PEP8.
Пока в Atom не очень удобно устанавливать горячие клавиши — приходится лезть в конфиг, но по сравнению с Vim это недостатком не является.
У Vim остается преимущество по богатым возможностям редактирования и выделения, особенно в Atom не хватает возможности задавать количество повторений для операций, например, удалить 10 строчек или перевести 5 символов из нижнего регистра в верхний и т.п. Не хватает возможностей инкремента следующего за курсором числа, то что в vim делается с помощью горячей клавиши Ctrl+A. Для Atom есть плагины vim-mode и ex-mode, но я не люблю один инструмент превращать в другой, хотя из любопытства эти плагины в будущем собираюсь попробовать.
В результате мне редактор Atom очень понравился, в последнее время я его начал использовать в качестве основного редактора для программирования, а vim продолжаю использовать, если нужно подправить отдельные файлы, не открывая весь проект.
Ссылка на домашнюю страницу Atom: https://atom.io
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Ruby для начинающих: чем интересен этот язык и как его эффективно изучать

Меня зовут Иван Бондаренко, я Senior Software Engineer и Ruby Technical Lead в CHI Software. Опыт разработки — 6 лет, из них последние 5 — я работаю с Ruby. До этого я программировал 1 год на PHP. Имея за плечами опыт преподавания (я вел курсы по Ruby в Spalah), я решил максимально доступно рассказать об этом языке программирования, поделиться опытом с начинающими специалистами и, возможно, заинтересовать кого-то из них Ruby.
Это первая из статей, в которых я расскажу об особенностях Ruby и Ruby on Rails и поделюсь советами о том, с чего начать в изучении Ruby, где находить ответы на вопросы, как получить нужный опыт и чем вы сможете выгодно отличаться от других кандидатов. Буду рад, если мои советы помогут кому-то определиться со специализацией и выбрать Ruby для изучения и работы.
Основные особенности и отличия Ruby
Часто слышу вопрос: стоит ли учить Ruby? Как правило, вопрос основан на сомнениях: насколько легко найти работу с данной специализацией, будут ли интересные проекты и так далее и тому подобное. Ruby — современный, постоянно развивающийся язык программирования, областей применения ему — масса. Наверняка вы слышали про Chef, Vagrant, Homebrew, но чаще всего все мы слышим о Rails. Вот пост с комментарием самого автора фреймворка о том, почему стоит учить Rails.
Конечно, каждый сам для себя решает, какой инструмент ему использовать. И нет смысла бесконечно долго спорить о том, почему одна технология лучше другой. Я выбрал Ruby, потому что это невероятно выразительный и гибкий язык, который позволяет одну и ту же задачу решить многими способами.
Ruby — интерпретируемый, полностью объектно-ориентированный язык программирования с четкой динамической типизацией. Он сочетает в себе Perl-подобный синтаксис с объектно-ориентированным подходом. Также некоторые черты заимствованы из языков программирования Python, Lisp, Dylan и CLU. Кроссплатформенная реализация интерпретатора языка Ruby распространяется на условиях открытого программного обеспечения. Код, написанный на Ruby, может быть понятен даже человеку, который не разбирается в программировании. На RoR были созданы такие проекты, как Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb и другие.
С ростом Node.js популярность Ruby on Rails несколько уменьшилась, но технологические стартапы часто используют RoR благодаря простоте прототипирования. Ruby — самый популярный язык в индексе TIOBE.
Преимущества Ruby
- Многочисленное и доброжелательное комьюнити.
- Довольно высокий порог входа, что означает, что Ruby-разработчик с большой вероятностью имеет опыт работы как минимум с еще одним языком программирования.
- Вы используете только те библиотеки и модули, которые необходимы.
- Существует большое количество полезных библиотек, которые уже готовы к использованию (Ruby Gems).
- В интернете есть много информации по Ruby, в структурированном и отсеянном виде.
- В контексте обсуждения Ruby нельзя не упомянуть популярнейший фреймворк Ruby on Rails.
А теперь поговорим о некоторых преимуществах Ruby более подробно.
Скорость разработки
Одним из плюсов Ruby и фреймворка RoR считается скорость разработки. Личный опыт и опыт коллег показывает, что решение задач на Rails происходит в полтора раза быстрее по сравнению с другими фреймворками подобного плана. Ruby очень прост как инструмент, а также существует огромное количество готовых решений для различного рода задач.
Штатные средства кеширования данных
При разработке масштабного проекта одним из самых важных моментов является кеширование. Ruby on Rails в основной комплектации имеет штатные средства кеширования данных. То есть у вас сразу будут в наличии инструменты для кеширования данных на проекте, и вы можете легко кешировать отдельные блоки кода или даже целые страницы.
Вначале тесты, потом код
Часто в процессе разработки крупных проектов возникает вопрос о тестировании, и не редкость, когда нет дополнительных средств на отдельную команду тестировщиков. В Rails есть решение и этой проблемы. Если сравнивать RoR с другими фреймворками в контексте тестирования приложения, то вы найдете массу готовых решений для любого вида тестов, будь то интеграционные или юнит. Все эти библиотеки работают «из коробки». В идеале в проекте на Ruby on Rails код не пишется до тех пор, пока под него не написаны тесты. RoR идеология предполагает изначальное использование методов BDD (Behavior Driven Development) или TDD (Test Driven Development).
Общепринятые стандарты процесса разработки у Ruby-разработчиков
Говоря о преимуществах Ruby, я не могу снова не упомянуть сообщество рубистов. Оно постоянно растет, развивается и всегда готово прийти на помощь. Всегда есть кто-то, кто подскажет, как лучше решить проблему, поделится опытом в каком-либо вопросе.
Также очень важный момент — в Ruby-сообществе уже много лет есть стандарты процесса разработки, некие правила/соглашения сообщества, по которым ведется разработка, что очень сильно упрощает работу. За счет этих стандартов каждый проект очень структурируется, соответственно, новый разработчик в команде быстро войдет в курс дела и уже с первых дней работы сможет быть полезен. И даже больше: если проект начинала одна команда, а заканчивает другая — это тоже совсем не проблема. Поскольку разработка ведется по уже упомянутым правилам и соглашениям сообщества, новая команда быстро и без трудностей вникнет в проект и успешно его закончит без особых потерь времени.
Также в Ruby on rails есть большое количество самых разных готовых решений в открытом доступе. Большинство решений уже были реализованы кем-то до вас, а также протестированы сообществом, что уменьшает необходимость разработки с нуля. Это могут быть системы аутентификации, авторизации, комментирования, системы платежей, почтовые рассылки и так далее.
Готовые решения для многоязычности проекта
Rails в базовой комплектации имеет очень мощные средства для локализации проекта. Есть возможность как предусмотреть поддержку нескольких языков изначально, так и осуществить её позже. В проекте присутствуют специальные файлы для переводов терминов, инструменты для отображения шаблонов на разных языках и многое другое.
Высокий уровень защиты данных
Сейчас нередко в сети публикуются статьи о взломах различных ресурсов. Разработчики фреймворка Ruby on Rails очень серьезно отнеслись к проблеме защиты данных. В RoR изначально присутствует шифрование паролей, данных кредитных карт и других личных данных пользователя, также исключены SQL инъекции и XSS атаки. Все входные параметры экранируются по умолчанию.
Изучение Ruby
А теперь поговорим, как именно можно освоить Ruby.
Теория
Начать следует, конечно же, с литературы. Я рекомендую эти источники:
- Ruby за 20 минут — хороший ресурс для совсем начинающих. Позволяет меньше, чем за полчаса ознакомиться с основными конструкциями языка и начать писать свои небольшие программы.
- Codecademy — платформа с онлайн-курсами по множеству направлений, включая чистый Ruby и Rails. Здесь довольно интересно построен обучающий процесс, дается теоретический материал и сразу же практическое задание, чтобы его закрепить. Финальные задания платные, но и без них можно получить нужные навыки.
- Материалы по Ruby и Rails — сборник ссылок на различные сайты и книги, посвященные изучению Ruby и Rails.
- Отдельно могу посоветовать книгу Flanagan D., Matsumoto Y. «The Ruby Programming Language». Она считается одной из лучших, её автор — сам создатель языка Ruby.
- Google 🙂
Далее я рекомендую изучить хотя бы базовые понятия SQL, потому что СУБД хоть и отличаются между собой, но зачастую используют один и тот же язык.
Вот парочка ресурсов, с которых можно начать:
- w3schools.com/sql — здесь можно почитать, попробовать и проверить свои знания по SQL.
- quizful.net/test — тут можно найти вопросы, которые часто задают на собеседованиях.
Английский
Я считаю, что нет смысла останавливаться подробно на этом моменте, так как это — тема отдельной статьи. Английский очень важен, и это общеизвестный факт. Хотелось бы только упомянуть вкратце два самых важных момента.
Во-первых, английский — это основной язык международного комьюнити, соответственно, большая часть полезной литературы тоже будет на английском, многие новости, доклады и важные статьи тоже будут появляться сначала на английском. Если вы хотите узнать ответ на какой-либо вопрос — очень большая вероятность, что в первую очередь его получится найти именно на английском.
Во-вторых, чем лучше ваши знания английского, тем больше шансов найти работу. Большинство клиентов зарубежные, соответственно, знание английского важно для продуктивного общения, четкого понимания ТЗ и хорошего контакта с клиентом.
Практика
После изучения нескольких ресурсов стоит перейти к более важной части, а именно к практике. Примеров заданий с интернет-магазином или простым блогом в сети масса (вот один из них), особенно если говорить о Rails. В ходе выполнения задач, уже немного приближенным к реальным, вы точно столкнетесь с какими-то проблемами и тогда перейдете к тренировке одного из самых главных качеств — это умение гуглить. К сожалению, мне не удалось найти какой-то туториал или курсы, посвященные этому навыку, но он определенно играет очень важную в роль в повседневной работе.
Курсы
После прочтения теории и написания нескольких «пет-проектов» можно, конечно, пробовать идти по собеседованиям, но часто бывает, что этих знаний недостаточно. Это связано с большим наплывом кандидатов, и, учитывая конкуренцию, каждый старается выделиться и как можно лучше подготовиться.
Еще один важный пункт в обучении, который может стать перевесом в вашу сторону при поиске работы, — это курсы по программированию. Если, конечно, у вас нет ментора, который готов тратить определенное количество времени на то, чтобы придумывать задания и делать по ним ревью.
Сразу скажу, что я ни в коем случае не рекомендую идти на курсы, не имея уже какого-то багажа знаний. Я рассматриваю курсы как отличный способ закрепить знания, полученные в процессе самообучения. И сейчас не пытаюсь рекламировать какую-то конкретную школу, а объясню, какую именно пользу можно из этого извлечь:
С высокой долей вероятности там вы узнаете то, чего не знали раньше. На курсах довольно большой объем материала, который подается в структурированной форме, что позволяет лучше усваивать материал.
На период курса у вас будет ментор, который будет делать ревью решения ваших задач и указывать на слабые места и ошибки.
Обратная связь. На уроке вы можете задать интересующий вопрос преподавателю или однокурсникам или просто поделиться опытом. Конечно, то же самое можно сделать и на конференции или митапе, но в отличие от посещения конференций, на курсах у вас будет возможность делать это чаще (обычно курсы проводятся раза в неделю).
Мотивация. Это в первую очередь для тех, кому нужна помощь с самодисциплиной. Порой довольно трудно заставить себя что-то делать, какие бы перспективы не маячили на горизонте. При посещении курсов у вас будет четкий график, которому нужно следовать, и задания, которые нужно выполнять, иначе вас исключат. Финансовая мотивация также играет здесь роль, в случае платных курсов. Ведь когда отдаешь свои кровные, то уже совсем по-другому относишься к делу, и мысли просто прогулять возникают намного реже.
Еще одно преимущество — сертификат. Понятное дело, что в итоге вас будут оценивать по знаниям, а не по наличию бумажек в резюме. Но тем не менее это будет плюсом, особенно, если будет кандидат с похожим уровнем знаний, но без их документального подтверждения.
Плюс один проект на GitHub в вашу копилку. Если вы начинающий разработчик, то вероятнее всего проект, написанный на курсах, будет интереснее с точки зрения технологий, чем те, которые были написаны ранее.
И самое главное — трудоустройство. Говоря о курсах, я не имею ввиду только те, за которые нужно платить деньги. Часто компании сами проводят набор на обучение, чтобы потом лучших взять к себе на работу. Это могут быть внутренние курсы или стажировка/интернатура. Такой вариант — наилучший, так как вам не нужно ни за что платить, вы получаете опыт и все выше перечисленные плюсы и вдобавок — реальную перспективу трудоустройства. Попасть на них сложнее, но перспективы значимее.
Итого
Ruby — это язык, который позволяет работать без большого количества неудобств и церемоний, которые приходят со строго типизированными языками. С Ruby легко начать работать, особенно если у вас уже есть опыт разработки на других языках программирования, и вы сможете быстро создавать прототипы с Ruby on Rails. В Японии, откуда он появился, Ruby использовался для создания игр. Ruby лаконичен и читается как английский, что делает код понятным для новичков.
Что касается изучения Ruby, хочу еще раз повторить: нужно начать с малого. Прочитайте несколько книг, сделайте самостоятельно несколько заданий, а затем, если чувствуете необходимость получить больше знаний и опыта или дополнительную мотивацию — можно идти на курсы, уже имея определенный багаж знаний, полученных самостоятельно.
В идеале это курсы от какой-либо компании, которая по окончании сделает вам оффер, если хорошо себя проявите. Альтернативный вариант — платные курсы, которые помогут закрепить полученные знания, добавить в резюме еще один проект и набраться опыта, что наиболее важно на старте. Но не стоит ожидать, что по окончании платных курсов вы с легкостью пройдете собеседование, показав сертификат. Оценивать в любом случае будут знания.
В то же время, имея достаточно мотивации, терпения, способностей и опыта с другими языками программирования, вы вполне можете освоить Ruby самостоятельно, т. к. в интернете очень много полезной и хорошо структурированной информации. Также благодаря открытому и многочисленному Ruby-комьюнити можно с легкостью найти онлайн ответы на многие возможные вопросы, которые с большой долей вероятности кто-то уже задавал до вас.
Удачи в изучении! А в следующей статье мы поговорим о коде.
Подписывайтесь на наш Telegram-канал для джуниоров, чтобы не пропустить интересные вакансии, стажировки, курсы, статьи.
Подобається Сподобалось 0
До обраного В обраному 2
