Интересное что-то – Telegram
Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://news.1rj.ru/str/asisakov_channel
Чат: https://news.1rj.ru/str/youknowds_chat
Download Telegram
Forwarded from DevFM
Шаблоны проектировния микросервисов на практике

По мотивам недавно прошедшей конференции highload++ хотим поделиться замечательным докладом о тернистом пути построения микросервисов.

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

Но, как часто бывает в разработке, не всё получается сразу. Автор рассказывает о нескольких итерациях перехода на микросервисную архитектуру и проблемах, которые не решались с первого раза. Для решения возникавших проблем использовались некоторые шаблоны проектирования микросервисов, о которых рассказывает докладчик:

— Bounded context — правильное выделение зоны ответственности микросервиса. Мне очень нравится сформулированный в докладе принцип — микросервис должен автономно решать бизнес-задачу.

— Null object pattern — сводится к подстановке некоторых дефолтных значений, если не отвечает сервис, к которому обращаемся. Позволяет избежать каскадного отказа микросервисов, при котором из-за одного сломанного сервиса отваливается вся система.

— Circuit breaker — для настройки повторных запросов к сервисам и обращение к другим в случае какого-то отказа.

— Каскадные timeouts — непосредственно связан с предыдущим шаблоном. Неправильная настройка таймаутов сведет на нет circuit breaker.

— Health checks — проверка зависимых ресурсов микросервиса.

Применение этих шаблонов позволяет облегчить разработку, поддержку и починку возникающих проблем в микросервисной архитектуре.
#skills
Forwarded from commit history
Этап собеседования Machine Learning System Design.

Этот этап попадался в 9 из 10 компаний. Задача - полностью спроектировать  ML решение. От определения задачи и метрик, заканчивая деплоем и оптимизацией.
Здесь важный момент. Время собеседования ограничено. Поэтому с одной стороны важно не растекаться по дереву, с другой стороны важно покрыть все этапы решения ML задачи, а в некоторые даже погрузиться вглубь, чтобы показать что шарите.

В этом помогает четкая структура ответа:
1. Problem definition and requirement clarification. Определение задачи и оценка требований.
2. Data. Источники данных, какая разметка, как выглядит сэмпл.
3. Evaluation. Какие метрики, сравнение с бейзлайном.
4. Features and model. Препроцессинг, варианты моделей.
5. Online eval, deploy. Выкатка + АБ.
6. Further actions. Как дебажить/обновлять/улучшать/ускорять/итд модель.

Каждый из этапов более подробно разобран в репе ML design primer.

Порядок подготовки.
+ Посмотреть видео fb, яндекса, полистать гитхаб ml design primer.
+ Сделать себе пробный собес попробовать задизайнить систему из списка.
+ Почитать пару разборов из технических блогов компаний или инженеров. Например, тут или тут
+ Делать моки (mock-interview). Это когда вы созваниваетесь и устраиваете друг-другу пробный собес. Моки можно искать в этом чате.
+ Получаете фидбек с мока и идете качать слабые места, читаете еще статьи или главы из 329s.
Forwarded from commit history
Вброшу ссылок про литкод, мб кому пригодится.

В некоторых компаниях есть этап собеседования с алгоритмическими задачами. На собеседованиях ничего сложнее провалидировать скобки не попадалось, но если в стартапе есть ex-FAANG(MANGA) сотрудник, то могут дать что-то и на динамическое программирование. Ну и в компаниях упомянутых это тоже обязательный пункт. Олимпиадным программированием я не занимался, образование у меня не CS, поэтому все необходимые знания берем из интернета.

На литкоде есть раздел обучения, основные темы разобраны норм + есть практика в виде задачек. Для некоторых задач есть формальные доказательства решений и скорости (У меня правда на собесе такое только 1 раз спрашивали).
https://leetcode.com/explore/learn/

Есть переводы статей одного китайца. Оформлена в виде глав. Некоторые темы разобраны лучше, чем на литкоде, например, логика разделения на паттерны бинарного поиска.
https://labuladong.gitbook.io/algo-en/iii.-algorithmic-thinking/detailedbinarysearch

Список задач, покрывающий основные темы. Удобная сортировка по темам, сложности и компаниям + можно отмечать прогресс:
https://seanprashad.com/leetcode-patterns/

Данный список включает в себя задачи из списка blind-75
https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU
+ с курса на educative.
https://www.educative.io/courses/grokking-the-coding-interview

Решения задач, если где-то застряли можно посмотреть вот тут: https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf
Объяснения оч четкие и приятный английский. Изложение более интуитивно понятное, чем решения на литкоде и можно посмотреть за ходом мыслей.

Если кто хочет более фундаментальной подход, вот курс Седжвика https://www.coursera.org/learn/algorithms-part1#syllabus (но задания на джаве там)
Привет, дорогие мои подписчики 🤗

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

https://www.youtube.com/watch?v=JGVd_a3nVbE и
https://www.youtube.com/watch?v=z9CO-WRiREI - хорошие видео от Андрея, где вы обнаружите много чего интересного - от интервью на любой вкус и цвет (и даже со мной) до полезных видео для новичков и не только

https://gopractice.ru/product/added_value_metrics/ - незыблемо актуальная статья от Олега Якубенкова про разницу метрик роста и метрик продукта

https://amplitude.com/blog/product-north-star-metric - руководство от Amplitude по тому, как выбрать целеполагающую метрику (ака метрику полярной звезды) с книжкой внутри

https://towardsdatascience.com/defining-product-metrics-the-ultimate-guide-part-1-of-2-585b8c63fcef - очень люблю материалы этого блога (и этот тоже не исключение) - подробненько о метриках

https://medium.com/the-pm-digest/the-product-metrics-guide-c4a16d5640b6 - неплохой гайд по продуктовым метрикам с фреймворками и даже кое-какими инструментами в помощь

https://medium.com/@ll.ltsnk/how-to-build-a-product-metrics-map-1291ba2226d9 - краткое руководство, вещающее о том, как выстроить карту метрик (не опять, а снова с фреймворками, но повторенье - мать ученья!)

https://medium.com/datainterview/principles-and-frameworks-of-product-metrics-youtube-case-study-ff63257a82d3 - неплохой разбор подхода к продуктовым метрикам

https://medium.com/@userpilot/2022-guide-to-saas-product-metrics-for-product-growth-managers-5c349ffdf9b - познавательная статья про метрики для SaaS

Ну и классика : как-то был такой вот пост-словарик с метриками и, например, такая занятная статья от Mixpanel. Словом, успешного вам погружения в метрики!

Следующий пост будет про интервью и прочие полезности 🙂

#полезности #позапросамстраждущих
Forwarded from Phil Delgyado
Из моих статей - лучше уж https://habr.com/ru/company/oleg-bunin/blog/456514/
Forwarded from IT лекции
📌 Асинхронность в Python

#1: Введение - Смотреть
#2: Асинхронность с простыми функциями. Событийный цикл. - Смотреть
#3: Асинхронность на колбэках - Смотреть
#4: Генераторы и событийный цикл Round Robin - Смотреть
#5: Асинхронность на генераторах - Смотреть
#6: Корутины и yield from - Смотреть
#7: Asyncio, async/await - Смотреть
#8: Опять про генераторы - Смотреть

@itlecture
Forwarded from ИЦ "ГЕВИССТА"
Общие советы по прогнозированию рядов для учеников и не только
Активно общался на этой неделе с учениками, занимающимися прогнозированием временных рядов. Не спорьте, что лучше работает в вашей задаче, не зацикливайтесь на чем-то одном – бустинге, ARIMA, TFT или DeepAR. Пробуйте разные модели, идя от простых к сложным. Лучше написать метакласс, подать ему на вход разные модели от наивного прогноза до TFT и построить бейслайны. Ну а если хотите бустинг, то и про лес не забудьте, потом часто ребята забывают про метакласс BaggingRegressor, который дает вам сразу несколько методов ансаблирования: бэггинг, пэстинг, случайные подпространства и случайные патчи. Удобнее всего сделать такой метакласс в ETNA, у меня выше в выложенном материале по ETNA примеры есть (можно такой класс сделать на базе функции train_and_evaluate_model()). Иначе кучу времени убьете на тот же бустинг, а потом окажется, что его легко бьет модель сезонного скользящего среднего. Если рядов много, кластеризуйте (евклидово, DTW, по домену – по скорости оборота, по ценовому диапазону, сроку хранения и прочему) и стройте по кластерам.
В прогнозировании большого количества рядов обычно две универсальные ошибки – агрегация там, где нужна сегментация, и сегментация там, где нужна агрегация. Я постоянно привожу пример со скорингом кредитных карт – определяем размер лимита. У вас есть активные пользователи и пассивные пользователи. Для одних утилизация – сильная переменная, для других – слабая, в итоге модель выводит среднее по больнице. Так и в рядах. Взяли – собрали вместе редко покупаемые товары вместе с часто покупаемыми товарами и прогнозируем одной моделью, а лучше выделить в разные сегменты и разными моделями, не только разные наборы гиперпараметров, но надо и разные лоссы пробовать. С бустингом вообще частая ошибка – зацикленность на одном лоссе. Другой пример – пытаемся прогнозировать отдельными моделями втулки и скрепки. Возможно, лучше агрегировать в более общую категорию. Для товаров с редкими продажами обязательно попробовать zero-inflated models.
Джентльменский набор по FE для бейслайна – лаг по горизонту, скользящая статистика – по горизонту, если есть сезонность – компоненты ряда Фурье (период задаете по периодограмме) и календарные признаки для этой сезонности (а не скопом, сделаю-ка я все разом, бустинг сам разберется, так вот не разберется), если есть тренд и применяете бустинг – детрендинг. Но если тренд слабо выражен или затухающий, детрендинг может и навредить. Сразу кучу лагов и скользящих статистик не делаете, у вас на начальном этапе слишком мало информации. Делайте отладку – добавляйте признаки поэтапно и смотрите, как меняются прогнозы. На следующей неделе скину примеры такой отладки.
Если слышите «сейчас встречаю столько статей, посвященных применению (название метода/библиотеки), надо применять именно (название метода/библиотеки)», вспомните про «ошибку выжившего». Да, возможно много статей опубликовано по успешному применению какого-то конкретного метода/библиотеки для рядов. Однако задайте себе вопрос «а сколько статей не было напечатано/свернуто/выкинуто в корзину из-за того, что данный метод не оправдал себя, потерпел неудачу?». Полезно было бы именно эти статьи прочитать, но вряд ли мы их увидим, люди редко делятся проколами, для этого нужна определенная зрелость. Внимательно изучайте свои собственные неудачные проекты по рядам, неудачные соревнования по рядам, ведите failure history и интересуйтесь неудачными проектами по рядам, которые были у коллег, если те готовы делиться.
#python
Что изучать начинающим
Forwarded from DevFM
Подборка базовых материалов для python-разработчиков на 2022 год

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

Мы сформировали подборку бесплатных материалов из разных областей, которые гарантированно нужны разработчику. Опубликовали на pikabu и VC, кому как удобнее. Поддержите лайком, если годно.

Не нашли крутых материалов для начинающих по Linux. Если знаете такие, поделитесь в комментариях. Планируем ещё несколько подборок по специализациям.

#python #devfm