METANIT.COM
6.24K subscribers
1.79K photos
86 videos
10 files
1.26K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
8. RAD (Rapid Application Development — быстрая разработка приложений):
* Основа: итеративный и инкрементальный подход с акцентом на быстрое создание прототипов.
* Этапы: анализ и быстрый дизайн → разработка прототипа → демонстрация → доработка → тестирование → развёртывание.
* Применение: проекты с быстро меняющимися требованиями, необходимость быстрого выхода на рынок.
* Итог: ускоренная разработка за счёт активного вовлечения заказчика и использования прототипов.
2👍2💯2🤷‍♂1
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядно, что такое интеграл
👍21🤓13🆒63
Выполнение программы
(продолжение в следующем посте)
❤‍🔥4👍2🤝2
Выполнение программы
(продолжение предыдущего поста)

Программа проходит путь от исходного кода до исполняемого файла, загружается в память, взаимодействует с ОС через системные вызовы, использует ресурсы компьютера (CPU, память, устройства) и завершается с очисткой всех задействованных ресурсов. Рассмотрим пошагово.

1. Компиляция и загрузка программы (Program Compilation and Loading)

- Исходный код (например, Enter.c) передаётся компилятору.
- Компилятор преобразует исходный код в объектный файл (Enter.obj), проверяя синтаксис и семантику.
- Используются библиотеки (например, cw32.lib), из которых извлекаются необходимые функции (например, sprintf()).
- Происходит статическая компоновка — связывание объектного файла с библиотеками для создания промежуточного кода.
- Далее подключается динамическая компоновка — связывание с динамическими библиотеками (user32.dll и др.), используемыми для функций вроде MessageBox().
- В итоге формируется исполняемый файл (Enter.exe), готовый к запуску.

2. Взаимодействие пользователя и распределение памяти (User Interaction and Memory Allocation)

- Пользователь запускает программу через графический интерфейс (например, клик по иконке).
- Операционная система (ОС) получает запрос и инициирует загрузку исполняемого файла.
- ОС выделяет память для программы, используя структуру памяти:
- Memory pool (пул памяти) — общее пространство для распределения.
- Stack (стек) — для хранения локальных переменных и вызовов функций.
- Heap (куча) — для динамического выделения памяти (malloc, free).
- Сегменты: BSS (неинициализированные данные), Data (инициализированные данные), Code (исполняемый код).
- Программа загружается в выделенную область памяти.

3. Системные вызовы (System Calls)

- Программа взаимодействует с ОС через системные вызовы (system call), которые обеспечивают доступ к ресурсам (файлам, сети, устройствам).
- Процесс вызова:
1. Программа делает системный вызов (например, открытие файла).
2. Управление передаётся ядру ОС (kernel model), которое проверяет права доступа и параметры вызова.
3. Ядро выполняет операцию через сервисные программы (например, чтение данных с диска).
4. Результат возвращается программе, которая продолжает выполнение.
- Таблица системных вызовов (Sys_call_table) хранит адреса функций ядра.

4. Состояние ЦП и структура памяти (CPU Status and Memory Structure)

- Программа выполняется на центральном процессоре (CPU), который работает в двух режимах:
- Пользовательский режим (user model) — выполнение прикладного кода.
- Режим ядра (kernel model) — выполнение системных вызовов и привилегированных операций.
- Кэширование: CPU использует кэши (L1, L2, L3) для ускорения доступа к данным.
- RAM хранит исполняемый код и данные программы во время работы.
- Регистры программ (Program register) сохраняют состояние выполнения (адрес следующей инструкции).

5. Архитектура фон Неймана (Von Neumann Architecture)

- Программа и данные хранятся в единой памяти (принцип фон Неймана).
- Центральный процессор (CPU) состоит из:
- Control Unit (CU) — управляет выполнением инструкций.
- Arithmetic/Logic Unit (ALU) — выполняет арифметические и логические операции.
- Данные поступают с устройств ввода (Input Device), обрабатываются процессором и выводятся на устройства вывода (Output Device).
- Memory Unit хранит промежуточные результаты и инструкции.

6. Завершение программы и освобождение ресурсов (Program Termination and Resource Recovery)

- Программа завершается по команде exit() или по инициативе пользователя.
- ОС выполняет очистку ресурсов:
- Освобождение файловых ресурсов (закрытие дескрипторов файлов).
- Освобождение сетевых ресурсов (разрыв соединений).
- Возврат памяти (освобождение стека, кучи, сегментов).
- Все ресурсы возвращаются в пул ОС, программа завершается, и её состояние удаляется из памяти.
🔥8❤‍🔥54
В Думу внесли законопроект о подтверждении для сайтов значимых действий

Правительство внесло в Госдуму законопроект № 1110676-8, который с 1 сентября 2026 года вводит для российских сайтов обязательное подтверждение значимых действий в интернете кодами из СМС и одновременно сообщениями с использованием мессенджера Max. Перечень таких действий утвердит правительство.
В банковской и иных сферах финансового рынка перечень значимых действий будет дополнительно согласовываться с Банком России.
https://www.interfax.ru/russia/1065345
🤡37👎3💊2🤷2🖕1
Спрос на ИИ-специалистов в России растет быстрее предложения. Опубликовано почти 200 тысяч вакансий

Потребность российской экономики в кадрах в сфере искусственного интеллекта в 2025 г. увеличилась примерно на 18% по сравнению с 2024 г. За год на российских рекрутинговых ИТ-платформах было опубликовано почти 200 тыс. вакансий для специалистов, а в 2024 г. их было около 170 тыс. К кадрам по искусственному интеллекту работодатели относит ИТ-инженеров, ИТ-разработчиков, системных архитекторов и аналитиков и иных инженерно-научных и прикладных специалистов, которые создают и интегрируют ИТ-решения на основе этой технологии.

Число таких вакансий растет в среднем на 5 под пункта быстрее, чем количество ИИ-специалистов с нужными компетенциями. По примерным оценкам J’son Partners Consulting, сейчас в России 100 тыс. - 120 тыс. ИИ-кадров (+15% к 2024 г., следует из аналитики компании), из которых обучением моделей занимается около 1 тыс.-3 тыс. инженеров в сфере Machine Learning (ML), остальное приходится на специалистов по данным т.е. data science.

Согласно совместному исследованию HeadHunter и Skillaz, с 2022 г. спрос на специалистов данного профиля вырос в два раза. Абсолютные значения количества вакансий и резюме в исследовании не раскрываются.

https://www.cnews.ru/news/top/2025-12-30_v_2025_godu_spros_na_ii-spetsialistov
🤔11🤡9😁5👍32🕊1
В 2025 году произошло множество значимых событий в мире программирования. Помянем основные из них:

### Укрепление позиций Rust
На конференции Maintainers Summit в декабре 2025 года разработчики ядра Linux решили перевести поддержку языка Rust из экспериментального статуса в категорию основных возможностей. Эксперимент по добавлению в ядро возможности разработки компонентов на Rust начался три года назад с версии 6.1.
За это время в состав ядра были включены абстракции для разработки на Rust драйверов для GPU, файловых систем, блочных устройств, сетевых адаптеров и USB-устройств. Например, развиваются драйверы Nova для видеокарт NVIDIA, asahi для GPU Apple AGX, Tyr для GPU ARM Mali, а также реализация IPC Binder.
Поддержка Rust неактивна по умолчанию и не приводит к включению этого языка в число обязательных сборочных зависимостей ядра. Однако сторонники продвижения Rust считают, что этот язык помогает избежать многих ошибок, связанных с особенностями C, и позволяет сократить время разработки за счёт снижения трудозатрат на отладку.
Параллельно Microsoft активно внедряет поддержку Rust в Windows, даже были высказывания, что компания планирует к 2030 году полностью заменить весь код на C/C++ на Rust. Однако позднее компания дезавуировала подобные высказывания.
Google также продвигает Rust в Android, но менее агрессивно

### Выход .NET 10:
Выпуск с долгосрочной поддержкой (Long Term Support, LTS), что гарантирует стабильность и актуальность вплоть до конца 2028 года, и знаменует собой качественный прогресс в эволюции платформы, делая её более привлекательной для широкого круга разработчиков и предприятий
Новые оптимизации повышают производительность приложений и уменьшают потребление ресурсов. Повышение эффективности работы с многопоточностью и параллельной обработкой данных. Оптимизирован JIT-компилятор, ускоряющий выполнение кода путем уменьшения нагрузки на процессор и улучшение обработки аргументов структур. Добавлена поддержка инструкций AVX10.2 для Intel и ARM64 SVE, позволяющая эффективнее использовать аппаратные возможности современных процессоров.
Значительно улучшено быстродействие NativeAOT (ранней компиляции) за счёт снижения размера исполняемых файлов и ускорения старта приложений.
Возможность стековой аллокации небольших массивов фиксированного размера, что уменьшает нагрузку на динамическое выделение памяти.
Сопровождается обновленнием языка C# - C# 14 со многими нововведениями, из которых следует отметить прежде всего расширенные возможности расширения классов (extension blocks), позволяющие элегантно дополнять базовые классы методами и свойствами.
Добавлена поддержка выполнения кода в виде скриптов без создания проекта.

### Java 25
Плановый выпуск тем не менее знаменует собой важную веху в развитии языка программирования Java. Из нововведенией прежде всего следует отметить возможность создавать более компактные исходные файлы и метод main, что упрощает процесс для начинающих и для разработчиков скриптов, позволяя создавать Java-программы с меньшим количеством шаблонного кода
Также следует отметить развитие Structured Concurrency, которая предоставляет высокоуровневый API для управления параллельными задачами, обеспечивая четкую организацию и обработку исключений, и Scoped Values, которая предоставляет безопасную передачу неизменяемых данных между потоками, что обеспечивает лучшую интеграцию с виртуальными потоками и устраняет необходимость использования ThreadLocal.​
Кроме того, добавлена возможность массового подключения всех пакетов модуля одной строкой, что упрощает работу с крупными проектами и снижает сложность импорта, и упрощённое разрешение зависимостей и автоматический импорт пакетов, что ускоряет разработку и уменьшает когнитивную нагрузку
И, как обычно, все это сопровождается оптимизацией работы с памятью. В частности, функциональность Compact Object Headers позволяет сократить размер заголовков объектов в Java-куче и снижает потребление памяти, улучшает плотность кучи и общую производительность, особенно в приложениях с большим количеством объектов
8👍4❤‍🔥2🤮2👎1
### Python 3.14
Выход Python 3.14 в октябре 2025 года ознаменовал важные изменения и улучшения, направленные на повышение производительности, улучшение поддержки многопоточности и предоставление новых возможностей для разработчиков.
Интерпретатор Python 3.14 получил значительные улучшения, включающие оптимизацию обработки команд CPython и увеличение производительности на уровне байт-кода. Результаты тестов показывают, что средний прирост производительности составляет около 30%, что достигается без необходимости внесения изменений в существующий код.​
Важнейшим изменением является удаление механизма GIL, который препятствовал эффективному использованию многопроцессорных систем. Теперь Python позволяет эффективно распределять задачи между несколькими потоками, значительно увеличивая производительность в многопоточных приложениях. Это открывает путь к новому уровню производительности для интенсивных вычислительных задач и многопоточности.​
Python 3.14 отличается значительным увеличением производительности за счет оптимизации внутренней работы интерпретатора. Испытания показывают, что новое решение позволяет выполнять задачи быстрее и использовать меньше памяти, что особенно важно для больших проектов и интенсивных вычислений

### Swift для Android
Компания Apple открыла возможность разработки приложений на языке Swift для операционной системы Android, что ранее было ограничено экосистемой Apple. Хотя поддержка пока неполная, но в перспективе Swift может стать альтернативой инструментам для кросс-платформенной разработке, как Kotlin Multiplatform, Flutter (Dart), .NET MAUI (C#), React Native (JS/TS)

### Искусственный интеллект и инструменты для разработчиков
В 2025 году продолжил развиваться подход, при котором ИИ выступает не просто помощником, а полноценным соавтором разработчика. Примерно 60% специалистов среднего уровня активно использовали ИИ-ассистентов в работе.
Появился термин «вайбкодинг» (vibe coding), который описывает ситуацию, когда разработчик задаёт направление желаемого результата, а реализацию берёт на себя ИИ. В России этот подход стал стандартным инструментом для быстрого прототипирования и создания MVP, особенно в стартапах и продуктовых командах.
Однако эксперты предупреждают, что код, созданный с помощью вайбкодинга, часто оказывается хрупким: его сложно поддерживать и масштабировать. В индустрии даже появился термин «вайб-похмелье» для описания ситуации, когда проект приходится переписывать с нуля, потому что никто уже не понимает, как он устроен.

### Развитие рынка труда для разработчиков
В 2025 году рынок труда для программистов в России и мире претерпевал значительные изменения, связанные с экономическими факторами, технологическим прогрессом и структурными сдвигами в отрасли.

Увеличилось количество вакансий в сферах машинного обучения, AI, кибербезопасности, разработки приложений виртуальной реальности, операционной инженерии.

В России наблюдался дисбаланс между количеством соискателей и спросом на определённые категории специалистов. По данным hh_ru, на одну ИТ-вакансию в 2025 году приходилось около 14 резюме, что почти вдвое выше «комфортного» уровня. При этом конкуренция была максимальной среди начинающих специалистов (джунов) — 18,6 резюме на одну вакансию, тогда как на позиции сеньоров приходилось всего 3 резюме, и не все из них соответствовали требованиям.
Рынок труда характеризуется избытком джунов. Многие недавние выпускники онлайн-курсов и вузов не обладали достаточными практическими навыками для выполнения коммерческих задач. У них часто были завышенные зарплатные ожидания.
И в то же время наблюдается дефицит middle- и senior-специалистов. Компании остро нуждались в опытных разработчиках, способных быстро включаться в сложные проекты и принимать ключевые решения.
5❤‍🔥2👎1👏1
На российский рынок труда также оказали влияние некоторые локальные особенности. Например, влияние импортозамещения: переход на отечественные решения (например, замену Oracle на PostgreSQL, SAP на 1С) создал спрос на специалистов, знакомых с российскими продуктами
В то де время экономические факторы, в частности, высокая ключевая ставка ЦБ и замедление экономики, а также оптимизация расходов привели к снижению количества вакансий, произошло сокращение бюджетов и проектов.
Тем не менее также стоит отметить и гос. поддержку в этой сфере: действовали программы льготной ипотеки для IT-специалистов (до 2030 года), отсрочка от призыва для сотрудников аккредитованных компаний, образовательные инициативы (увеличение бюджетных мест в вузах, корпоративные университеты).

Мировой рынок IT в 2025 году столкнулся с заметным охлаждением. По данным компании ZipRecruiter, в США количество IT-вакансий за последний год сократилось на 56%. Крупные технологические компании (Microsoft, Intel, Tata Consultancy Services) проводили масштабные сокращения.
ИИ начал массово внедряться в процессы разработки, что привело к сокращению спроса на специалистов, выполняющих рутинные задачи. По некоторым оценкам, доля кода, создаваемого с помощью ИИ, достигла около 50%. Однако это повысило спрос на сеньоров для ревью кода, постановки требований и работы с аналитикой.
В США и Индии и в ряде других стран (как и в России) фиксировалось сокращение позиций для начинающих специалистов и рост спроса на узкопрофильных экспертов. Компании искали специалистов с опытом в конкретных сферах: финансы, e-commerce, кибербезопасность, машинное обучение.
👍14🔥42👎2❤‍🔥1🤬1
Список базовых команд Linux для повседневного использования
(продолжение в следующем посте)
🔥10👍2👏1
Список базовых команд Linux для повседневного использования
(продолжение предыдущего поста)

1. Bash Commands (базовые команды Bash):
- uname -a — показать систему и ядро;
- head -n1 /etc/issue — показать дистрибутив;
- mount — показать смонтированные файловые системы;
- date — показать системную дату;
- uptime — показать время работы системы;
- whoami — показать имя пользователя;
- man command — показать руководство по команде.

2. File commands (команды работы с файлами и директориями):
- ls — список директории;
- ls -a — показать всё (включая скрытые файлы);
- ls -R — рекурсивный список;
- ls -r — обратный порядок;
- ls -t — сортировка по времени последнего изменения;
- ls -S — сортировка по размеру файла;
- ls -l — длинный формат списка;
- ls -1 — по одному файлу в строке;
- ls -m — вывод через запятую;
- ls -Q — вывод в кавычках;
- cd — перейти в домашнюю директорию;
- pwd — показать текущую директорию;
- mkdir dir — создать директорию dir;
- cd dir — перейти в директорию dir;
- rm file — удалить файл;
- rm -r dir — удалить директорию dir (рекурсивно);
- rm -f file — принудительно удалить файл;
- rm -rf dir — удалить директорию dir (рекурсивно, без подтверждения);
- cp file1 file2 — скопировать file1 в file2;
- mv file1 file2 — переименовать file1 в file2;
- ln -s file link — создать символьную ссылку «link» на файл;
- touch file — создать или обновить файл;
- cat > file — поместить стандартный ввод в файл;
- more file — вывести содержимое файла;
- less file — вывести содержимое файла (с постраничным просмотром);
- head file — вывести первые 10 строк файла;
- tail file — вывести последние 10 строк файла.

3. File permissions (команды управления правами доступа к файлам):
- chmod 775 file — изменить права доступа файла на 775;
- chmod -R 600 folder — рекурсивно изменить права доступа папки на 600;
- chown user.group file — изменить владельца файла на user и группу на group.

4. Process management (управление процессами):
- ps — показать снимок процессов;
- top — показать процессы в реальном времени;
- kill pid — завершить процесс с ID pid;
- pkill name — завершить процесс по имени name;
- killall name — завершить все процессы, имена которых начинаются с name.

5. Searching (поиск):
- grep pattern files — поиск шаблона в файлах;
- grep -i — поиск без учёта регистра;
- grep -r — рекурсивный поиск;
- grep -v — инвертированный поиск (показать строки, где шаблон не найден);
- grep -o — показать только совпадающую часть файла;
- find /dir/ -name name* — найти файлы, начинающиеся с name в директории /dir/.

6. Network (сетевые команды):
- ping host — отправить пинг на хост host;
- dig domain — получить DNS для домена;
- dig -x host — обратный поиск по хосту;
- wget file — скачать файл;
- wget -c file — продолжить прерванную загрузку;
- wget -r url — рекурсивно скачать файлы с URL.

7. SSH (команды SSH):
- ssh user@host — подключиться к хосту как пользователь user;
- ssh -p port user@host — подключиться, используя порт p;
- ssh -D port user@host — подключиться и использовать бинд-порт.

8. Installation (команды установки):
- ./configure — настройка перед компиляцией;
- make — компиляция программы;
- make install — установка скомпилированной программы.
❤‍🔥11🎄7👏1
Стратегии совместного использования кода
(продолжение в следующем посте)
3👍2🔥2
Стратегии совместного использования кода
(продолжение предыдущего поста)

Есть 4 основные стратегии совместного использования кода в микросервисной архитектуре: Code Replication (Кодовое дублирование), Shared Library (Общая библиотека), Shared Service (Общий сервис) и Sidecar (Сайдкар). Рассмотрим каждую из них подробно.

#### 1. Code Replication (Кодовое дублирование)

Суть: код, необходимый нескольким сервисам, копируется (дублируется) в каждый из них. На схеме видно, что SERVICE A, SERVICE B и SERVICE C содержат копию SHARED CODE.

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

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

Когда использовать: подходит для небольших проектов или случаев, когда код используется редко и не требует частого обновления.

#### 2. Shared Library (Общая библиотека)

Суть: сервисы используют общую библиотеку кода. На схеме показано, что SERVICE A, SERVICE B и SERVICE C подключают модули (SC1, SC2, SC3, SC4, SC5) из общей библиотеки.

Преимущества:
* уменьшение объёма кода за счёт его централизации;
* упрощение поддержки — обновления вносятся в одном месте;
* возможность повторного использования кода между сервисами;
* поддержка версий библиотеки позволяет контролировать совместимость.

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

Когда использовать: оптимально для проектов с большим количеством сервисов, использующих общий функционал (например, библиотеки для логирования, трассировки, работы с API).

#### 3. Shared Service (Общий сервис)

Суть: вместо включения кода в сервисы или использования библиотек, сервисы обращаются к отдельному общему сервису по сети. На схеме SERVICE A, SERVICE B и SERVICE C делают сетевые вызовы к SHARED SERVICE.

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

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

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

#### 4. Sidecar (Сайдкар)

Суть: отдельный процесс (сайдкар) запускается вместе с сервисом и предоставляет ему дополнительные функции. На схеме SERVICE A и SERVICE B работают вместе с SIDECAR, который отвечает за логирование, мониторинг, работу с Circuit Breaker и другие задачи.

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

Недостатки:
* усложнение развёртывания — нужно управлять двумя процессами (сервис + сайдкар);
* дополнительные ресурсы — сайдкар потребляет ресурсы наравне с основным сервисом;
* необходимость синхронизации работы сервиса и сайдкара.
5👍2🔥2
Когда использовать: идеально для добавления кросс-функциональных возможностей (логирование, трассировка, безопасность) в уже развёрнутые микросервисы без изменения их кода. Также подходит для сервисов с высокой критичностью, где важно изолировать инфраструктурные задачи.

### Резюме

Выбор стратегии зависит от:
* сложности и объёма общего кода;
* требований к масштабируемости и надёжности;
* архитектуры существующей системы;
* необходимости изоляции бизнес-логики от инфраструктурных задач.

Code Replication — для простых случаев с малым объёмом кода.
Shared Library — для повторного использования кода с умеренной сложностью.
Shared Service — для критически важных централизованных функций.
Sidecar — для добавления инфраструктурных возможностей к существующим сервисам.
6👍3👀3
Основные команды Linux для получения информации о системе
(продолжение в следующем посте)
6🥰1👏1
Основные команды Linux для получения информации о системе
(продолжение предыдущего поста)

1. Отобразить информацию о ядре и архитектуре системы:
uname -a

2. Показать информацию о CPU:
cat /proc/cpuinfo

3. Отобразить использование памяти (RAM):
free -h

4. Получить время работы системы (uptime):
uptime

5. Показать детализированное использование системных ресурсов:
top

6. Отобразить использование диска для всех смонтированных файловых систем:
df -h

7. Проверить текущее использование диска по директориям:
du -sh *

8. Показать информацию об устройствах PCI:
lspci

9. Отобразить информацию об USB-устройствах:
lsusb

10. Показать информацию о сетевых интерфейсах:
ifconfig

11. Отобразить сообщения ядра (полезно для отладки оборудования):
dmesg | less

12. Проверить системные журналы (для недавней активности/ошибок):
tail -f /var/log/syslog

13. Отобразить информацию об блочных устройствах (диски, разделы):
lsblk

14. Вывести список всех загруженных модулей ядра:
lsmod

15. Показать имя хоста системы:
hostname

16. Отобразить активных пользователей:
who

17. Проверить запущенные процессы:
ps aux

18. Показать статус батареи (для ноутбуков):
upower -i /org/freedesktop/UPower/devices/battery_BATO

19. Отобразить журнал загрузки системы:
journalctl -b

20. Показать общий обзор аппаратного обеспечения системы:
lshw
👍9❤‍🔥8👏1
Порядок выполнения команд в запросе SQL #sql
👍15💯6👏3🥱1
5 HTTP-статусных кодов, которые "не должны были существовать"
(продолжение в следующем посте)
😁112👏2
5 HTTP-статусных кодов, которые "не должны были существовать"
(продолжение предыдущего поста)

Многие так или иначе знакомы с протоколом HTTP и его статусными кодами. Однако мало кто знает, что есть 5 кодов состояния HTTP, которые являются необычными, забавными или проблематичными - грубо говоря, статусные коды, которые "не должны были существовать"

1. 451 — "Unavailable for legal reasons" (Недоступно по юридическим причинам)
- Используется, когда доступ к запрашиваемому ресурсу запрещён по юридическим причинам.
- Некоторые сайты применяли этот код, чтобы избежать соблюдения законодательных требований, например, GDPR.
- Символика: изображение молотка, отсылающее к судебной тематике.

2. 218 — "This is fine!" (Это нормально!)
- Код вдохновлён популярным интернет-мемом, в котором изображён горящий дом и невозмутимый пёс с подписью "This is fine!".
- Указывает, что ошибка не должна перехватываться сервером — она передаётся клиенту.
- Применяется для обхода переопределений ошибок веб-сервера Apache.
- Символика: улыбающийся смайлик с поднятым вверх большим пальцем.

3. 420 — "Enhance your calm" (Успокойтесь)
- Нестандартный код, который буквально просит клиента "успокоиться".
- Изначально использовался Twitter для обозначения ситуаций, когда клиент превышал лимиты запросов (rate limits).
- Впоследствии заменён на стандартный код 429 (Too Many Requests).
- Символика: изображение человека в позе медитации, подчёркивающее идею "успокоения".

4. 530 — "Site Frozen" (Сайт заморожен)
- Применяется, когда сайт остаётся работоспособным, но намеренно заблокирован провайдером.
- Используется компанией Pantheon (облачный провайдер) для обозначения заблокированных сайтов — например, из-за неоплаченных счетов или истёкших пробных периодов.
- Символика: изображение веб-страницы с морозными узорами, визуально отображающее "заморозку".

5. 418 — "I’m a teapot" (Я — чайник)
- Появился как шутка ко Дню смеха (April Fool’s Day) в 1998 году.
- Символизирует сервер, который не способен "сварить кофе" (выполнить запрошенное действие).
- Несмотря на шуточный характер, код был поддержан основными реализациями HTTP.
- Даже породил шуточное "социальное движение" — Save 418 movement.
- Символика: изображение чайника, подчёркивающее юмористический характер кода.
😁146👏2🤡1
Паттерн Event Sourcing (источники событий)
(продолжение в следующем посте)
👍4🔥2👏1