METANIT.COM – Telegram
METANIT.COM
5.8K subscribers
1.64K photos
80 videos
9 files
990 links
Канал о программировании и разработке сайта metanit.com
Download Telegram
6 основных типов тестирования API
(описание в следующей статье)
🔥63👍2
6 основных типов тестирования API:
(описание к предыдущей статье)

1. Stress Testing (Стресс-тестирование)
- Цель: Проверка устойчивости API при высоких нагрузках.
- Процесс: Использование тестовых движков для создания высоких нагрузок и анализ работы приложения.

2. Integration Testing (Интеграционное тестирование)
- Цель: Проверка взаимодействия между различными компонентами системы.
- Процесс: Создание тестового плана, ввод данных, сравнение результатов с ожидаемыми.

3. Load Testing (Нагрузочное тестирование)
- Цель: Оценка производительности API при различных нагрузках.
- Процесс: Использование тестовых движков и инструментов, таких как Apache JMeter, для симуляции нагрузок.

4. Regression Testing (Регрессионное тестирование)
- Цель: Убедиться, что новые изменения не нарушают существующую функциональность.
- Процесс: Сравнение результатов старого и нового приложений с использованием входных данных.

5. Functional Testing (Функциональное тестирование)
- Цель: Проверка соответствия функциональности API заявленным требованиям.
- Процесс: Использование функциональной спецификации, ввод данных, сравнение результатов с ожидаемыми.

6. Smoke Testing (Дымовое тестирование)
- Цель: Быстрая проверка основных функций API после разработки.
- Процесс: Ввод данных и проверка, работает ли приложение без ошибок.
🔥6👍32
Шпаргалка по использованию iptables в Linux #linux
🔥12🥰1👏1
8 наиболее распространенных типов кибератак
(описание в следующем посте)
8 наиболее распространенных типов кибератак:
(описание к предыдущему посту)

1. Фишинговая атака (Phishing Attack)
- Использование обманных писем, сообщений или сайтов для получения конфиденциальной информации.
- Пример: злоумышленник отправляет ссылку, пользователь открывает её, и хакер получает доступ к учётным данным.

2. Программа-вымогатель (Ransomware)
- Программное обеспечение, которое шифрует файлы и требует выкуп за их разблокировку.
- Пример: заражённый USB-накопитель инфицирует устройство, данные блокируются, и злоумышленник требует выкуп.

3. Отказ в обслуживании (DoS)
- Перегрузка системы или сети для нарушения её нормальной работы.
- Пример: бот-сеть атакует сервер, вызывая его недоступность.

4. Атака «человек посередине» (MitM)
- Перехват и изменение коммуникации между двумя сторонами без их ведома.
- Пример: злоумышленник вставляет себя в канал связи между пользователем и веб-приложением.

5. SQL-инъекция (SQL Injection)
- Использование уязвимостей в запросах к базе данных для получения несанкционированного доступа.
- Пример: злоумышленник отправляет вредоносный запрос, и сервер возвращает данные всех пользователей.

6. Межсайтовый скриптинг (XSS)
- Внедрение вредоносных скриптов на веб-сайты, которые просматриваются другими пользователями.
- Пример: вставка скрипта в базу данных, который затем выполняется в браузере жертвы.

7. Эксплойты нулевого дня (Zero-Day Exploits)
- Атака, использующая неизвестные уязвимости до того, как разработчики смогут их устранить.
- Пример: злоумышленник обнаруживает уязвимость, запускает атаку, а разработчики не успевают её устранить.

8. Спуфинг DNS (DNS Spoofing)
- Перенаправление запросов DNS на вредоносные сайты для несанкционированного доступа.
- Пример: злоумышленник вводит фальшивую запись DNS, и запрос пользователя перенаправляется на поддельный сайт.
Android для ПК появится в следующем году

Генеральный директор Qualcomm Криштиану Амон сообщил в ходе саммита Qualcomm Snapdragon в Мауи, что Google объединит Android и ChromeOS для создания новой операционной системы для компьютеров.
«Это то, чего мы очень ждём в следующем году», — подтвердил глава экосистемы Android Самир Самат.

По его словам, «открывающаяся возможность заключается в том, как ускорить развитие ИИ, которое мы реализуем на Android, и как можно быстрее перенести его в форм-фактор ноутбука, обеспечив при этом бесперебойную работу ноутбука и остальной экосистемы Android».
https://www.youtube.com/live/fpHCkdIg9gU?t=4655s

#android
🤔10🤷‍♂3🤡3🔥21🤪1
Редакторы журнала IEEE Spectrum опубликовали ежегодный рейтинг языков программирования. В списке популярных языков традиционно лидируют Python, Java, C++ и SQL.

В «Spectrum» отмечают, что самым большим изменением в пятёрке лидеров стало падение JavaScript с 3-его места в прошлом году на 6-ое в этом году. Издатели связывают это падение с тем, что, поскольку JavaScript часто используется для создания веб-страниц, а Vibe-кодинг такэе часто применяется для создания веб-сайтов, то это падение может быть связано с влиянием ИИ.
В рейтинге «Jobs», который учитывает исключительно навыки, востребованные работодателями, Python также занял первое место, поднявшись со второго места в прошлом году, хотя знание SQL остаётся невероятно ценным навыком для резюме.

https://spectrum.ieee.org/top-programming-languages-2025
👍31
Вкратце по шаблонам проектирования

Почему шаблоны проектирования важны?

1. Возможность повторного использования
* Проверенные решения, которые работают в разных проектах

2. Гибкость
* Способствуют слабой связности компонентов и упрощают поддержку

3. Коммуникация
* Создают общий язык для обсуждения проблем проектирования и их решений

4. Опыт
* Инкапсулируют опыт опытных разработчиков, помогая другим избегать типичных ошибок и создавать более качественное ПО


Рассмотрим основные задачи которые решают шаблоны.

Порождающие шаблоны

1. Абстрактная фабрика
* Создаёт семейства взаимосвязанных объектов через общий интерфейс

2. Строитель
* Разделяет построение сложного объекта от его представления

3. Фабричный метод
* Определяет интерфейс для создания объектов
* Позволяет подклассам выбирать конкретный класс для создания

4. Прототип
* Создаёт новые объекты путём копирования прототипа

5. Одиночка
* Гарантирует, что класс имеет только один экземпляр

Структурные шаблоны

6. Адаптер
* Преобразует один интерфейс в другой, позволяя несовместимым классам работать вместе

7. Мост
* Разделяет абстракцию и реализацию, позволяя им изменяться независимо

8. Компоновщик
* Обрабатывает отдельные объекты и их композиции единообразно, представляя иерархии часть-целое

9. Декоратор
* Динамически добавляет функциональность объекту без использования наследования

10. Фасад
* Предоставляет упрощённый интерфейс к сложной подсистеме

11. Лёгковес
* Разделяет объекты для уменьшения использования памяти при большом количестве мелких объектов

12. Заместитель
* Контролирует доступ к объекту, предоставляя различные возможности, такие как отложенная загрузка или удалённый доступ

Поведенческие шаблоны

13. Цепочка ответственности
* Разделяет отправителей и получателей запросов, позволяя нескольким объектам обрабатывать запрос

14. Команда
* Инкапсулирует запросы в объекты, позволяя вести логирование, создавать очереди и выполнять операции отмены/повтора

15. Интерпретатор
* Определяет грамматику языка и интерпретатор для выполнения выражений

16. Итератор
* Обеспечивает последовательный доступ к элементам агрегата без раскрытия внутреннего представления

17. Посредник
* Инкапсулирует взаимодействие объектов, способствуя слабой связности

18. Хранитель
* Сохраняет и восстанавливает состояние объекта без нарушения инкапсуляции

19. Наблюдатель
* Автоматически уведомляет зависимые объекты при изменении состояния

20. Состояние
* Изменяет поведение объекта при изменении его внутреннего состояния

21. Стратегия
* Инкапсулирует взаимозаменяемые алгоритмы, позволяя клиентам выбирать их динамически

22. Шаблонный метод
* Определяет скелет алгоритма, откладывая шаги реализации на подклассы

23. Посетитель
* Добавляет новые операции к структурам объектов без изменения классов элементов
👍10🔥7🤓5👏1
Cравнение двух методов аутентификации и хранения данных в веб-приложениях: Куки и Сессии.
(продолжение в следующем посте)
Cравнение двух методов аутентификации и хранения данных в веб-приложениях: Куки и Сессии.
(продолжение в предыдущего поста)

### Cookies
- Хранение данных: Данные хранятся на стороне клиента (в браузере пользователя).
- Процесс работы:
1. Пользователь отправляет свои учетные данные на сервер.
2. Сервер устанавливает Cookie с пользовательскими данными или токеном.
3. При последующих запросах браузер отправляет Cookie вместе с запросом.
4. Сервер отвечает данными, используя информацию из Cookie.

### Sessions
- Хранение данных: Данные хранятся на сервере, а на стороне клиента сохраняется только идентификатор сессии (Session ID).
- Процесс работы:
1. Пользователь отправляет свои учетные данные на сервер.
2. Сервер создает сессию и устанавливает Cookie с Session ID.
3. При последующих запросах браузер отправляет Session ID.
4. Сервер ищет сессию по идентификатору.
5. Сервер возвращает данные сессии.
6. Сервер отвечает данными пользователю.

### Основные различия
- Cookies:
- Данные хранятся в браузере пользователя.
- Более подвержены уязвимостям, таким как атаки CSRF.
- Ограничены по размеру (обычно до 4 КБ).
- Sessions:
- Данные хранятся на сервере, что повышает безопасность.
- Требуют больше ресурсов на сервере.
- Могут быть более сложными в реализации, особенно в распределенных системах.
5💯3👏1
25 сентября 2025 года состоялся релиз стабильной версии СУБД PostgreSQL 18, обновления для которой будут выходить в течение пяти лет до ноября 2030 года.

PostgreSQL 18 включает множество новых функций и улучшений, среди которых:

* Подсистема асинхронного ввода-вывода (AIO), которая способна повысить производительность последовательных сканирований, сканирований с использованием битовых карт, операций очистки (vacuum) и других операций.

* Утилита pg_upgrade теперь сохраняет статистику оптимизатора.

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

* Функция uuidv7() для генерации UUID с упорядочиванием по временной метке.

* Виртуальные генерируемые столбцы, которые вычисляют свои значения во время операций чтения. Теперь это настройка по умолчанию для генерируемых столбцов.

* Поддержка аутентификации OAuth.

* Поддержка OLD и NEW в предложениях RETURNING для команд INSERT, UPDATE, DELETE и MERGE.

* Временные ограничения (или ограничения над диапазонами) для PRIMARY KEY, UNIQUE и FOREIGN KEY ограничений.

https://www.postgresql.org/docs/18/release-18.html
🔥15👍8👏1
Пессимистическая и оптимистическая блокировки в базах данных
(описание в следующем посте)
Пессимистическая и оптимистическая блокировки в базах данных
(продолжение предыдущего поста)

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

### Пессимистическая блокировка
Цель: Предотвратить конфликты заранее, блокируя данные до их изменения.
Как работает:
1. Система блокирует данные сразу после их извлечения.
2. Другие пользователи не могут изменять эти данные, пока блокировка не будет снята.
3. После завершения транзакции блокировка снимается.

Преимущества:
- Гарантирует целостность данных.
- Подходит для систем с высокой конкуренцией за данные (например, финансовые операции).

Недостатки:
- Может снижать производительность из-за ожидания других процессов.
- Увеличивает вероятность взаимоблокировок (deadlocks).

### Оптимистическая блокировка
Цель: Позволить параллельную работу, проверяя конфликты только при сохранении изменений.
Как работает:
1. Данные читаются без блокировки.
2. При сохранении изменений система проверяет, не были ли данные изменены другими пользователями.
3. Если конфликт обнаружен, транзакция откатывается, и пользователь должен повторить попытку.

Преимущества:
- Высокая производительность, так как блокировки используются редко.
- Меньше вероятность взаимоблокировок.

Недостатки:
- Подходит только для систем с низкой конкуренцией за данные.
- Возможны потери изменений при частых конфликтах.

### Когда использовать?
- Пессимистическая блокировка:
- В системах с частыми изменениями одних и тех же данных.
- Когда важна абсолютная целостность данных.
- Оптимистическая блокировка:
- В системах с большим количеством чтений и редкими изменениями.
- Когда конфликты происходят редко, и их последствия незначительны.
🔥82👍2
Ипортозамещение отменяется. Слишком сырое, очень дорогое. Названы причины, почему российские компании не хотят переходить на отечественное ПО

Отечественный бизнес не очень стремится отказываться от иностранного ПО в пользу отечетсвенного. ПРичины такого отношения: дороговизна российского софта, его малофункциональность, его «сырость» и нестабильность работы, трудности внедрения, а также совмения в его безопасности

Если российским компаниям приходится расставаться с зарубежным лицензионным софтом, то в качестве альтернативы они предпочитают Open Source, а не отечественные решения

https://www.cnews.ru/news/top/2025-09-26_slishkom_syroeizbytochno
😁23🤣6🤡4💯4😐2😭2😢1
Наглядно, как изменялась производительность в .NET по версиям на примере одного запроса LINQ
29🔥19👍8❤‍🔥1🤯1
Основные структуры данных в одной таблице
🔥13🤔5👍4🤮41
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядно как идет взаимодействие между клиентом и базой данных. Но в разных СУБД различается принцип использования подключений:
Postgres: process-per-connection
MySQL: thread-per-connection
14🔥1👏1
Вкратце об эволюции Windows
👎33🤣26👍12🤯6🤮6🔥3👏1
Простой способ отправки email на Python:

import smtplib

HOST = "smtp.mydomain.com"
SUBJECT = "Test email from Python"
TO = "mike@mydomain.com"
FROM = "python@mydomain.com"
text = "blah blah blah"
BODY = "\r\n".join((
f"From: {FROM}",
f"To: {TO}",
f"Subject: {SUBJECT}",
"",
text
))

server = smtplib.SMTP(HOST)
server.sendmail(FROM, [TO], BODY)
server.quit()
16👎5👍4🤮3👏1
В руководство по языку Java добавлены новые статьи:

Sealed-классы и интерфейсы
https://metanit.com/java/tutorial/3.25.php"

Pattern мatching. Паттерн типов
https://metanit.com/java/tutorial/3.26.php"

Pattern мatching. record-паттерн
https://metanit.com/java/tutorial/3.27.php"

#java
🔥22