Интересное что-то
522 subscribers
2.72K photos
253 videos
140 files
4.53K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from BeOps
System Design github repo 🕌

Проходил сис дизайн интервью в прошлый понедельник, а сегодня наткнулся на такой репозиторий: https://github.com/ByteByteGoHq/system-design-101?tab=readme-ov-file. Это просто библия для прохождения сис дизайна. По мне так отличное чтиво в мире сложных архитектурных решений. Здесь есть всё: от сравнений REST API и GraphQL до объяснений, почему Nginx называют reverse proxy. А если хочешь узнать, как работает Google Authenticator или почему Redis такой быстрый, то тут вообще велком.

Что здесь есть? (спойлер: ВСЁ) 🌍
- Архитектурные паттерны: Хочешь понять, что такое MVC, MVP, MVVM или даже VIPER? Легко.
- CI/CD: Хочешь почувствовать себя инженером Netflix? Добро пожаловать.
- Кэширование: Почему Redis так быстр? Как кэшировать данные правильно? Ответы здесь.
- Базы данных: Визуализация SQL-запросов, CAP-теорема и даже "8 структур данных, которые управляют вашими базами".
- Микросервисы: Лучшие практики, Kafka, и типичная архитектура микросервисов.
- Реальные кейсы: Хочешь понять, как Discord хранит триллионы сообщений или как YouTube справляется с потоковым видео? Этот репозиторий расскажет.


Документация понятным языком 😌
Здесь всё объясняется простыми словами, а визуализации помогут понять даже самые сложные концепции. Например, диаграммы HTTP-протоколов или сравнение Webhook и polling — это просто шедевры.
Что мне еще понравилось,это то что многие репозитории и статьи сосредотачиваются на одной теме — типа БД, DevOps или микросервисы. Но "System Design 101" — это будто шведский стол для инженеров: тут есть всё и сразу, причём подано так, что хочется взять добавки. Конечно, есть и другие хорошие источники (например, книги Фаулера или блоги Google), но этот репозиторий выигрывает своей компактностью и доступностью.

Добавляй в закладки и начни своё путешествие к званию мастера системного дизайна. Кароче, с таким багажом получаешь +10 к харизме на собеседованиях и +20 к навыкам архитектуры. Проверить это можно только одним способом — скачал, отсобесился, забрал офер на 500к.
Forwarded from Анализ, коты, цветы и Катя (Катерина)
🐰 Самый простой способ понять работу RabbitMQ 🐰

В сообществе аналитиков довольно известен этот визуализатор работы Kafka. Я узнала о нём из блога Системный сдвиг, а затем оценила классную рекомендацию по работе с ним от Yet Another Analyst.

Но поскольку я провожу уроки именно по RabbitMQ, стало интересно: А есть ли похожая визуализация RabbitMQ для тех, хочет быстро просто “увидеть”, как оно работает?

Оказывается, есть! И даже несколько:
🔗 TryRabbitMQ
🔗 RabbitMQ Visualizer

Я советую первый. Как с ним работать? Часть 1.


🚦 0. Добавьте producer и queue. Попробуйте соединить их напрямую. Добавьте exchange, соедините всё по схеме: producer → exchange → queue. Что то должно начинать получаться, потому что еxchange — обязательный этап маршрута в RabbitMQ. У связи exchange и queue появился binding — ключевой элемент понимания маршрутизации. Добавьте consumer. Попробуйте соединить consumer с exchange. Что-то снова будет не хватать. Но правильный порядок близок: producer → exchange → queue → consumer.

💥 1. Выберите для exchange тип fanout. Создайте еще 2 очереди и 2 потребителя и привяжите их к exchange. Отправьте сообщение без routing key. Куда оно ушло? Установите разные binding key и отправьте сообщения со случайными с routing key. Что происходит? Удалите один binding. Получает ли эта очередь сообщение? Здесь можно еще поэкспериментировать с ключами, Но основную особенность обменника типа fanout вы уже должны нащупать.

Это первые важные шаги для знакомства с базовой схемой кролика и типом обменника Fanout. Сохраняйте, пробуйте.

В следующем посте расскажу про упражнения для схем с Direct и Topic exchange — не пропустите!

#RabbitMQ #ОчередиСообщений #MessageBroker #SystemAnalyst
Forwarded from Анализ, коты, цветы и Катя (Катерина)
🐰 Самый простой способ понять работу RabbitMQ — Часть 2 🐰
🧵 Первая часть

В первой части я поделилась двумя визуализаторами для RabbitMQ:
🔗 TryRabbitMQ
🔗 RabbitMQ Visualizer
И простыми упражнениями, чтобы разобраться с типом обменника fanout.

Теперь давайте посмотрим на обменники типа Direct и Topic.

1) Очистим поле и снова создадим схему: producer → exchange → 3 очереди → 3 consumer'а. Тип обменника — direct. Для binding key укажем key1, key2, key3. Теперь отправим сообщение с routing key = key. Куда попало сообщение? Затем поочерёдно отправим сообщения с ключами key1, key2, key3. Попробуйте также: key1_1, key1.*, key1.#. Если всё сделали правильно — должны появиться мысли про "полное соответствие".

2) Меняем тип обменника на topic. Для binding key задаём: *.low.* , #.spb , *.high.#
Сразу подсказка: . — разделяет ключи, * — заменяет ровно одно слово, # — заменяет 0 и более слов. Пробуем отправлять: key1.low.smr, key1.middle.spb, key2.high.krd, low.smr, key, high и другие. Для полноты картины можно поэкспериментировать с регистром и пробелами.

3) RabbitMQ для практиков: создаём схему с несколькими exchange'ами, соединяем их как на картинке. Пробуем задавать разные типы для обменников, подбирать ключи и очереди, отправлять сообщения с разными routing key. И просто наблюдать, как идёт сообщение. На этом этапе особенно важен подход "А что если?.." и ваша фантазия.

💡 Еще в TryRabbitMQ можно поэкспериментировать с периодичностью отправки и анонимными очередями. Но, на мой взгляд, в визуализаторе эти функции реализованы довольно скучно и не слишком информативно.

📌 В последней части (на следующей неделе) расскажу, что нельзя увидеть в визуализаторе, куда копать тем, кто хочет больше.

#RabbitMQ #ОчередиСообщений #MessageBroker #SystemAnalyst
Forwarded from Refat Talks: Tech & AI
Media is too big
VIEW IN TELEGRAM
🤌 Anthropic выпустила курс AI Fluency - он супер и по контенту, и по оформлению

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

Главный инсайт курса - 79% пользователей застряли на уровне "automation" (тупо просят AI что-то сделать), а 21% успешных работают на уровне "augmentation" - относятся к AI как к умному коллеге.

Вот например (вроде база, но как хорошо систематизировано): 6-слойный промптинг:
- Контекст: кто ты, зачем спрашиваешь, как будешь использовать ответ
- Примеры: покажи что именно хочешь получить
- Ограничения: формат, длина, стиль ответа
- Шаги: разбей сложную задачу на этапы
- Thinking space: "подумай сначала, потом отвечай"
- Роль: "ты senior разработчик" или "ты UX-эксперт"

И то, что я использую часто - мета-обучение. Курс учит просить AI улучшать твои же промпты. "Claude, как бы ты переписал мой промпт чтобы получить лучший результат?" - и промпт эволюционирует от новичкового до экспертного за 2-3 итерации.

Практический пример с данными:
Было: "Claude, проанализируй эти данные"
Стало: "Ты data scientist с 10 летним опытом. Проанализируй данные как будто готовишь инсайты для CEO. Выдели 3 самых неожиданных паттерна с уровнем уверенности для каждого."

Разница в качестве - небо и земля.

Курс бесплатный, дают фреймворк который останется актуальным даже когда выйдет GPT-10. И да, учат составлять Personal AI Policy - набор правил как и когда использовать AI в работе.

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

Сделал саммари на русском, там же есть mindmap: https://pebble-athlete-3cb.notion.site/Anthropic-Academy-AI-Fluency-204eb5d3f3cb80c28d7ddd0591d55cfe

Но сам курс это не заменит, лучше пройдите (или пройдитесь по тому, что кажется новой информацией) самостоятельно, если интересна эта тема.
Forwarded from DataДжунгли🌳
#SQLWednesday

Сегодня обсудим классический вопрос с собеседования для #DataEngineer. 🪄
Вопрос звучит так:
"Перед тобой #csv файл 20ГБ, как откроешь?"
Конечно никакой pd.read_csv() тут не поможет это просто уложит ваше ядро в #JupyterNotebook.
-- Или поможет ? Дочитай до конца и узнаешь.
Такой вопрос могут задать на самом деле и Junior и Middle да и выше. Потому что не всегда очевидно как это сделать красиво и эффективно.

Самый эффективный способ работать с такого размера файлом это естесвенно загрузить его в базу.
#Postgres уже имеет нативный инструмент для работы с csv файлами и вот как это выглядит.


COPY raw.sales
FROM '/var/lib/postgresql/big_sales.csv' -- путь до файла на сервере или локальный путь(если постгре локальная).
WITH (
FORMAT csv, -- CSV-парсер
HEADER true, -- пропускаем строку заголовков
DELIMITER ',', -- если вдруг не запятая
QUOTE '"', -- кавычки по умолчанию
ENCODING 'UTF8' -- кодировка можно изменить если будет "криво"
);

Легко и просто. Но мы не всегда имеем доступ к серверной файловой системе, так вот как это сделать прям из JupyterNotebook не ломая ядро?

1. Для нашего эксперимента я сгенерировал файл гигант вес которого 13.4GB
2. У меня уже есть развернутый постгрес на удаленном сервере(вы можете локально установить)
3. Будем пользоваться любимым пандас с chunksize


import pandas as pd
import sqlalchemy as sa

DB = dict(
user="",
password="",
host="",
port=5432,
dbname="",
)
engine = sa.create_engine(
f"postgresql+psycopg2://{DB['user']}:{DB['password']}@{DB['host']}:{DB['port']}/{DB['dbname']}",
)

# параметры CSV
csv_path = "big_file.csv"
chunk_rows = 100_000 # будем грузить по 100K строк
table_name = "example_csv"
schema = "raw"

# создаём таблицу один раз с нужными колонками
with engine.begin() as conn:
conn.exec_driver_sql(f"""
CREATE SCHEMA IF NOT EXISTS {schema};
DROP TABLE IF EXISTS {schema}.{table_name};
CREATE TABLE {schema}.{table_name} (
col_0 text, col_1 text, col_2 text, col_3 text, col_4 text,
col_5 text, col_6 text, col_7 text, col_8 text, col_9 text
);
""")

# грузим чанками
reader = pd.read_csv(
csv_path,
chunksize=chunk_rows,
iterator=True,
header=0,
)

for i, chunk in enumerate(reader, 1):
chunk.to_sql(
name=table_name,
con=engine,
schema=schema,
if_exists="append",
index=False,
method="multi",
)
print(f"Чанк {i}: {len(chunk)} строк залито")

print("Готово!")


Пересылайте коллегам, чтобы не терялись на собеседованиях и знали что ответить 💡

Чтобы поиграть дома в DE тетрадку с кодом прилагаю 🧠

#DataJungle #Postgres #ETL
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Инжиниринг Данных (Dmitry)
Все знакомы с понятием Ad-hoc запросов. Обычно мы воспринимаем их негативно, так как они отвлекают, время-то и так мало.

На самом деле, ad-hoc запросы могут бысть источником quick wins, и способом быстро показать impact и завоевать доверие (earn trust).

Ad-hoc — это не бардак. Это VIP-запросы, которые показывают: вам доверяют. Ваша задача - не утонуть, а превратить это в рычаг для влияния.

Вот пример фреймфорка:

1. Принять быстро
Ответ в течение пары минут (или автоответ, если в фокусе) показывает: у нас есть процесс, а не паника.

2. Быстрое фильтрование (2 минуты):

- Это повлияет на $Xk+ или стратегию?
- Нужно на этой неделе для принятия решений?
- Делается за полдня одним аналитиком?
- Если да → делаем. Если нет - в бэклог с пометкой по приоритету.

3. Минимум, но по делу
- Отправляем краткий инсайт, график или SQL - что реально помогает. Повторилось 3 раза? → автоматизация.

📌 Чтобы не сгореть:

- Назначаем on-call-аналитика/инженера (10% времени спринта)
- Не забываем про ротацию и отслеживание нагрузки
- Повторяемые запросы → обучающие материалы или дашборды

Эскалации - через менеджера, не через «договорился в курилке».
Forwarded from дAI потестить!
Media is too big
VIEW IN TELEGRAM
Клонировать голос, бесплатно, без регистрации и смс

Появилась мысль озвучить мем определенным голосом, а подписка на 11labs закончилась. "Я не буду покупать тебе 11labs, потому что у тебя еще четыре 11labs дома лежат неоткрытые"
Тем временем 11labs у меня дома:

hailuo.ai
(Пока) бесплатный сервис, но ожидаю нефритового стержня в спину.
Можно настраивать эмоции.
Из минусов - не похоже😀

Fish-speech
Portable by NerualDreming | Portable | ComfyUI
Хорошо копирует манеру речи. Для коммерции использовать рано, но для TTS результат приятный. Влюблен. Снимаю шляпу.
Не забываем крутить на этой модели fish-speech-1.5.
Себе ставил по этой инструкции.
Есть в Pinokio. Есть в боте @AINetSD_bot

XTTS
Есть в Pinokio. Есть в боте @AINetSD_bot
Старый добрый XTTS. Не похож, да от него и не требуется. В ударения попадает, уже хорошо.
Кто любит эксперименты, может попробовать две русские модельки: первая от Tensor banana и вторая от малыша NeuroDonu.

F5-TTS
Есть в Pinokio.
Как подрубить русскую модель смотрим здесь.
Не советую😀. Не поможет.

P.S. На видео пират, потому что Heygen не любит знаменитостей.
P.S.S. Понятно чей голос клонировал?
Исходник приложил в комменты 👇👇👇.
P.S.S.S Мем я так и не сделал😐
#TTS
Около месяца назад Секвоя провела очень трушный AI ивент, мне его посоветовали посмотреть фаундеры которые шарят лучше меня, ну а я делюсь с вами:

https://www.youtube.com/playlist?list=PLOhHNjZItNnMEqGLRWkKjaMcdSJptkR08