METANIT.COM – Telegram
METANIT.COM
5.9K subscribers
1.68K photos
83 videos
9 files
1.05K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Сегментация памяти в программе на C/C++
👍12🔥1🥰1
В руководство по языку Си добавлена статья про Макрос перебора списков в стиле for-each
https://metanit.com/c/tutorial/12.5.php
#c_ansi
👍15🔥3👏1
Пример организации памяти программы на примере программы на Си
👍11🤔6👏1😁1
Организация памяти программы на C и структура сегментов (описание к картинке из предыдущего поста)

Структура памяти программы на языке C имеет чётко определённое устройство, которое организует различные типы данных и кода в отдельные сегменты в адресном пространстве процесса.

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

Сегмент стека располагается в верхней части структуры памяти и растёт вниз при вызовах функций и создании локальных переменных. Этот сегмент содержит все локальные переменные, параметры функций и адреса возврата. При каждом вызове функции создаётся новый фрейм стека, который хранит её локальные данные.

В данном примере (картинка из предыдущего поста) сегмент стека хранит локальный массив x, содержащий значения {1, 7, 3}, а также такие переменные, как result, f и q, которые существуют в области видимости соответствующих функций.

Стек работает по принципу last-in-first-out (последним пришёл — первым ушёл), автоматически управляя выделением и освобождением памяти при вызовах и возврате функций. Когда выполняется функция main, она создаёт пространство для массива x и переменной result, в то время как функция f создаёт собственный фрейм стека, содержащий локальную переменную q, инициализированную значением 7.0.

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

Сегмент динамической памяти (heap) предоставляет возможности динамического распределения памяти, хотя в этом простом примере он не используется. Расположенный между стеком и нижними сегментами памяти, heap растёт вверх и позволяет программам запрашивать память во время выполнения с помощью функций malloc() и free().

Сегмент констант и глобальных переменных
хранит переменные, которые существуют на протяжении всего выполнения программы, например, глобальную переменную size со значением 3. Этот сегмент обычно содержит инициализированные глобальные переменные, статические переменные и строковые литералы, которые должны оставаться доступными из нескольких функций или на протяжении всего времени существования программы.

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

Функция f (картинка из предыдущего поста) демонстрирует простую реализацию, которая всегда возвращает значение 7.0 с помощью локальной переменной q, в то время как функция main организует поток программы, инициализируя массив, вызывая функцию f и сохраняя возвращённое значение.

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

https://metanit.com/c/tutorial/5.18.php
👍85👏1
Media is too big
VIEW IN TELEGRAM
Играть в футбол роботы пока не готовы
😁272🤮1
Шпаргалка по работе с f-строками в языке Python #python
👍7🔥5🤨2👏1🤮1
Разработчик из Amazon пожаловался, что уже год работает 30 минут в день. Он рассказывает, что уже год фактически не выполняет никакой реальной работы. Его команда полностью состоит из индийских инженеров, и, по его словам, они систематически избегают поручать ему серьезные задачи. Сначала он был раздражён и хотел перевестись в другую команду, но позже решил смириться и просто «сидеть на попе ровно», выполняя минимальный объём работы - примерно 30 минут в день, при этом продолжая получать полную зарплату.
https://www.teamblind.com/post/havent-done-any-work-in-a-year-at-amazon-ey2vyajr/46747093

Всем бы такие проблемы...
👍27🤣127🤯5😭3🤔2
Теорема CAP
(объяснение к предыдущему посту)

В распределённой системе невозможно получить всё сразу. Приходится идти на компромиссы.

Теорема CAP утверждает, что распределённая система в любой момент времени может гарантировать только два из трёх следующих свойств:

1. C — Согласованность (Consistency)
* Каждое чтение получает самые свежие записи или ошибку. Отсутствия устаревших данных.
* Большинство SQL-баз данных (например, PostgreSQL, MySQL) оптимизированы для строгой согласованности.

2. A — Доступность (Availability)
* Каждый запрос получает ответ, даже если данные могут быть не самыми актуальными.
* NoSQL-базы данных, такие как DynamoDB и Cassandra, часто отдают приоритет доступности над строгой согласованностью.

3. P — Отказоустойчивость при разделении (Partition Tolerance)
* Система продолжает работать даже при разделении сети (то есть при нарушении связи между узлами).
* Все реальные распределённые системы должны быть устойчивы к разделению.

Компромисс: выберите любые два

1. CP (Согласованность + Отказоустойчивость)
* Приоритет отдаётся точности данных. Система может отклонять запросы во время сетевых проблем для поддержания согласованности.

2. AP (Доступность + Отказоустойчивость)
* Приоритет отдаётся доступности. Система продолжает отвечать на запросы, даже если данные могут быть временно несогласованными.

3. CA (Согласованность + Доступность)
* Выглядит отлично на бумаге, но недостижимо в реальных распределённых системах, поскольку сетевые разделения неизбежны.

За пределами CAP: теорема PACELC

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

Здесь на помощь приходит PACELC:
* Если происходит разделение (P) → вы выбираете между доступностью (A) и согласованностью (C)
* В противном случае (E) → вы выбираете между задержкой (L) и согласованностью (C)

Эта теорема признаёт, что даже когда система работает нормально, существует компромисс между задержкой и согласованностью.
103👍3
Индийский ИТ-специалист Сохам Парекх (Soham Parekh) исполнил мечту любого наемного работника – он научился не работать, но при этом регулярно получать зарплату. Он устраивался в различные компании, где в течение длительного времени не выполнял свои обязанности, но при этом стабильно получал зарплату.

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

Так продолжалось в течение четырех лет. За эти годы, по данным из открытых источников, Парекх успел стать частью коллектива около 80 компаний. Не исключено, что в некоторых из них он работал одновременно. Иногда он числился в штате сразу четырех-пяти различных организаций, не удосуживаясь уведомить об этом никого из работодателей. Причем некоторые нанимали его повторно.

Также у него было хорошо подготовленное резюме. По мнению ряда его работодателей, оно на 90% состояло из лжи, но, тем не менее, он вполне успешно устраивался во все новые фирмы.
https://timesofindia.indiatimes.com/technology/tech-news/theres-a-guy-named-soham-parekh-in-india-who-silicon-valley-ceo-exposes-the-moonlighting-scam-of-indian-techie/articleshow/122223553.cms
😎23😁16👏6💩2🍌2😐2👎1
Специалист по работе с данными из консалтинговой компании Capco Мохд Фарааз провёл эксперимент, предложив популярным ИИ-моделям угадать число от 1 до 50. Все они выбрали один и тот же вариант ответа.
Фарааз протестировал модели OpenAI ChatGPT, Anthropic Claude Sonnet 4, Google Gemini 2.5 Flash и Llama 4. Все они назвали в качестве ответа «27».
динственным исключением стал чат-бот Grok компании xAI. Он дал ответ «42»
https://mohdfaraaz.medium.com/llms-and-the-illusion-of-randomness-a-fun-ai-guessing-experiment-60ff82aa5f67
😁30🤣12🤡2👎1🤮1
Тестирование: типы и инструменты
🤨93👀3🔥1👏1
Из-за отсутствия финансирования закрылся российский государственный антивирусный сканер
Еще менее года назад - 14 августа 2024 сообщалось, что запущен государственный антивирусный сервис «Мультисканер», который должен быть стать аналогом virustotal. И вот теперь он прекратил свое функционирование из-за отсутствия финансирования.
https://www.cnews.ru/news/top/2025-07-03_iz-za_otsutstviya_finansirovaniya
😁25🤣21😢11🕊4👍2🙏2🤮1
Что на самом деле происходит при вводе URL в браузере
👍12
Что на самом деле происходит при вводе URL в браузере? Разберём этот процесс пошагово (к иллюстрации из предыдущего поста)

1. Вы вводите URL в браузер

Браузер принимает то, что вы ввели (например, http://example.com) и готовится получить этот веб-сайт. Но сначала ему нужно узнать, где находится сайт.

2. Браузер запрашивает IP-адрес у DNS-сервера

DNS работает как телефонная книга интернета. Он сообщает браузеру: «Этот домен находится по этому IP-адресу».

http://example.com93.184.216.34

3. Устанавливается TCP-соединение через этот IP

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

4. Браузер отправляет HTTP-запрос

Он отправляет сообщение вроде: «Привет, сервер, дай мне главную страницу этого сайта». Обычно это GET-запрос.

5. Веб-сервер получает данные

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

6. База данных отправляет данные обратно на сервер

Это могут быть посты в блоге, информация о продуктах, пользовательские данные — всё, что веб-сайту нужно показать динамически.

7. Сервер отвечает браузеру

Сервер отправляет обратно HTML, CSS, JavaScript и другой контент в ответ на запрос.

8. Браузер отображает контент

Наконец, браузер берёт все эти данные и создаёт веб-страницу, которую вы видите. При этом он может продолжать загружать изображения, стили и скрипты в фоновом режиме.
👏18❤‍🔥7👍72
Временная и пространственная сложность популярных алгоритмов сортировки
🔥10
Временная и пространственная сложность популярных алгоритмов сортировки:

1. Сортировка выбором
* Время: Лучшее Ω(n²) | Среднее Θ(n²) | Худшее O(n²)
* Память: O(1)

2. Сортировка вставками
* Время: Лучшее Ω(n) | Среднее Θ(n²) | Худшее O(n²)
* Память: O(1)

3. Сортировка пузырьком
* Время: Лучшее Ω(n) | Среднее Θ(n²) | Худшее O(n²)
* Память: O(1)

4. Сортировка Шелла
* Время: Лучшее Ω(n log n) | Среднее Θ(n log² n) | Худшее O(n²)
* Память: O(1)

5. Сортировка слиянием
* Время: Лучшее Ω(n log n) | Среднее Θ(n log n) | Худшее O(n log n)
* Память: O(n)

6. Быстрая сортировка
* Время: Лучшее Ω(n log n) | Среднее Θ(n log n) | Худшее O(n²)
* Память: O(log n)

7. Пирамидальная сортировка
* Время: Лучшее Ω(n log n) | Среднее Θ(n log n) | Худшее O(n log n)
* Память: O(1)

8. Поразрядная сортировка подсчётом
* Время: Лучшее Ω(n+k) | Среднее Θ(n+k) | Худшее O(n+k)
* Память: O(k)

9. Сортировка распределением (корзинная)
* Время: Лучшее Ω(n+k) | Среднее Θ(n+k) | Худшее O(n²)
* Память: O(n)

10. Поразрядная сортировка
* Время: Лучшее Ω(nk) | Среднее Θ(nk) | Худшее O(nk)
* Память: O(n+k)

Примечание: n = количество элементов, k = диапазон элементов
👍10🫡2
«Ростелеком» работает над созданием онлайн-магазина видеоигр. Площадка будет ориентирована на российские проекты, адаптированные под ОС «Аврора», используемую в планшетах компании.

По данным собеседников, магазин может быть интегрирован в игровую консоль от FPlus, представленную на «ЦИПР 2025». Однако эксперты сомневаются в успехе: «Авроре» не хватает поддержки современных графических движков, а предыдущие попытки «Ростелекома» в этой сфере (например, «Игровой Маркет» 2019 года) не стали массовыми.

В FPlus подтвердили переговоры с разработчиками «Авроры», но участники рынка отмечают, что без широкого ассортимента магазин рискует повторить судьбу других российских платформ, вынужденных продавать ключи от Steam.

https://www.kommersant.ru/doc/7855350
🤡27🌚13👎6👍3🤩2🤮2