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

https://kamyshev.me
Download Telegram
Публиковать еще истории из рабочего опыта?
anonymous poll

Да – 269
👍👍👍👍👍👍👍 98%

Нет – 6
▫️ 2%

👥 275 people voted so far. Poll closed.
Конфигурация приложений — один из самых важных аспектов разработки. Это место, где постоянно происходят утечки секретных данных, тормозится процесс внедрения непрерывной доставки, случаются сложно отлавливаемые рантайм‑ошибки. Забота об этом — необходимость при разработке любого приложения.

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

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

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

#удобство_разработки #js
Другое программирование

Современный мир пропитан данными — это самая большая ценность. И круто уметь с ними работать. Даже если нет желания полностью посвятить себя этому, важно иметь хотя бы общее представление.

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

В SkillFactory запускается очередной поток специализации Data Science. Это год плотного обучения, куча практики и отличные преподаватели. Я убежден, что осваивать новое нужно под присмотром опытных специалистов, и этот онлайн курс — отличная возможность.

#партнерский_материал
3 месяца назад публиковал заметку о том как обращаюсь с публикацией npm-пакетов. Два месяца назад осознал, что это все еще требует непозволительно много времени на поддержку.

Тогда я сделал @solid-soda/scripts — пакет инкапсулирующий в себе все проверки. Там статический анализ кода и стилей, форматирование, проверка сообщений к коммитам и их генерация, создание релизов.

Процесс публикации и поддержки пакетов сильно упростился. Обновил заметку.

Процесс подготовки npm-пакета

#процесс
​​Другое программирование

Я уже говорил, как уважаю Data Science. Теперь про еще один отличный способ прикоснуться к этому миру.

В Otus есть крутой курс «Нейронные сети на Python» — довольно сложный и обширный. Для его прохождения нужно иметь начальные знания в Python, линейной алгебре, началах анализа и теории вероятностей. Проверить свой уровень можно во вступительном тесте.

15 мая (сегодня) в 20.00 МСК они проведут открытый урок «Учим нейронную сеть копировать почерк». Внутри будет разбор одной из финальных задач прошлого набора курса — порождение рукописного текста с заданным почерком.

#партнерский_материал
Чиним img

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

Крутой доклад Дмитрия Махнёва «Чиним img» как раз об этом — причины такого поведения фотографий и пути решения.

#фронтенд
​​Локальная разработка

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

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

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

#удобство_разработки
Товарищ подсказал еще одно аналогичное решение — localtunnel. Выглядит даже проще.

https://localtunnel.me/
Еще один подобный сервис — serveo

https://serveo.net/
DRY — не повторяй себя. Этот принцип часто понимается неверно.

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

Не повторяй логику
Бизнес-логику повторять нельзя. Если в приложении вычисляется скидка — она должна вычисляться только в одном месте. Важно разделять одинаковую логику и похожую. Похожая логика может сильно разойтись через время, тогда придется снова разделять их обратно.

Тематическая статья — Ошибочное понимание принципа DRY

#проектирование
Я слушаю очень много подкастов. Некоторые из них связаны с программированием.

+ ДевШахта — много про софт-скиллы, много про Node.js.
+ Мысли и методы — о непривычном в программировании. Вопросы вычислимости, связи информатики и вселенной.
+ Новости 512 — еженедельные экстра-короткие новостные выпуски.
+ Пятиминутка React — не только React, а скорее фортенд в целом. К сожалению, не выходит с декабря прошлого года.

И еще парочка, они классные, но я перестал их слушать.

+ Frontend Weekend — интервью с разработчиками, чаще фротендерами, но не всегда.
+ Радио-Т — длинные выпуски, обсуждаются новости и статьи.

На случай если кто-нибудь не знает что такое подкасты и не умеет их слушать. Подкаст — это аудио-шоу. Люди говорят что-нибудь в микрофон, вы слушаете это. Удобство формата в его нетребовательности. Можно слушать подкасты в метро, во время уборки дома, прогулки с собакой. Как слушать подкасты.

#рекомендации
​​Самое ценное

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

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

Если данных много — все эти задачи усложняются. Я абсолютно не представляю как работать с базой данных даже в 100 гигабайт.

Как раз для таких людей OTUS запускает онлайн-курс "Data Engineer". Он о том как работать с большими данными, мониторить и тестировать такие базы, обращаться с распределенными хранилищами.

20 мая (завтра) в 20.00 МСК пройдет вебинар "Lean Data Engineering: большие данные при небольшом бюджете", который предваряет этот курс. Чтобы попасть на него, нужно пройти тестирование.

#данные #партнерский_материал
Самое ценное

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

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

+ DO Managed Databases
+ AWS RDS

В чем суть

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

На мой взгляд, это как раз тот случай когда можно отдать сколько-нибудь денег за свое время и спокойствие. Во всех домашних проектах использую DO Managed Databases (просто потому что AWS слишком сложный для меня).

#данные
История: удаленная база и две минуты страха

В 2017 году я работал над генератором интернет-магазинов. И тогда я еще хуже представлял себе как правильно обращаься с данными.

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

Тематическая статья — Версионная миграция структуры базы данных: основные подходы

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

#кейс #данные