[Перевод] Как я совершенствуюсь как программист

Некоторые люди на React Conf спрашивали у меня о том, как улучшить свои навыки программиста. По некоторым причинам люди видят во мне продвинутого программиста, которого следует прислушиваться. Я подумал, что стоит написать статью о моей “мыслительной модели” того, как я подхожу к программированию в течение лет.

Расскажу немного о себе: мне 32 года и у меня за спиной более 10 лет стажа. Но только в последние несколько лет я действительно начал чувствовать уверенность в том, что я делаю. Но даже сейчас иногда я сомневаюсь в своих способностях. Основная идея в том, что это чувство никогда не пропадёт, так что постарайтесь его игнорировать, продолжая разрабатывать и набираясь опыта.

Хочу предупредить, что это лишь несколько подсказок как улучшить свои навыки программиста. В конечном итоге вам самостоятельно потребуется выяснить, что будет работать именно для вас. Это лишь некоторые вещи, которые работают для меня.

Continue reading

Использование конфигурационных файлов в Go: INI

В продолжение темы про конфигурационные файлы, остановлюсь на формате .INI. .INI – формат конфигурационных файлов, применяемый, в основном в ОС Windows. Тем не менее, ничто не мешает его использовать и в других окружениях.

Данный формат значительно проще, чем рассмотренные ранее TOML и YAML, но в некоторых (на самом деле большинстве, как мне кажется) случаях, его возможностей может оказаться достаточно.

Continue reading

Использование конфигурационных файлов в Go: YAML

В продолжение темы про конфигурационные файлы, взглянем на более распространённый формат YAML.

YAML (YAML Ain’t Markup Language) – это надмножество над JSON с упрощенным синтаксисом.

Continue reading

Использование конфигурационных файлов в Go: TOML

Если вы в IT более 15 минут, то должны знать, что практически каждая программа зависит от некоторых внешних переменных. Например, как я писал в статье про разработку бота для Telegram, к ним можно отнести API-ключи внешних сервисов, используемых в вашем приложении; строки подключения к базе данных; список RSS-лент; список e-mail для каких-либо уведомлений и прочее.

Самый простой способ – прописать эти переменные явно в коде, но в этом случае есть недостатки:

  1. Во-первых, если эти данные приватные, то публиковать это во внешние системы управления версиями (github, например) будет невозможно во избежание утечки этих данных;
  2. Во-вторых, если вам необходимо иметь два комплекта переменных (отладочные и релизные), то придётся каждый раз шерстить код в их поисках с последующей заменой на нужные;
  3. В-третьих, справедливо для компилируемых языков программирования, при каждом изменении настроек необходимо пересобирать приложение.

Для того, чтобы избавить себя от этих мучений можно использовать два подхода (которые приходят в голову в первую очередь): хранить переменные в переменных окружения (сомнительный вариант?); использовать конфигурационные файлы. Первый вариант не удовлетворяет условию минимальных телодвижений для переключения между конфигурациями: в этом случае необходимо заменять значения переменных не в коде, а в самих переменных окружения (уже лучше, но все-равно попыхтеть придётся).

Для себя я выбрал второй вариант как более простой и менее трудоёмкий в поддержке.

В этой и в будущих статьях хочу немного погрузиться в тему того, как и чем можно пользоваться в Go для этой задачи.

Continue reading

Как я Telegram бота на Go писал. Часть четвёртая. Аналитическая.

После того, как бот был написан, прокачан и опубликован (на vscale или на heroku, например) возникает вопрос отслеживания того, как пользователи с ним общаются. Для этих целей можно воспользоваться, например, решением botan.io от Yandex.

Botan – обёртка над AppMetric – версии Метрики для мобильных приложений. Платформа позволяет собирать большинство событий бота и отображать их в панели Метрики (со всеми доступными отчётами). Сейчас ботан умеет работать только с ботами для Telegram, но мне этого вполне достаточно.

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

Continue reading

Как я Telegram бота на Go писал. Часть третья. Публикация.

В предыдущих частях был разработан и улучшен бот, помогающий найти заклинания для Dungeon and Dragons.

Теперь требуется разместить бота на какой-либо платформе. Рассмотрим два варианта: vscale.ru и heroku.
Continue reading

Как я Telegram бота на Go писал. Часть вторая. Прокачиваем бота.

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

В этот раз немного улучшим его: улучшим форматирование, добавим inline-режим и реализуем пару команд. Continue reading