🤔 Что такое XSS? Примеры.
XSS (Cross-Site Scripting): уязвимость, позволяющая вставлять вредоносный код на сайт.
Примеры:
1. Вставка скрипта в поле комментариев: <script>alert('XSS');</script>.
2. Кража cookie через вставленный скрипт.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
XSS (Cross-Site Scripting): уязвимость, позволяющая вставлять вредоносный код на сайт.
Примеры:
1. Вставка скрипта в поле комментариев: <script>alert('XSS');</script>.
2. Кража cookie через вставленный скрипт.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3
🤔 В чем отличие асинхронности, threading'га и мультипроцессинга?
Асинхронность, threading и мультипроцессинг - это три различных подхода к параллельному выполнению задач каждый из которых имеет свои особенности и применения:
🚩Асинхронность (Asynchronous)
Асинхронность предполагает выполнение задач без ожидания их завершения. Используется для работы с вводом-выводом (I/O), таким как чтение или запись файлов, сетевые запросы и т. д. В асинхронном коде задачи не блокируют основной поток выполнения, что позволяет эффективно использовать ресурсы процессора. Примеры асинхронных моделей включают в себя асинхронные функции и ключевые слова в Python (например,
🚩Потоки (Threading)
Потоки позволяют выполнять несколько частей кода (потоков) параллельно в пределах одного процесса. Используются для выполнения многозадачных операций, которые могут быть распределены между несколькими ядрами процессора. Потоки могут выполняться параллельно, но могут также конкурировать за общие ресурсы, что может привести к проблемам синхронизации и безопасности. В некоторых языках, таких как Python, использование потоков ограничено из-за GIL (Global Interpreter Lock), что может снижать эффективность при использовании множества потоков для CPU-интенсивных задач.
🚩Мультипроцессинг (Multiprocessing)
Мультипроцессинг также позволяет выполнять несколько частей кода параллельно, но каждая часть выполняется в отдельном процессе. Каждый процесс имеет свое собственное пространство памяти, что делает мультипроцессинг более подходящим для многозадачных вычислений на многоядерных системах. Процессы обычно имеют больший накладные расходы по сравнению с потоками, поскольку каждый из них требует своих собственных ресурсов памяти и управления. Мультипроцессинг избегает проблемы GIL, что делает его более эффективным для CPU-интенсивных задач в Python и других языках.
Ставь 👍 и забирай 📚 Базу знаний
Асинхронность, threading и мультипроцессинг - это три различных подхода к параллельному выполнению задач каждый из которых имеет свои особенности и применения:
🚩Асинхронность (Asynchronous)
Асинхронность предполагает выполнение задач без ожидания их завершения. Используется для работы с вводом-выводом (I/O), таким как чтение или запись файлов, сетевые запросы и т. д. В асинхронном коде задачи не блокируют основной поток выполнения, что позволяет эффективно использовать ресурсы процессора. Примеры асинхронных моделей включают в себя асинхронные функции и ключевые слова в Python (например,
async, await).🚩Потоки (Threading)
Потоки позволяют выполнять несколько частей кода (потоков) параллельно в пределах одного процесса. Используются для выполнения многозадачных операций, которые могут быть распределены между несколькими ядрами процессора. Потоки могут выполняться параллельно, но могут также конкурировать за общие ресурсы, что может привести к проблемам синхронизации и безопасности. В некоторых языках, таких как Python, использование потоков ограничено из-за GIL (Global Interpreter Lock), что может снижать эффективность при использовании множества потоков для CPU-интенсивных задач.
🚩Мультипроцессинг (Multiprocessing)
Мультипроцессинг также позволяет выполнять несколько частей кода параллельно, но каждая часть выполняется в отдельном процессе. Каждый процесс имеет свое собственное пространство памяти, что делает мультипроцессинг более подходящим для многозадачных вычислений на многоядерных системах. Процессы обычно имеют больший накладные расходы по сравнению с потоками, поскольку каждый из них требует своих собственных ресурсов памяти и управления. Мультипроцессинг избегает проблемы GIL, что делает его более эффективным для CPU-интенсивных задач в Python и других языках.
Ставь 👍 и забирай 📚 Базу знаний
👍4
🤔 Что такое SQL?
SQL (Structured Query Language) — это язык структурированных запросов, используемый для работы с реляционными базами данных: создание, чтение, изменение и удаление данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
SQL (Structured Query Language) — это язык структурированных запросов, используемый для работы с реляционными базами данных: создание, чтение, изменение и удаление данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2🔥1
🤔 Какие ещё есть основные методы, кроме магических?
Кроме магических (init, str, len и др.), часто используются обычные методы объектов:
- Для строк: .lower(), .upper(), .replace(), .split(), .join().
- Для списков: .append(), .extend(), .remove(), .pop(), .sort().
- Для словарей: .get(), .items(), .keys(), .values(), .update().
- Для множеств: .add(), .discard(), .union(), .intersection().
Эти методы составляют ядро повседневной работы с типами Python и не являются "магическими", но критически важны.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Кроме магических (init, str, len и др.), часто используются обычные методы объектов:
- Для строк: .lower(), .upper(), .replace(), .split(), .join().
- Для списков: .append(), .extend(), .remove(), .pop(), .sort().
- Для словарей: .get(), .items(), .keys(), .values(), .update().
- Для множеств: .add(), .discard(), .union(), .intersection().
Эти методы составляют ядро повседневной работы с типами Python и не являются "магическими", но критически важны.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 Какие объекты можно положить в множество?
В Python множество (
🚩Можно добавить в `set`:
Числа (
Строки (
Кортежи (
Булевые значения (
🚩Нельзя добавить в `set`
Изменяемые объекты (
Кортежи с изменяемыми элементами
Ставь 👍 и забирай 📚 Базу знаний
В Python множество (
set) — это неупорядоченная коллекция уникальных элементов, которая работает на основе хеш-таблицы. Это значит, что только хешируемые (immutable) объекты могут быть добавлены в set.🚩Можно добавить в `set`:
Числа (
int, float, complex) s = {1, 2.5, 3+4j}Строки (
str) s = {"apple", "banana", "cherry"}Кортежи (
tuple), если они тоже содержат только неизменяемые объекты s = {(1, 2), ("a", "b")}Булевые значения (
bool)** (но True считается 1, а False — 0) s = {True, False, 1, 0}
print(s) # {False, True} (0 и 1 не добавятся повторно)🚩Нельзя добавить в `set`
Изменяемые объекты (
list, set, dict) s = { [1, 2, 3] } # Ошибка: TypeError: unhashable type: 'list' s = { {"key": "value"} } # Ошибка: TypeError: unhashable type: 'dict'Кортежи с изменяемыми элементами
s = { (1, [2, 3]) } # Ошибка: TypeErrorСтавь 👍 и забирай 📚 Базу знаний
👍6
🤔 Что такое force push?
Это принудительная отправка изменений в удалённую ветку, даже если история расходится. Используется с осторожностью, так как может привести к потере коммитов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Это принудительная отправка изменений в удалённую ветку, даже если история расходится. Используется с осторожностью, так как может привести к потере коммитов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1🔥1
🤔 Как можно оптимизировать API?
Вот основные способы:
- Кеширование (на уровне сервера, CDN или клиента)
- Пагинация — ограничение объёма данных в ответе
- Сжатие (gzip, brotli) — уменьшение объёма трафика
- Фильтрация и выборка полей (select/fields) — отправка только нужных данных
- Асинхронные операции — при тяжёлых вычислениях
- Объединение запросов — уменьшение количества вызовов
- Использование GraphQL или gRPC, если REST ограничивает гибкость
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Вот основные способы:
- Кеширование (на уровне сервера, CDN или клиента)
- Пагинация — ограничение объёма данных в ответе
- Сжатие (gzip, brotli) — уменьшение объёма трафика
- Фильтрация и выборка полей (select/fields) — отправка только нужных данных
- Асинхронные операции — при тяжёлых вычислениях
- Объединение запросов — уменьшение количества вызовов
- Использование GraphQL или gRPC, если REST ограничивает гибкость
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥4👍2🤔2
🤔 Что известно про иерархию исключений?
1. Вершина иерархии — класс BaseException, от которого наследуются все исключения.
2. Основной класс для пользовательских исключений — Exception.
3. Классы, наследуемые от Exception, включают ValueError, TypeError, KeyError и другие.
4. Есть специфические исключения, такие как KeyboardInterrupt и SystemExit, которые наследуются напрямую от BaseException.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
2. Основной класс для пользовательских исключений — Exception.
3. Классы, наследуемые от Exception, включают ValueError, TypeError, KeyError и другие.
4. Есть специфические исключения, такие как KeyboardInterrupt и SystemExit, которые наследуются напрямую от BaseException.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥2👍1
🤔 Что такое паттерн Мост (Bridge)?
Паттерн "Мост" (Bridge) является структурным паттерном проектирования, который предназначен для разделения абстракции и реализации так, чтобы они могли изменяться независимо друг от друга. Этот паттерн полезен, когда класс должен работать с различными платформами или когда нужно избежать жесткой связки между абстракцией и ее реализацией.
🚩 Зачем нужен
🟠Разделение абстракции и реализации:
Он позволяет отделить абстракцию от ее реализации, что упрощает поддержку и расширение системы.
🟠Уменьшение количества подклассов:
Без применения этого паттерна, если у нас есть несколько вариантов абстракции и несколько вариантов реализации, то нам пришлось бы создавать классы для всех возможных комбинаций, что приводит к взрывному росту количества классов.
🟠Гибкость:
Это позволяет изменять и абстракцию, и реализацию независимо друг от друга.
🚩Как используется
🟠Абстракция (Abstraction):
Определяет интерфейс и хранит ссылку на объект Implementor.
🟠Расширенная абстракция (RefinedAbstraction):
Наследует Abstraction и расширяет интерфейс.
🟠Реализатор (Implementor):
Определяет интерфейс для всех реализаций.
🟠Конкретный реализатор (ConcreteImplementor):
Реализует интерфейс Implementor.
Допустим, у нас есть программа для управления различными типами устройств (например, телевизор и радио), которые можно включать и выключать. Мы хотим, чтобы способ управления устройствами мог изменяться независимо от типов устройств.
Ставь 👍 и забирай 📚 Базу знаний
Паттерн "Мост" (Bridge) является структурным паттерном проектирования, который предназначен для разделения абстракции и реализации так, чтобы они могли изменяться независимо друг от друга. Этот паттерн полезен, когда класс должен работать с различными платформами или когда нужно избежать жесткой связки между абстракцией и ее реализацией.
🚩 Зачем нужен
🟠Разделение абстракции и реализации:
Он позволяет отделить абстракцию от ее реализации, что упрощает поддержку и расширение системы.
🟠Уменьшение количества подклассов:
Без применения этого паттерна, если у нас есть несколько вариантов абстракции и несколько вариантов реализации, то нам пришлось бы создавать классы для всех возможных комбинаций, что приводит к взрывному росту количества классов.
🟠Гибкость:
Это позволяет изменять и абстракцию, и реализацию независимо друг от друга.
🚩Как используется
🟠Абстракция (Abstraction):
Определяет интерфейс и хранит ссылку на объект Implementor.
🟠Расширенная абстракция (RefinedAbstraction):
Наследует Abstraction и расширяет интерфейс.
🟠Реализатор (Implementor):
Определяет интерфейс для всех реализаций.
🟠Конкретный реализатор (ConcreteImplementor):
Реализует интерфейс Implementor.
Допустим, у нас есть программа для управления различными типами устройств (например, телевизор и радио), которые можно включать и выключать. Мы хотим, чтобы способ управления устройствами мог изменяться независимо от типов устройств.
# Implementor
class Device:
def is_enabled(self):
pass
def enable(self):
pass
def disable(self):
pass
# ConcreteImplementor
class TV(Device):
def __init__(self):
self._on = False
def is_enabled(self):
return self._on
def enable(self):
self._on = True
def disable(self):
self._on = False
class Radio(Device):
def __init__(self):
self._on = False
def is_enabled(self):
return self._on
def enable(self):
self._on = True
def disable(self):
self._on = False
# Abstraction
class RemoteControl:
def __init__(self, device):
self._device = device
def toggle_power(self):
if self._device.is_enabled():
self._device.disable()
else:
self._device.enable()
# RefinedAbstraction
class AdvancedRemoteControl(RemoteControl):
def mute(self):
print("Device is muted.")
# Клиентский код
tv = TV()
remote = RemoteControl(tv)
remote.toggle_power() # Включает TV
radio = Radio()
advanced_remote = AdvancedRemoteControl(radio)
advanced_remote.toggle_power() # Включает Radio
advanced_remote.mute() # Заглушает Radio
Ставь 👍 и забирай 📚 Базу знаний
🤔 Сколько пар ключ–значение может быть в словаре?
Ограничено только объёмом памяти. Теоретически можно добавлять сколько угодно пар, пока не закончится доступная оперативная память.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ограничено только объёмом памяти. Теоретически можно добавлять сколько угодно пар, пока не закончится доступная оперативная память.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍6
🤔 Что такое архитектура веб-сервисов?
Архитектура веб-сервисов — это способ организации взаимодействия между разными системами через интернет.
Компоненты взаимодействуют через API, чаще всего через REST, SOAP или GraphQL.
Такая архитектура позволяет системам обмениваться данными, даже если они написаны на разных языках или разрабатывались независимо.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Архитектура веб-сервисов — это способ организации взаимодействия между разными системами через интернет.
Компоненты взаимодействуют через API, чаще всего через REST, SOAP или GraphQL.
Такая архитектура позволяет системам обмениваться данными, даже если они написаны на разных языках или разрабатывались независимо.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Пример использования контекстного менеджера
Контекстный менеджер используется, чтобы гарантировать корректное открытие и закрытие ресурсов: файлов, соединений, блокировок. Он автоматически управляет входом и выходом из блока с необходимыми действиями.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Контекстный менеджер используется, чтобы гарантировать корректное открытие и закрытие ресурсов: файлов, соединений, блокировок. Он автоматически управляет входом и выходом из блока с необходимыми действиями.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3💊1
🤔 Что такое многопоточность/многопроцессорность?
В программировании многопоточность и многопроцессорность помогают выполнять задачи параллельно, но работают по-разному.
🟠Многопоточность (Multithreading)
Многопоточность позволяет одной программе запускать несколько потоков (threads), которые работают одновременно.
Вывод
🟠2. Многопроцессорность (Multiprocessing)
Многопроцессорность запускает отдельные процессы, которые работают полностью независимо и могут использовать разные ядра процессора.
Вывод (процессы действительно работают параллельно)
Ставь 👍 и забирай 📚 Базу знаний
В программировании многопоточность и многопроцессорность помогают выполнять задачи параллельно, но работают по-разному.
🟠Многопоточность (Multithreading)
Многопоточность позволяет одной программе запускать несколько потоков (threads), которые работают одновременно.
import threading
import time
def task(name):
print(f"{name} начал работу")
time.sleep(2)
print(f"{name} завершил работу")
# Создаём два потока
t1 = threading.Thread(target=task, args=("Поток 1",))
t2 = threading.Thread(target=task, args=("Поток 2",))
t1.start()
t2.start()
t1.join()
t2.join()
print("Все потоки завершены")
Вывод
Поток 1 начал работу
Поток 2 начал работу
Поток 1 завершил работу
Поток 2 завершил работу
Все потоки завершены
🟠2. Многопроцессорность (Multiprocessing)
Многопроцессорность запускает отдельные процессы, которые работают полностью независимо и могут использовать разные ядра процессора.
import multiprocessing
import time
def task(name):
print(f"{name} начал работу")
time.sleep(2)
print(f"{name} завершил работу")
if __name__ == "__main__":
p1 = multiprocessing.Process(target=task, args=("Процесс 1",))
p2 = multiprocessing.Process(target=task, args=("Процесс 2",))
p1.start()
p2.start()
p1.join()
p2.join()
print("Все процессы завершены")
Вывод (процессы действительно работают параллельно)
Процесс 1 начал работу
Процесс 2 начал работу
Процесс 1 завершил работу
Процесс 2 завершил работу
Все процессы завершены
Ставь 👍 и забирай 📚 Базу знаний
👍6
🤔 Что такое автоматичная очистка памяти?
Это процесс, при котором неиспользуемые объекты удаляются автоматически, чтобы освободить память. В Python используется сборка мусора на основе подсчёта ссылок и циклического сборщика.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Это процесс, при котором неиспользуемые объекты удаляются автоматически, чтобы освободить память. В Python используется сборка мусора на основе подсчёта ссылок и циклического сборщика.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4
🤔 Для чего нужны static method?
Статические методы (static methods) в Python используются для создания методов, которые связаны с классом, но не требуют доступа к экземпляру этого класса или к самим данным класса. Это методы, которые выполняют функции, связанные с классом, но не изменяют и не используют состояние экземпляра (атрибуты объекта) или состояние самого класса (атрибуты класса). Они могут быть вызваны на уровне класса, а не на уровне экземпляра класса.
🚩Как создать статический метод
Для создания статического метода в Python используется декоратор
🚩Пример использования статического метода
Вы можете вызывать статический метод как через сам класс, так и через его экземпляр:
🚩Зачем нужны статические методы
🟠Логическая группировка
Статические методы позволяют логически группировать функции, которые связаны с классом, но не зависят от состояния конкретного экземпляра. Это помогает организовать код и делает его более читабельным.
🟠Удобство вызова
Иногда полезно вызывать метод, не создавая экземпляр класса. Например, если метод выполняет какую-то утилитарную функцию или обрабатывает данные, не связанные с объектом.
🟠Избежание изменений состояния
Поскольку статические методы не могут изменять состояние экземпляра или класса, их использование может способствовать созданию безопасного и предсказуемого кода.
🚩Сравнение с методами класса и экземпляра
🟠Методы экземпляра
Методы экземпляра (instance methods) принимают первым аргументом
🟠Методы класса
Методы класса (class methods) принимают первым аргументом
🟠Статические методы
Статические методы не принимают
Ставь 👍 и забирай 📚 Базу знаний
Статические методы (static methods) в Python используются для создания методов, которые связаны с классом, но не требуют доступа к экземпляру этого класса или к самим данным класса. Это методы, которые выполняют функции, связанные с классом, но не изменяют и не используют состояние экземпляра (атрибуты объекта) или состояние самого класса (атрибуты класса). Они могут быть вызваны на уровне класса, а не на уровне экземпляра класса.
🚩Как создать статический метод
Для создания статического метода в Python используется декоратор
@staticmethod. Давайте рассмотрим пример:class MyClass:
@staticmethod
def static_method(arg1, arg2):
return arg1 + arg2
🚩Пример использования статического метода
Вы можете вызывать статический метод как через сам класс, так и через его экземпляр:
result = MyClass.static_method(5, 10)
print(result) # Вывод: 15
my_instance = MyClass()
result = my_instance.static_method(3, 7)
print(result) # Вывод: 10
🚩Зачем нужны статические методы
🟠Логическая группировка
Статические методы позволяют логически группировать функции, которые связаны с классом, но не зависят от состояния конкретного экземпляра. Это помогает организовать код и делает его более читабельным.
🟠Удобство вызова
Иногда полезно вызывать метод, не создавая экземпляр класса. Например, если метод выполняет какую-то утилитарную функцию или обрабатывает данные, не связанные с объектом.
🟠Избежание изменений состояния
Поскольку статические методы не могут изменять состояние экземпляра или класса, их использование может способствовать созданию безопасного и предсказуемого кода.
🚩Сравнение с методами класса и экземпляра
🟠Методы экземпляра
Методы экземпляра (instance methods) принимают первым аргументом
self, что позволяет им изменять состояние конкретного экземпляра класса. class MyClass:
def instance_method(self, value):
self.value = value
🟠Методы класса
Методы класса (class methods) принимают первым аргументом
cls, что позволяет им изменять состояние самого класса. class MyClass:
class_variable = 0
@classmethod
def class_method(cls, value):
cls.class_variable = value
🟠Статические методы
Статические методы не принимают
self или cls в качестве первого аргумента и не могут изменять состояние экземпляра или класса. class MyClass:
@staticmethod
def static_method(arg1, arg2):
return arg1 + arg2
Ставь 👍 и забирай 📚 Базу знаний
👍4
🤔 Для чего нужны предупреждения (warnings) и как создать собственное?
Предупреждения — это сообщения о потенциальных проблемах, которые не прерывают выполнение. Их можно создать с помощью модуля warnings и вызвать через warn().
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Предупреждения — это сообщения о потенциальных проблемах, которые не прерывают выполнение. Их можно создать с помощью модуля warnings и вызвать через warn().
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3🔥1
🤔 Что случится с сервером при использовании GET?
Когда сервер получает HTTP-запрос типа GET, он выполняет следующие действия
🟠Анализ запроса
проверяет URL и параметры в строке запроса (например,
🟠Поиск ресурса
находит запрашиваемый файл, данные из базы или другой ресурс.
🟠Возврат ответа
отправляет данные клиенту (если ресурс найден — код 200, если нет — 404).
🚩Особенности GET-запроса
🟠Безопасный
не изменяет данные на сервере, используется только для чтения.
🟠Идемпотентный
повторные запросы дают одинаковый результат.
🟠Параметры в URL
данные передаются через строку запроса, что не подходит для конфиденциальной информации.
Ставь 👍 и забирай 📚 Базу знаний
Когда сервер получает HTTP-запрос типа GET, он выполняет следующие действия
🟠Анализ запроса
проверяет URL и параметры в строке запроса (например,
?id=123). 🟠Поиск ресурса
находит запрашиваемый файл, данные из базы или другой ресурс.
🟠Возврат ответа
отправляет данные клиенту (если ресурс найден — код 200, если нет — 404).
🚩Особенности GET-запроса
🟠Безопасный
не изменяет данные на сервере, используется только для чтения.
🟠Идемпотентный
повторные запросы дают одинаковый результат.
🟠Параметры в URL
данные передаются через строку запроса, что не подходит для конфиденциальной информации.
import requests
response = requests.get("https://api.example.com/data", params={"id": 123})
print(response.text) # Данные с сервера
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 В чем разница между итератором и генератором?
Итератор — это объект, который поддерживает метод `__iter__()` и `__next__()` и позволяет проходить по коллекции элементов. Генератор — это специальный вид итератора, который создается с помощью ключевого слова `yield` и позволяет лениво возвращать элементы по одному, сохраняя состояние между вызовами. Генераторы обычно используются для обработки больших данных, поскольку они не требуют загрузки всего набора данных в память. Итераторы, в свою очередь, могут быть созданы вручную с помощью классов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4💊1
🤔 Какие есть коды ошибок HTTP?
В HTTP коды состояния указывают, как сервер обработал запрос. Они делятся на 5 категорий:
1xx (Информационные – запрос принят, продолжаем.
2xx (Успешные) – всё хорошо.
3xx (Перенаправления) – запрашиваемый ресурс перемещён.
4xx (Ошибки клиента) – клиент отправил неправильный запрос.
5xx (Ошибки сервера) – сервер не смог обработать запрос.
🚩Как исправить ошибки HTTP?
4xx:
400: Проверить формат запроса.
401: Убедиться, что пользователь авторизован.
403: Проверить права доступа.
404: Убедиться, что URL правильный.
5xx:
500: Проверить код сервера (ошибки в логах).
502/504: Проверить настройки Nginx/Proxy.
503: Сервер перегружен → добавить балансировку нагрузки.
Ставь 👍 и забирай 📚 Базу знаний
В HTTP коды состояния указывают, как сервер обработал запрос. Они делятся на 5 категорий:
1xx (Информационные – запрос принят, продолжаем.
2xx (Успешные) – всё хорошо.
3xx (Перенаправления) – запрашиваемый ресурс перемещён.
4xx (Ошибки клиента) – клиент отправил неправильный запрос.
5xx (Ошибки сервера) – сервер не смог обработать запрос.
🚩Как исправить ошибки HTTP?
4xx:
400: Проверить формат запроса.
401: Убедиться, что пользователь авторизован.
403: Проверить права доступа.
404: Убедиться, что URL правильный.
5xx:
500: Проверить код сервера (ошибки в логах).
502/504: Проверить настройки Nginx/Proxy.
503: Сервер перегружен → добавить балансировку нагрузки.
Ставь 👍 и забирай 📚 Базу знаний
👍5
🤔 Какие знаешь итераторы?
Итераторами являются генераторы, файлы, объекты, возвращаемые iter(), а также методы словаря (keys(), items()), списки, множества и строки. Любой объект, реализующий iter() и next(), считается итератором.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Итераторами являются генераторы, файлы, объекты, возвращаемые iter(), а также методы словаря (keys(), items()), списки, множества и строки. Любой объект, реализующий iter() и next(), считается итератором.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2🔥1💊1
🤔 Для чего нужно ключевое слово global?
Ключевое слово global используется для объявления переменной глобальной внутри функции. Без него любое присваивание переменной внутри функции создаёт новую локальную переменную. Если нужно изменить переменную, определённую вне функции — следует явно указать global.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ключевое слово global используется для объявления переменной глобальной внутри функции. Без него любое присваивание переменной внутри функции создаёт новую локальную переменную. Если нужно изменить переменную, определённую вне функции — следует явно указать global.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍7