pip install tqdm
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
Основные типы HTTP запросов
HTTP (Hypertext Transfer Protocol) запросы - это основа взаимодействия между клиентом (обычно браузером) и сервером в веб-приложениях.
GET - Запрос данных с сервера. Используется для получения информации, но не для изменения состояния ресурса. Данные передаются в URL. Этот метод является безопасным и идемпотентным, что означает, что повторный запрос не изменит состояние сервера.
POST - Отправка данных на сервер для создания или обновления ресурса. Данные передаются в теле запроса. Обычно используется для отправки формы, загрузки файла или других данных для обработки сервером. Этот метод не является идемпотентным.
PUT - Замена текущего ресурса данными, переданными в запросе. Полностью заменяет целевой ресурс на сервере данными, предоставленными в теле запроса. Идемпотентен, что означает, что повторный запрос имеет тот же эффект, что и первый.
DELETE - Удаление ресурса на сервере. Удаляет указанный ресурс, и повторный запрос на удаление того же ресурса будет безопасным, так как ресурс уже удален. Идемпотентен.
PATCH - Частичное обновление ресурса. Позволяет изменить некоторые поля ресурса без замены всего объекта. Используется для обновления частичной информации и является идемпотентным.
HEAD - Запрос только заголовков ресурса. Возвращает метаданные без тела ответа. Используется для проверки существования ресурса или получения метаданных, таких как длина контента.
OPTIONS - Запрос доступных методов для ресурса. Возвращает методы HTTP, которые поддерживает сервер для указанного ресурса. Используется для проверки возможностей сервера и определения поддерживаемых операций.
CONNECT - Устанавливает туннель к серверу, часто используется для прокси-серверов. Обычно применяется для создания туннеля SSL/TLS через незащищенные прокси-серверы.
TRACE - Эхо-запрос, который возвращает полученные сервером данные. Используется для диагностики и тестирования, чтобы проверить, какие данные достигают сервера. Этот метод не является безопасным и может быть отключен на сервере по соображениям безопасности.
LINK - Создание связи между двумя ресурсами. Менее распространенный метод, используется для связывания одного ресурса с другим.
UNLINK - Разрыв связи между двумя ресурсами. Противоположность метода LINK, используется для разрыва связи между ресурсами.
🛩 Pro Python. Подписаться
HTTP (Hypertext Transfer Protocol) запросы - это основа взаимодействия между клиентом (обычно браузером) и сервером в веб-приложениях.
GET - Запрос данных с сервера. Используется для получения информации, но не для изменения состояния ресурса. Данные передаются в URL. Этот метод является безопасным и идемпотентным, что означает, что повторный запрос не изменит состояние сервера.
POST - Отправка данных на сервер для создания или обновления ресурса. Данные передаются в теле запроса. Обычно используется для отправки формы, загрузки файла или других данных для обработки сервером. Этот метод не является идемпотентным.
PUT - Замена текущего ресурса данными, переданными в запросе. Полностью заменяет целевой ресурс на сервере данными, предоставленными в теле запроса. Идемпотентен, что означает, что повторный запрос имеет тот же эффект, что и первый.
DELETE - Удаление ресурса на сервере. Удаляет указанный ресурс, и повторный запрос на удаление того же ресурса будет безопасным, так как ресурс уже удален. Идемпотентен.
PATCH - Частичное обновление ресурса. Позволяет изменить некоторые поля ресурса без замены всего объекта. Используется для обновления частичной информации и является идемпотентным.
HEAD - Запрос только заголовков ресурса. Возвращает метаданные без тела ответа. Используется для проверки существования ресурса или получения метаданных, таких как длина контента.
OPTIONS - Запрос доступных методов для ресурса. Возвращает методы HTTP, которые поддерживает сервер для указанного ресурса. Используется для проверки возможностей сервера и определения поддерживаемых операций.
CONNECT - Устанавливает туннель к серверу, часто используется для прокси-серверов. Обычно применяется для создания туннеля SSL/TLS через незащищенные прокси-серверы.
TRACE - Эхо-запрос, который возвращает полученные сервером данные. Используется для диагностики и тестирования, чтобы проверить, какие данные достигают сервера. Этот метод не является безопасным и может быть отключен на сервере по соображениям безопасности.
LINK - Создание связи между двумя ресурсами. Менее распространенный метод, используется для связывания одного ресурса с другим.
UNLINK - Разрыв связи между двумя ресурсами. Противоположность метода LINK, используется для разрыва связи между ресурсами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Генератор
Генераторы используются для создания итераторов с помощью функции yield. Генераторы позволяют получать значения по одному, сохраняя состояние между вызовами, что делает их очень эффективными для обработки больших наборов данных или потоков данных.
Генераторы вычисляют значения "на лету" и не загружают их в память полностью.
Генератор сохраняет свое состояние между вызовами next(), что позволяет ему продолжить выполнение с того места, где он был прерван.
Генераторы можно итерировать только один раз. После этого они будут истощены.
🛩 Pro Python. Подписаться
Генераторы используются для создания итераторов с помощью функции yield. Генераторы позволяют получать значения по одному, сохраняя состояние между вызовами, что делает их очень эффективными для обработки больших наборов данных или потоков данных.
Генераторы вычисляют значения "на лету" и не загружают их в память полностью.
Генератор сохраняет свое состояние между вызовами next(), что позволяет ему продолжить выполнение с того места, где он был прерван.
Генераторы можно итерировать только один раз. После этого они будут истощены.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Разница между абстрактными классами и интерфейсами ООП
Интерфейсы и абстрактные классы являются важными концепциями объектно-ориентированного программирования (ООП), которые помогают в проектировании кода и его структурировании.
Интерфейсы - определяют набор методов, которые класс должен реализовать, но не содержит их реализации. В большинстве языков программирования класс может реализовывать несколько интерфейсов, что позволяет использовать множественное наследование. Интерфейсы не могут содержать конкретные реализации методов. Они только определяют сигнатуры методов. Интерфейсы обычно не могут содержать состояние (поля или свойства). В некоторых языках, таких как C#, интерфейсы могут иметь свойства, но без конкретной реализации.
Абстрактные классы - могут содержать как абстрактные методы (без реализации), так и конкретные методы (с реализацией). В большинстве языков программирования класс может наследовать только один абстрактный класс. Это ограничивает множественное наследование. Абстрактные классы могут содержать как абстрактные методы, так и методы с конкретной реализацией. Это позволяет предоставить общий код, который будет использоваться в подклассах. Абстрактные классы могут содержать состояние (поля и свойства), что позволяет им хранить данные и предоставлять их реализацию.
🛩 Pro Python. Подписаться
Интерфейсы и абстрактные классы являются важными концепциями объектно-ориентированного программирования (ООП), которые помогают в проектировании кода и его структурировании.
Интерфейсы - определяют набор методов, которые класс должен реализовать, но не содержит их реализации. В большинстве языков программирования класс может реализовывать несколько интерфейсов, что позволяет использовать множественное наследование. Интерфейсы не могут содержать конкретные реализации методов. Они только определяют сигнатуры методов. Интерфейсы обычно не могут содержать состояние (поля или свойства). В некоторых языках, таких как C#, интерфейсы могут иметь свойства, но без конкретной реализации.
Абстрактные классы - могут содержать как абстрактные методы (без реализации), так и конкретные методы (с реализацией). В большинстве языков программирования класс может наследовать только один абстрактный класс. Это ограничивает множественное наследование. Абстрактные классы могут содержать как абстрактные методы, так и методы с конкретной реализацией. Это позволяет предоставить общий код, который будет использоваться в подклассах. Абстрактные классы могут содержать состояние (поля и свойства), что позволяет им хранить данные и предоставлять их реализацию.
Please open Telegram to view this post
VIEW IN TELEGRAM
Абстрактный класс
В Python можно создать абстрактный класс с использованием модуля abc (Abstract Base Classes). Этот модуль позволяет определять абстрактные методы, которые должны быть реализованы в подклассах. Абстрактный класс не может быть инициализирован напрямую, он предназначен только для наследования.
🛩 Pro Python. Подписаться
В Python можно создать абстрактный класс с использованием модуля abc (Abstract Base Classes). Этот модуль позволяет определять абстрактные методы, которые должны быть реализованы в подклассах. Абстрактный класс не может быть инициализирован напрямую, он предназначен только для наследования.
Please open Telegram to view this post
VIEW IN TELEGRAM
😐1
pip install marshmallow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
Потоки и процессы
В современном компьютерном мире понятия потоков (threads) и процессов (processes) играют ключевую роль в обеспечении многозадачности и эффективного использования ресурсов системы.
Процессы
Процесс - это экземпляр программы, который выполняется на компьютере. Каждый процесс имеет своё собственное пространство памяти, системные ресурсы и данные. Процессы создаются операционной системой и могут быть запущены пользователем или другой программой.
Ключевые характеристики процессов:
🔤 Изоляция памяти: Каждый процесс работает в своем собственном адресном пространстве. Это означает, что данные одного процесса не могут быть напрямую доступны или изменены другим процессом.
🔤 Ресурсы: Процессы имеют свои собственные дескрипторы файлов, системные ресурсы и окружение.
🔤 Безопасность: Изоляция памяти обеспечивает безопасность данных между процессами, предотвращая случайное или намеренное изменение данных другими процессами.
Создание и управление: Создание нового процесса (форк) занимает больше времени и ресурсов, так как операционная система должна выделить память и ресурсы для нового процесса.
Потоки
Поток (или нить) - это наименьшая единица обработки, которая выполняется в пределах процесса. Потоки позволяют параллельно выполнять несколько задач внутри одного процесса, что увеличивает эффективность использования ресурсов процессора.
Ключевые характеристики потоков:
🔤 Общее адресное пространство: Все потоки в одном процессе разделяют одно и то же адресное пространство и ресурсы, такие как дескрипторы файлов и системные данные.
🔤 Легковесность: Создание и управление потоками менее ресурсоёмко по сравнению с процессами. Потоки могут быстро переключаться, что делает их идеальными для выполнения параллельных задач.
🔤 Синхронизация: Поскольку потоки разделяют общее адресное пространство, они могут легко обмениваться данными, но это требует механизмов синхронизации (например, мьютексов или семафоров) для предотвращения конфликтов при одновременном доступе к общим ресурсам.
🔤 Производительность: Потоки позволяют использовать возможности многоядерных процессоров, выполняя задачи параллельно и улучшая общую производительность системы.
🛩 Pro Python. Подписаться
В современном компьютерном мире понятия потоков (threads) и процессов (processes) играют ключевую роль в обеспечении многозадачности и эффективного использования ресурсов системы.
Процессы
Процесс - это экземпляр программы, который выполняется на компьютере. Каждый процесс имеет своё собственное пространство памяти, системные ресурсы и данные. Процессы создаются операционной системой и могут быть запущены пользователем или другой программой.
Ключевые характеристики процессов:
Создание и управление: Создание нового процесса (форк) занимает больше времени и ресурсов, так как операционная система должна выделить память и ресурсы для нового процесса.
Потоки
Поток (или нить) - это наименьшая единица обработки, которая выполняется в пределах процесса. Потоки позволяют параллельно выполнять несколько задач внутри одного процесса, что увеличивает эффективность использования ресурсов процессора.
Ключевые характеристики потоков:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Кортежи в pattern matching
В качестве шаблонов в pathern matching в Python могут выступать кортежи. Эти примеры показывают, как можно использовать pattern matching для работы с кортежами в Python. С помощью этой функциональности можно значительно упростить обработку различных структур данных.
🛩 Pro Python. Подписаться
В качестве шаблонов в pathern matching в Python могут выступать кортежи. Эти примеры показывают, как можно использовать pattern matching для работы с кортежами в Python. С помощью этой функциональности можно значительно упростить обработку различных структур данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
PostgreSQL — это мощная реляционная база данных с широкими возможностями, включая поддержку различных типов данных. Давайте рассмотрим основные типы данных, которые доступны в PostgreSQL.
1. Числовые типы
- INTEGER: Целые числа (4 байта). Диапазон: от -2,147,483,648 до 2,147,483,647.
- BIGINT: Большие целые числа (8 байт). Диапазон: от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.
- SMALLINT: Малые целые числа (2 байта). Диапазон: от -32,768 до 32,767.
- DECIMAL или NUMERIC: Числа с фиксированной точкой. Полезно для финансовых данных. Формат: DECIMAL(10, 2).
- FLOAT: Числа с плавающей точкой (4 байта). Может быть представлен как FLOAT4 или FLOAT8.
- REAL: Числа с плавающей точкой одинарной точности (4 байта).
- DOUBLE PRECISION: Числа с плавающей точкой двойной точности (8 байт).
2. Символьные типы
- CHAR(n): Фиксированная длина строк (n символов).
- VARCHAR(n): Переменная длина строк (максимум n символов).
- TEXT: Не ограниченная длина строк. Полезно для хранения больших текстов.
3. Булевый тип
- BOOLEAN: Логические значения (TRUE, FALSE, NULL).
4. Дата и время
- DATE: Дата (год, месяц, день).
- TIME: Время (часы, минуты, секунды).
- TIMESTAMP: Дата и время (без указания часового пояса).
- TIMESTAMPTZ: Дата и время (с указанием часового пояса).
- INTERVAL: Период времени.
5. Геометрические типы
- POINT: Точка в 2D пространстве.
- LINE: Непрерывная прямая.
- CIRCLE: Круг.
- POLYGON: Многоугольник.
6. Сетевые типы
- CIDR: IPv4 и IPv6 адреса с масками.
- INET: IPv4 и IPv6 адреса без маски.
- MACADDR: MAC-адреса.
7. JSON и XML
- JSON: Данные в формате JSON, позволяют хранить несопоставленные данные.
- JSONB: Бинарный формат JSON, более эффективен для хранения и операций.
- XML: Хранение и запрос данных в формате XML.
8. Модель данных
- ARRAY: Массивы. Позволяют хранить массив значений одного типа.
- COMPOSITE: Пользовательские типы данных, составленные из других типов.
- HSTORE: Набор пар ключ-значение. Полезен для хранения схематически не структурированных данных.
9. Уникальные типы
- UUID: Уникальные идентификаторы, генерируемые на основе алгоритма.
- TSVECTOR и TSQUERY: Для полнотекстового поиска.
Заключение
PostgreSQL предлагает огромный выбор типов данных, позволяющих гибко управлять вашей информацией. Правильный выбор типа данных может существенно улучшить производительность и управляемость вашей базы данных. Убедитесь, что вы используете подходящие типы данных для оптимизации вашего приложения!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Начнём с рассмотрения задач 13 типа ЕГЭ по Информатике (Работа с сетью), они затрагивает организацию компьютерных сетей, адресацию, протоколы передачи данных.
Но для начала немного теории.
IP-адрес - это уникальный идентификатор, который назначается каждому устройству, подключенному к сети интернет. Он позволяет устройствам взаимодействовать друг с другом и обмениваться данными.
Существуют два основных типа IP-адресов:
• IPv4: Используется в большинстве современных сетей. Представляет собой 32-битное число, которое записывается в виде четырех чисел от 0 до 255, разделенных точками, каждое из которых весит по 8 бит (например, 192.168.1.1). (Используется на ЕГЭ)
• IPv6: Новая версия IP-адреса, использующая 128-битное число, записанное в шестнадцатеричном виде (например, 2001:0:200:3:0:0:0:1).
Адрес сети - это начальный IP-адрес диапазона IP-адресов, которые относятся к одной сети. Он используется для идентификации этой сети и является частью объекта сети, который также включает в себя маску подсети.
Маска - это 32-битное число, которое определяет, какая часть IP-адреса используется для идентификации сети, а какая - для идентификации конкретного устройства в сети.
По IP и маске можно найти адрес сети.
Например, IP - 192.168.1.10 Маска - 255.255.255.0
Нужно перевести в двоичное представление и выполнить побитовую операцию AND
IP-адрес: 11000000 10101000 00000001 00001010
Маска подсети: 11111111 11111111 11111111 00000000
Результат побитовой операции AND: 11000000 10101000 00000001 00000000 = 192.168.1.0 в десятеричном представлении. Это адрес сети
Дальше в процессе решения задач разберёмся подробнее, будем использовать модуль ipaddress
Но для начала немного теории.
IP-адрес - это уникальный идентификатор, который назначается каждому устройству, подключенному к сети интернет. Он позволяет устройствам взаимодействовать друг с другом и обмениваться данными.
Существуют два основных типа IP-адресов:
• IPv4: Используется в большинстве современных сетей. Представляет собой 32-битное число, которое записывается в виде четырех чисел от 0 до 255, разделенных точками, каждое из которых весит по 8 бит (например, 192.168.1.1). (Используется на ЕГЭ)
• IPv6: Новая версия IP-адреса, использующая 128-битное число, записанное в шестнадцатеричном виде (например, 2001:0:200:3:0:0:0:1).
Адрес сети - это начальный IP-адрес диапазона IP-адресов, которые относятся к одной сети. Он используется для идентификации этой сети и является частью объекта сети, который также включает в себя маску подсети.
Маска - это 32-битное число, которое определяет, какая часть IP-адреса используется для идентификации сети, а какая - для идентификации конкретного устройства в сети.
По IP и маске можно найти адрес сети.
Например, IP - 192.168.1.10 Маска - 255.255.255.0
Нужно перевести в двоичное представление и выполнить побитовую операцию AND
IP-адрес: 11000000 10101000 00000001 00001010
Маска подсети: 11111111 11111111 11111111 00000000
Результат побитовой операции AND: 11000000 10101000 00000001 00000000 = 192.168.1.0 в десятеричном представлении. Это адрес сети
Дальше в процессе решения задач разберёмся подробнее, будем использовать модуль ipaddress
👍1