Искал мессенджер для open source проекта системы донатов, натыкался помимо прочих вариантов на Zulip. Оказывается, он на Python. И даже Гвидо в резолюции о PEP 526 касательно type hinting отзывался о Zulip в формате, что если хотите посмотреть проект с большой кодовой базой, активно использующий подсказки типов, то посмотрите на код Zulip. Найти бы время сделать чтение его исходников в продолжение этой YouTube-рубрики:)
#it #python #backend
#it #python #backend
Статья для тех, кто боится использовать родной модуль
Накидал также небольшую демку настройки логирования в проекте — в сообщении выше.
#IT #Python #backend #codebetter
logging
в Python, не понимает его или не понимает, как настроить всё в своём проекте: https://khashtamov.com/ru/python-logging/Накидал также небольшую демку настройки логирования в проекте — в сообщении выше.
#IT #Python #backend #codebetter
3 позиции, по которым Python превосходит С++?
Вопрос из комментов, решил скопировать ответ и сюда, возможно новичкам будет полезно.
1. Безопасность по памяти. В пайтоне не работают с памятью напрямую, выделяя и освобождая ее, это делает интерпретатор за вас. Исключается огромный пласт ошибок и частично как следствие этого появляются пункты 2 и 3.
2. Гораздо проще разработка и поддержка кода. Не на порядок, а на несколько порядков проще. Если надо просто решить задачу, то большинство людей выберет пайтон, о чем говорит его популярность и то, что именно под пайтон делают модули на низкоуровневых языках, когда надо получить интерфейс для доступа к логике, то есть API для доступа к логике, то есть простой способ вызова, использования этой логики.
Например, программы анализа данных, data science и подобные. Логика по факту написана на низком уровне, например, С, но среднестатистический аналитик её не сможет вызывать из кода на С, нужна какая-то более дружелюбная простая среда, С это слишком тяжело. Поэтому упаковывают логику в модуль для пайтона, подключают его к пайтону и используют уже из дружелюбного простого пайтона, который легко может изучить аналитик, не становясь при этом адовым программистом.
3. Изучить пайтон на порядки проще С++. Кривая обучения плавная. Концепции просты. Можно быстро начать получать результат от языка, и эти результаты будут безопасны по памяти (см п.1). Поэтому его часто и выбирает бизнес. Можно взять джуна и быстро вырастить его. Вырастить С++ спеца это многие и многие годы.
Если говорить о низком уровне, то сейчас в большинстве случаев имеет смысл изучать Rust. Не С и не С++. Более современный язык, безопасный по памяти, как пайтон, но быстрый, как С/С++, в каких-то сценариях даже быстрее. Но он, конечно, по-прежнему сложнее, чем Python, с более крутой кривой обучения и более долгим обучением как таковым. Языки для разных задач. Go даёт некоторый баланс между простотой разработки и эффективностью работы кода, скоростью его работы.
#it #python #backend #rust
Вопрос из комментов, решил скопировать ответ и сюда, возможно новичкам будет полезно.
1. Безопасность по памяти. В пайтоне не работают с памятью напрямую, выделяя и освобождая ее, это делает интерпретатор за вас. Исключается огромный пласт ошибок и частично как следствие этого появляются пункты 2 и 3.
2. Гораздо проще разработка и поддержка кода. Не на порядок, а на несколько порядков проще. Если надо просто решить задачу, то большинство людей выберет пайтон, о чем говорит его популярность и то, что именно под пайтон делают модули на низкоуровневых языках, когда надо получить интерфейс для доступа к логике, то есть API для доступа к логике, то есть простой способ вызова, использования этой логики.
Например, программы анализа данных, data science и подобные. Логика по факту написана на низком уровне, например, С, но среднестатистический аналитик её не сможет вызывать из кода на С, нужна какая-то более дружелюбная простая среда, С это слишком тяжело. Поэтому упаковывают логику в модуль для пайтона, подключают его к пайтону и используют уже из дружелюбного простого пайтона, который легко может изучить аналитик, не становясь при этом адовым программистом.
3. Изучить пайтон на порядки проще С++. Кривая обучения плавная. Концепции просты. Можно быстро начать получать результат от языка, и эти результаты будут безопасны по памяти (см п.1). Поэтому его часто и выбирает бизнес. Можно взять джуна и быстро вырастить его. Вырастить С++ спеца это многие и многие годы.
Если говорить о низком уровне, то сейчас в большинстве случаев имеет смысл изучать Rust. Не С и не С++. Более современный язык, безопасный по памяти, как пайтон, но быстрый, как С/С++, в каких-то сценариях даже быстрее. Но он, конечно, по-прежнему сложнее, чем Python, с более крутой кривой обучения и более долгим обучением как таковым. Языки для разных задач. Go даёт некоторый баланс между простотой разработки и эффективностью работы кода, скоростью его работы.
#it #python #backend #rust
Попиваю свой ночной тегуаньинь и читаю по TypeScript. Понавыдумывали майкрософтовцы, конечно. Но в целом получилось мощно. Костыли, ну или ладно-ладно, особенности JS лезут, разумеется, но от них уже не избавиться, просто надо их иметь в виду.
Что по своему опыту рекомендую прочесть по TS тем, кто хочет начать писать на нём.
Сначала это. Затем это. Затем это. И только потом это.
Прочел ещё треть этой книги. Шутеечки понравились, а по теме не очень. Автор русскоязычный, Борис «бритва» Чёрный:), но писал явно на английском, редактор и переводчик постарались: непереводимое переведено, щедро рассыпаны опечатки, несколько раз перечитываешь, смысл не проясняется. А может и исходник такой. Или, возможно, надо читать, уже поработав с TS, тогда будет понятнее и опечатки бросаться в глаза не будут.
TS хорош. Типизация рулит. Читая, ловил себя на мысли, что вот такое объяснение можно перенести и в мой материал по типизированному Python. Надо обновить:)
#it #backend #frontend #typescript #javascript #books
Null
, undefined
, NaN
и прочее.Что по своему опыту рекомендую прочесть по TS тем, кто хочет начать писать на нём.
Сначала это. Затем это. Затем это. И только потом это.
Прочел ещё треть этой книги. Шутеечки понравились, а по теме не очень. Автор русскоязычный, Борис «бритва» Чёрный:), но писал явно на английском, редактор и переводчик постарались: непереводимое переведено, щедро рассыпаны опечатки, несколько раз перечитываешь, смысл не проясняется. А может и исходник такой. Или, возможно, надо читать, уже поработав с TS, тогда будет понятнее и опечатки бросаться в глаза не будут.
TS хорош. Типизация рулит. Читая, ловил себя на мысли, что вот такое объяснение можно перенести и в мой материал по типизированному Python. Надо обновить:)
#it #backend #frontend #typescript #javascript #books
Диджитализируй!
Типизированный_Python_для_профессиональной_разработки.pdf
Вдогоночку. Если надо указать тип для переменной, принимающей класс
Удобно, когда функция принимает класс. Например, функция-фабрика какая-то, которая принимает на вход класс и создаёт его экземпляр.
#IT #backend #python #codebetter
Animal
или классы его наследники (а не экземпляр класса Animal
) — можно указать так:animal: type[Animal]
Удобно, когда функция принимает класс. Например, функция-фабрика какая-то, которая принимает на вход класс и создаёт его экземпляр.
class Animal: pass
class Cat(Animal): pass
class Dog(Animal): pass
def create_animal(animal_cls: type[Animal]) -> Animal:
print("create another animal...")
return animal_cls()
create_animal(Cat)
create_animal(Dog)
#IT #backend #python #codebetter
Пишем генератор TypeScript React-компонентов на Python. Скрипт запрашивает данные и создаёт необходимые файлы React-компонента, а также подключается как команда к nvim для удобства использования во время фронтенд-разработки.
https://youtu.be/zU1kf3Qjtdk
#youtube #IT #backend #frontend #python #typescript
https://youtu.be/zU1kf3Qjtdk
#youtube #IT #backend #frontend #python #typescript
YouTube
Генератор React компонентов на Python. Ускоряем создание TypeScript React компонентов с vim & python
Пишем генератор TypeScript React компонентов на Python. Скрипт запрашивает данные и создаёт необходимые файлы React компонента, а также подключается как команда к nvim для удобства использования во время фронтенд-разработки.
Исходники https://github.com/alexey…
Исходники https://github.com/alexey…
Уууууу что я нашёл!
https://github.com/gothinkster/realworld
Один и тот же проект, написанный на разных бэкендах и разных фронтендах. Проект — блоговая платформа с регистрацией, аутентификацией, постами, комментами, фолловерами и тп. Настоящий большой взрослый по функциональности проект.
Например, интересно вам, как выглядит бэкенд такого проекта на Rust'овском Actix с Diesel ORM? Пожалуйста. Или на Rust'овском Rocket? Лови. Или на чистом Go? Есть и такое. FastAPI? Получай. На C++ (стрелять-колотить, почему нет) — на-ка!
Аналогично и по фронтенду. На Solidjs вот, например.
#it #backend #frontend #python #rust #javascript
https://github.com/gothinkster/realworld
Один и тот же проект, написанный на разных бэкендах и разных фронтендах. Проект — блоговая платформа с регистрацией, аутентификацией, постами, комментами, фолловерами и тп. Настоящий большой взрослый по функциональности проект.
Например, интересно вам, как выглядит бэкенд такого проекта на Rust'овском Actix с Diesel ORM? Пожалуйста. Или на Rust'овском Rocket? Лови. Или на чистом Go? Есть и такое. FastAPI? Получай. На C++ (стрелять-колотить, почему нет) — на-ка!
Аналогично и по фронтенду. На Solidjs вот, например.
#it #backend #frontend #python #rust #javascript
Как я писал где-то в комментариях, мы сейчас разрабатываем платформу для образовательных программ. На ней буду перезапускать мой курс. Я буквально сейчас занимаюсь фронтендом платформы.
Там готовы 5 первых экранов, которые я сделал на React, но затем решил переписать их на Solidjs. Просто попробовать, посмотреть, как пойдёт. Фреймворк понравился на первом знакомстве и решил оценить на практике.
Переписал.
В Google Chrome Developer Tools встроен Lighthouse — инструмент тестирования производительности фронтенда. Обобщённый показатель Performance для React версии приложения — 79 из 100, для Solid версии 97 из 100.
Трафик для загрузки всего приложения (html, css, js, images) для React-версии 884 kB, для Solid-версии 255 kB.
Функционал обеих версий полностью идентичен. Причём для React версии ещё не подключен внешний state менеджер, который будет нужен и с которым трафик и performance точно лучше не станут, а для Solid внешний state менеджер не является необходимостью благодаря иной модели реактивности.
С точки зрения удобства процесса разработки Solid это тот же React с почти тем же JSX, но более простой в работе из-за иной заложенной модели реактивности. И, как видим, с гораздо более высокой производительностью в частности за счёт отсутствия виртуального DOM.
Я доволен. Буду продолжать на Solid.
Рассказывать вам о ходе проекта:)? На бэкенде у нас FastAPI с SQLAlchemy и Postgres, планируем активно использовать Яндекс облако для всех задач, насколько сейчас видим, его возможностей будет достаточно.
#IT #backend #frontend #course #javascript #typescript #python #LMS
Там готовы 5 первых экранов, которые я сделал на React, но затем решил переписать их на Solidjs. Просто попробовать, посмотреть, как пойдёт. Фреймворк понравился на первом знакомстве и решил оценить на практике.
Переписал.
В Google Chrome Developer Tools встроен Lighthouse — инструмент тестирования производительности фронтенда. Обобщённый показатель Performance для React версии приложения — 79 из 100, для Solid версии 97 из 100.
Трафик для загрузки всего приложения (html, css, js, images) для React-версии 884 kB, для Solid-версии 255 kB.
Функционал обеих версий полностью идентичен. Причём для React версии ещё не подключен внешний state менеджер, который будет нужен и с которым трафик и performance точно лучше не станут, а для Solid внешний state менеджер не является необходимостью благодаря иной модели реактивности.
С точки зрения удобства процесса разработки Solid это тот же React с почти тем же JSX, но более простой в работе из-за иной заложенной модели реактивности. И, как видим, с гораздо более высокой производительностью в частности за счёт отсутствия виртуального DOM.
Я доволен. Буду продолжать на Solid.
Рассказывать вам о ходе проекта:)? На бэкенде у нас FastAPI с SQLAlchemy и Postgres, планируем активно использовать Яндекс облако для всех задач, насколько сейчас видим, его возможностей будет достаточно.
#IT #backend #frontend #course #javascript #typescript #python #LMS
Вижу, что вам интересно, значит, буду рассказывать о ходе проекта разработки нашей LMS-платформы для образовательных программ (Learning Management System).
Собрали вчера систему разворачивания инфраструктуры. Terraform + Ansible + Яндекс облако. Просто крутейшая штука!
Terraform отвечает за железную составляющую инфраструктуры — сколько серверов, какие у них ресурсы, какие сети их соединяют.
Ansible занимается автоматической настройкой ПО на этих серверах. Полная тотальная автоматизация.
Infrastructure as a code. Пишешь конфиги, которые описывают hardware и software инфраструктуру, запускаешь terraform и ansible — и из голого пустого проекта в Яндекс облаке получаешь уже настроенные сервера, сети, со всем настроенным и запущенным софтом.
Наружу в Интернет смотрит только один сервер с настроенным VPN, остальные доступны только во внутренней сети Яндекса или через VPN. Например, только через VPN можно подключиться к Gitlab-серверу. И вся инфраструктура поднимается из конфигов без ручной настройки.
Песня:)
#IT #backend #linux #course #LMS
Собрали вчера систему разворачивания инфраструктуры. Terraform + Ansible + Яндекс облако. Просто крутейшая штука!
Terraform отвечает за железную составляющую инфраструктуры — сколько серверов, какие у них ресурсы, какие сети их соединяют.
Ansible занимается автоматической настройкой ПО на этих серверах. Полная тотальная автоматизация.
Infrastructure as a code. Пишешь конфиги, которые описывают hardware и software инфраструктуру, запускаешь terraform и ansible — и из голого пустого проекта в Яндекс облаке получаешь уже настроенные сервера, сети, со всем настроенным и запущенным софтом.
Наружу в Интернет смотрит только один сервер с настроенным VPN, остальные доступны только во внутренней сети Яндекса или через VPN. Например, только через VPN можно подключиться к Gitlab-серверу. И вся инфраструктура поднимается из конфигов без ручной настройки.
Песня:)
#IT #backend #linux #course #LMS
Интересно, много ли среди нас людей, использующих HTTP-статусы, отличные от обычных 200, 400, 500:)?
М? Скажем, вот 422-ой статус применяли? 409-ый? Может быть, ещё и 418-ый:)?
Вообще статусы-то говорящая штука. Но на практике редко вижу активное их использование, как правило всё ограничивается базовым набором.
А у нас вот в LMS на бэке набор используемых HTTP-статусов большой. Скоро и 418й будет, уверен:) Запряжём девайс в дело!
Начали сегодня вязать бэк с фронтом. Регистрация, аутентификация, верификация мейла готовы. Вжух!
FastAPI помогает готовить прекрасную документацию бэкенд сервисов в Swagger/ReDoc. FastAPI её готовит автоматически, а мы её пополняем в коде, чтобы были удобные примеры запросов с релевантными данными, группировка веб-сервисов и всякое другое. Это и документация, и удобный аналог Postman, с которым можно быстро протестировать нужную ручку. Прекрасно.
#IT #backend #frontend #LMS #tools
М? Скажем, вот 422-ой статус применяли? 409-ый? Может быть, ещё и 418-ый:)?
Вообще статусы-то говорящая штука. Но на практике редко вижу активное их использование, как правило всё ограничивается базовым набором.
А у нас вот в LMS на бэке набор используемых HTTP-статусов большой. Скоро и 418й будет, уверен:) Запряжём девайс в дело!
Начали сегодня вязать бэк с фронтом. Регистрация, аутентификация, верификация мейла готовы. Вжух!
FastAPI помогает готовить прекрасную документацию бэкенд сервисов в Swagger/ReDoc. FastAPI её готовит автоматически, а мы её пополняем в коде, чтобы были удобные примеры запросов с релевантными данными, группировка веб-сервисов и всякое другое. Это и документация, и удобный аналог Postman, с которым можно быстро протестировать нужную ручку. Прекрасно.
#IT #backend #frontend #LMS #tools
Готовлю материал об объектно-ориентированном программировании в Python, ООП. Конечно, он будет актуален в первую очередь для погружающихся в разработку и Python. Вижу по ревью кода новичков, что у многих есть с этим сложности.
Какие темы здесь должны быть освещены, как считаете? С какими вопросами и сложностями сталкиваетесь?
#it #python #backend
Какие темы здесь должны быть освещены, как считаете? С какими вопросами и сложностями сталкиваетесь?
#it #python #backend
Обсудили-собрали сегодня с командой схему работы Telegram бота в #LMS. Она схожа со схемой, которую мы планировали реализовать в боте донат-системы, которая аналог Boosty.
К донат-системе я вернусь позже, пока не до неё. Октябрь или позже. Сейчас активно разрабатываем LMS.
Задача бота — рулить участниками чата, который привязан к курсу. В донат системе задача была схожей — рулить участниками чата, которые оформили подписку на платформе.
Так вот касательно схемы бота. Полезно накидывать такие схемы по результатам обсуждения какой-то новой планируемой функциональности. Чтобы:
а) зафиксировать договорённости
б) не вспоминать их позже
в) убедиться, что все заинтересованные лица одинаково понимают эту схему и не видят в ней на данном этапе проблем
Вид схемы может быть любым. Текст, схема, текст+схема, наскальные рисунки.
Вжух!
#lms #backend #management
К донат-системе я вернусь позже, пока не до неё. Октябрь или позже. Сейчас активно разрабатываем LMS.
Задача бота — рулить участниками чата, который привязан к курсу. В донат системе задача была схожей — рулить участниками чата, которые оформили подписку на платформе.
Так вот касательно схемы бота. Полезно накидывать такие схемы по результатам обсуждения какой-то новой планируемой функциональности. Чтобы:
а) зафиксировать договорённости
б) не вспоминать их позже
в) убедиться, что все заинтересованные лица одинаково понимают эту схему и не видят в ней на данном этапе проблем
Вид схемы может быть любым. Текст, схема, текст+схема, наскальные рисунки.
Вжух!
#lms #backend #management
Зачем для uvicorn'а нужен gunicorn?
В питоне есть такая штука как GIL. Глобальная блокировка интерпретатора. Это фундаментальная особенность CPython-реализации питона. Эта особенность не позволяет одновременно работать более чем одному потоку. То есть в питоне можно запускать потоки, но одновременно работать 2 и больше потоков не будет. В каждый конкретный момент времени будет работать только 1 поток. А нам бы хотелось, чтобы одновременно могли обрабатываться несколько http-запросов. Потому что ядер на сервере много, а толку от них с питоновскими тредами=потоками мало.
Поээээтому, чтобы всё было чётенько и одновременно могли обрабатываться несколько http-запросов, а также были утилизированы=задействованы все процессорные ядра, вместо тредов запускают процессы. Процессы не имеют ограничений GIL, могут работать одновременно несколько процессов на многоядерных процессорах, а этого-то нам и надо.
Нооо возникает тогда задачка управления этими процессами. Запустили мы 8 процессов, пришли на них какие-то http-запросы, они легли на разные процессы, и в процессе обработки одного из этих запросов что-то пошло не так, какая-то необработанная ошибка и т.п. и процесс упал. Нужен механизм, который его переподнимет. Да и начальное создание процессов тоже задача, кто-то должен её делать. То есть нужен process manager, менеджер процессов.
Задача обработки http-запросов и задача управления процессами сервера (управления воркерами, которые делают work=работу в данном случае по обработке хттп запросов) — это разные задачи. Какие-то инструменты могут их в себе сочетать, а какие-то могут выполнять только одну из этих двух задач. Вот uvicorn не занимается управлением своими процессами, отдает это на откуп инструмента, который уже давно проверен и хорошо менеджерит процессы — gunicorn.
Вот собственно и всё!
#python #backend #IT
В питоне есть такая штука как GIL. Глобальная блокировка интерпретатора. Это фундаментальная особенность CPython-реализации питона. Эта особенность не позволяет одновременно работать более чем одному потоку. То есть в питоне можно запускать потоки, но одновременно работать 2 и больше потоков не будет. В каждый конкретный момент времени будет работать только 1 поток. А нам бы хотелось, чтобы одновременно могли обрабатываться несколько http-запросов. Потому что ядер на сервере много, а толку от них с питоновскими тредами=потоками мало.
Поээээтому, чтобы всё было чётенько и одновременно могли обрабатываться несколько http-запросов, а также были утилизированы=задействованы все процессорные ядра, вместо тредов запускают процессы. Процессы не имеют ограничений GIL, могут работать одновременно несколько процессов на многоядерных процессорах, а этого-то нам и надо.
Нооо возникает тогда задачка управления этими процессами. Запустили мы 8 процессов, пришли на них какие-то http-запросы, они легли на разные процессы, и в процессе обработки одного из этих запросов что-то пошло не так, какая-то необработанная ошибка и т.п. и процесс упал. Нужен механизм, который его переподнимет. Да и начальное создание процессов тоже задача, кто-то должен её делать. То есть нужен process manager, менеджер процессов.
Задача обработки http-запросов и задача управления процессами сервера (управления воркерами, которые делают work=работу в данном случае по обработке хттп запросов) — это разные задачи. Какие-то инструменты могут их в себе сочетать, а какие-то могут выполнять только одну из этих двух задач. Вот uvicorn не занимается управлением своими процессами, отдает это на откуп инструмента, который уже давно проверен и хорошо менеджерит процессы — gunicorn.
Вот собственно и всё!
#python #backend #IT
Открыл, что Red Hat публикует бесплатно на своём сайте (нужна только бесплатная регистрация) бодрые книги и читшиты. Вот, например:
* книга Podman in Action для желающих познакомиться-поработать с Podman вместо Docker
* читшит по podman, по bash, по git, по linux, а также по linux intermediate уровня и advanced
ЗЫ: а вот бесплатный handbook администратора Debian. Есть RU версия. Здесь PDF/EPUB
#IT #books #backend #linux
* книга Podman in Action для желающих познакомиться-поработать с Podman вместо Docker
* читшит по podman, по bash, по git, по linux, а также по linux intermediate уровня и advanced
ЗЫ: а вот бесплатный handbook администратора Debian. Есть RU версия. Здесь PDF/EPUB
#IT #books #backend #linux
Упомянул тут в комментах книгу, которую читаю сейчас — по System design. Думаю, будет полезно многим бэкендерам. Показаны подходы к построению больших систем по нагрузке и данным. Прям хорошо. И много ссылок на бодрые статьи в интернете.
Особенно полезна книга своим чётким акцентом на строгое использование кнопочек и манипулятора мышь при написании своих собственых гуглов и твиттеров!
#books #IT #backend #codebetter
Особенно полезна книга своим чётким акцентом на строгое использование кнопочек и манипулятора мышь при написании своих собственых гуглов и твиттеров!
#books #IT #backend #codebetter
www.piter.com
System Design. Подготовка к сложному интервью
Инсайдерская информация: что на самом деле нужно интервьюерам по System Design, 4-х шаговый подход к решению любой задачи, 16 вопросов из реальных интервью с подробными решениями, 188 диаграмм, наглядно объясняющих, как работают реальные системы
Поговорим об управлении зависимостями в Python-проектах и создании сервисов с Poetry!
https://youtu.be/SMYdy7dViiw
#IT #python #backend
https://youtu.be/SMYdy7dViiw
#IT #python #backend
YouTube
Сервисы в Poetry — дробим Python-проект по закрытым пакетам
Поговорим об управлении зависимостями в Python-проектах и создании сервисов с Poetry!
* Мой курс «Хардкорная веб-разработка» — https://course.to.digital
* Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
* Telegram — ht…
* Мой курс «Хардкорная веб-разработка» — https://course.to.digital
* Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
* Telegram — ht…
Прочёл первые 4 главы книги о PostgreSQL, пока еду в поезде. Огонь. Мне нравится. Ни одного недостатка для себя пока не выявил.
Кто не хотел книжек формата «ля-ля», но хотел мяса, здесь есть оно:)
В конце 4й главы 37 заданий. 37! Не два-три, типа убедиться, что ты там что-то вроде понял. 37.
Причём задания построены так, что в них есть новая информация, а не просто проверка усвоения уже прочитанного. То есть польза о возможностях и способах использования SQL упакована не только в контенте, но и в заданиях.
Кто-то на Ютубе писал, что мол книги это фигня, потому что они не про learning by doing. Нннну да:)
Ещё нравится, что автор продумал реальный сценарий использования БД и примеры всей книги показывает на нём. Задача связана с базой данных аэропортов, самолётов, рейсов, пилотов, билетов, регистраций на рейсы и тп. Хороший продуманный академичный подход. Примеры запросов про реальные бизнес-эадачи выбранной предметной области, а не высосанные из пальца абстрактные штуки. Как говорится, видно, что автор тщательно потрудился:)
Книжный клуб
#IT #books #backend #tools
Кто не хотел книжек формата «ля-ля», но хотел мяса, здесь есть оно:)
В конце 4й главы 37 заданий. 37! Не два-три, типа убедиться, что ты там что-то вроде понял. 37.
Причём задания построены так, что в них есть новая информация, а не просто проверка усвоения уже прочитанного. То есть польза о возможностях и способах использования SQL упакована не только в контенте, но и в заданиях.
Кто-то на Ютубе писал, что мол книги это фигня, потому что они не про learning by doing. Нннну да:)
Ещё нравится, что автор продумал реальный сценарий использования БД и примеры всей книги показывает на нём. Задача связана с базой данных аэропортов, самолётов, рейсов, пилотов, билетов, регистраций на рейсы и тп. Хороший продуманный академичный подход. Примеры запросов про реальные бизнес-эадачи выбранной предметной области, а не высосанные из пальца абстрактные штуки. Как говорится, видно, что автор тщательно потрудился:)
Книжный клуб
#IT #books #backend #tools
То, что человек вас собеседует и, раздувая щёчки, задаёт умные вопросы, не всегда значит, что он их сам понимает:)
Индексы занимают место на диске, порой даже много места, и — ох ты ж ну ничоси! — используют это место для хранения данных! Сам офигел, когда узнал. Прям место — и для хранения данных!
А Index only scan даже позволяет делать выборку только из индекса, не обращаясь к данным таблицы.
Ну маааагия!
Хорошего понедельничка, друзья:)
#it #db #backend #gg
Индексы занимают место на диске, порой даже много места, и — ох ты ж ну ничоси! — используют это место для хранения данных! Сам офигел, когда узнал. Прям место — и для хранения данных!
А Index only scan даже позволяет делать выборку только из индекса, не обращаясь к данным таблицы.
Ну маааагия!
Хорошего понедельничка, друзья:)
#it #db #backend #gg
Всё о первичных ключах в PostgreSQL. Простые и составные, естественные и искусственные, искусственные числовые, UUID v4, ULID, UUID v6 — в чём разница и когда что выбирать.
https://youtu.be/VC9KbAA_5rE
https://vk.com/video-176970991_456239185
https://dzen.ru/video/watch/63ef506d207f8f08e717a508
Буду постить отныне ссылки не только на YouTube, но и ВК+Дзен. Комменты оставляем там для продвижения видео. Спасибооо!
#youtube #IT #db #backend
https://youtu.be/VC9KbAA_5rE
https://vk.com/video-176970991_456239185
https://dzen.ru/video/watch/63ef506d207f8f08e717a508
Буду постить отныне ссылки не только на YouTube, но и ВК+Дзен. Комменты оставляем там для продвижения видео. Спасибооо!
#youtube #IT #db #backend