RDCLR.DEV
599 subscribers
122 photos
5 videos
83 links
Про разработку от команды Red Collar
redcollar.ru

Основной канал Red Collar @rdclr_home
Download Telegram
Вы подумали это все? А вот и нет =)
👍🏻 При кросс-ревью нет нагрузки на отдельного разработчика (тим-лида), который один должен пересмотреть все ревью.

👎🏻 Однако бывают случаи, когда разработчики, увидев, что более опытный разраб поставил аппрув, даже не уделяют внимания просмотру.

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

Всем тем, кто поставил аппрув не глядя, следует в доступной форме объяснить важность данной церемонии и попросить больше так не делать. Пара повторных подобных проверок (можно подговорить еще кого-нибудь из команды) — и ваш код будет просматриваться детальнее, чем сумка на таможне.


📮 В ходе повествования я упирался в слово «код», но такая практика может быть использована в команде абсолютно любого направления. И важно добавить, что под словом «команда» подразумевается отдельное направление (бэк, фронт, qa, дизайн и тд).

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

Надеюсь, у всех вас на проектах существует кросс-ревью и вы ему рады. 😀
#teamlead #rdclr_frontend #rdclr_backend
👍102
Сегодня мы пойдем по стезе DevOps. 🍩
Уверен, многие в разные моменты своей жизни сталкивались с мыслью:
«Я сделал свою задачу, написал рабочий код. А потом высшие силы переместили его на сервер».

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

В последующих постах я не буду останавливаться на конкретных способах написания каких-либо CI/CD пайплайнов (это тема для целой статьи), но я хочу вас познакомить с одним из самых интересных и удобных подходов описания конечной инфраструктуры системы, чтобы приоткрыть немного завесу этой магии.
#rdclr_DevOps
👍83
Концепция: IaC

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

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

Зачастую DevOps пишет пайплайн, в котором сначала ваш код билдится в исполняемый файл, потом оборачивается в Docker image и сохраняется в registry. (Это классический пайплайн, но, естестественно, в зависимости от разных факторов он может выглядеть совершенно иначе)

Что же происходит после всего этого?

🧳 Есть разные решения этого способа поставки, но я хочу остановиться на концепции IaC (Infrastructure-as-Code).

Из названия понятно только то, что мы можем как-то кодом описать инфраструктуру. По факту это и есть самое большое преимущество данной концепции:
🧦 описывая инфраструктуру кодом, мы можем заливать этот код в репозитории и иметь версионирование всей инфраструктуры;
🧤 т.к. это код, мы можем выделить повторяющиеся участки кода и переиспользовать их, кастомизируя параметрами;
🧣 будучи разработчиком, научиться подобному языку не составит большого труда.

Следующим постом я хочу познакомить вас с одной из реализаций данного подхода — Terraform. А еще рассказать о самом большом преимуществе концепции IaC
#rdclr_DevOps
👍61
Реализация IaC: Terraform

Terraform — это детище компании Hashicorp для декларативного управления инфраструктурой проекта.
Он предоставляет нам полный контроль над каждым элементом инфраструктуры в одном проекте. Дает возможность параметризировать всю инфраструктуру.

Это значит, что если нам нужно поднять клон нашей инфраструктуры — мы это делаем всего лишь заменой пары параметров (в том числе их можно передать на уровне пайплайна).
Ознакомиться с данным чудом можно на сайте Terraform.

💥 Одно из преимуществ использования Terraform — его универсальность.
Для разворачивания инфры в разных системах используются сущности provider. Это своего рода API для работы с системой.
Подобная фича позволяет нам писать однотипный код для развретки приложения в разных системах: K8S, AWS, GCP и тд.

Более того, у terrafrom есть провайдеры для настройки различных систем (keycloak, Grafana и тд).

В нотации Terrafrom все, что вы описываете называется ресурсом, и это могут быть пользователи в каком-нибудь keycloak'e или же микросервис в K8S. А может и DynamoDB в AWS.
Комьюнити активно живет и развивается. Каждый провайдер и ресурс тщательно документируются. 👬

Если вы начали интересоваться подобными активностями, либо занимаетесь этим прямо сейчас, рекомендую ознакомиться более предметно с этой технологией.
#rdclr_DevOps
👍52
👍2😁21🔥1
😁11
Причина выгорания 1: нарушение графика дедлайнов —> объем, который не вывозится

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

В первую очередь хочу акцентировать внимание на том, как же работник доходит до такого состояния:
1) человек не успевает сделать запланированные задачи в срок;
2) по каким-либо причинам не говорит об этом команде или ПМу;
3) решает доработать вечером/ночью/на выходных;
4) и все это происходит больше 1го раза.

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

В какой-то момент вы просто уже не хотите что-либо делать и работа встает окончательно.
#teamlead
👍7😢1
Причина выгорания 2: переусердствовали на старте

🐲 Бывает и другой случай:
1) на старте проекта (либо на вашем входе в проект) вы хотите показать, что вы можете очень круто и много работать, и выкладываетесь на 120%;
2) но работа в таком режиме долго работать не получается, и через пару спринтов вы возвращаетесь в свои 100%;
3) со стороны заказчика это выглядит как вы работали в нормальном режиме, но потом решили расслабиться, а он все еще хочет, чтоб вы работали как раньше;
4) ну и, наконец, в больше случаев мы приходим к первому циклу.

🍃 Прежде всего при выгорании наносится большой вред вашему здоровью, если вовремя этот цикл не прервать.
🍂 Но важно помнить еще и тот факт, что работая на проекте вы являетесь лицом компании перед заказчиком.
И такая остановка в работе или резкое снижение продуктивности может крайне негативно отразиться на отношениях с заказчиком, вплоть до отказа в сотрудничестве.
#teamlead
👍6😱2
Как обезопасить себя от выгорания
Что же нужно сделать чтобы не допустить такого?

🍹1. Уметь переключаться с работы на отдых вечерами и особенно на выходных.
📞 2. Если вы видите ситуацию, которая может привести к переработкам, необходимо обязательно связаться с менеджером или тим-лидом и обсудить эту ситуацию (решение есть всегда).
🏮 3. Если на проекте есть возможность и необходимость выходить в овертайм, лимитируйте такие переработки и делайте перерывы.

Берегите себя!) 💆🏼‍♂️
#teamlead
👍13
Всем привет! Меня зовут Никита, в компании Red Collar я занимаю должность Java backend-разработчика. Так сложилось, что во время учебы и как хобби мне часто приходилось изучать и разбираться в нейронных сетях. Именно эту тему я бы хотел затронуть на этой неделе. Я постараюсь не использовать сложные термины и математику, а так же буду разбавлять скучные рабочие будни смешными картинками.
#meme
👍12🔥2
Что такое нейронные сети

Хотелось бы начать с краткого экскурса в нейронные сети. Открыв любой интернет источник, можно очень часто увидеть такую формулировку: «Искусственные нейронные сети — это вычислительные модели, вдохновленные человеческим мозгом».

🧠 Нейронные сети действительно напоминают мозг человека (животного), как минимум следующими признаками:
1) нейронная сеть получает знания посредством обучения;
2) знания нейронной сети — это хранилище сил межнейронных связей, также известных, как веса нейронной сети.

Любые алгоритмы разрабатываются с целью решения каких-то задач, нейронные сети не стали исключением. Они позволяют выполнять задачи по осмыслению данных, сохраняя при этом свои другие свойства.
Сейчас мы их разберем.
#rdclr_backend #NN
🔥2
Нейронные сети и их задачи. 1 — Классификация
Разберем подробнее каждый из типов задач.

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

Одна из самых первых задач, с которой сталкивается человек, который только начал изучать нейронные сети — это определение того, что представлено на изображении: кошка или собака.🐕🐈‍⬛
Это накладывает определенные ограничения на обучающую выборку, так как каждый набор данных должен быть помечен. Пример задачи с кошками и собаками говорит, что абсолютно к каждому изображению должно быть пояснение. А именно, к какому классу относится данное изображение (кошка или собака).

Подход, когда заранее известны выходные данные нейронной сети, называется «контролируемое обучение», или «обучение с учителем».
#rdclr_backend #NN
🔥4👍2
Нейронные сети и их задачи. 2 и 3 — Кластеризация и Предиктивный анализ

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

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

💎 Предиктивный анализ
Предиктивный анализ по-другому часто называют задачей регрессии.

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

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

Дальше мы разберем популярные библиотеки и инструменты работы с нейтронными сетями. А пока — хорошего вечера! 🥟
#rdclr_backend #NN
🔥7
👍6🔥2😁1
Инструменты под python для разработки нейронных сетей
Сегодня хотелось бы поговорить об инструментах и библиотеках, которые помогут в разработке и описании нейронных сетей.

Подавляющая доля разработок в области нейронных сетей приходится на язык программирования python 🐍 , поэтому и рассматривать будем решения под этот язык программирования.

🌪 jupyter notebook — это мощный инструмент для разработки и представления data science проектов. Он способен хранить код, графики, изображения и формулы в одном месте.

💨 google colab — бесплатная облачная среда от компании Google, позволяющая работать с jupiter блокнотами. Данный сервис предоставляет 12 ГБ ОЗУ и сессии до 12 часов. Так же, как и у остальных продуктов данной компании, реализована возможность совместного использования.

#rdclr_backend #NN
🔥1
Библиотеки для работы с нейронными сетями
Теперь рассмотрим основные библиотеки для построения и обучения нейронных сетей.

1. 🍏 TensorFlow — платформа с открытым исходным кодом, разработанная компанией Google для создания приложений глубокого обучения. Он также поддерживает традиционное машинное обучение.

Изначально TensorFlow разрабатывался для больших числовых вычислений без учета глубокого обучения. Однако, он оказался очень полезным и для разработки глубокого обучения, и поэтому Google открыл его исходный код.

2. 🍎 PyTorch — это библиотека машинного обучения, разработанная командой Facebook AI Reseach. Полностью основана на python и использующая мощность графических процессоров. Это также одна из предпочтительных исследовательских платформ глубокого обучения, созданная для обеспечения максимальной гибкости и скорости.

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

3. 🍐 Keras — это высокоуровневый API глубокого обучения. Keras относительно прост в освоении, так как предоставляет интерфейсы с высоким уровнем абстракции. Именно эту библиотеку рекомендуется начать изучать людям, которые только начинают освоение нейронных сетей.

P.S. В конце хотелось бы порекомендовать сайт, который будет полезен студентам и людям, работающим с нейронными сетями. Он позволяет строить базовые схемы нейронных сетей — alexlenail.me 🧩

#rdclr_backend #NN
👍1🔥1
🔥1
Перед тем, как перейти к теме следующего поста, хотелось бы рассказать о кейсе, с которым пришлось столкнуться в рамках учебного задания в универе.

Суть задания:
Описать и обучить нейронную сеть, которая будет переводить изображение из черно-белого формата в цветной.

Поработав над первой версией нейронной сети и прогнав через нее тренировочную выборку, получил неожиданный для меня результат. Все полученные изображения были с так называемым эффектом сепии, как у старых черно-белых фотографий (см. фото).
🔥2
Нейронные сети: принцип трансферного обучения
Одной из причин такого результата работы нейронной сети было то, что ей «не хватало» знаний о том, что изображено на конкретной картинке. Для того, чтобы исправить данную ситуацию, необходимо использовать уже готовое решение.

Transfer learning
♻️ Трансферное обучение — это повторное использование существующих моделей для решение новой задачи или проблемы.

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

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

🌗 Возвращаясь к задаче раскраски черно-белых изображений, одним из решений было использование предобученной нейронной сети для классификации изображений и объединение выхода данной нейронной сети с собственной нейронной сетью на определенном этапе ее работы. Это и позволило получать более приемлемые результаты.
#rdclr_backend #NN
Видосик про прятки от OpenAI

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

Например, OpenAi — компания, одним из основателей которой является Илон Маск. В видео ИИ учится играть в прятки. Приятного просмотра! 🙈
#NN #read
🔥1