METANIT.COM – Telegram
METANIT.COM
5.85K subscribers
1.66K photos
81 videos
9 files
1.02K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Cравнение двух версий интернет-протокола: IPv4 и IPv6
(продолжение в следующем посте)
🔥72👏1
Cравнение двух версий интернет-протокола: IPv4 и IPv6
(описание к предыдущему посту)

IPv4
IPv4 — версия протокола Интернета 4. По сравнению с IPv6, в IPv4 адреса представлены в виде строки из четырех значений, разделенных точками. Эти значения варьируются от 0 до 255. Это означает, что IP-адрес может находиться в диапазоне от 0.0.0.0 до 255.255.255.255.
Основные характеристики:
- Формат адресации: десятичная точка (например, 172.16.254.1).
- Каждый байт состоит из 8 бит, что дает диапазон значений от 0 до 255.
- Всего доступно около 4,294,967,296 уникальных адресов.

IPv6
IPv6 — версия протокола Интернета 6. По сравнению с IPv4, доступно гораздо больше адресов IPv6. Это становится очевидным, если посмотреть на формат IPv6. В то время как IPv4 форматируется как 000.000.000.000, IPv6 форматируется как 0000:0000:0000:0000:0000:0000:0000:0000.
Основные характеристики:
- Формат адресации: шестнадцатеричный (например, 2001:0DB8:AC10:FE01:0000:0000:0000:0000).
- Адреса могут быть сокращены, убирая ведущие нули и заменяя группы нулей на "::".
- Всего доступно около 340 ундециллионов уникальных адресов, что делает IPv6 более масштабируемым.

Разбивка IPv6
Пример адреса IPv6: 2001:0DB8:0234:AB00:0123:4567:8901:ABCD.
- Глобальный префикс: 2001:0DB8
- Региональный идентификатор: 0234
- Локальный интернет-провайдер или поставщик услуг: AB00
- Клиент: 0123
- Уникальный идентификатор устройства: 4567:8901:ABCD
🔥144👍4
Благодаря искусственному интеллекту Salesforce сократила 4 тыс. рабочих мест, поделился генеральный директор компании Марк Бениофф. По его словам, использование ИИ-агентов позволило «перебалансировать» численность персонала в отделе поддержки клиентов.
Число сотрудников поддержки Salesforce сократилось с 9 тыс. до 5 тыс., отметил Бениофф. Общий штат Salesforce по всему миру составляет 76 тыс. человек.

https://www.kron4.com/news/technology-ai/sf-tech-ceo-says-ai-enabled-him-to-cut-4000-jobs/
🥱11🤬7👍32😢2👎1👏1
Полезные сетевые команды для специалистов по кибербезу

1. ping: Используется для проверки доступности хоста. Пример: ping google.com.

2. tracert / traceroute: Показывает шаги, которые проходит запрос до сервера. Пример: tracert linkedin.com.

3. nslookup: Находит IP-адрес домена. Пример: nslookup example.com.

4. netstat: Показывает активные сетевые соединения и порты. Пример: netstat -an.

5. arp -a: Выводит пары IP-MAC адресов в сети. Пример: arp -a.

6. telnet: Тестирует доступность порта на удалённом хосте. Пример: telnet example.com 80.

7. ipconfig /flushdns: Очищает кэш DNS. Пример: ipconfig /flushdns.
👍12🥱84🤓3🤔2😁1
JetBrains сделал одну из своих сред разработки - RubyMine (предназначена для разработки на Ruby) бесплатной для некоммерческого использования (но есть нюансы - необходимо наличие аккаунта JetBrains).

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

Некоммерческая лицензия подходит тем, кто изучает программирование, преподаёт его, вносит вклад в проекты с открытым кодом или пишет код в качестве хобби. Такая лицензия выдаётся пользователю на год, и её можно продлевать. Однако, чтобы продлить, надо пользоваться IDE хотя бы один раз в течение последних шести месяцев. Если с момента последнего использования прошло больше шести месяцев, то надо будет снова направить запрос.

Для оформления лицензии надо:
1) Установить RubyMine или обновить до версии 2025.2.1. или выше.
2) Запустить приложение и в приветственном окне выбрать пункт Non-commercial use.
3) Войти в аккаунт JetBrains или создать новый.
4) Принять пользовательское соглашение.

https://blog.jetbrains.com/ruby/2025/09/rubymine-is-now-free-for-non-commercial-use/
🔥20🤮4👍3🤡2🌭21👏1🙉1
Уровни изоляции в базах данных
(продолжение в следующем посте)
👍5🔥1👏1
Уровни изоляции в базах данных
(продолжение предыдущего поста)

📌 Уровни изоляции — это фундаментальное понятие в управлении параллельным доступом к базам данных.

Некоторые предварительные сведения:
* ACID — набор свойств, гарантирующих надёжность транзакций в базе данных.
* Хотя многие базы данных заявляют о соответствии требованиям ACID, по умолчанию они часто реализуют более слабые уровни изоляции.
* Различные приложения предъявляют разные требования к изоляции.
* Некоторые могут отдавать приоритет производительности и допускать определённые несоответствия, в то время как другие могут требовать строгой целостности данных.
* Параллелизм, то есть одновременное выполнение нескольких транзакций, создаёт серьёзные проблемы для систем данных.
* Если не управлять им должным образом, это может привести к таким аномалиям, как:
* грязное чтение;
* неповторяемое чтение;
* фантомное чтение.

📌 Уровни изоляции определяют, насколько транзакция защищена от влияния параллельных транзакций.

Давайте поговорим о различных уровнях изоляции:

1. Read Uncommitted (самый низкий уровень изоляции):
* транзакции не изолированы друг от друга;
* все транзакции могут видеть эффекты других параллельных транзакций, даже если эти транзакции ещё не завершены;
* данные, считанные на этом уровне изоляции, могут быть отменены позже, что приводит к грязному чтению.

2. Read Committed:
* транзакция, работающая на этом уровне изоляции, не видит «грязных» данных из других транзакций;
* видны только зафиксированные данные;
* Read Committed обычно использует общие блокировки для считываемых данных;
* этот уровень изоляции позволяет избежать грязного чтения, но всё ещё может приводить к неповторяемому чтению (он не гарантирует, что данные, которые вы читаете, останутся неизменными на протяжении всей вашей транзакции).

3. Repeatable Read:
* основной принцип Repeatable Read заключается в предоставлении каждой транзакции согласованного моментального снимка базы данных в начале транзакции;
* этот снимок подобен замороженной картине базы данных;
* любые изменения, внесённые другими транзакциями после этого момента, не видны текущей транзакции до её фиксации.

Два способа реализации:
* Блокировка чтения — устанавливает общие блокировки на все строки, прочитанные транзакцией.
* Управление параллелизмом с несколькими версиями (MVCC) — поддерживает несколько версий каждой строки, причём каждая версия связана с меткой времени или идентификатором транзакции.
* Устраняет неповторяемое чтение.

4. Serializable:
* этот уровень обеспечивает строжайшую изоляцию транзакций;
* он имитирует последовательное выполнение транзакций, как если бы транзакции выполнялись одна за другой, последовательно, а не параллельно;
* включает более строгие механизмы блокировки, такие как блокировки диапазона или предикатные блокировки.

📌 Уровни изоляции обеспечивают баланс между согласованностью данных и производительностью.

Более высокие уровни изоляции обеспечивают более надёжные гарантии целостности данных, но могут снижать производительность из-за блокировок или сериализации транзакций.
👍73🔥1
Хочется перевернуть календарь, а календаря нет, можно создать себе в консоле простенький календарь на языке Python #python
🔥25🥴122👏1🥱1
Спрос на разработчиков ПО для роботов в этом году увеличился на 72% на фоне сокращения потребности работодателей в программистах.

Всего за I полугодие 2025 г. российские компании в сфере робототехники разместили 5,3 тыс. вакансий, тогда как за весь 2024 г. было опубликовано 9 тыс., а за весь 2023 г. — 6,9 тыс.

Зарплатные предложения для специалистов по робототехнике растут вне зависимости от опыта работы
Среднее зарплатное предложение увеличилось на 13% и составило 90, 44 тыс. руб. в месяц. Сотрудникам без опыта работы в I полугодии 2025 г. предлагали 71,02 тыс. руб. (плюс 13% год к году); с опытом больше одного года работы — 76,98 тыс. (плюс 8% год к году).

Зарплаты, предлагаемые опытным специалистам, выросли намного больше — на 23% для тех, чей опыт составляет более трех лет (до 109, 64 тыс. руб.), и сразу на 47% для имеющих опыт более пяти лет (до 149,03 тыс. руб.).

Среди наиболее востребованных навыков у кандидатов являются программирование на языках C++ и Python, математика, навыки работы с искусственным интеллектом, с мехатроникой и управлением.

https://www.cnews.ru/news/top/2025-09-03_v_rossii_vzletel_spros_na
🤡14👍2🔥2👏1🤮1
Как работает модель протокола TCP/IP
👍8🤓5🤡2🔥1👏1🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Распространенные три стратегии замещения кеша:

FIFO (First In, First Out) — стратегия, при которой замещается самая старая строка в кэше. Это означает, что данные, которые были добавлены в кэш первыми, будут удалены первыми.

LRU (Least Recently Used) — стратегия, при которой замещается строка, к которой дольше всего не было обращений. Это позволяет сохранять наиболее часто используемые данные в кэше.

Time Aware LRU — модифицированная версия LRU, которая учитывает время последнего обращения к данным. Это может быть полезно для оптимизации производительности в системах с переменной частотой использования данных.
🔥16👍62👏1
Схема работы PostgreSQL, которая включает основные компоненты и процессы системы
🤔72👍2
Схема работы PostgreSQL, которая включает основные компоненты и процессы системы
(продолжение предыдущего поста)

1. Web Application: Веб-приложения подключаются к PostgreSQL через соединения (Connection 1, Connection 2, Connection 3). Каждое соединение создает фоновый процесс (Background Process), который обрабатывает запросы.

2. Фоновые процессы (Background Processes):
- Эти процессы работают в фоновом режиме и выполняют задачи, такие как обработка запросов, управление буферами и синхронизация данных.
- Они используют разделяемую память (Shared Memory) для обмена данными между процессами.

3. Разделяемая память (Shared Memory):
- Содержит буферы (Shared Buffers), которые используются для временного хранения данных.
- Включает WAL Buffers для буферизации журнала предзаписи (Write-Ahead Logging).
- Также содержит CLOG Buffers и Temp Buffers для управления транзакциями и временными данными.

4. Вспомогательные процессы (Auxiliary Processes):
- BG Writer: Записывает данные из буферов в файлы данных.
- WAL Writer: Записывает журнал предзаписи (WAL) на диск.
- Auto Vacuum: Автоматически очищает ненужные данные.
- Checkpointer: Обеспечивает целостность данных при перезагрузке системы.
- Stats Collector: Собирает статистику о работе системы.
- SysLogger: Записывает системные журналы.
- Archiver: Архивирует данные.
- Replication Launcher: Управляет репликацией данных.

5. Postmaster Process:
- Главный процесс, который управляет всеми другими процессами и обеспечивает их взаимодействие.

6. Физические файлы:
- Data Files: Файлы данных, где хранятся таблицы и другие объекты.
- WAL Files: Файлы журнала предзаписи.
- Archive Files: Архивированные файлы.
- Log Files: Системные журналы.
👍52👏1
В Госдуме опровергли слухи о том, что MAX будет "оформлять доносы"
Депутат Немкин заявил, что мессенджер MAX не может оформлять доносы с помощью ИИ

"На смартфонах большинства граждан давно установлены сервисы крупнейших компаний и госструктур — Сбер, ВТБ, "Госуслуги". За все годы их работы не было ни одного факта использования встроенного ИИ для "доносов" или отслеживания личных действий пользователей", — добавил Немкин.
Как он пояснил, распространение подобных мифов — это способ посеять недоверие к отечественным цифровым продуктам.
"На практике же MAX проходит те же самые проверки безопасности и соответствует тем же правилам, что и другие популярные приложения. Его главная задача — обеспечить удобную и защищённую коммуникацию, а не заниматься слежкой", — заключил депутат.
https://ria.ru/20250903/max-2039498307.html
🤡36😁16🤣5👍2
Проект Primes - проект от бывшего инженера Microsoft для вычисления быстроты/эффективности различных языков программирования на основе вычисления простых чисел
https://github.com/PlummersSoftwareLLC/Primes
Результаты по различным языкам и для разных комбинаций и архитектур можно постротеть здесь https://plummerssoftwarellc.github.io/PrimeView/?rc=50&rs=0&fr=&sc=rc&sd=True
В целом такие языки C/ C++ / Zig / Rust по тесту являются наиболее быстрыми
👍8🐳3👏1
Шаблон повторных попыток (Retry Pattern)
(описание в следующем посте)
🔥1
Шаблон повторных попыток (Retry Pattern)
(описание к предыдущему посту)

Это один из самых простых способов повысить отказоустойчивость системы. Как это работает:

1. Не выполняйте повторные попытки бесконечно
Повторные попытки имеют свою цену.

* Слишком мало попыток: вы можете сдаться при временных сбоях (например, кратковременном сетевом сбое).
* Слишком много попыток: вы перегружаете систему, увеличиваете время отклика и маскируете реальные проблемы.

Практическое правило: обычно оптимальным является 3 попытки. После этого более вероятно, что вы имеете дело с реальным сбоем, а не с временным.

2. Используйте экспоненциальную отсрочку
Время повторных попыток важнее их количества.

* Без таймата: все неудачные запросы повторяются мгновенно → увеличивается перегрузка системы.
* С экспоненциальной отсрочкой (таймаутом): время ожидания увеличивается (например, 1 с → 2 с → 4 с → 8 с), давая системам время на восстановление.

Это предотвращает превращение повторных попыток в проблему.

3. Выполняйте повторные попытки только при временных ошибках
Не каждая ошибка заслуживает повторной попытки.

* Подходящие для повтора: 408 (тайм-аут), 5xx (сервер перегружен).
* Неподходящие для повтора: 400 (неверный запрос), 403 (запрещено).

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

Если торговый автомат показывает «временно не работает», попробуйте позже. Если он говорит «вставьте 5 долларов, а не 1», повторная попытка не поможет.

4. Комбинируйте с паттерном Circuit Breaker (предохранитель)
Одни только повторные попытки могут вызвать каскадные сбои, если сервис действительно не работает. Circuit Breaker добавляет защиту:

* Отслеживает частоту сбоев.
* Открывается, когда количество сбоев превышает порог → останавливает повторные попытки на некоторое время.
* Закрывается, когда состояние улучшается.
👍61🔥1🥰1👏1🕊1🤓1
9 базовых архитектурных паттернов интеграции систем
(описание в следующем посте)
7🔥1👏1
9 базовых архитектурных паттернов интеграции систем:
(описание к предыдущему посту)

1. Peer-to-Peer (P2P)
Децентрализованная сеть, где каждый участник (пир) может быть одновременно отправителем и получателем данных. Пример: обмен файлами через BitTorrent.

2. API Gateway
Центральный компонент, который управляет входящими запросами, выполняет маршрутизацию, авторизацию, ограничение скорости и другие задачи. Пример: Spring Cloud Gateway.

3. Pub-Sub (Publish-Subscribe)
Модель обмена сообщениями, где издатели отправляют сообщения в темы, а подписчики получают их. Пример: системы уведомлений.

4. Request-Response
Классическая модель клиент-сервер, где клиент отправляет запрос, а сервер возвращает ответ. Пример: HTTP-запросы.

5. Event Sourcing
Подход, при котором система сохраняет все изменения состояния в виде последовательности событий. Пример: журнал событий для восстановления состояния системы.

6. ETL (Extract, Transform, Load)
Процесс извлечения данных из источников, их преобразования и загрузки в хранилище. Пример: миграция данных между системами.

7. Batching
Обработка данных пакетами для повышения эффективности. Пример: массовая обработка платежей.

8. Streaming Processing
Обработка потоков данных в реальном времени. Пример: анализ логов приложений.

9. Orchestration
Управление последовательностью выполнения задач между сервисами. Пример: координация микросервисов в сложной системе.
6👏3🔥1
9 рекомендаций по работе с Docker, которые помогут оптимизировать работу с контейнерами
(продолжение в следующем посте)
4🔥2👏1
9 рекомендаций по работе с Docker, которые помогут оптимизировать работу с контейнерами:
(продолжение предыдущего поста)

1. Используйте официальные образы
Использование официальных образов Docker обеспечивает безопасность, надежность и регулярные обновления. Пример: FROM node:14-alpine.

2. Используйте конкретные версии
Указание конкретной версии образа предотвращает неожиданные изменения. Пример: FROM node:14.17.0-alpine3.13.

3. Многоступенчатые сборки
Многоступенчатые сборки уменьшают размер финального образа, исключая инструменты сборки и зависимости. Пример:
   FROM build-image AS build  
# Build steps
FROM production-image
COPY --from=build /app /app


4. Используйте файл .dockerignore
Файл .dockerignore исключает ненужные файлы из контекста сборки, ускоряя процесс и уменьшая размер образа. Пример содержимого:
  
node_modules
npm-debug.log


5. Наименьшие привилегии
Запуск приложений с правами непривилегированного пользователя повышает безопасность. Пример:
   RUN useradd -m myuser  
USER myuser
CMD node index.js


6. Используйте переменные окружения
Использование переменных окружения увеличивает переносимость приложения между средами. Пример:
   ENV APP_HOME /app  
WORKDIR $APP_HOME


7. Порядок инструкций важен для кэширования
Порядок инструкций в Dockerfile влияет на эффективность кэширования. Рекомендуется начинать с менее изменяемых команд. Пример:
   FROM debian  
RUN apt-get update
RUN apt-get -y install openjdk ssh vim
COPY . /app
CMD ["java", "-jar", "/app/target/app.jar"]


8. Имена для образов
Назначение имен для образов помогают организовать и управлять образами. Пример:
   LABEL maintainer="name@example.com"  
LABEL version="1.0"


9. Сканирование образов
Проверка образов на уязвимости с помощью команды docker scan помогает предотвратить проблемы безопасности.

#docker
👍145👏1