Интересное что-то
553 subscribers
2.79K photos
253 videos
140 files
4.59K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
В процессе реализации решений на Leetcode понял, что совсем не помню алгоритмы прохода по бинарному дереву 🌳.

Предлагаю вспомнить варианты поиска в глубину (Depth-first search).

Классических вариантов 3:
1. DFS Preorder. Классический проход в глубину, где сначала проходится корень дерева, далее спускается по каждой ветке слева направо вглубь до самого глубокого листа.

2. DFS Inorder. Обратный проход. Начинается с левого листа, далее в вершину, потом обратно на уровень ниже в правый лист.

3. DFS Posorder. Обратный проход. Начинается с левого листа нижнего, проходя по всем одноуровневым листам слева направо, только потом поднимаемся на уровень выше.

Для тех кто ничего не понял, приведены картинки и справа для сравнения поиск в ширину (BFS).

Предлагаю рассмотреть красивые рекурсивные реализации данных методов для примера с картинки.

class Node:
def __init__(self, key):
self.left = None
self.right = None
self.val = key


def preorder(root):
return [root.val] + preorder(root.left) + preorder(root.right) if root else []

def inorder(root):
return inorder(root.left) + [root.val] + inorder(root.right) if root else []

def postorder(root):
return postorder(root.left) + postorder(root.right) + [root.val] if root else []


# Пример
if __name__ == "__main__":
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)

# Вызов функций
print(f"DFS preorder {preorder(root)}")
print(f"DFS inorder {inorder(root)}")
print(f"DFS postorder {postorder(root)}")

В целом, полезно знать при работе с графами. Могут спросить на душных технических собесах, к которым я и готовлюсь🤓💼
Forwarded from DevFM
Практика распила монолита

Несколько лет в индустрии шли жаркие споры "микросервисы против монолитов". У каждой из сторон было множество адептов. Однозначного решения нет.

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

— контейнеризация и хранение контейнеров

— применение API Gateway, настоящего швейцарского ножа в мире микросервисов для решения сотни инфраструктурных задач

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

— tracing, прослеживание пути запроса среди множества сервисов. Предлагаемое решение jaeger мы уже упоминали в отдельном посте про разухабистое логгирование

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

В статье приводятся не только теоретические выкладки, но и конкретные инструменты. Отдельно можно порекомендовать сервис, которым пользуется автор для выбора инструментов — Cloud Native Computing Foundation. Очень классная интерактивная и наглядная карта, где для различных задач собраны сервисы, решающие эти задачи.

В заключении автор напоминает: прежде чем внедрять — подумайте, какие задачи и проблемы вы этим решаете. Эта истина применима к любой технологии
#skills
Forwarded from Big data world
This media is not supported in your browser
VIEW IN TELEGRAM
Представляем PivotTableJS,которыйпозволяет интерактивно анализировать данные в Jupyter 🚀

https://shly.link/ghM2PV
#interview #ml #systemdesign
По описанию показалось, что там много материала. Но пробежаться достаточно
Forwarded from Записки MLEшника (Egor)
Как говорил Сократ: "Я знаю только то, что ничего не знаю". Словил сегодня вечером это чувство, когда блуждал по репе Тинькоф.

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

Ех, вот и как развиваться, когда глаза разбегаются 🥲
Forwarded from DevFM
Покоряем большие CSV

Классная практическая статья Working with large CSV files in Python from Scratch рассказывает о хитростях работы с большими CSV-файлами.

В статье рассматриваются примеры:
— подсчёт строк в большом файле. Для этого применяется mmap, который использует низкоуровневое API операционной системы. Это позволяет ускорить чтение большого файла. Сам mmap заслуживает отдельной статьи. В ней с примерами на питоне объясняется, откуда берётся ускорение, плюс другие интересности, в том числе уровня системных вызовов ядра

— разбиение большого файла на части, с которыми дальше удобнее работать

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

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

Мы на практике неоднократно сталкивались с гигабайтными CSV, которые иногда даже не умещались в оперативную память.

Например, вы знаете, что линуксовый sort --unique читает файл целиком в оперативную память? А для работы ему надо примерно в 2,5 раза больше памяти, чем весит исходный файл. То есть для сортировки файла в 10 гигов нужно около 25 гигов оперативной памяти. Решение этой проблемы заслуживает отдельного поста.
#python
#ml #finance
Цикл статей про ML в банках
Redis: основы и практическое использование

Redis — база данных типа «ключ-значение». Она невероятно простая, но хорошо себя зарекомендовала как хранилище временных данных.

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

Подробнее: 👉тут

#видео #теория
Forwarded from Борис опять
Отличный интерактивный тренажер по SQL с наглядными иллюстрациями

https://pgexercises.com/
Forwarded from Kaggling (Vadim Irtlach)
Всем привет! Сегодня хочу с вами поделиться документом, которым я пользовался на протяжение всего Feedback Prize 3.0 соревнования, где мы получили серебро. Там какую-ту часть информации я удалил, потому что оно было связано больше с данными из соревнования, но все названия статей и соответственно к ним ссылки приложены.
Пусть это для вас будет как методичка или шпаргалка! Удачи на будущих NLP соревнованиях!

https://docs.google.com/document/d/11Kq3XbYCgYKB3sgHlntNDyF6pCD_Smn6pMbfQl-vuAU