kamyshev.code
1.94K subscribers
40 photos
565 links
Архитектура, код, софт-скиллы и всё остальное. Вопросы, пожелания, комментарии — @igorkamyshev

https://kamyshev.me
Download Telegram
Важная мелочь для меня в программировании — комфорт от набора текста. Он складывается из темы редактора, шрифта, клавиатуры и много чего ещё, наверно.

Уже несколько лет использую шрифт Fira Code. Во-первых, он крутой. А во-вторых, в нем есть лигатуры.

Лигатуры — это когда несколько логически связанных символов становятся одним. Например, != станет .

На мой взгляд, так код воспринимается много легче.

https://github.com/tonsky/FiraCode

#удобство_разработки
​​Исследуя GitHub

Мне часто нужно читать пулл-реквесты на гитхабе. Это в целом не очень удобно, но отдельно раздражает невозможность переходить по файлам вокруг просматриваемого.

Есть хорошее расширение для хрома, которое избавляет от этой боли — Octotree.

#удобство_разработки
​​Многие команды пренебрегают непрерывной интеграцией (CI). Очень зря.

CI на каждый пулл-реквест запускает набор скриптов, которые как-то проверяют код: тесты, линтеры, статические анализаторы.

Если мы можем делегировать машине какую-то работу (автоматизированная проверка кода, например), то мы должны это сделать. Пусть CI выловит одну ошибку на 100 пулл-реквестов, но зато она обнаружиться до выхода кода на боевой сервер.

Не экономьте на непрерывной интеграции. Пишите тесты, настраивайте линтеры, используйте CI.

#удобство_разработки
​​Бизнес портит все!

CI — это долго и дорого. Часто бизнес в компании против таких трат. Что делать?

Стоит объяснить, что непрерывная интерграция экономит деньги. После однократной настройки, разработчики больше не тратят время на выполнение рутинный процедур. А время разработчиков стоит больше, чем любой CI-сервис.

Плюс это повышает надёжность производимого продукта, что тоже экономит деньги на исправление багов, простои системы, обработку жалоб пользователей.

CI — не серебряная пуля, но очень важен.

#удобство_разработки
​​CI выполняет задачи, которые должны увеличить уверенность в том, что приложение работает правильно.

Самое очевидное, запускать там тесты. В таком случае код, из-за которого падают тесты, не сможет попасть в мастер-ветку.

Но ответственность писать тесты все ещё лежит на программистах.

#удобство_разработки
​​Продолжаем разговор о непрерывной интеграции.

Тесты помогают держать часть кода под контролем, но покрыть тестами все приложения слишком дорого. Потому нужны какие-то более простые способы избегать ошибок.

Простой и эффективный путь — статический анализ, проверка корректности программы без ее выполнения. Для разных языков доступна разная глубина такого анализа.

Для JavaScript это JSHint, ESLint. Для TypeScript — TSLint. Уважайте линтеры, любите линтеры, используйте линтеры.

Для других языков можно найти по запросу static analysis {{language}}.

#удобство_разработки
Ссылка

Большую часть времени разработчики читают код. А потому нужно, чтобы чтение кода вызывало как можно меньше удивления.

Если бы весь код был одинаково отформатирован, это сделало бы уже половину работы. Но руками форматировать код и расставлять запятые долго, дорого и бессмысленно.

В таком случае следует использовать средства автоматизации — Дорога к Prettier

#удобство_разработки
​​Ссылка

Большая часть сайтов может быть статическими. Блоги, сайты визитки и всякие подобные штуки.

Статику очень удобно хостить на Netlify. Нужно привязать репозиторий, указать команду для билда и все работает. SSL-сертификат автоматически, превью пулл-реквестов автоматически, деплой из мастера автоматически. Очень их люблю, и все статические сайты размещаю там.

#удобство_разработки
Конфигурация приложений — один из самых важных аспектов разработки. Это место, где постоянно происходят утечки секретных данных, тормозится процесс внедрения непрерывной доставки, случаются сложно отлавливаемые рантайм‑ошибки. Забота об этом — необходимость при разработке любого приложения.

Написал небольшую заметку — как правильно внедрять параметры конфигурации в приложение, управлять ими в разных окружениях и не страдать.

Конфигурация Node.js приложений

К Node.js относится только предпоследний абзац, так что читать можно и людям из других технологий.

#удобство_разработки #js
​​Локальная разработка

Локально тестировать логин через соцсети больно. Многие провайдеры требуют чтобы сайт был доступен в интернете (например, они сами шлют какой-нибудь запрос к вам), другим обязательно нужен сертификат.

Есть простой способ избавиться от этой боли — ngrok. Эта штука позволяет моментально получить URL для вашего локального компьютера, SSL в комплекте.

Для нужд локальной разработки вполне достаточно бесплатной версии.

#удобство_разработки
Инструментируй это

Да этого доклада я никогда не слышал термина "инструментирование кода". Оказалось, что это супер важная концепция, которая позволяет работать всему нашему тулингу.

Роман Дворнов рассказал, как он написал свое решение для инструментирования кода и упрощения работы с компонентными фреймворками в браузере.

Запись доклада

#удобство_разработки
Я когда-то уже рассказывал о важности CI, линтеров и тестов. А сейчас хочу показать как это все выглядит в реальных проектах.

Год назад в Breadhead мы начали делать непрерывную интеграцию и доставку приложений. Рассказываю, зачем мы это делаем, какие технологии используем, сколько денег тратим, как повторить, что планируем улучшить.

Как мы делаем CI/CD

#удобство_разработки
Бэкап GitHub

Все знают, что нужно делать бэкапы, но немногие их делают. Особенно бэкапы «надёжных» облачных сервисов.

Последнее время в работе GitHub все чаще наблюдаются сбои. За май зафиксировано три эпизода частичной доступности, за июнь — два. Я не готов доверять свой код сервису, который так относится к надежности работы, но и терять в удобстве использования, переезжая на альтернативные решения не хочется.

Потратив 10 минут времени и совсем немного денег можно обеспечить себе спокойную жизнь, удобство и комфорт работы.

Инструкция: бэкап GitHub

#удобство_разработки #автоматизаци
Больше года назад мы в Самокате сделали прекрасную систему передачи параметров во фронтенд приложение во время деплоя. Я тогда написал черновик статьи про это, а потом целый год не мог его довести до нормальной статьи.

В эти выходные я его дописал, а сегодня утром опубликовал.

https://habr.com/ru/post/541314/

#фронтенд #удобство_разработки
Наткнулся в твиттере на список современных аналогов для консольных утилит и вспомнил, что пользуюсь многими из них. Пользуйтесь и вы, это такой кайф.

1. bat — это замена cat с бонусами: подсветка синтаксиса, изменений в гит-репозитории, номера строк

2. httpie — замена curl с нормальным интерфейсом: само ставит заголовки правильные, нормально форматирует вывод

3. exa — замена ls с красивыми цветами в терминале и удобным табличным видом (--grid)

#удобство_разработки
​​GitHub Copilot — это такой умный автокомплит для VS Code на основе искусственного интеллекта.

Сегодня утром мне пришел инвайт на закрытый бета-тест и я немного пощупал его. Первый ощущения:

+ Это прикольно, подсказки довольно осмысленные и местами полезные.

+ После ввода нужно остановиться секунды на 2-3, чтобы оно успело придумать подсказку. Выбивает из потока и теряет всякий смысл.

На мой взгляд, сейчас это скорее игрушка, чем реальный инструмент разработки. Но, я верю, что лет через 5 подобные системы плотно войдут в нашу жизнь и код писать станет сильно приятнее.

#удобство_разработки
DigitalOcean App Platform — решения для деплоя приложений в интернет без головной боли. Пишешь докер-файл, нажимаешь кнопку и магия случается — сервис уже доступен.

Я давно хотел попробовать эту штуку, но все как-то не было времени разбираться. Сегодня обнаружил, что @yt_listen_bot перестал помещаться в общий дроплет и решил переселить его в App Platform. Поэтому, вот свежие впечатления.

1. Оно правда работает, как обещает. Кнопку жамкаешь — деплой случается. У меня для этого был написан свой скрипт, но всегда приятно отказываться от велосипедов. Как бонус — зиро-даунтайм деполой из коробки.

2. Удобно собираются логи и метрики ноды (нагрузка на процессор, потребление памяти, нагрузка на сеть). Сразу в том же месте можно посмотреть на состояние базы данных.

3. Дорого. Минимальный инстанс аналогичный дроплету за 6 долларов обходится в 12. То есть в два раза дороже.

4. Нет доступа к мэнэджд базам данных внутри DigitalOcean по приватной сети, только по публичной. Плюс, нельзя добавить сервис в вайт-лист для коннекта. Приходится отключать ограничение по хостам на подключения. Страшно.

5. При любом изменении настроек происходит полная пересборка контейнера. Непонятно и дико раздражает пока настраиваешь первый раз.

Короче, определенно прекрасное решение для пет-проектов. Но цена прямо злая.

#удобство_разработки