IT каждый день @it_everyday Channel on Telegram

IT каждый день

@it_everyday


Официальная группа YouTube-канала «IT каждый день»
https://youtube.com/c/it_everyday

По вопросам сотрудничества: @kasatkin_v.

Группа ВК:
https://vk.com/it_everyday

IT каждый день (Russian)

Добро пожаловать в официальную группу YouTube-канала «IT каждый день»! Если вы увлечены миром информационных технологий, этот канал - для вас. Здесь вы найдете самые свежие новости из мира IT, обзоры новинок, полезные советы и многое другое каждый день.

Наш канал на YouTube предлагает широкий спектр видеоконтента, который поможет вам быть в курсе последних тенденций в сфере технологий. Мы стараемся делать наш контент интересным, познавательным и доступным для всех.

Следите за нашими обновлениями, чтобы первыми узнавать о свежих новостях IT-индустрии, интересных проектах, а также участвовать в обсуждениях с единомышленниками. Мы приглашаем вас присоединиться к нашему сообществу и делиться своими мыслями и идеями по поводу последних технологических достижений.

Для сотрудничества и других вопросов, обращайтесь по контактам: @kasatkin_v.

Присоединяйтесь также к нашей группе ВКонтакте, чтобы быть в курсе всех новостей и общаться с участниками канала: https://vk.com/it_everyday

IT каждый день

14 Nov, 14:34


Выпустил асинхронную библиотеку для работы с AWS SQS: aiosqs

Отличие от aiobotocore (которая тоже заявлена как асинхронная) в том что здесь нет зависимости от тяжеленных boto3 и botocore. Нет лишних абстракций, нет эмуляции асинхронности, только реализация SQS протокола. Как итог - низкое потребление CPU и RAM.

⭐️ https://pypi.org/project/aiosqs/

⭐️ https://github.com/d3QUone/aiosqs

IT каждый день

12 Nov, 17:48


Результаты Django 4.2 + Python 3.11 benchmark:
https://github.com/d3QUone/python311benchmark

Вкратце: стало быстрее.

IT каждый день

06 May, 17:33


Прошло несколько лет, и лучшая библиотека для ботов на Python наконец-то обзавелась async-версией. Пока что pre-release. https://telegra.ph/Release-notes-for-python-telegram-bot-v200a0-05-06

IT каждый день

18 Oct, 11:01


https://habr.com/ru/post/583902/

IT каждый день

29 Aug, 19:35


Мем с Пикабу, но смешно 🤣

IT каждый день

19 Jul, 18:54


Ищем QA инженера, опыт от 2 лет. Ручное тестирование front и back, автотесты на Python.

Резюме и вопросы кидать мне в лс: @kasatkin_v

#вакансия

IT каждый день

25 Jun, 10:09


Минутка tech porn.

У нас огромная multi-tenant реляционная база данных. Таблицы по 200 ГБ - рехнуться, если честно. При этом для multi-tenant архитектуры мы юзаем самую тупую модель - "Pool" - это когда во все таблицы добавляется ключик "tenant_id". Модель неэффективная и тормозная, но зато простая в реализации и поддержке.

(кстати у AWS пролетал классный документ про дизайн multi-tenant систем, где разобраны все варианты, мастрид для всех CTO)

Все тормозило и заикалось. Клиенты бесились, сервера перегревались. Задачи типа "получить запись по ID" работали нормально, но вот любой список типа "непрочитанные письма за сегодня" в многотерабайтной базе начинает жестко тупить. Даже с правильными индексами. Один жирный клиент с дохреллионом записей притормаживает мелких клиентов, у которых данных совсем мало. Надо было что-то делать.

И тут нам пришло Великое Озарение [sarcasm], которое рано или поздно приходит любому DBA - о том, что основная работа всегда ведется с "верхушкой" данных. А огромный "long tail" всегда лежит мертвым грузом и нахуй не нужен юзается только в отчетах.

Первая мысль - надо сделать "вертикальный" партишенинг. Т.е. "старые" данные спихивать куда-то за горизонт (на отдельный диск или даже сервер), а "активные" данные держать где-то под рукой.

Мысль правильная, но нет.

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

Я уже слышу крики из зала: "шардинг", "кликхаус", "разделяй OLTP и DWH и делай синк". И прочий оверинжиниринг. Сразу нет. У нас есть self-hosted версия, которая должна заводиться в один клик даже у домохозяек. Хотелось простой хак, который решит все проблемы одной строчкой.

И тут я случайно вспомнил про офигенный читкод - фильтрованные индексы. Ведь по умолчанию индекс делается по всей таблице. Но зачем, если можно индексировать только 0.1%?

В коде любого CRUD-приложения, в бизнес-логике всегда есть признак, который отличает "старые" данные от "новых". Ну типа "статус проекта = сдан". Или "статус заказа = обработан". И это условие уже есть в большинстве ваших SELECT'ов. В нашем случае это было "статус тикета = закрыт".

Что делает DBA-джун? Создает индекс по этой колонке. Чтобы, значит, поиск незакрытых тикетов был быстрым и классным.

CREATE INDEX myIndex
ON messages (processed)

Что делает прошаренный DBA-синьор? Создает еще и "filtered index" (в постгресе называется "partial index").

CREATE INDEX myIndex
ON messages (column1, column2...)
WHERE processed = 0 --вот так

В результате даже в многотерабайтной базе мы имеем маленький быстрый индекс всего в десятки мегабайт (!), который всегда показывает на самые последние данные. Как только данные перестают удовлетворять признаку - они из индекса улетают.

Когда мы прикрутили первый фильтрованный индекс и стали смотреть статистику использования, мы офонарели - сервер бросил все дела, и стал жадно его жрать. Приложение ускорилось в разы, нагрузка на проц снизилась на 80%. Посмотрите график - до и после внедрения только ОДНОГО пробного индекса.

Наш бд-сервер имеет всего 4 ядра и 32 гига памяти, при этом запросто тянет базу в несколько терабайт и сотни тысяч DAU. У нас в компании есть негласный челлендж - сколько можно протянуть на этом железе без апгрейдов? Уже годы держимся))

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

P.S. есть нюанс, кстати. Когда делаете filtered index, обязательно включайте фильтрованную колонку в "include". Так мы заставляем сервер поддерживать "статистику" по колонке. Без статистики все это великолепие работать не будет, сервер индекс не заметит.

CREATE INDEX myIndex
ON Messages (Column1, Column2...)
INCLUDE (Processed) --важно
WHERE Processed = 0

IT каждый день

16 Jun, 13:07


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

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

Именно это поможет вам быстрее расти по карьерной лестнице, и стать желанным сотрудником в любой компании.

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

IT каждый день

13 Jun, 16:37


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

Условия те же: уровень Senior Python, зп обсуждается. Можно попробовать Middle+, но шансов меньше.

Резюме и вопросы кидать мне в лс: @kasatkin_v

IT каждый день

08 Jun, 20:57


https://habr.com/ru/post/561782/

IT каждый день

18 May, 17:40


Наконец-то вакансия Junior Python разработчик 🚀 Компания ThorSystems занимается автоматизацией бизнес-процессов на фреймворке Frappe.

Требования:
- Понимание работы REST API, JSON;
- Базовое понимание паттерна MVC, базовые знания Python, знание JS приветствуется;
- Умение запускать проекты в Docker;
- Системное мышление и дисциплина.

Условия:
- Удаленная работа;
- Оплата от 500₽ в час;
- Проектная занятость.

Для получения тестового задания напишите @dhmyf или на почту [email protected]

IT каждый день

26 Mar, 12:16


https://dwyer.co.za/problems-not-solutions.html

IT каждый день

20 Mar, 17:51


https://habr.com/ru/post/547868/

IT каждый день

09 Mar, 08:37


Нашёл интересный обзор заявленных фичей для Django 3.2

В основном всё связано с оптимизацией ORM (неизбежное зло), что в принципе хорошо.

https://hakibenita.com/django-32-exciting-features

IT каждый день

31 Jan, 17:54


Хорошая новость! Авторы моей любимой библиотеки python-telegram-bot объявили что уже следующая версия будет поддерживать асинхроннсть! Как я и говорил в одном из видео, намного проще добавить асинхронность в эту библиотеку, и пользоваться всеми её фичами и хорошей документацией, чем зарефакторить aiogram, и добавить туда все отсутствующие фичи…

Источник: https://t.me/pythontelegrambotchannel/94

IT каждый день

20 Jan, 20:28


Тред актуальных технологий в Python

Давайте сверим часы. О чём вы не слышали или не пользовались?

1) dataclasses
2) corutines, generators
3) asyncio
4) typing
5) unittest.mock
6) positional-only parameters
7) :=
8) inspect

Порядок случайный. Ссылки не оставляю, т.к. всё гуглится «как есть».

IT каждый день

20 Jan, 08:42


Почему мало Junior-вакансий?

Я зашёл на hh.ru и посмотрел вакансии с наличием Python:
- 117 шт junior
- 204 шт middle
- 1339 шт senior
- 1152 шт lead

Не кажется странным? Запрос на seniour и lead на порядок больше чем запрос на уровни junior и middle.

Мне не кажется. Я знаю что junior никому не нужны. За последние несколько лет кандидаты на должность junior-разработчиков дискредитировали сами себя. Они думают что им все должны. Что Компания должна обязательно нанимать 3 джуна в неделю, давать им простые, но интересные задачи, заботиться о них, и вообще всячески опекать. А через 2 месяца работы в Компании они должны вырасти до мидла, и тут же получить прибавку.

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

Какой смысл обычному бизнесу инвестировать в чужое образование? Совсем крупные компании пишут свои языки программирования и инструменты (Google: Go, TensorFlow, Angular), открывают свои школы и курсы (Mail, Yandex), чтобы хоть как-то поднять средний уровень кандидатов. Это всё не отменяет огромный пласт самостоятельной работы, но чуть-чуть упрощает его.

При этом есть срочные бизнес-задачи, которые надо было решить «вчера»:
- Перестроить внутреннее устройство платёжной системы чтобы соответствовать закону ФЗ-54.
- Исправить все замечания комиссии по сертификации чего-либо.
- Переписать проект на новый язык вместо устаревшего, чья поддержка скоро прекратится.
- Запустить новый продукт на широкую аудиторию, в конце-концов.

На всё это обычно и требуются опытные, самостоятельные разработчики, который не просто знают слова «хард- и софт-скилы», но и владеют ими.

Но если вы junior, то у вас всё же есть шансы устроиться:
- На фриланс.
- В какую-то очень крупную фирму, где обучение поставлено на поток, например Yandex. Как сайд-эффект: зп сильно ниже рынка в дальнейшем.

IT каждый день

18 Jan, 11:20


Код из видео про динозаврика лежит тут: https://bitbucket.org/vkasatkin/tele_bot/src/master/googledino/

Подробное (хех) объяснение тут: https://youtu.be/IEvienUO29I

Видео вышло ещё до создания канала в телеге, поэтому перезалив.

IT каждый день

16 Jan, 12:03


Новый совет, но уже для маленьких интервьюеров.

Ваша цель на собеседовании как можно раньше понять что кандидат вам не подходит.

Почему? Потому что вы и ваши коллеги тратите время и деньги компании, рассказывая человеку о перспективах работы, обсуждая как работает сборщик мусора в Python, etc. А человек не может написать простейший SQL-запрос.

Что делать? Давать сложные задачки сразу же. Просто логически: если человек знает теорию, но не может написать код, то вы его не возьмёте. Поэтому вам намного выгоднее передвинуть самую частую причину отказа в самое начало собеседований.