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

https://kamyshev.me
Download Telegram
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 году я работал над генератором интернет-магазинов. И тогда я еще хуже представлял себе как правильно обращаься с данными.

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

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

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

#кейс #данные
Хорошая практика

В прошлом году гремела статья от инженеров из Хероку о приложениях 12 факторов.

Это отличные советы по построению приложений, прочтите их и жизнь станет проще.

The Twelve-Factor App

#проектирование #общие_знания
​​Golang

Я люблю изучать новые языки программирования. Осенью читал "7 языков за 7 недель", а совсем недавно внимательно смотрел на ReasonML и Dart.

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

Последний год я пристально следил за развитием Go. Это максимально непривычный для меня язык — по большей части из-за особенного Go-way. В нем совсем другие лучшие практики. У них там нет исключений! И это осознанный выбор авторов. При этом язык сверх-популярен. Веб, CLI, все можно писать на Go.

OTUS запускает курс "Разработчик Golang", а 23 мая (завтра) в 20.00 МСК пройдет день открытых дверей на этом курсе. Как обычно, доступно предварительное тестирование.

Пишите впечатления от мероприятия, да и в целом мнения о Golang, будет интересно почитать о вашем опыте.

#языки #партнерский_материал
24-25 мая а Питере будет HolyJS.

Буду писать интересные штуки сразу в твиттер — @kamyshev_code.

Я на конференции оба дня, подходите знакомиться.
На выходных сходил на HolyJS. Отличная конференция. Когда выложат доклады — рекомендую посмотреть эти:

Deno, a new way to JavaScript
Райан Даль (автор Node.js) рассказал о своем новом проекте.

Очень странное тестирование
Шокирующий подход к unit-тестированию через свойства.

Подход к типобезопасной разработке на TypeScript
Хороший вводный доклад по TypeScipt.

Modern web testing and automation with Puppeteer
Прекрансный доклад с реальными примерами e2e тестирования с помощью Puppeteer, очень хороший доклад.

Обработка озера данных на Node.js в serverless-архитектуре
Почти ничего не понял, но звучит как невероятно крутой подход. Полезно для расширения кругозора.

Node.js: так же быстро, выше, сильнее с GraalVM
Магия — возможность запускать внутри Node.js кода кусочки на R, Python, Java, Ruby. Впечталяющуая технология, определенно стоит попробовать.

О тестировании на основе свойств и Deno скоро расскажу подробнее.