Python с JIT и настоящим параллелизмом
Этой осенью выйдет финальный релиз Python 3.13.
И он несёт в себе сразу две гигантские истории, о которых спорили многие годы, которые ждали десятилетия 🧙♂
В питон (здесь мы имеем ввиду реализацию именно CPython) наконец-то завезли встроенный JIT - just-in-time компилятор. Теперь наиболее востребованные участки кода могут компилироваться в машинный код под конкретную платформу и исполняться быстрее. Пока JIT не включен по умолчанию и требует специальной сборки питон и запуска с флагом
Параллелизм - как много в этом слове 🚀 В питоне истинному параллельному исполнению кода (не путать с асинхронностью) в рамках разных потоков одного процесса всегда мешал GIL. Этот global interpreter lock даёт исполнять код только одному потоку, сколько бы у вас их не было. В версии 3.13 появляется возможность отключить GIL и больше никто не будет блокировать ваши многопоточные приложения. Опять таки изменение уж больно глобальное и включается не по умолчанию, а через отдельный бинарник -
Первый релиз кандидат Python 3.13 вышел уже 1 августа, так что можно пробовать и экспериментировать.
О других немаловажных изменениях можно почитать в Python 3.13 changelog.
До связи 🤟
Этой осенью выйдет финальный релиз Python 3.13.
И он несёт в себе сразу две гигантские истории, о которых спорили многие годы, которые ждали десятилетия 🧙♂
В питон (здесь мы имеем ввиду реализацию именно CPython) наконец-то завезли встроенный JIT - just-in-time компилятор. Теперь наиболее востребованные участки кода могут компилироваться в машинный код под конкретную платформу и исполняться быстрее. Пока JIT не включен по умолчанию и требует специальной сборки питон и запуска с флагом
--enable-experimental-jit
. Разработчики говорят, что ещё есть какие-то минорные баги и прирост скорости не вау, но это первый шаг - в следующих версиях станет лучше.Параллелизм - как много в этом слове 🚀 В питоне истинному параллельному исполнению кода (не путать с асинхронностью) в рамках разных потоков одного процесса всегда мешал GIL. Этот global interpreter lock даёт исполнять код только одному потоку, сколько бы у вас их не было. В версии 3.13 появляется возможность отключить GIL и больше никто не будет блокировать ваши многопоточные приложения. Опять таки изменение уж больно глобальное и включается не по умолчанию, а через отдельный бинарник -
python3.13t
.Первый релиз кандидат Python 3.13 вышел уже 1 августа, так что можно пробовать и экспериментировать.
О других немаловажных изменениях можно почитать в Python 3.13 changelog.
До связи 🤟
👍7🔥3
Библиотека компонентов Mantine
Давно ничего из мира Frontend не обсуждали, а давайте сегодня ✊
Обычно, интерфейс хочется собирать уже на базе готовой библиотеки компонентов. И лучше бы она была с тысячами или десятками тысяч звезд на Github, проверена временем и отлажене на множестве проектов.
У всех в голове всплывает свой набор таких либ. У меня для React в голове возникают гиганты типа Material UI и Ant Design. Но не так давно я случайно наткнулся на Mantine.
Мне сразу приглянулся визуальный стиль - смотрю дальше 👀
Под капотом TypeScript 🦾, css-modules, активно используются CSS variables. Проект разбит на core и дополнительные пакеты - устанавливать можно только то, что действительно юзается в проекте.
Что еще есть - да почти все:
- темная / светлая тема и тотальная кастомизация цветов и темы в целом
- более обычных 100 компонент (кнопки, инпуты, селекты, слайдеры, табы, модалки и т.д.)
- Mantine UI - более 100 высокоуровневых компонент для быстрой сборки сайтов (карточки, карусели, готовые секции страниц, баннеры, комментарии и т.д.)
- Mantine Hooks - собственная библиотека различных хуков для реакт (use-media-query, use-clipboard и т.д.)
- Mantine Form - библиотека форм на хуках (c валидациями и прочими прелестями)
- Mantine Dates - все для работы с датами и временем на базе dayjs
- Mantine Charts - графики и диаграммы на базе recharts v2
- поддержка SSR с шаблонами для Next.js или Remix
- и даже встроенная поддержка право-левого интерфейса (RTL) есть!
Боевого опыта у меня лично или на моих проектах пока нет, но думаю, что скоро будет.
Всем быстрой верстки!
До связи 🤟
Давно ничего из мира Frontend не обсуждали, а давайте сегодня ✊
Обычно, интерфейс хочется собирать уже на базе готовой библиотеки компонентов. И лучше бы она была с тысячами или десятками тысяч звезд на Github, проверена временем и отлажене на множестве проектов.
У всех в голове всплывает свой набор таких либ. У меня для React в голове возникают гиганты типа Material UI и Ant Design. Но не так давно я случайно наткнулся на Mantine.
Мне сразу приглянулся визуальный стиль - смотрю дальше 👀
Под капотом TypeScript 🦾, css-modules, активно используются CSS variables. Проект разбит на core и дополнительные пакеты - устанавливать можно только то, что действительно юзается в проекте.
Что еще есть - да почти все:
- темная / светлая тема и тотальная кастомизация цветов и темы в целом
- более обычных 100 компонент (кнопки, инпуты, селекты, слайдеры, табы, модалки и т.д.)
- Mantine UI - более 100 высокоуровневых компонент для быстрой сборки сайтов (карточки, карусели, готовые секции страниц, баннеры, комментарии и т.д.)
- Mantine Hooks - собственная библиотека различных хуков для реакт (use-media-query, use-clipboard и т.д.)
- Mantine Form - библиотека форм на хуках (c валидациями и прочими прелестями)
- Mantine Dates - все для работы с датами и временем на базе dayjs
- Mantine Charts - графики и диаграммы на базе recharts v2
- поддержка SSR с шаблонами для Next.js или Remix
- и даже встроенная поддержка право-левого интерфейса (RTL) есть!
Боевого опыта у меня лично или на моих проектах пока нет, но думаю, что скоро будет.
Всем быстрой верстки!
До связи 🤟
👍12
Вот и прошел очередной 256-ой день в году, день программиста. Всех с праздником!
Такая молодая наша профессия уже успела внести неоценимый вклад в жизнь каждого:
🛜 Мы соединиили людей по всему миру благодаря интернету, email, соц. сетям и мессенджерам
🦾 На наших плечах зародились и выросли гигантские технологические компании, которые очень во многом определяют вектор развития всего человечества
🎮 На компьютерных играх, а так же коротких и длинных видосах выросли уже целые поколения
🧠 Наш неуёмный разум создает все более и более мощные системы ИИ, которые возможно очень скоро сыграют со всеми нами злую шутку...
Будем и дальше изменять мир к лучшем или просто творить just for fun!
До связи 🤟
Такая молодая наша профессия уже успела внести неоценимый вклад в жизнь каждого:
🛜 Мы соединиили людей по всему миру благодаря интернету, email, соц. сетям и мессенджерам
🦾 На наших плечах зародились и выросли гигантские технологические компании, которые очень во многом определяют вектор развития всего человечества
🎮 На компьютерных играх, а так же коротких и длинных видосах выросли уже целые поколения
🧠 Наш неуёмный разум создает все более и более мощные системы ИИ, которые возможно очень скоро сыграют со всеми нами злую шутку...
Будем и дальше изменять мир к лучшем или просто творить just for fun!
До связи 🤟
🔥10🎉2👍1
Продолжаем активно искать к нам в команду толковых ребят с глубокими знаниями TypeScript и Node.js. Все основное под капотом собрано на картинке 👀
Вооружившись этим арсеналом, а так же слабоумием и отвагой разрабатываем суперапп для рынка Кафе & Ресторанов!
Подробнее на HH:
https://hh.ru/vacancy/106348216
Если интересно, то можно написать мне в личку - @a_s_rusakov.
До связи 🤟
Вооружившись этим арсеналом, а так же слабоумием и отвагой разрабатываем суперапп для рынка Кафе & Ресторанов!
Подробнее на HH:
https://hh.ru/vacancy/106348216
Если интересно, то можно написать мне в личку - @a_s_rusakov.
До связи 🤟
🔥6👍1🤔1
Пагинация - основные способы и подводные камни
Пагинация — это метод разделения большого набора данных на порции. С точки зрения Frontend это всего лишь способ постранично вывести информацию. С точки зрения Backend пагинация скорее обязательна к использованию. Вместо передачи всего набора данных, сервер отправляет только малую часть, снижая нагрузку на БД и сеть, а так же улучшая общую пропускную способность и время отклика.
Если говорить о реализации, то выделяются 2 базовых способа:
1️⃣ Limit + Offset. Это самый распространенный метод пагинации, где используются параметры LIMIT и OFFSET из SQL-запросов (или аналоги из NoSQL БД). Например,
2️⃣ Курсорная пагинация, в которой обычно используется уникальный идентификатор последней полученной записи (курсор). Например, если сообщения в чате имеют строго возрастающие id, то запрос следующей порции сообщений получается через фильтрацию по id больше последнего загруженного (или меньше). Такой способ не начинает тормозить про отдаче 100500-ой страницы, а также стабильнее работает при частом создании/удалении данных.
Но дьявол кроется в деталях:
❗️При любом типе пагинации нельзя забывать про ограничения и дефолтное значение для параметра LIMIT. Без указания LIMIT многие БД будут отдавать все доступные данные... Чего вы явно не планируете для реально больших табличек 🤯
❗️Нельзя забывать про индексы в БД. Без индексов какую пагинацию не делай, а фильтрация и/или сортировка убьет любую скорость.
Используйте проверенные практики при реализации пагинации 🙏
До связи 🤟
Пагинация — это метод разделения большого набора данных на порции. С точки зрения Frontend это всего лишь способ постранично вывести информацию. С точки зрения Backend пагинация скорее обязательна к использованию. Вместо передачи всего набора данных, сервер отправляет только малую часть, снижая нагрузку на БД и сеть, а так же улучшая общую пропускную способность и время отклика.
Если говорить о реализации, то выделяются 2 базовых способа:
1️⃣ Limit + Offset. Это самый распространенный метод пагинации, где используются параметры LIMIT и OFFSET из SQL-запросов (или аналоги из NoSQL БД). Например,
SELECT * FROM users LIMIT 10 OFFSET 20
вернет 10 записей, начиная с 21-й. Этот подход очень прост в реализации. Основными недостатками являются: стремительное увеличение времени ответа с возрастание OFFSET и дублирование/пропуск части данных при их частом добавлении/удалении.2️⃣ Курсорная пагинация, в которой обычно используется уникальный идентификатор последней полученной записи (курсор). Например, если сообщения в чате имеют строго возрастающие id, то запрос следующей порции сообщений получается через фильтрацию по id больше последнего загруженного (или меньше). Такой способ не начинает тормозить про отдаче 100500-ой страницы, а также стабильнее работает при частом создании/удалении данных.
Но дьявол кроется в деталях:
❗️При любом типе пагинации нельзя забывать про ограничения и дефолтное значение для параметра LIMIT. Без указания LIMIT многие БД будут отдавать все доступные данные... Чего вы явно не планируете для реально больших табличек 🤯
❗️Нельзя забывать про индексы в БД. Без индексов какую пагинацию не делай, а фильтрация и/или сортировка убьет любую скорость.
Используйте проверенные практики при реализации пагинации 🙏
До связи 🤟
👍6🔥4🤔1
Создатель Redis возвращется в проект!
Выложил на хабре перевод поста из блога Сальваторе Санфилиппо (оригинального автора in-memory db Redis). После 4.5 лет отсутствия Сальваторе решил вернуться к своему детищу и рассуждает о проблемах лицензирования, расколе в сообществе редис, нейронных сетят и LLM, RAG и векторном поиске и, конечно, о том, чем бы он мог быть полезен комьюнити и проекту в целом.
https://habr.com/ru/articles/878184/
Приятного чтения 😊
Выложил на хабре перевод поста из блога Сальваторе Санфилиппо (оригинального автора in-memory db Redis). После 4.5 лет отсутствия Сальваторе решил вернуться к своему детищу и рассуждает о проблемах лицензирования, расколе в сообществе редис, нейронных сетят и LLM, RAG и векторном поиске и, конечно, о том, чем бы он мог быть полезен комьюнити и проекту в целом.
https://habr.com/ru/articles/878184/
Приятного чтения 😊
Хабр
Сальваторе Санфилиппо возвращается в Redis
С того места, где я остановился… Я не из тех, кто сильно привязывается к своим собственным проектам. Когда я решил уйти из Redis, это было примерно 1620 дней назад (около 4,44 года), я напрочь...
👍6🔥2🎉1
Переходим на Redis v8.0
Кажется, это первый за многие годы значимый релиз редиски! И вот почему:
История с лицензированием завершилась возвращением к "нормальной" Open Source лицензии - AGPLv3.
Команда проделала большую работу по оптимизации. Подробнее читайте у них в блоге, но ускорены как конкретные операции, так и общий latency снижен, общая пропускная способность увеличена. В общем чудо, бесплатное ускорение всем и каждому.
Наконец-то самые популярные доп. модули - такие как Search, Json, Bloom Filter - поставляются вместе с редисом из коробки. Это явный сдвиг парадигмы, в сторону более удобного и зрелого решения в духе "batteries included".
До связи 🤟
Кажется, это первый за многие годы значимый релиз редиски! И вот почему:
История с лицензированием завершилась возвращением к "нормальной" Open Source лицензии - AGPLv3.
Команда проделала большую работу по оптимизации. Подробнее читайте у них в блоге, но ускорены как конкретные операции, так и общий latency снижен, общая пропускная способность увеличена. В общем чудо, бесплатное ускорение всем и каждому.
Наконец-то самые популярные доп. модули - такие как Search, Json, Bloom Filter - поставляются вместе с редисом из коробки. Это явный сдвиг парадигмы, в сторону более удобного и зрелого решения в духе "batteries included".
До связи 🤟
🔥8👍3🤯1