DE++ от Валентина
159 subscribers
33 photos
68 links
Буду сюда скидывать статьи и интересные штуки по data engineering и SWE в целом.
Пишу только про то, что сам прочитал

Написать можно в комменты или @valentinoneone
Download Telegram
DE++ от Валентина
Обзорный доклад про распределенные SQL-движки и оптимизации в них От чуваков, которые разрабатывают новые БД и системы к ним(!) Парни контрибьютили в Apache Calcite и Apache Ignate. И есть примеры и ссылки на исходники(!) Примеры не только из того что они…
Хороший доклад от Владимира. Примерно на половину повторяет прошлый доклад, но уже про другие SQL-движки.

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

Плюс каждый компонент в Presto/Trino присутствует в Spark в том или ином виде, что позволяет посмотреть на него со стороны. Понять, что это набор определённых технических решений и вообще-то есть другие способы сделать, то что делает спарк.

+ есть упоминание реальной задачи на динамическое программирования в оптимизаторе запросов. Просто для меня немного утвердится, что я не зря литкод решаю
Статья на минут 40 (если выполнять все шаги) в которой мы делаем свою простейшую систему сборки для Java.

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

Почему вдруг я заинтересовался билд системами?

Ну пару недель назад у меня была задача перенести внутреннюю библиотеку с версии scala 2.11 и spark 2.3 на 2.12-3.3.

Я конечно же решил пойти сложным путём и сделать кросс-компиляцию сразу для двух версий. И это заняло у меня слишком много времени.

Да, были проблемы не от меня зависящие:
1) У нас везде Gradle, а не Sbt где это есть в коробке
2) Плагин gradle-crossbuild-scala иногда больше мешал чем помогал и тд

Но больше всего мне мешало и бесило моё магическое мышление в отношении градла и в целом любой билд системы. За N лет я уже успел поработать на проектах с Maven, Gradle и Sbt. И ни разу не пытался разобраться, что там вообще происходит. А файлик с билдом пытался лишний раз не заглядывать.

Сейчас уже стало немного лучше. Дока и статейки почитаны. Доклады посмотрены.

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

Большой список «Сделай сам»
Восполнял недостаток опыта работы со Спарком с БД через JDBC путём созерцания исходников. Потому что на работу почти исключительно только hdfs.

И наткнулся на полезный нюанс:
1) Есть оптимизация «nested column pruning» (Не читаем колонки во вложенной структуре)
2) Спарк это поддерживает для ORC и Parquet (Но раньше нет)
3) Но до сих пор не поддерживает для jdbc
4) Учитывая что таске 4 год пошёл - это никому и не надо
Как же хорош последний пост Вастрика

Думаю, вся проблема в том, что те, кто пришли в ИТ из-за того, что им нравится программировать и изначально это было их хобби, продолжают смешивать хобби и работу

А так лучше не делать. На работе надо работать и изучать что будет ПОЛЕЗНО и иногда интересно.
А в свободное время в виде хобби можно изучать что ПО КАЙФУ, делать пет-проекты, опенсорсить или не программировать, а крестиком вышивать.

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

И стараюсь подходить к задачам со здоровым прагматизмом:
1) Стараюсь выбирать задачи, которые одновременно и полезные, и интересные мне -> Если придётся код выкинуть или переписать, то мне не так обидно, потому что было интересно и строчку в резюме написать можно.

2) Задача суперскучная? Переименовать поле в таблице? Пройтись по всем проектам и поправить одну строчку? -> Давайте две! Голова отдохнет. Смогу дочитать статью, отложенную в миллиарде открытых вкладок в браузере «на потом» или доклад/лекцию посмотреть и т.д
2👍1
На прошлой неделе я первый раз поучаствовал в хакатоне.

Зачем? Есть у меня кое-какие планы, что делать ближайшие полгода-год. Научится работать в более быстром темпе и мочь сделать MVP в короткие сроки – первые шаги в этих планах.

С технической точки зрения ничего уникального не было. Нужно было сделать бек и фронт. В бек части мы хотели сделать минимально рабочий ci-cd, но напоролись на недостаток опыта и потратили много времени на эту часть. В итоге, наша команда не вошла даже в топ 10, но это не главное, что я хотел оттуда получить.

Но вот какие вещи я для себя вынес в плане опыта:
1) Хорошо, что я начал углубляться в DevOps штуки. (Скоро расскажу подробности)
Для быстрой разработки - без этого никуда. Настроить моментальную обратную связь с проектом необходимо, чтобы не обновлять изменения руками каждый раз теряя при этом время. И настроить быстро. Желательно иметь уже готовый шаблон, который развернуть минут за 30 на проект с нуля.
2) Не хватает знания фронтенда. У меня уже было несколько попыток начать, но бросал в самом начале. Буду закрывать это после devops.
3) Я немного растерял навыки бекэнда за 2 DE-шных года. Надо возвращать. Возможно, в ближайшем будущем попробую FastApi.
4) Хакатон хороший вариант познакомится с людьми. 2 дня плотной работы очень ясно дадут понять хочешь ли ты работать с кем-то из команды или нет.

В принципе желание участвовать не отбило, но теперь более серьёзные критерии будут при выборе:
1) Если хочется победить, то идти только с уже +- проверенными людьми. Конфликтует с 4 пунктом. Но тут надо выбирать - новые знакомства или победа.
2) Надо минимум 2 человека на специализацию. Команда не должна зависеть от одного человека. Наверное, можно пренебречь если выполнить 1 пункт.
3) Желательно, оффлайн. Потому что онлайн я попробовал и хочется по-другому тоже попробовать. Из плюсов думаю будет: более быстрая и простая коммуникация и меньше шансов отвлекаться. Но надо пробовать, а не думать.
❤‍🔥5
Отличный доклад от Кирилла Мокевнина про конечные автоматы.
Он не про DE абсолютно, и я бы его посоветовал его посмотреть каждому программисту.

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

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

Первый доклад с плохим звуком и видео, очень фронтенд ориентированная. Объясняющая почему реакт был круче других фреймворков 7 лет назад
👍2❤‍🔥1
«На энтузиазме далеко не уедешь»

Кто сказал не важно. Но я это однозначно сам прочувствовал много раз, но всё равно попадаюсь на это с периодичностью в n месяцев.

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

Конкретно в этот раз я приуныл от того, что скорее всего то изменение над которым я корпел неделю по часу после работы и литкоды не очень и было нужно + никто не говорит, что оно не надо и продолжают ревьють))

Историю PR можно посмотреть ТУТ

Обычно после разочарования идёт какая-то пост-рационализация аля: «Ну это никому и не особо нужно было и на собесах всем пофиг» или «Там DataBricks капитализация >30B, а я бесплатно волонтёрю». Но я думаю это не особо важная часть.

Поэтому я решил вместо одной деятельности заняться 3 другими 🤡 и подкрепить какой-то ещё мотиваций. О видах мотивации и моих активностях расскажу, но уже в следующем посте.

DE++ от Валентина
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Так вот, чем я решил нагрузить себя вместо ковыряния спарка и какими мотивациями я их подкрепил:

1) Вступил в рабочую группу Potogonn где надо писать посты каждый день при поддержке Фила и Всеволода. Так что должен буду писать регулярно и взаимодействовать с другими участниками + заставили завести твиттер т_т

Мотивация: дедлайны, долгосрочная инвестиция (в личный бренд)

2) Вступил в учебную группу от Влада Тена — мешки ворочать тоже надо
Концепция такая – выбирается какой-то открытый курс крутого универа по CS.
На неделю выдаются планы, что делать. На выходных созвон на которых мы обсуждаем, что непонятно и шеймим того кто не выполнил план (шутка).

Первый курс про БД от Andy Pavlo в CMU.
Как наберётся контента – напишу подробнее. На прошлой неделе пока что только посмотрел 2 лекции и собрал проект. Придётся окунутся в C++ и OS.

Мотивация: мне интересно, строгие дедлайны, ощущение конкурентности (если другие смогли, то я тоже смогу)

3) Прохожу набор курсов от хекслет DevOps для Программистов – в описании всё есть. Уже прошёл 2 курса: по командной строке и Ansible. Пока очень нравится. Пару вещей уже начал применять на работе.

Мотивация: мне нужно (на текущей и будущей работе). Заплатил деньги и теперь жаба душит не использовать (даже если деньги не мои)


Мой твиттер - думаю буду писать часть постов отсюда + что-то небольшое и быстрое что сюда лучше не стоит
Тред где Андрей хорошо продолжил мой пост про энтузиазм
DE++ от Валентина
🔥3👍1
Сегодня и завтра буду на highload++ 2023
Первый раз на конфе такого размера. Обычно только по митапам ходил.

Если кто-то тоже идёт – пишите!

В комментариях будут доклады этого дня, которые мне интересны (в порядке убывания) и какие-то посты по ходу конференции, чтобы не засорять ленту канала
🔥2
Сходил на Highload++ и сильно разочарован

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

И, мне кажется, идея со стендами компаний, где выдают мерч за разные (в основном тупые) активности убивает оба ожидания.

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

И ты либо забиваешь на доклады и спокойно жрёшь, собираешь бесполезную хрень со стендов и стоишь в очередях.
ИЛИ
бегаешь с доклада на доклад, но поговорить тоже не особо получается – удобных мест для разговора нет, либо стулья в местах с едой, либо болтай стоя. Ну и часть возможных собеседников стоят в очереди, потому что все мы люди и падки на халяву. Ведь 50к за билет платит компания, а плюшевую хрень и стикеры за 100 рублей получаешь ты.

Есть ещё пункт, что в среднем доклады были так себе, но это слишком субъективное и возможно я за год просто посмотрел всё, что стоило посмотреть. И теперь надо искать на английском или другой источник (лекции, науч. статьи)

Не иронично в следующий раз попробую заставить компанию оплатить билет на Переделоно Конф.

DE++ от Валентина
😢6👍1
CMU Intro to Database Systems - Часть 1

Последние две недели смотрю, наверное, лучший университетский курс по БД.

Так тут будет тред про этот курс + задачи + ещё мои заметки по теме

Сначала пункты почему я считаю, что он лучший:
1) Лектор – Andy Pavlo, однозначно крутой спец, рассказывает интересно и понятно, преподают уже кучу лет, статьи научные пишет, свой стартап по БД OtterTune, на лекции первые слайды – новости в индустрии. В общем, на острие науки про БД мужик. Почувствуете его крутость с первой лекции.

2) Слайды на лекциях – моё почтение.
Даже если по описанию какого-то алгоритма ничего не понятно, то после слайдов с пошаговым объяснением понимание приходит.

3) Всё в открытом доступе – все свежие лекции в хорошем качестве и монтаже лежат на ютубе. Там же ссылки на конспекты и слайды. Лекции выкладывают почти сразу. Этот курс в 2023 закончился неделю назад.

А самое главное есть доступ к приёмочной системе практических задач! Я такого не видел, обычно даже самые крутые университеты так не делают.

За этого Andy, конечно, огромный респект

4) Хардкор – ну тут и так понятно. Заглядывают внутрь работы БД очень глубоко.
Требования к курсу – архитектура компьютера и С++, если выполнять практические задания. Но думаю, можно добирать знания по ходу курса, если будет не хватать.


После таких вводных вспоминаю свои 2 семестра по БД в итмо и плакать хочется.

Сайт курса
Ссылка на лекции на YouTube
DE++ от Валентина
👍3🔥2
Лекция 1:
В 2023 плохой звук, можно посмотреть из 2022, там тоже самое, но звук чуть лучше
История БД, проблемы создания БД, как жили до реляционной модели, реляционная модель и р. алгебра и по верхам noSQL

Лекция 2:
Введение в SQL. Все основные конструкции, включая окна. Это примерно все знают. Так что дальше

Лекция 3:
Уже пошла мякотка. Для DE тоже можно узнать новое.

Разные типы памяти, почему Операционные Системы - это "враг" БД. Почему нельзя использовать виртуальную память, когда пишешь БД. Как БД хранит страницы. Хранение по картежам. Слотированные страницы.

Лекция 4:
Разные способы организации записи и чтения данных: Heap Storage, Log-structured storage и index-organized storage.

Word-aligned tuples и способы решения. (Вот этого я не знал, очень понравилась демонстрационная часть с PostgreSQL)
Как хранятся разные типы данных, null значения.

Лекция 5:
Типы нагрузок БД: OLTP, OLAP, Hybrid. Storage Models: хранение по строкам или колонкам. Как это физически организовано. Разные методы кодировок: RLE, Bit packing, dictionary и т.д.
Слайды опять хочется похвалить. Смотреть одно удовольствие.

Вообще, лекции 3-5 сильно пересекаются с начальными главами Кабанчика и Database Internals.
Но мне после этих лекций (и видео контента в целом) было проще читать эти главы, так как уже есть общее представление.

DE++ от Валентина
👍4🔥3
Возвращаемся к жизни

Нулевой проект занял больше времени, чем я предполагал. А потом я уронил прод на работе и завертелось…
Так что пока что обзор на 2 лекции

Лекция 6:
Сущность «Buffer Pool», что он в целом делает в БД, способы оптимизации. Немного про алгоритмы выбора, что кешировать. Clock и LRU-кеши. Проблемы записи данных. Опять борьба БД с OS, fsync

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

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

В целом просто хорошая лекция про хеширование. Можно смотреть в отрыве от курса про бд! Многое узнал (потому что не особо интересовался)

Static и Extendible Hashing, Linear probe, Cuckoo (Я вообще не знал про это), Chained, Linear Hashing.
Быстро, но понятно про Bloom Filter.

После лекции стало понятно, что значит "probe miss" в Спарке у HashAggregate.
+ на фоне разворачивается побочная романтическая история ❤️

hur.st/bloomfilter - Наглядная ссылка про Bloom Filter
DE++ от Валентина
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51❤‍🔥1
Крутейший выпуск подлодки про NeRF’ы и VR

Сначала про гостя – Андрей Володин, ускорял нейронки в Prizma потом работал над “Нет Монет”. Рассказывает про работу и сложные штуки живо, интересно и очень увлечённо. Сложно не заразится хоть частью такого настроя.

Почти 3 часа — это многовато. Так что, если будут сомнения слушать или нет - советую попробовать первые 30 минут. Дальше не оторвётесь. (Весь кринж навален в первые 3 минуты, аккуратнее)

Основная тема – это VR. В целом про индустрию, технические сложности, графику и проблемы в индустрии. Подойдёт всем и тот, кто уже интересуется (как я) и тот, кто вообще ничего не знает про VR, но хочет узнать.

Вторая тема – чтобы было понятно, что Андрей делает сейчас пришлось рассказать про целый набор сложных, но интересных вещей: нейронки NeRF, гауссовские сплаты, проблемы нативной разработки для VR и оптимизации.

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

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

Картинки и описание что такое NeRF’ы
Сайт стартапа Андрея с примерами
Их конкуренты

DE++ от Валентина
❤‍🔥5
Вот настолько я зарядился этим разговором

Решил дать второй шанс VR'у
И второй шанс себе, потому что я уже покупал Quest 2 в 2021, чтобы работать в VR и что-то делать для него🤡.

В итоге все идеи так и остались идеями, из сделанного только N песен на эксперте в Beat Saber, а я тоже попал в группу тех, у кого шлем в основном собирает пыль. Потом отдал его брату и там его вроде используют. Хоть так.

Пока планы такие:
1) Попробовать демки Gracia
2) Настроить среду и ПоПрОгРаМмИрОвАтЬ в очках
3) Снова расчехлить курс по Unity для VR и сделать хоть что-то
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4👍2
У меня на работе сейчас и последние месяцы мало интересных DE задач, поэтому начал смотреть по сторонам и делать что-то смежное для роста в T-shape, если говорить по-модному.

Так что вот доклад в тему про то, как утроено рабочее окружение у команды Hexlet’a.
Если коротко, то:
1) Вы со своей машины только подключаетесь по ssh на сервер и вообще всё делаете там
2) Для изоляции все проекты в docker-compose или Vagrant
3) Для настройки машин Ansible
4) Makefile для унификации команд для проекта
5) asdf для разных версий языков
И другое. Но это самое полезное на мой взгляд.

Первая моя реакция была: "жесть как круто, хочу так же!". Но понятно, что это не полностью применимо под DE разработку.

Я вот уже научился локально поднимать Airflow в контейнерах и тестировать часть логики дагов локально. Это гораздо быстрее, чем ждать пока ci-cd всё соберёт. (Да, иногда приходилось прогонять пайплайн, чтобы потом увидеть ошибку синтаксиса, я тоже от этого не в восторге)
Ещё Makefile точно возьму, но он в последнюю очередь должен идти
И asdf для питона разных версий попробую

Там всего 30 минут без вопросов. Интересно даже просто узнать, как другие люди работают.

DE++ от Валентина
🔥4
Полуреклама, но хорошая, правда

Один из моих первых подписчиков, тоже решил вести канал в телеге про DE.
У него контент для DE уровня Junior-Middle с упором на реальные задачи. Но мне тоже полезно, например, про моделирование данных, я сейчас на работе этим вообще не занимаюсь.
Или один из последних постов он написал в “моём стиле” обзор на доклад про вставку в ClickHouse.

И посты выходят регулярно. В отличии от некоторых, кхе-кхе
С начала января там уже нормальное количество контента накопилось.

Вообще я очень люблю нишевые каналы в телеге, так что если вы ведете или читаете что-то такое (необязательно про DE и IT), то напишите в комментариях! (Что-то типа на 2-500 подписчиков)

Но только после того, как посмотрите канал Алексея, хорошо?

rzv_de от Алексея
3🔥1
Был в месячном мега отпуске в Австралии (и чуть-чуть в Сингапуре) И сходил на 2 митапа в Мельбурне

Так что в этом посте будут очень субъективные наблюдения и мысли, основанные на поверхностных наблюдениях.

Первый про MLOps, второй про dbt. Ещё хотел сходить в офис Microsoft на мастер класс с ChatGPT, но не получилось. Обе темы меня мало касаются, но я не шёл ради докладов.
Я точно хотел:
1) Потренировать английский
2) Побыть на митапе не в РФ
3) Побольше узнать про работу и задачи в стране

Выводы, основанные на такой внушительной выборке:
1) Я могу потянуть разговор на англе
2) Тут митапы это именно про встретиться и поболтать. Доклады – это второстепенное, что-то не сложное на 20-30 минут.
Раньше я выбирал идти или нет только по темам.

Побочный продукт – ушёл мой личный страх про то, что у меня нет опыта в облаках и каких-то инструментов, которые популярны там. Может это потом вылезет, но я послушал какие задачи они решают и сейчас перестал парится на этот счёт.

В целом:
За головокружительной карьерой сюда точно ехать не стоит. А вот если хочется уехать подальше от всего мира, в 5 часов закрывать ноут и идти заниматься вашим любимым водным спортом или хайкать, то Австралия – это ваш бро!

Стиль жизни напоминает Американский (я там не был, но смотрел миллион видосов и сами американцы так сказали), но(!) без американских зарплат. А зачем тогда?

DE++ от Валентина
👍8🔥3
Возвращаемся к формату докладов

Вообще я хотел что-то глянуть, чтобы понять, что такое Feature Store и зачем оно нужно, когда надо, когда нет и т.д.

В целом, я, конечно, понял, что это такое. Но фоном, потому что доклад не про это.
Он больше про проектирование архитектуры серверной highload штуковины (в нашем случае это FC).
Ответы на вопросы: что мониторить, какие лимиты ставить, точки отказа.

Их история построения своего FC началась в 2015, когда ещё никаких нормальных готовых решений не было. Надо ли сейчас такое самому делать ответа не было.

Я пока не готовился, но выглядит как хороший доклад на подготовку к System Design интервью.

Узнал, что существует Samza (типа Flink от LinkedIn’a)

Более обзорный доклад про FC, чтобы получить на вопросы в начале, надеюсь ещё найду и посмотрю🤔

DE++ от Валентина
Please open Telegram to view this post
VIEW IN TELEGRAM
Spark Native UDF

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

Все кто используют спарк сразу узнают про UDF, а потом, что их желательно не использовать, потому что:
1) Catalyst не знает, что в этой UDF происходит и не может это оптимизировать. Больше всего нас интересует Predicate pushdown, но вероятно, есть и ещё какие-то
2) Кодогенерация не работает и добавляет лишние проверки на null и try-catch конструкции
3) Если udf работает со строками, то происходит конвертация из String UTF-8 в UTF-16 и обратно. (Спарк работает c utf-8, а Java с utf16)

А что можно с этим делать?
На самом деле не очень много:
1) Переписать на встроенные функции или на
2) Забить
3) (Вроде как у pySpark тоже есть способы ускорить, но я пока в это не погружался + сомневаюсь, что это будет быстрее последнего варианта)
4) Написать свою "нативную" функцию и встроить внутрь Spark.
Т.е. по сути расширить язык Spark SQL своим новым выражением(Expression), чтобы Catalyst начал понимать что это такое. И подставлять Java код, куда сможет (если вы написали)

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

Я написал пару тестовых функций и 1 однострочник из реального кода на проде и просто несколько вечеров сидел, смотрел
1) как java код генерится при nullSafeCodeGen и defineCodeGen,
2) насколько быстрее это работает
3) что меняется в разных версиях спарка
4) работает ли Predicate Pushdown если не писать defineCodeGen, а только eval (да, если нужен только PP то можно не страдать с джавой)
и т.д

Планы:
1) Ускорить один расчёт, который кушоет от 600-800 cores и работает 4-5 часов. (в нём есть 15 udf, но на нативные надо переписать только 2-3)
2) Научится +- честно мерить скорость расчётов в спарке
3) Взять какую-то сложную udf на строк 10-20 на питоне и ускорять всеми способами, постепенно дойти до нативной и померить каждый шаг (очень долгая история, но составит полную картину)

P.S. Не забывайте ставить точки с запятой! В Java они всё ещё нужны!!!💩

Источники:
Единственное видео про это от DB неплохое
Единственная статья на русском по мотивам видео хорошая)
Статья от DataBricks зачем они делают CodeGen в Spark

Простенькая статья с примером UUID и реализацией без кодогена, а через eval
Тоже статья с кодом посложнее и примером BinaryExpression

Статья где показано как правильно регистрировать функцию, чтобы можно было использовать в sql
Примеры функций (порт функций из Postgres и Teradata)
Сорцы спарка - как обычно лучший источник примеров

DE++ от Валентина
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥62